diff --git a/src/lib/components/budget/WithoutBudgetCard.svelte b/src/lib/components/budget/WithoutBudgetCard.svelte
new file mode 100644
index 0000000000000000000000000000000000000000..4789f9e97babf921a1243f0fc05020f5b629c58a
--- /dev/null
+++ b/src/lib/components/budget/WithoutBudgetCard.svelte
@@ -0,0 +1,280 @@
+<script lang="ts">
+  import type { Variable } from "@openfisca/json-model"
+  import type { DisplayMode } from "$lib/displays"
+  import { newSimulationUrl } from "$lib/urls"
+
+  export let displayMode: DisplayMode
+  export let variable: Variable
+</script>
+
+<div class="p-2 rounded-lg border border-gray-200 bg-white shadow-md">
+  <div
+    class="flex flex-col items-center gap-6 px-10 py-28 text-center bg-gray-100 rounded-lg"
+  >
+    {#if variable.name === "csg" || variable.name === "impots_directs" || variable.name === "cotisations_salariales" || variable.name === "cotisations_employeur_securite_sociale" || variable.name === "cotisations_employeur_retraite_complementaire" || variable.name === "prestations_sociales" || variable.name === "prestations_familiales" || variable.name === "af_nettes_crds"}
+      <span class="text-lg text-gray-600 max-w-prose">
+        Les impacts budgétaires ne sont pas disponibles pour {#if variable.name === "csg"}la
+          totalité de la
+        {:else if variable.name === "impots_directs" || variable.name === "cotisations_salariales" || variable.name === "cotisations_employeur_securite_sociale" || variable.name === "cotisations_employeur_retraite_complementaire" || variable.name === "prestations_sociales" || variable.name === "prestations_familiales"}la
+          totalité des{:else if variable.name === "af_nettes_crds"}le montant
+          net des{/if} «&nbsp;{variable.short_label ??
+          variable.label ??
+          variable.name}&nbsp;», mais ils sont calculables pour {#if variable.name === "csg"}certaines
+          parts
+        {:else if variable.name === "cotisations_salariales" || variable.name === "cotisations_employeur_securite_sociale" || variable.name === "cotisations_employeur_retraite_complementaire"}certaines
+        {:else if variable.name === "af_nettes_crds"}les allocations familiales
+          avant prélèvement de la CRDS{/if}
+        :
+      </span>
+      {#if variable.name === "csg"}
+        <ul class="list-disc list-inside">
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "csg_salaire",
+                budget: true,
+              })}
+              >CSG salaires<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "csg_retraite",
+                budget: true,
+              })}
+              >CSG retraites<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+        </ul>
+      {:else if variable.name === "impots_directs"}
+        <a
+          class="lx-link-uppercase"
+          href={newSimulationUrl({
+            ...displayMode,
+            parametersVariableName: "irpp_economique",
+            budget: true,
+          })}
+          >Impôt sur le revenu<iconify-icon
+            class="align-[-0.25rem] text-xl"
+            icon="ri-arrow-right-line"
+          />
+        </a>
+      {:else if variable.name === "cotisations_salariales"}
+        <ul class="list-disc list-inside">
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "vieillesse_salarie",
+                budget: true,
+              })}
+              >Cotisation d'assurance vieillesse<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "agirc_arrco_salarie",
+                budget: true,
+              })}
+              >Cotisation Agirc-Arcco<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "agirc_arrco_salarie",
+                budget: true,
+              })}
+              >Contribution d'équilibre général<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+        </ul>
+      {:else if variable.name === "cotisations_employeur_securite_sociale"}
+        <ul class="list-disc list-inside">
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "mmid_employeur_net_allegement",
+                budget: true,
+              })}
+              >Cotisation maladie maternité invalidité décès<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "vieillesse_employeur",
+                budget: true,
+              })}
+              >Cotisation d'assurance vieillesse<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "famille_net_allegement",
+                budget: true,
+              })}
+              >Cotisation d'allocations familiales<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "contribution_solidarite_autonomie",
+                budget: true,
+              })}
+              >Contribution solidarité autonomie<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+        </ul>
+      {:else if variable.name === "cotisations_employeur_retraite_complementaire"}
+        <ul class="list-disc list-inside">
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName: "agirc_arrco_employeur",
+                budget: true,
+              })}
+              >Cotisation Agirc-Arcco<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+          <li>
+            <a
+              class="lx-link-uppercase"
+              href={newSimulationUrl({
+                ...displayMode,
+                parametersVariableName:
+                  "contribution_equilibre_general_employeur",
+                budget: true,
+              })}
+              >Contribution d'équilibre général<iconify-icon
+                class="align-[-0.25rem] text-xl"
+                icon="ri-arrow-right-line"
+              />
+            </a>
+          </li>
+        </ul>
+      {:else if variable.name === "prestations_sociales" || variable.name === "prestations_familiales"}
+        <a
+          class="lx-link-uppercase"
+          href={newSimulationUrl({
+            ...displayMode,
+            parametersVariableName: "af",
+            budget: true,
+          })}
+          >Allocations familiales brutes<iconify-icon
+            class="align-[-0.25rem] text-xl"
+            icon="ri-arrow-right-line"
+          />
+        </a>
+      {:else if variable.name === "af_nettes_crds"}
+        <a
+          class="lx-link-uppercase"
+          href={newSimulationUrl({
+            ...displayMode,
+            parametersVariableName: "af",
+            budget: true,
+          })}
+          >Allocations familiales brutes<iconify-icon
+            class="align-[-0.25rem] text-xl"
+            icon="ri-arrow-right-line"
+          />
+        </a>
+      {/if}
+    {:else}
+      <span class="text-lg text-gray-600 max-w-prose">
+        Les impacts budgétaires du dispositif «&nbsp;{variable.short_label ??
+          variable.label ??
+          variable.name}&nbsp;» ne sont pas encore disponibles. Vous en avez
+        besoin ? Écrivez-nous à
+        <a class="lx-link-text" href="mailto:leximpact@assemblee-nationale.fr">
+          leximpact@assemblee-nationale.fr
+        </a>
+      </span>
+
+      <a
+        class="flex items-center gap-1.5 py-1.5 px-3 bg-white hover:bg-neutral-200 active:bg-neutral-300 rounded-lg font-semibold text-le-gris-dispositif-dark hover:text-black text-sm tracking-wider uppercase transition-all duration-200 ease-out-back"
+        href={newSimulationUrl({
+          ...displayMode,
+          parametersVariableName: undefined,
+          budget: true,
+        })}
+      >
+        Voir les dispositifs avec impacts budgétaires
+      </a>
+    {/if}
+
+    <div class="flex gap-9 mb-3 w-full mt-4">
+      <hr class="mt-5 flex-1 border-dashed border-black" />
+      <span class="text-lg font-light xl:text-2xl 2xl:text-3xl">ou</span>
+      <hr class="mt-5 flex-1 border-dashed border-black" />
+    </div>
+    <span class="font-light text-gray-600 max-w-screen-sm">
+      Les impacts sont aussi calculables sur des cas types :</span
+    ><a
+      class="flex items-center gap-1.5 py-1.5 px-3 bg-white hover:bg-neutral-200 active:bg-neutral-300 rounded-lg font-semibold text-le-gris-dispositif-dark hover:text-black text-sm tracking-wider uppercase transition-all duration-200 ease-out-back"
+      href={newSimulationUrl({
+        ...displayMode,
+        budget: false,
+      })}
+    >
+      <!--                              <iconify-icon-->
+      <!--                                class="text-lg"-->
+      <!--                                icon="ri-arrow-left-line"-->
+      <!--                              />-->
+      Voir les impacts sur cas types
+    </a>
+  </div>
+</div>
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 988aaf6f929b7ecb5377096fd6d5e81a4baa90fe..b401881091b294d8ed53cf08c7bde53bfa1e88e3 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -51,6 +51,7 @@
   import VariableReferredParameters from "$lib/components/variables/VariableReferredParameters.svelte"
   import VariableValueChange from "$lib/components/variables/VariableValueChange.svelte"
   import WaterfallPlainView from "$lib/components/WaterfallPlainView.svelte"
