@ktortu/aaa 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +151 -0
- package/button/button-tokens.css +152 -0
- package/button/button.css +319 -0
- package/card/card-tokens.css +49 -0
- package/card/card.css +200 -0
- package/cdk/styles/foundation.css +83 -0
- package/cdk/styles/tabs.css +276 -0
- package/dialog/dialog.css +350 -0
- package/fesm2022/ktortu-aaa-button.mjs +128 -0
- package/fesm2022/ktortu-aaa-button.mjs.map +1 -0
- package/fesm2022/ktortu-aaa-card.mjs +209 -0
- package/fesm2022/ktortu-aaa-card.mjs.map +1 -0
- package/fesm2022/ktortu-aaa-cdk.mjs +183 -0
- package/fesm2022/ktortu-aaa-cdk.mjs.map +1 -0
- package/fesm2022/ktortu-aaa-dialog.mjs +512 -0
- package/fesm2022/ktortu-aaa-dialog.mjs.map +1 -0
- package/fesm2022/ktortu-aaa-forms.mjs +3215 -0
- package/fesm2022/ktortu-aaa-forms.mjs.map +1 -0
- package/fesm2022/ktortu-aaa-menu.mjs +315 -0
- package/fesm2022/ktortu-aaa-menu.mjs.map +1 -0
- package/fesm2022/ktortu-aaa-tabs.mjs +79 -0
- package/fesm2022/ktortu-aaa-tabs.mjs.map +1 -0
- package/fesm2022/ktortu-aaa-tooltip.mjs +356 -0
- package/fesm2022/ktortu-aaa-tooltip.mjs.map +1 -0
- package/fesm2022/ktortu-aaa.mjs +17 -0
- package/fesm2022/ktortu-aaa.mjs.map +1 -0
- package/forms/checkbox/checkbox-group.css +55 -0
- package/forms/checkbox/checkbox.css +216 -0
- package/forms/chips/chip-list.css +70 -0
- package/forms/chips/chip.css +92 -0
- package/forms/chips/tokens.css +102 -0
- package/forms/field/field.css +87 -0
- package/forms/multi-select/multi-select.css +136 -0
- package/forms/radio/radio-group.css +55 -0
- package/forms/radio/radio.css +165 -0
- package/forms/styles/field-box.css +171 -0
- package/forms/styles/select-panel.css +464 -0
- package/forms/styles/tokens.css +67 -0
- package/forms/switch/switch.css +188 -0
- package/menu/menu-tokens.css +58 -0
- package/menu/menu.css +224 -0
- package/package.json +96 -0
- package/styles/button.css +6 -0
- package/styles/card.css +6 -0
- package/styles/dialog.css +6 -0
- package/styles/forms.css +13 -0
- package/styles/foundation.css +7 -0
- package/styles/menu.css +6 -0
- package/styles/styles.css +24 -0
- package/styles/tabs.css +5 -0
- package/styles/tooltip.css +5 -0
- package/themes/theme-ant.css +44 -0
- package/themes/theme-architecte.css +83 -0
- package/themes/theme-aurora.css +97 -0
- package/themes/theme-bootstrap.css +46 -0
- package/themes/theme-carbon.css +49 -0
- package/themes/theme-catppuccin.css +66 -0
- package/themes/theme-cyberpunk.css +211 -0
- package/themes/theme-fluent.css +45 -0
- package/themes/theme-material-you.css +74 -0
- package/themes/theme-material.css +48 -0
- package/themes/theme-primer.css +46 -0
- package/themes/theme-vegetal.css +78 -0
- package/tooltip/tooltip.css +129 -0
- package/types/ktortu-aaa-button.d.ts +70 -0
- package/types/ktortu-aaa-card.d.ts +143 -0
- package/types/ktortu-aaa-cdk.d.ts +110 -0
- package/types/ktortu-aaa-dialog.d.ts +286 -0
- package/types/ktortu-aaa-forms.d.ts +1574 -0
- package/types/ktortu-aaa-menu.d.ts +171 -0
- package/types/ktortu-aaa-tabs.d.ts +27 -0
- package/types/ktortu-aaa-tooltip.d.ts +90 -0
- package/types/ktortu-aaa.d.ts +8 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* Thème « Ant Design » (light) — uniquement des redéclarations de tokens.
|
|
2
|
+
Signature Ant : bleu vif, radius 6px, gris légers, look B2B/admin.
|
|
3
|
+
AA-corrigé : les officiels #1677ff (~4.0:1) et #ff4d4f (~3.2:1) échouent sur blanc en texte
|
|
4
|
+
→ on prend les crans -7 de leurs palettes (blue-7 #0958d9, red-7 #cf1322), AA des deux côtés. */
|
|
5
|
+
[data-theme='ant'] {
|
|
6
|
+
/* ============ Socle ============ */
|
|
7
|
+
--kt-primary: #0958d9; /* blue-7 — blanc 6.2:1 */
|
|
8
|
+
--kt-danger: #cf1322; /* red-7 — blanc 5.6:1 */
|
|
9
|
+
--kt-neutral: #434343;
|
|
10
|
+
--kt-surface: #ffffff;
|
|
11
|
+
--kt-on-surface: #1f1f1f; /* ≈ rgba(0,0,0,.88) Ant */
|
|
12
|
+
--kt-muted: #595959; /* ≈ rgba(0,0,0,.65) */
|
|
13
|
+
--kt-outline: #d9d9d9;
|
|
14
|
+
--kt-outline-strong: #8c8c8c;
|
|
15
|
+
--kt-font: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
|
|
16
|
+
|
|
17
|
+
/* ============ Géométrie ============ */
|
|
18
|
+
--kt-control-radius: 6px; /* borderRadius par défaut Ant v5 */
|
|
19
|
+
--btn-radius: 6px;
|
|
20
|
+
--chip-radius: 6px;
|
|
21
|
+
|
|
22
|
+
/* ============ Champs ============ */
|
|
23
|
+
--field-transition: border-color 0.2s ease; /* motionDurationMid Ant (rétrofit lot 3) */
|
|
24
|
+
|
|
25
|
+
/* ============ Boutons ============ */
|
|
26
|
+
--btn-tonal-weight: 12%; /* containers discrets façon Ant (color-bg variants) */
|
|
27
|
+
--btn-on-primary-container: #003eb3;
|
|
28
|
+
--btn-on-danger-container: #820014;
|
|
29
|
+
--btn-on-neutral-container: #1f1f1f;
|
|
30
|
+
|
|
31
|
+
/* ============ Select / tooltip ============ */
|
|
32
|
+
--select-popup-shadow: 0 6px 16px rgb(0 0 0 / 8%), 0 3px 6px rgb(0 0 0 / 12%);
|
|
33
|
+
--tooltip-bg: #1f1f1f; /* ≈ rgba(0,0,0,.85) */
|
|
34
|
+
--tooltip-fg: #ffffff;
|
|
35
|
+
|
|
36
|
+
/* ============ Dialog (Ant Design : rayon 8, sans bord) ============ */
|
|
37
|
+
--dialog-radius: 8px;
|
|
38
|
+
--dialog-border-width: 0;
|
|
39
|
+
|
|
40
|
+
/* ============ Card (Ant : rayon 8, boxShadowCard discret) ============ */
|
|
41
|
+
--card-radius: 8px;
|
|
42
|
+
--card-filled-bg: #fafafa; /* colorFillAlter */
|
|
43
|
+
--card-shadow: 0 1px 2px rgb(0 0 0 / 3%), 0 1px 6px -1px rgb(0 0 0 / 2%), 0 2px 4px rgb(0 0 0 / 2%);
|
|
44
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* Thème « Architecte » (dark, blueprint) — uniquement des tokens.
|
|
2
|
+
La démonstration des bordures PAR CÔTÉ (longhands : 1 à 4 valeurs par token) :
|
|
3
|
+
- champs = LIGNE DE COTE : underline seule (`--field-border-width: 0 0 2px 0`),
|
|
4
|
+
on écrit SUR la ligne comme sur un plan ; le popup du select garde sa bordure
|
|
5
|
+
complète via --select-popup-border-width (un menu flottant n'est pas un champ) ;
|
|
6
|
+
- boutons = CARTOUCHE : `--btn-border-style: solid dashed` => traits pleins
|
|
7
|
+
haut/bas, tirets sur les côtés, comme le cadre d'un cartouche de plan.
|
|
8
|
+
Bleu de Prusse, traits cyan crayon, sanguine en danger, Architects Daughter. */
|
|
9
|
+
[data-theme='architecte'] {
|
|
10
|
+
color-scheme: dark;
|
|
11
|
+
|
|
12
|
+
/* ============ Socle ============ */
|
|
13
|
+
--kt-surface: #16344f; /* bleu de Prusse (blueprint) */
|
|
14
|
+
--kt-on-surface: #e8f1f8; /* 11.2:1 */
|
|
15
|
+
--kt-muted: #9dbdd4; /* 6.5:1 */
|
|
16
|
+
--kt-outline: #6f9dbd; /* trait de plan (4.4:1 non-texte) */
|
|
17
|
+
--kt-outline-strong: #a8cce4;
|
|
18
|
+
--kt-primary: #7fc8f0; /* crayon cyan, 7.0:1 en texte */
|
|
19
|
+
--kt-danger: #f0907c; /* sanguine, 5.5:1 */
|
|
20
|
+
--kt-neutral: #3e5c75;
|
|
21
|
+
--kt-focus-ring-color: #7fc8f0;
|
|
22
|
+
--kt-font: 'Architects Daughter', 'Segoe Print', cursive;
|
|
23
|
+
|
|
24
|
+
/* Gouttière = trait de plan : thumb bleu crayon (outline) sur le lavis des champs. */
|
|
25
|
+
--kt-scrollbar-color: #6f9dbd #1b3c5a;
|
|
26
|
+
|
|
27
|
+
/* ============ Géométrie : tracé technique ============ */
|
|
28
|
+
--kt-control-radius: 0; /* champs = lignes, pas de coins */
|
|
29
|
+
/* Coins COUPÉS des cartouches (hérité du thème Papier craft, supprimé) : bevel + radius
|
|
30
|
+
visible = chanfrein technique, cohérent avec le lettrage de plan. */
|
|
31
|
+
--btn-radius: 8px;
|
|
32
|
+
--btn-corner-shape: bevel;
|
|
33
|
+
--kt-sheet-radius: 8px;
|
|
34
|
+
--chip-radius: 2px;
|
|
35
|
+
|
|
36
|
+
/* ============ Champs : ligne de cote (underline par côté) ============ */
|
|
37
|
+
--field-border-width: 0 0 2px 0; /* SEULE la ligne du bas existe */
|
|
38
|
+
--field-bg: #1b3c5a; /* lavis léger au-dessus de la ligne */
|
|
39
|
+
--field-focus-ring: color-mix(in srgb, #7fc8f0 55%, transparent);
|
|
40
|
+
--field-focus-ring-style: dashed; /* trait de construction (rétrofit lot 6) */
|
|
41
|
+
/* Menu flottant du select : bordure complète et fine, lui. */
|
|
42
|
+
--select-popup-border-width: 1px;
|
|
43
|
+
/* Lettrage technique des cartouches (rétrofit lot 6). */
|
|
44
|
+
--field-label-transform: uppercase;
|
|
45
|
+
--field-label-letter-spacing: 0.06em;
|
|
46
|
+
--field-caret-color: #7fc8f0;
|
|
47
|
+
--kt-selection-bg: #7fc8f0;
|
|
48
|
+
--kt-selection-fg: #0d2438;
|
|
49
|
+
|
|
50
|
+
/* ============ Boutons : cartouche (style par côté) ============ */
|
|
51
|
+
--btn-border-style: solid dashed; /* haut/bas pleins, côtés en tirets */
|
|
52
|
+
--btn-border-width: 1.5px;
|
|
53
|
+
--btn-text-transform: uppercase; /* lettrage de plan (rétrofit lot 6) */
|
|
54
|
+
--btn-letter-spacing: 0.08em;
|
|
55
|
+
--btn-on-primary: #0d2438; /* 8.6:1 sur cyan */
|
|
56
|
+
--btn-on-danger: #381208; /* 7.1:1 sur sanguine */
|
|
57
|
+
--btn-on-neutral: #ffffff; /* 7.0:1 */
|
|
58
|
+
--btn-on-primary-container: #c9e6f8;
|
|
59
|
+
--btn-on-neutral-container: #d4e2ee;
|
|
60
|
+
--btn-on-danger-container: #f8cfc4;
|
|
61
|
+
--btn-fg-weight: 100%;
|
|
62
|
+
--btn-neutral-fg: #a9c4da;
|
|
63
|
+
--btn-tonal-weight: 24%;
|
|
64
|
+
|
|
65
|
+
/* ============ Select / tooltip ============ */
|
|
66
|
+
--select-popup-bg: #1b3c5a;
|
|
67
|
+
--select-popup-shadow: 0 8px 24px rgb(4 14 24 / 55%);
|
|
68
|
+
--kt-sheet-shadow: 0 -8px 24px rgb(4 14 24 / 55%);
|
|
69
|
+
--kt-sheet-scrim: rgb(4 14 24 / 60%);
|
|
70
|
+
--tooltip-bg: #0f2438;
|
|
71
|
+
--tooltip-fg: #dceaf5;
|
|
72
|
+
|
|
73
|
+
/* ============ Dialog (blueprint : cartouche cyan) ============ */
|
|
74
|
+
--dialog-radius: 8px;
|
|
75
|
+
--dialog-border-color: #6f9dbd;
|
|
76
|
+
|
|
77
|
+
/* ============ Card : cartouche blueprint (lavis + trait cyan via l'ombre) ============ */
|
|
78
|
+
--card-bg: #1b3c5a;
|
|
79
|
+
--card-filled-bg: #214a6e;
|
|
80
|
+
--card-radius: 8px;
|
|
81
|
+
--card-border-color: #6f9dbd;
|
|
82
|
+
--card-shadow: 0 0 0 1px rgb(111 157 189 / 30%), 0 8px 24px rgb(4 14 24 / 45%);
|
|
83
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/* Thème « Aurora » (light, effets d'OMBRES) — vitrine des tokens --*-shadow* du système.
|
|
2
|
+
Identité = halos COLORÉS multicouches (indigo + rose) sous chaque surface, élévation au survol.
|
|
3
|
+
AUCUNE animation continue (≠ cyberpunk) : tout est statique, seules des transitions au survol.
|
|
4
|
+
Surfaces claires + texte navy => AA sans compromis (les halos sont décoratifs, jamais porteurs
|
|
5
|
+
d'information ni de contraste de texte). Inter, rondeurs douces. */
|
|
6
|
+
[data-theme='aurora'] {
|
|
7
|
+
color-scheme: light;
|
|
8
|
+
|
|
9
|
+
/* ============ Socle ============ */
|
|
10
|
+
--kt-primary: #4f46e5; /* indigo — blanc ~6.6:1 */
|
|
11
|
+
--kt-danger: #be185d; /* rose profond — blanc ~6.2:1 */
|
|
12
|
+
--kt-neutral: #475569;
|
|
13
|
+
--kt-surface: #f7f9fc;
|
|
14
|
+
--kt-on-surface: #16203a; /* ~13:1 */
|
|
15
|
+
--kt-muted: #4a5878; /* ~6:1 */
|
|
16
|
+
--kt-outline: #cdd6e8;
|
|
17
|
+
--kt-outline-strong: #8493b3;
|
|
18
|
+
--kt-focus-ring-color: #4f46e5;
|
|
19
|
+
--kt-font: 'Inter', system-ui, sans-serif;
|
|
20
|
+
|
|
21
|
+
/* Gouttière indigo douce. */
|
|
22
|
+
--kt-scrollbar-color: color-mix(in srgb, #4f46e5 35%, #cdd6e8) #eef1f8;
|
|
23
|
+
|
|
24
|
+
/* Feuille / popup : halos colorés. */
|
|
25
|
+
--kt-sheet-radius: 24px;
|
|
26
|
+
--kt-sheet-shadow: 0 -16px 48px rgb(79 70 229 / 16%), 0 -4px 16px rgb(190 24 93 / 10%);
|
|
27
|
+
--kt-sheet-scrim: rgb(22 32 58 / 35%);
|
|
28
|
+
|
|
29
|
+
/* Caret + sélection. */
|
|
30
|
+
--field-caret-color: #4f46e5;
|
|
31
|
+
--kt-selection-bg: #ddd6fe;
|
|
32
|
+
--kt-selection-fg: #2e1065;
|
|
33
|
+
|
|
34
|
+
/* ============ Géométrie douce ============ */
|
|
35
|
+
--kt-control-radius: 12px;
|
|
36
|
+
--btn-radius: 12px;
|
|
37
|
+
--chip-radius: 999px;
|
|
38
|
+
|
|
39
|
+
/* ============ Champs : halo indigo au survol/focus ============ */
|
|
40
|
+
--field-bg: #ffffff;
|
|
41
|
+
--field-focus-ring: color-mix(in srgb, #4f46e5 50%, transparent);
|
|
42
|
+
--field-transition: border-color 180ms ease, box-shadow 180ms ease;
|
|
43
|
+
--field-shadow: 0 2px 8px rgb(22 32 58 / 6%);
|
|
44
|
+
--field-shadow-hover: 0 4px 14px rgb(79 70 229 / 12%);
|
|
45
|
+
--field-shadow-focus: 0 6px 20px rgb(79 70 229 / 22%);
|
|
46
|
+
|
|
47
|
+
/* ============ Boutons : élévation colorée, lève au survol ============ */
|
|
48
|
+
--btn-tonal-weight: 16%;
|
|
49
|
+
--btn-on-primary-container: #2e1065;
|
|
50
|
+
--btn-on-danger-container: #6b0f3a;
|
|
51
|
+
--btn-on-neutral-container: #16203a;
|
|
52
|
+
--btn-transition: transform 180ms ease, box-shadow 180ms ease;
|
|
53
|
+
--btn-transform-hover: translateY(-2px);
|
|
54
|
+
--btn-transform-active: translateY(0) scale(0.98);
|
|
55
|
+
|
|
56
|
+
/* ============ Chips : pilules à halo doux ============ */
|
|
57
|
+
--chip-shadow: 0 2px 8px rgb(79 70 229 / 12%);
|
|
58
|
+
--chip-shadow-hover: 0 4px 14px rgb(79 70 229 / 20%);
|
|
59
|
+
|
|
60
|
+
/* ============ Select / tooltip : panneaux à halo ============ */
|
|
61
|
+
--select-popup-bg: #ffffff;
|
|
62
|
+
--select-popup-shadow: 0 16px 48px rgb(79 70 229 / 18%), 0 4px 16px rgb(190 24 93 / 10%);
|
|
63
|
+
--tooltip-bg: #16203a;
|
|
64
|
+
--tooltip-fg: #f7f9fc;
|
|
65
|
+
|
|
66
|
+
/* ============ Dialog : halo aurora ample ============ */
|
|
67
|
+
--dialog-bg: #ffffff;
|
|
68
|
+
--dialog-radius: 20px;
|
|
69
|
+
--dialog-border-width: 0;
|
|
70
|
+
--dialog-shadow: 0 24px 64px rgb(79 70 229 / 22%), 0 8px 24px rgb(190 24 93 / 12%);
|
|
71
|
+
|
|
72
|
+
/* ============ Card : LA vitrine — double halo coloré, lève au survol ============ */
|
|
73
|
+
--card-bg: #ffffff;
|
|
74
|
+
--card-filled-bg: #f1f0fe; /* teinte indigo très pâle */
|
|
75
|
+
--card-radius: 16px;
|
|
76
|
+
--card-shadow: 0 6px 24px rgb(79 70 229 / 14%), 0 2px 8px rgb(190 24 93 / 8%);
|
|
77
|
+
--card-shadow-hover: 0 14px 40px rgb(79 70 229 / 22%), 0 6px 18px rgb(190 24 93 / 12%);
|
|
78
|
+
--card-transition: transform 200ms ease, box-shadow 200ms ease;
|
|
79
|
+
--card-transform-hover: translateY(-3px);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Élévation COLORÉE des boutons — la couleur suit le mode résolu (var(--btn-fill)), donc au
|
|
83
|
+
niveau ÉLÉMENT. Voile aurora subtil sur les filled (label blanc AA conservé : voile translucide
|
|
84
|
+
violet sur un fill déjà sombre). Disabled : la lib force background-image/box-shadow à none. */
|
|
85
|
+
[data-theme='aurora'] [ktButton][data-mode='filled'] {
|
|
86
|
+
--btn-fill-image: linear-gradient(135deg, transparent 40%, rgb(124 58 237 / 35%));
|
|
87
|
+
--btn-shadow:
|
|
88
|
+
0 4px 14px color-mix(in srgb, var(--btn-fill) 38%, transparent),
|
|
89
|
+
0 2px 6px color-mix(in srgb, var(--btn-fill) 24%, transparent);
|
|
90
|
+
--btn-shadow-hover:
|
|
91
|
+
0 8px 22px color-mix(in srgb, var(--btn-fill) 50%, transparent),
|
|
92
|
+
0 4px 10px color-mix(in srgb, var(--btn-fill) 32%, transparent);
|
|
93
|
+
}
|
|
94
|
+
[data-theme='aurora'] [ktButton]:is([data-mode='tonal'], [data-mode='outlined'], [data-mode='text']) {
|
|
95
|
+
--btn-shadow: 0 2px 8px rgb(22 32 58 / 8%);
|
|
96
|
+
--btn-shadow-hover: 0 6px 18px color-mix(in srgb, var(--btn-fg) 22%, transparent);
|
|
97
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* Thème « Bootstrap 5 » (light) — uniquement des redéclarations de tokens.
|
|
2
|
+
Signature Bootstrap : stack système, radius .375rem (6px), focus ring translucide large.
|
|
3
|
+
AA-corrigé : les officiels #0d6efd (~4.4:1) et #dc3545 (~4.3:1) échouent de peu sur blanc
|
|
4
|
+
→ on prend leurs variantes hover (#0b5ed7, #bb2d3b), quasi indiscernables et AA. */
|
|
5
|
+
[data-theme='bootstrap'] {
|
|
6
|
+
/* ============ Socle ============ */
|
|
7
|
+
--kt-primary: #0b5ed7; /* btn-primary hover — blanc 5.8:1 */
|
|
8
|
+
--kt-danger: #bb2d3b; /* btn-danger hover — blanc 5.9:1 */
|
|
9
|
+
--kt-neutral: #6c757d; /* secondary — blanc 4.7:1 */
|
|
10
|
+
--kt-surface: #ffffff;
|
|
11
|
+
--kt-on-surface: #212529; /* body-color */
|
|
12
|
+
--kt-muted: #6c757d; /* secondary-color */
|
|
13
|
+
--kt-outline: #ced4da; /* border des inputs (authentique, < 3:1 — fidélité > 1.4.11 ici) */
|
|
14
|
+
--kt-outline-strong: #adb5bd;
|
|
15
|
+
--kt-font: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
16
|
+
|
|
17
|
+
/* ============ Géométrie ============ */
|
|
18
|
+
--kt-control-radius: 6px; /* .375rem */
|
|
19
|
+
--btn-radius: 6px;
|
|
20
|
+
|
|
21
|
+
/* ============ Champs : le fameux ring translucide large de Bootstrap ============ */
|
|
22
|
+
--field-focus-ring-width: 4px; /* .25rem */
|
|
23
|
+
--field-focus-ring: rgb(13 110 253 / 25%);
|
|
24
|
+
/* LA transition des .form-control Bootstrap (rétrofit lot 3). */
|
|
25
|
+
--field-transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
|
26
|
+
|
|
27
|
+
/* ============ Boutons ============ */
|
|
28
|
+
--btn-on-primary-container: #052c65; /* ≈ text-emphasis sur -subtle */
|
|
29
|
+
--btn-on-danger-container: #58151c;
|
|
30
|
+
--btn-on-neutral-container: #212529;
|
|
31
|
+
|
|
32
|
+
/* ============ Tooltip ============ */
|
|
33
|
+
--tooltip-bg: #212529;
|
|
34
|
+
--tooltip-fg: #ffffff;
|
|
35
|
+
|
|
36
|
+
/* ============ Dialog (Bootstrap 5 : rayon .5rem, ombre modale) ============ */
|
|
37
|
+
--dialog-radius: 0.5rem;
|
|
38
|
+
--dialog-border-color: rgb(0 0 0 / 17.5%);
|
|
39
|
+
--dialog-shadow: 0 0.5rem 1rem rgb(0 0 0 / 15%);
|
|
40
|
+
|
|
41
|
+
/* ============ Card (Bootstrap : rayon .5rem, bord + ombre-sm) ============ */
|
|
42
|
+
--card-radius: 0.5rem;
|
|
43
|
+
--card-border-color: rgb(0 0 0 / 17.5%);
|
|
44
|
+
--card-filled-bg: #f8f9fa; /* bg-body-tertiary */
|
|
45
|
+
--card-shadow: 0 0.125rem 0.25rem rgb(0 0 0 / 7.5%); /* shadow-sm */
|
|
46
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/* Thème « IBM Carbon » (light, White/g10) — uniquement des redéclarations de tokens.
|
|
2
|
+
Signature Carbon : coins CARRÉS partout (radius 0) — le stress-test géométrie du contrat —,
|
|
3
|
+
champs gris #f4f4f4, bleu interactif #0f62fe, IBM Plex Sans (stack avec repli système). */
|
|
4
|
+
[data-theme='carbon'] {
|
|
5
|
+
/* ============ Socle ============ */
|
|
6
|
+
--kt-primary: #0043ce; /* interactive — blanc 7.6:1 (AAA) */
|
|
7
|
+
--kt-danger: #750e13; /* support-error — blanc 9.0:1 (AAA) */
|
|
8
|
+
--kt-neutral: #393939; /* button-secondary Carbon */
|
|
9
|
+
--kt-surface: #ffffff;
|
|
10
|
+
--kt-on-surface: #161616; /* text-primary */
|
|
11
|
+
--kt-muted: #525252; /* text-secondary, ~7.4:1 */
|
|
12
|
+
--kt-outline: #8d8d8d; /* border-strong (les inputs Carbon ont une bordure marquée) */
|
|
13
|
+
--kt-outline-strong: #161616;
|
|
14
|
+
--kt-font: 'IBM Plex Sans', system-ui, sans-serif;
|
|
15
|
+
|
|
16
|
+
/* ============ Géométrie : coins carrés ============ */
|
|
17
|
+
--kt-control-radius: 0;
|
|
18
|
+
--btn-radius: 0; /* bascule : 0 sur toutes les tailles */
|
|
19
|
+
--kt-sheet-radius: 0;
|
|
20
|
+
--chip-radius: 0;
|
|
21
|
+
|
|
22
|
+
/* ============ Champs ============ */
|
|
23
|
+
--field-bg: #f4f4f4; /* field-01 sur fond blanc */
|
|
24
|
+
/* L'input Carbon authentique : fill gris + UNIQUEMENT la bordure du bas
|
|
25
|
+
(rétrofit lot 5, bordures par côté) ; le menu du select garde sa bordure complète. */
|
|
26
|
+
--field-border-width: 0 0 1px 0;
|
|
27
|
+
--select-popup-border-width: 1px;
|
|
28
|
+
|
|
29
|
+
/* ============ Boutons ============ */
|
|
30
|
+
--btn-letter-spacing: 0.01em; /* body-compact Carbon, +0.16px (rétrofit lot 6) */
|
|
31
|
+
--btn-on-primary-container: #002c9b; /* sur container dérivé bleu pâle, >7:1 (AAA) */
|
|
32
|
+
--btn-on-danger-container: #750e13;
|
|
33
|
+
--btn-on-neutral-container: #161616;
|
|
34
|
+
|
|
35
|
+
/* ============ Tooltip ============ */
|
|
36
|
+
--tooltip-bg: #393939;
|
|
37
|
+
--tooltip-fg: #ffffff;
|
|
38
|
+
|
|
39
|
+
/* ============ Dialog (IBM Carbon : angles vifs, sans bord) ============ */
|
|
40
|
+
--dialog-radius: 0;
|
|
41
|
+
--dialog-border-width: 0;
|
|
42
|
+
--dialog-shadow: 0 2px 6px rgb(0 0 0 / 20%);
|
|
43
|
+
--kt-sheet-shadow: 0 -2px 6px rgb(0 0 0 / 30%); /* ombre minimale et nette (Carbon) */
|
|
44
|
+
|
|
45
|
+
/* ============ Card (IBM Carbon : tuile carrée, layer-01) ============ */
|
|
46
|
+
--card-radius: 0;
|
|
47
|
+
--card-filled-bg: #f4f4f4; /* layer-01 */
|
|
48
|
+
--card-shadow: 0 2px 6px rgb(0 0 0 / 20%); /* élévation nette, sans flou diffus */
|
|
49
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/* Thème « Catppuccin Mocha » (dark) — uniquement des redéclarations de tokens.
|
|
2
|
+
Palette officielle Mocha : base #1e1e2e, pastels doux (mauve en accent, red en danger).
|
|
3
|
+
Inversions dark : labels sombres sur fills pastel clairs, on-containers clairs,
|
|
4
|
+
--btn-fg-weight neutralisé, color-scheme dark.
|
|
5
|
+
Unique représentant des « palettes d'éditeur » (Dracula et Nord supprimés, 2026-06-12).
|
|
6
|
+
Rappel du pattern démontré par Nord pour un danger en TON MOYEN (échoue des deux côtés) :
|
|
7
|
+
l'assombrir en fill (--kt-danger) ET l'éclaircir en texte via les dérivés séparables
|
|
8
|
+
--btn-danger-fg / --field-error-color / --field-required-color. Inutile ici : le red
|
|
9
|
+
Mocha #f38ba8 est assez clair pour servir tel quel (texte 6.9:1, label sombre 8.1:1). */
|
|
10
|
+
[data-theme='catppuccin'] {
|
|
11
|
+
color-scheme: dark;
|
|
12
|
+
|
|
13
|
+
/* ============ Socle ============ */
|
|
14
|
+
--kt-surface: #1e1e2e; /* base */
|
|
15
|
+
--kt-on-surface: #cdd6f4; /* text, ~12:1 */
|
|
16
|
+
--kt-muted: #a6adc8; /* subtext0, ~7.4:1 */
|
|
17
|
+
--kt-outline: #6c7086; /* overlay0 */
|
|
18
|
+
--kt-outline-strong: #9399b2; /* overlay2 */
|
|
19
|
+
--kt-primary: #cba6f7; /* mauve, ~8.5:1 en texte */
|
|
20
|
+
--kt-danger: #f38ba8; /* red, ~6.9:1 */
|
|
21
|
+
--kt-neutral: #585b70; /* surface2 */
|
|
22
|
+
--kt-focus-ring-color: #cba6f7;
|
|
23
|
+
--kt-font: 'JetBrains Mono', ui-monospace, monospace; /* thème d'éditeur => mono assumée */
|
|
24
|
+
|
|
25
|
+
/* Gouttière façon éditeur : thumb surface2 (overlay) sur le mantle, comme la scrollbar Mocha. */
|
|
26
|
+
--kt-scrollbar-color: #585b70 #181825;
|
|
27
|
+
|
|
28
|
+
/* ============ Champs ============ */
|
|
29
|
+
--field-bg: #313244; /* surface0 */
|
|
30
|
+
--field-focus-ring: color-mix(in srgb, #cba6f7 60%, transparent);
|
|
31
|
+
|
|
32
|
+
/* ============ Boutons : inversions dark ============ */
|
|
33
|
+
--btn-on-primary: #11111b; /* crust sur mauve, 9.2:1 */
|
|
34
|
+
--btn-on-danger: #11111b; /* 8.1:1 */
|
|
35
|
+
--btn-on-neutral: #ffffff; /* 6.7:1 sur surface2 */
|
|
36
|
+
--btn-on-primary-container: #e2d5fb;
|
|
37
|
+
--btn-on-neutral-container: #cdd6f4;
|
|
38
|
+
--btn-on-danger-container: #f8c8d4;
|
|
39
|
+
--btn-fg-weight: 100%;
|
|
40
|
+
--btn-neutral-fg: #bac2de; /* subtext1 */
|
|
41
|
+
--btn-tonal-weight: 24%;
|
|
42
|
+
|
|
43
|
+
/* ============ Caret + sélection (rétrofit lot 6 — l'identité d'un thème d'éditeur) ============ */
|
|
44
|
+
--field-caret-color: #f5e0dc; /* rosewater, LE curseur Catppuccin officiel */
|
|
45
|
+
--kt-selection-bg: #585b70; /* surface2 */
|
|
46
|
+
--kt-selection-fg: #cdd6f4;
|
|
47
|
+
|
|
48
|
+
/* ============ Select / tooltip ============ */
|
|
49
|
+
--select-popup-bg: #313244;
|
|
50
|
+
--select-popup-shadow: 0 8px 24px rgb(17 17 27 / 60%);
|
|
51
|
+
--kt-sheet-shadow: 0 -8px 24px rgb(17 17 27 / 60%);
|
|
52
|
+
--kt-sheet-scrim: rgb(17 17 27 / 60%);
|
|
53
|
+
--tooltip-bg: #313244;
|
|
54
|
+
--tooltip-fg: #cdd6f4;
|
|
55
|
+
|
|
56
|
+
/* ============ Dialog (Mocha dark) ============ */
|
|
57
|
+
--dialog-bg: #181825; /* mantle, légèrement sous la base */
|
|
58
|
+
--dialog-radius: 12px;
|
|
59
|
+
--dialog-border-color: #313244;
|
|
60
|
+
|
|
61
|
+
/* ============ Card (Mocha : surface élevée surface0/1) ============ */
|
|
62
|
+
--card-bg: #313244; /* surface0, au-dessus de la base */
|
|
63
|
+
--card-filled-bg: #45475a; /* surface1 */
|
|
64
|
+
--card-radius: 12px;
|
|
65
|
+
--card-shadow: 0 4px 12px rgb(17 17 27 / 45%);
|
|
66
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/* Thème « Cyberpunk » (dark, néon ANIMÉ) — vitrine ANIMATION + LASER du système de tokens.
|
|
2
|
+
Fusionne les deux bancs d'essai retirés (2026-06) :
|
|
3
|
+
- moteur d'animation par @property typés (ex-Motion) : --cyber-angle/-breathe/-laser animés
|
|
4
|
+
sur :root, consommés dans les ombres via cos()/sin() => la lumière ORBITE + balayage LASER ;
|
|
5
|
+
- fills en dégradé duotone + glows néon au niveau élément (ex-Synthwave).
|
|
6
|
+
TOUT le mouvement est derrière prefers-reduced-motion (repli néon STATIQUE — aucune régression
|
|
7
|
+
a11y, le glow orbital se fige à l'angle 0). Cyan électrique, magenta, quasi-noir bleuté, Oxanium.
|
|
8
|
+
|
|
9
|
+
Les @property sont permis car ce sont des tokens PRIVÉS du thème — jamais sur les tokens
|
|
10
|
+
publics de la lib (ça casserait leur surcharge par redéclaration). */
|
|
11
|
+
|
|
12
|
+
@property --cyber-angle {
|
|
13
|
+
syntax: '<angle>';
|
|
14
|
+
inherits: true;
|
|
15
|
+
initial-value: 0deg;
|
|
16
|
+
}
|
|
17
|
+
@property --cyber-breathe {
|
|
18
|
+
syntax: '<length>';
|
|
19
|
+
inherits: true;
|
|
20
|
+
initial-value: 0px;
|
|
21
|
+
}
|
|
22
|
+
@property --cyber-laser {
|
|
23
|
+
syntax: '<length>';
|
|
24
|
+
inherits: true;
|
|
25
|
+
initial-value: -400px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@keyframes cyber-orbit {
|
|
29
|
+
to {
|
|
30
|
+
--cyber-angle: 360deg;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
@keyframes cyber-breathe {
|
|
34
|
+
to {
|
|
35
|
+
--cyber-breathe: 7px;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
@keyframes cyber-laser {
|
|
39
|
+
to {
|
|
40
|
+
--cyber-laser: 2600px;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
[data-theme='cyberpunk'] {
|
|
45
|
+
color-scheme: dark;
|
|
46
|
+
|
|
47
|
+
/* ============ Socle (cyan/magenta sur quasi-noir) ============ */
|
|
48
|
+
--kt-surface: #0b0f1a;
|
|
49
|
+
--kt-on-surface: #e6f6ff; /* ~15:1 */
|
|
50
|
+
--kt-muted: #94b2c8; /* ~7:1 */
|
|
51
|
+
--kt-outline: #2f5a73; /* 3:1 non-texte */
|
|
52
|
+
--kt-outline-strong: #5fb6da;
|
|
53
|
+
--kt-primary: #28d6ef; /* cyan, texte ~10:1 */
|
|
54
|
+
--kt-danger: #ff3d8b; /* magenta, texte ~6:1 */
|
|
55
|
+
--kt-neutral: #2b3950;
|
|
56
|
+
--kt-focus-ring-color: #28d6ef;
|
|
57
|
+
--kt-font: 'Oxanium', system-ui, sans-serif;
|
|
58
|
+
|
|
59
|
+
/* Gouttière néon cyan sur la nuit. */
|
|
60
|
+
--kt-scrollbar-color: #28d6ef #10182a;
|
|
61
|
+
|
|
62
|
+
/* Feuille / popup : anneau cyan + ombre profonde. */
|
|
63
|
+
--kt-sheet-shadow: 0 0 0 1px rgb(40 214 239 / 25%), 0 -8px 32px rgb(0 0 0 / 65%);
|
|
64
|
+
--kt-sheet-scrim: rgb(4 8 18 / 70%);
|
|
65
|
+
|
|
66
|
+
/* Caret + sélection. */
|
|
67
|
+
--field-caret-color: #28d6ef;
|
|
68
|
+
--kt-selection-bg: #28d6ef;
|
|
69
|
+
--kt-selection-fg: #04141a;
|
|
70
|
+
|
|
71
|
+
/* ============ Géométrie HUD : coins chanfreinés ============ */
|
|
72
|
+
--kt-control-radius: 4px;
|
|
73
|
+
--btn-radius: 6px;
|
|
74
|
+
--btn-corner-shape: bevel; /* coins coupés façon interface SF */
|
|
75
|
+
--kt-sheet-radius: 8px;
|
|
76
|
+
--chip-radius: 4px;
|
|
77
|
+
|
|
78
|
+
/* ============ Champs : lavis sombre + halo bicolore qui ORBITE au focus ============ */
|
|
79
|
+
--field-bg: #10182a;
|
|
80
|
+
--field-focus-ring: color-mix(in srgb, #28d6ef 60%, transparent);
|
|
81
|
+
--field-transition: border-color 200ms ease;
|
|
82
|
+
--field-shadow-hover: 0 0 calc(7px + var(--cyber-breathe)) rgb(40 214 239 / 30%);
|
|
83
|
+
--field-shadow-focus:
|
|
84
|
+
calc(cos(var(--cyber-angle)) * 10px) calc(sin(var(--cyber-angle)) * 10px) 16px -4px rgb(40 214 239 / 70%),
|
|
85
|
+
calc(cos(var(--cyber-angle)) * -10px) calc(sin(var(--cyber-angle)) * -10px) 16px -4px rgb(255 61 139 / 55%),
|
|
86
|
+
0 0 calc(8px + var(--cyber-breathe)) rgb(40 214 239 / 30%);
|
|
87
|
+
|
|
88
|
+
/* ============ Boutons : inversions dark + pulsation au clic ============ */
|
|
89
|
+
--btn-on-primary: #04141a; /* sur cyan, AAA */
|
|
90
|
+
--btn-on-danger: #2a0312; /* sur magenta */
|
|
91
|
+
--btn-on-neutral: #ffffff;
|
|
92
|
+
--btn-on-primary-container: #b6f4ff;
|
|
93
|
+
--btn-on-neutral-container: #d4e2ee;
|
|
94
|
+
--btn-on-danger-container: #ffd0e2;
|
|
95
|
+
--btn-fg-weight: 100%;
|
|
96
|
+
--btn-neutral-fg: #a9c4da;
|
|
97
|
+
--btn-tonal-weight: 24%;
|
|
98
|
+
--btn-font-weight: 600;
|
|
99
|
+
--btn-letter-spacing: 0.03em;
|
|
100
|
+
--btn-transition: transform 140ms ease;
|
|
101
|
+
--btn-transform-active: scale(0.95);
|
|
102
|
+
|
|
103
|
+
/* ============ Chips ============ */
|
|
104
|
+
--chip-bg: color-mix(in srgb, #28d6ef 14%, transparent);
|
|
105
|
+
--chip-border: color-mix(in srgb, #28d6ef 30%, transparent);
|
|
106
|
+
--chip-shadow-hover: 0 0 14px rgb(40 214 239 / 45%);
|
|
107
|
+
|
|
108
|
+
/* ============ Select / tooltip ============ */
|
|
109
|
+
--select-popup-bg: #10182a;
|
|
110
|
+
--select-popup-shadow: 0 0 0 1px rgb(40 214 239 / 25%), 0 12px 40px rgb(0 0 0 / 65%);
|
|
111
|
+
--tooltip-bg: #10182a;
|
|
112
|
+
--tooltip-fg: #e6f6ff;
|
|
113
|
+
|
|
114
|
+
/* ============ Dialog : panneau HUD ============ */
|
|
115
|
+
--dialog-bg: #10182a;
|
|
116
|
+
--dialog-border-color: rgb(40 214 239 / 35%);
|
|
117
|
+
--dialog-radius: 8px;
|
|
118
|
+
--dialog-anim-from-transform: scale(0.96);
|
|
119
|
+
|
|
120
|
+
/* ============ Card : panneau néon, ombre qui orbite (+ laser en bord haut, cf. ::before) ============ */
|
|
121
|
+
--card-bg: #10182a;
|
|
122
|
+
--card-filled-bg: #16203a;
|
|
123
|
+
--card-radius: 6px;
|
|
124
|
+
--card-shadow:
|
|
125
|
+
calc(cos(var(--cyber-angle)) * 8px) calc(sin(var(--cyber-angle)) * 8px) 22px -8px rgb(40 214 239 / 40%),
|
|
126
|
+
0 8px 32px rgb(0 0 0 / 60%);
|
|
127
|
+
--card-shadow-hover:
|
|
128
|
+
calc(cos(var(--cyber-angle)) * 12px) calc(sin(var(--cyber-angle)) * 12px) 26px -6px rgb(40 214 239 / 60%),
|
|
129
|
+
0 10px 36px rgb(0 0 0 / 65%);
|
|
130
|
+
--card-transition: box-shadow 160ms ease;
|
|
131
|
+
|
|
132
|
+
/* ============ Tabs : base pour le laser ============ */
|
|
133
|
+
--tab-indicator-width: 0;
|
|
134
|
+
--tab-list-border-color: transparent;
|
|
135
|
+
--tab-bg: transparent;
|
|
136
|
+
--tab-bg-hover: rgb(16 24 42 / 60%);
|
|
137
|
+
--tab-bg-active: #10182a;
|
|
138
|
+
--tab-radius: 6px 6px 0 0;
|
|
139
|
+
--tab-border: none;
|
|
140
|
+
--tab-margin: 0 4px 0 0;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* Fills DUOTONE cyan→magenta (ex-Synthwave) : niveau élément pour substituer var(--btn-fill) ;
|
|
144
|
+
le voile d'état s'empile par-dessus. Glow ORBITAL (ex-Motion). Disabled : la lib force none. */
|
|
145
|
+
[data-theme='cyberpunk'] [ktButton][data-mode='filled'] {
|
|
146
|
+
--btn-fill-image: linear-gradient(135deg, transparent 30%, rgb(255 61 139 / 55%));
|
|
147
|
+
--btn-shadow:
|
|
148
|
+
calc(cos(var(--cyber-angle)) * 8px) calc(sin(var(--cyber-angle)) * 8px) 14px -4px
|
|
149
|
+
color-mix(in srgb, var(--btn-fill) 85%, transparent),
|
|
150
|
+
calc(cos(var(--cyber-angle)) * -8px) calc(sin(var(--cyber-angle)) * -8px) 14px -4px rgb(255 61 139 / 55%);
|
|
151
|
+
--btn-shadow-hover:
|
|
152
|
+
calc(cos(var(--cyber-angle)) * 12px) calc(sin(var(--cyber-angle)) * 12px) 18px -2px
|
|
153
|
+
color-mix(in srgb, var(--btn-fill) 95%, transparent),
|
|
154
|
+
0 0 calc(12px + var(--cyber-breathe) * 2) color-mix(in srgb, var(--btn-fill) 50%, transparent);
|
|
155
|
+
}
|
|
156
|
+
[data-theme='cyberpunk'] [ktButton]:is([data-mode='tonal'], [data-mode='outlined'], [data-mode='text']) {
|
|
157
|
+
--btn-shadow-hover: 0 0 14px color-mix(in srgb, var(--btn-fg) 60%, transparent);
|
|
158
|
+
--btn-shadow-focus: 0 0 16px color-mix(in srgb, var(--btn-fg) 75%, transparent);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* LASER en bord HAUT des cartes : ligne néon qui balaie (signature « partout »). Le pseudo
|
|
162
|
+
est libre (le lien étiré utilise ::after du lien, pas de la carte). z-index au-dessus du média. */
|
|
163
|
+
[data-theme='cyberpunk'] [ktCard] {
|
|
164
|
+
isolation: isolate;
|
|
165
|
+
}
|
|
166
|
+
[data-theme='cyberpunk'] [ktCard]::before {
|
|
167
|
+
content: '';
|
|
168
|
+
position: absolute;
|
|
169
|
+
inset-block-start: 0;
|
|
170
|
+
inset-inline: 0;
|
|
171
|
+
block-size: 2px;
|
|
172
|
+
background: linear-gradient(
|
|
173
|
+
90deg,
|
|
174
|
+
transparent calc(var(--cyber-laser) - 220px),
|
|
175
|
+
#0ff calc(var(--cyber-laser) - 40px),
|
|
176
|
+
var(--kt-primary) var(--cyber-laser),
|
|
177
|
+
transparent calc(var(--cyber-laser) + 180px)
|
|
178
|
+
);
|
|
179
|
+
z-index: 2;
|
|
180
|
+
pointer-events: none;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/* LASER de la liste d'onglets (repris de Motion). */
|
|
184
|
+
[data-theme='cyberpunk'] [ngTabList] {
|
|
185
|
+
position: relative;
|
|
186
|
+
}
|
|
187
|
+
[data-theme='cyberpunk'] [ngTabList]::after {
|
|
188
|
+
content: '';
|
|
189
|
+
position: absolute;
|
|
190
|
+
inset-inline: 0;
|
|
191
|
+
inset-block-end: 0;
|
|
192
|
+
block-size: 1px;
|
|
193
|
+
background: linear-gradient(
|
|
194
|
+
90deg,
|
|
195
|
+
var(--kt-outline) calc(var(--cyber-laser) - 150px),
|
|
196
|
+
#0ff var(--cyber-laser),
|
|
197
|
+
var(--kt-primary) calc(var(--cyber-laser) + 20px),
|
|
198
|
+
var(--kt-outline) calc(var(--cyber-laser) + 150px)
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/* MOTEUR d'animation — UNIQUEMENT hors prefers-reduced-motion. Sinon : --cyber-angle reste 0
|
|
203
|
+
=> glow figé (cos0=1,sin0=0), --cyber-laser hors-champ => lignes laser invisibles. Néon statique. */
|
|
204
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
205
|
+
[data-theme='cyberpunk'] {
|
|
206
|
+
animation:
|
|
207
|
+
cyber-orbit 4s linear infinite,
|
|
208
|
+
cyber-breathe 5s ease-in-out infinite alternate,
|
|
209
|
+
cyber-laser 3.2s linear infinite;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/* Thème « Microsoft Fluent 2 » (light) — uniquement des redéclarations de tokens.
|
|
2
|
+
Signature Fluent : Segoe UI, radius 4px, gris doux, bleu brand #0f6cbd, élévations subtiles. */
|
|
3
|
+
[data-theme='fluent'] {
|
|
4
|
+
/* ============ Socle ============ */
|
|
5
|
+
--kt-primary: #0f6cbd; /* brand-80 — blanc 5.4:1 */
|
|
6
|
+
--kt-danger: #c50f1f; /* status-danger — blanc 6.1:1 */
|
|
7
|
+
--kt-neutral: #424242;
|
|
8
|
+
--kt-surface: #fafafa; /* neutral-background-2 */
|
|
9
|
+
--kt-on-surface: #242424;
|
|
10
|
+
--kt-muted: #616161; /* neutral-foreground-3 */
|
|
11
|
+
--kt-outline: #d1d1d1; /* neutral-stroke-1 */
|
|
12
|
+
--kt-outline-strong: #757575;
|
|
13
|
+
--kt-font: 'Segoe UI Variable', 'Segoe UI', system-ui, sans-serif;
|
|
14
|
+
|
|
15
|
+
/* ============ Géométrie ============ */
|
|
16
|
+
--kt-control-radius: 4px; /* border-radius-medium */
|
|
17
|
+
--btn-radius: 4px;
|
|
18
|
+
--chip-radius: 4px;
|
|
19
|
+
|
|
20
|
+
/* ============ Champs ============ */
|
|
21
|
+
--field-bg: #ffffff;
|
|
22
|
+
|
|
23
|
+
/* ============ Boutons : élévation subtile Fluent ============ */
|
|
24
|
+
--btn-shadow: 0 1px 2px rgb(0 0 0 / 10%);
|
|
25
|
+
--btn-font-weight: 600; /* les boutons Fluent sont en semibold (rétrofit lot 6) */
|
|
26
|
+
--btn-on-primary-container: #0c4f87;
|
|
27
|
+
--btn-on-danger-container: #7a0c14;
|
|
28
|
+
--btn-on-neutral-container: #1f1f1f;
|
|
29
|
+
|
|
30
|
+
/* ============ Select / tooltip ============ */
|
|
31
|
+
--select-popup-shadow: 0 8px 16px rgb(0 0 0 / 14%); /* shadow-16 */
|
|
32
|
+
--tooltip-bg: #242424;
|
|
33
|
+
--tooltip-fg: #ffffff;
|
|
34
|
+
|
|
35
|
+
/* ============ Dialog (Fluent 2 : rayon 8, élévation 16 héritée) ============ */
|
|
36
|
+
--dialog-radius: 8px;
|
|
37
|
+
--dialog-border-width: 0;
|
|
38
|
+
|
|
39
|
+
/* ============ Card (Fluent 2 : rayon 8, élévation 4 → 8 au survol) ============ */
|
|
40
|
+
--card-radius: 8px;
|
|
41
|
+
--card-filled-bg: #f5f5f5; /* neutral-background-3 */
|
|
42
|
+
--card-shadow: 0 1px 2px rgb(0 0 0 / 12%), 0 0 2px rgb(0 0 0 / 8%); /* shadow-4 */
|
|
43
|
+
--card-shadow-hover: 0 4px 8px rgb(0 0 0 / 14%), 0 0 2px rgb(0 0 0 / 10%); /* shadow-8 */
|
|
44
|
+
--card-transition: box-shadow 150ms ease;
|
|
45
|
+
}
|