diff --git a/src/app.postcss b/src/app.postcss
index 46739e09f6fd9c399a1b61bb244c273dc32d5e3f..d8562425cec47173df787b6a5e4d75150ba45f40 100644
--- a/src/app.postcss
+++ b/src/app.postcss
@@ -17,9 +17,8 @@
 @tailwind utilities;
 
 @layer components {
-  .link {
-    @apply link-text-le-bleu;
-  }
+  /* --- LIENS --- */
+
   .link2 {
     @apply link-text;
   }
diff --git a/src/lib/components/AllocationsFamilialesBudgetView.svelte b/src/lib/components/AllocationsFamilialesBudgetView.svelte
index 94793a9575ebbee192cec62ed1ce35ccb64805ed..46e8a1d2026ad3edbb9f880895f5c4c65d992ac0 100644
--- a/src/lib/components/AllocationsFamilialesBudgetView.svelte
+++ b/src/lib/components/AllocationsFamilialesBudgetView.svelte
@@ -232,7 +232,7 @@
               Les recettes calculées sont calibrées par rapport au montant total
               des prévisions 2024 de dépenses des allocations familiales
               annoncées à 13,848 Md€ dans le <a
-                class="link"
+                class="link-text"
                 href="https://contrib.securite-sociale.fr/files/live/sites/SSFR/files/medias/CCSS/2023/CCSS-Sept2023.pdf"
                 >rapport de septembre 2023 des Comptes de la Sécurité Sociale</a
               >
@@ -292,7 +292,7 @@
                   L'ensemble des revenus nets sont pris en compte. Définition
                   des UC de l'<a
                     target="_blank"
-                    class="link"
+                    class="link-text"
                     href="https://www.insee.fr/fr/metadonnees/definition/c1802"
                     >Insee.fr</a
                   >.</span
@@ -719,13 +719,13 @@
               Estimations effectuées sur un jeu de données constitué par
               LexImpact à partir des données 2019 de l'Enquête Revenus Fiscaux
               et Sociaux (<a
-                class="link"
+                class="link-text"
                 href="https://www.insee.fr/fr/metadonnees/source/serie/s1231"
                 target="_blank"
                 rel="noreferrer">ERFS-FPR</a
               >) de l'Insee, recalibrées avec la
               <a
-                class="link"
+                class="link-text"
                 href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                 target="_blank"
                 rel="noreferrer">base POTE</a
@@ -758,7 +758,7 @@
           <div class="py-2 px-3">
             <span class="text-black font-normal">
               Les estimations sont effectuées grâce au moteur de calcul <a
-                class="link"
+                class="link-text"
                 href="https://openfisca.org/fr/"
                 target="_blank"
                 rel="noreferrer">OpenFisca</a
diff --git a/src/lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte b/src/lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte
index 68b31ce5c6350e90d17b8760b66566eca935e05d..88ea6dc71de58ea0a8b9e1e9f1dac74c12fbb1d9 100644
--- a/src/lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte
+++ b/src/lib/components/AllocationsFamilialesGagnantsPerdantsView.svelte
@@ -95,7 +95,7 @@
                   <br />
                   Selon la
                   <a
-                    class="link"
+                    class="link-text"
                     href="https://www.insee.fr/fr/metadonnees/definition/c1879"
                     target="_blank"
                     rel="noreferrer">définition de l'Insee</a
@@ -110,7 +110,7 @@
                   >
                     LexImpact, <span class="italic"
                       >agrégat extrait de la <a
-                        class="link"
+                        class="link-text"
                         href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                         rel="noreferrer"
                         target="_blank">base de donnée POTE</a
@@ -188,12 +188,12 @@
               Estimations effectuées sur un jeu de données constitué par
               LexImpact à partir des données 2019 de l'Enquête Revenus Fiscaux
               et Sociaux (<a
-                class="link"
+                class="link-text"
                 href="https://www.insee.fr/fr/metadonnees/source/serie/s1231"
                 >ERFS-FPR</a
               >) de l'Insee, recalibrées avec la
               <a
-                class="link"
+                class="link-text"
                 href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                 >base POTE</a
               > 2021 des déclarations d'impôt sur le revenu des foyers fiscaux distribuée
@@ -210,6 +210,6 @@
     href="https://documentation.leximpact.dev/leximpact_prepare_data/memos/memo_prestations_familiales.html#allocations-familiales"
     rel="noreferrer"
     target="_blank"
-    class="link">mémo</a
+    class="link-text">mémo</a
   >.
 </p>
diff --git a/src/lib/components/CsgBudgetView.svelte b/src/lib/components/CsgBudgetView.svelte
index 5bf18e795fd28c1f36fa8edbdf0a4cd023afc0a5..2b92d32f2511b24998579080afd688d3fbedad66 100644
--- a/src/lib/components/CsgBudgetView.svelte
+++ b/src/lib/components/CsgBudgetView.svelte
@@ -234,7 +234,7 @@
             <div class="py-2 px-3">
               <span class="font-normal text-black"
                 >Les recettes calculées sont calibrées par rapport aux <a
-                  class="link"
+                  class="link-text"
                   href="https://www.securite-sociale.fr/files/live/sites/SSFR/files/medias/CCSS/2023/2023-09-CCSS.pdf#page=49"
                   target="_blank"
                   >comptes de la sécurité sociale «&nbspRésultats 2022,
@@ -242,7 +242,7 @@
                 >
                 publiés par la DSS sur
                 <a
-                  class="link"
+                  class="link-text"
                   href="https://www.securite-sociale.fr/la-secu-en-detail/comptes-de-la-securite-sociale/rapports-de-la-commission"
                   target="_blank">ce site</a
                 >.
@@ -310,7 +310,7 @@
                   foyer fiscal, qu'ils soient imposables ou non. En savoir plus
                   sur <a
                     target="_blank"
-                    class="link"
+                    class="link-text"
                     href="https://www.service-public.fr/particuliers/vosdroits/F13216"
                     >Service-public.fr</a
                   >.</span
@@ -661,13 +661,13 @@
               Estimations effectuées sur un jeu de données constitué par
               LexImpact à partir des données 2019 de l'Enquête Revenus Fiscaux
               et Sociaux (<a
-                class="link"
+                class="link-text"
                 href="https://www.insee.fr/fr/metadonnees/source/serie/s1231"
                 target="_blank"
                 rel="noreferrer">ERFS-FPR</a
               >) de l'Insee, recalibrées avec la
               <a
-                class="link"
+                class="link-text"
                 href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                 target="_blank"
                 rel="noreferrer">base POTE</a
@@ -700,7 +700,7 @@
           <div class="py-2 px-3">
             <span class="text-black font-normal">
               Les estimations sont effectuées grâce au moteur de calcul <a
-                class="link"
+                class="link-text"
                 href="https://openfisca.org/fr/"
                 target="_blank"
                 rel="noreferrer">OpenFisca</a
diff --git a/src/lib/components/CsgGagnantsPerdantsView.svelte b/src/lib/components/CsgGagnantsPerdantsView.svelte
index 906a8d421be449ef9010e45710e5ea558f7557a5..1cc4b5659bff0bfaad84b771de7841806a05d3dd 100644
--- a/src/lib/components/CsgGagnantsPerdantsView.svelte
+++ b/src/lib/components/CsgGagnantsPerdantsView.svelte
@@ -97,7 +97,7 @@
                   <br />
                   Selon la
                   <a
-                    class="link"
+                    class="link-text"
                     href="https://www.insee.fr/fr/metadonnees/definition/c1735"
                     target="_blank"
                     rel="noreferrer">définition de l'Insee</a
@@ -111,7 +111,7 @@
                   >
                     LexImpact, <span class="italic"
                       >agrégat extrait de la <a
-                        class="link"
+                        class="link-text"
                         href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                         rel="noreferrer"
                         target="_blank">base de donnée POTE</a
@@ -189,12 +189,12 @@
               Estimations effectuées sur un jeu de données constitué par
               LexImpact à partir des données 2019 de l'Enquête Revenus Fiscaux
               et Sociaux (<a
-                class="link"
+                class="link-text"
                 href="https://www.insee.fr/fr/metadonnees/source/serie/s1231"
                 >ERFS-FPR</a
               >) de l'Insee, recalibrées avec la
               <a
-                class="link"
+                class="link-text"
                 href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                 >base POTE</a
               > 2021 des déclarations d'impôt sur le revenu des foyers fiscaux distribuée
@@ -212,6 +212,6 @@
             href="https://documentation.leximpact.dev/leximpact_prepare_data/memos/memo_irpp.html"
             rel="noreferrer"
             target="_blank"
-            class="link">mémo</a
+            class="link-text">mémo</a
           >.
         </p>-->
diff --git a/src/lib/components/IrBudgetView.svelte b/src/lib/components/IrBudgetView.svelte
index feb7ef8e2bb91d04d95c57318cefa5c97dfc7bae..2d71fb0466e6df94f742fe9a380fc18dfbb42380 100644
--- a/src/lib/components/IrBudgetView.svelte
+++ b/src/lib/components/IrBudgetView.svelte
@@ -220,7 +220,7 @@
             <div class="py-2 px-3 font-normal text-black">
               Les recettes calculées sont calibrées par rapport au montant total
               des recettes de l'IR annoncé à 94,1Md€ dans le <a
-                class="link"
+                class="link-text"
                 href="https://www.assemblee-nationale.fr/dyn/16/textes/l16b1680_projet-loi#_Toc146713346"
                 >PLF 2024</a
               >
@@ -282,7 +282,7 @@
                   foyer fiscal, qu'ils soient imposables ou non. En savoir plus
                   sur <a
                     target="_blank"
-                    class="link"
+                    class="link-text"
                     href="https://www.service-public.fr/particuliers/vosdroits/F13216"
                     >Service-public.fr</a
                   >.</span
@@ -693,13 +693,13 @@
               Estimations effectuées sur un jeu de données constitué par
               LexImpact à partir des données 2019 de l'Enquête Revenus Fiscaux
               et Sociaux (<a
-                class="link"
+                class="link-text"
                 href="https://www.insee.fr/fr/metadonnees/source/serie/s1231"
                 target="_blank"
                 rel="noreferrer">ERFS-FPR</a
               >) de l'Insee, recalibrées avec la
               <a
-                class="link"
+                class="link-text"
                 href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                 target="_blank"
                 rel="noreferrer">base POTE</a
@@ -732,7 +732,7 @@
           <div class="py-2 px-3">
             <span class="text-black font-normal">
               Les estimations sont effectuées grâce au moteur de calcul <a
-                class="link"
+                class="link-text"
                 href="https://openfisca.org/fr/"
                 target="_blank"
                 rel="noreferrer">OpenFisca</a
diff --git a/src/lib/components/IrGagnantsPerdantsView.svelte b/src/lib/components/IrGagnantsPerdantsView.svelte
index e4e90fb3fa5027350f9fd7129c2749e34d2ba176..78779f5b0ab681aa8e2f1a48374991e8d76c3644 100644
--- a/src/lib/components/IrGagnantsPerdantsView.svelte
+++ b/src/lib/components/IrGagnantsPerdantsView.svelte
@@ -96,7 +96,7 @@
                   <br />
                   Selon la
                   <a
-                    class="link"
+                    class="link-text"
                     href="https://www.insee.fr/fr/metadonnees/definition/c1735"
                     target="_blank"
                     rel="noreferrer">définition de l'Insee</a
@@ -110,7 +110,7 @@
                   >
                     LexImpact, <span class="italic"
                       >agrégat extrait de la <a
-                        class="link"
+                        class="link-text"
                         href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                         rel="noreferrer"
                         target="_blank">base de donnée POTE</a
@@ -188,12 +188,12 @@
               Estimations effectuées sur un jeu de données constitué par
               LexImpact à partir des données 2019 de l'Enquête Revenus Fiscaux
               et Sociaux (<a
-                class="link"
+                class="link-text"
                 href="https://www.insee.fr/fr/metadonnees/source/serie/s1231"
                 >ERFS-FPR</a
               >) de l'Insee, recalibrées avec la
               <a
-                class="link"
+                class="link-text"
                 href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                 >base POTE</a
               > 2021 des déclarations d'impôt sur le revenu des foyers fiscaux distribuée
@@ -211,6 +211,6 @@
     href="https://documentation.leximpact.dev/leximpact_prepare_data/memos/memo_irpp.html"
     rel="noreferrer"
     target="_blank"
-    class="link">mémo</a
+    class="link-text">mémo</a
   >.
 </p>
diff --git a/src/lib/components/legifrance/ArticleView.svelte b/src/lib/components/legifrance/ArticleView.svelte
index 440ad1395dc245459d9699c0001e706ca37d835c..af8b7409d5aafffd4f8b9b7d18504779ede759c8 100644
--- a/src/lib/components/legifrance/ArticleView.svelte
+++ b/src/lib/components/legifrance/ArticleView.svelte
@@ -268,7 +268,7 @@
           {#if !isLastVersion}
             <br />
             <a
-              class="link"
+              class="link-text"
               href="https://www.legifrance.gouv.fr/codes/article_lc/{versions[
                 versions.length - 1
               ].LIEN_ART['@id']}"
