{"id":333,"date":"2025-08-22T07:18:12","date_gmt":"2025-08-22T07:18:12","guid":{"rendered":"https:\/\/sample-events.allintheloop.com\/?page_id=333"},"modified":"2026-02-09T14:12:02","modified_gmt":"2026-02-09T14:12:02","slug":"schedule","status":"publish","type":"page","link":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule\/","title":{"rendered":"Schedule"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"333\" class=\"elementor elementor-333\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3d3b43 e-flex e-con-boxed e-con e-parent\" data-id=\"f3d3b43\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-83f6928 elementor-widget elementor-widget-heading\" data-id=\"83f6928\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Scientific Programme<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dc0da88 elementor-widget elementor-widget-shortcode\" data-id=\"dc0da88\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <section class=\"schedule-section style-two\">\n                <!-- SIDEBAR FILTER PANEL (single instance) -->\n        <div class=\"filter-sidebar\">\n            <div class=\"filter-sidebar-inner\">\n                <div class=\"filter-header\">\n                    <h3>Filter by Type<\/h3>\n                    <button class=\"filter-close-btn\">&times;<\/button>\n                <\/div>\n                <div class=\"filter-clear-bar\" style=\"padding: 0 20px 15px; display: none;\">\n                    <button class=\"clear-filter-btn\" style=\"\n                        background: transparent;\n                        border: 1px solid #dc3545;\n                        color: #dc3545;\n                        padding: 8px 16px;\n                        border-radius: 6px;\n                        cursor: pointer;\n                        font-size: 14px;\n                        font-weight: 500;\n                        display: flex;\n                        align-items: center;\n                        gap: 6px;\n                        transition: all 0.2s ease;\n                    \">\n                        <i class=\"fa fa-times-circle\"><\/i> Clear Selections\n                    <\/button>\n                <\/div>\n        \n                <div class=\"filter-body\">\n                    <!-- Dynamic Types -->\n                    \n                    <div class=\"filter-group\">\n                        <h5 class=\"group-title\" data-group=\"0\">\n                            EAA Community                            <span class=\"toggle-icon\">\u25bc<\/span>\n                        <\/h5>\n\n                        <ul class=\"filter-checkbox-list\" id=\"group-0\">\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47472\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Archaeological Prospection Community                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47473\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Archaeology &amp; Astronomy in Culture (SEAC-EAA)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47474\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Archaeology and Gender in Europe (AGE)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47487\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Crop History Community                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47475\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community for Textile Archaeology and Conservation (ComTex)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47476\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community for the Archaeology of the Americas (EAA4Am)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47477\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community for the use and application of 3D technologies in archaeology (3D-Archaeology)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47479\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community on Archaeological Legislation and Organisation (ALO)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47480\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community on Archaeology and Tourism                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47481\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community on Climate Change and Heritage (CCH)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47482\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community on Fortification Research (COMFORT)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47483\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community on Illicit Trade in Cultural Material                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47484\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community on Storytelling and Archaeology                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47485\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community on Teaching and Training of Archaeologists (CTTA)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47486\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Computational Modelling of Past Socio-ecological Systems (COMPS)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47478\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Community for Urban Archaeology                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47488\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            EAA and EAC Working Group on farming; forestry and rural land management                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47489\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Early Career Archaeologists Community (ECA)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47490\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Medieval Europe Research Community (MERC)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47491\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Palaeolithic and Mesolithic Community (PaM)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47492\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Political Strategies Community (PSC)                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47493\"\n                                            data-group=\"8200\"\n                                            data-type-color=\"#000000\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Public Archaeology Community                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                    <\/ul>\n                    <\/div>\n\n                    \n                    <div class=\"filter-group\">\n                        <h5 class=\"group-title\" data-group=\"1\">\n                            EAA partner organisation                            <span class=\"toggle-icon\">\u25bc<\/span>\n                        <\/h5>\n\n                        <ul class=\"filter-checkbox-list\" id=\"group-1\">\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47279\"\n                                            data-group=\"8225\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            CAA                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47273\"\n                                            data-group=\"8225\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            CIFA                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47280\"\n                                            data-group=\"8225\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            DGUF                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                    <\/ul>\n                    <\/div>\n\n                    \n                    <div class=\"filter-group\">\n                        <h5 class=\"group-title\" data-group=\"2\">\n                            Session Type                            <span class=\"toggle-icon\">\u25bc<\/span>\n                        <\/h5>\n\n                        <ul class=\"filter-checkbox-list\" id=\"group-2\">\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47274\"\n                                            data-group=\"8171\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Discussion session                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47271\"\n                                            data-group=\"8171\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Regular session                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47278\"\n                                            data-group=\"8171\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Round table                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47277\"\n                                            data-group=\"8171\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Session with keynote presentation                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47276\"\n                                            data-group=\"8171\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Session with presentation of 6 slides in 6 minutes                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47272\"\n                                            data-group=\"8171\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Workshop                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"47275\"\n                                            data-group=\"8171\"\n                                            data-type-color=\"#293179\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            Other                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                    <\/ul>\n                    <\/div>\n\n                    \n                    <div class=\"filter-group\">\n                        <h5 class=\"group-title\" data-group=\"3\">\n                            Location                            <span class=\"toggle-icon\">\u25bc<\/span>\n                        <\/h5>\n\n                        <ul class=\"filter-checkbox-list\" id=\"group-3\">\n                                                            <li>\n                                    <label>\n                                        <input type=\"checkbox\"\n                                            class=\"filter-checkbox\"\n                                            value=\"\"\n                                            data-group=\"\"\n                                            data-type-color=\"#0073aa\">\n                                        \n                                        <span class=\"checkbox-label\">\n                                            311                                        <\/span>\n                                    <\/label>\n                                <\/li>\n                                                    <\/ul>\n                    <\/div>\n\n                                                            <div class=\"filter-footer\">\n                        <div class=\"filter-mode-toggle\">\n                            <label class=\"toggle-label\">\n                                <input type=\"radio\" name=\"filter-mode\" value=\"and\" checked>\n                                <span>AND<\/span>\n                            <\/label>\n                            <label class=\"toggle-label\">\n                                <input type=\"radio\" name=\"filter-mode\" value=\"or\">\n                                <span>OR<\/span>\n                            <\/label>\n                        <\/div>\n                        <button class=\"apply-filter-btn\">Apply Filter<\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n        <!-- BACKDROP -->\n        <div class=\"filter-backdrop\"><\/div>\n        \n                <div class=\"schedule-section-inner\">\n            <div class=\"schedule-tabs style-two tabs-box\">\n                <!-- ============================== -->\n                <!--     SEARCH BAR ADDED HERE     -->\n                <!-- ============================== -->\n                <div class=\"schedule-search-filter-main\">\n                    <div class=\"schedule-search-wrapper\" style=\"margin-bottom: 25px; text-align:center; position: relative; display: flex; align-items: center; gap: 10px;\">\n                        <input type=\"text\" id=\"scheduleSearch\" \n                            placeholder=\"Search sessions...\"\n                            style=\"\n                                width: 60%;\n                                padding: 12px 15px;\n                                font-size: 16px;\n                                border: 1px solid #ccc;\n                                border-radius: 8px;\n                            \">\n                        <button type=\"button\" id=\"clearSearchBtn\" \n                            style=\"\n                                padding: 12px 20px;\n                                font-size: 14px;\n                                background: #dc3545;\n                                color: #fff;\n                                border: none;\n                                border-radius: 8px;\n                                cursor: pointer;\n                                display: none;\n                            \">\n                            <i class=\"fa fa-times\"><\/i> Clear\n                        <\/button>\n                    <\/div>  \n                    <button type=\"button\" id=\"clearFilterMainBtn\" \n                        style=\"\n                            padding: 10px 18px;\n                            font-size: 14px;\n                            background: #dc3545;\n                            color: #fff;\n                            border: none;\n                            border-radius: 6px;\n                            cursor: pointer;\n                            margin-left: 10px;\n                            display: none;\n                            margin-bottom: 25px;\n                            margin-right: 10px;\n                        \">\n                        <i class=\"fa fa-times\"><\/i> Clear Filter\n                    <\/button> \n                    <button class=\"open-filter-btn\">\n                        <i class=\"fa fa-filter\"><\/i> Filter\n                    <\/button>\n                    \n                <\/div>\n                <!-- Tabs Navigation -->\n                <div class=\"tab-buttons-wrapper\">\n                    <button class=\"carousel-nav-btn carousel-prev\" type=\"button\">\n                        <i class=\"fa fa-chevron-left\"><\/i>\n                    <\/button>\n                    <div class=\"tab-buttons-carousel-container\">\n                        <ul class=\"tab-buttons-carousel\">\n                                                            <li class=\"tab-btn-item\">\n                                    <div class=\"tab-btn active-btn\"\n                                        data-tab=\"#tab-1\"\n                                        data-index=\"0\"\n                                        data-date=\"2026-08-26\">\n                                        <span class=\"date\">26<\/span>\n                                        <span class=\"month\">Aug<\/span>\n                                        \n                                        <span class=\"day-name\">WED<\/span>\n                                    <\/div>\n                                <\/li>\n                                                            <li class=\"tab-btn-item\">\n                                    <div class=\"tab-btn \"\n                                        data-tab=\"#tab-2\"\n                                        data-index=\"1\"\n                                        data-date=\"2026-08-27\">\n                                        <span class=\"date\">27<\/span>\n                                        <span class=\"month\">Aug<\/span>\n                                        \n                                        <span class=\"day-name\">THU<\/span>\n                                    <\/div>\n                                <\/li>\n                                                            <li class=\"tab-btn-item\">\n                                    <div class=\"tab-btn \"\n                                        data-tab=\"#tab-3\"\n                                        data-index=\"2\"\n                                        data-date=\"2026-08-28\">\n                                        <span class=\"date\">28<\/span>\n                                        <span class=\"month\">Aug<\/span>\n                                        \n                                        <span class=\"day-name\">FRI<\/span>\n                                    <\/div>\n                                <\/li>\n                                                            <li class=\"tab-btn-item\">\n                                    <div class=\"tab-btn \"\n                                        data-tab=\"#tab-4\"\n                                        data-index=\"3\"\n                                        data-date=\"2026-08-29\">\n                                        <span class=\"date\">29<\/span>\n                                        <span class=\"month\">Aug<\/span>\n                                        \n                                        <span class=\"day-name\">SAT<\/span>\n                                    <\/div>\n                                <\/li>\n                                                    <\/ul>\n                    <\/div>\n                    <button class=\"carousel-nav-btn carousel-next\" type=\"button\">\n                        <i class=\"fa fa-chevron-right\"><\/i>\n                    <\/button>\n                <\/div>\n\n                <div class=\"tabs-content\" \n                     data-ajax-url=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-admin\/admin-ajax.php\"\n                     data-nonce=\"c125f30a8f\">\n                                            <div class=\"tab active-tab color-1\"\n                             id=\"tab-1\"\n                             data-date=\"2026-08-26\"\n                             data-loaded=\"true\"\n                                                          data-current-page=\"1\"\n                             data-total-pages=\"1\"\n                             data-next-page=\"\"\n                             data-next-page-no=\"\"\n                             data-has-more=\"0\"\n                             >\n                            \n                                                        <div class=\"tab-date-header\" style=\"\n                                font-size: 20px;\n                                font-weight: 600;\n                                margin-bottom: 20px;\n                                padding: 15px 0;\n                                border-bottom: 2px solid #e0e0e0;\n                                color: #222;\n                            \">\n                                Wednesday, Aug 26                            <\/div>\n\n                            <div class=\"schedule-timeline\">\n                                \n                                <div class=\"schedule-block color-1  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"eaa community for the use and application of 3d technologies in archaeology   online only online only community meeting community for the use and application of 3d technologies in archaeology (3d-archaeology) online only\" data-types=\"47678,47477,47682\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                10:00 AM - 11:00 AM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=j4ZeZd0qhu4OhCVlWUr3wA%3D%3D\">\n                                                        EAA community for the use and application of 3D technologies in archaeology                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us02web.zoom.us\/j\/82476791014\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"82476791014\"\n                                                       data-zoom-link=\"https:\/\/us02web.zoom.us\/j\/82476791014\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community for the use and application of 3D technologies in archaeology (3D-Archaeology)                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #FF4A4A;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Online Only                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    Online Only                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-2  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"eaa community for urban archaeology   427 427 community meeting community for urban archaeology\" data-types=\"47678,47478\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                10:00 AM - 11:00 AM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=22j%2F8XwP8N%2FEs%2FNsxJrOTg%3D%3D\">\n                                                        EAA Community for Urban Archaeology                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/9403750193\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"9403750193\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/9403750193\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community for Urban Archaeology                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    427                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-3  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"communities assembly   436 436 community meeting\" data-types=\"47678\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                11:00 AM - 1:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=Ibxbmx902m87zu0avonxgw%3D%3D\">\n                                                        Communities Assembly                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/3280909956\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"3280909956\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/3280909956\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    436                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-4  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"archaeology and astronomy in culture (seac-eaa)   425 425 community meeting archaeology &amp; astronomy in culture (seac-eaa)\" data-types=\"47678,47473\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                1:00 PM - 3:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=Z4SHFMgIosxgoEHQxhdsgA%3D%3D\">\n                                                        Archaeology and Astronomy in Culture (SEAC-EAA)                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/7943287658\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"7943287658\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/7943287658\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Archaeology &amp; Astronomy in Culture (SEAC-EAA)                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    425                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-1  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"committee on the illicit trade in cultural material   445 445 community meeting community on illicit trade in cultural material\" data-types=\"47678,47483\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                1:00 PM - 3:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=ylMmQVqgpsc3GSaB6eTUlw%3D%3D\">\n                                                        Committee on the Illicit Trade in Cultural Material                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/5525263117\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"5525263117\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/5525263117\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community on Illicit Trade in Cultural Material                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    445                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-2  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"eaa and eac working group on farming, forestry and rural land management   428 428 community meeting eaa and eac working group on farming; forestry and rural land management\" data-types=\"47678,47488\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                1:00 PM - 2:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=Oc3ETIE%2BFc%2F%2BVNgPZjF3Pg%3D%3D\">\n                                                        EAA and EAC Working Group on Farming, Forestry and Rural Land Management                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/2858321261\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"2858321261\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/2858321261\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            EAA and EAC Working Group on farming; forestry and rural land management                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    428                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-3  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"community for the archaeology of the americas   430 430 community meeting community for the archaeology of the americas (eaa4am)\" data-types=\"47678,47476\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                1:00 PM - 4:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=uHRcmk%2Bl9a3%2BS8q9Puwy3g%3D%3D\">\n                                                        Community for the Archaeology of the Americas                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/3030451512\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"3030451512\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/3030451512\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community for the Archaeology of the Americas (EAA4Am)                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    430                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-4  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"crop history community    433 433 community meeting crop history community\" data-types=\"47678,47487\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                1:00 PM - 4:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=wgrqek0oWhV29WuYKSwe1w%3D%3D\">\n                                                        Crop history community                                                     <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/3174845549\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"3174845549\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/3174845549\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Crop History Community                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    433                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-1  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"community on archaeology and tourism   432 432 community meeting\" data-types=\"47678\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                1:30 PM - 3:30 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=QqVTgMJ%2FN5snVk%2BKTmxzNA%3D%3D\">\n                                                        Community on Archaeology and Tourism                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/5465510052\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"5465510052\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/5465510052\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    432                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-2  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"community on fortification research (comfort)   426 426 community meeting community on fortification research (comfort)\" data-types=\"47678,47482\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                2:00 PM - 3:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=tPsiygu%2BNyMgdoo1lO3UsA%3D%3D\">\n                                                        Community on Fortification Research (COMFORT)                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/4667710999\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"4667710999\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/4667710999\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community on Fortification Research (COMFORT)                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    426                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-3  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"medieval europe research community (merc)   434 434 community meeting medieval europe research community (merc)\" data-types=\"47678,47490\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                3:00 PM - 4:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=vCCNpLPKmsdRAV5Uuw7hNA%3D%3D\">\n                                                        Medieval Europe Research Community (MERC)                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/8622257740\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"8622257740\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/8622257740\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Medieval Europe Research Community (MERC)                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    434                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-4  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"archaeological prospection   437 437 community meeting archaeological prospection community\" data-types=\"47678,47472\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                3:00 PM - 4:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=uT%2FFuOkggd3MfwlOCnJQXg%3D%3D\">\n                                                        Archaeological Prospection                                                    <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/8099132775\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"8099132775\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/8099132775\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Archaeological Prospection Community                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    437                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                \n                                <div class=\"schedule-block color-1  \n                                     \"\n                                     data-message=\"You do not have access to this session.\"\n                                     data-search=\"community for archaeometallurgy arcmet    online only online only community meeting online only\" data-types=\"47678,47682\">\n\n                                    <div class=\"inner-box\">\n                                        <div class=\"inner\">\n\n                                            <div class=\"date\">\n                                                3:00 PM - 4:00 PM                                            <\/div>\n\n                                            <!-- Favourite -->\n                                            \n                                            <!-- Title -->\n                                            <h4>\n                                                                                                    <a class=\"agenda-link\" href=\"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/?agenda_id=MMGOufoyaMavtRzNFhu%2BrA%3D%3D\">\n                                                        Community for Archaeometallurgy ARCMET                                                     <\/a>\n                                                                                                <\/h4>\n\n                                            \n                                                                                             <div class=\"zoom-join-button-wrapper\">\n                                                   \n                                                    <a class=\"zoom-join-btns\"\n                                                       href=\"https:\/\/us06web.zoom.us\/j\/7760178969\"\n                                                       target=\"_blank\"\n                                                       rel=\"noopener noreferrer\"\n                                                       data-meeting-id=\"7760178969\"\n                                                       data-zoom-link=\"https:\/\/us06web.zoom.us\/j\/7760178969\">\n                                                        <i class=\"fa fa-video\"><\/i> Join Zoom Meeting\n                                                    <\/a>\n                                                <\/div>\n                                            \n                                            <!-- Tags -->\n                                                                                            <div class=\"type-buttons\" style=\"padding-bottom: 20px;\">\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #000000;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Community Meeting                                                        <\/span>\n                                                                                                            <span class=\"type-badge\"\n                                                            style=\"\n                                                                background: #FF4A4A;\n                                                                color: #fff;\n                                                                padding: 4px 10px;\n                                                                border-radius: 6px;\n                                                                font-size: 16px;\n                                                                margin-right: 6px;\n                                                                margin-bottom: 15px;\n                                                                display: inline-block;\n                                                            \">\n                                                            Online Only                                                        <\/span>\n                                                                                                    <\/div>\n                                            \n                                            \n                                            \n                                            \n                                            \n                                            <!-- Location -->\n                                                                                            <div class=\"agenda-locations\">\n                                                    <span class=\"icon fa fa-map-marker-alt\"><\/span>\n                                                    Online Only                                                <\/div>\n                                            \n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n\n                                                            <\/div>\n                            <div class=\"schedule-scroll-sentinel\" aria-hidden=\"true\"><\/div>\n                            <div class=\"schedule-infinite-loader\" style=\"display:none;text-align:center;padding:24px 0;\">\n                                <div class=\"loader-spinner\" style=\"width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #222;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 10px;\"><\/div>\n                                <span style=\"color:#666;font-size:14px;\">Loading more sessions...<\/span>\n                            <\/div>\n                            <div class=\"schedule-end-message\" style=\"display:none;text-align:center;padding:20px 0;color:#888;font-size:14px;\">\n                                All sessions loaded.\n                            <\/div>\n                        <\/div>\n                                            <div class=\"tab  color-2\"\n                             id=\"tab-2\"\n                             data-date=\"2026-08-27\"\n                             data-loaded=\"false\"\n                                                          data-current-page=\"1\"\n                             data-total-pages=\"1\"\n                             data-next-page=\"\"\n                             data-next-page-no=\"\"\n                             data-has-more=\"0\"\n                             >\n                            \n                                                        <div class=\"tab-date-header\" style=\"\n                                font-size: 20px;\n                                font-weight: 600;\n                                margin-bottom: 20px;\n                                padding: 15px 0;\n                                border-bottom: 2px solid #e0e0e0;\n                                color: #222;\n                            \">\n                                Thursday, Aug 27                            <\/div>\n\n                            <div class=\"schedule-timeline\">\n                                                            <\/div>\n                            <div class=\"schedule-scroll-sentinel\" aria-hidden=\"true\"><\/div>\n                            <div class=\"schedule-infinite-loader\" style=\"display:none;text-align:center;padding:24px 0;\">\n                                <div class=\"loader-spinner\" style=\"width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #222;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 10px;\"><\/div>\n                                <span style=\"color:#666;font-size:14px;\">Loading more sessions...<\/span>\n                            <\/div>\n                            <div class=\"schedule-end-message\" style=\"display:none;text-align:center;padding:20px 0;color:#888;font-size:14px;\">\n                                All sessions loaded.\n                            <\/div>\n                        <\/div>\n                                            <div class=\"tab  color-3\"\n                             id=\"tab-3\"\n                             data-date=\"2026-08-28\"\n                             data-loaded=\"false\"\n                                                          data-current-page=\"1\"\n                             data-total-pages=\"1\"\n                             data-next-page=\"\"\n                             data-next-page-no=\"\"\n                             data-has-more=\"0\"\n                             >\n                            \n                                                        <div class=\"tab-date-header\" style=\"\n                                font-size: 20px;\n                                font-weight: 600;\n                                margin-bottom: 20px;\n                                padding: 15px 0;\n                                border-bottom: 2px solid #e0e0e0;\n                                color: #222;\n                            \">\n                                Friday, Aug 28                            <\/div>\n\n                            <div class=\"schedule-timeline\">\n                                                            <\/div>\n                            <div class=\"schedule-scroll-sentinel\" aria-hidden=\"true\"><\/div>\n                            <div class=\"schedule-infinite-loader\" style=\"display:none;text-align:center;padding:24px 0;\">\n                                <div class=\"loader-spinner\" style=\"width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #222;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 10px;\"><\/div>\n                                <span style=\"color:#666;font-size:14px;\">Loading more sessions...<\/span>\n                            <\/div>\n                            <div class=\"schedule-end-message\" style=\"display:none;text-align:center;padding:20px 0;color:#888;font-size:14px;\">\n                                All sessions loaded.\n                            <\/div>\n                        <\/div>\n                                            <div class=\"tab  color-4\"\n                             id=\"tab-4\"\n                             data-date=\"2026-08-29\"\n                             data-loaded=\"false\"\n                                                          data-current-page=\"1\"\n                             data-total-pages=\"1\"\n                             data-next-page=\"\"\n                             data-next-page-no=\"\"\n                             data-has-more=\"0\"\n                             >\n                            \n                                                        <div class=\"tab-date-header\" style=\"\n                                font-size: 20px;\n                                font-weight: 600;\n                                margin-bottom: 20px;\n                                padding: 15px 0;\n                                border-bottom: 2px solid #e0e0e0;\n                                color: #222;\n                            \">\n                                Saturday, Aug 29                            <\/div>\n\n                            <div class=\"schedule-timeline\">\n                                                            <\/div>\n                            <div class=\"schedule-scroll-sentinel\" aria-hidden=\"true\"><\/div>\n                            <div class=\"schedule-infinite-loader\" style=\"display:none;text-align:center;padding:24px 0;\">\n                                <div class=\"loader-spinner\" style=\"width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #222;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 10px;\"><\/div>\n                                <span style=\"color:#666;font-size:14px;\">Loading more sessions...<\/span>\n                            <\/div>\n                            <div class=\"schedule-end-message\" style=\"display:none;text-align:center;padding:20px 0;color:#888;font-size:14px;\">\n                                All sessions loaded.\n                            <\/div>\n                        <\/div>\n                                    <\/div>\n            <\/div>\n        <\/div>\n        \n        <!-- Per-date infinite scroll (pagination state lives on each .tab panel) -->\n    <\/section>\n    \n    <!-- Global Schedule Data -->\n    <script>\n    window.scheduleUserData = {\n        isLoggedIn: false,\n        eventId: '5059',\n        userId: '',\n        userAgendaIds: [],\n        scheduleDetailUrl: 'https:\/\/allintheloop.com\/eaa-annual-meeting-26\/schedule-details\/',\n        templateDirUri: 'https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-content\/themes\/hello-elementor',\n        ajaxUrl: 'https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-admin\/admin-ajax.php',\n        nonce: 'c125f30a8f',\n        firstDate: '2026-08-26',\n        currentLoadedDate: '2026-08-26'\n    };\n\n    \/\/ V4 pagination: never seed full agenda into day cache (bypasses page_no).\n    \/\/ Seed only page-1 memory cache for the first date (instant tab return \/ prefetch).\n    (function() {\n        try {\n            window._sspInlineDates = [\"2026-08-26\",\"2026-08-27\",\"2026-08-28\",\"2026-08-29\"];\n            window._sspDayCache = {};\n            window._sspDayCacheLoaded = false;\n            window._sspInlineReady = false;\n            window._sspPageCache = window._sspPageCache || {};\n                        if ('2026-08-26') {\n                window._sspPageCache['2026-08-26'] = window._sspPageCache['2026-08-26'] || {};\n                window._sspPageCache['2026-08-26'][1] = {\"agenda_list\":[{\"agenda_id\":\"581655\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"10:00:00\",\"End_time\":\"11:00:00\",\"Heading\":\"EAA community for the use and application of 3D technologies in archaeology\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47477\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community for the use and application of 3D technologies in archaeology (3D-Archaeology)\"},{\"type_id\":\"47682\",\"color\":\"#FF4A4A\",\"font_color\":\"#FFFFFF\",\"name\":\"Online Only\"}],\"location\":\"Online Only\",\"custom_location\":\"Online Only\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us02web.zoom.us\\\/j\\\/82476791014\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"morning\",\"search_text\":\"eaa community for the use and application of 3d technologies in archaeology online only online only community meeting community for the use and application of 3d technologies in archaeology (3d-archaeology) online only\"},{\"agenda_id\":\"581658\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"10:00:00\",\"End_time\":\"11:00:00\",\"Heading\":\"EAA Community for Urban Archaeology\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47478\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community for Urban Archaeology\"}],\"location\":\"427\",\"custom_location\":\"427\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/9403750193\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"morning\",\"search_text\":\"eaa community for urban archaeology 427 427 community meeting community for urban archaeology\"},{\"agenda_id\":\"581653\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"11:00:00\",\"End_time\":\"13:00:00\",\"Heading\":\"Communities Assembly\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"}],\"location\":\"436\",\"custom_location\":\"436\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/3280909956\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"morning\",\"search_text\":\"communities assembly 436 436 community meeting\"},{\"agenda_id\":\"581654\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"13:00:00\",\"End_time\":\"15:00:00\",\"Heading\":\"Archaeology and Astronomy in Culture (SEAC-EAA)\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47473\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Archaeology & Astronomy in Culture (SEAC-EAA)\"}],\"location\":\"425\",\"custom_location\":\"425\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/7943287658\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"archaeology and astronomy in culture (seac-eaa) 425 425 community meeting archaeology & astronomy in culture (seac-eaa)\"},{\"agenda_id\":\"581657\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"13:00:00\",\"End_time\":\"15:00:00\",\"Heading\":\"Committee on the Illicit Trade in Cultural Material\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47483\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community on Illicit Trade in Cultural Material\"}],\"location\":\"445\",\"custom_location\":\"445\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/5525263117\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"committee on the illicit trade in cultural material 445 445 community meeting community on illicit trade in cultural material\"},{\"agenda_id\":\"581660\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"13:00:00\",\"End_time\":\"14:00:00\",\"Heading\":\"EAA and EAC Working Group on Farming, Forestry and Rural Land Management\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47488\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"EAA and EAC Working Group on farming; forestry and rural land management\"}],\"location\":\"428\",\"custom_location\":\"428\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/2858321261\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"eaa and eac working group on farming, forestry and rural land management 428 428 community meeting eaa and eac working group on farming; forestry and rural land management\"},{\"agenda_id\":\"581662\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"13:00:00\",\"End_time\":\"16:00:00\",\"Heading\":\"Community for the Archaeology of the Americas\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47476\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community for the Archaeology of the Americas (EAA4Am)\"}],\"location\":\"430\",\"custom_location\":\"430\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/3030451512\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"community for the archaeology of the americas 430 430 community meeting community for the archaeology of the americas (eaa4am)\"},{\"agenda_id\":\"581665\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"13:00:00\",\"End_time\":\"16:00:00\",\"Heading\":\"Crop history community \",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47487\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Crop History Community\"}],\"location\":\"433\",\"custom_location\":\"433\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/3174845549\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"crop history community  433 433 community meeting crop history community\"},{\"agenda_id\":\"581663\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"13:30:00\",\"End_time\":\"15:30:00\",\"Heading\":\"Community on Archaeology and Tourism\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"}],\"location\":\"432\",\"custom_location\":\"432\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/5465510052\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"community on archaeology and tourism 432 432 community meeting\"},{\"agenda_id\":\"581656\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"14:00:00\",\"End_time\":\"15:00:00\",\"Heading\":\"Community on Fortification Research (COMFORT)\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47482\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community on Fortification Research (COMFORT)\"}],\"location\":\"426\",\"custom_location\":\"426\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/4667710999\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"community on fortification research (comfort) 426 426 community meeting community on fortification research (comfort)\"},{\"agenda_id\":\"581659\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"15:00:00\",\"End_time\":\"16:00:00\",\"Heading\":\"Medieval Europe Research Community (MERC)\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47490\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Medieval Europe Research Community (MERC)\"}],\"location\":\"434\",\"custom_location\":\"434\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/8622257740\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"medieval europe research community (merc) 434 434 community meeting medieval europe research community (merc)\"},{\"agenda_id\":\"581661\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"15:00:00\",\"End_time\":\"16:00:00\",\"Heading\":\"Archaeological Prospection\",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47472\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Archaeological Prospection Community\"}],\"location\":\"437\",\"custom_location\":\"437\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/8099132775\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"archaeological prospection 437 437 community meeting archaeological prospection community\"},{\"agenda_id\":\"581664\",\"Start_date\":\"2026-08-26\",\"Start_time\":\"15:00:00\",\"End_time\":\"16:00:00\",\"Heading\":\"Community for Archaeometallurgy ARCMET \",\"type_ids\":[{\"type_id\":\"47678\",\"color\":\"#000000\",\"font_color\":\"#FFFFFF\",\"name\":\"Community Meeting\"},{\"type_id\":\"47682\",\"color\":\"#FF4A4A\",\"font_color\":\"#FFFFFF\",\"name\":\"Online Only\"}],\"location\":\"Online Only\",\"custom_location\":\"Online Only\",\"short_desc\":\"\",\"description\":\"\",\"session_image\":\"\",\"thumbnail\":\"\",\"s3_image_thumbnail\":\"\",\"zoom_link\":\"https:\\\/\\\/us06web.zoom.us\\\/j\\\/7760178969\",\"show_places_remaining\":\"0\",\"documents_data\":[],\"speakers\":[],\"chairs\":[],\"sponsors\":[],\"exhibitors\":[],\"is_favorite\":\"0\",\"time_slot\":\"afternoon\",\"search_text\":\"community for archaeometallurgy arcmet  online only online only community meeting online only\"}],\"current_page\":1,\"total_page\":1,\"next_page\":null,\"dates\":[\"2026-08-26\",\"2026-08-27\",\"2026-08-28\",\"2026-08-29\"]};\n            }\n            try { localStorage.removeItem('ssp_day_cache_v3'); } catch (e) {}\n            try { localStorage.removeItem('ssp_day_cache_v2'); } catch (e) {}\n            try { localStorage.removeItem('ssp_day_cache_v1'); } catch (e) {}\n        } catch (e) {}\n    })();\n\n    <\/script>\n    \n    <!-- Loader -->\n    <div class=\"pagination-loader\" style=\"display: none;\">\n        <div class=\"loader-spinner\"><\/div>\n        <span class=\"loader-text\">Loading...<\/span>\n    <\/div>\n     <!-- Zoom Meeting Popup -->\n    <div id=\"zoom-meeting-popup\" class=\"zoom-popup-overlay\" style=\"display: none;\">\n        <div class=\"zoom-popup-container\">\n            <div class=\"zoom-popup-header\">\n                <h3>Join Zoom Meeting<\/h3>\n                <button class=\"zoom-popup-close\" id=\"zoom-popup-close\">\n                    <i class=\"fa fa-times\"><\/i>\n                <\/button>\n            <\/div>\n            <div class=\"zoom-popup-body\">\n                <div id=\"zoom-meeting-container\">\n                    <div id=\"zmmtg-root\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n    <style>\n        .agenda-speaker-card{\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            text-align: center;\n            border: 1px solid #cccccc;\n            margin-right: 10px;\n            padding: 12px 6px 6px 6px;\n            border-radius: 10px;\n        }\n        .agenda-section-label {\n            font-size: 14px;\n            font-weight: 600;\n            color: #555;\n            text-transform: uppercase;\n            letter-spacing: 0.05em;\n            margin: 14px 0 8px;\n        }\n        .filtered-hide {\n            display: none !important;\n        }\n        .search-hide {\n            display: none !important;\n        }\n        \/* Date header styling *\/\n        .tab-date-header {\n            font-size: 20px;\n            font-weight: 600;\n            margin-bottom: 20px;\n            padding: 15px 0;\n            border-bottom: 2px solid #e0e0e0;\n            color: #222;\n            font-family: Poppins-Medium, sans-serif;\n        }\n        \/* Search\/filter: keep normal single-day tab switching (date buttons stay visible) *\/\n        .schedule-section.search-active .tabs-content .tab.active-tab {\n            display: block !important;\n        }\n        button.open-filter-btn,\n        button.apply-filter-btn{\n            float: right;\n            margin-bottom: 25px;\n            background: #000;\n            color: #fff;\n            border-radius: 5px;\n            border-color: #000;\n        }\n        button.apply-filter-btn {\n            float: none;\n            margin-top: 20px;\n            width: 100%;\n        }\n        \n        \/* Filter Mode Toggle *\/\n        .filter-mode-toggle {\n            display: flex;\n            gap: 10px;\n            margin-bottom: 15px;\n            justify-content: center;\n        }\n        \n        .toggle-label {\n            display: flex;\n            align-items: center;\n            cursor: pointer;\n            padding: 8px 16px;\n            border: 2px solid #ddd;\n            border-radius: 5px;\n            background: #fff;\n            transition: all 0.3s;\n        }\n        \n        .toggle-label input[type=\"radio\"] {\n            margin-right: 6px;\n        }\n        \n        .toggle-label input[type=\"radio\"]:checked + span {\n            font-weight: 600;\n        }\n        \n        .toggle-label:has(input[type=\"radio\"]:checked) {\n            border-color: #000;\n            background: #f5f5f5;\n        }\n        \n        \/* Collapsible Filter Groups *\/\n        .filter-group {\n            margin-bottom: 10px;\n            border: none;\n            border-radius: 0;\n            overflow: hidden;\n        }\n        \n        .group-title {\n            background: #f5f5f5;\n            padding: 10px 15px;\n            margin: 0;\n            cursor: pointer;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            font-weight: 600;\n            color: #333;\n            transition: background-color 0.3s;\n            user-select: none;\n            border-bottom: 1px solid #e0e0e0;\n        }\n        \n        .group-title:hover {\n            background: #eeeeee;\n        }\n        \n        .toggle-icon {\n            font-size: 12px;\n            transition: transform 0.3s;\n            color: #666;\n        }\n        \n        .group-title.collapsed .toggle-icon {\n            transform: rotate(-90deg);\n        }\n        \n        .filter-checkbox-list {\n            margin: 0;\n            padding: 15px;\n            background: #fff;\n            max-height: 500px;\n            opacity: 1;\n            overflow-y: scroll;\n            transition: max-height 0.3s ease, opacity 0.3s ease, padding 0.3s ease;\n        }\n        \n        .filter-checkbox-list.collapsed {\n            max-height: 0;\n            padding: 0 15px;\n            opacity: 0;\n            overflow: hidden;\n        }\n        \n        \/* Colored Checkboxes *\/\n        .filter-checkbox-list label {\n            display: flex;\n            \/*align-items: center;*\/\n            cursor: pointer;\n        }\n        \n        .filter-checkbox-list input[type=\"checkbox\"],\n        .filter-checkbox-list input[type=\"radio\"] {\n            width: 18px;\n            height: 18px;\n            margin-right: 10px;\n            cursor: pointer;\n            -webkit-appearance: none;\n            -moz-appearance: none;\n            appearance: none;\n            border: 2px solid #ccc;\n            border-radius: 3px;\n            position: relative;\n            transition: all 0.3s;\n        }\n        \n        .filter-checkbox-list input[type=\"checkbox\"]:checked,\n        .filter-checkbox-list input[type=\"radio\"]:checked {\n            background-color: var(--checkbox-color, #0073aa);\n            border-color: var(--checkbox-color, #0073aa);\n        }\n        \n        .filter-checkbox-list input[type=\"checkbox\"]:checked::after,\n        .filter-checkbox-list input[type=\"radio\"]:checked::after {\n            content: '\u2713';\n            position: absolute;\n            top: 50%;\n            left: 50%;\n            transform: translate(-50%, -50%);\n            color: #fff;\n            font-size: 12px;\n            font-weight: bold;\n        }\n        \n        .filter-checkbox-list input[type=\"checkbox\"]:not(:checked),\n        .filter-checkbox-list input[type=\"radio\"]:not(:checked) {\n            border-color: #ccc;\n        }\n        \n        .filter-checkbox-list input[type=\"checkbox\"]:hover,\n        .filter-checkbox-list input[type=\"radio\"]:hover {\n            border-color: var(--checkbox-color, #0073aa);\n        }\n        \n        \/* Filter Sidebar Styles *\/\n        .filter-sidebar {\n            position: fixed;\n            top: 0;\n            right: -400px;\n            width: 350px;\n            height: 100vh;\n            background: #fff;\n            box-shadow: -2px 0 10px rgba(0,0,0,0.1);\n            z-index: 1001;\n            transition: right 0.3s ease;\n            overflow-y: auto;\n        }\n        \n        .filter-sidebar.active {\n            right: 0;\n        }\n\n        .filter-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 20px;\n            padding-bottom: 15px;\n            border-bottom: 1px solid #e0e0e0;\n        }\n        \n        .filter-header h3 {\n            margin: 0;\n            font-size: 18px;\n            font-weight: 600;\n        }\n        \n        .filter-close-btn {\n            background: none;\n            border: none;\n            font-size: 24px;\n            cursor: pointer;\n            padding: 0;\n            width: 30px;\n            height: 30px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n        \n        .filter-backdrop {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: rgba(0,0,0,0.5);\n            z-index: 1000;\n            opacity: 0;\n            visibility: hidden;\n            transition: opacity 0.3s ease, visibility 0.3s ease;\n        }\n        \n        .filter-backdrop.active {\n            opacity: 1;\n            visibility: visible;\n        }\n        \n        \/* Date Carousel Styles *\/\n        .tab-buttons-wrapper {\n            position: relative;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            margin-bottom: 30px;\n            padding: 0 50px;\n        }\n        \n        .tab-buttons-carousel-container {\n            position: relative;\n            width: 100%;\n            overflow: hidden;\n            flex: 1;\n        }\n        \n        .tab-buttons-carousel {\n            display: flex;\n            list-style: none;\n            margin: 0;\n            padding: 0;\n            transition: transform 0.4s ease;\n            will-change: transform;\n        }\n        \n        .tab-buttons-carousel .tab-btn-item {\n            flex-shrink: 0;\n            padding: 0 7.5px;\n        }\n        \n        .tab-buttons-carousel .tab-btn {\n            position: relative;\n            display: inline-block;\n            \/* height: 135px; *\/\n            width: 160px;\n            border-radius: 20px;\n            background-color: #ffffff;\n            font-size: 16px;\n            line-height: 20px;\n            color: #222222;\n            font-weight: 600;\n            text-align: center;\n            padding: 35px 15px;\n            cursor: pointer;\n            margin: 0;\n            border: 1px solid #dddddd;\n            -webkit-transition: all 300ms ease;\n            -moz-transition: all 300ms ease;\n            -ms-transition: all 300ms ease;\n            -o-transition: all 300ms ease;\n            transition: all 300ms ease;\n            font-family: Poppins-Medium;\n            box-sizing: border-box;\n        }\n        \n        .tab-buttons-carousel .tab-btn:hover {\n            border-color: #404040;\n            box-shadow: 0 2px 10px rgba(0,0,0,0.1);\n        }\n        \n        .tab-buttons-carousel .tab-btn.active-btn {\n            border-color: #404040;\n            box-shadow: 0 0px 30px #404040;\n        }\n        \n        .tab-buttons-carousel .tab-btn .date {\n            position: relative;\n            left: auto;\n            top: auto;\n            width: 100%;\n            display: block;\n            font-size: 38px;\n            line-height: 20px;\n            font-weight: 600;\n            color: #222222;\n            margin-bottom: 5px;\n            font-family: Poppins-Medium;\n        }\n        \n        .tab-buttons-carousel .tab-btn .month {\n            display: block;\n            font-size: 20px;\n            line-height: 1em;\n            font-weight: 600;\n            color: #222222;\n            text-transform: uppercase;\n            margin-bottom: 3px;\n            font-family: Poppins-Medium;\n        }\n        \n        \/* Carousel Navigation Buttons *\/\n        .carousel-nav-btn {\n            background: #222222;\n            color: #ffffff;\n            border: none;\n            width: 40px;\n            height: 40px;\n            border-radius: 50%;\n            cursor: pointer;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            font-size: 18px;\n            transition: all 0.3s ease;\n            flex-shrink: 0;\n            z-index: 10;\n            position: absolute;\n            top: 50%;\n            transform: translateY(-50%);\n        }\n        \n        .carousel-nav-btn:hover {\n            background: #404040;\n            transform: translateY(-50%) scale(1.1);\n        }\n        \n        .carousel-nav-btn:disabled {\n            opacity: 0.3;\n            cursor: not-allowed;\n            transform: translateY(-50%);\n        }\n        \n        .carousel-prev {\n            left: 0;\n        }\n        \n        .carousel-next {\n            right: 0;\n        }\n        \n        \/* Hide filtered items in carousel *\/\n        .tab-buttons-carousel .tab-btn-item.filtered-hide {\n            display: none !important;\n        }\n        \n        @media (max-width: 768px) {\n            .tab-buttons-wrapper {\n                padding: 0 40px;\n            }\n        }\n        \n        \/* Pagination Styles *\/\n        .schedule-pagination-wrapper {\n            margin-top: 40px;\n            text-align: center;\n            padding: 20px 0;\n            position: relative;\n        }\n        \n        .schedule-pagination {\n            display: inline-flex;\n            align-items: center;\n            gap: 8px;\n            flex-wrap: wrap;\n            justify-content: center;\n        }\n        \n        .pagination-btn {\n            padding: 10px 20px;\n            background-color: #222;\n            color: #fff;\n            border: none;\n            border-radius: 5px;\n            cursor: pointer;\n            font-size: 15px;\n            font-weight: 600;\n            transition: all 0.2s ease;\n            display: inline-flex;\n            align-items: center;\n            gap: 6px;\n            white-space: nowrap;\n        }\n        \n        .pagination-btn:hover:not(:disabled) {\n            background-color: #404040;\n            transform: translateY(-1px);\n            box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n        }\n        \n        .pagination-btn:disabled {\n            opacity: 0.5;\n            cursor: not-allowed;\n            background-color: #ccc;\n        }\n        \n        .pagination-numbers {\n            display: inline-flex;\n            align-items: center;\n            gap: 4px;\n            margin: 0 10px;\n        }\n        \n        .pagination-number {\n            min-width: 40px;\n            height: 40px;\n            padding: 0 8px;\n            background-color: #fff;\n            color: #222;\n            border: 1px solid #ddd;\n            border-radius: 5px;\n            cursor: pointer;\n            font-size: 15px;\n            font-weight: 500;\n            transition: all 0.2s ease;\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n        }\n        \n        .pagination-number:hover:not(:disabled) {\n            background-color: #f5f5f5;\n            border-color: #222;\n            transform: translateY(-1px);\n        }\n        \n        .pagination-number.active {\n            background-color: #222;\n            color: #fff;\n            border-color: #222;\n            font-weight: 600;\n            cursor: default;\n        }\n        \n        .pagination-number:disabled {\n            cursor: default;\n        }\n        \n        .pagination-dots {\n            padding: 0 8px;\n            color: #999;\n            font-size: 16px;\n            user-select: none;\n        }\n        \n        .pagination-loading {\n            opacity: 0.6;\n            pointer-events: none;\n        }\n        \n        \/* Loader Styles *\/\n        .pagination-loader {\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            bottom: 0;\n            background-color: rgba(255, 255, 255, 0.95);\n            display: none;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            gap: 15px;\n            z-index: 1000;\n            border-radius: 8px;\n            backdrop-filter: blur(2px);\n        }\n        \n        .pagination-loader[style*=\"display: flex\"],\n        .pagination-loader.show {\n            display: flex !important;\n        }\n        \n        .loader-spinner {\n            width: 40px;\n            height: 40px;\n            border: 4px solid #f3f3f3;\n            border-top: 4px solid #222;\n            border-radius: 50%;\n            animation: spin 1s linear infinite;\n        }\n        \n        @keyframes spin {\n            0% { transform: rotate(0deg); }\n            100% { transform: rotate(360deg); }\n        }\n        \n        .loader-text {\n            font-size: 16px;\n            color: #222;\n            font-weight: 500;\n        }\n        \n        @media (max-width: 768px) {\n            .schedule-pagination {\n                flex-direction: column;\n                gap: 15px;\n            }\n            \n            .pagination-btn {\n                width: 100%;\n                max-width: 200px;\n                justify-content: center;\n            }\n            \n            .pagination-numbers {\n                margin: 10px 0;\n                flex-wrap: wrap;\n                justify-content: center;\n            }\n            \n            .pagination-number {\n                min-width: 36px;\n                height: 36px;\n                font-size: 14px;\n            }\n        }\n    <\/style>\n    <script>\n        \/\/ Global filter state \u2014 must be declared before any IIFE references them\n        var selectedTypesGlobal  = [];\n        var filterModeGlobal     = 'and';\n        var filterPayloadGlobal  = null; \/\/ \u2190 ADD THIS\n        window.filterPayloadGlobal = null;\n        var filterResultCache    = {};   \/\/ cache filter results by serialised filter key\n        var searchResultCache    = {};   \/\/ cache all-dates search\/filter lists for instant tab switches\n\n        \/**\n         * Rebuild filterPayloadGlobal from currently checked filter checkboxes.\n         * Returns the payload (or null when nothing is selected).\n         *\/\n        window.sspRebuildFilterPayloadFromUI = function() {\n            if (typeof jQuery === 'undefined') return null;\n            var $ = jQuery;\n            selectedTypesGlobal = [];\n            filterModeGlobal = $('input[name=\"filter-mode\"]:checked').val() || 'and';\n\n            var groupedFilters = {};\n            $('.filter-checkbox:checked').each(function () {\n                var typeId  = $(this).val();\n                var groupId = $(this).attr('data-group');\n                if (groupId === undefined || groupId === null) {\n                    groupId = '';\n                }\n                if (!groupedFilters[groupId]) {\n                    groupedFilters[groupId] = [];\n                }\n                groupedFilters[groupId].push(typeId);\n                selectedTypesGlobal.push(typeId);\n            });\n\n            var filtersArray = [];\n            Object.keys(groupedFilters).forEach(function(groupKey) {\n                filtersArray.push({\n                    group_key: groupKey,\n                    values:    groupedFilters[groupKey]\n                });\n            });\n\n            filterPayloadGlobal = filtersArray.length > 0 ? {\n                filter_type: filterModeGlobal.toUpperCase(),\n                filters:     filtersArray\n            } : null;\n            window.filterPayloadGlobal = filterPayloadGlobal;\n            return filterPayloadGlobal;\n        };\n\n        \/**\n         * Reload schedule using whatever search + filter are currently active.\n         * - Search only  \u2192 search results\n         * - Filter only  \u2192 filter results\n         * - Both         \u2192 combined API query\n         * - Neither      \u2192 default agenda\n         *\/\n        window.sspReloadScheduleQuery = function(options) {\n            options = options || {};\n            if (typeof jQuery === 'undefined') {\n                return;\n            }\n            var $ = jQuery;\n\n            \/\/ Sync filter payload from UI unless caller already cleared it\n            if (!options.skipFilterRebuild) {\n                window.sspRebuildFilterPayloadFromUI();\n            } else {\n                \/\/ Caller cleared filters \u2014 keep payload null even if rebuild would run later\n                if (!filterPayloadGlobal || !filterPayloadGlobal.filters || !filterPayloadGlobal.filters.length) {\n                    filterPayloadGlobal = null;\n                    window.filterPayloadGlobal = null;\n                }\n            }\n\n            var searchVal = (typeof options.searchVal === 'string')\n                ? $.trim(options.searchVal)\n                : $.trim($('#scheduleSearch').val() || '');\n            var hasSearch = searchVal.length > 0;\n            var hasFilter = !!(filterPayloadGlobal && filterPayloadGlobal.filters && filterPayloadGlobal.filters.length);\n\n            searchResultCache = {};\n            filterResultCache = {};\n            window._sspFilterResultCache = null;\n            $('.tab').data('loaded', false);\n\n            if (hasSearch) {\n                $('.schedule-section').addClass('search-active');\n            } else {\n                $('.schedule-section').removeClass('search-active');\n                $('.tabs-content .tab').removeClass('has-search-results');\n            }\n\n            \/\/ Nothing left \u2192 default schedule (ONLY when search box is also empty)\n            if (!hasSearch && !hasFilter) {\n                if (typeof window.loadDefaultAgendaData === 'function') {\n                    window.loadDefaultAgendaData();\n                }\n                return;\n            }\n\n            \/\/ Prefer attribute over jQuery .data() (avoids Date object coercion on data-date)\n            function readDate($el) {\n                if (!$el || !$el.length) return '';\n                return String($el.attr('data-date') || $el.data('date') || '').substring(0, 10);\n            }\n\n            var $activeTab = $('.tabs-content .tab.active-tab').first();\n            var activeDate = readDate($activeTab)\n                || readDate($('.tab-buttons-carousel .tab-btn.active-btn').first())\n                || readDate($('.tab-buttons-carousel .tab-btn').first())\n                || readDate($('.tabs-content .tab').first())\n                || (window.scheduleUserData && window.scheduleUserData.currentLoadedDate)\n                || (window.scheduleUserData && window.scheduleUserData.firstDate)\n                || '';\n\n            if (activeDate && (!\/^\\d{4}-\\d{2}-\\d{2}$\/.test(activeDate))) {\n                activeDate = String(activeDate).substring(0, 10);\n                if (!\/^\\d{4}-\\d{2}-\\d{2}$\/.test(activeDate)) {\n                    activeDate = '';\n                }\n            }\n\n            if (activeDate) {\n                var $byDate = $('.tabs-content .tab[data-date=\"' + activeDate + '\"]');\n                if ($byDate.length) {\n                    $activeTab = $byDate;\n                }\n            }\n\n            if (!$activeTab.length) {\n                $activeTab = $('<div class=\"tab active-tab\" data-date=\"' + (activeDate || '') + '\"><div class=\"schedule-timeline\"><\/div><\/div>');\n                $('.tabs-content').append($activeTab);\n            }\n\n            \/\/ Still no date \u2014 use placeholder; sendDate:false so API gets search\/filter only\n            if (!activeDate) {\n                activeDate = '1970-01-01';\n                $activeTab.attr('data-date', activeDate);\n            }\n\n            if (typeof window.loadAgendaByDate !== 'function') {\n                \/\/ Agenda loader not ready yet \u2014 retry shortly, never drop to default while search\/filter active\n                setTimeout(function() {\n                    window.sspReloadScheduleQuery(options);\n                }, 150);\n                return;\n            }\n\n            \/\/ Across-all-dates query whenever search and\/or filter is active\n            window.loadAgendaByDate(activeDate, $activeTab, {\n                sendDate: false,\n                forceAjax: true,\n                searchKeyword: searchVal\n            });\n        };\n    \/\/ ===============================\n    \/\/ LIVE SEARCH SYSTEM - Search ONLY within the currently selected date\n    \/\/ ===============================\n    (function() {\n        function initScheduleSearch() {\n            if (typeof jQuery === 'undefined') {\n                setTimeout(initScheduleSearch, 100);\n                return;\n            }\n            \n            var $ = jQuery;\n            var searchTimeout;\n            var $scheduleSection = $('.schedule-section.style-two');\n            var $searchInput = $('#scheduleSearch');\n            var $clearSearchBtn = $('#clearSearchBtn');\n            var currentActiveDate = window.scheduleUserData ? window.scheduleUserData.currentLoadedDate : '';\n\n            \/\/ Show\/hide clear button based on search input\n            function updateClearSearchButton() {\n                if ($searchInput.val().trim().length > 0) {\n                    $clearSearchBtn.show();\n                } else {\n                    $clearSearchBtn.hide();\n                }\n            }\n\n            \/\/ Handle clear search button click\n            $clearSearchBtn.on('click', function() {\n                $searchInput.val('');\n                $clearSearchBtn.hide();\n                searchResultCache = {};\n                filterResultCache = {};\n                window._sspFilterResultCache = null;\n                $('.schedule-section').removeClass('search-active');\n                $('.tabs-content .tab').removeClass('has-search-results');\n\n                \/\/ Keep active filters if any are still selected\n                if (typeof window.sspReloadScheduleQuery === 'function') {\n                    window.sspReloadScheduleQuery({ fromSearchClear: true });\n                }\n            });\n\n            \/\/ Update clear button visibility on input\n            $searchInput.on('input', function() {\n                updateClearSearchButton();\n            });\n            \n            \/\/ Update current active date when tab changes\n            $(document).on('click', '.tab-buttons-carousel .tab-btn', function() {\n                var date = $(this).data('date');\n                if (date) {\n                    currentActiveDate = date;\n                    if (window.scheduleUserData) {\n                        window.scheduleUserData.currentLoadedDate = date;\n                    }\n                }\n            });\n            \n            \/\/ Listen for agenda loaded events\n            $(document).on('agenda:loaded', function(e, date, agendaList) {\n                if (currentActiveDate === date) {\n                    \/\/ Search results are now fetched from API directly via input handler.\n                    \/\/ Keep this hook only for date state synchronization.\n                }\n            });\n            \n            \/\/ Only initialize if schedule section and search input exist\n            if (!$scheduleSection.length || !$searchInput.length) {\n                setTimeout(initScheduleSearch, 100);\n                return;\n            }\n\n            \/\/ Initial check for clear button visibility\n            updateClearSearchButton();\n            \n            \/\/ Remove any existing handlers to prevent duplicates\n            $searchInput.off('input.search keyup.search');\n            \n            function performSearch(searchVal) {\n                if (searchVal) {\n                    $scheduleSection.addClass('search-active');\n                } else {\n                    $scheduleSection.removeClass('search-active');\n                    $scheduleSection.find('.tab.has-search-results').removeClass('has-search-results');\n                }\n\n                if (typeof window.sspReloadScheduleQuery === 'function') {\n                    window.sspReloadScheduleQuery({ searchVal: searchVal });\n                    return;\n                }\n\n                var $activeTab = $scheduleSection.find('.tab.active-tab');\n                if (!$activeTab.length || typeof window.loadAgendaByDate !== 'function') {\n                    return;\n                }\n\n                var activeDate = $activeTab.data('date') || currentActiveDate;\n                if (!activeDate) {\n                    var $firstBtn = $('.tab-buttons-carousel .tab-btn').first();\n                    activeDate = $firstBtn.data('date') || '';\n                }\n\n                if (!activeDate) {\n                    return;\n                }\n\n                $('.tab').data('loaded', false);\n                var hasFilter = !!(window.filterPayloadGlobal && window.filterPayloadGlobal.filters && window.filterPayloadGlobal.filters.length);\n                window.loadAgendaByDate(activeDate, $activeTab, { sendDate: !(searchVal || hasFilter) });\n            }\n            \n            $searchInput.on('input.search keyup.search', function() {\n                clearTimeout(searchTimeout);\n                var $input = $(this);\n                \n                searchTimeout = setTimeout(function() {\n                    var searchVal = $input.val().trim();\n                    if (typeof window.sspReloadScheduleQuery === 'function') {\n                        window.sspReloadScheduleQuery({ searchVal: searchVal });\n                        return;\n                    }\n                    if (!searchVal && !filterPayloadGlobal) {\n                        if (typeof window.loadDefaultAgendaData === 'function') {\n                            window.loadDefaultAgendaData();\n                            return;\n                        }\n                    }\n                    performSearch(searchVal);\n                }, 350); \/\/ Debounce API search calls\n            });\n        }\n        \n        \/\/ Initialize search when DOM is ready\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', initScheduleSearch);\n        } else {\n            \/\/ DOM already loaded, try to initialize\n            if (window.requestIdleCallback) {\n                requestIdleCallback(initScheduleSearch);\n            } else {\n                setTimeout(initScheduleSearch, 100);\n            }\n        } \n    })();\n\n     jQuery(document).ready(function($) {\n        \/\/ When blocked agenda clicked - use delegation for dynamically rendered blocks\n        $(document).on(\"click\", \".schedule-block.blocked-agenda\", function(e) {\n            \/\/ Only block if not clicking the favourite icon\n            if ($(e.target).closest('.favourite_icon').length) return;\n            e.preventDefault();\n            e.stopPropagation();\n    \n            let message = $(this).data(\"message\");\n            $(\"#blockedMessage\").text(message);\n    \n            $(\"#blockedPopup\").fadeIn();\n        });\n    \n        \/\/ Close popup button\n        $(\".close-blocked-popup\").on(\"click\", function() {\n            $(\"#blockedPopup\").fadeOut();\n        });\n    \n        \/\/ Click outside closes popup\n        $(\"#blockedPopup\").on(\"click\", function(e) {\n            if (e.target.id === \"blockedPopup\") {\n                $(\"#blockedPopup\").fadeOut();\n            }\n        });\n\n        \/\/ ============================================================\n        \/\/ FAVOURITE \/ BOOKMARK CLICK HANDLER\n        \/\/ Defined here (inline) so it always runs regardless of\n        \/\/ external script load order, and uses delegation so it works\n        \/\/ for dynamically rendered agenda items (filter \/ search \/ tab).\n        \/\/ ============================================================\n        window.scheduleBookmarkHandlerActive = true;\n\n        function setAgendaFavoriteLocal(agendaId, isOn) {\n            agendaId = String(agendaId || '');\n            if (!agendaId) return;\n            if (window.scheduleUserData) {\n                window.scheduleUserData.userAgendaIds = window.scheduleUserData.userAgendaIds || [];\n                var idx = window.scheduleUserData.userAgendaIds.indexOf(agendaId);\n                if (isOn && idx === -1) {\n                    window.scheduleUserData.userAgendaIds.push(agendaId);\n                } else if (!isOn && idx !== -1) {\n                    window.scheduleUserData.userAgendaIds.splice(idx, 1);\n                }\n            }\n            var cache = window._sspPageCache || {};\n            Object.keys(cache).forEach(function(dateKey) {\n                var pages = cache[dateKey] || {};\n                Object.keys(pages).forEach(function(pageKey) {\n                    var list = pages[pageKey] && pages[pageKey].agenda_list;\n                    if (!Array.isArray(list)) return;\n                    for (var i = 0; i < list.length; i++) {\n                        if (list[i] && String(list[i].agenda_id) === agendaId) {\n                            list[i].is_favorite = isOn ? '1' : '0';\n                        }\n                    }\n                });\n            });\n        }\n\n        $(document).on('click', '.favourite_icon', function(e) {\n            e.stopPropagation();\n\n            var icon     = $(this);\n            \/\/ Document bookmarks use a separate FavouriteDocument handler.\n            if (icon.hasClass('doc-favourite_icon') || icon.data('document_id')) {\n                return;\n            }\n\n            var eventId  = icon.data('event_id');\n            var agendaId = String(icon.data('agenda_id'));\n            var userId   = icon.data('user_id') || (window.scheduleUserData && window.scheduleUserData.userId) || '';\n\n            if (!agendaId || agendaId === 'undefined') return;\n            if (!userId) {\n                scheduleShowToast('error', 'Please log in to update favourites.');\n                return;\n            }\n\n            \/\/ Use favorite_ajax if available (enqueued by WP), else fall back to scheduleUserData\n            var ajaxUrl = (typeof favorite_ajax !== 'undefined') ? favorite_ajax.ajax_url\n                        : (window.scheduleUserData ? window.scheduleUserData.ajaxUrl : '') \n                        || 'https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-admin\/admin-ajax.php';\n            var nonce   = (typeof favorite_ajax !== 'undefined') ? favorite_ajax.nonce\n                        : 'fe028afd86';\n\n            icon.addClass('loading');\n\n            var isFavourited = icon.hasClass('favourited');\n            var actionType   = isFavourited ? 'unfavourite' : 'favourite';\n\n            $.ajax({\n                type: 'POST',\n                url: ajaxUrl,\n                data: {\n                    action:     'handle_favorite_icon',\n                    nonce:      nonce,\n                    event_id:   eventId,\n                    agenda_id:  agendaId,\n                    user_id:    userId,\n                    fav_action: actionType,\n                },\n                success: function(response) {\n                    icon.removeClass('loading');\n                    var specialMsg = \"By saving this workshop, you are reserving one of the limited seats. To continue and reserve your seat, select continue.\";\n\n                    if (response && response.data && response.data.data && response.data.data.data &&\n                        response.data.data.data.remaining_place_message === specialMsg) {\n                        \/\/ Show reserve modal\n                        scheduleShowReserveModal(ajaxUrl, nonce, eventId, agendaId, userId, icon);\n                    } else if (response && response.success) {\n                        if (isFavourited) {\n                            icon.find('i').removeClass('fa-solid active').addClass('fa-regular');\n                            icon.removeClass('favourited');\n                            setAgendaFavoriteLocal(agendaId, false);\n                            scheduleShowToast('success', 'Removed from My Agenda');\n                        } else {\n                            icon.find('i').removeClass('fa-regular').addClass('fa-solid active');\n                            icon.addClass('favourited');\n                            setAgendaFavoriteLocal(agendaId, true);\n                            scheduleShowToast('success', 'Added to My Agenda');\n                        }\n                    } else {\n                        var msg = (response && response.data && response.data.data && response.data.data.data &&\n                                   response.data.data.data.remaining_place_message)\n                                  || 'No place left or failed to update';\n                        scheduleShowToast('error', msg);\n                    }\n                },\n                error: function() {\n                    icon.removeClass('loading');\n                    scheduleShowToast('error', 'Request failed. Please try again.');\n                }\n            });\n        });\n\n        function scheduleShowReserveModal(ajaxUrl, nonce, eventId, agendaId, userId, icon) {\n            $('.reserve-modal').remove();\n            var modal = $('<div class=\"reserve-modal\" style=\"position:fixed;z-index:9999;left:0;top:0;width:100vw;height:100vh;background:rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;\">' +\n                '<div style=\"background:#fff;border-radius:12px;max-width:400px;width:90vw;padding:28px 16px 16px;text-align:center;box-shadow:0 2px 12px rgba(0,0,0,0.2);\">' +\n                '<h3 style=\"margin-bottom:15px;\">Reserve Seat<\/h3>' +\n                '<p style=\"margin-bottom:18px;\">By saving this workshop, you are reserving one of the limited seats. To continue and reserve your seat, select continue.<\/p>' +\n                '<button class=\"reserve-cancel\" style=\"margin-right:12px;padding:8px 18px;cursor:pointer;\">Cancel<\/button>' +\n                '<button class=\"reserve-continue\" style=\"padding:8px 18px;cursor:pointer;background:#222;color:#fff;border:none;border-radius:6px;\">Continue<\/button>' +\n                '<\/div><\/div>');\n            $('body').append(modal);\n            modal.find('.reserve-cancel').on('click', function() { modal.remove(); });\n            modal.find('.reserve-continue').on('click', function() {\n                modal.remove();\n                $.ajax({\n                    type: 'POST', url: ajaxUrl,\n                    data: { action: 'save_agenda_ajax', nonce: nonce, event_id: eventId, agenda_id: agendaId, user_id: userId },\n                    success: function(resp) {\n                        if (resp.success) {\n                            icon.find('i').removeClass('fa-regular').addClass('fa-solid active');\n                            icon.addClass('favourited');\n                            setAgendaFavoriteLocal(agendaId, true);\n                            scheduleShowToast('success', 'Seat reserved and added to My Agenda');\n                        } else {\n                            scheduleShowToast('error', 'Reservation failed or no seat available');\n                        }\n                    },\n                    error: function() { scheduleShowToast('error', 'Request failed.'); }\n                });\n            });\n        }\n\n        function scheduleShowToast(type, text) {\n            var $container = $('#agenda-toast-container');\n            if (!$container.length) {\n                $container = $('<div id=\"agenda-toast-container\" style=\"position:fixed;bottom:20px;right:20px;z-index:99999;\"><\/div>');\n                $('body').append($container);\n            }\n            var bg = type === 'success' ? '#28a745' : '#dc3545';\n            var $msg = $('<div style=\"background:' + bg + ';color:#fff;padding:12px 20px;border-radius:8px;margin-top:8px;font-size:14px;box-shadow:0 2px 8px rgba(0,0,0,0.2);\">' + text + '<\/div>');\n            $container.append($msg);\n            $msg.fadeIn(200).delay(3000).fadeOut(600, function() { $(this).remove(); });\n        }\n    \n    });\n    \/\/ Disable right-click \n    \/\/document.addEventListener(\"contextmenu\", event => event.preventDefault());\n    \n    \/\/ Disable F12, Ctrl+Shift+I, Ctrl+U\n    document.onkeydown = function(e) {\n        if (e.keyCode == 123) return false; \n        if (e.ctrlKey && e.shiftKey && e.keyCode == 73) return false;\n        if (e.ctrlKey && e.keyCode == 85) return false;\n    };\n\n    jQuery(document).ready(function($) {\n        \/\/ First date is automatically selected by PHP - no persistence needed\n        \/\/ The first tab is always active on page load\n    });\n\n    \/\/ ==================================================\n    \/\/ AJAX LOADING OF AGENDA BY DATE\n    \/\/ ==================================================\n    (function() {\n        function initDateAjaxLoading() {\n            if (typeof jQuery === 'undefined') {\n                setTimeout(initDateAjaxLoading, 100);\n                return;\n            }\n            \n            var $ = jQuery;\n            var isLoading = false;\n            var $tabsContent = $('.tabs-content');\n            var ajaxUrl = $tabsContent.data('ajax-url');\n            var nonce = $tabsContent.data('nonce');\n\n            \/\/ One-time migration: remove old cache keys so stale data doesn't linger.\n            try { localStorage.removeItem('ssp_day_cache_v1'); } catch(e) {}\n            try { localStorage.removeItem('ssp_day_cache_v2'); } catch(e) {}\n            try { sessionStorage.removeItem('ssp_day_cache_v1'); } catch(e) {}\n            try { sessionStorage.removeItem('ssp_day_cache_v2'); } catch(e) {}\n\n            \/\/ \u2500\u2500 Global day-cache helpers (used by BOTH loadAgendaByDate and loadDefaultAgendaData) \u2500\u2500\n            var SSP_LC_KEY    = 'ssp_day_cache_v3';\n            var SSP_LC_TTL_MS = 7 * 60 * 1000; \/\/ 7 minutes\n\n            \/\/ Write window._sspDayCache to localStorage with a fresh timestamp.\n            \/\/ Also stores the ordered date list so restore preserves API sort order.\n            window._sspPersistDayCache = function() {\n                try {\n                    var d = window._sspDayCache || {};\n                    \/\/ Use the currently known ordered dates if available.\n                    var orderedDates = (window._sspInlineDates && window._sspInlineDates.length)\n                        ? window._sspInlineDates\n                        : Object.keys(d).sort();\n                    localStorage.setItem(SSP_LC_KEY, JSON.stringify({\n                        savedAt: Date.now(),\n                        orderedDates: orderedDates,\n                        dates: d\n                    }));\n                } catch(e) {}\n            };\n\n            \/\/ Read localStorage into window._sspDayCache. Returns true if cache was fresh.\n            window._sspRestoreDayCache = function() {\n                try {\n                    var raw = localStorage.getItem(SSP_LC_KEY);\n                    if (!raw) return false;\n                    var obj = JSON.parse(raw);\n                    if (!obj || !obj.savedAt || !obj.dates || typeof obj.dates !== 'object') return false;\n                    if (Date.now() - obj.savedAt >= SSP_LC_TTL_MS) {\n                        localStorage.removeItem(SSP_LC_KEY);\n                        return false;\n                    }\n                    window._sspDayCache       = obj.dates;\n                    window._sspDayCacheLoaded  = true;\n                    \/\/ Restore ordered date list for correct tab order.\n                    if (Array.isArray(obj.orderedDates) && obj.orderedDates.length) {\n                        window._sspInlineDates = obj.orderedDates;\n                    }\n                    return true;\n                } catch(e) { return false; }\n            };\n\n            \/\/ Add one date's items into _sspDayCache and persist.\n            window._sspCacheDateItems = function(items) {\n                window._sspDayCache = window._sspDayCache || {};\n                (Array.isArray(items) ? items : []).forEach(function(item) {\n                    if (!item || !item.Start_date) return;\n                    var d = String(item.Start_date).trim().substring(0, 10);\n                    if (!d) return;\n                    if (!window._sspDayCache[d]) window._sspDayCache[d] = [];\n                    var already = window._sspDayCache[d].some(function(x) {\n                        return x && x.agenda_id && item.agenda_id && String(x.agenda_id) === String(item.agenda_id);\n                    });\n                    if (!already) window._sspDayCache[d].push(item);\n                });\n                window._sspPersistDayCache();\n            };\n            \/\/ \u2500\u2500 end global helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n            window._sspSchedulePageLoading = false;\n            window._sspScrollLoadArmed = false;\n            window._sspLastScrollY = 0;\n            window._sspPageCache = window._sspPageCache || {};\n            window._sspPrefetchXhrs = window._sspPrefetchXhrs || {};\n\n            function sspPageCacheKey(date, pageNo) {\n                return String(date || '') + '|' + String(pageNo || 1);\n            }\n\n            function sspGetCachedPage(date, pageNo) {\n                date = String(date || '').substring(0, 10);\n                pageNo = parseInt(pageNo, 10) || 1;\n                if (!date || !window._sspPageCache[date]) return null;\n                return window._sspPageCache[date][pageNo] || null;\n            }\n\n            function sspSetCachedPage(date, pageNo, payload) {\n                date = String(date || '').substring(0, 10);\n                pageNo = parseInt(pageNo, 10) || 1;\n                if (!date || !payload) return;\n                window._sspPageCache[date] = window._sspPageCache[date] || {};\n                window._sspPageCache[date][pageNo] = {\n                    agenda_list: Array.isArray(payload.agenda_list) ? payload.agenda_list.slice() : [],\n                    current_page: payload.current_page,\n                    total_page: payload.total_page,\n                    next_page: payload.next_page,\n                    dates: payload.dates || []\n                };\n            }\n\n            function sspPrefetchAgendaPage(date, pageNo, ajaxUrl, nonce) {\n                date = String(date || '').substring(0, 10);\n                pageNo = parseInt(pageNo, 10) || 0;\n                if (!date || pageNo < 1 || !ajaxUrl) return;\n                if (sspGetCachedPage(date, pageNo)) return;\n                var key = sspPageCacheKey(date, pageNo);\n                if (window._sspPrefetchXhrs[key]) return;\n\n                window._sspPrefetchXhrs[key] = $.ajax({\n                    url: ajaxUrl,\n                    type: 'POST',\n                    dataType: 'json',\n                    data: {\n                        action: 'ssp_get_agenda_by_date',\n                        date: date,\n                        page_no: pageNo,\n                        nonce: nonce\n                    }\n                }).done(function(response) {\n                    if (response && response.success && response.data && Array.isArray(response.data.agenda_list)) {\n                        sspSetCachedPage(date, pageNo, response.data);\n                    }\n                }).always(function() {\n                    delete window._sspPrefetchXhrs[key];\n                });\n            }\n\n            function sspScheduleIdlePrefetch(fn) {\n                if (typeof window.requestIdleCallback === 'function') {\n                    window.requestIdleCallback(fn, { timeout: 1200 });\n                } else {\n                    setTimeout(fn, 250);\n                }\n            }\n\n            function normalizeSchedulePagination(data) {\n                data = data || {};\n                var currentPage = parseInt(data.current_page, 10) || 1;\n                var totalPages  = parseInt(data.total_page, 10) || parseInt(data.total_pages, 10) || 1;\n                var nextPage    = parseInt(data.next_page, 10);\n                var hasMore     = currentPage < totalPages;\n\n                if (!hasMore) {\n                    nextPage = 0;\n                } else if (!nextPage || nextPage <= currentPage) {\n                    nextPage = currentPage + 1;\n                }\n\n                return {\n                    currentPage: currentPage,\n                    totalPages: totalPages,\n                    nextPage: nextPage,\n                    hasMore: hasMore,\n                    \/\/ V4 API page_no is 1-based \u2014 send next_page as-is (2, 3, \u2026).\n                    nextPageNo: hasMore ? nextPage : -1\n                };\n            }\n\n            function updateTabPaginationState($tab, pagination) {\n                if (!$tab || !$tab.length || !pagination) return;\n                $tab.attr({\n                    'data-current-page': pagination.currentPage,\n                    'data-total-pages': pagination.totalPages,\n                    'data-next-page': pagination.hasMore ? pagination.nextPage : '',\n                    'data-next-page-no': pagination.hasMore ? pagination.nextPageNo : '',\n                    'data-has-more': pagination.hasMore ? '1' : '0'\n                });\n\n                var $endMsg = $tab.find('.schedule-end-message');\n                var $loader = $tab.find('.schedule-infinite-loader');\n                if (pagination.hasMore) {\n                    $endMsg.hide();\n                } else if ($tab.find('.schedule-block').length) {\n                    $loader.hide();\n                    $endMsg.show();\n                } else {\n                    $endMsg.hide();\n                }\n            }\n\n            function ensureTabScrollUi($tab) {\n                if (!$tab || !$tab.length) return;\n                if (!$tab.find('.schedule-scroll-sentinel').length) {\n                    $tab.append(\n                        '<div class=\"schedule-scroll-sentinel\" aria-hidden=\"true\"><\/div>' +\n                        '<div class=\"schedule-infinite-loader\" style=\"display:none;text-align:center;padding:24px 0;\">' +\n                        '<div class=\"loader-spinner\" style=\"width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #222;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 10px;\"><\/div>' +\n                        '<span style=\"color:#666;font-size:14px;\">Loading more sessions...<\/span><\/div>' +\n                        '<div class=\"schedule-end-message\" style=\"display:none;text-align:center;padding:20px 0;color:#888;font-size:14px;\">All sessions loaded.<\/div>'\n                    );\n                }\n            }\n\n            function getTabExistingAgendaIds($tab) {\n                var ids = {};\n                if (!$tab || !$tab.length) return ids;\n                $tab.find('.favourite_icon[data-agenda_id]').each(function() {\n                    var id = String($(this).data('agenda_id') || '');\n                    if (id) ids[id] = true;\n                });\n                $tab.find('a.agenda-link[href*=\"agenda_id=\"]').each(function() {\n                    var href = String($(this).attr('href') || '');\n                    var match = href.match(\/agenda_id=([^&]+)\/);\n                    if (match && match[1]) ids[decodeURIComponent(match[1])] = true;\n                });\n                return ids;\n            }\n\n            \/\/ After each page render, require a real user scroll before loading the next page.\n            \/\/ Prevents IntersectionObserver cascade (page 1 \u2192 2 \u2192 \u2026 \u2192 6 instantly).\n            window.disarmScheduleScrollLoad = function() {\n                window._sspScrollLoadArmed = false;\n                window._sspLastScrollY = window.pageYOffset || document.documentElement.scrollTop || 0;\n            };\n\n            window.armScheduleScrollLoadOnUserScroll = function() {\n                $(window).off('scroll.sspArmLoad touchmove.sspArmLoad').on('scroll.sspArmLoad touchmove.sspArmLoad', function() {\n                    var y = window.pageYOffset || document.documentElement.scrollTop || 0;\n                    if (Math.abs(y - (window._sspLastScrollY || 0)) < 40) return;\n                    window._sspScrollLoadArmed = true;\n                    $(window).off('scroll.sspArmLoad touchmove.sspArmLoad');\n                });\n            };\n\n            function disarmScheduleScrollLoad() {\n                window.disarmScheduleScrollLoad();\n            }\n\n            function armScheduleScrollLoadOnUserScroll() {\n                window.armScheduleScrollLoadOnUserScroll();\n            }\n\n            function isNearScheduleBottom($tab) {\n                if (!$tab || !$tab.length) return false;\n                var $sentinel = $tab.find('.schedule-scroll-sentinel').first();\n                if (!$sentinel.length) return false;\n                var rect = $sentinel[0].getBoundingClientRect();\n                return rect.top <= (window.innerHeight + 120);\n            }\n\n            function loadNextSchedulePage($tab, date) {\n                if (!$tab || !$tab.length || window._sspSchedulePageLoading) return;\n                \/\/ No next page \u2192 never call AJAX.\n                if (parseInt($tab.attr('data-has-more'), 10) !== 1) return;\n                var totalPages = parseInt($tab.attr('data-total-pages'), 10) || 1;\n                var currentPage = parseInt($tab.attr('data-current-page'), 10) || 1;\n                if (currentPage >= totalPages) {\n                    $tab.attr('data-has-more', '0');\n                    $tab.find('.schedule-end-message').show();\n                    $tab.find('.schedule-infinite-loader').hide();\n                    return;\n                }\n                \/\/ Only load next page after the user has scrolled (not on tab paint).\n                if (!window._sspScrollLoadArmed) return;\n                if (!isNearScheduleBottom($tab)) return;\n\n                var nextPageNo = parseInt($tab.attr('data-next-page-no'), 10);\n                if (isNaN(nextPageNo) || nextPageNo < 1 || nextPageNo <= currentPage) return;\n\n                \/\/ Consume arm so cascade cannot auto-fire for remaining pages.\n                disarmScheduleScrollLoad();\n                armScheduleScrollLoadOnUserScroll();\n\n                $tab.find('.schedule-infinite-loader').show();\n                window._sspSchedulePageLoading = true;\n\n                \/\/ Prefetch hit renders instantly; otherwise AJAX.\n                window.loadAgendaByDate(date, $tab, {\n                    sendDate: true,\n                    pageNo: nextPageNo,\n                    append: true,\n                    forceAjax: false\n                });\n            }\n\n            function setupScheduleInfiniteScroll() {\n                disarmScheduleScrollLoad();\n                armScheduleScrollLoadOnUserScroll();\n\n                $(window).off('scroll.sspScheduleInfinite').on('scroll.sspScheduleInfinite', function() {\n                    if (!window._sspScrollLoadArmed || window._sspSchedulePageLoading) return;\n                    var $activeTab = $('.tabs-content .tab.active-tab').first();\n                    if (!$activeTab.length) return;\n                    var date = String($activeTab.attr('data-date') || '').substring(0, 10);\n                    if (!date || parseInt($activeTab.attr('data-has-more'), 10) !== 1) return;\n                    if (isNearScheduleBottom($activeTab)) {\n                        loadNextSchedulePage($activeTab, date);\n                    }\n                });\n\n                if ('IntersectionObserver' in window) {\n                    if (window._sspScheduleScrollObserver) {\n                        window._sspScheduleScrollObserver.disconnect();\n                    }\n\n                    window._sspScheduleScrollObserver = new IntersectionObserver(function(entries) {\n                        entries.forEach(function(entry) {\n                            if (!entry.isIntersecting) return;\n                            if (!window._sspScrollLoadArmed || window._sspSchedulePageLoading) return;\n                            var $sentinel = $(entry.target);\n                            var $tab = $sentinel.closest('.tab');\n                            if (!$tab.length || !$tab.hasClass('active-tab')) return;\n                            var date = String($tab.attr('data-date') || '').substring(0, 10);\n                            if (!date) return;\n                            loadNextSchedulePage($tab, date);\n                        });\n                    }, {\n                        root: null,\n                        rootMargin: '200px 0px',\n                        threshold: 0\n                    });\n\n                    function observeScheduleSentinels() {\n                        $('.schedule-scroll-sentinel').each(function() {\n                            this._sspObserved = false;\n                            window._sspScheduleScrollObserver.observe(this);\n                            this._sspObserved = true;\n                        });\n                    }\n\n                    observeScheduleSentinels();\n                    $(document).off('agenda:loaded.sspInfinite').on('agenda:loaded.sspInfinite', function() {\n                        observeScheduleSentinels();\n                        \/\/ Fresh page paint must not auto-load more until user scrolls again.\n                        disarmScheduleScrollLoad();\n                        armScheduleScrollLoadOnUserScroll();\n                    });\n                }\n            }\n\n            function formatDateHeader(dateStr) {\n                var d = new Date(dateStr + 'T00:00:00');\n                if (isNaN(d.getTime())) {\n                    return dateStr;\n                }\n                return d.toLocaleDateString('en-US', {\n                    weekday: 'long',\n                    month: 'short',\n                    day: '2-digit'\n                });\n            }\n\n            function rebuildDateTabsFromApiDates(dates, activeDate) {\n                var $carousel = $('.tab-buttons-carousel');\n                var $tabsWrap = $('.tabs-content');\n                if (!$carousel.length || !$tabsWrap.length) {\n                    return null;\n                }\n\n                \/\/ Preserve ajax attrs on tabs-content (needed after innerHTML rebuilds)\n                var ajaxUrlAttr = $tabsWrap.attr('data-ajax-url') || $tabsWrap.data('ajax-url') || '';\n                var nonceAttr = $tabsWrap.attr('data-nonce') || $tabsWrap.data('nonce') || '';\n\n                if (!Array.isArray(dates) || !dates.length) {\n                    $carousel.html('');\n                    $tabsWrap.attr('data-ajax-url', ajaxUrlAttr).attr('data-nonce', nonceAttr);\n                    $tabsWrap.html('<div class=\"tab active-tab\" id=\"tab-1\" data-date=\"\" data-loaded=\"true\"><div class=\"schedule-timeline\"><p class=\"ssp-no-agenda-msg\" style=\"text-align:center;padding:40px;\">No sessions match your search\/filter.<\/p><\/div><\/div>');\n                    return null;\n                }\n\n                var active = activeDate && dates.indexOf(activeDate) !== -1 ? activeDate : dates[0];\n                var buttonsHtml = '';\n                var tabsHtml = '';\n\n                dates.forEach(function(dateStr, index) {\n                    var d = new Date(dateStr + 'T00:00:00');\n                    var dayNum = !isNaN(d.getTime()) ? String(d.getDate()).padStart(2, '0') : '';\n                    var month = !isNaN(d.getTime()) ? d.toLocaleString('en-US', { month: 'short' }) : '';\n                    var dayName = !isNaN(d.getTime()) ? d.toLocaleString('en-US', { weekday: 'short' }).toUpperCase() : '';\n                    var tabId = 'tab-' + (index + 1);\n                    var isActive = (dateStr === active);\n\n                    buttonsHtml += '<li class=\"tab-btn-item\">' +\n                        '<div class=\"tab-btn' + (isActive ? ' active-btn' : '') + '\" data-tab=\"#' + tabId + '\" data-index=\"' + index + '\" data-date=\"' + dateStr + '\">' +\n                        '<span class=\"date\">' + dayNum + '<\/span>' +\n                        '<span class=\"month\">' + month + '<\/span>' +\n                        '<span class=\"day-name\">' + dayName + '<\/span>' +\n                        '<\/div><\/li>';\n\n                    tabsHtml += '<div class=\"tab' + (isActive ? ' active-tab' : '') + '\" id=\"' + tabId + '\" data-date=\"' + dateStr + '\" data-loaded=\"false\" data-current-page=\"1\" data-total-pages=\"1\" data-next-page=\"\" data-next-page-no=\"\" data-has-more=\"0\" style=\"' + (isActive ? '' : 'display:none;') + '\">' +\n                        '<div class=\"tab-date-header\" style=\"font-size:20px;font-weight:600;margin-bottom:20px;padding:15px 0;border-bottom:2px solid #e0e0e0;color:#222;\">' + formatDateHeader(dateStr) + '<\/div>' +\n                        '<div class=\"schedule-timeline\"><p style=\"text-align:center;padding:40px;\">Loading agenda...<\/p><\/div>' +\n                        '<div class=\"schedule-scroll-sentinel\" aria-hidden=\"true\"><\/div>' +\n                        '<div class=\"schedule-infinite-loader\" style=\"display:none;text-align:center;padding:24px 0;\">' +\n                        '<div class=\"loader-spinner\" style=\"width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #222;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 10px;\"><\/div>' +\n                        '<span style=\"color:#666;font-size:14px;\">Loading more sessions...<\/span><\/div>' +\n                        '<div class=\"schedule-end-message\" style=\"display:none;text-align:center;padding:20px 0;color:#888;font-size:14px;\">All sessions loaded.<\/div>' +\n                        '<\/div>';\n                });\n\n                $carousel.html(buttonsHtml);\n                $tabsWrap.attr('data-ajax-url', ajaxUrlAttr).attr('data-nonce', nonceAttr);\n                $tabsWrap.html(tabsHtml);\n\n                $(window).trigger('resize');\n                return active;\n            }\n            \n            \/\/ Function to load agenda for a specific date\n            window.loadAgendaByDate = function(date, $tab, options) {\n                options = options || {};\n                if (!date) return;\n\n                var $ = jQuery;\n                var pageNo = (typeof options.pageNo === 'number') ? options.pageNo : 1;\n                if (pageNo < 1) pageNo = 1;\n                var append = !!options.append;\n                \/\/ Prefer explicit keyword from caller (clear-filter \/ reload helpers)\n                var searchKeyword = (typeof options.searchKeyword === 'string')\n                    ? $.trim(options.searchKeyword)\n                    : $.trim($('#scheduleSearch').val() || '');\n                date = String(date || '').substring(0, 10);\n\n                var activeFilterPayload = (typeof filterPayloadGlobal !== 'undefined' && filterPayloadGlobal)\n                    ? filterPayloadGlobal\n                    : window.filterPayloadGlobal;\n                var hasFilterPayload = !!(activeFilterPayload && activeFilterPayload.filters && activeFilterPayload.filters.length);\n                var hasSearchKeyword = searchKeyword.length > 0;\n                var sendDate = (typeof options.sendDate === 'boolean') ? options.sendDate : true;\n\n                \/\/ Re-resolve tab panel from live DOM\n                var $resolvedTab = $('.tabs-content .tab[data-date=\"' + date + '\"]');\n                if ($resolvedTab.length) {\n                    $tab = $resolvedTab;\n                }\n                if (!$tab || !$tab.length) {\n                    $tab = $('<div class=\"tab active-tab\" data-date=\"' + date + '\"><div class=\"schedule-timeline\"><\/div><\/div>');\n                    $('.tabs-content').append($tab);\n                }\n                ensureTabScrollUi($tab);\n\n                \/\/ Fast path: serve from in-memory page cache (no network).\n                if (!hasFilterPayload && !hasSearchKeyword && sendDate && !options.forceAjax) {\n                    var cachedPage = sspGetCachedPage(date, pageNo);\n                    if (cachedPage && Array.isArray(cachedPage.agenda_list)) {\n                        var cachedPagination = normalizeSchedulePagination(cachedPage);\n                        var existingCount = $tab.find('.schedule-block').length;\n                        var alreadyPainted = !append && pageNo === 1 && existingCount > 0\n                            && ($tab.attr('data-loaded') === 'true' || $tab.data('loaded') === true);\n\n                        \/\/ Avoid SSR \u2192 JS flash: keep server HTML when page 1 is already painted.\n                        if (!alreadyPainted) {\n                            if (!append) {\n                                $tab.find('.schedule-end-message').hide();\n                            }\n                            renderAgendaForDate($tab, cachedPage.agenda_list, date, {\n                                fromAjax: true,\n                                sendDate: true,\n                                skipClientSearch: true,\n                                append: append\n                            });\n                        }\n                        updateTabPaginationState($tab, cachedPagination);\n                        $tab.data('loaded', true).attr('data-loaded', 'true');\n                        $tab.find('.schedule-infinite-loader').hide();\n                        $(document).trigger('agenda:loaded', [date, cachedPage.agenda_list]);\n                        window._sspAgendaLoading = false;\n                        window._sspSchedulePageLoading = false;\n\n                        var $tabsContentWarm = $('.tabs-content').first();\n                        var warmUrl = $tabsContentWarm.data('ajax-url') || (window.scheduleUserData && window.scheduleUserData.ajaxUrl) || '';\n                        var warmNonce = $tabsContentWarm.data('nonce') || (window.scheduleUserData && window.scheduleUserData.nonce) || '';\n                        sspScheduleIdlePrefetch(function() {\n                            if (cachedPagination.hasMore && cachedPagination.nextPageNo > 0) {\n                                sspPrefetchAgendaPage(date, cachedPagination.nextPageNo, warmUrl, warmNonce);\n                            }\n                        });\n                        return;\n                    }\n                }\n\n                \/\/ Cache miss \u2014 show spinner and go to AJAX.\n                if (!append) {\n                    window._sspAgendaLoading = true;\n                }\n\n                var $timeline = $tab.find('.schedule-timeline');\n                if (!$timeline.length) {\n                    $timeline = $('<div class=\"schedule-timeline\"><\/div>');\n                    $tab.prepend($timeline);\n                }\n                if (!append) {\n                    $tab.find('.schedule-end-message').hide();\n                    $timeline.html('<div class=\"date-loading\" style=\"text-align:center;padding:40px;\"><div class=\"loader-spinner\" style=\"width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #222;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 15px;\"><\/div><span>Loading agenda...<\/span><\/div>');\n                }\n\n                \/\/ Read ajax endpoint fresh from DOM every time\n                var $tabsContent = $('.tabs-content').first();\n                var ajaxUrl = $tabsContent.data('ajax-url') || (window.scheduleUserData && window.scheduleUserData.ajaxUrl) || '';\n                var nonce = $tabsContent.data('nonce') || (window.scheduleUserData && window.scheduleUserData.nonce) || '';\n\n                var requestData = {\n                    action: 'ssp_get_agenda_by_date',\n                    page_no: pageNo,\n                    nonce: nonce\n                };\n\n                if (hasSearchKeyword) {\n                    requestData.serach_keyword = searchKeyword;\n                }\n                if (hasFilterPayload) {\n                    requestData.filter_payload = JSON.stringify(activeFilterPayload);\n                }\n                if (date && sendDate) {\n                    requestData.date = date;\n                }\n\n                \/\/ If this day is already in the search\/filter cache, render it instantly.\n                \/\/ Otherwise AJAX with date + keyword\/filter to load that day's API rows.\n                if (sendDate && (hasFilterPayload || hasSearchKeyword) && window._sspFilterResultCache) {\n                    var earlyPayload = activeFilterPayload || null;\n                    var earlyKey = (hasSearchKeyword ? searchKeyword.toLowerCase() : '') + '|' + (earlyPayload ? JSON.stringify(earlyPayload) : '');\n                    if (window._sspFilterResultCache.key === earlyKey && Array.isArray(window._sspFilterResultCache.agendaList)) {\n                        var cachedList = window._sspFilterResultCache.agendaList;\n                        var dayKey = String(date).substring(0, 10);\n                        var hasCachedSessionsForDay = cachedList.some(function(item) {\n                            return item && String(item.Start_date || '').trim().substring(0, 10) === dayKey;\n                        });\n                        if (hasCachedSessionsForDay) {\n                            renderAgendaForDate($tab, cachedList, dayKey, {\n                                fromAjax: true,\n                                sendDate: false,\n                                skipClientSearch: true\n                            });\n                            if ($tab.length) {\n                                $tab.data('loaded', true);\n                                $tab.addClass('has-search-results');\n                            }\n                            $(document).trigger('agenda:loaded', [dayKey, cachedList]);\n                            window._sspAgendaLoading = false;\n                            return;\n                        }\n                    }\n                }\n\n                \/\/ Abort previous in-flight agenda request so tab clicks always fire a fresh call\n                \/\/ (do not abort an in-flight append for the same date).\n                if (!append && window._sspAgendaXhr && window._sspAgendaXhr.readyState !== 4) {\n                    try { window._sspAgendaXhr.abort(); } catch (err) {}\n                }\n                if (append && window._sspAgendaXhr && window._sspAgendaXhr.readyState !== 4 && window._sspAgendaLoading) {\n                    \/\/ Page-1 load in progress \u2014 skip append until it finishes.\n                    window._sspSchedulePageLoading = false;\n                    $tab.find('.schedule-infinite-loader').hide();\n                    return;\n                }\n\n                window._sspAgendaXhr = $.ajax({\n                    url: ajaxUrl,\n                    type: 'POST',\n                    dataType: 'json',\n                    data: requestData,\n                    success: function(response) {\n                        function collectDatesWithSessions(agendaList) {\n                            var datesWithData = [];\n                            if (Array.isArray(agendaList)) {\n                                agendaList.forEach(function(item) {\n                                    if (!item || !item.Start_date) return;\n                                    var d = String(item.Start_date).trim().substring(0, 10);\n                                    if (d && datesWithData.indexOf(d) === -1) {\n                                        datesWithData.push(d);\n                                    }\n                                });\n                            }\n                            datesWithData.sort();\n                            return datesWithData;\n                        }\n\n                        function getFilterCacheKey() {\n                            var payload = activeFilterPayload || null;\n                            var kw = hasSearchKeyword ? searchKeyword.toLowerCase() : '';\n                            return kw + '|' + (payload ? JSON.stringify(payload) : '');\n                        }\n\n                        if (response && response.success && response.data && Array.isArray(response.data.agenda_list)) {\n                            var agendaList = response.data.agenda_list;\n                            var targetDate = String(date || '').substring(0, 10);\n                            var pagination = normalizeSchedulePagination(response.data);\n                            var apiDates = Array.isArray(response.data.dates)\n                                ? response.data.dates.map(function(d) { return String(d).substring(0, 10); }).filter(Boolean)\n                                : [];\n                            var datesFromAgenda = collectDatesWithSessions(agendaList);\n\n                            \/\/ Cache this exact date+page for instant tab\/scroll reuse.\n                            if (sendDate && !hasFilterPayload && !hasSearchKeyword) {\n                                sspSetCachedPage(targetDate, pageNo, response.data);\n                            }\n\n                            \/\/ When filter\/search is active, show dates from API response.dates\n                            if (hasFilterPayload || hasSearchKeyword) {\n                                \/\/ API dates is the source of truth for which day tabs to show\n                                var filterDates = apiDates.length ? apiDates.slice() : datesFromAgenda.slice();\n                                filterDates.sort();\n\n                                \/\/ Date-specific empty response while filter active:\n                                \/\/ reload full filtered set once so we get the API dates list.\n                                if (sendDate && agendaList.length === 0 && !options._reloadedFullFilter) {\n                                    window.loadAgendaByDate(date, $tab, { sendDate: false, forceAjax: true, _reloadedFullFilter: true });\n                                    return;\n                                }\n\n                                if (!filterDates.length && !agendaList.length) {\n                                    window._sspFilterResultCache = null;\n                                    rebuildDateTabsFromApiDates([], date);\n                                    $(window).trigger('resize');\n                                    return;\n                                }\n\n                                \/\/ Merge any agenda dates missing from API dates (safety)\n                                datesFromAgenda.forEach(function(d) {\n                                    if (filterDates.indexOf(d) === -1) filterDates.push(d);\n                                });\n                                filterDates.sort();\n\n                                \/\/ Keep\/merge cache \u2014 never wipe other days when loading one date tab\n                                if (!sendDate || !window._sspFilterResultCache || window._sspFilterResultCache.key !== getFilterCacheKey()) {\n                                    window._sspFilterResultCache = {\n                                        key: getFilterCacheKey(),\n                                        agendaList: agendaList.slice(),\n                                        dates: filterDates\n                                    };\n                                } else {\n                                    var mergeInto = window._sspFilterResultCache.agendaList.slice();\n                                    agendaList.forEach(function(item) {\n                                        if (!item) return;\n                                        if (!item.agenda_id) {\n                                            mergeInto.push(item);\n                                            return;\n                                        }\n                                        var exists = mergeInto.some(function(m) {\n                                            return m && String(m.agenda_id) === String(item.agenda_id);\n                                        });\n                                        if (!exists) mergeInto.push(item);\n                                    });\n                                    window._sspFilterResultCache.agendaList = mergeInto;\n                                    window._sspFilterResultCache.dates = filterDates;\n                                }\n\n                                var preferred = (targetDate && filterDates.indexOf(targetDate) !== -1)\n                                    ? targetDate\n                                    : filterDates[0];\n\n                                \/\/ On full filter\/search apply (no date), rebuild tabs from API dates\n                                \/\/ and render whatever days are present in this agenda_list.\n                                if (!sendDate) {\n                                    var rebuilt = rebuildDateTabsFromApiDates(filterDates, preferred);\n                                    if (rebuilt) targetDate = rebuilt;\n                                    $(window).trigger('resize');\n\n                                    \/\/ Prefer API selected_date when present in filter dates\n                                    var apiSelected = response.data.selected_date\n                                        ? String(response.data.selected_date).substring(0, 10)\n                                        : '';\n                                    if (apiSelected && filterDates.indexOf(apiSelected) !== -1) {\n                                        targetDate = apiSelected;\n                                        preferred = apiSelected;\n                                        rebuilt = rebuildDateTabsFromApiDates(filterDates, preferred);\n                                        if (rebuilt) targetDate = rebuilt;\n                                    }\n\n                                    filterDates.forEach(function(day) {\n                                        var $dayTab = $('.tabs-content .tab[data-date=\"' + day + '\"]');\n                                        if (!$dayTab.length) return;\n                                        var dayHasRows = agendaList.some(function(item) {\n                                            return item && String(item.Start_date || '').trim().substring(0, 10) === day;\n                                        });\n                                        if (dayHasRows) {\n                                            renderAgendaForDate($dayTab, agendaList, day, {\n                                                fromAjax: true,\n                                                sendDate: false,\n                                                skipClientSearch: true\n                                            });\n                                            $dayTab.data('loaded', true);\n                                            $dayTab.addClass('has-search-results');\n                                        } else {\n                                            \/\/ API listed this date \u2014 click tab to load that day's matches\n                                            $dayTab.find('.schedule-timeline').html(\n                                                '<p style=\"text-align:center;padding:40px;color:#666;\">Click this date to load matching sessions...<\/p>'\n                                            );\n                                            $dayTab.data('loaded', false);\n                                            $dayTab.removeClass('has-search-results');\n                                        }\n                                    });\n\n                                    \/\/ Show only the active\/selected day initially (other days via date tabs)\n                                    $('.tabs-content .tab').removeClass('active-tab').hide();\n                                    $tab = $('.tabs-content .tab[data-date=\"' + targetDate + '\"]');\n                                    if (!$tab.length) $tab = $('.tabs-content .tab').first();\n                                    $tab.addClass('active-tab').show();\n                                    $('.tab-buttons-carousel .tab-btn').removeClass('active-btn');\n                                    $('.tab-buttons-carousel .tab-btn[data-date=\"' + targetDate + '\"]').addClass('active-btn');\n\n                                    $(document).trigger('agenda:loaded', [targetDate, agendaList]);\n                                    return;\n                                }\n\n                                \/\/ Date-tab AJAX with search\/filter: render this day, keep existing tabs\n                                targetDate = preferred;\n                            } else {\n                                window._sspFilterResultCache = null;\n                                if (sendDate && !hasFilterPayload && !hasSearchKeyword) {\n                                    window._sspDayCache = window._sspDayCache || {};\n                                    if (append) {\n                                        window._sspDayCache[targetDate] = (window._sspDayCache[targetDate] || []).slice();\n                                        agendaList.forEach(function(item) {\n                                            if (!item || !item.agenda_id) return;\n                                            var exists = window._sspDayCache[targetDate].some(function(x) {\n                                                return x && String(x.agenda_id) === String(item.agenda_id);\n                                            });\n                                            if (!exists) window._sspDayCache[targetDate].push(item);\n                                        });\n                                    } else {\n                                        window._sspDayCache[targetDate] = agendaList.slice();\n                                    }\n                                    if (!pagination.hasMore) {\n                                        window._sspPersistDayCache();\n                                    }\n                                }\n                            }\n\n                            $tab = $('.tabs-content .tab[data-date=\"' + targetDate + '\"]');\n                            if (!$tab.length) {\n                                $tab = $('.tabs-content .tab.active-tab').first();\n                            }\n\n                            var skipReplace = !append && pageNo === 1\n                                && $tab.find('.schedule-block').length > 0\n                                && ($tab.attr('data-loaded') === 'true' || $tab.data('loaded') === true)\n                                && !hasFilterPayload && !hasSearchKeyword;\n\n                            if (!skipReplace) {\n                                renderAgendaForDate($tab, agendaList, targetDate, {\n                                    fromAjax: true,\n                                    sendDate: sendDate,\n                                    skipClientSearch: true,\n                                    append: append\n                                });\n                            }\n                            updateTabPaginationState($tab, pagination);\n                            if ($tab.length) {\n                                $tab.data('loaded', true);\n                                if (hasSearchKeyword || hasFilterPayload) {\n                                    $tab.addClass('has-search-results');\n                                }\n                            }\n\n                            $(document).trigger('agenda:loaded', [targetDate, agendaList]);\n\n                            \/\/ Prefetch only the next page of the *current* date (for infinite scroll).\n                            \/\/ Never prefetch other date tabs \u2014 load those only on user click.\n                            if (sendDate && !hasFilterPayload && !hasSearchKeyword) {\n                                sspScheduleIdlePrefetch(function() {\n                                    if (pagination.hasMore && pagination.nextPageNo > 0) {\n                                        sspPrefetchAgendaPage(targetDate, pagination.nextPageNo, ajaxUrl, nonce);\n                                    }\n                                });\n                            }\n                        } else {\n                            if ((hasFilterPayload || hasSearchKeyword) && sendDate && !options._reloadedFullFilter) {\n                                window.loadAgendaByDate(date, $tab, { sendDate: false, forceAjax: true, _reloadedFullFilter: true });\n                                return;\n                            }\n                            if (hasFilterPayload || hasSearchKeyword) {\n                                window._sspFilterResultCache = null;\n                                rebuildDateTabsFromApiDates([], date);\n                                $(window).trigger('resize');\n                            }\n                            var noResultsMsg = (hasSearchKeyword || hasFilterPayload)\n                                ? '<p class=\"ssp-no-agenda-msg\" style=\"text-align:center;padding:40px;\">No sessions match your search\/filter.<\/p>'\n                                : '<p style=\"text-align:center;padding:40px;\">No agenda available for this date.<\/p>';\n                            $tab = $('.tabs-content .tab[data-date=\"' + date + '\"]');\n                            if (!$tab.length) $tab = $('.tabs-content .tab.active-tab').first();\n                            if ($tab.length) {\n                                $tab.find('.schedule-timeline').html(noResultsMsg);\n                            }\n                        }\n                    },\n                    error: function(xhr, status) {\n                        if (status === 'abort') return;\n                        var $errTab = $('.tabs-content .tab[data-date=\"' + date + '\"]');\n                        if (!$errTab.length) $errTab = $tab;\n                        $errTab.find('.schedule-timeline').html('<p style=\"text-align:center;padding:40px;color:#dc3545;\">Error loading agenda. Please try again.<\/p>');\n                    },\n                    complete: function() {\n                        window._sspAgendaLoading = false;\n                        window._sspSchedulePageLoading = false;\n                        window._sspAgendaXhr = null;\n                        $('.schedule-infinite-loader').hide();\n                    }\n                });\n            };\n\n            \/\/ Keep local alias used by older handlers\n            var loadAgendaByDate = window.loadAgendaByDate;\n\n            window.loadDefaultAgendaData = function() {\n                \/\/ Never wipe an active search with the full schedule.\n                var liveSearch = (typeof jQuery !== 'undefined')\n                    ? jQuery.trim(jQuery('#scheduleSearch').val() || '')\n                    : '';\n                if (liveSearch) {\n                    if (typeof window.sspReloadScheduleQuery === 'function') {\n                        window.sspReloadScheduleQuery({\n                            skipFilterRebuild: true,\n                            searchVal: liveSearch\n                        });\n                    }\n                    return;\n                }\n\n                searchResultCache = {};\n                filterResultCache = {};\n                window._sspFilterResultCache = null;\n                window._sspDayCache = {};\n                window._sspDayCacheLoaded = false;\n\n                $('.schedule-section').removeClass('search-active');\n                $('.tabs-content .tab').removeClass('has-search-results');\n\n                var $tabsContentFresh = $('.tabs-content').first();\n                var defaultAjaxUrl = $tabsContentFresh.data('ajax-url') || ajaxUrl;\n                var defaultNonce = $tabsContentFresh.data('nonce') || nonce;\n\n                var activeDate =\n                    ($('.tabs-content .tab.active-tab').first().attr('data-date') || '').substring(0, 10) ||\n                    ($('.tab-buttons-carousel .tab-btn.active-btn').first().attr('data-date') || '').substring(0, 10) ||\n                    (window._sspInlineDates && window._sspInlineDates[0]) ||\n                    (window.scheduleUserData && window.scheduleUserData.firstDate) || '';\n\n                if (window._sspInlineDates && window._sspInlineDates.length) {\n                    rebuildDateTabsFromApiDates(window._sspInlineDates, activeDate || window._sspInlineDates[0]);\n                    activeDate = activeDate || window._sspInlineDates[0];\n                }\n\n                var $activeTab = activeDate\n                    ? $('.tabs-content .tab[data-date=\"' + activeDate + '\"]')\n                    : $('.tabs-content .tab').first();\n\n                \/\/ V4: load only page 1 for the active date.\n                if (activeDate && typeof window.loadAgendaByDate === 'function') {\n                    window.loadAgendaByDate(activeDate, $activeTab, {\n                        sendDate: true,\n                        pageNo: 1,\n                        append: false,\n                        forceAjax: true\n                    });\n                    return;\n                }\n\n                \/\/ Fallback: dates list only, then page-1 for selected_date.\n                $.ajax({\n                    url: defaultAjaxUrl, type: 'POST', dataType: 'json',\n                    data: { action: 'ssp_get_agenda_by_date', page_no: 1, nonce: defaultNonce },\n                    success: function(response) {\n                        if (!response || !response.success || !response.data) return;\n                        var allApiDates   = response.data.dates || [];\n                        var selectedDate  = response.data.selected_date || '';\n                        var rebuiltDate   = rebuildDateTabsFromApiDates(allApiDates, selectedDate);\n                        if (!rebuiltDate) return;\n                        var $tab = $('.tabs-content .tab[data-date=\"' + rebuiltDate + '\"]');\n                        window.loadAgendaByDate(rebuiltDate, $tab, {\n                            sendDate: true,\n                            pageNo: 1,\n                            append: false,\n                            forceAjax: true\n                        });\n                    }\n                });\n            };\n            \n            \/\/ Function to render agenda HTML\n            function renderAgendaForDate($tab, agendaList, date, renderOptions) {\n                renderOptions = renderOptions || {};\n                \n                var $timeline = $tab.find('.schedule-timeline');\n                if (!$timeline.length) {\n                    $timeline = $('<div class=\"schedule-timeline\"><\/div>');\n                    $tab.append($timeline);\n                }\n                \n                \/\/ Check if search is active (accent-insensitive: Celia matches C\u00e9lia)\n                var activeSearchTerm = (window.sspFoldSearchText || function(t){ return String(t||'').toLowerCase(); })($.trim($('#scheduleSearch').val() || ''));\n                var isSearchActive = activeSearchTerm.length > 0;\n\n                var filteredAgendaList = Array.isArray(agendaList) ? agendaList.slice() : [];\n\n                \/\/ Compare YYYY-MM-DD only (API sometimes returns datetime)\n                function sameDay(a, b) {\n                    var left = String(a || '').trim().substring(0, 10);\n                    var right = String(b || '').trim().substring(0, 10);\n                    return left && right && left === right;\n                }\n\n                \/\/ Always filter to the active day tab \u2014 including during search \u2014\n                \/\/ so multi-day search payloads do not leak sessions onto the wrong date.\n                if (date) {\n                    var beforeCount = filteredAgendaList.length;\n                    var dateFiltered = filteredAgendaList.filter(function(agendaItem) {\n                        if (!agendaItem) return false;\n                        return sameDay(agendaItem.Start_date, date);\n                    });\n                    \/\/ Only apply date filter when it doesn't wipe a same-day API response incorrectly\n                    if (dateFiltered.length > 0 || !renderOptions.sendDate) {\n                        filteredAgendaList = dateFiltered;\n                    } else if (beforeCount > 0 && renderOptions.fromAjax && renderOptions.sendDate) {\n                        \/\/ Keep API rows for this date request even if Start_date format mismatches\n                        filteredAgendaList = agendaList.slice();\n                    } else {\n                        filteredAgendaList = dateFiltered;\n                    }\n                }\n\n                \/\/ Client-side location backup only when server filter may not have run.\n                \/\/ Skip when AJAX already requested with filter_payload (server post-filters location).\n                var selectedLocations = [];\n                var activePayload = (typeof filterPayloadGlobal !== 'undefined' && filterPayloadGlobal)\n                    ? filterPayloadGlobal\n                    : window.filterPayloadGlobal;\n                var hasServerFilter = !!(activePayload && activePayload.filters && activePayload.filters.length);\n                if (!(renderOptions.fromAjax && hasServerFilter)) {\n                    $('.filter-checkbox[data-group=\"location\"]:checked').each(function () {\n                        var locVal = String($(this).val() || '').trim();\n                        if (locVal) selectedLocations.push(locVal);\n                    });\n                    if (selectedLocations.length > 0) {\n                        filteredAgendaList = filteredAgendaList.filter(function(agendaItem) {\n                            if (!agendaItem) return false;\n                            var loc = String(agendaItem.location || agendaItem.custom_location || '').trim();\n                            return selectedLocations.indexOf(loc) !== -1;\n                        });\n                    }\n                }\n\n                \/\/ Server already filtered by serach_keyword \u2014 do not re-filter and hide valid API matches.\n                \/\/ Client filter is only a fallback for non-AJAX \/ cached DOM scenarios.\n                var shouldClientSearch = isSearchActive && !renderOptions.skipClientSearch && !renderOptions.fromAjax;\n                if (shouldClientSearch) {\n                    var matchesSearch = window.sspTextMatchesSearch || function(hay, needle) {\n                        var foldFn = window.sspFoldSearchText || function(t){ return String(t||'').toLowerCase(); };\n                        return foldFn(hay).indexOf(foldFn(needle)) !== -1;\n                    };\n                    filteredAgendaList = filteredAgendaList.filter(function(agendaItem) {\n                        if (!agendaItem) return false;\n                        var searchHaystack = [\n                            String(agendaItem.Heading || ''),\n                            String((agendaItem.description || '').replace(\/<[^>]*>\/g, '')),\n                            String(agendaItem.search_text || ''),\n                            String(agendaItem.location || ''),\n                            String(agendaItem.custom_location || '')\n                        ].join(' ');\n\n                        function appendPeople(list) {\n                            if (!Array.isArray(list)) return;\n                            list.forEach(function(person) {\n                                if (!person) return;\n                                searchHaystack += ' ' + String(person.name || '');\n                                searchHaystack += ' ' + String(person.custom_speaker_name || '');\n                                searchHaystack += ' ' + String(person.Firstname || '');\n                                searchHaystack += ' ' + String(person.Lastname || '');\n                            });\n                        }\n\n                        if (Array.isArray(agendaItem.type_ids)) {\n                            agendaItem.type_ids.forEach(function(typeItem) {\n                                searchHaystack += ' ' + String((typeItem && typeItem.name) || '');\n                            });\n                        }\n                        appendPeople(agendaItem.custom_speakers);\n                        appendPeople(agendaItem.speakers);\n                        appendPeople(agendaItem.chairs);\n                        appendPeople(agendaItem.custom_sponsors);\n                        appendPeople(agendaItem.sponsors);\n                        appendPeople(agendaItem.exhibitors);\n\n                        return matchesSearch(searchHaystack, activeSearchTerm);\n                    });\n                }\n\n                if (filteredAgendaList.length === 0) {\n                    var hasActiveFilter = !!(activePayload && activePayload.filters && activePayload.filters.length);\n                    var emptyMsg = (isSearchActive || hasActiveFilter || selectedLocations.length > 0)\n                        ? '<p class=\"ssp-no-agenda-msg\" style=\"text-align:center;padding:40px;\">No sessions match your search\/filter.<\/p>'\n                        : '<p style=\"text-align:center;padding:40px;\">No agenda available for this date.<\/p>';\n                    if (!renderOptions.append) {\n                        $timeline.html(emptyMsg);\n                    }\n                    return;\n                }\n\n                if (renderOptions.append) {\n                    var existingIds = getTabExistingAgendaIds($tab);\n                    filteredAgendaList = filteredAgendaList.filter(function(agendaItem) {\n                        if (!agendaItem || !agendaItem.agenda_id) return true;\n                        return !existingIds[String(agendaItem.agenda_id)];\n                    });\n                    if (!filteredAgendaList.length) {\n                        return;\n                    }\n                }\n                \n                \/\/ Favourite icons: use My Agenda ID list (listing API is shared, no per-user is_favorite).\n                var isLoggedIn = window.scheduleUserData ? !!window.scheduleUserData.isLoggedIn : false;\n                var eventId = window.scheduleUserData ? window.scheduleUserData.eventId : '';\n                var userId = window.scheduleUserData ? window.scheduleUserData.userId : '';\n                var userAgendaIds = (window.scheduleUserData && Array.isArray(window.scheduleUserData.userAgendaIds))\n                    ? window.scheduleUserData.userAgendaIds.map(String)\n                    : [];\n                if (!isLoggedIn && userId) {\n                    isLoggedIn = true;\n                }\n                \n                var html = '';\n                var startIndex = renderOptions.append ? $timeline.find('.schedule-block').length : 0;\n                \n                filteredAgendaList.forEach(function(agenda, index) {\n                    var agendaColorClass = 'color-' + (((startIndex + index) % 4) + 1);\n                    var isFavourite = userAgendaIds.indexOf(String(agenda.agenda_id || '')) !== -1;\n                    var typeIds = [];\n                    var foldSearch = window.sspFoldSearchText || function(t){ return String(t||'').toLowerCase(); };\n                    var searchText = foldSearch(\n                        (agenda.Heading || '') + ' ' +\n                        (agenda.description ? agenda.description.replace(\/<[^>]*>\/g, '') : '') + ' ' +\n                        (agenda.search_text || '')\n                    );\n                    \n                    \/\/ Build type IDs and search text\n                    if (agenda.type_ids && agenda.type_ids.length) {\n                        agenda.type_ids.forEach(function(type) {\n                            typeIds.push(type.type_id);\n                            searchText += ' ' + foldSearch(type.name || '');\n                        });\n                    }\n                    \n                    var startTime = agenda.Start_time ? new Date('2000-01-01 ' + agenda.Start_time).toLocaleTimeString('en-US', {hour: 'numeric', minute: '2-digit'}) : '';\n                    var endTime = agenda.End_time ? new Date('2000-01-01 ' + agenda.End_time).toLocaleTimeString('en-US', {hour: 'numeric', minute: '2-digit'}) : '';\n                    \n                    var timeDisplay = startTime + (endTime ? ' - ' + endTime : '');\n                    \n                    var isBlocked = agenda.isBlocked == 1;\n                    var blockMessage = agenda.blockMessage || 'You do not have access to this session.';\n                    \n                    html += '<div class=\"schedule-block ' + agendaColorClass + (isFavourite ? ' favourited' : '') + (isBlocked ? ' blocked-agenda' : '') + '\" ' +\n                            'data-message=\"' + blockMessage + '\" ' +\n                            'data-search=\"' + searchText.replace(\/\"\/g, '&quot;') + '\" ' +\n                            'data-types=\"' + typeIds.join(',') + '\">' +\n                            '<div class=\"inner-box\"><div class=\"inner\">' +\n                            '<div class=\"date\">' + timeDisplay + '<\/div>';\n                    \n                    \/\/ Favorite button\n                    if (isLoggedIn) {\n                        var heartClass = isFavourite ? 'fa-solid fa-bookmark active' : 'fa-regular fa-bookmark';\n                        html += '<div class=\"favourite_icon ' + (isFavourite ? 'favourited' : '') + '\" ' +\n                                'data-agenda_id=\"' + agenda.agenda_id + '\" ' +\n                                'data-event_id=\"' + eventId + '\" ' +\n                                'data-user_id=\"' + userId + '\">' +\n                                '<i class=\"' + heartClass + '\"><\/i><\/div>';\n                    }\n                    \n                    \/\/ Title\n                    html += '<h4>';\n                    if (isBlocked) {\n                        html += '<a class=\"agenda-link\" href=\"javascript:void(0);\" style=\"pointer-events:none;opacity:0.6;\">' + (agenda.Heading || '') + '<\/a>';\n                    } else {\n                        html += '<a class=\"agenda-link\" href=\"' + (window.scheduleUserData ? window.scheduleUserData.scheduleDetailUrl : '\/schedule-details\/') + '?agenda_id=' + encodeURIComponent(agenda.agenda_id) + '\">' + (agenda.Heading || '') + '<\/a>';\n                    }\n                    html += '<\/h4>';\n                    \n                    \/\/ Description\n                    if (agenda.description) {\n                        html += '<div class=\"text\">' + agenda.description + '<\/div>';\n                    }\n                    \n                    \/\/ Zoom link\n                    if (agenda.zoom_link) {\n                        html += '<div class=\"zoom-join-button-wrapper\">' +\n                                '<a class=\"zoom-join-btns\" href=\"' + agenda.zoom_link + '\" target=\"_blank\" rel=\"noopener noreferrer\" ' +\n                                'data-zoom-link=\"' + agenda.zoom_link + '\">' +\n                                '<i class=\"fa fa-video\"><\/i> Join Zoom Meeting<\/a><\/div>';\n                    }\n                    \n                    \/\/ Type badges\n                    if (agenda.type_ids && agenda.type_ids.length) {\n                        html += '<div class=\"type-buttons\" style=\"padding-bottom:20px;\">';\n                        agenda.type_ids.forEach(function(type) {\n                            html += '<span class=\"type-badge\" style=\"background:' + (type.color || '#000') + ';color:#fff;padding:4px 10px;border-radius:6px;font-size:16px;margin-right:6px;margin-bottom:15px;display:inline-block;\">' + \n                                    (type.name || '') + '<\/span>';\n                        });\n                        html += '<\/div>';\n                    }\n                    \n                    \/\/ Location\n                    if (agenda.location) {\n                        html += '<div class=\"agenda-locations\"><span class=\"icon fa fa-map-marker-alt\"><\/span>' + agenda.location + '<\/div>';\n                    }\n\n                    \/\/ Chairs + Speakers (combined row)\n                    if ((agenda.chairs && agenda.chairs.length) || (agenda.speakers && agenda.speakers.length)) {\n                        html += '<div class=\"agenda-speakers\" style=\"display: flex;overflow-x: hidden;width: 100%;\">';\n\n                        \/\/ Chairs first\n                        if (agenda.chairs && agenda.chairs.length) {\n                            agenda.chairs.forEach(function(chair) {\n                                var objectKey = chair.s3_image_thumbnail || '';\n                                var imgUrl = (window.scheduleUserData && window.scheduleUserData.templateDirUri ? window.scheduleUserData.templateDirUri : '') + '\/assets\/images\/profile-placeholder.png';\n                                if (!objectKey && chair.logo) {\n                                    imgUrl = 'https:\/\/allintheloop.info\/media\/user_profile\/' + parseInt(eventId || '0') + '\/' + chair.logo;\n                                }\n                                var chairName = chair.name || '';\n                                var designation = chair.speaker_designation || '';\n                                var firstLetter = chairName ? chairName.charAt(0).toUpperCase() : 'C';\n                                var userId = chair.User_id || '';\n                                const baseUrl = window.scheduleUserData?.scheduleDetailUrl || window.location.origin;\n                                html += '<div class=\"agenda-speaker-card\">' +\n                                        '<div class=\"speaker-image\" style=\"flex-shrink:0; margin-bottom:8px;\">' +\n                                        '<a href=\"' + baseUrl.replace('\/schedule-details\/', '') + '\/speakers-detail\/?speaker=' + encodeURIComponent(userId) + '\">' +\n                                        '<img loading=\"lazy\" class=\"speaker-img\" src=\"' + imgUrl + '\" data-object-key=\"' + objectKey + '\" loading=\"lazy\" decoding=\"async\" width=\"80\" height=\"80\" alt=\"' + firstLetter + '\" style=\"width:80px; height:80px; object-fit:cover; border-radius:8px; display:block; margin:0 auto;\" \/>' +\n                                        '<\/a><\/div>' +\n                                        '<h5 class=\"agenda-speaker-name\"><a href=\"' + baseUrl.replace('\/schedule-details\/', '') + '\/speakers-detail\/?speaker=' + encodeURIComponent(userId) + '\">' + chairName + '<\/a><\/h5>';\n                                if (designation) {\n                                    html += '<div class=\"agenda-speaker-designation\" style=\"color:#9a9a9a; font-size:12px; line-height:1.3; margin-top:2px;\">' + designation + '<\/div>';\n                                }\n                                html += '<\/div>';\n                            });\n                        }\n\n                        \/\/ Speakers after\n                        if (agenda.speakers && agenda.speakers.length) {\n                            agenda.speakers.forEach(function(speaker) {\n                                var objectKey = speaker.s3_image_thumbnail || '';\n                                var imgUrl = (window.scheduleUserData && window.scheduleUserData.templateDirUri ? window.scheduleUserData.templateDirUri : '') + '\/assets\/images\/profile-placeholder.png';\n                                if (!objectKey && speaker.logo) {\n                                    imgUrl = 'https:\/\/allintheloop.info\/media\/user_profile\/' + parseInt(eventId || '0') + '\/' + speaker.logo;\n                                }\n                                var speakerName = speaker.custom_speaker_name || speaker.name || '';\n                                var designation = speaker.speaker_designation || '';\n                                var firstLetter = speakerName ? speakerName.charAt(0).toUpperCase() : 'S';\n                                var userId = speaker.User_id || '';\n                                const baseUrl = window.scheduleUserData?.scheduleDetailUrl || window.location.origin;\n                                html += '<div class=\"agenda-speaker-card\">' +\n                                        '<div class=\"speaker-image\" style=\"flex-shrink:0; margin-bottom:8px;\">' +\n                                        '<a href=\"' + baseUrl.replace('\/schedule-details\/', '') + '\/speakers-detail\/?speaker=' + encodeURIComponent(userId) + '\">' +\n                                        '<img loading=\"lazy\" class=\"speaker-img\" src=\"' + imgUrl + '\" data-object-key=\"' + objectKey + '\" loading=\"lazy\" decoding=\"async\" width=\"80\" height=\"80\" alt=\"' + firstLetter + '\" style=\"width:80px; height:80px; object-fit:cover; border-radius:8px; display:block; margin:0 auto;\" \/>' +\n                                        '<\/a><\/div>' +\n                                        '<h5 class=\"agenda-speaker-name\"><a href=\"' + baseUrl.replace('\/schedule-details\/', '') + '\/speakers-detail\/?speaker=' + encodeURIComponent(userId) + '\">' + speakerName + '<\/a><\/h5>';\n                                if (designation) {\n                                    html += '<div class=\"agenda-speaker-designation\" style=\"color:#9a9a9a; font-size:12px; line-height:1.3; margin-top:2px;\">' + designation + '<\/div>';\n                                }\n                                html += '<\/div>';\n                            });\n                        }\n\n                        html += '<\/div>';\n                    }\n\n                    \/\/ Sponsors\n                    if (agenda.sponsors && agenda.sponsors.length) {\n                        html += '<div class=\"agenda-section-label\">Sponsors<\/div>';\n                        html += '<div class=\"agenda-speakers\" style=\"display: flex;overflow-x: hidden;width: 100%;\">';\n                        agenda.sponsors.forEach(function(sponsor) {\n                            var imgUrl = sponsor.logo\n                                ? 'https:\/\/allintheloop.info\/media\/user_profile\/' + parseInt(eventId || '0') + '\/' + sponsor.logo\n                                : (window.scheduleUserData && window.scheduleUserData.templateDirUri ? window.scheduleUserData.templateDirUri : '') + '\/assets\/images\/profile-placeholder.png';\n                            var sponsorName = sponsor.name || '';\n                            var firstLetter = sponsorName ? sponsorName.charAt(0).toUpperCase() : 'S';\n                            html += '<div class=\"agenda-speaker-card\">' +\n                                    '<div class=\"speaker-image\" style=\"flex-shrink:0; margin-bottom:8px;\">' +\n                                    '<img loading=\"lazy\" class=\"speaker-img\" src=\"' + imgUrl + '\" loading=\"lazy\" decoding=\"async\" width=\"80\" height=\"80\" alt=\"' + firstLetter + '\" style=\"width:80px; height:80px; object-fit:cover; border-radius:8px; display:block; margin:0 auto;\" \/>' +\n                                    '<\/div>' +\n                                    '<h5 class=\"agenda-speaker-name\">' + sponsorName + '<\/h5>' +\n                                    '<\/div>';\n                        });\n                        html += '<\/div>';\n                    }\n\n                    \/\/ Exhibitors\n                    if (agenda.exhibitors && agenda.exhibitors.length) {\n                        html += '<div class=\"agenda-section-label\">Exhibitors<\/div>';\n                        html += '<div class=\"agenda-speakers\" style=\"display: flex;overflow-x: hidden;width: 100%;\">';\n                        agenda.exhibitors.forEach(function(exhibitor) {\n                            var imgUrl = exhibitor.logo\n                                ? 'https:\/\/allintheloop.info\/media\/user_profile\/' + parseInt(eventId || '0') + '\/' + exhibitor.logo\n                                : (window.scheduleUserData && window.scheduleUserData.templateDirUri ? window.scheduleUserData.templateDirUri : '') + '\/assets\/images\/profile-placeholder.png';\n                            var exhibitorName = exhibitor.name || '';\n                            var firstLetter = exhibitorName ? exhibitorName.charAt(0).toUpperCase() : 'E';\n                            html += '<div class=\"agenda-speaker-card\">' +\n                                    '<div class=\"speaker-image\" style=\"flex-shrink:0; margin-bottom:8px;\">' +\n                                    '<img loading=\"lazy\" class=\"speaker-img\" src=\"' + imgUrl + '\" loading=\"lazy\" decoding=\"async\" width=\"80\" height=\"80\" alt=\"' + firstLetter + '\" style=\"width:80px; height:80px; object-fit:cover; border-radius:8px; display:block; margin:0 auto;\" \/>' +\n                                    '<\/div>' +\n                                    '<h5 class=\"agenda-speaker-name\">' + exhibitorName + '<\/h5>' +\n                                    '<\/div>';\n                        });\n                        html += '<\/div>';\n                    }\n\n                    html += '<\/div><\/div><\/div>';\n                });\n                \n                if (renderOptions.append) {\n                    $timeline.append(html);\n                } else {\n                    $timeline.html(html);\n                }\n                ensureTabScrollUi($tab);\n                \n                \/\/ Re-initialize image loading for new content\n                setTimeout(function() {\n                    if (typeof window.processSpeakerImages === 'function') {\n                        window.processSpeakerImages();\n                    } else if (typeof window.initSpeakerImageLoading === 'function') {\n                        window.initSpeakerImageLoading();\n                    }\n                }, 100);\n            }\n            \n            \/\/ Auto-load first date only when SSR did not already render page 1.\n            setTimeout(function() {\n                var $firstTabBtn = $('.tab-buttons-carousel .tab-btn').first();\n                if (!$firstTabBtn.length) return;\n\n                var firstDate = $firstTabBtn.attr('data-date') || $firstTabBtn.data('date');\n                var $firstTab = firstDate ? $('.tabs-content .tab[data-date=\"' + firstDate + '\"]') : $();\n                if (!firstDate || !$firstTab.length) return;\n\n                var alreadyLoaded = $firstTab.attr('data-loaded') === 'true' || $firstTab.data('loaded') === true;\n                var hasBlocks = $firstTab.find('.schedule-block').length > 0;\n                var searchActive = $.trim($('#scheduleSearch').val() || '').length > 0;\n                var filterActive = !!(window.filterPayloadGlobal && window.filterPayloadGlobal.filters && window.filterPayloadGlobal.filters.length);\n\n                if (alreadyLoaded && hasBlocks && !searchActive && !filterActive) {\n                    if (window.scheduleUserData) {\n                        window.scheduleUserData.currentLoadedDate = firstDate;\n                    }\n                    var ssrPagination = {\n                        currentPage: parseInt($firstTab.attr('data-current-page'), 10) || 1,\n                        totalPages: parseInt($firstTab.attr('data-total-pages'), 10) || 1,\n                        nextPage: parseInt($firstTab.attr('data-next-page'), 10) || 0,\n                        hasMore: parseInt($firstTab.attr('data-has-more'), 10) === 1,\n                        nextPageNo: parseInt($firstTab.attr('data-next-page-no'), 10)\n                    };\n                    updateTabPaginationState($firstTab, ssrPagination);\n                    $(document).trigger('agenda:loaded', [firstDate, []]);\n\n                    \/\/ Warm only the next page of the first date (infinite scroll).\n                    \/\/ Do not prefetch other dates until the user clicks that date tab.\n                    var $tc = $('.tabs-content').first();\n                    var warmUrl = $tc.data('ajax-url') || (window.scheduleUserData && window.scheduleUserData.ajaxUrl) || '';\n                    var warmNonce = $tc.data('nonce') || (window.scheduleUserData && window.scheduleUserData.nonce) || '';\n                    sspScheduleIdlePrefetch(function() {\n                        if (ssrPagination.hasMore && ssrPagination.nextPageNo > 0\n                            && ssrPagination.nextPageNo > ssrPagination.currentPage) {\n                            sspPrefetchAgendaPage(firstDate, ssrPagination.nextPageNo, warmUrl, warmNonce);\n                        }\n                    });\n                    return;\n                }\n\n                if (typeof window.loadAgendaByDate === 'function') {\n                    window.loadAgendaByDate(firstDate, $firstTab, {\n                        sendDate: true,\n                        pageNo: 1,\n                        append: false,\n                        forceAjax: false\n                    });\n                }\n\n                if (window.scheduleUserData) {\n                    window.scheduleUserData.currentLoadedDate = firstDate;\n                }\n            }, 100);\n\n            setupScheduleInfiniteScroll();\n        }\n        \n        \/\/ Initialize when DOM is ready\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', initDateAjaxLoading);\n        } else {\n            initDateAjaxLoading();\n        }\n    })();\n\n    \/\/ ==================================================\n    \/\/ DATE CAROUSEL FUNCTIONALITY - JQUERY CAROUSEL\n    \/\/ ==================================================\n    jQuery(document).ready(function($) {\n        var $carousel = $('.tab-buttons-carousel');\n        var $container = $('.tab-buttons-carousel-container');\n        var $prevBtn = $('.carousel-prev');\n        var $nextBtn = $('.carousel-next');\n        var currentPosition = 0;\n        var itemWidth = 0;\n        var visibleItems = 0;\n        var totalItems = 0;\n        var maxPosition = 0;\n        \n        function initCarousel() {\n            if (!$carousel.length) return;\n            \n            \/\/ Calculate dimensions\n            var containerWidth = $container.width();\n            var firstItem = $carousel.find('.tab-btn-item:not(.filtered-hide)').first();\n            \n            if (!firstItem.length) return;\n            \n            itemWidth = firstItem.outerWidth(true);\n            visibleItems = Math.floor(containerWidth \/ itemWidth);\n            totalItems = $carousel.find('.tab-btn-item:not(.filtered-hide)').length;\n            maxPosition = Math.max(0, (totalItems - visibleItems) * itemWidth);\n            \n            \/\/ Reset position if needed\n            if (currentPosition > maxPosition) {\n                currentPosition = maxPosition;\n            }\n            \n            updateCarousel();\n            updateButtons();\n        }\n        \n        function updateCarousel() {\n            $carousel.css('transform', 'translateX(-' + currentPosition + 'px)');\n        }\n        \n        function updateButtons() {\n            $prevBtn.prop('disabled', currentPosition <= 0);\n            $nextBtn.prop('disabled', currentPosition >= maxPosition || totalItems <= visibleItems);\n        }\n        \n        function centerItem($item) {\n            if (!$item.length) return;\n            \n            \/\/ Get all visible items (not filtered)\n            var $allItems = $carousel.find('.tab-btn-item:not(.filtered-hide)');\n            var itemIndex = $allItems.index($item);\n            \n            if (itemIndex === -1) return;\n            \n            var containerWidth = $container.width();\n            var itemWidth = $item.outerWidth(true);\n            \n            \/\/ Calculate position to center this item\n            var centerOffset = (containerWidth \/ 2) - (itemWidth \/ 2);\n            var targetPosition = (itemIndex * itemWidth) - centerOffset;\n            \n            \/\/ Clamp to valid range\n            targetPosition = Math.max(0, Math.min(maxPosition, targetPosition));\n            \n            currentPosition = targetPosition;\n            updateCarousel();\n            updateButtons();\n        }\n        \n        function scrollCarousel(direction) {\n            var scrollAmount = itemWidth * Math.max(1, Math.floor(visibleItems \/ 2));\n            \n            if (direction === 'prev') {\n                currentPosition = Math.max(0, currentPosition - scrollAmount);\n            } else {\n                currentPosition = Math.min(maxPosition, currentPosition + scrollAmount);\n            }\n            \n            updateCarousel();\n            updateButtons();\n        }\n        \n        \/\/ Navigation button handlers\n        $prevBtn.on('click', function() {\n            if (!$(this).prop('disabled')) {\n                scrollCarousel('prev');\n            }\n        });\n        \n        $nextBtn.on('click', function() {\n            if (!$(this).prop('disabled')) {\n                scrollCarousel('next');\n            }\n        });\n        \n        \/\/ Handle tab switching + always AJAX-load that date (with active filters)\n        $(document).off('click.sspTabUi', '.tab-buttons-carousel .tab-btn').on('click.sspTabUi', '.tab-buttons-carousel .tab-btn', function(e) {\n            e.preventDefault();\n            var $clickedBtn = $(this);\n            var $item = $clickedBtn.closest('.tab-btn-item');\n            var date = $clickedBtn.attr('data-date') || $clickedBtn.data('date');\n            var target = date ? $('.tabs-content .tab[data-date=\"' + date + '\"]') : $();\n            var $scheduleSection = $clickedBtn.closest('.schedule-section');\n            if (!$scheduleSection.length) {\n                $scheduleSection = $('.schedule-section').first();\n            }\n            \n            if (target.length) {\n                $scheduleSection.find('.tab-buttons-carousel .tab-btn').removeClass('active-btn');\n                $clickedBtn.addClass('active-btn');\n                $scheduleSection.find('.tabs-content .tab').hide().removeClass('active-tab animated fadeIn');\n                target.show().addClass('active-tab animated fadeIn');\n            }\n\n            \/\/ Date tab change: always load page 1 for that date (V4), then scroll loads more.\n            if (date && typeof window.loadAgendaByDate === 'function') {\n                \/\/ Reset infinite-scroll arm so page 2..N cannot auto-cascade on tab paint.\n                if (typeof window.disarmScheduleScrollLoad === 'function') {\n                    window.disarmScheduleScrollLoad();\n                } else {\n                    window._sspScrollLoadArmed = false;\n                }\n                if (typeof window.armScheduleScrollLoadOnUserScroll === 'function') {\n                    window.armScheduleScrollLoadOnUserScroll();\n                }\n                window._sspSchedulePageLoading = false;\n\n                var $scheduleAnchor = $('.schedule-section').first();\n                if ($scheduleAnchor.length) {\n                    var top = $scheduleAnchor.offset().top - 80;\n                    if ((window.pageYOffset || 0) > top + 200) {\n                        $('html, body').stop().animate({ scrollTop: Math.max(0, top) }, 200);\n                    }\n                }\n\n                window.loadAgendaByDate(date, target, {\n                    sendDate: true,\n                    pageNo: 1,\n                    append: false,\n                    \/\/ Use memory cache when warm; network only on cache miss.\n                    forceAjax: false\n                });\n            }\n            \n            setTimeout(function() {\n                centerItem($item);\n            }, 50);\n        });\n        \n        \/\/ Initialize on load\n        initCarousel();\n        \n        \/\/ Re-initialize on window resize\n        var resizeTimer;\n        $(window).on('resize', function() {\n            clearTimeout(resizeTimer);\n            resizeTimer = setTimeout(function() {\n                initCarousel();\n            }, 250);\n        });\n        \n        \/\/ Re-initialize after filter is applied\n        $(document).on('click', '.apply-filter-btn', function() {\n            setTimeout(function() {\n                currentPosition = 0;\n                initCarousel();\n            }, 300);\n        });\n        \n        \/\/ First tab is always centered on page load - no saved state\n        setTimeout(function() {\n            var $firstBtn = $carousel.find('.tab-btn').first();\n            if ($firstBtn.length) {\n                var $item = $firstBtn.closest('.tab-btn-item');\n                centerItem($item);\n            }\n        }, 500);\n    });\n\n    jQuery(document).ready(function ($) {\n        \/* ==============================\n           OPEN SIDEBAR\n        ============================== *\/\n        $('.open-filter-btn').on('click', function(){\n            $('.filter-sidebar').addClass('active');\n            $('.filter-backdrop').addClass('active');\n        });\n\n        \/* ==============================\n           CLOSE SIDEBAR\n        ============================== *\/\n        $('.filter-close-btn, .filter-backdrop').on('click', function(){\n            $('.filter-sidebar').removeClass('active');\n            $('.filter-backdrop').removeClass('active');\n        });\n\n        \/\/ Set checkbox colors on page load\n        $('.filter-checkbox').each(function() {\n            var color = $(this).data('type-color');\n            if (color) {\n                $(this).css('--checkbox-color', color);\n            }\n        });\n\n        \/\/ Show\/hide clear button based on checkbox selection\n        function updateClearButton() {\n            var hasChecked = $('.filter-checkbox:checked').length > 0;\n            $('.filter-clear-bar').toggle(hasChecked);\n            $('#clearFilterMainBtn').toggle(hasChecked);\n        }\n\n        \/\/ Check on page load\n        updateClearButton();\n\n        \/\/ Check when any checkbox changes\n        $(document).on('change', '.filter-checkbox', function() {\n            updateClearButton();\n        });\n\n        function reloadAfterFilterClear() {\n            \/\/ Filters already cleared \u2014 if search text remains, MUST show search results (never full schedule).\n            var searchVal = $.trim(jQuery('#scheduleSearch').val() || '');\n\n            filterPayloadGlobal = null;\n            window.filterPayloadGlobal = null;\n            window._sspFilterResultCache = null;\n            searchResultCache = {};\n            filterResultCache = {};\n\n            if (typeof window.sspReloadScheduleQuery === 'function') {\n                window.sspReloadScheduleQuery({\n                    skipFilterRebuild: true,\n                    searchVal: searchVal\n                });\n                return;\n            }\n\n            var $activeTab = jQuery('.tab.active-tab');\n            var activeDate = ($activeTab.attr('data-date') || $activeTab.data('date') || jQuery('.tab-buttons-carousel .tab-btn.active-btn').attr('data-date') || jQuery('.tab-buttons-carousel .tab-btn').first().attr('data-date') || '');\n            activeDate = String(activeDate || '').substring(0, 10);\n\n            if (searchVal && typeof window.loadAgendaByDate === 'function') {\n                jQuery('.tab').data('loaded', false);\n                jQuery('.schedule-section').addClass('search-active');\n                if (!activeDate) activeDate = '1970-01-01';\n                if (!$activeTab.length) {\n                    $activeTab = jQuery('<div class=\"tab active-tab\" data-date=\"' + activeDate + '\"><div class=\"schedule-timeline\"><\/div><\/div>');\n                    jQuery('.tabs-content').append($activeTab);\n                }\n                window.loadAgendaByDate(activeDate, $activeTab, {\n                    sendDate: false,\n                    forceAjax: true,\n                    searchKeyword: searchVal\n                });\n                return;\n            }\n\n            if (typeof window.loadDefaultAgendaData === 'function') {\n                window.loadDefaultAgendaData();\n            }\n        }\n\n        \/\/ Clear all checkboxes when clear button is clicked (sidebar button)\n        $(document).on('click', '.clear-filter-btn', function(e) {\n            e.preventDefault();\n            e.stopPropagation();\n            $('.filter-checkbox:checked').prop('checked', false);\n            selectedTypesGlobal = [];\n            filterPayloadGlobal = null;\n            window.filterPayloadGlobal = null;\n            window._sspFilterResultCache = null;\n            searchResultCache = {};\n            filterResultCache = {};\n            updateClearButton();\n            reloadAfterFilterClear();\n        });\n\n        \/\/ Clear filter from main button (next to Filter button)\n        $('#clearFilterMainBtn').on('click', function(e) {\n            e.preventDefault();\n            e.stopPropagation();\n            $('.filter-checkbox:checked').prop('checked', false);\n            selectedTypesGlobal = [];\n            filterPayloadGlobal = null;\n            window.filterPayloadGlobal = null;\n            window._sspFilterResultCache = null;\n            searchResultCache = {};\n            filterResultCache = {};\n            updateClearButton();\n            reloadAfterFilterClear();\n        });\n\n        \/\/ Track current active date for filtering\n        var currentFilterDate = window.scheduleUserData ? window.scheduleUserData.currentLoadedDate : '';\n        \n        \/\/ Update current date when tab changes\n        $(document).on('click', '.tab-buttons-carousel .tab-btn', function() {\n            var date = $(this).data('date');\n            if (date) {\n                currentFilterDate = date;\n            }\n        });\n        \n        $('.apply-filter-btn').on('click', function () {\n\n            \/\/ OPTIMIZATION: prevent duplicate stacked requests from rapid\/double clicks.\n            \/\/ Purely a UX guard \u2014 does not change filter logic or results.\n            var $applyBtn = $(this);\n            if ($applyBtn.prop('disabled')) {\n                return;\n            }\n            $applyBtn.prop('disabled', true).data('orig-text', $applyBtn.text());\n\n            selectedTypesGlobal = [];\n            filterModeGlobal = $('input[name=\"filter-mode\"]:checked').val() || 'and';\n            searchResultCache = {};\n            filterResultCache = {};\n            window._sspFilterResultCache = null;\n\n            \/\/ Build grouped filter structure: { group_id: [type_id, ...], ... }\n            var groupedFilters = {};\n\n            $('.filter-checkbox:checked').each(function () {\n                var typeId  = $(this).val();\n                var groupId = $(this).attr('data-group'); \/\/ use attr to avoid jQuery data coercion\n                if (groupId === undefined || groupId === null) {\n                    groupId = '';\n                }\n\n                if (!groupedFilters[groupId]) {\n                    groupedFilters[groupId] = [];\n                }\n                groupedFilters[groupId].push(typeId);\n\n                selectedTypesGlobal.push(typeId); \/\/ keep for backward compat \/ loaded check\n            });\n\n            \/\/ Build filters array in required format\n            var filtersArray = [];\n            Object.keys(groupedFilters).forEach(function(groupKey) {\n                filtersArray.push({\n                    group_key: groupKey,\n                    values:    groupedFilters[groupKey]\n                });\n            });\n\n            \/\/ Store globally so AJAX can access it\n            filterPayloadGlobal = filtersArray.length > 0 ? {\n                filter_type: filterModeGlobal.toUpperCase(), \/\/ \"AND\" or \"OR\"\n                filters:     filtersArray\n            } : null;\n            window.filterPayloadGlobal = filterPayloadGlobal;\n\n            let $activeTab  = $('.tab.active-tab');\n            let currentDate = $activeTab.data('date');\n            if (!currentDate) {\n                currentDate = $('.tab-buttons-carousel .tab-btn.active-btn').data('date') || $('.tab-buttons-carousel .tab-btn').first().data('date') || '';\n                if (currentDate) {\n                    $activeTab = $('.tabs-content .tab[data-date=\"' + currentDate + '\"]');\n                }\n            }\n\n            \/\/ Reset ALL tabs so API reloads\n            $('.tab').data('loaded', false);\n\n            \/\/ Apply filter without date so we get ALL matching sessions,\n            \/\/ then keep only date tabs that have results (remove empty dates).\n            if (currentDate && $activeTab.length) {\n                window.loadAgendaByDate(currentDate, $activeTab, { sendDate: false, forceAjax: true });\n            } else if (typeof window.loadDefaultAgendaData === 'function') {\n                window.loadDefaultAgendaData();\n            }\n\n            closeFilter();\n\n            \/\/ Re-enable the button once the underlying agenda AJAX request finishes,\n            \/\/ whether it succeeded or failed \u2014 never leave it stuck disabled.\n            var reEnableCheck = setInterval(function() {\n                if (!window._sspAgendaLoading) {\n                    $applyBtn.prop('disabled', false);\n                    clearInterval(reEnableCheck);\n                }\n            }, 200);\n            setTimeout(function() {\n                $applyBtn.prop('disabled', false);\n                clearInterval(reEnableCheck);\n            }, 16000); \/\/ safety timeout matches your 15s API timeout + buffer\n            });\n    \n        \/\/ =====================\n        \/\/ HELPERS\n        \/\/ =====================\n        function closeFilter() {\n            $('.filter-sidebar').removeClass('active');\n            $('.filter-backdrop').removeClass('active');\n        }\n    });\n    \n    \n    \/\/ ***************************************************************\/\/\n    \/\/***** Load speakers image after page loading with API CURL *****\/\/\n    \/\/ ***************************************************************\/\/\n    var siteData = {\n        restUrl: \"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/custom\/v1\/speaker-images\"\n    };\n    \n    \/\/ Optimized image loading - deferred to prevent blocking navigation\n    (function() {\n        'use strict';\n        \n        const CHUNK_SIZE = 20; \/\/ Reduced for better performance\n        const queue = [];\n        let loading = false;\n        const processed = new Set();\n        let observer = null;\n        let mutationObserver = null;\n        let initialized = false;\n        const IMG_LC_KEY = 'ssp_cf_img_v1';\n        const IMG_LC_TTL_MS = 6 * 60 * 60 * 1000; \/\/ 6h \u2014 reuse CloudFront URLs, avoid resign\n\n        function readImgUrlCache() {\n            try {\n                var raw = localStorage.getItem(IMG_LC_KEY);\n                if (!raw) return {};\n                var obj = JSON.parse(raw);\n                if (!obj || !obj.savedAt || !obj.urls) return {};\n                if (Date.now() - obj.savedAt >= IMG_LC_TTL_MS) {\n                    localStorage.removeItem(IMG_LC_KEY);\n                    return {};\n                }\n                return obj.urls;\n            } catch (e) { return {}; }\n        }\n\n        function writeImgUrlCache(urls) {\n            try {\n                localStorage.setItem(IMG_LC_KEY, JSON.stringify({\n                    savedAt: Date.now(),\n                    urls: urls\n                }));\n            } catch (e) {}\n        }\n\n        function applyCachedImgSrc(img, url, placeholderUrl) {\n            if (!img || !url) return;\n            img.src = url;\n            img.onerror = function() { this.src = placeholderUrl; };\n        }\n\n        \/\/ Ensure links navigate immediately without waiting for images\n        document.addEventListener('click', function(e) {\n            const link = e.target.closest('.agenda-link');\n            if (link && link.href && !link.href.includes('javascript:')) {\n                \/\/ Allow immediate navigation - don't block\n                return true;\n            }\n        }, true); \/\/ Use capture phase for immediate handling\n\n        \/\/ Initialize image loading after page is ready and idle\n        function initImageLoading() {\n            if (initialized) {\n                \/\/ Reset for AJAX re-runs - process new images\n                processNewImages();\n                return;\n            }\n            initialized = true;\n\n            \/\/ Use requestIdleCallback if available, otherwise setTimeout\n            const initCallback = window.requestIdleCallback || ((cb) => setTimeout(cb, 500));\n            \n            initCallback(() => {\n                \/\/ Only load images in viewport initially\n                const viewportImgs = [];\n                const allImgs = document.querySelectorAll('.speaker-img[data-object-key], .agenda-description img[data-object-key]');\n                \n                allImgs.forEach(img => {\n                    if (img.dataset.objectKey && !processed.has(img.dataset.objectKey)) {\n                        processed.add(img.dataset.objectKey);\n                        \n                        \/\/ Check if in viewport\n                        const rect = img.getBoundingClientRect();\n                        const isInViewport = rect.top < window.innerHeight + 100 && \n                                           rect.bottom > -100 &&\n                                           img.closest('.tab.active-tab') !== null;\n                        \n                        if (isInViewport) {\n                            viewportImgs.push(img);\n                        }\n                    }\n                });\n\n                \/\/ Load only viewport images in small batches\n                if (viewportImgs.length > 0) {\n                    loadImagesBatch(viewportImgs.slice(0, 10), true); \/\/ Load first 10 immediately\n                    \n                    \/\/ Load rest in background\n                    if (viewportImgs.length > 10) {\n                        setTimeout(() => {\n                            loadImagesBatch(viewportImgs.slice(10), false);\n                        }, 200);\n                    }\n                }\n\n                \/\/ Setup IntersectionObserver for lazy loading\n                observer = new IntersectionObserver(entries => {\n                    entries.forEach(entry => {\n                        if (entry.isIntersecting) {\n                            observer.unobserve(entry.target);\n                            if (entry.target.dataset.objectKey && !queue.includes(entry.target)) {\n                                queue.push(entry.target);\n                                processQueue();\n                            }\n                        }\n                    });\n                }, {\n                    rootMargin: '150px'\n                });\n\n                \/\/ Observe all non-viewport images\n                allImgs.forEach(img => {\n                    if (!viewportImgs.includes(img) && img.dataset.objectKey) {\n                        observer.observe(img);\n                    }\n                });\n\n                \/\/ Setup MutationObserver for dynamic content\n                mutationObserver = new MutationObserver(mutations => {\n                    mutations.forEach(mutation => {\n                        mutation.addedNodes.forEach(node => {\n                            if (node.nodeType === 1) {\n                                const imgs = node.querySelectorAll ? \n                                    node.querySelectorAll('.speaker-img[data-object-key], img[data-object-key]') : [];\n                                \n                                Array.from(imgs).forEach(img => {\n                                    if (img.dataset.objectKey && !processed.has(img.dataset.objectKey)) {\n                                        processed.add(img.dataset.objectKey);\n                                        const rect = img.getBoundingClientRect();\n                                        const isInViewport = rect.top < window.innerHeight + 100 && rect.bottom > -100;\n                                        \n                                        if (isInViewport) {\n                                            loadImagesBatch([img], false);\n                                        } else {\n                                            observer.observe(img);\n                                        }\n                                    }\n                                });\n                            }\n                        });\n                    });\n                });\n\n                \/\/ Watch agenda descriptions\n                document.querySelectorAll('.agenda-description').forEach(container => {\n                    mutationObserver.observe(container, {\n                        childList: true,\n                        subtree: true\n                    });\n                });\n                \n                \/\/ Watch tab containers for AJAX-loaded content\n                document.querySelectorAll('.tab-content, .tab, .tabs-content').forEach(container => {\n                    mutationObserver.observe(container, {\n                        childList: true,\n                        subtree: true\n                    });\n                });\n            });\n        }\n\n        function loadImagesBatch(images, immediate = false) {\n            if (images.length === 0) return Promise.resolve();\n\n            const placeholderUrl = 'https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-content\/themes\/hello-elementor\/assets\/images\/profile-placeholder.png';\n            const urlCache = readImgUrlCache();\n            const needFetch = [];\n            const needFetchImgs = [];\n\n            images.forEach(img => {\n                const key = img && img.dataset ? img.dataset.objectKey : '';\n                if (!key) return;\n                if (urlCache[key]) {\n                    applyCachedImgSrc(img, urlCache[key], placeholderUrl);\n                    return;\n                }\n                needFetch.push(key);\n                needFetchImgs.push(img);\n            });\n\n            if (needFetch.length === 0) return Promise.resolve();\n\n            const batchSize = immediate ? Math.min(needFetch.length, 10) : CHUNK_SIZE;\n            const batchPromises = [];\n\n            for (let i = 0; i < needFetch.length; i += batchSize) {\n                const batch = needFetch.slice(i, i + batchSize);\n                const batchImages = needFetchImgs.slice(i, i + batchSize);\n\n                const batchPromise = new Promise((resolve) => {\n                    const loadBatch = () => {\n                         fetch(siteData.restUrl, {\n                            method: 'POST',\n                            headers: { 'Content-Type': 'application\/json' },\n                            body: JSON.stringify({ keys: batch })\n                        })\n                        .then(res => res.json())\n                        .then(data => {\n                            const fresh = readImgUrlCache();\n                            batchImages.forEach(img => {\n                                const key = img.dataset.objectKey;\n                                if (data[key] && img.dataset.objectKey === key) {\n                                    fresh[key] = data[key];\n                                    applyCachedImgSrc(img, data[key], placeholderUrl);\n                                }\n                            });\n                            writeImgUrlCache(fresh);\n                            resolve();\n                        })\n                        .catch(err => {\n                            console.error('Error loading speaker images:', err);\n                            batchImages.forEach(img => {\n                                if (!img.src || img.src.includes('profile-placeholder')) {\n                                    img.src = placeholderUrl;\n                                }\n                            });\n                            resolve();\n                        });\n                    };\n\n                    if (immediate && i === 0) {\n                        loadBatch();\n                    } else {\n                        const delayCallback = window.requestIdleCallback || ((cb) => setTimeout(cb, 100));\n                        delayCallback(loadBatch);\n                    }\n                });\n\n                batchPromises.push(batchPromise);\n            }\n\n            return Promise.all(batchPromises).then(() => {});\n        }\n\n        function processQueue() {\n            if (loading || queue.length === 0) return;\n\n            loading = true;\n            const chunk = queue.splice(0, CHUNK_SIZE);\n\n            loadImagesBatch(chunk).finally(() => {\n                loading = false;\n                if (queue.length > 0) {\n                    const delayCallback = window.requestIdleCallback || ((cb) => setTimeout(cb, 50));\n                    delayCallback(() => processQueue());\n                }\n            });\n        }\n\n        \/\/ Load images when tab changes (deferred)\n        jQuery(document).on('click', '.tab-btn', function() {\n            setTimeout(() => {\n                const activeTab = jQuery('.tab.active-tab');\n                const tabImgs = activeTab.find('.speaker-img[data-object-key]').toArray().filter(img => {\n                    return img.dataset.objectKey && \n                           (img.src.includes('profile-placeholder') || !img.src || img.complete === false);\n                });\n                \n                if (tabImgs.length > 0) {\n                    \/\/ Load first 10 immediately, rest in background\n                    loadImagesBatch(tabImgs.slice(0, 10), true);\n                    if (tabImgs.length > 10) {\n                        setTimeout(() => loadImagesBatch(tabImgs.slice(10), false), 300);\n                    }\n                }\n            }, 150);\n        });\n\n        \/\/ Process new images (for AJAX re-runs)\n        function processNewImages() {\n            const allImgs = document.querySelectorAll('.speaker-img[data-object-key]');\n            const newImgs = [];\n            \n            allImgs.forEach(img => {\n                if (img.dataset.objectKey && !processed.has(img.dataset.objectKey)) {\n                    processed.add(img.dataset.objectKey);\n                    const rect = img.getBoundingClientRect();\n                    const isInViewport = rect.top < window.innerHeight + 100 && rect.bottom > -100;\n                    \n                    if (isInViewport) {\n                        newImgs.push(img);\n                    } else if (observer) {\n                        observer.observe(img);\n                    }\n                }\n            });\n            \n            if (newImgs.length > 0) {\n                loadImagesBatch(newImgs.slice(0, 10), true);\n                if (newImgs.length > 10) {\n                    setTimeout(() => loadImagesBatch(newImgs.slice(10), false), 200);\n                }\n            }\n        }\n        \n        \/\/ Expose globally for AJAX calls\n        window.initSpeakerImageLoading = initImageLoading;\n        window.processSpeakerImages = processNewImages;\n\n        \/\/ Initialize after DOM is ready\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', initImageLoading);\n        } else {\n            initImageLoading();\n        }\n    })();\n    \n    jQuery(document).on('click', '.zoom-join-btns', function (e) {\n        e.preventDefault();\n        e.stopPropagation();\n\n        \/\/ Use the original zoom link directly from data attribute or href\n        let zoomLink = jQuery(this).data('zoom-link') || jQuery(this).attr('href');\n\n        if (!zoomLink) {\n            alert('Zoom link not available.');\n            return;\n        }\n\n        \/\/ Validate it's a zoom link\n        if (!zoomLink.includes('zoom.us') && !zoomLink.includes('zoom.com')) {\n            alert('Invalid Zoom link.');\n            return;\n        }\n\n        \/\/ Convert to direct join link (skip landing page)\n        \/\/ Convert format: https:\/\/domain.zoom.us\/j\/MEETING_ID to https:\/\/domain.zoom.us\/wc\/join\/MEETING_ID\n        try {\n            const url = new URL(zoomLink);\n            \n            \/\/ Check if it's already a direct join link\n            if (url.pathname.includes('\/wc\/join\/')) {\n                \/\/ Already a direct join link, use as-is\n                window.open(zoomLink, '_blank', 'noopener,noreferrer');\n                return;\n            }\n            \n            \/\/ Extract meeting ID from \/j\/MEETING_ID format\n            const meetingMatch = url.pathname.match(\/\\\/j\\\/(\\d{9,11})\/);\n            if (meetingMatch) {\n                const meetingId = meetingMatch[1];\n                \/\/ Build direct join URL: replace \/j\/ with \/wc\/join\/\n                const directJoinUrl = `${url.protocol}\/\/${url.host}\/wc\/join\/${meetingId}`;\n                \n                \/\/ Preserve all query parameters (pwd, etc.)\n                if (url.search) {\n                    window.open(directJoinUrl + url.search, '_blank', 'noopener,noreferrer');\n                } else {\n                    window.open(directJoinUrl, '_blank', 'noopener,noreferrer');\n                }\n            } else {\n                \/\/ If we can't parse it, try to use original link\n                \/\/ Try alternative patterns\n                const altMatch = zoomLink.match(\/(https?:\\\/\\\/[^\\\/]+)\\\/(?:j\\\/|meeting\\\/join\\\/|s\\\/|s\\\/join\\\/)(\\d{9,11})\/);\n                if (altMatch) {\n                    const domain = altMatch[1];\n                    const meetingId = altMatch[2];\n                    const queryString = zoomLink.includes('?') ? zoomLink.substring(zoomLink.indexOf('?')) : '';\n                    const directJoinUrl = `${domain}\/wc\/join\/${meetingId}${queryString}`;\n                    window.open(directJoinUrl, '_blank', 'noopener,noreferrer');\n                } else {\n                    \/\/ Fallback: use original link\n                    window.open(zoomLink, '_blank', 'noopener,noreferrer');\n                }\n            }\n        } catch (error) {\n            \/\/ If URL parsing fails, try regex approach\n            const regexMatch = zoomLink.match(\/(https?:\\\/\\\/[^\\\/]+(?:\\.[^\\\/]+)*)\\\/j\\\/(\\d{9,11})(.*)\/);\n            if (regexMatch) {\n                const domain = regexMatch[1];\n                const meetingId = regexMatch[2];\n                const queryString = regexMatch[3] || '';\n                const directJoinUrl = `${domain}\/wc\/join\/${meetingId}${queryString}`;\n                window.open(directJoinUrl, '_blank', 'noopener,noreferrer');\n            } else {\n                \/\/ Final fallback: use original link\n                console.warn('Could not convert Zoom link to direct join format, using original:', error);\n                window.open(zoomLink, '_blank', 'noopener,noreferrer');\n            }\n        }\n    });\n    \n    \/\/ Collapsible Filter Groups - Global handler\n    jQuery(function($) {\n        \/\/ Start all groups in collapsed state\n        $('.filter-checkbox-list').addClass('collapsed');\n        $('.group-title').addClass('collapsed');\n        \n        \/\/ Open the first group by default\n        $('.filter-group').first().find('.group-title').removeClass('collapsed');\n        $('.filter-group').first().find('.filter-checkbox-list').removeClass('collapsed');\n        \n        \/\/ Delegate click handler for group titles\n        $(document).off('click.groupTitle').on('click.groupTitle', '.group-title', function(e) {\n            e.preventDefault();\n            e.stopPropagation();\n            \n            var $groupTitle = $(this);\n            var $checkboxList = $groupTitle.next('.filter-checkbox-list');\n            var isCollapsed = $groupTitle.hasClass('collapsed');\n            \n            if (isCollapsed) {\n                \/\/ Expand\n                $groupTitle.removeClass('collapsed');\n                $checkboxList.removeClass('collapsed');\n            } else {\n                \/\/ Collapse\n                $groupTitle.addClass('collapsed');\n                $checkboxList.addClass('collapsed');\n            }\n        });\n    });\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Scientific Programme<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-333","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/wp\/v2\/pages\/333","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/wp\/v2\/comments?post=333"}],"version-history":[{"count":67,"href":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/wp\/v2\/pages\/333\/revisions"}],"predecessor-version":[{"id":1150,"href":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/wp\/v2\/pages\/333\/revisions\/1150"}],"wp:attachment":[{"href":"https:\/\/allintheloop.com\/eaa-annual-meeting-26\/wp-json\/wp\/v2\/media?parent=333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}