{"id":32145,"date":"2021-07-07T11:09:57","date_gmt":"2021-07-07T09:09:57","guid":{"rendered":"https:\/\/slateblue-mongoose-502077.hostingersite.com\/agents-and-distributors\/"},"modified":"2026-06-12T16:07:21","modified_gmt":"2026-06-12T14:07:21","slug":"agents-and-distributors","status":"publish","type":"page","link":"https:\/\/www.alessandrobini.com\/en\/agents-and-distributors\/","title":{"rendered":"Agents and distributors"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"32145\" class=\"elementor elementor-32145 elementor-11833\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0221fc7 section-agenti elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0221fc7\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-24f2555\" data-id=\"24f2555\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-16f0914 h1-divider elementor-widget elementor-widget-heading\" data-id=\"16f0914\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Agents and distributors<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2d7ae57 elementor-widget elementor-widget-text-editor\" data-id=\"2d7ae57\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Contact the agent nearest you.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-6b89ece e-grid e-con-boxed e-con e-parent\" data-id=\"6b89ece\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-8f6c1b0 e-con-full e-flex e-con e-child\" data-id=\"8f6c1b0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-58a41e3 elementor-widget elementor-widget-image\" data-id=\"58a41e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"160\" height=\"30\" src=\"https:\/\/www.alessandrobini.com\/wp-content\/uploads\/2021\/04\/tdi-logo.svg\" class=\"attachment-large size-large wp-image-32149\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6873eb0 elementor-align-center text-link elementor-widget elementor-widget-button\" data-id=\"6873eb0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"#map\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-chevron-down\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">View the map<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d405090 e-con-full e-flex e-con e-child\" data-id=\"d405090\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-962f080 elementor-widget elementor-widget-image\" data-id=\"962f080\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1\" height=\"1\" src=\"https:\/\/www.alessandrobini.com\/wp-content\/uploads\/2021\/04\/ab-tdm.svg\" class=\"attachment-large size-large wp-image-4210\" alt=\"ab tdm\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0705c7a elementor-align-center text-link elementor-widget elementor-widget-button\" data-id=\"0705c7a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"mailto:commerciale-ab@alessandrobini.com\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"9.003\" viewBox=\"0 0 16 9.003\"><path d=\"M12.624 8.534l-.757.757 3.21 3.21H1.125v1.07h13.952l-3.21 3.21.757.757 4.5-4.5z\" transform=\"translate(-1.125 -8.534)\"><\/path><\/svg>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Contact<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-55a968b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"55a968b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7e154b8\" data-id=\"7e154b8\" data-element_type=\"column\" data-e-type=\"column\" id=\"map\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7a26d03 elementor-widget elementor-widget-shortcode\" data-id=\"7a26d03\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <style>\n        :root {\n            --main-color: #302350;\n            --main-color-light: rgba(48, 35, 80, 0.05);\n            --border-color: #e2e8f0;\n            --input-border: #d2d6dc;\n        }\n\n        .dist-wrapper {\n            display: flex;\n            flex-direction: row;\n            width: 100%;\n            height: 650px;\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n            border: 1px solid var(--border-color);\n            background: #ffffff;\n        }\n\n        .dist-sidebar {\n            width: 38%;\n            height: 100%;\n            display: flex;\n            flex-direction: column;\n            border-right: 1px solid var(--border-color);\n            background: #ffffff;\n            box-sizing: border-box;\n        }\n\n        .dist-filters {\n            padding: 20px;\n            background: #ffffff;\n            border-bottom: 1px solid var(--border-color);\n        }\n\n        .dist-filters-grid {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: 10px;\n        }\n\n        .dist-input, .dist-select {\n            width: 100%;\n            padding: 10px 12px;\n            border: 1px solid var(--input-border);\n            border-radius: 0px; \n            font-size: 13px;\n            color: #1a1a1a;\n            background-color: #ffffff;\n            box-sizing: border-box;\n            transition: border-color 0.2s ease;\n            -webkit-appearance: none; \n            appearance: none;\n        }\n\n        .dist-select {\n            background-image: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M1 3l4 4 4-4' stroke='%234a5568' stroke-width='1' fill='none'\/><\/svg>\");\n            background-repeat: no-repeat;\n            background-position: right 14px center;\n            padding-right: 30px;\n        }\n\n        .dist-input:focus, .dist-select:focus {\n            border-color: var(--main-color);\n            outline: none;\n        }\n\n        .dist-list {\n            flex: 1;\n            overflow-y: auto;\n            position: relative;\n        }\n\n        .dist-continent-title {\n            font-size: 20px;\n            font-weight: 800;\n            color: var(--main-color);\n            padding: 20px 20px 10px 20px;\n            margin: 0;\n            background: #ffffff;\n            border-bottom: 2px solid var(--main-color-light);\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            position: sticky;\n            top: 0;\n            z-index: 10;\n        }\n\n        .dist-item {\n            padding: 18px 20px;\n            border-bottom: 1px solid #f0f2f5;\n            cursor: pointer;\n            transition: background 0.2s, border-left 0.2s;\n            border-left: 3px solid transparent;\n        }\n\n        .dist-item:hover, .dist-item.active {\n            background: var(--main-color-light);\n            border-left-color: var(--main-color);\n        }\n\n        .dist-item-region {\n            font-size: 10px;\n            font-weight: 700;\n            color: var(--main-color);\n            text-transform: uppercase;\n            letter-spacing: 1px;\n            margin-bottom: 4px;\n        }\n\n        .dist-item-name {\n            font-size: 14px;\n            font-weight: 600;\n            color: #1a1a1a;\n            margin: 0 0 4px 0;\n        }\n\n        .dist-item-email {\n            font-size: 12px;\n            color: #4a5568;\n            margin: 0;\n            word-break: break-all;\n        }\n\n        .dist-item-email a {\n            color: #4a5568;\n            text-decoration: none;\n        }\n\n        .dist-item-email a:hover {\n            color: var(--main-color);\n            text-decoration: underline;\n        }\n\n        .dist-item-provinces {\n            font-size: 11px;\n            color: #718096;\n            margin-top: 8px;\n            line-height: 1.4;\n            border-top: 1px dashed #e2e8f0;\n            padding-top: 6px;\n        }\n\n        .dist-map-container {\n            width: 62%;\n            height: 100%;\n            position: relative;\n            background-color: #f8f9fa;\n        }\n\n        .dist-map {\n            width: 100%;\n            height: 100%;\n        }\n\n        .custom-map-tooltip {\n            background: #ffffff !important;\n            border: 1px solid #1a1a1a !important; \n            border-radius: 0px !important; \n            padding: 10px 14px !important;\n            box-shadow: 0 4px 12px rgba(0,0,0,0.08) !important;\n            color: #1a1a1a !important;\n            font-family: sans-serif !important;\n        }\n\n        @media (max-width: 900px) {\n            .dist-wrapper {\n                flex-direction: column-reverse;\n                height: auto;\n            }\n            .dist-sidebar {\n                width: 100%;\n                height: 450px;\n            }\n            .dist-map-container {\n                width: 100%;\n                height: 350px;\n            }\n        }\n    <\/style>\n\n    <div class=\"dist-wrapper\">\n        <!-- Sidebar -->\n        <div class=\"dist-sidebar\">\n            <div class=\"dist-filters\">\n                <div class=\"dist-filters-grid\">\n                    <input type=\"text\" id=\"dist-search\" class=\"dist-input\" placeholder=\"Search distributor, country or region...\">\n                    <select id=\"dist-filter-continent\" class=\"dist-select\">\n                        <option value=\"\">All continents<\/option>\n                    <\/select>\n                    <select id=\"dist-filter-country\" class=\"dist-select\">\n                        <option value=\"\">All countries<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n            <div class=\"dist-list\" id=\"dist-list-container\">\n                <!-- Popolato via JS -->\n            <\/div>\n        <\/div>\n        \n        <!-- Mappa -->\n        <div class=\"dist-map-container\">\n            <div id=\"dist-map-canvas\" class=\"dist-map\"><\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        document.addEventListener(\"DOMContentLoaded\", function() {\n            const data = [{\"id\":1,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"toscana\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"TUSCANY\",\"nome\":\"GIUDICI GIAMPAOLO\",\"email\":\"giudicigianpaolo@gmail.com\",\"province\":[\"Lucca\",\"Grosseto\",\"Massa Carrara\",\"Livorno\",\"Pisa\"]},{\"id\":2,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"toscana\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"TUSCANY\",\"nome\":\"MONTELATICI FILIPPO\",\"email\":\"filippo.montelatici@tiscali.it\",\"province\":[\"Firenze\",\"Prato\",\"Arezzo\",\"Siena\",\"Pistoia\"]},{\"id\":3,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"lombardia\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"LOMBARDY\",\"nome\":\"ANNALISA SPINA\",\"email\":\"spina.annalisa@gmail.com\",\"province\":[]},{\"id\":4,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"piemonte\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"PIEDMONT\",\"nome\":\"BRUNO MAIOCCHI\",\"email\":\"b.maiocchi2@gmail.com\",\"province\":[]},{\"id\":5,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"veneto\",\"friuli venezia giulia\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"VENETO, FRIULI VENEZIA GIULIA\",\"nome\":\"MICHELE FRANCHI (UPHOLSTERY, SHOWROOM)\",\"email\":\"franchimichele@icloud.com\",\"province\":[]},{\"id\":6,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"veneto\",\"friuli venezia giulia\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"VENETO, FRIULI VENEZIA GIULIA\",\"nome\":\"EFFETIGEST (INDUSTRIES)\",\"email\":\"matteo.baldan@anicaleather.com\",\"province\":[]},{\"id\":7,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"trentino-alto adige\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"TRENTINO ALTO ADIGE\",\"nome\":\"EFFETIGEST\",\"email\":\"matteo.baldan@anicaleather.com\",\"province\":[]},{\"id\":8,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"lazio\",\"umbria\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"LAZIO, UMBRIA\",\"nome\":\"PIERPAOLO ANGELUCCI\",\"email\":\"pierpaolo.angelucci@alice.it\",\"province\":[]},{\"id\":9,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"sicilia\",\"calabria\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"SICILY, CALABRIA\",\"nome\":\"ANDREA SALES\",\"email\":\"andreasales0104@gmail.com\",\"province\":[]},{\"id\":10,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"sardegna\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"SARDINIA\",\"nome\":\"GF SOLUTIONS\",\"email\":\"effeseppe@gmail.com\",\"province\":[]},{\"id\":11,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"puglia\",\"molise\",\"basilicata\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"PUGLIA, MOLISE, BASILICATA\",\"nome\":\"GIOSAFATTE HAZAN\",\"email\":\"hazangiosi@yahoo.it\",\"province\":[]},{\"id\":12,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"campania\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"CAMPANIA\",\"nome\":\"FRANCESCA CALANDRA\",\"email\":\"agenziacalandra@gmail.com\",\"province\":[]},{\"id\":13,\"continente\":\"EUROPE\",\"nazione\":[\"ITALY\"],\"nazione_mappa\":[\"italy\"],\"regioni_mappa\":[\"marche\",\"abruzzo\"],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"MARCHE, ABRUZZO\",\"nome\":\"CAMILLO GRANATA\",\"email\":\"camillogranata@gmail.com\",\"province\":[]},{\"id\":15,\"continente\":\"EUROPE\",\"nazione\":[\"FRANCE\"],\"nazione_mappa\":[\"france\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[\"75\",\"77\",\"78\",\"91\",\"92\",\"93\",\"94\",\"95\"],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\\u00ceLE DE FRANCE\",\"nome\":\"ELISABETH DAUMET\",\"email\":\"contact@elisabethdaumet.com\",\"province\":[]},{\"id\":16,\"continente\":\"EUROPE\",\"nazione\":[\"FRANCE\"],\"nazione_mappa\":[\"france\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[\"01\",\"03\",\"07\",\"15\",\"21\",\"26\",\"38\",\"39\",\"42\",\"43\",\"63\",\"69\",\"71\",\"73\",\"74\"],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"RH\\u00d4NE-ALPES (Departments)\",\"nome\":\"MICHEL PERRIN\",\"email\":\"agentperrin@gmail.com\",\"province\":[\"01\",\"03\",\"07\",\"15\",\"21\",\"26\",\"38\",\"39\",\"42\",\"43\",\"63\",\"69\",\"71\",\"73\",\"74\"]},{\"id\":18,\"continente\":\"EUROPE\",\"nazione\":[\"U.K.\"],\"nazione_mappa\":[\"united kingdom\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[\"norfolk\",\"suffolk\",\"cambridgeshire\",\"essex\",\"hertfordshire\",\"greater london\"],\"province_canada\":[],\"regione_testo\":\"NORTH OF THE THAMES (Norfolk, Suffolk, Cambridgeshire, Essex, Hertfordshire, Greater London)\",\"nome\":\"WODEN & WYLD LTD\",\"email\":\"mike@wodenandwyld.com\",\"province\":[\"NR\",\"IP\",\"CB\",\"CO\",\"SG\",\"CM\",\"RM\",\"SS\",\"WSW\",\"WC\",\"EC\",\"N\",\"E\"]},{\"id\":29,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"CANADA\"],\"nazione_mappa\":[\"canada\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[\"alberta\",\"saskatchewan\"],\"regione_testo\":\"ALBERTA, SASKATCHEWAN\",\"nome\":\"DWA INTERIORS\",\"email\":\"showroom@dwainteriors.com\",\"province\":[]},{\"id\":25,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"USA\"],\"nazione_mappa\":[\"united states of america\"],\"regioni_mappa\":[],\"stati_mappa\":[\"illinois\",\"wisconsin\",\"missouri\"],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"ILLINOIS, WISCONSIN, MISSOURI\",\"nome\":\"RIPLEY WORTHY\",\"email\":\"ripley@rworthycollections.com\",\"province\":[]},{\"id\":27,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"USA\"],\"nazione_mappa\":[\"united states of america\"],\"regioni_mappa\":[],\"stati_mappa\":[\"colorado\",\"idaho\",\"montana\",\"new mexico\",\"utah\",\"wyoming\"],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"COLORADO, IDAHO, MONTANA, NEW MEXICO, UTAH, WYOMING\",\"nome\":\"SHANAHAN COLLECTION\",\"email\":\"tim@shanahancollection.com\",\"province\":[]},{\"id\":28,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"USA\"],\"nazione_mappa\":[\"united states of america\"],\"regioni_mappa\":[],\"stati_mappa\":[\"district of columbia\",\"dc\",\"washington dc\"],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"WASHINGTON D.C.\",\"nome\":\"MICHAEL CLEARY\",\"email\":\"todd@michaelclearyllc.com\",\"province\":[]},{\"id\":37,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"USA\"],\"nazione_mappa\":[\"united states of america\"],\"regioni_mappa\":[],\"stati_mappa\":[\"california\",\"hawaii\",\"arizona\",\"nevada\",\"idaho\"],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"CALIFORNIA, HAWAII, ARIZONA, NEVADA, IDAHO\",\"nome\":\"DESIGN ALLIANCE LA\",\"email\":\"frontdesk@designalliancela.com\",\"province\":[]},{\"id\":14,\"continente\":\"EUROPE\",\"nazione\":[\"SWEDEN\",\"DENMARK\"],\"nazione_mappa\":[\"sweden\",\"denmark\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"MIA NORDANG\\u00c5RD\",\"email\":\"nordangardmia@gmail.com\",\"province\":[]},{\"id\":17,\"continente\":\"EUROPE\",\"nazione\":[\"NETHERLANDS\"],\"nazione_mappa\":[\"netherlands\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"PRADES INTERIOR CONCEPTS\",\"email\":\"caroline@prades.nl\",\"province\":[]},{\"id\":19,\"continente\":\"EUROPE\",\"nazione\":[\"SWITZERLAND\"],\"nazione_mappa\":[\"switzerland\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"DITEX INTERIEUR SARL\",\"email\":\"info@ditexint\\u00e8rieur.ch\",\"province\":[]},{\"id\":20,\"continente\":\"EUROPE\",\"nazione\":[\"FINLAND\"],\"nazione_mappa\":[\"finland\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"TVILLI INTERIOR\",\"email\":\"piki.ogard@tvilli.com\",\"province\":[]},{\"id\":21,\"continente\":\"EUROPE\",\"nazione\":[\"BELGIUM\",\"LUXEMBOURG\"],\"nazione_mappa\":[\"belgium\",\"luxembourg\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"ZESTE AGENCY\",\"email\":\"info@zesteagency.be\",\"province\":[]},{\"id\":22,\"continente\":\"EUROPE\",\"nazione\":[\"POLAND\"],\"nazione_mappa\":[\"poland\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"DECODORE\",\"email\":\"sales@decodore.pl\",\"province\":[]},{\"id\":23,\"continente\":\"EUROPE\",\"nazione\":[\"UKRAINE\"],\"nazione_mappa\":[\"ukraine\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"VITALIY SLAVINSKYY\",\"email\":\"vitaliyslavinskyy@gmail.com\",\"province\":[]},{\"id\":24,\"continente\":\"EUROPE\",\"nazione\":[\"GREECE\",\"CYPRUS\"],\"nazione_mappa\":[\"greece\",\"cyprus\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"KALOTARANIS\",\"email\":\"info@kalotaranis.gr\",\"province\":[]},{\"id\":26,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"MEXICO\"],\"nazione_mappa\":[\"mexico\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"ARTELL\",\"email\":\"hola@artell.com.mx\",\"province\":[]},{\"id\":30,\"continente\":\"ASIA\",\"nazione\":[\"CHINA\"],\"nazione_mappa\":[\"china\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"PEOPLE'S REPUBLIC OF CHINA\",\"nome\":\"SILVER XIAO\",\"email\":\"xiaowen2315@163.com\",\"province\":[]},{\"id\":31,\"continente\":\"ASIA\",\"nazione\":[\"RUSSIA\"],\"nazione_mappa\":[\"russia\",\"russian federation\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"TKACH OOO\",\"email\":\"tkach78@bk.ru\",\"province\":[]},{\"id\":32,\"continente\":\"ASIA\",\"nazione\":[\"KAZAKHSTAN\"],\"nazione_mappa\":[\"kazakhstan\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"DECORATION CLUB\",\"email\":\"mebel@decoration-club.com\",\"province\":[]},{\"id\":33,\"continente\":\"ASIA\",\"nazione\":[\"SAUDI ARABIA\",\"KUWAIT\",\"BAHRAIN\",\"QATAR\",\"OMAN\",\"LEBANON\",\"SYRIA\",\"IRAQ\",\"JORDAN\",\"EGYPT\"],\"nazione_mappa\":[\"saudi arabia\",\"kuwait\",\"bahrain\",\"qatar\",\"oman\",\"lebanon\",\"syria\",\"iraq\",\"jordan\",\"egypt\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"ATELIER AWADA\",\"email\":\"omar@atelierawada.com\",\"province\":[]},{\"id\":34,\"continente\":\"ASIA\",\"nazione\":[\"UNITED ARAB EMIRATES\"],\"nazione_mappa\":[\"united arab emirates\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"ATELIER AWADA\",\"email\":\"omar@atelierawada.com\",\"province\":[]},{\"id\":35,\"continente\":\"OCEANIA\",\"nazione\":[\"AUSTRALIA\",\"NEW ZEALAND\"],\"nazione_mappa\":[\"australia\",\"new zealand\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"GRANT DORMAN\",\"email\":\"sales@grantdorman.com.au\",\"province\":[]},{\"id\":36,\"continente\":\"ASIA\",\"nazione\":[\"SOUTH KOREA\"],\"nazione_mappa\":[\"south korea\",\"korea\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"REPUBLIC OF KOREA\",\"nome\":\"GEODECO\",\"email\":\"info@geodeco.info\",\"province\":[]},{\"id\":38,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"USA\"],\"nazione_mappa\":[\"united states of america\"],\"regioni_mappa\":[],\"stati_mappa\":[\"washington\",\"oregon\",\"alaska\"],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"WASHINGTON STATE, OREGON, ALASKA\",\"nome\":\"MICHELE BAYLE\",\"email\":\"michele@bayleandco.com\",\"province\":[]},{\"id\":39,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"USA\"],\"nazione_mappa\":[\"united states of america\"],\"regioni_mappa\":[],\"stati_mappa\":[\"ohio\",\"kentucky\",\"indiana\",\"michigan\"],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"OHIO, KENTUCKY, INDIANA, MICHIGAN\",\"nome\":\"DECIOCCHIO\",\"email\":\"rocco@decioccioshowroom.com\",\"province\":[]},{\"id\":40,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"USA\"],\"nazione_mappa\":[\"united states of america\"],\"regioni_mappa\":[],\"stati_mappa\":[\"new york\",\"new jersey\",\"connecticut\"],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"NEW YORK, NEW JERSEY, CONNECTICUT\",\"nome\":\"ARNITEX\",\"email\":\"sales@arnitex.com\",\"province\":[]},{\"id\":41,\"continente\":\"EUROPE\",\"nazione\":[\"U.K.\"],\"nazione_mappa\":[\"united kingdom\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[\"greater london\",\"surrey\",\"kent\",\"sussex\",\"east sussex\",\"west sussex\",\"hampshire\",\"berkshire\"],\"province_canada\":[],\"regione_testo\":\"LONDON SOUTH\",\"nome\":\"DECOR DA COSTA\",\"email\":\"dalila@decordacosta.com\",\"province\":[]},{\"id\":42,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"CANADA\"],\"nazione_mappa\":[\"canada\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[\"ontario\",\"quebec\",\"british columbia\",\"alberta\",\"manitoba\",\"saskatchewan\",\"nova scotia\",\"new brunswick\",\"newfoundland and labrador\",\"prince edward island\"],\"regione_testo\":\"CANADA\",\"nome\":\"THEO\",\"email\":\"salshoufi@theodecor.com\",\"province\":[]},{\"id\":43,\"continente\":\"EUROPE\",\"nazione\":[\"PORTUGAL\"],\"nazione_mappa\":[\"portugal\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"TRAMAS E TEXTURAS\",\"email\":\"encomendas@tramasetexturas.com\",\"province\":[]},{\"id\":44,\"continente\":\"SOUTH AMERICA\",\"nazione\":[\"BRAZIL\"],\"nazione_mappa\":[\"brazil\"],\"regioni_mappa\":[],\"stati_mappa\":[],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"\",\"nome\":\"COMERCIO E DECORACAO\",\"email\":\"bruno@bftecidos.com.br\",\"province\":[]},{\"id\":45,\"continente\":\"NORTH AMERICA\",\"nazione\":[\"USA\"],\"nazione_mappa\":[\"united states of america\"],\"regioni_mappa\":[],\"stati_mappa\":[\"florida\"],\"regioni_francia\":[],\"regioni_uk\":[],\"province_canada\":[],\"regione_testo\":\"FLORIDA (CONTRACT PROJECTS)\",\"nome\":\"JEFFREY MICHAELS (CONTRACT PROJECTS)\",\"email\":\"Samples@jeffreymichaels.com\",\"province\":[]}];\n            const lang = \"en\"; \n            \n            let worldLayer = null;\n            let subLayers = {\n                italy: null,\n                usa: null,\n                france: null,\n                uk: null,\n                canada: null\n            };\n\n            const searchInput = document.getElementById('dist-search');\n            const continentSelect = document.getElementById('dist-filter-continent');\n            const countrySelect = document.getElementById('dist-filter-country');\n            const listContainer = document.getElementById('dist-list-container');\n\n            const uiTranslations = {\n                'en': {\n                    'provinces': 'Departments \/ Provinces \/ Counties',\n                    'no_results': 'No distributors found.',\n                    'distributors_count': 'distributors available (click to view)',\n                    'all_countries': 'All countries'\n                }\n            };\n\n            const t = uiTranslations['en'];\n\n            \/\/ Normalizzazione\n            function normalizeText(text) {\n                if (!text) return \"\";\n                return text.toString()\n                    .toLowerCase()\n                    .normalize(\"NFD\")\n                    .replace(\/[\\u0300-\\u036f]\/g, \"\")\n                    .replace(\/[^a-z0-9\\s-]\/g, \"\")\n                    .trim();\n            }\n\n            function normalizeCountryName(name) {\n                let n = normalizeText(name);\n                if (n === \"united states of america\" || n === \"united states\" || n === \"usa\") return \"united states of america\";\n                if (n === \"russian federation\" || n === \"russia\") return \"russia\";\n                if (n === \"republic of korea\" || n === \"south korea\" || n === \"korea\") return \"south korea\";\n                if (n === \"united kingdom\" || n === \"uk\" || n === \"great britain\") return \"united kingdom\";\n                if (n === \"the netherlands\" || n === \"olanda\" || n === \"netherlands\") return \"netherlands\";\n                if (n === \"svizzera\" || n === \"switzerland\") return \"switzerland\";\n                if (n === \"francia\" || n === \"france\") return \"france\";\n                if (n === \"svezia\" || n === \"sweden\") return \"sweden\";\n                if (n === \"danimarca\" || n === \"denmark\") return \"denmark\";\n                if (n === \"finlandia\" || n === \"finland\") return \"finland\";\n                if (n === \"belgio\" || n === \"belgium\") return \"belgium\";\n                if (n === \"lussemburgo\" || n === \"luxembourg\") return \"luxembourg\";\n                if (n === \"polonia\" || n === \"poland\") return \"poland\";\n                if (n === \"ucraina\" || n === \"ukraine\") return \"ukraine\";\n                if (n === \"grecia\" || n === \"greece\") return \"greece\";\n                if (n === \"cipro\" || n === \"cyprus\") return \"cyprus\";\n                if (n === \"messico\" || n === \"mexico\") return \"mexico\";\n                if (n === \"canada\") return \"canada\";\n                if (n === \"cina\" || n === \"china\") return \"china\";\n                if (n === \"kazakistan\" || n === \"kazakhstan\") return \"kazakhstan\";\n                if (n === \"emirati arabi uniti\" || n === \"united arab emirates\") return \"united arab emirates\";\n                if (n === \"australia\") return \"australia\";\n                if (n === \"nuova zelanda\" || n === \"new zealand\") return \"new zealand\";\n                if (n === \"italia\" || n === \"italy\") return \"italy\";\n                return n;\n            }\n\n            function getFeatureName(f) {\n                if (!f || !f.properties) return \"\";\n                return f.properties.reg_name || f.properties.name || f.properties.nom || f.properties.county || f.properties.ADMIN || \"\";\n            }\n\n            \/\/ Popola Select Continenti\n            const continentiSet = new Set();\n            data.forEach(item => { if (item.continente) continentiSet.add(item.continente); });\n            Array.from(continentiSet).sort().forEach(cont => {\n                let opt = document.createElement('option');\n                opt.value = cont; opt.textContent = cont;\n                continentSelect.appendChild(opt);\n            });\n\n            \/\/ Popola Select Nazioni gestendo l'array nazione\n            function populateCountries(selectedContinent) {\n                countrySelect.innerHTML = `<option value=\"\">${t.all_countries}<\/option>`;\n                const nazioniSet = new Set();\n                data.forEach(item => {\n                    if (!selectedContinent || item.continente === selectedContinent) {\n                        if (item.nazione && Array.isArray(item.nazione)) {\n                            item.nazione.forEach(naz => nazioniSet.add(naz));\n                        }\n                    }\n                });\n                Array.from(nazioniSet).sort().forEach(naz => {\n                    let opt = document.createElement('option');\n                    opt.value = naz; opt.textContent = naz;\n                    countrySelect.appendChild(opt);\n                });\n            }\n            populateCountries(\"\");\n\n            \/\/ Rendering lista contatti con raggruppamento\n            function renderList(filteredData) {\n                listContainer.innerHTML = '';\n                if(filteredData.length === 0) {\n                    listContainer.innerHTML = `<div style=\"padding: 24px; color: #718096; font-size: 13px; text-align: center;\">${t.no_results}<\/div>`;\n                    return;\n                }\n\n                const grouped = {};\n                filteredData.forEach(item => {\n                    if (!grouped[item.continente]) {\n                        grouped[item.continente] = [];\n                    }\n                    grouped[item.continente].push(item);\n                });\n\n                Object.keys(grouped).sort().forEach(continent => {\n                    const contTitle = document.createElement('h2');\n                    contTitle.className = 'dist-continent-title';\n                    contTitle.textContent = continent;\n                    listContainer.appendChild(contTitle);\n\n                    grouped[continent].forEach(item => {\n                        const itemEl = document.createElement('div');\n                        itemEl.className = 'dist-item';\n                        itemEl.setAttribute('data-id', item.id);\n                        \n                        let subRegionHtml = item.regione_testo ? ` &bull; ${item.regione_testo}` : '';\n                        let nazioniStr = item.nazione.join(', '); \/\/ Unisce le nazioni con virgola (se sono di pi\u00f9)\n                        let provinceHtml = item.province.length ? `<div class=\"dist-item-provinces\"><strong>${t.provinces}:<\/strong> ${item.province.join(', ')}<\/div>` : '';\n                        let emailHtml = item.email ? `<p class=\"dist-item-email\"><strong>Email:<\/strong> <a href=\"mailto:${item.email}\">${item.email}<\/a><\/p>` : '';\n                        \n                        itemEl.innerHTML = `\n                            <div class=\"dist-item-region\">${nazioniStr}${subRegionHtml}<\/div>\n                            <h3 class=\"dist-item-name\">${item.nome}<\/h3>\n                            ${emailHtml}\n                            ${provinceHtml}\n                        `;\n\n                        itemEl.addEventListener('mouseenter', () => highlightDistributor(item));\n                        itemEl.addEventListener('mouseleave', () => resetHighlight());\n                        listContainer.appendChild(itemEl);\n                    });\n                });\n            }\n\n            function filterData() {\n                const searchText = searchInput.value.toLowerCase();\n                const selectedContinent = continentSelect.value;\n                const selectedCountry = countrySelect.value;\n\n                const filtered = data.filter(item => {\n                    const matchesSearch = item.nome.toLowerCase().includes(searchText) || \n                                          item.nazione.some(n => n.toLowerCase().includes(searchText)) || \n                                          (item.regione_testo && item.regione_testo.toLowerCase().includes(searchText)) ||\n                                          item.email.toLowerCase().includes(searchText) ||\n                                          item.province.some(p => p.toLowerCase().includes(searchText));\n\n                    const matchesContinent = !selectedContinent || item.continente === selectedContinent;\n                    const matchesCountry = !selectedCountry || item.nazione.includes(selectedCountry);\n\n                    return matchesSearch && matchesContinent && matchesCountry;\n                });\n\n                renderList(filtered);\n                updateMapStyles(); \n            }\n\n            continentSelect.addEventListener('change', function() {\n                populateCountries(this.value);\n                filterData();\n            });\n            countrySelect.addEventListener('change', filterData);\n            searchInput.addEventListener('input', filterData);\n\n            renderList(data);\n\n            var map = L.map('dist-map-canvas', {\n                zoomSnap: 0.5,\n                zoomControl: true,\n                attributionControl: false\n            }).setView([20.00, -10.00], 2.0);\n\n            map.createPane('subnationalPane');\n            map.getPane('subnationalPane').style.zIndex = 450;\n            map.getPane('subnationalPane').style.pointerEvents = 'none';\n\n            \/\/ --- GEOJSON ---\n            \n            fetch('https:\/\/cdn.jsdelivr.net\/gh\/datasets\/geo-countries@master\/data\/countries.geojson')\n                .then(r => r.ok ? r.json() : Promise.reject())\n                .then(worldGeo => {\n                    worldLayer = L.geoJSON(worldGeo, {\n                        style: styleWorld,\n                        onEachFeature: onEachWorldFeature\n                    }).addTo(map);\n                }).catch(() => console.warn(\"Mappa mondo non disponibile.\"));\n\n            fetch('https:\/\/cdn.jsdelivr.net\/gh\/openpolis\/geojson-italy@master\/geojson\/limits_IT_regions.geojson')\n                .then(r => r.ok ? r.json() : Promise.reject())\n                .then(italyGeo => {\n                    subLayers.italy = L.geoJSON(italyGeo, {\n                        pane: 'subnationalPane',\n                        style: (f) => styleSubFeature(f, 'italy'),\n                        onEachFeature: (f, l) => onEachSubFeature(f, l, 'italy')\n                    }).addTo(map);\n                }).catch(() => console.warn(\"Layer Italia non disponibile.\"));\n\n            fetch('https:\/\/cdn.jsdelivr.net\/gh\/PublicaMundi\/MappingAPI@master\/data\/geojson\/us-states.json')\n                .then(r => r.ok ? r.json() : Promise.reject())\n                .then(usaGeo => {\n                    subLayers.usa = L.geoJSON(usaGeo, {\n                        pane: 'subnationalPane',\n                        style: (f) => styleSubFeature(f, 'usa'),\n                        onEachFeature: (f, l) => onEachSubFeature(f, l, 'usa')\n                    }).addTo(map);\n                }).catch(() => console.warn(\"Layer USA non disponibile.\"));\n\n            fetch('https:\/\/cdn.jsdelivr.net\/gh\/gregoiredavid\/france-geojson@master\/departements-version-simplifiee.geojson')\n                .then(r => r.ok ? r.json() : Promise.reject())\n                .then(franceGeo => {\n                    subLayers.france = L.geoJSON(franceGeo, {\n                        pane: 'subnationalPane',\n                        style: (f) => styleSubFeature(f, 'france'),\n                        onEachFeature: (f, l) => onEachSubFeature(f, l, 'france')\n                    }).addTo(map);\n                }).catch(() => console.warn(\"Layer Francia non disponibile.\"));\n\n            fetch('https:\/\/raw.githubusercontent.com\/evansd\/uk-ceremonial-counties\/master\/uk-ceremonial-counties.geojson')\n                .then(r => r.ok ? r.json() : Promise.reject())\n                .then(ukGeo => {\n                    subLayers.uk = L.geoJSON(ukGeo, {\n                        pane: 'subnationalPane',\n                        style: (f) => styleSubFeature(f, 'uk'),\n                        onEachFeature: (f, l) => onEachSubFeature(f, l, 'uk')\n                    }).addTo(map);\n                }).catch(() => console.warn(\"Layer Regno Unito non disponibile.\"));\n\n            fetch('https:\/\/raw.githubusercontent.com\/codeforamerica\/click_that_hood\/master\/public\/data\/canada.geojson')\n                .then(r => r.ok ? r.json() : Promise.reject())\n                .then(canadaGeo => {\n                    subLayers.canada = L.geoJSON(canadaGeo, {\n                        pane: 'subnationalPane',\n                        style: (f) => styleSubFeature(f, 'canada'),\n                        onEachFeature: (f, l) => onEachSubFeature(f, l, 'canada')\n                    }).addTo(map);\n                }).catch(() => console.warn(\"Layer Canada non disponibile.\"));\n\n\n            \/\/ --- MOTORE ---\n\n            function isFeatureMatch(f, item) {\n                if (!f || !f.properties || !item) return false;\n                \n                if (item.nazione.includes(\"ITALY\")) {\n                    const regName = normalizeText(f.properties.reg_name);\n                    return item.regioni_mappa.map(x => normalizeText(x)).includes(regName);\n                }\n                if (item.nazione.includes(\"USA\")) {\n                    const stateName = normalizeText(f.properties.name);\n                    return item.stati_mappa.map(x => normalizeText(x)).includes(stateName);\n                }\n                if (item.nazione.includes(\"FRANCE\")) {\n                    const code = normalizeText(f.properties.code);\n                    const name = normalizeText(f.properties.nom);\n                    return item.regioni_francia.some(x => normalizeText(x) === code || normalizeText(x) === name);\n                }\n                if (item.nazione.includes(\"U.K.\")) {\n                    const countyName = normalizeText(getFeatureName(f));\n                    return item.regioni_uk.map(x => normalizeText(x)).includes(countyName);\n                }\n                if (item.nazione.includes(\"CANADA\")) {\n                    const provName = normalizeText(f.properties.name);\n                    return item.province_canada.map(x => normalizeText(x)).includes(provName);\n                }\n                return false;\n            }\n\n            function styleWorld(feature) {\n                const countryNorm = normalizeCountryName(getFeatureName(feature));\n                const subnationalCountries = ['italy', 'united states of america', 'france', 'united kingdom', 'canada'];\n                const isSubnational = subnationalCountries.includes(countryNorm);\n\n                const hasDist = !isSubnational && data.some(d => d.nazione_mappa.map(n => normalizeCountryName(n)).includes(countryNorm));\n                const selectedCountryVal = countrySelect.value;\n                const isSelected = selectedCountryVal && data.some(d => d.nazione.includes(selectedCountryVal) && d.nazione_mappa.map(n => normalizeCountryName(n)).includes(countryNorm));\n\n                return {\n                    fillColor: hasDist ? '#302350' : '#e2e8f0',\n                    weight: isSelected ? 1.5 : 0.6,\n                    opacity: 1,\n                    color: isSelected ? '#302350' : '#ffffff',\n                    fillOpacity: isSelected ? (isSubnational ? 0 : 0.65) : (hasDist ? 0.35 : 0.5)\n                };\n            }\n\n            function styleSubFeature(feature, layerKey) {\n                const nazioneMap = {\n                    'italy': 'ITALY',\n                    'usa': 'USA',\n                    'france': 'FRANCE',\n                    'uk': 'U.K.',\n                    'canada': 'CANADA'\n                };\n                const nazioneNome = nazioneMap[layerKey];\n                const hasDist = data.some(d => d.nazione.includes(nazioneNome) && isFeatureMatch(feature, d));\n                const isNazioneSelected = countrySelect.value === nazioneNome;\n\n                return {\n                    fillColor: hasDist ? '#302350' : '#e2e8f0',\n                    weight: 0.6,\n                    opacity: 1,\n                    color: '#ffffff',\n                    fillOpacity: hasDist ? (isNazioneSelected ? 0.65 : 0.35) : 0\n                };\n            }\n\n            function onEachWorldFeature(feature, layer) {\n                const countryNorm = normalizeCountryName(getFeatureName(feature));\n                const distributors = data.filter(d => d.nazione_mappa.map(n => normalizeCountryName(n)).includes(countryNorm));\n                \n                if (distributors.length > 0) {\n                    bindEvents(layer, getFeatureName(feature), distributors, null, countryNorm);\n                }\n            }\n\n            function onEachSubFeature(feature, layer, layerKey) {\n                const nazioneMap = {\n                    'italy': 'ITALY',\n                    'usa': 'USA',\n                    'france': 'FRANCE',\n                    'uk': 'U.K.',\n                    'canada': 'CANADA'\n                };\n                const nazioneNome = nazioneMap[layerKey];\n                const distributors = data.filter(d => d.nazione.includes(nazioneNome) && isFeatureMatch(feature, d));\n\n                layer.options.interactive = true;\n\n                if (distributors.length > 0) {\n                    let label = getFeatureName(feature);\n                    if (layerKey === 'france' && feature.properties.code) {\n                        label = `${feature.properties.code} - ${label}`;\n                    }\n                    bindEvents(layer, label, distributors, nazioneNome);\n                }\n            }\n\n            function bindEvents(layer, label, distributors, belongsToNazione = null, clickedNorm = null) {\n                layer.on({\n                    mouseover: function(e) {\n                        e.target.setStyle({ fillOpacity: 0.7, weight: 1.2, color: '#302350' });\n\n                        let tooltipText = `<strong style=\"color:#302350; text-transform:uppercase; font-size:11px; letter-spacing:0.5px;\">${label}<\/strong><hr style=\"margin:6px 0; border:0; border-top:1px solid #e2e8f0;\">`;\n                        \n                        if (distributors.length > 4) {\n                            tooltipText += `<span style=\"font-size:12px; color:#4a5568;\"><b>${distributors.length}<\/b> ${t.distributors_count}<\/span>`;\n                        } else {\n                            distributors.forEach(d => {\n                                tooltipText += `<b style=\"font-size:12px; color:#1a1a1a;\">${d.nome}<\/b><br><span style=\"font-size:10px; color:#4a5568;\">${d.email}<\/span><br>`;\n                            });\n                        }\n\n                        e.target.bindTooltip(tooltipText, {\n                            sticky: true, direction: 'auto', className: 'custom-map-tooltip'\n                        }).openTooltip();\n\n                        highlightListItems(distributors.map(d => d.id));\n                    },\n                    mouseout: function(e) {\n                        updateMapStyles();\n                        resetListHighlights();\n                    },\n                    click: function(e) {\n                        if (belongsToNazione) {\n                            const found = data.find(d => d.nazione.includes(belongsToNazione));\n                            if (found) {\n                                continentSelect.value = found.continente;\n                                populateCountries(found.continente);\n                                countrySelect.value = belongsToNazione;\n                            }\n                        } else {\n                            const found = distributors[0];\n                            if (found) {\n                                continentSelect.value = found.continente;\n                                populateCountries(found.continente);\n                                \n                                let match = found.nazione[0];\n                                if (clickedNorm) {\n                                    const exactMatch = found.nazione.find(n => normalizeCountryName(n) === clickedNorm);\n                                    if (exactMatch) match = exactMatch;\n                                }\n                                countrySelect.value = match;\n                            }\n                        }\n                        filterData();\n                    }\n                });\n            }\n\n            function highlightDistributor(item) {\n                resetHighlight();\n\n                const subLayerKeys = {\n                    'ITALY': 'italy',\n                    'USA': 'usa',\n                    'FRANCE': 'france',\n                    'U.K.': 'uk',\n                    'CANADA': 'canada'\n                };\n\n                let hasSubLayer = false;\n                item.nazione.forEach(naz => {\n                    const targetKey = subLayerKeys[naz];\n                    if (targetKey && subLayers[targetKey]) {\n                        subLayers[targetKey].eachLayer(layer => {\n                            if (isFeatureMatch(layer.feature, item)) {\n                                layer.setStyle({ fillOpacity: 0.7, weight: 1.2, color: '#302350' });\n                                hasSubLayer = true;\n                            }\n                        });\n                    }\n                });\n\n                if (worldLayer) {\n                    const subnationalCountries = ['italy', 'united states of america', 'france', 'united kingdom', 'canada'];\n                    const normList = item.nazione_mappa.map(n => normalizeCountryName(n));\n                    worldLayer.eachLayer(layer => {\n                        const countryNorm = normalizeCountryName(getFeatureName(layer));\n                        if (normList.includes(countryNorm) && !subnationalCountries.includes(countryNorm)) {\n                            layer.setStyle({ fillOpacity: 0.7, weight: 1.2, color: '#302350' });\n                        }\n                    });\n                }\n            }\n\n            function updateMapStyles() {\n                if (worldLayer) worldLayer.eachLayer(l => worldLayer.resetStyle(l));\n                Object.values(subLayers).forEach(layer => {\n                    if (layer) layer.eachLayer(l => layer.resetStyle(l));\n                });\n            }\n\n            function resetHighlight() {\n                updateMapStyles();\n            }\n\n            function highlightListItems(ids) {\n                document.querySelectorAll('.dist-item').forEach(item => {\n                    const itemId = parseInt(item.getAttribute('data-id'));\n                    if (ids.includes(itemId)) {\n                        item.classList.add('active');\n                        item.scrollIntoView({ behavior: 'smooth', block: 'center' });\n                    } else {\n                        item.classList.remove('active');\n                    }\n                });\n            }\n\n            function resetListHighlights() {\n                document.querySelectorAll('.dist-item').forEach(item => {\n                    item.classList.remove('active');\n                });\n            }\n        });\n    <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Agents and distributors Contact the agent nearest you. View the map Contact<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-32145","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.alessandrobini.com\/en\/wp-json\/wp\/v2\/pages\/32145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alessandrobini.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.alessandrobini.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.alessandrobini.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alessandrobini.com\/en\/wp-json\/wp\/v2\/comments?post=32145"}],"version-history":[{"count":16,"href":"https:\/\/www.alessandrobini.com\/en\/wp-json\/wp\/v2\/pages\/32145\/revisions"}],"predecessor-version":[{"id":130147,"href":"https:\/\/www.alessandrobini.com\/en\/wp-json\/wp\/v2\/pages\/32145\/revisions\/130147"}],"wp:attachment":[{"href":"https:\/\/www.alessandrobini.com\/en\/wp-json\/wp\/v2\/media?parent=32145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}