origam 2.18.18 → 2.18.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/CHANGELOG.md +183 -0
  2. package/dist/src/assets/css/main.css +1 -1
  3. package/dist/src/assets/css/tokens/dark.css +124 -6
  4. package/dist/src/assets/css/tokens/light.css +62 -3
  5. package/dist/src/assets/css/tokens/origam-utilities.css +30 -0
  6. package/dist/src/assets/css/tokens/primitive.css +5 -0
  7. package/dist/src/assets/scss/tokens/_dark.scss +124 -6
  8. package/dist/src/assets/scss/tokens/_light.scss +62 -3
  9. package/dist/src/assets/scss/tokens/_origam-utilities.scss +30 -0
  10. package/dist/src/assets/scss/tokens/_primitive.scss +5 -0
  11. package/dist/src/components/Audio/OrigamAudio.vue +66 -2
  12. package/dist/src/components/Chip/OrigamChip.vue +34 -0
  13. package/dist/src/components/Field/OrigamField.vue +76 -3
  14. package/dist/src/components/List/OrigamList.vue +90 -3
  15. package/dist/src/components/Main/OrigamMain.vue +2 -2
  16. package/dist/src/components/Media/OrigamMediaScrubber.vue +11 -1
  17. package/dist/src/components/SliderField/OrigamSliderField.vue +138 -3
  18. package/dist/src/components/SliderField/OrigamSliderFieldTrack.vue +12 -1
  19. package/dist/src/components/Snackbar/OrigamSnackbar.vue +2 -2
  20. package/dist/src/components/Switch/OrigamSwitch.vue +32 -0
  21. package/dist/src/components/TextField/OrigamTextField.vue +3 -1
  22. package/dist/src/components/Video/OrigamVideo.vue +11 -1
  23. package/dist/src/composables/Commons/backdrop.composable.cjs +50 -0
  24. package/dist/src/composables/Commons/backdrop.composable.d.ts +32 -0
  25. package/dist/src/composables/Commons/backdrop.composable.js +33 -0
  26. package/dist/src/composables/Commons/layout.composable.cjs +2 -2
  27. package/dist/src/composables/Commons/layout.composable.d.ts +16 -2
  28. package/dist/src/composables/Commons/layout.composable.js +1 -1
  29. package/dist/src/composables/Commons/opacity.composable.cjs +50 -0
  30. package/dist/src/composables/Commons/opacity.composable.d.ts +33 -0
  31. package/dist/src/composables/Commons/opacity.composable.js +34 -0
  32. package/dist/src/composables/Commons/stateEffect.composable.cjs +17 -2
  33. package/dist/src/composables/Commons/stateEffect.composable.d.ts +7 -2
  34. package/dist/src/composables/Commons/stateEffect.composable.js +23 -2
  35. package/dist/src/composables/Commons/theme-props-resolver.composable.cjs +44 -9
  36. package/dist/src/composables/Commons/theme-props-resolver.composable.d.ts +33 -1
  37. package/dist/src/composables/Commons/theme-props-resolver.composable.js +42 -10
  38. package/dist/src/composables/index.cjs +24 -0
  39. package/dist/src/composables/index.d.ts +2 -0
  40. package/dist/src/composables/index.js +2 -0
  41. package/dist/src/consts/Commons/backdrop.const.cjs +15 -0
  42. package/dist/src/consts/Commons/backdrop.const.d.ts +47 -0
  43. package/dist/src/consts/Commons/backdrop.const.js +9 -0
  44. package/dist/src/consts/Commons/opacity.const.cjs +20 -0
  45. package/dist/src/consts/Commons/opacity.const.d.ts +58 -0
  46. package/dist/src/consts/Commons/opacity.const.js +14 -0
  47. package/dist/src/consts/Commons/variant-preset.const.cjs +8 -0
  48. package/dist/src/consts/Commons/variant-preset.const.d.ts +60 -0
  49. package/dist/src/consts/Commons/variant-preset.const.js +2 -0
  50. package/dist/src/consts/index.cjs +33 -0
  51. package/dist/src/consts/index.d.ts +3 -0
  52. package/dist/src/consts/index.js +3 -0
  53. package/dist/src/interfaces/Commons/backdrop.interface.cjs +1 -0
  54. package/dist/src/interfaces/Commons/backdrop.interface.d.ts +49 -0
  55. package/dist/src/interfaces/Commons/backdrop.interface.js +0 -0
  56. package/dist/src/interfaces/Commons/opacity.interface.cjs +1 -0
  57. package/dist/src/interfaces/Commons/opacity.interface.d.ts +37 -0
  58. package/dist/src/interfaces/Commons/opacity.interface.js +0 -0
  59. package/dist/src/interfaces/Commons/state-effect.interface.d.ts +31 -0
  60. package/dist/src/interfaces/Commons/theme.interface.d.ts +33 -0
  61. package/dist/src/interfaces/Masonry/masonry.interface.d.ts +2 -2
  62. package/dist/src/interfaces/index.cjs +22 -0
  63. package/dist/src/interfaces/index.d.ts +2 -0
  64. package/dist/src/interfaces/index.js +2 -0
  65. package/dist/src/origam.cjs +2 -1
  66. package/dist/src/origam.js +8 -2
  67. package/dist/src/types/Commons/backdrop.type.cjs +1 -0
  68. package/dist/src/types/Commons/backdrop.type.d.ts +23 -0
  69. package/dist/src/types/Commons/backdrop.type.js +0 -0
  70. package/dist/src/types/Commons/opacity.type.cjs +1 -0
  71. package/dist/src/types/Commons/opacity.type.d.ts +36 -0
  72. package/dist/src/types/Commons/opacity.type.js +0 -0
  73. package/dist/src/types/Commons/state-effect.type.d.ts +2 -1
  74. package/dist/src/types/Commons/variant-preset.type.cjs +1 -0
  75. package/dist/src/types/Commons/variant-preset.type.d.ts +73 -0
  76. package/dist/src/types/Commons/variant-preset.type.js +0 -0
  77. package/dist/src/types/index.cjs +33 -0
  78. package/dist/src/types/index.d.ts +3 -0
  79. package/dist/src/types/index.js +3 -0
  80. package/dist/src/types/tokens.type.d.ts +1 -1
  81. package/package.json +1 -1
@@ -524,6 +524,15 @@
524
524
  --origam-chip__filter---transition-property: transform, opacity;
