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}