@epa-wg/custom-element-dist 0.0.37 → 0.0.39

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 (117) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/AGENTS.md +1 -0
  3. package/CLAUDE.md +89 -0
  4. package/README.md +5 -5
  5. package/bin/postinstall.sh +18 -10
  6. package/coverage/base.css +224 -0
  7. package/coverage/block-navigation.js +87 -0
  8. package/coverage/coverage-final.json +12 -0
  9. package/coverage/favicon.png +0 -0
  10. package/coverage/index.html +176 -0
  11. package/coverage/prettify.css +1 -0
  12. package/coverage/prettify.js +2 -0
  13. package/coverage/sort-arrow-sprite.png +0 -0
  14. package/coverage/sorter.js +210 -0
  15. package/coverage/src/coverage.svg +10 -0
  16. package/coverage/src/custom-element/coverage.svg +10 -0
  17. package/coverage/src/custom-element/custom-element.js/coverage.svg +10 -0
  18. package/coverage/src/custom-element/custom-element.js.html +3058 -0
  19. package/coverage/src/custom-element/http-request.js/coverage.svg +10 -0
  20. package/coverage/src/custom-element/http-request.js.html +373 -0
  21. package/coverage/src/custom-element/index.html +176 -0
  22. package/coverage/src/custom-element/local-storage.js/coverage.svg +10 -0
  23. package/coverage/src/custom-element/local-storage.js.html +361 -0
  24. package/coverage/src/custom-element/location-element.js/coverage.svg +10 -0
  25. package/coverage/src/custom-element/location-element.js.html +412 -0
  26. package/coverage/src/custom-element/module-url.js/coverage.svg +10 -0
  27. package/coverage/src/custom-element/module-url.js.html +187 -0
  28. package/coverage/src/index.html +116 -0
  29. package/coverage/src/material/theme/colors.js/coverage.svg +10 -0
  30. package/coverage/src/material/theme/colors.js.html +217 -0
  31. package/coverage/src/material/theme/coverage.svg +10 -0
  32. package/coverage/src/material/theme/index.html +116 -0
  33. package/coverage/src/mocks/coverage.svg +10 -0
  34. package/coverage/src/mocks/handlers.ts/coverage.svg +10 -0
  35. package/coverage/src/mocks/handlers.ts.html +196 -0
  36. package/coverage/src/mocks/index.html +116 -0
  37. package/coverage/src/stories/coverage.svg +10 -0
  38. package/coverage/src/stories/frame.canvas.ts/coverage.svg +10 -0
  39. package/coverage/src/stories/frame.canvas.ts.html +217 -0
  40. package/coverage/src/stories/http-request.stories.ts/coverage.svg +10 -0
  41. package/coverage/src/stories/http-request.stories.ts.html +820 -0
  42. package/coverage/src/stories/index.html +146 -0
  43. package/coverage/src/stories/testStoryBook.ts/coverage.svg +10 -0
  44. package/coverage/src/stories/testStoryBook.ts.html +160 -0
  45. package/coverage/src/sum.ts/coverage.svg +10 -0
  46. package/coverage/src/sum.ts.html +94 -0
  47. package/dist/{custom-element-BqBcmDiN.js → custom-element-Cr_I3Xd-.js} +69 -65
  48. package/dist/custom-element-D5IF46oF.cjs +97 -0
  49. package/dist/custom-element-bundle.cjs +1 -1
  50. package/dist/custom-element-bundle.js +3 -3
  51. package/dist/demo/a.html +41 -64
  52. package/dist/demo/s.xslt +94 -350
  53. package/dist/{local-storage-DzmNKzgN.js → local-storage-w0k66UWM.js} +4 -4
  54. package/package.json +3 -2
  55. package/public/demo/a.html +41 -64
  56. package/public/demo/s.xslt +94 -350
  57. package/src/css/cem-combined.css +1058 -0
  58. package/src/custom-element/custom-element.js +9 -4
  59. package/src/custom-element/demo/a.html +41 -64
  60. package/src/custom-element/demo/s.xslt +94 -350
  61. package/src/custom-element/ide/customData-dce.json +8 -8
  62. package/src/custom-element/ide/web-types-dce.json +8 -8
  63. package/src/custom-element/ide/web-types-xsl.json +1 -1
  64. package/src/material/components/action.html +77 -22
  65. package/src/material/components/autocomplete.html +7 -6
  66. package/src/material/components/badge.html +33 -34
  67. package/src/material/components/cem-theme-components.css +131 -0
  68. package/src/material/components/dropdown.html +27 -12
  69. package/src/material/components/icon-link.html +25 -18
  70. package/src/material/components/icon.html +15 -14
  71. package/src/material/components/input.html +27 -24
  72. package/src/material/components/menu.html +23 -18
  73. package/src/material/components.html +31 -23
  74. package/src/material/demo.css +24 -12
  75. package/src/material/index.html +16 -10
  76. package/src/material/theme/consumer-theme.css +0 -733
  77. package/src/material/theme/semantic.css +1 -85
  78. package/src/mocks/versions.mock.ts +1 -1
  79. package/src/stories/__screenshots__/http-request.test.ts/http-request-url-change-1.png +0 -0
  80. package/src/stories/__screenshots__/location-element.test.stories.ts/location-element-location-element-Demo-1.png +0 -0
  81. package/src/stories/frame.canvas.ts +17 -4
  82. package/src/stories/testStoryBook.ts +2 -5
  83. package/storybook-static/assets/{Color-F6OSRLHC-FZZzFn7T.js → Color-F6OSRLHC-DM-zIDJc.js} +1 -1
  84. package/storybook-static/assets/{Configure-DyfktOJO.js → Configure-Bv7Hf8nO.js} +1 -1
  85. package/storybook-static/assets/{DocsRenderer-CFRXHY34-5isVpCzj.js → DocsRenderer-CFRXHY34-BNrvQCFF.js} +2 -2
  86. package/storybook-static/assets/{attributes.test.stories-CrDC-RXf.js → attributes.test.stories-Bs0zZtYO.js} +1 -1
  87. package/storybook-static/assets/{css.test.stories-ChWnZJwa.js → css.test.stories-CK4N9Fqq.js} +1 -1
  88. package/storybook-static/assets/custom-element-PxTx2W9y.js +97 -0
  89. package/storybook-static/assets/{dom-merge.test.stories-DkarPqD_.js → dom-merge.test.stories-DLFviA8F.js} +1 -1
  90. package/storybook-static/assets/{external-template.test.stories-DCboR8sG.js → external-template.test.stories-CqR1aaHv.js} +1 -1
  91. package/storybook-static/assets/{form.test.stories-BjeeUu0b.js → form.test.stories-Cinvg_DI.js} +1 -1
  92. package/storybook-static/assets/frame.canvas-BB4_DNn6.js +1 -0
  93. package/storybook-static/assets/handlers-C9n1hhtS.js +291 -0
  94. package/storybook-static/assets/{http-request.stories-WIldq1MC.js → http-request.stories-CwYdgaOh.js} +1 -1
  95. package/storybook-static/assets/{iframe-CBHPj1E5.js → iframe-DX9w3Kge.js} +2 -2
  96. package/storybook-static/assets/{index-CzwPLrca.js → index-C8cHSFtw.js} +1 -1
  97. package/storybook-static/assets/{index-BL0FQnAE.js → index-DgXlQmnf.js} +3 -3
  98. package/storybook-static/assets/{local-storage.test.stories-DLMK0p2s.js → local-storage.test.stories-M4WOSQC5.js} +1 -1
  99. package/storybook-static/assets/{location-element.test.stories-BroqoLMS.js → location-element.test.stories-Ce6Ma8hE.js} +1 -1
  100. package/storybook-static/assets/{module-url.test.stories-B-0dibET.js → module-url.test.stories-PwnZWqKL.js} +1 -1
  101. package/storybook-static/assets/{preview-C1KnQPMW.js → preview-DxO5Yt9a.js} +1 -1
  102. package/storybook-static/assets/{preview-BG24UPL5.js → preview-ln0vFKa2.js} +2 -2
  103. package/storybook-static/assets/{set-url.test.stories-Dhq4YQyr.js → set-url.test.stories-BdNTYEwI.js} +1 -1
  104. package/storybook-static/assets/{slice-events.test.stories-BZJGIFku.js → slice-events.test.stories-BdvLtK0h.js} +1 -1
  105. package/storybook-static/assets/{slots.test.stories-DKivHwZH.js → slots.test.stories-CoTPvRog.js} +1 -1
  106. package/storybook-static/assets/{version-select.test.stories-Dntyd7qb.js → version-select.test.stories-hs-HsDVE.js} +1 -1
  107. package/storybook-static/assets/{xslt-conditionals.test.stories-Iq5iQNRj.js → xslt-conditionals.test.stories-C4oXVQWa.js} +1 -1
  108. package/storybook-static/assets/{xslt-for-each.test.stories-BMygBmj8.js → xslt-for-each.test.stories-Da4vCZe1.js} +1 -1
  109. package/storybook-static/assets/{xslt-if.test.stories-CVrFWdAX.js → xslt-if.test.stories-CMlnBGX2.js} +1 -1
  110. package/storybook-static/demo/a.html +41 -64
  111. package/storybook-static/demo/s.xslt +94 -350
  112. package/storybook-static/iframe.html +1 -1
  113. package/storybook-static/project.json +1 -1
  114. package/dist/custom-element-jpOyXHF6.cjs +0 -97
  115. package/storybook-static/assets/custom-element-wuk8gYiP.js +0 -97
  116. package/storybook-static/assets/frame.canvas-E5n9h6j1.js +0 -1
  117. package/storybook-static/assets/handlers-B7UMnC7v.js +0 -291
