{"id":7661,"date":"2026-01-27T14:48:17","date_gmt":"2026-01-27T14:48:17","guid":{"rendered":"https:\/\/www.grassgroup.ch\/sites\/"},"modified":"2026-05-28T13:45:05","modified_gmt":"2026-05-28T13:45:05","slug":"sites","status":"publish","type":"page","link":"https:\/\/www.grassgroup.ch\/fr\/sites\/","title":{"rendered":"Sites"},"content":{"rendered":"<section data-bb-version=\"4.8.8\" id=\"bt_bb_section6a6bf471be024\" class=\"bt_bb_section bt_bb_layout_wide bt_bb_vertical_align_top bt_bb_top_spacing_none bt_bb_bottom_spacing_none bt_bb_highlighted_no section-hero\"  data-bt-override-class=\"{&quot;bt_bb_top_spacing_&quot;:{&quot;current_class&quot;:&quot;bt_bb_top_spacing_none&quot;,&quot;xxl&quot;:&quot;none&quot;},&quot;bt_bb_bottom_spacing_&quot;:{&quot;current_class&quot;:&quot;bt_bb_bottom_spacing_none&quot;,&quot;xxl&quot;:&quot;none&quot;}}\"><div class=\"bt_bb_port\"><div class=\"bt_bb_cell\"><div class=\"bt_bb_cell_inner\"><div class=\"bt_bb_row_wrapper\"><div  class=\"bt_bb_row\"  data-bt-override-class=\"{}\"><div  class=\"bt_bb_column col-xxl-12 col-xl-12 bt_bb_vertical_align_top bt_bb_align_left bt_bb_padding_normal\"  data-width=\"12\" data-bt-override-class=\"{}\"><div class=\"bt_bb_column_content\"><div class=\"bt_bb_column_content_inner\"><div data-bb-version=\"4.8.8\" class=\"bt_bb_content_slider bt_bb_gap_no_gap bt_bb_arrows_size_no_arrows bt_bb_show_dots_hide bt_bb_height_auto bt_bb_animation_fade bt_bb_hidden_xs bt_bb_hidden_ms bt_bb_hidden_sm bt_bb_animation_fade animate\" data-bt-override-class=\"{}\"><div class=\"slick-slider fade\"  data-slick='{ \"lazyLoad\": \"progressive\", \"cssEase\": \"ease-out\", \"speed\": \"600\", \"accessibility\": false, \"fade\": true, \"arrows\": false, \"adaptiveHeight\": true}' ><div data-bb-version=\"4.8.8\" class=\"bt_bb_content_slider_item bt_bb_column_background_image bt_bb_highlighted_no\" style=\";background-image:url(&#039;https:\/\/www.grassgroup.ch\/wp-content\/uploads\/2025\/09\/Header-individuals-1.jpg&#039;);\"><div class=\"bt_bb_content_slider_item_content content\"><div class=\"bt_bb_row_wrapper\"><div  class=\"bt_bb_row_inner\"  data-bt-override-class=\"{}\"><div data-bb-version=\"4.8.8\"  class=\"bt_bb_column_inner col-xxl-8 col-xl-8 col-xs-12 col-sm-12 col-md-12 col-lg-8 bt_bb_vertical_align_middle bt_bb_align_left bt_bb_padding_none bt_bb_animation_fade_in bt_bb_animation_zoom_out animate bt_bb_highlighted_no\"  data-width=\"8\" data-bt-override-class=\"{&quot;bt_bb_align_&quot;:{&quot;current_class&quot;:&quot;bt_bb_align_left&quot;,&quot;xxl&quot;:&quot;left&quot;},&quot;bt_bb_padding_&quot;:{&quot;current_class&quot;:&quot;bt_bb_padding_none&quot;,&quot;xxl&quot;:&quot;none&quot;}}\"><div class=\"bt_bb_column_inner_content\"><div class=\"bt_bb_separator bt_bb_border_style_none bt_bb_bottom_spacing_extra_large\" data-bt-override-class=\"null\"><\/div><div class=\"bt_bb_separator bt_bb_border_style_none bt_bb_bottom_spacing_extra_large\" data-bt-override-class=\"null\"><\/div><header data-bb-version=\"4.8.8\" class=\"bt_bb_headline bt_bb_font_weight_bold bt_bb_dash_none bt_bb_subheadline bt_bb_size_large bt_bb_align_inherit\" style=\";font-family:&#039;Roboto&#039;;color:rgb(0,36,70);border-color:rgb(0,36,70);\" data-bt-override-class=\"{&quot;bt_bb_size_&quot;:{&quot;current_class&quot;:&quot;bt_bb_size_large&quot;,&quot;xxl&quot;:&quot;large&quot;},&quot;bt_bb_align_&quot;:{&quot;current_class&quot;:&quot;bt_bb_align_inherit&quot;,&quot;xxl&quot;:&quot;inherit&quot;}}\"><h1 style=\";font-family:'Roboto'\"><span class=\"bt_bb_headline_content\"><span>Bureaux<\/span><\/span><\/h1><div class=\"bt_bb_headline_subheadline\">La proximit\u00e9 commence par un site proche de chez vous. Grass & Partner est actuellement pr\u00e9sent dans les sept plus grandes villes suisses. N'h\u00e9sitez pas \u00e0 nous contacter dans l'agence de votre choix.<\/div><\/header><div class=\"bt_bb_separator bt_bb_border_style_none bt_bb_bottom_spacing_medium\" data-bt-override-class=\"null\"><\/div><div class=\"bt_bb_separator bt_bb_border_style_none bt_bb_bottom_spacing_extra_large\" data-bt-override-class=\"null\"><\/div><\/div><\/div><div  class=\"bt_bb_column_inner col-xxl-4 col-xl-4 col-xs-12 col-sm-12 col-md-12 col-lg-4 bt_bb_vertical_align_top bt_bb_align_left bt_bb_padding_normal\"  data-width=\"4\" data-bt-override-class=\"{}\"><div class=\"bt_bb_column_inner_content\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div data-bb-version=\"4.8.8\" class=\"bt_bb_content_slider bt_bb_gap_no_gap bt_bb_arrows_size_normal bt_bb_show_dots_hide bt_bb_height_auto bt_bb_animation_fade bt_bb_hidden_md bt_bb_hidden_lg bt_bb_hidden_xl bt_bb_animation_fade animate\" data-bt-override-class=\"{}\"><div class=\"slick-slider fade\"  data-slick='{ \"lazyLoad\": \"progressive\", \"cssEase\": \"ease-out\", \"speed\": \"600\", \"accessibility\": false, \"fade\": true, \"prevArrow\": \"&lt;button type=\\\"button\\\" class=\\\"slick-prev\\\" aria-label=\\\"Previous\\\" tabindex=\\\"0\\\" role=\\\"button\\\"&gt;&lt;\/button&gt;\", \"nextArrow\": \"&lt;button type=\\\"button\\\" class=\\\"slick-next\\\" aria-label=\\\"Next\\\" tabindex=\\\"0\\\" role=\\\"button\\\"&gt;&lt;\/button&gt;\", \"adaptiveHeight\": true}' ><div data-bb-version=\"4.8.8\" class=\"bt_bb_content_slider_item bt_bb_column_background_image bt_bb_background_overlay_light_solid bt_bb_highlighted_no\" style=\";background-image:url(&#039;https:\/\/www.grassgroup.ch\/wp-content\/uploads\/2025\/10\/2.webp&#039;);\"><div class=\"bt_bb_content_slider_item_content content\"><div class=\"bt_bb_row_wrapper\"><div  class=\"bt_bb_row_inner\"  data-bt-override-class=\"{}\"><div  class=\"bt_bb_column_inner col-xxl-8 col-xl-8 col-xs-12 col-sm-12 col-md-12 col-lg-8 bt_bb_vertical_align_middle bt_bb_align_left bt_bb_padding_normal bt_bb_animation_fade_in bt_bb_animation_zoom_out animate bt_bb_highlighted_no\"  data-width=\"8\" data-bt-override-class=\"{}\"><div class=\"bt_bb_column_inner_content\"><div class=\"bt_bb_separator bt_bb_border_style_none bt_bb_bottom_spacing_extra_large\" data-bt-override-class=\"null\"><\/div><header data-bb-version=\"4.8.8\" class=\"bt_bb_headline section-hero bt_bb_font_weight_bold bt_bb_dash_none bt_bb_subheadline bt_bb_size_extralarge bt_bb_align_inherit\" style=\";font-family:&#039;Roboto&#039;;color:rgb(0,36,70);border-color:rgb(0,36,70);\" data-bt-override-class=\"{&quot;bt_bb_size_&quot;:{&quot;current_class&quot;:&quot;bt_bb_size_extralarge&quot;,&quot;xxl&quot;:&quot;extralarge&quot;},&quot;bt_bb_align_&quot;:{&quot;current_class&quot;:&quot;bt_bb_align_inherit&quot;,&quot;xxl&quot;:&quot;inherit&quot;}}\"><h1 style=\";font-family:'Roboto'\"><span class=\"bt_bb_headline_content\"><span>Bureaux<\/span><\/span><\/h1><div class=\"bt_bb_headline_subheadline\">La proximit\u00e9 commence par un site proche de chez vous. Grass & Partner est actuellement pr\u00e9sent dans les sept plus grandes villes suisses. N'h\u00e9sitez pas \u00e0 nous contacter dans l'agence de votre choix.<\/div><\/header><div class=\"bt_bb_separator bt_bb_border_style_none bt_bb_bottom_spacing_extra_large\" data-bt-override-class=\"null\"><\/div><\/div><\/div><div  class=\"bt_bb_column_inner col-xxl-4 col-xl-4 col-xs-12 col-sm-12 col-md-12 col-lg-4 bt_bb_vertical_align_top bt_bb_align_left bt_bb_padding_normal\"  data-width=\"4\" data-bt-override-class=\"{}\"><div class=\"bt_bb_column_inner_content\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div data-bb-version=\"4.8.8\" class=\"bt_bb_row_wrapper\"><div  class=\"bt_bb_row\"  data-bt-override-class=\"{}\"><div data-bb-version=\"4.8.8\"  class=\"bt_bb_column col-xxl-12 col-xl-12 col-xs-12 col-sm-12 col-md-12 col-lg-12 bt_bb_vertical_align_top bt_bb_align_left bt_bb_padding_normal\"  data-width=\"12\" data-bt-override-class=\"{}\"><div class=\"bt_bb_column_content\"><div class=\"bt_bb_column_content_inner\"><\/div><\/div><\/div><\/div><\/div><\/div><!-- cell_inner --><\/div><!-- cell --><\/div><!-- port --><\/section><section data-bb-version=\"4.8.8\" id=\"bt_bb_section6a6bf471bec8a\" class=\"bt_bb_section bt_bb_layout_boxed_1200\"  data-bt-override-class=\"null\"><div class=\"bt_bb_port\"><div class=\"bt_bb_cell\"><div class=\"bt_bb_cell_inner\"><div class=\"bt_bb_row_wrapper\"><div  class=\"bt_bb_row\"  data-bt-override-class=\"{}\"><div data-bb-version=\"4.8.8\"  class=\"bt_bb_column col-xxl-12 col-xl-12 col-xs-12 col-sm-12 col-md-12 col-lg-12 bt_bb_vertical_align_top bt_bb_align_left bt_bb_padding_normal\"  data-width=\"12\" data-bt-override-class=\"{}\"><div class=\"bt_bb_column_content\"><div class=\"bt_bb_column_content_inner\"><div class=\"bt_bb_raw_content\"><!-- Leaflet CSS -->\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.css\"\/>\n<!-- Fonts -->\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@300;400;500&family=DM+Serif+Display&display=swap\" rel=\"stylesheet\"\/>\n\n<style>\n  .map-wrap {\n    margin: 48px 0;\n  }\n\n  .map-shell {\n    width: 100%;\n    background: #ffffff;\n    border: 0.5px solid rgba(0,0,0,0.12);\n    border-radius: 16px;\n    overflow: hidden;\n    display: flex;\n    flex-direction: row;\n    height: 680px;\n    position: relative;\n    box-shadow: 0 2px 24px rgba(0,0,0,0.07);\n  }\n\n  .map-shell #map {\n    flex: 1;\n    min-width: 0;\n    z-index: 1;\n  }\n\n  .map-shell .leaflet-control-zoom { border: none !important; box-shadow: none !important; margin: 16px !important; }\n  .map-shell .leaflet-control-zoom a {\n    background: #ffffff !important;\n    border: 0.5px solid rgba(0,0,0,0.12) !important;\n    color: #333 !important;\n    font-size: 16px !important;\n    line-height: 28px !important;\n    width: 28px !important;\n    height: 28px !important;\n  }\n  .map-shell .leaflet-control-zoom a:hover { background: #f5f5f5 !important; }\n  .map-shell .leaflet-control-attribution { font-size: 10px !important; background: transparent !important; color: #aaa !important; }\n\n  .map-city-label {\n    background: transparent !important;\n    border: none !important;\n    box-shadow: none !important;\n    padding: 0 !important;\n    font-family: 'DM Sans', sans-serif;\n    font-size: 13px;\n    font-weight: 500;\n    color: #222;\n    white-space: nowrap;\n    pointer-events: none;\n    text-shadow: -1.5px -1.5px 0 #fff, 1.5px -1.5px 0 #fff, -1.5px 1.5px 0 #fff, 1.5px 1.5px 0 #fff;\n  }\n  .map-city-label::before { display: none !important; }\n\n  .map-partner-label {\n    background: transparent !important;\n    border: none !important;\n    box-shadow: none !important;\n    padding: 0 !important;\n    font-family: 'DM Sans', sans-serif;\n    font-size: 12px;\n    font-weight: 400;\n    color: #2c3e6b;\n    white-space: nowrap;\n    pointer-events: none;\n    text-shadow: -1.5px -1.5px 0 #fff, 1.5px -1.5px 0 #fff, -1.5px 1.5px 0 #fff, 1.5px 1.5px 0 #fff;\n  }\n  .map-partner-label::before { display: none !important; }\n\n  .map-shell .map-panel {\n    width: 0;\n    overflow: hidden;\n    transition: width 0.32s cubic-bezier(.4,0,.2,1);\n    background: #ffffff;\n    border-left: 0.5px solid rgba(0,0,0,0.10);\n    flex-shrink: 0;\n    position: relative;\n    z-index: 10;\n  }\n  .map-shell .map-panel.open { width: 290px; }\n\n  .map-panel-inner {\n    width: 290px;\n    height: 100%;\n    display: flex;\n    flex-direction: column;\n    overflow-y: auto;\n  }\n\n  .map-panel-top { padding: 24px 22px 0; }\n\n  .map-panel-close {\n    position: absolute;\n    top: 14px; right: 14px;\n    width: 28px; height: 28px;\n    background: #f5f4f0;\n    border: 0.5px solid rgba(0,0,0,0.12);\n    border-radius: 50%;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: #666;\n    font-size: 13px;\n    transition: background 0.15s;\n    line-height: 1;\n  }\n  .map-panel-close:hover { background: #ebebeb; }\n\n  .map-panel-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 5px;\n    font-size: 10px;\n    font-weight: 500;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    padding: 3px 9px;\n    border-radius: 20px;\n    background: #FCEBEB;\n    color: #A32D2D;\n    margin-bottom: 10px;\n  }\n  .map-panel-badge-dot { width: 6px; height: 6px; border-radius: 50%; background: #c0392b; }\n\n  .map-panel-city {\n    font-family: 'DM Serif Display', serif;\n    font-size: 26px;\n    font-weight: 400;\n    color: #111;\n    line-height: 1.15;\n    margin-bottom: 18px;\n  }\n\n  .map-panel-divider { height: 0.5px; background: rgba(0,0,0,0.10); margin: 0 22px 18px; }\n  .map-panel-body { padding: 0 22px 24px; flex: 1; }\n\n  .map-detail-block { display: flex; gap: 12px; margin-bottom: 16px; align-items: flex-start; }\n\n  .map-detail-icon {\n    width: 32px; height: 32px;\n    border-radius: 8px;\n    background: #f5f4f0;\n    border: 0.5px solid rgba(0,0,0,0.10);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex-shrink: 0;\n    margin-top: 1px;\n  }\n  .map-detail-icon svg { width: 14px; height: 14px; color: #666; }\n\n  .map-detail-label { font-size: 10px; font-weight: 500; letter-spacing: 0.06em; text-transform: uppercase; color: #888; margin-bottom: 3px; }\n  .map-detail-value { font-size: 13px; color: #111; line-height: 1.5; }\n  .map-detail-value a { color: #185FA5; text-decoration: none; }\n  .map-detail-value a:hover { text-decoration: underline; }\n\n  .map-legend {\n    position: absolute;\n    bottom: 16px; left: 16px;\n    z-index: 500;\n    background: #ffffff;\n    border: 0.5px solid rgba(0,0,0,0.12);\n    border-radius: 10px;\n    padding: 10px 14px;\n    display: flex;\n    flex-direction: column;\n    gap: 7px;\n  }\n  .map-leg-row { display: flex; align-items: center; gap: 8px; font-size: 11px; color: #666; font-family: 'DM Sans', sans-serif; }\n  .map-leg-dot { width: 10px; height: 10px; border-radius: 50%; border: 2px solid #fff; flex-shrink: 0; box-shadow: 0 0 0 1px rgba(0,0,0,0.15); }\n\n  .map-hint {\n    position: absolute;\n    bottom: 16px; left: 50%;\n    transform: translateX(-50%);\n    z-index: 400;\n    font-size: 11px;\n    color: #666;\n    font-family: 'DM Sans', sans-serif;\n    background: #ffffff;\n    border: 0.5px solid rgba(0,0,0,0.12);\n    border-radius: 20px;\n    padding: 5px 14px;\n    white-space: nowrap;\n    transition: opacity 0.4s;\n    pointer-events: none;\n  }\n\n  .map-bottom-sheet { display: none; }\n\n  @media (max-width: 768px) {\n    .map-wrap { margin: 32px 0; }\n    .map-shell { height: 520px; border-radius: 12px; }\n    .map-shell .map-panel.open { width: 240px; }\n    .map-panel-inner { width: 240px; }\n    .map-panel-city { font-size: 22px; }\n  }\n\n  @media (max-width: 540px) {\n    .map-wrap { margin: 0; }\n    .map-shell { flex-direction: column; height: 100svh; border-radius: 0; border: none; box-shadow: none; }\n    .map-shell #map { flex: 1; width: 100%; }\n    .map-shell .map-panel { display: none !important; }\n    .map-legend { bottom: auto; top: 12px; left: auto; right: 12px; }\n    .map-hint { bottom: 80px; }\n\n    .map-bottom-sheet {\n      display: block;\n      position: absolute;\n      bottom: 0; left: 0; right: 0;\n      z-index: 600;\n      background: #ffffff;\n      border-top: 0.5px solid rgba(0,0,0,0.12);\n      border-radius: 16px 16px 0 0;\n      transform: translateY(100%);\n      transition: transform 0.32s cubic-bezier(.4,0,.2,1);\n      padding-bottom: env(safe-area-inset-bottom, 0px);\n    }\n    .map-bottom-sheet.open { transform: translateY(0); }\n\n    .map-sheet-handle-row { display: flex; justify-content: center; padding: 10px 0 4px; }\n    .map-sheet-handle { width: 36px; height: 4px; background: rgba(0,0,0,0.15); border-radius: 2px; }\n    .map-sheet-inner { padding: 4px 20px 24px; }\n    .map-sheet-header { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 6px; }\n    .map-sheet-close { width: 28px; height: 28px; background: #f5f4f0; border: 0.5px solid rgba(0,0,0,0.12); border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #666; font-size: 13px; flex-shrink: 0; margin-top: 2px; }\n    .map-sheet-badge { display: inline-flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 500; letter-spacing: 0.08em; text-transform: uppercase; padding: 3px 9px; border-radius: 20px; background: #FCEBEB; color: #A32D2D; margin-bottom: 6px; font-family: 'DM Sans', sans-serif; }\n    .map-sheet-badge-dot { width: 6px; height: 6px; border-radius: 50%; background: #c0392b; }\n    .map-sheet-city { font-family: 'DM Serif Display', serif; font-size: 22px; font-weight: 400; color: #111; line-height: 1.2; margin-bottom: 14px; }\n    .map-sheet-divider { height: 0.5px; background: rgba(0,0,0,0.10); margin-bottom: 14px; }\n  }\n<\/style><div class=\"map-wrap\">\n  <div class=\"map-shell\">\n\n    <div id=\"map\"><\/div>\n\n    <div class=\"map-legend\">\n      <div class=\"map-leg-row\"><div class=\"map-leg-dot\" style=\"background:#c0392b\"><\/div>Bureaux r\u00e9gionaux<\/div>\n      <div class=\"map-leg-row\"><div class=\"map-leg-dot\" style=\"background:#2c3e6b\"><\/div>Partenaires de coop\u00e9ration et de r\u00e9seau<\/div>\n    <\/div>\n\n    <div class=\"map-hint\" id=\"mapHint\">Cliquez sur un site pour plus de d\u00e9tails<\/div>\n\n    <div class=\"map-panel\" id=\"mapPanel\">\n      <div class=\"map-panel-inner\">\n        <div class=\"map-panel-top\">\n          <button class=\"map-panel-close\" id=\"mapCloseBtn\">\u2715<\/button>\n          <div class=\"map-panel-badge\"><span class=\"map-panel-badge-dot\"><\/span>Bureau<\/div>\n          <p class=\"map-panel-city\" id=\"mapPanelCity\"><\/p>\n        <\/div>\n        <div class=\"map-panel-divider\"><\/div>\n        <div class=\"map-panel-body\" id=\"mapPanelBody\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"map-bottom-sheet\" id=\"mapBottomSheet\">\n      <div class=\"map-sheet-handle-row\"><div class=\"map-sheet-handle\"><\/div><\/div>\n      <div class=\"map-sheet-inner\">\n        <div class=\"map-sheet-badge\"><span class=\"map-sheet-badge-dot\"><\/span>Bureau<\/div>\n        <div class=\"map-sheet-header\">\n          <p class=\"map-sheet-city\" id=\"mapSheetCity\"><\/p>\n          <button class=\"map-sheet-close\" id=\"mapSheetClose\">\u2715<\/button>\n        <\/div>\n        <div class=\"map-sheet-divider\"><\/div>\n        <div id=\"mapSheetBody\"><\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/leaflet\/1.9.4\/leaflet.min.js\"><\/script>\n\n<script>\n(function() {\n  const offices = [\n    { city:'B\u00e2le',      lat:47.559, lng:7.588,  street:'Peter Merian-Strasse 54', postal:'CH-4052 B\u00e2le',       phone:'+41 61 260 91 00', email:'basel@grassgroup.ch',     labelDir:'top'   },\n    { city:'Zurich',     lat:47.376, lng:8.547,  street:'Wiesenstrasse 17',        postal:'CH-8008 Zurich',      phone:'+41 44 389 88 66', email:'zuerich@grassgroup.ch',   labelDir:'top'   },\n    { city:'Berne',      lat:46.948, lng:7.447,  street:'N\u00e4geligasse 13',           postal:'CH-3011 Berne',        phone:'+41 31 310 05 60', email:'bern@grassgroup.ch',      labelDir:'left'  },\n    { city:'Lucerne',    lat:47.050, lng:8.310,  street:'Hirschmattstrasse 23',     postal:'CH-6003 Lucerne',      phone:'+41 41 361 61 88', email:'luzern@grassgroup.ch',    labelDir:'left'  },\n    { city:'Lausanne',   lat:46.520, lng:6.633,  street:'Rue St-Pierre 2',          postal:'1003 Lausanne',       phone:'+41 21 634 80 80', email:'lausanne@grassgroup.ch',  labelDir:'top'   },\n    { city:'Saint-Gall', lat:47.422, lng:9.376,  street:'St. Leonhardstrasse 22',   postal:'CH-9000 Saint-Gall',  phone:'+41 71 499 63 63', email:'stgallen@grassgroup.ch',  labelDir:'top'   },\n    { city:'Zoug',        lat:47.166, lng:8.515,  street:'Bahnhofstrasse 16',        postal:'CH-6300 Zoug',         phone:'+41 41 727 87 87', email:'zug@grassgroup.ch',       labelDir:'right' },\n  ];\n\n  const partners = [\n    { city:'Gen\u00e8ve',     lat:46.204, lng:6.143, labelDir:'top'    },\n    { city:'Aarau',      lat:47.391, lng:8.051, labelDir:'bottom' },\n    { city:'Glaris',     lat:47.040, lng:9.068, labelDir:'right'  },\n    { city:'Coire',       lat:46.850, lng:9.533, labelDir:'right'  },\n    { city:'Sion',       lat:46.233, lng:7.360, labelDir:'bottom' },\n    { city:'Bellinzone', lat:46.195, lng:9.024, labelDir:'right'  },\n  ];\n\n  const svgIcons = {\n    addr:  `<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 1.5C5.5 1.5 3.5 3.5 3.5 6c0 3.5 4.5 8.5 4.5 8.5s4.5-5 4.5-8.5c0-2.5-2-4.5-4.5-4.5z\"\/><circle cx=\"8\" cy=\"6\" r=\"1.5\"\/><\/svg>`,\n    phone: `<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 2.5h3l1 2.5-1.5 1c.8 1.5 2 2.8 3.5 3.5l1-1.5 2.5 1v3C12 13.5 4 13 3 2.5z\"\/><\/svg>`,\n    mail:  `<svg viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"1.5\" y=\"3.5\" width=\"13\" height=\"9\" rx=\"1.5\"\/><path d=\"M1.5 4l6.5 5 6.5-5\"\/><\/svg>`,\n  };\n\n  const offsets = { top:[0,-14], bottom:[0,10], left:[-10,0], right:[10,0] };\n\n  function officeIcon(active) {\n    const bg   = active ? '#8b1a10' : '#c0392b';\n    const size = active ? 20 : 17;\n    return L.divIcon({\n      className: '',\n      html: `<div style=\"width:${size}px;height:${size}px;background:${bg};border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 1.5px ${bg};transition:all .2s;\"><\/div>`,\n      iconSize:   [size, size],\n      iconAnchor: [size\/2, size\/2],\n    });\n  }\n\n  function partnerIcon() {\n    return L.divIcon({\n      className: '',\n      html: `<div style=\"width:17px;height:17px;background:#2c3e6b;border:3px solid #fff;border-radius:50%;box-shadow:0 0 0 1.5px #2c3e6b;\"><\/div>`,\n      iconSize:   [17, 17],\n      iconAnchor: [8.5, 8.5],\n    });\n  }\n\n  const map = L.map('map', { zoomControl: true, scrollWheelZoom: false }).setView([46.85, 8.1], 8);\n\n  L.tileLayer('https:\/\/{s}.basemaps.cartocdn.com\/light_nolabels\/{z}\/{x}\/{y}{r}.png', {\n    attribution: '\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a> \u00a9 <a href=\"https:\/\/carto.com\/\">CARTO<\/a>',\n    maxZoom: 14\n  }).addTo(map);\n\n  partners.forEach(p => {\n    L.marker([p.lat, p.lng], { icon: partnerIcon(), interactive: false })\n      .addTo(map)\n      .bindTooltip(p.city, { permanent:true, direction:p.labelDir, offset:offsets[p.labelDir], className:'map-partner-label' });\n  });\n\n  function buildHTML(o) {\n    return `\n      <div class=\"map-detail-block\"><div class=\"map-detail-icon\">${svgIcons.addr}<\/div><div><p class=\"map-detail-label\">Adresse<\/p><p class=\"map-detail-value\">${o.street}<br>${o.postal}<\/p><\/div><\/div>\n      <div class=\"map-detail-block\"><div class=\"map-detail-icon\">${svgIcons.phone}<\/div><div><p class=\"map-detail-label\">T\u00e9l\u00e9phone<\/p><p class=\"map-detail-value\"><a href=\"tel:${o.phone.replace(\/\\s\/g,'')}\">${o.phone}<\/a><\/p><\/div><\/div>\n      <div class=\"map-detail-block\"><div class=\"map-detail-icon\">${svgIcons.mail}<\/div><div><p class=\"map-detail-label\">E-mail<\/p><p class=\"map-detail-value\"><a href=\"mailto:${o.email}\">${o.email}<\/a><\/p><\/div><\/div>\n    `;\n  }\n\n  const isMobile = () => window.innerWidth <= 540;\n\n  function closeAll() {\n    document.getElementById('mapPanel').classList.remove('open');\n    document.getElementById('mapBottomSheet').classList.remove('open');\n    if (activeMarker) { activeMarker.setIcon(officeIcon(false)); activeMarker = null; }\n    setTimeout(() => map.invalidateSize(), 340);\n  }\n\n  let activeMarker = null;\n\n  offices.forEach(o => {\n    const marker = L.marker([o.lat, o.lng], { icon: officeIcon(false) })\n      .addTo(map)\n      .bindTooltip(o.city, { permanent:true, direction:o.labelDir, offset:offsets[o.labelDir], className:'map-city-label' });\n\n    marker.on('click', () => {\n      if (activeMarker && activeMarker !== marker) activeMarker.setIcon(officeIcon(false));\n      marker.setIcon(officeIcon(true));\n      activeMarker = marker;\n      document.getElementById('mapHint').classList.add('hidden');\n      const html = buildHTML(o);\n      if (isMobile()) {\n        document.getElementById('mapSheetCity').textContent = o.city;\n        document.getElementById('mapSheetBody').innerHTML = html;\n        document.getElementById('mapBottomSheet').classList.add('open');\n      } else {\n        document.getElementById('mapPanelCity').textContent = o.city;\n        document.getElementById('mapPanelBody').innerHTML = html;\n        document.getElementById('mapPanel').classList.add('open');\n        setTimeout(() => map.invalidateSize(), 340);\n      }\n    });\n  });\n\n  document.getElementById('mapCloseBtn').addEventListener('click', closeAll);\n  document.getElementById('mapSheetClose').addEventListener('click', closeAll);\n\n  window.addEventListener('resize', () => {\n    if (!isMobile()) document.getElementById('mapBottomSheet').classList.remove('open');\n    else document.getElementById('mapPanel').classList.remove('open');\n    map.invalidateSize();\n  });\n})();\n<\/script><\/div><\/div><\/div><\/div><\/div><\/div><\/div><!-- cell_inner --><\/div><!-- cell --><\/div><!-- port --><\/section>","protected":false},"excerpt":{"rendered":"","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-7661","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.grassgroup.ch\/fr\/wp-json\/wp\/v2\/pages\/7661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.grassgroup.ch\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.grassgroup.ch\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.grassgroup.ch\/fr\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.grassgroup.ch\/fr\/wp-json\/wp\/v2\/comments?post=7661"}],"version-history":[{"count":1,"href":"https:\/\/www.grassgroup.ch\/fr\/wp-json\/wp\/v2\/pages\/7661\/revisions"}],"predecessor-version":[{"id":7701,"href":"https:\/\/www.grassgroup.ch\/fr\/wp-json\/wp\/v2\/pages\/7661\/revisions\/7701"}],"wp:attachment":[{"href":"https:\/\/www.grassgroup.ch\/fr\/wp-json\/wp\/v2\/media?parent=7661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}