@maboussoleaidant/design-system 0.1.3 → 0.1.5

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.
@@ -584,7 +584,7 @@
584
584
  font-style: normal;
585
585
  font-weight: 100 700;
586
586
  font-display: block;
587
- src: url('/fonts/MaterialSymbolsRounded.woff2') format('woff2');
587
+ src: url('../assets/fonts/MaterialSymbolsRounded.woff2') format('woff2');
588
588
  }
589
589
 
590
590
  /* ===========================================
@@ -1031,7 +1031,7 @@ a:hover {
1031
1031
 
1032
1032
  .mba-btn:disabled,
1033
1033
  .mba-btn.is-disabled {
1034
- background-color: var(--mba-color-grey-100);
1034
+ background-color: var(--mba-color-grey-50);
1035
1035
  color: var(--mba-color-grey-400);
1036
1036
  border-color: transparent;
1037
1037
  cursor: not-allowed;
@@ -1040,6 +1040,7 @@ a:hover {
1040
1040
 
1041
1041
  /* ===========================================
1042
1042
  SECONDARY BUTTON (Large/Default)
1043
+ height: 38px, padding: 8px 16px, gap: 8px
1043
1044
  =========================================== */
1044
1045
 
1045
1046
  .mba-btn-secondary {
@@ -1078,7 +1079,7 @@ a:hover {
1078
1079
 
1079
1080
  .mba-btn-secondary:disabled,
1080
1081
  .mba-btn-secondary.is-disabled {
1081
- background-color: var(--mba-color-grey-100);
1082
+ background-color: var(--mba-color-grey-50);
1082
1083
  color: var(--mba-color-grey-400);
1083
1084
  border-color: var(--mba-color-grey-100);
1084
1085
  cursor: not-allowed;
@@ -1086,390 +1087,1625 @@ a:hover {
1086
1087
  }
1087
1088
 
1088
1089
  /* ===========================================
1089
- SMALL BUTTON
1090
- padding: 4px 8px, gap: 8px
1090
+ TERTIARY BUTTON (Large/Default)
1091
+ height: 38px, padding: 8px 16px, gap: 8px
1091
1092
  =========================================== */
1092
1093
 
1093
- .mba-btn-sm {
1094
- height: auto;
1095
- padding: var(--mba-space-xxs) var(--mba-space-xs);
1094
+ .mba-btn-tertiary {
1095
+ display: inline-flex;
1096
+ height: 38px;
1097
+ padding: var(--mba-space-xs) var(--mba-space-sm);
1098
+ justify-content: center;
1099
+ align-items: center;
1096
1100
  gap: var(--mba-space-xs);
1097
- font-size: var(--mba-font-size-xxs);
1101
+ font-family: var(--mba-font-family-text);
1102
+ font-size: var(--mba-font-size-xs);
1103
+ font-weight: var(--mba-font-weight-semibold);
1104
+ line-height: var(--mba-leading-snug);
1105
+ text-decoration: none;
1106
+ border: none;
1107
+ border-radius: var(--mba-radius-xs);
1108
+ cursor: pointer;
1109
+ transition: all 0.25s ease-in-out;
1110
+ user-select: none;
1111
+ white-space: nowrap;
1112
+
1113
+ background-color: var(--mba-color-white);
1114
+ color: var(--mba-color-primary-500);
1115
+ }
1116
+
1117
+ .mba-btn-tertiary:hover:not(:disabled):not(.is-disabled) {
1118
+ background-color: var(--mba-color-primary-50);
1119
+ color: var(--mba-color-primary-500);
1120
+ }
1121
+
1122
+ .mba-btn-tertiary:focus {
1123
+ outline: none;
1124
+ box-shadow: var(--mba-focus-ring);
1125
+ }
1126
+
1127
+ .mba-btn-tertiary:disabled,
1128
+ .mba-btn-tertiary.is-disabled {
1129
+ background-color: var(--mba-color-grey-50);
1130
+ color: var(--mba-color-grey-400);
1131
+ cursor: not-allowed;
1132
+ pointer-events: none;
1098
1133
  }
1099
1134
 
1100
1135
  /* ===========================================
1101
- ICON BUTTON
1136
+ INLINE BUTTON
1137
+ height: 24px, padding: 8px 16px, gap: 4px
1102
1138
  =========================================== */
1103
1139
 
1104
- .mba-btn-icon {
1140
+ .mba-btn-inline {
1105
1141
  display: inline-flex;
1106
- align-items: center;
1142
+ height: 24px;
1143
+ padding: var(--mba-space-xs) var(--mba-space-sm);
1107
1144
  justify-content: center;
1145
+ align-items: center;
1146
+ gap: var(--mba-space-xxs);
1147
+ font-family: var(--mba-font-family-text);
1148
+ font-size: var(--mba-font-size-xs);
1149
+ font-weight: var(--mba-font-weight-semibold);
1150
+ line-height: var(--mba-leading-snug);
1151
+ text-decoration: underline;
1152
+ border: none;
1153
+ border-radius: var(--mba-radius-xs);
1154
+ cursor: pointer;
1155
+ transition: all 0.25s ease-in-out;
1156
+ user-select: none;
1157
+ white-space: nowrap;
1158
+
1159
+ background-color: var(--mba-color-white);
1160
+ color: var(--mba-color-primary-500);
1108
1161
  }
1109
1162
 
1110
- .mba-btn-icon i,
1111
- .mba-btn-icon svg {
1112
- font-size: 1rem;
1113
- width: 1rem;
1114
- height: 1rem;
1163
+ .mba-btn-inline:hover:not(:disabled):not(.is-disabled):not(.is-error) {
1164
+ background-color: var(--mba-color-white);
1165
+ color: var(--mba-color-primary-800);
1166
+ text-decoration: underline;
1115
1167
  }
1116
1168
 
1117
- /* Arrow forward icon alignment */
1169
+ .mba-btn-inline:focus {
1170
+ outline: none;
1171
+ box-shadow: var(--mba-focus-ring);
1172
+ }
1118
1173
 
1119
- .mba-btn .arrow-forward,
1120
- .mba-btn-secondary .arrow-forward {
1121
- vertical-align: middle;
1174
+ .mba-btn-inline:disabled,
1175
+ .mba-btn-inline.is-disabled {
1176
+ background-color: var(--mba-color-white);
1177
+ color: var(--mba-color-grey-400);
1178
+ text-decoration: underline;
1179
+ cursor: not-allowed;
1180
+ pointer-events: none;
1181
+ }
1182
+
1183
+ /* Alert-Error state */
1184
+
1185
+ .mba-btn-inline.is-error {
1186
+ background-color: var(--mba-color-white);
1187
+ color: var(--mba-color-error-500);
1188
+ text-decoration: underline;
1122
1189
  }
1123
1190
 
1124
1191
  /* ===========================================
1125
- MODIFIERS
1192
+ LIGHT BUTTON (Large/Default)
1193
+ height: 30px, padding: 4px 12px, gap: 4px
1126
1194
  =========================================== */
1127
1195
 
1128
- /* Full width */
1196
+ .mba-btn-light {
1197
+ display: inline-flex;
1198
+ height: 30px;
1199
+ padding: var(--mba-space-xxs) 12px;
1200
+ justify-content: center;
1201
+ align-items: center;
1202
+ gap: var(--mba-space-xxs);
1203
+ font-family: var(--mba-font-family-text);
1204
+ font-size: var(--mba-font-size-xs);
1205
+ font-weight: var(--mba-font-weight-semibold);
1206
+ line-height: var(--mba-leading-snug);
1207
+ text-decoration: none;
1208
+ border: 1.5px solid var(--mba-color-primary-400);
1209
+ border-radius: var(--mba-radius-sm);
1210
+ cursor: pointer;
1211
+ transition: all 0.25s ease-in-out;
1212
+ user-select: none;
1213
+ white-space: nowrap;
1129
1214
 
1130
- .mba-btn-block {
1131
- display: block;
1132
- width: 100%;
1133
- text-align: center;
1215
+ background-color: var(--mba-color-white);
1216
+ color: var(--mba-color-primary-900);
1134
1217
  }
1135
1218
 
1136
- /* ===========================================
1137
- RESPONSIVE (full width on mobile)
1138
- =========================================== */
1219
+ .mba-btn-light:hover:not(:disabled):not(.is-disabled) {
1220
+ background-color: var(--mba-color-white);
1221
+ color: var(--mba-color-primary-900);
1222
+ border-color: var(--mba-color-primary-500);
1223
+ text-decoration: underline;
1224
+ }
1139
1225
 
1140
- @media (max-width: 767px) {
1141
- .mba-btn,
1142
- .mba-btn-secondary {
1143
- display: flex;
1144
- width: 100%;
1145
- max-width: 100%;
1146
- }
1226
+ .mba-btn-light:focus {
1227
+ outline: none;
1228
+ box-shadow: var(--mba-focus-ring);
1147
1229
  }
1148
1230
 
1149
- /**
1150
- * MBA Design System - Cards
1151
- *
1152
- * Classes: .mba-card, .mba-card--sm, .mba-card-grid
1153
- * Source: Design System Figma
1154
- */
1231
+ .mba-btn-light:disabled,
1232
+ .mba-btn-light.is-disabled {
1233
+ background-color: var(--mba-color-white);
1234
+ color: var(--mba-color-grey-400);
1235
+ border-color: var(--mba-color-grey-100);
1236
+ cursor: not-allowed;
1237
+ pointer-events: none;
1238
+ }
1155
1239
 
1156
1240
  /* ===========================================
1157
- BASE CARD (Large / Default)
1158
- padding: 24px (MD), border-radius: 16px (SM)
1241
+ ANNUAIRE BUTTON (Large/Default)
1242
+ height: 38px, padding: 8px 16px, gap: 8px
1159
1243
  =========================================== */
1160
1244
 
1161
- .mba-card {
1162
- display: flex;
1163
- flex-direction: column;
1164
- padding: var(--mba-space-md);
1165
- border-radius: var(--mba-radius-sm);
1166
- background-color: var(--mba-color-beige);
1167
- border: 2px solid transparent;
1168
- transition: border-color 0.25s ease-in-out;
1245
+ .mba-btn-annuaire {
1246
+ display: inline-flex;
1247
+ height: 38px;
1248
+ padding: var(--mba-space-xs) var(--mba-space-sm);
1249
+ justify-content: center;
1250
+ align-items: center;
1251
+ gap: var(--mba-space-xs);
1252
+ font-family: var(--mba-font-family-text);
1253
+ font-size: var(--mba-font-size-xs);
1254
+ font-weight: var(--mba-font-weight-semibold);
1255
+ line-height: var(--mba-leading-snug);
1256
+ text-decoration: none;
1257
+ border: 1px solid var(--mba-color-grey-100);
1258
+ border-radius: var(--mba-radius-xs);
1169
1259
  cursor: pointer;
1260
+ transition: all 0.25s ease-in-out;
1261
+ user-select: none;
1262
+ white-space: nowrap;
1263
+
1264
+ background-color: var(--mba-color-white);
1265
+ color: var(--mba-color-primary-900);
1170
1266
  }
1171
1267
 
1172
- .mba-card:hover {
1268
+ .mba-btn-annuaire:hover:not(:disabled):not(.is-disabled) {
1269
+ background-color: var(--mba-color-white);
1270
+ color: var(--mba-color-primary-900);
1173
1271
  border-color: var(--mba-color-primary-500);
1174
1272
  }
1175
1273
 
1274
+ .mba-btn-annuaire:focus {
1275
+ outline: none;
1276
+ box-shadow: var(--mba-focus-ring);
1277
+ }
1278
+
1279
+ .mba-btn-annuaire:disabled,
1280
+ .mba-btn-annuaire.is-disabled {
1281
+ background-color: var(--mba-color-white);
1282
+ color: var(--mba-color-grey-400);
1283
+ border-color: var(--mba-color-grey-100);
1284
+ cursor: not-allowed;
1285
+ pointer-events: none;
1286
+ }
1287
+
1176
1288
  /* ===========================================
1177
- SMALL CARD
1289
+ PIN BUTTON
1290
+ width: 40px, height: 40px, icon: 20px
1178
1291
  =========================================== */
1179
1292
 
1180
- .mba-card--sm {
1181
- padding: var(--mba-space-sm);
1293
+ .mba-btn-pin {
1294
+ display: inline-flex;
1295
+ width: 40px;
1296
+ height: 40px;
1297
+ padding: 0;
1298
+ justify-content: center;
1299
+ align-items: center;
1300
+ border: 1px solid var(--mba-color-primary-500);
1301
+ border-radius: 50%;
1302
+ cursor: pointer;
1303
+ transition: all 0.25s ease-in-out;
1304
+ user-select: none;
1305
+
1306
+ background-color: var(--mba-color-white);
1307
+ color: var(--mba-color-primary-500);
1308
+ }
1309
+
1310
+ .mba-btn-pin .mba-icon {
1311
+ font-size: 20px;
1312
+ width: 20px;
1313
+ height: 20px;
1314
+ }
1315
+
1316
+ .mba-btn-pin:focus {
1317
+ outline: none;
1318
+ box-shadow: var(--mba-focus-ring);
1319
+ }
1320
+
1321
+ /* Deja-vu state */
1322
+
1323
+ .mba-btn-pin.is-deja-vu {
1324
+ border-color: var(--mba-color-grey-300);
1325
+ background-color: var(--mba-color-grey-50);
1326
+ color: var(--mba-color-grey-300);
1327
+ }
1328
+
1329
+ /* Activated state */
1330
+
1331
+ .mba-btn-pin.is-activated {
1332
+ border-color: var(--mba-color-primary-500);
1333
+ background-color: var(--mba-color-primary-500);
1334
+ color: var(--mba-color-white);
1335
+ }
1336
+
1337
+ .mba-btn-pin.is-activated .mba-icon {
1338
+ color: var(--mba-color-white);
1339
+ }
1340
+
1341
+ .mba-btn-pin:disabled,
1342
+ .mba-btn-pin.is-disabled {
1343
+ opacity: 0.5;
1344
+ cursor: not-allowed;
1345
+ pointer-events: none;
1182
1346
  }
1183
1347
 
1184
1348
  /* ===========================================
1185
- CARD PARTS
1349
+ ICON BUTTON
1350
+ width: 24px, height: 24px, icon: 16px
1186
1351
  =========================================== */
1187
1352
 
1188
- .mba-card__header {
1189
- display: flex;
1190
- justify-content: space-between;
1353
+ .mba-btn-icon-only {
1354
+ display: inline-flex;
1355
+ width: 24px;
1356
+ height: 24px;
1357
+ padding: 0;
1358
+ justify-content: center;
1191
1359
  align-items: center;
1192
- gap: var(--mba-space-sm);
1360
+ border-radius: var(--mba-radius-xs);
1361
+ cursor: pointer;
1362
+ transition: all 0.25s ease-in-out;
1363
+ user-select: none;
1364
+ border: 1px solid var(--mba-color-black);
1365
+ background-color: var(--mba-color-white);
1366
+ color: var(--mba-color-black);
1193
1367
  }
1194
1368
 
1195
- .mba-card__content {
1196
- flex: 1;
1369
+ .mba-btn-icon-only .mba-icon {
1370
+ font-size: 16px;
1371
+ width: 16px;
1372
+ height: 16px;
1197
1373
  }
1198
1374
 
1199
- .mba-card__title {
1200
- font-family: var(--mba-font-family-text);
1201
- font-size: var(--mba-font-size-sm);
1202
- font-weight: var(--mba-font-weight-bold);
1203
- color: var(--mba-color-primary-800);
1204
- margin: 0 0 var(--mba-space-xs);
1375
+ .mba-btn-icon-only:hover:not(:disabled):not(.is-disabled):not(.is-activated):not(.is-alert) {
1376
+ border-color: var(--mba-color-primary-500);
1377
+ color: var(--mba-color-primary-500);
1205
1378
  }
1206
1379
 
1207
- .mba-card__text {
1208
- font-family: var(--mba-font-family-text);
1209
- font-size: var(--mba-font-size-xs);
1210
- font-weight: var(--mba-font-weight-regular);
1211
- color: var(--mba-color-text);
1212
- line-height: var(--mba-leading-snug);
1213
- margin: 0;
1380
+ .mba-btn-icon-only:focus {
1381
+ outline: none;
1382
+ box-shadow: var(--mba-focus-ring);
1214
1383
  }
1215
1384
 
1216
- .mba-card__icon {
1217
- flex-shrink: 0;
1385
+ /* Activated state */
1386
+
1387
+ .mba-btn-icon-only.is-activated {
1388
+ border-color: var(--mba-color-primary-500);
1389
+ background-color: var(--mba-color-white);
1218
1390
  color: var(--mba-color-primary-500);
1219
- font-size: 24px;
1220
- transition: transform 0.2s ease;
1221
1391
  }
1222
1392
 
1223
- .mba-card__icon svg {
1224
- width: 24px;
1225
- height: 24px;
1393
+ .mba-btn-icon-only.is-activated:hover:not(:disabled):not(.is-disabled) {
1394
+ border-color: var(--mba-color-primary-500);
1395
+ color: var(--mba-color-primary-500);
1396
+ }
1397
+
1398
+ /* Disabled state */
1399
+
1400
+ .mba-btn-icon-only:disabled,
1401
+ .mba-btn-icon-only.is-disabled {
1402
+ border-color: var(--mba-color-grey-300);
1403
+ background-color: var(--mba-color-white);
1404
+ color: var(--mba-color-grey-300);
1405
+ cursor: not-allowed;
1406
+ pointer-events: none;
1407
+ }
1408
+
1409
+ /* Alert state */
1410
+
1411
+ .mba-btn-icon-only.is-alert {
1412
+ border-color: var(--mba-color-error-500);
1413
+ background-color: var(--mba-color-white);
1414
+ color: var(--mba-color-error-500);
1415
+ }
1416
+
1417
+ .mba-btn-icon-only.is-alert:hover:not(:disabled):not(.is-disabled) {
1418
+ border-color: var(--mba-color-error-500);
1419
+ color: var(--mba-color-error-500);
1420
+ }
1421
+
1422
+ /* ===========================================
1423
+ SMALL BUTTON
1424
+ padding: 4px 8px, gap: 8px
1425
+ =========================================== */
1426
+
1427
+ .mba-btn-sm {
1428
+ height: auto;
1429
+ padding: var(--mba-space-xxs) var(--mba-space-xs);
1430
+ gap: var(--mba-space-xs);
1431
+ font-size: var(--mba-font-size-xxs);
1432
+ }
1433
+
1434
+ /* ===========================================
1435
+ ICON ALIGNMENT
1436
+ =========================================== */
1437
+
1438
+ .mba-btn-icon-only i,
1439
+ .mba-btn-icon-only svg,
1440
+ .mba-btn i,
1441
+ .mba-btn svg {
1442
+ font-size: 1rem;
1443
+ width: 1rem;
1444
+ height: 1rem;
1445
+ }
1446
+
1447
+ /* Arrow forward icon alignment */
1448
+
1449
+ .mba-btn .arrow-forward,
1450
+ .mba-btn-secondary .arrow-forward {
1451
+ vertical-align: middle;
1452
+ }
1453
+
1454
+ /* ===========================================
1455
+ MODIFIERS
1456
+ =========================================== */
1457
+
1458
+ /* Full width */
1459
+
1460
+ .mba-btn-block {
1461
+ display: block;
1462
+ width: 100%;
1463
+ text-align: center;
1464
+ }
1465
+
1466
+ /* ===========================================
1467
+ RESPONSIVE (full width on mobile)
1468
+ =========================================== */
1469
+
1470
+ @media (max-width: 767px) {
1471
+ .mba-btn,
1472
+ .mba-btn-secondary {
1473
+ display: flex;
1474
+ width: 100%;
1475
+ max-width: 100%;
1476
+ }
1477
+ }
1478
+
1479
+ /**
1480
+ * MBA Design System - Cards
1481
+ *
1482
+ * Classes: .mba-card, .mba-card--sm, .mba-card-grid
1483
+ * Source: Design System Figma
1484
+ */
1485
+
1486
+ /* ===========================================
1487
+ BASE CARD (Large / Default)
1488
+ padding: 24px (MD), border-radius: 16px (SM)
1489
+ =========================================== */
1490
+
1491
+ .mba-card {
1492
+ display: flex;
1493
+ flex-direction: column;
1494
+ padding: var(--mba-space-md);
1495
+ border-radius: var(--mba-radius-sm);
1496
+ background-color: var(--mba-color-beige);
1497
+ border: 2px solid transparent;
1498
+ transition: border-color 0.25s ease-in-out;
1499
+ cursor: pointer;
1500
+ }
1501
+
1502
+ .mba-card:hover {
1503
+ border-color: var(--mba-color-primary-500);
1504
+ }
1505
+
1506
+ /* ===========================================
1507
+ SMALL CARD
1508
+ =========================================== */
1509
+
1510
+ .mba-card--sm {
1511
+ padding: var(--mba-space-sm);
1512
+ }
1513
+
1514
+ /* ===========================================
1515
+ CARD PARTS
1516
+ =========================================== */
1517
+
1518
+ .mba-card__header {
1519
+ display: flex;
1520
+ justify-content: space-between;
1521
+ align-items: center;
1522
+ gap: var(--mba-space-sm);
1523
+ }
1524
+
1525
+ .mba-card__content {
1526
+ flex: 1;
1527
+ }
1528
+
1529
+ .mba-card__title {
1530
+ font-family: var(--mba-font-family-text);
1531
+ font-size: var(--mba-font-size-sm);
1532
+ font-weight: var(--mba-font-weight-bold);
1533
+ color: var(--mba-color-primary-800);
1534
+ margin: 0 0 var(--mba-space-xs);
1535
+ }
1536
+
1537
+ .mba-card__text {
1538
+ font-family: var(--mba-font-family-text);
1539
+ font-size: var(--mba-font-size-xs);
1540
+ font-weight: var(--mba-font-weight-regular);
1541
+ color: var(--mba-color-text);
1542
+ line-height: var(--mba-leading-snug);
1543
+ margin: 0;
1544
+ }
1545
+
1546
+ .mba-card__icon {
1547
+ flex-shrink: 0;
1548
+ color: var(--mba-color-primary-500);
1549
+ font-size: 24px;
1550
+ transition: transform 0.2s ease;
1551
+ }
1552
+
1553
+ .mba-card__icon svg {
1554
+ width: 24px;
1555
+ height: 24px;
1556
+ }
1557
+
1558
+ .mba-card:hover .mba-card__icon {
1559
+ transform: translateX(4px);
1560
+ }
1561
+
1562
+ /* ===========================================
1563
+ CARD GRID
1564
+ =========================================== */
1565
+
1566
+ .mba-card-grid {
1567
+ display: grid;
1568
+ gap: var(--mba-space-md);
1569
+ grid-template-columns: 1fr;
1570
+ width: 100%;
1571
+ }
1572
+
1573
+ @media (min-width: 600px) {
1574
+ .mba-card-grid {
1575
+ grid-template-columns: repeat(2, 1fr);
1576
+ }
1577
+ }
1578
+
1579
+ @media (min-width: 900px) {
1580
+ .mba-card-grid {
1581
+ grid-template-columns: repeat(3, 1fr);
1582
+ }
1583
+ }
1584
+
1585
+ /* ===========================================
1586
+ CARD VARIANTS
1587
+ =========================================== */
1588
+
1589
+ /* White background */
1590
+
1591
+ .mba-card--white {
1592
+ background-color: var(--mba-color-white);
1593
+ }
1594
+
1595
+ /* Non-interactive (no hover) */
1596
+
1597
+ .mba-card--static {
1598
+ cursor: default;
1599
+ }
1600
+
1601
+ .mba-card--static:hover {
1602
+ border-color: transparent;
1603
+ }
1604
+
1605
+ /* ===========================================
1606
+ CAROUSEL CARD (Testimonial)
1607
+ Bordure gradient sunset
1608
+ =========================================== */
1609
+
1610
+ .mba-carousel-card {
1611
+ position: relative;
1612
+ display: flex;
1613
+ flex-direction: column;
1614
+ padding: var(--mba-space-md);
1615
+ background-color: var(--mba-color-white);
1616
+ border-radius: 24px 24px 8px 24px;
1617
+ width: 453px;
1618
+ height: 278px;
1619
+ box-sizing: border-box;
1620
+ }
1621
+
1622
+ .mba-carousel-card::before {
1623
+ content: "";
1624
+ position: absolute;
1625
+ inset: 0;
1626
+ padding: 1px;
1627
+ background: var(--mba-gradient-sunset);
1628
+ border-radius: 24px 24px 8px 24px;
1629
+ mask:
1630
+ linear-gradient(#fff 0 0) content-box,
1631
+ linear-gradient(#fff 0 0);
1632
+ mask-composite: exclude;
1633
+ -webkit-mask-composite: xor;
1634
+ pointer-events: none;
1635
+ }
1636
+
1637
+ .mba-carousel-card__title {
1638
+ font-family: var(--mba-font-family-text);
1639
+ font-size: var(--mba-font-size-sm);
1640
+ font-weight: var(--mba-font-weight-bold);
1641
+ color: var(--mba-color-primary-800);
1642
+ margin: 0;
1643
+ }
1644
+
1645
+ .mba-carousel-card__quote {
1646
+ flex: 1;
1647
+ margin-top: var(--mba-space-sm);
1648
+ font-family: var(--mba-font-family-text);
1649
+ font-size: var(--mba-font-size-xs);
1650
+ font-weight: var(--mba-font-weight-regular);
1651
+ color: var(--mba-color-primary-800);
1652
+ }
1653
+
1654
+ .mba-carousel-card__author {
1655
+ font-family: var(--mba-font-family-text);
1656
+ font-size: var(--mba-font-size-xxs);
1657
+ font-weight: var(--mba-font-weight-bold);
1658
+ color: var(--mba-color-primary-500);
1659
+ margin: 0;
1660
+ }
1661
+
1662
+ @media (max-width: 767px) {
1663
+ .mba-carousel-card {
1664
+ width: 286px;
1665
+ height: 360px;
1666
+ }
1667
+ }
1668
+
1669
+ /* ===========================================
1670
+ STATS CARD
1671
+ Bordure gradient sunset
1672
+ =========================================== */
1673
+
1674
+ .mba-stats-card {
1675
+ position: relative;
1676
+ padding: var(--mba-space-md);
1677
+ background-color: var(--mba-color-white);
1678
+ border-radius: var(--mba-radius-md);
1679
+ box-shadow: var(--mba-shadow-xs);
1680
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
1681
+ }
1682
+
1683
+ .mba-stats-card::before {
1684
+ content: "";
1685
+ position: absolute;
1686
+ inset: 0;
1687
+ padding: 1px;
1688
+ background: var(--mba-gradient-sunset);
1689
+ border-radius: var(--mba-radius-md);
1690
+ mask:
1691
+ linear-gradient(#fff 0 0) content-box,
1692
+ linear-gradient(#fff 0 0);
1693
+ mask-composite: exclude;
1694
+ -webkit-mask-composite: xor;
1695
+ pointer-events: none;
1696
+ }
1697
+
1698
+ .mba-stats-card:hover {
1699
+ transform: translateY(-4px);
1700
+ box-shadow: var(--mba-shadow-sm);
1701
+ }
1702
+
1703
+ .mba-stats-card__value {
1704
+ font-family: var(--mba-font-family-text);
1705
+ font-size: var(--mba-font-size-xxl);
1706
+ font-weight: var(--mba-font-weight-extrabold);
1707
+ color: var(--mba-color-primary-500);
1708
+ line-height: 1;
1709
+ margin: 0;
1710
+ }
1711
+
1712
+ .mba-stats-card__title {
1713
+ font-family: var(--mba-font-family-text);
1714
+ font-size: var(--mba-font-size-xs);
1715
+ font-weight: var(--mba-font-weight-bold);
1716
+ margin-top: var(--mba-space-sm);
1717
+ margin-bottom: 0;
1718
+ color: var(--mba-color-text);
1719
+ }
1720
+
1721
+ .mba-stats-card__description {
1722
+ font-family: var(--mba-font-family-text);
1723
+ font-size: var(--mba-font-size-xs);
1724
+ font-weight: var(--mba-font-weight-regular);
1725
+ color: var(--mba-color-text);
1726
+ margin: 0;
1727
+ }
1728
+
1729
+ /* ===========================================
1730
+ STATS GRID
1731
+ =========================================== */
1732
+
1733
+ .mba-stats-grid {
1734
+ display: grid;
1735
+ grid-template-columns: repeat(3, 1fr);
1736
+ gap: var(--mba-space-lg);
1737
+ width: 100%;
1738
+ }
1739
+
1740
+ @media (max-width: 900px) {
1741
+ .mba-stats-grid {
1742
+ grid-template-columns: repeat(2, 1fr);
1743
+ }
1744
+ }
1745
+
1746
+ @media (max-width: 600px) {
1747
+ .mba-stats-grid {
1748
+ grid-template-columns: 1fr;
1749
+ }
1750
+ }
1751
+
1752
+ /**
1753
+ * MBA Design System - Arrow Buttons
1754
+ *
1755
+ * Boutons circulaires de navigation (carousels, sliders)
1756
+ *
1757
+ * Specs Figma:
1758
+ * - padding: 4px (XXS)
1759
+ * - border-radius: 64px (XXL) → cercle
1760
+ * - background: Primary-500
1761
+ * - disabled: Grey-300
1762
+ */
1763
+
1764
+ .mba-arrow {
1765
+ display: inline-flex;
1766
+ align-items: center;
1767
+ justify-content: center;
1768
+ padding: var(--mba-space-xxs);
1769
+ border-radius: var(--mba-radius-xxl);
1770
+ background-color: var(--mba-color-primary-500);
1771
+ color: var(--mba-color-white);
1772
+ border: none;
1773
+ cursor: pointer;
1774
+ transition: background-color 0.2s ease;
1775
+ }
1776
+
1777
+ .mba-arrow:hover {
1778
+ background-color: var(--mba-color-primary-800);
1779
+ }
1780
+
1781
+ .mba-arrow:focus-visible {
1782
+ outline: none;
1783
+ box-shadow: var(--mba-focus-ring);
1784
+ }
1785
+
1786
+ /* Disabled state */
1787
+
1788
+ .mba-arrow:disabled,
1789
+ .mba-arrow.is-disabled {
1790
+ background-color: var(--mba-color-grey-300);
1791
+ cursor: not-allowed;
1792
+ }
1793
+
1794
+ .mba-arrow:disabled:hover,
1795
+ .mba-arrow.is-disabled:hover {
1796
+ background-color: var(--mba-color-grey-300);
1797
+ }
1798
+
1799
+ /* Icon sizing */
1800
+
1801
+ .mba-arrow .material-symbols-rounded {
1802
+ font-size: 24px;
1803
+ }
1804
+
1805
+ /**
1806
+ * MBA Design System - Radio & Checkbox
1807
+ *
1808
+ * Classes: .mba-radio, .mba-radio--pro, .mba-checkbox, .mba-checkbox--pro
1809
+ * Source: Design System Figma
1810
+ */
1811
+
1812
+ /* ===========================================
1813
+ RADIO BUTTON - Aidants (Primary)
1814
+ =========================================== */
1815
+
1816
+ .mba-radio {
1817
+ position: relative;
1818
+ display: inline-flex;
1819
+ align-items: center;
1820
+ justify-content: center;
1821
+ width: 16px;
1822
+ height: 16px;
1823
+ cursor: pointer;
1824
+ }
1825
+
1826
+ .mba-radio input {
1827
+ position: absolute;
1828
+ opacity: 0;
1829
+ width: 100%;
1830
+ height: 100%;
1831
+ margin: 0;
1832
+ cursor: pointer;
1833
+ }
1834
+
1835
+ .mba-radio .mba-radio__control {
1836
+ position: relative;
1837
+ width: 16px;
1838
+ height: 16px;
1839
+ border-radius: 8px;
1840
+ border: 1px solid var(--mba-color-primary-900);
1841
+ background-color: var(--mba-color-white);
1842
+ transition: all 0.2s ease;
1843
+ }
1844
+
1845
+ .mba-radio .mba-radio__control::after {
1846
+ content: "";
1847
+ position: absolute;
1848
+ top: 50%;
1849
+ left: 50%;
1850
+ transform: translate(-50%, -50%) scale(0);
1851
+ width: 12px;
1852
+ height: 12px;
1853
+ border-radius: 50%;
1854
+ background-color: var(--mba-color-primary-400);
1855
+ transition: transform 0.2s ease;
1856
+ }
1857
+
1858
+ /* Hover state (pas sur disabled) */
1859
+
1860
+ .mba-radio:hover:not(:has(input:disabled)) .mba-radio__control::after {
1861
+ transform: translate(-50%, -50%) scale(1);
1862
+ width: 10px;
1863
+ height: 10px;
1864
+ }
1865
+
1866
+ /* Selected state */
1867
+
1868
+ .mba-radio input:checked + .mba-radio__control::after {
1869
+ transform: translate(-50%, -50%) scale(1);
1870
+ width: 12px;
1871
+ height: 12px;
1872
+ }
1873
+
1874
+ /* Focus state */
1875
+
1876
+ .mba-radio input:focus + .mba-radio__control {
1877
+ box-shadow: var(--mba-focus-ring);
1878
+ }
1879
+
1880
+ /* Disabled state */
1881
+
1882
+ .mba-radio input:disabled + .mba-radio__control {
1883
+ border-color: var(--mba-color-grey-300);
1884
+ background-color: var(--mba-color-grey-50);
1885
+ cursor: not-allowed;
1886
+ }
1887
+
1888
+ .mba-radio input:disabled + .mba-radio__control::after {
1889
+ background-color: var(--mba-color-grey-300);
1890
+ }
1891
+
1892
+ .mba-radio:has(input:disabled) {
1893
+ cursor: not-allowed;
1894
+ }
1895
+
1896
+ /* ===========================================
1897
+ RADIO BUTTON - Partenaire (PrimaryPro)
1898
+ =========================================== */
1899
+
1900
+ .mba-radio--pro .mba-radio__control {
1901
+ border-color: var(--mba-color-primary-pro-800);
1902
+ }
1903
+
1904
+ .mba-radio--pro .mba-radio__control::after {
1905
+ background-color: var(--mba-color-primary-pro-400);
1906
+ }
1907
+
1908
+ /* ===========================================
1909
+ CHECKBOX - Aidants (Primary)
1910
+ =========================================== */
1911
+
1912
+ .mba-checkbox {
1913
+ position: relative;
1914
+ display: inline-flex;
1915
+ align-items: center;
1916
+ justify-content: center;
1917
+ width: 16px;
1918
+ height: 16px;
1919
+ cursor: pointer;
1920
+ }
1921
+
1922
+ .mba-checkbox input {
1923
+ position: absolute;
1924
+ opacity: 0;
1925
+ width: 100%;
1926
+ height: 100%;
1927
+ margin: 0;
1928
+ cursor: pointer;
1929
+ }
1930
+
1931
+ .mba-checkbox .mba-checkbox__control {
1932
+ position: relative;
1933
+ width: 16px;
1934
+ height: 16px;
1935
+ border-radius: var(--mba-radius-2xs);
1936
+ border: 1px solid var(--mba-color-primary-900);
1937
+ background-color: var(--mba-color-white);
1938
+ transition: all 0.2s ease;
1939
+ }
1940
+
1941
+ .mba-checkbox .mba-checkbox__control::after {
1942
+ content: "";
1943
+ position: absolute;
1944
+ top: 50%;
1945
+ left: 50%;
1946
+ transform: translate(-50%, -50%) scale(0);
1947
+ width: 12px;
1948
+ height: 12px;
1949
+ border-radius: 2px;
1950
+ background-color: var(--mba-color-primary-400);
1951
+ transition: transform 0.2s ease;
1952
+ }
1953
+
1954
+ /* Hover state (pas sur disabled) */
1955
+
1956
+ .mba-checkbox:hover:not(:has(input:disabled)) .mba-checkbox__control::after {
1957
+ transform: translate(-50%, -50%) scale(1);
1958
+ width: 10px;
1959
+ height: 10px;
1960
+ }
1961
+
1962
+ /* Selected state */
1963
+
1964
+ .mba-checkbox input:checked + .mba-checkbox__control::after {
1965
+ transform: translate(-50%, -50%) scale(1);
1966
+ width: 12px;
1967
+ height: 12px;
1968
+ }
1969
+
1970
+ /* Focus state */
1971
+
1972
+ .mba-checkbox input:focus + .mba-checkbox__control {
1973
+ box-shadow: var(--mba-focus-ring);
1974
+ }
1975
+
1976
+ /* Disabled state */
1977
+
1978
+ .mba-checkbox input:disabled + .mba-checkbox__control {
1979
+ border-color: var(--mba-color-grey-300);
1980
+ background-color: var(--mba-color-grey-50);
1981
+ cursor: not-allowed;
1982
+ }
1983
+
1984
+ .mba-checkbox input:disabled + .mba-checkbox__control::after {
1985
+ background-color: var(--mba-color-grey-300);
1986
+ }
1987
+
1988
+ .mba-checkbox:has(input:disabled) {
1989
+ cursor: not-allowed;
1990
+ }
1991
+
1992
+ /* ===========================================
1993
+ CHECKBOX - Partenaire (PrimaryPro)
1994
+ =========================================== */
1995
+
1996
+ .mba-checkbox--pro .mba-checkbox__control {
1997
+ border-color: var(--mba-color-primary-pro-800);
1998
+ }
1999
+
2000
+ .mba-checkbox--pro .mba-checkbox__control::after {
2001
+ background-color: var(--mba-color-primary-pro-400);
2002
+ }
2003
+
2004
+ /* ===========================================
2005
+ WITH LABEL
2006
+ =========================================== */
2007
+
2008
+ .mba-radio-label,
2009
+ .mba-checkbox-label {
2010
+ display: inline-flex;
2011
+ align-items: center;
2012
+ gap: var(--mba-space-xs);
2013
+ cursor: pointer;
2014
+ font-family: var(--mba-font-family-text);
2015
+ font-size: var(--mba-font-size-xs);
2016
+ color: var(--mba-color-black);
2017
+ }
2018
+
2019
+ .mba-radio-label:has(input:disabled),
2020
+ .mba-checkbox-label:has(input:disabled) {
2021
+ cursor: not-allowed;
2022
+ color: var(--mba-color-grey-400);
2023
+ }
2024
+
2025
+ /**
2026
+ * MBA Design System - Pagination
2027
+ *
2028
+ * Composant de pagination pour la navigation entre pages
2029
+ * Source: Design System Figma
2030
+ */
2031
+
2032
+ /* ===========================================
2033
+ PAGINATION CONTAINER
2034
+ height: hug (32px), gap: 16px (SM)
2035
+ =========================================== */
2036
+
2037
+ .mba-pagination {
2038
+ display: inline-flex;
2039
+ align-items: center;
2040
+ gap: var(--mba-space-sm); /* 16px */
2041
+ padding: 0;
2042
+ margin: 0;
2043
+ list-style: none;
2044
+ }
2045
+
2046
+ /* ===========================================
2047
+ PAGINATION ITEM
2048
+ width: 32px, height: 32px
2049
+ =========================================== */
2050
+
2051
+ .mba-pagination-item {
2052
+ display: inline-flex;
2053
+ width: 32px;
2054
+ height: 32px;
2055
+ padding: 0;
2056
+ justify-content: center;
2057
+ align-items: center;
2058
+ font-family: var(--mba-font-family-text);
2059
+ font-size: var(--mba-font-size-xs);
2060
+ font-weight: var(--mba-font-weight-semibold);
2061
+ font-size: 18px;
2062
+ line-height: var(--mba-leading-snug);
2063
+ text-decoration: none;
2064
+ border: none;
2065
+ border-radius: var(--mba-radius-xs);
2066
+ cursor: pointer;
2067
+ transition: all 0.25s ease-in-out;
2068
+ user-select: none;
2069
+ background-color: var(--mba-color-white);
2070
+ color: var(--mba-color-black);
2071
+ }
2072
+
2073
+ .mba-pagination-item:hover:not(:disabled):not(.is-disabled):not(.is-active) {
2074
+ background-color: var(--mba-color-grey-50);
2075
+ color: var(--mba-color-black);
2076
+ }
2077
+
2078
+ .mba-pagination-item:focus {
2079
+ outline: none;
2080
+ box-shadow: var(--mba-focus-ring);
2081
+ }
2082
+
2083
+ /* Active state */
2084
+
2085
+ .mba-pagination-item.is-active {
2086
+ background-color: var(--mba-color-secondary-500);
2087
+ border-radius: 50%;
2088
+ color: var(--mba-color-black);
2089
+ cursor: default;
2090
+ }
2091
+
2092
+ /* Disabled state */
2093
+
2094
+ .mba-pagination-item:disabled,
2095
+ .mba-pagination-item.is-disabled {
2096
+ background-color: var(--mba-color-white);
2097
+ color: var(--mba-color-grey-300);
2098
+ cursor: not-allowed;
2099
+ pointer-events: none;
2100
+ }
2101
+
2102
+ /* ===========================================
2103
+ PAGINATION ELLIPSIS
2104
+ =========================================== */
2105
+
2106
+ .mba-pagination-ellipsis {
2107
+ display: inline-flex;
2108
+ width: 32px;
2109
+ height: 32px;
2110
+ padding: 0;
2111
+ justify-content: center;
2112
+ align-items: center;
2113
+ font-family: var(--mba-font-family-text);
2114
+ font-size: var(--mba-font-size-xs);
2115
+ font-weight: var(--mba-font-weight-semibold);
2116
+ line-height: var(--mba-leading-snug);
2117
+ color: var(--mba-color-grey-400);
2118
+ user-select: none;
2119
+ pointer-events: none;
2120
+ }
2121
+
2122
+ /* ===========================================
2123
+ PAGINATION ARROW BUTTON
2124
+ width: 32px, height: 32px
2125
+ =========================================== */
2126
+
2127
+ .mba-pagination-arrow {
2128
+ display: inline-flex;
2129
+ width: 32px;
2130
+ height: 32px;
2131
+ padding: 0;
2132
+ justify-content: center;
2133
+ align-items: center;
2134
+ border: none;
2135
+ border-radius: var(--mba-radius-xs);
2136
+ cursor: pointer;
2137
+ transition: all 0.25s ease-in-out;
2138
+ user-select: none;
2139
+ background-color: var(--mba-color-white);
2140
+ color: var(--mba-color-black);
2141
+ }
2142
+
2143
+ .mba-pagination-arrow .mba-icon {
2144
+ font-size: 20px;
2145
+ width: 20px;
2146
+ height: 20px;
2147
+ }
2148
+
2149
+ .mba-pagination-arrow:hover:not(:disabled):not(.is-disabled) {
2150
+ background-color: var(--mba-color-grey-50);
2151
+ color: var(--mba-color-black);
2152
+ }
2153
+
2154
+ .mba-pagination-arrow:focus {
2155
+ outline: none;
2156
+ box-shadow: var(--mba-focus-ring);
2157
+ }
2158
+
2159
+ .mba-pagination-arrow:disabled,
2160
+ .mba-pagination-arrow.is-disabled {
2161
+ background-color: var(--mba-color-white);
2162
+ color: var(--mba-color-grey-300);
2163
+ cursor: not-allowed;
2164
+ pointer-events: none;
2165
+ }
2166
+
2167
+ /**
2168
+ * MBA Design System - Inputs
2169
+ *
2170
+ * Classes: .mba-textarea, .mba-input, .mba-label
2171
+ * Source: Design System Figma
2172
+ */
2173
+
2174
+ /* ===========================================
2175
+ LABEL
2176
+ =========================================== */
2177
+
2178
+ .mba-label {
2179
+ display: flex;
2180
+ align-items: center;
2181
+ gap: var(--mba-space-xxs);
2182
+ font-family: var(--mba-font-family-text);
2183
+ font-size: var(--mba-font-size-xxs);
2184
+ font-weight: var(--mba-font-weight-regular);
2185
+ line-height: normal;
2186
+ color: var(--mba-color-grey-800);
2187
+ }
2188
+
2189
+ /* Asterisque required */
2190
+
2191
+ .mba-label__required {
2192
+ color: var(--mba-color-error-500);
2193
+ font-size: var(--mba-font-size-xxs);
2194
+ }
2195
+
2196
+ /* Icone info */
2197
+
2198
+ .mba-label__icon {
2199
+ font-size: 16px;
2200
+ color: var(--mba-color-grey-400);
2201
+ }
2202
+
2203
+ /* ===========================================
2204
+ TEXTAREA - Base
2205
+ =========================================== */
2206
+
2207
+ .mba-textarea {
2208
+ display: block;
2209
+ width: 100%;
2210
+ padding: var(--mba-space-xs);
2211
+ border-radius: var(--mba-radius-xs);
2212
+ border: 1px solid var(--mba-color-grey-100);
2213
+ background-color: var(--mba-color-white);
2214
+ font-family: var(--mba-font-family-text);
2215
+ font-size: var(--mba-font-size-xxs);
2216
+ font-weight: var(--mba-font-weight-regular);
2217
+ color: var(--mba-color-black);
2218
+ resize: vertical;
2219
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
2220
+ }
2221
+
2222
+ /* Placeholder */
2223
+
2224
+ .mba-textarea::placeholder {
2225
+ color: var(--mba-color-grey-400);
2226
+ }
2227
+
2228
+ /* Focus state */
2229
+
2230
+ .mba-textarea:focus {
2231
+ outline: none;
2232
+ border-color: var(--mba-color-info-400);
2233
+ box-shadow: 0 0 0 1.5px var(--mba-color-info-300);
2234
+ }
2235
+
2236
+ /* Active state (typing) - placeholder devient noir si visible */
2237
+
2238
+ .mba-textarea:focus::placeholder {
2239
+ color: var(--mba-color-black);
2240
+ }
2241
+
2242
+ /* Disabled state */
2243
+
2244
+ .mba-textarea:disabled {
2245
+ background-color: var(--mba-color-grey-50);
2246
+ border-color: var(--mba-color-grey-100);
2247
+ cursor: not-allowed;
2248
+ }
2249
+
2250
+ .mba-textarea:disabled::placeholder {
2251
+ color: var(--mba-color-grey-400);
2252
+ }
2253
+
2254
+ /* Hover state */
2255
+
2256
+ .mba-textarea:hover:not(:focus):not(:disabled):not(.mba-textarea--error):not(.mba-textarea--valid) {
2257
+ border-color: var(--mba-color-info-400);
2258
+ box-shadow: 0 0 0 1.5px var(--mba-color-info-100);
2259
+ }
2260
+
2261
+ /* Error state */
2262
+
2263
+ .mba-textarea--error {
2264
+ border-color: var(--mba-color-error-500);
2265
+ box-shadow: 0 0 0 1.5px var(--mba-color-error-100);
2266
+ }
2267
+
2268
+ .mba-textarea--error:focus {
2269
+ border-color: var(--mba-color-error-500);
2270
+ box-shadow: 0 0 0 1.5px var(--mba-color-error-300);
2271
+ }
2272
+
2273
+ /* Valid state */
2274
+
2275
+ .mba-textarea--valid {
2276
+ border-color: var(--mba-color-success-500);
2277
+ box-shadow: 0 0 0 1.5px var(--mba-color-success-100);
2278
+ }
2279
+
2280
+ .mba-textarea--valid:focus {
2281
+ border-color: var(--mba-color-success-500);
2282
+ box-shadow: 0 0 0 1.5px var(--mba-color-success-300);
2283
+ }
2284
+
2285
+ /* ===========================================
2286
+ INPUT - Base
2287
+ =========================================== */
2288
+
2289
+ .mba-input {
2290
+ display: block;
2291
+ width: 100%;
2292
+ padding: var(--mba-space-xs) var(--mba-space-sm);
2293
+ border-radius: var(--mba-radius-xs);
2294
+ border: 1px solid var(--mba-color-grey-100);
2295
+ background-color: var(--mba-color-white);
2296
+ font-family: var(--mba-font-family-text);
2297
+ font-size: var(--mba-font-size-xxs);
2298
+ font-weight: var(--mba-font-weight-regular);
2299
+ color: var(--mba-color-black);
2300
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
2301
+ }
2302
+
2303
+ /* Placeholder */
2304
+
2305
+ .mba-input::placeholder {
2306
+ color: var(--mba-color-grey-400);
2307
+ }
2308
+
2309
+ /* Hover state */
2310
+
2311
+ .mba-input:hover:not(:focus):not(:disabled):not(.mba-input--error):not(.mba-input--valid) {
2312
+ border-color: var(--mba-color-info-400);
2313
+ box-shadow: 0 0 0 1.5px var(--mba-color-info-100);
2314
+ }
2315
+
2316
+ /* Focus state */
2317
+
2318
+ .mba-input:focus {
2319
+ outline: none;
2320
+ border-color: var(--mba-color-info-400);
2321
+ box-shadow: 0 0 0 1.5px var(--mba-color-info-300);
2322
+ }
2323
+
2324
+ /* Disabled state */
2325
+
2326
+ .mba-input:disabled {
2327
+ background-color: var(--mba-color-grey-50);
2328
+ border-color: var(--mba-color-grey-100);
2329
+ cursor: not-allowed;
2330
+ }
2331
+
2332
+ .mba-input:disabled::placeholder {
2333
+ color: var(--mba-color-grey-400);
2334
+ }
2335
+
2336
+ /* ===========================================
2337
+ INPUT - Error state
2338
+ =========================================== */
2339
+
2340
+ .mba-input--error {
2341
+ border-color: var(--mba-color-error-500);
2342
+ box-shadow: 0 0 0 1.5px var(--mba-color-error-100);
2343
+ }
2344
+
2345
+ .mba-input--error:focus {
2346
+ border-color: var(--mba-color-error-500);
2347
+ box-shadow: 0 0 0 1.5px var(--mba-color-error-300);
2348
+ }
2349
+
2350
+ /* ===========================================
2351
+ INPUT - Validate state
2352
+ =========================================== */
2353
+
2354
+ .mba-input--valid {
2355
+ border-color: var(--mba-color-success-500);
2356
+ box-shadow: 0 0 0 1.5px var(--mba-color-success-100);
2357
+ }
2358
+
2359
+ .mba-input--valid:focus {
2360
+ border-color: var(--mba-color-success-500);
2361
+ box-shadow: 0 0 0 1.5px var(--mba-color-success-300);
2362
+ }
2363
+
2364
+ /* ===========================================
2365
+ FEEDBACK MESSAGE (error / success)
2366
+ =========================================== */
2367
+
2368
+ .mba-feedback {
2369
+ font-family: var(--mba-font-family-text);
2370
+ font-size: 12px;
2371
+ font-weight: var(--mba-font-weight-regular);
2372
+ }
2373
+
2374
+ .mba-feedback--error {
2375
+ color: var(--mba-color-error-500);
2376
+ }
2377
+
2378
+ .mba-feedback--valid {
2379
+ color: var(--mba-color-success-500);
2380
+ }
2381
+
2382
+ /* ===========================================
2383
+ DROPDOWN
2384
+ =========================================== */
2385
+
2386
+ .mba-dropdown {
2387
+ position: relative;
2388
+ display: inline-block;
2389
+ width: 100%;
2390
+ }
2391
+
2392
+ /* Trigger (select-like button) */
2393
+
2394
+ .mba-dropdown__trigger {
2395
+ display: flex;
2396
+ align-items: center;
2397
+ justify-content: space-between;
2398
+ width: 100%;
2399
+ padding: var(--mba-space-xs) var(--mba-space-sm);
2400
+ border-radius: var(--mba-radius-xs);
2401
+ border: 1px solid var(--mba-color-grey-100);
2402
+ background-color: var(--mba-color-white);
2403
+ font-family: var(--mba-font-family-text);
2404
+ font-size: var(--mba-font-size-xs);
2405
+ font-weight: var(--mba-font-weight-regular);
2406
+ color: var(--mba-color-black);
2407
+ cursor: pointer;
2408
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
2409
+ }
2410
+
2411
+ .mba-dropdown__trigger--placeholder {
2412
+ color: var(--mba-color-grey-400);
2413
+ }
2414
+
2415
+ .mba-dropdown:not(.mba-dropdown--error):not(.mba-dropdown--valid) .mba-dropdown__trigger:hover {
2416
+ border-color: var(--mba-color-info-400);
2417
+ box-shadow: 0 0 0 1.5px var(--mba-color-info-100);
2418
+ }
2419
+
2420
+ .mba-dropdown__trigger:focus {
2421
+ outline: none;
2422
+ border-color: var(--mba-color-info-400);
2423
+ box-shadow: 0 0 0 1.5px var(--mba-color-info-300);
2424
+ }
2425
+
2426
+ .mba-dropdown__trigger:disabled {
2427
+ background-color: var(--mba-color-grey-50);
2428
+ border-color: var(--mba-color-grey-100);
2429
+ cursor: not-allowed;
2430
+ color: var(--mba-color-grey-400);
1226
2431
  }
1227
2432
 
1228
- .mba-card:hover .mba-card__icon {
1229
- transform: translateX(4px);
1230
- }
2433
+ /* Chevron icon */
1231
2434
 
1232
- /* ===========================================
1233
- CARD GRID
1234
- =========================================== */
2435
+ .mba-dropdown__chevron {
2436
+ font-size: 20px;
2437
+ color: var(--mba-color-grey-400);
2438
+ transition: transform 0.2s ease;
2439
+ }
1235
2440
 
1236
- .mba-card-grid {
1237
- display: grid;
1238
- gap: var(--mba-space-md);
1239
- grid-template-columns: 1fr;
1240
- width: 100%;
2441
+ .mba-dropdown--open .mba-dropdown__chevron {
2442
+ transform: rotate(180deg);
1241
2443
  }
1242
2444
 
1243
- @media (min-width: 600px) {
1244
- .mba-card-grid {
1245
- grid-template-columns: repeat(2, 1fr);
1246
- }
2445
+ /* Error state */
2446
+
2447
+ .mba-dropdown--error .mba-dropdown__trigger {
2448
+ border-color: var(--mba-color-error-500);
2449
+ box-shadow: 0 0 0 1.5px var(--mba-color-error-100);
1247
2450
  }
1248
2451
 
1249
- @media (min-width: 900px) {
1250
- .mba-card-grid {
1251
- grid-template-columns: repeat(3, 1fr);
1252
- }
2452
+ .mba-dropdown--error .mba-dropdown__trigger:focus {
2453
+ border-color: var(--mba-color-error-500);
2454
+ box-shadow: 0 0 0 1.5px var(--mba-color-error-300);
1253
2455
  }
1254
2456
 
1255
- /* ===========================================
1256
- CARD VARIANTS
1257
- =========================================== */
2457
+ /* Valid state */
1258
2458
 
1259
- /* White background */
2459
+ .mba-dropdown--valid .mba-dropdown__trigger {
2460
+ border-color: var(--mba-color-success-500);
2461
+ box-shadow: 0 0 0 1.5px var(--mba-color-success-100);
2462
+ }
1260
2463
 
1261
- .mba-card--white {
1262
- background-color: var(--mba-color-white);
2464
+ .mba-dropdown--valid .mba-dropdown__trigger:focus {
2465
+ border-color: var(--mba-color-success-500);
2466
+ box-shadow: 0 0 0 1.5px var(--mba-color-success-300);
1263
2467
  }
1264
2468
 
1265
- /* Non-interactive (no hover) */
2469
+ /* Panel */
1266
2470
 
1267
- .mba-card--static {
1268
- cursor: default;
2471
+ .mba-dropdown__panel {
2472
+ position: absolute;
2473
+ top: calc(100% + 4px);
2474
+ left: 0;
2475
+ right: 0;
2476
+ display: none;
2477
+ flex-direction: column;
2478
+ gap: 10px;
2479
+ padding: var(--mba-space-xs);
2480
+ border-radius: var(--mba-radius-2xs);
2481
+ background-color: var(--mba-color-white);
2482
+ box-shadow: 0 4px 4px 0 rgba(0, 0, 0, 0.04), 1px 2px 16px 0 rgba(28, 28, 29, 0.06);
2483
+ max-height: 200px;
2484
+ overflow-y: auto;
2485
+ z-index: 10;
1269
2486
  }
1270
2487
 
1271
- .mba-card--static:hover {
1272
- border-color: transparent;
2488
+ .mba-dropdown--open .mba-dropdown__panel {
2489
+ display: flex;
1273
2490
  }
1274
2491
 
1275
- /* ===========================================
1276
- CAROUSEL CARD (Testimonial)
1277
- Bordure gradient sunset
1278
- =========================================== */
2492
+ /* Custom scrollbar */
1279
2493
 
1280
- .mba-carousel-card {
1281
- position: relative;
1282
- display: flex;
1283
- flex-direction: column;
1284
- padding: var(--mba-space-md);
1285
- background-color: var(--mba-color-white);
1286
- border-radius: 24px 24px 8px 24px;
1287
- width: 453px;
1288
- height: 278px;
1289
- box-sizing: border-box;
2494
+ .mba-dropdown__panel::-webkit-scrollbar {
2495
+ width: 6px;
1290
2496
  }
1291
2497
 
1292
- .mba-carousel-card::before {
1293
- content: "";
1294
- position: absolute;
1295
- inset: 0;
1296
- padding: 1px;
1297
- background: var(--mba-gradient-sunset);
1298
- border-radius: 24px 24px 8px 24px;
1299
- mask:
1300
- linear-gradient(#fff 0 0) content-box,
1301
- linear-gradient(#fff 0 0);
1302
- mask-composite: exclude;
1303
- -webkit-mask-composite: xor;
1304
- pointer-events: none;
2498
+ .mba-dropdown__panel::-webkit-scrollbar-track {
2499
+ background: transparent;
1305
2500
  }
1306
2501
 
1307
- .mba-carousel-card__title {
1308
- font-family: var(--mba-font-family-text);
1309
- font-size: var(--mba-font-size-sm);
1310
- font-weight: var(--mba-font-weight-bold);
1311
- color: var(--mba-color-primary-800);
1312
- margin: 0;
2502
+ .mba-dropdown__panel::-webkit-scrollbar-thumb {
2503
+ background-color: var(--mba-color-primary-pro-800);
2504
+ border-radius: 3px;
1313
2505
  }
1314
2506
 
1315
- .mba-carousel-card__quote {
1316
- flex: 1;
1317
- margin-top: var(--mba-space-sm);
2507
+ /* Option */
2508
+
2509
+ .mba-dropdown__option {
2510
+ padding: var(--mba-space-xs);
2511
+ border-radius: var(--mba-radius-xs);
1318
2512
  font-family: var(--mba-font-family-text);
1319
2513
  font-size: var(--mba-font-size-xs);
1320
2514
  font-weight: var(--mba-font-weight-regular);
1321
- color: var(--mba-color-primary-800);
2515
+ color: var(--mba-color-black);
2516
+ cursor: pointer;
2517
+ transition: background-color 0.15s ease;
1322
2518
  }
1323
2519
 
1324
- .mba-carousel-card__author {
1325
- font-family: var(--mba-font-family-text);
1326
- font-size: var(--mba-font-size-xxs);
1327
- font-weight: var(--mba-font-weight-bold);
1328
- color: var(--mba-color-primary-500);
1329
- margin: 0;
2520
+ .mba-dropdown__option:hover {
2521
+ background-color: var(--mba-color-grey-50);
1330
2522
  }
1331
2523
 
1332
- @media (max-width: 767px) {
1333
- .mba-carousel-card {
1334
- width: 286px;
1335
- height: 360px;
1336
- }
2524
+ .mba-dropdown__option--selected {
2525
+ border: 1px solid var(--mba-color-primary-400);
2526
+ background-color: var(--mba-color-white);
2527
+ }
2528
+
2529
+ /* Option selected - Pro variant */
2530
+
2531
+ .mba-dropdown--pro .mba-dropdown__option--selected {
2532
+ border-color: var(--mba-color-primary-pro-400);
1337
2533
  }
1338
2534
 
1339
2535
  /* ===========================================
1340
- STATS CARD
1341
- Bordure gradient sunset
2536
+ TOGGLE SWITCH
2537
+ width: 42px, height: 24px, cercle: 20px
1342
2538
  =========================================== */
1343
2539
 
1344
- .mba-stats-card {
2540
+ .mba-toggle {
1345
2541
  position: relative;
1346
- padding: var(--mba-space-md);
1347
- background-color: var(--mba-color-white);
1348
- border-radius: var(--mba-radius-md);
1349
- box-shadow: var(--mba-shadow-xs);
1350
- transition: transform 0.3s ease, box-shadow 0.3s ease;
2542
+ display: inline-block;
2543
+ width: 42px;
2544
+ height: 24px;
1351
2545
  }
1352
2546
 
1353
- .mba-stats-card::before {
1354
- content: "";
2547
+ .mba-toggle input {
2548
+ opacity: 0;
2549
+ width: 0;
2550
+ height: 0;
2551
+ }
2552
+
2553
+ .mba-toggle__slider {
1355
2554
  position: absolute;
1356
- inset: 0;
1357
- padding: 1px;
1358
- background: var(--mba-gradient-sunset);
1359
- border-radius: var(--mba-radius-md);
1360
- mask:
1361
- linear-gradient(#fff 0 0) content-box,
1362
- linear-gradient(#fff 0 0);
1363
- mask-composite: exclude;
1364
- -webkit-mask-composite: xor;
1365
- pointer-events: none;
2555
+ cursor: pointer;
2556
+ top: 0;
2557
+ left: 0;
2558
+ right: 0;
2559
+ bottom: 0;
2560
+ background-color: var(--mba-color-grey-300);
2561
+ transition: all 0.3s ease;
2562
+ border-radius: 32px;
1366
2563
  }
1367
2564
 
1368
- .mba-stats-card:hover {
1369
- transform: translateY(-4px);
1370
- box-shadow: var(--mba-shadow-sm);
2565
+ .mba-toggle__slider::before {
2566
+ position: absolute;
2567
+ content: "";
2568
+ height: 20px;
2569
+ width: 20px;
2570
+ left: 2px;
2571
+ top: 2px;
2572
+ background-color: var(--mba-color-white);
2573
+ transition: all 0.3s ease;
2574
+ border-radius: 50%;
1371
2575
  }
1372
2576
 
1373
- .mba-stats-card__value {
1374
- font-family: var(--mba-font-family-text);
1375
- font-size: var(--mba-font-size-xxl);
1376
- font-weight: var(--mba-font-weight-extrabold);
1377
- color: var(--mba-color-primary-500);
1378
- line-height: 1;
1379
- margin: 0;
2577
+ .mba-toggle input:checked + .mba-toggle__slider {
2578
+ background-color: var(--mba-color-secondary-500);
1380
2579
  }
1381
2580
 
1382
- .mba-stats-card__title {
1383
- font-family: var(--mba-font-family-text);
1384
- font-size: var(--mba-font-size-xs);
1385
- font-weight: var(--mba-font-weight-bold);
1386
- margin-top: var(--mba-space-sm);
1387
- margin-bottom: 0;
1388
- color: var(--mba-color-text);
2581
+ .mba-toggle input:checked + .mba-toggle__slider::before {
2582
+ transform: translateX(18px);
1389
2583
  }
1390
2584
 
1391
- .mba-stats-card__description {
1392
- font-family: var(--mba-font-family-text);
1393
- font-size: var(--mba-font-size-xs);
1394
- font-weight: var(--mba-font-weight-regular);
1395
- color: var(--mba-color-text);
1396
- margin: 0;
2585
+ .mba-toggle input:focus + .mba-toggle__slider {
2586
+ box-shadow: var(--mba-focus-ring);
2587
+ }
2588
+
2589
+ .mba-toggle input:disabled + .mba-toggle__slider {
2590
+ opacity: 0.5;
2591
+ cursor: not-allowed;
1397
2592
  }
1398
2593
 
1399
2594
  /* ===========================================
1400
- STATS GRID
2595
+ INPUT WITH ICON
1401
2596
  =========================================== */
1402
2597
 
1403
- .mba-stats-grid {
1404
- display: grid;
1405
- grid-template-columns: repeat(3, 1fr);
1406
- gap: var(--mba-space-lg);
2598
+ .mba-input-icon {
2599
+ display: flex;
2600
+ align-items: center;
1407
2601
  width: 100%;
2602
+ padding: var(--mba-space-xs) var(--mba-space-sm);
2603
+ border-radius: var(--mba-radius-xs);
2604
+ border: 1px solid var(--mba-color-grey-100);
2605
+ background-color: var(--mba-color-white);
2606
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
1408
2607
  }
1409
2608
 
1410
- @media (max-width: 900px) {
1411
- .mba-stats-grid {
1412
- grid-template-columns: repeat(2, 1fr);
1413
- }
2609
+ .mba-input-icon input {
2610
+ flex: 1;
2611
+ border: none;
2612
+ background: transparent;
2613
+ font-family: var(--mba-font-family-text);
2614
+ font-size: var(--mba-font-size-xxs);
2615
+ font-weight: var(--mba-font-weight-regular);
2616
+ color: var(--mba-color-black);
2617
+ outline: none;
1414
2618
  }
1415
2619
 
1416
- @media (max-width: 600px) {
1417
- .mba-stats-grid {
1418
- grid-template-columns: 1fr;
1419
- }
2620
+ .mba-input-icon input::placeholder {
2621
+ color: var(--mba-color-grey-400);
1420
2622
  }
1421
2623
 
1422
- /**
1423
- * MBA Design System - Arrow Buttons
1424
- *
1425
- * Boutons circulaires de navigation (carousels, sliders)
1426
- *
1427
- * Specs Figma:
1428
- * - padding: 4px (XXS)
1429
- * - border-radius: 64px (XXL) → cercle
1430
- * - background: Primary-500
1431
- * - disabled: Grey-300
1432
- */
2624
+ .mba-input-icon__icon {
2625
+ font-size: 16px;
2626
+ color: var(--mba-color-grey-400);
2627
+ margin-left: var(--mba-space-xs);
2628
+ }
1433
2629
 
1434
- .mba-arrow {
1435
- display: inline-flex;
1436
- align-items: center;
1437
- justify-content: center;
1438
- padding: var(--mba-space-xxs);
1439
- border-radius: var(--mba-radius-xxl);
1440
- background-color: var(--mba-color-primary-500);
1441
- color: var(--mba-color-white);
2630
+ /* Icon clickable (button) */
2631
+
2632
+ button.mba-input-icon__icon {
2633
+ background: none;
1442
2634
  border: none;
2635
+ padding: 0;
1443
2636
  cursor: pointer;
1444
- transition: background-color 0.2s ease;
2637
+ transition: color 0.2s ease;
1445
2638
  }
1446
2639
 
1447
- .mba-arrow:hover {
1448
- background-color: var(--mba-color-primary-800);
2640
+ button.mba-input-icon__icon:hover {
2641
+ color: var(--mba-color-primary-500);
1449
2642
  }
1450
2643
 
1451
- .mba-arrow:focus-visible {
1452
- outline: none;
1453
- box-shadow: var(--mba-focus-ring);
2644
+ /* Hover state */
2645
+
2646
+ .mba-input-icon:hover:not(:focus-within):not(.mba-input-icon--disabled):not(.mba-input-icon--error) {
2647
+ border-color: var(--mba-color-info-400);
2648
+ box-shadow: 0 0 0 1.5px var(--mba-color-info-100);
2649
+ }
2650
+
2651
+ /* Focus state */
2652
+
2653
+ .mba-input-icon:focus-within {
2654
+ border-color: var(--mba-color-info-400);
2655
+ box-shadow: 0 0 0 1.5px var(--mba-color-info-300);
1454
2656
  }
1455
2657
 
1456
2658
  /* Disabled state */
1457
2659
 
1458
- .mba-arrow:disabled,
1459
- .mba-arrow.is-disabled {
1460
- background-color: var(--mba-color-grey-300);
2660
+ .mba-input-icon--disabled {
2661
+ background-color: var(--mba-color-grey-50);
1461
2662
  cursor: not-allowed;
1462
2663
  }
1463
2664
 
1464
- .mba-arrow:disabled:hover,
1465
- .mba-arrow.is-disabled:hover {
1466
- background-color: var(--mba-color-grey-300);
2665
+ .mba-input-icon--disabled input {
2666
+ cursor: not-allowed;
2667
+ color: var(--mba-color-grey-400);
1467
2668
  }
1468
2669
 
1469
- /* Icon sizing */
2670
+ /* Error state */
1470
2671
 
1471
- .mba-arrow .material-symbols-rounded {
1472
- font-size: 24px;
2672
+ .mba-input-icon--error {
2673
+ border-color: var(--mba-color-error-500);
2674
+ box-shadow: 0 0 0 1.5px var(--mba-color-error-100);
2675
+ }
2676
+
2677
+ .mba-input-icon--error:focus-within {
2678
+ border-color: var(--mba-color-error-500);
2679
+ box-shadow: 0 0 0 1.5px var(--mba-color-error-300);
2680
+ }
2681
+
2682
+ .mba-input-icon--error .mba-input-icon__icon {
2683
+ color: var(--mba-color-error-500);
2684
+ }
2685
+
2686
+ /* ===========================================
2687
+ INPUT GROUP (input + button)
2688
+ =========================================== */
2689
+
2690
+ .mba-input-group {
2691
+ display: flex;
2692
+ align-items: stretch;
2693
+ gap: var(--mba-space-xxs);
2694
+ }
2695
+
2696
+ .mba-input-group > .mba-input,
2697
+ .mba-input-group > .mba-input-icon {
2698
+ flex: 1;
2699
+ }
2700
+
2701
+ /* ===========================================
2702
+ FORM GROUP (label + input)
2703
+ =========================================== */
2704
+
2705
+ .mba-form-group {
2706
+ display: flex;
2707
+ flex-direction: column;
2708
+ gap: var(--mba-space-xxs);
1473
2709
  }
1474
2710
 
1475
2711
  /* @import "./_forms.css"; */
@@ -1536,3 +2772,27 @@ a:hover {
1536
2772
  clip: auto;
1537
2773
  white-space: normal;
1538
2774
  }
2775
+
2776
+ /* ===========================================
2777
+ VISIBILITY UTILITIES
2778
+ Override pour garantir le masquage même avec
2779
+ les composants MBA (display: inline-flex, etc.)
2780
+ =========================================== */
2781
+
2782
+ /* Hidden - force display: none sur tous les composants */
2783
+
2784
+ .hidden {
2785
+ display: none !important;
2786
+ }
2787
+
2788
+ /* Visible utilities */
2789
+
2790
+ .visible {
2791
+ visibility: visible;
2792
+ }
2793
+
2794
+ .invisible {
2795
+ visibility: hidden;
2796
+ }
2797
+
2798
+ /*# sourceMappingURL=mba-design-system.css.map */