@idyeah/diya 0.0.0 → 1.0.1

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 (190) hide show
  1. package/CHANGELOG.md +332 -0
  2. package/NOTICE +29 -0
  3. package/README.md +596 -5
  4. package/dist/DiyaProvider.d.ts +79 -0
  5. package/dist/DiyaProvider.js +77 -0
  6. package/dist/Icon.d.ts +10 -0
  7. package/dist/Icon.js +27 -0
  8. package/dist/accordion/Accordion.d.ts +34 -0
  9. package/dist/accordion/Accordion.js +15 -0
  10. package/dist/alert/Alert.d.ts +49 -0
  11. package/dist/alert/Alert.js +11 -0
  12. package/dist/alert/messages.d.ts +9 -0
  13. package/dist/alert/messages.js +2 -0
  14. package/dist/api.json +7277 -0
  15. package/dist/api.schema.json +214 -0
  16. package/dist/application-patterns/Chatbot.d.ts +114 -0
  17. package/dist/application-patterns/Chatbot.js +110 -0
  18. package/dist/application-patterns/SideNavigation.d.ts +74 -0
  19. package/dist/application-patterns/SideNavigation.js +31 -0
  20. package/dist/application-patterns/chatbot-messages.d.ts +20 -0
  21. package/dist/application-patterns/chatbot-messages.js +2 -0
  22. package/dist/application-patterns/side-navigation-messages.d.ts +5 -0
  23. package/dist/application-patterns/side-navigation-messages.js +2 -0
  24. package/dist/avatar/Avatar.d.ts +32 -0
  25. package/dist/avatar/Avatar.js +19 -0
  26. package/dist/avatar/messages.d.ts +7 -0
  27. package/dist/avatar/messages.js +2 -0
  28. package/dist/badge/Badge.d.ts +42 -0
  29. package/dist/badge/Badge.js +16 -0
  30. package/dist/badge/badge-utils.d.ts +6 -0
  31. package/dist/badge/badge-utils.js +24 -0
  32. package/dist/badge/messages.d.ts +4 -0
  33. package/dist/badge/messages.js +2 -0
  34. package/dist/breadcrumbs/Breadcrumbs.d.ts +34 -0
  35. package/dist/breadcrumbs/Breadcrumbs.js +19 -0
  36. package/dist/breadcrumbs/messages.d.ts +5 -0
  37. package/dist/breadcrumbs/messages.js +2 -0
  38. package/dist/button/Button.d.ts +46 -0
  39. package/dist/button/Button.js +44 -0
  40. package/dist/calendar/Calendar.d.ts +55 -0
  41. package/dist/calendar/Calendar.js +61 -0
  42. package/dist/calendar/messages.d.ts +8 -0
  43. package/dist/calendar/messages.js +2 -0
  44. package/dist/calendar/month.d.ts +61 -0
  45. package/dist/calendar/month.js +134 -0
  46. package/dist/card/Card.d.ts +46 -0
  47. package/dist/card/Card.js +8 -0
  48. package/dist/choice/Choice.d.ts +72 -0
  49. package/dist/choice/Choice.js +68 -0
  50. package/dist/choice/messages.d.ts +4 -0
  51. package/dist/choice/messages.js +2 -0
  52. package/dist/code-block/CodeBlock.d.ts +20 -0
  53. package/dist/code-block/CodeBlock.js +49 -0
  54. package/dist/code-block/messages.d.ts +8 -0
  55. package/dist/code-block/messages.js +2 -0
  56. package/dist/combobox/Combobox.d.ts +60 -0
  57. package/dist/combobox/Combobox.js +160 -0
  58. package/dist/combobox/messages.d.ts +9 -0
  59. package/dist/combobox/messages.js +2 -0
  60. package/dist/combobox/useAnchoredPopover.d.ts +5 -0
  61. package/dist/combobox/useAnchoredPopover.js +100 -0
  62. package/dist/data-viz/DataViz.d.ts +140 -0
  63. package/dist/data-viz/DataViz.js +469 -0
  64. package/dist/data-viz/index.d.ts +2 -0
  65. package/dist/data-viz/index.js +1 -0
  66. package/dist/data-viz/messages.d.ts +11 -0
  67. package/dist/data-viz/messages.js +2 -0
  68. package/dist/date-picker/DatePicker.d.ts +57 -0
  69. package/dist/date-picker/DatePicker.js +146 -0
  70. package/dist/date-picker/messages.d.ts +13 -0
  71. package/dist/date-picker/messages.js +2 -0
  72. package/dist/dialog/Dialog.d.ts +84 -0
  73. package/dist/dialog/Dialog.js +107 -0
  74. package/dist/dialog/messages.d.ts +9 -0
  75. package/dist/dialog/messages.js +2 -0
  76. package/dist/fonts/DIYASans-Italic.woff2 +0 -0
  77. package/dist/fonts/DIYASans.woff2 +0 -0
  78. package/dist/fonts/OFL.txt +94 -0
  79. package/dist/index.d.ts +50 -0
  80. package/dist/index.js +46 -0
  81. package/dist/internal/brand.d.ts +33 -0
  82. package/dist/internal/brand.js +57 -0
  83. package/dist/internal/cx.d.ts +2 -0
  84. package/dist/internal/cx.js +4 -0
  85. package/dist/internal/link.d.ts +14 -0
  86. package/dist/internal/link.js +7 -0
  87. package/dist/internal/slot.d.ts +15 -0
  88. package/dist/internal/slot.js +67 -0
  89. package/dist/layout/Inline.d.ts +4 -0
  90. package/dist/layout/Inline.js +7 -0
  91. package/dist/layout/Stack.d.ts +4 -0
  92. package/dist/layout/Stack.js +7 -0
  93. package/dist/layout/layout.d.ts +32 -0
  94. package/dist/layout/layout.js +12 -0
  95. package/dist/link/TextLink.d.ts +23 -0
  96. package/dist/link/TextLink.js +17 -0
  97. package/dist/list/List.d.ts +48 -0
  98. package/dist/list/List.js +17 -0
  99. package/dist/list/messages.d.ts +4 -0
  100. package/dist/list/messages.js +2 -0
  101. package/dist/menu/Menu.d.ts +49 -0
  102. package/dist/menu/Menu.js +54 -0
  103. package/dist/messages-defaults.d.ts +201 -0
  104. package/dist/messages-defaults.js +61 -0
  105. package/dist/messages.d.ts +12 -0
  106. package/dist/messages.js +1 -0
  107. package/dist/metric/Metric.d.ts +42 -0
  108. package/dist/metric/Metric.js +11 -0
  109. package/dist/metric/messages.d.ts +9 -0
  110. package/dist/metric/messages.js +2 -0
  111. package/dist/overlay/FloatingSurface.d.ts +29 -0
  112. package/dist/overlay/FloatingSurface.js +254 -0
  113. package/dist/page-header/PageHeader.d.ts +38 -0
  114. package/dist/page-header/PageHeader.js +10 -0
  115. package/dist/pagination/Pagination.d.ts +44 -0
  116. package/dist/pagination/Pagination.js +26 -0
  117. package/dist/pagination/messages.d.ts +11 -0
  118. package/dist/pagination/messages.js +2 -0
  119. package/dist/popover/Popover.d.ts +23 -0
  120. package/dist/popover/Popover.js +8 -0
  121. package/dist/progress/Progress.d.ts +33 -0
  122. package/dist/progress/Progress.js +14 -0
  123. package/dist/progress/messages.d.ts +4 -0
  124. package/dist/progress/messages.js +2 -0
  125. package/dist/prose/Prose.d.ts +14 -0
  126. package/dist/prose/Prose.js +7 -0
  127. package/dist/rating/Rating.d.ts +32 -0
  128. package/dist/rating/Rating.js +27 -0
  129. package/dist/rating/messages.d.ts +6 -0
  130. package/dist/rating/messages.js +2 -0
  131. package/dist/search/Search.d.ts +11 -0
  132. package/dist/search/Search.js +9 -0
  133. package/dist/select/Select.d.ts +65 -0
  134. package/dist/select/Select.js +19 -0
  135. package/dist/select/messages.d.ts +4 -0
  136. package/dist/select/messages.js +2 -0
  137. package/dist/site-header/SiteHeader.d.ts +88 -0
  138. package/dist/site-header/SiteHeader.js +211 -0
  139. package/dist/site-header/messages.d.ts +8 -0
  140. package/dist/site-header/messages.js +2 -0
  141. package/dist/slider/Slider.d.ts +54 -0
  142. package/dist/slider/Slider.js +89 -0
  143. package/dist/slider/messages.d.ts +5 -0
  144. package/dist/slider/messages.js +2 -0
  145. package/dist/styles.css +3386 -0
  146. package/dist/switch/Switch.d.ts +47 -0
  147. package/dist/switch/Switch.js +18 -0
  148. package/dist/table/Table.d.ts +99 -0
  149. package/dist/table/Table.js +158 -0
  150. package/dist/table/messages.d.ts +23 -0
  151. package/dist/table/messages.js +2 -0
  152. package/dist/tabs/Tabs.d.ts +49 -0
  153. package/dist/tabs/Tabs.js +26 -0
  154. package/dist/tag/Tag.d.ts +37 -0
  155. package/dist/tag/Tag.js +20 -0
  156. package/dist/tag/messages.d.ts +4 -0
  157. package/dist/tag/messages.js +2 -0
  158. package/dist/text-area/TextArea.d.ts +47 -0
  159. package/dist/text-area/TextArea.js +19 -0
  160. package/dist/text-input/TextInput.d.ts +53 -0
  161. package/dist/text-input/TextInput.js +35 -0
  162. package/dist/text-input/messages.d.ts +4 -0
  163. package/dist/text-input/messages.js +3 -0
  164. package/dist/text-input/native-field.d.ts +15 -0
  165. package/dist/text-input/native-field.js +56 -0
  166. package/dist/toast/Toast.d.ts +24 -0
  167. package/dist/toast/Toast.js +79 -0
  168. package/dist/toast/messages.d.ts +4 -0
  169. package/dist/toast/messages.js +2 -0
  170. package/dist/tooltip/Tooltip.d.ts +22 -0
  171. package/dist/tooltip/Tooltip.js +92 -0
  172. package/dist/workflow/ContentState.d.ts +44 -0
  173. package/dist/workflow/ContentState.js +11 -0
  174. package/dist/workflow/Drawer.d.ts +48 -0
  175. package/dist/workflow/Drawer.js +51 -0
  176. package/dist/workflow/FileUpload.d.ts +67 -0
  177. package/dist/workflow/FileUpload.js +47 -0
  178. package/dist/workflow/Form.d.ts +52 -0
  179. package/dist/workflow/Form.js +16 -0
  180. package/dist/workflow/Wizard.d.ts +76 -0
  181. package/dist/workflow/Wizard.js +31 -0
  182. package/dist/workflow/drawer-messages.d.ts +4 -0
  183. package/dist/workflow/drawer-messages.js +2 -0
  184. package/dist/workflow/file-upload-messages.d.ts +11 -0
  185. package/dist/workflow/file-upload-messages.js +2 -0
  186. package/dist/workflow/form-messages.d.ts +5 -0
  187. package/dist/workflow/form-messages.js +2 -0
  188. package/dist/workflow/wizard-messages.d.ts +9 -0
  189. package/dist/workflow/wizard-messages.js +2 -0
  190. package/package.json +82 -7
