diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/i18n/AppConstants.java b/www-client/src/main/java/fr/agrometinfo/www/client/i18n/AppConstants.java
index 1cc0025efdff093ca1972cf86fb334370dfa049b..238bb3fc04aad5679757a093e93a607ca611021b 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/i18n/AppConstants.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/i18n/AppConstants.java
@@ -234,12 +234,6 @@ public interface AppConstants extends com.google.gwt.i18n.client.ConstantsWithLo
     @DefaultStringValue("See the \"Personal data\" paragraph in the legal notice.")
     String seePrivacyPolicy();
 
-    /**
-     * @return translation
-     */
-    @DefaultStringValue("-- please select --")
-    String selectPrompt();
-
     /**
      * @return translation
      */
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/presenter/LayoutPresenter.java b/www-client/src/main/java/fr/agrometinfo/www/client/presenter/LayoutPresenter.java
index 2b977aeaaf73fae78d3bb696539e372137820255..ed764cca0fdec896f4915da1f499f81f5dcec95b 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/presenter/LayoutPresenter.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/presenter/LayoutPresenter.java
@@ -108,6 +108,9 @@ public final class LayoutPresenter implements Presenter {
                 }
             }
         }
+        if ("0".equals(choice.getFeatureId())) {
+            choice.setFeatureId(null);
+        }
         mapPresenter.loadValues(choice, chosenIndicator);
         rightPanelPresenter.loadValues(choice);
     }
@@ -120,6 +123,30 @@ public final class LayoutPresenter implements Presenter {
     private void setPeriods(final List<PeriodDTO> list) {
         this.periods = list;
         view.setPeriods(list);
+
+        IndicatorServiceFactory.INSTANCE.getRegions() //
+        .onSuccess(this::setRegions) //
+        .onFailed(view::failureNotification) //
+        .send();
+    }
+
+    /**
+     * @param list regions with indicators
+     */
+    private void setRegions(final Map<String, String> list) {
+        view.setRegions(list);
+
+        IndicatorServiceFactory.INSTANCE.getYears() //
+        .onSuccess(this::setYears) //
+        .onFailed(view::failureNotification) //
+        .send();
+    }
+
+    /**
+     * @param list years of computed values
+     */
+    private void setYears(final List<Integer> list) {
+        view.setYears(list);
     }
 
     /**
@@ -146,14 +173,5 @@ public final class LayoutPresenter implements Presenter {
         .onFailed(view::failureNotification) //
         .send();
 
-        IndicatorServiceFactory.INSTANCE.getRegions() //
-        .onSuccess(view::setRegions) //
-        .onFailed(view::failureNotification) //
-        .send();
-
-        IndicatorServiceFactory.INSTANCE.getYears() //
-        .onSuccess(view::setYears) //
-        .onFailed(view::failureNotification) //
-        .send();
     }
 }
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/DominoSelectBuilder.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/DominoSelectBuilder.java
index 6e9173191f822fa0b26b6b8c8b8249e0e05f22ee..fdd5f050eda7427bf2ce10a78527b92ab63a6227 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/ui/DominoSelectBuilder.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/DominoSelectBuilder.java
@@ -8,8 +8,6 @@ import java.util.stream.Collectors;
 import org.dominokit.domino.ui.forms.Select;
 import org.dominokit.domino.ui.forms.SelectOption;
 
-import com.google.gwt.core.client.GWT;
-
 /**
  * Builder for a Domino {@link Select}, a component that allow selecting a
  * single option from a DropDownMenu.
@@ -59,7 +57,6 @@ public final class DominoSelectBuilder<T> extends SelectBuilder<T, Select<T>> {
     }
 
     private Select<T> getSelect() {
-        GWT.log("SelectBuilder.getSelect()");
         if (select == null) {
             select = Select.<T>create(prompt) //
                     .dropdown();
@@ -75,14 +72,31 @@ public final class DominoSelectBuilder<T> extends SelectBuilder<T, Select<T>> {
 
     @Override
     public DominoSelectBuilder<T> select(final T value) {
+        if (value == null) {
+            return this;
+        }
         select.select(createSelectOption(value));
         return this;
     }
 
     @Override
     public DominoSelectBuilder<T> setPrompt(final String text) {
+        if (select != null) {
+            throw new UnsupportedOperationException("Cannot change prompt after instantiation.");
+        }
         this.prompt = text;
         return this;
     }
 
+    /**
+     * Use an existing element.
+     *
+     * @param value existing select element
+     * @return same builder instance
+     */
+    public DominoSelectBuilder<T> setSelect(final Select<T> value) {
+        select = value;
+        return this;
+    }
+
 }
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/view/LayoutView.java b/www-client/src/main/java/fr/agrometinfo/www/client/view/LayoutView.java
index b0233e0329556ea9a6c662131994ebade684eab8..64352adc56be584bae797356f62c7056906d6358 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/view/LayoutView.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/view/LayoutView.java
@@ -1,8 +1,8 @@
 package fr.agrometinfo.www.client.view;
 
 import static org.jboss.elemento.Elements.a;
