diff --git a/src/lib/components/test_cases/TestCaseRelatedCarousel.svelte b/src/lib/components/test_cases/TestCaseRelatedCarousel.svelte
index 0b9b3a936305d9c9ec0c439eafb53f9d8ccb699b..d4b88dcefafcff36cc4b4d3f0f26177f704ec7b1 100644
--- a/src/lib/components/test_cases/TestCaseRelatedCarousel.svelte
+++ b/src/lib/components/test_cases/TestCaseRelatedCarousel.svelte
@@ -79,8 +79,9 @@
 
 <div class="flex items-center">
   <button
-    class="z-10 mx-2 hidden h-10 w-10 shrink-0 items-center justify-center rounded-[50%] border-2 bg-gray-50 shadow-md transition-all duration-500 ease-out-back enabled:hover:border-le-vert-500 enabled:active:scale-90 disabled:text-gray-400 md:flex lg:mx-5 2xl:h-12 2xl:w-12"
-    class:scale-0={carouselScrollX <= toleranceOffset}
+    class="z-10 mx-2 hidden h-10 w-10 shrink-0 items-center justify-center rounded-[50%] border-2 bg-gray-50 shadow-md transition-all duration-400 ease-out-back enabled:hover:border-le-vert-500 enabled:active:scale-90 disabled:text-gray-400 md:flex lg:mx-5 2xl:h-12 2xl:w-12"
+    class:opacity-0={carouselScrollX <= toleranceOffset}
+    class:scale-25={carouselScrollX <= toleranceOffset}
     on:click={() => scrollCarousel(false)}
     ><iconify-icon
       class="text-2xl 2xl:text-3xl"
@@ -182,8 +183,9 @@
     <div />
   </div>
   <button
-    class="z-10 mx-2 hidden h-10 w-10 shrink-0 items-center justify-center rounded-[50%] border-2 bg-gray-50 shadow-md transition-all duration-500 ease-out-back enabled:hover:border-le-vert-500 enabled:active:scale-90 disabled:text-gray-400 md:-ml-12 md:flex lg:mx-5 lg:-ml-16 2xl:-ml-[72px] 2xl:h-12 2xl:w-12"
-    class:scale-0={carouselScrollX >= maxScrollX - toleranceOffset}
+    class="z-10 mx-2 hidden h-10 w-10 shrink-0 items-center justify-center rounded-[50%] border-2 bg-gray-50 shadow-md transition-all duration-400 ease-out-back enabled:hover:border-le-vert-500 enabled:active:scale-90 disabled:text-gray-400 md:-ml-12 md:flex lg:mx-5 lg:-ml-16 2xl:-ml-[72px] 2xl:h-12 2xl:w-12"
+    class:opacity-0={carouselScrollX >= maxScrollX - toleranceOffset}
+    class:scale-25={carouselScrollX >= maxScrollX - toleranceOffset}
     on:click={() => scrollCarousel(true)}
     ><iconify-icon
       class="text-2xl 2xl:text-3xl"
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 47911a032d48a9a8b78b708d8b00bc339474f08b..81017da25f663d42a84be1d6ee23262a08c76474 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -434,13 +434,20 @@
     $budgetSimulation = $budgetSimulationCache.budgetSimulation
   }
 
-  $: isModificationsOpen =
-    isUserModificationsOpen && Object.keys($parametricReform).length > 0
+  $: isModificationsOpen = isUserModificationsOpen && modificationsCount > 0
 
   $: loadParameter($searchParameterName)
 
+  $: modificationsAmendmentCount = Object.keys($parametricReform).length
+
   $: modificationsCount =
