module DefaultCSS(userAgentCSS) where userAgentCSS = unlines [ "head, link, meta, style, script, title, base {speak: never}", "datalist, template {speak: never}", "", "/** 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';", " pitch: high;", "}", "select::before, textarea::before, input::before {content: 'Input'; pitch: high}", "output::before {content: 'Output'; pitch: high}", "text-area, button, select, input, output {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}", "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 {pitch: high}", "", "/** Text **/", "hr {pause: x-strong}", "p, pre, samp, blockquote {pause: strong}", "pre, address, samp {speak-as: literal-punctuation}", "", ":link {cue-before: url(link.wav); voice-rate: slow}", ":link:visited {cue-before: url(link.wav) -1db}", "", "b, strong {voice-rate: x-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-ol1}", "ol ol {counter-reset: -rhaps-ol2}", "ol ol ol {counter-reset: -rhaps-ol3}", "ol ol ol ol {counter-reset: -rhaps-ol4}", "ol ol ol ol ol {counter-reset: -rhaps-ol5}", "ol ol ol ol ol ol {counter-reset: -rhaps-ol6}", -- "ol li::before {content: counter(-rhaps-ol1)}", -- "ol ol li::before {content: counters(-rhaps-ol1, -rhaps-ol2)}", -- "ol ol ol li::before {content: counters(-rhaps-ol1, -rhaps-ol2, -rhaps-ol3)}", -- "ol ol ol ol li::before {", -- "content: counters(-rhaps-ol1, -rhaps-ol2, -rhaps-ol3, -rhaps-ol4)", -- "}", -- "ol ol ol ol ol li::before {", -- "content: counters(-rhaps-ol1, -rhaps-ol2, -rhaps-ol3, -rhaps-ol4, -rhaps-ol5)", -- "}", -- "ol ol ol ol ol ol li::before {", -- "content: counters(-rhaps-ol1, -rhaps-ol2, -rhaps-ol3, -rhaps-ol4, -rhaps-ol5, -rhaps-ol6)", -- "}", "", "", "/** HTML6 **/", -- "abbr[title]::after {content: attr(title); voice-volume: x-soft}", "abbr {speak-as: spell-out}", "", "q, blockquote {voice-family: neutral 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}" ]