+import static org.jboss.elemento.Elements.div;
 import static org.jboss.elemento.Elements.li;
-import static org.jboss.elemento.Elements.select;
 
 import java.util.HashMap;
 import java.util.List;
@@ -11,22 +11,18 @@ import java.util.Map.Entry;
 import java.util.Optional;
 import java.util.StringJoiner;
 
+import org.dominokit.domino.ui.forms.Select;
 import org.dominokit.domino.ui.forms.SwitchButton;
 import org.dominokit.domino.ui.grid.flex.FlexItem;
-import org.dominokit.domino.ui.header.BlockHeader;
-import org.dominokit.domino.ui.icons.Icon;
 import org.dominokit.domino.ui.icons.Icons;
 import org.dominokit.domino.ui.icons.MdiIcon;
 import org.dominokit.domino.ui.layout.Layout;
 import org.dominokit.domino.ui.menu.Menu;
 import org.dominokit.domino.ui.menu.MenuItem;
 import org.dominokit.domino.ui.notifications.Notification;
-import org.dominokit.domino.ui.popover.PopupPosition;
-import org.dominokit.domino.ui.popover.Tooltip;
 import org.dominokit.domino.ui.style.Styles;
 import org.dominokit.domino.ui.utils.DominoElement;
 import org.dominokit.domino.ui.utils.ScreenMedia;
-import org.dominokit.domino.ui.utils.TextNode;
 import org.dominokit.rest.shared.request.FailedResponseBean;
 import org.jboss.elemento.Elements;
 import org.jboss.elemento.EmptyContentBuilder;
@@ -42,16 +38,14 @@ import elemental2.dom.HTMLAnchorElement;
 import elemental2.dom.HTMLDivElement;
 import elemental2.dom.HTMLElement;
 import elemental2.dom.HTMLImageElement;
-import elemental2.dom.HTMLSelectElement;
 import elemental2.dom.MouseEvent;
-import elemental2.dom.Text;
 import fr.agrometinfo.www.client.i18n.AppConstants;
 import fr.agrometinfo.www.client.i18n.AppMessages;
 import fr.agrometinfo.www.client.presenter.LayoutPresenter;
 import fr.agrometinfo.www.client.presenter.MapPresenter;
 import fr.agrometinfo.www.client.presenter.RightPanelPresenter;
 import fr.agrometinfo.www.client.ui.AgroclimAppsMenu;
-import fr.agrometinfo.www.client.ui.HTMLSelectElementBuilder;
+import fr.agrometinfo.www.client.ui.DominoSelectBuilder;
 import fr.agrometinfo.www.shared.dto.ChoiceDTO;
 import fr.agrometinfo.www.shared.dto.FeatureLevel;
 import fr.agrometinfo.www.shared.dto.IndicatorDTO;
@@ -73,6 +67,11 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
      */
     private static final String DEFAULT_INDICATOR = "meant";
 
+    /**
+     * Code of period to show by default.
+     */
+    private static final String DEFAULT_PERIOD = "year";
+
     /**
      * I18N constants.
      */
