@maboussoleaidant/design-system 0.1.38 → 0.1.40

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.
@@ -1,23 +1,33 @@
1
+
2
+ @layer theme, base, components, utilities;
1
3
  /**
2
4
  * MBA Design System
3
5
  *
4
6
  * Point d'entrée principal (sans Tailwind utilities)
5
7
  * Inclut: tokens + base + composants
6
8
  */
7
-
9
+ /**
10
+ * Ordre des cascade layers — DOIT rester la 1re règle du CSS compilé.
11
+ *
12
+ * Sans cette déclaration, les layers étaient ordonnés par ordre d'apparition
13
+ * (`components` puis `base`), ce qui faisait gagner le reset `base`
14
+ * (ex. `button { background-color: transparent }`, `a { … }`) sur les
15
+ * composants `.mba-*` de `@layer components` — y compris à l'intérieur d'un
16
+ * Shadow DOM qui importe ce fichier. En figeant l'ordre priorité croissante
17
+ * `theme < base < components < utilities`, les composants gagnent enfin sur
18
+ * le reset, comme attendu.
19
+ */
8
20
  /**
9
21
  * MBA Design System - Tokens
10
22
  *
11
23
  * Point d'entrée pour tous les design tokens
12
24
  */
13
-
14
25
  /**
15
26
  * MBA Design System - Couleurs
16
27
  *
17
28
  * Palette de couleurs extraite du Design System Figma
18
29
  * Préfixe: --mba-color-
19
30
  */
20
-
21
31
  :root {
22
32
  /* ===========================================
23
33
  BASICS
@@ -173,14 +183,12 @@
173
183
  /* Focus ring (accessibilité) */
174
184
  --mba-focus-ring: 0 0 0 3px rgba(112, 57, 115, 0.25);
175
185
  }
176
-
177
186
  /**
178
187
  * MBA Design System - Typographie
179
188
  *
180
189
  * Polices: Open Sans (textes) + Congenial (titres)
181
190
  * Source: Design System Figma
182
191
  */
183
-
184
192
  :root {
185
193
  /* ===========================================
186
194
  FAMILLES DE POLICES
@@ -229,12 +237,10 @@
229
237
  --mba-tracking-wider: 0.05em;
230
238
  --mba-tracking-widest: 0.1em;
231
239
  }
232
-
233
240
  /* ===========================================
234
241
  HEADING PRESETS (Congenial)
235
242
  Wrappé dans @layer components pour être overridable par utilities
236
243
  =========================================== */
237
-
238
244
  @layer components {
239
245
 
240
246
  /* XXL - 48px Bold */
@@ -338,16 +344,13 @@
338
344
  }
339
345
 
340
346
  }
341
-
342
347
  /* end @layer components */
343
-
344
348
  /**
345
349
  * MBA Design System - Espacements
346
350
  *
347
351
  * Échelle d'espacements extraite du Design System Figma
348
352
  * Préfixe: --mba-space-
349
353
  */
350
-
351
354
  :root {
352
355
  /* ===========================================
353
356
  ÉCHELLE FIGMA
@@ -372,14 +375,12 @@
372
375
  =========================================== */
373
376
  --mba-container-width: 70rem; /* 1120px */
374
377
  }
375
-
376
378
  /**
377
379
  * MBA Design System - Border Radius
378
380
  *
379
381
  * Échelle de rayons de bordure extraite du Design System Figma
380
382
  * Préfixe: --mba-radius-
381
383
  */
