@lab-anssi/ui-kit 1.61.3 → 1.62.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/README.md +102 -21
  2. package/dist/assets/assets.d.ts +1 -0
  3. package/dist/assets/assets.js +1 -0
  4. package/dist/assets/dsfr-icons.css +1 -0
  5. package/dist/composants/Alerte.svelte +83 -0
  6. package/dist/composants/Alerte.svelte.d.ts +32 -0
  7. package/dist/composants/AncresParcours.svelte +132 -0
  8. package/dist/composants/AncresParcours.svelte.d.ts +11 -0
  9. package/dist/composants/BandeauPage.svelte +218 -0
  10. package/dist/composants/BandeauPage.svelte.d.ts +58 -0
  11. package/dist/composants/BlocFonctionnalites.svelte +570 -0
  12. package/dist/composants/BlocFonctionnalites.svelte.d.ts +105 -0
  13. package/dist/composants/Bouton.svelte +156 -0
  14. package/dist/composants/Bouton.svelte.d.ts +36 -0
  15. package/dist/composants/CentreAide.svelte +223 -0
  16. package/dist/composants/CentreAide.svelte.d.ts +41 -0
  17. package/dist/composants/FiltresCatalogue.svelte +147 -0
  18. package/dist/composants/FiltresCatalogue.svelte.d.ts +15 -0
  19. package/dist/composants/Icone.svelte +42 -0
  20. package/dist/composants/Icone.svelte.d.ts +7 -0
  21. package/dist/composants/Lien.svelte +233 -0
  22. package/dist/composants/Lien.svelte.d.ts +39 -0
  23. package/dist/composants/MultiSelect.svelte +931 -0
  24. package/dist/composants/MultiSelect.svelte.d.ts +51 -0
  25. package/dist/composants/Reactions.svelte +360 -0
  26. package/dist/composants/Reactions.svelte.d.ts +23 -0
  27. package/dist/composants/ResumePssi.svelte +92 -0
  28. package/dist/composants/ResumePssi.svelte.d.ts +6 -0
  29. package/dist/composants/Tag.svelte +113 -0
  30. package/dist/composants/Tag.svelte.d.ts +35 -0
  31. package/dist/composants/blog/BandeauTitre.svelte +150 -0
  32. package/dist/composants/blog/BandeauTitre.svelte.d.ts +29 -0
  33. package/dist/composants/blog/CarteArticle.svelte +69 -0
  34. package/dist/composants/blog/CarteArticle.svelte.d.ts +8 -0
  35. package/dist/composants/blog/IconeChevronBas.svelte +22 -0
  36. package/dist/composants/blog/IconeChevronBas.svelte.d.ts +26 -0
  37. package/dist/composants/blog/IconeMenuLateral.svelte +15 -0
  38. package/dist/composants/blog/IconeMenuLateral.svelte.d.ts +26 -0
  39. package/dist/composants/blog/ListeArticles.svelte +62 -0
  40. package/dist/composants/blog/ListeArticles.svelte.d.ts +9 -0
  41. package/dist/composants/blog/ListeDeroulante.svelte +57 -0
  42. package/dist/composants/blog/ListeDeroulante.svelte.d.ts +10 -0
  43. package/dist/composants/blog/PageCrisp.svelte +244 -0
  44. package/dist/composants/blog/PageCrisp.svelte.d.ts +8 -0
  45. package/dist/composants/blog/SommaireBureau.svelte +64 -0
  46. package/dist/composants/blog/SommaireBureau.svelte.d.ts +9 -0
  47. package/dist/composants/blog/SommaireMobile.svelte +115 -0
  48. package/dist/composants/blog/SommaireMobile.svelte.d.ts +9 -0
  49. package/dist/composants/carrousel-tuiles/CarrouselTuiles.svelte +184 -0
  50. package/dist/composants/carrousel-tuiles/CarrouselTuiles.svelte.d.ts +34 -0
  51. package/dist/composants/carrousel-tuiles/IconeFlecheDroite.svelte +16 -0
  52. package/dist/composants/carrousel-tuiles/IconeFlecheDroite.svelte.d.ts +26 -0
  53. package/dist/composants/carrousel-tuiles/IconeFlecheGauche.svelte +12 -0
  54. package/dist/composants/carrousel-tuiles/IconeFlecheGauche.svelte.d.ts +26 -0
  55. package/dist/composants/carrousel-tuiles/Tuile.svelte +72 -0
  56. package/dist/composants/carrousel-tuiles/Tuile.svelte.d.ts +10 -0
  57. package/dist/composants/icones/Fleche.svelte +25 -0
  58. package/dist/composants/icones/Fleche.svelte.d.ts +6 -0
  59. package/dist/composants/icones/LienExterne.svelte +20 -0
  60. package/dist/composants/icones/LienExterne.svelte.d.ts +6 -0
  61. package/dist/composants/marelle/Etape.svelte +165 -0
  62. package/dist/composants/marelle/Etape.svelte.d.ts +32 -0
  63. package/dist/composants/marelle/Marelle.svelte +97 -0
  64. package/dist/composants/marelle/Marelle.svelte.d.ts +44 -0
  65. package/dist/composants/mes-services-cyber/bandeau/Bandeau.svelte +158 -0
  66. package/dist/composants/mes-services-cyber/bandeau/Bandeau.svelte.d.ts +3 -0
  67. package/dist/composants/mes-services-cyber/lien/LienDiagnosticCyber.svelte +125 -0
  68. package/dist/composants/mes-services-cyber/lien/LienDiagnosticCyber.svelte.d.ts +7 -0
  69. package/dist/composants/pied-de-page/NavigationPiedDePage.svelte +62 -0
  70. package/dist/composants/pied-de-page/NavigationPiedDePage.svelte.d.ts +6 -0
  71. package/dist/composants/suite-cyber/AccueilSuiteCyber.svelte +96 -0
  72. package/dist/composants/suite-cyber/AccueilSuiteCyber.svelte.d.ts +6 -0
  73. package/dist/composants/suite-cyber/LiensSuiteCyber.svelte +99 -0
  74. package/dist/composants/suite-cyber/LiensSuiteCyber.svelte.d.ts +14 -0
  75. package/dist/composants/suite-cyber/SuiteCyber.svelte +296 -0
  76. package/dist/composants/suite-cyber/SuiteCyber.svelte.d.ts +6 -0
  77. package/dist/composants/vitrines-produits/briques/Brique.svelte +50 -0
  78. package/dist/composants/vitrines-produits/briques/Brique.svelte.d.ts +9 -0
  79. package/dist/composants/vitrines-produits/briques/BriqueContenuADeuxColonnes.svelte +144 -0
  80. package/dist/composants/vitrines-produits/briques/BriqueContenuADeuxColonnes.svelte.d.ts +29 -0
  81. package/dist/composants/vitrines-produits/briques/BriqueHero.svelte +246 -0
  82. package/dist/composants/vitrines-produits/briques/BriqueHero.svelte.d.ts +31 -0
  83. package/dist/composants/vitrines-produits/briques/BriqueTitreMultimedia.svelte +50 -0
  84. package/dist/composants/vitrines-produits/briques/BriqueTitreMultimedia.svelte.d.ts +25 -0
  85. package/dist/composants/vitrines-produits/briques/LecteurVideo.svelte +14 -0
  86. package/dist/composants/vitrines-produits/briques/LecteurVideo.svelte.d.ts +9 -0
  87. package/dist/composants/vitrines-produits/briques/PresentationANSSI.svelte +148 -0
  88. package/dist/composants/vitrines-produits/briques/PresentationANSSI.svelte.d.ts +37 -0
  89. package/dist/composants/vitrines-produits/briques/RejoindreLaCommunaute.svelte +139 -0
  90. package/dist/composants/vitrines-produits/briques/RejoindreLaCommunaute.svelte.d.ts +36 -0
  91. package/dist/composants/vitrines-produits/briques/temoignages/IconeTemoignage.svelte +18 -0
  92. package/dist/composants/vitrines-produits/briques/temoignages/IconeTemoignage.svelte.d.ts +26 -0
  93. package/dist/composants/vitrines-produits/briques/temoignages/Temoignages.svelte +168 -0
  94. package/dist/composants/vitrines-produits/briques/temoignages/Temoignages.svelte.d.ts +13 -0
  95. package/dist/directives/actions.svelte.d.ts +32 -0
  96. package/dist/directives/actions.svelte.js +158 -0
  97. package/dist/dsfr/DsfrAccordion.svelte +889 -0
  98. package/dist/dsfr/DsfrAccordion.svelte.d.ts +40 -0
  99. package/dist/dsfr/DsfrAlert.svelte +2097 -0
  100. package/dist/dsfr/DsfrAlert.svelte.d.ts +36 -0
  101. package/dist/dsfr/DsfrBadge.svelte +532 -0
  102. package/dist/dsfr/DsfrBadge.svelte.d.ts +41 -0
  103. package/dist/dsfr/DsfrBadgesGroup.svelte +610 -0
  104. package/dist/dsfr/DsfrBadgesGroup.svelte.d.ts +25 -0
  105. package/dist/dsfr/DsfrBreadcrumb.svelte +657 -0
  106. package/dist/dsfr/DsfrBreadcrumb.svelte.d.ts +25 -0
  107. package/dist/dsfr/DsfrButton.svelte +1821 -0
  108. package/dist/dsfr/DsfrButton.svelte.d.ts +68 -0
  109. package/dist/dsfr/DsfrButtonsGroup.svelte +1896 -0
  110. package/dist/dsfr/DsfrButtonsGroup.svelte.d.ts +36 -0
  111. package/dist/dsfr/DsfrCallout.svelte +242 -0
  112. package/dist/dsfr/DsfrCallout.svelte.d.ts +46 -0
  113. package/dist/dsfr/DsfrCard.svelte +10223 -0
  114. package/dist/dsfr/DsfrCard.svelte.d.ts +102 -0
  115. package/dist/dsfr/DsfrCheckbox.svelte +1280 -0
  116. package/dist/dsfr/DsfrCheckbox.svelte.d.ts +69 -0
  117. package/dist/dsfr/DsfrCheckboxesGroup.svelte +1532 -0
  118. package/dist/dsfr/DsfrCheckboxesGroup.svelte.d.ts +73 -0
  119. package/dist/dsfr/DsfrConnect.svelte +511 -0
  120. package/dist/dsfr/DsfrConnect.svelte.d.ts +15 -0
  121. package/dist/dsfr/DsfrContainer.svelte +894 -0
  122. package/dist/dsfr/DsfrContainer.svelte.d.ts +31 -0
  123. package/dist/dsfr/DsfrContent.svelte +1140 -0
  124. package/dist/dsfr/DsfrContent.svelte.d.ts +60 -0
  125. package/dist/dsfr/DsfrDropdown.svelte +335 -0
  126. package/dist/dsfr/DsfrDropdown.svelte.d.ts +73 -0
  127. package/dist/dsfr/DsfrFooter.svelte +2370 -0
  128. package/dist/dsfr/DsfrFooter.svelte.d.ts +77 -0
  129. package/dist/dsfr/DsfrHeader.svelte +4162 -0
  130. package/dist/dsfr/DsfrHeader.svelte.d.ts +131 -0
  131. package/dist/dsfr/DsfrHighlight.svelte +294 -0
  132. package/dist/dsfr/DsfrHighlight.svelte.d.ts +33 -0
  133. package/dist/dsfr/DsfrInput.svelte +1270 -0
  134. package/dist/dsfr/DsfrInput.svelte.d.ts +86 -0
  135. package/dist/dsfr/DsfrLabel.svelte +438 -0
  136. package/dist/dsfr/DsfrLabel.svelte.d.ts +65 -0
  137. package/dist/dsfr/DsfrLink.svelte +1007 -0
  138. package/dist/dsfr/DsfrLink.svelte.d.ts +66 -0
  139. package/dist/dsfr/DsfrLogo.svelte +228 -0
  140. package/dist/dsfr/DsfrLogo.svelte.d.ts +11 -0
  141. package/dist/dsfr/DsfrMessagesGroup.svelte +260 -0
  142. package/dist/dsfr/DsfrMessagesGroup.svelte.d.ts +46 -0
  143. package/dist/dsfr/DsfrModal.svelte +2983 -0
  144. package/dist/dsfr/DsfrModal.svelte.d.ts +56 -0
  145. package/dist/dsfr/DsfrNavigation.svelte +7626 -0
  146. package/dist/dsfr/DsfrNotice.svelte +2948 -0
  147. package/dist/dsfr/DsfrNotice.svelte.d.ts +37 -0
  148. package/dist/dsfr/DsfrPagination.svelte +1036 -0
  149. package/dist/dsfr/DsfrPagination.svelte.d.ts +35 -0
  150. package/dist/dsfr/DsfrQuote.svelte +646 -0
  151. package/dist/dsfr/DsfrQuote.svelte.d.ts +29 -0
  152. package/dist/dsfr/DsfrRadio.svelte +1307 -0
  153. package/dist/dsfr/DsfrRadio.svelte.d.ts +37 -0
  154. package/dist/dsfr/DsfrRadiosGroup.svelte +1629 -0
  155. package/dist/dsfr/DsfrRadiosGroup.svelte.d.ts +76 -0
  156. package/dist/dsfr/DsfrRange.svelte +1329 -0
  157. package/dist/dsfr/DsfrRange.svelte.d.ts +77 -0
  158. package/dist/dsfr/DsfrSearch.svelte +2015 -0
  159. package/dist/dsfr/DsfrSearch.svelte.d.ts +51 -0
  160. package/dist/dsfr/DsfrSegmented.svelte +422 -0
  161. package/dist/dsfr/DsfrSegmented.svelte.d.ts +34 -0
  162. package/dist/dsfr/DsfrSelect.svelte +1068 -0
  163. package/dist/dsfr/DsfrSelect.svelte.d.ts +86 -0
  164. package/dist/dsfr/DsfrShare.svelte +2228 -0
  165. package/dist/dsfr/DsfrShare.svelte.d.ts +40 -0
  166. package/dist/dsfr/DsfrSideMenu.svelte +1211 -0
  167. package/dist/dsfr/DsfrSideMenu.svelte.d.ts +34 -0
  168. package/dist/dsfr/DsfrSkipLink.svelte +990 -0
  169. package/dist/dsfr/DsfrSkipLink.svelte.d.ts +13 -0
  170. package/dist/dsfr/DsfrStepper.svelte +340 -0
  171. package/dist/dsfr/DsfrStepper.svelte.d.ts +18 -0
  172. package/dist/dsfr/DsfrTable.svelte +829 -0
  173. package/dist/dsfr/DsfrTable.svelte.d.ts +202 -0
  174. package/dist/dsfr/DsfrTabnav.svelte +1149 -0
  175. package/dist/dsfr/DsfrTabnav.svelte.d.ts +36 -0
  176. package/dist/dsfr/DsfrTabs.svelte +926 -0
  177. package/dist/dsfr/DsfrTabs.svelte.d.ts +28 -0
  178. package/dist/dsfr/DsfrTag.svelte +1269 -0
  179. package/dist/dsfr/DsfrTag.svelte.d.ts +59 -0
  180. package/dist/dsfr/DsfrTagsGroup.svelte +1351 -0
  181. package/dist/dsfr/DsfrTagsGroup.svelte.d.ts +37 -0
  182. package/dist/dsfr/DsfrTextarea.svelte +1385 -0
  183. package/dist/dsfr/DsfrTextarea.svelte.d.ts +72 -0
  184. package/dist/dsfr/DsfrTile.svelte +7645 -0
  185. package/dist/dsfr/DsfrTile.svelte.d.ts +79 -0
  186. package/dist/dsfr/DsfrToggle.svelte +1453 -0
  187. package/dist/dsfr/DsfrToggle.svelte.d.ts +56 -0
  188. package/dist/dsfr/DsfrTooltip.svelte +396 -0
  189. package/dist/dsfr/DsfrTooltip.svelte.d.ts +36 -0
  190. package/dist/dsfr/DsfrTranscription.svelte +2962 -0
  191. package/dist/dsfr/DsfrTranscription.svelte.d.ts +39 -0
  192. package/dist/dsfr/DsfrTranslate.svelte +1384 -0
  193. package/dist/dsfr/DsfrTranslate.svelte.d.ts +19 -0
  194. package/dist/dsfr/DsfrUser.svelte +736 -0
  195. package/dist/dsfr/DsfrUser.svelte.d.ts +65 -0
  196. package/dist/index.d.ts +79 -0
  197. package/dist/index.js +79 -0
  198. package/dist/styles/apparence-bouton.scss +154 -0
  199. package/dist/styles/dsfr-icons.css +1 -0
  200. package/dist/styles/dsfr-icons.scss +4 -0
  201. package/dist/styles/dsfr-variables.scss +28 -0
  202. package/dist/styles/mixins-dsfr.scss +226 -0
  203. package/dist/styles/mixins.scss +51 -0
  204. package/dist/types/commun.d.ts +63 -0
  205. package/dist/types/commun.js +1 -0
  206. package/dist/types/global.d.ts +24 -0
  207. package/dist/types/global.js +9 -0
  208. package/dist/types/index.d.ts +2 -0
  209. package/dist/types/index.js +1 -0
  210. package/dist/ui-kit-components.json +142 -100
  211. package/dist/utilitaires/createFormValidation.svelte.d.ts +34 -0
  212. package/dist/utilitaires/createFormValidation.svelte.js +183 -0
  213. package/dist/utilitaires/icons-stylesheet.d.ts +370 -0
  214. package/dist/utilitaires/icons-stylesheet.js +33 -0
  215. package/dist/utilitaires/index.d.ts +14 -0
  216. package/dist/utilitaires/index.js +26 -0
  217. package/dist/web-types.json +149 -101
  218. package/dist/webcomponents/lab-anssi-ui-kit.iife.js +36 -9
  219. package/dist/webcomponents/lab-anssi-ui-kit.jsx.d.ts +42 -24
  220. package/package.json +49 -43
  221. package/dist/index.html +0 -0