@@ -127,12 +126,12 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
     /**
      * Selector for indicators.
      */
-    private final HtmlContentBuilder<HTMLSelectElement> indicatorSelect = select();
+    private final Select<IndicatorDTO> indicatorSelect = Select.create(CSTS.chooseIndicator());
 
     /**
      * Selector for indicator periods.
      */
-    private final HtmlContentBuilder<HTMLSelectElement> periodSelect = select();
+    private final Select<PeriodDTO> periodSelect = Select.create(CSTS.choosePeriod());
 
     /**
      * Application layout.
@@ -142,16 +141,18 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
     /**
      * Selector for regions.
      */
-    private final HtmlContentBuilder<HTMLSelectElement> regionSelect = select();
+    private final Select<Entry<String, String>> regionSelect = Select.create(CSTS.chooseRegion());
 
     /**
      * Summary of available indicators.
      */
-    private final Text summary = TextNode.empty();
+    private final HtmlContentBuilder<HTMLDivElement> summary = div().css("p-b-15");
+
     /**
      * Selector for year.
      */
-    private final HtmlContentBuilder<HTMLSelectElement> yearSelect = select();
+    private final Select<Entry<String, String>> yearSelect = Select.create(CSTS.chooseYear());
+
     /**
      * Drop down menu for user actions.
      */
@@ -206,14 +207,13 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
         DomGlobal.console.info("initLayout()");
         choice.setLevel(FeatureLevel.REGION);
         layout = Layout.create("AgroMetInfo").show();
+        layout.css("app-layout");
         final EmptyContentBuilder<HTMLImageElement> logoElem = Elements.img("app/img/logo_etat-agrometinfo.svg");
         layout.setLogo(logoElem);
-        final HTMLDivElement contentElement = Elements.div().element();
+        final HTMLDivElement contentElement = div().element();
         contentElement.textContent = CSTS.applicationLoading();
         layout.getContentPanel().id(MapView.MAP_CONTAINER_ID);
         layout.getContentPanel().appendChild(contentElement);
-        layout.getLeftPanel().css("agrometinfo-leftsidebar");
-        layout.autoFixLeftPanel();
         layout.getRightPanel().css("agrometinfo-rightsidebar");
         layout.getNavigationBar().css("agrometinfo-navbar");
 
