~alcinnz/rhapsode

rhapsode/useragent.css -rw-r--r-- 4.8 KiB
bce2d99d — Adrian Cochrane Update dependencies. 5 months ago
                                                                                
e3a6e2db Adrian Cochrane
943ea735 Adrian Cochrane
38f17984 Adrian Cochrane
d94a3ecb Adrian Cochrane
a8275ac6 Adrian Cochrane
943ea735 Adrian Cochrane
8cfb4861 Adrian Cochrane
943ea735 Adrian Cochrane
5bbbe410 Adrian Cochrane
6e87a147 Adrian Cochrane
86729618 Adrian Cochrane
57a81598 Adrian Cochrane
3a0ff8db Adrian Cochrane
2b90b1d2 Adrian Cochrane
ae78008c Adrian Cochrane
5bbbe410 Adrian Cochrane
c0c584bb Adrian Cochrane
ae78008c Adrian Cochrane
5bbbe410 Adrian Cochrane
ca5e0017 Adrian Cochrane
b22f6555 Adrian Cochrane
ca5e0017 Adrian Cochrane
943ea735 Adrian Cochrane
5bbbe410 Adrian Cochrane
943ea735 Adrian Cochrane
5bbbe410 Adrian Cochrane
943ea735 Adrian Cochrane
ee018b49 Adrian Cochrane
5bbbe410 Adrian Cochrane
e042770f Adrian Cochrane
c0c584bb Adrian Cochrane
ae78008c Adrian Cochrane
6e87a147 Adrian Cochrane
86729618 Adrian Cochrane
57a81598 Adrian Cochrane
3a0ff8db Adrian Cochrane
78836e34 Adrian Cochrane
943ea735 Adrian Cochrane
5bbbe410 Adrian Cochrane
c0c584bb Adrian Cochrane
943ea735 Adrian Cochrane
c0c584bb Adrian Cochrane
943ea735 Adrian Cochrane
c0c584bb Adrian Cochrane
943ea735 Adrian Cochrane
b22f6555 Adrian Cochrane
943ea735 Adrian Cochrane
5bbbe410 Adrian Cochrane
943ea735 Adrian Cochrane
38f17984 Adrian Cochrane
943ea735 Adrian Cochrane
f112607a Adrian Cochrane
943ea735 Adrian Cochrane
e3a6e2db Adrian Cochrane
6e87a147 Adrian Cochrane
8d9fafbd Adrian Cochrane
df26d593 Adrian Cochrane
38f17984 Adrian Cochrane
6e87a147 Adrian Cochrane
86729618 Adrian Cochrane
57a81598 Adrian Cochrane
38f17984 Adrian Cochrane
5a7d72df Adrian Cochrane
38f17984 Adrian Cochrane
5a7d72df Adrian Cochrane
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
link[rel=stylesheet], meta, style, script, base {speak: never}
datalist, template {speak: never}
:root {
    speak-as: normal no-punctuation;
    counter-reset: -rhaps-table, -rhaps-section, -rhaps-paragraph
}
[lang] {-rhaps-lang: attr(lang)} /* Pass this info through styletree into output */
:target {-rhaps-marker: "main"}

/** Forms **/
button, select, textarea, input, output {speak: never} /* Leave to special form entry mode */
button[type=submit] {speak: always}
input[type=submit][value] {speak: always; content: attr(value)}

form[title] {content: attr(title)} /* Ideal UX for (inline) <form>s. */
form[alt] {content: attr(alt)}

/** Tables **/
table::before {content: "Table"; voice-volume: x-soft}
table:lang(hu)::before {content: "táblázat"}
table:lang(nl)::before {content: "tabel"}
table:lang(es)::before {content: "tabla"}
table:lang(it)::before {content: "tabella"}
table:lang(sv)::before {content: "tabell"}
table:lang(nb-NO)::before {content: "tabell"}
/* FIXME: debug why table:lang(sv)::before, table:lang(nb-NO)::before {content: "tabell"} crashes the parser */
table {counter-increment: -rhaps-table; counter-reset: -rhaps-tablerow}
tr {
    cue-before: url(about:bulletpoint.wav);
    counter-increment: -rhaps-tablerow;
    counter-reset: -rhaps-tablecol;
}
td, th {
    cue-before: url(about:bulletpoint.wav) -0.1db;
    -rhaps-marker: "-rhaps-tablecell" counter(-rhaps-table) ":" counter(-rhaps-tablerow) "x" counter(-rhaps-tablecol);
    counter-increment: -rhaps-tablecol attr(rowspan); /* TODO parse this syntax */
    counter-increment: -rhaps-tablecol;
}
td::before, th::before {
    content: counter(-rhaps-tablerow) " " counter(-rhaps-tablecol, upper-latin)
}
table caption {voice-volume: soft}

