{"id":4925,"date":"2026-01-21T22:10:45","date_gmt":"2026-01-21T21:10:45","guid":{"rendered":"https:\/\/www.penagrup.com\/contact\/commercials\/"},"modified":"2026-06-10T23:34:24","modified_gmt":"2026-06-10T21:34:24","slug":"offices","status":"publish","type":"page","link":"https:\/\/www.penagrup.com\/en\/contact\/offices\/","title":{"rendered":"Commercials"},"content":{"rendered":"\r\n\t\t<div  class=\"block-b2b1da64-1c69-4fdc-8240-20d0fee899fd areoi-element app-hero__group\">\r\n\t\t\t\r\n\t\t\t\n\r\n\t\t<div  class=\"block-64796509-f467-49b6-8de3-18cef2cf397d areoi-element container\">\r\n\t\t\t\r\n\t\t\t\n\r\n\t\t<nav  \r\n\t\t\t \r\n\t\t\tclass=\"block-ff6d78cc-36f4-47fa-b027-1cb8b2a5df55 breadcrumb\" \r\n\t\t\taria-label=\"breadcrumb\"\r\n\t\t\tstyle=\"--bs-breadcrumb-divider: '\/';\"\r\n\t\t>\r\n\t\t\t<ol class=\"breadcrumb\">\r\n\t\t\t\t<li class=\"breadcrumb-item\"><a href=\"https:\/\/www.penagrup.com\/en\/\">Home<\/a><\/li><li class=\"breadcrumb-item\"><a href=\"https:\/\/www.penagrup.com\/en\/contact\/\">Contact<\/a><\/li><li class=\"breadcrumb-item active\" aria-current=\"page\">Commercials<\/li>\r\n\t\t\t<\/ol>\r\n\t\t<\/nav>\r\n\t\n\n\n<h1 class=\"wp-block-heading app-hero__title\">Commercials<\/h1>\n\n\r\n\t\t\t \r\n\t\t<\/div>\r\n\t\n\r\n\t\t\t \r\n\t\t<\/div>\r\n\t\r\n\t\t<div  class=\"block-63f738e3-3ce0-4bce-b07f-b99cda761b45 areoi-element container\">\r\n\t\t\t\r\n\t\t\t\n\r\n\t\t<div  class=\"block-2dbb5158-11e4-4124-97cb-fd54ed4b9c5d row areoi-element\">\r\n\t\t\t\r\n\r\n\t\t\t\n\r\n\t\t<div  class=\"block-716077a5-017a-4599-9535-75eafa403334 col areoi-element\">\r\n\t\t\t\r\n\t\t\t\n\n    <style>\n        .map-general {\n            width: 100%;\n        }\n\n        .map-layout {\n            display: flex;\n            gap: 30px;\n        }\n\n        .map-canvas {\n            flex: 1;\n            order: 1;\n        }\n\n        .map-sidebar {\n            width: 320px;\n            max-height: 600px;\n            overflow: auto;\n            scroll-behavior: smooth;\n            order: 2;\n        }\n\n        input#map-search {\n            position: sticky;\n            top: 0;\n        }\n\n        @media (max-width: 767px) {\n\n            .map-layout {\n                flex-direction: column;\n            }\n\n            .map-canvas {\n                order: 2;\n\n            }\n\n            .map-sidebar {\n                order: 1;\n                width: 100%;\n                max-height: 440px;\n            }\n\n            #map {\n                height: 400px !important;\n            }\n\n            .map-canvas .gm-style-iw.gm-style-iw-c {\n                max-width: 300px !important;\n            }\n\n            .map-canvas .gm-style-iw.gm-style-iw-c .gm-style-iw-chr button {\n                height: 35px !important;\n            }\n\n            .map-canvas .card-popup {\n                width: 300px !important;\n            }\n\n            .card-header-popup {\n                padding: 16px 8px 0px 16px !important;\n                gap: 8px !important;\n            }\n\n            .card-header-popup .avatar-country {\n                width: 110px !important;\n            }\n\n            .card-header-popup .avatar-country img {\n                width: 110px !important;\n                height: auto !important;\n            }\n\n            .map-canvas .card-popup h3 {\n                font-size: 20px;\n                line-height: 1.3;\n                margin-bottom: 0;\n            }\n\n            .card-footer {\n                padding: 6px 16px 10px;\n                gap: 4px;\n            }\n\n            .map-canvas .card-popup p {\n                font-size: 14px;\n                line-height: 1.2;\n            }\n\n            .card-icon img {\n                width: 14px;\n                height: 14px;\n            }\n\n        }\n\n        #map {\n            width: 100%;\n            height: 600px;\n        }\n\n        #map-search {\n            width: 100%;\n            padding: 10px;\n            border: 1px solid #ddd;\n            margin-bottom: 15px;\n        }\n\n        .contact-item {\n            padding: 12px;\n            border-bottom: 1px solid #eee;\n            cursor: pointer;\n            transition: background .2s;\n        }\n\n        .contact-item small {\n            font-size: 12px;\n        }\n\n        .contact-item:hover {\n            background: #f5f5f5;\n        }\n\n        .contact-countries {\n            font-size: 11px;\n            color: #666;\n            margin-top: 3px;\n        }\n\n        \/* Override Google Maps InfoWindow styles *\/\n        .gm-style-iw-ch {\n            display: none !important;\n        }\n        .gm-style .gm-style-iw-c {\n            background: linear-gradient(180.21deg, #E2E3E5 36.05%, #D7D8DC 99.82%);\n            padding: 0 !important;\n            border-radius: 12px !important;\n            max-width: 372px !important;\n            box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2) !important;\n        }\n\n        .gm-style .gm-style-iw-d {\n            overflow: hidden !important;\n            max-width: 372px !important;\n        }\n\n        .gm-style-iw-tc {\n            display: none !important;\n        }\n\n        .gm-style .gm-style-iw-chr button {\n            position: absolute !important;\n            right: -3px !important;\n            top: -4px !important;\n            z-index: 10 !important;\n        }\n\n        .map-canvas .card-popup {\n            border: none;\n            width: 372px;\n            min-height: 180px;\n            border-radius: 0;\n            overflow: hidden;\n            position: relative;\n        }\n\n        .card-header-popup {\n            padding: 20px 5px 0px 24px;\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            border-bottom: 0;\n            align-items: flex-start;\n        }\n\n        .card-header-popup .avatar-country {\n            width: 165px;\n        }\n        .card-header-popup .avatar-country img:hover {\n            transform: scale(1);\n        }\n\n        .card-info {\n            flex: 1;\n        }\n\n        .card-popup h3 {\n            margin: 0 0 4px;\n            font-size: 24px;\n            font-weight: 500;\n            color: #202020;\n        }\n\n        .card-footer {\n            background: linear-gradient(90deg, #AF0B3A 0%, #49051800 100%);\n            border-top: 0;\n            padding: 8px 24px 12px;\n            display: flex;\n            flex-direction: column;\n            gap: 6px;\n            position: absolute;\n            bottom: 0;\n            width: 100%;\n        }\n\n        .card-popup p {\n            margin: 0;\n            font-size: 16px;\n            line-height: 1.2;\n            display: flex;\n            align-items: center;\n            gap: 8px;\n            color: white;\n            font-family: 'Barlow', sans-serif;\n        }\n\n        .card-icon img {\n            width: 16px;\n            height: 16px;\n            border-radius: 0;\n            filter: brightness(0) invert(1);\n        }\n    <\/style>\n\n    <div class=\"map-general\">\n\n        <div class=\"map-layout\">\n\n            <div class=\"map-canvas\">\n                <div id=\"map\"><\/div>\n            <\/div>\n\n            <div class=\"map-sidebar\">\n\n                <input type=\"text\" id=\"map-search\" placeholder=\"Search contact or country\">\n\n                <div id=\"contact-list\"><\/div>\n\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n    <script src=\"https:\/\/unpkg.com\/@googlemaps\/markerclusterer\/dist\/index.min.js\"><\/script>\n\n    <script>\n        let map, infoWindow;\n        let activeISO = null;\n        let clearTimer = null;\n        const CLEAR_DELAY = 120;\n        let pulseInterval = null;\n        const CONTACTS = {\"alberto-andrade-0\":{\"name\":\"Alberto Andrade\",\"email\":\"andrade@penagrup.com\",\"phone\":\"52-442-219 9373\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Alberto-Andrade-scaled.png\"},\"javier-arcega-1\":{\"name\":\"Javier \\u00c1rcega\",\"email\":\"j.arcega@penagrup.com\",\"phone\":\"629 328 513\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Javier-Arcega-scaled.png\"},\"eric-ros-2\":{\"name\":\"Eric Ros\",\"email\":\"e.ros@penagrup.com\",\"phone\":\"669 486 435\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Eric-Ros-scaled.png\"},\"mikel-del-castano-3\":{\"name\":\"Mikel del Casta\\u00f1o\",\"email\":\"penanorte@penagrup.com\",\"phone\":\"630 926 235\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/mikel.png\"},\"cristina-arias-4\":{\"name\":\"Cristina Arias\",\"email\":\"cristina@penagrup.com\",\"phone\":\"696 650 616\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Cristina-Arias-scaled.png\"},\"anselmo-franco-5\":{\"name\":\"Anselmo Franco\",\"email\":\"a.franco@penagrup.com\",\"phone\":\"+34 645 758 899\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/franco-1.png\"},\"thomas-hilzendeger-6\":{\"name\":\"Thomas Hilzendeger\",\"email\":\"t.hilzendeger@penagrup.com\",\"phone\":\"+34 682 119 682\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Thomas-Hilzendeger-scaled.png\"},\"laurent-corcelle-7\":{\"name\":\"Laurent Corcelle\",\"email\":\"lcorcelle@alptechsolutions.eu\",\"phone\":\"+33 6 12 19 24 80 \\\/ +41 78 616 10 80\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Laurent.png\"},\"francesca-longo-8\":{\"name\":\"Francesca Longo\",\"email\":\"f.longo@penagrup.com\",\"phone\":\"+39 350 168 2535\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Francesca-Longo-scaled.png\"},\"rafal-machnikowski-9\":{\"name\":\"Rafal Machnikowski\",\"email\":\"r.machnikowski@penagrup.com\",\"phone\":\"+48 530 640 747\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Rafal-Machnikowski_-scaled.png\"},\"eloi-pena-10\":{\"name\":\"Eloi Pena\",\"email\":\"e.pena@penagrup.com\",\"phone\":\"+34 687 599 744\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Eloi-Pena-scaled.png\"},\"cesar-carballo-11\":{\"name\":\"Cesar Carballo\",\"email\":\"c.carballo@penagrup.com\",\"phone\":\"+506 8535 8454\",\"img\":\"https:\\\/\\\/www.penagrup.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/Cesar-Carballo1.png\"},\"adrian-leandro-megaplastic-com-srl-12\":{\"name\":\"Adrian + Leandro Megaplastic.com SRL\",\"email\":\"adrian@megaplastic.com<br\\\/>leandro@megaplastic.com\",\"phone\":\"+54 9 11 5470-5228\",\"img\":false}};\n        const ISO_TO_CONTACT = {\"MEX\":[\"alberto-andrade-0\"],\"ECU\":[\"alberto-andrade-0\"],\"ESP\":[\"javier-arcega-1\",\"eric-ros-2\",\"mikel-del-castano-3\",\"cristina-arias-4\"],\"PRT\":[\"anselmo-franco-5\"],\"USA\":[\"thomas-hilzendeger-6\"],\"DEU\":[\"thomas-hilzendeger-6\"],\"AUT\":[\"thomas-hilzendeger-6\"],\"AUS\":[\"thomas-hilzendeger-6\"],\"FRA\":[\"laurent-corcelle-7\"],\"BEL\":[\"laurent-corcelle-7\"],\"NLD\":[\"laurent-corcelle-7\"],\"CHE\":[\"laurent-corcelle-7\"],\"LUX\":[\"laurent-corcelle-7\"],\"ITA\":[\"francesca-longo-8\"],\"POL\":[\"rafal-machnikowski-9\"],\"CZE\":[\"rafal-machnikowski-9\"],\"SVK\":[\"rafal-machnikowski-9\"],\"HUN\":[\"rafal-machnikowski-9\"],\"ROU\":[\"rafal-machnikowski-9\"],\"BGR\":[\"rafal-machnikowski-9\"],\"EST\":[\"rafal-machnikowski-9\"],\"LVA\":[\"rafal-machnikowski-9\"],\"LTU\":[\"rafal-machnikowski-9\"],\"GBR\":[\"eloi-pena-10\"],\"IRL\":[\"eloi-pena-10\"],\"CRI\":[\"cesar-carballo-11\"],\"GTM\":[\"cesar-carballo-11\"],\"DOM\":[\"cesar-carballo-11\"],\"ARG\":[\"adrian-leandro-megaplastic-com-srl-12\"],\"PRY\":[\"adrian-leandro-megaplastic-com-srl-12\"],\"COL\":[\"adrian-leandro-megaplastic-com-srl-12\"],\"CHL\":[\"adrian-leandro-megaplastic-com-srl-12\"],\"URY\":[\"adrian-leandro-megaplastic-com-srl-12\"]};\n        const LOCATIONS = [{\"lat\":19.432600000000001,\"lng\":-99.133200000000002,\"iso\":\"MEX\",\"provincia\":\"\",\"contact\":\"alberto-andrade-0\"},{\"lat\":-0.1807,\"lng\":-78.467799999999997,\"iso\":\"ECU\",\"provincia\":\"\",\"contact\":\"alberto-andrade-0\"},{\"lat\":41.3887,\"lng\":2.1589,\"iso\":\"ESP\",\"provincia\":\"Barcelona\",\"contact\":\"javier-arcega-1\"},{\"lat\":41.9831,\"lng\":2.8249,\"iso\":\"ESP\",\"provincia\":\"Girona\",\"contact\":\"javier-arcega-1\"},{\"lat\":41.6175,\"lng\":0.62,\"iso\":\"ESP\",\"provincia\":\"Lleida\",\"contact\":\"javier-arcega-1\"},{\"lat\":41.655999999999999,\"lng\":-0.87729999999999997,\"iso\":\"ESP\",\"provincia\":\"Zaragoza\",\"contact\":\"javier-arcega-1\"},{\"lat\":42.136099999999999,\"lng\":-0.40870000000000001,\"iso\":\"ESP\",\"provincia\":\"Huesca\",\"contact\":\"javier-arcega-1\"},{\"lat\":41.118600000000001,\"lng\":1.2453000000000001,\"iso\":\"ESP\",\"provincia\":\"Tarragona\",\"contact\":\"eric-ros-2\"},{\"lat\":39.986400000000003,\"lng\":-0.051299999999999998,\"iso\":\"ESP\",\"provincia\":\"Castell\\u00f3\",\"contact\":\"eric-ros-2\"},{\"lat\":39.4739,\"lng\":-0.37959999999999999,\"iso\":\"ESP\",\"provincia\":\"Val\\u00e8ncia\",\"contact\":\"eric-ros-2\"},{\"lat\":40.344000000000001,\"lng\":-1.1069,\"iso\":\"ESP\",\"provincia\":\"Teruel\",\"contact\":\"eric-ros-2\"},{\"lat\":40.070300000000003,\"lng\":-2.1374,\"iso\":\"ESP\",\"provincia\":\"Cuenca\",\"contact\":\"eric-ros-2\"},{\"lat\":39.569299999999998,\"lng\":2.6501999999999999,\"iso\":\"ESP\",\"provincia\":\"Illes Balears\",\"contact\":\"eric-ros-2\"},{\"lat\":42.4666,\"lng\":-2.4500000000000002,\"iso\":\"ESP\",\"provincia\":\"La Rioja\",\"contact\":\"mikel-del-castano-3\"},{\"lat\":42.8125,\"lng\":-1.6456999999999999,\"iso\":\"ESP\",\"provincia\":\"Navarra\",\"contact\":\"mikel-del-castano-3\"},{\"lat\":43.262700000000002,\"lng\":-2.9251999999999998,\"iso\":\"ESP\",\"provincia\":\"Bizkaia\",\"contact\":\"mikel-del-castano-3\"},{\"lat\":43.360199999999999,\"lng\":-5.8446999999999996,\"iso\":\"ESP\",\"provincia\":\"Asturias\",\"contact\":\"mikel-del-castano-3\"},{\"lat\":43.462299999999999,\"lng\":-3.8098999999999998,\"iso\":\"ESP\",\"provincia\":\"Cantabria\",\"contact\":\"mikel-del-castano-3\"},{\"lat\":42.8782,\"lng\":-8.5448000000000004,\"iso\":\"ESP\",\"provincia\":\"A Coru\\u00f1a\",\"contact\":\"mikel-del-castano-3\"},{\"lat\":41.6554,\"lng\":-4.7234999999999996,\"iso\":\"ESP\",\"provincia\":\"Valladolid\",\"contact\":\"mikel-del-castano-3\"},{\"lat\":40.416499999999999,\"lng\":-3.7025000000000001,\"iso\":\"ESP\",\"provincia\":\"Madrid\",\"contact\":\"cristina-arias-4\"},{\"lat\":40.632199999999997,\"lng\":-3.1669,\"iso\":\"ESP\",\"provincia\":\"Guadalajara\",\"contact\":\"cristina-arias-4\"},{\"lat\":38.843800000000002,\"lng\":-9.1714000000000002,\"iso\":\"PRT\",\"provincia\":\"\",\"contact\":\"anselmo-franco-5\"},{\"lat\":40.712800000000001,\"lng\":-74.006,\"iso\":\"USA\",\"provincia\":\"\",\"contact\":\"thomas-hilzendeger-6\"},{\"lat\":52.520000000000003,\"lng\":13.404999999999999,\"iso\":\"DEU\",\"provincia\":\"\",\"contact\":\"thomas-hilzendeger-6\"},{\"lat\":48.208199999999998,\"lng\":16.373799999999999,\"iso\":\"AUT\",\"provincia\":\"\",\"contact\":\"thomas-hilzendeger-6\"},{\"lat\":-33.8688,\"lng\":151.20930000000001,\"iso\":\"AUS\",\"provincia\":\"\",\"contact\":\"thomas-hilzendeger-6\"},{\"lat\":48.8566,\"lng\":2.3521999999999998,\"iso\":\"FRA\",\"provincia\":\"\",\"contact\":\"laurent-corcelle-7\"},{\"lat\":50.850299999999997,\"lng\":4.3517000000000001,\"iso\":\"BEL\",\"provincia\":\"\",\"contact\":\"laurent-corcelle-7\"},{\"lat\":49.708399999999997,\"lng\":6.0674999999999999,\"iso\":\"LUX\",\"provincia\":\"\",\"contact\":\"laurent-corcelle-7\"},{\"lat\":52.367600000000003,\"lng\":4.9040999999999997,\"iso\":\"NLD\",\"provincia\":\"\",\"contact\":\"laurent-corcelle-7\"},{\"lat\":46.2044,\"lng\":6.1432000000000002,\"iso\":\"CHE\",\"provincia\":\"\",\"contact\":\"laurent-corcelle-7\"},{\"lat\":41.902799999999999,\"lng\":12.4964,\"iso\":\"ITA\",\"provincia\":\"\",\"contact\":\"francesca-longo-8\"},{\"lat\":52.229700000000001,\"lng\":21.0122,\"iso\":\"POL\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":50.075499999999998,\"lng\":14.437799999999999,\"iso\":\"CZE\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":48.148600000000002,\"lng\":17.107700000000001,\"iso\":\"SVK\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":47.497900000000001,\"lng\":19.040199999999999,\"iso\":\"HUN\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":44.4268,\"lng\":26.102499999999999,\"iso\":\"ROU\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":42.697699999999998,\"lng\":23.321899999999999,\"iso\":\"BGR\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":59.436999999999998,\"lng\":24.753599999999999,\"iso\":\"EST\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":56.949599999999997,\"lng\":24.1052,\"iso\":\"LVA\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":54.687199999999997,\"lng\":25.279699999999998,\"iso\":\"LTU\",\"provincia\":\"\",\"contact\":\"rafal-machnikowski-9\"},{\"lat\":51.507399999999997,\"lng\":-0.1278,\"iso\":\"GBR\",\"provincia\":\"\",\"contact\":\"eloi-pena-10\"},{\"lat\":53.349800000000002,\"lng\":-6.2603,\"iso\":\"IRL\",\"provincia\":\"\",\"contact\":\"eloi-pena-10\"},{\"lat\":9.9281000000000006,\"lng\":-84.090699999999998,\"iso\":\"CRI\",\"provincia\":\"\",\"contact\":\"cesar-carballo-11\"},{\"lat\":14.6349,\"lng\":-90.506900000000002,\"iso\":\"GTM\",\"provincia\":\"\",\"contact\":\"cesar-carballo-11\"},{\"lat\":18.4861,\"lng\":-69.931200000000004,\"iso\":\"DOM\",\"provincia\":\"\",\"contact\":\"cesar-carballo-11\"},{\"lat\":-34.603700000000003,\"lng\":-58.381599999999999,\"iso\":\"ARG\",\"provincia\":\"\",\"contact\":\"adrian-leandro-megaplastic-com-srl-12\"},{\"lat\":-25.2637,\"lng\":-57.575899999999997,\"iso\":\"PRY\",\"provincia\":\"\",\"contact\":\"adrian-leandro-megaplastic-com-srl-12\"},{\"lat\":4.7110000000000003,\"lng\":-74.072100000000006,\"iso\":\"COL\",\"provincia\":\"\",\"contact\":\"adrian-leandro-megaplastic-com-srl-12\"},{\"lat\":-33.448900000000002,\"lng\":-70.669300000000007,\"iso\":\"CHL\",\"provincia\":\"\",\"contact\":\"adrian-leandro-megaplastic-com-srl-12\"},{\"lat\":-34.9011,\"lng\":-56.164499999999997,\"iso\":\"URY\",\"provincia\":\"\",\"contact\":\"adrian-leandro-megaplastic-com-srl-12\"}];\n        let sidebarScrolling = false;\n        let markers = [];\n\n        \/* ISO \u2192 Country names *\/\n\n        const ISO_COUNTRIES = {\n            ESP: \"Espa\u00f1a\",\n            USA: \"Estados Unidos\",\n            DEU: \"Alemania\",\n            FRA: \"Francia\",\n            PRT: \"Portugal\",\n            ITA: \"Italia\",\n            GBR: \"Reino Unido\",\n            CAN: \"Canad\u00e1\",\n            MEX: \"M\u00e9xico\",\n            BRA: \"Brasil\",\n            ARG: \"Argentina\",\n            CHL: \"Chile\",\n            PER: \"Per\u00fa\",\n            COL: \"Colombia\",\n            ECU: \"Ecuador\",\n            IRL: \"Irlanda\",\n            PRY: \"Paraguay\",\n            URY: \"Uruguay\",\n            POL: \"Polonia\",\n            CZE: \"Rep\u00fablica Checa\",\n            SVK: \"Eslovaquia\",\n            HUN: \"Hungr\u00eda\",\n            ROU: \"Ruman\u00eda\",\n            BGR: \"Bulgaria\",\n            CRI: \"Costa Rica\",\n            GTM: \"Guatemala\",\n            DOM: \"Rep\u00fablica Dominicana\",\n            BEL: \"B\u00e9lgica\",\n            NLD: \"Pa\u00edses Bajos\",\n            CHE: \"Suiza\",\n            AUT: \"Austria\",\n            AUS: \"Australia\",\n            EST: \"Estonia\",\n            LVA: \"Letonia\",\n            LTU: \"Lituania\",\n            LUX: \"Luxemburgo\",\n        };\n\n        const MAP_STYLE_COUNTRIES_ONLY = [{\n                featureType: \"landscape\",\n                elementType: \"geometry\",\n                stylers: [{\n                    color: \"#f5f5f5\"\n                }]\n            },\n            {\n                featureType: \"water\",\n                elementType: \"geometry\",\n                stylers: [{\n                    color: \"#cfe6ff\"\n                }]\n            },\n            {\n                featureType: \"poi\",\n                stylers: [{\n                    visibility: \"off\"\n                }]\n            },\n            {\n                featureType: \"road\",\n                stylers: [{\n                    visibility: \"off\"\n                }]\n            },\n            {\n                elementType: \"labels\",\n                stylers: [{\n                    visibility: \"off\"\n                }]\n            },\n            {\n                featureType: \"administrative.country\",\n                elementType: \"geometry.stroke\",\n                stylers: [{\n                        visibility: \"on\"\n                    },\n                    {\n                        color: \"#b7d6ff\"\n                    },\n                    {\n                        weight: 1.5\n                    }\n                ]\n            }\n        ];\n\n        \/* highlight countries *\/\n\n        function clearHighlight() {\n\n            if (!activeISO) return;\n\n            map.data.forEach(f => {\n                if (f.getProperty(\"active\")) {\n                    f.setProperty(\"active\", false);\n                }\n            });\n\n            activeISO = null;\n\n        }\n\n        function setHighlight(iso, provincia) {\n\n            if (!ISO_TO_CONTACT[iso]) return;\n\n            if (activeISO === iso) return;\n\n            clearHighlight();\n\n            activeISO = iso;\n\n            map.data.forEach(f => {\n                \/\/ If it's Spain and has a province, highlight only that province.\n                if (iso === 'ESP' && provincia) {\n                    if (f.getProperty(\"prov_name\") === provincia) {\n                        f.setProperty(\"active\", true);\n                    }\n                }\n                \/\/ For other countries, highlight the entire country.\n                else if (f.getProperty(\"ISO_A3\") === iso) {\n                    f.setProperty(\"active\", true);\n                }\n                \/\/ Fallback for France: search by name if ISO doesn't match\n                else if (iso === 'FRA') {\n                    const name = (f.getProperty(\"NAME\") || f.getProperty(\"ADMIN\") || f.getProperty(\"name\") || '').toLowerCase();\n                    if (name.includes('fran')) {\n                        f.setProperty(\"active\", true);\n                    }\n                }\n            });\n\n        }\n\n        function scheduleClear() {\n            clearTimer = setTimeout(clearHighlight, CLEAR_DELAY);\n        }\n\n        function cancelClear() {\n            if (clearTimer) {\n                clearTimeout(clearTimer);\n                clearTimer = null;\n            }\n        }\n\n        \/* popup *\/\n\n        function openPopup(loc, latLng) {\n\n            if (!loc.contact) return;\n\n            const d = CONTACTS[loc.contact];\n            if (!d) return;\n\n            infoWindow.setContent(`\n                <div class=\"card-popup\">\n                    <div class=\"card-header-popup\">\n                        <div class=\"card-info\">\n                            <h3>${d.name}<\/h3>\n                        <\/div>\n                        ${d.img ? `<div class=\"avatar-country\">\n                            <img decoding=\"async\" class=\"card-avatar\" src=\"${d.img}\" alt=\"${d.name}\">\n                        <\/div>` : ''}\n                    <\/div>\n                    <div class=\"card-footer\">\n                        <p class=\"card-icon\">\n                            <img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/12\/gp-mail-icon.svg\" alt=\"Email\">\n                            ${d.email}\n                        <\/p>\n                        <p class=\"card-icon\">\n                            <img decoding=\"async\" src=\"\/wp-content\/uploads\/2025\/12\/gp-call-icon.svg\" alt=\"Phone\">\n                            ${d.phone}\n                        <\/p>\n                    <\/div>\n                <\/div>\n                `);\n\n            infoWindow.setPosition(latLng);\n            infoWindow.open(map);\n\n        }\n\n        \/* marker style control *\/\n\n        function resetMarkerStyles() {\n\n            if (pulseInterval) {\n                clearInterval(pulseInterval);\n                pulseInterval = null;\n            }\n\n            markers.forEach(marker => {\n                marker.setIcon({\n                    path: google.maps.SymbolPath.CIRCLE,\n                    scale: 6,\n                    fillColor: \"#b0003a\",\n                    fillOpacity: 1,\n                    strokeColor: \"#fff\",\n                    strokeWeight: 1\n                });\n            });\n\n        }\n\n        function highlightContactMarkers(contact) {\n\n            resetMarkerStyles();\n\n            const activeMarkers = markers.filter(marker => marker.contact === contact);\n\n            let grow = true;\n\n            pulseInterval = setInterval(() => {\n\n                activeMarkers.forEach(marker => {\n\n                    const scale = grow ? 10 : 7;\n\n                    marker.setIcon({\n                        path: google.maps.SymbolPath.CIRCLE,\n                        scale: scale,\n                        fillColor: \"#b0003a\",\n                        fillOpacity: 1,\n                        strokeColor: \"#fff\",\n                        strokeWeight: 1\n                    });\n\n                });\n\n                grow = !grow;\n\n            }, 400);\n\n        }\n\n        \/* map *\/\n\n        function initMap() {\n\n            map = new google.maps.Map(document.getElementById(\"map\"), {\n                center: {\n                    lat: 20,\n                    lng: 0\n                },\n                zoom: 2,\n                disableDefaultUI: true,\n                zoomControl: true,\n                styles: MAP_STYLE_COUNTRIES_ONLY\n            });\n\n            infoWindow = new google.maps.InfoWindow();\n\n            \/\/ Load countries\n            map.data.loadGeoJson(\"https:\/\/www.penagrup.com\/wp-content\/themes\/genesis-child\/data\/countries.geo.json\");\n            \n            \/\/ Manually load Spanish provinces\n            fetch(\"https:\/\/www.penagrup.com\/wp-content\/themes\/genesis-child\/data\/georef-spain-provincia.json\")\n                .then(response => response.json())\n                .then(data => {\n                    data.forEach(item => {\n                        if (item.geo_shape && item.prov_name) {\n                            const feature = map.data.addGeoJson(item.geo_shape);\n                            if (feature && feature[0]) {\n                                feature[0].setProperty('prov_name', item.prov_name);\n                            }\n                        }\n                    });\n                })\n                .catch(err => console.error('Error loading provinces:', err));\n\n            map.data.setStyle(f => ({\n                clickable: true,\n                fillColor: \"#b0003a\",\n                fillOpacity: f.getProperty(\"active\") ? 0.25 : 0,\n                strokeColor: \"#b0003a\",\n                strokeWeight: f.getProperty(\"active\") ? 2 : 0\n            }));\n\n            LOCATIONS.forEach(loc => {\n\n                const marker = new google.maps.Marker({\n                    position: {\n                        lat: loc.lat,\n                        lng: loc.lng\n                    },\n                    icon: {\n                        path: google.maps.SymbolPath.CIRCLE,\n                        scale: 6,\n                        fillColor: \"#b0003a\",\n                        fillOpacity: 1,\n                        strokeColor: \"#fff\",\n                        strokeWeight: 1\n                    }\n                });\n\n                marker.contact = loc.contact;\n                marker.iso = loc.iso;\n                marker.provincia = loc.provincia;\n\n                marker.addListener(\"mouseover\", () => {\n                    cancelClear();\n                    setHighlight(loc.iso, loc.provincia);\n                });\n\n                marker.addListener(\"mouseout\", scheduleClear);\n\n                marker.addListener(\"click\", () => {\n\n                    highlightContactMarkers(marker.contact);\n\n                    openPopup(loc, marker.getPosition());\n\n                    scrollToContact(marker.contact);\n\n                });\n\n                markers.push(marker);\n\n            });\n\n            buildContactList();\n            const sidebar = document.querySelector(\".map-sidebar\");\n\n            let scrollTimer;\n\n            sidebar.addEventListener(\"scroll\", () => {\n\n                sidebarScrolling = true;\n\n                clearTimeout(scrollTimer);\n\n                scrollTimer = setTimeout(() => {\n                    sidebarScrolling = false;\n                }, 150);\n\n            });\n\n            new markerClusterer.MarkerClusterer({\n                map,\n                markers,\n                onClusterClick: function(event, cluster, map) {\n                    const currentZoom = map.getZoom();\n                    map.setZoom(Math.min(currentZoom + 3, 6));\n                    map.panTo(cluster.position);\n                }\n            });\n\n        }\n\n        \/* sidebar *\/\n\n        function buildContactList() {\n\n            const list = document.getElementById(\"contact-list\");\n\n            Object.keys(CONTACTS).forEach(key => {\n\n                const c = CONTACTS[key];\n\n                const div = document.createElement(\"div\");\n                div.className = \"contact-item\";\n                div.dataset.contact = key;\n\n                const countries = [];\n\n                LOCATIONS.forEach(loc => {\n                    if (loc.contact === key) {\n\n                        const name = ISO_COUNTRIES[loc.iso] || loc.iso;\n\n                        if (!countries.includes(name)) countries.push(name);\n\n                    }\n                });\n\n                div.innerHTML = `\n                    <strong>${c.name}<\/strong><br>\n                    <small>${c.email}<\/small><br>\n                    <small>${c.phone}<\/small>\n                    <div class=\"contact-countries\">${countries.join(\" \u00b7 \")}<\/div>\n                    `;\n\n                div.dataset.search = (\n\n                    c.name + \" \" +\n                    c.email + \" \" +\n                    c.phone + \" \" +\n                    countries.join(\" \")\n\n                ).toLowerCase();\n\n                div.addEventListener(\"mouseenter\", () => {\n\n                    if (sidebarScrolling) return;\n\n                    \/\/ Cancel any pending cleaning timers\n                    cancelClear();\n\n                    \/\/ Get all the bookmarks for this contact\n                    const contactMarkers = markers.filter(m => m.contact === key);\n                    \n                    if (contactMarkers.length > 0) {\n                        clearHighlight();\n                        \n                        \/\/ Highlight all provinces\/countries in this contact\n                        contactMarkers.forEach(marker => {\n                            map.data.forEach(f => {\n                                if (marker.iso === 'ESP' && marker.provincia) {\n                                    if (f.getProperty(\"prov_name\") === marker.provincia) {\n                                        f.setProperty(\"active\", true);\n                                    }\n                                } else if (f.getProperty(\"ISO_A3\") === marker.iso) {\n                                    f.setProperty(\"active\", true);\n                                }\n                                \/\/ Fallback for France\n                                else if (marker.iso === 'FRA') {\n                                    const name = (f.getProperty(\"NAME\") || f.getProperty(\"ADMIN\") || f.getProperty(\"name\") || '').toLowerCase();\n                                    if (name.includes('fran')) {\n                                        f.setProperty(\"active\", true);\n                                    }\n                                }\n                            });\n                        });\n                        \n                        activeISO = contactMarkers[0].iso;\n                    }\n\n                });\n\n                div.addEventListener(\"mouseleave\", () => {\n                    if (sidebarScrolling) return;\n                    scheduleClear();\n                });\n\n                div.addEventListener(\"click\", () => {\n\n                    highlightContactMarkers(key);\n\n                    const contactMarkers = markers.filter(m => m.contact === key);\n\n                    if (contactMarkers.length === 1) {\n\n                        const marker = contactMarkers[0];\n\n                        map.panTo(marker.getPosition());\n                        map.setZoom(5);\n\n                        openPopup({\n                            contact: key\n                        }, marker.getPosition());\n\n                    } else {\n                        const bounds = new google.maps.LatLngBounds();\n\n                        contactMarkers.forEach(marker => {\n                            bounds.extend(marker.getPosition());\n                        });\n\n                        var mob = window.innerWidth <= 767;\n\n                        if (contactMarkers[0].iso === 'ESP') {\n                            map.fitBounds(bounds, mob ? 50 : 200);\n                            if (key === 'cristina-arias-4') {\n                                map.fitBounds(bounds, mob ? 80 : 275);\n                            }\n                        } else if (contactMarkers[0].iso === 'GBR') {\n                            map.fitBounds(bounds, mob ? 50 : 250);\n                        } else {\n                            map.fitBounds(bounds, mob ? 30 : 100);\n                        }\n\n                        const firstMarker = contactMarkers[0];\n\n                        openPopup({\n                            contact: key\n                        }, firstMarker.getPosition());\n\n                    }\n\n                });\n\n                list.appendChild(div);\n\n            });\n\n        }\n\n        function scrollToContact(contact) {\n\n            const el = document.querySelector(`[data-contact=\"${contact}\"]`);\n\n            if (!el) return;\n\n            el.scrollIntoView({\n                behavior: \"smooth\",\n                block: \"center\"\n            });\n\n        }\n\n        \/* search *\/\n\n        document.addEventListener(\"input\", function(e) {\n\n            if (e.target.id !== \"map-search\") return;\n\n            const search = e.target.value.toLowerCase();\n\n            let visibleMarkers = [];\n\n            document.querySelectorAll(\".contact-item\").forEach(item => {\n\n                const text = item.dataset.search;\n                const match = text.includes(search);\n\n                item.style.display = match ? \"block\" : \"none\";\n\n                if (match) {\n\n                    const contact = item.dataset.contact;\n\n                    const contactMarkers = markers.filter(m => m.contact === contact);\n\n                    contactMarkers.forEach(marker => {\n                        visibleMarkers.push(marker);\n                    });\n\n                }\n\n            });\n\n            if (visibleMarkers.length === 0) return;\n\n            if (visibleMarkers.length === 1) {\n\n                const marker = visibleMarkers[0];\n\n                map.panTo(marker.getPosition());\n                map.setZoom(5);\n\n                openPopup({\n                    contact: marker.contact\n                }, marker.getPosition());\n\n                return;\n\n            }\n\n            const bounds = new google.maps.LatLngBounds();\n\n            visibleMarkers.forEach(marker => {\n                bounds.extend(marker.getPosition());\n            });\n\n            map.fitBounds(bounds);\n\n        });\n\n        window.initMap = initMap;\n    <\/script>\n\n    <script\n        src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyADx0xCt6M-DfSoC6xe_6M9japq6K7SIPU&#038;callback=initMap\"\n        async defer>\n    <\/script>\n\n\n \r\n\t\t\t\r\n\t\t<\/div>\r\n\t\n \r\n\t\t<\/div>\r\n\t\n \r\n\t\t<\/div>\r\n\t\n<div style=\"color:#ddd\" class=\"wp-block-genesis-blocks-gb-spacer gb-block-spacer gb-divider-solid gb-divider-size-1\"><hr style=\"height:50px\"><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":4819,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-4925","page","type-page","status-publish","entry"],"acf":[],"featured_image_src":null,"featured_image_src_square":null,"_links":{"self":[{"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/pages\/4925","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/comments?post=4925"}],"version-history":[{"count":1,"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/pages\/4925\/revisions"}],"predecessor-version":[{"id":4940,"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/pages\/4925\/revisions\/4940"}],"up":[{"embeddable":true,"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/pages\/4819"}],"wp:attachment":[{"href":"https:\/\/www.penagrup.com\/en\/wp-json\/wp\/v2\/media?parent=4925"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}