@@ -240,8 +240,16 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
 
     private void initLeftPanel() {
         GWT.log("initLeftPanel()");
+        layout.fixLeftPanelPosition();
+        layout.getLeftPanel().css("agrometinfo-leftsidebar");
         layout.setLeftPanelSize(Layout.LeftPanelSize.LARGE);
         layout.getLeftPanel().setPadding("15px");
+        layout.getNavigationBar().getMenuToggleItem().addClickListener(e -> {
+            if (!layout.getLeftPanel().isCollapsed()) {
+                layout.fixLeftPanelPosition();
+            }
+        });
+        layout.getLeftPanel().setTransitionDuration("0");
 
         // https://demo.dominokit.org/forms/basic-form-elements?theme=blue
         GWT.log("initLeftPanel() sumary");
@@ -259,56 +267,46 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
 
         //
         GWT.log("initLeftPanel() periods");
-        panel.appendChild(BlockHeader.create(CSTS.choosePeriod()).element());
         panel.appendChild(periodSelect);
-        new HTMLSelectElementBuilder<PeriodDTO>() //
+        new DominoSelectBuilder<PeriodDTO>() //
         .setSelect(periodSelect) //
-        .setPrompt(CSTS.selectPrompt()) //
         .addValueChangeHandler(this::onPeriodChange) //
         .build();
 
         //
         GWT.log("initLeftPanel() indicators");
-        panel.appendChild(BlockHeader.create(CSTS.chooseIndicator()).element());
         panel.appendChild(indicatorSelect);
-        new HTMLSelectElementBuilder<IndicatorDTO>() //
+        new DominoSelectBuilder<IndicatorDTO>() //
         .setSelect(indicatorSelect) //
-        .setPrompt(CSTS.selectPrompt()) //
         .addValueChangeHandler(this::onIndicatorChange) //
         .build();
 
         //
         GWT.log("initLeftPanel() regions");
-        panel.appendChild(BlockHeader.create(CSTS.chooseRegion()).element());
-        new HTMLSelectElementBuilder<Entry<String, String>>() //
+        panel.appendChild(regionSelect);
+        new DominoSelectBuilder<Entry<String, String>>() //
         .setSelect(regionSelect) //
-        .setPrompt(CSTS.metropolitanFrance()) //
         .addValueChangeHandler(this::onRegionChange) //
         .build();
-        panel.appendChild(regionSelect);
 
         //
         GWT.log("initLeftPanel() year");
-        panel.appendChild(BlockHeader.create(CSTS.chooseYear()));
-        new HTMLSelectElementBuilder<Entry<String, String>>() //
+        panel.appendChild(yearSelect);
+        new DominoSelectBuilder<Entry<String, String>>() //
         .setSelect(yearSelect) //
-        .setPrompt(CSTS.selectPrompt()) //
         .addValueChangeHandler(this::onYearChange);
-        panel.appendChild(yearSelect);
 
         //
         GWT.log("initLeftPanel() comparison");
-        final Icon infoIcon = Icons.ACTION_ICONS.info_outline();
-        panel.appendChild(BlockHeader.create(CSTS.normalComparison()));
-        final SwitchButton comparisonBtn = SwitchButton.create() //
-                .setOnTitle(CSTS.yes()) //
-                .setOffTitle(CSTS.no()) //
+        final SwitchButton comparisonBtn = SwitchButton.create(CSTS.normalComparison(), CSTS.yes(), CSTS.no()) //
                 .value(false);
         comparisonBtn.addChangeHandler(this::onComparisonChange);
-        comparisonBtn.getOnOffLabelElement().add(infoIcon);
-        Tooltip.create(infoIcon, "") //
-        .position(PopupPosition.RIGHT) //
-        .getInnerElement().setInnerHtml(CSTS.normalComparisonTooltip());
+        final HTMLElement info = Elements.createElement("details", HTMLElement.class);
+        final HTMLElement sum = Elements.createElement("summary", HTMLElement.class);
+        sum.innerHTML = "<i class='material-icons'>info_outline</i>";
+        info.innerHTML = CSTS.normalComparisonTooltip();
+        info.append(sum);
+        comparisonBtn.getFieldContainer().getFirstChild().appendChild(info);
         panel.appendChild(comparisonBtn);
 
         // finally
@@ -416,17 +414,20 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
             return;
         }
         DomGlobal.console.info("Indicators : " + list);
-        new HTMLSelectElementBuilder<IndicatorDTO>() //
+        final IndicatorDTO defaultIndicator = list.stream() //
+                .filter(i -> DEFAULT_INDICATOR.equals(i.getCode())) //
+                .findFirst().orElse(null);
+        new DominoSelectBuilder<IndicatorDTO>() //
         .setSelect(indicatorSelect) //
         .setTextFunction(IndicatorDTO::getDescription) //
         .setValueFunction(IndicatorDTO::getCode) //
         .removeOptions() //
         .addOptions(list) //
+        .select(defaultIndicator) //
         .build();
         // select "meant"