382
-
383
384
  :root {
384
385
  /* ===========================================
385
386
  ÉCHELLE FIGMA
@@ -398,7 +399,6 @@
398
399
  --mba-radius-none: 0;
399
400
  --mba-radius-full: 9999px;
400
401
  }
401
-
402
402
  /**
403
403
  * MBA Design System - Ombres (Elevation)
404
404
  *
@@ -406,7 +406,6 @@
406
406
  * Couleur de base: Grey 400 (#71717A / rgba(113, 113, 122))
407
407
  * Préfixe: --mba-shadow-
408
408
  */
409
-
410
409
  :root {
411
410
  /* ===========================================
412
411
  ÉCHELLE FIGMA (Elevation)
@@ -450,13 +449,11 @@
450
449
  --mba-input-ring-success: 0 0 0 1.5px var(--mba-color-success-100);
451
450
  --mba-input-ring-success-focus: 0 0 0 1.5px var(--mba-color-success-300);
452
451
  }
453
-
454
452
  /**
455
453
  * MBA Design System - Transitions
456
454
  *
457
455
  * Durées et easings pour les animations
458
456
  */
459
-
460
457
  :root {
461
458
  /* ===========================================
462
459
  DUREES
@@ -485,7 +482,6 @@
485
482
  --mba-transition-base: var(--mba-duration-200) var(--mba-ease-in-out);
486
483
  --mba-transition-slow: var(--mba-duration-300) var(--mba-ease-in-out);
487
484
  }
488
-
489
485
  /**
490
486
  * MBA Design System - Breakpoints
491
487
  *
@@ -496,7 +492,6 @@
496
492
  * Utiliser les classes Tailwind (sm:, md:, lg:, xl:, 2xl:)
497
493
  * ou les @media queries directement.
498
494
  */
499
-
500
495
  :root {
501
496
  /* Breakpoints pour référence (usage JS) */
502
497
  --mba-breakpoint-sm: 640px;
@@ -505,7 +500,6 @@
505
500
  --mba-breakpoint-xl: 1280px;
506
501
  --mba-breakpoint-2xl: 1536px;
507
502
  }
508
-
509
503
  /*
510
504
  Usage en CSS pur (les @media ne supportent pas les custom properties) :
511
505
 
@@ -515,7 +509,6 @@
515
509
  @media (min-width: 1280px) { ... } xl
516
510
  @media (min-width: 1536px) { ... } 2xl
517
511
  */
518
-
519
512
  /**
520
513
  * MBA Design System - Decorations
521
514
  *
@@ -525,7 +518,6 @@
525
518
  * - dip-up = creux vers le haut ↑ (utilisé en position bottom)
526
519
  * - dip-down = creux vers le bas ↓ (utilisé en position top)
527
520
  */
528
-
529
521
  :root {
530
522
  /* Wave Default (42px) */
531
523
  --mba-wave-height: 42px;
@@ -537,23 +529,19 @@
537
529
  --mba-wave-sm-dip-up-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1280 24' preserveAspectRatio='none'%3E%3Cpath d='M1280 24H0V15.8118C95.612 15.8118 246.789 0 360.422 0C499.085 0 780.915 15.8118 914.071 15.8118C1068.75 15.8118 1190.9 0 1280 0V24Z' fill='black'/%3E%3C/svg%3E");
538
530
  --mba-wave-sm-dip-down-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1280 24' preserveAspectRatio='none'%3E%3Cpath d='M0 0H1280V8.18824C1184.39 8.18824 1033.21 24 919.578 24C780.915 24 499.085 8.18824 365.929 8.18824C211.248 8.18824 89.1044 24 0 24V0Z' fill='black'/%3E%3C/svg%3E");
539
531
  }
540
-
541
532
  /**
542
533
  * MBA Design System - Base
543
534
  *
544
535
  * Reset et styles de base
545
536
  */
546
-
547
537
  /**
548
538
  * MBA Design System - Fonts
549
539
  *
550
540
  * @font-face declarations pour Open Sans et Congenial
551
541
  */
552
-
553
542
  /* ===========================================
554
543
  OPEN SANS (Textes)
555
544
  =========================================== */
556
-
557
545
  @font-face {
558
546
  font-family: "Open Sans";
559
547
  font-style: normal;
@@ -561,7 +549,6 @@
561
549
  font-display: swap;
562
550
  src: url("../assets/fonts/OpenSans-Regular.woff2") format("woff2");
563
551
  }
564
-
565
552
  @font-face {
566
553
  font-family: "Open Sans";
567
554
  font-style: normal;
@@ -569,7 +556,6 @@
569
556
  font-display: swap;
570
557
  src: url("../assets/fonts/OpenSans-SemiBold.woff2") format("woff2");
571
558
  }
572
-
573
559
  @font-face {
574
560
  font-family: "Open Sans";
575
561
  font-style: normal;
@@ -577,7 +563,6 @@
577
563
  font-display: swap;
578
564
  src: url("../assets/fonts/OpenSans-Bold.woff2") format("woff2");
579
565
  }
580
-
581
566
  @font-face {
582
567
  font-family: "Open Sans";
583
568
  font-style: normal;
@@ -585,12 +570,10 @@
585
570
  font-display: swap;
586
571
  src: url("../assets/fonts/OpenSans-ExtraBold.woff2") format("woff2");
587
572
  }
588
-
589
573
  /* ===========================================
590
574
  CONGENIAL (Titres)
591
575
  Note: ExtraBold non disponible, on utilise Bold pour les titres
592
576
  =========================================== */
593
-
594
577
  @font-face {
595
578
  font-family: "Congenial";
596
579
  font-style: normal;
@@ -598,7 +581,6 @@
598
581
  font-display: swap;
599
582
  src: url("../assets/fonts/Congenial.woff2") format("woff2");
600
583
  }
601
-
602
584
  @font-face {
603
585
  font-family: "Congenial";
604
586
  font-style: normal;
@@ -606,7 +588,6 @@
606
588
  font-display: swap;
607
589
  src: url("../assets/fonts/Congenial-Medium.woff2") format("woff2");
608
590
  }
609
-
610
591
  @font-face {
611
592
  font-family: "Congenial";
612
593
  font-style: normal;
@@ -614,7 +595,6 @@
614
595
  font-display: swap;
615
596
  src: url("../assets/fonts/Congenial-Bold.woff2") format("woff2");
616
597
  }
617
-
618
598
  /**
619
599
  * MBA Design System - Icons
620
600
  *
@@ -626,11 +606,9 @@
626
606
  * 1. Éditer src/icons/icons.list.txt
627
607
  * 2. Lancer: npm run icons:build
628
608
  */
629
-
630
609
  /* ===========================================
631
610
  FONT FACE - Material Symbols Rounded
632
611
  =========================================== */
633
-
634
612
  @font-face {
635
613
  font-family: 'Material Symbols Rounded';
636
614
  font-style: normal;
@@ -638,12 +616,10 @@
638
616
  font-display: block;
639
617
  src: url('../assets/fonts/MaterialSymbolsRounded.woff2') format('woff2');
640
618
  }
641
-
642
619
  /* ===========================================
643
620
  BASE ICON CLASS
644
621
  Wrappé dans @layer base pour permettre aux @layer components de l'overrider
645
622
  =========================================== */
646
-
647
623
  @layer base {
648
624
 
649
625
  .material-symbols-rounded {
@@ -766,9 +742,7 @@
766
742
  }
767
743
 
768
744
  }
769
-
770
745
  /* end @layer base */
771
-
772
746
  /**
773
747
  * MBA Design System - Preflight
774
748
  *
@@ -778,7 +752,6 @@
778
752
  * Wrappé dans @layer base pour permettre aux utilities Tailwind
779
753
  * de l'overrider sans avoir besoin de !important
780
754
  */
781
-
782
755
  @layer base {
783
756
 
784
757
  *,
@@ -1013,15 +986,12 @@ video {
1013
986
  }
1014
987
 
1015
988
  }
1016
-
1017
989
  /* end @layer base */
1018
-
1019
990
  /**
1020
991
  * MBA Design System - Base Typography
1021
992
  *
1022
993
  * Styles de base pour le texte
1023
994
  */
1024
-
1025
995
  @layer base {
1026
996
 
1027
997
  body {
@@ -1065,15 +1035,12 @@ a:hover {
1065
1035
  }
1066
1036
 
1067
1037
  }
1068
-
1069
1038
  /* end @layer base */
1070
-
1071
1039
  /**
1072
1040
  * MBA Design System - Composants
1073
1041
  *
1074
1042
  * Classes de composants prêtes à l'emploi
1075
1043
  */
1076
-
1077
1044
  /**
1078
1045
  * MBA Design System - Boutons
1079
1046
  *
@@ -1081,7 +1048,6 @@ a:hover {
1081
1048
  * Couleur: Primary (Violet #703973)
1082
1049
  * Source: Design System Figma
1083
1050
  */
1084
-
1085
1051
  @layer components {
1086
1052
 
1087
1053
  /* ===========================================
@@ -1505,6 +1471,53 @@ a:hover {
1505
1471
  color: var(--mba-color-error-500);
1506
1472
  }
1507
1473
 
1474
+ /* ===========================================
1475
+ BACK TO TOP (retour en haut)
1476
+ Bouton rond flottant (bas-droit), ancre #top → JS-free.
1477
+ L'app bascule .is-hidden selon le scroll. Pour un défilement doux,
1478
+ poser `scroll-behavior: smooth` sur <html> côté app.
1479
+ width/height 48px, icône arrow_upward 24px.
1480
+ Source: Design System Figma (Annuaire, node 7672-576).
1481
+ =========================================== */
1482
+ .mba-btn-to-top {
1483
+ position: fixed;
1484
+ right: var(--mba-space-lg);
1485
+ bottom: var(--mba-space-lg);
1486
+ z-index: 40;
1487
+ display: inline-flex;
1488
+ align-items: center;
1489
+ justify-content: center;
1490
+ width: var(--mba-space-xl); /* 48px */
1491
+ height: var(--mba-space-xl); /* 48px */
1492
+ padding: 0;
1493
+ border: none;
1494
+ border-radius: var(--mba-radius-full);
1495
+ background-color: var(--mba-color-primary-500);
1496
+ color: var(--mba-color-white);
1497
+ cursor: pointer;
1498
+ transition: background-color var(--mba-transition-base);
1499
+ }
1500
+
1501
+ .mba-btn-to-top .mba-icon {
1502
+ font-size: 24px;
1503
+ width: 24px;
1504
+ height: 24px;
1505
+ }
1506
+
1507
+ .mba-btn-to-top:hover:not(:disabled):not(.is-disabled) {
1508
+ background-color: var(--mba-color-primary-800);
1509
+ }
1510
+
1511
+ .mba-btn-to-top:focus-visible {
1512
+ outline: none;
1513
+ box-shadow: var(--mba-focus-ring);
1514
+ }
1515
+
1516
+ /* Affichage géré par l'app (visible au scroll) */
1517
+ .mba-btn-to-top.is-hidden {
1518
+ display: none;
1519
+ }
1520
+
1508
1521
  /* ===========================================
1509
1522
  SMALL BUTTON
1510
1523
  padding: 4px 8px, gap: 8px
@@ -1559,9 +1572,7 @@ a:hover {
1559
1572
  }
1560
1573
 
1561
1574
  }
1562
-
1563
1575
  /* end @layer components */
1564
-
1565
1576
  /**
1566
1577
  * MBA Design System - Links
1567
1578
  *
@@ -1577,7 +1588,6 @@ a:hover {
1577
1588
  * <span class="material-symbols-rounded">arrow_forward</span>
1578
1589
  * </a>
1579
1590
  */
1580
-
1581
1591
  @layer components {
1582
1592
 
1583
1593
  .mba-link {
@@ -1620,16 +1630,13 @@ a:hover {
1620
1630
  }
1621
1631
 
1622
1632
  }
1623
-
1624
1633
  /* end @layer components */
1625
-
1626
1634
  /**
1627
1635
  * MBA Design System - Cards
1628
1636
  *
1629
1637
  * Classes: .mba-card, .mba-card--sm, .mba-card-grid
1630
1638
  * Source: Design System Figma
1631
1639
  */
1632
-
1633
1640
  @layer components {
1634
1641
 
1635
1642
  /* ===========================================
@@ -1710,6 +1717,24 @@ a:hover {
1710
1717
  transform: translateX(4px);
1711
1718
  }
1712
1719
 
1720
+ /* ===========================================
1721
+ ICÔNE EN PASTILLE RONDE (badge de tête)
1722
+ Modifieur de .mba-card__icon : icône décorative dans un cercle, en tête de
1723
+ card (ex. cartes « rubrique » / « sujet »). Neutralise le décalage au survol,
1724
+ réservé à la flèche d'action de fin de card.
1725
+ =========================================== */
1726
+ .mba-card__icon--circle {
1727
+ width: var(--mba-space-xl); /* 48px */
1728
+ height: var(--mba-space-xl);
1729
+ padding: var(--mba-space-xs);
1730
+ border-radius: var(--mba-radius-full);
1731
+ background-color: var(--mba-color-primary-50);
1732
+ }
1733
+
1734
+ .mba-card:hover .mba-card__icon--circle {
1735
+ transform: none;
1736
+ }
1737
+
1713
1738
  /* ===========================================
1714
1739
  CARD GRID
1715
1740
  =========================================== */
@@ -1989,10 +2014,241 @@ a:hover {
1989
2014
  }
1990
2015
  }
1991
2016
 
2017
+ /* ===========================================
2018
+ ARTICLE CARD - VARIANTE EDITO
2019
+ Card article éditoriale : image inset arrondie, ligne meta (date + auteur),
2020
+ tag catégorie AU-DESSUS du titre (réutiliser .mba-tag), lien « Lire l'article ».
2021
+ N'altère pas la base .mba-article-card.
2022
+ Source: Design System Figma (Card edito, node 4749-3666).
2023
+ =========================================== */
2024
+ .mba-article-card--edito {
2025
+ padding: var(--mba-space-xs); /* 8px : l'image et le contenu sont inset */
2026
+ gap: var(--mba-space-md); /* 16px entre média / contenu / footer */
2027
+ justify-content: space-between;
1992
2028
  }
1993
2029
 
1994
- /* end @layer components */
2030
+ /* Bloc média : image + ligne meta (gap 8px) */
2031
+ .mba-article-card__media {
2032
+ display: flex;
2033
+ flex-direction: column;
2034
+ gap: var(--mba-space-xs);
2035
+ width: 100%;
2036
+ }
2037
+
2038
+ /* Image inset : arrondie sur tous les coins, plus haute */
2039
+ .mba-article-card--edito .mba-article-card__image {
2040
+ height: 232px;
2041
+ border-radius: var(--mba-radius-xs);
2042
+ }
2043
+
2044
+ /* Ligne meta : « Mis à jour le … - Par … » */
2045
+ .mba-article-card__meta {
2046
+ margin: 0;
2047
+ font-family: var(--mba-font-family-text);
2048
+ font-size: var(--mba-font-size-xxs); /* 14px */
2049
+ font-weight: var(--mba-font-weight-regular);
2050
+ color: var(--mba-color-primary-900);
2051
+ line-height: normal;
2052
+ }
2053
+
2054
+ /* Contenu edito : le tag/titre/texte s'alignent sur l'image (pas de padding) */
2055
+ .mba-article-card--edito .mba-article-card__content {
2056
+ padding: 0;
2057
+ gap: var(--mba-space-xs);
2058
+ }
2059
+
2060
+ /* Titre edito : primary-900, tronqué sur 2 lignes */
2061
+ .mba-article-card--edito .mba-article-card__title {
2062
+ color: var(--mba-color-primary-900);
2063
+ display: -webkit-box;
2064
+ -webkit-box-orient: vertical;
2065
+ -webkit-line-clamp: 2;
2066
+ overflow: hidden;
2067
+ }
2068
+
2069
+ /* Texte edito : primary-900, tronqué sur 3 lignes */
2070
+ .mba-article-card--edito .mba-article-card__text {
2071
+ color: var(--mba-color-primary-900);
2072
+ display: -webkit-box;
2073
+ -webkit-box-orient: vertical;
2074
+ -webkit-line-clamp: 3;
2075
+ overflow: hidden;
2076
+ }
2077
+
2078
+ /* Footer edito : le padding est porté par la card, on neutralise */
2079
+ .mba-article-card--edito .mba-article-card__footer {
2080
+ padding: 0;
2081
+ margin-top: 0;
2082
+ }
2083
+
2084
+ /* ===========================================
2085
+ FEATURE CARD (image pleine + label flottant)
2086
+ Card de mise en avant : image de couverture + étiquette blanche ancrée en
2087
+ bas (titre + flèche). Toute la card est cliquable.
2088
+ Source: Design System Figma (node 4660-19320).
2089
+ =========================================== */
2090
+ .mba-feature-card {
2091
+ position: relative;
2092
+ display: block;
2093
+ overflow: hidden;
2094
+ aspect-ratio: 181 / 212; /* ~362 x 424 (maquette) */
2095
+ border-radius: var(--mba-radius-sm);
2096
+ text-decoration: none;
2097
+ }
2098
+
2099
+ .mba-feature-card__image {
2100
+ position: absolute;
2101
+ inset: 0;
2102
+ width: 100%;
2103
+ height: 100%;
2104
+ object-fit: cover;
2105
+ transition: transform var(--mba-transition-base);
2106
+ }
2107
+
2108
+ /* Étiquette blanche flottante, ancrée en bas avec 8px de marge */
2109
+ .mba-feature-card__label {
2110
+ position: absolute;
2111
+ left: var(--mba-space-xs);
2112
+ right: var(--mba-space-xs);
2113
+ bottom: var(--mba-space-xs);
2114
+ display: flex;
2115
+ align-items: center;
2116
+ gap: var(--mba-space-xs);
2117
+ padding: var(--mba-space-sm);
2118
+ background-color: var(--mba-color-white);
2119
+ border-radius: var(--mba-radius-sm);
2120
+ }
2121
+
2122
+ .mba-feature-card__title {
2123
+ flex: 1 1 0;
2124
+ min-width: 0;
2125
+ font-family: var(--mba-font-family-text);
2126
+ font-size: var(--mba-font-size-sm); /* 18px */
2127
+ font-weight: var(--mba-font-weight-semibold);
2128
+ color: var(--mba-color-primary-900);
2129
+ line-height: normal;
2130
+ }
2131
+
2132
+ .mba-feature-card__icon {
2133
+ flex-shrink: 0;
2134
+ color: var(--mba-color-primary-500);
2135
+ transition: transform var(--mba-transition-base);
2136
+ }
2137
+
2138
+ /* Hover : léger zoom de l'image + flèche qui avance */
2139
+ .mba-feature-card:hover .mba-feature-card__image {
2140
+ transform: scale(1.04);
2141
+ }
2142
+
2143
+ .mba-feature-card:hover .mba-feature-card__icon {
2144
+ transform: translateX(4px);
2145
+ }
2146
+
2147
+ .mba-feature-card:focus-visible {
2148
+ outline: none;
2149
+ box-shadow: var(--mba-focus-ring);
2150
+ }
2151
+
2152
+ @media (prefers-reduced-motion: reduce) {
2153
+ .mba-feature-card__image,
2154
+ .mba-feature-card__icon {
2155
+ transition: none;
2156
+ }
2157
+ .mba-feature-card:hover .mba-feature-card__image {
2158
+ transform: none;
2159
+ }
2160
+ }
2161
+
2162
+ /* ===========================================
2163
+ RESOURCE CARD (dossier / ressource)
2164
+ Card bordée avec forme décorative en fond, pastille, titre, sous-titre et
2165
+ bouton. Réutilise .mba-tag (pastille) et .mba-btn (bouton).
2166
+ La forme décorative est un SLOT rempli par l'app (.mba-resource-card__decoration) :
2167
+ le DS pose un lavis pastel par défaut, thémable via --lavender/--oranger/--bleuet.
2168
+ Source: Design System Figma (node 4660-19046).
2169
+ =========================================== */
2170
+ .mba-resource-card {
2171
+ /* Couleur du lavis décoratif (thémée par les modifieurs ci-dessous) */
2172
+ --mba-resource-decoration-color: var(--mba-color-pastel-lavender);
2173
+
2174
+ position: relative;
2175
+ display: flex;
2176
+ flex-direction: column;
2177
+ justify-content: space-between;
2178
+ gap: var(--mba-space-md);
2179
+ overflow: hidden;
2180
+ padding: var(--mba-space-md) var(--mba-space-xxl) var(--mba-space-md) var(--mba-space-md);
2181
+ background-color: var(--mba-color-white);
2182
+ border: 1px solid var(--mba-color-grey-100);
2183
+ border-radius: var(--mba-radius-md);
2184
+ }
2185
+
2186
+ /* Thèmes de la forme décorative */
2187
+ .mba-resource-card--oranger {
2188
+ --mba-resource-decoration-color: var(--mba-color-pastel-oranger);
2189
+ }
2190
+ .mba-resource-card--bleuet {
2191
+ --mba-resource-decoration-color: var(--mba-color-pastel-bleuet);
2192
+ }
2193
+
2194
+ /* Slot décoratif : lavis pastel par défaut, remplaçable par une illustration
2195
+ fournie par l'app (poser une <img>/<svg> à l'intérieur). */
2196
+ .mba-resource-card__decoration {
2197
+ position: absolute;
2198
+ inset: 0;
2199
+ z-index: 0;
2200
+ overflow: hidden;
2201
+ border-radius: inherit;
2202
+ pointer-events: none;
2203
+ background: radial-gradient(
2204
+ 115% 90% at 12% 100%,
2205
+ var(--mba-resource-decoration-color),
2206
+ transparent 72%
2207
+ );
2208
+ }
2209
+
2210
+ /* Contenu au-dessus de la décoration */
2211
+ .mba-resource-card__content {
2212
+ position: relative;
2213
+ z-index: 1;
2214
+ display: flex;
2215
+ flex-direction: column;
2216
+ gap: var(--mba-space-sm);
2217
+ width: 100%;
2218
+ }
2219
+
2220
+ .mba-resource-card__title {
2221
+ margin: 0;
2222
+ font-family: var(--mba-font-family-text);
2223
+ font-size: var(--mba-font-size-md); /* 24px */
2224
+ font-weight: var(--mba-font-weight-semibold);
2225
+ color: var(--mba-color-primary-900);
2226
+ line-height: normal;
2227
+ }
2228
+
2229
+ .mba-resource-card__text {
2230
+ margin: 0;
2231
+ font-family: var(--mba-font-family-text);
2232
+ font-size: var(--mba-font-size-xs); /* 16px */
2233
+ font-weight: var(--mba-font-weight-semibold);
2234
+ color: var(--mba-color-primary-900);
2235
+ line-height: normal;
2236
+ }
2237
+
2238
+ /* Bouton : au-dessus de la décoration */
2239
+ .mba-resource-card__action {
2240
+ position: relative;
2241
+ z-index: 1;
2242
+ }
2243
+
2244
+ @media (max-width: 600px) {
2245
+ .mba-resource-card {
2246
+ padding-right: var(--mba-space-md);
2247
+ }
2248
+ }
1995
2249
 
2250
+ }
2251
+ /* end @layer components */
1996
2252
  /**
1997
2253
  * MBA Design System - Arrow Buttons
1998
2254
  *
@@ -2004,7 +2260,6 @@ a:hover {
2004
2260
  * - background: Primary-500
2005
2261
  * - disabled: Grey-300
2006
2262
  */
2007
-
2008
2263
  @layer components {
2009
2264
 
2010
2265
  .mba-arrow {
@@ -2047,16 +2302,13 @@ a:hover {
2047
2302
  }
2048
2303
 
2049
2304
  }
2050
-
2051
2305
  /* end @layer components */
2052
-
2053
2306
  /**
2054
2307
  * MBA Design System - Radio & Checkbox
2055
2308
  *
2056
2309
  * Classes: .mba-radio, .mba-radio--pro, .mba-checkbox, .mba-checkbox--pro
2057
2310
  * Source: Design System Figma
2058
2311
  */
2059
-
2060
2312
  @layer components {
2061
2313
 
2062
2314
  /* ===========================================
@@ -2260,16 +2512,13 @@ a:hover {
2260
2512
  }
2261
2513
 
2262
2514
  }
2263
-
2264
2515
  /* end @layer components */
2265
-
2266
2516
  /**
2267
2517
  * MBA Design System - Pagination
2268
2518
  *
2269
2519
  * Composant de pagination pour la navigation entre pages
2270
2520
  * Source: Design System Figma
2271
2521
  */
2272
-
2273
2522
  @layer components {
2274
2523
 
2275
2524
  /* ===========================================
@@ -2438,17 +2687,40 @@ a:hover {
2438
2687
  cursor: default;
2439
2688
  }
2440
2689
 
2690
+ /* ===========================================
2691
+ DOTS - Variante « pilule extensible »
2692
+ Point actif allongé, inactifs courts (carousel).
2693
+ Actif: 72px primary-500 · inactif: 16px grey-100.
2694
+ =========================================== */
2695
+ .mba-dots--expand .mba-dot {
2696
+ width: var(--mba-space-sm); /* 16px (inactif) */
2697
+ background-color: var(--mba-color-grey-100);
2698
+ transition: width var(--mba-transition-base), background-color var(--mba-transition-base);
2441
2699
  }
2442
2700
 
2443
- /* end @layer components */
2701
+ .mba-dots--expand .mba-dot:hover:not(.is-active) {
2702
+ background-color: var(--mba-color-grey-300);
2703
+ }
2444
2704
 
2445
- /**
2446
- * MBA Design System - Inputs
2447
- *
2448
- * Classes: .mba-textarea, .mba-input, .mba-label
2449
- * Source: Design System Figma
2450
- */
2705
+ .mba-dots--expand .mba-dot.is-active {
2706
+ width: 4.5rem; /* 72px (actif) - valeur visuelle maquette (~71px) */
2707
+ background-color: var(--mba-color-primary-500);
2708
+ }
2451
2709
 
2710
+ @media (prefers-reduced-motion: reduce) {
2711
+ .mba-dots--expand .mba-dot {
2712
+ transition: none;
2713
+ }
2714
+ }
2715
+
2716
+ }
2717
+ /* end @layer components */
2718
+ /**
2719
+ * MBA Design System - Inputs
2720
+ *
2721
+ * Classes: .mba-textarea, .mba-input, .mba-label
2722
+ * Source: Design System Figma
2723
+ */
2452
2724
  @layer components {
2453
2725
 
2454
2726
  /* ===========================================
@@ -2880,6 +3152,14 @@ a:hover {
2880
3152
  margin-left: var(--mba-space-xs);
2881
3153
  }
2882
3154
 
3155
+ /* Variante icône EN TÊTE (à gauche du champ).
3156
+ L'icône précède l'<input> dans le DOM : on inverse la marge
3157
+ (margin-right au lieu de margin-left). Ex. barre de recherche « loupe ». */
3158
+ .mba-input-icon--leading .mba-input-icon__icon {
3159
+ margin-left: 0;
3160
+ margin-right: var(--mba-space-xs);
3161
+ }
3162
+
2883
3163
  /* Icon clickable (button) */
2884
3164
  button.mba-input-icon__icon {
2885
3165
  background: none;
@@ -2955,9 +3235,7 @@ button.mba-input-icon__icon:hover {
2955
3235
  }
2956
3236
 
2957
3237
  }
2958
-
2959
3238
  /* end @layer components */
2960
-
2961
3239
  /**
2962
3240
  * MBA Design System - Tabs
2963
3241
  *
@@ -2966,7 +3244,6 @@ button.mba-input-icon__icon:hover {
2966
3244
  * Couleurs: Primary 500 (MBA), Primary 900 (Partenaires)
2967
3245
  * Source: Design System Figma (Tabs - Lina-7347)
2968
3246
  */
2969
-
2970
3247
  @layer components {
2971
3248
 
2972
3249
  /* ===========================================
@@ -3055,9 +3332,7 @@ button.mba-input-icon__icon:hover {
3055
3332
  }
3056
3333
 
3057
3334
  }
3058
-
3059
3335
  /* @layer components */
3060
-
3061
3336
  /**
3062
3337
  * MBA Design System - Tags (Badges)
3063
3338
  *
@@ -3083,7 +3358,6 @@ button.mba-input-icon__icon:hover {
3083
3358
  * Note: fonds plus foncés que les pastels de base pour l'accessibilité.
3084
3359
  * Source: Design System Figma.
3085
3360
  */
3086
-
3087
3361
  @layer components {
3088
3362
 
3089
3363
  .mba-tag {
@@ -3177,16 +3451,13 @@ button.mba-input-icon__icon:hover {
3177
3451
  }
3178
3452
 
3179
3453
  }
3180
-
3181
3454
  /* end @layer components */
3182
-
3183
3455
  /**
3184
3456
  * MBA Design System - Header
3185
3457
  *
3186
3458
  * Navigation principale avec dropdown et version mobile
3187
3459
  * Source: Design System Figma
3188
3460
  */
3189
-
3190
3461
  @layer components {
3191
3462
 
3192
3463
  /* ===========================================
@@ -3862,9 +4133,7 @@ button.mba-input-icon__icon:hover {
3862
4133
  }
3863
4134
 
3864
4135
  }
3865
-
3866
4136
  /* end @layer components */
3867
-
3868
4137
  /**
3869
4138
  * MBA Design System - Wave
3870
4139
  *
@@ -3886,7 +4155,6 @@ button.mba-input-icon__icon:hover {
3886
4155
  * <div class="mba-wave mba-wave--lavender"></div>
3887
4156
  * <div class="mba-wave mba-wave--sm mba-wave--lavender mba-wave--top"></div>
3888
4157
  */
3889
-
3890
4158
  @layer components {
3891
4159
 
3892
4160
  .mba-wave {
@@ -3952,9 +4220,7 @@ button.mba-input-icon__icon:hover {
3952
4220
 
3953
4221
 
3954
4222
  }
3955
-
3956
4223
  /* end @layer components */
3957
-
3958
4224
  /**
3959
4225
  * MBA Design System - Section
3960
4226
  *
@@ -3982,7 +4248,6 @@ button.mba-input-icon__icon:hover {
3982
4248
  * ...
3983
4249
  * </section>
3984
4250
  */
3985
-
3986
4251
  @layer components {
3987
4252
 
3988
4253
  .mba-section {
@@ -4157,9 +4422,7 @@ button.mba-input-icon__icon:hover {
4157
4422
  }
4158
4423
 
4159
4424
  }
4160
-
4161
4425
  /* end @layer components */
4162
-
4163
4426
  /**
4164
4427
  * MBA Design System - Footer
4165
4428
  *
@@ -4178,7 +4441,6 @@ button.mba-input-icon__icon:hover {
4178
4441
  * Modificateurs:
4179
4442
  * - .mba-footer--pro - Version partenaire (primary-pro)
4180
4443
  */
4181
-
4182
4444
  @layer components {
4183
4445
 
4184
4446
  /* ===========================================
@@ -4566,13 +4828,170 @@ button.mba-input-icon__icon:hover {
4566
4828
  }
4567
4829
 
4568
4830
  }
4569
-
4570
4831
  /* end @layer components */
4571
-
4572
4832
  /* @import "./_forms.css"; */
4833
+ /**
4834
+ * MBA Design System - Alerts
4835
+ *
4836
+ * Alerte contextuelle : message d'information, de succès, d'avertissement ou
4837
+ * d'erreur. Différent de `.mba-feedback` (qui ne sert qu'à la validation de
4838
+ * champs de formulaire).
4839
+ *
4840
+ * Principe visuel (source Figma - « Recherche : détresse détectée ») :
4841
+ * - fond + bordure portent la couleur sémantique de la variante ;
4842
+ * - le texte reste neutre (titre grey-800, corps primary-900) pour la
4843
+ * lisibilité et le contraste ;
4844
+ * - l'icône porte l'accent de la variante.
4845
+ *
4846
+ * Variantes : --info, --success, --warning, --error.
4847
+ * Le « bandeau détresse » de la maquette = .mba-alert--warning (+ --dashed et
4848
+ * icône « boxed »), pas de variante « support » maison.
4849
+ *
4850
+ * Convention d'état :
4851
+ * - .is-hidden masque l'alerte (dismiss basculé par l'app, zéro JS dans le DS).
4852
+ *
4853
+ * Accessibilité (câblage markup, cf. story) :
4854
+ * - info / success : role="status" + aria-live="polite".
4855
+ * - warning / error : role="alert" + aria-live="assertive".
4856
+ * - bouton fermeture : aria-label="Fermer".
4857
+ *
4858
+ * Source: Design System Figma (node 4660-18800).
4859
+ */
4860
+ @layer components {
4861
+
4862
+ /* ===========================================
4863
+ CONTENEUR
4864
+ =========================================== */
4865
+ .mba-alert {
4866
+ display: flex;
4867
+ align-items: flex-start;
4868
+ gap: var(--mba-space-sm);
4869
+ padding: var(--mba-space-sm);
4870
+ border: 1px solid transparent;
4871
+ border-radius: var(--mba-radius-sm);
4872
+ background-color: var(--mba-color-grey-50);
4873
+ font-family: var(--mba-font-family-text);
4874
+ }
4875
+
4876
+ /* Bordure en pointillés (bandeau détresse) */
4877
+ .mba-alert--dashed {
4878
+ border-style: dashed;
4879
+ }
4880
+
4881
+ /* État masqué (dismiss géré par l'app) */
4882
+ .mba-alert.is-hidden {
4883
+ display: none;
4884
+ }
4885
+
4886
+ /* ===========================================
4887
+ ICÔNE
4888
+ =========================================== */
4889
+ .mba-alert__icon {
4890
+ display: inline-flex;
4891
+ align-items: center;
4892
+ justify-content: center;
4893
+ flex-shrink: 0;
4894
+ color: var(--mba-color-grey-800);
4895
+ }
4896
+
4897
+ /* Icône dans un chip blanc (bandeau détresse) */
4898
+ .mba-alert__icon--boxed {
4899
+ padding: var(--mba-space-xs);
4900
+ background-color: var(--mba-color-white);
4901
+ border-radius: var(--mba-radius-xs);
4902
+ }
4903
+
4904
+ /* ===========================================
4905
+ CONTENU
4906
+ =========================================== */
4907
+ .mba-alert__content {
4908
+ display: flex;
4909
+ flex-direction: column;
4910
+ gap: var(--mba-space-xs);
4911
+ flex: 1 1 0;
4912
+ min-width: 0;
4913
+ }
4914
+
4915
+ .mba-alert__title {
4916
+ margin: 0;
4917
+ font-size: var(--mba-font-size-xxs); /* 14px */
4918
+ font-weight: var(--mba-font-weight-bold);
4919
+ color: var(--mba-color-grey-800);
4920
+ line-height: normal;
4921
+ }
4922
+
4923
+ .mba-alert__text {
4924
+ margin: 0;
4925
+ font-size: var(--mba-font-size-xs); /* 16px */
4926
+ font-weight: var(--mba-font-weight-regular);
4927
+ color: var(--mba-color-primary-900);
4928
+ line-height: var(--mba-leading-snug);
4929
+ }
4573
4930
 
4574
- /* @import "./_alerts.css"; */
4931
+ /* ===========================================
4932
+ BOUTON FERMETURE (optionnel)
4933
+ =========================================== */
4934
+ .mba-alert__close {
4935
+ display: inline-flex;
4936
+ align-items: center;
4937
+ justify-content: center;
4938
+ flex-shrink: 0;
4939
+ margin-left: auto;
4940
+ padding: 0;
4941
+ border: none;
4942
+ background-color: transparent;
4943
+ color: var(--mba-color-grey-400);
4944
+ cursor: pointer;
4945
+ transition: color var(--mba-transition-base);
4946
+ }
4575
4947
 
4948
+ .mba-alert__close:hover {
4949
+ color: var(--mba-color-grey-800);
4950
+ }
4951
+
4952
+ .mba-alert__close:focus-visible {
4953
+ outline: none;
4954
+ border-radius: var(--mba-radius-2xs);
4955
+ box-shadow: var(--mba-focus-ring);
4956
+ }
4957
+
4958
+ /* ===========================================
4959
+ VARIANTES SÉMANTIQUES
4960
+ Fond = teinte claire ; bordure = teinte 400 ; icône = teinte 500.
4961
+ =========================================== */
4962
+ .mba-alert--info {
4963
+ background-color: var(--mba-color-info-50);
4964
+ border-color: var(--mba-color-info-400);
4965
+ }
4966
+ .mba-alert--info .mba-alert__icon {
4967
+ color: var(--mba-color-info-500);
4968
+ }
4969
+
4970
+ .mba-alert--success {
4971
+ background-color: var(--mba-color-success-100);
4972
+ border-color: var(--mba-color-success-400);
4973
+ }
4974
+ .mba-alert--success .mba-alert__icon {
4975
+ color: var(--mba-color-success-500);
4976
+ }
4977
+
4978
+ .mba-alert--warning {
4979
+ background-color: var(--mba-color-warning-50);
4980
+ border-color: var(--mba-color-warning-400);
4981
+ }
4982
+ .mba-alert--warning .mba-alert__icon {
4983
+ color: var(--mba-color-warning-500);
4984
+ }
4985
+
4986
+ .mba-alert--error {
4987
+ background-color: var(--mba-color-error-100);
4988
+ border-color: var(--mba-color-error-400);
4989
+ }
4990
+ .mba-alert--error .mba-alert__icon {
4991
+ color: var(--mba-color-error-500);
4992
+ }
4993
+
4994
+ }
4576
4995
  /**
4577
4996
  * MBA Design System - Accordion
4578
4997
  *
@@ -4581,7 +5000,6 @@ button.mba-input-icon__icon:hover {
4581
5000
  * - À partir de 5 items (ou si le contenu est trop long),
4582
5001
  * utiliser la variante scrollable pour afficher une scrollbar.
4583
5002
  */
4584
-
4585
5003
  @layer components {
4586
5004
 
4587
5005
  /* ===========================================
@@ -4848,39 +5266,301 @@ button.mba-input-icon__icon:hover {
4848
5266
  }
4849
5267
 
4850
5268
  }
5269
+ /**
5270
+ * MBA Design System - Carousel
5271
+ *
5272
+ * Carousel 100% CSS : défilement horizontal natif avec scroll-snap (swipe
5273
+ * tactile + molette + clavier), zéro JS dans le DS.
5274
+ * - .mba-carousel__track : piste flex scrollable, scroll-snap-type: x mandatory.
5275
+ * - .mba-carousel__slide : chaque diapo s'aligne au début (scroll-snap-align).
5276
+ * - .mba-carousel__controls : flèches rondes (précédent / suivant).
5277
+ * - Pagination : réutiliser .mba-dots / .mba-dot (_paging.css).
5278
+ *
5279
+ * Comportement (à la charge de l'app, zéro JS embarqué) :
5280
+ * - Le clic sur les flèches / points fait défiler la piste (scrollBy / scrollIntoView).
5281
+ * - L'app bascule .is-active sur le point courant et .is-disabled / [disabled]
5282
+ * sur la flèche en butée.
5283
+ *
5284
+ * Accessibilité (câblage markup, cf. story) :
5285
+ * - Conteneur : role="region" + aria-roledescription="carousel" + aria-label.
5286
+ * - Piste focusable au clavier (tabindex="0") pour le défilement clavier.
5287
+ * - Flèches : aria-label "Précédent" / "Suivant".
5288
+ *
5289
+ * Largeur des diapos : personnalisable via --mba-carousel-slide-width
5290
+ * (défaut 360px ; ex. 85% pour laisser deviner la diapo suivante en mobile).
5291
+ *
5292
+ * Source: Design System Figma (nodes 4660-19043 / 4660-19016).
5293
+ */
5294
+ @layer components {
4851
5295
 
4852
- /* @import "./_carousel.css"; */
5296
+ .mba-carousel {
5297
+ width: 100%;
5298
+ }
4853
5299
 
4854
- /* @import "./_navigation.css"; */
5300
+ /* ===========================================
5301
+ PISTE (scroll-snap horizontal)
5302
+ =========================================== */
5303
+ .mba-carousel__track {
5304
+ display: flex;
5305
+ gap: var(--mba-space-sm);
5306
+ overflow-x: auto;
5307
+ scroll-snap-type: x mandatory;
5308
+ scroll-behavior: smooth;
5309
+ /* Masquer la scrollbar sans bloquer le scroll clavier / tactile */
5310
+ scrollbar-width: none; /* Firefox */
5311
+ -ms-overflow-style: none; /* IE/Edge legacy */
5312
+ }
5313
+
5314
+ .mba-carousel__track::-webkit-scrollbar {
5315
+ display: none; /* WebKit */
5316
+ }
4855
5317
 
5318
+ .mba-carousel__slide {
5319
+ flex: 0 0 var(--mba-carousel-slide-width, 360px);
5320
+ max-width: 100%;
5321
+ scroll-snap-align: start;
5322
+ }
5323
+
5324
+ /* ===========================================
5325
+ PIED : pagination centrée + flèches à droite
5326
+ =========================================== */
5327
+ .mba-carousel__footer {
5328
+ position: relative;
5329
+ display: flex;
5330
+ align-items: center;
5331
+ justify-content: center;
5332
+ min-height: 32px;
5333
+ margin-top: var(--mba-space-md);
5334
+ }
5335
+
5336
+ .mba-carousel__controls {
5337
+ position: absolute;
5338
+ right: 0;
5339
+ display: inline-flex;
5340
+ align-items: center;
5341
+ gap: var(--mba-space-xs);
5342
+ }
5343
+
5344
+ /* ===========================================
5345
+ FLÈCHE (contrôle rond)
5346
+ =========================================== */
5347
+ .mba-carousel__control {
5348
+ display: inline-flex;
5349
+ align-items: center;
5350
+ justify-content: center;
5351
+ flex-shrink: 0;
5352
+ padding: var(--mba-space-xxs);
5353
+ border: none;
5354
+ border-radius: var(--mba-radius-full);
5355
+ background-color: var(--mba-color-primary-500);
5356
+ color: var(--mba-color-white);
5357
+ cursor: pointer;
5358
+ transition: background-color var(--mba-transition-base);
5359
+ }
5360
+
5361
+ .mba-carousel__control:hover:not(:disabled):not(.is-disabled) {
5362
+ background-color: var(--mba-color-primary-800);
5363
+ }
5364
+
5365
+ .mba-carousel__control:focus-visible {
5366
+ outline: none;
5367
+ box-shadow: var(--mba-focus-ring);
5368
+ }
5369
+
5370
+ /* Flèche en butée (début / fin de piste) */
5371
+ .mba-carousel__control:disabled,
5372
+ .mba-carousel__control.is-disabled {
5373
+ background-color: var(--mba-color-grey-100);
5374
+ cursor: not-allowed;
5375
+ }
5376
+
5377
+ /* ===========================================
5378
+ ACCESSIBILITÉ : mouvement réduit
5379
+ =========================================== */
5380
+ @media (prefers-reduced-motion: reduce) {
5381
+ .mba-carousel__track {
5382
+ scroll-behavior: auto;
5383
+ }
5384
+ }
5385
+
5386
+ }
5387
+ /**
5388
+ * MBA Design System - Navigation
5389
+ *
5390
+ * Fil d'Ariane (breadcrumb).
5391
+ * - Le premier niveau porte une icône « maison » (home) + libellé.
5392
+ * - Les séparateurs sont des chevrons décoratifs (keyboard_arrow_right).
5393
+ * - Les niveaux parents sont des liens neutres (grey-800) ; l'élément courant
5394
+ * est mis en avant en primary-500 et n'est pas cliquable.
5395
+ *
5396
+ * Accessibilité (câblage markup, cf. story) :
5397
+ * - Conteneur : <nav aria-label="Fil d'Ariane"> avec un <ol>.
5398
+ * - Élément courant : aria-current="page" (stylé via l'attribut).
5399
+ * - Séparateurs : aria-hidden="true".
5400
+ *
5401
+ * Source: Design System Figma (Breadcrumbs - Ma vie d'aidant, node 4660-18352).
5402
+ */
5403
+ @layer components {
5404
+
5405
+ /* ===========================================
5406
+ CONTENEUR
5407
+ =========================================== */
5408
+ .mba-breadcrumb {
5409
+ font-family: var(--mba-font-family-text);
5410
+ font-size: var(--mba-font-size-xxs); /* 14px */
5411
+ line-height: normal;
5412
+ }
5413
+
5414
+ /* ===========================================
5415
+ LISTE (<ol>)
5416
+ Gap uniforme de 4px entre chaque élément et séparateur.
5417
+ =========================================== */
5418
+ .mba-breadcrumb__list {
5419
+ display: flex;
5420
+ flex-wrap: wrap;
5421
+ align-items: center;
5422
+ gap: var(--mba-space-xxs); /* 4px */
5423
+ margin: 0;
5424
+ padding: 0;
5425
+ list-style: none;
5426
+ }
5427
+
5428
+ /* ===========================================
5429
+ ITEM (<li>)
5430
+ Contient le lien (ou l'élément courant) et son séparateur.
5431
+ =========================================== */
5432
+ .mba-breadcrumb__item {
5433
+ display: inline-flex;
5434
+ align-items: center;
5435
+ gap: var(--mba-space-xxs); /* 4px */
5436
+ min-width: 0;
5437
+ }
5438
+
5439
+ /* ===========================================
5440
+ LIEN (niveaux parents)
5441
+ Neutre grey-800, hover primary-800 + soulignement.
5442
+ =========================================== */
5443
+ .mba-breadcrumb__link {
5444
+ display: inline-flex;
5445
+ align-items: center;
5446
+ gap: var(--mba-space-xxs); /* 4px : icône home + libellé */
5447
+ min-width: 0;
5448
+ color: var(--mba-color-grey-800);
5449
+ font-weight: var(--mba-font-weight-semibold);
5450
+ text-decoration: none;
5451
+ transition: color var(--mba-transition-base);
5452
+ }
5453
+
5454
+ .mba-breadcrumb__link:hover {
5455
+ color: var(--mba-color-primary-800);
5456
+ text-decoration: underline;
5457
+ }
5458
+
5459
+ .mba-breadcrumb__link:focus-visible {
5460
+ outline: none;
5461
+ border-radius: var(--mba-radius-2xs);
5462
+ box-shadow: var(--mba-focus-ring);
5463
+ }
5464
+
5465
+ /* Libellé tronqué proprement si trop long (mobile) */
5466
+ .mba-breadcrumb__label {
5467
+ overflow: hidden;
5468
+ text-overflow: ellipsis;
5469
+ white-space: nowrap;
5470
+ }
5471
+
5472
+ /* Icône « maison » : hérite de la couleur du lien (grey-800) */
5473
+ .mba-breadcrumb__home-icon {
5474
+ flex-shrink: 0;
5475
+ color: inherit;
5476
+ }
5477
+
5478
+ /* ===========================================
5479
+ SÉPARATEUR (chevron décoratif)
5480
+ =========================================== */
5481
+ .mba-breadcrumb__separator {
5482
+ flex-shrink: 0;
5483
+ color: var(--mba-color-grey-400);
5484
+ user-select: none;
5485
+ }
5486
+
5487
+ /* ===========================================
5488
+ ÉLÉMENT COURANT (page active, non cliquable)
5489
+ Accent primary-500. Stylé via la classe ou l'attribut aria-current.
5490
+ =========================================== */
5491
+ .mba-breadcrumb__current,
5492
+ .mba-breadcrumb [aria-current="page"] {
5493
+ color: var(--mba-color-primary-500);
5494
+ font-weight: var(--mba-font-weight-semibold);
5495
+ overflow: hidden;
5496
+ text-overflow: ellipsis;
5497
+ white-space: nowrap;
5498
+ }
5499
+
5500
+ /* ===========================================
5501
+ FIL REPLIABLE (ellipsis)
5502
+ Pour les fils longs / mobile : les niveaux intermédiaires sont masqués
5503
+ derrière un bouton « … » qui les déplie.
5504
+ Comportement (masquage des items, bascule aria-expanded) piloté par l'app —
5505
+ zéro JS dans le DS. Style du bouton aligné sur .mba-breadcrumb__link.
5506
+ À câbler : <button class="mba-breadcrumb__toggle" aria-expanded="false"
5507
+ aria-label="Afficher le fil d'Ariane complet">…</button>
5508
+ =========================================== */
5509
+ .mba-breadcrumb__toggle {
5510
+ display: inline-flex;
5511
+ align-items: center;
5512
+ justify-content: center;
5513
+ min-width: 24px;
5514
+ padding: 0 var(--mba-space-xxs);
5515
+ border: none;
5516
+ background: transparent;
5517
+ color: var(--mba-color-grey-800);
5518
+ font-family: inherit;
5519
+ font-size: inherit;
5520
+ font-weight: var(--mba-font-weight-semibold);
5521
+ line-height: normal;
5522
+ cursor: pointer;
5523
+ transition: color var(--mba-transition-base);
5524
+ }
5525
+
5526
+ .mba-breadcrumb__toggle:hover {
5527
+ color: var(--mba-color-primary-800);
5528
+ }
5529
+
5530
+ .mba-breadcrumb__toggle:focus-visible {
5531
+ outline: none;
5532
+ border-radius: var(--mba-radius-2xs);
5533
+ box-shadow: var(--mba-focus-ring);
5534
+ }
5535
+
5536
+ /* Item masqué tant que le fil est replié (bascule par l'app). */
5537
+ .mba-breadcrumb__item.is-hidden {
5538
+ display: none;
5539
+ }
5540
+
5541
+ }
4856
5542
  /**
4857
5543
  * MBA Design System - Utilities
4858
5544
  *
4859
5545
  * Classes utilitaires complémentaires à Tailwind
4860
5546
  */
4861
-
4862
5547
  /* ===========================================
4863
5548
  FONT SIZE UTILITIES (MBA custom scale)
4864
5549
  Tailwind génère xs, sm, base, lg, xl, 2xl...
4865
5550
  On ajoute nos tailles custom : xxs, md, xxl
4866
5551
  =========================================== */
4867
-
4868
5552
  .text-xxs {
4869
5553
  font-size: var(--mba-font-size-xxs);
4870
5554
  }
4871
-
4872
5555
  .text-md {
4873
5556
  font-size: var(--mba-font-size-md);
4874
5557
  }
4875
-
4876
5558
  .text-xxl {
4877
5559
  font-size: var(--mba-font-size-xxl);
4878
5560
  }
4879
-
4880
5561
  /* ===========================================
4881
5562
  ACCESSIBILITY UTILITIES
4882
5563
  =========================================== */
4883
-
4884
5564
  /* Reduced motion - Respect user preference for reduced animations
4885
5565
  Triggered when user enables "Reduce motion" in system settings
4886
5566
  (macOS, Windows, iOS, Android)
@@ -4892,7 +5572,6 @@ button.mba-input-icon__icon:hover {
4892
5572
 
4893
5573
  WCAG 2.1 Success Criterion 2.3.3 (AAA)
4894
5574
  */
4895
-
4896
5575
  @media (prefers-reduced-motion: reduce) {
4897
5576
  *,
4898
5577
  *::before,
@@ -4903,9 +5582,7 @@ button.mba-input-icon__icon:hover {
4903
5582
  scroll-behavior: auto !important;
4904
5583
  }
4905
5584
  }
4906
-
4907
5585
  /* Visually hidden (accessible) */
4908
-
4909
5586
  .mba-sr-only {
4910
5587
  position: absolute;
4911
5588
  width: 1px;
@@ -4917,9 +5594,7 @@ button.mba-input-icon__icon:hover {
4917
5594
  white-space: nowrap;
4918
5595
  border-width: 0;
4919
5596
  }
4920
-
4921
5597
  /* Not visually hidden */
4922
-
4923
5598
  .mba-not-sr-only {
4924
5599
  position: static;
4925
5600
  width: auto;
@@ -4930,43 +5605,32 @@ button.mba-input-icon__icon:hover {
4930
5605
  clip: auto;
4931
5606
  white-space: normal;
4932
5607
  }
4933
-
4934
5608
  /* ===========================================
4935
5609
  VISIBILITY UTILITIES
4936
5610
  Override pour garantir le masquage même avec
4937
5611
  les composants MBA (display: inline-flex, etc.)
4938
5612
  =========================================== */
4939
-
4940
5613
  /* Hidden - force display: none sur tous les composants */
4941
-
4942
5614
  .hidden {
4943
5615
  display: none !important;
4944
5616
  }
4945
-
4946
5617
  /* Visible utilities */
4947
-
4948
5618
  .visible {
4949
5619
  visibility: visible;
4950
5620
  }
4951
-
4952
5621
  .invisible {
4953
5622
  visibility: hidden;
4954
5623
  }
4955
-
4956
5624
  /* ===========================================
4957
5625
  GRADIENT UTILITIES
4958
5626
  =========================================== */
4959
-
4960
5627
  .bg-gradient-sunset {
4961
5628
  background: var(--mba-gradient-sunset);
4962
5629
  }
4963
-
4964
5630
  /* Border gradient (hover reveal) — applique un contour gradient sunset via ::before */
4965
-
4966
5631
  .mba-border-gradient {
4967
5632
  position: relative;
4968
5633
  }
4969
-
4970
5634
  .mba-border-gradient::before {
4971
5635
  content: "";
4972
5636
  position: absolute;
@@ -4983,7 +5647,6 @@ button.mba-input-icon__icon:hover {
4983
5647
  opacity: 0;
4984
5648
  transition: opacity var(--mba-transition-base);
4985
5649
  }
4986
-
4987
5650
  .mba-border-gradient:hover::before,
4988
5651
  .mba-border-gradient--visible::before {
4989
5652
  opacity: 1;