525
525
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
526
526
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
527
+ /* #595 — canaux C2 ouverts : lus par OrigamChip, declares par personne. Valeurs = le repli deja rendu. Les hauteurs ne passent PAS par l echelle `space` : 38px et 44px n y ont aucun barreau. */
528
+ --origam-chip---height-xs: 20px;
529
+ --origam-chip---height-sm: 24px;
530
+ --origam-chip---height-md: 32px;
531
+ --origam-chip---height-lg: 38px;
532
+ --origam-chip---height-xl: 44px;
533
+ --origam-chip---border-radius-rounded: var(--origam-radius---xl);
534
+ --origam-chip__close---margin-inline-start: 6px;
535
+ --origam-chip__close---margin-inline-end: -4px;
527
536
  --origam-avatar---background-color: var(--origam-color__surface---overlay);
528
537
  --origam-avatar---color: var(--origam-color__text---secondary);
529
538
  --origam-avatar---border-color: currentColor;
@@ -1133,7 +1142,7 @@
1133
1142
  --origam-field---padding-top: var(--origam-space---2);
1134
1143
  --origam-field---padding-bottom: 6px;
1135
1144
  --origam-field---font-size: 16px;
1136
- --origam-field---letter-spacing: var(--origam-font__letterSpacing---wide);
1145
+ --origam-field---letter-spacing: 0.009375em; /* #595 — PAS `letterSpacing---wide` (0.0094em) : `.origam-field` et `.origam-field__input` livrent 0.009375em en dur depuis toujours. Le barreau de l echelle en differe de 0.000025em, assez pour deplacer la piste de tous les champs. Valeur reellement livree, barreau assume hors echelle — meme arbitrage que `--origam-input__details---padding-top: 6px` (#595). */
1137
1146
  --origam-field---border-radius: var(--origam-radius---sm);
1138
1147
  --origam-field---border-color: var(--origam-color__border---default);
1139
1148
  --origam-field---border-width: var(--origam-border__width---thin);
@@ -1152,6 +1161,11 @@
1152
1161
  --origam-field---focus-ring-width: 0px;
1153
1162
  --origam-field---focus-ring-offset: 0px;
1154
1163
  --origam-field--variant-solo---box-shadow: var(--origam-shadow---sm);
1164
+ /* #595 — canaux C2 ouverts : lus par OrigamField, declares par personne. Valeurs = le repli deja rendu. `16px` et `4px` coincident EXACTEMENT avec `radius---xl` et `space---1` (verifie sur primitive.css), donc routes par leurs barreaux ; `0.42` n a aucun barreau (l echelle opacity va 0/12/26/32/50/60/70/87/100), litteral assume ; le `color-mix` est recopie VERBATIM — `currentColor` doit rester substitue sur l element consommateur, pas ici. */
1165
+ --origam-field---border-radius-rounded: var(--origam-radius---xl);
1166
+ --origam-field--inline---padding-inline: var(--origam-space---1);
1167
+ --origam-field--variant-filled---background-color: color-mix(in srgb, currentColor 12%, transparent);
1168
+ --origam-field--variant-filled---border-opacity: 0.42;
1155
1169
  --origam-field---variant-outlined-background-color: rgba(0, 0, 0, 0);
1156
1170
  --origam-field__overlay---background-color: var(--origam-color__overlay---scrim);
1157
1171
  --origam-field__overlay---opacity: var(--origam-opacity---0);
@@ -1819,8 +1833,10 @@
1819
1833
  --origam-list---pointer-events: auto;
1820
1834
  --origam-list---user-select: auto;
1821
1835
  --origam-list---indent-padding: 0px;
1836
+ --origam-list--nav---item-gap: 2px;
1837
+ --origam-list--nav---item-min-height: 44px;
1838
+ --origam-list--nav---item-padding-block: 6px;
1822
1839
  --origam-list---density: 0px;
1823
- --origam-list---indent-padding-nav: -8px;
1824
1840
  --origam-list---slim-prepend-width: 28px;
1825
1841
  --origam-list__overlay---background-color: var(--origam-color__overlay---scrim);
1826
1842
  --origam-list__overlay---border-radius: inherit;
@@ -2278,6 +2294,16 @@
2278
2294
  --origam-switch__label---font-size: var(--origam-font__size---md);
2279
2295
  --origam-switch__label---padding-inline: var(--origam-space---2);
2280
2296
  --origam-switch__input---opacity: 0;
2297
+ /* #595 — canaux C2 ouverts : ces neuf noms etaient lus par OrigamSwitch / OrigamSwitchTrack et declares par personne. Chaque valeur est le repli deja rendu, recopie a l identique. */
2298
+ --origam-switch__thumb---border-color: rgba(0, 0, 0, 0.18);
2299
+ --origam-switch__thumb---color: currentColor;
2300
+ --origam-switch__selection-control---min-height: 56px;
2301
+ --origam-switch__skeleton---width: 52px;
2302
+ --origam-switch__skeleton---height: 32px;
2303
+ --origam-switch__skeleton-track---background-color: color-mix(in srgb, currentColor 14%, transparent);
2304
+ --origam-switch__skeleton-thumb---background-color: color-mix(in srgb, currentColor 28%, transparent);
2305
+ --origam-switch__track--inset---height: 32px;
2306
+ --origam-switch__track--inset---width: 52px;
2281
2307
  --origam-switch---opacity-disabled: var(--origam-opacity---32);
2282
2308
  --origam-slider-field---padding-block: var(--origam-space---2);
2283
2309
  --origam-slider-field---transition-duration: var(--origam-motion__duration---fast);
@@ -2300,11 +2326,24 @@
2300
2326
  --origam-slider-field__tick---size: 4px;
2301
2327
  --origam-slider-field__tick---background-color: var(--origam-color__text---disabled);
2302
2328
  --origam-slider-field__tick---background-color-active: var(--origam-color__action--primary---fg);
2303
- --origam-slider-field__tick---border-radius: var(--origam-radius---full);
2329
+ --origam-slider-field__tick---border-radius: 2px; /* #595 — PAS `radius---full` (9999px) : `.origam-slider-field-track__tick` livre `border-radius: 2px` en dur. Valeur reellement livree. */
2304
2330
  --origam-slider-field__label---color: var(--origam-color__text---secondary);
2305
2331
  --origam-slider-field__label---font-size: var(--origam-font__size---sm);
2306
2332
  --origam-slider-field__label---padding: var(--origam-space---1);
2307
2333
  --origam-slider-field---opacity-disabled: var(--origam-opacity---32);