-    Object.keys($parametricReform).length + ($billName !== undefined ? 4 : 0)
+    modificationsAmendmentCount + ($billName !== undefined ? 4 : 0)
+
+  $: showBudgetParametersError =
+    displayMode.budget &&
+    Object.keys($parametricReform).some(
+      (parameterName) => !budgetEditableParametersName.has(parameterName),
+    )
 
   function auditSimulationQuery(
     audit: Audit,
@@ -1018,7 +1025,7 @@
           Impacts
         </div>
 
-        {#if Object.keys($parametricReform).length !== 0 && displayMode.mobileLaw}
+        {#if modificationsAmendmentCount !== 0 && displayMode.mobileLaw}
           <span class="flex h-3 w-3">
             <span
               class="absolute inline-flex h-3 w-3 animate-ping rounded-full bg-le-jaune-dark bg-opacity-90"
@@ -1063,7 +1070,7 @@
               >
                 <div slot="activator" class="relative">
                   <div
-                    class="mx-4 flex h-8 grow-0 items-center rounded-md bg-le-jaune px-2 py-1 text-sm uppercase text-black shadow-md hover:bg-le-jaune-dark hover:text-white focus:outline-none active:bg-le-jaune-very-dark active:text-white sm:text-xs md:mx-0 2xl:text-sm"
+                    class="mx-4 flex h-8 grow-0 items-center rounded-md bg-le-jaune-dark px-2 py-1 text-sm uppercase text-white shadow-md hover:bg-le-jaune-very-dark hover:bg-opacity-90 focus:outline-none active:bg-le-jaune-very-dark active:text-white sm:text-xs md:mx-0 2xl:text-sm"
                     class:!bg-gray-200={modificationsCount === 0}
                     class:!text-gray-500={modificationsCount === 0}
                     class:!shadow-none={modificationsCount === 0}
@@ -1077,12 +1084,34 @@
                       ? "1 modification"
                       : `${modificationsCount} modifications`}
                   </div>
-                  {#if displayMode.budget && Object.keys($parametricReform).some((parameterName) => !budgetEditableParametersName.has(parameterName))}
+                  <div class="absolute -top-2 -right-2 flex">
+                    {#if $billName !== undefined}
+                      <span
+                        class="z-10 w-5 h-5 flex justify-center items-center shadow rounded-full bg-le-rouge-bill text-black text-xs font-bold tracking-wider border-[1.5px] border-white transition-all duration-200 ease-out-back translate-x-2"
+                        class:translate-x-6={!showBudgetParametersError}
+                        class:!translate-x-10={modificationsAmendmentCount ===
+                          0}
+                      >
+                        4
+                      </span>
+                    {/if}
+                    <span
+                      class="z-20 w-5 h-5 flex justify-center items-center shadow rounded-full bg-le-jaune text-black text-xs font-bold tracking-wider border-[1.5px] border-white transition-all duration-200 translate-x-1"
+                      class:opacity-0={modificationsAmendmentCount === 0}
+                      class:scale-75={modificationsAmendmentCount === 0}
+                      class:ease-out-back={modificationsAmendmentCount > 0}
+                      class:translate-x-5={!showBudgetParametersError}
+                    >
+                      {modificationsAmendmentCount}
+                    </span>
                     <iconify-icon
                       icon="ri-error-warning-fill"
-                      class="absolute -top-2 -right-2 rounded-full bg-white text-red-700 text-xl"
+                      class="z-30 w-5 h-5 shadow rounded-full bg-white text-red-700 text-xl transition-all duration-200"
+                      class:opacity-0={!showBudgetParametersError}
+                      class:scale-75={!showBudgetParametersError}
+                      class:ease-out-back={showBudgetParametersError}
                     />
-                  {/if}
+                  </div>
                 </div>
 
                 <div
@@ -1092,7 +1121,7 @@
                   aria-orientation="vertical"
                   aria-labelledby="user-menu"
                 >
-                  {#if displayMode.budget && Object.keys($parametricReform).some((parameterName) => !budgetEditableParametersName.has(parameterName))}
+                  {#if showBudgetParametersError}
                     <div class="bg-gray-100 text-xs text-red-700 p-2">
                       <iconify-icon
                         icon="ri-error-warning-line"
@@ -1105,7 +1134,7 @@
                     class="ml-4 h-10 place-self-start text-sm uppercase text-gray-600 disabled:text-gray-400 enabled:hover:text-black"
                     on:click={reset}
                     title="Retirer les modifications de votre réforme"
-                    disabled={Object.keys($parametricReform).length === 0}
+                    disabled={modificationsAmendmentCount === 0}
                   >
                     <iconify-icon
                       class="mr-1 align-[-0.2rem] text-lg"
@@ -1146,7 +1175,7 @@
                 {/if}
 
                 Modifications en cours
-                {#if Object.keys($parametricReform).length !== 0 && displayMode.mobileLaw}
+                {#if modificationsAmendmentCount !== 0 && displayMode.mobileLaw}
                   <iconify-icon
                     class="align-[0.1rem] text-sm text-le-jaune"
                     icon="ri-checkbox-blank-circle-fill"
diff --git a/tailwind.config.cjs b/tailwind.config.cjs
index e6e90904742150e5c07e373db570741a00d80358..04bf1d4399a2272476a0322818edf7aa61019aa9 100644
--- a/tailwind.config.cjs
+++ b/tailwind.config.cjs
@@ -64,6 +64,18 @@ const config = {
           "50%": { opacity: "60%" },
         },
       },
+      scale: {
+        25: "0.25",
+      },
+      transitionDuration: {
+        250: "250ms",
+        350: "350ms",
+        400: "400ms",
+        450: "450ms",
+        550: "550ms",
+        600: "600ms",
+        650: "650ms",
+      },
       transitionTimingFunction: {
         "in-quad": "cubic-bezier(.55, .085, .68, .53)",
         "in-cubic": "cubic-bezier(.550, .055, .675, .19)",