@@ -0,0 +1,1058 @@
1
+ /* Generated by scripts/generate-css-index.mjs. Do not edit by hand. */
2
+
3
+ /* cem-colors.css */
4
+
5
+
6
+ :root{
7
+ /* region branded colors: cem-color-[hue]-[variant] */
8
+
9
+ --cem-color-blue-xl : #e0e8ff ; /* Lightest blue ; Trust palette (light scene surface) */
10
+ --cem-color-blue-l : #d7e3ff ; /* Light blue ; Trust palette, attention semantic */
11
+ --cem-color-blue-d : #002f65 ; /* Dark blue ; Trust palette (dark theme) */
12
+ --cem-color-blue-xd : #001b3f ; /* Darkest blue ; Trust palette (dark scene surface) */
13
+ --cem-color-brown-xl : #d7ccc8 ; /* Extra light brown ; Conservative palette (light theme) */
14
+ --cem-color-brown-l : #a1887f ; /* Light brown ; Conservative emotion, brand-3 */
15
+ --cem-color-brown-d : #4e342e ; /* Dark brown ; Conservative palette (dark theme) */
16
+ --cem-color-brown-xd : #3e2723 ; /* Extra dark brown ; Conservative palette (dark theme, extreme) */
17
+ --cem-color-cyan-xl : #f1fefe ; /* Extra light cyan ; Used for comfort palette (light scenes) */
18
+ --cem-color-cyan-l : #00fbfb ; /* Light cyan ; Calm palette, creativity accent */
19
+ --cem-color-cyan-d : #006a6a ; /* Dark cyan ; Calm palette (dark theme) */
20
+ --cem-color-cyan-xd : #001010 ; /* Extra dark cyan ; Used for comfort palette (dark scenes) */
21
+ --cem-color-grey-l : #f1f1eb ; /* Light grey ; Conservative palette, neutral backgrounds */
22
+ --cem-color-grey-d : #1a1c18 ; /* Dark grey ; Conservative palette (dark theme) */
23
+ --cem-color-orange-xl : #f0f070 ; /* Extra light yellow ; Enthusiasm palette (light theme) */
24
+ --cem-color-orange-l : #ffe082 ; /* Light orange ; Enthusiasm emotion, brand-2 */
25
+ --cem-color-orange-d : #723600 ; /* Dark orange ; Enthusiasm hype (dark theme) */
26
+ --cem-color-orange-xd : #502400 ; /* Extra dark orange ; Enthusiasm palette (dark theme, extreme) */
27
+ --cem-color-purple-xl : #f3e5f5 ; /* Extra light purple ; Creativity palette (light theme) */
28
+ --cem-color-purple-l : #e1bee7 ; /* Light purple ; Creativity emotion, brand-1 */
29
+ --cem-color-purple-d : #6a1b9a ; /* Dark purple ; Creativity palette (dark theme) */
30
+ --cem-color-purple-xd : #4a148c ; /* Extra dark purple ; Creativity palette (dark theme, extreme) */
31
+ --cem-color-red-xl : #ffb4ab ; /* Extra light red ; Danger palette (light theme) */
32
+ --cem-color-red-l : #ba1a1a ; /* Light red ; Danger emotion, alert semantic */
33
+ --cem-color-red-d : #690005 ; /* Dark red ; Danger palette (dark theme) */
34
+ --cem-color-red-xd : #410002 ; /* Extra dark red ; Danger palette (dark theme, extreme) */
35
+ --cem-color-visitedtext-30-black : color-mix(in srgb, VisitedText 30%, black) ; /* light trust-x ; Native palette Trust extreme variant */
36
+ --cem-color-visitedtext-30-white : color-mix(in srgb, VisitedText 30%, white) ; /* dark trust-x ; Native palette Trust extreme variant */
37
+ --cem-color-mark-30-black : color-mix(in srgb, Mark 30%, black) ; /* light enthusiasm-x ; Native palette Enthusiasm extreme variant */
38
+ --cem-color-mark-30-white : color-mix(in srgb, Mark 30%, white) ; /* dark enthusiasm-x ; Native palette Enthusiasm extreme variant */
39
+ --cem-color-canvastext-30-purple : color-mix(in srgb, CanvasText 30%, purple ) ; /* light creativity-x ; Native palette Creativity extreme variant */
40
+ --cem-color-canvastext-30-lightpink : color-mix(in srgb, CanvasText 30%, lightpink) ; /* dark creativity-x ; Native palette Creativity extreme variant */
41
+ --cem-color-red-30-black : color-mix(in srgb, red 30%, black) ; /* light danger-x ; Native palette Danger extreme variant */
42
+ --cem-color-red-30-white : color-mix(in srgb, red 30%, white) ; /* dark danger-x ; Native palette Danger extreme variant */
43
+ --cem-color-white : white ; /* dark trust text ; Trust and Extreme palette dark mode text */
44
+
45
+ /* endregion branded colors */
46
+
47
+ /* emotion palette: cem-palette-[emotion]-[shift] */
48
+ /* region light/dark */
49
+ --cem-palette-comfort: light-dark(var( --cem-color-cyan-xl ), var( --cem-color-cyan-xd ) );
50
+ --cem-palette-comfort-x: light-dark(var( --cem-color-cyan-xd ), var( --cem-color-cyan-xl ) );
51
+ --cem-palette-comfort-text: light-dark(var( --cem-color-cyan-xd ), var( --cem-color-cyan-xl ) );
52
+ --cem-palette-comfort-text-x: light-dark(var( --cem-color-cyan-xl ), var( --cem-color-cyan-xd ) );
53
+ --cem-palette-calm: light-dark(var( --cem-color-cyan-l ), var( --cem-color-cyan-d ) );
54
+ --cem-palette-calm-x: light-dark(var( --cem-color-cyan-d ), var( --cem-color-cyan-l ) );
55
+ --cem-palette-calm-text: light-dark(var( --cem-palette-comfort-text ), var( --cem-palette-comfort-text ) );
56
+ --cem-palette-calm-text-x: light-dark(var( --cem-palette-comfort-text-x ), var( --cem-palette-comfort-text-x ) );
57
+ --cem-palette-trust: light-dark(var( --cem-color-blue-l ), var( --cem-color-blue-d ) );
58
+ --cem-palette-trust-x: light-dark(var( --cem-color-blue-d ), var( --cem-color-blue-l ) );
59
+ --cem-palette-trust-text: light-dark(var( --cem-palette-comfort-text ), var( --cem-color-white ) );
60
+ --cem-palette-trust-text-x: light-dark(var( --cem-palette-comfort-text-x ), var( --cem-palette-comfort-text-x ) );
61
+ --cem-palette-enthusiasm: light-dark(var( --cem-color-orange-l ), var( --cem-color-orange-d ) );
62
+ --cem-palette-enthusiasm-x: light-dark(var( --cem-color-orange-xd ), var( --cem-color-orange-xl ) );
63
+ --cem-palette-enthusiasm-text: light-dark(var( --cem-palette-comfort-text ), var( --cem-color-white ) );
64
+ --cem-palette-enthusiasm-text-x: light-dark(var( --cem-palette-comfort-text-x ), var( --cem-palette-comfort-text-x ) );
65
+ --cem-palette-creativity: light-dark(var( --cem-color-purple-l ), var( --cem-color-purple-d ) );
66
+ --cem-palette-creativity-x: light-dark(var( --cem-color-purple-d ), var( --cem-color-purple-l ) );
67
+ --cem-palette-creativity-text: light-dark(var( --cem-palette-comfort-text ), var( --cem-palette-comfort-text ) );
68
+ --cem-palette-creativity-text-x: light-dark(var( --cem-palette-comfort-text-x ), var( --cem-palette-comfort-text-x ) );
69
+ --cem-palette-danger: light-dark(var( --cem-color-red-l ), var( --cem-color-red-d ) );
70
+ --cem-palette-danger-x: light-dark(var( --cem-color-red-d ), var( --cem-color-red-l ) );
71
+ --cem-palette-danger-text: light-dark(var( --cem-palette-comfort-text-x ), var( --cem-palette-comfort-text ) );
72
+ --cem-palette-danger-text-x: light-dark(var( --cem-color-orange-xl ), var( --cem-color-orange-xl ) );
73
+ --cem-palette-conservative: light-dark(var( --cem-color-grey-l ), var( --cem-color-grey-d ) );
74
+ --cem-palette-conservative-x: light-dark(var( --cem-color-grey-d ), var( --cem-color-grey-l ) );
75
+ --cem-palette-conservative-text: light-dark(var( --cem-palette-comfort-text ), var( --cem-palette-comfort-text ) );
76
+ --cem-palette-conservative-text-x: light-dark(var( --cem-palette-comfort-text-x ), var( --cem-palette-comfort-text-x ) );
77
+
78
+ /* endregion light/dark */
79
+
80
+ /* region zebra outline colors for focus/selected/target (§8) */
81
+ --cem-zebra-color-0: var(--cem-palette-comfort);
82
+ --cem-zebra-color-1: var(--cem-palette-comfort);
83
+ --cem-zebra-color-2: var(--cem-palette-comfort);
84
+ --cem-zebra-color-3: var(--cem-palette-comfort);
85
+ --cem-zebra-strip-size: 2px;
86
+
87
+ /* :root state defaults match native theme so zebra is functional without an explicit theme class */
88
+ [focus], :focus, :focus-visible, :focus-within, .focus {
89
+ --cem-zebra-color-1: CanvasText;
90
+ }
91
+ [target], :target, .target {
92
+ --cem-zebra-color-2: Mark;
93
+ }
94
+ [selected], .selected {
95
+ --cem-zebra-color-3: SelectedItem;
96
+ }
97
+ /* endregion zebra */
98
+
99
+ /* region common for cem themes */
100
+ [data-theme*="cem-theme-"],
101
+ .cem-theme-native,
102
+ .cem-theme-contrast-light,
103
+ .cem-theme-contrast-dark,
104
+ .cem-theme-light,
105
+ .cem-theme-dark {
106
+
107
+ /* action intent tokens: cem-action-[intent]-[state]-[background|text] */
108
+
109
+
110
+ /* region explicit (trust) */
111
+
112
+
113
+ --cem-action-explicit-disabled-background: color-mix(in srgb, var(--cem-palette-trust) 30%, var(--cem-palette-conservative-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 30%, var(--cem-palette-conservative-x)) */
114
+ --cem-action-explicit-disabled-text: var(--cem-palette-conservative-text-x);
115
+
116
+ --cem-action-explicit-readonly-background: color-mix(in srgb, var(--cem-palette-trust) 80%, var(--cem-palette-trust-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 80%, var(--cem-palette-trust-x)) */
117
+ --cem-action-explicit-readonly-text: var(--cem-palette-trust-text);
118
+
119
+ --cem-action-explicit-editable-background: color-mix(in srgb, var(--cem-palette-trust) 90%, var(--cem-palette-trust-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 90%, var(--cem-palette-trust-x)) */
120
+ --cem-action-explicit-editable-text: var(--cem-palette-trust-text);
121
+
122
+ --cem-action-explicit-default-background: var(--cem-palette-trust);/* var(--cem-palette-[emotion]) ~ var(--cem-palette-trust) ~ var(--cem-palette-trust) */
123
+ --cem-action-explicit-default-text: var(--cem-palette-trust-text);
124
+
125
+ --cem-action-explicit-indeterminate-background: color-mix(in srgb, var(--cem-palette-trust) 90%, var(--cem-palette-trust-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 90%, var(--cem-palette-trust-x)) */
126
+ --cem-action-explicit-indeterminate-text: var(--cem-palette-trust-text);
127
+
128
+ --cem-action-explicit-hover-background: color-mix(in srgb, var(--cem-palette-trust) 70%, var(--cem-palette-trust-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 70%, var(--cem-palette-trust-x)) */
129
+ --cem-action-explicit-hover-text: var(--cem-palette-trust-text);
130
+
131
+ --cem-action-explicit-active-background: color-mix(in srgb, var(--cem-palette-trust) 25%, var(--cem-palette-trust-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 25%, var(--cem-palette-trust-x)) */
132
+ --cem-action-explicit-active-text: var(--cem-palette-trust-text-x);
133
+
134
+ --cem-action-explicit-pending-background: color-mix(in srgb, var(--cem-palette-trust) 5%, var(--cem-palette-trust-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-trust) 5%, var(--cem-palette-trust-x)) */
135
+ --cem-action-explicit-pending-text: var(--cem-palette-trust-text-x);
136
+
137
+ /* endregion explicit (trust) */
138
+
139
+
140
+ /* region primary (creativity) */
141
+
142
+
143
+ --cem-action-primary-disabled-background: color-mix(in srgb, var(--cem-palette-creativity) 30%, var(--cem-palette-conservative-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 30%, var(--cem-palette-conservative-x)) */
144
+ --cem-action-primary-disabled-text: var(--cem-palette-conservative-text-x);
145
+
146
+ --cem-action-primary-readonly-background: color-mix(in srgb, var(--cem-palette-creativity) 80%, var(--cem-palette-creativity-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 80%, var(--cem-palette-creativity-x)) */
147
+ --cem-action-primary-readonly-text: var(--cem-palette-creativity-text);
148
+
149
+ --cem-action-primary-editable-background: color-mix(in srgb, var(--cem-palette-creativity) 90%, var(--cem-palette-creativity-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 90%, var(--cem-palette-creativity-x)) */
150
+ --cem-action-primary-editable-text: var(--cem-palette-creativity-text);
151
+
152
+ --cem-action-primary-default-background: var(--cem-palette-creativity);/* var(--cem-palette-[emotion]) ~ var(--cem-palette-creativity) ~ var(--cem-palette-creativity) */
153
+ --cem-action-primary-default-text: var(--cem-palette-creativity-text);
154
+
155
+ --cem-action-primary-indeterminate-background: color-mix(in srgb, var(--cem-palette-creativity) 90%, var(--cem-palette-creativity-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 90%, var(--cem-palette-creativity-x)) */
156
+ --cem-action-primary-indeterminate-text: var(--cem-palette-creativity-text);
157
+
158
+ --cem-action-primary-hover-background: color-mix(in srgb, var(--cem-palette-creativity) 70%, var(--cem-palette-creativity-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 70%, var(--cem-palette-creativity-x)) */
159
+ --cem-action-primary-hover-text: var(--cem-palette-creativity-text);
160
+
161
+ --cem-action-primary-active-background: color-mix(in srgb, var(--cem-palette-creativity) 25%, var(--cem-palette-creativity-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 25%, var(--cem-palette-creativity-x)) */
162
+ --cem-action-primary-active-text: var(--cem-palette-creativity-text-x);
163
+
164
+ --cem-action-primary-pending-background: color-mix(in srgb, var(--cem-palette-creativity) 5%, var(--cem-palette-creativity-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-creativity) 5%, var(--cem-palette-creativity-x)) */
165
+ --cem-action-primary-pending-text: var(--cem-palette-creativity-text-x);
166
+
167
+ /* endregion primary (creativity) */
168
+
169
+
170
+ /* region contextual (comfort) */
171
+
172
+
173
+ --cem-action-contextual-disabled-background: color-mix(in srgb, var(--cem-palette-comfort) 30%, var(--cem-palette-conservative-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 30%, var(--cem-palette-conservative-x)) */
174
+ --cem-action-contextual-disabled-text: var(--cem-palette-conservative-text-x);
175
+
176
+ --cem-action-contextual-readonly-background: color-mix(in srgb, var(--cem-palette-comfort) 80%, var(--cem-palette-comfort-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 80%, var(--cem-palette-comfort-x)) */
177
+ --cem-action-contextual-readonly-text: var(--cem-palette-comfort-text);
178
+
179
+ --cem-action-contextual-editable-background: color-mix(in srgb, var(--cem-palette-comfort) 90%, var(--cem-palette-comfort-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 90%, var(--cem-palette-comfort-x)) */
180
+ --cem-action-contextual-editable-text: var(--cem-palette-comfort-text);
181
+
182
+ --cem-action-contextual-default-background: var(--cem-palette-comfort);/* var(--cem-palette-[emotion]) ~ var(--cem-palette-comfort) ~ var(--cem-palette-comfort) */
183
+ --cem-action-contextual-default-text: var(--cem-palette-comfort-text);
184
+
185
+ --cem-action-contextual-indeterminate-background: color-mix(in srgb, var(--cem-palette-comfort) 90%, var(--cem-palette-comfort-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 90%, var(--cem-palette-comfort-x)) */
186
+ --cem-action-contextual-indeterminate-text: var(--cem-palette-comfort-text);
187
+
188
+ --cem-action-contextual-hover-background: color-mix(in srgb, var(--cem-palette-comfort) 70%, var(--cem-palette-comfort-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 70%, var(--cem-palette-comfort-x)) */
189
+ --cem-action-contextual-hover-text: var(--cem-palette-comfort-text);
190
+
191
+ --cem-action-contextual-active-background: color-mix(in srgb, var(--cem-palette-comfort) 25%, var(--cem-palette-comfort-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 25%, var(--cem-palette-comfort-x)) */
192
+ --cem-action-contextual-active-text: var(--cem-palette-comfort-text-x);
193
+
194
+ --cem-action-contextual-pending-background: color-mix(in srgb, var(--cem-palette-comfort) 5%, var(--cem-palette-comfort-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-comfort) 5%, var(--cem-palette-comfort-x)) */
195
+ --cem-action-contextual-pending-text: var(--cem-palette-comfort-text-x);
196
+
197
+ /* endregion contextual (comfort) */
198
+
199
+
200
+ /* region alternate (enthusiasm) */
201
+
202
+
203
+ --cem-action-alternate-disabled-background: color-mix(in srgb, var(--cem-palette-enthusiasm) 30%, var(--cem-palette-conservative-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 30%, var(--cem-palette-conservative-x)) */
204
+ --cem-action-alternate-disabled-text: var(--cem-palette-conservative-text-x);
205
+
206
+ --cem-action-alternate-readonly-background: color-mix(in srgb, var(--cem-palette-enthusiasm) 80%, var(--cem-palette-enthusiasm-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 80%, var(--cem-palette-enthusiasm-x)) */
207
+ --cem-action-alternate-readonly-text: var(--cem-palette-enthusiasm-text);
208
+
209
+ --cem-action-alternate-editable-background: color-mix(in srgb, var(--cem-palette-enthusiasm) 90%, var(--cem-palette-enthusiasm-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 90%, var(--cem-palette-enthusiasm-x)) */
210
+ --cem-action-alternate-editable-text: var(--cem-palette-enthusiasm-text);
211
+
212
+ --cem-action-alternate-default-background: var(--cem-palette-enthusiasm);/* var(--cem-palette-[emotion]) ~ var(--cem-palette-enthusiasm) ~ var(--cem-palette-enthusiasm) */
213
+ --cem-action-alternate-default-text: var(--cem-palette-enthusiasm-text);
214
+
215
+ --cem-action-alternate-indeterminate-background: color-mix(in srgb, var(--cem-palette-enthusiasm) 90%, var(--cem-palette-enthusiasm-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 90%, var(--cem-palette-enthusiasm-x)) */
216
+ --cem-action-alternate-indeterminate-text: var(--cem-palette-enthusiasm-text);
217
+
218
+ --cem-action-alternate-hover-background: color-mix(in srgb, var(--cem-palette-enthusiasm) 70%, var(--cem-palette-enthusiasm-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 70%, var(--cem-palette-enthusiasm-x)) */
219
+ --cem-action-alternate-hover-text: var(--cem-palette-enthusiasm-text);
220
+
221
+ --cem-action-alternate-active-background: color-mix(in srgb, var(--cem-palette-enthusiasm) 25%, var(--cem-palette-enthusiasm-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 25%, var(--cem-palette-enthusiasm-x)) */
222
+ --cem-action-alternate-active-text: var(--cem-palette-enthusiasm-text-x);
223
+
224
+ --cem-action-alternate-pending-background: color-mix(in srgb, var(--cem-palette-enthusiasm) 5%, var(--cem-palette-enthusiasm-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-enthusiasm) 5%, var(--cem-palette-enthusiasm-x)) */
225
+ --cem-action-alternate-pending-text: var(--cem-palette-enthusiasm-text-x);
226
+
227
+ /* endregion alternate (enthusiasm) */
228
+
229
+
230
+ /* region destructive (danger) */
231
+
232
+
233
+ --cem-action-destructive-disabled-background: color-mix(in srgb, var(--cem-palette-danger) 30%, var(--cem-palette-conservative-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 30%, var(--cem-palette-conservative-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 30%, var(--cem-palette-conservative-x)) */
234
+ --cem-action-destructive-disabled-text: var(--cem-palette-conservative-text-x);
235
+
236
+ --cem-action-destructive-readonly-background: color-mix(in srgb, var(--cem-palette-danger) 80%, var(--cem-palette-danger-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 80%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 80%, var(--cem-palette-danger-x)) */
237
+ --cem-action-destructive-readonly-text: var(--cem-palette-danger-text);
238
+
239
+ --cem-action-destructive-editable-background: color-mix(in srgb, var(--cem-palette-danger) 90%, var(--cem-palette-danger-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 90%, var(--cem-palette-danger-x)) */
240
+ --cem-action-destructive-editable-text: var(--cem-palette-danger-text);
241
+
242
+ --cem-action-destructive-default-background: var(--cem-palette-danger);/* var(--cem-palette-[emotion]) ~ var(--cem-palette-danger) ~ var(--cem-palette-danger) */
243
+ --cem-action-destructive-default-text: var(--cem-palette-danger-text);
244
+
245
+ --cem-action-destructive-indeterminate-background: color-mix(in srgb, var(--cem-palette-danger) 90%, var(--cem-palette-danger-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 90%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 90%, var(--cem-palette-danger-x)) */
246
+ --cem-action-destructive-indeterminate-text: var(--cem-palette-danger-text);
247
+
248
+ --cem-action-destructive-hover-background: color-mix(in srgb, var(--cem-palette-danger) 70%, var(--cem-palette-danger-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 70%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 70%, var(--cem-palette-danger-x)) */
249
+ --cem-action-destructive-hover-text: var(--cem-palette-danger-text);
250
+
251
+ --cem-action-destructive-active-background: color-mix(in srgb, var(--cem-palette-danger) 25%, var(--cem-palette-danger-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 25%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 25%, var(--cem-palette-danger-x)) */
252
+ --cem-action-destructive-active-text: var(--cem-palette-danger-text-x);
253
+
254
+ --cem-action-destructive-pending-background: color-mix(in srgb, var(--cem-palette-danger) 5%, var(--cem-palette-danger-x));/* color-mix(in srgb, var(--cem-palette-[emotion]) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 5%, var(--cem-palette-[emotion]-x)) ~ color-mix(in srgb, var(--cem-palette-danger) 5%, var(--cem-palette-danger-x)) */
255
+ --cem-action-destructive-pending-text: var(--cem-palette-danger-text-x);
256
+
257
+ /* endregion destructive (danger) */
258
+
259
+
260
+ /* region zebra base: anchor all stripes to surface (§8.2) */
261
+ --cem-zebra-color-0: var(--cem-palette-comfort);
262
+ --cem-zebra-color-1: var(--cem-palette-comfort);
263
+ --cem-zebra-color-2: var(--cem-palette-comfort);
264
+ --cem-zebra-color-3: var(--cem-palette-comfort);
265
+ /* endregion zebra base */
266
+
267
+ background-color: var(--cem-palette-comfort);
268
+ color: var(--cem-palette-comfort-text);
269
+ }/* endregion common for cem themes */
270
+
271
+ .cem-theme-light, [data-theme="cem-theme-light"],
272
+ .cem-theme-contrast-light, [data-theme="cem-theme-contrast-light"]
273
+ {
274
+ color-scheme: light;
275
+ }
276
+
277
+ .cem-theme-dark, [data-theme="cem-theme-dark"],
278
+ .cem-theme-contrast-dark, [data-theme="cem-theme-contrast-dark"]
279
+ {
280
+ color-scheme: dark;
281
+ }
282
+
283
+ /* region zebra state: light/dark (§8.2 cem-zebra-mode-mapping) */
284
+
285
+ .cem-theme-light, [data-theme="cem-theme-light"] {
286
+ [focus], :focus, :focus-visible, :focus-within, .focus {
287
+ --cem-zebra-color-1: var(--cem-palette-trust-x);
288
+ }
289
+ [target], :target, .target {
290
+ --cem-zebra-color-2: var(--cem-color-orange-l);
291
+ }
292
+ [selected], .selected {
293
+ --cem-zebra-color-3: var(--cem-palette-creativity-x);
294
+ }
295
+ }
296
+ .cem-theme-dark, [data-theme="cem-theme-dark"] {
297
+ [focus], :focus, :focus-visible, :focus-within, .focus {
298
+ --cem-zebra-color-1: var(--cem-palette-comfort-x);
299
+ }
300
+ [target], :target, .target {
301
+ --cem-zebra-color-2: var(--cem-palette-creativity);
302
+ }
303
+ [selected], .selected {
304
+ --cem-zebra-color-3: var(--cem-palette-calm-x);
305
+ }
306
+ }
307
+ /* endregion zebra state: light/dark */
308
+
309
+ /* region zebra state: contrast (§8.2 cem-zebra-mode-mapping) */
310
+
311
+ .cem-theme-contrast-light, [data-theme="cem-theme-contrast-light"] {
312
+ [focus], :focus, :focus-visible, :focus-within, .focus {
313
+ --cem-zebra-color-1: var(--cem-palette-trust-x);
314
+ }
315
+ [target], :target, .target {
316
+ --cem-zebra-color-2: var(--cem-color-orange-l);
317
+ }
318
+ [selected], .selected {
319
+ --cem-zebra-color-3: var(--cem-palette-creativity-x);
320
+ }
321
+ }
322
+ .cem-theme-contrast-dark, [data-theme="cem-theme-contrast-dark"] {
323
+ [focus], :focus, :focus-visible, :focus-within, .focus {
324
+ --cem-zebra-color-1: var(--cem-palette-comfort-x);
325
+ }
326
+ [target], :target, .target {
327
+ --cem-zebra-color-2: var(--cem-palette-enthusiasm-x);
328
+ }
329
+ [selected], .selected {
330
+ --cem-zebra-color-3: var(--cem-palette-trust);
331
+ }
332
+ }
333
+ /* endregion zebra state: contrast */
334
+
335
+ /* override for native */
336
+ .cem-theme-native,[data-theme="cem-theme-native"]{
337
+ --cem-palette-comfort: Canvas;
338
+ --cem-palette-comfort-x: CanvasText;
339
+ --cem-palette-comfort-text: CanvasText;
340
+ --cem-palette-comfort-text-x: Canvas;
341
+ --cem-palette-calm: cyan;
342
+ --cem-palette-calm-x: rgb(0, 120, 120);
343
+ --cem-palette-calm-text: black;
344
+ --cem-palette-calm-text-x: white;
345
+ --cem-palette-trust: color-mix(in srgb, Highlight 70%, black);
346
+ --cem-palette-trust-x: light-dark(var(--cem-color-visitedtext-30-black), var(--cem-color-visitedtext-30-white) );
347
+ --cem-palette-trust-text: HighlightText;
348
+ --cem-palette-trust-text-x: light-dark(Canvas, Canvas );
349
+ --cem-palette-enthusiasm: Mark;
350
+ --cem-palette-enthusiasm-x: light-dark(var(--cem-color-mark-30-black), var(--cem-color-mark-30-white) );
351
+ --cem-palette-enthusiasm-text: MarkText;
352
+ --cem-palette-enthusiasm-text-x: Canvas;
353
+ --cem-palette-creativity: ButtonFace;
354
+ --cem-palette-creativity-x: light-dark(var(--cem-color-canvastext-30-purple), var(--cem-color-canvastext-30-lightpink) );
355
+ --cem-palette-creativity-text: CanvasText;
356
+ --cem-palette-creativity-text-x: Canvas;
357
+ --cem-palette-danger: light-dark(var(--cem-color-red-l), var(--cem-color-red-d) );
358
+ --cem-palette-danger-x: light-dark(var(--cem-color-red-30-black), var(--cem-color-red-30-white) );
359
+ --cem-palette-danger-text: light-dark(Canvas, CanvasText );
360
+ --cem-palette-danger-text-x: Canvas;
361
+ --cem-palette-conservative: ButtonFace;
362
+ --cem-palette-conservative-x: CanvasText;
363
+ --cem-palette-conservative-text: CanvasText;
364
+ --cem-palette-conservative-text-x: Canvas;
365
+
366
+ /* region zebra native overrides */
367
+ [focus], :focus, :focus-visible, :focus-within, .focus {
368
+ --cem-zebra-color-1: CanvasText;
369
+ }
370
+ [target], :target, .target {
371
+ --cem-zebra-color-2: Mark;
372
+ }
373
+ [selected], .selected {
374
+ --cem-zebra-color-3: SelectedItem;
375
+ }
376
+ /* endregion zebra native */
377
+ }/* native */
378
+
379
+ background-color: var(--cem-palette-comfort);
380
+ color: var(--cem-palette-comfort-text);
381
+ }/* root */
382
+
383
+ /* cem-dimension.css */
384
+
385
+ :root {
386
+ /* region dimension scale: cem-dim-[size] */
387
+ --cem-dim-xx-small: 0.25rem;
388
+ --cem-dim-x-small: 0.5rem;
389
+ --cem-dim-small: 0.75rem;
390
+ --cem-dim-medium: 1rem;
391
+ --cem-dim-large: 1.5rem;
392
+ --cem-dim-x-large: 2rem;
393
+ --cem-dim-xx-large: 4rem;
394
+ --cem-dim-xxx-large: 8rem;
395
+
396
+ /* endregion dimension scale */
397
+
398
+ /* region relationship gaps: cem-gap-[level] */
399
+ --cem-gap-related: var(--cem-dim-x-small);
400
+ --cem-gap-group: var(--cem-dim-small);
401
+ --cem-gap-block: var(--cem-dim-medium);
402
+ --cem-gap-section: var(--cem-dim-large);
403
+ --cem-gap-page: var(--cem-dim-x-large);
404
+
405
+ /* endregion gaps */
406
+
407
+ /* region insets: cem-inset-[level] */
408
+ --cem-inset-control: var(--cem-dim-x-small);
409
+ --cem-inset-container: var(--cem-dim-medium);
410
+ --cem-inset-surface: var(--cem-dim-large);
411
+
412
+ /* endregion insets */
413
+
414
+ /* region reading rhythm: cem-rhythm-reading-[level] */
415
+ --cem-rhythm-reading-paragraph: 0.75em;
416
+ --cem-rhythm-reading-section: var(--cem-dim-large);
417
+
418
+ /* endregion reading rhythm */
419
+
420
+ /* region data rhythm: cem-rhythm-data-[level] */
421
+ --cem-rhythm-data-row: var(--cem-dim-x-small);
422
+ --cem-rhythm-data-group: var(--cem-dim-medium);
423
+
424
+ /* endregion data rhythm */
425
+
426
+ /* region layout tokens: cem-layout-[purpose] (excludes deprecated) */
427
+ --cem-layout-stack-gap: var(--cem-gap-block);
428
+ --cem-layout-cluster-gap: var(--cem-gap-related);
429
+ --cem-layout-gutter: var(--cem-dim-medium);
430
+ --cem-layout-gutter-wide: var(--cem-dim-x-large);
431
+ --cem-layout-gutter-max: var(--cem-dim-xx-large);
432
+ --cem-layout-stack-tight: var(--cem-gap-related);
433
+ --cem-layout-stack-loose: var(--cem-gap-section);
434
+
435
+ /* endregion layout tokens */
436
+ }
437
+
438
+ /* region spacing mode: dense */
439
+ :root[data-cem-spacing="dense"] {
440
+ --cem-gap-related: var(--cem-dim-x-small);
441
+ --cem-gap-group: var(--cem-dim-x-small);
442
+ --cem-gap-block: var(--cem-dim-small);
443
+ --cem-gap-section: var(--cem-dim-medium);
444
+ --cem-gap-page: var(--cem-dim-large);
445
+ --cem-inset-control: var(--cem-dim-x-small);
446
+ --cem-inset-container: var(--cem-dim-small);
447
+ --cem-inset-surface: var(--cem-dim-medium);
448
+ --cem-layout-gutter: var(--cem-dim-small);
449
+ --cem-layout-gutter-wide: var(--cem-dim-large);
450
+ --cem-layout-gutter-max: var(--cem-dim-x-large);
451
+ --cem-rhythm-reading-paragraph: 0.6em;
452
+ --cem-rhythm-reading-section: var(--cem-dim-medium);
453
+ --cem-rhythm-data-row: var(--cem-dim-xx-small);
454
+ --cem-rhythm-data-group: var(--cem-dim-small);
455
+
456
+ }
457
+ /* endregion spacing mode: dense */
458
+
459
+ /* region spacing mode: sparse */
460
+ :root[data-cem-spacing="sparse"] {
461
+ --cem-gap-related: var(--cem-dim-small);
462
+ --cem-gap-group: var(--cem-dim-medium);
463
+ --cem-gap-block: var(--cem-dim-large);
464
+ --cem-gap-section: var(--cem-dim-x-large);
465
+ --cem-gap-page: var(--cem-dim-xx-large);
466
+ --cem-inset-control: var(--cem-dim-small);
467
+ --cem-inset-container: var(--cem-dim-large);
468
+ --cem-inset-surface: var(--cem-dim-x-large);
469
+ --cem-layout-gutter: var(--cem-dim-large);
470
+ --cem-layout-gutter-wide: var(--cem-dim-xx-large);
471
+ --cem-layout-gutter-max: var(--cem-dim-xxx-large);
472
+ --cem-rhythm-reading-paragraph: 1em;
473
+ --cem-rhythm-reading-section: var(--cem-dim-x-large);
474
+ --cem-rhythm-data-row: var(--cem-dim-small);
475
+ --cem-rhythm-data-group: var(--cem-dim-large);
476
+
477
+ }
478
+ /* endregion spacing mode: sparse */
479
+
480
+ /* cem-breakpoints.css */
481
+
482
+ /* ── Block A — CSS custom property reference values ─────────────────────── */
483
+
484
+ :root {
485
+ /* region width basis: epsilon + cem-bp-width-[range]-[min|max] */
486
+ --cem-bp-epsilon: 0.01px;
487
+ --cem-bp-epsilon-css: 0.01px;
488
+ --cem-bp-epsilon-mui: 0.05px;
489
+ --cem-bp-width-compact-min: 0px;
490
+ --cem-bp-width-compact-max: calc(var(--cem-bp-width-medium-min) - var(--cem-bp-epsilon));
491
+ --cem-bp-width-medium-min: 600px;
492
+ --cem-bp-width-medium-max: calc(var(--cem-bp-width-expanded-min) - var(--cem-bp-epsilon));
493
+ --cem-bp-width-expanded-min: 840px;
494
+ --cem-bp-width-expanded-max: calc(var(--cem-bp-width-large-min) - var(--cem-bp-epsilon));
495
+ --cem-bp-width-large-min: 1200px;
496
+ --cem-bp-width-large-max: calc(var(--cem-bp-width-xlarge-min) - var(--cem-bp-epsilon));
497
+ --cem-bp-width-xlarge-min: 1600px;
498
+
499
+ /* endregion width basis */
500
+
501
+ /* region height basis: cem-bp-height-[range]-[min|max] */
502
+ --cem-bp-height-compact-min: 0px;
503
+ --cem-bp-height-compact-max: calc(var(--cem-bp-height-medium-min) - var(--cem-bp-epsilon));
504
+ --cem-bp-height-medium-min: 480px;
505
+ --cem-bp-height-medium-max: calc(var(--cem-bp-height-expanded-min) - var(--cem-bp-epsilon));
506
+ --cem-bp-height-expanded-min: 900px;
507
+
508
+ /* endregion height basis */
509
+
510
+ /* region container query reference values: cem-cq-width-[range]-[min|max] */
511
+ /* Consumer must provide container-type: inline-size (see R-D1x-WRAP) */
512
+ --cem-cq-width-compact-max: calc(var(--cem-cq-width-medium-min) - var(--cem-bp-epsilon));
513
+ --cem-cq-width-medium-min: 600px;
514
+ --cem-cq-width-medium-max: calc(var(--cem-cq-width-expanded-min) - var(--cem-bp-epsilon));
515
+ --cem-cq-width-expanded-min: 840px;
516
+ --cem-cq-width-expanded-max: calc(var(--cem-cq-width-large-min) - var(--cem-bp-epsilon));
517
+ --cem-cq-width-large-min: 1200px;
518
+
519
+ /* endregion container query reference values */
520
+ }
521
+
522
+ /* ── Block B — @media active-width helpers ───────────────────────────────── */
523
+ /* Sets --cem-bp-active-width; read via JS: getComputedStyle(root).getPropertyValue('--cem-bp-active-width').trim() */
524
+
525
+
526
+ @media (max-width: 599.99px) {
527
+ :root {
528
+ --cem-bp-active-width: compact;
529
+ }
530
+ }
531
+
532
+ @media (min-width: 600px) and (max-width: 839.99px) {
533
+ :root {
534
+ --cem-bp-active-width: medium;
535
+ }
536
+ }
537
+
538
+ @media (min-width: 840px) and (max-width: 1199.99px) {
539
+ :root {
540
+ --cem-bp-active-width: expanded;
541
+ }
542
+ }
543
+
544
+ @media (min-width: 1200px) and (max-width: 1599.99px) {
545
+ :root {
546
+ --cem-bp-active-width: large;
547
+ }
548
+ }
549
+
550
+ @media (min-width: 1600px) {
551
+ :root {
552
+ --cem-bp-active-width: xlarge;
553
+ }
554
+ }
555
+
556
+
557
+ /* Height helpers (informative — most apps adapt on width only) */
558
+
559
+ @media (max-height: 479.99px) {
560
+ :root {
561
+ --cem-bp-active-height: compact;
562
+ }
563
+ }
564
+
565
+ @media (min-height: 480px) and (max-height: 899.99px) {
566
+ :root {
567
+ --cem-bp-active-height: medium;
568
+ }
569
+ }
570
+
571
+ @media (min-height: 900px) {
572
+ :root {
573
+ --cem-bp-active-height: expanded;
574
+ }
575
+ }
576
+
577
+
578
+ /* ── Block C — @container helpers ────────────────────────────────────────── */
579
+ /* Deferred: CEM does not emit @container selectors (R-D1x-WRAP). */
580
+ /* Use --cem-cq-width-* reference values in your own @container rules. */
581
+
582
+ /* cem-coupling.css */
583
+
584
+ :root {
585
+ /* region coupling minimums — mode-invariant safety anchors */
586
+ --cem-coupling-zone-min: 3rem;
587
+ --cem-coupling-guard-min: 0.5rem;
588
+ --cem-coupling-halo: 0.25rem;
589
+
590
+ /* endregion coupling minimums */
591
+ }
592
+
593
+ /* region coupling mode: forgiving — halo policy only (visuals owned by D2c Controls) */
594
+ :root[data-cem-coupling="forgiving"] {
595
+ --cem-coupling-halo: 0.125rem;
596
+
597
+ }
598
+ /* endregion coupling mode: forgiving */
599
+
600
+ /* region coupling mode: compact — halo policy only (visuals owned by D2c Controls) */
601
+ :root[data-cem-coupling="compact"] {
602
+ --cem-coupling-halo: 0.375rem;
603
+
604
+ }
605
+ /* endregion coupling mode: compact */
606
+
607
+ /* cem-controls.css */
608
+
609
+ :root {
610
+ /* region control geometry — balanced (default) baseline */
611
+ --cem-control-height: 2.5rem;
612
+ --cem-control-padding-x: 0.75rem;
613
+ --cem-control-padding-y: 0.5rem;
614
+ --cem-icon-button-size: var(--cem-coupling-zone-min);
615
+ --cem-icon-button-icon-size: 1.25rem;
616
+ --cem-list-row-height: 3rem;
617
+ --cem-menu-row-height: 3rem;
618
+ --cem-table-row-height: 2.5rem;
619
+
620
+ /* endregion control geometry */
621
+ }
622
+
623
+ /* region coupling mode: forgiving — larger visual geometry */
624
+ :root[data-cem-coupling="forgiving"] {
625
+ --cem-control-height: 2.75rem;
626
+ --cem-control-padding-x: 1rem;
627
+ --cem-control-padding-y: 0.625rem;
628
+ --cem-list-row-height: 3.25rem;
629
+ --cem-menu-row-height: 3.25rem;
630
+
631
+ }
632
+ /* endregion coupling mode: forgiving */
633
+
634
+ /* region coupling mode: compact — smaller visual geometry */
635
+ :root[data-cem-coupling="compact"] {
636
+ --cem-control-height: 2.25rem;
637
+ --cem-control-padding-x: 0.625rem;
638
+ --cem-control-padding-y: 0.375rem;
639
+ --cem-list-row-height: 2.75rem;
640
+ --cem-menu-row-height: 2.75rem;
641
+
642
+ }
643
+ /* endregion coupling mode: compact */
644
+
645
+ /* cem-shape.css */
646
+
647
+ :root {
648
+ /* region bend basis — sharp / smooth / round / circle plus active alias */
649
+ --cem-bend-sharp: 0;
650
+ --cem-bend-smooth: var(--cem-dim-x-small);
651
+ --cem-bend-round: calc(var(--cem-shape-height, var(--cem-control-height)) / 2);
652
+ --cem-bend-circle: 50%;
653
+ --cem-bend: var(--cem-bend-smooth);
654
+
655
+ /* endregion bend basis */
656
+
657
+ /* region semantic endpoints — role-first product contract */
658
+ --cem-bend-control: var(--cem-bend);
659
+ --cem-bend-surface: var(--cem-dim-small);
660
+ --cem-bend-overlay: var(--cem-bend);
661
+ --cem-bend-field: var(--cem-bend-control);
662
+ --cem-bend-modal: calc(var(--cem-dim-large) + var(--cem-dim-xx-small));
663
+ --cem-bend-control-round-ends: var(--cem-bend-round);
664
+ --cem-bend-media: var(--cem-bend);
665
+ --cem-bend-avatar: var(--cem-bend-circle);
666
+
667
+ /* endregion semantic endpoints */
668
+
669
+ /* region pattern tokens — asymmetric attachment */
670
+ --cem-bend-attached-edge: var(--cem-bend-sharp);
671
+ --cem-bend-free-edge: var(--cem-bend-modal);
672
+
673
+ /* endregion pattern tokens */
674
+
675
+ /* region action component bindings — geometry owned by D3 */
676
+ --cem-action-border-radius: var(--cem-bend-control);
677
+
678
+ /* endregion action component bindings */
679
+ }
680
+
681
+ /* region shape mode: sharp — technical, precise brand expression */
682
+ :root[data-cem-shape="sharp"] {
683
+ --cem-bend: var(--cem-bend-sharp);
684
+ --cem-bend-control: var(--cem-bend);
685
+ --cem-bend-surface: var(--cem-bend-smooth);
686
+ --cem-bend-overlay: var(--cem-bend-smooth);
687
+
688
+ }
689
+ /* endregion shape mode: sharp */
690
+
691
+ /* region shape mode: round — consumer, welcoming brand expression */
692
+ :root[data-cem-shape="round"] {
693
+ --cem-bend: var(--cem-bend-smooth);
694
+ --cem-bend-surface: var(--cem-dim-medium);
695
+ --cem-bend-overlay: var(--cem-bend-smooth);
696
+
697
+ }
698
+ /* endregion shape mode: round */
699
+
700
+ /* cem-layering.css */
701
+
702
+ :root {
703
+ /* region basis rungs — signed depth ladder as box-shadow recipes (NOT z-index) */
704
+ --cem-recess-2: inset 0 2px 4px rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(0, 0, 0, 0.04);
705
+ --cem-recess-1: inset 0 1px 2px rgba(0, 0, 0, 0.04);
706
+ --cem-elevation-0: none;
707
+ --cem-elevation-1: 0 1px 2px rgba(0, 0, 0, 0.06), 0 1px 1px rgba(0, 0, 0, 0.04);
708
+ --cem-elevation-2: 0 2px 4px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.06);
709
+ --cem-elevation-3: 0 4px 8px rgba(0, 0, 0, 0.10), 0 2px 4px rgba(0, 0, 0, 0.08);
710
+ --cem-elevation-4: 0 8px 16px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.10);
711
+
712
+ /* endregion basis rungs */
713
+
714
+ /* region semantic endpoints — required product-facing contract */
715
+ --cem-layer-back: var(--cem-recess-1);
716
+ --cem-layer-base: var(--cem-elevation-0);
717
+ --cem-layer-work: var(--cem-elevation-1);
718
+ --cem-layer-overlay: var(--cem-elevation-3);
719
+ --cem-layer-command: var(--cem-elevation-4);
720
+
721
+ /* endregion semantic endpoints */
722
+
723
+ /* region optional semantic endpoints — back-deep / work-floating */
724
+ --cem-layer-back-deep: var(--cem-recess-2);
725
+ --cem-layer-work-floating: var(--cem-elevation-2);
726
+
727
+ /* endregion optional semantic endpoints */
728
+ }
729
+
730
+ /* region forced-colors fallback — collapse rungs; tier signal carried by D5 contour and spatial isolation */
731
+ @media (forced-colors: active) {
732
+ :root {
733
+ --cem-recess-2: none;
734
+ --cem-recess-1: none;
735
+ --cem-elevation-0: none;
736
+ --cem-elevation-1: none;
737
+ --cem-elevation-2: none;
738
+ --cem-elevation-3: none;
739
+ --cem-elevation-4: none;
740
+
741
+ }
742
+ }
743
+ /* endregion forced-colors fallback */
744
+
745
+ /* cem-stroke.css */
746
+
747
+ :root {
748
+ /* region stroke basis — none / hair / standard / strong */
749
+ --cem-stroke-none: 0px;
750
+ --cem-stroke-hair: 1px;
751
+ --cem-stroke-standard: 2px;
752
+ --cem-stroke-strong: 3px;
753
+
754
+ /* endregion stroke basis */
755
+
756
+ /* region semantic endpoints — boundary / divider / focus / selected / target / indicator-offset */
757
+ --cem-stroke-boundary: var(--cem-stroke-hair);
758
+ --cem-stroke-boundary-strong: var(--cem-stroke-standard);
759
+ --cem-stroke-divider: var(--cem-stroke-hair);
760
+ --cem-stroke-grid: var(--cem-stroke-divider);
761
+ --cem-stroke-focus: var(--cem-stroke-standard);
762
+ --cem-stroke-selected: var(--cem-stroke-standard);
763
+ --cem-stroke-target: var(--cem-stroke-standard);
764
+ --cem-stroke-indicator-offset: 2px;
765
+
766
+ /* endregion semantic endpoints */
767
+
768
+ /* region zebra pattern geometry — angle only (strip-size and colors owned by D0) */
769
+ --cem-zebra-angle: 45deg;
770
+
771
+ /* endregion zebra pattern geometry */
772
+
773
+ /* region ring recipes — box-shadow composition referencing D0 zebra tokens */
774
+ --cem-ring-zebra-3: 0 0 0 calc(1 * var(--cem-zebra-strip-size)) var(--cem-zebra-color-1), 0 0 0 calc(2 * var(--cem-zebra-strip-size)) var(--cem-zebra-color-2), 0 0 0 calc(3 * var(--cem-zebra-strip-size)) var(--cem-zebra-color-3);
775
+ --cem-ring-zebra-4: 0 0 0 calc(1 * var(--cem-zebra-strip-size)) var(--cem-zebra-color-0), 0 0 0 calc(2 * var(--cem-zebra-strip-size)) var(--cem-zebra-color-1), 0 0 0 calc(3 * var(--cem-zebra-strip-size)) var(--cem-zebra-color-2), 0 0 0 calc(4 * var(--cem-zebra-strip-size)) var(--cem-zebra-color-3);
776
+
777
+ /* endregion ring recipes */
778
+ }
779
+
780
+ /* region forced-colors fallback — collapse rings to a single Highlight outline (Principle P4) */
781
+ @media (forced-colors: active) {
782
+ :root {
783
+ --cem-ring-zebra-3: 0 0 0 var(--cem-stroke-focus) Highlight;
784
+ --cem-ring-zebra-4: 0 0 0 var(--cem-stroke-focus) Highlight;
785
+
786
+ }
787
+ }
788
+ /* endregion forced-colors fallback */
789
+
790
+ /* cem-voice-fonts-typography.css */
791
+
792
+ :root {
793
+ /* region 1) fontography — semantic family stacks */
794
+ --cem-fontography-reading-family: "Roboto", "Source Sans Pro", system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;
795
+ --cem-fontography-ui-family: var(--cem-fontography-reading-family);
796
+ --cem-fontography-script-family: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", "Noto Sans Mono", monospace;
797
+ --cem-fontography-initialism-family: "Barlow Semi Condensed", "Roboto Condensed", "Arial Narrow", var(--cem-fontography-ui-family);
798
+ --cem-fontography-brand-family: "Fraunces", "Playfair Display", Georgia, "Times New Roman", serif;
799
+
800
+ /* endregion fontography */
801
+
802
+ /* region 2) thickness — 7-step weight scale */
803
+ --cem-thickness-xx-light: 100;
804
+ --cem-thickness-x-light: 200;
805
+ --cem-thickness-light: 300;
806
+ --cem-thickness-normal: 400;
807
+ --cem-thickness-bold: 700;
808
+ --cem-thickness-x-bold: 800;
809
+ --cem-thickness-xx-bold: 900;
810
+
811
+ /* endregion thickness */
812
+
813
+ /* region 3) size — 7-step rem-based size scale */
814
+ --cem-typography-size-xxs: 0.75rem;
815
+ --cem-typography-size-xs: 0.8125rem;
816
+ --cem-typography-size-s: 0.875rem;
817
+ --cem-typography-size-m: 1rem;
818
+ --cem-typography-size-l: 1.125rem;
819
+ --cem-typography-size-xl: 1.375rem;
820
+ --cem-typography-size-xxl: 1.75rem;
821
+
822
+ /* endregion size */
823
+
824
+ /* region 4) line-height primitives */
825
+ --cem-typography-line-height-reading: 1.55;
826
+ --cem-typography-line-height-ui: 1.2;
827
+ --cem-typography-line-height-script: 1.4;
828
+ --cem-typography-line-height-badge: 1;
829
+
830
+ /* endregion line-height */
831
+
832
+ /* region 5) letter-spacing primitives */
833
+ --cem-typography-letter-spacing-reading: normal;
834
+ --cem-typography-letter-spacing-ui: 0.01em;
835
+ --cem-typography-letter-spacing-caps: 0.08em;
836
+
837
+ /* endregion letter-spacing */
838
+
839
+ /* region 6) typography feature policies */
840
+ --cem-typography-feature-numeric-data: tabular-nums lining-nums;
841
+ --cem-typography-feature-ligatures-script: none;
842
+ --cem-typography-feature-optical-sizing: auto;
843
+
844
+ /* endregion feature policies */
845
+
846
+ /* region 7) reading ergonomics */
847
+ --cem-typography-reading-measure-max: 65ch;
848
+ --cem-typography-reading-paragraph-gap: 0.75em;
849
+
850
+ /* endregion reading ergonomics */
851
+
852
+ /* region 8) voice — ink-thickness (drives font-weight) */
853
+ --cem-voice-whisper-ink-thickness: var(--cem-thickness-xx-light);
854
+ --cem-voice-soft-ink-thickness: var(--cem-thickness-x-light);
855
+ --cem-voice-gentle-ink-thickness: var(--cem-thickness-light);
856
+ --cem-voice-regular-ink-thickness: var(--cem-thickness-normal);
857
+ --cem-voice-firm-ink-thickness: var(--cem-thickness-bold);
858
+ --cem-voice-strong-ink-thickness: var(--cem-thickness-x-bold);
859
+ --cem-voice-loud-ink-thickness: var(--cem-thickness-xx-bold);
860
+
861
+ /* endregion voice ink-thickness */
862
+
863
+ /* region 9) voice — icon-stroke multipliers */
864
+ --cem-voice-whisper-icon-stroke-multiplier: 0.90;
865
+ --cem-voice-soft-icon-stroke-multiplier: 0.95;
866
+ --cem-voice-gentle-icon-stroke-multiplier: 1.00;
867
+ --cem-voice-regular-icon-stroke-multiplier: 1.00;
868
+ --cem-voice-firm-icon-stroke-multiplier: 1.10;
869
+ --cem-voice-strong-icon-stroke-multiplier: 1.20;
870
+ --cem-voice-loud-icon-stroke-multiplier: 1.30;
871
+
872
+ /* endregion voice icon-stroke */
873
+
874
+ /* region 10) voice — speech-volume (TTS adapter input, not screen-reader) */
875
+ --cem-voice-whisper-speech-volume: 0.65;
876
+ --cem-voice-soft-speech-volume: 0.75;
877
+ --cem-voice-gentle-speech-volume: 0.85;
878
+ --cem-voice-regular-speech-volume: 1.00;
879
+ --cem-voice-firm-speech-volume: 1.00;
880
+ --cem-voice-strong-speech-volume: 1.00;
881
+ --cem-voice-loud-speech-volume: 1.00;
882
+
883
+ /* endregion voice speech-volume */
884
+
885
+ /* region 11) voice — speech-rate */
886
+ --cem-voice-whisper-speech-rate: 1.00;
887
+ --cem-voice-soft-speech-rate: 1.00;
888
+ --cem-voice-gentle-speech-rate: 1.00;
889
+ --cem-voice-regular-speech-rate: 1.00;
890
+ --cem-voice-firm-speech-rate: 0.98;
891
+ --cem-voice-strong-speech-rate: 0.96;
892
+ --cem-voice-loud-speech-rate: 0.94;
893
+
894
+ /* endregion voice speech-rate */
895
+
896
+ /* region 12) voice — speech-pitch */
897
+ --cem-voice-whisper-speech-pitch: 0.95;
898
+ --cem-voice-soft-speech-pitch: 0.98;
899
+ --cem-voice-gentle-speech-pitch: 1.00;
900
+ --cem-voice-regular-speech-pitch: 1.00;
901
+ --cem-voice-firm-speech-pitch: 1.03;
902
+ --cem-voice-strong-speech-pitch: 1.06;
903
+ --cem-voice-loud-speech-pitch: 1.10;
904
+
905
+ /* endregion voice speech-pitch */
906
+
907
+ /* region 13) voice — ssml-emphasis */
908
+ --cem-voice-whisper-ssml-emphasis: reduced;
909
+ --cem-voice-soft-ssml-emphasis: reduced;
910
+ --cem-voice-gentle-ssml-emphasis: moderate;
911
+ --cem-voice-regular-ssml-emphasis: moderate;
912
+ --cem-voice-firm-ssml-emphasis: moderate;
913
+ --cem-voice-strong-ssml-emphasis: strong;
914
+ --cem-voice-loud-ssml-emphasis: strong;
915
+
916
+ /* endregion voice ssml-emphasis */
917
+
918
+ /* region 14) semantic role endpoints — 8 roles × ~9-10 properties each */
919
+ --cem-typography-reading-font-family: var(--cem-fontography-reading-family);
920
+ --cem-typography-reading-font-size: var(--cem-typography-size-m);
921
+ --cem-typography-reading-line-height: var(--cem-typography-line-height-reading);
922
+ --cem-typography-reading-letter-spacing: var(--cem-typography-letter-spacing-reading);
923
+ --cem-typography-reading-font-weight: var(--cem-voice-regular-ink-thickness);
924
+ --cem-typography-reading-speech-volume: var(--cem-voice-regular-speech-volume);
925
+ --cem-typography-reading-speech-rate: var(--cem-voice-regular-speech-rate);
926
+ --cem-typography-reading-speech-pitch: var(--cem-voice-regular-speech-pitch);
927
+ --cem-typography-reading-ssml-emphasis: var(--cem-voice-regular-ssml-emphasis);
928
+ --cem-typography-ui-font-family: var(--cem-fontography-ui-family);
929
+ --cem-typography-ui-font-size: var(--cem-typography-size-m);
930
+ --cem-typography-ui-line-height: var(--cem-typography-line-height-ui);
931
+ --cem-typography-ui-letter-spacing: var(--cem-typography-letter-spacing-ui);
932
+ --cem-typography-ui-font-weight: var(--cem-voice-gentle-ink-thickness);
933
+ --cem-typography-ui-speech-volume: var(--cem-voice-gentle-speech-volume);
934
+ --cem-typography-ui-speech-rate: var(--cem-voice-gentle-speech-rate);
935
+ --cem-typography-ui-speech-pitch: var(--cem-voice-gentle-speech-pitch);
936
+ --cem-typography-ui-ssml-emphasis: var(--cem-voice-gentle-ssml-emphasis);
937
+ --cem-typography-tag-font-family: var(--cem-fontography-ui-family);
938
+ --cem-typography-tag-font-size: var(--cem-typography-size-s);
939
+ --cem-typography-tag-line-height: var(--cem-typography-line-height-ui);
940
+ --cem-typography-tag-letter-spacing: var(--cem-typography-letter-spacing-ui);
941
+ --cem-typography-tag-font-weight: var(--cem-voice-firm-ink-thickness);
942
+ --cem-typography-tag-speech-volume: var(--cem-voice-firm-speech-volume);
943
+ --cem-typography-tag-speech-rate: var(--cem-voice-firm-speech-rate);
944
+ --cem-typography-tag-speech-pitch: var(--cem-voice-firm-speech-pitch);
945
+ --cem-typography-tag-ssml-emphasis: var(--cem-voice-firm-ssml-emphasis);
946
+ --cem-typography-script-font-family: var(--cem-fontography-script-family);
947
+ --cem-typography-script-font-size: var(--cem-typography-size-s);
948
+ --cem-typography-script-line-height: var(--cem-typography-line-height-script);
949
+ --cem-typography-script-letter-spacing: normal;
950
+ --cem-typography-script-font-weight: var(--cem-voice-regular-ink-thickness);
951
+ --cem-typography-script-font-variant-ligatures: var(--cem-typography-feature-ligatures-script);
952
+ --cem-typography-script-speech-volume: var(--cem-voice-regular-speech-volume);
953
+ --cem-typography-script-speech-rate: var(--cem-voice-gentle-speech-rate);
954
+ --cem-typography-script-speech-pitch: var(--cem-voice-gentle-speech-pitch);
955
+ --cem-typography-script-ssml-emphasis: var(--cem-voice-gentle-ssml-emphasis);
956
+ --cem-typography-data-font-family: var(--cem-fontography-ui-family);
957
+ --cem-typography-data-font-size: var(--cem-typography-size-m);
958
+ --cem-typography-data-line-height: var(--cem-typography-line-height-ui);
959
+ --cem-typography-data-letter-spacing: var(--cem-typography-letter-spacing-ui);
960
+ --cem-typography-data-font-weight: var(--cem-voice-regular-ink-thickness);
961
+ --cem-typography-data-font-variant-numeric: var(--cem-typography-feature-numeric-data);
962
+ --cem-typography-data-speech-volume: var(--cem-voice-regular-speech-volume);
963
+ --cem-typography-data-speech-rate: var(--cem-voice-firm-speech-rate);
964
+ --cem-typography-data-speech-pitch: var(--cem-voice-regular-speech-pitch);
965
+ --cem-typography-data-ssml-emphasis: var(--cem-voice-regular-ssml-emphasis);
966
+ --cem-typography-initialism-font-family: var(--cem-fontography-initialism-family);
967
+ --cem-typography-initialism-font-size: var(--cem-typography-size-s);
968
+ --cem-typography-initialism-line-height: var(--cem-typography-line-height-badge);
969
+ --cem-typography-initialism-letter-spacing: var(--cem-typography-letter-spacing-caps);
970
+ --cem-typography-initialism-font-weight: var(--cem-voice-firm-ink-thickness);
971
+ --cem-typography-initialism-text-transform: uppercase;
972
+ --cem-typography-initialism-speech-volume: var(--cem-voice-firm-speech-volume);
973
+ --cem-typography-initialism-speech-rate: var(--cem-voice-firm-speech-rate);
974
+ --cem-typography-initialism-speech-pitch: var(--cem-voice-firm-speech-pitch);
975
+ --cem-typography-initialism-ssml-emphasis: var(--cem-voice-firm-ssml-emphasis);
976
+ --cem-typography-iconized-font-family: var(--cem-fontography-initialism-family);
977
+ --cem-typography-iconized-font-size: calc(var(--cem-typography-size-m) * 2);
978
+ --cem-typography-iconized-line-height: var(--cem-typography-line-height-badge);
979
+ --cem-typography-iconized-letter-spacing: var(--cem-typography-letter-spacing-caps);
980
+ --cem-typography-iconized-font-weight: var(--cem-voice-strong-ink-thickness);
981
+ --cem-typography-iconized-text-transform: uppercase;
982
+ --cem-typography-iconized-speech-volume: var(--cem-voice-strong-speech-volume);
983
+ --cem-typography-iconized-speech-rate: var(--cem-voice-strong-speech-rate);
984
+ --cem-typography-iconized-speech-pitch: var(--cem-voice-strong-speech-pitch);
985
+ --cem-typography-iconized-ssml-emphasis: var(--cem-voice-strong-ssml-emphasis);
986
+ --cem-typography-brand-font-family: var(--cem-fontography-brand-family);
987
+ --cem-typography-brand-font-size: var(--cem-typography-size-xxl);
988
+ --cem-typography-brand-line-height: 1.1;
989
+ --cem-typography-brand-letter-spacing: normal;
990
+ --cem-typography-brand-font-weight: var(--cem-voice-strong-ink-thickness);
991
+ --cem-typography-brand-speech-volume: var(--cem-voice-strong-speech-volume);
992
+ --cem-typography-brand-speech-rate: var(--cem-voice-strong-speech-rate);
993
+ --cem-typography-brand-speech-pitch: var(--cem-voice-strong-speech-pitch);
994
+ --cem-typography-brand-ssml-emphasis: var(--cem-voice-strong-ssml-emphasis);
995
+
996
+ /* endregion semantic role endpoints */
997
+ }
998
+
999
+ /* region dark theme — lighter ink to compensate for perceived boldness on dark backgrounds */
1000
+ .cem-theme-dark, [data-theme="cem-theme-dark"],
1001
+ .cem-theme-contrast-dark, [data-theme="cem-theme-contrast-dark"] {
1002
+ --cem-voice-whisper-ink-thickness: 100;
1003
+ --cem-voice-soft-ink-thickness: 180;
1004
+ --cem-voice-gentle-ink-thickness: 280;
1005
+ --cem-voice-regular-ink-thickness: 350;
1006
+ --cem-voice-firm-ink-thickness: 650;
1007
+ --cem-voice-strong-ink-thickness: 750;
1008
+ --cem-voice-loud-ink-thickness: 850;
1009
+
1010
+ }
1011
+ /* endregion dark theme */
1012
+
1013
+ /* region contrast theme — stronger ink for visibility (overrides dark for shared rows) */
1014
+ .cem-theme-contrast-light, [data-theme="cem-theme-contrast-light"],
1015
+ .cem-theme-contrast-dark, [data-theme="cem-theme-contrast-dark"] {
1016
+ --cem-voice-gentle-ink-thickness: 400;
1017
+ --cem-voice-regular-ink-thickness: 500;
1018
+ --cem-voice-firm-ink-thickness: 750;
1019
+ --cem-voice-strong-ink-thickness: 850;
1020
+
1021
+ }
1022
+ /* endregion contrast theme */
1023
+
1024
+ /* cem-timing.css */
1025
+
1026
+ :root {
1027
+ /* region durations: cem-duration-[bucket] */
1028
+ --cem-duration-instant: 50ms;
1029
+ --cem-duration-noticeable: 250ms;
1030
+ --cem-duration-lingering: 300ms;
1031
+ --cem-duration-action: var(--cem-duration-noticeable);
1032
+ --cem-duration-overlay: var(--cem-duration-lingering);
1033
+
1034
+ /* endregion durations */
1035
+
1036
+ /* region easings: cem-easing-[intent] */
1037
+ --cem-easing-smooth: ease-in-out;
1038
+ --cem-easing-start-smooth: ease-in;
1039
+ --cem-easing-end-smooth: ease-out;
1040
+ --cem-easing-highlighted: cubic-bezier(0.2, 0, 0, 1);
1041
+ --cem-easing-highlighted-start: cubic-bezier(0.3, 0, 0.8, 0.15);
1042
+ --cem-easing-highlighted-end: cubic-bezier(0.05, 0.7, 0.1, 1);
1043
+ --cem-easing-uniform: linear;
1044
+ --cem-easing-classic: ease;
1045
+
1046
+ /* endregion easings */
1047
+ }
1048
+
1049
+ /* region prefers-reduced-motion: shorten durations, preserve ordering */
1050
+ @media (prefers-reduced-motion: reduce) {
1051
+ :root {
1052
+ --cem-duration-instant: 0ms;
1053
+ --cem-duration-noticeable: 50ms;
1054
+ --cem-duration-lingering: 100ms;
1055
+
1056
+ }
1057
+ }
1058
+ /* endregion prefers-reduced-motion */