2334
+ /* #595 — canaux C2 ouverts : lus par OrigamSliderField / OrigamSliderFieldTrack, declares par personne. Valeurs = le repli deja rendu ; les `var()` internes sont recopies VERBATIM pour ne pas fermer le canal `--origam-color__*--inverse---*`, encore non declare. */
2335
+ --origam-slider-field-thumb__surface---border-color: rgba(0, 0, 0, 0.18);
2336
+ --origam-slider-field__buffered---background-color: color-mix(in srgb, currentColor 40%, transparent);
2337
+ --origam-slider-field__buffered---opacity: 0.5;
2338
+ --origam-slider-field__buffered--bare---background-color: color-mix(in srgb, currentColor 40%, transparent);
2339
+ --origam-slider-field__track---transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1);
2340
+ --origam-slider-field__hover-tooltip---background-color: var(--origam-color__surface---inverse);
2341
+ --origam-slider-field__hover-tooltip---color: var(--origam-color__text---inverse);
2342
+ --origam-slider-field--bare---accent-color: var(--origam-color__action--primary---bg);
2343
+ --origam-slider-field--bare---thumb-size: 12px;
2344
+ --origam-slider-field--bare---track-background-color: color-mix(in srgb, currentColor 25%, transparent);
2345
+ --origam-slider-field--bare---track-thickness: 2px;
2346
+ --origam-slider-field--bare---track-thickness-active: 4px;
2308
2347
  --origam-icon---color: currentColor;
2309
2348
  --origam-icon---transition-duration: var(--origam-motion__duration---fast);
2310
2349
  --origam-icon---transition-timing-function: var(--origam-motion__easing---standard);
@@ -2775,6 +2814,26 @@
2775
2814
  --origam-audio--error---padding: var(--origam-space---2) var(--origam-space---3);
2776
2815
  --origam-audio--error---gap: var(--origam-space---2);
2777
2816
  --origam-audio--error---icon-font-size: var(--origam-font__size---lg);
2817
+ /* #594 — canaux C2 ouverts : lus par OrigamAudio depuis des selecteurs VIVANTS, declares par personne. Valeurs = le repli deja rendu. */
2818
+ --origam-audio__header---margin-bottom: 12px;
2819
+ --origam-audio__btn---size: 28px;
2820
+ --origam-audio__btn---icon-size: 16px;
2821
+ --origam-audio__meta-separator---content: "\00B7"; /* #594 — U+00B7 ECHAPPE, et il DOIT le rester. Ecrit en litteral, ce seul caractere non-ASCII faisait emettre a dart-sass un BOM en tete de main.css (`--style=compressed` pose un BOM la ou le mode etendu poserait `@charset`). Un BOM n est PAS retire a l interieur d un `<style>` : il se collait au premier selecteur, qui ne matchait alors plus rien — les 156 declarations primitives mortes, tous les tokens semantiques et derives a vide. Mesure le 2026-09-30 : 7 echecs sur derived-tokens-subtree.spec.ts. L echappement rend le MEME glyphe (verifie en Chromium) et garde la feuille compilee en ASCII pur. Regle : aucune valeur de token ne doit contenir de caractere non-ASCII — utiliser la forme \XXXX. */
2822
+ --origam-audio__playlist---max-height: 220px;
2823
+ --origam-audio__playlist---padding-top: 8px;
2824
+ --origam-audio__playlist---margin-top: 12px;
2825
+ --origam-audio__playlist---border-color: color-mix(in srgb, currentColor 8%, transparent);
2826
+ /* Les deux lignes de meta de la playlist resolvaient `var(--origam-color__text---secondary)` par repli — exactement ce que `--origam-audio---secondary-color` declare deja. Les brancher dessus ouvre les deux canaux ET rend ce token atteignable, a valeur rendue identique. */
2827
+ --origam-audio__playlist-subtitle---color: var(--origam-audio---secondary-color);
2828
+ --origam-audio__playlist-duration---color: var(--origam-audio---secondary-color);
2829
+ --origam-audio__playlist-item__prepend---margin-inline-end: 12px;
2830
+ --origam-audio--compact---padding: 8px 12px;
2831
+ --origam-audio--compact__header---gap: 12px;
2832
+ --origam-audio--compact__btn---size: 24px;
2833
+ --origam-audio--compact__btn---icon-size: 14px;
2834
+ --origam-audio--compact__play-btn---size: 56px;
2835
+ --origam-audio--compact__play-btn---icon-size: 40px;
2836
+ --origam-audio--compact__progress---height: 3px;
2778
2837
  --origam-media-scrubber---color: var(--origam-color__action--primary---bg);
2779
2838
  --origam-media-scrubber---primary: var(--origam-color__action--primary---bg);
2780
2839
  --origam-media-scrubber---track-background-color: var(--origam-color__surface---overlay);
@@ -3486,6 +3545,15 @@
3486
3545
  --origam-chip__filter---transition-property: transform, opacity;
3487
3546
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
3488
3547
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
3548
+ /* #595 — canaux C2 ouverts : lus par OrigamChip, declares par personne. Valeurs = le repli deja rendu. Les hauteurs ne passent PAS par l echelle `space` : 38px et 44px n y ont aucun barreau. */
3549
+ --origam-chip---height-xs: 20px;
3550
+ --origam-chip---height-sm: 24px;
3551
+ --origam-chip---height-md: 32px;
3552
+ --origam-chip---height-lg: 38px;
3553
+ --origam-chip---height-xl: 44px;
3554
+ --origam-chip---border-radius-rounded: var(--origam-radius---xl);
3555
+ --origam-chip__close---margin-inline-start: 6px;
3556
+ --origam-chip__close---margin-inline-end: -4px;
3489
3557
  --origam-avatar---background-color: var(--origam-color__surface---overlay);
3490
3558
  --origam-avatar---color: var(--origam-color__text---secondary);
3491
3559
  --origam-avatar---border-color: currentColor;
@@ -4095,7 +4163,7 @@
4095
4163
  --origam-field---padding-top: var(--origam-space---2);
4096
4164
  --origam-field---padding-bottom: 6px;
4097
4165
  --origam-field---font-size: 16px;
4098
- --origam-field---letter-spacing: var(--origam-font__letterSpacing---wide);
4166
+ --origam-field---letter-spacing: 0.009375em; /* #595 — PAS `letterSpacing---wide` (0.0094em) : `.origam-field` et `.origam-field__input` livrent 0.009375em en dur depuis toujours. Le barreau de l echelle en differe de 0.000025em, assez pour deplacer la piste de tous les champs. Valeur reellement livree, barreau assume hors echelle — meme arbitrage que `--origam-input__details---padding-top: 6px` (#595). */
4099
4167
  --origam-field---border-radius: var(--origam-radius---sm);
4100
4168
  --origam-field---border-color: var(--origam-color__border---default);
4101
4169
  --origam-field---border-width: var(--origam-border__width---thin);
@@ -4114,6 +4182,11 @@
4114
4182
  --origam-field---focus-ring-width: 0px;
4115
4183
  --origam-field---focus-ring-offset: 0px;
