module DefaultCSS(userAgentCSS) where
userAgentCSS = unlines [
"head, link, meta, style, script, title, base {speak: never}",
"datalist, template {speak: never}",
"html {speak-as: normal no-punctuation}",
"",
"/** Forms **/",
"/* Hide buttons that don't do anything */",
"button[type=button] {speak: never}",
"button[formaction] {speak: always}",
"",
"button::before, input[type=button]::before, input[type=submit]::before {",
" content: 'Button';",
" voice-pitch: high;",
"}",
"select::before, textarea::before, input::before {content: 'Input'; voice-pitch: high}",
"output::before {content: 'Output'; voice-pitch: high}",
"text-area, button, select, input, output {voice-pitch: low}",
"input, output {content: attr(value)}",
"text-area {speak-as: literal-punctuation}",
"",
"option:not([checked]) {speak: never}",
"select[multiple] option {cue-before: url(bulletpoint.wav)}",
"",
"/* Forms themselves require a label in order to support navigation */",
"form::before {content: 'Form'}",
"form[action]::before {content: attr(action)}",
"form[alt]::before {content: attr(alt)}",
"form[title]::before {content: attr(title)}",
"",
"/** Tables **/",
"table::before {content: 'Table'; voice-volume: x-soft}",
"tr {cue-before: url(bulletpoint.wav)}",
"td, th {cue-before: url(bulletpoint.wav) -1db}",
"th::th /* Rhapsode-specific, selects inlined table headers */ {speak: never;}",
"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 {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}",
"pre, address, samp {speak-as: literal-punctuation}",
"pre, samp, code {voice: neutral 2}",
"a[href], :link {cue-before: url(link.wav); voice-pitch: low}",
":link:visited {cue-before: url(link.wav) -1db}",
"",
"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(bulletpoint.wav); pause: strong}",
"li li, dd dt, dd dd {cue-before: url(bulletpoint.wav) -1db}",
"li li li, dd dd dt, dd dd dd {cue-before: url(bulletpoint.wav) -2db}",
"li li li li, dd dd dd dt, dd dd dd dd {cue-before: url(bulletpoint.wav) -3db}",
"li li li li li, dd dd dd dd dt, dd dd dd dd dd {",
" cue-before: url(bulletpoint.wav) -4db",
"}",
"li li li li li li, dd dd dd dd dd dt, dd dd dd dd dd dd {",
" cue-before: url(bulletpoint.wav) -5db",
"}",
"",
"ol {counter-reset: -rhaps-ol}",
"ol li::before {",
"counter-increment: -rhaps-ol;",
"content: counters(-rhaps-ol, ' ')",
"}",
"",
"",
"/** HTML6 **/",
"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: never}",
"kbd {speak-as: spell-out}",
"progress {content: attr(value) 'of' attr(max)}",
"sub {voice-rate: x-fast}",
"sup {voice-rate: fast}",
"var {voice-rate: slow}"
]