{"id":61168,"date":"2026-07-29T17:13:27","date_gmt":"2026-07-29T15:13:27","guid":{"rendered":"https:\/\/alertes-meteo.com\/?page_id=61168"},"modified":"2026-07-29T19:05:21","modified_gmt":"2026-07-29T17:05:21","slug":"ecart-a-la-moyenne-des-temperatures-par-mois","status":"publish","type":"page","link":"https:\/\/alertes-meteo.com\/index.php\/climatologie\/ecart-a-la-moyenne-des-temperatures-par-mois\/","title":{"rendered":"\u00c9cart \u00e0 la moyenne des temp\u00e9ratures par mois"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1575px;margin-left: calc(-5% \/ 2 );margin-right: calc(-5% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-blend:overlay;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:2.375%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:2.375%;--awb-width-medium:100%;--awb-spacing-right-medium:2.375%;--awb-spacing-left-medium:2.375%;--awb-width-small:100%;--awb-spacing-right-small:2.375%;--awb-spacing-left-small:2.375%;\"><div class=\"fusion-column-wrapper fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-1\"><h1 style=\"text-align: center;\">\u00c9carts aux normales en France depuis 1921<\/h1>\n<p class=\"my-2 &#091;&amp;+p&#093;:mt-4 &#091;&amp;_strong:has(+br)&#093;:inline-block &#091;&amp;_strong:has(+br)&#093;:align-top\">L\u2019\u00e9cart \u00e0 la moyenne des temp\u00e9ratures par mois, qu\u2019on appelle aussi \u00ab\u202fanomalie mensuelle de temp\u00e9rature\u202f\u00bb, indique de combien un mois donn\u00e9 a \u00e9t\u00e9 plus chaud ou plus froid que la normale climatique de r\u00e9f\u00e9rence.<br \/>\nEn France, cette normale est actuellement calcul\u00e9e sur 30 ans, la p\u00e9riode 1991\u20112020, \u00e0 partir de millions de mesures de stations r\u00e9parties sur le territoire.<\/p>\n<p>Concr\u00e8tement, on fait la moyenne des temp\u00e9ratures du mois (par exemple toutes les valeurs d\u2019ao\u00fbt 2024), puis on la compare \u00e0 la moyenne des mois d\u2019ao\u00fbt sur la p\u00e9riode de r\u00e9f\u00e9rence\u202f: la diff\u00e9rence, exprim\u00e9e en degr\u00e9s, est l\u2019\u00e9cart \u00e0 la moyenne.<\/p>\n<p>Un \u00e9cart de +2\u202f\u00b0C signifie que le mois a \u00e9t\u00e9 2\u202f\u00b0C plus chaud que la normale, un \u00e9cart de \u20131\u202f\u00b0C qu\u2019il a \u00e9t\u00e9 1\u202f\u00b0C plus frais que d\u2019habitude. Ces anomalies peuvent \u00eatre calcul\u00e9es \u00e0 l\u2019\u00e9chelle de la France, d\u2019une r\u00e9gion ou d\u2019une station m\u00e9t\u00e9o.<\/p>\n<p>De nombreux services climatologiques proposent des graphiques d\u2019\u00e9carts aux normales, mois par mois, depuis le d\u00e9but du XX\u1d49 si\u00e8cle, ce qui permet de visualiser la fr\u00e9quence des mois \u00ab\u202fau\u2011dessus\u202f\u00bb ou \u00ab\u202fau\u2011dessous\u202f\u00bb des valeurs de saison.<\/p>\n<p>\u00c0 l\u2019\u00e9chelle nationale, la multiplication r\u00e9cente des anomalies positives (mois plus chauds que la normale) illustre clairement le signal du r\u00e9chauffement climatique\u202f: les mois frais deviennent rares, tandis que les mois tr\u00e8s doux ou tr\u00e8s chauds se g\u00e9n\u00e9ralisent.<\/p>\n<\/div><div class=\"fusion-text fusion-text-2\"><p class=\"isSelectedEnd\">D\u00e9couvrez, \u00e0 travers nos graphiques, l\u2019\u00e9volution des \u00e9carts de temp\u00e9rature par rapport aux normales en France depuis 1921. Les donn\u00e9es sont disponibles mois par mois, de janvier \u00e0 d\u00e9cembre, mais \u00e9galement par saison et pour l\u2019ensemble de l\u2019ann\u00e9e.<\/p>\n<p>Pour conna\u00eetre les valeurs pr\u00e9cises, survolez simplement les barres de chaque histogramme avec votre souris.<\/p>\n<\/div><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"amj-widget\" data-amj-chart>\n  <div class=\"amj-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en janvier depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"amj-toggle-row\">\n    <button\n      class=\"amj-toggle\"\n      data-amj-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"amj-toggle-track\" aria-hidden=\"true\">\n        <span class=\"amj-toggle-dot\"><\/span>\n      <\/span>\n      <span data-amj-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"amj-content\" data-amj-content hidden>\n    <div class=\"amj-selection\" data-amj-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"amj-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"amj-stage\">\n        <svg\n          class=\"amj-svg\"\n          data-amj-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"amj-title amj-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"amj-title\">Anomalies de temp\u00e9rature en janvier en France, de 1921 \u00e0 2026<\/title>\n          <desc id=\"amj-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives sont rouges\n            et les valeurs n\u00e9gatives sont bleues. Chaque barre est interactive.\n          <\/desc>\n        <\/svg>\n        <div class=\"amj-tooltip\" data-amj-tooltip role=\"status\" aria-hidden=\"true\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"amj-legend\" aria-label=\"L\u00e9gende\">\n      <span><i class=\"amj-dot amj-dot-positive\"><\/i> Plus chaud que la normale<\/span>\n      <span><i class=\"amj-dot amj-dot-negative\"><\/i> Plus froid que la normale<\/span>\n    <\/div>\n\n    <p class=\"amj-source\">Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020<\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .amj-widget,\n  .amj-widget * {\n    box-sizing: border-box;\n  }\n\n  .amj-widget {\n    --amj-red: #e85236;\n    --amj-red-dark: #bd321d;\n    --amj-blue: #5c9ae3;\n    --amj-blue-dark: #2567b3;\n    --amj-grid: #dfe4ea;\n    --amj-ink: #17202a;\n    --amj-muted: #59636e;\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--amj-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .amj-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .amj-header p {\n    margin: 8px 0 0;\n    color: var(--amj-muted);\n    font-size: 15px;\n  }\n\n  .amj-toggle-row {\n    margin-top: 20px;\n  }\n\n  .amj-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition: color 0.16s ease, background 0.16s ease, border-color 0.16s ease;\n  }\n\n  .amj-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .amj-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .amj-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .amj-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .amj-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .amj-toggle.is-active .amj-toggle-track {\n    background: var(--amj-blue-dark);\n  }\n\n  .amj-toggle.is-active .amj-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .amj-content[hidden] {\n    display: none;\n  }\n\n  .amj-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .amj-selection strong {\n    color: var(--amj-ink);\n  }\n\n  .amj-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--amj-red);\n  }\n\n  .amj-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--amj-blue);\n  }\n\n  .amj-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .amj-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .amj-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .amj-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .amj-grid-line {\n    stroke: var(--amj-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amj-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amj-y-label,\n  .amj-x-label,\n  .amj-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .amj-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .amj-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .amj-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .amj-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .amj-bar-visible {\n    transition: opacity 0.14s ease, filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .amj-bar:hover .amj-bar-visible,\n  .amj-bar:focus .amj-bar-visible,\n  .amj-bar.is-selected .amj-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .amj-bar:focus-visible .amj-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amj-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .amj-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .amj-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .amj-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .amj-tooltip strong,\n  .amj-tooltip span {\n    display: block;\n  }\n\n  .amj-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .amj-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .amj-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .amj-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .amj-dot-positive {\n    background: var(--amj-red);\n  }\n\n  .amj-dot-negative {\n    background: var(--amj-blue);\n  }\n\n  .amj-source {\n    margin: 17px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .amj-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .amj-selection {\n      margin-top: 15px;\n    }\n\n    .amj-scroll {\n      padding-bottom: 7px;\n    }\n\n    .amj-stage {\n      min-width: 860px;\n    }\n\n    .amj-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .amj-toggle,\n    .amj-toggle-track,\n    .amj-toggle-dot,\n    .amj-bar-visible,\n    .amj-tooltip {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-amj-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.amjReady === \"true\") return;\n      widget.dataset.amjReady = \"true\";\n\n      const data = [\n        [1921, 1.5], [1922, -1.1], [1923, -1.3], [1924, -0.6], [1925, 0.1],\n        [1926, -0.4], [1927, -0.4], [1928, 0.4], [1929, -4.5], [1930, 1.4],\n        [1931, -1.0], [1932, 0.0], [1933, -2.9], [1934, -1.3], [1935, -2.4],\n        [1936, 2.2], [1937, 1.1], [1938, -0.3], [1939, 1.1], [1940, -6.0],\n        [1941, -4.1], [1942, -5.3], [1943, 1.0], [1944, 0.1], [1945, -6.1],\n        [1946, -3.5], [1947, -3.7], [1948, 1.3], [1949, -0.3], [1950, -2.1],\n        [1951, 0.1], [1952, -2.1], [1953, -4.2], [1954, -3.0], [1955, 0.4],\n        [1956, -0.2], [1957, -1.9], [1958, -0.8], [1959, -1.2], [1960, -1.3],\n        [1961, -1.1], [1962, 0.4], [1963, -6.1], [1964, -3.5], [1965, -0.8],\n        [1966, -1.9], [1967, -1.2], [1968, -1.2], [1969, 0.3], [1970, -0.3],\n        [1971, -1.5], [1972, -1.1], [1973, -1.8], [1974, 1.7], [1975, 1.7],\n        [1976, -0.7], [1977, -0.6], [1978, -1.3], [1979, -3.6], [1980, -2.2],\n        [1981, -1.3], [1982, 0.7], [1983, 0.8], [1984, -0.1], [1985, -5.8],\n        [1986, -0.5], [1987, -5.7], [1988, 2.2], [1989, -0.5], [1990, 0.3],\n        [1991, -0.7], [1992, -2.2], [1993, 1.3], [1994, 0.7], [1995, -0.1],\n        [1996, 1.0], [1997, -2.2], [1998, 0.5], [1999, 1.0], [2000, -0.9],\n        [2001, 0.9], [2002, 0.4], [2003, -1.6], [2004, 0.1], [2005, -0.2],\n        [2006, -1.8], [2007, 1.9], [2008, 1.6], [2009, -2.4], [2010, -3.1],\n        [2011, -0.4], [2012, 0.8], [2013, -0.8], [2014, 2.2], [2015, 0.1],\n        [2016, 1.6], [2017, -2.5], [2018, 2.9], [2019, -0.8], [2020, 1.7],\n        [2021, -0.6], [2022, -0.5], [2023, 0.9], [2024, 0.6], [2025, 0.5],\n        [2026, 0.2]\n      ];\n\n      const svg = widget.querySelector(\"[data-amj-svg]\");\n      const tooltip = widget.querySelector(\"[data-amj-tooltip]\");\n      const selection = widget.querySelector(\"[data-amj-selection]\");\n      const stage = widget.querySelector(\".amj-stage\");\n      const toggle = widget.querySelector(\"[data-amj-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-amj-toggle-label]\");\n      const content = widget.querySelector(\"[data-amj-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n\n      const contentId = `amj-chart-content-${widgetIndex + 1}`;\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n      const margin = { top: 28, right: 18, bottom: 62, left: 57 };\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -6.5;\n      const maxY = 3;\n      const ticks = [-6, -4, -2, 0, 2];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top + ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n        Object.entries(attrs).forEach(([name, value]) =>\n          element.setAttribute(name, value)\n        );\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value).toFixed(1).replace(\".\", \",\");\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0 ? \"amj-zero-line\" : \"amj-grid-line\"\n        });\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"amj-y-label\"\n        });\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"amj-axis-unit\"\n      });\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) pinnedBar.classList.remove(\"is-selected\");\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\"is-positive\", \"is-negative\", \"is-neutral\");\n        selection.classList.add(\n          value > 0 ? \"is-positive\" : value < 0 ? \"is-negative\" : \"is-neutral\"\n        );\n        selection.innerHTML =\n          `<strong>Janvier ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n        const tooltipX = Math.max(120, Math.min(rect.width - 120, clientX - rect.left));\n        const tooltipY = Math.max(82, clientY - rect.top);\n\n        tooltip.innerHTML =\n          `<strong>Janvier ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x = margin.left + index * slot + (slot - barW) \/ 2;\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n        const rectH = Math.max(1.2, Math.abs(zeroY - valueY));\n        const color = value >= 0 ? \"#e85236\" : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"amj-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\": `Janvier ${year}, \u00e9cart \u00e0 la normale ${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"amj-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"amj-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) hideTooltip();\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n          removeSelection();\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n        group.addEventListener(\"keydown\", (event) => {\n          if (event.key === \"Enter\" || event.key === \" \") selectBar(event);\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"amj-x-label\"\n        });\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (event.target === svg || event.target.classList.contains(\"amj-grid-line\")) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"amf-widget\" data-amf-chart>\n  <div class=\"amf-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en f\u00e9vrier depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"amf-toggle-row\">\n    <button\n      class=\"amf-toggle\"\n      data-amf-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"amf-toggle-track\" aria-hidden=\"true\">\n        <span class=\"amf-toggle-dot\"><\/span>\n      <\/span>\n      <span data-amf-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"amf-content\" data-amf-content hidden>\n    <div class=\"amf-selection\" data-amf-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"amf-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"amf-stage\">\n        <svg\n          class=\"amf-svg\"\n          data-amf-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"amf-title amf-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"amf-title\">Anomalies de temp\u00e9rature en f\u00e9vrier en France, de 1921 \u00e0 2026<\/title>\n          <desc id=\"amf-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives sont rouges\n            et les valeurs n\u00e9gatives sont bleues. Chaque barre est interactive.\n          <\/desc>\n        <\/svg>\n        <div class=\"amf-tooltip\" data-amf-tooltip role=\"status\" aria-hidden=\"true\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"amf-legend\" aria-label=\"L\u00e9gende\">\n      <span><i class=\"amf-dot amf-dot-positive\"><\/i> Plus chaud que la normale<\/span>\n      <span><i class=\"amf-dot amf-dot-negative\"><\/i> Plus froid que la normale<\/span>\n    <\/div>\n\n    <p class=\"amf-source\">Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020<\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .amf-widget,\n  .amf-widget * {\n    box-sizing: border-box;\n  }\n\n  .amf-widget {\n    --amf-red: #e85236;\n    --amf-red-dark: #bd321d;\n    --amf-blue: #5c9ae3;\n    --amf-blue-dark: #2567b3;\n    --amf-grid: #dfe4ea;\n    --amf-ink: #17202a;\n    --amf-muted: #59636e;\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--amf-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .amf-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .amf-header p {\n    margin: 8px 0 0;\n    color: var(--amf-muted);\n    font-size: 15px;\n  }\n\n  .amf-toggle-row {\n    margin-top: 20px;\n  }\n\n  .amf-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition: color 0.16s ease, background 0.16s ease, border-color 0.16s ease;\n  }\n\n  .amf-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .amf-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .amf-toggle-track {\n    position: relative;\n    display: inline-block;\n    flex: 0 0 auto;\n    width: 37px;\n    height: 21px;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .amf-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .amf-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .amf-toggle.is-active .amf-toggle-track {\n    background: var(--amf-blue-dark);\n  }\n\n  .amf-toggle.is-active .amf-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .amf-content[hidden] {\n    display: none;\n  }\n\n  .amf-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .amf-selection strong {\n    color: var(--amf-ink);\n  }\n\n  .amf-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--amf-red);\n  }\n\n  .amf-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--amf-blue);\n  }\n\n  .amf-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .amf-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .amf-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .amf-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .amf-grid-line {\n    stroke: var(--amf-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amf-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amf-y-label,\n  .amf-x-label,\n  .amf-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .amf-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .amf-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .amf-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .amf-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .amf-bar-visible {\n    transition: opacity 0.14s ease, filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .amf-bar:hover .amf-bar-visible,\n  .amf-bar:focus .amf-bar-visible,\n  .amf-bar.is-selected .amf-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .amf-bar:focus-visible .amf-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amf-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .amf-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .amf-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .amf-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .amf-tooltip strong,\n  .amf-tooltip span {\n    display: block;\n  }\n\n  .amf-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .amf-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .amf-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .amf-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .amf-dot-positive {\n    background: var(--amf-red);\n  }\n\n  .amf-dot-negative {\n    background: var(--amf-blue);\n  }\n\n  .amf-source {\n    margin: 17px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .amf-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .amf-selection {\n      margin-top: 15px;\n    }\n\n    .amf-scroll {\n      padding-bottom: 7px;\n    }\n\n    .amf-stage {\n      min-width: 860px;\n    }\n\n    .amf-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .amf-toggle,\n    .amf-toggle-track,\n    .amf-toggle-dot,\n    .amf-bar-visible,\n    .amf-tooltip {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-amf-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.amfReady === \"true\") return;\n      widget.dataset.amfReady = \"true\";\n\n      const data = [\n        [1921, -1.1], [1922, -0.2], [1923, 1.2], [1924, -3.3], [1925, 0.1],\n        [1926, 3.2], [1927, -0.6], [1928, 1.2], [1929, -5.2], [1930, -2.0],\n        [1931, -2.0], [1932, -4.4], [1933, -1.0], [1934, -2.4], [1935, -0.1],\n        [1936, -0.2], [1937, 2.1], [1938, -1.3], [1939, -0.4], [1940, -0.1],\n        [1941, -0.6], [1942, -5.7], [1943, 0.2], [1944, -3.6], [1945, 1.7],\n        [1946, 1.2], [1947, -3.3], [1948, -0.8], [1949, -0.4], [1950, 1.4],\n        [1951, -0.3], [1952, -2.5], [1953, -2.6], [1954, -3.1], [1955, -1.2],\n        [1956, -9.7], [1957, 2.0], [1958, 1.0], [1959, -0.4], [1960, 0.0],\n        [1961, 2.6], [1962, -1.6], [1963, -5.4], [1964, 0.3], [1965, -3.7],\n        [1966, 3.0], [1967, 0.4], [1968, -0.5], [1969, -2.8], [1970, -0.5],\n        [1971, -1.1], [1972, 0.8], [1973, -1.9], [1974, 0.4], [1975, 0.5],\n        [1976, -0.1], [1977, 1.9], [1978, -0.8], [1979, -0.7], [1980, 1.4],\n        [1981, -2.4], [1982, 0.3], [1983, -2.6], [1984, -1.7], [1985, -0.8],\n        [1986, -5.5], [1987, -1.2], [1988, -0.2], [1989, 0.6], [1990, 4.0],\n        [1991, -3.0], [1992, -0.3], [1993, -1.8], [1994, 0.3], [1995, 2.6],\n        [1996, -1.9], [1997, 2.1], [1998, 1.0], [1999, -0.9], [2000, 1.7],\n        [2001, 0.6], [2002, 2.4], [2003, -1.6], [2004, -0.1], [2005, -2.5],\n        [2006, -1.8], [2007, 2.4], [2008, 1.6], [2009, -0.9], [2010, -1.2],\n        [2011, 0.9], [2012, -4.2], [2013, -2.3], [2014, 1.7], [2015, -1.2],\n        [2016, 1.2], [2017, 2.1], [2018, -2.6], [2019, 1.8], [2020, 3.2],\n        [2021, 2.1], [2022, 2.0], [2023, 0.8], [2024, 3.5], [2025, 1.2],\n        [2026, 3.5]\n      ];\n\n      const svg = widget.querySelector(\"[data-amf-svg]\");\n      const tooltip = widget.querySelector(\"[data-amf-tooltip]\");\n      const selection = widget.querySelector(\"[data-amf-selection]\");\n      const stage = widget.querySelector(\".amf-stage\");\n      const toggle = widget.querySelector(\"[data-amf-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-amf-toggle-label]\");\n      const content = widget.querySelector(\"[data-amf-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n\n      const contentId = `amf-chart-content-${widgetIndex + 1}`;\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n      const margin = { top: 28, right: 18, bottom: 62, left: 57 };\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -10;\n      const maxY = 4.5;\n      const ticks = [-10, -8, -6, -4, -2, 0, 2, 4];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top + ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n        Object.entries(attrs).forEach(([name, value]) =>\n          element.setAttribute(name, value)\n        );\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value).toFixed(1).replace(\".\", \",\");\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0 ? \"amf-zero-line\" : \"amf-grid-line\"\n        });\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"amf-y-label\"\n        });\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"amf-axis-unit\"\n      });\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) pinnedBar.classList.remove(\"is-selected\");\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\"is-positive\", \"is-negative\", \"is-neutral\");\n        selection.classList.add(\n          value > 0 ? \"is-positive\" : value < 0 ? \"is-negative\" : \"is-neutral\"\n        );\n        selection.innerHTML =\n          `<strong>F\u00e9vrier ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n        const tooltipX = Math.max(120, Math.min(rect.width - 120, clientX - rect.left));\n        const tooltipY = Math.max(82, clientY - rect.top);\n\n        tooltip.innerHTML =\n          `<strong>F\u00e9vrier ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x = margin.left + index * slot + (slot - barW) \/ 2;\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n        const rectH = Math.max(1.2, Math.abs(zeroY - valueY));\n        const color = value >= 0 ? \"#e85236\" : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"amf-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\": `F\u00e9vrier ${year}, \u00e9cart \u00e0 la normale ${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"amf-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"amf-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) hideTooltip();\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n          removeSelection();\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n        group.addEventListener(\"keydown\", (event) => {\n          if (event.key === \"Enter\" || event.key === \" \") selectBar(event);\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"amf-x-label\"\n        });\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (event.target === svg || event.target.classList.contains(\"amf-grid-line\")) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"amm-widget\" data-amm-chart>\n  <div class=\"amm-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en mars depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"amm-toggle-row\">\n    <button\n      class=\"amm-toggle\"\n      data-amm-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"amm-toggle-track\" aria-hidden=\"true\">\n        <span class=\"amm-toggle-dot\"><\/span>\n      <\/span>\n      <span data-amm-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"amm-content\" data-amm-content hidden>\n    <div class=\"amm-selection\" data-amm-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"amm-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"amm-stage\">\n        <svg\n          class=\"amm-svg\"\n          data-amm-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"amm-title amm-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"amm-title\">Anomalies de temp\u00e9rature en mars en France, de 1921 \u00e0 2026<\/title>\n          <desc id=\"amm-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives sont rouges\n            et les valeurs n\u00e9gatives sont bleues. Chaque barre est interactive.\n          <\/desc>\n        <\/svg>\n\n        <div\n          class=\"amm-tooltip\"\n          data-amm-tooltip\n          role=\"status\"\n          aria-hidden=\"true\"\n        ><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"amm-legend\" aria-label=\"L\u00e9gende\">\n      <span>\n        <i class=\"amm-dot amm-dot-positive\"><\/i>\n        Plus chaud que la normale\n      <\/span>\n\n      <span>\n        <i class=\"amm-dot amm-dot-negative\"><\/i>\n        Plus froid que la normale\n      <\/span>\n    <\/div>\n\n    <p class=\"amm-source\">\n      Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .amm-widget,\n  .amm-widget * {\n    box-sizing: border-box;\n  }\n\n  .amm-widget {\n    --amm-red: #e85236;\n    --amm-red-dark: #bd321d;\n    --amm-blue: #5c9ae3;\n    --amm-blue-dark: #2567b3;\n    --amm-grid: #dfe4ea;\n    --amm-ink: #17202a;\n    --amm-muted: #59636e;\n\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--amm-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .amm-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .amm-header p {\n    margin: 8px 0 0;\n    color: var(--amm-muted);\n    font-size: 15px;\n  }\n\n  .amm-toggle-row {\n    margin-top: 20px;\n  }\n\n  .amm-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition:\n      color 0.16s ease,\n      background 0.16s ease,\n      border-color 0.16s ease;\n  }\n\n  .amm-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .amm-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .amm-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .amm-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .amm-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .amm-toggle.is-active .amm-toggle-track {\n    background: var(--amm-blue-dark);\n  }\n\n  .amm-toggle.is-active .amm-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .amm-content[hidden] {\n    display: none;\n  }\n\n  .amm-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .amm-selection strong {\n    color: var(--amm-ink);\n  }\n\n  .amm-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--amm-red);\n  }\n\n  .amm-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--amm-blue);\n  }\n\n  .amm-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .amm-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .amm-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .amm-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .amm-grid-line {\n    stroke: var(--amm-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amm-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amm-y-label,\n  .amm-x-label,\n  .amm-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .amm-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .amm-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .amm-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .amm-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .amm-bar-visible {\n    transition:\n      opacity 0.14s ease,\n      filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .amm-bar:hover .amm-bar-visible,\n  .amm-bar:focus .amm-bar-visible,\n  .amm-bar.is-selected .amm-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .amm-bar:focus-visible .amm-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amm-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .amm-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .amm-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .amm-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .amm-tooltip strong,\n  .amm-tooltip span {\n    display: block;\n  }\n\n  .amm-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .amm-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .amm-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .amm-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .amm-dot-positive {\n    background: var(--amm-red);\n  }\n\n  .amm-dot-negative {\n    background: var(--amm-blue);\n  }\n\n  .amm-source {\n    margin: 17px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .amm-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .amm-selection {\n      margin-top: 15px;\n    }\n\n    .amm-scroll {\n      padding-bottom: 7px;\n    }\n\n    .amm-stage {\n      min-width: 860px;\n    }\n\n    .amm-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .amm-bar-visible,\n    .amm-tooltip,\n    .amm-toggle,\n    .amm-toggle-track,\n    .amm-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-amm-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.ammReady === \"true\") return;\n      widget.dataset.ammReady = \"true\";\n\n      const data = [\n        [1921, -0.8], [1922, -1.4], [1923, -0.4], [1924, -1.2], [1925, -4.4],\n        [1926, -0.8], [1927, -0.3], [1928, -0.8], [1929, -1.1], [1930, -0.8],\n        [1931, -1.7], [1932, -2.1], [1933, 0.0], [1934, -1.8], [1935, -1.9],\n        [1936, 0.0], [1937, -2.3], [1938, 1.0], [1939, -2.9], [1940, -0.8],\n        [1941, -0.7], [1942, 0.4], [1943, 0.2], [1944, -3.5], [1945, -0.1],\n        [1946, -1.4], [1947, -0.2], [1948, 1.6], [1949, -2.4], [1950, -0.6],\n        [1951, -2.2], [1952, 0.4], [1953, -0.7], [1954, -0.4], [1955, -3.4],\n        [1956, -1.2], [1957, 1.9], [1958, -3.0], [1959, 0.7], [1960, 0.2],\n        [1961, 0.1], [1962, -4.0], [1963, -1.3], [1964, -2.2], [1965, -1.2],\n        [1966, -1.9], [1967, -0.2], [1968, -1.2], [1969, -1.3], [1970, -3.5],\n        [1971, -4.5], [1972, 0.0], [1973, -2.3], [1974, -0.6], [1975, -2.6],\n        [1976, -2.0], [1977, 0.5], [1978, -0.6], [1979, -1.0], [1980, -1.8],\n        [1981, 1.5], [1982, -1.6], [1983, -0.9], [1984, -2.8], [1985, -2.7],\n        [1986, -1.8], [1987, -2.9], [1988, -1.3], [1989, 1.4], [1990, 0.7],\n        [1991, 1.4], [1992, -0.3], [1993, -1.0], [1994, 1.6], [1995, -1.4],\n        [1996, -1.7], [1997, 1.6], [1998, 0.2], [1999, 0.3], [2000, -0.3],\n        [2001, 1.5], [2002, 0.8], [2003, 1.3], [2004, -1.4], [2005, -0.8],\n        [2006, -1.1], [2007, -0.3], [2008, -0.9], [2009, -0.6], [2010, -1.1],\n        [2011, 0.4], [2012, 1.5], [2013, -1.9], [2014, 0.7], [2015, 0.0],\n        [2016, -1.1], [2017, 1.9], [2018, -0.9], [2019, 1.0], [2020, 0.3],\n        [2021, -0.2], [2022, 0.8], [2023, 1.1], [2024, 1.6], [2025, 0.7],\n        [2026, 0.9]\n      ];\n\n      const svg = widget.querySelector(\"[data-amm-svg]\");\n      const tooltip = widget.querySelector(\"[data-amm-tooltip]\");\n      const selection = widget.querySelector(\"[data-amm-selection]\");\n      const stage = widget.querySelector(\".amm-stage\");\n      const toggle = widget.querySelector(\"[data-amm-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-amm-toggle-label]\");\n      const content = widget.querySelector(\"[data-amm-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `amm-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n      const margin = {\n        top: 28,\n        right: 18,\n        bottom: 62,\n        left: 57\n      };\n\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -5;\n      const maxY = 2.5;\n      const ticks = [-5, -4, -3, -2, -1, 0, 1, 2];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top + ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n\n        Object.entries(attrs).forEach(([name, value]) => {\n          element.setAttribute(name, value);\n        });\n\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value)\n          .toFixed(1)\n          .replace(\".\", \",\");\n\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0 ? \"amm-zero-line\" : \"amm-grid-line\"\n        });\n\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"amm-y-label\"\n        });\n\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"amm-axis-unit\"\n      });\n\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) {\n          pinnedBar.classList.remove(\"is-selected\");\n        }\n\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\n          \"is-positive\",\n          \"is-negative\",\n          \"is-neutral\"\n        );\n\n        selection.classList.add(\n          value > 0\n            ? \"is-positive\"\n            : value < 0\n              ? \"is-negative\"\n              : \"is-neutral\"\n        );\n\n        selection.innerHTML =\n          `<strong>Mars ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n\n        const tooltipX = Math.max(\n          120,\n          Math.min(rect.width - 120, clientX - rect.left)\n        );\n\n        const tooltipY = Math.max(\n          82,\n          clientY - rect.top\n        );\n\n        tooltip.innerHTML =\n          `<strong>Mars ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x =\n          margin.left +\n          index * slot +\n          (slot - barW) \/ 2;\n\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n        const rectH = Math.max(\n          1.2,\n          Math.abs(zeroY - valueY)\n        );\n\n        const color =\n          value >= 0\n            ? \"#e85236\"\n            : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"amm-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\":\n            `Mars ${year}, \u00e9cart \u00e0 la normale ` +\n            `${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"amm-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"amm-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) {\n            hideTooltip();\n          }\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n\n          removeSelection();\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n\n        group.addEventListener(\"keydown\", (event) => {\n          if (event.key === \"Enter\" || event.key === \" \") {\n            selectBar(event);\n          }\n\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"amm-x-label\"\n        });\n\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (\n          event.target === svg ||\n          event.target.classList.contains(\"amm-grid-line\")\n        ) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"amm-widget\" data-amm-chart>\n  <div class=\"amm-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en avril depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"amm-toggle-row\">\n    <button\n      class=\"amm-toggle\"\n      data-amm-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"amm-toggle-track\" aria-hidden=\"true\">\n        <span class=\"amm-toggle-dot\"><\/span>\n      <\/span>\n      <span data-amm-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"amm-content\" data-amm-content hidden>\n    <div class=\"amm-selection\" data-amm-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"amm-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"amm-stage\">\n        <svg\n          class=\"amm-svg\"\n          data-amm-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"amm-title amm-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"amm-title\">\n            Anomalies de temp\u00e9rature en avril en France, de 1921 \u00e0 2026\n          <\/title>\n\n          <desc id=\"amm-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives\n            sont rouges et les valeurs n\u00e9gatives sont bleues. Chaque barre est\n            interactive.\n          <\/desc>\n        <\/svg>\n\n        <div\n          class=\"amm-tooltip\"\n          data-amm-tooltip\n          role=\"status\"\n          aria-hidden=\"true\"\n        ><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"amm-legend\" aria-label=\"L\u00e9gende\">\n      <span>\n        <i class=\"amm-dot amm-dot-positive\"><\/i>\n        Plus chaud que la normale\n      <\/span>\n\n      <span>\n        <i class=\"amm-dot amm-dot-negative\"><\/i>\n        Plus froid que la normale\n      <\/span>\n    <\/div>\n\n    <p class=\"amm-source\">\n      Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .amm-widget,\n  .amm-widget * {\n    box-sizing: border-box;\n  }\n\n  .amm-widget {\n    --amm-red: #e85236;\n    --amm-red-dark: #bd321d;\n    --amm-blue: #5c9ae3;\n    --amm-blue-dark: #2567b3;\n    --amm-grid: #dfe4ea;\n    --amm-ink: #17202a;\n    --amm-muted: #59636e;\n\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--amm-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .amm-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .amm-header p {\n    margin: 8px 0 0;\n    color: var(--amm-muted);\n    font-size: 15px;\n  }\n\n  .amm-toggle-row {\n    margin-top: 20px;\n  }\n\n  .amm-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition:\n      color 0.16s ease,\n      background 0.16s ease,\n      border-color 0.16s ease;\n  }\n\n  .amm-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .amm-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .amm-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .amm-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .amm-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .amm-toggle.is-active .amm-toggle-track {\n    background: var(--amm-blue-dark);\n  }\n\n  .amm-toggle.is-active .amm-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .amm-content[hidden] {\n    display: none;\n  }\n\n  .amm-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .amm-selection strong {\n    color: var(--amm-ink);\n  }\n\n  .amm-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--amm-red);\n  }\n\n  .amm-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--amm-blue);\n  }\n\n  .amm-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .amm-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .amm-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .amm-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .amm-grid-line {\n    stroke: var(--amm-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amm-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amm-y-label,\n  .amm-x-label,\n  .amm-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .amm-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .amm-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .amm-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .amm-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .amm-bar-visible {\n    transition:\n      opacity 0.14s ease,\n      filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .amm-bar:hover .amm-bar-visible,\n  .amm-bar:focus .amm-bar-visible,\n  .amm-bar.is-selected .amm-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .amm-bar:focus-visible .amm-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .amm-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .amm-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .amm-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .amm-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .amm-tooltip strong,\n  .amm-tooltip span {\n    display: block;\n  }\n\n  .amm-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .amm-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .amm-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .amm-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .amm-dot-positive {\n    background: var(--amm-red);\n  }\n\n  .amm-dot-negative {\n    background: var(--amm-blue);\n  }\n\n  .amm-source {\n    margin: 17px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .amm-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .amm-selection {\n      margin-top: 15px;\n    }\n\n    .amm-scroll {\n      padding-bottom: 7px;\n    }\n\n    .amm-stage {\n      min-width: 860px;\n    }\n\n    .amm-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .amm-bar-visible,\n    .amm-tooltip,\n    .amm-toggle,\n    .amm-toggle-track,\n    .amm-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-amm-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.ammReady === \"true\") return;\n\n      widget.dataset.ammReady = \"true\";\n\n      const data = [\n        [1921, -1.7], [1922, -2.6], [1923, -1.1], [1924, -1.2], [1925, -1.5],\n        [1926, -0.3], [1927, -0.6], [1928, -1.2], [1929, -2.7], [1930, -0.8],\n        [1931, -1.6], [1932, -2.6], [1933, -0.3], [1934, 0.0], [1935, -1.4],\n        [1936, -2.2], [1937, -0.7], [1938, -2.8], [1939, -0.4], [1940, -1.0],\n        [1941, -2.7], [1942, 0.3], [1943, 1.0], [1944, 0.5], [1945, 1.6],\n        [1946, 0.6], [1947, 0.7], [1948, -0.2], [1949, 1.3], [1950, -2.2],\n        [1951, -1.5], [1952, 0.5], [1953, -0.4], [1954, -2.2], [1955, -0.5],\n        [1956, -2.5], [1957, -1.1], [1958, -2.8], [1959, -0.5], [1960, -1.0],\n        [1961, 1.4], [1962, -1.3], [1963, -0.8], [1964, -0.8], [1965, -1.7],\n        [1966, 0.3], [1967, -1.7], [1968, -0.6], [1969, -1.2], [1970, -2.7],\n        [1971, 0.2], [1972, -1.6], [1973, -2.9], [1974, -1.3], [1975, -1.5],\n        [1976, -1.7], [1977, -2.1], [1978, -2.7], [1979, -2.1], [1980, -2.2],\n        [1981, -0.4], [1982, -1.4], [1983, -1.4], [1984, -1.2], [1985, -0.4],\n        [1986, -3.5], [1987, 0.5], [1988, -0.1], [1989, -2.2], [1990, -1.5],\n        [1991, -1.8], [1992, -1.0], [1993, 0.0], [1994, -1.8], [1995, -0.7],\n        [1996, -0.3], [1997, -0.5], [1998, -1.1], [1999, -0.1], [2000, -0.3],\n        [2001, -1.4], [2002, 0.0], [2003, 0.5], [2004, -0.5], [2005, -0.1],\n        [2006, -0.1], [2007, 3.1], [2008, -0.9], [2009, 0.7], [2010, 0.4],\n        [2011, 2.8], [2012, -1.0], [2013, -0.6], [2014, 1.3], [2015, 0.9],\n        [2016, -0.6], [2017, -0.3], [2018, 2.1], [2019, 0.0], [2020, 2.4],\n        [2021, -1.3], [2022, 0.1], [2023, 0.0], [2024, 0.7], [2025, 1.7],\n        [2026, 2.3]\n      ];\n\n      const svg = widget.querySelector(\"[data-amm-svg]\");\n      const tooltip = widget.querySelector(\"[data-amm-tooltip]\");\n      const selection = widget.querySelector(\"[data-amm-selection]\");\n      const stage = widget.querySelector(\".amm-stage\");\n      const toggle = widget.querySelector(\"[data-amm-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-amm-toggle-label]\");\n      const content = widget.querySelector(\"[data-amm-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `amm-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n\n      const margin = {\n        top: 28,\n        right: 18,\n        bottom: 62,\n        left: 57\n      };\n\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -4;\n      const maxY = 4;\n      const ticks = [-4, -3, -2, -1, 0, 1, 2, 3, 4];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top +\n        ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n\n        Object.entries(attrs).forEach(([name, value]) => {\n          element.setAttribute(name, value);\n        });\n\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value)\n          .toFixed(1)\n          .replace(\".\", \",\");\n\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0\n            ? \"amm-zero-line\"\n            : \"amm-grid-line\"\n        });\n\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"amm-y-label\"\n        });\n\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"amm-axis-unit\"\n      });\n\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) {\n          pinnedBar.classList.remove(\"is-selected\");\n        }\n\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\n          \"is-positive\",\n          \"is-negative\",\n          \"is-neutral\"\n        );\n\n        selection.classList.add(\n          value > 0\n            ? \"is-positive\"\n            : value < 0\n              ? \"is-negative\"\n              : \"is-neutral\"\n        );\n\n        selection.innerHTML =\n          `<strong>Avril ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n\n        const tooltipX = Math.max(\n          120,\n          Math.min(\n            rect.width - 120,\n            clientX - rect.left\n          )\n        );\n\n        const tooltipY = Math.max(\n          82,\n          clientY - rect.top\n        );\n\n        tooltip.innerHTML =\n          `<strong>Avril ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x =\n          margin.left +\n          index * slot +\n          (slot - barW) \/ 2;\n\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n\n        const rectH = Math.max(\n          1.2,\n          Math.abs(zeroY - valueY)\n        );\n\n        const color = value >= 0\n          ? \"#e85236\"\n          : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"amm-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\":\n            `Avril ${year}, \u00e9cart \u00e0 la normale ` +\n            `${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"amm-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"amm-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) {\n            hideTooltip();\n          }\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n\n          removeSelection();\n\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n\n        group.addEventListener(\"keydown\", (event) => {\n          if (\n            event.key === \"Enter\" ||\n            event.key === \" \"\n          ) {\n            selectBar(event);\n          }\n\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"amm-x-label\"\n        });\n\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (\n          event.target === svg ||\n          event.target.classList.contains(\"amm-grid-line\")\n        ) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"may-widget\" data-may-chart>\n  <div class=\"may-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en mai depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"may-toggle-row\">\n    <button\n      class=\"may-toggle\"\n      data-may-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"may-toggle-track\" aria-hidden=\"true\">\n        <span class=\"may-toggle-dot\"><\/span>\n      <\/span>\n      <span data-may-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"may-content\" data-may-content hidden>\n    <div class=\"may-selection\" data-may-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"may-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"may-stage\">\n        <svg\n          class=\"may-svg\"\n          data-may-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"may-title may-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"may-title\">\n            Anomalies de temp\u00e9rature en mai en France, de 1921 \u00e0 2026\n          <\/title>\n\n          <desc id=\"may-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives\n            sont rouges et les valeurs n\u00e9gatives sont bleues. Chaque barre est\n            interactive.\n          <\/desc>\n        <\/svg>\n\n        <div\n          class=\"may-tooltip\"\n          data-may-tooltip\n          role=\"status\"\n          aria-hidden=\"true\"\n        ><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"may-legend\" aria-label=\"L\u00e9gende\">\n      <span>\n        <i class=\"may-dot may-dot-positive\"><\/i>\n        Plus chaud que la normale\n      <\/span>\n\n      <span>\n        <i class=\"may-dot may-dot-negative\"><\/i>\n        Plus froid que la normale\n      <\/span>\n    <\/div>\n\n    <p class=\"may-source\">\n      Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .may-widget,\n  .may-widget * {\n    box-sizing: border-box;\n  }\n\n  .may-widget {\n    --may-red: #e85236;\n    --may-blue: #5c9ae3;\n    --may-blue-dark: #2567b3;\n    --may-grid: #dfe4ea;\n    --may-ink: #17202a;\n    --may-muted: #59636e;\n\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--may-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .may-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .may-header p {\n    margin: 8px 0 0;\n    color: var(--may-muted);\n    font-size: 15px;\n  }\n\n  .may-toggle-row {\n    margin-top: 20px;\n  }\n\n  .may-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition:\n      color 0.16s ease,\n      background 0.16s ease,\n      border-color 0.16s ease;\n  }\n\n  .may-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .may-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .may-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .may-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .may-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .may-toggle.is-active .may-toggle-track {\n    background: var(--may-blue-dark);\n  }\n\n  .may-toggle.is-active .may-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .may-content[hidden] {\n    display: none;\n  }\n\n  .may-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .may-selection strong {\n    color: var(--may-ink);\n  }\n\n  .may-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--may-red);\n  }\n\n  .may-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--may-blue);\n  }\n\n  .may-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .may-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .may-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .may-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .may-grid-line {\n    stroke: var(--may-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .may-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .may-y-label,\n  .may-x-label,\n  .may-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .may-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .may-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .may-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .may-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .may-bar-visible {\n    transition:\n      opacity 0.14s ease,\n      filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .may-bar:hover .may-bar-visible,\n  .may-bar:focus .may-bar-visible,\n  .may-bar.is-selected .may-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .may-bar:focus-visible .may-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .may-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .may-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .may-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .may-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .may-tooltip strong,\n  .may-tooltip span {\n    display: block;\n  }\n\n  .may-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .may-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .may-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .may-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .may-dot-positive {\n    background: var(--may-red);\n  }\n\n  .may-dot-negative {\n    background: var(--may-blue);\n  }\n\n  .may-source {\n    margin: 17px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .may-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .may-selection {\n      margin-top: 15px;\n    }\n\n    .may-scroll {\n      padding-bottom: 7px;\n    }\n\n    .may-stage {\n      min-width: 860px;\n    }\n\n    .may-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .may-bar-visible,\n    .may-tooltip,\n    .may-toggle,\n    .may-toggle-track,\n    .may-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-may-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.mayReady === \"true\") return;\n\n      widget.dataset.mayReady = \"true\";\n\n      const data = [\n        [1921, -0.6], [1922, 1.0], [1923, -2.2], [1924, 0.2], [1925, -1.5],\n        [1926, -2.7], [1927, -0.4], [1928, -2.7], [1929, -1.2], [1930, -2.2],\n        [1931, -0.5], [1932, -2.2], [1933, -1.0], [1934, -0.4], [1935, -2.7],\n        [1936, -1.0], [1937, 0.2], [1938, -3.1], [1939, -3.1], [1940, -1.2],\n        [1941, -4.1], [1942, -1.1], [1943, 0.2], [1944, -1.3], [1945, 0.6],\n        [1946, -1.5], [1947, 0.5], [1948, -0.4], [1949, -2.4], [1950, -0.2],\n        [1951, -2.7], [1952, 0.0], [1953, 0.4], [1954, -1.9], [1955, -1.8],\n        [1956, -0.6], [1957, -3.0], [1958, -0.3], [1959, -0.6], [1960, 0.1],\n        [1961, -1.7], [1962, -2.6], [1963, -2.1], [1964, 0.2], [1965, -1.5],\n        [1966, -1.1], [1967, -1.7], [1968, -2.4], [1969, -1.0], [1970, -1.4],\n        [1971, -0.4], [1972, -2.4], [1973, -0.4], [1974, -1.9], [1975, -2.2],\n        [1976, -0.4], [1977, -2.1], [1978, -2.0], [1979, -1.8], [1980, -2.4],\n        [1981, -1.7], [1982, -0.7], [1983, -2.5], [1984, -3.8], [1985, -1.7],\n        [1986, -0.3], [1987, -2.8], [1988, -0.1], [1989, 1.3], [1990, 1.3],\n        [1991, -2.6], [1992, 1.1], [1993, 0.0], [1994, -0.3], [1995, -0.6],\n        [1996, -1.6], [1997, 0.3], [1998, 0.8], [1999, 1.4], [2000, 1.1],\n        [2001, 0.8], [2002, -0.9], [2003, 0.4], [2004, -1.1], [2005, 0.1],\n        [2006, 0.2], [2007, 0.7], [2008, 1.1], [2009, 1.0], [2010, -1.6],\n        [2011, 1.5], [2012, 0.3], [2013, -2.7], [2014, -0.7], [2015, 0.1],\n        [2016, -0.4], [2017, 1.1], [2018, 0.9], [2019, -1.5], [2020, 1.1],\n        [2021, -1.6], [2022, 2.4], [2023, 0.8], [2024, 0.1], [2025, 0.8],\n        [2026, 2.0]\n      ];\n\n      const svg = widget.querySelector(\"[data-may-svg]\");\n      const tooltip = widget.querySelector(\"[data-may-tooltip]\");\n      const selection = widget.querySelector(\"[data-may-selection]\");\n      const stage = widget.querySelector(\".may-stage\");\n      const toggle = widget.querySelector(\"[data-may-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-may-toggle-label]\");\n      const content = widget.querySelector(\"[data-may-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `may-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n\n      const margin = {\n        top: 28,\n        right: 18,\n        bottom: 62,\n        left: 57\n      };\n\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -5;\n      const maxY = 3;\n      const ticks = [-5, -4, -3, -2, -1, 0, 1, 2, 3];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top +\n        ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n\n        Object.entries(attrs).forEach(([name, value]) => {\n          element.setAttribute(name, value);\n        });\n\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value)\n          .toFixed(1)\n          .replace(\".\", \",\");\n\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0\n            ? \"may-zero-line\"\n            : \"may-grid-line\"\n        });\n\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"may-y-label\"\n        });\n\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"may-axis-unit\"\n      });\n\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) {\n          pinnedBar.classList.remove(\"is-selected\");\n        }\n\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\n          \"is-positive\",\n          \"is-negative\",\n          \"is-neutral\"\n        );\n\n        selection.classList.add(\n          value > 0\n            ? \"is-positive\"\n            : value < 0\n              ? \"is-negative\"\n              : \"is-neutral\"\n        );\n\n        selection.innerHTML =\n          `<strong>Mai ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n\n        const tooltipX = Math.max(\n          120,\n          Math.min(\n            rect.width - 120,\n            clientX - rect.left\n          )\n        );\n\n        const tooltipY = Math.max(\n          82,\n          clientY - rect.top\n        );\n\n        tooltip.innerHTML =\n          `<strong>Mai ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x =\n          margin.left +\n          index * slot +\n          (slot - barW) \/ 2;\n\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n\n        const rectH = Math.max(\n          1.2,\n          Math.abs(zeroY - valueY)\n        );\n\n        const color = value >= 0\n          ? \"#e85236\"\n          : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"may-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\":\n            `Mai ${year}, \u00e9cart \u00e0 la normale ` +\n            `${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"may-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"may-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) {\n            hideTooltip();\n          }\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n\n          removeSelection();\n\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n\n        group.addEventListener(\"keydown\", (event) => {\n          if (\n            event.key === \"Enter\" ||\n            event.key === \" \"\n          ) {\n            selectBar(event);\n          }\n\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"may-x-label\"\n        });\n\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (\n          event.target === svg ||\n          event.target.classList.contains(\"may-grid-line\")\n        ) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"jun-widget\" data-jun-chart>\n  <div class=\"jun-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en juin depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"jun-toggle-row\">\n    <button\n      class=\"jun-toggle\"\n      data-jun-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"jun-toggle-track\" aria-hidden=\"true\">\n        <span class=\"jun-toggle-dot\"><\/span>\n      <\/span>\n      <span data-jun-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"jun-content\" data-jun-content hidden>\n    <div class=\"jun-selection\" data-jun-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"jun-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"jun-stage\">\n        <svg\n          class=\"jun-svg\"\n          data-jun-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"jun-title jun-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"jun-title\">\n            Anomalies de temp\u00e9rature en juin en France, de 1921 \u00e0 2026\n          <\/title>\n\n          <desc id=\"jun-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives\n            sont rouges et les valeurs n\u00e9gatives sont bleues. Chaque barre est\n            interactive.\n          <\/desc>\n        <\/svg>\n\n        <div\n          class=\"jun-tooltip\"\n          data-jun-tooltip\n          role=\"status\"\n          aria-hidden=\"true\"\n        ><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"jun-legend\" aria-label=\"L\u00e9gende\">\n      <span>\n        <i class=\"jun-dot jun-dot-positive\"><\/i>\n        Plus chaud que la normale\n      <\/span>\n\n      <span>\n        <i class=\"jun-dot jun-dot-negative\"><\/i>\n        Plus froid que la normale\n      <\/span>\n    <\/div>\n\n    <p class=\"jun-source\">\n      Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .jun-widget,\n  .jun-widget * {\n    box-sizing: border-box;\n  }\n\n  .jun-widget {\n    --jun-red: #e85236;\n    --jun-blue: #5c9ae3;\n    --jun-blue-dark: #2567b3;\n    --jun-grid: #dfe4ea;\n    --jun-ink: #17202a;\n    --jun-muted: #59636e;\n\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--jun-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .jun-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .jun-header p {\n    margin: 8px 0 0;\n    color: var(--jun-muted);\n    font-size: 15px;\n  }\n\n  .jun-toggle-row {\n    margin-top: 20px;\n  }\n\n  .jun-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition:\n      color 0.16s ease,\n      background 0.16s ease,\n      border-color 0.16s ease;\n  }\n\n  .jun-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .jun-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .jun-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .jun-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .jun-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .jun-toggle.is-active .jun-toggle-track {\n    background: var(--jun-blue-dark);\n  }\n\n  .jun-toggle.is-active .jun-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .jun-content[hidden] {\n    display: none;\n  }\n\n  .jun-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .jun-selection strong {\n    color: var(--jun-ink);\n  }\n\n  .jun-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--jun-red);\n  }\n\n  .jun-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--jun-blue);\n  }\n\n  .jun-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .jun-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .jun-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .jun-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .jun-grid-line {\n    stroke: var(--jun-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .jun-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .jun-y-label,\n  .jun-x-label,\n  .jun-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .jun-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .jun-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .jun-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .jun-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .jun-bar-visible {\n    transition:\n      opacity 0.14s ease,\n      filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .jun-bar:hover .jun-bar-visible,\n  .jun-bar:focus .jun-bar-visible,\n  .jun-bar.is-selected .jun-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .jun-bar:focus-visible .jun-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .jun-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .jun-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .jun-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .jun-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .jun-tooltip strong,\n  .jun-tooltip span {\n    display: block;\n  }\n\n  .jun-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .jun-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .jun-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .jun-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .jun-dot-positive {\n    background: var(--jun-red);\n  }\n\n  .jun-dot-negative {\n    background: var(--jun-blue);\n  }\n\n  .jun-source {\n    margin: 17px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .jun-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .jun-selection {\n      margin-top: 15px;\n    }\n\n    .jun-scroll {\n      padding-bottom: 7px;\n    }\n\n    .jun-stage {\n      min-width: 860px;\n    }\n\n    .jun-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .jun-bar-visible,\n    .jun-tooltip,\n    .jun-toggle,\n    .jun-toggle-track,\n    .jun-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-jun-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.junReady === \"true\") return;\n\n      widget.dataset.junReady = \"true\";\n\n      const data = [\n        [1921, -0.9], [1922, -1.4], [1923, -4.3], [1924, -1.7], [1925, -1.0],\n        [1926, -3.4], [1927, -2.3], [1928, -1.6], [1929, -1.3], [1930, -0.1],\n        [1931, -0.1], [1932, -2.4], [1933, -2.6], [1934, -0.8], [1935, -0.2],\n        [1936, -1.7], [1937, -1.1], [1938, -0.9], [1939, -1.4], [1940, -1.3],\n        [1941, -1.1], [1942, -1.0], [1943, -1.5], [1944, -2.3], [1945, 0.1],\n        [1946, -2.7], [1947, 0.2], [1948, -1.9], [1949, -1.2], [1950, 1.0],\n        [1951, -1.8], [1952, 0.1], [1953, -2.4], [1954, -1.8], [1955, -1.3],\n        [1956, -3.5], [1957, -1.1], [1958, -2.2], [1959, -0.9], [1960, -0.3],\n        [1961, -1.1], [1962, -2.1], [1963, -1.8], [1964, -0.9], [1965, -1.6],\n        [1966, -0.8], [1967, -2.3], [1968, -1.9], [1969, -2.9], [1970, 0.1],\n        [1971, -2.8], [1972, -3.5], [1973, -0.7], [1974, -1.8], [1975, -2.0],\n        [1976, 1.6], [1977, -2.7], [1978, -2.5], [1979, -1.1], [1980, -2.7],\n        [1981, -1.8], [1982, 0.2], [1983, -0.4], [1984, -1.9], [1985, -2.3],\n        [1986, -0.7], [1987, -2.3], [1988, -1.4], [1989, -0.8], [1990, -1.5],\n        [1991, -2.5], [1992, -1.6], [1993, -0.3], [1994, -0.5], [1995, -1.6],\n        [1996, 0.0], [1997, -1.2], [1998, -0.5], [1999, -1.1], [2000, 0.3],\n        [2001, -0.7], [2002, 0.4], [2003, 3.5], [2004, 0.3], [2005, 1.5],\n        [2006, 0.8], [2007, 0.1], [2008, -0.4], [2009, 0.1], [2010, -0.2],\n        [2011, -0.4], [2012, -0.8], [2013, -1.4], [2014, 0.7], [2015, 0.9],\n        [2016, -0.2], [2017, 2.3], [2018, 1.2], [2019, 1.2], [2020, -0.3],\n        [2021, 1.4], [2022, 2.3], [2023, 2.6], [2024, 0.0], [2025, 3.3],\n        [2026, 3.8]\n      ];\n\n      const svg = widget.querySelector(\"[data-jun-svg]\");\n      const tooltip = widget.querySelector(\"[data-jun-tooltip]\");\n      const selection = widget.querySelector(\"[data-jun-selection]\");\n      const stage = widget.querySelector(\".jun-stage\");\n      const toggle = widget.querySelector(\"[data-jun-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-jun-toggle-label]\");\n      const content = widget.querySelector(\"[data-jun-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `jun-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n\n      const margin = {\n        top: 28,\n        right: 18,\n        bottom: 62,\n        left: 57\n      };\n\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -5;\n      const maxY = 4;\n      const ticks = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top +\n        ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n\n        Object.entries(attrs).forEach(([name, value]) => {\n          element.setAttribute(name, value);\n        });\n\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value)\n          .toFixed(1)\n          .replace(\".\", \",\");\n\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0\n            ? \"jun-zero-line\"\n            : \"jun-grid-line\"\n        });\n\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"jun-y-label\"\n        });\n\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"jun-axis-unit\"\n      });\n\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) {\n          pinnedBar.classList.remove(\"is-selected\");\n        }\n\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\n          \"is-positive\",\n          \"is-negative\",\n          \"is-neutral\"\n        );\n\n        selection.classList.add(\n          value > 0\n            ? \"is-positive\"\n            : value < 0\n              ? \"is-negative\"\n              : \"is-neutral\"\n        );\n\n        selection.innerHTML =\n          `<strong>Juin ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n\n        const tooltipX = Math.max(\n          120,\n          Math.min(\n            rect.width - 120,\n            clientX - rect.left\n          )\n        );\n\n        const tooltipY = Math.max(\n          82,\n          clientY - rect.top\n        );\n\n        tooltip.innerHTML =\n          `<strong>Juin ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x =\n          margin.left +\n          index * slot +\n          (slot - barW) \/ 2;\n\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n\n        const rectH = Math.max(\n          1.2,\n          Math.abs(zeroY - valueY)\n        );\n\n        const color = value >= 0\n          ? \"#e85236\"\n          : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"jun-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\":\n            `Juin ${year}, \u00e9cart \u00e0 la normale ` +\n            `${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"jun-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"jun-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) {\n            hideTooltip();\n          }\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n\n          removeSelection();\n\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n\n        group.addEventListener(\"keydown\", (event) => {\n          if (\n            event.key === \"Enter\" ||\n            event.key === \" \"\n          ) {\n            selectBar(event);\n          }\n\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"jun-x-label\"\n        });\n\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (\n          event.target === svg ||\n          event.target.classList.contains(\"jun-grid-line\")\n        ) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"jul-widget\" data-jul-chart>\n  <div class=\"jul-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en juillet depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"jul-toggle-row\">\n    <button\n      class=\"jul-toggle\"\n      data-jul-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"jul-toggle-track\" aria-hidden=\"true\">\n        <span class=\"jul-toggle-dot\"><\/span>\n      <\/span>\n      <span data-jul-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"jul-content\" data-jul-content hidden>\n    <div class=\"jul-selection\" data-jul-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"jul-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"jul-stage\">\n        <svg\n          class=\"jul-svg\"\n          data-jul-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"jul-title jul-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"jul-title\">\n            Anomalies de temp\u00e9rature en juillet en France, de 1921 \u00e0 2025\n          <\/title>\n\n          <desc id=\"jul-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives\n            sont rouges et les valeurs n\u00e9gatives sont bleues. Chaque barre est\n            interactive.\n          <\/desc>\n        <\/svg>\n\n        <div\n          class=\"jul-tooltip\"\n          data-jul-tooltip\n          role=\"status\"\n          aria-hidden=\"true\"\n        ><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"jul-legend\" aria-label=\"L\u00e9gende\">\n      <span>\n        <i class=\"jul-dot jul-dot-positive\"><\/i>\n        Plus chaud que la normale\n      <\/span>\n\n      <span>\n        <i class=\"jul-dot jul-dot-negative\"><\/i>\n        Plus froid que la normale\n      <\/span>\n    <\/div>\n\n    <p class=\"jul-note\">\n      Juillet 2026 est encore en cours : il n\u2019est pas inclus dans l\u2019histogramme.\n    <\/p>\n\n    <p class=\"jul-source\">\n      Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .jul-widget,\n  .jul-widget * {\n    box-sizing: border-box;\n  }\n\n  .jul-widget {\n    --jul-red: #e85236;\n    --jul-blue: #5c9ae3;\n    --jul-blue-dark: #2567b3;\n    --jul-grid: #dfe4ea;\n    --jul-ink: #17202a;\n    --jul-muted: #59636e;\n\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--jul-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .jul-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .jul-header p {\n    margin: 8px 0 0;\n    color: var(--jul-muted);\n    font-size: 15px;\n  }\n\n  .jul-toggle-row {\n    margin-top: 20px;\n  }\n\n  .jul-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition:\n      color 0.16s ease,\n      background 0.16s ease,\n      border-color 0.16s ease;\n  }\n\n  .jul-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .jul-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .jul-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .jul-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .jul-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .jul-toggle.is-active .jul-toggle-track {\n    background: var(--jul-blue-dark);\n  }\n\n  .jul-toggle.is-active .jul-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .jul-content[hidden] {\n    display: none;\n  }\n\n  .jul-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .jul-selection strong {\n    color: var(--jul-ink);\n  }\n\n  .jul-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--jul-red);\n  }\n\n  .jul-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--jul-blue);\n  }\n\n  .jul-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .jul-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .jul-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .jul-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .jul-grid-line {\n    stroke: var(--jul-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .jul-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .jul-y-label,\n  .jul-x-label,\n  .jul-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .jul-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .jul-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .jul-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .jul-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .jul-bar-visible {\n    transition:\n      opacity 0.14s ease,\n      filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .jul-bar:hover .jul-bar-visible,\n  .jul-bar:focus .jul-bar-visible,\n  .jul-bar.is-selected .jul-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .jul-bar:focus-visible .jul-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .jul-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .jul-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .jul-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .jul-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .jul-tooltip strong,\n  .jul-tooltip span {\n    display: block;\n  }\n\n  .jul-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .jul-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .jul-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .jul-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .jul-dot-positive {\n    background: var(--jul-red);\n  }\n\n  .jul-dot-negative {\n    background: var(--jul-blue);\n  }\n\n  .jul-note {\n    margin: 17px 0 0;\n    padding: 9px 11px;\n    color: #665414;\n    background: #fff9df;\n    border-radius: 7px;\n    font-size: 12px;\n    line-height: 1.4;\n  }\n\n  .jul-source {\n    margin: 11px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .jul-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .jul-selection {\n      margin-top: 15px;\n    }\n\n    .jul-scroll {\n      padding-bottom: 7px;\n    }\n\n    .jul-stage {\n      min-width: 860px;\n    }\n\n    .jul-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .jul-bar-visible,\n    .jul-tooltip,\n    .jul-toggle,\n    .jul-toggle-track,\n    .jul-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-jul-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.julReady === \"true\") return;\n\n      widget.dataset.julReady = \"true\";\n\n      const data = [\n        [1921, 0.5], [1922, -3.4], [1923, -0.1], [1924, -2.0], [1925, -2.5],\n        [1926, -1.8], [1927, -2.3], [1928, 0.4], [1929, -0.8], [1930, -2.7],\n        [1931, -2.5], [1932, -3.0], [1933, -0.6], [1934, 0.1], [1935, -0.5],\n        [1936, -2.9], [1937, -1.3], [1938, -2.4], [1939, -3.1], [1940, -3.4],\n        [1941, -0.9], [1942, -2.1], [1943, -0.8], [1944, -2.0], [1945, -0.3],\n        [1946, -1.2], [1947, 0.4], [1948, -3.0], [1949, 0.5], [1950, 0.4],\n        [1951, -1.7], [1952, 0.2], [1953, -2.0], [1954, -3.5], [1955, -0.8],\n        [1956, -2.3], [1957, -1.4], [1958, -2.1], [1959, 0.3], [1960, -3.1],\n        [1961, -2.1], [1962, -2.1], [1963, -1.3], [1964, -0.3], [1965, -3.0],\n        [1966, -3.1], [1967, -0.1], [1968, -2.0], [1969, -0.8], [1970, -2.1],\n        [1971, -0.2], [1972, -1.7], [1973, -1.6], [1974, -2.2], [1975, -0.9],\n        [1976, 0.4], [1977, -2.2], [1978, -2.6], [1979, -1.4], [1980, -3.4],\n        [1981, -2.4], [1982, 0.4], [1983, 2.3], [1984, -1.1], [1985, -0.3],\n        [1986, -1.1], [1987, -1.0], [1988, -2.0], [1989, 0.4], [1990, -0.2],\n        [1991, -0.1], [1992, -0.6], [1993, -2.1], [1994, 1.6], [1995, 1.4],\n        [1996, -1.2], [1997, -1.3], [1998, -1.0], [1999, 0.5], [2000, -2.1],\n        [2001, -0.4], [2002, -1.3], [2003, 1.0], [2004, -0.8], [2005, 0.1],\n        [2006, 3.3], [2007, -1.5], [2008, -0.9], [2009, -0.1], [2010, 1.0],\n        [2011, -2.2], [2012, -1.8], [2013, 1.6], [2014, -0.4], [2015, 1.7],\n        [2016, 0.2], [2017, 0.6], [2018, 2.2], [2019, 2.1], [2020, 0.6],\n        [2021, -0.4], [2022, 2.1], [2023, 0.8], [2024, 0.6], [2025, 0.9]\n      ];\n\n      const svg = widget.querySelector(\"[data-jul-svg]\");\n      const tooltip = widget.querySelector(\"[data-jul-tooltip]\");\n      const selection = widget.querySelector(\"[data-jul-selection]\");\n      const stage = widget.querySelector(\".jul-stage\");\n      const toggle = widget.querySelector(\"[data-jul-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-jul-toggle-label]\");\n      const content = widget.querySelector(\"[data-jul-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `jul-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n\n      const margin = {\n        top: 28,\n        right: 18,\n        bottom: 62,\n        left: 57\n      };\n\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -4;\n      const maxY = 4;\n      const ticks = [-4, -3, -2, -1, 0, 1, 2, 3, 4];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top +\n        ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n\n        Object.entries(attrs).forEach(([name, value]) => {\n          element.setAttribute(name, value);\n        });\n\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value)\n          .toFixed(1)\n          .replace(\".\", \",\");\n\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0\n            ? \"jul-zero-line\"\n            : \"jul-grid-line\"\n        });\n\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"jul-y-label\"\n        });\n\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"jul-axis-unit\"\n      });\n\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) {\n          pinnedBar.classList.remove(\"is-selected\");\n        }\n\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\n          \"is-positive\",\n          \"is-negative\",\n          \"is-neutral\"\n        );\n\n        selection.classList.add(\n          value > 0\n            ? \"is-positive\"\n            : value < 0\n              ? \"is-negative\"\n              : \"is-neutral\"\n        );\n\n        selection.innerHTML =\n          `<strong>Juillet ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n\n        const tooltipX = Math.max(\n          120,\n          Math.min(\n            rect.width - 120,\n            clientX - rect.left\n          )\n        );\n\n        const tooltipY = Math.max(\n          82,\n          clientY - rect.top\n        );\n\n        tooltip.innerHTML =\n          `<strong>Juillet ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x =\n          margin.left +\n          index * slot +\n          (slot - barW) \/ 2;\n\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n\n        const rectH = Math.max(\n          1.2,\n          Math.abs(zeroY - valueY)\n        );\n\n        const color = value >= 0\n          ? \"#e85236\"\n          : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"jul-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\":\n            `Juillet ${year}, \u00e9cart \u00e0 la normale ` +\n            `${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"jul-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"jul-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) {\n            hideTooltip();\n          }\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n\n          removeSelection();\n\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n\n        group.addEventListener(\"keydown\", (event) => {\n          if (\n            event.key === \"Enter\" ||\n            event.key === \" \"\n          ) {\n            selectBar(event);\n          }\n\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"jul-x-label\"\n        });\n\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (\n          event.target === svg ||\n          event.target.classList.contains(\"jul-grid-line\")\n        ) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"aug-widget\" data-aug-chart>\n  <div class=\"aug-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en ao\u00fbt depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"aug-toggle-row\">\n    <button\n      class=\"aug-toggle\"\n      data-aug-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"aug-toggle-track\" aria-hidden=\"true\">\n        <span class=\"aug-toggle-dot\"><\/span>\n      <\/span>\n      <span data-aug-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"aug-content\" data-aug-content hidden>\n    <div class=\"aug-selection\" data-aug-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"aug-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"aug-stage\">\n        <svg\n          class=\"aug-svg\"\n          data-aug-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"aug-title aug-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"aug-title\">\n            Anomalies de temp\u00e9rature en ao\u00fbt en France, de 1921 \u00e0 2025\n          <\/title>\n\n          <desc id=\"aug-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives\n            sont rouges et les valeurs n\u00e9gatives sont bleues. Chaque barre est\n            interactive.\n          <\/desc>\n        <\/svg>\n\n        <div\n          class=\"aug-tooltip\"\n          data-aug-tooltip\n          role=\"status\"\n          aria-hidden=\"true\"\n        ><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"aug-legend\" aria-label=\"L\u00e9gende\">\n      <span>\n        <i class=\"aug-dot aug-dot-positive\"><\/i>\n        Plus chaud que la normale\n      <\/span>\n\n      <span>\n        <i class=\"aug-dot aug-dot-negative\"><\/i>\n        Plus froid que la normale\n      <\/span>\n    <\/div>\n\n    <p class=\"aug-note\">\n      Ao\u00fbt 2026 n\u2019a pas encore commenc\u00e9 : il n\u2019est pas inclus dans l\u2019histogramme.\n    <\/p>\n\n    <p class=\"aug-source\">\n      Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .aug-widget,\n  .aug-widget * {\n    box-sizing: border-box;\n  }\n\n  .aug-widget {\n    --aug-red: #e85236;\n    --aug-blue: #5c9ae3;\n    --aug-blue-dark: #2567b3;\n    --aug-grid: #dfe4ea;\n    --aug-ink: #17202a;\n    --aug-muted: #59636e;\n\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--aug-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .aug-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .aug-header p {\n    margin: 8px 0 0;\n    color: var(--aug-muted);\n    font-size: 15px;\n  }\n\n  .aug-toggle-row {\n    margin-top: 20px;\n  }\n\n  .aug-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition:\n      color 0.16s ease,\n      background 0.16s ease,\n      border-color 0.16s ease;\n  }\n\n  .aug-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .aug-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .aug-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .aug-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .aug-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .aug-toggle.is-active .aug-toggle-track {\n    background: var(--aug-blue-dark);\n  }\n\n  .aug-toggle.is-active .aug-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .aug-content[hidden] {\n    display: none;\n  }\n\n  .aug-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .aug-selection strong {\n    color: var(--aug-ink);\n  }\n\n  .aug-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--aug-red);\n  }\n\n  .aug-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--aug-blue);\n  }\n\n  .aug-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .aug-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .aug-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .aug-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .aug-grid-line {\n    stroke: var(--aug-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .aug-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .aug-y-label,\n  .aug-x-label,\n  .aug-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .aug-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .aug-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .aug-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .aug-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .aug-bar-visible {\n    transition:\n      opacity 0.14s ease,\n      filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .aug-bar:hover .aug-bar-visible,\n  .aug-bar:focus .aug-bar-visible,\n  .aug-bar.is-selected .aug-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .aug-bar:focus-visible .aug-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .aug-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .aug-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .aug-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .aug-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .aug-tooltip strong,\n  .aug-tooltip span {\n    display: block;\n  }\n\n  .aug-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .aug-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .aug-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .aug-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .aug-dot-positive {\n    background: var(--aug-red);\n  }\n\n  .aug-dot-negative {\n    background: var(--aug-blue);\n  }\n\n  .aug-note {\n    margin: 17px 0 0;\n    padding: 9px 11px;\n    color: #665414;\n    background: #fff9df;\n    border-radius: 7px;\n    font-size: 12px;\n    line-height: 1.4;\n  }\n\n  .aug-source {\n    margin: 11px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .aug-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .aug-selection {\n      margin-top: 15px;\n    }\n\n    .aug-scroll {\n      padding-bottom: 7px;\n    }\n\n    .aug-stage {\n      min-width: 860px;\n    }\n\n    .aug-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .aug-bar-visible,\n    .aug-tooltip,\n    .aug-toggle,\n    .aug-toggle-track,\n    .aug-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-aug-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.augReady === \"true\") return;\n\n      widget.dataset.augReady = \"true\";\n\n      const data = [\n        [1921, -2.3], [1922, -2.9], [1923, -1.1], [1924, -4.4], [1925, -2.5],\n        [1926, -1.3], [1927, -2.6], [1928, -0.8], [1929, -2.0], [1930, -2.0],\n        [1931, -3.2], [1932, 0.3], [1933, 0.2], [1934, -2.7], [1935, -1.9],\n        [1936, -2.0], [1937, -0.7], [1938, -2.0], [1939, -2.2], [1940, -3.0],\n        [1941, -3.7], [1942, -1.5], [1943, -1.1], [1944, 0.5], [1945, -2.1],\n        [1946, -2.7], [1947, 1.1], [1948, -2.0], [1949, -0.4], [1950, -1.2],\n        [1951, -2.7], [1952, -0.9], [1953, -1.2], [1954, -3.1], [1955, -1.0],\n        [1956, -3.5], [1957, -2.5], [1958, -1.5], [1959, -1.2], [1960, -2.7],\n        [1961, -2.1], [1962, -1.2], [1963, -3.5], [1964, -1.6], [1965, -2.9],\n        [1966, -2.8], [1967, -1.7], [1968, -2.7], [1969, -1.7], [1970, -1.5],\n        [1971, -1.2], [1972, -3.0], [1973, 0.3], [1974, -1.2], [1975, 0.0],\n        [1976, -1.1], [1977, -3.1], [1978, -2.9], [1979, -2.8], [1980, -1.1],\n        [1981, -1.2], [1982, -2.0], [1983, -0.5], [1984, -1.5], [1985, -2.3],\n        [1986, -2.1], [1987, -1.1], [1988, -1.1], [1989, -0.4], [1990, 0.5],\n        [1991, 0.9], [1992, 0.3], [1993, -1.2], [1994, 0.3], [1995, 0.3],\n        [1996, -1.6], [1997, 1.6], [1998, -0.4], [1999, -0.1], [2000, 0.0],\n        [2001, 0.4], [2002, -1.3], [2003, 3.7], [2004, 0.0], [2005, -1.4],\n        [2006, -2.1], [2007, -1.8], [2008, -1.1], [2009, 0.8], [2010, -1.1],\n        [2011, -0.4], [2012, 0.4], [2013, -0.3], [2014, -2.0], [2015, 0.5],\n        [2016, 0.4], [2017, 0.3], [2018, 1.2], [2019, 0.7], [2020, 1.5],\n        [2021, -1.1], [2022, 2.6], [2023, 0.9], [2024, 1.5], [2025, 1.4]\n      ];\n\n      const svg = widget.querySelector(\"[data-aug-svg]\");\n      const tooltip = widget.querySelector(\"[data-aug-tooltip]\");\n      const selection = widget.querySelector(\"[data-aug-selection]\");\n      const stage = widget.querySelector(\".aug-stage\");\n      const toggle = widget.querySelector(\"[data-aug-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-aug-toggle-label]\");\n      const content = widget.querySelector(\"[data-aug-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `aug-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n\n      const margin = {\n        top: 28,\n        right: 18,\n        bottom: 62,\n        left: 57\n      };\n\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -5;\n      const maxY = 4;\n      const ticks = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top +\n        ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n\n        Object.entries(attrs).forEach(([name, value]) => {\n          element.setAttribute(name, value);\n        });\n\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value)\n          .toFixed(1)\n          .replace(\".\", \",\");\n\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0\n            ? \"aug-zero-line\"\n            : \"aug-grid-line\"\n        });\n\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"aug-y-label\"\n        });\n\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"aug-axis-unit\"\n      });\n\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) {\n          pinnedBar.classList.remove(\"is-selected\");\n        }\n\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\n          \"is-positive\",\n          \"is-negative\",\n          \"is-neutral\"\n        );\n\n        selection.classList.add(\n          value > 0\n            ? \"is-positive\"\n            : value < 0\n              ? \"is-negative\"\n              : \"is-neutral\"\n        );\n\n        selection.innerHTML =\n          `<strong>Ao\u00fbt ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n\n        const tooltipX = Math.max(\n          120,\n          Math.min(\n            rect.width - 120,\n            clientX - rect.left\n          )\n        );\n\n        const tooltipY = Math.max(\n          82,\n          clientY - rect.top\n        );\n\n        tooltip.innerHTML =\n          `<strong>Ao\u00fbt ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x =\n          margin.left +\n          index * slot +\n          (slot - barW) \/ 2;\n\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n\n        const rectH = Math.max(\n          1.2,\n          Math.abs(zeroY - valueY)\n        );\n\n        const color = value >= 0\n          ? \"#e85236\"\n          : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"aug-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\":\n            `Ao\u00fbt ${year}, \u00e9cart \u00e0 la normale ` +\n            `${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"aug-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"aug-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) {\n            placeTooltip(\n              event.clientX,\n              event.clientY,\n              year,\n              value\n            );\n          }\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) {\n            hideTooltip();\n          }\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n\n          removeSelection();\n\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n\n        group.addEventListener(\"keydown\", (event) => {\n          if (\n            event.key === \"Enter\" ||\n            event.key === \" \"\n          ) {\n            selectBar(event);\n          }\n\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", {\n        \"aria-hidden\": \"true\"\n      });\n\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"aug-x-label\"\n        });\n\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (\n          event.target === svg ||\n          event.target.classList.contains(\"aug-grid-line\")\n        ) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"sep-widget\" data-sep-chart>\n  <div class=\"sep-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en septembre depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"sep-toggle-row\">\n    <button\n      class=\"sep-toggle\"\n      data-sep-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"sep-toggle-track\" aria-hidden=\"true\">\n        <span class=\"sep-toggle-dot\"><\/span>\n      <\/span>\n      <span data-sep-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"sep-content\" data-sep-content hidden>\n    <div class=\"sep-selection\" data-sep-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"sep-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"sep-stage\">\n        <svg\n          class=\"sep-svg\"\n          data-sep-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"sep-title sep-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"sep-title\">Anomalies de temp\u00e9rature en septembre en France, de 1921 \u00e0 2025<\/title>\n          <desc id=\"sep-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives sont rouges\n            et les valeurs n\u00e9gatives sont bleues. Chaque barre est interactive.\n          <\/desc>\n        <\/svg>\n        <div class=\"sep-tooltip\" data-sep-tooltip role=\"status\" aria-hidden=\"true\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"sep-legend\" aria-label=\"L\u00e9gende\">\n      <span><i class=\"sep-dot sep-dot-positive\"><\/i> Plus chaud que la normale<\/span>\n      <span><i class=\"sep-dot sep-dot-negative\"><\/i> Plus froid que la normale<\/span>\n    <\/div>\n\n    <p class=\"sep-note\">Septembre 2026 n\u2019a pas encore commenc\u00e9 : il n\u2019est pas inclus dans l\u2019histogramme.<\/p>\n    <p class=\"sep-source\">Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020<\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .sep-widget,\n  .sep-widget * {\n    box-sizing: border-box;\n  }\n\n  .sep-widget {\n    --sep-red: #e85236;\n    --sep-blue: #5c9ae3;\n    --sep-blue-dark: #2567b3;\n    --sep-grid: #dfe4ea;\n    --sep-ink: #17202a;\n    --sep-muted: #59636e;\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--sep-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .sep-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .sep-header p {\n    margin: 8px 0 0;\n    color: var(--sep-muted);\n    font-size: 15px;\n  }\n\n  .sep-toggle-row {\n    margin-top: 20px;\n  }\n\n  .sep-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition: color 0.16s ease, background 0.16s ease, border-color 0.16s ease;\n  }\n\n  .sep-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .sep-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .sep-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .sep-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .sep-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .sep-toggle.is-active .sep-toggle-track {\n    background: var(--sep-blue-dark);\n  }\n\n  .sep-toggle.is-active .sep-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .sep-content[hidden] {\n    display: none;\n  }\n\n  .sep-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .sep-selection strong {\n    color: var(--sep-ink);\n  }\n\n  .sep-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--sep-red);\n  }\n\n  .sep-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--sep-blue);\n  }\n\n  .sep-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .sep-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .sep-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .sep-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .sep-grid-line {\n    stroke: var(--sep-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .sep-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .sep-y-label,\n  .sep-x-label,\n  .sep-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .sep-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .sep-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .sep-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .sep-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .sep-bar-visible {\n    transition: opacity 0.14s ease, filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .sep-bar:hover .sep-bar-visible,\n  .sep-bar:focus .sep-bar-visible,\n  .sep-bar.is-selected .sep-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .sep-bar:focus-visible .sep-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .sep-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .sep-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .sep-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .sep-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .sep-tooltip strong,\n  .sep-tooltip span {\n    display: block;\n  }\n\n  .sep-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .sep-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .sep-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .sep-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .sep-dot-positive {\n    background: var(--sep-red);\n  }\n\n  .sep-dot-negative {\n    background: var(--sep-blue);\n  }\n\n  .sep-note {\n    margin: 17px 0 0;\n    padding: 9px 11px;\n    color: #665414;\n    background: #fff9df;\n    border-radius: 7px;\n    font-size: 12px;\n    line-height: 1.4;\n  }\n\n  .sep-source {\n    margin: 11px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .sep-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .sep-selection {\n      margin-top: 15px;\n    }\n\n    .sep-scroll {\n      padding-bottom: 7px;\n    }\n\n    .sep-stage {\n      min-width: 860px;\n    }\n\n    .sep-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .sep-bar-visible,\n    .sep-tooltip,\n    .sep-toggle,\n    .sep-toggle-track,\n    .sep-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-sep-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.sepReady === \"true\") return;\n      widget.dataset.sepReady = \"true\";\n\n      const data = [\n        [1921, 0.7], [1922, -3.1], [1923, -1.3], [1924, -1.1], [1925, -3.2],\n        [1926, 1.2], [1927, -1.3], [1928, -0.5], [1929, 2.1], [1930, -0.3],\n        [1931, -4.1], [1932, 0.8], [1933, 0.4], [1934, 0.9], [1935, -0.2],\n        [1936, -0.3], [1937, -0.7], [1938, -1.1], [1939, -1.3], [1940, -1.0],\n        [1941, -1.3], [1942, 0.2], [1943, -0.5], [1944, -1.5], [1945, 0.1],\n        [1946, -0.3], [1947, 1.2], [1948, -1.2], [1949, 2.8], [1950, -1.4],\n        [1951, 0.1], [1952, -3.2], [1953, -0.2], [1954, -0.9], [1955, -0.8],\n        [1956, 0.2], [1957, -1.3], [1958, 1.0], [1959, 0.8], [1960, -2.1],\n        [1961, 2.4], [1962, -0.9], [1963, -1.3], [1964, 0.6], [1965, -2.8],\n        [1966, 0.2], [1967, -1.1], [1968, -1.3], [1969, -0.6], [1970, 0.3],\n        [1971, -0.9], [1972, -3.3], [1973, 0.5], [1974, -1.8], [1975, -0.3],\n        [1976, -1.7], [1977, -1.9], [1978, -0.9], [1979, -0.7], [1980, 0.3],\n        [1981, -0.1], [1982, 1.3], [1983, 0.1], [1984, -1.7], [1985, 1.0],\n        [1986, -1.3], [1987, 1.8], [1988, -0.7], [1989, -0.1], [1990, -0.5],\n        [1991, 1.7], [1992, -0.9], [1993, -1.7], [1994, -1.3], [1995, -2.0],\n        [1996, -2.4], [1997, 0.7], [1998, -0.2], [1999, 1.7], [2000, 0.7],\n        [2001, -2.1], [2002, -0.9], [2003, 0.2], [2004, 0.7], [2005, 0.6],\n        [2006, 2.2], [2007, -1.3], [2008, -1.6], [2009, 0.6], [2010, -0.9],\n        [2011, 1.6], [2012, -0.5], [2013, 0.3], [2014, 1.4], [2015, -1.1],\n        [2016, 2.2], [2017, -1.1], [2018, 1.5], [2019, 1.0], [2020, 1.5],\n        [2021, 1.8], [2022, 0.7], [2023, 3.6], [2024, -0.3], [2025, -0.1]\n      ];\n\n      const svg = widget.querySelector(\"[data-sep-svg]\");\n      const tooltip = widget.querySelector(\"[data-sep-tooltip]\");\n      const selection = widget.querySelector(\"[data-sep-selection]\");\n      const stage = widget.querySelector(\".sep-stage\");\n      const toggle = widget.querySelector(\"[data-sep-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-sep-toggle-label]\");\n      const content = widget.querySelector(\"[data-sep-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `sep-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n      const margin = { top: 28, right: 18, bottom: 62, left: 57 };\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -5;\n      const maxY = 4;\n      const ticks = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top + ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n        Object.entries(attrs).forEach(([name, value]) =>\n          element.setAttribute(name, value)\n        );\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value).toFixed(1).replace(\".\", \",\");\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0 ? \"sep-zero-line\" : \"sep-grid-line\"\n        });\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"sep-y-label\"\n        });\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"sep-axis-unit\"\n      });\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) pinnedBar.classList.remove(\"is-selected\");\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\"is-positive\", \"is-negative\", \"is-neutral\");\n        selection.classList.add(\n          value > 0 ? \"is-positive\" : value < 0 ? \"is-negative\" : \"is-neutral\"\n        );\n        selection.innerHTML =\n          `<strong>Septembre ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n        const tooltipX = Math.max(120, Math.min(rect.width - 120, clientX - rect.left));\n        const tooltipY = Math.max(82, clientY - rect.top);\n\n        tooltip.innerHTML =\n          `<strong>Septembre ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x = margin.left + index * slot + (slot - barW) \/ 2;\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n        const rectH = Math.max(1.2, Math.abs(zeroY - valueY));\n        const color = value >= 0 ? \"#e85236\" : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"sep-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\": `Septembre ${year}, \u00e9cart \u00e0 la normale ${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"sep-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"sep-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) hideTooltip();\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n          removeSelection();\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n        group.addEventListener(\"keydown\", (event) => {\n          if (event.key === \"Enter\" || event.key === \" \") selectBar(event);\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"sep-x-label\"\n        });\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (event.target === svg || event.target.classList.contains(\"sep-grid-line\")) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"oct-widget\" data-oct-chart>\n  <div class=\"oct-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en octobre depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"oct-toggle-row\">\n    <button\n      class=\"oct-toggle\"\n      data-oct-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"oct-toggle-track\" aria-hidden=\"true\">\n        <span class=\"oct-toggle-dot\"><\/span>\n      <\/span>\n      <span data-oct-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"oct-content\" data-oct-content hidden>\n    <div class=\"oct-selection\" data-oct-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"oct-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"oct-stage\">\n        <svg\n          class=\"oct-svg\"\n          data-oct-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"oct-title oct-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"oct-title\">Anomalies de temp\u00e9rature en octobre en France, de 1921 \u00e0 2025<\/title>\n          <desc id=\"oct-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives sont rouges\n            et les valeurs n\u00e9gatives sont bleues. Chaque barre est interactive.\n          <\/desc>\n        <\/svg>\n        <div class=\"oct-tooltip\" data-oct-tooltip role=\"status\" aria-hidden=\"true\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"oct-legend\" aria-label=\"L\u00e9gende\">\n      <span><i class=\"oct-dot oct-dot-positive\"><\/i> Plus chaud que la normale<\/span>\n      <span><i class=\"oct-dot oct-dot-negative\"><\/i> Plus froid que la normale<\/span>\n    <\/div>\n\n    <p class=\"oct-note\">Octobre 2026 n\u2019a pas encore commenc\u00e9 : il n\u2019est pas inclus dans l\u2019histogramme.<\/p>\n    <p class=\"oct-source\">Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020<\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .oct-widget,\n  .oct-widget * {\n    box-sizing: border-box;\n  }\n\n  .oct-widget {\n    --oct-red: #e85236;\n    --oct-blue: #5c9ae3;\n    --oct-blue-dark: #2567b3;\n    --oct-grid: #dfe4ea;\n    --oct-ink: #17202a;\n    --oct-muted: #59636e;\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--oct-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .oct-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .oct-header p {\n    margin: 8px 0 0;\n    color: var(--oct-muted);\n    font-size: 15px;\n  }\n\n  .oct-toggle-row {\n    margin-top: 20px;\n  }\n\n  .oct-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition: color 0.16s ease, background 0.16s ease, border-color 0.16s ease;\n  }\n\n  .oct-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .oct-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .oct-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .oct-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .oct-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .oct-toggle.is-active .oct-toggle-track {\n    background: var(--oct-blue-dark);\n  }\n\n  .oct-toggle.is-active .oct-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .oct-content[hidden] {\n    display: none;\n  }\n\n  .oct-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .oct-selection strong {\n    color: var(--oct-ink);\n  }\n\n  .oct-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--oct-red);\n  }\n\n  .oct-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--oct-blue);\n  }\n\n  .oct-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .oct-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .oct-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .oct-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .oct-grid-line {\n    stroke: var(--oct-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .oct-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .oct-y-label,\n  .oct-x-label,\n  .oct-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .oct-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .oct-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .oct-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .oct-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .oct-bar-visible {\n    transition: opacity 0.14s ease, filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .oct-bar:hover .oct-bar-visible,\n  .oct-bar:focus .oct-bar-visible,\n  .oct-bar.is-selected .oct-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .oct-bar:focus-visible .oct-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .oct-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .oct-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .oct-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .oct-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .oct-tooltip strong,\n  .oct-tooltip span {\n    display: block;\n  }\n\n  .oct-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .oct-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .oct-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .oct-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .oct-dot-positive {\n    background: var(--oct-red);\n  }\n\n  .oct-dot-negative {\n    background: var(--oct-blue);\n  }\n\n  .oct-note {\n    margin: 17px 0 0;\n    padding: 9px 11px;\n    color: #665414;\n    background: #fff9df;\n    border-radius: 7px;\n    font-size: 12px;\n    line-height: 1.4;\n  }\n\n  .oct-source {\n    margin: 11px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .oct-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .oct-selection {\n      margin-top: 15px;\n    }\n\n    .oct-scroll {\n      padding-bottom: 7px;\n    }\n\n    .oct-stage {\n      min-width: 860px;\n    }\n\n    .oct-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .oct-bar-visible,\n    .oct-tooltip,\n    .oct-toggle,\n    .oct-toggle-track,\n    .oct-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-oct-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.octReady === \"true\") return;\n      widget.dataset.octReady = \"true\";\n\n      const data = [\n        [1921, 2.0], [1922, -3.2], [1923, -0.2], [1924, -1.1], [1925, -0.8],\n        [1926, -0.8], [1927, -1.3], [1928, -1.1], [1929, -1.1], [1930, -0.3],\n        [1931, -1.8], [1932, -1.6], [1933, -0.5], [1934, -0.5], [1935, -2.1],\n        [1936, -3.8], [1937, -0.9], [1938, -1.2], [1939, -2.2], [1940, -2.2],\n        [1941, -2.1], [1942, 0.6], [1943, 0.1], [1944, -3.0], [1945, -0.2],\n        [1946, -1.4], [1947, -0.6], [1948, -1.5], [1949, 0.8], [1950, -1.4],\n        [1951, -2.3], [1952, -1.5], [1953, -0.6], [1954, -0.3], [1955, -2.5],\n        [1956, -2.2], [1957, -1.0], [1958, -1.5], [1959, -0.6], [1960, -1.5],\n        [1961, -0.2], [1962, -0.7], [1963, -1.3], [1964, -3.0], [1965, -0.3],\n        [1966, 0.3], [1967, 0.9], [1968, 0.8], [1969, 0.2], [1970, -1.6],\n        [1971, -0.5], [1972, -1.8], [1973, -2.2], [1974, -5.0], [1975, -2.4],\n        [1976, -0.8], [1977, 0.5], [1978, -1.2], [1979, 0.0], [1980, -1.9],\n        [1981, -1.1], [1982, -1.2], [1983, -0.8], [1984, -0.8], [1985, -0.3],\n        [1986, 0.7], [1987, 0.1], [1988, 0.5], [1989, 0.5], [1990, 1.0],\n        [1991, -1.9], [1992, -2.9], [1993, -2.2], [1994, -0.4], [1995, 2.3],\n        [1996, -0.6], [1997, 0.0], [1998, -0.9], [1999, -0.2], [2000, -0.4],\n        [2001, 2.6], [2002, -0.1], [2003, -2.1], [2004, 0.9], [2005, 2.1],\n        [2006, 2.4], [2007, -0.9], [2008, -1.0], [2009, 0.0], [2010, -1.0],\n        [2011, 0.6], [2012, -0.3], [2013, 1.7], [2014, 2.2], [2015, -1.0],\n        [2016, -1.1], [2017, 1.2], [2018, 0.7], [2019, 1.4], [2020, -0.7],\n        [2021, -0.2], [2022, 3.5], [2023, 2.7], [2024, 1.5], [2025, 0.2]\n      ];\n\n      const svg = widget.querySelector(\"[data-oct-svg]\");\n      const tooltip = widget.querySelector(\"[data-oct-tooltip]\");\n      const selection = widget.querySelector(\"[data-oct-selection]\");\n      const stage = widget.querySelector(\".oct-stage\");\n      const toggle = widget.querySelector(\"[data-oct-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-oct-toggle-label]\");\n      const content = widget.querySelector(\"[data-oct-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `oct-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n      const margin = { top: 28, right: 18, bottom: 62, left: 57 };\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -5;\n      const maxY = 4;\n      const ticks = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top + ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n        Object.entries(attrs).forEach(([name, value]) =>\n          element.setAttribute(name, value)\n        );\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value).toFixed(1).replace(\".\", \",\");\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0 ? \"oct-zero-line\" : \"oct-grid-line\"\n        });\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"oct-y-label\"\n        });\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"oct-axis-unit\"\n      });\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) pinnedBar.classList.remove(\"is-selected\");\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\"is-positive\", \"is-negative\", \"is-neutral\");\n        selection.classList.add(\n          value > 0 ? \"is-positive\" : value < 0 ? \"is-negative\" : \"is-neutral\"\n        );\n        selection.innerHTML =\n          `<strong>Octobre ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n        const tooltipX = Math.max(120, Math.min(rect.width - 120, clientX - rect.left));\n        const tooltipY = Math.max(82, clientY - rect.top);\n\n        tooltip.innerHTML =\n          `<strong>Octobre ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x = margin.left + index * slot + (slot - barW) \/ 2;\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n        const rectH = Math.max(1.2, Math.abs(zeroY - valueY));\n        const color = value >= 0 ? \"#e85236\" : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"oct-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\": `Octobre ${year}, \u00e9cart \u00e0 la normale ${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"oct-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"oct-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) hideTooltip();\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n          removeSelection();\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n        group.addEventListener(\"keydown\", (event) => {\n          if (event.key === \"Enter\" || event.key === \" \") selectBar(event);\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"oct-x-label\"\n        });\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (event.target === svg || event.target.classList.contains(\"oct-grid-line\")) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"nov-widget\" data-nov-chart>\n  <div class=\"nov-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en novembre depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"nov-toggle-row\">\n    <button\n      class=\"nov-toggle\"\n      data-nov-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"nov-toggle-track\" aria-hidden=\"true\">\n        <span class=\"nov-toggle-dot\"><\/span>\n      <\/span>\n      <span data-nov-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"nov-content\" data-nov-content hidden>\n    <div class=\"nov-selection\" data-nov-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"nov-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"nov-stage\">\n        <svg\n          class=\"nov-svg\"\n          data-nov-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"nov-title nov-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"nov-title\">Anomalies de temp\u00e9rature en novembre en France, de 1921 \u00e0 2025<\/title>\n          <desc id=\"nov-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives sont rouges\n            et les valeurs n\u00e9gatives sont bleues. Chaque barre est interactive.\n          <\/desc>\n        <\/svg>\n        <div class=\"nov-tooltip\" data-nov-tooltip role=\"status\" aria-hidden=\"true\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"nov-legend\" aria-label=\"L\u00e9gende\">\n      <span><i class=\"nov-dot nov-dot-positive\"><\/i> Plus chaud que la normale<\/span>\n      <span><i class=\"nov-dot nov-dot-negative\"><\/i> Plus froid que la normale<\/span>\n    <\/div>\n\n    <p class=\"nov-note\">Novembre 2026 n\u2019a pas encore commenc\u00e9 : il n\u2019est pas inclus dans l\u2019histogramme.<\/p>\n    <p class=\"nov-source\">Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020<\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .nov-widget,\n  .nov-widget * {\n    box-sizing: border-box;\n  }\n\n  .nov-widget {\n    --nov-red: #e85236;\n    --nov-blue: #5c9ae3;\n    --nov-blue-dark: #2567b3;\n    --nov-grid: #dfe4ea;\n    --nov-ink: #17202a;\n    --nov-muted: #59636e;\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--nov-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .nov-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .nov-header p {\n    margin: 8px 0 0;\n    color: var(--nov-muted);\n    font-size: 15px;\n  }\n\n  .nov-toggle-row {\n    margin-top: 20px;\n  }\n\n  .nov-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition: color 0.16s ease, background 0.16s ease, border-color 0.16s ease;\n  }\n\n  .nov-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .nov-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .nov-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .nov-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .nov-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .nov-toggle.is-active .nov-toggle-track {\n    background: var(--nov-blue-dark);\n  }\n\n  .nov-toggle.is-active .nov-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .nov-content[hidden] {\n    display: none;\n  }\n\n  .nov-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .nov-selection strong {\n    color: var(--nov-ink);\n  }\n\n  .nov-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--nov-red);\n  }\n\n  .nov-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--nov-blue);\n  }\n\n  .nov-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .nov-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .nov-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .nov-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .nov-grid-line {\n    stroke: var(--nov-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .nov-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .nov-y-label,\n  .nov-x-label,\n  .nov-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .nov-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .nov-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .nov-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .nov-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .nov-bar-visible {\n    transition: opacity 0.14s ease, filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .nov-bar:hover .nov-bar-visible,\n  .nov-bar:focus .nov-bar-visible,\n  .nov-bar.is-selected .nov-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .nov-bar:focus-visible .nov-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .nov-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .nov-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .nov-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .nov-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .nov-tooltip strong,\n  .nov-tooltip span {\n    display: block;\n  }\n\n  .nov-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .nov-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .nov-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .nov-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .nov-dot-positive {\n    background: var(--nov-red);\n  }\n\n  .nov-dot-negative {\n    background: var(--nov-blue);\n  }\n\n  .nov-note {\n    margin: 17px 0 0;\n    padding: 9px 11px;\n    color: #665414;\n    background: #fff9df;\n    border-radius: 7px;\n    font-size: 12px;\n    line-height: 1.4;\n  }\n\n  .nov-source {\n    margin: 11px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .nov-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .nov-selection {\n      margin-top: 15px;\n    }\n\n    .nov-scroll {\n      padding-bottom: 7px;\n    }\n\n    .nov-stage {\n      min-width: 860px;\n    }\n\n    .nov-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .nov-bar-visible,\n    .nov-tooltip,\n    .nov-toggle,\n    .nov-toggle-track,\n    .nov-toggle-dot {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-nov-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.novReady === \"true\") return;\n      widget.dataset.novReady = \"true\";\n\n      const data = [\n        [1921, -3.2], [1922, -2.8], [1923, -2.6], [1924, -0.8], [1925, -3.2],\n        [1926, 0.3], [1927, -1.2], [1928, 0.3], [1929, -0.5], [1930, 1.0],\n        [1931, 0.2], [1932, -0.2], [1933, -2.5], [1934, -2.6], [1935, -0.3],\n        [1936, -1.2], [1937, -1.4], [1938, 1.9], [1939, 1.2], [1940, -0.2],\n        [1941, -1.2], [1942, -2.8], [1943, -2.3], [1944, -0.7], [1945, -1.5],\n        [1946, -0.9], [1947, 0.5], [1948, -0.9], [1949, -1.8], [1950, -0.3],\n        [1951, 0.7], [1952, -2.4], [1953, -1.5], [1954, -0.1], [1955, -1.7],\n        [1956, -3.1], [1957, -1.7], [1958, -1.7], [1959, -1.3], [1960, 0.3],\n        [1961, -1.6], [1962, -2.8], [1963, 1.4], [1964, -1.1], [1965, -1.4],\n        [1966, -3.0], [1967, -0.8], [1968, -1.2], [1969, -0.9], [1970, 0.8],\n        [1971, -2.8], [1972, -0.6], [1973, -1.3], [1974, -0.4], [1975, -1.4],\n        [1976, -1.7], [1977, -1.0], [1978, -1.7], [1979, -1.5], [1980, -2.5],\n        [1981, -1.0], [1982, 0.5], [1983, -0.4], [1984, 1.5], [1985, -3.7],\n        [1986, 0.0], [1987, -0.9], [1988, -1.8], [1989, -0.9], [1990, -0.7],\n        [1991, -1.1], [1992, 1.1], [1993, -3.3], [1994, 2.4], [1995, -0.5],\n        [1996, -1.0], [1997, 0.6], [1998, -2.9], [1999, -1.9], [2000, 0.4],\n        [2001, -1.9], [2002, 1.3], [2003, 0.8], [2004, -0.9], [2005, -1.4],\n        [2006, 1.6], [2007, -1.5], [2008, -0.5], [2009, 1.8], [2010, -0.7],\n        [2011, 2.0], [2012, -0.4], [2013, -0.9], [2014, 2.3], [2015, 2.2],\n        [2016, -0.2], [2017, -0.8], [2018, 0.6], [2019, -0.2], [2020, 1.5],\n        [2021, -1.1], [2022, 1.9], [2023, 1.1], [2024, 1.1], [2025, 0.8]\n      ];\n\n      const svg = widget.querySelector(\"[data-nov-svg]\");\n      const tooltip = widget.querySelector(\"[data-nov-tooltip]\");\n      const selection = widget.querySelector(\"[data-nov-selection]\");\n      const stage = widget.querySelector(\".nov-stage\");\n      const toggle = widget.querySelector(\"[data-nov-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-nov-toggle-label]\");\n      const content = widget.querySelector(\"[data-nov-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n      const contentId = `nov-chart-content-${widgetIndex + 1}`;\n\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n      const margin = { top: 28, right: 18, bottom: 62, left: 57 };\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -4;\n      const maxY = 3;\n      const ticks = [-4, -3, -2, -1, 0, 1, 2, 3];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top + ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n        Object.entries(attrs).forEach(([name, value]) =>\n          element.setAttribute(name, value)\n        );\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value).toFixed(1).replace(\".\", \",\");\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0 ? \"nov-zero-line\" : \"nov-grid-line\"\n        });\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"nov-y-label\"\n        });\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"nov-axis-unit\"\n      });\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) pinnedBar.classList.remove(\"is-selected\");\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\"is-positive\", \"is-negative\", \"is-neutral\");\n        selection.classList.add(\n          value > 0 ? \"is-positive\" : value < 0 ? \"is-negative\" : \"is-neutral\"\n        );\n        selection.innerHTML =\n          `<strong>Novembre ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n        const tooltipX = Math.max(120, Math.min(rect.width - 120, clientX - rect.left));\n        const tooltipY = Math.max(82, clientY - rect.top);\n\n        tooltip.innerHTML =\n          `<strong>Novembre ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x = margin.left + index * slot + (slot - barW) \/ 2;\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n        const rectH = Math.max(1.2, Math.abs(zeroY - valueY));\n        const color = value >= 0 ? \"#e85236\" : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"nov-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\": `Novembre ${year}, \u00e9cart \u00e0 la normale ${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"nov-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"nov-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) hideTooltip();\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n          removeSelection();\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n        group.addEventListener(\"keydown\", (event) => {\n          if (event.key === \"Enter\" || event.key === \" \") selectBar(event);\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"nov-x-label\"\n        });\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (event.target === svg || event.target.classList.contains(\"nov-grid-line\")) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><!--\n  Graphique interactif WordPress\n  \u00c0 coller dans un bloc \u00ab HTML personnalis\u00e9 \u00bb.\n  Aucune biblioth\u00e8que externe n'est n\u00e9cessaire.\n-->\n<div class=\"dec-widget\" data-dec-chart>\n  <div class=\"dec-header\">\n    <h2>\u00c9cart \u00e0 la moyenne des temp\u00e9ratures en d\u00e9cembre depuis 1921 (France)<\/h2>\n    <p>Normale de r\u00e9f\u00e9rence 1991-2020<\/p>\n  <\/div>\n\n  <div class=\"dec-toggle-row\">\n    <button\n      class=\"dec-toggle\"\n      data-dec-toggle\n      type=\"button\"\n      role=\"switch\"\n      aria-checked=\"false\"\n    >\n      <span class=\"dec-toggle-track\" aria-hidden=\"true\">\n        <span class=\"dec-toggle-dot\"><\/span>\n      <\/span>\n      <span data-dec-toggle-label>Afficher le diagramme<\/span>\n    <\/button>\n  <\/div>\n\n  <div class=\"dec-content\" data-dec-content hidden>\n    <div class=\"dec-selection\" data-dec-selection aria-live=\"polite\">\n      Cliquez sur une barre pour afficher l\u2019ann\u00e9e et l\u2019\u00e9cart \u00e0 la normale.\n    <\/div>\n\n    <div class=\"dec-scroll\" aria-label=\"Graphique d\u00e9filable horizontalement sur mobile\">\n      <div class=\"dec-stage\">\n        <svg\n          class=\"dec-svg\"\n          data-dec-svg\n          viewBox=\"0 0 1120 500\"\n          role=\"img\"\n          aria-labelledby=\"dec-title dec-desc\"\n          preserveAspectRatio=\"xMidYMid meet\"\n        >\n          <title id=\"dec-title\">Anomalies de temp\u00e9rature en d\u00e9cembre en France, de 1921 \u00e0 2025<\/title>\n          <desc id=\"dec-desc\">\n            Histogramme des \u00e9carts \u00e0 la normale 1991-2020. Les valeurs positives sont rouges\n            et les valeurs n\u00e9gatives sont bleues. Chaque barre est interactive.\n          <\/desc>\n        <\/svg>\n        <div class=\"dec-tooltip\" data-dec-tooltip role=\"status\" aria-hidden=\"true\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"dec-legend\" aria-label=\"L\u00e9gende\">\n      <span><i class=\"dec-dot dec-dot-positive\"><\/i> Plus chaud que la normale<\/span>\n      <span><i class=\"dec-dot dec-dot-negative\"><\/i> Plus froid que la normale<\/span>\n    <\/div>\n\n    <p class=\"dec-note\">D\u00e9cembre 2026 n\u2019a pas encore commenc\u00e9 : il n\u2019est pas inclus dans l\u2019histogramme.<\/p>\n    <p class=\"dec-source\">\n      Source : M\u00e9t\u00e9o-France \u2022 Normale climatologique 1991-2020\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n  .dec-widget,\n  .dec-widget * {\n    box-sizing: border-box;\n  }\n\n  .dec-widget {\n    --dec-red: #e85236;\n    --dec-blue: #5c9ae3;\n    --dec-blue-dark: #2567b3;\n    --dec-grid: #dfe4ea;\n    --dec-ink: #17202a;\n    --dec-muted: #59636e;\n    width: 100%;\n    max-width: 1180px;\n    margin: 24px auto;\n    padding: clamp(18px, 3vw, 32px);\n    overflow: hidden;\n    color: var(--dec-ink);\n    background: #ffffff;\n    border: 1px solid #e8ebef;\n    border-radius: 18px;\n    box-shadow: 0 12px 34px rgba(23, 32, 42, 0.09);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .dec-header h2 {\n    margin: 0;\n    font-size: clamp(21px, 2.6vw, 31px);\n    line-height: 1.18;\n    letter-spacing: -0.02em;\n  }\n\n  .dec-header p {\n    margin: 8px 0 0;\n    color: var(--dec-muted);\n    font-size: 15px;\n  }\n\n  .dec-toggle-row {\n    margin-top: 20px;\n  }\n\n  .dec-toggle {\n    display: inline-flex;\n    align-items: center;\n    gap: 10px;\n    margin: 0;\n    padding: 9px 13px;\n    color: #34404c;\n    background: #f5f7fa;\n    border: 1px solid #dce2e8;\n    border-radius: 999px;\n    font: inherit;\n    font-size: 14px;\n    font-weight: 700;\n    line-height: 1.2;\n    cursor: pointer;\n    transition: color 0.16s ease, background 0.16s ease, border-color 0.16s ease;\n  }\n\n  .dec-toggle:hover {\n    color: #17202a;\n    background: #eef2f6;\n    border-color: #cbd3dc;\n  }\n\n  .dec-toggle:focus-visible {\n    outline: 3px solid rgba(37, 103, 179, 0.28);\n    outline-offset: 3px;\n  }\n\n  .dec-toggle-track {\n    position: relative;\n    display: inline-block;\n    width: 37px;\n    height: 21px;\n    flex: 0 0 auto;\n    background: #aeb7c2;\n    border-radius: 999px;\n    transition: background 0.16s ease;\n  }\n\n  .dec-toggle-dot {\n    position: absolute;\n    top: 3px;\n    left: 3px;\n    width: 15px;\n    height: 15px;\n    background: #ffffff;\n    border-radius: 50%;\n    box-shadow: 0 1px 4px rgba(23, 32, 42, 0.28);\n    transition: transform 0.16s ease;\n  }\n\n  .dec-toggle.is-active {\n    color: #174f8d;\n    background: #eff6ff;\n    border-color: #b9d4f2;\n  }\n\n  .dec-toggle.is-active .dec-toggle-track {\n    background: var(--dec-blue-dark);\n  }\n\n  .dec-toggle.is-active .dec-toggle-dot {\n    transform: translateX(16px);\n  }\n\n  .dec-content[hidden] {\n    display: none;\n  }\n\n  .dec-selection {\n    min-height: 49px;\n    margin: 20px 0 12px;\n    padding: 12px 15px;\n    color: #34404c;\n    background: #f5f7fa;\n    border-left: 4px solid #8995a3;\n    border-radius: 9px;\n    font-size: 15px;\n    line-height: 1.4;\n  }\n\n  .dec-selection strong {\n    color: var(--dec-ink);\n  }\n\n  .dec-selection.is-positive {\n    background: #fff3f0;\n    border-left-color: var(--dec-red);\n  }\n\n  .dec-selection.is-negative {\n    background: #eff6ff;\n    border-left-color: var(--dec-blue);\n  }\n\n  .dec-selection.is-neutral {\n    background: #f5f7fa;\n    border-left-color: #707b86;\n  }\n\n  .dec-scroll {\n    width: 100%;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scrollbar-color: #aeb7c2 #edf0f3;\n    scrollbar-width: thin;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .dec-stage {\n    position: relative;\n    width: 100%;\n    min-width: 900px;\n  }\n\n  .dec-svg {\n    display: block;\n    width: 100%;\n    height: auto;\n    overflow: visible;\n    touch-action: pan-x pan-y;\n  }\n\n  .dec-grid-line {\n    stroke: var(--dec-grid);\n    stroke-width: 1;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .dec-zero-line {\n    stroke: #1c2732;\n    stroke-width: 1.7;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .dec-y-label,\n  .dec-x-label,\n  .dec-axis-unit {\n    fill: #68727d;\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  .dec-y-label {\n    font-size: 13px;\n    text-anchor: end;\n    dominant-baseline: middle;\n  }\n\n  .dec-x-label {\n    font-size: 11px;\n    text-anchor: middle;\n  }\n\n  .dec-axis-unit {\n    font-size: 12px;\n    font-weight: 700;\n  }\n\n  .dec-bar {\n    cursor: pointer;\n    outline: none;\n  }\n\n  .dec-bar-visible {\n    transition: opacity 0.14s ease, filter 0.14s ease;\n    shape-rendering: geometricPrecision;\n  }\n\n  .dec-bar:hover .dec-bar-visible,\n  .dec-bar:focus .dec-bar-visible,\n  .dec-bar.is-selected .dec-bar-visible {\n    opacity: 1;\n    filter: brightness(0.83);\n  }\n\n  .dec-bar:focus-visible .dec-bar-visible {\n    stroke: #111820;\n    stroke-width: 2;\n    vector-effect: non-scaling-stroke;\n  }\n\n  .dec-hit-area {\n    fill: transparent;\n    pointer-events: all;\n  }\n\n  .dec-tooltip {\n    position: absolute;\n    z-index: 4;\n    width: max-content;\n    max-width: 235px;\n    padding: 10px 12px;\n    color: #ffffff;\n    background: rgba(18, 25, 33, 0.96);\n    border-radius: 9px;\n    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.22);\n    font-size: 13px;\n    line-height: 1.35;\n    pointer-events: none;\n    opacity: 0;\n    transform: translate(-50%, calc(-100% - 12px));\n    transition: opacity 0.12s ease;\n  }\n\n  .dec-tooltip::after {\n    content: \"\";\n    position: absolute;\n    top: 100%;\n    left: 50%;\n    width: 0;\n    height: 0;\n    border: 7px solid transparent;\n    border-top-color: rgba(18, 25, 33, 0.96);\n    transform: translateX(-50%);\n  }\n\n  .dec-tooltip.is-visible {\n    opacity: 1;\n  }\n\n  .dec-tooltip strong,\n  .dec-tooltip span {\n    display: block;\n  }\n\n  .dec-tooltip strong {\n    margin-bottom: 2px;\n    font-size: 14px;\n  }\n\n  .dec-legend {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px 22px;\n    margin-top: 14px;\n    color: #49535e;\n    font-size: 13px;\n  }\n\n  .dec-legend span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n  }\n\n  .dec-dot {\n    display: inline-block;\n    width: 11px;\n    height: 11px;\n    border-radius: 3px;\n  }\n\n  .dec-dot-positive {\n    background: var(--dec-red);\n  }\n\n  .dec-dot-negative {\n    background: var(--dec-blue);\n  }\n\n  .dec-note {\n    margin: 17px 0 0;\n    padding: 9px 11px;\n    color: #665414;\n    background: #fff9df;\n    border-radius: 7px;\n    font-size: 12px;\n    line-height: 1.4;\n  }\n\n  .dec-source {\n    margin: 11px 0 0;\n    color: #737d87;\n    font-size: 12px;\n  }\n\n  @media (max-width: 720px) {\n    .dec-widget {\n      margin: 14px auto;\n      padding: 17px 14px 19px;\n      border-radius: 13px;\n    }\n\n    .dec-selection {\n      margin-top: 15px;\n    }\n\n    .dec-scroll {\n      padding-bottom: 7px;\n    }\n\n    .dec-stage {\n      min-width: 860px;\n    }\n\n    .dec-scroll::after {\n      content: \"Faites glisser le graphique pour parcourir les ann\u00e9es \u2192\";\n      position: sticky;\n      left: 0;\n      display: block;\n      width: max-content;\n      margin-top: 4px;\n      color: #727d88;\n      font-size: 11px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .dec-toggle,\n    .dec-toggle-track,\n    .dec-toggle-dot,\n    .dec-bar-visible,\n    .dec-tooltip {\n      transition: none;\n    }\n  }\n<\/style>\n\n<script>\n  (() => {\n    const widgets = document.querySelectorAll(\"[data-dec-chart]\");\n\n    widgets.forEach((widget, widgetIndex) => {\n      if (widget.dataset.decReady === \"true\") return;\n      widget.dataset.decReady = \"true\";\n\n      const data = [\n        [1921, -0.8], [1922, -0.9], [1923, -1.5], [1924, -0.8], [1925, -0.9],\n        [1926, -3.1], [1927, -2.2], [1928, -1.5], [1929, 1.2], [1930, -0.6],\n        [1931, -2.7], [1932, 0.3], [1933, -5.7], [1934, 2.4], [1935, -1.0],\n        [1936, -1.0], [1937, -2.0], [1938, -2.6], [1939, -2.3], [1940, -4.6],\n        [1941, -2.1], [1942, -0.5], [1943, -1.8], [1944, -1.7], [1945, -0.5],\n        [1946, -3.6], [1947, -1.3], [1948, -0.8], [1949, -0.3], [1950, -4.1],\n        [1951, -0.6], [1952, -1.5], [1953, 2.0], [1954, 0.8], [1955, 1.2],\n        [1956, -0.1], [1957, -1.8], [1958, -0.1], [1959, 0.7], [1960, -2.1],\n        [1961, -0.5], [1962, -4.0], [1963, -3.9], [1964, -2.1], [1965, 0.7],\n        [1966, 0.2], [1967, -2.7], [1968, -2.0], [1969, -4.0], [1970, -3.0],\n        [1971, -0.9], [1972, -0.8], [1973, -1.6], [1974, 1.6], [1975, -2.7],\n        [1976, -1.9], [1977, 0.1], [1978, 0.4], [1979, 0.6], [1980, -2.4],\n        [1981, -0.6], [1982, -0.2], [1983, -0.9], [1984, -0.7], [1985, 0.2],\n        [1986, -0.1], [1987, 0.1], [1988, 0.4], [1989, 0.6], [1990, -2.4],\n        [1991, -1.9], [1992, -0.1], [1993, 1.2], [1994, 1.5], [1995, -0.9],\n        [1996, -1.6], [1997, 0.6], [1998, -0.6], [1999, -0.1], [2000, 2.3],\n        [2001, -2.7], [2002, 1.7], [2003, 0.0], [2004, -1.1], [2005, -2.5],\n        [2006, -0.1], [2007, -1.1], [2008, -1.6], [2009, -0.7], [2010, -3.3],\n        [2011, 1.7], [2012, 0.7], [2013, 0.2], [2014, 0.2], [2015, 3.4],\n        [2016, -0.5], [2017, -0.2], [2018, 1.6], [2019, 2.0], [2020, 0.8],\n        [2021, 0.8], [2022, 0.6], [2023, 1.9], [2024, 0.3], [2025, 1.5]\n      ];\n\n      const svg = widget.querySelector(\"[data-dec-svg]\");\n      const tooltip = widget.querySelector(\"[data-dec-tooltip]\");\n      const selection = widget.querySelector(\"[data-dec-selection]\");\n      const stage = widget.querySelector(\".dec-stage\");\n      const toggle = widget.querySelector(\"[data-dec-toggle]\");\n      const toggleLabel = widget.querySelector(\"[data-dec-toggle-label]\");\n      const content = widget.querySelector(\"[data-dec-content]\");\n      const ns = \"http:\/\/www.w3.org\/2000\/svg\";\n\n      const contentId = `dec-chart-content-${widgetIndex + 1}`;\n      content.id = contentId;\n      toggle.setAttribute(\"aria-controls\", contentId);\n\n      const W = 1120;\n      const H = 500;\n      const margin = { top: 28, right: 18, bottom: 62, left: 57 };\n      const plotW = W - margin.left - margin.right;\n      const plotH = H - margin.top - margin.bottom;\n      const minY = -6;\n      const maxY = 4;\n      const ticks = [-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4];\n      const slot = plotW \/ data.length;\n      const barW = Math.max(3, slot * 0.73);\n      let pinnedBar = null;\n\n      const y = (value) =>\n        margin.top + ((maxY - value) \/ (maxY - minY)) * plotH;\n\n      const makeSvg = (tag, attrs = {}) => {\n        const element = document.createElementNS(ns, tag);\n        Object.entries(attrs).forEach(([name, value]) =>\n          element.setAttribute(name, value)\n        );\n        return element;\n      };\n\n      const formatValue = (value, withPlus = true) => {\n        const absolute = Math.abs(value).toFixed(1).replace(\".\", \",\");\n        if (value < 0) return `\u2212${absolute}`;\n        if (value > 0 && withPlus) return `+${absolute}`;\n        return absolute;\n      };\n\n      const gridGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      ticks.forEach((tick) => {\n        const line = makeSvg(\"line\", {\n          x1: margin.left,\n          x2: W - margin.right,\n          y1: y(tick),\n          y2: y(tick),\n          class: tick === 0 ? \"dec-zero-line\" : \"dec-grid-line\"\n        });\n        gridGroup.appendChild(line);\n\n        const label = makeSvg(\"text\", {\n          x: margin.left - 10,\n          y: y(tick),\n          class: \"dec-y-label\"\n        });\n        label.textContent = formatValue(tick, false);\n        gridGroup.appendChild(label);\n      });\n\n      const unit = makeSvg(\"text\", {\n        x: 8,\n        y: 18,\n        class: \"dec-axis-unit\"\n      });\n      unit.textContent = \"\u00c9cart (\u00b0C)\";\n      gridGroup.appendChild(unit);\n      svg.appendChild(gridGroup);\n\n      const barsGroup = makeSvg(\"g\");\n      const zeroY = y(0);\n\n      const removeSelection = () => {\n        if (pinnedBar) pinnedBar.classList.remove(\"is-selected\");\n        pinnedBar = null;\n      };\n\n      const setSelectionCard = (year, value) => {\n        selection.classList.remove(\"is-positive\", \"is-negative\", \"is-neutral\");\n        selection.classList.add(\n          value > 0 ? \"is-positive\" : value < 0 ? \"is-negative\" : \"is-neutral\"\n        );\n        selection.innerHTML =\n          `<strong>D\u00e9cembre ${year}<\/strong> \u2014 \u00e9cart \u00e0 la normale : ` +\n          `<strong>${formatValue(value)} \u00b0C<\/strong>`;\n      };\n\n      const placeTooltip = (clientX, clientY, year, value) => {\n        const rect = stage.getBoundingClientRect();\n        const tooltipX = Math.max(120, Math.min(rect.width - 120, clientX - rect.left));\n        const tooltipY = Math.max(82, clientY - rect.top);\n\n        tooltip.innerHTML =\n          `<strong>D\u00e9cembre ${year}<\/strong>` +\n          `<span>\u00c9cart \u00e0 la normale : ${formatValue(value)} \u00b0C<\/span>`;\n        tooltip.style.left = `${tooltipX}px`;\n        tooltip.style.top = `${tooltipY}px`;\n        tooltip.classList.add(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"false\");\n      };\n\n      const hideTooltip = () => {\n        tooltip.classList.remove(\"is-visible\");\n        tooltip.setAttribute(\"aria-hidden\", \"true\");\n      };\n\n      toggle.addEventListener(\"click\", () => {\n        const willShow = content.hidden;\n        content.hidden = !willShow;\n        toggle.classList.toggle(\"is-active\", willShow);\n        toggle.setAttribute(\"aria-checked\", String(willShow));\n        toggleLabel.textContent = willShow\n          ? \"Masquer le diagramme\"\n          : \"Afficher le diagramme\";\n\n        if (!willShow) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n\n      data.forEach(([year, value], index) => {\n        const x = margin.left + index * slot + (slot - barW) \/ 2;\n        const valueY = y(value);\n        const rectY = value >= 0 ? valueY : zeroY;\n        const rectH = Math.max(1.2, Math.abs(zeroY - valueY));\n        const color = value >= 0 ? \"#e85236\" : \"#5c9ae3\";\n\n        const group = makeSvg(\"g\", {\n          class: \"dec-bar\",\n          role: \"button\",\n          tabindex: \"0\",\n          \"aria-label\": `D\u00e9cembre ${year}, \u00e9cart \u00e0 la normale ${formatValue(value)} degr\u00e9 Celsius`\n        });\n\n        const visibleBar = makeSvg(\"rect\", {\n          x,\n          y: rectY,\n          width: barW,\n          height: rectH,\n          rx: 0.8,\n          fill: color,\n          class: \"dec-bar-visible\"\n        });\n\n        const hitArea = makeSvg(\"rect\", {\n          x: margin.left + index * slot,\n          y: margin.top,\n          width: slot,\n          height: plotH,\n          class: \"dec-hit-area\"\n        });\n\n        group.appendChild(visibleBar);\n        group.appendChild(hitArea);\n\n        group.addEventListener(\"pointerenter\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointermove\", (event) => {\n          if (!pinnedBar) placeTooltip(event.clientX, event.clientY, year, value);\n        });\n\n        group.addEventListener(\"pointerleave\", () => {\n          if (!pinnedBar) hideTooltip();\n        });\n\n        const selectBar = (event) => {\n          event.preventDefault();\n          event.stopPropagation();\n          removeSelection();\n          pinnedBar = group;\n          group.classList.add(\"is-selected\");\n          setSelectionCard(year, value);\n\n          const barBox = visibleBar.getBoundingClientRect();\n          placeTooltip(\n            barBox.left + barBox.width \/ 2,\n            Math.min(barBox.top, barBox.bottom),\n            year,\n            value\n          );\n        };\n\n        group.addEventListener(\"click\", selectBar);\n        group.addEventListener(\"keydown\", (event) => {\n          if (event.key === \"Enter\" || event.key === \" \") selectBar(event);\n          if (event.key === \"Escape\") {\n            removeSelection();\n            hideTooltip();\n          }\n        });\n\n        barsGroup.appendChild(group);\n      });\n\n      svg.appendChild(barsGroup);\n\n      const labelsGroup = makeSvg(\"g\", { \"aria-hidden\": \"true\" });\n      data.forEach(([year], index) => {\n        if (year % 5 !== 0) return;\n        const label = makeSvg(\"text\", {\n          x: margin.left + index * slot + slot \/ 2,\n          y: H - 25,\n          class: \"dec-x-label\"\n        });\n        label.textContent = year;\n        labelsGroup.appendChild(label);\n      });\n      svg.appendChild(labelsGroup);\n\n      svg.addEventListener(\"click\", (event) => {\n        if (event.target === svg || event.target.classList.contains(\"dec-grid-line\")) {\n          removeSelection();\n          hideTooltip();\n        }\n      });\n    });\n  })();\n<\/script><script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-8902396130105212\"\n     crossorigin=\"anonymous\"><\/script>\n<!-- bas de page -->\n<ins class=\"adsbygoogle\"\n     style=\"display:block\"\n     data-ad-client=\"ca-pub-8902396130105212\"\n     data-ad-slot=\"7724440717\"\n     data-ad-format=\"auto\"\n     data-full-width-responsive=\"true\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><div class=\"fusion-text fusion-text-3\"><h2>FAQ<\/h2>\n<h2 id=\"1-que-signifie-cart--la-moyenne-mensuelle\" class=\"font-semibold leading-tight text-pretty mb-2 mt-4 &#091;.has-inline-images_&amp;&#093;:clear-end text-base first:mt-0\">1. Que signifie \u00ab\u202f\u00e9cart \u00e0 la moyenne mensuelle\u202f\u00bb ?<\/h2>\n<p class=\"my-2 &#091;&amp;+p&#093;:mt-4 &#091;&amp;_strong:has(+br)&#093;:inline-block &#091;&amp;_strong:has(+br)&#093;:align-top\">L\u2019\u00e9cart \u00e0 la moyenne mensuelle (ou anomalie de temp\u00e9rature) indique de combien un mois donn\u00e9 a \u00e9t\u00e9 plus chaud ou plus froid que la normale climatique de r\u00e9f\u00e9rence, exprim\u00e9 en degr\u00e9s.<\/p>\n<h2 id=\"2-sur-quelle-priode-est-calcule-la-normale-en-fran\" class=\"font-semibold leading-tight text-pretty mb-2 mt-4 &#091;.has-inline-images_&amp;&#093;:clear-end text-base first:mt-0\">2. Sur quelle p\u00e9riode est calcul\u00e9e la \u00ab\u202fnormale\u202f\u00bb en France ?<\/h2>\n<p class=\"my-2 &#091;&amp;+p&#093;:mt-4 &#091;&amp;_strong:has(+br)&#093;:inline-block &#091;&amp;_strong:has(+br)&#093;:align-top\">En France, les normales climatiques sont calcul\u00e9es sur des p\u00e9riodes de 30 ans\u202f; depuis 2022, la r\u00e9f\u00e9rence utilis\u00e9e par M\u00e9t\u00e9o\u2011France est 1991\u20112020, qui remplace l\u2019ancienne normale 1981\u20112010.<\/p>\n<h2 id=\"3-comment-calcule-t-on-cet-cart\" class=\"font-semibold leading-tight text-pretty mb-2 mt-4 &#091;.has-inline-images_&amp;&#093;:clear-end text-base first:mt-0\">3. Comment calcule-t-on cet \u00e9cart ?<\/h2>\n<p class=\"my-2 &#091;&amp;+p&#093;:mt-4 &#091;&amp;_strong:has(+br)&#093;:inline-block &#091;&amp;_strong:has(+br)&#093;:align-top\">On calcule d\u2019abord la moyenne des temp\u00e9ratures du mois (par exemple toutes les temp\u00e9ratures de janvier 2025), puis on soustrait la moyenne des mois de janvier de la p\u00e9riode de r\u00e9f\u00e9rence\u202f; la diff\u00e9rence obtenue est l\u2019anomalie mensuelle.<\/p>\n<h2 id=\"4-que-montre-un-cart-positif-ou-ngatif\" class=\"font-semibold leading-tight text-pretty mb-2 mt-4 &#091;.has-inline-images_&amp;&#093;:clear-end text-base first:mt-0\">4. Que montre un \u00e9cart positif ou n\u00e9gatif ?<\/h2>\n<p class=\"my-2 &#091;&amp;+p&#093;:mt-4 &#091;&amp;_strong:has(+br)&#093;:inline-block &#091;&amp;_strong:has(+br)&#093;:align-top\">Un \u00e9cart positif (par exemple +2\u202f\u00b0C) signifie que le mois a \u00e9t\u00e9 plus chaud que la normale, un \u00e9cart n\u00e9gatif (par exemple \u20131\u202f\u00b0C) qu\u2019il a \u00e9t\u00e9 plus frais que d\u2019habitude pour ce mois-l\u00e0.<\/p>\n<h2 id=\"5-pourquoi-ces-carts-sont-ils-importants-pour-le-c\" class=\"font-semibold leading-tight text-pretty mb-2 mt-4 &#091;.has-inline-images_&amp;&#093;:clear-end text-base first:mt-0\">5. Pourquoi ces \u00e9carts sont-ils importants pour le climat ?<\/h2>\n<p class=\"my-2 &#091;&amp;+p&#093;:mt-4 &#091;&amp;_strong:has(+br)&#093;:inline-block &#091;&amp;_strong:has(+br)&#093;:align-top\">L\u2019analyse des \u00e9carts mensuels sur de longues s\u00e9ries montre que les anomalies positives se multiplient avec le r\u00e9chauffement climatique, les mois plus doux ou plus chauds devenant beaucoup plus fr\u00e9quents que les mois plus frais que la normale.<\/p>\n<\/div><!-- BOUTON SOMMAIRE CLIMATOLOGIE \u2014 WORDPRESS -->\n\n<style>\n  .sommaire-climatologie-wrap {\n    display: flex;\n    justify-content: center;\n    margin: 24px 0;\n  }\n\n  .sommaire-climatologie {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    padding: 15px 32px;\n    color: #ffffff !important;\n    font-family: inherit;\n    font-size: 17px;\n    font-weight: 800;\n    line-height: 1.2;\n    letter-spacing: 0.7px;\n    text-align: center;\n    text-decoration: none !important;\n    text-transform: uppercase;\n    border: 1px solid rgba(255, 255, 255, 0.3);\n    border-radius: 14px;\n    background: linear-gradient(135deg, #064e3b, #059669);\n    box-shadow: 0 8px 20px rgba(5, 150, 105, 0.3);\n    transition: transform 0.25s ease, box-shadow 0.25s ease;\n  }\n\n  .sommaire-climatologie:hover {\n    color: #ffffff !important;\n    transform: translateY(-3px);\n    box-shadow: 0 12px 26px rgba(5, 150, 105, 0.42);\n  }\n\n  .sommaire-climatologie:focus-visible {\n    outline: 3px solid #fbbf24;\n    outline-offset: 4px;\n  }\n\n  @media (max-width: 600px) {\n    .sommaire-climatologie {\n      width: 100%;\n      padding: 15px 20px;\n      font-size: 16px;\n    }\n  }\n<\/style>\n\n<div class=\"sommaire-climatologie-wrap\">\n  <a class=\"sommaire-climatologie\"\n     href=\"https:\/\/alertes-meteo.com\/index.php\/climatologie\/\"\n     aria-label=\"Acc\u00e9der au sommaire Climatologie\">\n    Sommaire Climatologie\n  <\/a>\n<\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":61221,"parent":60843,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_seopress_titles_title":"Temp\u00e9ratures annuelles en France depuis 1900 : \u00e9volution et anomalies climatiques","_seopress_titles_desc":"D\u00e9couvrez l'\u00e9volution des temp\u00e9ratures annuelles en France depuis 1900 et les anomalies climatiques qui illustrent l'acc\u00e9l\u00e9ration du r\u00e9chauffement.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"both","_seopress_redirections_param":"","_seopress_redirections_type":301,"_seopress_analysis_target_kw":"temperature mer","footnotes":""},"class_list":["post-61168","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages\/61168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/comments?post=61168"}],"version-history":[{"count":21,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages\/61168\/revisions"}],"predecessor-version":[{"id":61255,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages\/61168\/revisions\/61255"}],"up":[{"embeddable":true,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/pages\/60843"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/media\/61221"}],"wp:attachment":[{"href":"https:\/\/alertes-meteo.com\/index.php\/wp-json\/wp\/v2\/media?parent=61168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}