4116
4184
  --origam-field--variant-solo---box-shadow: var(--origam-shadow---sm);
4185
+ /* #595 — canaux C2 ouverts : lus par OrigamField, declares par personne. Valeurs = le repli deja rendu. `16px` et `4px` coincident EXACTEMENT avec `radius---xl` et `space---1` (verifie sur primitive.css), donc routes par leurs barreaux ; `0.42` n a aucun barreau (l echelle opacity va 0/12/26/32/50/60/70/87/100), litteral assume ; le `color-mix` est recopie VERBATIM — `currentColor` doit rester substitue sur l element consommateur, pas ici. */
4186
+ --origam-field---border-radius-rounded: var(--origam-radius---xl);
4187
+ --origam-field--inline---padding-inline: var(--origam-space---1);
4188
+ --origam-field--variant-filled---background-color: color-mix(in srgb, currentColor 12%, transparent);
4189
+ --origam-field--variant-filled---border-opacity: 0.42;
4117
4190
  --origam-field---variant-outlined-background-color: rgba(0, 0, 0, 0);
4118
4191
  --origam-field__overlay---background-color: var(--origam-color__overlay---scrim);
4119
4192
  --origam-field__overlay---opacity: var(--origam-opacity---0);
@@ -4781,8 +4854,10 @@
4781
4854
  --origam-list---pointer-events: auto;
4782
4855
  --origam-list---user-select: auto;
4783
4856
  --origam-list---indent-padding: 0px;
4857
+ --origam-list--nav---item-gap: 2px;
4858
+ --origam-list--nav---item-min-height: 44px;
4859
+ --origam-list--nav---item-padding-block: 6px;
4784
4860
  --origam-list---density: 0px;
4785
- --origam-list---indent-padding-nav: -8px;
4786
4861
  --origam-list---slim-prepend-width: 28px;
4787
4862
  --origam-list__overlay---background-color: var(--origam-color__overlay---scrim);
4788
4863
  --origam-list__overlay---border-radius: inherit;
@@ -5239,6 +5314,16 @@
5239
5314
  --origam-switch__label---font-size: var(--origam-font__size---md);
5240
5315
  --origam-switch__label---padding-inline: var(--origam-space---2);
5241
5316
  --origam-switch__input---opacity: 0;
5317
+ /* #595 — canaux C2 ouverts : ces neuf noms etaient lus par OrigamSwitch / OrigamSwitchTrack et declares par personne. Chaque valeur est le repli deja rendu, recopie a l identique. */
5318
+ --origam-switch__thumb---border-color: rgba(0, 0, 0, 0.18);
5319
+ --origam-switch__thumb---color: currentColor;
5320
+ --origam-switch__selection-control---min-height: 56px;
5321
+ --origam-switch__skeleton---width: 52px;
5322
+ --origam-switch__skeleton---height: 32px;
5323
+ --origam-switch__skeleton-track---background-color: color-mix(in srgb, currentColor 14%, transparent);
5324
+ --origam-switch__skeleton-thumb---background-color: color-mix(in srgb, currentColor 28%, transparent);
5325
+ --origam-switch__track--inset---height: 32px;
5326
+ --origam-switch__track--inset---width: 52px;
5242
5327
  --origam-switch---opacity-disabled: var(--origam-opacity---32);
5243
5328
  --origam-slider-field---padding-block: var(--origam-space---2);
5244
5329
  --origam-slider-field---transition-duration: var(--origam-motion__duration---fast);
@@ -5261,11 +5346,24 @@
5261
5346
  --origam-slider-field__tick---size: 4px;
5262
5347
  --origam-slider-field__tick---background-color: var(--origam-color__text---disabled);
5263
5348
  --origam-slider-field__tick---background-color-active: var(--origam-color__action--primary---fg);
5264
- --origam-slider-field__tick---border-radius: var(--origam-radius---full);
5349
+ --origam-slider-field__tick---border-radius: 2px; /* #595 — PAS `radius---full` (9999px) : `.origam-slider-field-track__tick` livre `border-radius: 2px` en dur. Valeur reellement livree. */
5265
5350
  --origam-slider-field__label---color: var(--origam-color__text---secondary);
5266
5351
  --origam-slider-field__label---font-size: var(--origam-font__size---sm);
5267
5352
  --origam-slider-field__label---padding: var(--origam-space---1);
5268
5353
  --origam-slider-field---opacity-disabled: var(--origam-opacity---32);
5354
+ /* #595 — canaux C2 ouverts : lus par OrigamSliderField / OrigamSliderFieldTrack, declares par personne. Valeurs = le repli deja rendu ; les `var()` internes sont recopies VERBATIM pour ne pas fermer le canal `--origam-color__*--inverse---*`, encore non declare. */
5355
+ --origam-slider-field-thumb__surface---border-color: rgba(0, 0, 0, 0.18);
5356
+ --origam-slider-field__buffered---background-color: color-mix(in srgb, currentColor 40%, transparent);
5357
+ --origam-slider-field__buffered---opacity: 0.5;
5358
+ --origam-slider-field__buffered--bare---background-color: color-mix(in srgb, currentColor 40%, transparent);
5359
+ --origam-slider-field__track---transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1);
5360
+ --origam-slider-field__hover-tooltip---background-color: var(--origam-color__surface---inverse);
5361
+ --origam-slider-field__hover-tooltip---color: var(--origam-color__text---inverse);
5362
+ --origam-slider-field--bare---accent-color: var(--origam-color__action--primary---bg);
5363
+ --origam-slider-field--bare---thumb-size: 12px;
5364
+ --origam-slider-field--bare---track-background-color: color-mix(in srgb, currentColor 25%, transparent);
5365
+ --origam-slider-field--bare---track-thickness: 2px;
5366
+ --origam-slider-field--bare---track-thickness-active: 4px;
5269
5367
  --origam-icon---color: currentColor;
5270
5368
  --origam-icon---transition-duration: var(--origam-motion__duration---fast);
5271
5369
  --origam-icon---transition-timing-function: var(--origam-motion__easing---standard);
@@ -5736,6 +5834,26 @@
5736
5834
  --origam-audio--error---padding: var(--origam-space---2) var(--origam-space---3);
5737
5835
  --origam-audio--error---gap: var(--origam-space---2);
5738
5836
  --origam-audio--error---icon-font-size: var(--origam-font__size---lg);
