diff --git a/sql/migration.sql b/sql/migration.sql
index 74f8b28755ce8e9cfdfedb4f90f788d4825a3337..83d6144c921cb3e3255775bce4ad9abf11071c8a 100644
--- a/sql/migration.sql
+++ b/sql/migration.sql
@@ -161,7 +161,7 @@ language plpgsql;
 --
 CREATE OR REPLACE FUNCTION upgrade20240306() RETURNS boolean AS $BODY$
 BEGIN
-	CREATE INDEX IF NOT EXISTS "IX_dailyvalue" ON dailyvalue USING btree (date, indicator);
+	CREATE INDEX IF NOT EXISTS "IX_dailyvalue" ON dailyvalue (date, indicator);
 	ALTER TABLE indicator DROP COLUMN aggregationtype;
 	DROP TYPE AGGREGATIONTYPE;
 	RETURN true;
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasAttributions.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasAttributions.java
index ed0c22161cfa82ab66802597e756abe0749e6c41..694ae77c655f4f499fc75d02669e32dc89552617 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasAttributions.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasAttributions.java
@@ -108,7 +108,7 @@ public final class CanvasAttributions extends CanvasWidget {
         div.setInnerHTML(sj.toString());
         final String line = div.getInnerText().trim();
         final Context2d ctx = canvas.getContext2d();
-        ctx.setFont("8px \"Helvetica Neue\", Helvetica, Arial, sans-serif");
+        ctx.setFont("8px " + FONT_FAMILY);
         final TextMetrics measure = ctx.measureText(line);
         final double width = measure.getWidth();
         ctx.setFillStyle("rgba(255, 255, 255, .8)");
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasTitle.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasTitle.java
index 54ee830c20b7cae17a01722caac5e2efa86a024d..d06fe055f74ac9e80306d4f09abf1c6359cbe650 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasTitle.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasTitle.java
@@ -81,6 +81,11 @@ public final class CanvasTitle extends CanvasWidget {
      */
     private List<ColorInterval> colorIntervals;
 
+    /**
+     * The application logo.
+     */
+    private final ImageElement logoImg = Document.get().createImageElement();
+
     /**
      * Constructor.
      *
@@ -88,6 +93,8 @@ public final class CanvasTitle extends CanvasWidget {
      */
     public CanvasTitle(final Map map) {
         super(map);
+        // Load the image once for all
+        logoImg.setSrc("app/img/logo_etat-agrometinfo.svg");
     }
 
     /**
@@ -97,7 +104,7 @@ public final class CanvasTitle extends CanvasWidget {
     protected void draw() {
         final int availableWidth = getWidth() - LOGO_WIDTH - BORDER_SIZE * 2;
         final Context2d ctx = getCanvas().getContext2d();
-        ctx.setFont("10px \"Helvetica Neue\", Helvetica, Arial, sans-serif");
+        ctx.setFont("10px " + FONT_FAMILY);
         final List<String> lines = new ArrayList<>();
         for (final String line : title) {
             if (line == null) {
@@ -142,9 +149,7 @@ public final class CanvasTitle extends CanvasWidget {
      */
     private void drawLogo() {
         final Context2d ctx = getCanvas().getContext2d();
-        final ImageElement img = Document.get().createImageElement();
-        img.setSrc("app/img/logo_etat-agrometinfo.svg");
-        ctx.drawImage(img, //
+        ctx.drawImage(logoImg, //
                 0d + BORDER_SIZE + PADDING, //
                 0d + BORDER_SIZE + PADDING, //
                 LOGO_WIDTH, //
@@ -164,7 +169,7 @@ public final class CanvasTitle extends CanvasWidget {
         final double cellBottom = cellTop + cellHeight;
         final double labelTop = cellBottom + LINE_HEIGHT;
         final Context2d ctx = getCanvas().getContext2d();
-        ctx.setFont("11px \"Helvetica Neue\", Helvetica, Arial, sans-serif");
+        ctx.setFont("11px " + FONT_FAMILY);
         double x = PADDING;
         for (final ColorInterval value : colorIntervals) {
             final String line = NUMBER_FORMAT.format(value.getMin());
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasWidget.java b/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasWidget.java
index 3d39e77e9bcb98bcd30a8dd3d55a1928e4ca798c..e56dd761911681f293685693ac5e8fdadba943a4 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasWidget.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/ui/map/CanvasWidget.java
@@ -12,6 +12,11 @@ import ol.Map;
  * @author Olivier Maury
  */
 abstract class CanvasWidget {
+    /**
+     * The same font-family as in style.css.
+     */
+    protected static final String FONT_FAMILY = "\"Roboto\", Arial, Tahoma, sans-serif";
+
     /**
      * OpenLayers map.
      */
diff --git a/www-client/src/main/java/fr/agrometinfo/www/client/util/ApplicationUtils.java b/www-client/src/main/java/fr/agrometinfo/www/client/util/ApplicationUtils.java
index 1c3b17de6bfad157b7705a782a21ced155d88a97..8157450828f583668ea641eab1201dcfceb07161 100644
--- a/www-client/src/main/java/fr/agrometinfo/www/client/util/ApplicationUtils.java
+++ b/www-client/src/main/java/fr/agrometinfo/www/client/util/ApplicationUtils.java
@@ -22,10 +22,10 @@ public interface ApplicationUtils {
     }
 
     /**
-     * @return attributions for map.
+     * @return attributions for map and chart.
      */
     static String getAttributions() {
-        return "© INRAE AgroClim - AgroMetInfo - " + ApplicationUtils.getVersion() + " (etalab-2.0)";
+        return "© INRAE AgroClim − AgroMetInfo (etalab-2.0)";
     }
 
     /**
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 b806d53b9591cebd0e4d36913a1c42d079072aef..6acdf6e6d3860992cb8a521dcc8595e9ffd71a25 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
@@ -377,6 +377,11 @@ implements LayoutPresenter.View, LoadingHandler {
     private void initRibbon() {
         final String version = ApplicationUtils.getVersion().replace("-SNAPSHOT", "…") + " β";
         DomGlobal.document.body.append(Elements.span().css("ribbon").textContent(version).element());
+        final List<DominoElement<HTMLElement>> elems = layout.getNavigationBar().getNavBarHeader()
+                .querySelectorAll(".navbar-brand");
+        if (elems != null && !elems.isEmpty()) {
+            elems.get(0).appendChild(Elements.span().css("version").textContent(version));
+        }
     }
 
     private void initTopBar() {
diff --git a/www-client/src/main/resources/fr/agrometinfo/www/client/i18n/AppMessages_fr.properties b/www-client/src/main/resources/fr/agrometinfo/www/client/i18n/AppMessages_fr.properties
index d68e9dc8d1963270ed2e43d74836e1283ce014a5..bda912ed97411ada124288ccf77e8be4fc0787db 100644
--- a/www-client/src/main/resources/fr/agrometinfo/www/client/i18n/AppMessages_fr.properties
+++ b/www-client/src/main/resources/fr/agrometinfo/www/client/i18n/AppMessages_fr.properties
@@ -3,7 +3,7 @@ averageValue = Valeur moyenne de l’indicateur {0} ({1}) en {2} sur {3}
 cell = Maille n°{0}
 chartSubtitle = {0,date,medium}. Unité : {1}
 comparedValue = Écart moyen de la valeur de l’indicateur {0} ({1}) en {2} sur {3}
-computedOn = Calculé le {0,date,long}
+computedOn = Calcul du {0,date,long}
 failureResponse = La communication avec le serveur a échoué : {0}
 failureStatusCode = Code d’état HTTP : {0}
 nbOfIndicatorPeriods[\=0] = Aucune période.
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 10d45a26b150a95e536d31e74f36ce39d13b1762..306dadd2b0e0ca39812179c1a8876d8a37736648 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
@@ -182,6 +182,15 @@ details.card-details[open] > summary i {
     background-color: white;
     height: var(--logo-height);
 }
+body > .modal-backdrop {
+    z-index: 5;
+}
+.navbar-brand > .version {
+    font-size: 0.5em;
+    padding-left: 0.5em;
+    position: relative;
+    top: 0.5em;
+}
 .ribbon {
     color: white;
     font-size: 12px;
@@ -246,10 +255,14 @@ details.card-details[open] > summary i {
 :root {
     --logo-height: 50px;
 }
-@media screen and (max-width: 700px) {
-    .ribbon {
-        display: none;
+@media screen and (max-width: 380px) {
+    .navbar-brand > .version {
+	    left: 2.1em;
+        float: left;
+        top: -0.8em;
     }
+}
+@media screen and (max-width: 700px) {
     :root {
         --rightsidebar-padding: 1em;
         --rightsidebar-width: 90%;
@@ -261,6 +274,16 @@ details.card-details[open] > summary i {
         --rightsidebar-width: 400px;
     }
 }
+@media screen and (max-width: 800px) {
+    .ribbon {
+        display: none;
+    }
+}
+@media screen and (min-width: 800px) {
+    .navbar-brand > .version {
+        display: none;
+    }
+}
 @media screen and (min-width: 1200px) {
     :root {
         --rightsidebar-padding: 1em;