-        if (list.stream().map(IndicatorDTO::getCode).anyMatch(DEFAULT_INDICATOR::equals)) {
-            indicatorSelect.element().value = DEFAULT_INDICATOR;
-            onIndicatorChange(DEFAULT_INDICATOR);
+        if (defaultIndicator != null) {
+            onIndicatorChange(defaultIndicator.getCode());
         } else {
             onChoiceChange();
         }
@@ -491,31 +492,41 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
         final StringJoiner sj = new StringJoiner(" ");
         sj.add(MSGS.nbOfIndicatorPeriods(list.size()));
         sj.add(MSGS.nbOfIndicators(list.stream().mapToInt(c -> c.getIndicators().size()).sum()));
-        summary.textContent = sj.toString();
+        summary.textContent(sj.toString());
 
         if (this.periods.isEmpty()) {
             return;
         }
         // display periods
         DomGlobal.console.info("Periods : " + list);
-        new HTMLSelectElementBuilder<PeriodDTO>() //
+        final PeriodDTO defaultPeriod = list.stream() //
+                .filter(i -> DEFAULT_PERIOD.equals(i.getCode())) //
+                .findFirst().orElse(null);
+
+        new DominoSelectBuilder<PeriodDTO>() //
         .setSelect(periodSelect) //
         .setTextFunction(PeriodDTO::getDescription) //
         .setValueFunction(PeriodDTO::getCode) //
         .addOptions(list) //
+        .select(defaultPeriod) //
         .build();
         // select "year"
-        periodSelect.element().value = "year";
-        onPeriodChange(periodSelect.element().value);
+        onPeriodChange(periodSelect.getValue().getCode());
     }
 
     @Override
     public void setRegions(final Map<String, String> list) {
-        new HTMLSelectElementBuilder<Entry<String, String>>() //
+        final String metropolitanFranceCode = "0";
+        list.computeIfPresent(metropolitanFranceCode, (k, v) -> CSTS.metropolitanFrance());
+        final Entry<String, String> defaultRegion = list.entrySet().stream() //
+                .filter(e -> metropolitanFranceCode.equals(e.getKey())) //
+                .findFirst().orElse(null);
+        new DominoSelectBuilder<Entry<String, String>>() //
         .setSelect(regionSelect) //
         .setTextFunction(Entry<String, String>::getValue) //
         .setValueFunction(Entry<String, String>::getKey) //
         .addOptions(list.entrySet()) //
+        .select(defaultRegion) //
         .build();
     }
 