/** Sectioning **/
footer, header {voice-volume: soft}
nav {speak: never} /* Expose the links for navigation, but not narration */
h1, h2, h3, h4, h5, h6, legend, th, summary, dt {voice-stress: strong}
h1, h2, h3, h4, h5, h6, section, aside {-rhaps-marker: -rhaps-section}
h1 {pause: x-strong; voice-rate: x-slow}
h2 {pause: strong; voice-rate: slow}
h3, th, summary, legend, dt {pause: medium; voice-rate: medium}
h4 {pause: weak; voice-rate: fast}
h5, h6 {pause: x-weak; voice-rate: fast}
h6 {voice-pitch: high}

/** Text **/
hr {pause: x-strong}
p, pre, samp, blockquote {pause: strong; -rhaps-marker: -rhaps-paragraph}
pre, address, samp {speak-as: literal-punctuation}
pre, samp, code {voice: neutral 2; white-space: pre;}
:link {cue-after: url(about:link.wav) !important; voice-pitch: low}
link[rel] {content: attr(rel)}
link[rel=alternate][type] {content: -rhaps-filetype(attr(type))}
link[title] {content: attr(title)} /* [title] overrides [rel] */
:visited {cue-after: url(about:link.wav) -0.1db !important}
img {content: "Image " attr(src)}
img:lang(hu):not([alt]) {content: "kép " attr(src)}
img:lang(nl):not([alt]) {content: "afbeelding " attr(src)}
img:lang(es):not([alt]) {content: "imagen " attr(src)}
img:lang(it):not([alt]) {content: "immagine " attr(src)}
img:lang(sv):not([alt]) {content: "bild " attr(src)}
img:lang(nb-NO):not([alt]) {content: "bilde " attr(src)}
img[alt] {content: attr(alt)}

b, strong {voice-rate: slow}
i, em {voice-stress: strong}
br {pause: medium}
code {speak-as: literal-punctuation}
s, del {voice-volume: x-soft}
u, ins {voice-volume: loud}

/** lists **/
li, dt, dd {
    cue-before: url(about:bulletpoint.wav);
    pause: strong;
    -rhaps-marker: -rhaps-paragraph;
}
li li, dd dt, dd dd {cue-before: url(about:bulletpoint.wav) -0.1db}
li li li, dd dd dt, dd dd dd {cue-before: url(about:bulletpoint.wav) -0.2db}
li li li li, dd dd dd dt, dd dd dd dd {cue-before: url(about:bulletpoint.wav) -0.3db}
li li li li li, dd dd dd dd dt, dd dd dd dd dd {
    cue-before: url(about:bulletpoint.wav) -0.4db
}
li li li li li li, dd dd dd dd dd dt, dd dd dd dd dd dd {
    cue-before: url(about:bulletpoint.wav) -0.5db
}

ol li::marker {
    content: counters(list-item, " ") " ";
}
ul, ol {-rhaps-marker: -rhaps-section}

/** HTML5 **/
abbr[title]::after {content: attr(title); voice-volume: x-soft}
abbr {speak-as: spell-out}

q, blockquote {voice-family: female 2}
cite {voice-stress: reduce}
dialog:not([open]) {speak: always}
kbd {speak-as: spell-out}
progress {content: -rhaps-percentage(attr(value) attr(max)) "%"}
sub {voice-rate: x-fast}
sup {voice-rate: fast}
var {voice-rate: slow}
aside {voice-volume: soft}
mark {voice-range: high; voice-pitch: high; cue-before: url(about:found.wav)}

details > :not(summary:first-of-type) {speak: never}
details:target > *, details:target-within > *, details[open] > * {speak: always}

/* Localized into:
- English
- French (surprisingly same as English)
- Hungarian
- Dutch
- Spanish */

/** ARIA **/
[aria-hidden] {speak: never}
th[aria-sort=ascending] {cue-before: url(about:ascending.wav)}
th[aria-sort=descending] {cue-after: url(about:descending.wav)}