{"id":3375,"date":"2025-09-09T15:53:10","date_gmt":"2025-09-09T14:53:10","guid":{"rendered":"https:\/\/bridge.com\/?page_id=3375"},"modified":"2026-05-15T10:16:30","modified_gmt":"2026-05-15T09:16:30","slug":"bridge-clubs","status":"publish","type":"page","link":"https:\/\/bridge.com\/en\/bridge-clubs\/","title":{"rendered":"Bridge Clubs"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-17ded31\" data-block-id=\"17ded31\"><style>.stk-17ded31 {margin-bottom:0px !important;}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-17ded31-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-bc1344c\" data-v=\"4\" data-block-id=\"bc1344c\"><style>.stk-bc1344c-container{max-width:1000px !important;min-width:auto !important;margin-right:auto !important;margin-left:auto !important;}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-bc1344c-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-bc1344c-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-45a6715\" id=\"find-span-style-color-var-stk-global-color-64234-f-37561-class-stk-highlight-bridge-clubs-span\" data-block-id=\"45a6715\"><style>.stk-45a6715 .stk-block-heading__text{color:var(--stk-global-color-51802, #00024e) !important;}<\/style><h1 class=\"stk-block-heading__text has-text-color has-text-align-center\">Find <span style=\"color: var(--stk-global-color-64234, #f37561);\" class=\"stk-highlight\">bridge clubs<\/span><\/h1><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-7babef2\" data-block-id=\"7babef2\"><style>.stk-7babef2 {margin-bottom:32px !important;}<\/style><p class=\"stk-block-text__text has-text-align-center\">Find bridge clubs near you or anywhere in the world. <br>You can also add your club if it\u2019s not listed and help local players discover it.<\/p><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-button-group stk-block-button-group stk-block stk-5ca9860\" data-block-id=\"5ca9860\"><style>.stk-5ca9860 {right:0px !important;position:absolute !important;z-index:100 !important;}.stk-5ca9860 .stk-inner-blocks{column-gap:24px !important;}@media screen and (max-width: 767px){.stk-5ca9860 {position:relative !important;}}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-right has-text-align-center-mobile stk-block-content stk-button-group\">\n<div class=\"wp-block-stackable-button stk-block-button btn-primary-blue stk-block stk-724f45b\" data-block-id=\"724f45b\"><style>.stk-724f45b .stk-button{padding-top:12px !important;padding-right:24px !important;padding-bottom:12px !important;padding-left:24px !important;background:var(--stk-global-color-64234, #f37561) !important;border-top-left-radius:80px !important;border-top-right-radius:80px !important;border-bottom-right-radius:80px !important;border-bottom-left-radius:80px !important;}.stk-724f45b .stk-button:hover:after{background:var(--stk-global-color-14338, #ef4d3e) !important;opacity:1 !important;}.stk-724f45b .stk-button:hover:before{box-shadow:0px 1px 3px 1px #0000004d !important;border-color:var(--stk-global-color-14338, #ef4d3e) !important;}.stk-724f45b .stk-button:before{border-style:solid !important;border-color:var(--stk-global-color-64234, #f37561) !important;border-top-width:2px !important;border-right-width:2px !important;border-bottom-width:2px !important;border-left-width:2px !important;}.stk-724f45b .stk-button .stk--inner-svg svg:last-child{height:24px !important;width:24px !important;margin-inline-end:8px !important;}.stk-724f45b .stk-button .stk--inner-svg svg:last-child, .stk-724f45b .stk-button .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:#fffffe !important;}.stk-724f45b .stk-button__inner-text{font-size:16px !important;line-height:20px !important;font-weight:700 !important;letter-spacing:0.1px !important;}@media screen and (max-width: 1023px){.stk-724f45b .stk-button__inner-text{font-size:16px !important;}}<\/style><a class=\"stk-link stk-button\" href=\"#register-club\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg class=\"ugb-custom-icon\" xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 640\" aria-hidden=\"true\" width=\"32\" height=\"32\"><path d=\"M128 252.6C128 148.4 214 64 320 64C426 64 512 148.4 512 252.6C512 371.9 391.8 514.9 341.6 569.4C329.8 582.2 310.1 582.2 298.3 569.4C248.1 514.9 127.9 371.9 127.9 252.6zM320 160C306.7 160 296 170.7 296 184L296 232L248 232C234.7 232 224 242.7 224 256C224 269.3 234.7 280 248 280L296 280L296 328C296 341.3 306.7 352 320 352C333.3 352 344 341.3 344 328L344 280L392 280C405.3 280 416 269.3 416 256C416 242.7 405.3 232 392 232L344 232L344 184C344 170.7 333.3 160 320 160z\"\/><\/svg><\/div><\/span><span class=\"stk-button__inner-text\">Register your club<\/span><\/a><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-tabs stk-block-tabs stk-block stk-cf307e1\" data-initial-tab=\"1\" data-block-id=\"cf307e1\"><style>.stk-cf307e1 .stk-block-tab-content .stk-block-content .stk-block-column[hidden]{display:none !important;}.stk-cf307e1 {margin-bottom:64px !important;}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-block-tabs--horizontal stk-block-tabs--fade stk-content-align stk-cf307e1-column\">\n<div class=\"wp-block-stackable-tab-labels stk-block-tab-labels stk-block stk-ab8ecf3 stk-block-background is-style-centered-pills\" data-block-id=\"ab8ecf3\"><style>.stk-ab8ecf3 .stk-block-tab-labels__wrapper{justify-content:center !important;}.stk-ab8ecf3 .stk-block-tabs__tab{gap:12px !important;color:#acacac !important;padding-top:8px !important;padding-right:24px !important;padding-bottom:8px !important;padding-left:24px !important;border-top-left-radius:50px !important;border-top-right-radius:50px !important;border-bottom-right-radius:50px !important;border-bottom-left-radius:50px !important;}.stk-ab8ecf3 .stk-block-tabs__tab:hover{color:var(--stk-global-color-51802, #00024e) !important;}.stk-ab8ecf3 .stk-block-tabs__tab.stk-block-tabs__tab--active .stk-block-tab-labels__text{color:#ffffff !important;}.stk-ab8ecf3 .stk-block-tabs__tab.stk-block-tabs__tab--active:hover .stk-block-tab-labels__text{color:var(--stk-global-color-66386, #f2f9ff) !important;}.stk-ab8ecf3 {background-color:var(--stk-global-color-85642, #e1edfa) !important;border-top-left-radius:50px !important;border-top-right-radius:50px !important;border-bottom-right-radius:50px !important;border-bottom-left-radius:50px !important;overflow:hidden !important;padding-top:8px !important;padding-right:8px !important;padding-bottom:8px !important;padding-left:8px !important;margin-right:auto !important;margin-left:auto !important;}.stk-ab8ecf3:before{background-color:var(--stk-global-color-85642, #e1edfa) !important;}.stk-ab8ecf3 .stk-block-tab-labels__text{color:#acacac !important;}.stk-ab8ecf3 .stk-block-tabs__tab:hover .stk-block-tab-labels__text{color:var(--stk-global-color-51802, #00024e) !important;}.stk-ab8ecf3 .stk-block-tabs__tab:not(.stk-block-tabs__tab--active):hover{background:#dddddd !important;opacity:1 !important;}.stk-ab8ecf3 .stk-block-tabs__tab .stk--inner-svg svg:last-child, .stk-ab8ecf3 .stk-block-tabs__tab .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:#777777 !important;}.stk-ab8ecf3 .stk-block-tabs__tab:not(.stk-block-tabs__tab--active):hover .stk--inner-svg svg:last-child, .stk-ab8ecf3 .stk-block-tabs__tab:not(.stk-block-tabs__tab--active):hover .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:#000000 !important;}.stk-ab8ecf3 .stk-block-tabs__tab.stk-block-tabs__tab--active{background:#000000 !important;}.stk-ab8ecf3 .stk-block-tabs__tab.stk-block-tabs__tab--active:hover{background:var(--stk-global-color-51802, #00024e) !important;opacity:1 !important;}.stk-ab8ecf3 .stk-block-tabs__tab.stk-block-tabs__tab--active .stk--inner-svg svg:last-child, .stk-ab8ecf3 .stk-block-tabs__tab.stk-block-tabs__tab--active .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:#ffffff !important;}@media screen and (max-width: 1023px){.stk-ab8ecf3 .stk-block-tab-labels__wrapper{justify-content:center !important;}.stk-ab8ecf3 .stk-block-tabs__tab{justify-content:flex-start !important;}.stk-ab8ecf3 {margin-right:320px !important;}}@media screen and (max-width: 767px){.stk-ab8ecf3 .stk-block-tab-labels__wrapper{justify-content:center !important;}.stk-ab8ecf3 {--tabs-column-gap:16px !important;max-width:280px !important;min-width:auto !important;margin-right:auto !important;margin-left:auto !important;}.stk-ab8ecf3 .stk-block-tabs__tab{padding-right:24px !important;padding-left:24px !important;}}<\/style><div class=\"stk-block-tab-labels__wrapper\" role=\"tablist\"><button class=\"stk-block-tabs__tab\" role=\"tab\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg style=\"height:0;width:0\"><defs><linearGradient id=\"linear-gradient-ab8ecf3\" x1=\"0\" x2=\"100%\" y1=\"0\" y2=\"0\"><stop offset=\"0%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-ab-8-ecf-3-color-1)\"><\/stop><stop offset=\"100%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-ab-8-ecf-3-color-2)\"><\/stop><\/linearGradient><\/defs><\/svg><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\" aria-hidden=\"true\" width=\"32\" height=\"32\"><path d=\"M408 120c0 8.6-1.8 18.3-5 28.6c-5.7 18.4-15.6 38.8-27.4 59.2l-.1 .2c-3.1 5.4-6.3 10.7-9.6 16c-4.4 7-8.9 14-13.5 20.8l-.4 .6c-18.1 26.9-36.7 51.1-49.2 66.6c-7.7 9.6-22 9.6-29.6 0c-12.4-15.5-31.1-39.7-49.2-66.6c-18.4-27.3-36.3-57.5-46.7-84.4c-.8-2.1-1.6-4.2-2.3-6.3c-4.4-12.6-7-24.4-7-34.6c0-4.7 .3-9.3 .8-13.8C175.6 46.4 226.4 0 288 0c66.3 0 120 53.7 120 120zM352 300.6c13.5-18.2 28.8-39.9 42.7-62.4c1.8-2.9 3.6-5.8 5.3-8.8l0 224.3 128-46.5 0-252.9L419.3 193.8c2.2-4.7 4.4-9.3 6.3-14c5.9-14 11-29.2 13.2-44.2l105-38.2c7.4-2.7 15.6-1.6 22 2.9s10.2 11.8 10.2 19.7l0 304c0 10.1-6.3 19.1-15.8 22.6l-176 64c-5.3 1.9-11.1 1.9-16.4 0L200 449.5l-167.8 61c-7.4 2.7-15.6 1.6-22-2.9S0 495.8 0 488L0 184c0-10.1 6.3-19.1 15.8-22.6L136 117.7c0 .8 0 1.5 0 2.3c0 15.1 3.7 30.7 8.9 45.6L48 200.8l0 252.9 128-46.5 0-177.7c1.8 3 3.5 5.9 5.3 8.8c13.9 22.5 29.1 44.2 42.7 62.4l0 106.6 128 46.5 0-153.1zM288 152a40 40 0 1 0 0-80 40 40 0 1 0 0 80z\"\/><\/svg><\/div><\/span><div class=\"stk-block-tab-labels__text has-text-align-left-tablet\"><span>Map<\/span><\/div><\/button><button class=\"stk-block-tabs__tab\" role=\"tab\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg style=\"height:0;width:0\"><defs><linearGradient id=\"linear-gradient-ab8ecf3\" x1=\"0\" x2=\"100%\" y1=\"0\" y2=\"0\"><stop offset=\"0%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-ab-8-ecf-3-color-1)\"><\/stop><stop offset=\"100%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-ab-8-ecf-3-color-2)\"><\/stop><\/linearGradient><\/defs><\/svg><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"bars\" class=\"svg-inline--fa fa-bars fa-w-14\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 448 512\" width=\"32\" height=\"32\"><path fill=\"currentColor\" d=\"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"><\/path><\/svg><\/div><\/span><div class=\"stk-block-tab-labels__text has-text-align-left-tablet\"><span>List<\/span><\/div><\/button><\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-tab-content stk-block-tab-content stk-block stk-7796bb7\" data-block-id=\"7796bb7\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-7796bb7-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-5875b6e\" data-v=\"4\" role=\"tabpanel\" data-block-id=\"5875b6e\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-5875b6e-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-5875b6e-inner-blocks\">    \r\n    <style>\r\n        #map-bridge-container { width: 100%; height: 600px; border-radius: 12px; box-shadow: 0 10px 25px rgba(56, 89, 137, 0.15); position: relative; background: #e6eaef; }\r\n        .map-loading-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(255,255,255,0.9); display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 10; font-family: sans-serif; font-weight: bold; color: #0055AA; border-radius: 12px; transition: opacity 0.3s; }\r\n        .map-spinner { border: 4px solid rgba(0, 85, 170, 0.2); border-left-color: #0055AA; border-radius: 50%; width: 40px; height: 40px; animation: map-spin 1s linear infinite; margin-bottom: 15px; }\r\n        @keyframes map-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\r\n        \r\n        \/* CSS POUR LES INITIALES *\/\r\n        .club-initials { width: 38px; height: 38px; background-color: #eff6ff; color: #0055AA; border-radius: 6px; display: flex; justify-content: center; align-items: center; font-weight: bold; font-size: 16px; font-family: Arial, sans-serif; letter-spacing: 1px; }\r\n        \r\n        .club-marker-container { width: 50px; height: 50px; background-color: #ffffff; border: 3px solid #FF8C00; border-radius: 12px; box-shadow: 0 4px 8px rgba(0,0,0,0.3); display: flex; justify-content: center; align-items: center; cursor: pointer; position: absolute; transition: transform 0.2s ease, z-index 0s; }\r\n        .club-marker-container:hover { transform: scale(1.1); z-index: 10000 !important; }\r\n        .club-marker-container::after { content: ''; position: absolute; bottom: -8px; left: 50%; margin-left: -6px; width: 0; height: 0; border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 8px solid #FF8C00; }\r\n        .club-marker-container img { width: 38px; height: 38px; object-fit: contain; border-radius: 6px; }\r\n        \r\n        .gm-style-iw-c { max-width: 280px !important; min-width: 250px !important; padding: 0 !important; border-radius: 8px !important; overflow: hidden !important; }\r\n        .gm-style-iw-chr { position: absolute !important; right: 0px !important; top: 0px !important; z-index: 999; }\r\n        .gm-style-iw-d { overflow: hidden !important; padding: 0 !important; }\r\n        .gm-ui-hover-effect { top: 5px !important; right: 5px !important; background: rgba(255,255,255,0.8) !important; border-radius: 50% !important; }\r\n        \r\n        .club-infowindow { width: 100%; max-width: 280px; padding: 20px; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; }\r\n        .club-title { margin: 0; font-size: 18px; color: #0055AA; font-weight: 700; line-height: 1.3; } \r\n        .club-features-icons { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px solid #eee; }\r\n        .club-features-icons i { font-size: 18px; color: #0055AA; cursor: help; }\r\n        .club-meta { margin: 0 0 6px 0; font-size: 14px; color: #444; line-height: 1.4; }\r\n        .club-meta a { color: #0055AA; text-decoration: none; }\r\n        .club-meta a:hover { text-decoration: underline; }\r\n        .club-desc { font-size: 13px; color: #666; margin: 12px 0; font-style: italic; border-top: 1px solid #eee; padding-top: 10px; }\r\n        .club-btn-maps { display: inline-block; width: 100%; text-align: center; background-color: #FF8C00; color: #ffffff !important; padding: 8px 0; border-radius: 6px; text-decoration: none !important; font-size: 13px; font-weight: 600; margin-top: 5px; transition: background 0.2s; }\r\n        .club-btn-maps:hover { background-color: #e67e00; }\r\n        \r\n        .custom-map-control-btn { background-color: #fff; border: 0; border-radius: 2px; box-shadow: 0 1px 4px rgba(0,0,0,0.3); cursor: pointer; margin: 10px; padding: 0 10px; height: 40px; line-height: 40px; font-family: Roboto, Arial, sans-serif; font-size: 14px; color: #555; position: absolute; bottom: 20px; left: auto; right: auto; z-index: 99; transition: background 0.3s; }\r\n        .custom-map-control-btn:hover { background-color: #f1f1f1; color: #000; }\r\n        .bridge-cluster { color: #fff !important; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: bold; width: 50px !important; text-align: center !important; line-height: 50px !important; }\r\n        .bridge-cluster div { margin-left: 24px !important; }\r\n    <\/style>\r\n\r\n    <div id=\"map-bridge-container\">\r\n        <div id=\"map-loading-overlay\" class=\"map-loading-overlay\">\r\n            <div class=\"map-spinner\"><\/div>\r\n            <div>Loading map...<\/div>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        var jsonUrl = 'https:\/\/bridge.com\/wp-content\/uploads\/bridge-data\/bridge-clubs.json?v=1782205915';\r\n        var mapContainer = document.getElementById('map-bridge-container');\r\n        var loadingOverlay = document.getElementById('map-loading-overlay');\r\n        var mapTabBtn = document.getElementById('stk-block-tab-label-cf307e1-1');\r\n        \r\n        var allClubsData = [];\r\n        var mapInitialized = false;\r\n        var infoWindow = null;\r\n\r\n        var mapStyles = [\r\n            { elementType: 'geometry', stylers: [{ color: '#f5f7fa' }] },\r\n            { elementType: 'labels.text.fill', stylers: [{ color: '#586e75' }] },\r\n            { elementType: 'labels.text.stroke', stylers: [{ color: '#ffffff' }] },\r\n            { featureType: 'administrative.land_parcel', elementType: 'labels.text.fill', stylers: [{ color: '#bdbdbd' }] },\r\n            { featureType: 'poi', elementType: 'geometry', stylers: [{ color: '#e6eaef' }] },\r\n            { featureType: 'poi', elementType: 'labels.text.fill', stylers: [{ color: '#93b7c9' }] },\r\n            { featureType: 'road', elementType: 'geometry', stylers: [{ color: '#ffffff' }] },\r\n            { featureType: 'water', elementType: 'geometry', stylers: [{ color: '#c9dbe9' }] },\r\n            { featureType: 'water', elementType: 'labels.text.fill', stylers: [{ color: '#9e9e9e' }] }\r\n        ];\r\n\r\n        function getInitials(name) {\r\n            if (!name) return 'CL';\r\n            var words = name.trim().split(\/\\s+\/);\r\n            var initial1 = words[0] ? words[0].charAt(0).toUpperCase() : '';\r\n            var initial2 = words[1] ? words[1].charAt(0).toUpperCase() : '';\r\n            return initial1 + initial2;\r\n        }\r\n\r\n        function getAvatarHTML(club) {\r\n            if (club.logo_url && club.logo_url !== '') {\r\n                return '<img decoding=\"async\" src=\"' + club.logo_url + '\">';\r\n            } else {\r\n                return '<span class=\"club-initials\">' + getInitials(club.title) + '<\/span>';\r\n            }\r\n        }\r\n\r\n        function buildInfoWindow(club) {\r\n            var html = '<div class=\"club-infowindow\">';\r\n            \r\n            \/\/ Nouveau header Flexbox pour aligner logo et titre\r\n            html += '<div class=\"card-header\" style=\"position:relative; margin-bottom:15px; display:flex; align-items:center; gap:15px;\">';\r\n            html += getAvatarHTML(club);\r\n            html += '<h3 class=\"club-title\">' + club.title + '<\/h3>';\r\n            html += '<\/div>';\r\n\r\n            var icons = '';\r\n            if (club.is_label) icons += '<i class=\"fa-light fa-circle-bookmark\" title=\"Labelis\u00e9\"><\/i>';\r\n            if (club.is_school) icons += '<i class=\"fa-light fa-school\" title=\"Bridge School\"><\/i>';\r\n            if (club.is_parking) icons += '<i class=\"fa-light fa-circle-parking\" title=\"Parking\"><\/i>';\r\n            if (club.is_initiation) icons += '<i class=\"fa-light fa-chalkboard-user\" title=\"Initiation\"><\/i>';\r\n            if (club.is_house) icons += '<i class=\"fa-light fa-circle-house\" title=\"Bridge House\"><\/i>';\r\n            if (club.is_youth) icons += '<i class=\"fa-light fa-children\" title=\"Bridge Youth\"><\/i>';\r\n            if (icons) html += '<div class=\"club-features-icons\">' + icons + '<\/div>';\r\n\r\n            if (club.president) html += '<p class=\"club-meta\"><strong>Pr\u00e9sident:<\/strong> ' + club.president + '<\/p>';\r\n            if (club.level) html += '<p class=\"club-meta\"><strong>Niveau:<\/strong> ' + club.level + '<\/p>';\r\n            if (club.telephone) html += '<p class=\"club-meta\"><i class=\"fa-solid fa-phone\" style=\"width:16px; color:#FF8C00;\"><\/i> <a href=\"tel:' + club.telephone.replace(\/[^0-9+]\/g, '') + '\">' + club.telephone + '<\/a><\/p>';\r\n            if (club.email) html += '<p class=\"club-meta\"><i class=\"fa-solid fa-envelope\" style=\"width:16px; color:#FF8C00;\"><\/i> <a href=\"mailto:' + club.email + '\">' + club.email + '<\/a><\/p>';\r\n            if (club.site_web) html += '<p class=\"club-meta\"><i class=\"fa-solid fa-globe\" style=\"width:16px; color:#FF8C00;\"><\/i> <a href=\"' + club.site_web + '\" target=\"_blank\">Site web du club<\/a><\/p>';\r\n            \r\n            html += '<p class=\"club-meta\" style=\"margin-top:8px;\"><strong>Adresse:<\/strong><br>' + club.address + '<\/p>';\r\n            if (club.description) html += '<div class=\"club-desc\">' + club.description + '<\/div>';\r\n            \r\n            html += '<a href=\"' + club.maps_url + '\" target=\"_blank\" class=\"club-btn-maps\">Ouvrir dans Google Maps<\/a>';\r\n            html += '<\/div>';\r\n            return html;\r\n        }\r\n\r\n        function CustomMarker(latlng, map, markerData) {\r\n            this.latlng = latlng; this.markerData = markerData; this.div = null;\r\n        }\r\n        \r\n        if(typeof google !== 'undefined') {\r\n            CustomMarker.prototype = new google.maps.OverlayView();\r\n            CustomMarker.prototype.onAdd = function() {\r\n                var div = document.createElement('div'); \r\n                div.className = 'club-marker-container';\r\n                div.innerHTML = getAvatarHTML(this.markerData);\r\n                \r\n                var self = this;\r\n                div.addEventListener('click', function(e) {\r\n                    e.stopPropagation();\r\n                    if (infoWindow) infoWindow.close();\r\n                    infoWindow = new google.maps.InfoWindow({ content: buildInfoWindow(self.markerData), pixelOffset: new google.maps.Size(0, -55) });\r\n                    infoWindow.setPosition(self.latlng); \r\n                    infoWindow.open(self.getMap()); \r\n                });\r\n                this.div = div; \r\n                this.getPanes().overlayMouseTarget.appendChild(div); \r\n            };\r\n            CustomMarker.prototype.draw = function() {\r\n                var overlayProjection = this.getProjection(); if (!overlayProjection) return;\r\n                var sw = overlayProjection.fromLatLngToDivPixel(this.latlng);\r\n                if (this.div) { this.div.style.left = (sw.x - 25) + 'px'; this.div.style.top = (sw.y - 55) + 'px'; }\r\n            };\r\n            CustomMarker.prototype.onRemove = function() { if (this.div) { this.div.parentNode.removeChild(this.div); this.div = null; } };\r\n            \r\n            CustomMarker.prototype.getPosition = function() { return this.latlng; };\r\n            CustomMarker.prototype.getDraggable = function() { return false; };\r\n            CustomMarker.prototype.getVisible = function() { return true; };\r\n        }\r\n\r\n        function initMap() {\r\n            if (mapInitialized || allClubsData.length === 0 || typeof google === 'undefined') return;\r\n            mapInitialized = true;\r\n\r\n            var map = new google.maps.Map(mapContainer, {\r\n                zoom: 5, center: {lat: 46.2276, lng: 2.2137}, styles: mapStyles,\r\n                mapTypeControl: false, streetViewControl: false, fullscreenControl: true, clickableIcons: false\r\n            });\r\n\r\n            var locationButton = document.createElement('button');\r\n            locationButton.innerHTML = '<i class=\"fa-solid fa-crosshairs\"><\/i> Locate me'; \r\n            locationButton.classList.add('custom-map-control-btn');\r\n            map.controls[google.maps.ControlPosition.BOTTOM_CENTER].push(locationButton);\r\n\r\n            locationButton.addEventListener('click', function() {\r\n                if (navigator.geolocation) {\r\n                    navigator.geolocation.getCurrentPosition(\r\n                        function(pos) { map.setCenter({ lat: pos.coords.latitude, lng: pos.coords.longitude }); map.setZoom(12); },\r\n                        function() { alert('\u00c9chec de la g\u00e9olocalisation.'); }\r\n                    );\r\n                }\r\n            });\r\n\r\n            map.addListener('click', function() { if (infoWindow) infoWindow.close(); });\r\n\r\n            var markersList = allClubsData.map(function(data) {\r\n                var latLng = new google.maps.LatLng(parseFloat(data.lat), parseFloat(data.lng));\r\n                return new CustomMarker(latLng, map, data);\r\n            });\r\n\r\n            if (typeof MarkerClusterer !== 'undefined') {\r\n                var clusterStyles = [{\r\n                    textColor: 'white', url: 'data:image\/svg+xml;charset=UTF-8,' + encodeURIComponent('<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"50\" height=\"50\" viewBox=\"0 0 50 50\"><circle cx=\"25\" cy=\"25\" r=\"20\" fill=\"#FF8C00\" stroke=\"white\" stroke-width=\"3\"\/><circle cx=\"25\" cy=\"25\" r=\"24\" fill=\"none\" stroke=\"#FF8C00\" stroke-width=\"1\" opacity=\"0.5\"\/><\/svg>'), height: 50, width: 50, textSize: 14, className: 'bridge-cluster' \r\n                }];\r\n                new MarkerClusterer(map, markersList, { styles: clusterStyles, gridSize: 50, maxZoom: 15 });\r\n            }\r\n\r\n            loadingOverlay.style.opacity = '0';\r\n            setTimeout(function() { loadingOverlay.style.display = 'none'; }, 300);\r\n        }\r\n\r\n        fetch(jsonUrl)\r\n            .then(function(response) { return response.json(); })\r\n            .then(function(data) {\r\n                allClubsData = data;\r\n                \r\n                if (mapTabBtn) {\r\n                    mapTabBtn.addEventListener('click', function() {\r\n                        if (!mapInitialized) {\r\n                            loadingOverlay.style.display = 'flex';\r\n                            loadingOverlay.style.opacity = '1';\r\n                            setTimeout(initMap, 50); \r\n                        }\r\n                    });\r\n                }\r\n                \r\n                if (mapTabBtn && mapTabBtn.classList.contains('stk-block-tabs__tab--active')) {\r\n                    initMap();\r\n                } else if (!mapTabBtn) {\r\n                    initMap();\r\n                }\r\n            })\r\n            .catch(function(error) { \r\n                console.error('Erreur JSON:', error); \r\n                loadingOverlay.innerHTML = 'Erreur lors du chargement des clubs.';\r\n            });\r\n    });\r\n    <\/script>\r\n    \r\n    \n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-4622c9f\" data-v=\"4\" role=\"tabpanel\" data-block-id=\"4622c9f\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-4622c9f-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-4622c9f-inner-blocks\">    \r\n    <style>\r\n        \/* CSS POUR LES INITIALES (LISTE ET D\u00c9TAILS) *\/\r\n        .club-initials { \r\n            background-color: #eff6ff; \r\n            color: #0055AA; \r\n            display: flex; \r\n            justify-content: center; \r\n            align-items: center; \r\n            font-weight: bold; \r\n            font-family: Arial, sans-serif; \r\n            letter-spacing: 1px; \r\n            object-fit: cover;\r\n        }\r\n        \/* Style pour l'initiale dans la liste *\/\r\n        .item-avatar .club-initials {\r\n            width: 100%;\r\n            height: 100%;\r\n            border-radius: 6px; \/* Ou la bordure de votre design liste *\/\r\n            font-size: 18px;\r\n        }\r\n        \/* Style pour l'initiale dans le panneau d\u00e9tail (remplace teacher-avatar-circle) *\/\r\n        .teacher-avatar-circle.club-initials {\r\n            width: 60px; \/* Ajustez selon votre CSS actuel *\/\r\n            height: 60px;\r\n            border-radius: 50%;\r\n            font-size: 24px;\r\n            margin-right: 15px;\r\n            flex-shrink: 0;\r\n        }\r\n    <\/style>\r\n\r\n    <div id=\"bridge-master-container\" class=\"bridge-container teacher-mode\">\r\n        \r\n        <div class=\"bridge-list-col custom-scrollbar\" id=\"bridge-list-col\">\r\n            <div class=\"bridge-list-header\">\r\n                <div class=\"header-top\">\r\n                    <h3>Bridge Clubs<\/h3>\r\n                    <span class=\"header-badge\" id=\"club-count-badge\">0<\/span>\r\n                <\/div>\r\n                <div class=\"bridge-filters\">\r\n                    <div class=\"search-wrapper\">\r\n                        <svg class=\"search-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"11\" cy=\"11\" r=\"8\"><\/circle><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\"><\/line><\/svg>\r\n                        <input type=\"text\" id=\"club-filter-search\" placeholder=\"Search city, name...\" disabled>\r\n                    <\/div>\r\n                    <button id=\"btn-geoloc\" class=\"btn-geoloc\" title=\"Sort by distance\" disabled>\r\n                        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"3 11 22 2 13 21 11 13 3 11\"><\/polygon><\/svg>\r\n                    <\/button>\r\n                    \r\n                    <div class=\"custom-select-wrapper\" id=\"club-wrap-country\" style=\"display:none;\">\r\n                        <input type=\"hidden\" id=\"club-filter-country-val\" value=\"all\">\r\n                        <div class=\"custom-select-trigger\">\r\n                            <span>All Countries<\/span>\r\n                            <svg class=\"select-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"><\/polyline><\/svg>\r\n                        <\/div>\r\n                        <div class=\"custom-options custom-scrollbar\" id=\"dynamic-country-options\">\r\n                            <div class=\"custom-option selected\" data-value=\"all\">All Countries<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <ul class=\"bridge-list-items\" id=\"club-results-list\">\r\n                <li class=\"bridge-list-empty\" id=\"list-loading-indicator\">Chargement des clubs...<\/li>\r\n            <\/ul>\r\n        <\/div>\r\n\r\n        <div class=\"bridge-details-col custom-scrollbar\" id=\"bridge-details-col\">\r\n            <button id=\"mobile-back-btn\" class=\"mobile-back\">\r\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"><\/line><polyline points=\"12 19 5 12 12 5\"><\/polyline><\/svg>\r\n                Back to list            <\/button>\r\n            \r\n            <div class=\"bridge-list-header bridge-ghost-header\"><\/div>\r\n\r\n            <div class=\"details-wrapper\">\r\n                <div id=\"details-empty-state\" class=\"details-empty\">\r\n                    <div class=\"empty-icon\" style=\"font-size:32px;\">\ud83d\udc4b<\/div>\r\n                    <h3>Select a club<\/h3>\r\n                    <p>Click on a club in the list to view details.<\/p>\r\n                <\/div>\r\n                <div id=\"details-content\" style=\"display:none;\"><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n    <\/div>\r\n    \r\n    <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        var jsonUrl = 'https:\/\/bridge.com\/wp-content\/uploads\/bridge-data\/bridge-clubs.json?v=1782205915';\r\n        var allClubs = [];\r\n        \/\/ Libell\u00e9s pays localis\u00e9s (cl\u00e9 = slug ISO taxonomie 'country'), fournis par PHP.\r\n        var countryLabels = {\"ai\":\"Anguilla\",\"ar\":\"Argentina\",\"au\":\"Australia\",\"at\":\"Austria\",\"bs\":\"Bahamas\",\"bd\":\"Bangladesh\",\"bb\":\"Barbados\",\"be\":\"Belgium\",\"bm\":\"Bermuda\",\"bo\":\"Bolivia\",\"ba\":\"Bosnia and Herzegovina\",\"bw\":\"Botswana\",\"br\":\"Brazil\",\"bg\":\"Bulgaria\",\"ca\":\"Canada\",\"cl\":\"Chile\",\"cn\":\"China\",\"tw\":\"Chinese Taipei\",\"co\":\"Colombia\",\"cr\":\"Costa Rica\",\"hr\":\"Croatia\",\"cy\":\"Cyprus\",\"cz\":\"Czech Republic\",\"dk\":\"Denmark\",\"do\":\"Dominican Republic\",\"ec\":\"Ecuador\",\"eg\":\"Egypt\",\"gb-eng\":\"England\",\"ee\":\"Estonia\",\"fo\":\"Faroe Islands\",\"fi\":\"Finland\",\"fr\":\"France\",\"de\":\"Germany\",\"gr\":\"Greece\",\"gp\":\"Guadeloupe\",\"gt\":\"Guatemala\",\"hk\":\"Hong Kong\",\"hu\":\"Hungary\",\"is\":\"Iceland\",\"in\":\"India\",\"id\":\"Indonesia\",\"ie\":\"Ireland\",\"il\":\"Israel\",\"it\":\"Italy\",\"jm\":\"Jamaica\",\"jp\":\"Japan\",\"jo\":\"Jordan\",\"ke\":\"Kenya\",\"kr\":\"South Korea\",\"kw\":\"Kuwait\",\"lv\":\"Latvia\",\"lt\":\"Lithuania\",\"mo\":\"Macao\",\"my\":\"Malaysia\",\"mt\":\"Malta\",\"mq\":\"Martinique\",\"mx\":\"Mexico\",\"mc\":\"Monaco\",\"ma\":\"Morocco\",\"nl\":\"Netherlands\",\"nz\":\"New Zealand\",\"no\":\"Norway\",\"pk\":\"Pakistan\",\"ps\":\"Palestine\",\"pa\":\"Panama\",\"pe\":\"Peru\",\"ph\":\"Philippines\",\"pl\":\"Poland\",\"pt\":\"Portugal\",\"re\":\"R\\u00e9union\",\"ro\":\"Romania\",\"ru\":\"Russia\",\"lc\":\"Saint Lucia\",\"kn\":\"Saint Kitts and Nevis\",\"sm\":\"San Marino\",\"sa\":\"Saudi Arabia\",\"gb-sct\":\"Scotland\",\"rs\":\"Serbia\",\"sg\":\"Singapore\",\"sk\":\"Slovakia\",\"si\":\"Slovenia\",\"za\":\"South Africa\",\"es\":\"Spain\",\"lk\":\"Sri Lanka\",\"sr\":\"Suriname\",\"se\":\"Sweden\",\"ch\":\"Switzerland\",\"sy\":\"Syria\",\"th\":\"Thailand\",\"tt\":\"Trinidad and Tobago\",\"tn\":\"Tunisia\",\"tr\":\"T\\u00fcrkiye\",\"ug\":\"Uganda\",\"ua\":\"Ukraine\",\"ae\":\"United Arab Emirates\",\"uk\":\"United Kingdom\",\"us\":\"United States\",\"uy\":\"Uruguay\",\"ve\":\"Venezuela\",\"gb-wls\":\"Wales\",\"lu\":\"Luxembourg\"};\r\n        function getCountryLabel(club) {\r\n            if (club.country_code && countryLabels[club.country_code]) return countryLabels[club.country_code];\r\n            return club.country || '';\r\n        }\r\n        \r\n        \/\/ Traductions transf\u00e9r\u00e9es en JS\r\n        var txtNoResults = \"No clubs found.\";\r\n        var txtPresident = \"President\";\r\n        var txtAddress   = \"Address\";\r\n        var txtAbout     = \"About\";\r\n        var txtBtnMap    = \"Get Directions\";\r\n        var txtLocError  = \"Geolocation failed or disabled.\";\r\n        var txtLevel     = \"Level\";\r\n        var txtPhone     = \"Phone\";\r\n        var txtEmail     = \"Email\";\r\n        var txtWebsite   = \"Website\";\r\n        \r\n        var txtLblCert   = \"Certified\";\r\n        var txtLblSchool = \"Bridge School\";\r\n        var txtLblPark   = \"Parking\";\r\n        var txtLblInit   = \"Initiation\";\r\n        var txtLblHouse  = \"Bridge House\";\r\n        var txtLblYouth  = \"Bridge Youth\";\r\n\r\n        var listContainer  = document.getElementById('club-results-list');\r\n        var countBadge     = document.getElementById('club-count-badge');\r\n        var btnGeoloc      = document.getElementById('btn-geoloc');\r\n        var detailsCol     = document.getElementById('bridge-details-col');\r\n        var listCol        = document.getElementById('bridge-list-col');\r\n        var detailsContent = document.getElementById('details-content');\r\n        var emptyState     = document.getElementById('details-empty-state');\r\n        var mobileBack     = document.getElementById('mobile-back-btn');\r\n        var searchInput    = document.getElementById('club-filter-search'); \r\n        var ghostHeader    = detailsCol.querySelector('.bridge-ghost-header');\r\n        var countryWrapper = document.getElementById('club-wrap-country');\r\n        var countryOptions = document.getElementById('dynamic-country-options');\r\n\r\n        \/\/ NOUVEAU : Calcul des initiales (Avec d\u00e9codage HTML)\r\n        function getInitials(name) {\r\n            if (!name) return 'CL';\r\n            \r\n            \/\/ 1. D\u00e9codage des entit\u00e9s HTML (transforme &#8217; en vrai apostrophe)\r\n            var textArea = document.createElement('textarea');\r\n            textArea.innerHTML = name;\r\n            var decodedName = textArea.value;\r\n            \r\n            \/\/ 2. On remplace tout ce qui n'est PAS une lettre, un chiffre ou un accent par un espace\r\n            var cleanName = decodedName.replace(\/[^\\w\\u00C0-\\u024F\\u1E00-\\u1EFF]+\/g, ' ').trim();\r\n            \r\n            if (!cleanName) return 'CL';\r\n            \r\n            var words = cleanName.split(\/\\s+\/);\r\n            \r\n            if (words.length === 1) {\r\n                \/\/ S'il n'y a qu'un seul mot (ex: \"99\")\r\n                return words[0].substring(0, 2).toUpperCase();\r\n            } else {\r\n                \/\/ S'il y a plusieurs mots (ex: \"71 CLUB TRALEE\" donnera \"7C\")\r\n                return (words[0].charAt(0) + words[1].charAt(0)).toUpperCase();\r\n            }\r\n        }\r\n\r\n        \/\/ NOUVEAU : G\u00e9n\u00e9rateur de HTML pour l'avatar\r\n        function getAvatarHTML(club, extraClass) {\r\n            var className = extraClass ? 'class=\"' + extraClass + '\"' : '';\r\n            if (club.logo_url && club.logo_url !== '') {\r\n                return '<img decoding=\"async\" src=\"' + club.logo_url + '\" alt=\"' + club.title + '\" ' + className + '>';\r\n            } else {\r\n                var spanClass = extraClass ? 'club-initials ' + extraClass : 'club-initials';\r\n                return '<span class=\"' + spanClass + '\">' + getInitials(club.title) + '<\/span>';\r\n            }\r\n        }\r\n\r\n        \/\/ GESTION CUSTOM SELECT\r\n        function setupCustomSelect(wrapperId, inputId) {\r\n            var wrapper = document.getElementById(wrapperId);\r\n            if(!wrapper) return;\r\n            var trigger = wrapper.querySelector('.custom-select-trigger');\r\n            var input = document.getElementById(inputId);\r\n            \r\n            trigger.addEventListener('click', function(e) {\r\n                document.querySelectorAll('.custom-select-wrapper').forEach(el => {\r\n                    if(el !== wrapper) el.classList.remove('open');\r\n                });\r\n                wrapper.classList.toggle('open');\r\n                e.stopPropagation();\r\n            });\r\n\r\n            \/\/ D\u00e9l\u00e9gation d'\u00e9v\u00e9nement car les options sont g\u00e9n\u00e9r\u00e9es dynamiquement\r\n            wrapper.addEventListener('click', function(e) {\r\n                if (e.target.classList.contains('custom-option')) {\r\n                    wrapper.querySelector('.custom-option.selected').classList.remove('selected');\r\n                    e.target.classList.add('selected');\r\n                    var val = e.target.getAttribute('data-value');\r\n                    var text = e.target.textContent;\r\n                    input.value = val;\r\n                    trigger.querySelector('span').textContent = text;\r\n                    wrapper.classList.remove('open');\r\n                    filterClubs(); \r\n                }\r\n            });\r\n        }\r\n        \r\n        setupCustomSelect('club-wrap-country', 'club-filter-country-val');\r\n\r\n        document.addEventListener('click', function(e) {\r\n            if(!e.target.closest('.custom-select-wrapper')) {\r\n                document.querySelectorAll('.custom-select-wrapper').forEach(el => el.classList.remove('open'));\r\n            }\r\n        });\r\n\r\n        \/\/ CALCUL DISTANCE\r\n        function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {\r\n            var R = 6371; var dLat = deg2rad(lat2-lat1); var dLon = deg2rad(lon2-lon1);\r\n            var a = Math.sin(dLat\/2) * Math.sin(dLat\/2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon\/2) * Math.sin(dLon\/2); \r\n            var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); return R * c; \r\n        }\r\n        function deg2rad(deg) { return deg * (Math.PI\/180); }\r\n\r\n        \/\/ RENDER LISTE\r\n        function renderList(clubs) {\r\n            listContainer.innerHTML = ''; countBadge.textContent = clubs.length;\r\n            if (clubs.length === 0) { listContainer.innerHTML = '<li class=\"bridge-list-empty\">' + txtNoResults + '<\/li>'; return; }\r\n            \r\n            clubs.forEach(function(club) {\r\n                var li = document.createElement('li'); li.className = 'bridge-list-item'; li.setAttribute('data-id', club.id);\r\n                \r\n                var subTitle = club.city || '';\r\n                var clubCountry = getCountryLabel(club);\r\n                if(clubCountry) subTitle += (subTitle ? ', ' : '') + clubCountry;\r\n                if(!subTitle) subTitle = club.address || 'Location N\/A';\r\n                \r\n                var distHTML = ''; if (club.distance !== undefined && club.distance < 99999) { distHTML = `<div class=\"item-distance-abs\">${club.distance.toFixed(1)} km<\/div>`; }\r\n                \r\n                \/\/ Int\u00e9gration de getAvatarHTML() ici\r\n                li.innerHTML = `<div class=\"item-avatar\">${getAvatarHTML(club)}<\/div><div class=\"item-content\"><h4 class=\"item-title\">${club.title}<\/h4><div class=\"item-subtitle\">${subTitle}<\/div><\/div>${distHTML}<div class=\"item-chevron\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"9 18 15 12 9 6\"><\/polyline><\/svg><\/div>`;\r\n                \r\n                li.addEventListener('click', function() { document.querySelectorAll('.bridge-list-item').forEach(el => el.classList.remove('active')); li.classList.add('active'); showDetails(club); });\r\n                listContainer.appendChild(li);\r\n            });\r\n        }\r\n    \r\n        \/\/ FILTRAGE\r\n        function filterClubs() {\r\n            var term = searchInput.value.toLowerCase(); \r\n            var countryInput = document.getElementById('club-filter-country-val');\r\n            var country = countryInput ? countryInput.value : 'all'; \r\n            \r\n            var filtered = allClubs.filter(function(c) {\r\n                var matchSearch = c.title.toLowerCase().includes(term) || (c.city && c.city.toLowerCase().includes(term));\r\n                var matchCountry = (country === 'all') || (c.country_code === country);\r\n                return matchSearch && matchCountry;\r\n            });\r\n            if (btnGeoloc.classList.contains('active')) { filtered.sort(function(a, b) { return a.distance - b.distance; }); }\r\n            renderList(filtered);\r\n        }\r\n\r\n        btnGeoloc.addEventListener('click', function() {\r\n            if (btnGeoloc.classList.contains('active')) { btnGeoloc.classList.remove('active'); allClubs.forEach(c => delete c.distance); filterClubs(); return; }\r\n            if (!navigator.geolocation) { alert(\"Geolocation not supported\"); return; }\r\n            btnGeoloc.classList.add('loading');\r\n            navigator.geolocation.getCurrentPosition(function(position) {\r\n                btnGeoloc.classList.remove('loading'); btnGeoloc.classList.add('active');\r\n                var userLat = position.coords.latitude; var userLng = position.coords.longitude;\r\n                allClubs.forEach(function(club) {\r\n                    if (club.lat && club.lng) club.distance = getDistanceFromLatLonInKm(userLat, userLng, parseFloat(club.lat), parseFloat(club.lng)); else club.distance = 999999;\r\n                });\r\n                filterClubs(); \r\n            }, function() { btnGeoloc.classList.remove('loading'); alert(txtLocError); });\r\n        });\r\n\r\n        \/\/ DETAILS\r\n        function showDetails(club) {\r\n            emptyState.style.display = 'none';\r\n            if(ghostHeader) ghostHeader.style.display = 'none';\r\n\r\n            var locationSubtitle = club.city || '';\r\n            var detailCountry = getCountryLabel(club);\r\n            if(detailCountry) locationSubtitle += (locationSubtitle ? ', ' : '') + detailCountry;\r\n\r\n            var iconsHtml = '';\r\n            if (club.is_label)      iconsHtml += '<i class=\"fa-light fa-circle-bookmark\" title=\"' + txtLblCert + '\" style=\"margin-right:8px; font-size:18px; color:#0055AA;\"><\/i>';\r\n            if (club.is_school)     iconsHtml += '<i class=\"fa-light fa-school\" title=\"' + txtLblSchool + '\" style=\"margin-right:8px; font-size:18px; color:#0055AA;\"><\/i>';\r\n            if (club.is_parking)    iconsHtml += '<i class=\"fa-light fa-circle-parking\" title=\"' + txtLblPark + '\" style=\"margin-right:8px; font-size:18px; color:#0055AA;\"><\/i>';\r\n            if (club.is_initiation) iconsHtml += '<i class=\"fa-light fa-chalkboard-user\" title=\"' + txtLblInit + '\" style=\"margin-right:8px; font-size:18px; color:#0055AA;\"><\/i>';\r\n            if (club.is_house)      iconsHtml += '<i class=\"fa-light fa-circle-house\" title=\"' + txtLblHouse + '\" style=\"margin-right:8px; font-size:18px; color:#0055AA;\"><\/i>';\r\n            if (club.is_youth)      iconsHtml += '<i class=\"fa-light fa-children\" title=\"' + txtLblYouth + '\" style=\"margin-right:8px; font-size:18px; color:#0055AA;\"><\/i>';\r\n\r\n            var html = '<div class=\"detail-card\">' +\r\n                \/\/ Int\u00e9gration de getAvatarHTML() avec la classe teacher-avatar-circle et utilisation de Flexbox pour l'alignement\r\n                '<div class=\"card-header\" style=\"position:relative; display:flex; align-items:center;\">' +\r\n                    getAvatarHTML(club, 'teacher-avatar-circle') +\r\n                    '<div>' +\r\n                        '<h2 class=\"card-title\" style=\"margin:0;\">' + club.title + '<\/h2>' +\r\n                        (locationSubtitle ? '<span class=\"card-subtitle\">' + locationSubtitle + '<\/span>' : '') +\r\n                        (iconsHtml ? '<div style=\"margin-top:10px;\">' + iconsHtml + '<\/div>' : '') +\r\n                    '<\/div>' +\r\n                '<\/div>' +\r\n                '<div class=\"info-grid\" style=\"margin-top:15px; border-top:1px solid #eee; padding-top:15px;\">' +\r\n                    (club.president ? '<div class=\"info-row\"><span class=\"info-label\">' + txtPresident + '<\/span><div class=\"info-value\">' + club.president + '<\/div><\/div>' : '') +\r\n                    (club.level ? '<div class=\"info-row\"><span class=\"info-label\">' + txtLevel + '<\/span><div class=\"info-value\">' + club.level + '<\/div><\/div>' : '') +\r\n                    (club.telephone ? '<div class=\"info-row\"><span class=\"info-label\">' + txtPhone + '<\/span><div class=\"info-value\"><a href=\"tel:' + club.telephone.replace(\/\\s+\/g, '') + '\" style=\"color:#0055AA; text-decoration:none;\">' + club.telephone + '<\/a><\/div><\/div>' : '') +\r\n                    (club.email ? '<div class=\"info-row\"><span class=\"info-label\">' + txtEmail + '<\/span><div class=\"info-value\"><a href=\"mailto:' + club.email + '\" style=\"color:#0055AA; text-decoration:none;\">' + club.email + '<\/a><\/div><\/div>' : '') +\r\n                    '<div class=\"info-row\"><span class=\"info-label\">' + txtAddress + '<\/span><div class=\"info-value\">' + (club.address || '-') + '<\/div><\/div>' +\r\n                '<\/div>' +\r\n                (club.description ? '<div class=\"card-bio-section about-club\"><h4>' + txtAbout + '<\/h4><div class=\"card-desc\">' + club.description + '<\/div><\/div>' : '') +\r\n                '<div class=\"card-actions\">' +\r\n                    (club.site_web ? '<a href=\"' + club.site_web + '\" target=\"_blank\" class=\"btn-primary\" style=\"background:#0055AA; border-color:#0055AA;\"><i class=\"fa-solid fa-globe\" style=\"margin-right:8px;\"><\/i> ' + txtWebsite + '<\/a>' : '') +\r\n                    '<a href=\"' + club.maps_url + '\" target=\"_blank\" class=\"btn-primary\"><i class=\"fa-solid fa-location-dot\" style=\"margin-right:8px;\"><\/i> ' + txtBtnMap + '<\/a>' +\r\n                '<\/div>' +\r\n            '<\/div>';\r\n\r\n            detailsContent.innerHTML = html;\r\n            detailsContent.style.display = 'block';\r\n            \r\n            if (window.innerWidth <= 991) { \r\n                listCol.style.display = 'none'; \r\n                detailsCol.style.display = 'block';\r\n                mobileBack.style.display = 'flex'; \r\n            }\r\n        }\r\n\r\n        mobileBack.addEventListener('click', function() {\r\n            if(window.innerWidth <= 991) {\r\n                listCol.style.display = 'flex'; \r\n                detailsCol.style.display = 'none';\r\n            }\r\n        });\r\n\r\n        \/\/ ---------------------------------------------------------\r\n        \/\/ RECUPERATION DU JSON ET INITIALISATION\r\n        \/\/ ---------------------------------------------------------\r\n        fetch(jsonUrl)\r\n            .then(function(response) { return response.json(); })\r\n            .then(function(data) {\r\n            \r\n                data.sort(function(a, b) {\r\n                    return a.title.localeCompare(b.title);\r\n                });\r\n                allClubs = data;\r\n                \r\n                \/\/ Construire le filtre pays \u00e0 partir du slug ISO (taxonomie), libell\u00e9 localis\u00e9.\r\n                var countriesMap = {};\r\n                allClubs.forEach(function(club) {\r\n                    if (club.country_code) countriesMap[club.country_code] = (countryLabels[club.country_code] || club.country_code);\r\n                });\r\n\r\n                var countriesList = Object.keys(countriesMap).map(function(code) {\r\n                    return { code: code, label: countriesMap[code] };\r\n                });\r\n                countriesList.sort(function(a, b) { return a.label.localeCompare(b.label); });\r\n\r\n                if (countriesList.length > 0) {\r\n                    countriesList.forEach(function(c) {\r\n                        var option = document.createElement('div');\r\n                        option.className = 'custom-option';\r\n                        option.setAttribute('data-value', c.code);\r\n                        option.textContent = c.label;\r\n                        countryOptions.appendChild(option);\r\n                    });\r\n                    countryWrapper.style.display = 'block';\r\n                }\r\n\r\n                \/\/ Activer l'interface\r\n                searchInput.disabled = false;\r\n                btnGeoloc.disabled = false;\r\n                searchInput.addEventListener('input', filterClubs);\r\n                \r\n                \/\/ Afficher la liste\r\n                renderList(allClubs);\r\n            })\r\n            .catch(function(error) {\r\n                console.error(\"Erreur de chargement des clubs :\", error);\r\n                listContainer.innerHTML = '<li class=\"bridge-list-empty\">Erreur de chargement des donn\u00e9es. Veuillez recharger la page.<\/li>';\r\n            });\r\n    });\r\n    <\/script>\r\n    \r\n    \n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-3aaa2cc\" id=\"register-club\" data-block-id=\"3aaa2cc\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-3aaa2cc-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-1345c67\" data-v=\"4\" data-block-id=\"1345c67\"><style>.stk-1345c67-container{background-color:var(--stk-global-color-51802, #00024e) !important;border-top-left-radius:20px !important;border-top-right-radius:20px !important;border-bottom-right-radius:20px !important;border-bottom-left-radius:20px !important;overflow:hidden !important;box-shadow:none !important;padding-top:64px !important;padding-right:64px !important;padding-bottom:64px !important;padding-left:64px !important;}.stk-1345c67-container:before{background-color:var(--stk-global-color-51802, #00024e) !important;}@media screen and (max-width: 1023px){.stk-1345c67-container{padding-top:32px !important;padding-right:32px !important;padding-bottom:32px !important;padding-left:32px !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-1345c67-container stk-hover-parent\"><div class=\"stk-block-content stk-inner-blocks stk-1345c67-inner-blocks\">\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-51547a4\" data-block-id=\"51547a4\"><style>.stk-51547a4-column{--stk-columns-spacing:0px !important;--stk-column-gap:80px !important;flex-wrap:wrap !important;--stk-flex-grow:0 !important;}@media screen and (max-width: 1023px){.stk-51547a4 .stk--block-align-51547a4{align-items:center !important;}}@media screen and (max-width: 767px){.stk-51547a4-column{--stk-column-gap:32px !important;row-gap:24px !important;}}<\/style><div class=\"stk-row stk-inner-blocks stk--block-align-51547a4 stk-block-content stk-content-align stk-51547a4-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-9db839c\" data-v=\"4\" data-block-id=\"9db839c\"><style>@media screen and (min-width: 768px) and (max-width: 1023px){.stk-9db839c {flex:var(--stk-flex-grow, 1) 1 calc(60% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-9db839c-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-9db839c-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-5d6411b\" id=\"add-your-club-span-style-color-var-stk-global-color-64234-f-37561-class-stk-highlight-here-span\" data-block-id=\"5d6411b\"><style>.stk-5d6411b {margin-bottom:40px !important;}.stk-5d6411b .stk-block-heading__text{font-size:45px !important;color:var(--stk-global-color-66386, #f2f9ff) !important;line-height:52px !important;}@media screen and (max-width: 1023px){.stk-5d6411b .stk-block-heading__text{font-size:45px !important;}}@media screen and (max-width: 767px){.stk-5d6411b {margin-bottom:40px !important;}.stk-5d6411b .stk-block-heading__text{font-size:42px !important;}}<\/style><h2 class=\"stk-block-heading__text has-text-color\">Add your club <span style=\"color: var(--stk-global-color-64234, #f37561);\" class=\"stk-highlight\">here<\/span><\/h2><\/div>\n\n\n\n<div class=\"wp-block-stackable-text stk-block-text stk-block stk-3fa7a4a\" id=\"lorem-ipsum\" data-block-id=\"3fa7a4a\"><style>.stk-3fa7a4a {margin-bottom:56px !important;}.stk-3fa7a4a .stk-block-text__text{font-size:20px !important;color:var(--stk-global-color-85642, #e1edfa) !important;}@media screen and (max-width: 1023px){.stk-3fa7a4a .stk-block-text__text{font-size:20px !important;}}<\/style><p class=\"stk-block-text__text has-text-color\">Don&#8217;t stay hidden! Add your club to our official interactive directory and help local players find you.<\/p><\/div>\n\n\n\n<div class=\"wp-block-stackable-icon-list stk-block-icon-list has-text-color stk-block stk-7c2b47f\" data-block-id=\"7c2b47f\"><style>.stk-7c2b47f .stk-block-icon-list-item__content{gap:16px !important;}.stk-7c2b47f {--stk-icon-list-row-gap:64px !important;--stk-icon-list-marker-color:var(--stk-global-color-85642, #e1edfa) !important;--stk-icon-list-icon-size:32px !important;}.stk-7c2b47f .wp-block-stackable-icon-list-item:not(:nth-last-child(-n + 1))::after{border-bottom-style:dashed !important;border-width:1px !important;border-color:#f2f9ff78 !important;}.stk-7c2b47f ul li, .stk-7c2b47f ol li, .stk-7c2b47f ul li span, .stk-7c2b47f ol li span{color:var(--stk-global-color-66386, #f2f9ff) !important;}<\/style><svg style=\"display:none\"><defs><g id=\"stk-icon-list__icon-svg-def-7c2b47f\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 190 190\"><polygon points=\"173.8,28.4 60.4,141.8 15.7,97.2 5.1,107.8 60.4,163 184.4,39 173.8,28.4\"\/><\/svg><\/g><\/defs><\/svg><ul class=\"stk-block-icon-list__ul stk-block-icon-list--column\">\n<li class=\"wp-block-stackable-icon-list-item stk-block-icon-list-item stk-block stk-cd2f566 stk-entrance\" data-block-id=\"cd2f566\"><style>.stk-cd2f566 {--entrance-transform:translateX(-64px) !important;--entrance-duration:0.75s !important;}<\/style><div class=\"stk-block-icon-list-item__content\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 288 512\" aria-hidden=\"true\" width=\"32\" height=\"32\"><path d=\"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"\/><\/svg><\/div><\/span><span class=\"stk-block-icon-list-item__text\"><strong>Get Visible:<br><\/strong>Appear instantly on our interactive world map.<\/span><\/div><\/li>\n\n\n\n<li class=\"wp-block-stackable-icon-list-item stk-block-icon-list-item stk-block stk-540593c stk-entrance\" data-block-id=\"540593c\"><style>.stk-540593c {--entrance-transform:translateX(-64px) !important;--entrance-delay:0.15s !important;--entrance-duration:0.75s !important;}<\/style><div class=\"stk-block-icon-list-item__content\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 640 512\" aria-hidden=\"true\" width=\"32\" height=\"32\"><path d=\"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"\/><\/svg><\/div><\/span><span class=\"stk-block-icon-list-item__text\"><strong>Grow your Community:<br><\/strong>Attract new players and beginners.<\/span><\/div><\/li>\n\n\n\n<li class=\"wp-block-stackable-icon-list-item stk-block-icon-list-item stk-block stk-3cce303 stk-entrance\" data-block-id=\"3cce303\"><style>.stk-3cce303 {--entrance-transform:translateX(-64px) !important;--entrance-delay:0.3s !important;--entrance-duration:0.75s !important;}<\/style><div class=\"stk-block-icon-list-item__content\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg xmlns=\"https:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\" aria-hidden=\"true\" width=\"32\" height=\"32\"><path d=\"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"\/><\/svg><\/div><\/span><span class=\"stk-block-icon-list-item__text\"><strong>Promote Events:<br><\/strong>Share your play\/tournament schedule.<\/span><\/div><\/li>\n<\/ul><\/div>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-b8a0132 stk-animate stk-animate-smooth club-form-container\" data-v=\"4\" data-block-id=\"b8a0132\" data-stk-anim-translatey-in=\"120\"><style>.stk-b8a0132 {align-self:center !important;}@media screen and (min-width: 768px) and (max-width: 1023px){.stk-b8a0132 {flex:var(--stk-flex-grow, 1) 1 calc(40% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-b8a0132-container stk--no-background stk--no-padding\"><div class=\"has-text-align-left-mobile stk-block-content stk-inner-blocks stk-b8a0132-inner-blocks\"><style id=\"wpforms-css-vars-4759-block-ba9ba22b-4421-494a-9e12-5a88399d6f3b\">\n\t\t\t\t#wpforms-4759.wpforms-block-ba9ba22b-4421-494a-9e12-5a88399d6f3b {\n\t\t\t\t--wpforms-background-color: #ffffff;\n--wpforms-field-size-input-height: 43px;\n--wpforms-field-size-input-spacing: 15px;\n--wpforms-field-size-font-size: 16px;\n--wpforms-field-size-line-height: 19px;\n--wpforms-field-size-padding-h: 14px;\n--wpforms-field-size-checkbox-size: 16px;\n--wpforms-field-size-sublabel-spacing: 5px;\n--wpforms-field-size-icon-size: 1;\n--wpforms-label-size-font-size: 16px;\n--wpforms-label-size-line-height: 19px;\n--wpforms-label-size-sublabel-font-size: 14px;\n--wpforms-label-size-sublabel-line-height: 17px;\n--wpforms-button-size-font-size: 17px;\n--wpforms-button-size-height: 41px;\n--wpforms-button-size-padding-h: 15px;\n--wpforms-button-size-margin-top: 10px;\n--wpforms-container-shadow-size-box-shadow: none;\n\t\t\t}\n\t\t\t<\/style><div class=\"wpforms-container wpforms-container-full wpforms-block wpforms-block-ba9ba22b-4421-494a-9e12-5a88399d6f3b register-form wpforms-render-modern\" id=\"wpforms-4759\"><form id=\"wpforms-form-4759\" class=\"wpforms-validate wpforms-form wpforms-ajax-form\" data-formid=\"4759\" method=\"post\" enctype=\"multipart\/form-data\" action=\"\/en\/wp-json\/wp\/v2\/pages\/3375?wpforms_form_id=4759\" data-token=\"f8cf8d15f8bac85226f73333966e3ba0\" data-token-time=\"1782337987\"><noscript class=\"wpforms-error-noscript\">Please enable JavaScript in your browser to complete this form.<\/noscript><div id=\"wpforms-error-noscript\" style=\"display: none;\">Please enable JavaScript in your browser to complete this form.<\/div><div class=\"wpforms-page-indicator progress\" data-indicator=\"progress\" data-indicator-color=\"#066aab\" data-scroll=\"1\" role=\"progressbar\" aria-valuenow=\"1\" aria-valuemin=\"1\" aria-valuemax=\"2\" tabindex=\"-1\"><span class=\"wpforms-page-indicator-page-title\" ><\/span><span class=\"wpforms-page-indicator-page-title-sep\" style=\"display:none;\"> &#8211; <\/span><span class=\"wpforms-page-indicator-steps\">Etape <span class=\"wpforms-page-indicator-steps-current\">1<\/span> sur 2<\/span><div class=\"wpforms-page-indicator-page-progress-wrap\"><div class=\"wpforms-page-indicator-page-progress\" style=\"width:50%;background-color:#066aab\"><\/div><\/div><\/div><div class=\"wpforms-field-container\"><div class=\"wpforms-page wpforms-page-1 \" data-page=\"1\"><div id=\"wpforms-4759-field_11-container\" class=\"wpforms-field wpforms-field-pagebreak\" data-field-id=\"11\"><\/div><div id=\"wpforms-4759-field_15-container\" class=\"wpforms-field wpforms-field-content\" data-field-id=\"15\"><div id=\"wpforms-4759-field_15\" class=\"wpforms-field-medium wpforms-field-row\" aria-errormessage=\"wpforms-4759-field_15-error\"><h3>Contact Person<\/h3>\n<div class=\"wpforms-field-content-display-frontend-clear\"><\/div><\/div><\/div>\t\t<div id=\"wpforms-4759-field_6-container\"\n\t\t\tclass=\"wpforms-field wpforms-field-text\"\n\t\t\tdata-field-type=\"text\"\n\t\t\tdata-field-id=\"6\"\n\t\t\t>\n\t\t\t<label class=\"wpforms-field-label\" for=\"wpforms-4759-field_6\" >Your Email club<\/label>\n\t\t\t<input type=\"text\" id=\"wpforms-4759-field_6\" class=\"wpforms-field-medium\" name=\"wpforms[fields][6]\" >\n\t\t<\/div>\n\t\t<div id=\"wpforms-4759-field_1-container\" class=\"wpforms-field wpforms-field-name\" data-field-id=\"1\"><label class=\"wpforms-field-label\" for=\"wpforms-4759-field_1\">Name<\/label><input type=\"text\" id=\"wpforms-4759-field_1\" class=\"wpforms-field-large\" name=\"wpforms[fields][1]\" placeholder=\"Your Name\" aria-errormessage=\"wpforms-4759-field_1-error\" ><\/div><div id=\"wpforms-4759-field_3-container\" class=\"wpforms-field wpforms-field-select wpforms-field-select-style-classic\" data-field-id=\"3\"><label class=\"wpforms-field-label\" for=\"wpforms-4759-field_3\">Your role in the club <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><select id=\"wpforms-4759-field_3\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][3]\" required=\"required\"><option value=\"\" class=\"placeholder\" disabled  selected='selected'>&#8212; Select an option &#8212;<\/option><option value=\"Club president\"  class=\"choice-1 depth-1\"  >Club president<\/option><option value=\"Secretary \/ Administrator\"  class=\"choice-2 depth-1\"  >Secretary \/ Administrator<\/option><option value=\"Bridge teacher\"  class=\"choice-3 depth-1\"  >Bridge teacher<\/option><option value=\"Member\"  class=\"choice-4 depth-1\"  >Member<\/option><option value=\"Other\"  class=\"choice-5 depth-1\"  >Other<\/option><\/select><\/div><div id=\"wpforms-4759-field_2-container\" class=\"wpforms-field wpforms-field-email\" data-field-id=\"2\"><label class=\"wpforms-field-label\" for=\"wpforms-4759-field_2\">Email <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"email\" id=\"wpforms-4759-field_2\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][2]\" placeholder=\"Your email address\" spellcheck=\"false\" aria-errormessage=\"wpforms-4759-field_2-error\" aria-describedby=\"wpforms-4759-field_2-description\" required><div id=\"wpforms-4759-field_2-description\" class=\"wpforms-field-description\">Used only for validation. Not displayed publicly.<\/div><\/div><div id=\"wpforms-4759-field_10-container\" class=\"wpforms-field wpforms-field-pagebreak\" data-field-id=\"10\"><div class=\"wpforms-clear wpforms-pagebreak-left\"><span class=\"wpforms-page-button-group\"><button class=\"wpforms-page-button wpforms-page-next wpforms-disabled\"\n\t\t\t\t\tdata-action=\"next\" data-page=\"1\" data-formid=\"4759\" aria-disabled=\"true\" aria-describedby=\"wpforms-error-noscript\">Next<\/button><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bridge.com\/wp-content\/plugins\/wpforms\/assets\/images\/submit-spin.svg\" class=\"wpforms-page-button-spinner\" style=\"display: none;\" width=\"26\" height=\"26\" alt=\"Loading\"><\/span><\/div><\/div><\/div><div class=\"wpforms-page wpforms-page-2 last \" data-page=\"2\" style=\"display:none;\"><div id=\"wpforms-4759-field_16-container\" class=\"wpforms-field wpforms-field-content\" data-field-id=\"16\"><div id=\"wpforms-4759-field_16\" class=\"wpforms-field-medium wpforms-field-row\" aria-errormessage=\"wpforms-4759-field_16-error\"><h3>Club information<\/h3>\n<div class=\"wpforms-field-content-display-frontend-clear\"><\/div><\/div><\/div><div id=\"wpforms-4759-field_4-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"4\"><label class=\"wpforms-field-label\" for=\"wpforms-4759-field_4\">Club name <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"text\" id=\"wpforms-4759-field_4\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][4]\" placeholder=\"e.g., Grand Slam Bridge Club\" aria-errormessage=\"wpforms-4759-field_4-error\" required><\/div><div id=\"wpforms-4759-field_5-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"5\"><label class=\"wpforms-field-label\" for=\"wpforms-4759-field_5\">President<\/label><input type=\"text\" id=\"wpforms-4759-field_5\" class=\"wpforms-field-large\" name=\"wpforms[fields][5]\" placeholder=\"Club president&#039;s name\" aria-errormessage=\"wpforms-4759-field_5-error\" ><\/div><div id=\"wpforms-4759-field_7-container\" class=\"wpforms-field wpforms-field-text\" data-field-id=\"7\"><label class=\"wpforms-field-label\" for=\"wpforms-4759-field_7\">Address <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"text\" id=\"wpforms-4759-field_7\" class=\"wpforms-field-large wpforms-field-required\" name=\"wpforms[fields][7]\" placeholder=\"123 Bridge St, London, UK\" data-autocomplete=\"1\" aria-errormessage=\"wpforms-4759-field_7-error\" aria-describedby=\"wpforms-4759-field_7-description\" required><div id=\"wpforms-4759-field_7-description\" class=\"wpforms-field-description\">A precise address allows us to place the pin on the map.<\/div><\/div><div id=\"wpforms-4759-field_8-container\" class=\"wpforms-field wpforms-field-file-upload\" data-field-id=\"8\"><label class=\"wpforms-field-label\" for=\"wpforms-4759-field_8\">Logo<\/label><div\n\t\tclass=\"wpforms-uploader \"\n\t\tdata-field-id=\"8\"\n\t\tdata-form-id=\"4759\"\n\t\tdata-input-name=\"wpforms_4759_8\"\n\t\tdata-extensions=\"jpg,jpeg,png,svg\"\n\t\tdata-max-size=\"5242880\"\n\t\tdata-max-file-number=\"1\"\n\t\tdata-post-max-size=\"134217728\"\n\t\tdata-max-parallel-uploads=\"4\"\n\t\tdata-parallel-uploads=\"true\"\n\t\tdata-file-chunk-size=\"2097152\">\n\t<div class=\"dz-message\">\n\t\t<svg  viewBox=\"0 0 640 640\" focusable=\"false\" data-icon=\"inbox\" width=\"50px\" height=\"50px\" fill=\"currentColor\" aria-hidden=\"true\">\n\t\t\t<path d=\"M352 173.3L352 384C352 401.7 337.7 416 320 416C302.3 416 288 401.7 288 384L288 173.3L246.6 214.7C234.1 227.2 213.8 227.2 201.3 214.7C188.8 202.2 188.8 181.9 201.3 169.4L297.3 73.4C309.8 60.9 330.1 60.9 342.6 73.4L438.6 169.4C451.1 181.9 451.1 202.2 438.6 214.7C426.1 227.2 405.8 227.2 393.3 214.7L352 173.3zM320 464C364.2 464 400 428.2 400 384L480 384C515.3 384 544 412.7 544 448L544 480C544 515.3 515.3 544 480 544L160 544C124.7 544 96 515.3 96 480L96 448C96 412.7 124.7 384 160 384L240 384C240 428.2 275.8 464 320 464zM464 488C477.3 488 488 477.3 488 464C488 450.7 477.3 440 464 440C450.7 440 440 450.7 440 464C440 477.3 450.7 488 464 488z\"\/>\n\t\t<\/svg>\n\n\t\t<span class=\"modern-title\">\n\t\t\t\t\t\t\tDrag &amp; Drop Files, \t\t\t\t<span>Choose Files to Upload<\/span>\n\t\t\t\t\t<\/span>\n\n\t\t\t<\/div>\n<\/div>\n\n<input\n\t\ttype=\"text\"\n\t\tautocomplete=\"off\"\n\t\treadonly\n\t\tclass=\"dropzone-input\"\n\t\tstyle=\"position:absolute!important;clip:rect(0,0,0,0)!important;height:1px!important;width:1px!important;border:0!important;overflow:hidden!important;padding:0!important;margin:0!important;\"\n\t\tid=\"wpforms-4759-field_8\"\n\t\tname=\"wpforms_4759_8\" \t\tvalue=\"\">\n<\/div><div id=\"wpforms-4759-field_12-container\" class=\"wpforms-field wpforms-field-pagebreak\" data-field-id=\"12\"><\/div><\/div><script>\n\t\t\t\t( function() {\n\t\t\t\t\tconst style = document.createElement( 'style' );\n\t\t\t\t\tstyle.appendChild( document.createTextNode( '#wpforms-4759-field_6-container { position: absolute !important; overflow: hidden !important; display: inline !important; height: 1px !important; width: 1px !important; z-index: -1000 !important; padding: 0 !important; } #wpforms-4759-field_6-container input { visibility: hidden; } #wpforms-conversational-form-page #wpforms-4759-field_6-container label { counter-increment: none; }' ) );\n\t\t\t\t\tdocument.head.appendChild( style );\n\t\t\t\t\tdocument.currentScript?.remove();\n\t\t\t\t} )();\n\t\t\t<\/script><\/div><!-- .wpforms-field-container --><div class=\"wpforms-submit-container\" style=\"display:none;\"><input type=\"hidden\" name=\"wpforms[id]\" value=\"4759\"><input type=\"hidden\" name=\"page_title\" value=\"\"><input type=\"hidden\" name=\"page_url\" value=\"https:\/\/bridge.com\/en\/wp-json\/wp\/v2\/pages\/3375\"><input type=\"hidden\" name=\"url_referer\" value=\"\"><button type=\"submit\" name=\"wpforms[submit]\" id=\"wpforms-submit-4759\" class=\"wpforms-submit register-form-btn\" data-alt-text=\"Sending...\" data-submit-text=\"Submit\" aria-live=\"assertive\" value=\"wpforms-submit\">Submit<\/button><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bridge.com\/wp-content\/plugins\/wpforms\/assets\/images\/submit-spin.svg\" class=\"wpforms-submit-spinner\" style=\"display: none;\" width=\"26\" height=\"26\" alt=\"Loading\"><\/div><\/form><\/div>  <!-- .wpforms-container -->\n\n\n<div class=\"wp-block-stackable-image stk-block-image has-text-align-right has-text-align-left-mobile stk-block stk-fce9e9c\" data-block-id=\"fce9e9c\"><style>.stk-fce9e9c {right:-64px !important;bottom:-80px !important;position:absolute !important;z-index:-1 !important;}.stk-fce9e9c .stk-img-wrapper{width:100% !important;height:280px !important;}.stk-fce9e9c .stk-img-wrapper img{object-position:100% 50% !important;object-fit:contain !important;}@media screen and (max-width: 1023px){.stk-fce9e9c {align-items:center !important;display:flex !important;}.stk-fce9e9c .stk-img-wrapper{height:160px !important;}}@media screen and (max-width: 767px){.stk-fce9e9c .stk-img-wrapper img{object-position:0% 50% !important;}}<\/style><figure><span class=\"stk-img-wrapper stk-image--shape-stretch\"><img alt=\"\" loading=\"lazy\" decoding=\"async\" class=\"stk-img wp-image-2997\" src=\"https:\/\/bridge.com\/wp-content\/uploads\/2025\/09\/banner_img.png\" width=\"752\" height=\"486\" srcset=\"https:\/\/bridge.com\/wp-content\/uploads\/2025\/09\/banner_img.png 752w, https:\/\/bridge.com\/wp-content\/uploads\/2025\/09\/banner_img-300x194.png 300w, https:\/\/bridge.com\/wp-content\/uploads\/2025\/09\/banner_img-624x403.png 624w\" sizes=\"auto, (max-width: 752px) 100vw, 752px\" \/><\/span><\/figure><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Find bridge clubs Find bridge clubs near you or anywhere in the world. You can also add your club if it\u2019s not listed and help&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"class_list":["post-3375","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/bridge.com\/en\/wp-json\/wp\/v2\/pages\/3375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bridge.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bridge.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bridge.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bridge.com\/en\/wp-json\/wp\/v2\/comments?post=3375"}],"version-history":[{"count":0,"href":"https:\/\/bridge.com\/en\/wp-json\/wp\/v2\/pages\/3375\/revisions"}],"wp:attachment":[{"href":"https:\/\/bridge.com\/en\/wp-json\/wp\/v2\/media?parent=3375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}