@@ -0,0 +1,3386 @@
1
+ /* @idyeah/diya. Every rule is in the "diya" cascade layer, so your own CSS wins.
2
+ With Tailwind v4, order the layers once: @layer theme, base, diya, components, utilities; */
3
+ @layer diya {
4
+ /* DIYA Sans: DIYA's typeface, a modified Mona Sans under the SIL Open Font
5
+ License (fonts/OFL.txt). Variable weight 200-900 and width 75%-125%. */
6
+ @font-face {
7
+ font-family: 'DIYA Sans';
8
+ src: url('./fonts/DIYASans.woff2') format('woff2');
9
+ font-style: normal;
10
+ font-weight: 200 900;
11
+ font-stretch: 75% 125%;
12
+ font-display: swap;
13
+ }
14
+ @font-face {
15
+ font-family: 'DIYA Sans';
16
+ src: url('./fonts/DIYASans-Italic.woff2') format('woff2');
17
+ font-style: italic;
18
+ font-weight: 200 900;
19
+ font-stretch: 75% 125%;
20
+ font-display: swap;
21
+ }
22
+
23
+ /* Arial resized to DIYA Sans's metrics, so the page does not shift when the
24
+ web font arrives. */
25
+ @font-face {
26
+ font-family: 'DIYA Sans Fallback';
27
+ src: local('Arial');
28
+ size-adjust: 104.5%;
29
+ ascent-override: 104.3%;
30
+ descent-override: 30.6%;
31
+ line-gap-override: 0%;
32
+ }
33
+
34
+ /* DIYA foundations. Appearance is local to each provider, including its portals. */
35
+ .diya-root {
36
+ /* Type scale. Reader-facing text never goes below caption. */
37
+ --diya-text-caption: 14px;
38
+ --diya-text-body: 15px;
39
+ --diya-text-large: 17px;
40
+ --diya-text-title: 20px;
41
+ --diya-text-heading: 26px;
42
+ --diya-text-display: 34px;
43
+ --diya-text-hero: 44px;
44
+ /* Leading. DIYA Sans's own line gap is tall, so titles set it explicitly. */
45
+ --diya-leading-tight: 1.2;
46
+ --diya-leading-body: 1.5;
47
+ /* Spacing scale, for Stack, Inline and your own layouts. */
48
+ --diya-space-1: 4px;
49
+ --diya-space-2: 8px;
50
+ --diya-space-3: 12px;
51
+ --diya-space-4: 16px;
52
+ --diya-space-5: 24px;
53
+ --diya-space-6: 32px;
54
+ --diya-space-7: 48px;
55
+ --diya-space-8: 64px;
56
+ /* One corner for every control: buttons, fields, selects and menu triggers. */
57
+ --diya-radius-control: calc(6px * var(--diya-corner-scale, 1));
58
+ /* One corner for every surface that sits in the page: Card, chart cards, Page Header, Form, Table. */
59
+ --diya-radius-surface: calc(16px * var(--diya-corner-scale, 1));
60
+ /* Neutral grays. Dark is the base; Light overrides below. Dark sits on a near-black
61
+ ground; raised surfaces lift only slightly and recessed wells sink below it. */
62
+ --diya-color-text: #f1f3f2;
63
+ --diya-color-muted: #bec8cb;
64
+ --diya-color-line: #ffffff26;
65
+ --diya-color-surface: #111113;
66
+ --diya-color-recessed: #0a0a0b;
67
+ --diya-color-raised: #18181b;
68
+ --diya-color-glass: #ffffff0d;
69
+ /* The dimming layer behind dialogs and drawers, in Light and Dark alike; Glass sets a lighter one,
70
+ since its blur already sets the page back. Use it for your own overlays and spotlights too. */
71
+ --diya-color-scrim: #00000088;
72
+ --diya-color-hover: #ffffff10;
73
+ --diya-color-selected: #ffffff1c;
74
+ /* The brand: DiyaProvider's brandColor sets the private pair per theme; the fallbacks
75
+ are DIYA's default (src/internal/brand.ts, DIYA_DEFAULT_BRAND). */
76
+ --diya-color-accent: var(--diya-internal-accent-dark, #e8e8e8);
77
+ --diya-color-accent-text: var(--diya-internal-accent-text-dark, #1c1c1c);
78
+ --diya-color-accent-soft: var(--diya-internal-accent-soft-dark, #e8e8e833);
79
+ --diya-color-accent-ink: var(--diya-internal-accent-ink-dark, #e8e8e8);
80
+ --diya-internal-edge: #ffffff30;
81
+ --diya-internal-highlight: #ffffff30;
82
+ --diya-shadow-raised: inset 0 1px 0 #ffffff0a, 0 -6px 24px -6px #ffffff24,
83
+ 0 0 44px -10px #ffffff18, 0 18px 40px -8px #000000a6;
84
+ --diya-internal-blur: blur(14px);
85
+ --diya-internal-backdrop: none;
86
+ --diya-internal-header-fill: var(--diya-color-raised);
87
+ --diya-internal-header-border: color-mix(in srgb, var(--diya-color-text) 18%, transparent);
88
+ /* In-page surfaces (Card, chart cards, Form, Table, Page Header panel) lift with a soft
89
+ shadow and the faintest edge, never a bright outline. */
90
+ --diya-internal-surface-border: color-mix(in srgb, var(--diya-color-text) 8%, transparent);
91
+ --diya-internal-surface-shadow: inset 0 1px 0 #ffffff08, 0 1px 2px #00000066, 0 18px 40px -22px #000000cc;
92
+ --diya-internal-overlay-fill: var(--diya-color-raised);
93
+ --diya-internal-overlay-border: color-mix(in srgb, var(--diya-color-line) 50%, transparent);
94
+ --diya-internal-overlay-top-border: var(--diya-internal-overlay-border);
95
+ --diya-internal-tabs-fill: transparent;
96
+ --diya-internal-outline-fill: transparent;
97
+ --diya-color-destructive: #ffaaaa;
98
+ --diya-color-neutral-fill: #b9c3c8;
99
+ --diya-color-neutral-on-fill: #000;
100
+ /* Status tones come from the Vivid family: bright, warm and saturated, never dusty.
101
+ Each label reads at 4.5:1 or more on its own tint and on every surface. */
102
+ --diya-color-success-fill: #30d158;
103
+ --diya-color-success-on-fill: #000;
104
+ --diya-color-warning-fill: #ff9f0a;
105
+ --diya-color-warning-on-fill: #000;
106
+ --diya-color-error-fill: #ff453a;
107
+ --diya-color-error-on-fill: #000;
108
+ --diya-color-info-fill: #0a84ff;
109
+ --diya-color-info-on-fill: #000;
110
+ --diya-color-success: #30d158;
111
+ --diya-color-success-surface: color-mix(in srgb, #30d158 18%, transparent);
112
+ --diya-color-warning: #ffb340;
113
+ --diya-color-warning-surface: color-mix(in srgb, #ff9f0a 18%, transparent);
114
+ --diya-color-error: #ff7a72;
115
+ --diya-color-error-surface: color-mix(in srgb, #ff453a 20%, transparent);
116
+ --diya-color-info: #5eb0ff;
117
+ --diya-color-info-surface: color-mix(in srgb, #0a84ff 22%, transparent);
118
+ --diya-internal-warning-mark: var(--diya-color-warning-fill);
119
+ color-scheme: dark;
120
+ color: var(--diya-color-text);
121
+ font-family: var(--diya-font, 'DIYA Sans', 'DIYA Sans Fallback', Arial, Helvetica, sans-serif);
122
+ font-synthesis: none;
123
+ }
124
+
125
+ .diya-root[data-theme='light'] {
126
+ /* Light is white all the way down: hierarchy comes from hairlines, spacing and type. */
127
+ --diya-color-text: #202627;
128
+ --diya-color-muted: #495659;
129
+ --diya-color-line: #1c1e2024;
130
+ --diya-color-surface: #ffffff;
131
+ --diya-color-recessed: #fafafa;
132
+ --diya-color-raised: #ffffff;
133
+ --diya-color-glass: #ffffff90;
134
+ --diya-color-hover: #2026270a;
135
+ --diya-color-selected: #20262712;
136
+ --diya-color-accent: var(--diya-internal-accent-light, #262626);
137
+ --diya-color-accent-text: var(--diya-internal-accent-text-light, #fafafa);
138
+ --diya-color-accent-soft: var(--diya-internal-accent-soft-light, #2626261f);
139
+ --diya-color-accent-ink: var(--diya-internal-accent-ink-light, #262626);
140
+ --diya-internal-edge: #ffffffa0;
141
+ --diya-internal-highlight: #ffffffdc;
142
+ --diya-shadow-raised: inset 0 1px 0 #ffffff80, 0 10px 30px #0002;
143
+ --diya-internal-surface-border: color-mix(in srgb, var(--diya-color-text) 9%, transparent);
144
+ --diya-internal-surface-shadow: 0 1px 2px #1014180a, 0 10px 30px -14px #10141824;
145
+ --diya-color-destructive: #a72735;
146
+ --diya-color-neutral-fill: #52616b;
147
+ --diya-color-neutral-on-fill: #fff;
148
+ --diya-color-success-fill: #34c759;
149
+ --diya-color-success-on-fill: #000;
150
+ --diya-color-warning-fill: #ff9f0a;
151
+ --diya-color-warning-on-fill: #000;
152
+ --diya-color-error-fill: #de1c24;
153
+ --diya-color-error-on-fill: #fff;
154
+ --diya-color-info-fill: #0071dc;
155
+ --diya-color-info-on-fill: #fff;
156
+ --diya-color-success: #0d7a33;
157
+ --diya-color-success-surface: #dff6e4;
158
+ --diya-color-warning: #b34700;
159
+ --diya-color-warning-surface: #ffeed3;
160
+ --diya-color-error: #d70015;
161
+ --diya-color-error-surface: #ffe7e6;
162
+ --diya-color-info: #0062cc;
163
+ --diya-color-info-surface: #e0efff;
164
+ --diya-internal-warning-mark: var(--diya-color-warning);
165
+ color-scheme: light;
166
+ }
167
+ @media (prefers-color-scheme: light) {
168
+ .diya-root[data-theme='system'] {
169
+ /* Light is white all the way down: hierarchy comes from hairlines, spacing and type. */
170
+ --diya-color-text: #202627;
171
+ --diya-color-muted: #495659;
172
+ --diya-color-line: #1c1e2024;
173
+ --diya-color-surface: #ffffff;
174
+ --diya-color-recessed: #fafafa;
175
+ --diya-color-raised: #ffffff;
176
+ --diya-color-glass: #ffffff90;
177
+ --diya-color-hover: #2026270a;
178
+ --diya-color-selected: #20262712;
179
+ --diya-color-accent: var(--diya-internal-accent-light, #262626);
180
+ --diya-color-accent-text: var(--diya-internal-accent-text-light, #fafafa);
181
+ --diya-color-accent-soft: var(--diya-internal-accent-soft-light, #2626261f);
182
+ --diya-color-accent-ink: var(--diya-internal-accent-ink-light, #262626);
183
+ --diya-internal-edge: #ffffffa0;
184
+ --diya-internal-highlight: #ffffffdc;
185
+ --diya-shadow-raised: inset 0 1px 0 #ffffff80, 0 10px 30px #0002;
186
+ --diya-internal-surface-border: color-mix(in srgb, var(--diya-color-text) 9%, transparent);
187
+ --diya-internal-surface-shadow: 0 1px 2px #1014180a, 0 10px 30px -14px #10141824;
188
+ --diya-color-destructive: #a72735;
189
+ --diya-color-neutral-fill: #52616b;
190
+ --diya-color-neutral-on-fill: #fff;
191
+ --diya-color-success-fill: #34c759;
192
+ --diya-color-success-on-fill: #000;
193
+ --diya-color-warning-fill: #ff9f0a;
194
+ --diya-color-warning-on-fill: #000;
195
+ --diya-color-error-fill: #de1c24;
196
+ --diya-color-error-on-fill: #fff;
197
+ --diya-color-info-fill: #0071dc;
198
+ --diya-color-info-on-fill: #fff;
199
+ --diya-color-success: #0d7a33;
200
+ --diya-color-success-surface: #dff6e4;
201
+ --diya-color-warning: #b34700;
202
+ --diya-color-warning-surface: #ffeed3;
203
+ --diya-color-error: #d70015;
204
+ --diya-color-error-surface: #ffe7e6;
205
+ --diya-color-info: #0062cc;
206
+ --diya-color-info-surface: #e0efff;
207
+ --diya-internal-warning-mark: var(--diya-color-warning);
208
+ color-scheme: light;
209
+ }
210
+ }
211
+
212
+ /* The provider paints its own ground unless surface={false}. */
213
+ .diya-root[data-surface='true'] {
214
+ background-color: var(--diya-color-surface);
215
+ }
216
+
217
+ /* Resets reach only DIYA's own elements: anything with a diya- class and what DIYA
218
+ renders inside it. Your markup elsewhere in the provider keeps its own styles. */
219
+ :where(.diya-root, .diya-root [class*='diya-'], .diya-root [class*='diya-'] *) {
220
+ box-sizing: border-box;
221
+ }
222
+
223
+ /* Button */
224
+ .diya-root .diya-button {
225
+ position: relative;
226
+ display: inline-flex;
227
+ align-items: center;
228
+ justify-content: center;
229
+ gap: 8px;
230
+ min-height: 40px;
231
+ padding: 0 20px;
232
+ border: 1px solid transparent;
233
+ border-radius: var(--diya-radius-control, calc(6px * var(--diya-corner-scale, 1)));
234
+ background: var(--diya-color-accent);
235
+ color: var(--diya-color-accent-text);
236
+ font: inherit;
237
+ font-size: var(--diya-text-caption);
238
+ font-weight: 500;
239
+ white-space: nowrap;
240
+ text-decoration: none;
241
+ cursor: pointer;
242
+ -webkit-tap-highlight-color: transparent;
243
+ }
244
+
245
+ .diya-root .diya-button[data-size='small'] {
246
+ min-height: 32px;
247
+ padding-inline: 16px;
248
+ font-size: var(--diya-text-caption);
249
+ }
250
+
251
+ .diya-root .diya-button[data-size='large'] {
252
+ min-height: 48px;
253
+ padding-inline: 24px;
254
+ font-size: var(--diya-text-large);
255
+ }
256
+
257
+ .diya-root .diya-button[data-shape='pill'] {
258
+ border-radius: 999px;
259
+ }
260
+
261
+ .diya-root .diya-button[data-shape='rounded'] {
262
+ border-radius: var(--diya-radius-control, calc(6px * var(--diya-corner-scale, 1)));
263
+ }
264
+
265
+ .diya-root .diya-button[data-variant='outline'] {
266
+ background: var(--diya-internal-outline-fill);
267
+ border-color: var(--diya-color-line);
268
+ color: var(--diya-color-text);
269
+ backdrop-filter: var(--diya-internal-backdrop);
270
+ }
271
+
272
+ .diya-root .diya-button[data-variant='quiet'] {
273
+ background: transparent;
274
+ color: var(--diya-color-text);
275
+ }
276
+
277
+ /* Destructive: the theme's own red, with the page surface as its text. */
278
+ .diya-root .diya-button[data-variant='destructive'] {
279
+ background: var(--diya-color-destructive);
280
+ color: var(--diya-color-raised);
281
+ }
282
+
283
+ .diya-root .diya-button:not(:disabled, [aria-disabled='true']):hover {
284
+ filter: brightness(0.88);
285
+ }
286
+
287
+ .diya-root .diya-button[data-variant='outline']:not(:disabled, [aria-disabled='true']):hover,
288
+ .diya-root .diya-button[data-variant='quiet']:not(:disabled, [aria-disabled='true']):hover {
289
+ background: var(--diya-color-selected);
290
+ filter: none;
291
+ }
292
+
293
+ .diya-root .diya-button:not(:disabled, [aria-disabled='true']):active {
294
+ box-shadow: inset 0 0 0 2px var(--diya-color-line);
295
+ }
296
+
297
+ .diya-root .diya-button:focus-visible {
298
+ outline: 2px solid var(--diya-color-text);
299
+ outline-offset: 4px;
300
+ }
301
+
302
+ .diya-root .diya-button:disabled {
303
+ opacity: 0.4;
304
+ cursor: not-allowed;
305
+ }
306
+
307
+ /* A disabled link or asChild element can't use :disabled. */
308
+ .diya-root .diya-button[aria-disabled='true'] {
309
+ opacity: 0.4;
310
+ cursor: not-allowed;
311
+ pointer-events: none;
312
+ }
313
+
314
+ /* Loading: focusable and inert. The button takes its own clicks (and drops them), with the disabled cursor. */
315
+ .diya-root .diya-button[aria-busy='true'] {
316
+ opacity: 0.8;
317
+ pointer-events: auto;
318
+ }
319
+
320
+ .diya-root .diya-button-progress {
321
+ position: static;
322
+ font-size: var(--diya-text-caption);
323
+ line-height: 1;
324
+ }
325
+
326
+ .diya-root .diya-button svg {
327
+ flex-shrink: 0;
328
+ }
329
+
330
+ .diya-root .diya-button[data-icon-only='true'] {
331
+ width: 40px;
332
+ height: 40px;
333
+ padding: 0;
334
+ }
335
+
336
+ .diya-root .diya-button[data-icon-only='true'][data-size='small'] {
337
+ width: 32px;
338
+ height: 32px;
339
+ }
340
+
341
+ .diya-root .diya-button[data-icon-only='true'][data-size='large'] {
342
+ width: 48px;
343
+ height: 48px;
344
+ }
345
+
346
+ /* Page Header owns the material previously supplied by the preview frame. */
347
+ .diya-root .diya-page-header {
348
+ container-type: inline-size;
349
+ width: 100%;
350
+ padding: 30px;
351
+ border: 1px solid var(--diya-internal-surface-border);
352
+ border-radius: var(--diya-radius-surface);
353
+ box-shadow: var(--diya-internal-surface-shadow);
354
+ background: var(--diya-internal-header-fill);
355
+ color: var(--diya-color-text);
356
+ backdrop-filter: var(--diya-internal-backdrop);
357
+ }
358
+
359
+ .diya-root .diya-page-header-breadcrumbs {
360
+ margin-bottom: 28px;
361
+ }
362
+
363
+ .diya-root .diya-page-header-main {
364
+ display: flex;
365
+ align-items: flex-start;
366
+ justify-content: space-between;
367
+ gap: 32px;
368
+ }
369
+
370
+ .diya-root .diya-page-header-copy {
371
+ min-width: 0;
372
+ }
373
+
374
+ .diya-root .diya-page-header-title,
375
+ .diya-root .diya-page-header-copy > :is(h1, h2, h3, h4, h5, h6) {
376
+ margin: 0;
377
+ color: inherit;
378
+ font-size: var(--diya-text-heading);
379
+ line-height: 1.2;
380
+ letter-spacing: -0.025em;
381
+ font-weight: 540;
382
+ overflow-wrap: anywhere;
383
+ }
384
+
385
+ .diya-root .diya-page-header-description {
386
+ max-width: 62ch;
387
+ margin: 8px 0 0;
388
+ color: var(--diya-color-muted);
389
+ font-size: var(--diya-text-body);
390
+ line-height: 1.65;
391
+ }
392
+
393
+ .diya-root .diya-page-header-tags {
394
+ display: flex;
395
+ flex-wrap: wrap;
396
+ gap: 8px;
397
+ margin-top: 20px;
398
+ }
399
+
400
+ .diya-root .diya-page-header-actions {
401
+ display: flex;
402
+ flex-wrap: wrap;
403
+ flex-shrink: 0;
404
+ gap: 10px;
405
+ }
406
+
407
+ .diya-root .diya-page-header-navigation {
408
+ margin-top: 30px;
409
+ }
410
+
411
+ .diya-root .diya-page-header-navigation .diya-tabs[data-variant='underline'] .diya-tab-list {
412
+ width: 100%;
413
+ }
414
+
415
+ @container (max-width: 620px) {
416
+ .diya-root .diya-page-header-main {
417
+ flex-direction: column;
418
+ gap: 24px;
419
+ }
420
+
421
+ .diya-root .diya-page-header-title,
422
+ .diya-root .diya-page-header-copy > :is(h1, h2, h3, h4, h5, h6) {
423
+ font-size: var(--diya-text-heading);
424
+ }
425
+
426
+ .diya-root .diya-page-header-actions {
427
+ width: 100%;
428
+ }
429
+ }
430
+
431
+ @media (max-width: 500px) {
432
+ .diya-root .diya-page-header {
433
+ padding: 20px;
434
+ }
435
+ }
436
+
437
+ /* surface={false}: the header sits straight on the page, with no panel around it,
438
+ so a screen's first surface is its content. Placed after the padding rule so it wins. */
439
+ .diya-root .diya-page-header[data-surface='false'] {
440
+ padding: 0;
441
+ border: 0;
442
+ border-radius: 0;
443
+ background: none;
444
+ box-shadow: none;
445
+ backdrop-filter: none;
446
+ }
447
+
448
+ /* Breadcrumbs, including the optional collapsed menu. */
449
+ .diya-root .diya-breadcrumbs {
450
+ min-width: 0;
451
+ max-width: 100%;
452
+ color: var(--diya-color-muted);
453
+ font-size: var(--diya-text-body);
454
+ }
455
+
456
+ .diya-root .diya-breadcrumbs ol {
457
+ display: flex;
458
+ flex-wrap: wrap;
459
+ align-items: center;
460
+ gap: 12px;
461
+ margin: 0;
462
+ padding: 0;
463
+ list-style: none;
464
+ }
465
+
466
+ .diya-root .diya-breadcrumbs li {
467
+ display: flex;
468
+ align-items: center;
469
+ gap: 12px;
470
+ min-width: 0;
471
+ max-width: 100%;
472
+ overflow-wrap: anywhere;
473
+ }
474
+
475
+ .diya-root .diya-breadcrumbs a {
476
+ display: inline-flex;
477
+ align-items: center;
478
+ min-height: 28px;
479
+ min-width: 0;
480
+ border-radius: calc(4px * var(--diya-corner-scale, 1));
481
+ color: inherit;
482
+ text-decoration: none;
483
+ }
484
+
485
+ .diya-root .diya-breadcrumbs a:hover {
486
+ color: var(--diya-color-text);
487
+ text-decoration: underline;
488
+ text-underline-offset: 4px;
489
+ }
490
+
491
+ .diya-root .diya-breadcrumbs a:focus-visible {
492
+ outline: 2px solid var(--diya-color-text);
493
+ outline-offset: 4px;
494
+ }
495
+
496
+ .diya-root .diya-breadcrumbs [aria-current='page'] {
497
+ min-width: 0;
498
+ color: var(--diya-color-text);
499
+ font-weight: 500;
500
+ }
501
+
502
+ .diya-root .diya-breadcrumb-separator {
503
+ opacity: 0.6;
504
+ flex-shrink: 0;
505
+ }
506
+
507
+ .diya-root .diya-breadcrumb-collapse .diya-button {
508
+ min-height: 28px;
509
+ padding: 0 10px;
510
+ border-color: transparent;
511
+ font-size: var(--diya-text-caption);
512
+ }
513
+
514
+ .diya-root .diya-floating-surface {
515
+ position: fixed;
516
+ z-index: 1100;
517
+ width: 288px;
518
+ max-width: calc(100vw - 24px);
519
+ max-height: calc(100dvh - 24px);
520
+ overflow: auto;
521
+ margin: 0;
522
+ padding: 20px;
523
+ border: 1px solid var(--diya-internal-overlay-border);
524
+ border-top-color: var(--diya-internal-overlay-top-border);
525
+ border-radius: calc(16px * var(--diya-corner-scale, 1));
526
+ background: var(--diya-internal-overlay-fill);
527
+ color: var(--diya-color-text);
528
+ box-shadow: var(--diya-shadow-raised);
529
+ backdrop-filter: var(--diya-internal-backdrop);
530
+ }
531
+
532
+ .diya-root .diya-floating-menu {
533
+ width: 230px;
534
+ padding: 6px;
535
+ }
536
+
537
+ .diya-root .diya-menu-item {
538
+ display: flex;
539
+ align-items: center;
540
+ gap: 10px;
541
+ width: 100%;
542
+ min-height: 38px;
543
+ padding: 8px 12px;
544
+ border: 0;
545
+ border-radius: calc(10px * var(--diya-corner-scale, 1));
546
+ background: transparent;
547
+ color: var(--diya-color-text);
548
+ text-align: left;
549
+ font: inherit;
550
+ font-size: var(--diya-text-body);
551
+ cursor: pointer;
552
+ }
553
+
554
+ .diya-root .diya-menu-item:hover:not(:disabled),
555
+ .diya-root .diya-menu-item:focus-visible {
556
+ background: var(--diya-color-selected);
557
+ }
558
+
559
+ .diya-root .diya-menu-item:focus-visible {
560
+ outline: 2px solid var(--diya-color-text);
561
+ outline-offset: -2px;
562
+ }
563
+
564
+ .diya-root .diya-menu-item:disabled {
565
+ opacity: 0.4;
566
+ cursor: not-allowed;
567
+ }
568
+
569
+ .diya-root .diya-menu-item[data-destructive='true'] {
570
+ color: var(--diya-color-destructive);
571
+ }
572
+
573
+ .diya-root a.diya-menu-item {
574
+ text-decoration: none;
575
+ }
576
+
577
+ .diya-root .diya-menu-item[aria-current='page'] {
578
+ font-weight: 500;
579
+ }
580
+
581
+ .diya-root .diya-menu-shortcut {
582
+ margin-left: auto;
583
+ color: var(--diya-color-muted);
584
+ font-size: var(--diya-text-caption);
585
+ }
586
+
587
+ .diya-root .diya-menu-icon {
588
+ display: inline-flex;
589
+ flex-shrink: 0;
590
+ }
591
+
592
+ .diya-root .diya-menu-item > span:not([aria-hidden]) { flex:1; min-width:0; overflow-wrap:anywhere; }
593
+ .diya-root .diya-menu-shortcut { flex-shrink:0; white-space:nowrap; }
594
+
595
+ .diya-root .diya-menu-separator {
596
+ margin: 5px 8px;
597
+ border-top: 1px solid var(--diya-color-line);
598
+ }
599
+
600
+ /* Tabs */
601
+ .diya-root .diya-tabs {
602
+ width: 100%;
603
+ color: var(--diya-color-text);
604
+ }
605
+
606
+ .diya-root .diya-tab-list {
607
+ display: flex;
608
+ align-items: center;
609
+ gap: 8px;
610
+ width: fit-content;
611
+ max-width: 100%;
612
+ overflow-x: auto;
613
+ padding: 4px;
614
+ background: var(--diya-internal-tabs-fill);
615
+ backdrop-filter: var(--diya-internal-backdrop);
616
+ }
617
+
618
+ /* Underline Tabs have no track, so Glass gives them no pane either. */
619
+ .diya-root .diya-tabs[data-variant='underline'] .diya-tab-list {
620
+ gap: 24px;
621
+ padding: 0;
622
+ border-bottom: 1px solid color-mix(in srgb, var(--diya-color-line) 55%, transparent);
623
+ border-radius: 0;
624
+ background: transparent;
625
+ backdrop-filter: none;
626
+ }
627
+
628
+ .diya-root .diya-tab {
629
+ position: relative;
630
+ display: inline-flex;
631
+ align-items: center;
632
+ justify-content: center;
633
+ flex-shrink: 0;
634
+ gap: 8px;
635
+ min-height: 40px;
636
+ padding: 0 18px;
637
+ border: 0;
638
+ border-radius: 999px;
639
+ background: transparent;
640
+ color: var(--diya-color-muted);
641
+ font: inherit;
642
+ font-size: var(--diya-text-body);
643
+ font-weight: 500;
644
+ white-space: nowrap;
645
+ cursor: pointer;
646
+ }
647
+
648
+ .diya-root .diya-tab:hover:not(:disabled) {
649
+ background: var(--diya-color-hover);
650
+ color: var(--diya-color-text);
651
+ }
652
+
653
+ .diya-root .diya-tab[aria-selected='true'] {
654
+ color: var(--diya-color-text);
655
+ }
656
+
657
+ /* In Glass a pill Tabs track shows; it is a capsule like its thumb. */
658
+ .diya-root[data-glass='true'] .diya-tabs[data-variant='pill'] .diya-tab-list {
659
+ border-radius: 999px;
660
+ }
661
+
662
+ .diya-root .diya-tabs[data-variant='pill'] .diya-tab[aria-selected='true'] {
663
+ background: var(--diya-color-accent);
664
+ color: var(--diya-color-accent-text);
665
+ }
666
+
667
+ .diya-root .diya-tabs[data-variant='underline'] .diya-tab {
668
+ padding-inline: 4px;
669
+ border-radius: 4px 4px 0 0;
670
+ font-weight: 400;
671
+ }
672
+
673
+ .diya-root .diya-tabs[data-variant='underline'] .diya-tab[aria-selected='true'] {
674
+ font-weight: 600;
675
+ }
676
+
677
+ .diya-root .diya-tabs[data-variant='underline'] .diya-tab[aria-selected='true']::after {
678
+ position: absolute;
679
+ right: 0;
680
+ bottom: 0;
681
+ left: 0;
682
+ height: 2px;
683
+ border-radius: 2px;
684
+ background: currentColor;
685
+ content: '';
686
+ }
687
+
688
+ .diya-root .diya-tab:disabled {
689
+ opacity: 0.4;
690
+ cursor: not-allowed;
691
+ }
692
+
693
+ .diya-root .diya-tabs .diya-tab:focus-visible,
694
+ .diya-root .diya-tab-panel:focus-visible {
695
+ outline: 2px solid var(--diya-color-text);
696
+ outline-offset: 2px;
697
+ }
698
+
699
+ .diya-root .diya-tabs[data-variant='underline'] .diya-tab:focus-visible {
700
+ outline-offset: -2px;
701
+ }
702
+
703
+ .diya-root .diya-tab-icon {
704
+ display: inline-flex;
705
+ }
706
+
707
+ .diya-root .diya-tab-icon svg {
708
+ width: 16px;
709
+ height: 16px;
710
+ }
711
+
712
+ .diya-root .diya-tabs[data-size='small'] .diya-tab {
713
+ gap: 6px;
714
+ min-height: 32px;
715
+ padding-inline: 14px;
716
+ font-size: var(--diya-text-caption);
717
+ }
718
+
719
+ .diya-root .diya-tabs[data-size='large'] .diya-tab {
720
+ gap: 10px;
721
+ min-height: 48px;
722
+ padding-inline: 22px;
723
+ font-size: var(--diya-text-large);
724
+ }
725
+
726
+ .diya-root .diya-tab-panel {
727
+ margin-top: 24px;
728
+ border-radius: calc(8px * var(--diya-corner-scale, 1));
729
+ }
730
+
731
+ .diya-root .diya-tab-panel[hidden] {
732
+ display: none;
733
+ }
734
+
735
+ .diya-root .diya-tabs[data-variant='pill'] .diya-tab[aria-selected='true'] .diya-badge[data-color='neutral'] {
736
+ --diya-internal-badge-fill: var(--diya-color-accent-text);
737
+ --diya-internal-badge-ink: var(--diya-color-accent);
738
+ }
739
+
740
+ /* Badge */
741
+ .diya-root .diya-badge {
742
+ --diya-internal-badge-fill: var(--diya-color-neutral-fill);
743
+ --diya-internal-badge-ink: var(--diya-color-neutral-on-fill);
744
+ display: inline-flex;
745
+ align-items: center;
746
+ justify-content: center;
747
+ flex-shrink: 0;
748
+ border-radius: 999px;
749
+ background: var(--diya-internal-badge-fill);
750
+ color: var(--diya-internal-badge-ink);
751
+ vertical-align: middle;
752
+ font-family: inherit;
753
+ font-weight: 600;
754
+ line-height: 1;
755
+ }
756
+
757
+ .diya-root .diya-badge[data-color='success'] {
758
+ --diya-internal-badge-fill: var(--diya-color-success-fill);
759
+ --diya-internal-badge-ink: var(--diya-color-success-on-fill);
760
+ }
761
+ .diya-root .diya-badge[data-color='warning'] {
762
+ --diya-internal-badge-fill: var(--diya-color-warning-fill);
763
+ --diya-internal-badge-ink: var(--diya-color-warning-on-fill);
764
+ }
765
+ .diya-root .diya-badge[data-color='error'] { --diya-internal-badge-fill: var(--diya-color-error-fill); --diya-internal-badge-ink: var(--diya-color-error-on-fill); }
766
+ .diya-root .diya-badge[data-color='info'] { --diya-internal-badge-fill: var(--diya-color-info-fill); --diya-internal-badge-ink: var(--diya-color-info-on-fill); }
767
+ .diya-root .diya-badge[data-color='brand'] { --diya-internal-badge-fill: var(--diya-color-accent); --diya-internal-badge-ink: var(--diya-color-accent-text); }
768
+
769
+ .diya-root .diya-badge[data-variant='dot'] {
770
+ width: 9px;
771
+ height: 9px;
772
+ }
773
+
774
+ .diya-root .diya-badge[data-variant='dot'][data-size='small'] {
775
+ width: 6px;
776
+ height: 6px;
777
+ }
778
+
779
+ .diya-root .diya-badge[data-variant='dot'][data-size='large'] {
780
+ width: 12px;
781
+ height: 12px;
782
+ }
783
+
784
+ .diya-root .diya-badge[data-variant='count'] {
785
+ width: fit-content;
786
+ min-width: 22px;
787
+ height: 22px;
788
+ padding: 0 6px;
789
+ font-size: var(--diya-text-caption);
790
+ }
791
+
792
+ .diya-root .diya-badge[data-variant='count'][data-size='small'] {
793
+ min-width: 20px;
794
+ height: 20px;
795
+ padding: 0 5px;
796
+ font-size: var(--diya-text-caption);
797
+ }
798
+
799
+ .diya-root .diya-badge[data-variant='count'][data-size='large'] {
800
+ min-width: 26px;
801
+ height: 26px;
802
+ padding: 0 8px;
803
+ font-size: var(--diya-text-caption);
804
+ }
805
+
806
+ .diya-root .diya-badge[data-variant='count'][data-multiple='true'] { padding-inline: 9px; }
807
+ .diya-root .diya-badge[data-variant='count'][data-multiple='true'][data-size='small'] { padding-inline: 8px; }
808
+ .diya-root .diya-badge[data-variant='count'][data-multiple='true'][data-size='large'] { padding-inline: 11px; }
809
+
810
+ /* Keep pale/custom indicator fills visible without changing their dimensions. */
811
+ @media (forced-colors: none) {
812
+ .diya-root[data-theme='light'] .diya-badge[data-variant='dot'][data-color='warning'] { box-shadow:inset 0 0 0 1px var(--diya-color-warning); }
813
+ @media (prefers-color-scheme: light) {
814
+ .diya-root[data-theme='system'] .diya-badge[data-variant='dot'][data-color='warning'] { box-shadow:inset 0 0 0 1px var(--diya-color-warning); }
815
+ }
816
+ .diya-root .diya-badge[data-variant='dot'][data-color='brand'] { box-shadow:inset 0 0 0 1px var(--diya-color-accent-ink, var(--diya-color-accent)); }
817
+ }
818
+
819
+ /* Tag */
820
+ .diya-root .diya-tag {
821
+ display: inline-flex;
822
+ width: fit-content;
823
+ align-items: center;
824
+ gap: 7px;
825
+ min-height: 28px;
826
+ padding: 5px 9px;
827
+ border-radius: calc(7px * var(--diya-corner-scale, 1));
828
+ background: var(--diya-color-selected);
829
+ color: var(--diya-color-text);
830
+ font-size: var(--diya-text-caption);
831
+ line-height: 18px;
832
+ min-width: 0;
833
+ max-width: 100%;
834
+ white-space: normal;
835
+ }
836
+
837
+ .diya-root .diya-tag > span:not([aria-hidden]) { min-width:0; overflow-wrap:anywhere; }
838
+
839
+ .diya-root .diya-tag[data-size='small'] {
840
+ min-height: 24px;
841
+ padding: 3px 7px;
842
+ font-size: var(--diya-text-caption);
843
+ }
844
+
845
+ .diya-root .diya-tag[data-size='large'] {
846
+ min-height: 34px;
847
+ padding: 7px 12px;
848
+ font-size: var(--diya-text-body);
849
+ }
850
+
851
+ .diya-root .diya-tag-icon,
852
+ .diya-root .diya-tag > span[aria-hidden] {
853
+ display: inline-flex;
854
+ align-items: center;
855
+ }
856
+
857
+ .diya-root .diya-tag button {
858
+ display: grid;
859
+ place-items: center;
860
+ width: 24px;
861
+ height: 24px;
862
+ flex: 0 0 24px;
863
+ margin: -3px -4px -3px 0;
864
+ padding: 0;
865
+ border: 0;
866
+ border-radius: calc(5px * var(--diya-corner-scale, 1));
867
+ background: transparent;
868
+ color: var(--diya-color-muted);
869
+ font: inherit;
870
+ cursor: pointer;
871
+ }
872
+
873
+ .diya-root .diya-tag button:hover {
874
+ background: var(--diya-color-hover);
875
+ color: var(--diya-color-text);
876
+ }
877
+
878
+ .diya-root .diya-tag button:focus-visible {
879
+ outline: 2px solid var(--diya-color-text);
880
+ outline-offset: 3px;
881
+ }
882
+
883
+ .diya-root .diya-tag[data-color='success'] {
884
+ --diya-internal-tag-tone: var(--diya-color-success);
885
+ --diya-internal-tag-surface: var(--diya-color-success-surface);
886
+ }
887
+ .diya-root .diya-tag[data-color='warning'] {
888
+ --diya-internal-tag-tone: var(--diya-color-warning);
889
+ --diya-internal-tag-surface: var(--diya-color-warning-surface);
890
+ }
891
+ .diya-root .diya-tag[data-color='error'] {
892
+ --diya-internal-tag-tone: var(--diya-color-error);
893
+ --diya-internal-tag-surface: var(--diya-color-error-surface);
894
+ }
895
+ .diya-root .diya-tag[data-color='info'] {
896
+ --diya-internal-tag-tone: var(--diya-color-info);
897
+ --diya-internal-tag-surface: var(--diya-color-info-surface);
898
+ }
899
+
900
+ .diya-root .diya-tag:is([data-color='success'], [data-color='warning'], [data-color='error'], [data-color='info']) {
901
+ background: var(--diya-internal-tag-surface, color-mix(in srgb, var(--diya-internal-tag-tone) 18%, transparent));
902
+ color: var(--diya-internal-tag-tone);
903
+ font-weight: 500;
904
+ }
905
+
906
+ .diya-root .diya-tag[data-color='brand'] {
907
+ background: var(--diya-color-accent-soft, color-mix(in srgb, var(--diya-color-accent) 12%, transparent));
908
+ color: var(--diya-color-accent-ink, var(--diya-color-accent));
909
+ font-weight: 500;
910
+ }
911
+
912
+ .diya-root .diya-tag[data-color='brand'] .diya-badge {
913
+ background: var(--diya-color-accent);
914
+ }
915
+
916
+ .diya-root .diya-tag[data-color] button {
917
+ color: inherit;
918
+ }
919
+
920
+ /* Unsupported browsers retain the solid material above. */
921
+ @supports (backdrop-filter: blur(14px)) {
922
+ .diya-root[data-glass='true'] {
923
+ --diya-internal-header-fill: color-mix(in srgb, var(--diya-color-raised) 78%, transparent);
924
+ --diya-internal-overlay-fill: color-mix(in srgb, var(--diya-color-raised) 72%, transparent);
925
+ --diya-internal-overlay-border: var(--diya-internal-edge);
926
+ --diya-internal-overlay-top-border: var(--diya-internal-highlight);
927
+ --diya-internal-tabs-fill: color-mix(in srgb, var(--diya-color-raised) 72%, transparent);
928
+ --diya-internal-outline-fill: color-mix(in srgb, var(--diya-color-raised) 22%, transparent);
929
+ --diya-internal-backdrop: var(--diya-internal-blur);
930
+ }
931
+
932
+ /* Light Glass reads as clear glass, not a gray wash: more white, a deeper blur that
933
+ lifts what's behind it, and bright edges that catch the light along the top. */
934
+ .diya-root[data-glass='true']:where([data-theme='light']) {
935
+ --diya-internal-blur: blur(24px) saturate(1.5) brightness(1.06);
936
+ --diya-internal-header-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
937
+ --diya-internal-overlay-fill: color-mix(in srgb, var(--diya-color-raised) 82%, transparent);
938
+ --diya-internal-tabs-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
939
+ --diya-internal-outline-fill: color-mix(in srgb, var(--diya-color-raised) 40%, transparent);
940
+ --diya-internal-header-border: color-mix(in srgb, var(--diya-color-text) 11%, transparent);
941
+ --diya-shadow-raised: inset 0 1px 0 #ffffff, 0 10px 30px #0000001a;
942
+ }
943
+ @media (prefers-color-scheme: light) {
944
+ .diya-root[data-glass='true']:where([data-theme='system']) {
945
+ --diya-internal-blur: blur(24px) saturate(1.5) brightness(1.06);
946
+ --diya-internal-header-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
947
+ --diya-internal-overlay-fill: color-mix(in srgb, var(--diya-color-raised) 82%, transparent);
948
+ --diya-internal-tabs-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
949
+ --diya-internal-outline-fill: color-mix(in srgb, var(--diya-color-raised) 40%, transparent);
950
+ --diya-internal-header-border: color-mix(in srgb, var(--diya-color-text) 11%, transparent);
951
+ --diya-shadow-raised: inset 0 1px 0 #ffffff, 0 10px 30px #0000001a;
952
+ }
953
+ }
954
+ }
955
+
956
+ @media (prefers-reduced-transparency: reduce) {
957
+ .diya-root[data-glass='true'] {
958
+ --diya-internal-header-border: color-mix(in srgb, var(--diya-color-text) 18%, transparent);
959
+ --diya-internal-header-fill: var(--diya-color-raised);
960
+ --diya-internal-overlay-fill: var(--diya-color-raised);
961
+ --diya-internal-tabs-fill: var(--diya-color-raised);
962
+ --diya-internal-outline-fill: var(--diya-color-raised);
963
+ --diya-internal-backdrop: none;
964
+ }
965
+ }
966
+
967
+ @media (forced-colors: active) {
968
+ .diya-root,
969
+ .diya-root[data-theme='light'],
970
+ .diya-root[data-theme='dark'] {
971
+ --diya-color-text: CanvasText;
972
+ --diya-color-muted: CanvasText;
973
+ --diya-color-line: ButtonText;
974
+ --diya-color-surface: Canvas;
975
+ --diya-color-recessed: Canvas;
976
+ --diya-color-raised: Canvas;
977
+ --diya-color-glass: Canvas;
978
+ --diya-color-hover: Canvas;
979
+ --diya-color-selected: Canvas;
980
+ --diya-color-accent: Highlight;
981
+ --diya-color-accent-text: HighlightText;
982
+ --diya-internal-edge: CanvasText;
983
+ --diya-internal-highlight: CanvasText;
984
+ --diya-shadow-raised: none;
985
+ }
986
+ @media (prefers-color-scheme: light) {
987
+ .diya-root[data-theme='system'] {
988
+ --diya-color-text: CanvasText;
989
+ --diya-color-muted: CanvasText;
990
+ --diya-color-line: ButtonText;
991
+ --diya-color-surface: Canvas;
992
+ --diya-color-recessed: Canvas;
993
+ --diya-color-raised: Canvas;
994
+ --diya-color-glass: Canvas;
995
+ --diya-color-hover: Canvas;
996
+ --diya-color-selected: Canvas;
997
+ --diya-color-accent: Highlight;
998
+ --diya-color-accent-text: HighlightText;
999
+ --diya-internal-edge: CanvasText;
1000
+ --diya-internal-highlight: CanvasText;
1001
+ --diya-shadow-raised: none;
1002
+ }
1003
+ }
1004
+ @media (prefers-color-scheme: dark) {
1005
+ .diya-root[data-theme='system'] {
1006
+ --diya-color-text: CanvasText;
1007
+ --diya-color-muted: CanvasText;
1008
+ --diya-color-line: ButtonText;
1009
+ --diya-color-surface: Canvas;
1010
+ --diya-color-recessed: Canvas;
1011
+ --diya-color-raised: Canvas;
1012
+ --diya-color-glass: Canvas;
1013
+ --diya-color-hover: Canvas;
1014
+ --diya-color-selected: Canvas;
1015
+ --diya-color-accent: Highlight;
1016
+ --diya-color-accent-text: HighlightText;
1017
+ --diya-internal-edge: CanvasText;
1018
+ --diya-internal-highlight: CanvasText;
1019
+ --diya-shadow-raised: none;
1020
+ }
1021
+ }
1022
+
1023
+ .diya-root .diya-page-header,
1024
+ .diya-root[data-theme='dark'] .diya-page-header,
1025
+ .diya-root[data-glass='true'] .diya-page-header,
1026
+ .diya-root .diya-floating-surface,
1027
+ .diya-root[data-glass='true'] .diya-floating-surface {
1028
+ border-color: CanvasText;
1029
+ background: Canvas;
1030
+ color: CanvasText;
1031
+ box-shadow: none;
1032
+ backdrop-filter: none;
1033
+ }
1034
+ @media (prefers-color-scheme: dark) {
1035
+ .diya-root[data-theme='system'] .diya-page-header {
1036
+ border-color: CanvasText;
1037
+ background: Canvas;
1038
+ color: CanvasText;
1039
+ box-shadow: none;
1040
+ backdrop-filter: none;
1041
+ }
1042
+ }
1043
+
1044
+ .diya-root .diya-tab-list,
1045
+ .diya-root[data-glass='true'] .diya-tab-list {
1046
+ border-color: CanvasText;
1047
+ background: Canvas;
1048
+ backdrop-filter: none;
1049
+ }
1050
+
1051
+ .diya-root .diya-button,
1052
+ .diya-root .diya-button[data-variant='outline'],
1053
+ .diya-root .diya-button[data-variant='quiet'],
1054
+ .diya-root[data-glass='true'] .diya-button[data-variant='outline'] {
1055
+ border-color: ButtonText;
1056
+ background: ButtonFace;
1057
+ color: ButtonText;
1058
+ backdrop-filter: none;
1059
+ filter: none;
1060
+ }
1061
+
1062
+ .diya-root .diya-button:disabled,
1063
+ .diya-root .diya-button[aria-disabled='true'],
1064
+ .diya-root .diya-tab:disabled,
1065
+ .diya-root .diya-menu-item:disabled {
1066
+ opacity: 1;
1067
+ color: GrayText;
1068
+ border-color: GrayText;
1069
+ }
1070
+
1071
+ .diya-root .diya-tab[aria-selected='true'] {
1072
+ outline: 2px solid Highlight;
1073
+ outline-offset: -2px;
1074
+ }
1075
+
1076
+ .diya-root .diya-badge,
1077
+ .diya-root .diya-tag[data-color='brand'] .diya-badge {
1078
+ forced-color-adjust: none;
1079
+ background: CanvasText;
1080
+ color: Canvas;
1081
+ box-shadow: 0 0 0 1px Canvas;
1082
+ }
1083
+
1084
+ .diya-root .diya-tag[data-color],
1085
+ .diya-root .diya-tag[data-color='brand'] {
1086
+ border: 1px solid CanvasText;
1087
+ background: Canvas;
1088
+ color: CanvasText;
1089
+ }
1090
+
1091
+ .diya-root .diya-menu-item[data-destructive='true'],
1092
+ .diya-root[data-theme='light'] .diya-menu-item[data-destructive='true'] {
1093
+ color: CanvasText;
1094
+ }
1095
+ @media (prefers-color-scheme: light) {
1096
+ .diya-root[data-theme='system'] .diya-menu-item[data-destructive='true'] {
1097
+ color: CanvasText;
1098
+ }
1099
+ }
1100
+ }
1101
+
1102
+
1103
+ /* iOS Safari zooms the page when a field's text is under 16px, so on touch screens every
1104
+ text field is at least 16px. Desktop sizes stay as they are, and large fields are larger. */
1105
+ @media (pointer: coarse) {
1106
+ .diya-root { --diya-internal-field-min: 16px; }
1107
+ }
1108
+
1109
+ /* Shared defaults required by the components. Zero specificity, and only on DIYA's own
1110
+ elements and what it renders inside them, never on the rest of your page. */
1111
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(button, input, select, textarea),
1112
+ :where(.diya-root) :where(button, input, select, textarea)[class*='diya-'] {
1113
+ font: inherit;
1114
+ color: inherit;
1115
+ }
1116
+
1117
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(button, a, input, select, textarea, summary),
1118
+ :where(.diya-root) :where(button, a, input, select, textarea, summary)[class*='diya-'] {
1119
+ -webkit-tap-highlight-color: transparent;
1120
+ }
1121
+
1122
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(button),
1123
+ :where(.diya-root) :where(button)[class*='diya-'] {
1124
+ cursor: pointer;
1125
+ background: none;
1126
+ border: 0;
1127
+ }
1128
+
1129
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(button):disabled,
1130
+ :where(.diya-root) :where(button)[class*='diya-']:disabled {
1131
+ cursor: not-allowed;
1132
+ opacity: 0.5;
1133
+ }
1134
+
1135
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(a),
1136
+ :where(.diya-root) :where(a)[class*='diya-'] {
1137
+ color: inherit;
1138
+ text-decoration: none;
1139
+ }
1140
+
1141
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(h1, h2, h3, h4, h5, h6),
1142
+ :where(.diya-root) :where(h1, h2, h3, h4, h5, h6)[class*='diya-'] {
1143
+ margin: 0;
1144
+ font-weight: 500;
1145
+ letter-spacing: -0.035em;
1146
+ }
1147
+
1148
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(p),
1149
+ :where(.diya-root) :where(p)[class*='diya-'] {
1150
+ margin: 0;
1151
+ color: var(--diya-color-muted);
1152
+ line-height: 1.6;
1153
+ }
1154
+
1155
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(svg),
1156
+ :where(.diya-root) :where(svg)[class*='diya-'] {
1157
+ flex-shrink: 0;
1158
+ }
1159
+
1160
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(small),
1161
+ :where(.diya-root) :where(small)[class*='diya-'] {
1162
+ font-size: var(--diya-text-caption);
1163
+ }
1164
+
1165
+ :where(.diya-root [class*='diya-']:not(.diya-root, .diya-portal-root)) :where(a, button, input, select, textarea, summary):focus-visible,
1166
+ :where(.diya-root) :where(a, button, input, select, textarea, summary)[class*='diya-']:focus-visible {
1167
+ outline: 2px solid var(--diya-color-text);
1168
+ outline-offset: 4px;
1169
+ }
1170
+
1171
+ /* Stack and Inline. Low specificity, so your className can change any of it. */
1172
+ :where(.diya-stack, .diya-inline) {
1173
+ display: flex;
1174
+ gap: var(--diya-internal-gap);
1175
+ min-width: 0;
1176
+ }
1177
+
1178
+ :where(.diya-stack) {
1179
+ flex-direction: column;
1180
+ }
1181
+
1182
+ :where(.diya-stack, .diya-inline)[data-wrap='true'] { flex-wrap: wrap; }
1183
+ :where(.diya-stack, .diya-inline)[data-gap='0'] { --diya-internal-gap: 0px; }
1184
+ :where(.diya-stack, .diya-inline)[data-gap='1'] { --diya-internal-gap: var(--diya-space-1, 4px); }
1185
+ :where(.diya-stack, .diya-inline)[data-gap='2'] { --diya-internal-gap: var(--diya-space-2, 8px); }
1186
+ :where(.diya-stack, .diya-inline)[data-gap='3'] { --diya-internal-gap: var(--diya-space-3, 12px); }
1187
+ :where(.diya-stack, .diya-inline)[data-gap='4'] { --diya-internal-gap: var(--diya-space-4, 16px); }
1188
+ :where(.diya-stack, .diya-inline)[data-gap='5'] { --diya-internal-gap: var(--diya-space-5, 24px); }
1189
+ :where(.diya-stack, .diya-inline)[data-gap='6'] { --diya-internal-gap: var(--diya-space-6, 32px); }
1190
+ :where(.diya-stack, .diya-inline)[data-gap='7'] { --diya-internal-gap: var(--diya-space-7, 48px); }
1191
+ :where(.diya-stack, .diya-inline)[data-gap='8'] { --diya-internal-gap: var(--diya-space-8, 64px); }
1192
+ :where(.diya-stack, .diya-inline)[data-align='start'] { align-items: flex-start; }
1193
+ :where(.diya-stack, .diya-inline)[data-align='center'] { align-items: center; }
1194
+ :where(.diya-stack, .diya-inline)[data-align='end'] { align-items: flex-end; }
1195
+ :where(.diya-stack, .diya-inline)[data-align='stretch'] { align-items: stretch; }
1196
+ :where(.diya-stack, .diya-inline)[data-align='baseline'] { align-items: baseline; }
1197
+ :where(.diya-stack, .diya-inline)[data-justify='start'] { justify-content: flex-start; }
1198
+ :where(.diya-stack, .diya-inline)[data-justify='center'] { justify-content: center; }
1199
+ :where(.diya-stack, .diya-inline)[data-justify='end'] { justify-content: flex-end; }
1200
+ :where(.diya-stack, .diya-inline)[data-justify='between'] { justify-content: space-between; }
1201
+ :where(.diya-stack, .diya-inline)[data-justify='around'] { justify-content: space-around; }
1202
+ :where(.diya-stack, .diya-inline)[data-justify='evenly'] { justify-content: space-evenly; }
1203
+
1204
+ /* TextInputLibrary.css: portable component rules. */
1205
+ .diya-root .diya-text-field {
1206
+ --diya-internal-field-height: 40px;
1207
+ --diya-internal-field-font-size: max(var(--diya-internal-field-min, 0px), var(--diya-text-body));
1208
+ width: 100%;
1209
+ min-width: 0;
1210
+ max-width: min(100%, 400px);
1211
+ color: var(--diya-color-text);
1212
+ }
1213
+ .diya-root .diya-text-field[data-size='small'] {
1214
+ --diya-internal-field-height: 32px;
1215
+ --diya-internal-field-font-size: max(var(--diya-internal-field-min, 0px), var(--diya-text-caption));
1216
+ }
1217
+ .diya-root .diya-text-field[data-size='large'] {
1218
+ --diya-internal-field-height: 48px;
1219
+ --diya-internal-field-font-size: var(--diya-text-large);
1220
+ }
1221
+ .diya-root .diya-text-field > label {
1222
+ display: block;
1223
+ font-size: var(--diya-text-body);
1224
+ font-weight: 500;
1225
+ margin-bottom: 10px;
1226
+ overflow-wrap: anywhere;
1227
+ }
1228
+ .diya-root .diya-text-field-control {
1229
+ display: flex;
1230
+ align-items: center;
1231
+ gap: 10px;
1232
+ border: 1px solid var(--diya-color-line);
1233
+ border-radius: var(--diya-radius-control, calc(10px * var(--diya-corner-scale, 1)));
1234
+ background: var(--diya-color-hover);
1235
+ padding: 0 14px;
1236
+ height: var(--diya-internal-field-height);
1237
+ min-height: var(--diya-internal-field-height);
1238
+ }
1239
+ .diya-root .diya-text-field .diya-text-field-control input {
1240
+ appearance: none;
1241
+ background: transparent;
1242
+ border: 0;
1243
+ box-shadow: none;
1244
+ border-radius: 0;
1245
+ color: var(--diya-color-text);
1246
+ font: inherit;
1247
+ font-size: var(--diya-internal-field-font-size);
1248
+ width: 100%;
1249
+ min-width: 0;
1250
+ height: calc(var(--diya-internal-field-height) - 2px);
1251
+ padding: 0;
1252
+ outline: none;
1253
+ }
1254
+ .diya-root .diya-text-field-control:focus-within {
1255
+ outline: 2px solid var(--diya-color-text);
1256
+ outline-offset: 3px;
1257
+ }
1258
+ .diya-root .diya-text-field input:focus-visible {
1259
+ outline: none;
1260
+ }
1261
+ .diya-root .diya-text-field input::placeholder {
1262
+ color: var(--diya-color-muted);
1263
+ opacity: 1;
1264
+ }
1265
+ .diya-root .diya-text-field-leading {
1266
+ display: flex;
1267
+ color: var(--diya-color-muted);
1268
+ }
1269
+ .diya-root .diya-text-field-clear {
1270
+ display: grid;
1271
+ place-items: center;
1272
+ width: 28px;
1273
+ height: 28px;
1274
+ flex-shrink: 0;
1275
+ color: var(--diya-color-muted);
1276
+ border-radius: calc(6px * var(--diya-corner-scale, 1));
1277
+ }
1278
+ .diya-root .diya-text-field-clear:not(:disabled):hover {
1279
+ color: var(--diya-color-text);
1280
+ background: var(--diya-color-selected);
1281
+ }
1282
+ .diya-root .diya-text-field-clear:disabled {
1283
+ opacity: 0.3;
1284
+ cursor: not-allowed;
1285
+ }
1286
+ .diya-root .diya-text-field-description {
1287
+ color: var(--diya-color-muted);
1288
+ font-size: var(--diya-text-caption);
1289
+ line-height: 1.6;
1290
+ margin: 10px 0 0;
1291
+ display: flex;
1292
+ gap: 8px;
1293
+ align-items: baseline;
1294
+ min-width: 0;
1295
+ overflow-wrap: anywhere;
1296
+ }
1297
+ .diya-root .diya-text-field-description > span,
1298
+ .diya-root .diya-field-help > span,
1299
+ .diya-root .diya-switch-description > span {
1300
+ display: inline-grid;
1301
+ place-items: center;
1302
+ border: 1px solid currentColor;
1303
+ border-radius: 50%;
1304
+ font-size: var(--diya-text-caption);
1305
+ width: 14px;
1306
+ height: 14px;
1307
+ flex-shrink: 0;
1308
+ line-height: 1;
1309
+ }
1310
+ .diya-root .diya-text-field[data-disabled='true'] {
1311
+ opacity: 0.45;
1312
+ }
1313
+ .diya-root .diya-text-field input:disabled {
1314
+ cursor: not-allowed;
1315
+ }
1316
+ .diya-root .diya-sr-only {
1317
+ position: absolute;
1318
+ width: 1px;
1319
+ height: 1px;
1320
+ padding: 0;
1321
+ overflow: hidden;
1322
+ clip-path: inset(50%);
1323
+ white-space: nowrap;
1324
+ }
1325
+ @media (forced-colors: active) {
1326
+ .diya-root .diya-text-field-control {
1327
+ border-color: ButtonText;
1328
+ }
1329
+ .diya-root .diya-text-field[data-disabled='true'] {
1330
+ opacity: 1;
1331
+ color: GrayText;
1332
+ }
1333
+ }
1334
+
1335
+
1336
+ /* SelectLibrary.css: portable component rules. */
1337
+ .diya-root .diya-select-control {
1338
+ position: relative;
1339
+ border: 1px solid var(--diya-color-line);
1340
+ border-radius: var(--diya-radius-control, calc(10px * var(--diya-corner-scale, 1)));
1341
+ background: var(--diya-color-hover);
1342
+ height: var(--diya-internal-field-height);
1343
+ min-height: var(--diya-internal-field-height);
1344
+ }
1345
+ .diya-root .diya-select-control select {
1346
+ appearance: none;
1347
+ display: block;
1348
+ width: 100%;
1349
+ min-width: 0;
1350
+ height: calc(var(--diya-internal-field-height) - 2px);
1351
+ padding: 0 40px 0 14px;
1352
+ background: transparent;
1353
+ border: 0;
1354
+ border-radius: var(--diya-radius-control, calc(10px * var(--diya-corner-scale, 1)));
1355
+ box-shadow: none;
1356
+ color: var(--diya-color-text);
1357
+ font: inherit;
1358
+ font-size: var(--diya-internal-field-font-size);
1359
+ cursor: pointer;
1360
+ }
1361
+ .diya-root .diya-select-control select option {
1362
+ background: var(--diya-color-surface);
1363
+ color: var(--diya-color-text);
1364
+ }
1365
+ .diya-root .diya-select-control select option:disabled {
1366
+ color: var(--diya-color-muted);
1367
+ }
1368
+ .diya-root .diya-select-control:has(.diya-select-leading) select {
1369
+ padding-left: 40px;
1370
+ }
1371
+ .diya-root .diya-select-leading {
1372
+ position: absolute;
1373
+ left: 14px;
1374
+ top: 50%;
1375
+ transform: translateY(-50%);
1376
+ display: flex;
1377
+ color: var(--diya-color-muted);
1378
+ pointer-events: none;
1379
+ }
1380
+ .diya-root .diya-select-chevron {
1381
+ position: absolute;
1382
+ right: 14px;
1383
+ top: 50%;
1384
+ transform: translateY(-50%);
1385
+ color: var(--diya-color-muted);
1386
+ pointer-events: none;
1387
+ }
1388
+ .diya-root .diya-select-control select:disabled {
1389
+ cursor: not-allowed;
1390
+ }
1391
+ @media (forced-colors: active) {
1392
+ .diya-root .diya-select-control {
1393
+ border-color: ButtonText;
1394
+ }
1395
+ }
1396
+
1397
+
1398
+ /* ChoiceLibrary.css: portable component rules. */
1399
+ .diya-root .diya-choice {
1400
+ --diya-internal-choice-control: 18px;
1401
+ --diya-internal-choice-font: var(--diya-text-body);
1402
+ border: 0;
1403
+ margin: 0;
1404
+ padding: 0;
1405
+ width: fit-content;
1406
+ max-width: 100%;
1407
+ min-width: 0;
1408
+ color: var(--diya-color-text);
1409
+ }
1410
+ .diya-root .diya-choice > legend {
1411
+ padding: 0;
1412
+ margin-bottom: 18px;
1413
+ font-size: var(--diya-text-body);
1414
+ font-weight: 500;
1415
+ max-width: 100%;
1416
+ overflow-wrap: anywhere;
1417
+ }
1418
+ .diya-root .diya-choice-items {
1419
+ display: flex;
1420
+ flex-direction: column;
1421
+ gap: 4px;
1422
+ }
1423
+ .diya-root .diya-choice-option {
1424
+ display: flex;
1425
+ align-items: flex-start;
1426
+ gap: 12px;
1427
+ padding: 9px 0;
1428
+ cursor: pointer;
1429
+ }
1430
+ .diya-root .diya-choice-option > span { min-width:0; overflow-wrap:anywhere; }
1431
+ .diya-root .diya-choice-option input {
1432
+ appearance: none;
1433
+ -webkit-appearance: none;
1434
+ width: var(--diya-internal-choice-control);
1435
+ height: var(--diya-internal-choice-control);
1436
+ flex-shrink: 0;
1437
+ margin: 1px 0 0;
1438
+ padding: 0;
1439
+ border: 1px solid var(--diya-color-muted);
1440
+ background: transparent;
1441
+ border-radius: 4px;
1442
+ box-shadow: none;
1443
+ display: grid;
1444
+ place-content: center;
1445
+ cursor: pointer;
1446
+ }
1447
+ .diya-root .diya-choice-option input[type='radio'] {
1448
+ border-radius: 50%;
1449
+ }
1450
+ .diya-root .diya-choice-option input:checked {
1451
+ background: var(--diya-color-accent);
1452
+ border-color: var(--diya-color-accent);
1453
+ }
1454
+ .diya-root .diya-choice-option input[type='radio']:checked::before {
1455
+ content: '';
1456
+ width: 6px;
1457
+ height: 6px;
1458
+ border-radius: 50%;
1459
+ background: var(--diya-color-accent-text);
1460
+ }
1461
+ .diya-root .diya-choice-option input[type='checkbox']:checked::before {
1462
+ content: '';
1463
+ width: 4px;
1464
+ height: 8px;
1465
+ border: solid var(--diya-color-accent-text);
1466
+ border-width: 0 1.5px 1.5px 0;
1467
+ transform: translateY(-1px) rotate(45deg);
1468
+ }
1469
+ .diya-root .diya-choice-label {
1470
+ display: block;
1471
+ font-size: var(--diya-internal-choice-font);
1472
+ line-height: 20px;
1473
+ }
1474
+ .diya-root .diya-choice-description {
1475
+ display: block;
1476
+ font-size: var(--diya-text-caption);
1477
+ line-height: 1.6;
1478
+ color: var(--diya-color-muted);
1479
+ margin-top: 4px;
1480
+ }
1481
+ .diya-root .diya-choice[data-size='small'] {
1482
+ --diya-internal-choice-control: 16px;
1483
+ --diya-internal-choice-font: var(--diya-text-caption);
1484
+ }
1485
+ .diya-root .diya-choice[data-size='large'] {
1486
+ --diya-internal-choice-control: 22px;
1487
+ --diya-internal-choice-font: var(--diya-text-large);
1488
+ }
1489
+ .diya-root .diya-choice[data-size='large'] .diya-choice-label {
1490
+ line-height: 24px;
1491
+ }
1492
+ .diya-root .diya-choice-option[data-disabled='true'] {
1493
+ opacity: 0.45;
1494
+ cursor: not-allowed;
1495
+ }
1496
+ /* A disabled Choice fades as one field, legend and message included. */
1497
+ .diya-root .diya-choice:disabled { opacity: 0.45; }
1498
+ .diya-root .diya-choice:disabled .diya-choice-option[data-disabled='true'] { opacity: 1; }
1499
+ .diya-root .diya-choice-option input:disabled {
1500
+ cursor: not-allowed;
1501
+ }
1502
+ .diya-root .diya-choice-option:not([data-disabled='true']):hover input:not(:checked) {
1503
+ border-color: var(--diya-color-text);
1504
+ }
1505
+ @media (forced-colors: active) {
1506
+ .diya-root .diya-choice-option input {
1507
+ appearance: auto;
1508
+ }
1509
+ .diya-root .diya-choice-option input::before {
1510
+ display: none;
1511
+ }
1512
+ .diya-root .diya-choice-option[data-disabled='true'] {
1513
+ opacity: 1;
1514
+ color: GrayText;
1515
+ }
1516
+ }
1517
+ .diya-root .diya-choice input[type='checkbox']:indeterminate { background: var(--diya-color-accent); border-color: var(--diya-color-accent); }
1518
+ .diya-root .diya-choice input[type='checkbox']:indeterminate::before { content: ''; width: 8px; height: 2px; border: 0; transform: none; background: var(--diya-color-accent-text); }
1519
+ @media (forced-colors: active) { .diya-root .diya-choice input[type='checkbox']:indeterminate::before { display: none; } }
1520
+
1521
+
1522
+ /* NewAtoms.css: portable component rules. */
1523
+ .diya-root .diya-switch-field { display: flex; align-items: center; gap: 14px; min-width:0; max-width:100%; color: var(--diya-color-text); }
1524
+ .diya-root .diya-switch-field > div { min-width:0; overflow-wrap:anywhere; }
1525
+ .diya-root .diya-switch-field[data-disabled='true'] { opacity: .45; }
1526
+ .diya-root .diya-switch { appearance: none; -webkit-appearance: none; display: inline-grid; align-content: center; justify-content: start; flex-shrink: 0; width: 42px; height: 24px; margin: 0; padding: 3px; border-radius: 999px; border: 1px solid var(--diya-color-line); background: var(--diya-color-selected); cursor: pointer; }
1527
+ .diya-root .diya-switch::before { content: ''; display: block; width: 16px; height: 16px; border-radius: 50%; background: var(--diya-color-muted); }
1528
+ .diya-root .diya-switch:checked { background: var(--diya-color-accent); border-color: transparent; justify-content: end; }
1529
+ .diya-root .diya-switch:checked::before { background: var(--diya-color-accent-text); }
1530
+ .diya-root .diya-switch:disabled { cursor: not-allowed; }
1531
+ .diya-root .diya-switch-field label { cursor: pointer; }
1532
+ .diya-root .diya-switch-field[data-disabled='true'] label { cursor: not-allowed; }
1533
+ .diya-root .diya-switch:focus-visible,
1534
+ .diya-root .diya-tooltip-trigger:focus-visible { outline: 2px solid var(--diya-color-text); outline-offset: 4px; }
1535
+ .diya-root .diya-switch-field[data-size='small'] .diya-switch { width: 34px; height: 20px; }
1536
+ .diya-root .diya-switch-field[data-size='small'] .diya-switch::before { width: 12px; height: 12px; }
1537
+ .diya-root .diya-switch-field[data-size='large'] .diya-switch { width: 50px; height: 28px; }
1538
+ .diya-root .diya-switch-field[data-size='large'] .diya-switch::before { width: 20px; height: 20px; }
1539
+ .diya-root .diya-switch-label { font-size: var(--diya-text-body); }
1540
+ /* With helper text, the switch lines up with the label's line, not the middle of the block. */
1541
+ .diya-root .diya-switch-field:has(.diya-switch-description) { align-items: flex-start; }
1542
+ .diya-root .diya-switch-description { margin: 5px 0 0; color: var(--diya-color-muted); font-size: var(--diya-text-caption); line-height: 1.5; display: flex; gap: 8px; align-items: baseline; }
1543
+ .diya-root .diya-avatar { display: inline-flex; position: relative; align-items: center; justify-content: center; width: 48px; height: 48px; flex-shrink: 0; border-radius: 50%; background: var(--diya-color-selected); color: var(--diya-color-text); font-size: var(--diya-text-large); font-weight: 500; }
1544
+ .diya-root .diya-avatar[data-size='small'] { width: 32px; height: 32px; font-size: var(--diya-text-caption); }
1545
+ .diya-root .diya-avatar[data-size='large'] { width: 64px; height: 64px; font-size: var(--diya-text-title); }
1546
+ .diya-root .diya-avatar[data-shape='rounded'] { border-radius: 25%; }
1547
+ .diya-root .diya-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }
1548
+ .diya-root .diya-avatar svg { width: 50%; height: 50%; }
1549
+ .diya-root .diya-avatar::after { content: ''; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--diya-color-text) 10%, transparent); pointer-events: none; }
1550
+ .diya-root .diya-avatar-status { z-index: 1; }
1551
+ .diya-root .diya-avatar-status { position: absolute; right: -1px; bottom: -1px; width: 11px; height: 11px; border-radius: 50%; border: 2px solid var(--diya-color-surface); background: var(--diya-color-success-fill); }
1552
+ .diya-root .diya-avatar-status[data-status='away'] { background: var(--diya-internal-warning-mark); }
1553
+ .diya-root .diya-avatar-status[data-status='busy'] { background: var(--diya-color-error-fill); }
1554
+
1555
+ /* Rating: neutral stars in the text color on a faint track of the same ink, so they
1556
+ read the same in Light, Dark and Glass. The row is inline text, so it shares a
1557
+ baseline with whatever sits beside it. */
1558
+ .diya-root .diya-rating { --diya-internal-rating-star: 16px; --diya-internal-rating-gap: 2px; display: inline-block; color: var(--diya-color-text); font-size: var(--diya-text-body); line-height: var(--diya-leading-tight); white-space: nowrap; font-variant-numeric: tabular-nums; }
1559
+ .diya-root .diya-rating[data-size='small'] { --diya-internal-rating-star: 14px; font-size: var(--diya-text-caption); }
1560
+ .diya-root .diya-rating[data-size='large'] { --diya-internal-rating-star: 20px; --diya-internal-rating-gap: 3px; font-size: var(--diya-text-large); }
1561
+ /* The stars centre on the middle of the capitals and figures beside them (DIYA Sans: .729em). */
1562
+ .diya-root .diya-rating-stars { display: inline-flex; gap: var(--diya-internal-rating-gap); vertical-align: calc(.365em - var(--diya-internal-rating-star) / 2); vertical-align: calc(.5cap - var(--diya-internal-rating-star) / 2); }
1563
+ .diya-root .diya-rating-stars svg { display: block; flex: none; width: var(--diya-internal-rating-star); height: var(--diya-internal-rating-star); fill: currentColor; }
1564
+ .diya-root .diya-rating-empty { fill: color-mix(in srgb, var(--diya-color-text) 22%, transparent); }
1565
+ .diya-root[data-theme='light'] .diya-rating-empty { fill: color-mix(in srgb, var(--diya-color-text) 16%, transparent); }
1566
+ @media (prefers-color-scheme: light) {
1567
+ .diya-root[data-theme='system'] .diya-rating-empty { fill: color-mix(in srgb, var(--diya-color-text) 16%, transparent); }
1568
+ }
1569
+ /* A half star fills from the start of the line, so from the right in right-to-left text. */
1570
+ .diya-root .diya-rating-stars svg[data-fill='half']:dir(rtl) { transform: scaleX(-1); }
1571
+ .diya-root .diya-rating-value { margin-inline-end: .4em; font-weight: 500; }
1572
+ .diya-root .diya-rating-count { margin-inline-start: .4em; color: var(--diya-color-muted); }
1573
+ @media (forced-colors: active) {
1574
+ .diya-root .diya-rating-stars { color: CanvasText; }
1575
+ .diya-root .diya-rating .diya-rating-empty { fill: Canvas; stroke: CanvasText; stroke-width: 1.5; }
1576
+ }
1577
+ .diya-root .diya-tooltip-anchor { display: inline-flex; min-width:0; max-width:100%; }
1578
+ .diya-root .diya-tooltip-trigger { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 40px; min-width:0; max-width:100%; overflow-wrap:anywhere; padding: 0 18px; border-radius: 999px; border: 1px solid var(--diya-color-line); background: var(--diya-color-hover); color: var(--diya-color-text); font: inherit; font-size: var(--diya-text-body); cursor: help; }
1579
+ .diya-root .diya-tooltip-bubble { position: fixed; z-index: 1000; max-width: min(240px, calc(100vw - 16px)); overflow-wrap:anywhere; padding: 10px 14px; border-radius: calc(10px * var(--diya-corner-scale, 1)); background: var(--diya-color-text); color: var(--diya-color-surface); font-size: var(--diya-text-caption); line-height: 1.5; box-shadow: 0 calc(8px * var(--diya-elevation, 1)) calc(24px * var(--diya-elevation, 1)) #0003; }
1580
+ .diya-root .diya-textarea textarea { display: block; width: 100%; min-height: 112px; padding: 12px 14px; border: 1px solid var(--diya-color-line); border-radius: var(--diya-radius-control, calc(10px * var(--diya-corner-scale, 1))); background: var(--diya-color-hover); color: var(--diya-color-text); font: inherit; font-size: max(var(--diya-internal-field-min, 0px), var(--diya-text-body)); line-height: 1.6; box-sizing: border-box; }
1581
+ .diya-root .diya-textarea[data-size='small'] textarea { min-height: 88px; padding: 10px 12px; font-size: max(var(--diya-internal-field-min, 0px), var(--diya-text-caption)); }
1582
+ .diya-root .diya-textarea[data-size='large'] textarea { min-height: 136px; padding: 14px 16px; font-size: var(--diya-text-large); }
1583
+ .diya-root .diya-textarea textarea:focus-visible { outline: 2px solid var(--diya-color-text); outline-offset: 3px; }
1584
+ .diya-root .diya-textarea textarea::placeholder { color: var(--diya-color-muted); opacity:1; }
1585
+ .diya-root .diya-textarea[data-disabled='true'] { opacity: .45; }
1586
+ .diya-root .diya-textarea-footer { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; }
1587
+ .diya-root .diya-textarea-count { margin-top: 10px; margin-left: auto; color: var(--diya-color-muted); font-size: var(--diya-text-caption); white-space: nowrap; }
1588
+ .diya-root .diya-text-field input[type='search']::-webkit-search-cancel-button { appearance: none; }
1589
+ @media (forced-colors: active) {
1590
+ .diya-root .diya-switch { forced-color-adjust: none; border-color: ButtonText; background: Canvas; }
1591
+ .diya-root .diya-switch::before { background: ButtonText; }
1592
+ .diya-root .diya-switch:checked { background: Highlight; }
1593
+ .diya-root .diya-switch:checked::before { background: HighlightText; }
1594
+ .diya-root .diya-switch:disabled { border-color: GrayText; }
1595
+ .diya-root .diya-switch:disabled::before { background: GrayText; }
1596
+ }
1597
+
1598
+ .diya-root .diya-search-pill .diya-text-field-control { border-radius: 999px; }
1599
+
1600
+
1601
+ /* CollectionAtoms.css: portable component rules. */
1602
+ .diya-root .diya-list { list-style: none; padding: 0; margin: 0; width: 100%; max-width: 440px; color: var(--diya-color-text); }
1603
+ .diya-root .diya-list-row { width: 100%; display: flex; align-items: center; gap: 14px; padding: 16px 14px; border: 0; border-radius: calc(10px * var(--diya-corner-scale, 1)); color: inherit; background: transparent; text-align: left; font: inherit; box-sizing: border-box; }
1604
+ .diya-root button.diya-list-row { cursor: pointer; }
1605
+ .diya-root button.diya-list-row:hover:not(:disabled) { background: var(--diya-color-hover); }
1606
+ .diya-root .diya-list[data-divided='true'] > li + li { border-top: 1px solid var(--diya-color-line); }
1607
+ .diya-root .diya-list[data-size='small'] .diya-list-row { padding-block: 10px; }
1608
+ .diya-root .diya-list[data-size='large'] .diya-list-row { padding-block: 22px; }
1609
+ .diya-root .diya-list-copy { display: flex; flex-direction: column; gap: 5px; flex: 1; min-width: 0; overflow-wrap:anywhere; }
1610
+ .diya-root .diya-list-label { font-size: var(--diya-text-body); font-weight: 500; }
1611
+ .diya-root .diya-list-description,
1612
+ .diya-root .diya-list-trailing { font-size: var(--diya-text-caption); color: var(--diya-color-muted); line-height: 1.5; }
1613
+ .diya-root .diya-list-leading { display: inline-flex; align-items: center; flex-shrink: 0; }
1614
+ .diya-root .diya-list-row:disabled { opacity: .4; cursor: not-allowed; }
1615
+ /* The open item reads as selected, like Side Navigation's current item, and stays so on hover. */
1616
+ .diya-root :is(.diya-list-row[aria-current], .diya-list > li[aria-current] > .diya-list-row),
1617
+ .diya-root button.diya-list-row[aria-current]:hover:not(:disabled) { background: var(--diya-color-selected); }
1618
+ /* Unread: a heavier label and a small dot at the row's end, so the dots line up down the list. */
1619
+ .diya-root .diya-list-row[data-unread] .diya-list-label { font-weight: 650; }
1620
+ .diya-root .diya-list-unread { flex-shrink: 0; width: 8px; height: 8px; margin-left: -4px; border-radius: 50%; background: var(--diya-color-accent); }
1621
+ .diya-root .diya-accordion { width: 100%; max-width: 480px; min-width:0; overflow-wrap:anywhere; color: var(--diya-color-text); }
1622
+ .diya-root .diya-accordion-heading { margin: 0; font-size: var(--diya-text-body); font-weight: 500; }
1623
+ .diya-root .diya-accordion-heading button { display: flex; align-items: center; justify-content: space-between; width: 100%; gap: 24px; padding: 18px 12px; border: 0; border-radius: calc(8px * var(--diya-corner-scale, 1)); color: inherit; background: transparent; font: inherit; text-align: left; cursor: pointer; }
1624
+ .diya-root .diya-accordion-heading button:hover:not(:disabled) { background: var(--diya-color-hover); }
1625
+ .diya-root .diya-accordion-heading button:disabled { opacity: .4; cursor: not-allowed; }
1626
+ /* Accordion panels, Table cells and Chatbot's welcome take your content, so their rules for plain
1627
+ elements end in the same guard as Dialog's below. Table's guard passes its own diya-table parts. */
1628
+ .diya-root .diya-accordion[data-divided='true'] > .diya-accordion-item + .diya-accordion-item { border-top: 1px solid var(--diya-color-line); }
1629
+ .diya-root .diya-accordion-content { padding: 0 12px 20px; color: var(--diya-color-muted); font-size: var(--diya-text-body); line-height: 1.7; }
1630
+ .diya-root .diya-accordion-content[hidden] { display: none; }
1631
+ .diya-root .diya-dialog { width: min(480px, calc(100vw - 48px)); max-height: calc(100dvh - 48px); overflow: auto; margin: auto; padding: 28px; border: 1px solid var(--diya-color-line); border-radius: calc(22px * var(--diya-corner-scale, 1)); background: var(--diya-color-surface); color: var(--diya-color-text); box-shadow: var(--diya-shadow-raised); box-sizing: border-box; }
1632
+ .diya-root .diya-dialog[data-size='small'] { width: min(380px, calc(100vw - 48px)); }
1633
+ .diya-root .diya-dialog[data-size='large'] { width: min(640px, calc(100vw - 48px)); }
1634
+ .diya-root .diya-dialog::backdrop { background: var(--diya-color-scrim, #0008); backdrop-filter: blur(5px); }
1635
+ /* Container rules for plain elements (Dialog, Card, Drawer, Form and the other workflow surfaces) end in
1636
+ the guard Prose uses: they reach your own plain elements, never a DIYA component placed inside, nor
1637
+ anything it renders. Parts at a fixed place are reached with child combinators instead. Neither
1638
+ changes specificity. */
1639
+ .diya-root .diya-dialog header:not(:where([class*='diya-'], .diya-dialog [class*='diya-']:not(.diya-dialog, .diya-dialog-layout, .diya-dialog-content) *)) { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
1640
+ .diya-root .diya-dialog h3:not(:where([class*='diya-'], .diya-dialog [class*='diya-']:not(.diya-dialog, .diya-dialog-layout, .diya-dialog-content) *)) { margin: 0; font-size: var(--diya-text-title); font-weight: 500; }
1641
+ .diya-root .diya-dialog-close { display: grid; place-items: center; width: 32px; height: 32px; border: 0; border-radius: 50%; background: transparent; color: var(--diya-color-muted); cursor: pointer; }
1642
+ .diya-root .diya-dialog-close:hover { background: var(--diya-color-hover); }
1643
+ .diya-root .diya-dialog-description { margin: 12px 0 0; color: var(--diya-color-muted); font-size: var(--diya-text-body); line-height: 1.6; }
1644
+ .diya-root .diya-dialog-content { margin-top: 24px; }
1645
+ .diya-root .diya-dialog footer:not(:where([class*='diya-'], .diya-dialog [class*='diya-']:not(.diya-dialog, .diya-dialog-layout, .diya-dialog-content) *)) { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
1646
+ .diya-root .diya-list-row:focus-visible,
1647
+ .diya-root .diya-accordion button:not(:where([class*='diya-'], .diya-accordion [class*='diya-']:not([class*='diya-accordion']) *)):focus-visible,
1648
+ .diya-root .diya-dialog button:not(:where([class*='diya-'], .diya-dialog [class*='diya-']:not(.diya-dialog, .diya-dialog-layout, .diya-dialog-content) *)):focus-visible { outline: 2px solid var(--diya-color-text); outline-offset: 3px; }
1649
+ @media (forced-colors: active) { .diya-root .diya-dialog { border: 1px solid CanvasText; background: Canvas; color: CanvasText; } }
1650
+
1651
+
1652
+ /* DataAtoms.css: portable component rules. */
1653
+ .diya-root .diya-metric { display: flex; flex-direction: column; gap: 10px; color: var(--diya-color-text); }
1654
+ .diya-root .diya-metric-label { font-size: var(--diya-text-caption); color: var(--diya-color-muted); }
1655
+ /* Figures are tabular: DIYA Sans's tabular 0 and 1 match its default figures (apps/diya/scripts/fonts/tabular_figures.py). */
1656
+ .diya-root .diya-metric-number { display: flex; align-items: baseline; gap: 8px; font-size: var(--diya-text-heading); font-weight: 500; line-height: 1.15; letter-spacing: -.035em; font-variant-numeric: tabular-nums; }
1657
+ .diya-root .diya-metric-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
1658
+ .diya-root .diya-metric-unit { font-size: max(var(--diya-text-caption), .5em); font-weight: 400; letter-spacing: 0; color: var(--diya-color-muted); }
1659
+ .diya-root .diya-metric[data-size='small'] .diya-metric-number { font-size: var(--diya-text-large); letter-spacing: -.02em; }
1660
+ .diya-root .diya-metric[data-size='large'] .diya-metric-number { font-size: var(--diya-text-display); }
1661
+ .diya-root .diya-metric-comparison { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: var(--diya-text-caption); color: var(--diya-color-muted); }
1662
+ .diya-root .diya-metric-change { display: inline-flex; align-items: center; gap: 4px; }
1663
+ .diya-root .diya-metric-change[data-meaning='positive'] { color: #95c381; }
1664
+ .diya-root .diya-metric-change[data-meaning='negative'] { color: #ef8e92; }
1665
+ .diya-root .diya-text-link { color: var(--diya-color-text); font-size: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; border-radius: 3px; }
1666
+ .diya-root .diya-text-link:not([data-inline='true']) { display: inline-flex; align-items: center; gap: 7px; font-size: var(--diya-text-body); }
1667
+ .diya-root .diya-text-link > span { display: inline-flex; vertical-align: middle; }
1668
+ .diya-root .diya-text-link[data-inline='true'] > span { margin-inline: 4px; }
1669
+ .diya-root .diya-text-link:hover { text-decoration-thickness: 2px; }
1670
+ .diya-root .diya-pagination { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 20px 24px; width: 100%; color: var(--diya-color-text); container: diya-pagination / inline-size; }
1671
+ .diya-root .diya-pagination nav { display: flex; align-items: center; justify-content:center; flex-wrap:wrap; gap:8px 4px; min-width:0; max-width:100%; }
1672
+ .diya-root .diya-pagination nav .diya-button[aria-label] { min-width: 32px; padding: 0 8px; }
1673
+ .diya-root .diya-pagination-count,
1674
+ .diya-root .diya-pagination-size { margin: 0; font-size: var(--diya-text-caption); color: var(--diya-color-muted); }
1675
+ .diya-root .diya-pagination-size { display: flex; align-items: center; gap: 8px; }
1676
+ .diya-root .diya-pagination-size .diya-select-field { width: 76px; }
1677
+ .diya-root .diya-pagination-gap { padding: 0 5px; color: var(--diya-color-muted); font-size: var(--diya-text-body); }
1678
+ /* Narrow spaces: Previous and Next become arrows (their text stays the name), then the first, last and gaps drop out, so the row never wraps. */
1679
+ .diya-root .diya-pagination-chevron { display: none; }
1680
+ @container diya-pagination (max-width: 400px) {
1681
+ .diya-root .diya-pagination nav { flex-wrap: nowrap; gap: 4px; }
1682
+ .diya-root .diya-pagination nav > .diya-button:not([aria-label]) { width: 32px; min-width: 32px; padding: 0; }
1683
+ .diya-root .diya-pagination-chevron { display: block; }
1684
+ .diya-root .diya-pagination-step { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
1685
+ }
1686
+ @container diya-pagination (max-width: 310px) {
1687
+ .diya-root .diya-pagination nav:is([data-cells='6'], [data-cells='7']) > :is([data-far], .diya-pagination-gap) { display: none; }
1688
+ }
1689
+ @container diya-pagination (max-width: 250px) {
1690
+ .diya-root .diya-pagination nav > :is([data-far], .diya-pagination-gap) { display: none; }
1691
+ }
1692
+ .diya-root .diya-text-link:focus-visible { outline: 2px solid var(--diya-color-text); outline-offset: 3px; }
1693
+ @media (forced-colors: active) { .diya-root .diya-metric-change[data-meaning] { color: CanvasText; } .diya-root .diya-text-link { color: LinkText; } }
1694
+
1695
+
1696
+ /* combobox/Combobox.css: portable component rules. */
1697
+ .diya-root .diya-combobox{position:relative;max-width:400px;width:100%;color:var(--diya-color-text)}.diya-root .diya-combobox>label{display:block;font-size:var(--diya-text-body);font-weight:500;margin-bottom:10px}.diya-root .diya-combobox-control{min-height:40px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:6px 12px;border:1px solid var(--diya-color-line);border-radius:var(--diya-radius-control, calc(10px * var(--diya-corner-scale, 1)));background:var(--diya-color-hover)}.diya-root .diya-combobox-control input{flex:1;min-width:90px;width:100%;background:transparent;border:0;padding:0;font:inherit;font-size:max(var(--diya-internal-field-min, 0px), var(--diya-text-body));color:inherit;outline:0}.diya-root .diya-combobox-control:focus-within{outline:2px solid var(--diya-color-text);outline-offset:3px}.diya-root .diya-combobox[data-size='small'] .diya-combobox-control{min-height:32px;padding-block:3px}.diya-root .diya-combobox[data-size='large'] .diya-combobox-control{min-height:48px}.diya-root .diya-combobox[data-invalid='true'] .diya-combobox-control{border-color:var(--diya-color-error)}.diya-root .diya-combobox:has(.diya-combobox-control input:disabled){opacity:.45}.diya-root .diya-combobox-chip{display:inline-flex;gap:8px;align-items:center;background:var(--diya-color-hover);padding:3px 8px;border-radius:calc(6px * var(--diya-corner-scale, 1));font-size:var(--diya-text-caption)}.diya-root .diya-combobox-chip button{color:inherit;font-size:var(--diya-text-body)}.diya-root .diya-combobox-options{position:absolute;z-index:30;top:calc(100% + 8px);left:0;right:0;list-style:none;margin:0;padding:6px;border:1px solid var(--diya-internal-overlay-border);border-top-color:var(--diya-internal-overlay-top-border);border-radius:calc(16px * var(--diya-corner-scale, 1));background:var(--diya-color-raised);box-shadow:var(--diya-shadow-raised);max-height:240px;overflow:auto}.diya-root .diya-combobox-options li{display:flex;justify-content:space-between;padding:10px 12px;font-size:var(--diya-text-body);border-radius:calc(6px * var(--diya-corner-scale, 1));cursor:pointer}.diya-root .diya-combobox-options li[data-active='true']{background:var(--diya-color-hover)}.diya-root .diya-combobox-options li[aria-disabled='true']{opacity:.4;cursor:not-allowed}.diya-root .diya-combobox input::placeholder{color:var(--diya-color-muted)}
1698
+ .diya-root .diya-combobox-options[popover]{position:fixed;inset:auto;margin:0;color:var(--diya-color-text)}
1699
+ .diya-root .diya-combobox { min-width:0; max-width:min(100%,400px); }
1700
+ .diya-root .diya-combobox > label { overflow-wrap:anywhere; }
1701
+ .diya-root .diya-combobox-chip { min-width:0; max-width:100%; overflow-wrap:anywhere; }
1702
+ .diya-root .diya-combobox-chip button { flex-shrink:0; }
1703
+ .diya-root .diya-combobox-options li > span:not([aria-hidden]) { min-width:0; overflow-wrap:anywhere; }
1704
+ .diya-root .diya-combobox-options li > span[aria-hidden] { flex-shrink:0; }
1705
+ .diya-root .diya-combobox input::placeholder { opacity:1; }
1706
+
1707
+ .diya-root .diya-combobox-toggle{display:grid;place-items:center;flex:0 0 20px;height:24px;border:0;background:transparent;color:var(--diya-color-muted);cursor:pointer;padding:0}.diya-root .diya-combobox-chip button{border:0;background:transparent;padding:0;cursor:pointer;line-height:1}.diya-root .diya-combobox-control input{width:auto}.diya-root .diya-combobox-options li[aria-selected='true']{font-weight:500}.diya-root .diya-combobox-options li[aria-disabled='true']{pointer-events:none}
1708
+
1709
+ .diya-root .diya-combobox[data-invalid='true'] .diya-field-help{color:var(--diya-color-error)}.diya-root .diya-combobox-toggle:focus-visible,
1710
+ .diya-root .diya-combobox-chip button:focus-visible{outline:2px solid var(--diya-color-text);outline-offset:2px}
1711
+ .diya-root .diya-combobox .diya-combobox-control input,
1712
+ .diya-root .diya-combobox .diya-combobox-control input:focus,
1713
+ .diya-root .diya-combobox .diya-combobox-control input:focus-visible { appearance:none; border:0; border-radius:0; outline:none; box-shadow:none; background:transparent; padding:0; height:24px; font-size:max(var(--diya-internal-field-min, 0px), var(--diya-text-body)); }
1714
+ .diya-root .diya-combobox[data-size='small'] .diya-combobox-control input { height:18px; font-size:max(var(--diya-internal-field-min, 0px), var(--diya-text-caption)); }
1715
+ .diya-root .diya-combobox[data-size='large'] .diya-combobox-control input { height:30px; font-size:var(--diya-text-large); }
1716
+
1717
+
1718
+ /* date-picker/DatePicker.css: portable component rules. */
1719
+ .diya-root .diya-date-field{position:relative;width:100%;min-width:0;max-width:min(100%,400px);color:var(--diya-color-text)}
1720
+ .diya-root .diya-date-field>label{display:block;font-size:var(--diya-text-body);font-weight:500;margin-bottom:10px;overflow-wrap:anywhere}
1721
+ .diya-root .diya-date-trigger{width:100%;min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;border:1px solid var(--diya-color-line);border-radius:var(--diya-radius-control, calc(10px * var(--diya-corner-scale, 1)));background:var(--diya-color-hover);color:inherit;font-size:var(--diya-text-body);text-align:left}
1722
+ .diya-root .diya-date-field[data-size='small'] .diya-date-trigger{min-height:32px;font-size:var(--diya-text-caption)}.diya-root .diya-date-field[data-size='large'] .diya-date-trigger{min-height:48px;font-size:var(--diya-text-large)}
1723
+ .diya-root .diya-date-trigger:disabled{opacity:1;cursor:not-allowed}.diya-root .diya-date-field:has(.diya-date-trigger:disabled){opacity:.45}.diya-root .diya-date-field[data-invalid='true'] .diya-date-trigger{border-color:var(--diya-color-error)}.diya-root .diya-field-help{font-size:var(--diya-text-caption);color:var(--diya-color-muted);margin:10px 0 0}.diya-root .diya-date-field[data-invalid='true'] .diya-field-help{color:var(--diya-color-error)}
1724
+ .diya-root .diya-calendar{position:absolute;top:calc(100% + 8px);left:0;width:300px;z-index:30;padding:16px;background:var(--diya-color-raised);border:1px solid var(--diya-internal-overlay-border);border-top-color:var(--diya-internal-overlay-top-border);border-radius:calc(16px * var(--diya-corner-scale, 1));box-shadow:var(--diya-shadow-raised)}
1725
+ .diya-root .diya-calendar-heading,
1726
+ .diya-root .diya-calendar-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.diya-root .diya-calendar-heading strong{font-size:var(--diya-text-body)}.diya-root .diya-calendar-heading button{width:30px;height:30px;border-radius:calc(8px * var(--diya-corner-scale, 1));color:inherit;font-size:var(--diya-text-title)}.diya-root .diya-calendar-hint{font-size:var(--diya-text-caption);color:var(--diya-color-muted);margin:8px 0}
1727
+ .diya-root .diya-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-top:12px}.diya-root .diya-calendar-row{display:grid;grid-column:1/-1;gap:3px;grid-template-columns:repeat(7,1fr);grid-template-columns:subgrid}.diya-root .diya-calendar-weekday{font-size:var(--diya-text-caption);color:var(--diya-color-muted);text-align:center;padding:6px 0}.diya-root .diya-calendar-grid button{height:34px;border-radius:calc(8px * var(--diya-corner-scale, 1));font-size:var(--diya-text-body);color:inherit}.diya-root .diya-calendar-grid button:hover,
1728
+ .diya-root .diya-calendar-heading button:hover{background:var(--diya-color-hover)}.diya-root .diya-calendar-grid button[aria-selected='true']:not([data-between='true']){background:var(--diya-color-accent);color:var(--diya-color-accent-text)}.diya-root .diya-calendar-grid button[data-between='true']{background:var(--diya-color-accent-soft, var(--diya-color-hover))}.diya-root .diya-calendar-grid button[data-today='true']{text-decoration:underline;text-underline-offset:4px}.diya-root .diya-calendar-footer{border-top:1px solid var(--diya-color-line);margin-top:12px;padding-top:12px}.diya-root .diya-calendar-footer button{font-size:var(--diya-text-caption);color:inherit;padding:4px 6px}
1729
+ .diya-root .diya-date-field button:focus-visible{outline:2px solid var(--diya-color-text);outline-offset:3px}
1730
+ .diya-root .diya-calendar[popover]{position:fixed;margin:0;inset:auto;color:var(--diya-color-text)}
1731
+ .diya-root .diya-calendar-grid button[aria-disabled='true']{color:var(--diya-color-muted);opacity:.45;cursor:not-allowed}
1732
+ .diya-root .diya-calendar-grid button[aria-disabled='true']:hover{background:transparent}
1733
+ /* Calendar: the same month grid, on the page. No surface of its own, so it sits on a card or the page;
1734
+ days are as tall as a field of the same size, and seven of them set its widest. */
1735
+ .diya-root .diya-inline-calendar{--diya-internal-field-height:40px;--diya-internal-field-font-size:var(--diya-text-body);position:relative;width:100%;min-width:0;max-width:calc(7 * var(--diya-internal-field-height) + 18px);color:var(--diya-color-text)}
1736
+ .diya-root .diya-inline-calendar[data-size='small']{--diya-internal-field-height:32px;--diya-internal-field-font-size:var(--diya-text-caption)}
1737
+ .diya-root .diya-inline-calendar[data-size='large']{--diya-internal-field-height:48px;--diya-internal-field-font-size:var(--diya-text-large)}
1738
+ .diya-root .diya-inline-calendar>.diya-calendar-label{display:block;font-size:var(--diya-text-body);font-weight:500;margin-bottom:10px;overflow-wrap:anywhere}
1739
+ .diya-root .diya-inline-calendar .diya-calendar-heading button{width:var(--diya-internal-field-height);height:var(--diya-internal-field-height)}
1740
+ .diya-root .diya-inline-calendar .diya-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr))}
1741
+ .diya-root .diya-inline-calendar .diya-calendar-row{grid-template-columns:repeat(7,minmax(0,1fr));grid-template-columns:subgrid}
1742
+ .diya-root .diya-inline-calendar .diya-calendar-grid button{height:var(--diya-internal-field-height);font-size:var(--diya-internal-field-font-size)}
1743
+ .diya-root .diya-inline-calendar button:focus-visible{outline:2px solid var(--diya-color-text);outline-offset:3px}
1744
+ .diya-root .diya-inline-calendar button:disabled:hover{background:transparent}
1745
+ .diya-root .diya-inline-calendar[data-disabled='true'] :is(.diya-calendar-heading,.diya-calendar-hint,.diya-calendar-grid){opacity:.45}
1746
+ .diya-root .diya-inline-calendar[data-disabled='true'] button:disabled{opacity:1}
1747
+
1748
+
1749
+ /* alert/Alert.css: portable component rules. */
1750
+ .diya-root .diya-alert {
1751
+ --diya-internal-alert-accent: var(--diya-internal-alert-info);
1752
+ display: flex; align-items: flex-start; gap: 14px; width: 100%; min-width:0; max-width:min(100%,520px);
1753
+ padding: 20px; box-sizing: border-box; border-radius: calc(16px * var(--diya-corner-scale, 1));
1754
+ border: 1px solid color-mix(in srgb, var(--diya-internal-alert-accent) 28%, transparent);
1755
+ background: color-mix(in srgb, var(--diya-internal-alert-accent) 7%, var(--diya-color-surface));
1756
+ color: var(--diya-color-text);
1757
+ }
1758
+ .diya-root .diya-alert[data-tone='success'] { --diya-internal-alert-accent: var(--diya-internal-alert-success); }
1759
+ .diya-root .diya-alert[data-tone='warning'] { --diya-internal-alert-accent: var(--diya-internal-alert-warning); }
1760
+ .diya-root .diya-alert[data-tone='error'] { --diya-internal-alert-accent: var(--diya-internal-alert-error); }
1761
+ .diya-root .diya-alert-icon { flex-shrink: 0; color: var(--diya-internal-alert-ink, var(--diya-internal-alert-accent)); margin-top: 1px; }
1762
+ .diya-root .diya-alert-copy { flex: 1; min-width: 0; overflow-wrap:anywhere; }
1763
+ .diya-root .diya-alert-title { margin: 0 0 6px; color:var(--diya-color-text); font-size: var(--diya-text-body); font-weight: 600; line-height: 1.5; }
1764
+ .diya-root .diya-alert-description { font-size: var(--diya-text-body); line-height: 1.65; color: var(--diya-color-muted); }
1765
+ .diya-root .diya-alert-action { display: block; border: 0; border-radius: calc(4px * var(--diya-corner-scale, 1)); background: transparent; color: var(--diya-internal-alert-ink, var(--diya-internal-alert-accent)); font: inherit; font-size: var(--diya-text-body); font-weight: 500; padding: 4px 0; margin-top: 12px; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
1766
+ .diya-root .diya-alert-dismiss { display: grid; place-items: center; flex-shrink: 0; width: 28px; height: 28px; padding: 0; margin: -3px -3px 0 0; border: 0; border-radius: 50%; background: transparent; color: var(--diya-color-muted); cursor: pointer; }
1767
+ .diya-root .diya-alert-dismiss:hover { background: var(--diya-color-hover); color: var(--diya-color-text); }
1768
+ .diya-root .diya-alert button:focus-visible { outline: 2px solid var(--diya-internal-alert-ink, var(--diya-internal-alert-accent)); outline-offset: 3px; }
1769
+ .diya-root .diya-alert-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
1770
+ .diya-root .diya-alert[data-layout='banner'] { max-width:none; min-height:64px; align-items:center; padding:14px 20px; }
1771
+ .diya-root .diya-alert[data-layout='banner'] .diya-alert-icon { margin:0; }
1772
+ .diya-root .diya-alert[data-layout='banner'] .diya-alert-copy { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px 20px; }
1773
+ .diya-root .diya-alert[data-layout='banner'] .diya-alert-copy > [role] { display:flex; align-items:baseline; flex-wrap:wrap; gap:4px 12px; }
1774
+ .diya-root .diya-alert[data-layout='banner'] .diya-alert-title { margin:0; }
1775
+ .diya-root .diya-alert[data-layout='banner'] .diya-alert-action { margin:0; }
1776
+ .diya-root .diya-alert[data-layout='banner'] .diya-alert-dismiss { margin:0; width:32px; height:32px; }
1777
+ @media (forced-colors: active) { .diya-root .diya-alert { border-color: CanvasText; background: Canvas; color: CanvasText; } .diya-root .diya-alert-icon,
1778
+ .diya-root .diya-alert-action { color: CanvasText; } }
1779
+ .diya-root .diya-alert[data-tone='brand'] { --diya-internal-alert-accent: var(--diya-color-accent); --diya-internal-alert-ink: var(--diya-color-accent-ink, var(--diya-color-text)); }
1780
+ .diya-root .diya-toast-region { position: fixed; z-index: 1200; bottom: 28px; right: 28px; width: min(420px, calc(100vw - 40px)); }
1781
+ .diya-root .diya-toast-region .diya-alert { box-shadow: var(--diya-shadow-raised); }
1782
+ @media (max-width: 600px) { .diya-root .diya-toast-region { bottom: 20px; right: 20px; } }
1783
+
1784
+
1785
+ /* slider/Slider.css: portable component rules. */
1786
+ .diya-root .diya-slider { width: min(100%, 400px); color: var(--diya-color-text); }
1787
+ .diya-root .diya-slider[data-disabled='true'] { opacity: .45; }
1788
+ .diya-root .diya-slider-values { display: flex; justify-content: space-between; font-size: var(--diya-text-body); font-variant-numeric: tabular-nums; margin-bottom: 12px; }
1789
+ .diya-root .diya-slider-inputs { position: relative; height: 28px; }
1790
+ .diya-root .diya-slider-rail { position: absolute; inset: 11px 9px; height: 6px; border-radius: 999px; background: var(--diya-color-selected); }
1791
+ .diya-root .diya-slider-rail > span { position: absolute; left: var(--diya-internal-slider-start); right: calc(100% - var(--diya-internal-slider-end)); height: 100%; border-radius: inherit; background: var(--diya-color-accent); }
1792
+ .diya-root .diya-slider input { position: absolute; inset: 0; margin: 0; width: 100%; height: 28px; appearance: none; background: transparent; pointer-events: none; }
1793
+ .diya-root .diya-slider input::-webkit-slider-runnable-track { height: 6px; background: transparent; }
1794
+ .diya-root .diya-slider input::-moz-range-track { height: 6px; background: transparent; }
1795
+ .diya-root .diya-slider input::-webkit-slider-thumb { appearance: none; width: 18px; height: 18px; margin-top: -6px; border-radius: 50%; background: var(--diya-color-accent); border: 3px solid var(--diya-color-surface); box-shadow: 0 0 0 1px var(--diya-color-line); pointer-events: auto; cursor: grab; }
1796
+ .diya-root .diya-slider input::-moz-range-thumb { width: 12px; height: 12px; border-radius: 50%; background: var(--diya-color-accent); border: 3px solid var(--diya-color-surface); box-shadow: 0 0 0 1px var(--diya-color-line); pointer-events: auto; cursor: grab; }
1797
+ .diya-root .diya-slider input:focus-visible { outline: none; z-index: 1; }
1798
+ .diya-root .diya-slider input:focus-visible::-webkit-slider-thumb { outline: 2px solid var(--diya-color-text); outline-offset: 3px; }
1799
+ .diya-root .diya-slider input:focus-visible::-moz-range-thumb { outline: 2px solid var(--diya-color-text); outline-offset: 3px; }
1800
+ .diya-root .diya-slider input:disabled::-webkit-slider-thumb { cursor: not-allowed; }
1801
+ .diya-root .diya-slider input:disabled::-moz-range-thumb { cursor: not-allowed; }
1802
+ .diya-root .diya-slider-marks { display: flex; justify-content: space-between; margin: 10px 4px 0; font-size: var(--diya-text-caption); color: var(--diya-color-muted); }
1803
+ .diya-root .diya-slider-marks span::before { content: ''; display: block; width: 1px; height: 4px; background: var(--diya-color-line); margin: 0 auto 7px; }
1804
+ @media (forced-colors: active) { .diya-root .diya-slider-rail { background: GrayText; } .diya-root .diya-slider-rail > span { background: Highlight; } .diya-root .diya-slider input::-webkit-slider-thumb { background: Highlight; border-color: Canvas; } }
1805
+ .diya-root .diya-slider input { border: 0; border-radius: 0; padding: 0; }
1806
+ .diya-root .diya-slider input:focus-visible { outline: none; }
1807
+
1808
+
1809
+ /* progress/Progress.css: portable component rules. */
1810
+ .diya-root .diya-progress { position: relative; color: var(--diya-color-text); }
1811
+ .diya-root .diya-progress[data-variant='linear'] { width: min(100%, 400px); display: flex; align-items: center; gap: 20px; }
1812
+ .diya-root .diya-progress[data-variant='linear'] .diya-progress-meter { flex: 1; }
1813
+ .diya-root .diya-progress-track { height: 6px; background: var(--diya-color-selected); border-radius: 999px; overflow: hidden; }
1814
+ .diya-root .diya-progress-track > span { display: block; height: 100%; border-radius: inherit; background: var(--diya-color-accent); }
1815
+ .diya-root .diya-progress-value { font-size: var(--diya-text-caption); font-variant-numeric: tabular-nums; }
1816
+ .diya-root .diya-progress[data-variant='linear'] .diya-progress-value { width: 38px; text-align: right; }
1817
+ .diya-root .diya-progress[data-variant='circular'] { width: 100px; height: 100px; }
1818
+ .diya-root .diya-progress[data-variant='circular'] svg { width: 100%; height: 100%; fill: none; stroke-width: 5; transform: rotate(-90deg); }
1819
+ .diya-root .diya-progress-track-circle { stroke: var(--diya-color-selected); }
1820
+ .diya-root .diya-progress-fill-circle { stroke: var(--diya-color-accent); stroke-linecap: round; }
1821
+ .diya-root .diya-progress[data-variant='circular'] .diya-progress-value { position: absolute; inset: 0; display: grid; place-items: center; }
1822
+ .diya-root .diya-progress[data-indeterminate='true'][data-variant='linear'] .diya-progress-track > span { width: 35%; animation: diya-progress-travel 1.8s ease-in-out infinite alternate; }
1823
+ .diya-root .diya-progress[data-indeterminate='true'][data-variant='circular'] svg { animation: diya-progress-spin 1.4s linear infinite; }
1824
+ @keyframes diya-progress-travel { from { transform: translateX(-100%); } to { transform: translateX(285%); } }
1825
+ @keyframes diya-progress-spin { to { transform: rotate(270deg); } }
1826
+ /* Under Reduce Motion, indeterminate progress stops travelling or spinning and
1827
+ breathes in place instead: a full bar or ring that fades between faint and
1828
+ clear, so it reads as "working", never as a stuck amount or as done. */
1829
+ @keyframes diya-progress-breathe { from { opacity: .25; } to { opacity: .7; } }
1830
+ @media (prefers-reduced-motion: reduce) {
1831
+ .diya-root .diya-progress[data-indeterminate='true'][data-variant='circular'] svg { animation: none; }
1832
+ .diya-root .diya-progress[data-indeterminate='true'][data-variant='circular'] .diya-progress-fill-circle { stroke-dashoffset: 0; animation: diya-progress-breathe 2s ease-in-out infinite alternate; }
1833
+ .diya-root .diya-progress[data-indeterminate='true'][data-variant='linear'] .diya-progress-track > span { width: 100%; transform: none; animation: diya-progress-breathe 2s ease-in-out infinite alternate; }
1834
+ }
1835
+ @media (forced-colors: active) { .diya-root .diya-progress-track { outline: 1px solid CanvasText; } .diya-root .diya-progress-track > span { background: Highlight; } .diya-root .diya-progress-fill-circle { stroke: Highlight; } }
1836
+
1837
+
1838
+ /* card/Card.css: portable component rules. */
1839
+ .diya-root .diya-card { width:100%; border:1px solid var(--diya-color-line); border-radius:var(--diya-radius-surface); background:var(--diya-color-surface); color:var(--diya-color-text); overflow:hidden; }
1840
+ /* A Card fills the height it is given (a stretched grid or flex cell): the content
1841
+ grows and the footer stays at the bottom. At its natural height nothing changes. */
1842
+ .diya-root .diya-card { display:flex; flex-direction:column; }
1843
+ .diya-root .diya-card-body { padding:24px; flex:1; display:flex; flex-direction:column; }
1844
+ .diya-root .diya-card-content { flex:1; }
1845
+ .diya-root .diya-card-media { flex-shrink:0; }
1846
+ .diya-root .diya-card-header { display:flex; align-items:flex-start; gap:16px; justify-content:space-between; }
1847
+ .diya-root .diya-card-header > div:first-child { min-width:0; }
1848
+ .diya-root .diya-card-title { font-size:var(--diya-text-title); line-height:var(--diya-leading-tight); letter-spacing:-.015em; font-weight:600; margin:0; overflow-wrap:anywhere; }
1849
+ .diya-root .diya-card-header p:not(:where([class*='diya-'], .diya-card-header [class*='diya-'] *)) { color:var(--diya-color-muted); font-size:var(--diya-text-body); line-height:1.6; margin:10px 0 0; }
1850
+ .diya-root .diya-card-tag { margin-bottom:16px; }
1851
+ .diya-root .diya-card-menu { flex-shrink:0; }
1852
+ .diya-root .diya-card-menu .diya-button { width:32px; height:32px; min-height:32px; padding:6px; }
1853
+ .diya-root .diya-card-content { margin-top:24px; }
1854
+ /* A List inside a Card or Drawer lines up with its title, edge to edge, and shares
1855
+ its material instead of laying a second pane of Glass on it. Rows that are buttons
1856
+ keep their inset, since their hover fill needs it. */
1857
+ .diya-root :is(.diya-card-content, .diya-drawer-body) .diya-list { max-width:none; background:transparent; backdrop-filter:none; }
1858
+ .diya-root :is(.diya-card-content, .diya-drawer-body) .diya-list > li > div.diya-list-row { padding-inline:0; }
1859
+ .diya-root .diya-card-footer { display:flex; align-items:center; flex-wrap:wrap; gap:10px; margin-top:24px; }
1860
+ .diya-root .diya-card-footer[data-divider='true'] { border-top:1px solid var(--diya-color-line); padding-top:20px; }
1861
+ .diya-root .diya-card-media { aspect-ratio:2/1; overflow:hidden; }
1862
+ .diya-root .diya-card-media img:not(:where([class*='diya-'], .diya-card-media [class*='diya-'] *)) { width:100%; height:100%; object-fit:cover; display:block; }
1863
+
1864
+ .diya-root .diya-card[data-shadow="true"] { box-shadow:var(--diya-shadow-raised); }
1865
+
1866
+
1867
+ /* dialog/Dialog.css: portable component rules. */
1868
+ .diya-root .diya-dialog { padding: 0; text-align: left; }
1869
+ .diya-root .diya-dialog-layout { margin: 0; padding: 28px; display: flex; flex-direction: column; gap: 28px; }
1870
+ .diya-root .diya-dialog-heading { display: flex; align-items: flex-start; gap: 20px; }
1871
+ .diya-root .diya-dialog-heading > div { flex: 1; min-width: 0; overflow-wrap:anywhere; }
1872
+ .diya-root .diya-dialog-heading h3 { font-size: var(--diya-text-title); line-height: 28px; letter-spacing: -.025em; }
1873
+ .diya-root .diya-dialog .diya-dialog-close { flex: 0 0 32px; margin: -2px -6px 0 0; }
1874
+ .diya-root .diya-dialog .diya-dialog-description { margin: 8px 0 0; line-height: 1.6; }
1875
+ .diya-root .diya-dialog .diya-dialog-content { margin: 0; display: grid; gap: 20px; }
1876
+ .diya-root .diya-dialog-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap:wrap; gap: 12px; }
1877
+ .diya-root :is(.diya-dialog-actions, .diya-drawer-modal > footer) .diya-button { min-width:0; max-width:100%; white-space:normal; overflow-wrap:anywhere; padding-block:4px; }
1878
+ .diya-root .diya-dialog-actions[data-divider] { padding-top: 20px; border-top: 1px solid var(--diya-color-line); }
1879
+ .diya-root .diya-dialog-close:focus-visible { outline: 2px solid var(--diya-color-text); outline-offset: 3px; }
1880
+ @media (max-width: 600px) {
1881
+ .diya-root .diya-dialog-layout { padding: 24px; gap: 24px; }
1882
+ }
1883
+ .diya-root .diya-dialog .diya-text-field { width: 100%; max-width: none; }
1884
+
1885
+
1886
+ /* table/Table.css: portable component rules. */
1887
+ .diya-root .diya-table { --diya-internal-table-surface:var(--diya-color-raised); }
1888
+ /* Row hover: Light shades the row with the hover token; Dark lifts it a little toward the text,
1889
+ since on near-black there is no room left to sink. The Vivid status tags still read at 4.5:1. */
1890
+ .diya-root .diya-table { --diya-internal-table-hover:color-mix(in srgb,var(--diya-color-text) 4.5%,var(--diya-internal-table-surface)); }
1891
+ .diya-root[data-theme='light'] .diya-table { --diya-internal-table-hover:color-mix(in srgb,var(--diya-color-hover) 60%,var(--diya-internal-table-surface)); }
1892
+ @media (prefers-color-scheme: light) {
1893
+ .diya-root[data-theme='system'] .diya-table { --diya-internal-table-hover:color-mix(in srgb,var(--diya-color-hover) 60%,var(--diya-internal-table-surface)); }
1894
+ }
1895
+ /* Selected rows: a text-colored tint, calmer in Dark. The checkbox and the selection bar carry the state too.
1896
+ Status tags keep the table surface under their own tint, so they read as on a resting row. */
1897
+ .diya-root .diya-table { --diya-internal-table-selected-weight:12%; }
1898
+ .diya-root[data-theme='light'] .diya-table { --diya-internal-table-selected-weight:10%; }
1899
+ @media (prefers-color-scheme: light) {
1900
+ .diya-root[data-theme='system'] .diya-table { --diya-internal-table-selected-weight:10%; }
1901
+ }
1902
+ .diya-root .diya-table tbody tr[data-selected] .diya-tag:is([data-color='success'], [data-color='warning'], [data-color='error'], [data-color='info']) {
1903
+ background:linear-gradient(var(--diya-internal-tag-surface), var(--diya-internal-tag-surface)), var(--diya-internal-table-surface);
1904
+ }
1905
+ .diya-root .diya-table { width:100%; min-width:0; color:var(--diya-color-text); font-size:var(--diya-text-caption); container-type:inline-size; container-name:diya-table; }
1906
+ .diya-root .diya-table-toolbar { display:flex; align-items:center; gap:16px; margin-bottom:20px; }
1907
+ .diya-root .diya-table-toolbar .diya-search { margin-left:auto; width:240px; max-width:100%; }
1908
+ .diya-root .diya-table-scroll { position:relative; overflow:auto; border:1px solid var(--diya-color-line); border-radius:var(--diya-radius-surface); }
1909
+ .diya-root .diya-table-scroll:focus-visible { outline:2px solid var(--diya-color-text); outline-offset:4px; }
1910
+ .diya-root .diya-table table:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { width:100%; border-collapse:separate; border-spacing:0; text-align:left; }
1911
+ .diya-root .diya-table th:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { background:var(--diya-internal-table-surface); color:var(--diya-color-muted); font-size:var(--diya-text-caption); font-weight:500; height:48px; }
1912
+ .diya-root .diya-table th:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)),
1913
+ .diya-root .diya-table td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { padding:12px 16px; box-sizing:border-box; vertical-align:middle; }
1914
+ .diya-root .diya-table td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { height:60px; border-top:1px solid color-mix(in srgb, var(--diya-color-line) 70%, transparent); background:var(--diya-internal-table-surface); }
1915
+ .diya-root .diya-table[data-density='compact'] td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { height:48px; padding-top:6px; padding-bottom:6px; }
1916
+ .diya-root .diya-table tbody tr:hover td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { background:var(--diya-internal-table-hover); }
1917
+ .diya-root .diya-table tbody tr[data-selected] td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { background:var(--diya-color-selected); }
1918
+ /* Data figures are tabular, so a column of amounts lines up digit for digit. */
1919
+ .diya-root .diya-table .diya-table-numeric { text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
1920
+ .diya-root .diya-table-sort { display:inline-flex; align-items:center; gap:8px; padding:4px 0; border:0; background:none; color:inherit; font:inherit; cursor:pointer; }
1921
+ .diya-root .diya-table-sort span { font-size:var(--diya-text-caption); }
1922
+ .diya-root .diya-table-sort:focus-visible { outline:2px solid var(--diya-color-text); outline-offset:4px; border-radius:3px; }
1923
+ .diya-root .diya-table-scroll :is(button, input, a) { scroll-margin:8px 24px; }
1924
+ .diya-root .diya-table .diya-table-check { width:48px; padding-right:8px; }
1925
+ .diya-root .diya-table input[type='checkbox']:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { width:16px; height:16px; margin:0; accent-color:var(--diya-color-text); cursor:pointer; vertical-align:middle; }
1926
+ .diya-root .diya-table .diya-table-actions { width:56px; padding:8px; position:sticky; right:0; box-shadow:-1px 0 var(--diya-color-line); }
1927
+ .diya-root .diya-table .diya-pagination { margin-top:20px; }
1928
+ .diya-root .diya-table-bulk { display:flex; flex-wrap:wrap; align-items:center; gap:12px; padding:12px 16px; margin-bottom:8px; border:1px solid var(--diya-color-line); border-radius:calc(12px * var(--diya-corner-scale, 1)); background:var(--diya-color-selected); }
1929
+ .diya-root .diya-table-bulk > span { margin-right:auto; }
1930
+ .diya-root .diya-table .diya-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
1931
+ .diya-root .diya-table-empty { padding:40px 16px; text-align:center; }
1932
+ .diya-root .diya-table-empty p { color:var(--diya-color-muted); margin:8px 0 20px; }
1933
+ .diya-root .diya-table-project { display:block; font-weight:500; white-space:nowrap; }
1934
+ .diya-root .diya-table-owner { color:var(--diya-color-muted); white-space:nowrap; }
1935
+ @media(max-width:600px) { .diya-root .diya-table-toolbar { flex-wrap:wrap; } .diya-root .diya-table-toolbar .diya-search { width:100%; } }
1936
+ .diya-root .diya-table-toolbar { gap:16px; align-items:flex-start; margin-bottom:16px; }
1937
+ .diya-root .diya-table-filters { display:flex; align-items:center; flex-wrap:wrap; gap:8px; flex:1; min-width:0; }
1938
+ .diya-root .diya-table-filter > span > button,
1939
+ .diya-root
1940
+ .diya-table-filter button[aria-haspopup] { height:36px; min-height:36px; border-radius:999px; padding:0 12px; gap:10px; font-size:var(--diya-text-body); background:transparent; box-shadow:none; }
1941
+ .diya-root .diya-table-filter button[aria-haspopup]::after { content:''; width:6px; height:6px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:translateY(-2px) rotate(45deg); flex-shrink:0; opacity:.75; }
1942
+ .diya-root .diya-table-filter[data-active] button[aria-haspopup] { background:var(--diya-color-selected); border-color:var(--diya-color-muted); }
1943
+ .diya-root .diya-table-clear { height:36px; padding:0 8px; background:none; border:0; color:var(--diya-color-muted); font:inherit; font-size:var(--diya-text-caption); cursor:pointer; text-decoration:underline; text-underline-offset:3px; }
1944
+ .diya-root .diya-table-clear:hover { color:var(--diya-color-text); }
1945
+ .diya-root .diya-table-clear:focus-visible { outline:2px solid var(--diya-color-text); outline-offset:2px; }
1946
+ .diya-root .diya-table-toolbar .diya-search { flex-shrink:0; }
1947
+ .diya-root .diya-table-toolbar .diya-search .diya-text-field-control { height:var(--diya-internal-field-height); min-height:var(--diya-internal-field-height); box-sizing:border-box; }
1948
+ .diya-root .diya-table-toolbar .diya-search input { height:calc(var(--diya-internal-field-height) - 2px); }
1949
+ .diya-root .diya-table[data-sticky] .diya-table-check { min-width:48px; max-width:48px; }
1950
+ .diya-root .diya-table[data-sticky] .diya-table-actions { z-index:2; }
1951
+ .diya-root .diya-table-skeleton { display:block; height:14px; width:70%; min-width:16px; border-radius:calc(4px * var(--diya-corner-scale, 1)); background:var(--diya-color-selected); margin:8px 0; }
1952
+ .diya-root .diya-table-loading,
1953
+ .diya-root .diya-table-secondary { color:var(--diya-color-muted); font-size:var(--diya-text-caption); }
1954
+ .diya-root .diya-table-secondary { display:block; margin-top:4px; }
1955
+ .diya-root .diya-table-person,
1956
+ .diya-root .diya-table-progress { display:inline-flex; align-items:center; gap:10px; white-space:nowrap; }
1957
+ .diya-root .diya-table-progress progress { width:72px; height:6px; accent-color:var(--diya-color-text); }
1958
+ .diya-root .diya-table-resource { border:0; padding:0; background:none; color:var(--diya-color-text); font:inherit; text-decoration:underline; text-underline-offset:3px; white-space:nowrap; cursor:pointer; }
1959
+
1960
+
1961
+ .diya-root .diya-table[data-sticky] tbody tr[data-selected] td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { background:color-mix(in srgb,var(--diya-color-text) calc(var(--diya-internal-table-selected-weight) + 2%),var(--diya-internal-table-surface)); }
1962
+ .diya-root .diya-table time:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { white-space:nowrap; }
1963
+ .diya-root .diya-table .diya-metric-number { font-size:var(--diya-text-body); }
1964
+ .diya-root .diya-table { --diya-internal-table-rule:color-mix(in srgb,var(--diya-color-line) 62%,transparent); }
1965
+ .diya-root .diya-table table:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { table-layout:fixed; }
1966
+ .diya-root .diya-table th:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { height:44px; background:color-mix(in srgb,var(--diya-color-text) 3%,var(--diya-internal-table-surface)); }
1967
+ .diya-root .diya-table th:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)),
1968
+ .diya-root .diya-table td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { padding-left:16px; padding-right:16px; }
1969
+ .diya-root .diya-table td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { border-top-color:var(--diya-internal-table-rule); height:60px; }
1970
+ .diya-root .diya-table .diya-table-actions { position:static; box-shadow:none; padding:8px; text-align:center; }
1971
+ .diya-root .diya-table[data-sticky] .diya-table-actions { position:sticky; right:0; box-shadow:-1px 0 var(--diya-color-line); }
1972
+ .diya-root .diya-table tbody tr[data-selected] td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) { background:color-mix(in srgb,var(--diya-color-text) var(--diya-internal-table-selected-weight),var(--diya-internal-table-surface)); }
1973
+ .diya-root .diya-table-sort { gap:6px; line-height:20px; }
1974
+ .diya-root .diya-table-sort svg { opacity:.45; flex-shrink:0; }
1975
+ .diya-root .diya-table th[aria-sort='ascending'] .diya-table-sort,
1976
+ .diya-root .diya-table th[aria-sort='descending'] .diya-table-sort { color:var(--diya-color-text); }
1977
+ .diya-root .diya-table th[aria-sort='ascending'] svg:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)),
1978
+ .diya-root .diya-table th[aria-sort='descending'] svg:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)),
1979
+ .diya-root .diya-table-sort:hover svg { opacity:1; }
1980
+ .diya-root .diya-table-sort:disabled { cursor:default; }
1981
+ .diya-root .diya-table .diya-pagination { display:grid; grid-template-columns:1fr auto 1fr; gap:16px; margin-top:16px; }
1982
+ .diya-root .diya-table .diya-pagination-count { justify-self:start; }
1983
+ .diya-root .diya-table .diya-pagination-size { justify-self:end; }
1984
+ .diya-root .diya-table .diya-pagination-size .diya-select-field { width:84px; }
1985
+ .diya-root .diya-table .diya-metric { gap:4px; align-items:flex-end; }
1986
+ .diya-root .diya-table .diya-metric[data-size='small'] .diya-metric-number { font-size:var(--diya-text-body); letter-spacing:0; }
1987
+ .diya-root .diya-table .diya-metric-comparison { font-size:var(--diya-text-caption); }
1988
+ .diya-root .diya-table-progress { font-size:var(--diya-text-caption); font-variant-numeric:tabular-nums; }
1989
+ .diya-root .diya-table-progress progress { appearance:none; border:0; border-radius:10px; overflow:hidden; background:var(--diya-color-selected); }
1990
+ .diya-root .diya-table-progress progress::-webkit-progress-bar { background:var(--diya-color-selected); border-radius:10px; }
1991
+ .diya-root .diya-table-progress progress::-webkit-progress-value { background:var(--diya-color-text); border-radius:10px; }
1992
+ .diya-root .diya-table-progress progress::-moz-progress-bar { background:var(--diya-color-text); border-radius:10px; }
1993
+ .diya-root .diya-table-empty { min-height:280px; display:flex; flex-direction:column; align-items:center; justify-content:center; }
1994
+ .diya-root .diya-table-empty strong { font-size:var(--diya-text-large); font-weight:500; }
1995
+ .diya-root .diya-table-empty p { font-size:var(--diya-text-body); max-width:300px; line-height:1.6; }
1996
+ .diya-root .diya-table-scroll { scrollbar-width:thin; scrollbar-color:var(--diya-color-muted) var(--diya-internal-table-surface); }
1997
+ .diya-root .diya-table-resource:focus-visible { outline:2px solid var(--diya-color-text); outline-offset:4px; border-radius:2px; }
1998
+ @media(max-width:1100px) { .diya-root .diya-table .diya-pagination { display:flex; justify-content:space-between; } }
1999
+ @media(max-width:600px) { .diya-root .diya-table .diya-pagination nav { width:100%; order:3; justify-content:center; } }
2000
+ .diya-root .diya-table[aria-busy='true'] .diya-table-sort { opacity:.5; }
2001
+ .diya-root .diya-table-progress { display:inline-grid; grid-template-columns:72px 34px; gap:10px; width:116px; }
2002
+ .diya-root .diya-table-progress progress { width:72px; min-width:72px; max-width:72px; }
2003
+ .diya-root .diya-table-progress > span { text-align:right; }
2004
+ .diya-root
2005
+ .diya-table[data-sticky] .diya-table-actions {
2006
+ background:color-mix(in srgb,var(--diya-internal-table-surface) 78%,transparent);
2007
+ backdrop-filter:blur(16px);
2008
+ }
2009
+ .diya-root
2010
+ .diya-table[data-sticky] tbody tr:hover > .diya-table-actions {
2011
+ background:color-mix(in srgb,var(--diya-internal-table-surface) 85%,transparent);
2012
+ }
2013
+ .diya-root
2014
+ .diya-table[data-sticky] tbody tr[data-selected] > .diya-table-actions {
2015
+ background:color-mix(in srgb,var(--diya-color-text) var(--diya-internal-table-selected-weight),color-mix(in srgb,var(--diya-internal-table-surface) 80%,transparent));
2016
+ }
2017
+ @media(prefers-reduced-transparency:reduce) {
2018
+ .diya-root
2019
+ .diya-table[data-sticky] .diya-table-actions { background:var(--diya-internal-table-surface); backdrop-filter:none; }
2020
+ }
2021
+ .diya-root .diya-table .diya-table-expander { width:40px; padding:6px; }
2022
+ .diya-root .diya-table-expander button { display:grid; place-items:center; width:28px; height:32px; padding:0; border:0; border-radius:calc(6px * var(--diya-corner-scale, 1)); color:var(--diya-color-muted); background:transparent; cursor:pointer; }
2023
+ .diya-root .diya-table-expander button:hover { background:var(--diya-color-selected); color:var(--diya-color-text); }
2024
+ .diya-root .diya-table-expander button[aria-expanded='true'] svg { transform:rotate(90deg); }
2025
+ .diya-root .diya-table-expander button:focus-visible { outline:2px solid var(--diya-color-text); outline-offset:2px; }
2026
+ .diya-root .diya-table .diya-table-detail-row > td { padding:24px 24px 28px 56px; background:color-mix(in srgb,var(--diya-color-text) 3%,var(--diya-internal-table-surface)); }
2027
+ .diya-root .diya-table .diya-table-scroll { background:var(--diya-internal-table-surface); border-color:var(--diya-internal-table-rule); box-shadow:var(--diya-internal-table-elevation); }
2028
+ @media(forced-colors:active) { .diya-root .diya-table { --diya-internal-table-surface:Canvas; } }
2029
+
2030
+ .diya-root .diya-table-toolbar { align-items:center; justify-content:space-between; flex-wrap:wrap; }
2031
+ .diya-root .diya-table-title { margin:0; font-size:var(--diya-text-title); line-height:1.4; font-weight:500; letter-spacing:-.02em; }
2032
+ .diya-root .diya-table-tools { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:12px; margin-left:auto; min-width:0; }
2033
+ .diya-root .diya-table-tools .diya-search { margin-left:0; }
2034
+ @media(max-width:600px) {
2035
+ .diya-root .diya-table-tools { width:100%; }
2036
+ .diya-root .diya-table-tools .diya-search { width:100%; }
2037
+ }
2038
+ .diya-root .diya-table .diya-table-toolbar > .diya-table-title { margin:0; line-height:36px; }
2039
+
2040
+
2041
+ /* site-header/SiteHeader.css: portable component rules. */
2042
+ .diya-root .diya-site-header-container {
2043
+ --diya-internal-site-search-min-width:160px;
2044
+ --diya-internal-site-brand-nav-gap:32px;
2045
+ --diya-internal-site-header-spacer:24px;
2046
+ --diya-internal-site-utilities-gap:16px;
2047
+ --diya-internal-site-full-inset:24px;
2048
+ --diya-internal-site-compact-inset:16px;
2049
+ --diya-internal-site-compact-gap:8px;
2050
+ container-type:inline-size;
2051
+ width:100%;
2052
+ }
2053
+ .diya-root .diya-site-header { color:var(--diya-color-text); border-bottom:1px solid var(--diya-internal-header-border); }
2054
+ .diya-root .diya-site-header-row {
2055
+ display:flex;
2056
+ flex-wrap:nowrap;
2057
+ align-items:center;
2058
+ min-height:64px;
2059
+ column-gap:var(--diya-internal-site-utilities-gap);
2060
+ row-gap:8px;
2061
+ padding:12px var(--diya-internal-site-full-inset);
2062
+ }
2063
+ .diya-root .diya-site-identity { display:flex; align-items:center; gap:var(--diya-internal-site-brand-nav-gap); min-width:0; flex:0 0 auto; margin-inline-end:calc(var(--diya-internal-site-header-spacer) - var(--diya-internal-site-utilities-gap)); }
2064
+ .diya-root .diya-site-brand { display:inline-flex; align-items:center; gap:8px; min-width:0; padding:0; border:0; background:transparent; font:inherit; font-size:var(--diya-text-large); line-height:24px; letter-spacing:-.01em; font-weight:600; color:inherit; flex-shrink:0; text-align:left; white-space:nowrap; }
2065
+ .diya-root button.diya-site-brand, .diya-root a.diya-site-brand { cursor:pointer; }
2066
+ .diya-root .diya-site-nav { display:flex; align-items:center; gap:4px; min-width:0; flex-shrink:0; }
2067
+ .diya-root .diya-site-nav[hidden], .diya-root .diya-site-menu-toggle[hidden] { display:none; }
2068
+ .diya-root .diya-site-nav :is(button, a),
2069
+ .diya-root .diya-site-mobile-nav :is(button, a) { display:inline-flex; align-items:center; min-height:40px; padding:0 12px; border:0; background:transparent; color:var(--diya-color-muted); font:inherit; font-size:var(--diya-text-body); line-height:20px; font-weight:400; border-radius:calc(8px * var(--diya-corner-scale, 1)); text-decoration:none; white-space:nowrap; cursor:pointer; }
2070
+ .diya-root .diya-site-nav :is(button, a):not(:disabled):hover,
2071
+ .diya-root .diya-site-mobile-nav :is(button, a):not(:disabled):hover { color:var(--diya-color-text); background:var(--diya-color-hover); }
2072
+ .diya-root .diya-site-nav :is(button, a)[aria-current],
2073
+ .diya-root .diya-site-mobile-nav :is(button, a)[aria-current] { color:var(--diya-color-text); background:var(--diya-color-selected); }
2074
+ .diya-root .diya-site-nav button:disabled, .diya-root .diya-site-mobile-nav button:disabled { opacity:.5; cursor:not-allowed; }
2075
+ .diya-root .diya-site-utilities { margin-inline-start:auto; display:flex; align-items:center; min-width:0; flex:0 0 auto; gap:var(--diya-internal-site-utilities-gap); }
2076
+ .diya-root .diya-site-search { width:240px; min-width:var(--diya-internal-site-search-min-width); margin-inline-start:auto; flex:0 1 auto; }
2077
+ .diya-root .diya-site-header-container:not([data-stacked='true']) .diya-site-header-row:has(> .diya-site-search) > .diya-site-utilities { margin-inline-start:0; }
2078
+ .diya-root .diya-site-tools { display:flex; align-items:center; flex-shrink:0; gap:4px; }
2079
+ .diya-root .diya-site-avatar { display:flex; align-items:center; justify-content:center; flex-shrink:0; }
2080
+ .diya-root .diya-site-account { display:flex; align-items:center; gap:8px; }
2081
+ .diya-root .diya-site-header .diya-button[data-icon-only='true'] { width:40px; height:40px; min-height:40px; flex-shrink:0; padding:0; }
2082
+ .diya-root .diya-site-tools .diya-button > svg { width:20px; height:20px; }
2083
+ .diya-root .diya-site-tools .diya-button[data-icon-only='true'][data-variant='quiet'] { color:var(--diya-color-muted); }
2084
+ .diya-root .diya-site-tools .diya-button[data-icon-only='true'][data-variant='quiet']:not(:disabled):hover { color:var(--diya-color-text); }
2085
+ .diya-root .diya-site-avatar .diya-button[data-icon-only='true'] { border-radius:50%; }
2086
+ .diya-root .diya-site-header .diya-site-search .diya-text-field-control { height:40px; min-height:40px; box-sizing:border-box; }
2087
+ .diya-root .diya-site-search input { font-size:max(var(--diya-internal-field-min, 0px), var(--diya-text-body)); line-height:20px; }
2088
+ .diya-root .diya-site-header .diya-site-menu-toggle { display:none; }
2089
+ .diya-root .diya-site-brand:focus-visible,
2090
+ .diya-root .diya-site-nav :is(button, a):focus-visible,
2091
+ .diya-root .diya-site-mobile-nav :is(button, a):focus-visible { outline:2px solid var(--diya-color-text); outline-offset:3px; }
2092
+ .diya-root .diya-site-header-container[data-compact='true'] .diya-site-header-row { flex-wrap:wrap; }
2093
+ .diya-root .diya-site-header-container[data-compact='true'] .diya-site-header .diya-site-menu-toggle { display:inline-flex; }
2094
+ .diya-root .diya-site-header-container[data-compact='true'] .diya-site-nav { flex:0 0 100%; width:100%; align-items:stretch; flex-direction:column; gap:4px; }
2095
+ .diya-root .diya-site-header-container[data-compact='true'] .diya-site-nav :is(button, a) { min-width:0; max-width:100%; text-align:left; white-space:normal; overflow-wrap:anywhere; padding-block:8px; }
2096
+ .diya-root .diya-site-header-container[data-compact='true']:not([data-stacked='true']) .diya-site-search { flex:1 1 var(--diya-internal-site-search-min-width); max-width:240px; }
2097
+ .diya-root .diya-site-header-container[data-stacked='true'] .diya-site-header-row { flex-wrap:wrap; column-gap:var(--diya-internal-site-compact-gap); padding-inline:var(--diya-internal-site-compact-inset); }
2098
+ .diya-root .diya-site-header-container[data-stacked='true'] .diya-site-identity { margin-inline-end:0; }
2099
+ .diya-root .diya-site-header-container[data-stacked='true'] .diya-site-utilities { gap:var(--diya-internal-site-compact-gap); }
2100
+ .diya-root .diya-site-header-container[data-stacked='true'] .diya-site-search { flex:0 0 100%; width:100%; min-width:0; }
2101
+ /* Only a caller's measured utility overflow creates another row. */
2102
+ .diya-root .diya-site-header-container[data-tools-wrap='true'] .diya-site-header-row { flex-wrap:wrap; }
2103
+ .diya-root .diya-site-header-container[data-tools-wrap='true'] .diya-site-utilities { display:contents; }
2104
+ .diya-root .diya-site-header-container[data-tools-wrap='true'] .diya-site-avatar { margin-inline-start:auto; }
2105
+ .diya-root .diya-site-header-container[data-tools-wrap='true'] .diya-site-tools { flex:0 0 100%; width:100%; flex-wrap:wrap; justify-content:flex-end; }
2106
+
2107
+ /* workflow/WorkflowPatterns.css: portable component rules. */
2108
+ .diya-root .diya-workflow-surface { background:var(--diya-color-raised,var(--diya-color-surface)); color:var(--diya-color-text); border:1px solid var(--diya-color-line); border-radius:var(--diya-radius-surface); }
2109
+ .diya-root .diya-workflow-surface h3:not(:where([class*='diya-'], .diya-workflow-surface [class*='diya-']:not(.diya-workflow-surface, .diya-drawer-body, .diya-wizard-body) *)) { margin:0; font-size:var(--diya-text-title); font-weight:600; letter-spacing:-.025em; }
2110
+ /* A surface's own paragraphs (its description, FileUpload's error) are pinned by place, so they hold
2111
+ however deep the surface sits; plain paragraphs in your content take the same style. */
2112
+ .diya-root .diya-workflow-surface p:where(.diya-workflow-surface > *, .diya-workflow-surface > header > *, .diya-drawer-modal > header > div > *, .diya-wizard-body > form > header > *, .diya-upload-drop > *, .diya-content-state > div > *),
2113
+ .diya-root .diya-workflow-surface p:not(:where([class*='diya-'], .diya-workflow-surface [class*='diya-']:not(.diya-workflow-surface, .diya-drawer-body, .diya-wizard-body) *)) { color:var(--diya-color-muted); font-size:var(--diya-text-body); line-height:1.6; margin:8px 0 0; }
2114
+ .diya-root .diya-workflow-symbol { display:grid; place-items:center; width:52px; height:52px; border-radius:50%; background:var(--diya-color-hover); margin:0 auto 18px; }
2115
+ .diya-root .diya-workflow-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
2116
+ .diya-root .diya-upload { max-width:600px; margin:auto; padding:20px; }
2117
+ .diya-root .diya-upload-drop { border:1px dashed var(--diya-color-line); border-radius:calc(12px * var(--diya-corner-scale, 1)); text-align:center; padding:32px 20px; }
2118
+ .diya-root .diya-upload-drop[data-dragging='true'] { background:var(--diya-color-hover); border-color:var(--diya-color-text); }
2119
+ .diya-root .diya-upload-drop .diya-button { margin-top:20px; }.diya-root .diya-upload-drop small { display:block; margin-top:16px; color:var(--diya-color-muted); font-size:var(--diya-text-caption); }
2120
+ .diya-root .diya-upload-files { margin:16px 0 0; padding:0; list-style:none; }.diya-root .diya-upload-files li { display:flex; align-items:center; gap:12px; padding:12px 0; border-bottom:1px solid var(--diya-color-line); }.diya-root .diya-upload-files li:last-child { border:0; }.diya-root .diya-upload-files li>span { flex:1; min-width:0; }.diya-root .diya-upload-files strong { display:block; font-size:var(--diya-text-body); overflow-wrap:anywhere; font-weight:500; }.diya-root .diya-upload-files small { display:block; color:var(--diya-color-muted); font-size:var(--diya-text-caption); margin-top:4px; }
2121
+ .diya-root .diya-workflow-surface .diya-workflow-error { color:var(--diya-color-error); }
2122
+ .diya-root :is(.diya-project-form-title, .diya-upload-title) { margin:0; font-size:var(--diya-text-title); font-weight:600; letter-spacing:-0.015em; line-height:var(--diya-leading-tight); }
2123
+ .diya-root .diya-project-form { max-width:520px; margin:auto; padding:24px; display:grid; gap:24px; }.diya-root .diya-project-form > footer { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:12px; padding-top:8px; }
2124
+ .diya-root .diya-workflow-eyebrow { font-size:var(--diya-text-caption); letter-spacing:0; color:var(--diya-color-muted); display:block; margin-bottom:16px; }
2125
+ .diya-root .diya-drawer-modal>header { display:flex; gap:16px; align-items:flex-start; padding:24px; border-bottom:1px solid var(--diya-color-line); }.diya-root .diya-drawer-body { padding:24px; }.diya-root .diya-drawer-body h4:not(:where([class*='diya-'], .diya-drawer-body [class*='diya-'] *)) { font-size:var(--diya-text-title); margin:0; }.diya-root .diya-drawer-body dl:not(:where([class*='diya-'], .diya-drawer-body [class*='diya-'] *)) { margin:24px 0 0; }.diya-root .diya-drawer-body dl div:not(:where([class*='diya-'], .diya-drawer-body [class*='diya-'] *)) { display:flex; justify-content:space-between; gap:16px; padding:12px 0; border-bottom:1px solid var(--diya-color-line); font-size:var(--diya-text-body); }.diya-root .diya-drawer-body dt:not(:where([class*='diya-'], .diya-drawer-body [class*='diya-'] *)) { color:var(--diya-color-muted); }.diya-root .diya-drawer-body dd:not(:where([class*='diya-'], .diya-drawer-body [class*='diya-'] *)) { margin:0; }.diya-root .diya-drawer-modal > footer { display:flex; justify-content:flex-end; gap:12px; padding:20px 24px; border-top:1px solid var(--diya-color-line); }
2126
+ .diya-root .diya-drawer-modal { position:fixed; inset:0 0 0 auto; width:min(440px,100vw); height:100dvh; max-height:100dvh; max-width:100vw; padding:0; margin:0; border-radius:calc(16px * var(--diya-corner-scale, 1)) 0 0 calc(16px * var(--diya-corner-scale, 1)); overflow:hidden; box-shadow:var(--diya-shadow-raised); }.diya-root .diya-drawer-modal[data-side='left'] { inset:0 auto 0 0; border-radius:0 calc(16px * var(--diya-corner-scale, 1)) calc(16px * var(--diya-corner-scale, 1)) 0; }.diya-root .diya-drawer-modal::backdrop { background:var(--diya-color-scrim, #0008); backdrop-filter:blur(5px); }.diya-root .diya-drawer-modal>header>div { flex:1; min-width:0; overflow-wrap:anywhere; }.diya-root .diya-drawer-modal>header>.diya-button { flex-shrink:0; }.diya-root .diya-drawer-modal[open] { display:flex; flex-direction:column; }.diya-root .diya-drawer-modal > footer { margin-top:auto; flex-wrap:wrap; }
2127
+ .diya-root .diya-content-state { max-width:600px; margin:auto; padding:44px 32px; text-align:center; }.diya-root .diya-content-state p { max-width:360px; margin:10px auto 24px; }
2128
+ .diya-root .diya-workflow-surface :is(.diya-content-state-title, .diya-wizard-title) { margin:0; font-size:var(--diya-text-title); font-weight:600; letter-spacing:-.015em; line-height:var(--diya-leading-tight); }
2129
+ @media(max-width:700px) {.diya-root .diya-project-form { padding:20px; } }
2130
+
2131
+ .diya-root .diya-project-form{max-width:640px;width:100%}.diya-root .diya-project-form .diya-text-field,
2132
+ .diya-root .diya-project-form .diya-combobox,
2133
+ .diya-root .diya-project-form .diya-date-field{max-width:none;width:100%}.diya-root .diya-form-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:24px}
2134
+ .diya-root .diya-wizard{max-width:720px;margin:auto;width:100%;padding:28px;container-type:inline-size;container-name:diya-wizard}.diya-root .diya-wizard-steps{list-style:none;display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px;padding:0 0 24px;margin:0 0 28px;border-bottom:1px solid var(--diya-color-line)}.diya-root .diya-wizard-steps li{display:flex;align-items:center;gap:10px;min-width:0;max-width:100%;color:var(--diya-color-muted);font-size:var(--diya-text-body)}.diya-root .diya-wizard-steps li>span{display:grid;place-items:center;flex-shrink:0;width:28px;height:28px;border:1px solid var(--diya-color-line);border-radius:50%;font-size:var(--diya-text-caption)}.diya-root .diya-wizard-steps strong{min-width:0;font-weight:500;overflow-wrap:anywhere}.diya-root .diya-wizard-steps li[aria-current],
2135
+ .diya-root .diya-wizard-steps li[data-complete='true']{color:var(--diya-color-text)}.diya-root .diya-wizard-steps li[aria-current]>span{background:var(--diya-color-accent);color:var(--diya-color-accent-text,var(--diya-color-raised))}.diya-root .diya-wizard-body > form{display:grid;gap:24px}.diya-root .diya-wizard-body .diya-text-field,
2136
+ .diya-root .diya-wizard-body .diya-combobox{max-width:none}.diya-root .diya-wizard-body{flex:1;min-width:0}.diya-root .diya-wizard-body > :where(form) > footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-top:8px}.diya-root .diya-wizard-summary{font-size:var(--diya-text-caption);color:var(--diya-color-muted)}.diya-root .diya-wizard-review{margin:0;display:grid;gap:16px}.diya-root .diya-wizard-review>div{display:grid;grid-template-columns:90px 1fr;gap:20px;font-size:var(--diya-text-body)}.diya-root .diya-wizard-review dt{color:var(--diya-color-muted)}.diya-root .diya-wizard-review dd{margin:0;overflow-wrap:anywhere}.diya-root .diya-wizard-complete{text-align:center;padding:32px 0}.diya-root .diya-wizard-complete .diya-button{margin-top:24px}.diya-root .diya-wizard[data-orientation='vertical']{display:flex;flex-wrap:wrap;gap:28px}.diya-root .diya-wizard[data-orientation='vertical'] .diya-wizard-steps{flex:0 0 140px;flex-direction:column;justify-content:flex-start;border-bottom:0;border-right:1px solid var(--diya-color-line);padding:0 24px 0 0;margin:0;gap:28px}
2137
+ @media(max-width:700px){.diya-root .diya-wizard{padding:20px}.diya-root .diya-wizard-steps{gap:12px}.diya-root .diya-wizard-steps li{gap:6px}}
2138
+ /* A 140px rail plus 28px gap leaves at least 232px for fields before stacking. */
2139
+ @container diya-wizard (max-width:400px) {
2140
+ /* Step labels are compact labels in a narrow wizard, so the steps stay on one row. */
2141
+ .diya-root .diya-wizard-steps li{font-size:var(--diya-text-caption)}
2142
+ .diya-root .diya-wizard[data-orientation='vertical'] .diya-wizard-steps{flex-basis:100%;flex-direction:row;justify-content:space-between;border-right:0;border-bottom:1px solid var(--diya-color-line);padding:0 0 20px;gap:12px}
2143
+ .diya-root .diya-wizard[data-orientation='vertical'] .diya-wizard-body{flex-basis:100%}
2144
+ }
2145
+ .diya-root .diya-workflow-surface .diya-text-field-control input,
2146
+ .diya-root
2147
+ .diya-workflow-surface .diya-select-control select { height:calc(var(--diya-internal-field-height) - 2px); font-size:var(--diya-internal-field-font-size); }
2148
+ .diya-root .diya-workflow-surface .diya-date-trigger,
2149
+ .diya-root
2150
+ .diya-workflow-surface .diya-combobox-control { min-height:40px; font-size:var(--diya-text-body); }
2151
+ .diya-root .diya-workflow-surface .diya-combobox-control input { height:24px; font-size:max(var(--diya-internal-field-min, 0px), var(--diya-text-body)); }
2152
+ .diya-root .diya-workflow-surface :is(.diya-date-trigger,.diya-combobox-control,.diya-text-field-control,.diya-select-control) { border-radius:var(--diya-radius-control, calc(10px * var(--diya-corner-scale, 1))); }
2153
+ .diya-root .diya-workflow-surface :is(.diya-combobox,.diya-date-field)>label { font-size:var(--diya-text-body); margin-bottom:10px; }
2154
+
2155
+ .diya-root .diya-workflow-surface input[name='project-title']::-webkit-contacts-auto-fill-button { visibility:hidden; display:none; pointer-events:none; }
2156
+
2157
+
2158
+ /* application-patterns/ApplicationPatterns.css: portable component rules. */
2159
+ .diya-root .diya-app-pattern-surface{background:var(--diya-color-raised,var(--diya-color-surface));color:var(--diya-color-text);border:1px solid var(--diya-color-line);border-radius:var(--diya-radius-surface);overflow:hidden}
2160
+ .diya-root .diya-chat{width:100%;max-width:620px;display:flex;flex-direction:column}
2161
+ .diya-root .diya-chat-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
2162
+ .diya-root .diya-chat[data-presentation='floating']{max-width:380px;margin-left:auto;box-shadow:0 calc(12px * var(--diya-elevation, 1)) calc(32px * var(--diya-elevation, 1)) #0002}
2163
+ .diya-root .diya-chat[data-presentation='full-page']{max-width:none;height:100%;min-height:0}
2164
+ .diya-root .diya-chat-header{flex:none;padding:20px 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--diya-color-line)}
2165
+ .diya-root .diya-chat-header > :where(div) > small{display:block;color:var(--diya-color-muted);font-size:var(--diya-text-caption);margin-top:5px}
2166
+ /* The thread takes what the header and composer leave: 280px (380px full-page) when the chat sizes
2167
+ itself, and the rest of any height the chat is given, scrolling inside. */
2168
+ .diya-root .diya-chat-thread{padding:24px;flex:1 1 280px;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
2169
+ .diya-root .diya-chat[data-presentation='full-page'] .diya-chat-thread{flex-basis:380px}
2170
+ .diya-root .diya-chat-welcome{text-align:center;margin:24px auto;max-width:430px;font-size:var(--diya-text-large)}
2171
+ .diya-root .diya-chat-welcome>span{font-size:var(--diya-text-display)}.diya-root .diya-chat-welcome h3:not(:where([class*='diya-'], .diya-chat-welcome [class*='diya-'] *)),.diya-root .diya-chat-welcome .diya-chat-welcome-title{font-size:var(--diya-text-title);margin:16px 0 8px}.diya-root .diya-chat-welcome p:not(:where([class*='diya-'], .diya-chat-welcome [class*='diya-'] *)){font-size:var(--diya-text-body);color:var(--diya-color-muted)}
2172
+ .diya-root .diya-chat-suggestions{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:24px}
2173
+ .diya-root .diya-chat-message{margin-bottom:20px;max-width:90%;font-size:var(--diya-text-body);line-height:1.65}.diya-root .diya-chat-message small{color:var(--diya-color-muted);font-size:var(--diya-text-caption)}.diya-root .diya-chat-message p{white-space:pre-wrap;margin:6px 0}
2174
+ .diya-root .diya-chat-message[data-role='user']{width:fit-content;margin-left:auto;background:var(--diya-color-selected);padding:12px 16px;border-radius:calc(14px * var(--diya-corner-scale, 1))}
2175
+ .diya-root .diya-chat-composer{flex:none;margin:0 20px 12px;padding:12px 14px;border:1px solid var(--diya-color-line);border-radius:calc(16px * var(--diya-corner-scale, 1));background:var(--diya-color-glass)}
2176
+ .diya-root .diya-chat-composer textarea{display:block;resize:none;border:0;width:100%;background:transparent;color:inherit;font:inherit;font-size:max(var(--diya-internal-field-min, 0px), var(--diya-text-body));line-height:1.6;outline:0;min-height:50px}.diya-root .diya-chat-composer:focus-within{outline:2px solid var(--diya-color-text);outline-offset:2px}
2177
+ .diya-root .diya-chat-composer textarea::placeholder{color:var(--diya-color-muted);opacity:1}
2178
+ .diya-root .diya-chat-composer>div{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.diya-root .diya-chat-attach{position:relative;cursor:pointer;font-size:var(--diya-text-caption);color:var(--diya-color-muted);padding:8px;border-radius:calc(6px * var(--diya-corner-scale, 1))}.diya-root .diya-chat-attach input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.diya-root .diya-chat-attach:focus-within{outline:2px solid currentColor}
2179
+ .diya-root .diya-chat-notice{flex:none;font-size:var(--diya-text-caption);color:var(--diya-color-muted);padding:0 20px 12px}.diya-root .diya-chat-notice:empty{display:none}.diya-root .diya-side-navigation{width:220px;flex:none;padding:24px 16px;border-right:1px solid var(--diya-color-line)}.diya-root .diya-side-navigation[data-collapsed='true']{width:72px}.diya-root .diya-side-navigation>strong{display:block;padding:0 12px 20px;font-size:var(--diya-text-title)}.diya-root .diya-side-navigation>div{margin-bottom:20px}.diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > small{display:block;padding:0 12px;margin-bottom:8px;font-size:var(--diya-text-caption);letter-spacing:0;color:var(--diya-color-muted)}.diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > button{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:var(--diya-color-muted);text-align:left;padding:10px 12px;border-radius:calc(8px * var(--diya-corner-scale, 1));font:inherit;font-size:var(--diya-text-caption);cursor:pointer}.diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > button[aria-current]{background:var(--diya-color-selected);color:var(--diya-color-text)}.diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > button:hover{background:var(--diya-color-hover)}.diya-root .diya-filter-bar{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}.diya-root .diya-filter-bar>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diya-root .diya-filter-bar select{height:40px;background:var(--diya-color-glass);color:inherit;border:1px solid var(--diya-color-line);border-radius:calc(8px * var(--diya-corner-scale, 1));padding:0 12px;font:inherit;font-size:max(var(--diya-internal-field-min, 0px), var(--diya-text-body))}.diya-root .diya-filter-bar .diya-search{width:220px}.diya-root .diya-active-filters{display:flex;align-items:center;gap:10px;margin-top:16px}.diya-root .diya-active-filters>button{font:inherit;font-size:var(--diya-text-caption);padding:6px 10px;background:var(--diya-color-selected);color:inherit;border:0;border-radius:calc(6px * var(--diya-corner-scale, 1));cursor:pointer}
2180
+ @media(max-width:600px){.diya-root .diya-side-navigation{width:150px;padding:20px 10px}.diya-root .diya-chat-thread{padding:18px}.diya-root .diya-filter-bar>div{width:100%}.diya-root .diya-filter-bar .diya-search{width:100%}.diya-root .diya-chat-composer{margin-inline:12px}}
2181
+
2182
+ /* The caller owns the application frame; navigation owns its single divider. */
2183
+ .diya-root .diya-side-navigation { border:0; border-right:1px solid var(--diya-color-line); border-radius:0; }
2184
+ /* Link items match button items. */
2185
+ .diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > a { display:flex; align-items:center; gap:12px; width:100%; color:var(--diya-color-muted); text-decoration:none; padding:10px 12px; border-radius:calc(8px * var(--diya-corner-scale, 1)); font-size:var(--diya-text-caption); }
2186
+ .diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > a[aria-current] { background:var(--diya-color-selected); color:var(--diya-color-text); }
2187
+ .diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > a:hover { background:var(--diya-color-hover); }
2188
+ /* A count sits quietly at the end of the label's line. When a narrow nav can't fit both, the count
2189
+ moves under the label instead of breaking its words. */
2190
+ .diya-root .diya-side-navigation-label { flex:1 1 auto; min-width:0; max-width:100%; overflow-wrap:break-word; }
2191
+ .diya-root .diya-side-navigation-text { flex:1 1 auto; min-width:0; display:flex; flex-wrap:wrap; align-items:baseline; column-gap:8px; row-gap:2px; }
2192
+ .diya-root .diya-side-navigation-count { flex-shrink:0; margin-left:auto; color:var(--diya-color-muted); font-variant-numeric:tabular-nums; }
2193
+ /* Collapsed, a dot on the icon says there is a count; the item's name carries the number. */
2194
+ .diya-root .diya-side-navigation-icon { position:relative; }
2195
+ /* The footer (an account or workspace menu) sits at the bottom of a full-height nav. Item rules stop at
2196
+ the group rows above, so a Menu, Avatar or Button in it keeps its own look. */
2197
+ .diya-root .diya-side-navigation:has(> .diya-side-navigation-footer) { display:flex; flex-direction:column; }
2198
+ .diya-root .diya-side-navigation > .diya-side-navigation-footer { margin:auto 0 0; padding-top:16px; min-width:0; }
2199
+ .diya-root .diya-side-navigation[data-collapsed='true'] > .diya-side-navigation-footer { display:flex; justify-content:center; }
2200
+ .diya-root .diya-side-navigation-dot { position:absolute; top:-4px; right:-7px; width:8px; height:8px; border-radius:50%; background:var(--diya-color-accent); }
2201
+
2202
+ .diya-root .diya-chat-attach{display:inline-flex;align-items:center;gap:7px;line-height:20px}
2203
+
2204
+
2205
+ /* data-viz/DataViz.css: portable component rules. */
2206
+ .diya-root .diya-data-viz { width:100%; height:300px; min-width:0; }
2207
+ .diya-root .diya-analytics-card { width:100%; border:1px solid var(--diya-color-line); border-radius:var(--diya-radius-surface); padding:24px; background:var(--diya-color-raised); color:var(--diya-color-text); }
2208
+ .diya-root .diya-analytics-card[data-shadow='true'] { box-shadow:var(--diya-shadow-raised); }
2209
+ .diya-root .diya-analytics-header { display:flex; align-items:center; justify-content:space-between; gap:24px; flex-wrap:wrap; margin-bottom:24px; }
2210
+ .diya-root .diya-analytics-title { margin:0 0 6px; font-size:var(--diya-text-title); font-weight:600; letter-spacing:-.015em; line-height:var(--diya-leading-tight); }
2211
+ .diya-root .diya-analytics-header p,
2212
+ .diya-root .diya-analytics-footer { font-size:var(--diya-text-caption); color:var(--diya-color-muted); margin:0; }
2213
+ .diya-root .diya-analytics-tools { display:flex; align-items:center; gap:12px; font-size:var(--diya-text-body); color:var(--diya-color-muted); }
2214
+ .diya-root .diya-analytics-tools select { background:var(--diya-color-hover); color:var(--diya-color-text); border:1px solid var(--diya-color-line); padding:8px 12px; border-radius:calc(8px * var(--diya-corner-scale, 1)); }
2215
+ .diya-root .diya-analytics-metric { font-size:var(--diya-text-display); font-weight:500; line-height:var(--diya-leading-tight); margin-bottom:12px; letter-spacing:-.04em; }
2216
+ .diya-root .diya-analytics-metric small { font-size:var(--diya-text-caption); letter-spacing:0; color:var(--diya-color-muted); margin-left:12px; }
2217
+ .diya-root .diya-analytics-footer { display:flex; justify-content:space-between; gap:16px; align-items:center; margin-top:20px; }
2218
+ .diya-root .diya-analytics-data { width:100%; font-size:var(--diya-text-caption); border-collapse:collapse; margin-top:20px; font-variant-numeric:tabular-nums; }
2219
+ .diya-root .diya-analytics-data-scroll { min-width:0; max-width:100%; overflow:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:var(--diya-color-muted) transparent; }
2220
+ .diya-root .diya-analytics-data-scroll:focus-visible { outline:2px solid var(--diya-color-text); outline-offset:4px; }
2221
+ .diya-root .diya-analytics-data th,
2222
+ .diya-root .diya-analytics-data td { padding:10px; text-align:left; border-bottom:1px solid var(--diya-color-line); }
2223
+ @media(max-width:600px){.diya-root .diya-analytics-card{padding:20px}.diya-root .diya-card-body{padding:20px}.diya-root .diya-analytics-tools{flex-wrap:wrap}.diya-root .diya-data-viz{height:260px}}
2224
+
2225
+ .diya-root .diya-chart-frame{position:relative;width:100%;min-width:0}.diya-root .diya-donut-total{position:absolute;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;color:var(--diya-color-text)}.diya-root .diya-donut-total strong{font-size:var(--diya-text-display);line-height:1;font-weight:500;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.diya-root .diya-donut-total span{font-size:var(--diya-text-caption);color:var(--diya-color-muted)}
2226
+
2227
+
2228
+
2229
+ /* Material values belong to each provider so nested appearances stay independent. */
2230
+ .diya-root {
2231
+ --diya-internal-control-line: color-mix(in srgb, var(--diya-color-muted) 70%, transparent);
2232
+ --diya-internal-alert-alpha: 7%;
2233
+ --diya-internal-alert-fill: var(--diya-color-raised);
2234
+ --diya-internal-alert-backdrop: none;
2235
+ --diya-internal-table-shadow: 0 calc(6px * var(--diya-elevation, 1)) calc(20px * var(--diya-elevation, 1)) #0002;
2236
+ --diya-internal-field-fill: var(--diya-color-hover);
2237
+ --diya-internal-collection-fill: transparent;
2238
+ --diya-internal-popup-control-fill: var(--diya-color-hover);
2239
+ --diya-internal-popup-fill: var(--diya-color-raised);
2240
+ --diya-internal-pattern-fill: var(--diya-color-raised);
2241
+ --diya-internal-workflow-fill: var(--diya-color-raised);
2242
+ --diya-internal-application-fill: var(--diya-color-raised);
2243
+ --diya-internal-analytics-fill: var(--diya-color-raised);
2244
+ --diya-internal-table-fill: var(--diya-color-raised);
2245
+ --diya-internal-field-backdrop: none;
2246
+ --diya-internal-popup-backdrop: none;
2247
+ --diya-internal-pattern-backdrop: none;
2248
+ --diya-internal-workflow-backdrop: none;
2249
+ --diya-internal-application-backdrop: none;
2250
+ --diya-internal-analytics-backdrop: none;
2251
+ }
2252
+
2253
+ .diya-root[data-theme='light'] {
2254
+ /* On white, fields are white too; their border carries the edge (no gray slab). */
2255
+ --diya-internal-field-fill: var(--diya-color-raised);
2256
+ --diya-internal-popup-control-fill: var(--diya-color-raised);
2257
+ --diya-internal-table-shadow: 0 calc(6px * var(--diya-elevation, 1)) calc(20px * var(--diya-elevation, 1)) #25342e0c;
2258
+ }
2259
+ @media (prefers-color-scheme: light) {
2260
+ .diya-root[data-theme='system'] {
2261
+ /* On white, fields are white too; their border carries the edge (no gray slab). */
2262
+ --diya-internal-field-fill: var(--diya-color-raised);
2263
+ --diya-internal-popup-control-fill: var(--diya-color-raised);
2264
+ --diya-internal-table-shadow: 0 calc(6px * var(--diya-elevation, 1)) calc(20px * var(--diya-elevation, 1)) #25342e0c;
2265
+ }
2266
+ }
2267
+
2268
+ .diya-root .diya-text-field-control,
2269
+ .diya-root .diya-select-control,
2270
+ .diya-root .diya-textarea textarea {
2271
+ border-color: var(--diya-internal-control-line);
2272
+ background: var(--diya-internal-field-fill);
2273
+ backdrop-filter: var(--diya-internal-field-backdrop);
2274
+ }
2275
+
2276
+ .diya-root .diya-list,
2277
+ .diya-root .diya-accordion {
2278
+ background: var(--diya-internal-collection-fill);
2279
+ }
2280
+
2281
+ .diya-root .diya-combobox-control,
2282
+ .diya-root .diya-date-trigger {
2283
+ border-color: var(--diya-internal-control-line);
2284
+ background: var(--diya-internal-popup-control-fill);
2285
+ backdrop-filter: var(--diya-internal-popup-backdrop);
2286
+ }
2287
+
2288
+ .diya-root .diya-combobox-options,
2289
+ .diya-root .diya-calendar {
2290
+ background: var(--diya-internal-popup-fill);
2291
+ color: var(--diya-color-text);
2292
+ backdrop-filter: var(--diya-internal-popup-backdrop);
2293
+ }
2294
+
2295
+ .diya-root .diya-card,
2296
+ .diya-root .diya-dialog,
2297
+ .diya-root .diya-site-header-container {
2298
+ background: var(--diya-internal-pattern-fill);
2299
+ border-color: var(--diya-internal-header-border);
2300
+ backdrop-filter: var(--diya-internal-pattern-backdrop);
2301
+ }
2302
+
2303
+ /* In-page surfaces: the faintest edge plus a soft shadow. */
2304
+ .diya-root :is(.diya-card, .diya-analytics-card, .diya-workflow-surface, .diya-app-pattern-surface, .diya-table .diya-table-scroll) {
2305
+ border-color: var(--diya-internal-surface-border);
2306
+ }
2307
+ .diya-root :is(.diya-card:not([data-shadow='true']), .diya-analytics-card:not([data-shadow='true']), .diya-project-form, .diya-table .diya-table-scroll) {
2308
+ box-shadow: var(--diya-internal-surface-shadow);
2309
+ }
2310
+
2311
+ .diya-root .diya-site-header-container {
2312
+ width: 100%;
2313
+ min-width: 0;
2314
+ border: 0;
2315
+ border-radius: 0;
2316
+ color: var(--diya-color-text);
2317
+ }
2318
+
2319
+ .diya-root .diya-site-brand,
2320
+ .diya-root .diya-site-nav :is(button, a),
2321
+ .diya-root .diya-site-mobile-nav :is(button, a) {
2322
+ font-family: inherit;
2323
+ text-decoration: none;
2324
+ }
2325
+
2326
+ .diya-root .diya-workflow-surface {
2327
+ background: var(--diya-internal-workflow-fill);
2328
+ backdrop-filter: var(--diya-internal-workflow-backdrop);
2329
+ }
2330
+
2331
+ .diya-root .diya-app-pattern-surface {
2332
+ background: var(--diya-internal-application-fill);
2333
+ backdrop-filter: var(--diya-internal-application-backdrop);
2334
+ }
2335
+
2336
+ .diya-root .diya-analytics-card {
2337
+ background: var(--diya-internal-analytics-fill);
2338
+ backdrop-filter: var(--diya-internal-analytics-backdrop);
2339
+ }
2340
+
2341
+ .diya-root .diya-table {
2342
+ --diya-internal-table-elevation: var(--diya-internal-table-shadow);
2343
+ --diya-internal-table-selection-left: 0px;
2344
+ --diya-internal-table-primary-left: 0px;
2345
+ }
2346
+
2347
+ .diya-root .diya-table .diya-table-scroll {
2348
+ background: var(--diya-internal-table-fill);
2349
+ border-color: var(--diya-internal-surface-border);
2350
+ backdrop-filter: var(--diya-internal-field-backdrop);
2351
+ }
2352
+
2353
+ .diya-root .diya-alert {
2354
+ --diya-internal-alert-info: var(--diya-color-info-fill);
2355
+ --diya-internal-alert-success: var(--diya-color-success-fill);
2356
+ --diya-internal-alert-warning: var(--diya-internal-warning-mark);
2357
+ --diya-internal-alert-error: var(--diya-color-error-fill);
2358
+ --diya-internal-alert-tint: var(--diya-internal-alert-accent);
2359
+ background: color-mix(in srgb, var(--diya-internal-alert-tint) var(--diya-internal-alert-alpha), var(--diya-internal-alert-fill));
2360
+ backdrop-filter: var(--diya-internal-alert-backdrop);
2361
+ }
2362
+
2363
+ .diya-root[data-theme='light'] .diya-alert[data-tone='warning'] {
2364
+ --diya-internal-alert-tint: var(--diya-color-warning-fill);
2365
+ }
2366
+ @media (prefers-color-scheme: light) {
2367
+ .diya-root[data-theme='system'] .diya-alert[data-tone='warning'] {
2368
+ --diya-internal-alert-tint: var(--diya-color-warning-fill);
2369
+ }
2370
+ }
2371
+
2372
+ /* Icons and actions use the status tone, which is readable on a surface. */
2373
+ .diya-root .diya-alert {
2374
+ --diya-internal-alert-ink: var(--diya-color-info);
2375
+ }
2376
+
2377
+ .diya-root .diya-alert[data-tone='success'] {
2378
+ --diya-internal-alert-ink: var(--diya-color-success);
2379
+ }
2380
+
2381
+ .diya-root .diya-alert[data-tone='warning'] {
2382
+ --diya-internal-alert-ink: var(--diya-color-warning);
2383
+ }
2384
+
2385
+ .diya-root .diya-alert[data-tone='error'] {
2386
+ --diya-internal-alert-ink: var(--diya-color-error);
2387
+ }
2388
+
2389
+ @media (forced-colors: none) {
2390
+ .diya-root[data-theme='dark'][data-glass='true'] .diya-alert-action {
2391
+ color: var(--diya-color-text);
2392
+ }
2393
+ @media (prefers-color-scheme: dark) {
2394
+ .diya-root[data-theme='system'][data-glass='true'] .diya-alert-action {
2395
+ color: var(--diya-color-text);
2396
+ }
2397
+ }
2398
+ }
2399
+
2400
+ .diya-root .diya-metric-change[data-meaning='positive'] {
2401
+ color: var(--diya-color-success);
2402
+ }
2403
+
2404
+ .diya-root .diya-metric-change[data-meaning='negative'] {
2405
+ color: var(--diya-color-error);
2406
+ }
2407
+
2408
+ /* Composite editors keep a single focus treatment around the whole control. */
2409
+ .diya-root .diya-select-control:focus-within {
2410
+ outline: 2px solid var(--diya-color-text);
2411
+ outline-offset: 3px;
2412
+ }
2413
+
2414
+ .diya-root .diya-select-control select:focus-visible,
2415
+ .diya-root .diya-combobox-control input:focus-visible,
2416
+ .diya-root .diya-chat-composer textarea:focus-visible {
2417
+ outline: none;
2418
+ box-shadow: none;
2419
+ }
2420
+
2421
+ .diya-root .diya-field-help {
2422
+ line-height: 1.6;
2423
+ min-width: 0;
2424
+ overflow-wrap: anywhere;
2425
+ display: flex;
2426
+ gap: 8px;
2427
+ align-items: baseline;
2428
+ }
2429
+
2430
+ /* Every invalid field reads the same: a solid error border, and the message (with its "!") in the error color. */
2431
+ .diya-root .diya-text-field[data-invalid='true'] .diya-text-field-description,
2432
+ .diya-root .diya-select-field[data-invalid='true'] .diya-text-field-description,
2433
+ .diya-root .diya-choice[aria-invalid='true'] > .diya-text-field-description,
2434
+ .diya-root .diya-combobox[data-invalid='true'] .diya-field-help,
2435
+ .diya-root .diya-date-field[data-invalid='true'] .diya-field-help,
2436
+ .diya-root .diya-workflow-error {
2437
+ color: var(--diya-color-error);
2438
+ }
2439
+
2440
+ .diya-root .diya-text-field[data-invalid='true'] .diya-text-field-control,
2441
+ .diya-root .diya-select-field[data-invalid='true'] .diya-select-control,
2442
+ .diya-root .diya-textarea[data-invalid='true'] textarea,
2443
+ .diya-root .diya-combobox[data-invalid='true'] .diya-combobox-control,
2444
+ .diya-root .diya-date-field[data-invalid='true'] .diya-date-trigger,
2445
+ .diya-root .diya-switch[aria-invalid='true'],
2446
+ .diya-root .diya-choice[aria-invalid='true'] .diya-choice-option input:not(:checked) {
2447
+ border-color: var(--diya-color-error);
2448
+ }
2449
+
2450
+ /* Calendar controls remain styled when the popup is in the provider portal. */
2451
+ .diya-root .diya-calendar button:focus-visible {
2452
+ outline: 2px solid var(--diya-color-text);
2453
+ outline-offset: 3px;
2454
+ }
2455
+
2456
+ .diya-root .diya-combobox-options,
2457
+ .diya-root .diya-calendar {
2458
+ max-width: calc(100vw - 24px);
2459
+ }
2460
+
2461
+ /* Sticky columns account for optional expansion and selection independently. */
2462
+ .diya-root .diya-table[data-expandable] {
2463
+ --diya-internal-table-selection-left: 40px;
2464
+ --diya-internal-table-primary-left: 40px;
2465
+ }
2466
+
2467
+ .diya-root .diya-table[data-selection] {
2468
+ --diya-internal-table-primary-left: 48px;
2469
+ }
2470
+
2471
+ .diya-root .diya-table[data-expandable][data-selection] {
2472
+ --diya-internal-table-primary-left: 88px;
2473
+ }
2474
+
2475
+ .diya-root .diya-table[data-sticky] [data-pinned] {
2476
+ position: sticky;
2477
+ z-index: 2;
2478
+ background: color-mix(in srgb, var(--diya-internal-table-surface) 78%, transparent);
2479
+ backdrop-filter: blur(16px);
2480
+ }
2481
+
2482
+ .diya-root .diya-table[data-sticky] [data-pinned='expander'] {
2483
+ left: 0;
2484
+ width: 40px;
2485
+ min-width: 40px;
2486
+ max-width: 40px;
2487
+ }
2488
+
2489
+ .diya-root .diya-table[data-sticky] [data-pinned='selection'] {
2490
+ left: var(--diya-internal-table-selection-left);
2491
+ width: 48px;
2492
+ min-width: 48px;
2493
+ max-width: 48px;
2494
+ }
2495
+
2496
+ .diya-root .diya-table[data-sticky] [data-pinned='primary'] {
2497
+ left: var(--diya-internal-table-primary-left);
2498
+ box-shadow: 1px 0 var(--diya-color-line), 8px 0 14px -12px #0006;
2499
+ }
2500
+
2501
+ .diya-root .diya-table[data-sticky] tbody tr:hover > [data-pinned] {
2502
+ background: color-mix(in srgb, var(--diya-internal-table-surface) 85%, transparent);
2503
+ }
2504
+
2505
+ .diya-root .diya-table[data-sticky] tbody tr[data-selected] > [data-pinned] {
2506
+ background: color-mix(in srgb, var(--diya-color-text) var(--diya-internal-table-selected-weight), color-mix(in srgb, var(--diya-internal-table-surface) 80%, transparent));
2507
+ }
2508
+
2509
+ /* A narrow table needs room to reveal data between its frozen columns. */
2510
+ @container diya-table (max-width: 600px) {
2511
+ .diya-root .diya-table[data-sticky] [data-pinned] {
2512
+ left: auto;
2513
+ box-shadow: none;
2514
+ }
2515
+ }
2516
+
2517
+ @supports (backdrop-filter: blur(14px)) {
2518
+ .diya-root[data-glass='true'] {
2519
+ --diya-internal-field-fill: color-mix(in srgb, var(--diya-color-raised) 72%, transparent);
2520
+ --diya-internal-popup-control-fill: color-mix(in srgb, var(--diya-color-raised) 76%, transparent);
2521
+ --diya-internal-popup-fill: color-mix(in srgb, var(--diya-color-raised) 76%, transparent);
2522
+ --diya-internal-pattern-fill: color-mix(in srgb, var(--diya-color-raised) 78%, transparent);
2523
+ --diya-internal-workflow-fill: color-mix(in srgb, var(--diya-color-raised) 75%, transparent);
2524
+ --diya-internal-application-fill: color-mix(in srgb, var(--diya-color-raised) 76%, transparent);
2525
+ --diya-internal-analytics-fill: color-mix(in srgb, var(--diya-color-raised) 72%, transparent);
2526
+ --diya-internal-table-fill: color-mix(in srgb, var(--diya-color-raised) 72%, transparent);
2527
+ --diya-internal-field-backdrop: var(--diya-internal-blur);
2528
+ --diya-internal-popup-backdrop: blur(16px);
2529
+ --diya-internal-pattern-backdrop: var(--diya-internal-blur);
2530
+ --diya-internal-workflow-backdrop: blur(18px);
2531
+ --diya-internal-application-backdrop: blur(18px);
2532
+ --diya-internal-analytics-backdrop: var(--diya-internal-blur);
2533
+ --diya-internal-alert-alpha: 8%;
2534
+ --diya-internal-alert-fill: var(--diya-color-glass);
2535
+ --diya-internal-alert-backdrop: blur(20px);
2536
+ }
2537
+
2538
+ .diya-root[data-glass='true']:where([data-theme='light']) {
2539
+ --diya-internal-field-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
2540
+ --diya-internal-popup-control-fill: color-mix(in srgb, var(--diya-color-raised) 82%, transparent);
2541
+ --diya-internal-popup-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
2542
+ --diya-internal-pattern-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
2543
+ --diya-internal-workflow-fill: color-mix(in srgb, var(--diya-color-raised) 82%, transparent);
2544
+ --diya-internal-application-fill: color-mix(in srgb, var(--diya-color-raised) 82%, transparent);
2545
+ --diya-internal-analytics-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
2546
+ --diya-internal-table-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
2547
+ --diya-internal-popup-backdrop: var(--diya-internal-blur);
2548
+ --diya-internal-workflow-backdrop: var(--diya-internal-blur);
2549
+ --diya-internal-application-backdrop: var(--diya-internal-blur);
2550
+ --diya-internal-alert-backdrop: var(--diya-internal-blur);
2551
+ }
2552
+ @media (prefers-color-scheme: light) {
2553
+ .diya-root[data-glass='true']:where([data-theme='system']) {
2554
+ --diya-internal-field-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
2555
+ --diya-internal-popup-control-fill: color-mix(in srgb, var(--diya-color-raised) 82%, transparent);
2556
+ --diya-internal-popup-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
2557
+ --diya-internal-pattern-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
2558
+ --diya-internal-workflow-fill: color-mix(in srgb, var(--diya-color-raised) 82%, transparent);
2559
+ --diya-internal-application-fill: color-mix(in srgb, var(--diya-color-raised) 82%, transparent);
2560
+ --diya-internal-analytics-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
2561
+ --diya-internal-table-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
2562
+ --diya-internal-popup-backdrop: var(--diya-internal-blur);
2563
+ --diya-internal-workflow-backdrop: var(--diya-internal-blur);
2564
+ --diya-internal-application-backdrop: var(--diya-internal-blur);
2565
+ --diya-internal-alert-backdrop: var(--diya-internal-blur);
2566
+ }
2567
+ }
2568
+ }
2569
+
2570
+ /* Glass, the material. Every surface is see-through frosted glass: cards, chart cards,
2571
+ tables (clear rows on the card's glass), inline alerts, side navigation, headers,
2572
+ tab tracks, controls, menus, popovers, dialogs, drawers and toasts. Cards are the
2573
+ clearest pane, so the backdrop's light and shade pass visibly behind them; the
2574
+ floating layer is denser, so menus and dialogs always read. The material is
2575
+ neutral: the blur lifts saturation by 1.15 at most, so the backdrop arrives as
2576
+ soft light, never as a color wash, and text and controls keep their neutral color.
2577
+ Every pane has a hairline rim, brighter along the top, and a soft shadow. */
2578
+ @supports (backdrop-filter: blur(14px)) {
2579
+ .diya-root[data-glass='true'] {
2580
+ --diya-internal-blur: blur(28px) saturate(1.15);
2581
+ /* Cards dim what is behind them a little, so a bright patch never washes out
2582
+ light text, while its shape still passes through. */
2583
+ --diya-internal-content-blur: blur(18px) saturate(1.15) brightness(0.92);
2584
+ --diya-internal-glass-edge: color-mix(in srgb, #ffffff 13%, transparent);
2585
+ --diya-internal-glass-top-edge: color-mix(in srgb, #ffffff 22%, transparent);
2586
+ /* The specular rim: a hairline edge, brighter along the top where the light falls,
2587
+ over a soft shadow (and no glow). Menus, popovers, dialogs and toasts share it. */
2588
+ --diya-internal-overlay-border: var(--diya-internal-glass-edge);
2589
+ --diya-internal-overlay-top-border: var(--diya-internal-glass-top-edge);
2590
+ --diya-shadow-raised: inset 0 1px 0 #ffffff1f, inset 0 -1px 0 #ffffff0a, 0 1px 1px #0000004d, 0 30px 64px -20px #000000c7;
2591
+ /* A pane, not a printed card: a faint sheen across its top. */
2592
+ --diya-internal-glass-sheen: linear-gradient(180deg, #ffffff0f, #ffffff00 38%);
2593
+ /* The floating layer: denser where text is dense (menus, dialogs), lighter where
2594
+ the pane is navigation or a single control. */
2595
+ --diya-internal-header-fill: color-mix(in srgb, var(--diya-color-raised) 62%, transparent);
2596
+ --diya-internal-overlay-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
2597
+ --diya-internal-popup-fill: color-mix(in srgb, var(--diya-color-raised) 80%, transparent);
2598
+ --diya-internal-tabs-fill: color-mix(in srgb, var(--diya-color-raised) 56%, transparent);
2599
+ --diya-internal-outline-fill: color-mix(in srgb, var(--diya-color-raised) 50%, transparent);
2600
+ --diya-internal-field-fill: color-mix(in srgb, var(--diya-color-raised) 56%, transparent);
2601
+ --diya-internal-popup-control-fill: color-mix(in srgb, var(--diya-color-raised) 56%, transparent);
2602
+ --diya-internal-field-backdrop: var(--diya-internal-blur);
2603
+ --diya-internal-popup-backdrop: var(--diya-internal-blur);
2604
+ --diya-internal-toast-fill: var(--diya-internal-overlay-fill);
2605
+ /* Status tags keep a solid base under their tint, so a bright shape behind the
2606
+ glass never thins their label. */
2607
+ --diya-internal-tag-base: var(--diya-color-raised);
2608
+ /* Small text that sits straight on the backdrop (pagination labels) gets a soft
2609
+ frosted lift behind it, so it reads over any shape the backdrop has. */
2610
+ --diya-internal-text-lift: color-mix(in srgb, var(--diya-color-raised) 74%, transparent);
2611
+ --diya-internal-toast-backdrop: var(--diya-internal-blur);
2612
+ /* Cards and every other content surface: the clearest pane. */
2613
+ --diya-internal-content-fill: color-mix(in srgb, var(--diya-color-raised) 34%, transparent);
2614
+ --diya-internal-surface-border: var(--diya-internal-glass-edge);
2615
+ --diya-internal-surface-shadow: inset 0 1px 0 #ffffff1f, inset 0 -1px 0 #ffffff0a, 0 1px 1px #00000040, 0 24px 56px -22px #000000a6;
2616
+ --diya-internal-collection-fill: transparent;
2617
+ --diya-internal-pattern-fill: var(--diya-internal-content-fill);
2618
+ --diya-internal-workflow-fill: var(--diya-internal-content-fill);
2619
+ --diya-internal-application-fill: var(--diya-internal-content-fill);
2620
+ --diya-internal-analytics-fill: var(--diya-internal-content-fill);
2621
+ --diya-internal-table-fill: var(--diya-internal-content-fill);
2622
+ --diya-internal-pattern-backdrop: var(--diya-internal-content-blur);
2623
+ --diya-internal-workflow-backdrop: var(--diya-internal-content-blur);
2624
+ --diya-internal-application-backdrop: var(--diya-internal-content-blur);
2625
+ --diya-internal-analytics-backdrop: var(--diya-internal-content-blur);
2626
+ --diya-internal-alert-fill: var(--diya-internal-content-fill);
2627
+ --diya-internal-alert-backdrop: var(--diya-internal-content-blur);
2628
+ /* A dimming layer behind dialogs and drawers, as Apple asks for over busy content. */
2629
+ --diya-color-scrim: #00000059;
2630
+ }
2631
+ .diya-root[data-glass='true']:where([data-theme='light']) {
2632
+ --diya-internal-blur: blur(28px) saturate(1.15) brightness(1.04);
2633
+ --diya-internal-content-blur: blur(18px) saturate(1.15) brightness(1.02);
2634
+ --diya-internal-glass-top-edge: #ffffff;
2635
+ --diya-internal-glass-edge: color-mix(in srgb, #ffffff 55%, transparent);
2636
+ --diya-shadow-raised: inset 0 1px 0 #ffffff, inset 0 -1px 0 #ffffff66, 0 0 0 0.5px #1014181f, 0 2px 6px -2px #10141814, 0 22px 50px -26px #10141824;
2637
+ --diya-internal-glass-sheen: linear-gradient(180deg, #ffffff80, #ffffff00 42%);
2638
+ --diya-internal-header-fill: color-mix(in srgb, var(--diya-color-raised) 62%, transparent);
2639
+ --diya-internal-overlay-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
2640
+ --diya-internal-popup-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
2641
+ --diya-internal-tabs-fill: color-mix(in srgb, var(--diya-color-raised) 60%, transparent);
2642
+ --diya-internal-outline-fill: color-mix(in srgb, var(--diya-color-raised) 58%, transparent);
2643
+ --diya-internal-field-fill: color-mix(in srgb, var(--diya-color-raised) 66%, transparent);
2644
+ --diya-internal-popup-control-fill: color-mix(in srgb, var(--diya-color-raised) 66%, transparent);
2645
+ --diya-internal-content-fill: color-mix(in srgb, var(--diya-color-raised) 35%, transparent);
2646
+ /* Muted text a step deeper, like a vibrant secondary label, so it holds 4.5:1
2647
+ over the shade the clearer glass lets through. */
2648
+ --diya-color-muted: #384346;
2649
+ --diya-internal-surface-shadow: inset 0 1px 0 #ffffff, inset 0 -1px 0 #ffffff59, 0 0 0 0.5px #1014181a, 0 2px 4px -1px #1014180f, 0 24px 56px -24px #1014183d;
2650
+ --diya-color-scrim: #10141824;
2651
+ }
2652
+ @media (prefers-color-scheme: light) {
2653
+ .diya-root[data-glass='true']:where([data-theme='system']) {
2654
+ --diya-internal-blur: blur(28px) saturate(1.15) brightness(1.04);
2655
+ --diya-internal-content-blur: blur(18px) saturate(1.15) brightness(1.02);
2656
+ --diya-internal-glass-top-edge: #ffffff;
2657
+ --diya-internal-glass-edge: color-mix(in srgb, #ffffff 55%, transparent);
2658
+ --diya-shadow-raised: inset 0 1px 0 #ffffff, inset 0 -1px 0 #ffffff66, 0 0 0 0.5px #1014181f, 0 2px 6px -2px #10141814, 0 22px 50px -26px #10141824;
2659
+ --diya-internal-glass-sheen: linear-gradient(180deg, #ffffff80, #ffffff00 42%);
2660
+ --diya-internal-header-fill: color-mix(in srgb, var(--diya-color-raised) 62%, transparent);
2661
+ --diya-internal-overlay-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
2662
+ --diya-internal-popup-fill: color-mix(in srgb, var(--diya-color-raised) 84%, transparent);
2663
+ --diya-internal-tabs-fill: color-mix(in srgb, var(--diya-color-raised) 60%, transparent);
2664
+ --diya-internal-outline-fill: color-mix(in srgb, var(--diya-color-raised) 58%, transparent);
2665
+ --diya-internal-field-fill: color-mix(in srgb, var(--diya-color-raised) 66%, transparent);
2666
+ --diya-internal-popup-control-fill: color-mix(in srgb, var(--diya-color-raised) 66%, transparent);
2667
+ --diya-internal-content-fill: color-mix(in srgb, var(--diya-color-raised) 35%, transparent);
2668
+ /* Muted text a step deeper, like a vibrant secondary label, so it holds 4.5:1
2669
+ over the shade the clearer glass lets through. */
2670
+ --diya-color-muted: #384346;
2671
+ --diya-internal-surface-shadow: inset 0 1px 0 #ffffff, inset 0 -1px 0 #ffffff59, 0 0 0 0.5px #1014181a, 0 2px 4px -1px #1014180f, 0 24px 56px -24px #1014183d;
2672
+ --diya-color-scrim: #10141824;
2673
+ }
2674
+ }
2675
+ /* Dialogs and drawers float: denser glass with the specular rim. */
2676
+ .diya-root[data-glass='true'] :is(.diya-dialog, .diya-drawer-modal) {
2677
+ background: var(--diya-internal-overlay-fill);
2678
+ border-color: var(--diya-internal-glass-edge);
2679
+ border-top-color: var(--diya-internal-glass-top-edge);
2680
+ }
2681
+ .diya-root[data-glass='true'] :is(.diya-card, .diya-analytics-card, .diya-workflow-surface, .diya-app-pattern-surface, .diya-table .diya-table-scroll, .diya-floating-surface, .diya-dialog, .diya-drawer-modal) {
2682
+ background-image: var(--diya-internal-glass-sheen);
2683
+ }
2684
+ .diya-root[data-glass='true'] .diya-tag:is([data-color='success'], [data-color='warning'], [data-color='error'], [data-color='info']) {
2685
+ background: linear-gradient(var(--diya-internal-tag-surface), var(--diya-internal-tag-surface)), var(--diya-internal-tag-base);
2686
+ }
2687
+ .diya-root[data-glass='true'] .diya-metric-change[data-meaning='positive'] {
2688
+ background: linear-gradient(var(--diya-color-success-surface), var(--diya-color-success-surface)), var(--diya-internal-tag-base);
2689
+ }
2690
+ .diya-root[data-glass='true'] .diya-metric-change[data-meaning='negative'] {
2691
+ background: linear-gradient(var(--diya-color-error-surface), var(--diya-color-error-surface)), var(--diya-internal-tag-base);
2692
+ }
2693
+ .diya-root[data-glass='true'] :is(.diya-pagination-count, .diya-pagination-size > span) {
2694
+ border-radius: 999px;
2695
+ background: var(--diya-internal-text-lift);
2696
+ box-shadow: 0 0 10px 6px var(--diya-internal-text-lift);
2697
+ }
2698
+ /* A toast floats; an inline alert is content. */
2699
+ .diya-root[data-glass='true'] .diya-toast-region .diya-alert {
2700
+ --diya-internal-alert-fill: var(--diya-internal-toast-fill);
2701
+ --diya-internal-alert-backdrop: var(--diya-internal-toast-backdrop);
2702
+ }
2703
+ /* The Site Header is navigation, so it is glass even though it shares the Card's fill. */
2704
+ .diya-root[data-glass='true'] .diya-site-header-container {
2705
+ background: var(--diya-internal-header-fill);
2706
+ backdrop-filter: var(--diya-internal-backdrop);
2707
+ }
2708
+ /* Table cells are clear, so the table's own surface shows through every row; frozen
2709
+ columns keep a denser pane so what scrolls beneath them stays out of the way. */
2710
+ .diya-root[data-glass='true'] .diya-table { --diya-internal-table-surface: transparent; }
2711
+ .diya-root[data-glass='true'] .diya-table[data-sticky] [data-pinned] { background: var(--diya-internal-overlay-fill); }
2712
+ }
2713
+
2714
+ /* Increase Contrast: solid surfaces and firmer edges, as Apple's glass does. Safari has
2715
+ no prefers-reduced-transparency yet, so this is the setting it does pass through. */
2716
+ @media (prefers-contrast: more) {
2717
+ .diya-root[data-glass='true'] {
2718
+ --diya-internal-header-fill: var(--diya-color-raised);
2719
+ --diya-internal-overlay-fill: var(--diya-color-raised);
2720
+ --diya-internal-popup-fill: var(--diya-color-raised);
2721
+ --diya-internal-tabs-fill: var(--diya-color-raised);
2722
+ --diya-internal-outline-fill: var(--diya-color-raised);
2723
+ --diya-internal-field-fill: var(--diya-color-raised);
2724
+ --diya-internal-popup-control-fill: var(--diya-color-raised);
2725
+ --diya-internal-content-fill: var(--diya-color-raised);
2726
+ --diya-internal-glass-edge: color-mix(in srgb, var(--diya-color-text) 40%, transparent);
2727
+ --diya-internal-glass-sheen: none;
2728
+ --diya-internal-glass-top-edge: var(--diya-internal-glass-edge);
2729
+ }
2730
+ }
2731
+
2732
+ @media (prefers-reduced-transparency: reduce) {
2733
+ .diya-root[data-glass='true'] {
2734
+ --diya-internal-header-fill: var(--diya-color-raised);
2735
+ --diya-internal-overlay-fill: var(--diya-color-raised);
2736
+ --diya-internal-tabs-fill: var(--diya-color-raised);
2737
+ --diya-internal-outline-fill: var(--diya-color-raised);
2738
+ --diya-internal-backdrop: none;
2739
+ --diya-internal-glass-edge: var(--diya-internal-header-border);
2740
+ --diya-internal-glass-sheen: none;
2741
+ --diya-internal-surface-border: color-mix(in srgb, var(--diya-color-text) 9%, transparent);
2742
+ --diya-internal-field-fill: var(--diya-color-hover);
2743
+ --diya-internal-collection-fill: transparent;
2744
+ --diya-internal-popup-control-fill: var(--diya-color-hover);
2745
+ --diya-internal-popup-fill: var(--diya-color-raised);
2746
+ --diya-internal-pattern-fill: var(--diya-color-raised);
2747
+ --diya-internal-workflow-fill: var(--diya-color-raised);
2748
+ --diya-internal-application-fill: var(--diya-color-raised);
2749
+ --diya-internal-analytics-fill: var(--diya-color-raised);
2750
+ --diya-internal-table-fill: var(--diya-color-raised);
2751
+ --diya-internal-field-backdrop: none;
2752
+ --diya-internal-popup-backdrop: none;
2753
+ --diya-internal-pattern-backdrop: none;
2754
+ --diya-internal-workflow-backdrop: none;
2755
+ --diya-internal-application-backdrop: none;
2756
+ --diya-internal-analytics-backdrop: none;
2757
+ --diya-internal-alert-alpha: 7%;
2758
+ --diya-internal-alert-fill: var(--diya-color-surface);
2759
+ --diya-internal-alert-backdrop: none;
2760
+ }
2761
+
2762
+ .diya-root .diya-table[data-sticky] [data-pinned] {
2763
+ background: var(--diya-internal-table-surface);
2764
+ backdrop-filter: none;
2765
+ }
2766
+ }
2767
+
2768
+ @media (forced-colors: active) {
2769
+ .diya-root,
2770
+ .diya-root[data-theme='light'],
2771
+ .diya-root[data-theme='dark'],
2772
+ .diya-root[data-glass='true'] {
2773
+ --diya-color-error: CanvasText;
2774
+ --diya-internal-control-line: ButtonText;
2775
+ --diya-internal-table-shadow: none;
2776
+ --diya-internal-field-fill: Canvas;
2777
+ --diya-internal-collection-fill: Canvas;
2778
+ --diya-internal-popup-control-fill: Canvas;
2779
+ --diya-internal-popup-fill: Canvas;
2780
+ --diya-internal-pattern-fill: Canvas;
2781
+ --diya-internal-workflow-fill: Canvas;
2782
+ --diya-internal-application-fill: Canvas;
2783
+ --diya-internal-analytics-fill: Canvas;
2784
+ --diya-internal-table-fill: Canvas;
2785
+ --diya-internal-field-backdrop: none;
2786
+ --diya-internal-popup-backdrop: none;
2787
+ --diya-internal-pattern-backdrop: none;
2788
+ --diya-internal-workflow-backdrop: none;
2789
+ --diya-internal-application-backdrop: none;
2790
+ --diya-internal-analytics-backdrop: none;
2791
+ --diya-internal-alert-backdrop: none;
2792
+ }
2793
+ @media (prefers-color-scheme: light) {
2794
+ .diya-root[data-theme='system'] {
2795
+ --diya-color-error: CanvasText;
2796
+ --diya-internal-control-line: ButtonText;
2797
+ --diya-internal-table-shadow: none;
2798
+ --diya-internal-field-fill: Canvas;
2799
+ --diya-internal-collection-fill: Canvas;
2800
+ --diya-internal-popup-control-fill: Canvas;
2801
+ --diya-internal-popup-fill: Canvas;
2802
+ --diya-internal-pattern-fill: Canvas;
2803
+ --diya-internal-workflow-fill: Canvas;
2804
+ --diya-internal-application-fill: Canvas;
2805
+ --diya-internal-analytics-fill: Canvas;
2806
+ --diya-internal-table-fill: Canvas;
2807
+ --diya-internal-field-backdrop: none;
2808
+ --diya-internal-popup-backdrop: none;
2809
+ --diya-internal-pattern-backdrop: none;
2810
+ --diya-internal-workflow-backdrop: none;
2811
+ --diya-internal-application-backdrop: none;
2812
+ --diya-internal-analytics-backdrop: none;
2813
+ --diya-internal-alert-backdrop: none;
2814
+ }
2815
+ }
2816
+ @media (prefers-color-scheme: dark) {
2817
+ .diya-root[data-theme='system'] {
2818
+ --diya-color-error: CanvasText;
2819
+ --diya-internal-control-line: ButtonText;
2820
+ --diya-internal-table-shadow: none;
2821
+ --diya-internal-field-fill: Canvas;
2822
+ --diya-internal-collection-fill: Canvas;
2823
+ --diya-internal-popup-control-fill: Canvas;
2824
+ --diya-internal-popup-fill: Canvas;
2825
+ --diya-internal-pattern-fill: Canvas;
2826
+ --diya-internal-workflow-fill: Canvas;
2827
+ --diya-internal-application-fill: Canvas;
2828
+ --diya-internal-analytics-fill: Canvas;
2829
+ --diya-internal-table-fill: Canvas;
2830
+ --diya-internal-field-backdrop: none;
2831
+ --diya-internal-popup-backdrop: none;
2832
+ --diya-internal-pattern-backdrop: none;
2833
+ --diya-internal-workflow-backdrop: none;
2834
+ --diya-internal-application-backdrop: none;
2835
+ --diya-internal-analytics-backdrop: none;
2836
+ --diya-internal-alert-backdrop: none;
2837
+ }
2838
+ }
2839
+
2840
+ .diya-root .diya-card,
2841
+ .diya-root .diya-dialog,
2842
+ .diya-root .diya-site-header-container,
2843
+ .diya-root .diya-workflow-surface,
2844
+ .diya-root .diya-app-pattern-surface,
2845
+ .diya-root .diya-analytics-card,
2846
+ .diya-root .diya-table .diya-table-scroll,
2847
+ .diya-root .diya-combobox-control,
2848
+ .diya-root .diya-combobox-options,
2849
+ .diya-root .diya-date-trigger,
2850
+ .diya-root .diya-calendar {
2851
+ border-color: CanvasText;
2852
+ box-shadow: none;
2853
+ }
2854
+
2855
+ .diya-root .diya-alert {
2856
+ background: Canvas;
2857
+ border-color: CanvasText;
2858
+ }
2859
+
2860
+ .diya-root .diya-metric-change[data-meaning] {
2861
+ color: CanvasText;
2862
+ }
2863
+
2864
+ .diya-root .diya-table[data-sticky] [data-pinned],
2865
+ .diya-root .diya-table[data-sticky] .diya-table-actions {
2866
+ background: Canvas;
2867
+ color: CanvasText;
2868
+ backdrop-filter: none;
2869
+ box-shadow: none;
2870
+ }
2871
+
2872
+ .diya-root .diya-table tbody tr[data-selected] td:not(:where([class*='diya-']:not([class*='diya-table']), .diya-table [class*='diya-']:not([class*='diya-table']) *)) {
2873
+ outline: 1px solid Highlight;
2874
+ outline-offset: -1px;
2875
+ }
2876
+
2877
+ .diya-root :where([class*='diya-']:not(.diya-root, .diya-portal-root)) :where(button, input, select, textarea):disabled,
2878
+ .diya-root :where(button, input, select, textarea):where([class*='diya-']):disabled,
2879
+ .diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > button:disabled {
2880
+ color: GrayText;
2881
+ opacity: 1;
2882
+ }
2883
+
2884
+ .diya-root .diya-calendar-grid button[aria-selected='true']:not([data-between='true']),
2885
+ .diya-root .diya-site-nav [aria-current],
2886
+ .diya-root .diya-site-mobile-nav [aria-current],
2887
+ .diya-root .diya-side-navigation > :where(div:not(.diya-side-navigation-footer)) > [aria-current],
2888
+ .diya-root .diya-list-row[aria-current],
2889
+ .diya-root .diya-list > li[aria-current] > .diya-list-row {
2890
+ outline: 1px solid Highlight;
2891
+ outline-offset: -1px;
2892
+ }
2893
+
2894
+ .diya-root :is(.diya-list-unread, .diya-side-navigation-dot) {
2895
+ forced-color-adjust: none;
2896
+ background: CanvasText;
2897
+ }
2898
+ }
2899
+
2900
+ /* Long drawers keep their actions visible while content scrolls. */
2901
+ .diya-root .diya-drawer-modal > :is(header,footer) { flex-shrink:0; }
2902
+ .diya-root .diya-drawer-modal > .diya-drawer-body { flex:1; min-height:0; overflow:auto; overscroll-behavior:contain; }
2903
+
2904
+ /* Dialog and Drawer titles look the same at every heading level. */
2905
+ .diya-root .diya-dialog .diya-dialog-title,
2906
+ .diya-root .diya-drawer-modal .diya-drawer-title { margin: 0; font-size: var(--diya-text-title); font-weight: 600; letter-spacing: -0.015em; line-height: var(--diya-leading-tight); }
2907
+
2908
+ /* Type roles. Every title-role heading shares one spec now that DIYA Sans
2909
+ renders real medium and semibold weights. */
2910
+ .diya-root :is(.diya-card-header h3:not(:where([class*='diya-'], .diya-card-header [class*='diya-'] *)), .diya-dialog h3:not(:where([class*='diya-'], .diya-dialog [class*='diya-']:not(.diya-dialog, .diya-dialog-layout, .diya-dialog-content) *)), .diya-dialog-heading h3, .diya-table-title, .diya-workflow-surface h3:not(:where([class*='diya-'], .diya-workflow-surface [class*='diya-']:not(.diya-workflow-surface, .diya-drawer-body, .diya-wizard-body) *)), .diya-drawer-body h4:not(:where([class*='diya-'], .diya-drawer-body [class*='diya-'] *)), .diya-chat-welcome h3:not(:where([class*='diya-'], .diya-chat-welcome [class*='diya-'] *)), .diya-side-navigation > strong) {
2911
+ font-weight: 600;
2912
+ letter-spacing: -0.015em;
2913
+ line-height: var(--diya-leading-tight);
2914
+ }
2915
+ /* The welcome's heading, at any level: a plain h3, or any heading with this class. */
2916
+ .diya-root .diya-chat-welcome .diya-chat-welcome-title { font-weight: 600; letter-spacing: -0.015em; line-height: var(--diya-leading-tight); }
2917
+ .diya-root .diya-chat-header > :where(div) > strong { font-size: var(--diya-text-large); font-weight: 600; }
2918
+ /* Underline tabs keep their tight inset at every size. */
2919
+ .diya-root .diya-tabs[data-variant='underline'][data-size] .diya-tab { padding-inline: 4px; }
2920
+ .diya-root .diya-switch-description[data-invalid] { color: var(--diya-color-error); }
2921
+ .diya-root .diya-slider-label { display: block; font-size: var(--diya-text-body); font-weight: 500; margin-bottom: 10px; overflow-wrap: anywhere; }
2922
+
2923
+ /* In-page surface titles are quiet: 15px at 550, so the content leads, not the frame. */
2924
+ .diya-root :is(.diya-card-title, .diya-analytics-title, .diya-project-form-title, .diya-upload-title, .diya-table-title, .diya-card-header h3:not(:where([class*='diya-'], .diya-card-header [class*='diya-'] *)), .diya-workflow-surface h3:not(:where([class*='diya-'], .diya-workflow-surface [class*='diya-']:not(.diya-workflow-surface, .diya-drawer-body, .diya-wizard-body) *))) {
2925
+ font-size: var(--diya-text-body);
2926
+ font-weight: 550;
2927
+ letter-spacing: -0.01em;
2928
+ line-height: 1.35;
2929
+ }
2930
+ .diya-root .diya-card-header p:not(:where([class*='diya-'], .diya-card-header [class*='diya-'] *)) { font-size: var(--diya-text-caption); margin-top: 4px; line-height: 1.55; }
2931
+ .diya-root .diya-analytics-title { margin-bottom: 4px; }
2932
+ .diya-root .diya-card-content { margin-top: 20px; }
2933
+
2934
+ /* A change that means something reads as a vivid chip: a bright tint behind a strong label. */
2935
+ .diya-root .diya-metric-change:is([data-meaning='positive'], [data-meaning='negative']) {
2936
+ padding: 1px 8px;
2937
+ border-radius: 999px;
2938
+ font-weight: 560;
2939
+ }
2940
+ .diya-root .diya-metric-change[data-meaning='positive'] { background: var(--diya-color-success-surface); }
2941
+ .diya-root .diya-metric-change[data-meaning='negative'] { background: var(--diya-color-error-surface); }
2942
+ @media (forced-colors: active) { .diya-root .diya-metric-change[data-meaning] { background: none; border: 1px solid CanvasText; } }
2943
+
2944
+
2945
+ /* prose/Prose.css: your own HTML in DIYA's type and rhythm. Every rule ends in the same
2946
+ guard, so it reaches plain elements in your content only: never a DIYA component placed
2947
+ inside, nor anything that component renders. Prose only spaces those components.
2948
+ Text sizes are set on the text, not on Prose itself, so nothing inherits into them. */
2949
+ .diya-root :is(.diya-prose, .diya-code-block) {
2950
+ --diya-internal-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
2951
+ --diya-internal-code-fill: var(--diya-color-recessed);
2952
+ --diya-internal-code-backdrop: none;
2953
+ /* A neutral hairline that holds on white, near-black and either Glass. */
2954
+ --diya-internal-code-edge: color-mix(in srgb, var(--diya-color-text) 10%, transparent);
2955
+ }
2956
+ .diya-root .diya-prose {
2957
+ --diya-internal-prose-font-body: var(--diya-text-large);
2958
+ --diya-internal-prose-font-small: var(--diya-text-body);
2959
+ --diya-internal-prose-font-h1: var(--diya-text-display);
2960
+ --diya-internal-prose-font-h2: var(--diya-text-heading);
2961
+ --diya-internal-prose-font-h3: var(--diya-text-title);
2962
+ --diya-internal-prose-font-h4: var(--diya-text-large);
2963
+ --diya-internal-prose-font-mark: var(--diya-text-hero);
2964
+ --diya-internal-prose-leading: 1.65;
2965
+ /* The space around blocks that stand apart: code, tables, figures, quotes and components. */
2966
+ --diya-internal-prose-gap: calc(var(--diya-internal-prose-font-body) * 1.6);
2967
+ min-width: 0;
2968
+ /* A comfortable reading measure, about 70 characters a line at every size. */
2969
+ max-width: calc(var(--diya-internal-prose-font-body) * 34);
2970
+ }
2971
+ .diya-root .diya-prose[data-size='small'] {
2972
+ --diya-internal-prose-font-body: var(--diya-text-body);
2973
+ --diya-internal-prose-font-small: var(--diya-text-caption);
2974
+ --diya-internal-prose-font-h1: var(--diya-text-heading);
2975
+ --diya-internal-prose-font-h2: var(--diya-text-title);
2976
+ --diya-internal-prose-font-h3: var(--diya-text-large);
2977
+ --diya-internal-prose-font-h4: var(--diya-text-body);
2978
+ --diya-internal-prose-font-mark: var(--diya-text-display);
2979
+ --diya-internal-prose-leading: 1.6;
2980
+ }
2981
+ .diya-root .diya-prose[data-size='large'] {
2982
+ --diya-internal-prose-font-body: var(--diya-text-title);
2983
+ --diya-internal-prose-font-small: var(--diya-text-large);
2984
+ --diya-internal-prose-font-h1: var(--diya-text-hero);
2985
+ --diya-internal-prose-font-h2: var(--diya-text-display);
2986
+ --diya-internal-prose-font-h3: var(--diya-text-heading);
2987
+ --diya-internal-prose-font-h4: var(--diya-text-title);
2988
+ --diya-internal-prose-leading: 1.6;
2989
+ }
2990
+ @media (max-width: 600px) {
2991
+ .diya-root .diya-prose[data-size='large'] {
2992
+ --diya-internal-prose-font-h1: var(--diya-text-display);
2993
+ --diya-internal-prose-font-h2: var(--diya-text-heading);
2994
+ }
2995
+ }
2996
+
2997
+ .diya-root .diya-prose :is(p, ul, ol, dl, blockquote):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
2998
+ margin: 0;
2999
+ color: var(--diya-color-text);
3000
+ font-size: var(--diya-internal-prose-font-body);
3001
+ line-height: var(--diya-internal-prose-leading);
3002
+ overflow-wrap: break-word;
3003
+ }
3004
+ .diya-root .diya-prose :is(p, li, dd, blockquote, figcaption):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3005
+ text-wrap: pretty;
3006
+ }
3007
+ .diya-root .diya-prose :is(td, th, figcaption, caption) :is(p, ul, ol, dl):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3008
+ font-size: inherit;
3009
+ line-height: inherit;
3010
+ }
3011
+ .diya-root .diya-prose :is(h1, h2, h3, h4, h5, h6):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3012
+ margin: 0;
3013
+ color: var(--diya-color-text);
3014
+ font-weight: 600;
3015
+ overflow-wrap: break-word;
3016
+ text-wrap: balance;
3017
+ }
3018
+ .diya-root .diya-prose h1:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3019
+ font-size: var(--diya-internal-prose-font-h1);
3020
+ line-height: 1.12;
3021
+ letter-spacing: -0.028em;
3022
+ }
3023
+ .diya-root .diya-prose h2:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3024
+ font-size: var(--diya-internal-prose-font-h2);
3025
+ line-height: 1.2;
3026
+ letter-spacing: -0.022em;
3027
+ }
3028
+ .diya-root .diya-prose h3:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3029
+ font-size: var(--diya-internal-prose-font-h3);
3030
+ line-height: 1.3;
3031
+ letter-spacing: -0.015em;
3032
+ }
3033
+ .diya-root .diya-prose :is(h4, h5, h6):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3034
+ font-size: var(--diya-internal-prose-font-h4);
3035
+ line-height: 1.4;
3036
+ letter-spacing: -0.01em;
3037
+ }
3038
+ .diya-root .diya-prose :is(pre, table, figure, hr):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin: 0; }
3039
+
3040
+ /* Rhythm: each block sits a measured step below the one before it, and the first has no
3041
+ space above. Headings take more space above than below, so they belong to what follows. */
3042
+ .diya-root .diya-prose * + :is(p, ul, ol, dl):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3043
+ margin-block-start: 1.1em;
3044
+ }
3045
+ .diya-root .diya-prose * + :is(blockquote, pre, table, figure, :where([role='region'])):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3046
+ margin-block-start: var(--diya-internal-prose-gap);
3047
+ }
3048
+ .diya-root .diya-prose :is(blockquote, pre, table, figure, :where([role='region'], [class*='diya-'])) + *:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3049
+ margin-block-start: var(--diya-internal-prose-gap);
3050
+ }
3051
+ .diya-root .diya-prose * + h1:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin-block-start: 1.3em; }
3052
+ .diya-root .diya-prose * + h2:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin-block-start: 1.7em; }
3053
+ .diya-root .diya-prose * + h3:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin-block-start: 1.55em; }
3054
+ .diya-root .diya-prose * + :is(h4, h5, h6):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3055
+ margin-block-start: 1.6em;
3056
+ }
3057
+ .diya-root .diya-prose h1 + *:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin-block-start: 0.85em; }
3058
+ .diya-root .diya-prose h2 + *:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin-block-start: 0.7em; }
3059
+ .diya-root .diya-prose :is(h3, h4, h5, h6) + *:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3060
+ margin-block-start: 0.5em;
3061
+ }
3062
+ .diya-root .diya-prose * + hr:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)),
3063
+ .diya-root .diya-prose hr + *:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3064
+ margin-block-start: calc(var(--diya-internal-prose-font-body) * 2.25);
3065
+ }
3066
+ /* DIYA components in the flow keep their own styles; Prose only gives them room. */
3067
+ .diya-root .diya-prose > * + :where([class*='diya-']),
3068
+ .diya-root .diya-prose :is(li, blockquote, figure, dd):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) > * + :where([class*='diya-']) {
3069
+ margin-block-start: var(--diya-internal-prose-gap);
3070
+ }
3071
+ .diya-root .diya-prose > :is(h1, h2, h3, h4, h5, h6) + :where([class*='diya-']) {
3072
+ margin-block-start: calc(var(--diya-internal-prose-font-body) * 0.7);
3073
+ }
3074
+
3075
+ .diya-root .diya-prose a:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3076
+ border-radius: 3px;
3077
+ color: var(--diya-color-text);
3078
+ text-decoration-line: underline;
3079
+ text-decoration-thickness: 1px;
3080
+ text-underline-offset: 0.24em;
3081
+ }
3082
+ .diya-root .diya-prose a:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)):hover { text-decoration-thickness: 2px; }
3083
+ .diya-root .diya-prose a:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)):focus-visible {
3084
+ outline: 2px solid var(--diya-color-text);
3085
+ outline-offset: 2px;
3086
+ }
3087
+ .diya-root .diya-prose :is(strong, b):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { font-weight: 600; }
3088
+ .diya-root .diya-prose small:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3089
+ font-size: max(var(--diya-text-caption), 0.85em);
3090
+ }
3091
+ .diya-root .diya-prose :is(sup, sub):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3092
+ font-size: max(var(--diya-text-caption), 0.75em);
3093
+ line-height: 0;
3094
+ }
3095
+
3096
+ .diya-root .diya-prose :is(ul, ol):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { padding-inline-start: 1.6em; }
3097
+ .diya-root .diya-prose ul:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { list-style: disc; }
3098
+ .diya-root .diya-prose ol:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { list-style: decimal; }
3099
+ .diya-root .diya-prose ul ul:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { list-style: circle; }
3100
+ .diya-root .diya-prose li:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { padding-inline-start: 0.3em; }
3101
+ .diya-root .diya-prose li + li:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)),
3102
+ .diya-root .diya-prose li > :is(ul, ol):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin-block-start: 0.4em; }
3103
+ .diya-root .diya-prose li:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *))::marker {
3104
+ color: var(--diya-color-muted);
3105
+ font-variant-numeric: tabular-nums;
3106
+ }
3107
+ .diya-root .diya-prose dt:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { font-weight: 600; }
3108
+ .diya-root .diya-prose dd:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin: 0; padding-inline-start: 1.25em; }
3109
+ .diya-root .diya-prose dd + dt:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin-block-start: 0.75em; }
3110
+
3111
+ /* A quote is set in from the text with a hanging quotation mark: no rule beside it. */
3112
+ .diya-root .diya-prose blockquote:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3113
+ position: relative;
3114
+ padding-inline-start: 1.6em;
3115
+ }
3116
+ .diya-root .diya-prose blockquote:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *))::before {
3117
+ content: '\201C';
3118
+ content: '\201C' / '';
3119
+ position: absolute;
3120
+ inset-block-start: 0.06em;
3121
+ inset-inline-start: -0.04em;
3122
+ color: var(--diya-color-muted);
3123
+ font-size: var(--diya-internal-prose-font-mark);
3124
+ font-weight: 400;
3125
+ line-height: 1;
3126
+ }
3127
+
3128
+ .diya-root .diya-prose hr:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3129
+ height: 0;
3130
+ border: 0;
3131
+ border-block-start: 1px solid var(--diya-color-line);
3132
+ }
3133
+
3134
+ .diya-root .diya-prose code:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3135
+ padding: 0.1em 0.32em;
3136
+ border-radius: calc(5px * var(--diya-corner-scale, 1));
3137
+ background: color-mix(in srgb, var(--diya-color-text) 7%, transparent);
3138
+ font-family: var(--diya-internal-mono);
3139
+ font-size: max(var(--diya-text-caption), 0.86em);
3140
+ font-variant-ligatures: none;
3141
+ -webkit-box-decoration-break: clone;
3142
+ box-decoration-break: clone;
3143
+ }
3144
+ /* Plain pre can't take keyboard focus, so its lines wrap rather than scroll. CodeBlock
3145
+ scrolls instead, in a region the keyboard can reach. */
3146
+ .diya-root .diya-prose pre:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3147
+ padding: 14px 16px;
3148
+ border: 1px solid var(--diya-internal-code-edge);
3149
+ border-radius: calc(12px * var(--diya-corner-scale, 1));
3150
+ background: var(--diya-internal-code-fill);
3151
+ backdrop-filter: var(--diya-internal-code-backdrop);
3152
+ color: var(--diya-color-text);
3153
+ font-family: var(--diya-internal-mono);
3154
+ font-size: var(--diya-text-caption);
3155
+ font-variant-ligatures: none;
3156
+ line-height: 1.7;
3157
+ tab-size: 4;
3158
+ white-space: pre-wrap;
3159
+ overflow-wrap: anywhere;
3160
+ }
3161
+ .diya-root .diya-prose pre code:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3162
+ padding: 0;
3163
+ border-radius: 0;
3164
+ background: none;
3165
+ font-size: inherit;
3166
+ }
3167
+ .diya-root .diya-prose kbd:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3168
+ display: inline-block;
3169
+ min-width: 1.6em;
3170
+ padding: 0 0.4em;
3171
+ border: 1px solid var(--diya-color-line);
3172
+ border-radius: calc(5px * var(--diya-corner-scale, 1));
3173
+ background: var(--diya-color-raised);
3174
+ box-shadow: inset 0 -1px 0 var(--diya-color-line);
3175
+ color: var(--diya-color-text);
3176
+ font-family: inherit;
3177
+ font-size: max(var(--diya-text-caption), 0.82em);
3178
+ font-weight: 500;
3179
+ line-height: 1.6;
3180
+ text-align: center;
3181
+ white-space: nowrap;
3182
+ }
3183
+
3184
+ /* Tables fit the measure: words wrap whole, and links and code, the long ones, break
3185
+ anywhere, so a table doesn't run off a phone. Wrap a wide table in an element with
3186
+ role="region", an aria-label and tabindex="0" to let it scroll sideways instead. */
3187
+ .diya-root .diya-prose table:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3188
+ width: 100%;
3189
+ border-collapse: collapse;
3190
+ color: var(--diya-color-text);
3191
+ font-size: var(--diya-internal-prose-font-small);
3192
+ font-variant-numeric: tabular-nums;
3193
+ line-height: 1.55;
3194
+ }
3195
+ .diya-root .diya-prose caption:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3196
+ padding-block-end: 0.75em;
3197
+ color: var(--diya-color-muted);
3198
+ text-align: start;
3199
+ }
3200
+ .diya-root .diya-prose :is(th, td):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3201
+ padding: 0.7em 1em;
3202
+ border-block-end: 1px solid var(--diya-color-line);
3203
+ overflow-wrap: break-word;
3204
+ vertical-align: top;
3205
+ }
3206
+ .diya-root .diya-prose :is(th, td) :is(a, code):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3207
+ overflow-wrap: anywhere;
3208
+ }
3209
+ .diya-root .diya-prose th:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { font-weight: 600; }
3210
+ .diya-root .diya-prose th:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)):not([align]) { text-align: start; }
3211
+ .diya-root .diya-prose thead th:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3212
+ border-block-end-color: color-mix(in srgb, var(--diya-color-text) 26%, transparent);
3213
+ vertical-align: bottom;
3214
+ }
3215
+ .diya-root .diya-prose :is(th, td):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)):first-child {
3216
+ padding-inline-start: 0;
3217
+ }
3218
+ .diya-root .diya-prose :is(th, td):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)):last-child {
3219
+ padding-inline-end: 0;
3220
+ }
3221
+ .diya-root .diya-prose [role='region'][tabindex]:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3222
+ max-width: 100%;
3223
+ overflow-x: auto;
3224
+ overscroll-behavior-x: contain;
3225
+ scrollbar-color: color-mix(in srgb, var(--diya-color-muted) 50%, transparent) transparent;
3226
+ scrollbar-width: thin;
3227
+ }
3228
+ .diya-root .diya-prose [role='region'][tabindex]:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)):focus-visible {
3229
+ outline: 2px solid var(--diya-color-text);
3230
+ outline-offset: 4px;
3231
+ }
3232
+ .diya-root .diya-prose [role='region'] :is(th, td, a, code):not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3233
+ overflow-wrap: normal;
3234
+ }
3235
+ .diya-root .diya-prose [role='region'] th:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { white-space: nowrap; }
3236
+
3237
+ .diya-root .diya-prose img:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { max-width: 100%; height: auto; }
3238
+ .diya-root .diya-prose > img:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)),
3239
+ .diya-root .diya-prose figure > img:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3240
+ display: block;
3241
+ border-radius: calc(10px * var(--diya-corner-scale, 1));
3242
+ }
3243
+ .diya-root .diya-prose > * + img:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)),
3244
+ .diya-root .diya-prose > img + *:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3245
+ margin-block-start: var(--diya-internal-prose-gap);
3246
+ }
3247
+ .diya-root .diya-prose figure > * + *:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { margin-block-start: 0.85em; }
3248
+ .diya-root .diya-prose figcaption:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) {
3249
+ color: var(--diya-color-muted);
3250
+ font-size: var(--diya-internal-prose-font-small);
3251
+ line-height: 1.5;
3252
+ }
3253
+
3254
+ @media (forced-colors: active) {
3255
+ .diya-root .diya-prose a:not(:where([class*='diya-'], .diya-prose [class*='diya-']:not(.diya-prose) *)) { color: LinkText; }
3256
+ }
3257
+
3258
+
3259
+ /* code-block/CodeBlock.css: portable component rules. It sets its own type, so the text
3260
+ around it (a list item, a quote, Prose) never reaches the code. */
3261
+ .diya-root .diya-code-block {
3262
+ position: relative;
3263
+ display: grid;
3264
+ grid-template-columns: minmax(0, 1fr) auto;
3265
+ align-items: start;
3266
+ min-width: 0;
3267
+ max-width: 100%;
3268
+ border: 1px solid var(--diya-internal-code-edge);
3269
+ --diya-internal-code-corner: max(0px, calc(12px * var(--diya-corner-scale, 1) - 1px));
3270
+ border-radius: calc(12px * var(--diya-corner-scale, 1));
3271
+ background: var(--diya-internal-code-fill);
3272
+ backdrop-filter: var(--diya-internal-code-backdrop);
3273
+ color: var(--diya-color-text);
3274
+ font-size: var(--diya-text-caption);
3275
+ font-style: normal;
3276
+ font-weight: 400;
3277
+ letter-spacing: normal;
3278
+ line-height: 1.5;
3279
+ overflow-wrap: normal;
3280
+ text-align: start;
3281
+ text-transform: none;
3282
+ text-wrap: wrap;
3283
+ }
3284
+ .diya-root .diya-code-block-header {
3285
+ grid-column: 1 / -1;
3286
+ display: flex;
3287
+ align-items: center;
3288
+ justify-content: space-between;
3289
+ gap: 12px;
3290
+ min-width: 0;
3291
+ padding: 6px 6px 6px 16px;
3292
+ border-block-end: 1px solid var(--diya-internal-code-edge);
3293
+ }
3294
+ .diya-root .diya-code-block-label {
3295
+ min-width: 0;
3296
+ overflow: hidden;
3297
+ color: var(--diya-color-muted);
3298
+ font-size: var(--diya-text-caption);
3299
+ font-weight: 500;
3300
+ text-overflow: ellipsis;
3301
+ white-space: nowrap;
3302
+ }
3303
+ .diya-root .diya-code-block-code {
3304
+ min-width: 0;
3305
+ margin: 0;
3306
+ padding: 12px 16px;
3307
+ overflow-x: auto;
3308
+ overflow-y: hidden;
3309
+ overscroll-behavior-x: contain;
3310
+ color: var(--diya-color-text);
3311
+ font-family: var(--diya-internal-mono);
3312
+ font-size: var(--diya-text-caption);
3313
+ font-variant-ligatures: none;
3314
+ line-height: 1.7;
3315
+ tab-size: 4;
3316
+ white-space: pre;
3317
+ scrollbar-color: color-mix(in srgb, var(--diya-color-muted) 50%, transparent) transparent;
3318
+ scrollbar-width: thin;
3319
+ }
3320
+ .diya-root .diya-code-block[data-labelled='true'] .diya-code-block-code { grid-column: 1 / -1; padding-block: 14px 16px; }
3321
+ .diya-root .diya-code-block-code code { font: inherit; color: inherit; }
3322
+ .diya-root .diya-code-block .diya-code-block-copy { gap: 6px; padding-inline: 10px 12px; color: var(--diya-color-muted); }
3323
+ .diya-root .diya-code-block .diya-code-block-copy:hover { color: var(--diya-color-text); }
3324
+ .diya-root .diya-code-block > .diya-code-block-copy { margin: 8px 8px 8px 0; }
3325
+ .diya-root .diya-code-block-code:focus-visible { outline: 2px solid var(--diya-color-text); outline-offset: -2px; }
3326
+ /* The code region's corners follow the block's, so its focus ring sits neatly inside. */
3327
+ .diya-root .diya-code-block-code { border-radius: var(--diya-internal-code-corner) 0 0 var(--diya-internal-code-corner); }
3328
+ .diya-root .diya-code-block[data-labelled='true'] .diya-code-block-code { border-radius: 0 0 var(--diya-internal-code-corner) var(--diya-internal-code-corner); }
3329
+ /* The live region: read out quietly after Copy, and shown only when copying failed. */
3330
+ .diya-root .diya-code-block-status:not([data-failed]) {
3331
+ position: absolute;
3332
+ width: 1px;
3333
+ height: 1px;
3334
+ overflow: hidden;
3335
+ clip-path: inset(50%);
3336
+ white-space: nowrap;
3337
+ }
3338
+ .diya-root .diya-code-block-status[data-failed] {
3339
+ grid-column: 1 / -1;
3340
+ padding: 10px 16px 12px;
3341
+ border-block-start: 1px solid var(--diya-internal-code-edge);
3342
+ color: var(--diya-color-muted);
3343
+ font-size: var(--diya-text-caption);
3344
+ line-height: 1.5;
3345
+ }
3346
+ @media print {
3347
+ .diya-root .diya-code-block-code { white-space: pre-wrap; }
3348
+ .diya-root .diya-code-block .diya-code-block-copy { display: none; }
3349
+ }
3350
+
3351
+ /* Code on Glass is a smoked pane, clear enough to show the backdrop, dense enough to read. */
3352
+ @supports (backdrop-filter: blur(14px)) {
3353
+ .diya-root[data-glass='true'] :is(.diya-prose, .diya-code-block) {
3354
+ --diya-internal-code-fill: color-mix(in srgb, var(--diya-color-recessed) 52%, transparent);
3355
+ --diya-internal-code-backdrop: var(--diya-internal-blur);
3356
+ }
3357
+ .diya-root[data-glass='true']:where([data-theme='light']) :is(.diya-prose, .diya-code-block) {
3358
+ --diya-internal-code-fill: color-mix(in srgb, var(--diya-color-recessed) 66%, transparent);
3359
+ }
3360
+ @media (prefers-color-scheme: light) {
3361
+ .diya-root[data-glass='true']:where([data-theme='system']) :is(.diya-prose, .diya-code-block) {
3362
+ --diya-internal-code-fill: color-mix(in srgb, var(--diya-color-recessed) 66%, transparent);
3363
+ }
3364
+ }
3365
+ }
3366
+ @media (prefers-contrast: more) {
3367
+ .diya-root :is(.diya-prose, .diya-code-block) { --diya-internal-code-edge: color-mix(in srgb, var(--diya-color-text) 40%, transparent); }
3368
+ }
3369
+ @media (prefers-contrast: more), (prefers-reduced-transparency: reduce) {
3370
+ .diya-root[data-glass='true'] :is(.diya-prose, .diya-code-block) {
3371
+ --diya-internal-code-fill: var(--diya-color-recessed);
3372
+ --diya-internal-code-backdrop: none;
3373
+ }
3374
+ }
3375
+
3376
+ /* A surface inside a card, form, dialog or drawer sits on that surface: it drops its own frame,
3377
+ so the page never shows a card inside a card. A Drawer keeps its own: it opens above the page.
3378
+ As specific as the Glass surface rule, and later. */
3379
+ .diya-root :is(.diya-card-content, .diya-workflow-surface, .diya-drawer-body, .diya-dialog-content) :is(.diya-workflow-surface:not(dialog), .diya-table .diya-table-scroll) {
3380
+ border: 0;
3381
+ background: transparent;
3382
+ box-shadow: none;
3383
+ backdrop-filter: none;
3384
+ }
3385
+
3386
+ }