5837
+ /* #594 — canaux C2 ouverts : lus par OrigamAudio depuis des selecteurs VIVANTS, declares par personne. Valeurs = le repli deja rendu. */
5838
+ --origam-audio__header---margin-bottom: 12px;
5839
+ --origam-audio__btn---size: 28px;
5840
+ --origam-audio__btn---icon-size: 16px;
5841
+ --origam-audio__meta-separator---content: "\00B7"; /* #594 — U+00B7 ECHAPPE, et il DOIT le rester. Ecrit en litteral, ce seul caractere non-ASCII faisait emettre a dart-sass un BOM en tete de main.css (`--style=compressed` pose un BOM la ou le mode etendu poserait `@charset`). Un BOM n est PAS retire a l interieur d un `<style>` : il se collait au premier selecteur, qui ne matchait alors plus rien — les 156 declarations primitives mortes, tous les tokens semantiques et derives a vide. Mesure le 2026-09-30 : 7 echecs sur derived-tokens-subtree.spec.ts. L echappement rend le MEME glyphe (verifie en Chromium) et garde la feuille compilee en ASCII pur. Regle : aucune valeur de token ne doit contenir de caractere non-ASCII — utiliser la forme \XXXX. */
5842
+ --origam-audio__playlist---max-height: 220px;
5843
+ --origam-audio__playlist---padding-top: 8px;
5844
+ --origam-audio__playlist---margin-top: 12px;
5845
+ --origam-audio__playlist---border-color: color-mix(in srgb, currentColor 8%, transparent);
5846
+ /* Les deux lignes de meta de la playlist resolvaient `var(--origam-color__text---secondary)` par repli — exactement ce que `--origam-audio---secondary-color` declare deja. Les brancher dessus ouvre les deux canaux ET rend ce token atteignable, a valeur rendue identique. */
5847
+ --origam-audio__playlist-subtitle---color: var(--origam-audio---secondary-color);
5848
+ --origam-audio__playlist-duration---color: var(--origam-audio---secondary-color);
5849
+ --origam-audio__playlist-item__prepend---margin-inline-end: 12px;
5850
+ --origam-audio--compact---padding: 8px 12px;
5851
+ --origam-audio--compact__header---gap: 12px;
5852
+ --origam-audio--compact__btn---size: 24px;
5853
+ --origam-audio--compact__btn---icon-size: 14px;
5854
+ --origam-audio--compact__play-btn---size: 56px;
5855
+ --origam-audio--compact__play-btn---icon-size: 40px;
5856
+ --origam-audio--compact__progress---height: 3px;
5739
5857
  --origam-media-scrubber---color: var(--origam-color__action--primary---bg);
5740
5858
  --origam-media-scrubber---primary: var(--origam-color__action--primary---bg);
5741
5859
  --origam-media-scrubber---track-background-color: var(--origam-color__surface---overlay);
@@ -426,6 +426,15 @@
426
426
  --origam-chip__filter---transition-property: transform, opacity;
427
427
  --origam-chip__filter---transition-duration: var(--origam-motion__duration---normal);
428
428
  --origam-chip__filter---transition-timing-function: var(--origam-motion__easing---standard);
429
+ /* #595 — canaux C2 ouverts : lus par OrigamChip, declares par personne. Valeurs = le repli deja rendu. Les hauteurs ne passent PAS par l echelle `space` : 38px et 44px n y ont aucun barreau. */
430
+ --origam-chip---height-xs: 20px;
431
+ --origam-chip---height-sm: 24px;
432
+ --origam-chip---height-md: 32px;
433
+ --origam-chip---height-lg: 38px;
434
+ --origam-chip---height-xl: 44px;
435
+ --origam-chip---border-radius-rounded: var(--origam-radius---xl);
436
+ --origam-chip__close---margin-inline-start: 6px;
437
+ --origam-chip__close---margin-inline-end: -4px;
429
438
  --origam-avatar---background-color: var(--origam-color__surface---overlay);
430
439
  --origam-avatar---color: var(--origam-color__text---secondary);
431
440
  --origam-avatar---border-color: currentColor;
@@ -1035,7 +1044,7 @@
1035
1044
  --origam-field---padding-top: var(--origam-space---2);
1036
1045
  --origam-field---padding-bottom: 6px;
1037
1046
  --origam-field---font-size: 16px;
1038
- --origam-field---letter-spacing: var(--origam-font__letterSpacing---wide);
1047
+ --origam-field---letter-spacing: 0.009375em; /* #595 — PAS `letterSpacing---wide` (0.0094em) : `.origam-field` et `.origam-field__input` livrent 0.009375em en dur depuis toujours. Le barreau de l echelle en differe de 0.000025em, assez pour deplacer la piste de tous les champs. Valeur reellement livree, barreau assume hors echelle — meme arbitrage que `--origam-input__details---padding-top: 6px` (#595). */
1039
1048
  --origam-field---border-radius: var(--origam-radius---sm);
1040
1049
  --origam-field---border-color: var(--origam-color__border---default);
1041
1050
  --origam-field---border-width: var(--origam-border__width---thin);
@@ -1054,6 +1063,11 @@
1054
1063
  --origam-field---focus-ring-width: 0px;
1055
1064
  --origam-field---focus-ring-offset: 0px;
1056
1065
  --origam-field--variant-solo---box-shadow: var(--origam-shadow---sm);
1066
+ /* #595 — canaux C2 ouverts : lus par OrigamField, declares par personne. Valeurs = le repli deja rendu. `16px` et `4px` coincident EXACTEMENT avec `radius---xl` et `space---1` (verifie sur primitive.css), donc routes par leurs barreaux ; `0.42` n a aucun barreau (l echelle opacity va 0/12/26/32/50/60/70/87/100), litteral assume ; le `color-mix` est recopie VERBATIM — `currentColor` doit rester substitue sur l element consommateur, pas ici. */
1067
+ --origam-field---border-radius-rounded: var(--origam-radius---xl);
1068
+ --origam-field--inline---padding-inline: var(--origam-space---1);
1069
+ --origam-field--variant-filled---background-color: color-mix(in srgb, currentColor 12%, transparent);
1070
+ --origam-field--variant-filled---border-opacity: 0.42;
1057
1071
  --origam-field---variant-outlined-background-color: rgba(0, 0, 0, 0);
1058
1072
  --origam-field__overlay---background-color: var(--origam-color__overlay---scrim);
1059
1073
  --origam-field__overlay---opacity: var(--origam-opacity---0);
@@ -1723,8 +1737,10 @@
1723
1737
  --origam-list---pointer-events: auto;
1724
1738
  --origam-list---user-select: auto;
1725
1739
  --origam-list---indent-padding: 0px;
1740
+ --origam-list--nav---item-gap: 2px;
1741
+ --origam-list--nav---item-min-height: 44px;
1742
+ --origam-list--nav---item-padding-block: 6px;
1726
1743
  --origam-list---density: 0px;
1727
- --origam-list---indent-padding-nav: -8px;
1728
1744
  --origam-list---slim-prepend-width: 28px;
