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 **/", "button[type=button], input[type=button] {speak: never} /* Won't do anything without JS */", "", "button::before, input[type=reset]::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[placeholder] {content: attr(placeholder)}", "input[value], output[value] {content: attr(value)}", "text-area {speak-as: literal-punctuation}", "", "option:not([checked]) {speak: never}", "select[multiple] option {cue-before: url(bulletpoint.wav)}", "", "/** Tables **/", "table::before {content: 'Table'; voice-volume: x-soft}", "tr {cue-before: url(bulletpoint.wav); content: 'row'}", "td, th {cue-before: url(bulletpoint.wav) -1db; content: 'cell'}", "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}", "img {voice-volume: soft; content: 'Image: ' attr(src)}", "img[alt] {content: 'Image: ' 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(bulletpoint.wav); pause: strong}", "li::before, dt::before, dd::before {content: 'd'} /* Since the cue-before isn't coming accross */", "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}" ]