@a.nemreen/a11y 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,725 @@
1
+ /* @a.nemreen/a11y — document effects + widget chrome */
2
+
3
+ .a11y-sr-only {
4
+ position: absolute !important;
5
+ width: 1px !important;
6
+ height: 1px !important;
7
+ padding: 0 !important;
8
+ margin: -1px !important;
9
+ overflow: hidden !important;
10
+ clip: rect(0, 0, 0, 0) !important;
11
+ white-space: nowrap !important;
12
+ border: 0 !important;
13
+ }
14
+
15
+ /* Font scale fallback when design tokens are not present */
16
+ html {
17
+ font-size: calc(100% * var(--user-font-scale, var(--dga-font-scale, 1)));
18
+ }
19
+
20
+ /* ——— Document effects ——— */
21
+
22
+ [data-a11y~='reduce-motion'] *,
23
+ [data-a11y~='reduce-motion'] *::before,
24
+ [data-a11y~='reduce-motion'] *::after {
25
+ animation-duration: 0.01ms !important;
26
+ transition-duration: 0.01ms !important;
27
+ scroll-behavior: auto !important;
28
+ }
29
+
30
+ [data-a11y~='highlight-links'] a:not([data-a11y-ui]) {
31
+ text-decoration: underline;
32
+ outline: 1px dashed var(--a11y-warning, #c27803);
33
+ outline-offset: 2px;
34
+ }
35
+
36
+ [data-a11y~='highlight-titles'] h1,
37
+ [data-a11y~='highlight-titles'] h2,
38
+ [data-a11y~='highlight-titles'] h3,
39
+ [data-a11y~='highlight-titles'] h4,
40
+ [data-a11y~='highlight-titles'] h5,
41
+ [data-a11y~='highlight-titles'] h6 {
42
+ outline: 2px solid var(--a11y-warning, #c27803);
43
+ outline-offset: 2px;
44
+ }
45
+
46
+ [data-a11y~='high-contrast'] {
47
+ --dga-bg-body: #ffffff;
48
+ --dga-bg-surface: #ffffff;
49
+ --dga-bg-card: #ffffff;
50
+ --dga-text-default: #000000;
51
+ --dga-text-display: #000000;
52
+ --dga-text-paragraph: #000000;
53
+ --dga-text-muted: #1a1a1a;
54
+ --dga-text-primary: #000000;
55
+ --dga-border: #000000;
56
+ --dga-border-primary: #000000;
57
+ background: #fff;
58
+ color: #000;
59
+ }
60
+
61
+ [data-a11y~='dyslexia'] {
62
+ --dga-font-sans: OpenDyslexic, 'Readex Pro', 'IBM Plex Sans Arabic', system-ui, sans-serif;
63
+ font-family: var(--dga-font-sans);
64
+ font-weight: 500;
65
+ }
66
+
67
+ [data-a11y~='dyslexia'] body,
68
+ [data-a11y~='dyslexia'] p,
69
+ [data-a11y~='dyslexia'] li,
70
+ [data-a11y~='dyslexia'] h1,
71
+ [data-a11y~='dyslexia'] h2,
72
+ [data-a11y~='dyslexia'] h3,
73
+ [data-a11y~='dyslexia'] h4,
74
+ [data-a11y~='dyslexia'] h5,
75
+ [data-a11y~='dyslexia'] h6,
76
+ [data-a11y~='dyslexia'] label,
77
+ [data-a11y~='dyslexia'] input,
78
+ [data-a11y~='dyslexia'] textarea,
79
+ [data-a11y~='dyslexia'] select,
80
+ [data-a11y~='dyslexia'] button,
81
+ [data-a11y~='dyslexia'] a {
82
+ font-family: var(--dga-font-sans) !important;
83
+ line-height: 1.75 !important;
84
+ letter-spacing: 0.06em !important;
85
+ word-spacing: 0.16em !important;
86
+ }
87
+
88
+ [data-a11y~='motor-targets'] {
89
+ --dga-motor-target: 56px;
90
+ }
91
+
92
+ [data-a11y~='motor-targets'],
93
+ [data-a11y~='motor-targets'] * {
94
+ cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 36 36'%3E%3Cpath fill='%23111' stroke='%23fff' stroke-width='2' d='M6 3v26l7-6 4 9 4-2-4-9h10z'/%3E%3C/svg%3E")
95
+ 6 3,
96
+ auto !important;
97
+ }
98
+
99
+ [data-a11y~='motor-targets'] :where(a, button, [role='button'], [role='tab'], [role='switch'], summary) {
100
+ position: relative;
101
+ touch-action: manipulation;
102
+ }
103
+
104
+ [data-a11y~='motor-targets'] :where(
105
+ button:not([role='tab']):not([role='switch']):not(.a11y-fab),
106
+ [role='button']:not([role='tab'])
107
+ ) {
108
+ min-height: var(--dga-motor-target);
109
+ padding-inline: max(0.75rem, 0.5em);
110
+ }
111
+
112
+ [data-a11y~='motor-targets'] :where([role='switch']) {
113
+ transform: scale(1.35);
114
+ transform-origin: center;
115
+ }
116
+
117
+ [data-a11y~='motor-targets'] a:not([data-a11y-ui]) {
118
+ text-decoration-thickness: 0.12em;
119
+ text-underline-offset: 0.2em;
120
+ padding-block: 0.2em;
121
+ padding-inline: 0.15em;
122
+ }
123
+
124
+ [data-a11y~='motor-targets'] :where([role='tab'], button, a, [role='button'], [role='switch'], summary)::after {
125
+ content: '';
126
+ position: absolute;
127
+ left: 50%;
128
+ top: 50%;
129
+ width: max(100%, var(--dga-motor-target));
130
+ height: max(100%, var(--dga-motor-target));
131
+ transform: translate(-50%, -50%);
132
+ }
133
+
134
+ [data-a11y~='motor-targets'] input:not([type='checkbox']):not([type='radio']):not([type='hidden']):not([type='range']),
135
+ [data-a11y~='motor-targets'] select,
136
+ [data-a11y~='motor-targets'] textarea {
137
+ min-height: var(--dga-motor-target) !important;
138
+ padding-block: 0.65rem !important;
139
+ padding-inline: 0.85rem !important;
140
+ }
141
+
142
+ [data-a11y~='motor-targets'] input[type='checkbox'],
143
+ [data-a11y~='motor-targets'] input[type='radio'] {
144
+ width: 1.5rem;
145
+ height: 1.5rem;
146
+ min-width: 1.5rem;
147
+ min-height: 1.5rem;
148
+ }
149
+
150
+ [data-a11y~='motor-targets'] :focus-visible {
151
+ outline: 4px solid var(--a11y-focus, #1b8354) !important;
152
+ outline-offset: 4px !important;
153
+ }
154
+
155
+ [data-a11y~='has-line-height'] body,
156
+ [data-a11y~='has-line-height'] p,
157
+ [data-a11y~='has-line-height'] li {
158
+ line-height: var(--user-line-height, 1.6) !important;
159
+ }
160
+
161
+ [data-a11y~='has-letter-spacing'] body,
162
+ [data-a11y~='has-letter-spacing'] p,
163
+ [data-a11y~='has-letter-spacing'] li {
164
+ letter-spacing: var(--user-letter-spacing, 0) !important;
165
+ }
166
+
167
+ [data-a11y~='has-word-spacing'] body,
168
+ [data-a11y~='has-word-spacing'] p,
169
+ [data-a11y~='has-word-spacing'] li {
170
+ word-spacing: var(--user-word-spacing, 0) !important;
171
+ }
172
+
173
+ [data-a11y~='text-align-start'] body,
174
+ [data-a11y~='text-align-start'] p,
175
+ [data-a11y~='text-align-start'] li {
176
+ text-align: start !important;
177
+ }
178
+
179
+ [data-a11y~='text-align-end'] body,
180
+ [data-a11y~='text-align-end'] p,
181
+ [data-a11y~='text-align-end'] li {
182
+ text-align: end !important;
183
+ }
184
+
185
+ [data-a11y~='text-align-justify'] body,
186
+ [data-a11y~='text-align-justify'] p,
187
+ [data-a11y~='text-align-justify'] li {
188
+ text-align: justify !important;
189
+ }
190
+
191
+ @media not (forced-colors: active) {
192
+ html[data-a11y-filter='monochrome'] {
193
+ filter: grayscale(1);
194
+ }
195
+
196
+ html[data-a11y-filter='boost-contrast'] {
197
+ filter: contrast(1.15);
198
+ }
199
+
200
+ html[data-a11y-filter='high-contrast'] {
201
+ filter: contrast(1.35);
202
+ }
203
+
204
+ html[data-a11y-filter='high-saturation'] {
205
+ filter: saturate(2);
206
+ }
207
+
208
+ html[data-a11y-filter='low-saturation'] {
209
+ filter: saturate(0.5);
210
+ }
211
+
212
+ html[data-a11y-filter='deuteranopia'] {
213
+ filter: url('#a11y-deuteranopia');
214
+ }
215
+ }
216
+
217
+ /* ——— Widget chrome ——— */
218
+
219
+ .a11y-root {
220
+ --a11y-primary: #1b8354;
221
+ --a11y-primary-light: #e8f5ee;
222
+ --a11y-primary-faint: #f3faf6;
223
+ --a11y-card: #ffffff;
224
+ --a11y-border: #e5e7eb;
225
+ --a11y-border-primary: #1b8354;
226
+ --a11y-text: #111827;
227
+ --a11y-muted: #6b7280;
228
+ --a11y-overlay: rgb(0 0 0 / 0.4);
229
+ --a11y-focus: #1b8354;
230
+ --a11y-warning: #c27803;
231
+ --a11y-on-primary: #ffffff;
232
+ --a11y-neutral: #f3f4f6;
233
+ --a11y-fab-size: 3.5rem;
234
+ --a11y-fab-edge: 2rem;
235
+ --a11y-fab-stack-step: 4.25rem;
236
+ font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
237
+ font-size: 14px;
238
+ line-height: 1.4;
239
+ color: var(--a11y-text);
240
+ }
241
+
242
+ .a11y-fab {
243
+ position: fixed;
244
+ z-index: 390;
245
+ display: inline-flex;
246
+ align-items: center;
247
+ justify-content: center;
248
+ width: var(--a11y-fab-size);
249
+ height: var(--a11y-fab-size);
250
+ padding: 0;
251
+ border: none;
252
+ border-radius: 9999px;
253
+ background: var(--a11y-primary);
254
+ color: var(--a11y-on-primary);
255
+ box-shadow: 0 10px 25px rgb(0 0 0 / 0.18);
256
+ cursor: pointer;
257
+ }
258
+
259
+ .a11y-fab[data-edge='end'] {
260
+ inset-inline-end: var(--a11y-fab-edge);
261
+ inset-inline-start: auto;
262
+ }
263
+
264
+ .a11y-fab[data-edge='start'] {
265
+ inset-inline-start: var(--a11y-fab-edge);
266
+ inset-inline-end: auto;
267
+ }
268
+
269
+ .a11y-fab[data-edge='left'] {
270
+ left: var(--a11y-fab-edge);
271
+ right: auto;
272
+ }
273
+
274
+ .a11y-fab[data-edge='right'] {
275
+ right: var(--a11y-fab-edge);
276
+ left: auto;
277
+ }
278
+
279
+ .a11y-fab__icon {
280
+ display: flex;
281
+ transition: transform 240ms cubic-bezier(0.16, 1, 0.3, 1);
282
+ }
283
+
284
+ .a11y-fab[aria-expanded='true'] .a11y-fab__icon {
285
+ transform: rotate(90deg) scale(0.94);
286
+ }
287
+
288
+ .a11y-fab:active {
289
+ animation: a11y-fab-pop 280ms cubic-bezier(0.16, 1, 0.3, 1);
290
+ }
291
+
292
+ .a11y-fab:focus-visible {
293
+ outline: 3px solid var(--a11y-focus);
294
+ outline-offset: 3px;
295
+ }
296
+
297
+ .a11y-fab__badge {
298
+ position: absolute;
299
+ inset-inline-end: -0.25rem;
300
+ top: -0.25rem;
301
+ display: inline-flex;
302
+ min-width: 1.25rem;
303
+ height: 1.25rem;
304
+ align-items: center;
305
+ justify-content: center;
306
+ padding: 0 0.25rem;
307
+ border-radius: 9999px;
308
+ background: var(--a11y-card);
309
+ color: var(--a11y-primary);
310
+ font-size: 0.65rem;
311
+ font-weight: 700;
312
+ box-shadow: 0 0 0 2px var(--a11y-primary);
313
+ }
314
+
315
+ .a11y-layer {
316
+ position: fixed;
317
+ inset: 0;
318
+ z-index: 400;
319
+ }
320
+
321
+ .a11y-backdrop {
322
+ position: absolute;
323
+ inset: 0;
324
+ background: var(--a11y-overlay);
325
+ animation: a11y-fade-in 220ms ease both;
326
+ }
327
+
328
+ .a11y-panel {
329
+ position: absolute;
330
+ top: 0;
331
+ z-index: 401;
332
+ display: flex;
333
+ flex-direction: column;
334
+ width: 100%;
335
+ max-width: min(420px, 100vw);
336
+ height: 100%;
337
+ background: var(--a11y-card);
338
+ border: 0 solid var(--a11y-border);
339
+ box-shadow: 0 20px 50px rgb(0 0 0 / 0.2);
340
+ animation-duration: 320ms;
341
+ animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
342
+ animation-fill-mode: both;
343
+ will-change: transform, opacity;
344
+ }
345
+
346
+ .a11y-panel--end,
347
+ .a11y-panel--right {
348
+ inset-inline-end: 0;
349
+ border-inline-start-width: 1px;
350
+ animation-name: a11y-panel-from-end;
351
+ }
352
+
353
+ .a11y-panel--start,
354
+ .a11y-panel--left {
355
+ inset-inline-start: 0;
356
+ border-inline-end-width: 1px;
357
+ animation-name: a11y-panel-from-start;
358
+ }
359
+
360
+ [dir='rtl'] .a11y-panel--end {
361
+ animation-name: a11y-panel-from-start;
362
+ }
363
+
364
+ [dir='rtl'] .a11y-panel--start {
365
+ animation-name: a11y-panel-from-end;
366
+ }
367
+
368
+ .a11y-panel__header,
369
+ .a11y-panel__footer {
370
+ flex-shrink: 0;
371
+ display: flex;
372
+ align-items: center;
373
+ justify-content: space-between;
374
+ gap: 1rem;
375
+ padding: 1rem 1.25rem;
376
+ border-bottom: 1px solid var(--a11y-border);
377
+ }
378
+
379
+ .a11y-panel__footer {
380
+ border-bottom: 0;
381
+ border-top: 1px solid var(--a11y-border);
382
+ }
383
+
384
+ .a11y-panel__title {
385
+ margin: 0;
386
+ font-size: 1.125rem;
387
+ font-weight: 700;
388
+ }
389
+
390
+ .a11y-panel__body {
391
+ flex: 1;
392
+ min-height: 0;
393
+ overflow-y: auto;
394
+ padding: 1rem 1.25rem;
395
+ display: flex;
396
+ flex-direction: column;
397
+ gap: 1.25rem;
398
+ }
399
+
400
+ .a11y-section-title {
401
+ margin: 0 0 0.5rem;
402
+ font-size: 0.875rem;
403
+ font-weight: 600;
404
+ }
405
+
406
+ .a11y-hint {
407
+ margin: 0 0 0.5rem;
408
+ font-size: 0.75rem;
409
+ color: var(--a11y-muted);
410
+ }
411
+
412
+ .a11y-chips {
413
+ display: flex;
414
+ flex-wrap: wrap;
415
+ gap: 0.5rem;
416
+ }
417
+
418
+ .a11y-chip {
419
+ display: inline-flex;
420
+ max-width: 100%;
421
+ align-items: center;
422
+ gap: 0.25rem;
423
+ padding: 0.25rem 0.75rem;
424
+ border: 1px solid var(--a11y-border-primary);
425
+ border-radius: 9999px;
426
+ background: var(--a11y-primary-light);
427
+ color: var(--a11y-primary);
428
+ font-size: 0.75rem;
429
+ font-weight: 500;
430
+ cursor: pointer;
431
+ }
432
+
433
+ .a11y-list {
434
+ display: flex;
435
+ flex-direction: column;
436
+ gap: 0.25rem;
437
+ padding: 0.5rem;
438
+ border: 1px solid var(--a11y-border);
439
+ border-radius: 0.5rem;
440
+ }
441
+
442
+ .a11y-row {
443
+ display: flex;
444
+ align-items: center;
445
+ justify-content: space-between;
446
+ gap: 0.75rem;
447
+ padding: 0.625rem 0.75rem;
448
+ border-radius: 0.375rem;
449
+ }
450
+
451
+ .a11y-row.is-active {
452
+ background: var(--a11y-primary-faint);
453
+ }
454
+
455
+ .a11y-row__main {
456
+ display: flex;
457
+ min-width: 0;
458
+ flex: 1;
459
+ align-items: center;
460
+ gap: 0.75rem;
461
+ }
462
+
463
+ .a11y-row__icon {
464
+ display: inline-flex;
465
+ width: 2.25rem;
466
+ height: 2.25rem;
467
+ flex-shrink: 0;
468
+ align-items: center;
469
+ justify-content: center;
470
+ border-radius: 9999px;
471
+ background: var(--a11y-neutral);
472
+ color: var(--a11y-muted);
473
+ }
474
+
475
+ .a11y-row.is-active .a11y-row__icon {
476
+ background: var(--a11y-primary-light);
477
+ color: var(--a11y-primary);
478
+ }
479
+
480
+ .a11y-row__label {
481
+ font-size: 0.875rem;
482
+ font-weight: 500;
483
+ overflow: hidden;
484
+ text-overflow: ellipsis;
485
+ white-space: nowrap;
486
+ }
487
+
488
+ .a11y-divide {
489
+ display: flex;
490
+ flex-direction: column;
491
+ border: 1px solid var(--a11y-border);
492
+ border-radius: 0.5rem;
493
+ }
494
+
495
+ .a11y-divide > * + * {
496
+ border-top: 1px solid var(--a11y-border);
497
+ }
498
+
499
+ .a11y-divide .a11y-row {
500
+ border-radius: 0;
501
+ }
502
+
503
+ .a11y-stepper {
504
+ display: inline-flex;
505
+ align-items: center;
506
+ gap: 0.25rem;
507
+ padding: 0.15rem;
508
+ border: 1px solid var(--a11y-border);
509
+ border-radius: 0.5rem;
510
+ background: var(--a11y-neutral);
511
+ }
512
+
513
+ .a11y-stepper__value {
514
+ min-width: 4.5rem;
515
+ text-align: center;
516
+ font-size: 0.75rem;
517
+ font-weight: 500;
518
+ }
519
+
520
+ .a11y-filters {
521
+ display: flex;
522
+ flex-direction: column;
523
+ gap: 0.5rem;
524
+ padding: 0.75rem;
525
+ }
526
+
527
+ .a11y-filters__head {
528
+ display: flex;
529
+ align-items: center;
530
+ gap: 0.75rem;
531
+ font-size: 0.875rem;
532
+ font-weight: 500;
533
+ }
534
+
535
+ .a11y-filter-chips {
536
+ display: flex;
537
+ flex-wrap: wrap;
538
+ gap: 0.5rem;
539
+ }
540
+
541
+ .a11y-filter-chip {
542
+ display: inline-flex;
543
+ align-items: center;
544
+ gap: 0.25rem;
545
+ padding: 0.25rem 0.75rem;
546
+ border: 1px solid var(--a11y-border);
547
+ border-radius: 9999px;
548
+ background: var(--a11y-card);
549
+ color: var(--a11y-text);
550
+ font-size: 0.75rem;
551
+ font-weight: 500;
552
+ cursor: pointer;
553
+ }
554
+
555
+ .a11y-filter-chip.is-active {
556
+ border-color: var(--a11y-border-primary);
557
+ background: var(--a11y-primary-light);
558
+ color: var(--a11y-primary);
559
+ }
560
+
561
+ .a11y-btn {
562
+ display: inline-flex;
563
+ align-items: center;
564
+ justify-content: center;
565
+ gap: 0.35rem;
566
+ min-height: 2rem;
567
+ padding: 0.35rem 0.65rem;
568
+ border: 1px solid transparent;
569
+ border-radius: 0.375rem;
570
+ background: transparent;
571
+ color: inherit;
572
+ font: inherit;
573
+ cursor: pointer;
574
+ }
575
+
576
+ .a11y-btn:focus-visible {
577
+ outline: 2px solid var(--a11y-focus);
578
+ outline-offset: 2px;
579
+ }
580
+
581
+ .a11y-btn--subtle:hover {
582
+ background: var(--a11y-neutral);
583
+ }
584
+
585
+ .a11y-btn--outline {
586
+ width: 100%;
587
+ min-height: 2.5rem;
588
+ border-color: var(--a11y-border);
589
+ background: var(--a11y-card);
590
+ font-weight: 600;
591
+ }
592
+
593
+ .a11y-btn--outline:hover {
594
+ background: var(--a11y-neutral);
595
+ }
596
+
597
+ .a11y-switch {
598
+ position: relative;
599
+ width: 2.5rem;
600
+ height: 1.4rem;
601
+ flex-shrink: 0;
602
+ padding: 0;
603
+ border: none;
604
+ border-radius: 9999px;
605
+ background: #d1d5db;
606
+ cursor: pointer;
607
+ transition: background 160ms ease;
608
+ }
609
+
610
+ .a11y-switch[aria-checked='true'] {
611
+ background: var(--a11y-primary);
612
+ }
613
+
614
+ .a11y-switch::after {
615
+ content: '';
616
+ position: absolute;
617
+ top: 0.15rem;
618
+ inset-inline-start: 0.15rem;
619
+ width: 1.1rem;
620
+ height: 1.1rem;
621
+ border-radius: 9999px;
622
+ background: #fff;
623
+ box-shadow: 0 1px 3px rgb(0 0 0 / 0.2);
624
+ transition: transform 160ms ease;
625
+ }
626
+
627
+ .a11y-switch[aria-checked='true']::after {
628
+ transform: translateX(1.1rem);
629
+ }
630
+
631
+ [dir='rtl'] .a11y-switch[aria-checked='true']::after {
632
+ transform: translateX(-1.1rem);
633
+ }
634
+
635
+ .a11y-mask-overlay {
636
+ pointer-events: none;
637
+ position: fixed;
638
+ inset: 0;
639
+ z-index: 35;
640
+ }
641
+
642
+ .a11y-mask-shade {
643
+ position: absolute;
644
+ inset-inline: 0;
645
+ background: rgb(0 0 0 / 0.55);
646
+ }
647
+
648
+ .a11y-mask-toolbar {
649
+ position: fixed;
650
+ z-index: 36;
651
+ display: flex;
652
+ align-items: center;
653
+ gap: 0.5rem;
654
+ padding: 0.5rem 0.75rem;
655
+ border: 1px solid var(--a11y-border);
656
+ border-radius: 9999px;
657
+ background: var(--a11y-card);
658
+ box-shadow: 0 8px 20px rgb(0 0 0 / 0.15);
659
+ inset-inline-start: 50%;
660
+ transform: translateX(-50%);
661
+ }
662
+
663
+ .a11y-mask-drag {
664
+ padding: 0 0.75rem;
665
+ border: none;
666
+ background: transparent;
667
+ color: var(--a11y-muted);
668
+ font-size: 0.75rem;
669
+ cursor: grab;
670
+ }
671
+
672
+ .a11y-mask-drag:active {
673
+ cursor: grabbing;
674
+ }
675
+
676
+ .a11y-deuteranopia-svg {
677
+ position: absolute;
678
+ width: 0;
679
+ height: 0;
680
+ overflow: hidden;
681
+ pointer-events: none;
682
+ }
683
+
684
+ @keyframes a11y-fade-in {
685
+ from { opacity: 0; }
686
+ to { opacity: 1; }
687
+ }
688
+
689
+ @keyframes a11y-panel-from-end {
690
+ from { opacity: 0.88; transform: translate3d(100%, 0, 0); }
691
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
692
+ }
693
+
694
+ @keyframes a11y-panel-from-start {
695
+ from { opacity: 0.88; transform: translate3d(-100%, 0, 0); }
696
+ to { opacity: 1; transform: translate3d(0, 0, 0); }
697
+ }
698
+
699
+ @keyframes a11y-fab-pop {
700
+ 0% { transform: scale(1); }
701
+ 45% { transform: scale(0.9); }
702
+ 100% { transform: scale(1); }
703
+ }
704
+
705
+ @media (prefers-reduced-motion: reduce) {
706
+ .a11y-backdrop,
707
+ .a11y-panel,
708
+ .a11y-fab:active {
709
+ animation-duration: 0.01ms !important;
710
+ animation-delay: 0ms !important;
711
+ }
712
+
713
+ .a11y-fab__icon,
714
+ .a11y-switch,
715
+ .a11y-switch::after {
716
+ transition: none !important;
717
+ }
718
+ }
719
+
720
+ @media (max-width: 640px) {
721
+ .a11y-fab {
722
+ width: 3rem;
723
+ height: 3rem;
724
+ }
725
+ }