1729
1745
  --origam-list__overlay---background-color: var(--origam-color__overlay---scrim);
1730
1746
  --origam-list__overlay---border-radius: inherit;
@@ -2194,6 +2210,16 @@
2194
2210
  --origam-switch__label---font-size: var(--origam-font__size---md);
2195
2211
  --origam-switch__label---padding-inline: var(--origam-space---2);
2196
2212
  --origam-switch__input---opacity: 0;
2213
+ /* #595 — canaux C2 ouverts : ces neuf noms etaient lus par OrigamSwitch / OrigamSwitchTrack et declares par personne. Chaque valeur est le repli deja rendu, recopie a l identique. */
2214
+ --origam-switch__thumb---border-color: rgba(0, 0, 0, 0.18);
2215
+ --origam-switch__thumb---color: currentColor;
2216
+ --origam-switch__selection-control---min-height: 56px;
2217
+ --origam-switch__skeleton---width: 52px;
2218
+ --origam-switch__skeleton---height: 32px;
2219
+ --origam-switch__skeleton-track---background-color: color-mix(in srgb, currentColor 14%, transparent);
2220
+ --origam-switch__skeleton-thumb---background-color: color-mix(in srgb, currentColor 28%, transparent);
2221
+ --origam-switch__track--inset---height: 32px;
2222
+ --origam-switch__track--inset---width: 52px;
2197
2223
  --origam-switch---opacity-disabled: var(--origam-opacity---32);
2198
2224
  --origam-slider-field---padding-block: var(--origam-space---2);
2199
2225
  --origam-slider-field---transition-duration: var(--origam-motion__duration---fast);
@@ -2216,11 +2242,24 @@
2216
2242
  --origam-slider-field__tick---size: 4px;
2217
2243
  --origam-slider-field__tick---background-color: var(--origam-color__text---disabled);
2218
2244
  --origam-slider-field__tick---background-color-active: var(--origam-color__action--primary---fg);
2219
- --origam-slider-field__tick---border-radius: var(--origam-radius---full);
2245
+ --origam-slider-field__tick---border-radius: 2px; /* #595 — PAS `radius---full` (9999px) : `.origam-slider-field-track__tick` livre `border-radius: 2px` en dur. Valeur reellement livree. */
2220
2246
  --origam-slider-field__label---color: var(--origam-color__text---secondary);
2221
2247
  --origam-slider-field__label---font-size: var(--origam-font__size---sm);
2222
2248
  --origam-slider-field__label---padding: var(--origam-space---1);
2223
2249
  --origam-slider-field---opacity-disabled: var(--origam-opacity---32);
2250
+ /* #595 — canaux C2 ouverts : lus par OrigamSliderField / OrigamSliderFieldTrack, declares par personne. Valeurs = le repli deja rendu ; les `var()` internes sont recopies VERBATIM pour ne pas fermer le canal `--origam-color__*--inverse---*`, encore non declare. */
2251
+ --origam-slider-field-thumb__surface---border-color: rgba(0, 0, 0, 0.18);
2252
+ --origam-slider-field__buffered---background-color: color-mix(in srgb, currentColor 40%, transparent);
2253
+ --origam-slider-field__buffered---opacity: 0.5;
2254
+ --origam-slider-field__buffered--bare---background-color: color-mix(in srgb, currentColor 40%, transparent);
2255
+ --origam-slider-field__track---transition: 0.3s cubic-bezier(0.25, 0.8, 0.5, 1);
2256
+ --origam-slider-field__hover-tooltip---background-color: var(--origam-color__surface---inverse);
2257
+ --origam-slider-field__hover-tooltip---color: var(--origam-color__text---inverse);
2258
+ --origam-slider-field--bare---accent-color: var(--origam-color__action--primary---bg);
2259
+ --origam-slider-field--bare---thumb-size: 12px;
2260
+ --origam-slider-field--bare---track-background-color: color-mix(in srgb, currentColor 25%, transparent);
2261
+ --origam-slider-field--bare---track-thickness: 2px;
2262
+ --origam-slider-field--bare---track-thickness-active: 4px;
2224
2263
  --origam-icon---color: currentColor;
2225
2264
  --origam-icon---transition-duration: var(--origam-motion__duration---fast);
2226
2265
  --origam-icon---transition-timing-function: var(--origam-motion__easing---standard);
@@ -2691,6 +2730,26 @@
2691
2730
  --origam-audio--error---padding: var(--origam-space---2) var(--origam-space---3);
2692
2731
  --origam-audio--error---gap: var(--origam-space---2);
2693
2732
  --origam-audio--error---icon-font-size: var(--origam-font__size---lg);
2733
+ /* #594 — canaux C2 ouverts : lus par OrigamAudio depuis des selecteurs VIVANTS, declares par personne. Valeurs = le repli deja rendu. */
2734
+ --origam-audio__header---margin-bottom: 12px;
2735
+ --origam-audio__btn---size: 28px;
2736
+ --origam-audio__btn---icon-size: 16px;
2737
+ --origam-audio__meta-separator---content: "\00B7"; /* #594 — U+00B7 ECHAPPE, et il DOIT le rester. Ecrit en litteral, ce seul caractere non-ASCII faisait emettre a dart-sass un BOM en tete de main.css (`--style=compressed` pose un BOM la ou le mode etendu poserait `@charset`). Un BOM n est PAS retire a l interieur d un `<style>` : il se collait au premier selecteur, qui ne matchait alors plus rien — les 156 declarations primitives mortes, tous les tokens semantiques et derives a vide. Mesure le 2026-09-30 : 7 echecs sur derived-tokens-subtree.spec.ts. L echappement rend le MEME glyphe (verifie en Chromium) et garde la feuille compilee en ASCII pur. Regle : aucune valeur de token ne doit contenir de caractere non-ASCII — utiliser la forme \XXXX. */
2738
+ --origam-audio__playlist---max-height: 220px;
2739
+ --origam-audio__playlist---padding-top: 8px;
2740
+ --origam-audio__playlist---margin-top: 12px;
2741
+ --origam-audio__playlist---border-color: color-mix(in srgb, currentColor 8%, transparent);
2742
+ /* Les deux lignes de meta de la playlist resolvaient `var(--origam-color__text---secondary)` par repli — exactement ce que `--origam-audio---secondary-color` declare deja. Les brancher dessus ouvre les deux canaux ET rend ce token atteignable, a valeur rendue identique. */
2743
+ --origam-audio__playlist-subtitle---color: var(--origam-audio---secondary-color);
2744
+ --origam-audio__playlist-duration---color: var(--origam-audio---secondary-color);
2745
+ --origam-audio__playlist-item__prepend---margin-inline-end: 12px;
2746
+ --origam-audio--compact---padding: 8px 12px;
2747
+ --origam-audio--compact__header---gap: 12px;
2748
+ --origam-audio--compact__btn---size: 24px;
2749
+ --origam-audio--compact__btn---icon-size: 14px;
2750
+ --origam-audio--compact__play-btn---size: 56px;
2751
+ --origam-audio--compact__play-btn---icon-size: 40px;
2752
+ --origam-audio--compact__progress---height: 3px;
2694
2753
  --origam-media-scrubber---color: var(--origam-color__action--primary---bg);