@@ -530,17 +541,16 @@ public final class LayoutView extends AbstractBaseView<LayoutPresenter> implemen
     public void setYears(final List<Integer> list) {
         final Map<String, String> yearOptions = new HashMap<>();
         list.forEach(y -> yearOptions.put(String.valueOf(y), String.valueOf(y)));
-        new HTMLSelectElementBuilder<Entry<String, String>>() //
+        final Optional<Integer> defaultYear = list.stream().max(Integer::compare);
+        final Entry<String, String> yearEntry = yearOptions.entrySet().stream() //
+                .filter(e -> e.getKey().equals(String.valueOf(defaultYear.get()))) //
+                .findFirst().orElse(null);
+        new DominoSelectBuilder<Entry<String, String>>() //
         .setSelect(yearSelect) //
         .setTextFunction(Entry<String, String>::getValue) //
         .setValueFunction(Entry<String, String>::getKey) //
+        .select(yearEntry) //
         .addOptions(yearOptions.entrySet());
-        final Optional<Integer> defaultYear = list.stream().max(Integer::compare);
-        defaultYear.ifPresent(year -> {
-            yearSelect.element().value = year.toString();
-            choice.setYear(year);
-            onChoiceChange();
-        });
     }
 
     /**
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/view/MapView.java b/www-client/src/main/java/fr/agrometinfo/www/client/view/MapView.java
index 883662ffbd4364c88a8e1ef45fca5715bad00341..1be14d51c922320e7d1f3fbc71ff1a99c2d212b7 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/view/MapView.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/view/MapView.java
@@ -247,11 +247,19 @@ public final class MapView extends HtmlContentBuilder<HTMLElement> implements Ma
      * Mouse click interaction to select a cell.
      */
     private void addClickInteractions() {
+        final int strokeWidth = 3;
         final SelectOptions selectOptions = new SelectOptions();
         selectOptions.setCondition(Condition.getClick());
         selectOptions.setMulti(false);
-        final Style style = createCellStyle(Color.getColorFromString("blue"), new Color(255, 0, 0, 0.5f));
-        selectOptions.setStyle((f, r) -> new Style[] {style});
+        selectOptions.setStyle((f, r) -> {
+            final Double value = getValue(f);
+            final String color = "#" + ColorSequenceManager.getColorForValue(colorIntervals, value);
+            final Color background = Color.getColorFromString(color);
+            final Color foreground = Color.getColorFromString("#333333");
+            final Style style = createCellStyle(foreground, background);
+            style.getStroke().setWidth(strokeWidth);
+            return new Style[] {style};
+        });
 
         // create a select interaction
         final Select selectFeature = new Select(selectOptions);
diff --git a/www-client/src/main/resources/fr/agrometinfo/www/client/i18n/AppConstants_fr.properties b/www-client/src/main/resources/fr/agrometinfo/www/client/i18n/AppConstants_fr.properties
index 06f764da5451bec616e5b5d3a91ffb882bf187ac..e744828152a53b94eb415758cab3081bb1b308ad 100644
--- a/www-client/src/main/resources/fr/agrometinfo/www/client/i18n/AppConstants_fr.properties
+++ b/www-client/src/main/resources/fr/agrometinfo/www/client/i18n/AppConstants_fr.properties
@@ -33,10 +33,9 @@ metropolitanFrance = France métropolitaine
 monthlyValues = Valeurs mensuelles
 no= Non
 normalComparison= Comparaison à la normale
-normalComparisonTooltip= <b>La comparaison à la normale</b> <em>se calcule en soustrayant <b>la moyenne de l’indicateur choisi</b> pour les trente dernières années (1990-2020) de <b>l’année sélectionnée</b>
+normalComparisonTooltip= <b>La comparaison à la normale</b> se calcule en soustrayant <b>la moyenne de l’indicateur choisi</b> pour les trente dernières années (1990-2020) de <b>l’année sélectionnée</b>.
 otherAgroclimApps = Autres services et outils d’AgroClim
 seePrivacyPolicy = Consultez le paragraphe « Données personnelles » dans les mentions légales.
-selectPrompt = -- sélectionner --
 toggleRightPanel = Afficher / masquer le panneau de droite
 userProfile = Compte et paramètres
 whyConnectionIsRequired = Vous devez vous identifier pour accéder à AgroMetInfo en raison des accords avec Météo-France relatifs aux échanges de données SAFRAN avec AgroClim.
diff --git a/www-client/src/main/resources/fr/agrometinfo/www/client/public/style.css b/www-client/src/main/resources/fr/agrometinfo/www/client/public/style.css
index da5b32741382af858c45b1881fa5b3239caa98e9..8387db5ac883b7be2af90403c9a040f4f5739ae1 100644
--- a/www-client/src/main/resources/fr/agrometinfo/www/client/public/style.css
+++ b/www-client/src/main/resources/fr/agrometinfo/www/client/public/style.css
@@ -108,8 +108,12 @@ select {
     padding-bottom: 6px;
     padding-top: 6px;
 }
+.app-layout > .overlay {
+    z-index: 0;
+    visibility: hidden;
+}
 .float-right {
-	float: right;
+    float: right;
 }
 div.idp {
     padding: 0.5em;
@@ -178,25 +182,25 @@ div.idp {
     --logo-height: 50px;
 }
 @media screen and (max-width: 450px) {
-	.navbar-brand {
-		display: none;
-	}
+    .navbar-brand {
+        display: none;
+    }
 }
 @media screen and (max-width: 700px) {
-	:root {
-		--rightsidebar-padding: 1em;
-		--rightsidebar-width: 90%;
-	}
+    :root {
+        --rightsidebar-padding: 1em;
+        --rightsidebar-width: 90%;
+    }
 }
 @media screen and (min-width: 700px) {
-	:root {
-		--rightsidebar-padding: 0.5em;
-		--rightsidebar-width: 400px;
-	}
+    :root {
+        --rightsidebar-padding: 0.5em;
+        --rightsidebar-width: 400px;
+    }
 }
 @media screen and (min-width: 1200px) {
-	:root {
-		--rightsidebar-padding: 1em;
-		--rightsidebar-width: 600px;
-	}
+    :root {
+        --rightsidebar-padding: 1em;
+        --rightsidebar-width: 600px;
+    }
 }
diff --git a/www-server/src/main/java/fr/agrometinfo/www/server/rs/IndicatorResource.java b/www-server/src/main/java/fr/agrometinfo/www/server/rs/IndicatorResource.java
index aa31c1eb903177e69062626a555eea06d163ad40..b5e993f1a448a8f3e12c06bb9cd7723f0772d997 100644
--- a/www-server/src/main/java/fr/agrometinfo/www/server/rs/IndicatorResource.java
+++ b/www-server/src/main/java/fr/agrometinfo/www/server/rs/IndicatorResource.java
@@ -255,19 +255,35 @@ public class IndicatorResource implements IndicatorService {
         final LocalDate yearAgo = date.minusYears(1);
         final SimpleFeature parentFeature;
         final String featureName;
-        Integer regionId;
-        try {
-            regionId = Integer.valueOf(id);
-        } catch (final NumberFormatException e) {
-            regionId = null;
-        }
-        if (regionId == null) {
-            featureName = null;
-            averageValue = praDailyValueDao.findAverageComputedValue(indicator, date);
-            comparedValue = praDailyValueDao.findAverageComparedValue(indicator, date);
-            tmpDailyValues = praDailyValueDao.findDailyValues(indicator, yearAgo, date);
-            monthlyValues = toMonthlyValues(monthlyValueDao.find(indicator, date), i18n);
-            parentFeature = null;
+        if (level == FeatureLevel.REGION) {
+            Integer regionId;
+            final Region region;
+            try {
+                regionId = Integer.valueOf(id);
+            } catch (final NumberFormatException e) {
+                regionId = null;
+            }
+            if (regionId != null) {
+                region = regionDao.find(regionId);
+            } else {
+                region = null;
+            }
+            if (region == null) {
+                // Metropolitan France
+                featureName = null;
+                averageValue = praDailyValueDao.findAverageComputedValue(indicator, date);
+                comparedValue = praDailyValueDao.findAverageComparedValue(indicator, date);
+                tmpDailyValues = praDailyValueDao.findDailyValues(indicator, yearAgo, date);
+                monthlyValues = toMonthlyValues(monthlyValueDao.find(indicator, date), i18n);
+                parentFeature = null;
+            } else {
+                averageValue = praDailyValueDao.findAverageComputedValue(indicator, date, regionId);
+                comparedValue = praDailyValueDao.findAverageComparedValue(indicator, date, regionId);
+                tmpDailyValues = praDailyValueDao.findDailyValues(indicator, yearAgo, date, region);
+                monthlyValues = toMonthlyValues(monthlyValueDao.find(indicator, date, region), i18n);
+                featureName = region.getName();
+                parentFeature = null;
+            }
         } else if (level == FeatureLevel.PRA) {
             final Pra pra = praDao.findByCode(id);
             final PraDailyValue value = praDailyValueDao.find(indicator, date, pra);
@@ -281,13 +297,7 @@ public class IndicatorResource implements IndicatorService {
             parentFeature.setLevel(FeatureLevel.REGION);
             parentFeature.setName(pra.getDepartment().getRegion().getName());
         } else {
-            final Region region = regionDao.find(regionId);
-            averageValue = praDailyValueDao.findAverageComputedValue(indicator, date, regionId);
-            comparedValue = praDailyValueDao.findAverageComparedValue(indicator, date, regionId);
-            tmpDailyValues = praDailyValueDao.findDailyValues(indicator, yearAgo, date, region);
-            monthlyValues = toMonthlyValues(monthlyValueDao.find(indicator, date, region), i18n);
-            featureName = region.getName();
-            parentFeature = null;
+            throw new UnsupportedOperationException("Level not handled: " + level);
         }
         tmpDailyValues.forEach((d, v) -> dailyValues.put(DateUtils.toDate(d), v));
 
@@ -295,7 +305,7 @@ public class IndicatorResource implements IndicatorService {
         choice.setIndicator(indicatorUid);
         choice.setLevel(level);
         choice.setPeriod(periodCode);
-        choice.setFeatureId(String.valueOf(regionId));
+        choice.setFeatureId(id);
         choice.setYear(year);
         final var dto = new SummaryDTO();
         if (averageValue != null) {