@@ -0,0 +1,1211 @@
1
+ <svelte:options
2
+ customElement={{
3
+ tag: "dsfr-side-menu",
4
+ props: {
5
+ title: { attribute: "title", type: "String" },
6
+ items: { attribute: "items", type: "Object" },
7
+ buttonLabel: { attribute: "button-label", type: "String" },
8
+ buttonId: { attribute: "button-id", type: "String" },
9
+ titleId: { attribute: "title-id", type: "String" },
10
+ hasTitle: { attribute: "has-title", type: "Boolean" },
11
+ modifier: { attribute: "modifier", type: "String" },
12
+ activeItem: { attribute: "active-item", type: "String" },
13
+ },
14
+ }}
15
+ />
16
+
17
+ <script lang="ts">import { setThemeable } from "../utilitaires";
18
+ setThemeable($host());
19
+ let { title, titleId, hasTitle = true, items, modifier, buttonLabel, buttonId, activeItem } = $props();
20
+ let collapseElement;
21
+ let triggerButton;
22
+ const COLLAPSE_ID_PREFIX = "sidemenu-collapse-";
23
+ let modifierClass = $derived(`fr-sidemenu--${modifier}`);
24
+ function isLink(item) {
25
+ return item.type === "link" || item.type === "menu" && !item.isCollapsible;
26
+ }
27
+ function setCollapseId(collapseId, index) {
28
+ return collapseId ? `${collapseId}-${index}` : `${COLLAPSE_ID_PREFIX}-${index}`;
29
+ }
30
+ const getMarkup = (item) => isLink(item) ? "a" : "button";
31
+ function handleClickNode(event) {
32
+ const button = event.target;
33
+ const ariaExpanded = button.ariaExpanded;
34
+ const ariaControls = button.getAttribute("aria-controls");
35
+ const isExpanded = ariaExpanded === "true";
36
+ button.ariaExpanded = (!isExpanded).toString();
37
+ if (!isExpanded) {
38
+ replieAutresMenusDuMemeNiveau(button);
39
+ }
40
+ const collapseElement = ariaControls ? button.parentElement?.querySelector(`#${ariaControls}`) : null;
41
+ if (collapseElement) {
42
+ if (isExpanded) {
43
+ collapseElement.classList.remove("fr-collapse--expanded");
44
+ } else {
45
+ collapseElement.classList.add("fr-collapse--expanded");
46
+ }
47
+ }
48
+ }
49
+ function handleClickLeaf() {
50
+ triggerButton.ariaExpanded = "false";
51
+ collapseElement.ariaExpanded = "false";
52
+ replieTousLesItems();
53
+ collapseElement.classList.remove("fr-collapse--expanded");
54
+ }
55
+ function replieTousLesItems() {
56
+ collapseElement.querySelectorAll(".fr-collapse").forEach((element) => element.classList.remove("fr-collapse--expanded"));
57
+ collapseElement.querySelectorAll(".fr-sidemenu__btn").forEach((element) => element.ariaExpanded = "false");
58
+ }
59
+ function replieAutresMenusDuMemeNiveau(button) {
60
+ const autreBoutons = button.parentElement?.parentElement?.querySelectorAll(`:scope > * > button`).values().filter((bouton) => bouton.getAttribute("aria-controls") !== button.getAttribute("aria-controls"));
61
+ autreBoutons?.forEach((autreBouton) => {
62
+ autreBouton.ariaExpanded = "false";
63
+ const collapseElement = autreBouton.parentElement?.querySelector(`#${autreBouton.getAttribute("aria-controls")}`);
64
+ collapseElement?.classList.remove("fr-collapse--expanded");
65
+ });
66
+ }
67
+ function isItemActive(item) {
68
+ return activeItem && item.href === activeItem || item.active || false;
69
+ }
70
+ </script>
71
+
72
+ {#snippet listItem(item: MenuItem, index: number)}
73
+ <li class="fr-sidemenu__item">
74
+ <svelte:element
75
+ this={getMarkup(item)}
76
+ class={[isLink(item) ? "fr-sidemenu__link" : "fr-sidemenu__btn"]}
77
+ href={isLink(item) ? item.href : undefined}
78
+ type={!isLink(item) ? "button" : undefined}
79
+ aria-expanded={!isLink(item) && item.isCollapsible ? "false" : undefined}
80
+ aria-controls={!isLink(item) ? setCollapseId(item.collapseId, index) : undefined}
81
+ aria-current={isItemActive(item) ? (isLink(item) ? "page" : true) : undefined}
82
+ onclick={item.isCollapsible ? handleClickNode : handleClickLeaf}
83
+ {...item.attributes}
84
+ >
85
+ {item.label}
86
+ </svelte:element>
87
+ {#if item.type === "menu" && item.isCollapsible && item.collapseId}
88
+ <div id={setCollapseId(item.collapseId, index)} class={[item.collapseId && "fr-collapse"]}>
89
+ {#if item.items && item.items.length > 0}
90
+ <ul class="fr-sidemenu__list">
91
+ {#each item.items as subItem, subIndex (subItem.id)}
92
+ {@render listItem(subItem, subIndex)}
93
+ {/each}
94
+ </ul>
95
+ {/if}
96
+ </div>
97
+ {/if}
98
+ </li>
99
+ {/snippet}
100
+
101
+ <nav class={["fr-sidemenu", modifierClass]} role="navigation" aria-labelledby={titleId}>
102
+ <div class="fr-sidemenu__inner">
103
+ <button
104
+ aria-expanded="false"
105
+ aria-controls={buttonId}
106
+ type="button"
107
+ class="fr-sidemenu__btn"
108
+ onclick={handleClickNode}
109
+ bind:this={triggerButton}
110
+ >
111
+ {buttonLabel}
112
+ </button>
113
+ <div class="fr-collapse fr-sidemenu__collapse" id={buttonId} bind:this={collapseElement}>
114
+ {#if hasTitle && title}
115
+ <p class="fr-sidemenu__title" id={titleId}>
116
+ {title}
117
+ </p>
118
+ {/if}
119
+
120
+ <ul class="fr-sidemenu__list">
121
+ {#each items as item, index (item.id)}
122
+ {@render listItem(item, index)}
123
+ {/each}
124
+ </ul>
125
+ </div>
126
+ </div>
127
+ </nav>
128
+
129
+ <style>@charset "UTF-8";
130
+ /*!
131
+ * DSFR v1.14.4 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions)
132
+ */
133
+ /* ¯¯¯¯¯¯¯¯¯ *\
134
+ SIDEMENU
135
+ \* ˍˍˍˍˍˍˍˍˍ */
136
+ .fr-sidemenu {
137
+ --ul-type: none;
138
+ --ol-type: none;
139
+ --ul-start: 0;
140
+ --ol-start: 0;
141
+ --xl-block: 0;
142
+ --li-bottom: 0;
143
+ --ol-content: none;
144
+ --underline-img: none;
145
+ --text-spacing: 0;
146
+ --title-spacing: 0;
147
+ position: relative;
148
+ margin-left: -1rem;
149
+ margin-right: -1rem;
150
+ /**
151
+ * Titre facultatif
152
+ */
153
+ /**
154
+ * Variantes du sidemenu proposées juste à partir du breakpoint md
155
+ */
156
+ box-shadow: inset 0 -1px 0 0 var(--border-default-grey), inset 0 1px 0 0 var(--border-default-grey);
157
+ /*
158
+ @include elevation.elevate(raised, (legacy:$legacy));
159
+ @include respond-from(md) {
160
+ @include elevation.drop((legacy:$legacy));
161
+ }
162
+ */
163
+ }
164
+
165
+ .fr-sidemenu a:not([href]) {
166
+ cursor: default;
167
+ }
168
+
169
+ .fr-sidemenu .fr-collapse {
170
+ margin: -0.25rem -0.25rem 0;
171
+ padding: 0.25rem 0.25rem 0;
172
+ }
173
+
174
+ .fr-sidemenu .fr-collapse.fr-collapsing {
175
+ margin-top: 0;
176
+ margin-bottom: 0;
177
+ padding-top: 0;
178
+ padding-bottom: 0;
179
+ }
180
+
181
+ .fr-sidemenu__title {
182
+ padding: 1rem 0;
183
+ font-size: 1.125rem;
184
+ line-height: 1.75rem;
185
+ font-weight: 700;
186
+ color: var(--text-title-grey);
187
+ box-shadow: inset 0 -1px 0 0 var(--border-default-grey);
188
+ }
189
+
190
+ .fr-sidemenu__list {
191
+ font-weight: 700;
192
+ }
193
+
194
+ .fr-sidemenu__list .fr-sidemenu__list {
195
+ margin: 0 1rem 1rem;
196
+ font-weight: 400;
197
+ }
198
+
199
+ .fr-sidemenu__list .fr-sidemenu__list .fr-sidemenu__link,
200
+ .fr-sidemenu__list .fr-sidemenu__list .fr-sidemenu__btn {
201
+ font-size: 1rem;
202
+ line-height: 1.5rem;
203
+ font-weight: 400;
204
+ }
205
+
206
+ .fr-sidemenu__list .fr-sidemenu__list .fr-sidemenu__list .fr-sidemenu__link,
207
+ .fr-sidemenu__list .fr-sidemenu__list .fr-sidemenu__list .fr-sidemenu__btn {
208
+ font-size: 0.875rem;
209
+ line-height: 1.5rem;
210
+ }
211
+
212
+ .fr-sidemenu__item {
213
+ position: relative;
214
+ }
215
+
216
+ .fr-sidemenu__item::before {
217
+ content: "";
218
+ display: block;
219
+ position: absolute;
220
+ top: 0;
221
+ right: 0;
222
+ bottom: 0;
223
+ left: 0;
224
+ width: 100%;
225
+ height: 100%;
226
+ pointer-events: none;
227
+ box-shadow: 0 -1px 0 0 var(--border-default-grey), inset 0 -1px 0 0 var(--border-default-grey);
228
+ }
229
+
230
+ .fr-sidemenu__item .fr-sidemenu__item .fr-sidemenu__item::before {
231
+ content: none;
232
+ }
233
+
234
+ .fr-sidemenu__inner {
235
+ /**
236
+ * Ce wrapper ne sert que pour la version mobile
237
+ * On l'utilise pour l'ouverture/fermeture du sidemenu entier
238
+ */
239
+ }
240
+
241
+ .fr-sidemenu__inner > .fr-collapse {
242
+ margin: -0.25rem 0.75rem 0;
243
+ padding: 0.25rem 0.75rem 0;
244
+ }
245
+
246
+ /**
247
+ * Styles du bouton et du lien d'accès direct du sidemnu
248
+ */
249
+ .fr-sidemenu__link,
250
+ .fr-sidemenu__btn {
251
+ position: relative;
252
+ display: flex;
253
+ flex-direction: row;
254
+ align-items: center;
255
+ width: 100%;
256
+ padding: 0.75rem 1rem;
257
+ font-size: 1rem;
258
+ line-height: 1.5rem;
259
+ text-align: left;
260
+ font-weight: 700;
261
+
262
+ --hover-tint: var(--hover);
263
+ --active-tint: var(--active);
264
+ color: var(--text-action-high-blue-france);
265
+ }
266
+
267
+ .fr-sidemenu__link[aria-current]:not([aria-current=false])::before,
268
+ .fr-sidemenu__btn[aria-current]:not([aria-current=false])::before {
269
+ content: "";
270
+ position: absolute;
271
+ top: 0.75rem;
272
+ bottom: 0.75rem;
273
+ left: 0;
274
+ width: 2px;
275
+ background-color: var(--border-active-blue-france);
276
+
277
+ --idle: transparent;
278
+ --hover: var(--border-active-blue-france-hover);
279
+ --active: var(--border-active-blue-france-active);
280
+ }
281
+
282
+ .fr-sidemenu__link:not([href])[aria-current]:not([aria-current=false]) {
283
+ pointer-events: none;
284
+ cursor: default;
285
+ }
286
+
287
+ /**
288
+ * Style du bouton du sidemnenu pour ouvrir/refermer les listes de niveaux 1 et 2
289
+ * Bouton pour la version mobile pour ouvrir/refermer le sidemenu
290
+ */
291
+ .fr-sidemenu__btn[aria-expanded] {
292
+ display: flex;
293
+ flex-direction: row;
294
+ align-items: center;
295
+ }
296
+
297
+ .fr-sidemenu__btn[aria-expanded]::after {
298
+ flex: 0 0 auto;
299
+ display: inline-block;
300
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
301
+ background-color: currentColor;
302
+ width: var(--icon-size);
303
+ height: var(--icon-size);
304
+ -webkit-mask-size: 100% 100%;
305
+ mask-size: 100% 100%;
306
+ -webkit-mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/arrows/arrow-down-s-line.svg");
307
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/arrows/arrow-down-s-line.svg");
308
+ --icon-size: 1rem;
309
+ content: "";
310
+ margin-left: auto;
311
+ margin-right: 0;
312
+ transition: transform 0.3s;
313
+ }
314
+
315
+ .fr-sidemenu__btn[aria-expanded=true]::after {
316
+ transform: rotate(-180deg);
317
+ }
318
+
319
+ /**
320
+ * Modificateur pour le bouton en version mobile permettant d'ouvrir/refermer le sidemenu
321
+ * L'icône de gauche est défini dans _sidemenu.scss (provisoire)
322
+ */
323
+ .fr-sidemenu__inner > .fr-sidemenu__btn {
324
+ width: 100%;
325
+ font-weight: 500;
326
+ outline-offset: -2px;
327
+ /**
328
+ * Ajout de l'icône de menu en mode mobile (provisoire)
329
+ */
330
+ }
331
+
332
+ .fr-sidemenu__inner > .fr-sidemenu__btn::after {
333
+ margin-right: 1rem;
334
+ }
335
+
336
+ .fr-sidemenu__inner > .fr-sidemenu__btn::before {
337
+ flex: 0 0 auto;
338
+ display: inline-block;
339
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
340
+ background-color: currentColor;
341
+ width: var(--icon-size);
342
+ height: var(--icon-size);
343
+ -webkit-mask-size: 100% 100%;
344
+ mask-size: 100% 100%;
345
+ -webkit-mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/menu-2-fill.svg");
346
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/menu-2-fill.svg");
347
+ --icon-size: 1rem;
348
+ content: "";
349
+ margin-left: 0.5rem;
350
+ margin-right: 0.5rem;
351
+ }
352
+
353
+ .fr-sidemenu__item .fr-sidemenu__link,
354
+ .fr-sidemenu__item .fr-sidemenu__btn {
355
+ color: var(--text-action-high-grey);
356
+ }
357
+
358
+ .fr-sidemenu__item:first-child::before {
359
+ box-shadow: inset 0 -1px 0 0 var(--border-default-grey);
360
+ }
361
+
362
+ .fr-sidemenu__item:last-child::before {
363
+ box-shadow: 0 -1px 0 0 var(--border-default-grey);
364
+ }
365
+
366
+ .fr-sidemenu__link[aria-current]:not([aria-current=false]),
367
+ .fr-sidemenu__btn[aria-current]:not([aria-current=false]) {
368
+ color: var(--text-active-blue-france);
369
+ }
370
+
371
+ .fr-sidemenu__btn[aria-expanded=true] {
372
+ background-color: var(--background-open-blue-france);
373
+
374
+ --idle: transparent;
375
+ --hover: var(--background-open-blue-france-hover);
376
+ --active: var(--background-open-blue-france-active);
377
+ }
378
+ @media (min-width: 36em) {
379
+ /*! media sm */
380
+ }
381
+ @media (min-width: 48em) {
382
+ /*! media md */
383
+ .fr-sidemenu {
384
+ margin-left: 0;
385
+ margin-right: 0;
386
+ padding-right: 2rem;
387
+ /**
388
+ * Modificateur pour que le sidemenu s'adapte à un affichage à droite du contenu
389
+ * La bordure se met sur la gauche
390
+ */
391
+ /**
392
+ * Modificateur pour que le sidemenu soit sticky
393
+ */
394
+
395
+ /**
396
+ * Modificateur pour que le sidemenu soit à la fois sticky et prenne toute la hauteur de la page
397
+ */
398
+ box-shadow: none;
399
+ }
400
+
401
+ .fr-sidemenu .fr-collapse {
402
+ margin-left: -0.25rem;
403
+ margin-right: -0.25rem;
404
+ padding-left: 0.25rem;
405
+ padding-right: 0.25rem;
406
+ }
407
+
408
+ .fr-sidemenu__title {
409
+ margin: 0 0 1.5rem;
410
+ padding: 0;
411
+ box-shadow: none;
412
+ }
413
+
414
+ .fr-sidemenu__list .fr-sidemenu__list {
415
+ margin: 0 1rem 1rem;
416
+ }
417
+
418
+ .fr-sidemenu__list {
419
+ margin: 0;
420
+ }
421
+
422
+ .fr-sidemenu__item::before {
423
+ content: none;
424
+ }
425
+
426
+ .fr-sidemenu__inner {
427
+ padding: 0 1.5rem 0 0;
428
+ box-shadow: inset -1px 0 0 0 var(--border-default-grey);
429
+ }
430
+
431
+ .fr-sidemenu__inner > .fr-collapse {
432
+ padding: 0;
433
+ margin: 0;
434
+ overflow: initial;
435
+ max-height: none;
436
+ }
437
+
438
+ .fr-sidemenu__inner > .fr-collapse::before {
439
+ display: none;
440
+ }
441
+
442
+ .fr-sidemenu__inner > .fr-collapse:not(.fr-collapse--expanded) {
443
+ visibility: inherit;
444
+ }
445
+
446
+ .fr-sidemenu--right {
447
+ padding-left: 2rem;
448
+ padding-right: 0;
449
+ }
450
+
451
+ .fr-sidemenu--right .fr-sidemenu__inner {
452
+ padding: 0 1rem 0 2rem;
453
+ border-right: 0;
454
+ box-shadow: inset 1px 0 0 0 var(--border-default-grey);
455
+ }
456
+
457
+ .fr-sidemenu--sticky {
458
+ position: sticky;
459
+ top: 0;
460
+ }
461
+
462
+ .fr-sidemenu--sticky .fr-sidemenu__inner {
463
+ padding-top: 0.5rem;
464
+ padding-left: 0.25rem;
465
+ margin-left: -0.25rem;
466
+ padding-bottom: 0.25rem;
467
+ margin-bottom: -0.25rem;
468
+ overflow: auto;
469
+ max-height: 100vh;
470
+ }
471
+
472
+ .fr-sidemenu--sticky-full-height {
473
+ position: sticky;
474
+ top: 0;
475
+ height: 100vh;
476
+ }
477
+
478
+ .fr-sidemenu--sticky-full-height .fr-sidemenu__inner {
479
+ padding-top: 0.5rem;
480
+ padding-left: 0.25rem;
481
+ margin-left: -0.25rem;
482
+ padding-bottom: 0.25rem;
483
+ margin-bottom: -0.25rem;
484
+ overflow: auto;
485
+ height: 100%;
486
+ }
487
+
488
+ .fr-sidemenu__link,
489
+ .fr-sidemenu__btn {
490
+ margin: 0;
491
+ width: 100%;
492
+ }
493
+
494
+ .fr-sidemenu__btn[aria-expanded] {
495
+ padding: 0.75rem 2.5rem 0.75rem 1rem;
496
+ }
497
+
498
+ .fr-sidemenu__btn[aria-expanded]::after {
499
+ margin-right: -1.5rem;
500
+ }
501
+
502
+ .fr-sidemenu__inner > .fr-sidemenu__btn {
503
+ display: none;
504
+ }
505
+ }
506
+ @media (min-width: 62em) {
507
+ /*! media lg */
508
+ }
509
+ @media (min-width: 78em) {
510
+ /*! media xl */
511
+ }
512
+ @media (-ms-high-contrast: active), (forced-colors: active) {
513
+ .fr-sidemenu__inner {
514
+ border-right: 1px solid;
515
+ }
516
+
517
+ .fr-sidemenu__link[aria-current]:not([aria-current=false])::before,
518
+ .fr-sidemenu__btn[aria-current]:not([aria-current=false])::before {
519
+ background-color: highlight;
520
+ forced-color-adjust: none;
521
+ }
522
+
523
+ .fr-sidemenu__btn[aria-expanded]::after {
524
+ forced-color-adjust: none;
525
+ background-color: buttontext;
526
+ }
527
+ }
528
+ @media (min-width: 48em) and (-ms-high-contrast: active), (min-width: 48em) and (forced-colors: active) {
529
+ .fr-sidemenu--right .fr-sidemenu__inner {
530
+ border-left: 1px solid;
531
+ }
532
+ }
533
+ a {
534
+ text-decoration: var(--text-decoration);
535
+ color: inherit;
536
+ }
537
+ @media (-ms-high-contrast: active), (forced-colors: active) {
538
+ a:not([href]) {
539
+ color: graytext;
540
+ }
541
+ }
542
+
543
+ :root {
544
+ --underline-max-width: 100%;
545
+ --underline-hover-width: 0;
546
+ --underline-idle-width: var(--underline-max-width);
547
+ --underline-x: calc(var(--underline-max-width) * 0);
548
+ --underline-thickness: 0.0625em;
549
+ --underline-img: linear-gradient(0deg, currentColor, currentColor);
550
+ --external-link-content: '';
551
+ --text-decoration: none;
552
+ }
553
+
554
+ [href] {
555
+ background-image: var(--underline-img), var(--underline-img);
556
+ background-position: var(--underline-x) 100%, var(--underline-x) calc(100% - var(--underline-thickness));
557
+ background-repeat: no-repeat, no-repeat;
558
+ transition: background-size 0s;
559
+ background-size: var(--underline-hover-width) calc(var(--underline-thickness) * 2), var(--underline-idle-width) var(--underline-thickness);
560
+ }
561
+ @media (-ms-high-contrast: active), (forced-colors: active) {
562
+ [href], [href]:visited {
563
+ color: linktext;
564
+ }
565
+ }
566
+
567
+ [target=_blank]::after {
568
+ flex: 0 0 auto;
569
+ display: inline-block;
570
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
571
+ background-color: currentColor;
572
+ width: var(--icon-size);
573
+ height: var(--icon-size);
574
+ -webkit-mask-size: 100% 100%;
575
+ mask-size: 100% 100%;
576
+ }
577
+ [target=_blank]::after {
578
+ --icon-size: 1rem;
579
+ }
580
+ [target=_blank]::after {
581
+ -webkit-mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/external-link-line.svg");
582
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/external-link-line.svg");
583
+ }
584
+ @media (-ms-high-contrast: active), (forced-colors: active) {
585
+ [target=_blank]::after {
586
+ forced-color-adjust: none;
587
+ background-color: linktext;
588
+ }
589
+ }
590
+ [target=_blank]::after {
591
+ content: var(--external-link-content);
592
+ margin-left: 0.25rem;
593
+ }
594
+ [target=_blank][class^=fr-icon-]::after, [target=_blank][class*=" fr-icon-"]::after, [target=_blank][class^=fr-fi-]::after, [target=_blank][class*=" fr-fi-"]::after {
595
+ flex: 0 0 auto;
596
+ display: inline-block;
597
+ vertical-align: calc((0.75em - var(--icon-size)) * 0.5);
598
+ background-color: currentColor;
599
+ width: var(--icon-size);
600
+ height: var(--icon-size);
601
+ -webkit-mask-size: 100% 100%;
602
+ mask-size: 100% 100%;
603
+ }
604
+ [target=_blank][class^=fr-icon-]::after, [target=_blank][class*=" fr-icon-"]::after, [target=_blank][class^=fr-fi-]::after, [target=_blank][class*=" fr-fi-"]::after {
605
+ --icon-size: 1rem;
606
+ }
607
+ [target=_blank][class^=fr-icon-]::after, [target=_blank][class*=" fr-icon-"]::after, [target=_blank][class^=fr-fi-]::after, [target=_blank][class*=" fr-fi-"]::after {
608
+ -webkit-mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/external-link-line.svg");
609
+ mask-image: url("https://lab-anssi-ui-kit-prod-s3-assets.cellar-c2.services.clever-cloud.com/icones/dsfr/system/external-link-line.svg");
610
+ }
611
+ @media (-ms-high-contrast: active), (forced-colors: active) {
612
+ [target=_blank][class^=fr-icon-]::after, [target=_blank][class*=" fr-icon-"]::after, [target=_blank][class^=fr-fi-]::after, [target=_blank][class*=" fr-fi-"]::after {
613
+ forced-color-adjust: none;
614
+ background-color: linktext;
615
+ }
616
+ }
617
+ [target=_blank][class^=fr-icon-]::after, [target=_blank][class*=" fr-icon-"]::after, [target=_blank][class^=fr-fi-]::after, [target=_blank][class*=" fr-fi-"]::after {
618
+ content: var(--external-link-content);
619
+ margin-left: 0.25rem;
620
+ }
621
+
622
+ form[target=_blank]::after {
623
+ content: none;
624
+ }
625
+
626
+ .fr-raw-link {
627
+ --text-decoration: none;
628
+ }
629
+ .fr-raw-link[href],
630
+ .fr-raw-link [href] {
631
+ --underline-img: none;
632
+ --external-link-content: none;
633
+ }
634
+
635
+ .fr-reset-link {
636
+ --text-decoration: underline;
637
+ }
638
+ .fr-reset-link[href],
639
+ .fr-reset-link [href] {
640
+ --underline-img: none;
641
+ text-underline-offset: 2px;
642
+ }
643
+
644
+ button {
645
+ -webkit-appearance: none;
646
+ -moz-appearance: none;
647
+ appearance: none;
648
+ border: none;
649
+ margin: 0;
650
+ color: inherit;
651
+ background-color: transparent;
652
+ font-family: inherit;
653
+ font-size: inherit;
654
+ }
655
+ @media (-ms-high-contrast: active), (forced-colors: active) {
656
+ button {
657
+ color: buttontext;
658
+ }
659
+ }
660
+
661
+ @media (-ms-high-contrast: active), (forced-colors: active) {
662
+ button:disabled {
663
+ color: graytext;
664
+ }
665
+ }
666
+
667
+ input,
668
+ select,
669
+ textarea {
670
+ -webkit-appearance: none;
671
+ -moz-appearance: none;
672
+ appearance: none;
673
+ font-family: "Marianne", arial, sans-serif;
674
+ text-rendering: optimizeLegibility;
675
+ -webkit-font-smoothing: antialiased;
676
+ -moz-osx-font-smoothing: grayscale;
677
+ -webkit-text-size-adjust: 100%;
678
+ border-radius: 0;
679
+ border: 0;
680
+ background-color: transparent;
681
+ margin: 0;
682
+ }
683
+ @media (-ms-high-contrast: active), (forced-colors: active) {
684
+ input,
685
+ select,
686
+ textarea {
687
+ border: 1px solid;
688
+ }
689
+ }
690
+
691
+ input[type=search] {
692
+ -webkit-appearance: none;
693
+ -moz-appearance: none;
694
+ appearance: none;
695
+ }
696
+
697
+ input[type=checkbox],
698
+ input[type=radio],
699
+ input[type=range] {
700
+ -webkit-appearance: auto;
701
+ -moz-appearance: auto;
702
+ appearance: auto;
703
+ }
704
+
705
+ input::-webkit-contacts-auto-fill-button,
706
+ input::-webkit-credentials-auto-fill-button {
707
+ margin-left: 1rem;
708
+ margin-right: -1px;
709
+ width: 1.25rem;
710
+ height: 1.25rem;
711
+ -webkit-mask-size: 1.25rem 1.25rem;
712
+ }
713
+
714
+ input[type=range]:focus::-webkit-slider-thumb {
715
+ outline-offset: 2px;
716
+ outline-width: 2px;
717
+ outline-color: #0a76f6;
718
+ }
719
+
720
+ input[type=range]:focus::-moz-range-thumb {
721
+ outline-offset: 2px;
722
+ outline-width: 2px;
723
+ outline-color: #0a76f6;
724
+ }
725
+
726
+ input[type=range]:focus::-ms-thumb {
727
+ outline-offset: 2px;
728
+ outline-width: 2px;
729
+ outline-color: #0a76f6;
730
+ }
731
+
732
+ a:focus, button:focus, input:focus, input[type=checkbox]:focus + label::before, input[type=radio]:focus + label::before, input[type=button]:focus, input[type=image]:focus, input[type=reset]:focus, input[type=submit]:focus, select:focus, textarea:focus, [tabindex]:focus, video:focus[controls], audio:focus[controls], [contenteditable]:not([contenteditable=false]):focus, details:focus, details > summary:first-of-type:focus {
733
+ outline-offset: 2px;
734
+ outline-width: 2px;
735
+ outline-color: #0a76f6;
736
+ }
737
+
738
+ input[type=range]:focus::-webkit-slider-thumb {
739
+ outline-style: solid;
740
+ }
741
+
742
+ input[type=range]:focus::-moz-range-thumb {
743
+ outline-style: solid;
744
+ }
745
+
746
+ input[type=range]:focus::-ms-thumb {
747
+ outline-style: solid;
748
+ }
749
+
750
+ a:focus, button:focus, input:focus, input[type=checkbox]:focus + label::before, input[type=radio]:focus + label::before, input[type=button]:focus, input[type=image]:focus, input[type=reset]:focus, input[type=submit]:focus, select:focus, textarea:focus, [tabindex]:focus, video:focus[controls], audio:focus[controls], [contenteditable]:not([contenteditable=false]):focus, details:focus, details > summary:first-of-type:focus {
751
+ outline-style: solid;
752
+ }
753
+
754
+ input[type=range]:focus:not(:focus-visible)::-webkit-slider-thumb {
755
+ outline-style: none;
756
+ }
757
+
758
+ input[type=range]:focus:not(:focus-visible)::-moz-range-thumb {
759
+ outline-style: none;
760
+ }
761
+
762
+ input[type=range]:focus:not(:focus-visible)::-ms-thumb {
763
+ outline-style: none;
764
+ }
765
+
766
+ a:focus:not(:focus-visible), button:focus:not(:focus-visible), input:focus:not(:focus-visible), input[type=checkbox]:focus:not(:focus-visible) + label::before, input[type=radio]:focus:not(:focus-visible) + label::before, input[type=button]:focus:not(:focus-visible), input[type=image]:focus:not(:focus-visible), input[type=reset]:focus:not(:focus-visible), input[type=submit]:focus:not(:focus-visible), select:focus:not(:focus-visible), textarea:focus:not(:focus-visible), [tabindex]:focus:not(:focus-visible), video:focus:not(:focus-visible)[controls], audio:focus:not(:focus-visible)[controls], [contenteditable]:not([contenteditable=false]):focus:not(:focus-visible), details:focus:not(:focus-visible), details > summary:first-of-type:focus:not(:focus-visible) {
767
+ outline-style: none;
768
+ }
769
+
770
+ input[type=range]:focus-visible::-webkit-slider-thumb {
771
+ outline-style: solid;
772
+ }
773
+
774
+ input[type=range]:focus-visible::-moz-range-thumb {
775
+ outline-style: solid;
776
+ }
777
+
778
+ input[type=range]:focus-visible::-ms-thumb {
779
+ outline-style: solid;
780
+ }
781
+
782
+ a:focus-visible, button:focus-visible, input:focus-visible, input[type=checkbox]:focus-visible + label::before, input[type=radio]:focus-visible + label::before, input[type=button]:focus-visible, input[type=image]:focus-visible, input[type=reset]:focus-visible, input[type=submit]:focus-visible, select:focus-visible, textarea:focus-visible, [tabindex]:focus-visible, video:focus-visible[controls], audio:focus-visible[controls], [contenteditable]:not([contenteditable=false]):focus-visible, details:focus-visible, details > summary:first-of-type:focus-visible {
783
+ outline-style: solid;
784
+ }
785
+
786
+ @media (hover: hover) and (pointer: fine) {
787
+ :root {
788
+ --brighten: -1;
789
+ }
790
+ a[href]:hover, button:not(:disabled):hover, input[type=button]:not(:disabled):hover, input[type=image]:not(:disabled):hover, input[type=reset]:not(:disabled):hover, input[type=submit]:not(:disabled):hover {
791
+ background-color: var(--hover-tint);
792
+ }
793
+ a[href]:active, button:not(:disabled):active, input[type=button]:not(:disabled):active, input[type=image]:not(:disabled):active, input[type=reset]:not(:disabled):active, input[type=submit]:not(:disabled):active {
794
+ background-color: var(--active-tint);
795
+ }
796
+ a[href]:hover, a[href]:active {
797
+ --underline-hover-width: var(--underline-max-width);
798
+ }
799
+ }
800
+ button, input[type=button], input[type=image], input[type=reset], input[type=submit] {
801
+ --hover-tint: var(--hover);
802
+ --active-tint: var(--active);
803
+ }
804
+
805
+ a {
806
+ --hover-tint: var(--idle);
807
+ --active-tint: var(--active);
808
+ }
809
+
810
+ a, button, input[type=checkbox], input[type=checkbox] + label, input[type=radio], input[type=radio] + label, input[type=file], input[type=range], input[type=button], input[type=image], input[type=reset], input[type=submit], select, video[controls], audio[controls], details, details > summary:first-of-type {
811
+ cursor: pointer;
812
+ }
813
+
814
+ input[type=range]:disabled::-webkit-slider-thumb, input[type=range]:disabled::-webkit-slider-thumb:active {
815
+ cursor: not-allowed;
816
+ }
817
+
818
+ input[type=range]:disabled::-moz-range-thumb, input[type=range]:disabled::-moz-range-thumb:active {
819
+ cursor: not-allowed;
820
+ }
821
+
822
+ input[type=range]:disabled::-ms-thumb, input[type=range]:disabled::-ms-thumb:active {
823
+ cursor: not-allowed;
824
+ }
825
+
826
+ a:not([href]), button:disabled, input:disabled, input[type=checkbox]:disabled, input[type=checkbox]:disabled + label, input[type=radio]:disabled, input[type=radio]:disabled + label, input[type=file]:disabled, input[type=range]:disabled, input[type=button]:disabled, input[type=image]:disabled, input[type=reset]:disabled, input[type=submit]:disabled, select:disabled, textarea:disabled, video:not([href])[controls], audio:not([href])[controls] {
827
+ cursor: not-allowed;
828
+ }
829
+
830
+ input[type=range]::-webkit-slider-thumb {
831
+ cursor: grab;
832
+ }
833
+
834
+ input[type=range]::-moz-range-thumb {
835
+ cursor: grab;
836
+ }
837
+
838
+ input[type=range]::-ms-thumb {
839
+ cursor: grab;
840
+ }
841
+
842
+ input[type=range]::-webkit-slider-thumb:active {
843
+ cursor: grabbing;
844
+ }
845
+
846
+ input[type=range]::-moz-range-thumb:active {
847
+ cursor: grabbing;
848
+ }
849
+
850
+ input[type=range]::-ms-thumb:active {
851
+ cursor: grabbing;
852
+ }
853
+
854
+ /**
855
+ * Override de l'opacité chrome sur un élément disabled
856
+ */
857
+ a:not([href]), button:disabled, input:disabled, input[type=checkbox]:disabled, input[type=checkbox]:disabled + label, input[type=radio]:disabled, input[type=radio]:disabled + label, select:disabled, textarea:disabled, video:not([href]), audio:not([href]) {
858
+ opacity: 1;
859
+ }
860
+
861
+ .fr-enlarge-link {
862
+ position: relative;
863
+ }
864
+ .fr-enlarge-link a {
865
+ background-image: none;
866
+ outline-width: 0;
867
+ }
868
+ .fr-enlarge-link a::before {
869
+ content: "";
870
+ display: block;
871
+ position: absolute;
872
+ top: 0;
873
+ right: 0;
874
+ bottom: 0;
875
+ left: 0;
876
+ width: 100%;
877
+ height: 100%;
878
+ outline-offset: 2px;
879
+ outline-style: inherit;
880
+ outline-color: inherit;
881
+ outline-width: 2px;
882
+ z-index: 1;
883
+ }
884
+ @media (hover: hover) and (pointer: fine) {
885
+ .fr-enlarge-link a:hover, .fr-enlarge-link a:active {
886
+ background-image: none;
887
+ }
888
+ .fr-enlarge-link:hover {
889
+ background-color: var(--hover);
890
+ }
891
+ .fr-enlarge-link:active {
892
+ background-color: var(--active);
893
+ }
894
+ }
895
+
896
+ .fr-enlarge-button {
897
+ position: relative;
898
+ }
899
+ .fr-enlarge-button button {
900
+ background-image: none;
901
+ outline-width: 0;
902
+ }
903
+ .fr-enlarge-button button::before {
904
+ content: "";
905
+ display: block;
906
+ position: absolute;
907
+ top: 0;
908
+ right: 0;
909
+ bottom: 0;
910
+ left: 0;
911
+ width: 100%;
912
+ height: 100%;
913
+ outline-offset: 2px;
914
+ outline-style: inherit;
915
+ outline-color: inherit;
916
+ outline-width: 2px;
917
+ z-index: 1;
918
+ }
919
+ @media (hover: hover) and (pointer: fine) {
920
+ .fr-enlarge-button button:hover, .fr-enlarge-button button:active {
921
+ background-image: none;
922
+ }
923
+ .fr-enlarge-button:hover {
924
+ background-color: var(--hover);
925
+ }
926
+ .fr-enlarge-button:active {
927
+ background-color: var(--active);
928
+ }
929
+ }
930
+
931
+ h6 {
932
+ font-weight: 700;
933
+ font-size: 1.125rem;
934
+ line-height: 1.5rem;
935
+ }
936
+ @media (min-width: 48em) {
937
+ h6 {
938
+ font-size: 1.25rem;
939
+ line-height: 1.75rem;
940
+ }
941
+ }
942
+ h6 {
943
+ margin: var(--title-spacing);
944
+ }
945
+
946
+ h5 {
947
+ font-weight: 700;
948
+ font-size: 1.25rem;
949
+ line-height: 1.75rem;
950
+ }
951
+ @media (min-width: 48em) {
952
+ h5 {
953
+ font-size: 1.375rem;
954
+ line-height: 1.75rem;
955
+ }
956
+ }
957
+ h5 {
958
+ margin: var(--title-spacing);
959
+ }
960
+
961
+ h4 {
962
+ font-weight: 700;
963
+ font-size: 1.375rem;
964
+ line-height: 1.75rem;
965
+ }
966
+ @media (min-width: 48em) {
967
+ h4 {
968
+ font-size: 1.5rem;
969
+ line-height: 2rem;
970
+ }
971
+ }
972
+ h4 {
973
+ margin: var(--title-spacing);
974
+ }
975
+
976
+ h3 {
977
+ font-weight: 700;
978
+ font-size: 1.5rem;
979
+ line-height: 2rem;
980
+ }
981
+ @media (min-width: 48em) {
982
+ h3 {
983
+ font-size: 1.75rem;
984
+ line-height: 2.25rem;
985
+ }
986
+ }
987
+ h3 {
988
+ margin: var(--title-spacing);
989
+ }
990
+
991
+ h2 {
992
+ font-weight: 700;
993
+ font-size: 1.75rem;
994
+ line-height: 2.25rem;
995
+ }
996
+ @media (min-width: 48em) {
997
+ h2 {
998
+ font-size: 2rem;
999
+ line-height: 2.5rem;
1000
+ }
1001
+ }
1002
+ h2 {
1003
+ margin: var(--title-spacing);
1004
+ }
1005
+
1006
+ h1 {
1007
+ font-weight: 700;
1008
+ font-size: 2rem;
1009
+ line-height: 2.5rem;
1010
+ }
1011
+ @media (min-width: 48em) {
1012
+ h1 {
1013
+ font-size: 2.5rem;
1014
+ line-height: 3rem;
1015
+ }
1016
+ }
1017
+ h1 {
1018
+ margin: var(--title-spacing);
1019
+ }
1020
+
1021
+ p {
1022
+ font-size: 1rem;
1023
+ line-height: 1.5rem;
1024
+ margin: var(--text-spacing);
1025
+ }
1026
+
1027
+ :root {
1028
+ --ul-type: disc;
1029
+ --ol-type: decimal;
1030
+ --ul-start: 1rem;
1031
+ --ol-start: 1.5rem;
1032
+ --xl-block: 0.5rem;
1033
+ --li-bottom: 0.25rem;
1034
+ --xl-base: 1em;
1035
+ --ol-content: counters(li-counter, ".") ".\00a0\00a0";
1036
+ }
1037
+
1038
+ ul,
1039
+ ol,
1040
+ dl {
1041
+ margin: 0;
1042
+ padding: 0;
1043
+ margin-block-start: var(--xl-block);
1044
+ margin-block-end: var(--xl-block);
1045
+ --xl-size: var(--xl-base);
1046
+ }
1047
+
1048
+ ul {
1049
+ list-style-type: var(--ul-type);
1050
+ padding-inline-start: var(--ul-start);
1051
+ }
1052
+ ul > li::marker {
1053
+ font-size: calc(var(--xl-size) * 0.9);
1054
+ }
1055
+ @media (-ms-high-contrast: active), (forced-colors: active) {
1056
+ ul > li::marker {
1057
+ color: graytext;
1058
+ }
1059
+ }
1060
+
1061
+ ol {
1062
+ list-style-type: var(--ol-type);
1063
+ padding-inline-start: var(--ol-start);
1064
+ counter-reset: li-counter;
1065
+ }
1066
+ ol > li {
1067
+ counter-increment: li-counter;
1068
+ }
1069
+ ol > li::marker {
1070
+ content: var(--ol-content);
1071
+ font-size: var(--xl-size);
1072
+ font-weight: bold;
1073
+ }
1074
+
1075
+ dl,
1076
+ dd {
1077
+ margin: 0;
1078
+ padding-inline-start: var(--ul-start);
1079
+ }
1080
+
1081
+ li,
1082
+ dd,
1083
+ dt {
1084
+ --xl-base: calc(var(--xl-size) * 0.9);
1085
+ padding-bottom: var(--li-bottom);
1086
+ }
1087
+
1088
+ .fr-raw-list {
1089
+ --ul-type: none;
1090
+ --ol-type: none;
1091
+ --ul-start: 0;
1092
+ --ol-start: 0;
1093
+ --xl-block: 0;
1094
+ --li-bottom: 0;
1095
+ --ol-content: none;
1096
+ }
1097
+
1098
+ .fr-list {
1099
+ --ul-type: disc;
1100
+ --ol-type: decimal;
1101
+ --ul-start: 1rem;
1102
+ --ol-start: 1.5rem;
1103
+ --xl-block: 0.5rem;
1104
+ --li-bottom: 0.25rem;
1105
+ --xl-base: 1em;
1106
+ --ol-content: counters(li-counter, ".") ".\00a0\00a0";
1107
+ }
1108
+
1109
+ .fr-collapse {
1110
+ --collapse: -99999px;
1111
+ --collapser: '';
1112
+ --collapse-max-height: none;
1113
+ overflow: hidden;
1114
+ transition: visibility 0.3s;
1115
+ max-height: var(--collapse-max-height);
1116
+ }
1117
+ .fr-collapse--expanded {
1118
+ overflow-x: hidden;
1119
+ overflow-y: auto;
1120
+ }
1121
+ @media (prefers-reduced-motion: reduce) {
1122
+ .fr-collapse {
1123
+ transition: none;
1124
+ }
1125
+ }
1126
+ .fr-collapse::before {
1127
+ display: block;
1128
+ content: "";
1129
+ content: var(--collapser);
1130
+ transition: margin-top 0.3s;
1131
+ margin-top: 0;
1132
+ }
1133
+ @media (prefers-reduced-motion: reduce) {
1134
+ .fr-collapse::before {
1135
+ transition: none;
1136
+ }
1137
+ }
1138
+ .fr-collapse:not(.fr-collapse--expanded):not(.fr-collapsing) {
1139
+ --collapse-max-height: 0;
1140
+ }
1141
+ .fr-collapse:not(.fr-collapse--expanded) {
1142
+ visibility: hidden;
1143
+ }
1144
+ .fr-collapse:not(.fr-collapse--expanded)::before {
1145
+ margin-top: -99999px;
1146
+ margin-top: var(--collapse);
1147
+ }
1148
+
1149
+ *,
1150
+ *::before,
1151
+ *::after {
1152
+ box-sizing: inherit;
1153
+ }
1154
+
1155
+ :root {
1156
+ box-sizing: border-box;
1157
+ }
1158
+
1159
+ body {
1160
+ font-family: "Marianne", arial, sans-serif;
1161
+ text-rendering: optimizeLegibility;
1162
+ -webkit-font-smoothing: antialiased;
1163
+ -moz-osx-font-smoothing: grayscale;
1164
+ -webkit-text-size-adjust: 100%;
1165
+ margin: 0;
1166
+ padding: 0;
1167
+ font-size: 1rem;
1168
+ line-height: 1.5rem;
1169
+ overflow-wrap: break-word;
1170
+ }
1171
+
1172
+ input,
1173
+ select,
1174
+ textarea,
1175
+ label,
1176
+ button,
1177
+ a {
1178
+ -webkit-tap-highlight-color: transparent;
1179
+ }
1180
+
1181
+ select optgroup {
1182
+ font-style: normal;
1183
+ }
1184
+
1185
+ :host {
1186
+ display: block;
1187
+ text-rendering: optimizeLegibility;
1188
+ -webkit-font-smoothing: antialiased;
1189
+ -moz-osx-font-smoothing: grayscale;
1190
+ -webkit-text-size-adjust: 100%;
1191
+ font-size: 1rem;
1192
+ line-height: 1.5rem;
1193
+ background-color: var(--background-default-grey);
1194
+ --idle: transparent;
1195
+ --hover: var(--background-default-grey-hover);
1196
+ --active: var(--background-default-grey-active);
1197
+ color: var(--text-default-grey);
1198
+ background-color: transparent;
1199
+ }
1200
+
1201
+ .fr-sidemenu {
1202
+ box-sizing: border-box;
1203
+ }
1204
+ .fr-sidemenu, .fr-sidemenu__inner {
1205
+ height: inherit;
1206
+ }
1207
+ @media (min-width: 48em) {
1208
+ .fr-sidemenu__inner > .fr-sidemenu__collapse {
1209
+ padding: var(--component-padding, 0);
1210
+ }
1211
+ }</style>