2695
2754
  --origam-media-scrubber---primary: var(--origam-color__action--primary---bg);
2696
2755
  --origam-media-scrubber---track-background-color: var(--origam-color__surface---overlay);
@@ -123,3 +123,33 @@
123
123
  .origam--text-lg { font-size: var(--origam-font__size---lg); }
124
124
  .origam--text-xl { font-size: var(--origam-font__size---xl); }
125
125
  .origam--text-2xl { font-size: var(--origam-font__size---2xl); }
126
+
127
+ /* --- Opacity --------------------------------------------- */
128
+ /* */
129
+ /* Emitted by `useOpacity` when the value lands on a rung of */
130
+ /* the primitive ladder. `useOpacity` ALSO emits the matching */
131
+ /* inline `opacity:` declaration (strategy A). That is not */
132
+ /* redundancy: a scoped component rule is (0,2,0) and beats */
133
+ /* this (0,1,0) class whatever the load order, and OrigamBtn */
134
+ /* already declares `opacity` in its own SCSS. See #514. */
135
+ .origam--opacity-0 { opacity: var(--origam-opacity---0); }
136
+ .origam--opacity-12 { opacity: var(--origam-opacity---12); }
137
+ .origam--opacity-26 { opacity: var(--origam-opacity---26); }
138
+ .origam--opacity-32 { opacity: var(--origam-opacity---32); }
139
+ .origam--opacity-50 { opacity: var(--origam-opacity---50); }
140
+ .origam--opacity-60 { opacity: var(--origam-opacity---60); }
141
+ .origam--opacity-70 { opacity: var(--origam-opacity---70); }
142
+ .origam--opacity-87 { opacity: var(--origam-opacity---87); }
143
+ .origam--opacity-100 { opacity: var(--origam-opacity---100); }
144
+
145
+ /* --- Backdrop blur --------------------------------------- */
146
+ /* */
147
+ /* Emitted by `useBackdrop`. The -webkit- twin is required: */
148
+ /* Safari still ships backdrop-filter prefixed only. Rung */
149
+ /* values follow the measured distribution of blur() literals */
150
+ /* in this repo, not a tidy doubling, hence sm = 6px. */
151
+ .origam--backdrop-blur-xs { backdrop-filter: blur(var(--origam-blur---xs)); -webkit-backdrop-filter: blur(var(--origam-blur---xs)); }
152
+ .origam--backdrop-blur-sm { backdrop-filter: blur(var(--origam-blur---sm)); -webkit-backdrop-filter: blur(var(--origam-blur---sm)); }
153
+ .origam--backdrop-blur-md { backdrop-filter: blur(var(--origam-blur---md)); -webkit-backdrop-filter: blur(var(--origam-blur---md)); }
154
+ .origam--backdrop-blur-lg { backdrop-filter: blur(var(--origam-blur---lg)); -webkit-backdrop-filter: blur(var(--origam-blur---lg)); }
155
+ .origam--backdrop-blur-xl { backdrop-filter: blur(var(--origam-blur---xl)); -webkit-backdrop-filter: blur(var(--origam-blur---xl)); }
@@ -162,6 +162,11 @@
162
162
  --origam-opacity---70: 0.7;
163
163
  --origam-opacity---87: 0.87;
164
164
  --origam-opacity---100: 1;
165
+ --origam-blur---xs: 4px;
166
+ --origam-blur---sm: 6px;
167
+ --origam-blur---md: 8px;
168
+ --origam-blur---lg: 16px;
169
+ --origam-blur---xl: 24px;
165
170
  --origam-border__width---0: 0px;
166
171
  --origam-border__width---2: 2px;
167
172
  --origam-border__width---4: 4px;
@@ -827,6 +827,27 @@ defineExpose({
827
827
  }
828
828
  }
829
829
 