@@ -283,7 +283,11 @@
   <div class=" text-right text-sm text-gray-500">
     {#if legifranceUrl !== undefined}
       <span class="font-sans text-sm text-gray-500 md:text-base">
-        <a class="link" href={legifranceUrl} rel="noreferrer" target="_blank"
+        <a
+          class="link-text"
+          href={legifranceUrl}
+          rel="noreferrer"
+          target="_blank"
           >Légifrance.fr<iconify-icon
             class="ml-1 inline-flex h-4 w-4"
             icon="ri-share-box-line"
diff --git a/src/lib/components/legifrance/LienView.svelte b/src/lib/components/legifrance/LienView.svelte
index ee2e1de6dfff229ef1666ac5249b7a5da0b311be..0b5bc09e15d483fe3e7665f149bf9205f5888058 100644
--- a/src/lib/components/legifrance/LienView.svelte
+++ b/src/lib/components/legifrance/LienView.svelte
@@ -82,7 +82,7 @@
       icon="codicon:dash"
       inline
     />
-    <a class="link link-hover link-primary" href={pathnameFromLegalId(id)}>
+    <a class="link-text" href={pathnameFromLegalId(id)}>
       {lien["#text"]}
     </a>
   </button>
diff --git a/src/lib/components/parameters/ArticleModal.svelte b/src/lib/components/parameters/ArticleModal.svelte
index 3d3c24adf5c218d384409294b37e2c8caf72c3a2..e40bce40473dea09782f608839cb49c1726a3912 100644
--- a/src/lib/components/parameters/ArticleModal.svelte
+++ b/src/lib/components/parameters/ArticleModal.svelte
@@ -108,7 +108,7 @@
                   <p>
                     La référence légale ou réglementaire ne peut pas être
                     affichée dans l'application. Cliquez sur <a
-                      class="link"
+                      class="link-text"
                       href={referenceUrl}
                       rel="noreferrer"
                       target="_blank">ce lien</a
diff --git a/src/lib/components/parameters/NodeEdit.svelte b/src/lib/components/parameters/NodeEdit.svelte
index d923acc9056d1de38f2441e9f54eccc100eca1a8..5e45c4fc28c6e1a2bef1fe81b0f87cc97c25ab92 100644
--- a/src/lib/components/parameters/NodeEdit.svelte
+++ b/src/lib/components/parameters/NodeEdit.svelte
@@ -123,7 +123,7 @@
     <ul class="ml-4">
       {#each Object.entries(parameter.children) as [childId, child]}
         <li class="my-2">
-          <a class="link" href="/parameters/{child.name}">
+          <a class="link-text" href="/parameters/{child.name}">
             {child.title}
           </a>
         </li>
diff --git a/src/lib/components/parameters/ParameterView.svelte b/src/lib/components/parameters/ParameterView.svelte
index b076c3f05a669af6f7a50674c2f1813279ae8381..9d2c0ba2e64381940811998e8648a66a18bb18f3 100644
--- a/src/lib/components/parameters/ParameterView.svelte
+++ b/src/lib/components/parameters/ParameterView.svelte
@@ -69,7 +69,7 @@
               <p class="inline font-serif text-sm">
                 <!-- svelte-ignore a11y-missing-attribute -->
                 <a
-                  class="link font-serif text-sm text-gray-500"
+                  class="link-text font-serif text-sm text-gray-500"
                   {...newSelfTargetAProps(`/parameters/${ancestor.name}`)}
                   >{ancestor.title}</a
                 >
@@ -112,7 +112,7 @@
               {/if}
               ⎪
               <a
-                class="link text-sm text-gray-700"
+                class="link-text text-sm text-gray-700"
                 href="/parameters/{parameter.name}/edit"
               >
                 Proposer une modification
@@ -145,7 +145,7 @@
                 <li class="my-2">
                   <!-- svelte-ignore a11y-missing-attribute -->
                   <a
-                    class="link"
+                    class="link-text"
                     {...newSelfTargetAProps(`/parameters/${child.name}`)}
                   >
                     {child.title}
@@ -225,7 +225,7 @@
                             {#each references as { href, note, title }}
                               <li>
                                 {#if href === undefined}{title}{:else}<a
-                                    class="link"
+                                    class="link-text"
                                     {href}
                                     rel="noreferrer"
                                     target="_blank">{title ?? "source"}</a
@@ -321,7 +321,7 @@
             <div class="font-base my-1 flex py-1">
               <p>
                 <a
-                  class="link text-sm text-gray-900"
+                  class="link-text text-sm text-gray-900"
                   href={parameterRepositoryUrl}
                   rel="noreferrer"
                   target="_blank"
@@ -354,7 +354,7 @@
                 <li>
                   <!-- svelte-ignore a11y-missing-attribute -->
                   <a
-                    class="link text-gray-900"
+                    class="link-text text-gray-900"
                     {...newSelfTargetAProps(`/variables/${variableName}`)}
                     >{variableName}</a
                   >
diff --git a/src/lib/components/parameters/ReferencesView.svelte b/src/lib/components/parameters/ReferencesView.svelte
index f7da9a46744f44aeec005025d63e00de36ef9af4..966febca66c27a4bd15befd71728839cb128f9e1 100644
--- a/src/lib/components/parameters/ReferencesView.svelte
+++ b/src/lib/components/parameters/ReferencesView.svelte
@@ -18,7 +18,7 @@
                 {#if href === undefined}
                   {title}
                 {:else}
-                  <a class="link" {href} rel="noreferrer" target="_blank"
+                  <a class="link-text" {href} rel="noreferrer" target="_blank"
                     >{title ?? href}</a
                   >
                 {/if}
diff --git a/src/lib/components/parameters/ScaleView.svelte b/src/lib/components/parameters/ScaleView.svelte
index b31d7f657a60246456da18bc75b6e22e1dd1bf4c..9d59e0cbbe5acd51d386b4f6130c6eeb596e9927 100644
--- a/src/lib/components/parameters/ScaleView.svelte
+++ b/src/lib/components/parameters/ScaleView.svelte
@@ -87,7 +87,7 @@
                   {#each references as { href, note, title }}
                     <li>
                       {#if href === undefined}{title}{:else}<a
-                          class="link"
+                          class="link-text"
                           {href}
                           rel="noreferrer"
                           target="_blank">{title ?? "source"}</a
@@ -148,7 +148,7 @@
                       {#each references as { href, note, title }}
                         <li>
                           {#if href === undefined}{title}{:else}<a
-                              class="link"
+                              class="link-text"
                               {href}
                               rel="noreferrer"
                               target="_blank">{title ?? "source"}</a
diff --git a/src/lib/components/test_cases/TestCaseEdit.svelte b/src/lib/components/test_cases/TestCaseEdit.svelte
index 8945bf1d939c4fcb89e1ab47c30de8e7e6fd26e5..92129a8079b80cf1150d1d6e8270e52e6ff62e26 100644
--- a/src/lib/components/test_cases/TestCaseEdit.svelte
+++ b/src/lib/components/test_cases/TestCaseEdit.svelte
@@ -595,7 +595,7 @@
       >
         LexImpact, <span class="italic"
           >agrégat extrait de la <a
-            class="link"
+            class="link-text"
             href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
             rel="noreferrer"
             target="_blank">base de donnée POTE</a
@@ -628,7 +628,7 @@
             La base POTE rassemble les informations recensées à l’occasion de la
             déclaration 2020 sur les revenus 2019 grâce au
             <a
-              class="link"
+              class="link-text"
               href="https://www.impots.gouv.fr/formulaire/2042/declaration-des-revenus"
               rel="noreferrer"
               target="_blank">formulaire n°2042 et ses annexes</a
@@ -663,7 +663,7 @@
                 href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                 rel="noreferrer"
                 target="_blank"
-                class="link">cette page du CASD</a
+                class="link-text">cette page du CASD</a
               > ;
             </li>
             <li>
diff --git a/src/lib/components/test_cases/TestCaseGraph.svelte b/src/lib/components/test_cases/TestCaseGraph.svelte
index 26c549183270af887d5ffed4f17d0eda2a030a43..e6802b1ad28154532127d7bfa31734f12ee1174f 100644
--- a/src/lib/components/test_cases/TestCaseGraph.svelte
+++ b/src/lib/components/test_cases/TestCaseGraph.svelte
@@ -1467,14 +1467,14 @@
                           Cette échelle indique à quel dixième de niveau de vie
                           les cas types de ce graphique appartiennent, dans le
                           cadre du droit en vigueur. Elle s'appuie sur les <a
-                            class="link"
+                            class="link-text"
                             href="https://www.insee.fr/fr/statistiques/2416808#tableau-figure1"
                             target="_blank"
                             rel="noreferrer"
                             >déciles de l'Insee, millésime 2021</a
                           >, que LexImpact
                           <a
-                            class="link"
+                            class="link-text"
                             href="/parameters/deciles_niveau_de_vie"
                             target="_blank"
                             rel="noreferrer">a vieilli en 2024</a
diff --git a/src/lib/components/test_cases/TestCaseView.svelte b/src/lib/components/test_cases/TestCaseView.svelte
index aa8a4a688c9e6bf062b357c5a172132f4eebe161..11524e875769a97b0bada019ae4c9b637c73ec6e 100644
--- a/src/lib/components/test_cases/TestCaseView.svelte
+++ b/src/lib/components/test_cases/TestCaseView.svelte
@@ -457,7 +457,7 @@
                 <div class="py-2 px-3 text-black">
                   <span class="font-normal">
                     Les estimations sont effectuées grâce au moteur de calcul <a
-                      class="link"
+                      class="link-text"
                       href="https://openfisca.org/fr/"
                       target="_blank"
                       rel="noreferrer">OpenFisca</a
diff --git a/src/lib/components/variables/FormulaView.svelte b/src/lib/components/variables/FormulaView.svelte
index d1e2b82157cd7af627609f146e86681a1f6e34f5..31b2d9c277396d184ebbd081cc55bb58b64c045c 100644
--- a/src/lib/components/variables/FormulaView.svelte
+++ b/src/lib/components/variables/FormulaView.svelte
@@ -60,7 +60,7 @@
   </p>
 
   <a
-    class="link break-all text-gray-900"
+    class="link-text break-all text-gray-900"
     href="https://github.com/{openfiscaRepository.group}/{openfiscaRepository.project}/blob/{openfiscaRepository.branch}/{encodeURIComponent(
       formula.file_path,
     )}#L{formula.start_line_number}"
@@ -84,7 +84,7 @@
       <ul class="list-disc list-inside">
         {#each formula.parameters as parameterName}
           <li>
-            <a class="link" href="/parameters/{parameterName}"
+            <a class="link-text" href="/parameters/{parameterName}"
               >{parameterName}</a
             >
           </li>
@@ -99,7 +99,7 @@
         {#each [...extraction.openFiscaParametersName].sort() as parameterName}
           <li class="">
             <a
-              class="link break-all text-gray-900"
+              class="link-text break-all text-gray-900"
               href="/parameters/{parameterName}"
               >{#if parameterName === ""}<i>Paramètre racine</i
                 >{:else}{parameterName}{/if}</a
@@ -120,7 +120,9 @@
     <ul class="list-inside list-disc">
       {#each extraction.decomposition as variableReference}
         <li class="">
-          <a class="link break-all" href="/variables/{variableReference.name}"
+          <a
+            class="link-text break-all"
+            href="/variables/{variableReference.name}"
             >{variableReference.name}</a
           >
         </li>
@@ -133,7 +135,7 @@
       <ul class="list-disc list-inside">
         {#each formula.variables as variableName}
           <li>
-            <a class="link text-gray-900" href="/variables/{variableName}"
+            <a class="link-text text-gray-900" href="/variables/{variableName}"
               >{variableName}</a
             >
           </li>
diff --git a/src/lib/components/variables/VariableDetail.svelte b/src/lib/components/variables/VariableDetail.svelte
index 0f0c20f4fc49f2dd254b388c2a79c149e4878ed7..90d7e703a6b0fb9f8fa68fc8a5e6fc45fcf87521 100644
--- a/src/lib/components/variables/VariableDetail.svelte
+++ b/src/lib/components/variables/VariableDetail.svelte
@@ -187,12 +187,7 @@
                     <span>{title}</span>
                   {/if}
                 {:else}
-                  <a
-                    class="link text-black"
-                    {href}
-                    rel="noreferrer"
-                    target="_blank"
-                  >
+                  <a class="link-text" {href} rel="noreferrer" target="_blank">
                     {title ?? href}
                     <span class="text-xs"
                       >(consulté le {dateFormatter(new Date(instant))})
@@ -285,7 +280,7 @@
           n'est pas encore disponible.
           <span class="font-normal"
             >Ce sujet vous intéresse ? Écrivez-nous à
-            <a class="link" href="mailto:leximpact@assemblee-nationale.fr"
+            <a class="link-text" href="mailto:leximpact@assemblee-nationale.fr"
               >leximpact@assemblee-nationale.fr</a
             ></span
           >
diff --git a/src/lib/components/variables/VariableHeader.svelte b/src/lib/components/variables/VariableHeader.svelte
index 736305819a6e00893f108bcf635ca27a59778196..a1f6bc62b39d7e50a5cd4ffc06e6802c0cb4838f 100644
--- a/src/lib/components/variables/VariableHeader.svelte
+++ b/src/lib/components/variables/VariableHeader.svelte
@@ -193,12 +193,7 @@
                     <span>{title}</span>
                   {/if}
                 {:else}
-                  <a
-                    class="link text-black"
-                    {href}
-                    rel="noreferrer"
-                    target="_blank"
-                  >
+                  <a class="link-text" {href} rel="noreferrer" target="_blank">
                     {title ?? href}
                     <span class="text-xs"
                       >(consulté le {dateFormatter(new Date(instant))})
@@ -231,11 +226,7 @@
                   <span>{title}</span>
                 {/if}
               {:else}
-                <a
-                  class="link text-black"
-                  {href}
-                  rel="noreferrer"
-                  target="_blank"
+                <a class="link-text" {href} rel="noreferrer" target="_blank"
                   ><iconify-icon
                     class="mr-1 inline-flex h-4 w-4"
                     icon="ri-file-text-line"
diff --git a/src/lib/components/variables/VariableInput.svelte b/src/lib/components/variables/VariableInput.svelte
index 23f5c5cda1074ab26af328ee2704654ffa0f287c..88147d06fc50f813ac9313bd9eb3de179ebef235 100644
--- a/src/lib/components/variables/VariableInput.svelte
+++ b/src/lib/components/variables/VariableInput.svelte
@@ -495,7 +495,7 @@
                 class="ml-10 mt-2 justify-self-end text-right font-serif text-sm text-gray-700"
               >
                 <a
-                  class="link"
+                  class="link-text"
                   href="https://dares.travail-emploi.gouv.fr/sites/default/files/2e053f96fcf33313b3b11c0c045d7e42/Dares_DI_DEFM_2023T3.pdf"
                   rel="noreferrer"
                   target="_blank"
@@ -518,7 +518,7 @@
                 class="ml-10 mt-2 justify-self-end text-right font-serif text-sm text-gray-700"
               >
                 <a
-                  class="link"
+                  class="link-text"
                   href="https://www.insee.fr/fr/statistiques/7713975"
                   rel="noreferrer"
                   target="_blank"
@@ -590,7 +590,7 @@
               >
                 LexImpact, <span class="italic"
                   >agrégats extraits de la <a
-                    class="link"
+                    class="link-text"
                     href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                     rel="noreferrer"
                     target="_blank">base de donnée POTE</a
@@ -627,7 +627,7 @@
                     La base POTE rassemble les informations recensées à l’occasion
                     de la déclaration 2020 sur les revenus 2019 grâce au
                     <a
-                      class="link"
+                      class="link-text"
                       href="https://www.impots.gouv.fr/formulaire/2042/declaration-des-revenus"
                       rel="noreferrer"
                       target="_blank">formulaire n°2042 et ses annexes</a
@@ -651,7 +651,7 @@
                         href="https://www.casd.eu/source/declarations-dimpot-sur-le-revenu-des-foyers-fiscaux-formulaire-2042-et-annexes/"
                         rel="noreferrer"
                         target="_blank"
-                        class="link">cette page du CASD</a
+                        class="link-text">cette page du CASD</a
                       > ;
                     </li>
                     <li>
diff --git a/src/lib/components/variables/VariableReferredParameterHeader.svelte b/src/lib/components/variables/VariableReferredParameterHeader.svelte
index 267315c1dafe797d294ff296879701a1a1faa49a..7ce486f2e581da57264d251277c62b32ec525e58 100644
--- a/src/lib/components/variables/VariableReferredParameterHeader.svelte
+++ b/src/lib/components/variables/VariableReferredParameterHeader.svelte
@@ -64,7 +64,7 @@
       {#each [...iterParameterAncestors(parameter.parent)] as ancestor}
         <!-- svelte-ignore a11y-missing-attribute -->
         <a
-          class="link"
+          class="link-text"
           {...newSelfTargetAProps(`/parameters/${ancestor.name}`)}
         >
           {ancestor.title}
diff --git a/src/lib/components/variables/VariableReferredScaleParameter.svelte b/src/lib/components/variables/VariableReferredScaleParameter.svelte
index 93d5ae2c190594f18bc1a0d654c07bd2ba089b66..7b5ec88a30a4c121fdb2e565de69eb94b1bbc31c 100644
--- a/src/lib/components/variables/VariableReferredScaleParameter.svelte
+++ b/src/lib/components/variables/VariableReferredScaleParameter.svelte
@@ -342,7 +342,7 @@
                 </p>
               {:else}
                 <button
-                  class="link text-left"
+                  class="link-text text-left"
                   on:click={() => {
                     openReferenceUrl = href
                     trackLawEditParameterArticles()
diff --git a/src/lib/components/variables/VariableReferredValueParameter.svelte b/src/lib/components/variables/VariableReferredValueParameter.svelte
index 07084bc0f1f485017bc1136bf449014a4cff7b69..a40823e5ee97bd1ec9d3b8cfca968d5446c86c8f 100644
--- a/src/lib/components/variables/VariableReferredValueParameter.svelte
+++ b/src/lib/components/variables/VariableReferredValueParameter.svelte
@@ -388,7 +388,7 @@
                   </p>
                 {:else}
                   <button
-                    class="link text-left"
+                    class="link-text text-left"
                     on:click={() => {
                       openReferenceUrl = href ?? null
                       trackLawEditParameterArticles()
diff --git a/src/lib/components/variables/VariableView.svelte b/src/lib/components/variables/VariableView.svelte
index 50154a3e279e92eee2ba7d65a57ab5c9fe674cf4..7c58ba7b0f5b99c3861a597ae86f27c757dbdc3a 100644
--- a/src/lib/components/variables/VariableView.svelte
+++ b/src/lib/components/variables/VariableView.svelte
@@ -65,7 +65,7 @@
                   {/if}
                   <p class="mt-2 text-sm text-gray-500">
                     {#if href === undefined}Source&nbsp;:&nbsp;{title}{:else}Source&nbsp;:&nbsp;<a
-                        class="link text-black hover:text-le-bleu"
+                        class="link-text text-black hover:text-le-bleu"
                         {href}
                         rel="noreferrer"
                         target="_blank">{title ?? "source"}</a
@@ -210,7 +210,7 @@
           <div class="px-5">
             <!-- svelte-ignore a11y-missing-attribute -->
             <a
-              class="link text-base text-gray-900"
+              class="link-text text-base text-gray-900"
               {...newSelfTargetAProps(
                 `/variables/${variable.name}/inputs/${date}`,
               )}
@@ -226,7 +226,7 @@
           <div>
 
             <a
-              class="link"
+              class="link-text"
               {...newSelfTargetAProps(
                 `/variables/${variable.name}/parameters/${date}`,
               )}>Paramètres influant sur la formule, à la date du {date}</a
@@ -250,7 +250,7 @@
           <ul class="list-inside list-disc">
             {#each variable.referring_variables as variableName}
               <li>
-                <a class="link" href="/variables/{variableName}"
+                <a class="link-text" href="/variables/{variableName}"
                   >{variableName}</a
                 >
               </li>
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 287a8fd40c4229a610404dea23a4feccc6715fb7..96ac136d1592b0beb36461e3fbc0b4fff2b7b7bb 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -332,7 +332,7 @@
             title: "Enregistrer sa copie de travail",
             element: document.querySelector("#situation_savebutton"),
             intro:
-              'Pour terminer, <b>sauvegardez et partagez votre copie de travail</b> (cas types et réforme).<br><br>💡 Si vous avez une question sur votre estimation, écrivez-nous à <a class="link" href="mailto:leximpact@an.fr">leximpact@an.fr</a> en utilisant cette fonctionnalité pour nous transmettre votre réforme et vos cas types.',
+              'Pour terminer, <b>sauvegardez et partagez votre copie de travail</b> (cas types et réforme).<br><br>💡 Si vous avez une question sur votre estimation, écrivez-nous à <a class="link-text" href="mailto:leximpact@an.fr">leximpact@an.fr</a> en utilisant cette fonctionnalité pour nous transmettre votre réforme et vos cas types.',
           },
         ],
       })
@@ -1446,7 +1446,7 @@
                             <span class="font-normal"
                               >Ce sujet vous intéresse ? Écrivez-nous à
                               <a
-                                class="link"
+                                class="link-text"
                                 href="mailto:leximpact@assemblee-nationale.fr"
                                 >leximpact@assemblee-nationale.fr</a
                               ></span
@@ -1817,7 +1817,8 @@
             >Vous avez besoin de configurer plus précisemment votre cas type ?</span
           >
           Contactez-nous sur
-          <a class="link" href="mailto:leximpact@an.fr">leximpact@an.fr</a>.
+          <a class="link-text" href="mailto:leximpact@an.fr">leximpact@an.fr</a
+          >.
         </p>
         <div class="m-1 rounded bg-white p-2 text-gray-700">
           <p class="text-sm text-yellow-900">
diff --git a/src/routes/accueil/+page.svelte b/src/routes/accueil/+page.svelte
index 15f6ab158408df6d9b3db9d599c4286d44253574..ecd570504e3e951154e69a50ccf6867f11426fff 100644
--- a/src/routes/accueil/+page.svelte
+++ b/src/routes/accueil/+page.svelte
@@ -724,14 +724,14 @@
         Les calculs budgétaires sont effectués à partir d'une base de données
         représentative de la population française, élaborée avec l'Enquête
         Revenus Fiscaux et Sociaux de l'Insee <a
-          class="link italic"
+          class="link-text italic"
           href="https://www.insee.fr/fr/metadonnees/source/serie/s1231/documentation-methodologique"
           target="_blank">ERFS-FPR millésime 2019</a
         >
         et la base anonymisée des déclarations d'impôt sur le revenu des foyers fiscaux
         de la DGFIP - Ministère des finances
         <a
-          class="link italic"
+          class="link-text italic"
           href="Déclarations d'impôt sur le revenu des foyers fiscaux (POTE) du Ministère des Finances (DGFIP) (millésime 2021)"
           target="_blank"
         >
@@ -989,14 +989,14 @@
         Les calculs budgétaires sont effectués à partir d'une base de données
         représentative de la population française, élaborée avec l'Enquête
         Revenus Fiscaux et Sociaux de l'Insee <a
-          class="link italic"
+          class="link-text italic"
           href="https://www.insee.fr/fr/metadonnees/source/serie/s1231/documentation-methodologique"
           target="_blank">ERFS-FPR millésime 2019</a
         >
         et la base anonymisée des déclarations d'impôt sur le revenu des foyers fiscaux
         de la DGFIP - Ministère des finances
         <a
-          class="link italic"
+          class="link-text italic"
           href="Déclarations d'impôt sur le revenu des foyers fiscaux (POTE) du Ministère des Finances (DGFIP) (millésime 2021)"
           target="_blank"
         >
diff --git a/src/routes/contribuer/+page.svelte b/src/routes/contribuer/+page.svelte
index 0d8da729056d36fb83209cbfac4625d65e3236df..3a402c620ecc0cdcaf1d1bd25fd4298a950026b2 100644
--- a/src/routes/contribuer/+page.svelte
+++ b/src/routes/contribuer/+page.svelte
@@ -222,7 +222,7 @@
       <p class="pb-8 text-justify text-base leading-normal">
         L'ensemble du code source du service LexImpact est disponible sur <a
           href="https://git.leximpact.dev/"
-          class="link"
+          class="link-text"
         >
           https://git.leximpact.dev/</a
         >.
diff --git a/src/routes/parameters/[parameter]/edit/+page.svelte b/src/routes/parameters/[parameter]/edit/+page.svelte
index fa2a74198006162e761ecac8cbca3feab64705a0..0a4bdb1b557c8518c11ae6bc5350890778711b47 100644
--- a/src/routes/parameters/[parameter]/edit/+page.svelte
+++ b/src/routes/parameters/[parameter]/edit/+page.svelte
@@ -155,7 +155,7 @@
                 {#each [...iterParameterAncestors(processedParameter.parent)] as ancestor}
                   <!-- svelte-ignore a11y-missing-attribute -->
                   <a
-                    class="link font-serif text-sm text-gray-500"
+                    class="link-text font-serif text-sm text-gray-500"
                     {...newSelfTargetAProps(`/parameters/${ancestor.name}`)}
                   >
                     {ancestor.title}</a
@@ -277,7 +277,7 @@
               <ul class="list-inside list-disc">
                 {#each parameter.referring_variables as variableName}
                   <li>
-                    <a class="link" href="/variables/{variableName}"
+                    <a class="link-text" href="/variables/{variableName}"
                       >{variableName}</a
                     >
                   </li>
diff --git a/src/routes/variables/+page.svelte b/src/routes/variables/+page.svelte
index d81c238f6a46883952e27d05f822d16a5f01f080..50089076844585f6a57c576bc0fa7cc5e347db9e 100644
--- a/src/routes/variables/+page.svelte
+++ b/src/routes/variables/+page.svelte
@@ -16,7 +16,7 @@
   <ul class="list-inside list-disc">
     {#each Object.entries(variableSummaryByName) as [name, variable]}
       <li>
-        <a class="link" href="/variables/{name}">
+        <a class="link-text" href="/variables/{name}">
           <var>{name}</var>
           {#if variable.label !== undefined}
             : {variable.label}