+  import WithoutBudgetCard from "$lib/components/budget/WithoutBudgetCard.svelte"
   import {
     getLatestCalculation,
     waterfalls,
@@ -1407,305 +1408,7 @@
                         <StaticAggregates {displayMode} />
 
                         <!--Panneau indicateur que d'autres dispositifs sont disponibles en budgétaire-->
-                        <div
-                          class="p-2 rounded-lg border border-gray-200 bg-white shadow-md"
-                        >
-                          <div
-                            class="flex flex-col items-center gap-6 px-10 py-28 text-center bg-gray-100 rounded-lg"
-                          >
-                            {#if variable.name === "csg" || variable.name === "impots_directs" || variable.name === "cotisations_salariales" || variable.name === "cotisations_employeur_securite_sociale" || variable.name === "cotisations_employeur_retraite_complementaire" || variable.name === "prestations_sociales" || variable.name === "prestations_familiales" || variable.name === "af_nettes_crds"}
-                              <span class="text-lg text-gray-600 max-w-prose">
-                                Les impacts budgétaires ne sont pas disponibles
-                                pour {#if variable.name === "csg"}la totalité de
-                                  la
-                                {:else if variable.name === "impots_directs" || variable.name === "cotisations_salariales" || variable.name === "cotisations_employeur_securite_sociale" || variable.name === "cotisations_employeur_retraite_complementaire" || variable.name === "prestations_sociales" || variable.name === "prestations_familiales"}la
-                                  totalité des{:else if variable.name === "af_nettes_crds"}le
-                                  montant net des{/if} «&nbsp;{variable.short_label ??
-                                  variable.label ??
-                                  variable.name}&nbsp;», mais ils sont
-                                calculables pour {#if variable.name === "csg"}certaines
-                                  parts
-                                {:else if variable.name === "cotisations_salariales" || variable.name === "cotisations_employeur_securite_sociale" || variable.name === "cotisations_employeur_retraite_complementaire"}certaines
-                                {:else if variable.name === "af_nettes_crds"}les
-                                  allocations familiales avant prélèvement de la
-                                  CRDS{/if}
-                                :
-                              </span>
-                              {#if variable.name === "csg"}
-                                <ul class="list-disc list-inside">
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName: "csg_salaire",
-                                        budget: true,
-                                      })}
-                                      >CSG salaires<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName: "csg_retraite",
-                                        budget: true,
-                                      })}
-                                      >CSG retraites<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                </ul>
-                              {:else if variable.name === "impots_directs"}
-                                <a
-                                  class="lx-link-uppercase"
-                                  href={newSimulationUrl({
-                                    ...displayMode,
-                                    parametersVariableName: "irpp_economique",
-                                    budget: true,
-                                  })}
-                                  >Impôt sur le revenu<iconify-icon
-                                    class="align-[-0.25rem] text-xl"
-                                    icon="ri-arrow-right-line"
-                                  />
-                                </a>
-                              {:else if variable.name === "cotisations_salariales"}
-                                <ul class="list-disc list-inside">
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "vieillesse_salarie",
-                                        budget: true,
-                                      })}
-                                      >Cotisation d'assurance vieillesse<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "agirc_arrco_salarie",
-                                        budget: true,
-                                      })}
-                                      >Cotisation Agirc-Arcco<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "agirc_arrco_salarie",
-                                        budget: true,
-                                      })}
-                                      >Contribution d'équilibre général<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                </ul>
-                              {:else if variable.name === "cotisations_employeur_securite_sociale"}
-                                <ul class="list-disc list-inside">
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "mmid_employeur_net_allegement",
-                                        budget: true,
-                                      })}
-                                      >Cotisation maladie maternité invalidité
-                                      décès<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "vieillesse_employeur",
-                                        budget: true,
-                                      })}
-                                      >Cotisation d'assurance vieillesse<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "famille_net_allegement",
-                                        budget: true,
-                                      })}
-                                      >Cotisation d'allocations familiales<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "contribution_solidarite_autonomie",
-                                        budget: true,
-                                      })}
-                                      >Contribution solidarité autonomie<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                </ul>
-                              {:else if variable.name === "cotisations_employeur_retraite_complementaire"}
-                                <ul class="list-disc list-inside">
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "agirc_arrco_employeur",
-                                        budget: true,
-                                      })}
-                                      >Cotisation Agirc-Arcco<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                  <li>
-                                    <a
-                                      class="lx-link-uppercase"
-                                      href={newSimulationUrl({
-                                        ...displayMode,
-                                        parametersVariableName:
-                                          "contribution_equilibre_general_employeur",
-                                        budget: true,
-                                      })}
-                                      >Contribution d'équilibre général<iconify-icon
-                                        class="align-[-0.25rem] text-xl"
-                                        icon="ri-arrow-right-line"
-                                      />
-                                    </a>
-                                  </li>
-                                </ul>
-                              {:else if variable.name === "prestations_sociales" || variable.name === "prestations_familiales"}
-                                <a
-                                  class="lx-link-uppercase"
-                                  href={newSimulationUrl({
-                                    ...displayMode,
-                                    parametersVariableName: "af",
-                                    budget: true,
-                                  })}
-                                  >Allocations familiales brutes<iconify-icon
-                                    class="align-[-0.25rem] text-xl"
-                                    icon="ri-arrow-right-line"
-                                  />
-                                </a>
-                              {:else if variable.name === "af_nettes_crds"}
-                                <a
-                                  class="lx-link-uppercase"
-                                  href={newSimulationUrl({
-                                    ...displayMode,
-                                    parametersVariableName: "af",
-                                    budget: true,
-                                  })}
-                                  >Allocations familiales brutes<iconify-icon
-                                    class="align-[-0.25rem] text-xl"
-                                    icon="ri-arrow-right-line"
-                                  />
-                                </a>
-                              {/if}
-                            {:else}
-                              <span class="text-lg text-gray-600 max-w-prose">
-                                Les impacts budgétaires du dispositif «&nbsp;{variable.short_label ??
-                                  variable.label ??
-                                  variable.name}&nbsp;» ne sont pas encore
-                                disponibles. Vous en avez besoin ? Écrivez-nous
-                                à
-                                <a
-                                  class="lx-link-text"
-                                  href="mailto:leximpact@assemblee-nationale.fr"
-                                >
-                                  leximpact@assemblee-nationale.fr
-                                </a>
-                              </span>
-
-                              <a
-                                class="flex items-center gap-1.5 py-1.5 px-3 bg-white hover:bg-neutral-200 active:bg-neutral-300 rounded-lg font-semibold text-le-gris-dispositif-dark hover:text-black text-sm tracking-wider uppercase transition-all duration-200 ease-out-back"
-                                href={newSimulationUrl({
-                                  ...displayMode,
-                                  parametersVariableName: undefined,
-                                  budget: true,
-                                })}
-                              >
-                                Voir les dispositifs avec impacts budgétaires
-                              </a>
-                            {/if}
-
-                            <div class="flex gap-9 mb-3 w-full mt-4">
-                              <hr
-                                class="mt-5 flex-1 border-dashed border-black"
-                              />
-                              <span
-                                class="text-lg font-light xl:text-2xl 2xl:text-3xl"
-                                >ou</span
-                              >
-                              <hr
-                                class="mt-5 flex-1 border-dashed border-black"
-                              />
-                            </div>
-                            <span
-                              class="font-light text-gray-600 max-w-screen-sm"
-                            >
-                              Les impacts sont aussi calculables sur des cas
-                              types :</span
-                            ><a
-                              class="flex items-center gap-1.5 py-1.5 px-3 bg-white hover:bg-neutral-200 active:bg-neutral-300 rounded-lg font-semibold text-le-gris-dispositif-dark hover:text-black text-sm tracking-wider uppercase transition-all duration-200 ease-out-back"
-                              href={newSimulationUrl({
-                                ...displayMode,
-                                budget: false,
-                              })}
-                            >
-                              <!--                              <iconify-icon-->
-                              <!--                                class="text-lg"-->
-                              <!--                                icon="ri-arrow-left-line"-->
-                              <!--                              />-->
-                              Voir les impacts sur cas types
-                            </a>
-                          </div>
-                        </div>
+                        <WithoutBudgetCard {displayMode} {variable} />
                       {:else if $budgetSimulation === undefined && !budgetVariablesNameRelated.has(displayMode.parametersVariableName)}
                         {@const budgetVariableName =
                           displayMode.parametersVariableName !== undefined