830
+ /*
831
+ * ⛔ #594 — SEPT tokens `--origam-audio*` que les feuilles declarent et
832
+ * que ce SCSS ne lit pas. Ils restent en baseline
833
+ * `token-var-channels-dormant.json` :
834
+ *
835
+ * · `__cover---border-radius` (radius---md = 8px) — la pochette est un
836
+ * DISQUE : `border-radius: 50%` ci-dessous, sillons concentriques et
837
+ * trou de broche compris. Cabler par le nom transformerait le vinyle
838
+ * en carre arrondi. Exemple type du « ne jamais cabler un orphelin
839
+ * sur la foi de son nom » ;
840
+ * · `__artist---color`, `__album---color`, `__duration---color`
841
+ * (text---secondary) — les trois elements existent, mais leur
842
+ * couleur vient de `.origam-audio__meta`, en
843
+ * `color-mix(in srgb, currentColor 60%, transparent)`. La valeur
844
+ * declaree est une AUTRE couleur ;
845
+ * · `__body---gap` (space---3), `__compact---body-gap` (space---2) —
846
+ * aucune classe `.origam-audio__body` dans le template ;
847
+ * · `__transport---btn-icon-size` (20px) — la taille livree pour les
848
+ * boutons de la rangee est 16px (`__btn---icon-size`, cable), et le
849
+ * bloc `&__transport` est de toute facon un selecteur mort.
850
+ */
830
851
  &__cover {
831
852
  margin: 0;
832
853
  display: flex;
@@ -1028,6 +1049,27 @@ defineExpose({
1028
1049
  color: var(--origam-audio__waveform---color, color-mix(in srgb, currentColor 50%, transparent));
1029
1050
  }
1030
1051
 
1052
+ /*
1053
+ * ⛔ #594 — SELECTEURS MORTS, mesure du 2026-09-27. Ni
1054
+ * `.origam-audio__transport`, ni `__nav-btn`, ni `__play-btn`, ni
1055
+ * `__time`, ni `__spacer`, ni `__volume`, ni `__cast`, ni `__config`
1056
+ * n existent dans le template : la barre de transport a ete remplacee
1057
+ * par `OrigamMediaController` (`.origam-audio__controller`, ligne 65),
1058
+ * et ces blocs sont restes. Verifie sur les 45 variants de la story
1059
+ * dans Chromium — `document.querySelector` renvoie `null` partout.
1060
+ *
1061
+ * Consequence pour la campagne C2 : les tokens que ces regles lisent
1062
+ * (`__transport---min-height`, les quatre `__nav-btn---*`,
1063
+ * `__play-btn---color`, `__play-btn---icon-size`, `__time---color`)
1064
+ * sont LAISSES non declares a dessein. Les declarer ne deplacerait
1065
+ * aucun pixel — precisement parce que rien ne matche — mais graverait
1066
+ * dans le canal public des noms qu un theme pourrait regler sans
1067
+ * jamais rien voir changer. Ils restent en baseline
1068
+ * `token-var-channels.json` jusqu a ce que ces blocs soient soit
1069
+ * supprimes, soit recables sur le controleur (cf. #578).
1070
+ *
1071
+ * Meme cas une trentaine de lignes plus bas pour `&__playlist-artist`.
1072
+ */
1031
1073
  &__transport {
1032
1074
  display: flex;
1033
1075
  align-items: center;
@@ -1120,8 +1162,22 @@ defineExpose({
1120
1162
  align-items: center;
1121
1163
  gap: var(--origam-audio--error---gap, 6px);
1122
1164
  padding: var(--origam-audio--error---padding, 8px 12px);
1123
- background-color: var(--origam-audio--error---background-color, var(--origam-color__status--error--bg, transparent));
1124
- color: var(--origam-audio--error---color, var(--origam-color__status--error---color, inherit));
1165
+ /*
1166
+ * #594 — EFFONDREMENT de deux replis fantomes. Les deux lignes
1167
+ * lisaient `var(RUNG1, var(--origam-color__status--error---*, T))`.
1168
+ * Mesure : la famille `--origam-color__status--*` n est declaree
1169
+ * NULLE PART (zero occurrence en partie gauche dans
1170
+ * `assets/css/tokens/*` ni `assets/scss/tokens/*`) — c est une
1171
+ * grammaire fantome, et `--error--bg` y ecrivait meme `--bg` au
1172
+ * lieu de `---bg`. Les deux RUNG1 sont eux declares light ET dark
1173
+ * (`--origam-color__feedback--danger---bgSubtle` / `---fgSubtle`),
1174
+ * donc l echelon fantome etait INATTEIGNABLE par construction : il
1175
+ * ne peignait rien et ne pouvait rien peindre. Retire du site de
1176
+ * lecture — zero pixel deplace, deux canaux morts en moins, et pas
1177
+ * un nom faux grave dans le canal public.
1178
+ */
1179
+ background-color: var(--origam-audio--error---background-color, transparent);
1180
+ color: var(--origam-audio--error---color, inherit);
1125
1181
  border-radius: var(--origam-audio--error---border-radius, var(--origam-radius---sm, 4px));
1126
1182
  font-size: var(--origam-audio--error---font-size, 0.875rem);
1127
1183
  grid-column: 1 / -1;
@@ -1260,6 +1316,14 @@ defineExpose({
1260
1316
  }
1261
1317
  }
1262
1318
 
1319
+ /*
1320
+ * ⛔ #594 — SELECTEUR MORT : aucune `.origam-audio__playlist-artist`
1321
+ * dans le template (la ligne de playlist rend un `OrigamListItem`,
1322
+ * dont le sous-titre porte `.origam-list-item__subtitle`, cable juste
1323
+ * au-dessus). `--origam-audio__playlist-artist---color` reste donc non
1324
+ * declare, pour la meme raison que le bloc `&__transport` : un canal
1325
+ * qui ne peint rien ne doit pas entrer dans la feuille publique.
1326
+ */
1263
1327
  &__playlist-artist {
1264
1328
  color: var(--origam-audio__playlist-artist---color, var(--origam-color__text---secondary));
1265
1329
  font-size: 12px;
@@ -539,6 +539,18 @@ defineExpose({
539
539
  color: var(--origam-chip--selected---color);
540
540
  }
541
541
 
542
+ /*
543
+ * ⛔ #595 — `--origam-chip---font-size` est lu par les cinq paliers et
544
+ * DOIT rester non declare. C est le premier maillon d une chaine de
545
+ * replis dont le second est par-palier : le declarer a `:root` figerait
546
+ * la meme taille de police pour `x-small` comme pour `x-large` et
547
+ * rendrait `--origam-chip---font-size-{xs..xl}` inatteignables — la
548
+ * prop `size` perdrait son canal typographique. Meme piege que la
549
+ * cascade de replis de Card (#593).
550
+ *
551
+ * Les cinq `---height-{xs..xl}`, eux, sont un niveau unique : ils
552
+ * viennent d etre declares a leur valeur livree (20/24/32/38/44px).
553
+ */
542
554
  &--size-x-small {
543
555
  font-size: var(--origam-chip---font-size, var(--origam-chip---font-size-xs, 0.625rem));
544
556
  line-height: 1;
@@ -574,6 +586,28 @@ defineExpose({
574
586
  padding: 0 var(--origam-chip---padding-xl, 17px);
575
587
  }
576
588
 
589
+ /*
590
+ * ⛔ #595 — QUINZE tokens `--origam-chip--*` que les feuilles declarent
591
+ * et que ce SCSS ne lit PAS. Ils restent en baseline
592
+ * `token-var-channels-dormant.json`, voici pourquoi :
593
+ *
594
+ * · les douze `--{success,warning,danger,info}---{background-color,
595
+ * color,border-color}` et les deux `--outlined---{background-color,
596
+ * border-color}` supposent des regles `&--danger` / `&--outlined`
597
+ * que le composant n a pas et ne doit pas avoir : l intention est
598
+ * peinte par `useColorEffect` (style INLINE) et par les classes
599
+ * utilitaires `.origam--bg-*`. Une regle de variante au selecteur
600
+ * perdrait de toute facon contre l inline, ou — pire, avec un
601
+ * `!important` — empecherait la prop de peindre : c est exactement
602
+ * l incident qui a produit l ADR-005 et le garde `no-variant-css`.
603
+ * La classe emise reste un point d accroche CONSOMMATEUR ;
604
+ * · `---density` (0px) est ECRIT juste en dessous par les deux
605
+ * modificateurs de densite et LU par personne. C est un defaut
606
+ * distinct de C2 — la prop `density` de Chip est inerte, aucune
607
+ * hauteur ni marge ne consomme la variable — et le corriger
608
+ * changerait le rendu de `density="compact"`. Hors perimetre de ce
609
+ * lot, signale sans ticket ouvert (consigne du lot).
610
+ */
577
611
  &--density-default {
578
612
  --origam-chip---density: 0px;
579
613
  }