@bauer-group/accessibility-widget 1.0.3

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 (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +259 -0
  3. package/dist/accessibility-widget-core.min.js +6 -0
  4. package/dist/accessibility-widget-core.min.js.map +7 -0
  5. package/dist/accessibility-widget-loader.min.js +14 -0
  6. package/dist/accessibility-widget-loader.min.js.map +7 -0
  7. package/dist/accessibility-widget.min.css +7 -0
  8. package/dist/accessibility-widget.min.css.map +7 -0
  9. package/dist/config.d.ts +33 -0
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/core.d.ts +31 -0
  12. package/dist/core.d.ts.map +1 -0
  13. package/dist/features/apply.d.ts +3 -0
  14. package/dist/features/apply.d.ts.map +1 -0
  15. package/dist/features/profile.d.ts +3 -0
  16. package/dist/features/profile.d.ts.map +1 -0
  17. package/dist/features/reading-guide.d.ts +2 -0
  18. package/dist/features/reading-guide.d.ts.map +1 -0
  19. package/dist/features/reading-mask.d.ts +2 -0
  20. package/dist/features/reading-mask.d.ts.map +1 -0
  21. package/dist/features/structure-nav.d.ts +2 -0
  22. package/dist/features/structure-nav.d.ts.map +1 -0
  23. package/dist/features/tts.d.ts +7 -0
  24. package/dist/features/tts.d.ts.map +1 -0
  25. package/dist/focus-trap.d.ts +6 -0
  26. package/dist/focus-trap.d.ts.map +1 -0
  27. package/dist/i18n/ar.d.ts +3 -0
  28. package/dist/i18n/ar.d.ts.map +1 -0
  29. package/dist/i18n/bn.d.ts +3 -0
  30. package/dist/i18n/bn.d.ts.map +1 -0
  31. package/dist/i18n/cs.d.ts +3 -0
  32. package/dist/i18n/cs.d.ts.map +1 -0
  33. package/dist/i18n/de.d.ts +3 -0
  34. package/dist/i18n/de.d.ts.map +1 -0
  35. package/dist/i18n/el.d.ts +3 -0
  36. package/dist/i18n/el.d.ts.map +1 -0
  37. package/dist/i18n/en.d.ts +3 -0
  38. package/dist/i18n/en.d.ts.map +1 -0
  39. package/dist/i18n/es.d.ts +3 -0
  40. package/dist/i18n/es.d.ts.map +1 -0
  41. package/dist/i18n/fa.d.ts +3 -0
  42. package/dist/i18n/fa.d.ts.map +1 -0
  43. package/dist/i18n/fr.d.ts +3 -0
  44. package/dist/i18n/fr.d.ts.map +1 -0
  45. package/dist/i18n/he.d.ts +3 -0
  46. package/dist/i18n/he.d.ts.map +1 -0
  47. package/dist/i18n/hi.d.ts +3 -0
  48. package/dist/i18n/hi.d.ts.map +1 -0
  49. package/dist/i18n/hu.d.ts +3 -0
  50. package/dist/i18n/hu.d.ts.map +1 -0
  51. package/dist/i18n/id.d.ts +3 -0
  52. package/dist/i18n/id.d.ts.map +1 -0
  53. package/dist/i18n/index.d.ts +6 -0
  54. package/dist/i18n/index.d.ts.map +1 -0
  55. package/dist/i18n/it.d.ts +3 -0
  56. package/dist/i18n/it.d.ts.map +1 -0
  57. package/dist/i18n/ja.d.ts +3 -0
  58. package/dist/i18n/ja.d.ts.map +1 -0
  59. package/dist/i18n/ko.d.ts +3 -0
  60. package/dist/i18n/ko.d.ts.map +1 -0
  61. package/dist/i18n/nl.d.ts +3 -0
  62. package/dist/i18n/nl.d.ts.map +1 -0
  63. package/dist/i18n/pl.d.ts +3 -0
  64. package/dist/i18n/pl.d.ts.map +1 -0
  65. package/dist/i18n/pt.d.ts +3 -0
  66. package/dist/i18n/pt.d.ts.map +1 -0
  67. package/dist/i18n/ro.d.ts +3 -0
  68. package/dist/i18n/ro.d.ts.map +1 -0
  69. package/dist/i18n/ru.d.ts +3 -0
  70. package/dist/i18n/ru.d.ts.map +1 -0
  71. package/dist/i18n/sv.d.ts +3 -0
  72. package/dist/i18n/sv.d.ts.map +1 -0
  73. package/dist/i18n/th.d.ts +3 -0
  74. package/dist/i18n/th.d.ts.map +1 -0
  75. package/dist/i18n/tr.d.ts +3 -0
  76. package/dist/i18n/tr.d.ts.map +1 -0
  77. package/dist/i18n/types.d.ts +44 -0
  78. package/dist/i18n/types.d.ts.map +1 -0
  79. package/dist/i18n/uk.d.ts +3 -0
  80. package/dist/i18n/uk.d.ts.map +1 -0
  81. package/dist/i18n/ur.d.ts +3 -0
  82. package/dist/i18n/ur.d.ts.map +1 -0
  83. package/dist/i18n/vi.d.ts +3 -0
  84. package/dist/i18n/vi.d.ts.map +1 -0
  85. package/dist/i18n/zh.d.ts +3 -0
  86. package/dist/i18n/zh.d.ts.map +1 -0
  87. package/dist/index.d.ts +10 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/integrity.json +9 -0
  90. package/dist/integrity.txt +12 -0
  91. package/dist/loader.d.ts +2 -0
  92. package/dist/loader.d.ts.map +1 -0
  93. package/dist/panel/drag.d.ts +34 -0
  94. package/dist/panel/drag.d.ts.map +1 -0
  95. package/dist/panel/panel.d.ts +23 -0
  96. package/dist/panel/panel.d.ts.map +1 -0
  97. package/dist/state.d.ts +18 -0
  98. package/dist/state.d.ts.map +1 -0
  99. package/dist/styles/critical.d.ts +16 -0
  100. package/dist/styles/critical.d.ts.map +1 -0
  101. package/dist/types/index.d.ts +3 -0
  102. package/dist/types/index.d.ts.map +1 -0
  103. package/dist/types/locale.d.ts +11 -0
  104. package/dist/types/locale.d.ts.map +1 -0
  105. package/dist/types/widget.d.ts +207 -0
  106. package/dist/types/widget.d.ts.map +1 -0
  107. package/dist/util/debug.d.ts +8 -0
  108. package/dist/util/debug.d.ts.map +1 -0
  109. package/dist/util/dom.d.ts +19 -0
  110. package/dist/util/dom.d.ts.map +1 -0
  111. package/dist/util/events.d.ts +38 -0
  112. package/dist/util/events.d.ts.map +1 -0
  113. package/dist/util/feature-icons.d.ts +33 -0
  114. package/dist/util/feature-icons.d.ts.map +1 -0
  115. package/dist/util/language-names.d.ts +12 -0
  116. package/dist/util/language-names.d.ts.map +1 -0
  117. package/dist/util/svg.d.ts +38 -0
  118. package/dist/util/svg.d.ts.map +1 -0
  119. package/package.json +67 -0
  120. package/src/config.ts +213 -0
  121. package/src/core.ts +173 -0
  122. package/src/features/apply.ts +37 -0
  123. package/src/features/profile.ts +18 -0
  124. package/src/features/reading-guide.ts +25 -0
  125. package/src/features/reading-mask.ts +25 -0
  126. package/src/features/structure-nav.ts +43 -0
  127. package/src/features/tts.ts +73 -0
  128. package/src/focus-trap.ts +35 -0
  129. package/src/globals.d.ts +63 -0
  130. package/src/i18n/ar.ts +48 -0
  131. package/src/i18n/bn.ts +48 -0
  132. package/src/i18n/cs.ts +48 -0
  133. package/src/i18n/de.ts +65 -0
  134. package/src/i18n/el.ts +48 -0
  135. package/src/i18n/en.ts +65 -0
  136. package/src/i18n/es.ts +48 -0
  137. package/src/i18n/fa.ts +48 -0
  138. package/src/i18n/fr.ts +48 -0
  139. package/src/i18n/he.ts +48 -0
  140. package/src/i18n/hi.ts +48 -0
  141. package/src/i18n/hu.ts +48 -0
  142. package/src/i18n/id.ts +48 -0
  143. package/src/i18n/index.ts +70 -0
  144. package/src/i18n/it.ts +48 -0
  145. package/src/i18n/ja.ts +48 -0
  146. package/src/i18n/ko.ts +48 -0
  147. package/src/i18n/nl.ts +48 -0
  148. package/src/i18n/pl.ts +48 -0
  149. package/src/i18n/pt.ts +48 -0
  150. package/src/i18n/ro.ts +48 -0
  151. package/src/i18n/ru.ts +48 -0
  152. package/src/i18n/sv.ts +48 -0
  153. package/src/i18n/th.ts +48 -0
  154. package/src/i18n/tr.ts +48 -0
  155. package/src/i18n/types.ts +36 -0
  156. package/src/i18n/uk.ts +48 -0
  157. package/src/i18n/ur.ts +48 -0
  158. package/src/i18n/vi.ts +48 -0
  159. package/src/i18n/zh.ts +48 -0
  160. package/src/index.ts +9 -0
  161. package/src/loader.ts +533 -0
  162. package/src/panel/drag.ts +210 -0
  163. package/src/panel/panel.ts +617 -0
  164. package/src/state.ts +91 -0
  165. package/src/styles/critical.ts +56 -0
  166. package/src/styles/widget.css +739 -0
  167. package/src/types/index.ts +2 -0
  168. package/src/types/locale.ts +55 -0
  169. package/src/types/widget.ts +300 -0
  170. package/src/util/debug.ts +12 -0
  171. package/src/util/dom.ts +68 -0
  172. package/src/util/events.ts +54 -0
  173. package/src/util/feature-icons.ts +163 -0
  174. package/src/util/language-names.ts +41 -0
  175. package/src/util/svg.ts +93 -0
@@ -0,0 +1,739 @@
1
+ /*!
2
+ * BAUER GROUP Accessibility Widget — Panel CSS (loaded on-demand)
3
+ * SPDX-License-Identifier: AGPL-3.0-only · © 2026 BAUER GROUP
4
+ * AGPL-3.0-only or commercial (info@bauer-group.com) — see LICENSE / LICENSING.md
5
+ */
6
+
7
+ .aw-panel {
8
+ position: fixed;
9
+ z-index: 2147483647;
10
+ width: 420px;
11
+ max-width: 95vw;
12
+ max-height: 85vh;
13
+ overflow-y: auto;
14
+ /* `overflow-y: auto` silently forces `overflow-x: auto` — which would
15
+ expose a horizontal scrollbar the moment any tooltip peeks over the
16
+ right edge, causing the widget to "jump" as the scrollbar appears.
17
+ `hidden` blocks horizontal scroll while keeping vertical intact. */
18
+ overflow-x: hidden;
19
+ background: #fff;
20
+ color: #111;
21
+ border-radius: 12px;
22
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.2);
23
+ font:
24
+ 16px / 1.5 -apple-system,
25
+ BlinkMacSystemFont,
26
+ 'Segoe UI',
27
+ Roboto,
28
+ 'Helvetica Neue',
29
+ sans-serif;
30
+ padding: 16px 20px 20px;
31
+ }
32
+ .aw-panel--bottom-right {
33
+ bottom: 80px;
34
+ right: 20px;
35
+ }
36
+ .aw-panel--bottom-left {
37
+ bottom: 80px;
38
+ left: 20px;
39
+ }
40
+ .aw-panel--top-right {
41
+ top: 80px;
42
+ right: 20px;
43
+ }
44
+ .aw-panel--top-left {
45
+ top: 80px;
46
+ left: 20px;
47
+ }
48
+
49
+ .aw-header {
50
+ display: flex;
51
+ justify-content: space-between;
52
+ align-items: center;
53
+ margin-bottom: 12px;
54
+ border-bottom: 1px solid #e0e0e0;
55
+ padding-bottom: 12px;
56
+ cursor: grab;
57
+ touch-action: none;
58
+ -webkit-user-select: none;
59
+ user-select: none;
60
+ }
61
+ .aw-header.is-dragging {
62
+ cursor: grabbing;
63
+ }
64
+ .aw-drag-grip {
65
+ display: inline-flex;
66
+ align-items: center;
67
+ justify-content: center;
68
+ color: #888;
69
+ margin-inline-end: 8px;
70
+ flex: 0 0 auto;
71
+ }
72
+ @media (pointer: coarse) {
73
+ /* Touch devices: show the grip but don't enable pointer drag on narrow viewports.
74
+ Panel position on mobile is controlled by CSS preset + safe-area insets. */
75
+ .aw-drag-grip {
76
+ opacity: 0.5;
77
+ }
78
+ }
79
+ .aw-title {
80
+ font-size: 1.25rem;
81
+ font-weight: 700;
82
+ margin: 0;
83
+ color: #0058a3;
84
+ }
85
+ .aw-close {
86
+ background: transparent;
87
+ border: 2px solid transparent;
88
+ cursor: pointer;
89
+ color: #444;
90
+ padding: 4px;
91
+ border-radius: 4px;
92
+ }
93
+ .aw-close:hover,
94
+ .aw-close:focus-visible {
95
+ background: #f0f0f0;
96
+ outline: 2px solid #0058a3;
97
+ }
98
+ .aw-close svg {
99
+ width: 20px;
100
+ height: 20px;
101
+ }
102
+
103
+ .aw-toolbar {
104
+ display: flex;
105
+ gap: 8px;
106
+ margin-bottom: 12px;
107
+ align-items: stretch;
108
+ }
109
+ .aw-tool {
110
+ display: inline-flex;
111
+ align-items: center;
112
+ gap: 6px;
113
+ padding: 6px 10px;
114
+ border-radius: 8px;
115
+ border: 2px solid #d1e0ee;
116
+ background: #f7f9fc;
117
+ color: #0058a3;
118
+ font: inherit;
119
+ font-size: 0.85rem;
120
+ cursor: pointer;
121
+ }
122
+ .aw-tool:hover,
123
+ .aw-tool:focus-within,
124
+ .aw-tool:focus-visible {
125
+ border-color: #0058a3;
126
+ outline: 3px solid #ff6a00;
127
+ outline-offset: 1px;
128
+ }
129
+ .aw-tool--lang {
130
+ flex: 1 1 auto;
131
+ }
132
+ .aw-tool--lang select.aw-lang {
133
+ background: transparent;
134
+ border: 0;
135
+ color: inherit;
136
+ font: inherit;
137
+ padding: 2px 0;
138
+ width: 100%;
139
+ cursor: pointer;
140
+ }
141
+ .aw-tool--lang select.aw-lang:focus {
142
+ outline: none;
143
+ }
144
+ .aw-tool--oversize.is-on {
145
+ background: #0058a3;
146
+ color: #fff;
147
+ border-color: #003c73;
148
+ }
149
+
150
+ .aw-panel--xl {
151
+ width: 520px;
152
+ font-size: 1.08rem;
153
+ }
154
+ .aw-panel--xl .aw-feat-grid {
155
+ grid-auto-rows: 160px;
156
+ }
157
+ .aw-panel--xl .aw-feat {
158
+ padding: 14px 10px 12px;
159
+ }
160
+ .aw-panel--xl .aw-feat-icon svg {
161
+ width: 34px;
162
+ height: 34px;
163
+ }
164
+ .aw-panel--xl .aw-feat-label {
165
+ font-size: 0.95rem;
166
+ }
167
+ .aw-panel--xl .aw-profile-btn {
168
+ padding: 14px 10px;
169
+ font-size: 1rem;
170
+ }
171
+
172
+ .aw-section {
173
+ margin-bottom: 16px;
174
+ }
175
+ .aw-h3 {
176
+ font-size: 0.95rem;
177
+ font-weight: 600;
178
+ margin: 0 0 8px;
179
+ color: #333;
180
+ text-transform: uppercase;
181
+ letter-spacing: 0.03em;
182
+ }
183
+
184
+ .aw-profile-grid {
185
+ display: grid;
186
+ grid-template-columns: 1fr 1fr;
187
+ gap: 8px;
188
+ }
189
+ .aw-profile-btn {
190
+ background: #f7f9fc;
191
+ color: #0058a3;
192
+ border: 2px solid #d1e0ee;
193
+ padding: 10px 8px;
194
+ border-radius: 8px;
195
+ font-size: 0.875rem;
196
+ font-weight: 600;
197
+ cursor: pointer;
198
+ text-align: center;
199
+ transition:
200
+ background 0.15s,
201
+ border-color 0.15s;
202
+ }
203
+ .aw-profile-btn:hover,
204
+ .aw-profile-btn:focus-visible {
205
+ background: #e5efff;
206
+ border-color: #0058a3;
207
+ outline: 3px solid #ff6a00;
208
+ outline-offset: 1px;
209
+ }
210
+
211
+ .aw-feat-grid {
212
+ display: grid;
213
+ grid-template-columns: repeat(3, 1fr);
214
+ /* Every row is locked to the same height so cards look identical
215
+ regardless of label length / language. 136px fits 3-line labels plus
216
+ icon, stage-dots and status badge across every supported translation. */
217
+ grid-auto-rows: 136px;
218
+ gap: 8px;
219
+ }
220
+ .aw-feat {
221
+ position: relative;
222
+ display: grid;
223
+ grid-template-rows: auto minmax(0, 1fr) auto;
224
+ justify-items: center;
225
+ align-items: center;
226
+ gap: 4px;
227
+ background: #fff;
228
+ border: 2px solid #e0e0e0;
229
+ border-radius: 10px;
230
+ padding: 12px 8px 10px;
231
+ cursor: pointer;
232
+ font: inherit;
233
+ text-align: center;
234
+ color: #111;
235
+ overflow: hidden;
236
+ transition:
237
+ border-color 0.15s,
238
+ background 0.15s;
239
+ }
240
+ .aw-feat:hover,
241
+ .aw-feat:focus-visible {
242
+ background: #eaf1f9;
243
+ outline: 3px solid #ff6a00;
244
+ outline-offset: 1px;
245
+ }
246
+ .aw-feat.is-on {
247
+ background: #eef5ff;
248
+ border-color: #0058a3;
249
+ color: #002c57;
250
+ }
251
+ .aw-feat-icon {
252
+ display: inline-flex;
253
+ align-items: center;
254
+ justify-content: center;
255
+ width: 28px;
256
+ height: 28px;
257
+ color: #0058a3;
258
+ }
259
+ .aw-feat.is-on .aw-feat-icon {
260
+ color: #003c73;
261
+ }
262
+ .aw-feat-label {
263
+ font-size: 0.85rem;
264
+ font-weight: 600;
265
+ line-height: 1.2;
266
+ overflow-wrap: anywhere;
267
+ }
268
+ .aw-feat-badge {
269
+ display: inline-block;
270
+ min-width: 28px;
271
+ padding: 1px 7px;
272
+ background: #e9eff7;
273
+ color: #0058a3;
274
+ border-radius: 999px;
275
+ font-size: 0.72rem;
276
+ font-weight: 700;
277
+ text-align: center;
278
+ line-height: 1.4;
279
+ }
280
+ .aw-stage-dots {
281
+ display: inline-flex;
282
+ gap: 3px;
283
+ align-items: center;
284
+ justify-content: center;
285
+ width: 100%;
286
+ margin: 2px 0 1px;
287
+ }
288
+ .aw-stage-dot {
289
+ flex: 1 1 0;
290
+ max-width: 18px;
291
+ height: 4px;
292
+ border-radius: 2px;
293
+ background: #d1e0ee;
294
+ transition: background 0.15s;
295
+ }
296
+ .aw-stage-dot.is-filled {
297
+ background: #0058a3;
298
+ }
299
+ .aw-feat.is-on .aw-stage-dot {
300
+ background: #b6cce5;
301
+ }
302
+ .aw-feat.is-on .aw-stage-dot.is-filled {
303
+ background: #003c73;
304
+ }
305
+ .aw-feat.is-on .aw-feat-badge {
306
+ background: #0058a3;
307
+ color: #fff;
308
+ }
309
+ .aw-feat-check {
310
+ position: absolute;
311
+ top: 6px;
312
+ inset-inline-end: 6px;
313
+ width: 20px;
314
+ height: 20px;
315
+ display: none;
316
+ align-items: center;
317
+ justify-content: center;
318
+ border-radius: 50%;
319
+ background: #0058a3;
320
+ color: #fff;
321
+ }
322
+ .aw-feat.is-on .aw-feat-check {
323
+ display: inline-flex;
324
+ }
325
+ .aw-feat-info {
326
+ position: absolute;
327
+ top: 6px;
328
+ inset-inline-start: 6px;
329
+ width: 18px;
330
+ height: 18px;
331
+ display: inline-flex;
332
+ align-items: center;
333
+ justify-content: center;
334
+ border-radius: 50%;
335
+ color: #6b8aac;
336
+ background: #eef2f7;
337
+ }
338
+ .aw-feat.is-on .aw-feat-info {
339
+ color: #0058a3;
340
+ background: #fff;
341
+ }
342
+
343
+ .aw-feat-wrap {
344
+ position: relative;
345
+ display: flex;
346
+ flex-direction: column;
347
+ }
348
+ .aw-feat-wrap > .aw-feat {
349
+ width: 100%;
350
+ }
351
+ .aw-feat-tooltip {
352
+ position: absolute;
353
+ top: calc(100% + 6px);
354
+ /* Default: centered on card (middle column in 3-col layout). Left/right
355
+ columns get their tooltip pinned to the corresponding edge via the
356
+ nth-child rules below, so the overlay never escapes the panel. */
357
+ left: 50%;
358
+ transform: translateX(-50%);
359
+ z-index: 10;
360
+ display: none;
361
+ width: max-content;
362
+ min-width: 180px;
363
+ max-width: 260px;
364
+ padding: 8px 12px;
365
+ background: #111;
366
+ color: #fff;
367
+ font-size: 0.78rem;
368
+ font-weight: 400;
369
+ line-height: 1.4;
370
+ text-align: center;
371
+ border-radius: 6px;
372
+ box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
373
+ pointer-events: none;
374
+ overflow-wrap: anywhere;
375
+ word-wrap: break-word;
376
+ white-space: normal;
377
+ }
378
+ .aw-feat-wrap:hover > .aw-feat-tooltip,
379
+ .aw-feat-wrap:focus-within > .aw-feat-tooltip {
380
+ display: block;
381
+ }
382
+ /* 3-column grid: left-column tiles anchor their tooltip to the card's
383
+ left edge, right-column tiles to the right edge. Middle column keeps
384
+ the default centered position. Without these rules, edge tooltips slid
385
+ past the panel boundary and triggered a horizontal scroll. */
386
+ .aw-feat-grid > .aw-feat-wrap:nth-child(3n + 1) > .aw-feat-tooltip {
387
+ left: 0;
388
+ right: auto;
389
+ transform: none;
390
+ }
391
+ .aw-feat-grid > .aw-feat-wrap:nth-child(3n) > .aw-feat-tooltip {
392
+ left: auto;
393
+ right: 0;
394
+ transform: none;
395
+ }
396
+ @media (max-width: 380px) {
397
+ /* 2-column fallback: odd columns anchor-left, even anchor-right. */
398
+ .aw-feat-grid > .aw-feat-wrap:nth-child(odd) > .aw-feat-tooltip {
399
+ left: 0;
400
+ right: auto;
401
+ transform: none;
402
+ }
403
+ .aw-feat-grid > .aw-feat-wrap:nth-child(even) > .aw-feat-tooltip {
404
+ left: auto;
405
+ right: 0;
406
+ transform: none;
407
+ }
408
+ }
409
+
410
+ .aw-summary {
411
+ display: flex;
412
+ align-items: center;
413
+ justify-content: space-between;
414
+ cursor: pointer;
415
+ list-style: none;
416
+ padding: 4px 0;
417
+ margin-bottom: 4px;
418
+ }
419
+ .aw-summary::-webkit-details-marker {
420
+ display: none;
421
+ }
422
+ .aw-summary svg {
423
+ transition: transform 0.15s;
424
+ }
425
+ .aw-collapsible[open] .aw-summary svg {
426
+ transform: rotate(180deg);
427
+ }
428
+ .aw-collapsible:not([open]) .aw-h3 {
429
+ margin-bottom: 0;
430
+ }
431
+
432
+ @media (max-width: 380px) {
433
+ .aw-feat-grid {
434
+ grid-template-columns: repeat(2, 1fr);
435
+ }
436
+ }
437
+
438
+ .aw-footer {
439
+ margin-top: 12px;
440
+ padding-top: 12px;
441
+ border-top: 1px solid #e0e0e0;
442
+ }
443
+ .aw-reset {
444
+ width: 100%;
445
+ display: inline-flex;
446
+ align-items: center;
447
+ justify-content: center;
448
+ gap: 8px;
449
+ background: #fff;
450
+ color: #c00;
451
+ border: 2px solid #c00;
452
+ padding: 10px;
453
+ border-radius: 8px;
454
+ font-weight: 600;
455
+ cursor: pointer;
456
+ }
457
+ .aw-reset svg {
458
+ flex: 0 0 auto;
459
+ }
460
+ .aw-reset:hover,
461
+ .aw-reset:focus-visible {
462
+ background: #c00;
463
+ color: #fff;
464
+ outline: 3px solid #ff6a00;
465
+ }
466
+ .aw-statement-link {
467
+ display: block;
468
+ margin-top: 10px;
469
+ text-align: center;
470
+ color: #0058a3;
471
+ text-decoration: underline;
472
+ font-size: 0.85rem;
473
+ }
474
+ .aw-disclaimer {
475
+ font-size: 0.75rem;
476
+ color: #666;
477
+ margin: 12px 0 0;
478
+ line-height: 1.4;
479
+ }
480
+ .aw-poweredby {
481
+ font-size: 10px;
482
+ font-weight: 400;
483
+ color: #888;
484
+ margin: 10px 0 0;
485
+ text-align: center;
486
+ line-height: 1.3;
487
+ letter-spacing: 0.01em;
488
+ }
489
+ .aw-poweredby a {
490
+ color: inherit;
491
+ text-decoration: underline;
492
+ text-decoration-color: #bbb;
493
+ text-underline-offset: 2px;
494
+ }
495
+ .aw-poweredby a:hover,
496
+ .aw-poweredby a:focus-visible {
497
+ color: #0058a3;
498
+ text-decoration-color: currentColor;
499
+ }
500
+ .aw-live {
501
+ position: absolute;
502
+ width: 1px;
503
+ height: 1px;
504
+ padding: 0;
505
+ margin: -1px;
506
+ overflow: hidden;
507
+ clip: rect(0, 0, 0, 0);
508
+ white-space: nowrap;
509
+ border: 0;
510
+ }
511
+
512
+ .aw-reading-mask {
513
+ --aw-mask-y: 50vh;
514
+ position: fixed;
515
+ inset: 0;
516
+ z-index: 2147483645;
517
+ pointer-events: none;
518
+ background: linear-gradient(
519
+ to bottom,
520
+ rgba(0, 0, 0, 0.75) 0,
521
+ rgba(0, 0, 0, 0.75) calc(var(--aw-mask-y) - 100px),
522
+ rgba(0, 0, 0, 0) calc(var(--aw-mask-y) - 80px),
523
+ rgba(0, 0, 0, 0) calc(var(--aw-mask-y) + 80px),
524
+ rgba(0, 0, 0, 0.75) calc(var(--aw-mask-y) + 100px),
525
+ rgba(0, 0, 0, 0.75) 100%
526
+ );
527
+ }
528
+
529
+ .aw-reading-guide {
530
+ position: fixed;
531
+ left: 0;
532
+ width: 100%;
533
+ height: 32px;
534
+ background: rgba(255, 235, 59, 0.35);
535
+ border-top: 2px solid rgba(255, 165, 0, 0.8);
536
+ border-bottom: 2px solid rgba(255, 165, 0, 0.8);
537
+ pointer-events: none;
538
+ z-index: 2147483644;
539
+ }
540
+
541
+ #aw-struct-nav {
542
+ position: fixed;
543
+ top: 20px;
544
+ right: 20px;
545
+ z-index: 2147483647;
546
+ width: 320px;
547
+ max-height: 70vh;
548
+ overflow-y: auto;
549
+ background: #fff;
550
+ color: #111;
551
+ border-radius: 12px;
552
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.2);
553
+ padding: 12px 16px;
554
+ font:
555
+ 15px / 1.4 -apple-system,
556
+ BlinkMacSystemFont,
557
+ 'Segoe UI',
558
+ sans-serif;
559
+ }
560
+ #aw-struct-nav .aw-struct-nav__close {
561
+ position: absolute;
562
+ top: 8px;
563
+ right: 10px;
564
+ background: transparent;
565
+ border: 0;
566
+ font-size: 22px;
567
+ cursor: pointer;
568
+ color: #666;
569
+ }
570
+ #aw-struct-nav ul {
571
+ list-style: none;
572
+ padding: 0;
573
+ margin: 8px 0 0;
574
+ }
575
+ #aw-struct-nav li {
576
+ margin: 0;
577
+ }
578
+ #aw-struct-nav li[data-level='2'] a {
579
+ padding-left: 16px;
580
+ }
581
+ #aw-struct-nav li[data-level='3'] a {
582
+ padding-left: 32px;
583
+ }
584
+ #aw-struct-nav a {
585
+ display: block;
586
+ padding: 6px 8px;
587
+ color: #0058a3;
588
+ text-decoration: none;
589
+ border-radius: 4px;
590
+ }
591
+ #aw-struct-nav a:hover,
592
+ #aw-struct-nav a:focus-visible {
593
+ background: #eaf1f9;
594
+ outline: 2px solid #0058a3;
595
+ }
596
+
597
+ @media (max-width: 520px) {
598
+ .aw-panel {
599
+ width: calc(100vw - 40px);
600
+ bottom: 80px;
601
+ left: 20px;
602
+ right: 20px;
603
+ }
604
+ .aw-panel--top-right,
605
+ .aw-panel--top-left {
606
+ top: 20px;
607
+ bottom: auto;
608
+ }
609
+ }
610
+
611
+ [dir='rtl'] .aw-panel--bottom-right,
612
+ [dir='rtl'] .aw-panel--top-right {
613
+ right: auto;
614
+ left: 20px;
615
+ }
616
+
617
+ @media (prefers-color-scheme: dark) {
618
+ .aw-panel {
619
+ background: #1b1b1b;
620
+ color: #eee;
621
+ }
622
+ .aw-title {
623
+ color: #6ea8e6;
624
+ }
625
+ .aw-h3 {
626
+ color: #bbb;
627
+ }
628
+ .aw-profile-btn {
629
+ background: #2a2a2a;
630
+ color: #6ea8e6;
631
+ border-color: #3b3b3b;
632
+ }
633
+ .aw-profile-btn:hover {
634
+ background: #333;
635
+ }
636
+ .aw-feat {
637
+ background: #222;
638
+ color: #eee;
639
+ border-color: #3b3b3b;
640
+ }
641
+ .aw-feat:hover {
642
+ background: #2c2c2c;
643
+ }
644
+ .aw-feat.is-on {
645
+ background: #0f2d4c;
646
+ border-color: #0a66c2;
647
+ color: #fff;
648
+ }
649
+ .aw-feat-icon {
650
+ color: #6ea8e6;
651
+ }
652
+ .aw-feat.is-on .aw-feat-icon {
653
+ color: #cfe1f7;
654
+ }
655
+ .aw-feat-badge {
656
+ background: #3b3b3b;
657
+ color: #6ea8e6;
658
+ }
659
+ .aw-feat.is-on .aw-feat-badge {
660
+ background: #0a66c2;
661
+ color: #fff;
662
+ }
663
+ .aw-feat-check {
664
+ background: #0a66c2;
665
+ }
666
+ .aw-feat-info {
667
+ background: #2c2c2c;
668
+ color: #9aa6b3;
669
+ }
670
+ .aw-feat.is-on .aw-feat-info {
671
+ background: #0f2d4c;
672
+ color: #cfe1f7;
673
+ }
674
+ .aw-feat-tooltip {
675
+ background: #eee;
676
+ color: #111;
677
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.5);
678
+ }
679
+ .aw-tool {
680
+ background: #2a2a2a;
681
+ border-color: #3b3b3b;
682
+ color: #6ea8e6;
683
+ }
684
+ .aw-tool--oversize.is-on {
685
+ background: #0a66c2;
686
+ color: #fff;
687
+ border-color: #064d8f;
688
+ }
689
+ .aw-stage-dot {
690
+ background: #3b3b3b;
691
+ }
692
+ .aw-stage-dot.is-filled {
693
+ background: #6ea8e6;
694
+ }
695
+ .aw-feat.is-on .aw-stage-dot {
696
+ background: #064d8f;
697
+ }
698
+ .aw-feat.is-on .aw-stage-dot.is-filled {
699
+ background: #cfe1f7;
700
+ }
701
+ .aw-footer {
702
+ border-color: #333;
703
+ }
704
+ .aw-reset {
705
+ background: #1b1b1b;
706
+ color: #ff7676;
707
+ border-color: #ff7676;
708
+ }
709
+ .aw-disclaimer {
710
+ color: #aaa;
711
+ }
712
+ .aw-poweredby {
713
+ color: #888;
714
+ }
715
+ .aw-poweredby a {
716
+ text-decoration-color: #555;
717
+ }
718
+ .aw-poweredby a:hover,
719
+ .aw-poweredby a:focus-visible {
720
+ color: #6ea8e6;
721
+ }
722
+ #aw-struct-nav {
723
+ background: #1b1b1b;
724
+ color: #eee;
725
+ }
726
+ #aw-struct-nav a {
727
+ color: #6ea8e6;
728
+ }
729
+ }
730
+
731
+ @media (prefers-reduced-motion: reduce) {
732
+ .aw-panel,
733
+ .aw-feat,
734
+ .aw-profile-btn,
735
+ .aw-reset,
736
+ .aw-close {
737
+ transition: none !important;
738
+ }
739
+ }
@@ -0,0 +1,2 @@
1
+ export * from './widget.js';
2
+ export * from './locale.js';