diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2014-10-10 13:52:46 +0100 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2014-10-10 17:27:38 +0100 |
commit | e9ebfb74fc6163a4fe7832c9ee8eec2cab9a370b (patch) | |
tree | 9593794e0558ff5ec570f8db200ee55884ec55ee /resources | |
parent | 1117d86b63ecafeef302c85fb717de4753ac2639 (diff) | |
download | servo-e9ebfb74fc6163a4fe7832c9ee8eec2cab9a370b.tar.gz servo-e9ebfb74fc6163a4fe7832c9ee8eec2cab9a370b.zip |
Rewrite the user-agent stysheet(s)
Based on https://html.spec.whatwg.org/multipage/rendering.html
rather than http://dev.w3.org/csswg/css2/grammar.html
Diffstat (limited to 'resources')
-rw-r--r-- | resources/iso-8859-8.css | 23 | ||||
-rw-r--r-- | resources/presentational-hints.css | 261 | ||||
-rw-r--r-- | resources/quirks-mode.css | 33 | ||||
-rw-r--r-- | resources/quotes.css | 190 | ||||
-rw-r--r-- | resources/servo.css | 12 | ||||
-rw-r--r-- | resources/user-agent.css | 406 |
6 files changed, 795 insertions, 130 deletions
diff --git a/resources/iso-8859-8.css b/resources/iso-8859-8.css new file mode 100644 index 00000000000..fd97ef5807f --- /dev/null +++ b/resources/iso-8859-8.css @@ -0,0 +1,23 @@ +/* + +https://html.spec.whatwg.org/multipage/rendering.html#bidi-rendering + +> When the document's character encoding is ISO-8859-8, +> the following rules are additionally expected to apply, following [user-agent.css] + +*/ + +@namespace url(http://www.w3.org/1999/xhtml); + + +address, blockquote, center, div, figure, figcaption, footer, form, header, hr, +legend, listing, main, p, plaintext, pre, summary, xmp, article, aside, h1, h2, +h3, h4, h5, h6, hgroup, nav, section, table, caption, colgroup, col, thead, +tbody, tfoot, tr, td, th, dir, dd, dl, dt, menu, ol, ul, li, [dir=ltr i], +[dir=rtl i], [dir=auto i], *|* { + unicode-bidi: bidi-override; +} +input:not([type=submit i]):not([type=reset i]):not([type=button i]), +textarea, keygen { + unicode-bidi: normal; +} diff --git a/resources/presentational-hints.css b/resources/presentational-hints.css new file mode 100644 index 00000000000..dcccbf9a64b --- /dev/null +++ b/resources/presentational-hints.css @@ -0,0 +1,261 @@ +/* +https://html.spec.whatwg.org/multipage/rendering.html#presentational-hints +*/ + +@namespace url(http://www.w3.org/1999/xhtml); + + +pre[wrap] { white-space: pre-wrap; } + +/* +FIXME: also "align descendants" +https://html.spec.whatwg.org/multipage/rendering.html#align-descendants +*/ +center, div[align=center i], div[align=middle i] { text-align: center; } +div[align=left i] { text-align: left; } +div[align=right i] { text-align: right; } +div[align=justify i] { text-align: justify; } + + +br[clear=left i] { clear: left; } +br[clear=right i] { clear: right; } +br[clear=all i], br[clear=both i] { clear: both; } + + +ol[type=1], li[type=1] { list-style-type: decimal; } +ol[type=a], li[type=a] { list-style-type: lower-alpha; } +ol[type=A], li[type=A] { list-style-type: upper-alpha; } +ol[type=i], li[type=i] { list-style-type: lower-roman; } +ol[type=I], li[type=I] { list-style-type: upper-roman; } +ul[type=none i], li[type=none i] { list-style-type: none; } +ul[type=disc i], li[type=disc i] { list-style-type: disc; } +ul[type=circle i], li[type=circle i] { list-style-type: circle; } +ul[type=square i], li[type=square i] { list-style-type: square; } + + +table[align=left i] { float: left; } +table[align=right i] { float: right; } +table[align=center i] { margin-left: auto; margin-right: auto; } +:matches(thead, tbody, tfoot, tr, td, th)[align=absmiddle i] { + text-align: center; +} + +caption[align=bottom i] { caption-side: bottom; } +:matches(p, h1, h2, h3, h4, h5, h6)[align=left i] { text-align: left; } +:matches(p, h1, h2, h3, h4, h5, h6)[align=right i] { text-align: right; } +:matches(p, h1, h2, h3, h4, h5, h6)[align=center i] { text-align: center; } +:matches(p, h1, h2, h3, h4, h5, h6)[align=justify i] { text-align: justify; } +:matches(thead, tbody, tfoot, tr, td, th)[valign=top i] { vertical-align: top; } +:matches(thead, tbody, tfoot, tr, td, th)[valign=middle i] { vertical-align: middle; } +:matches(thead, tbody, tfoot, tr, td, th)[valign=bottom i] { vertical-align: bottom; } +:matches(thead, tbody, tfoot, tr, td, th)[valign=baseline i] { vertical-align: baseline; } + +td[nowrap], th[nowrap] { white-space: nowrap; } + +table:matches([rules=none i], [rules=groups i], [rules=rows i], [rules=cols i], [rules=all i]) { + border-style: hidden; + border-collapse: collapse; +} + +table[border] { + border-style: outset; + /* + FIXME: only if border is not equivalent to zero + https://html.spec.whatwg.org/multipage/rendering.html#magic-border-selector + */ +} +table[frame=void i] { border-style: hidden; } +table[frame=above i] { border-style: outset hidden hidden hidden; } +table[frame=below i] { border-style: hidden hidden outset hidden; } +table[frame=hsides i] { border-style: outset hidden outset hidden; } +table[frame=lhs i] { border-style: hidden hidden hidden outset; } +table[frame=rhs i] { border-style: hidden outset hidden hidden; } +table[frame=vsides i] { border-style: hidden outset; } +table[frame=box i], table[frame=border i] { border-style: outset; } + + +table[border] > tr > :matches(td, th), +table[border] > :matches(thead, tbody, tfoot) > tr > :matches(td, th) { + /* + FIXME: only if border is not equivalent to zero + https://html.spec.whatwg.org/multipage/rendering.html#magic-border-selector + */ + border-width: 1px; + border-style: inset; +} + +table:matches([rules=none i], [rules=groups i], [rules=rows i]) > tr > :matches(td, th), +table:matches([rules=none i], [rules=groups i], [rules=rows i]) > :matches(thead, tbody, tfoot) > tr > :matches(td, th) { + border-width: 1px; + border-style: none; +} +table[rules=cols i] > tr > :matches(td, th), +table[rules=cols i] > :matches(thead, tbody, tfoot) > tr > :matches(td, th) { + border-width: 1px; + border-style: none solid; +} +table[rules=all i] > tr > :matches(td, th), +table[rules=all i] > :matches(thead, tbody, tfoot) > tr > :matches(td, th) { + border-width: 1px; + border-style: solid; +} + +table[rules=groups i] > colgroup { + border-left-width: 1px; + border-left-style: solid; + border-right-width: 1px; + border-right-style: solid; +} +table[rules=groups i] > :matches(thead, tbody, tfoot) { + border-top-width: 1px; + border-top-style: solid; + border-bottom-width: 1px; + border-bottom-style: solid; +} +table[rules=rows i] > tr, +table[rules=rows i] > :matches(thead, tbody, tfoot) > tr { + border-top-width: 1px; + border-top-style: solid; + border-bottom-width: 1px; + border-bottom-style: solid; +} + + +hr[align=left] { margin-left: 0; margin-right: auto; } +hr[align=right] { margin-left: auto; margin-right: 0; } +hr[align=center] { margin-left: auto; margin-right: auto; } +hr[color], hr[noshade] { border-style: solid; } + + + +iframe[frameborder=0], iframe[frameborder=no i] { border: none; } + +:matches(applet, embed, iframe, img, input[type=image i], object)[align=left i] { + float: left; +} +:matches(applet, embed, iframe, img, input[type=image i], object)[align=right i] { + float: right; +} +:matches(applet, embed, iframe, img, input[type=image i], object)[align=top i] { + vertical-align: top; +} +:matches(applet, embed, iframe, img, input[type=image i], object)[align=baseline i] { + vertical-align: baseline; +} +:matches(applet, embed, iframe, img, input[type=image i], object)[align=texttop i] { + vertical-align: text-top; +} +:matches(applet, embed, iframe, img, input[type=image i], object):matches([align=absmiddle i], [align=abscenter i]) { + vertical-align: middle; +} +:matches(applet, embed, iframe, img, input[type=image i], object)[align=bottom i] { + vertical-align: bottom; +} +/* +FIXME: +:matches(applet, embed, iframe, img, input[type=image i], object):matches([align=center i], [align=middle i]) { + vertical-align: "aligns the vertical middle of the element with the parent element's baseline." +} +*/ + +/* + +Presentational attributes which can not currently be expressed in CSS. +FIXME: Deal with them with attr(foo dimension) and the like? + +body + marginheight + marginwidth + topmargin + rightmargin + bottommargin + leftmargin + background + bgcolor + text + link + vlink + alink + +frame, iframe + marginheight + marginwidth + +font + face + color + size + +table + cellspacing + cellpadding + hspace + vspace + height + width + bordercolor + border + +col + width + +tr + height + +td, th + width + height + +caption, thead, tbody, tfoot, tr, td, and th + align + +table, thead, tbody, tfoot, tr, td, or th + background + bgcolor + +(quirks mode) th, td + nowrap + +hr + color + noshade + size + width + +legend + align + +applet, embed, iframe, img, input[type=image i], object + hspace + vspace + +img, input[type=image i], object + border + +applet, embed, iframe, img, input[type=image i], object, video + width + height + +*/ + +/* + +Extra + ol > li + https://html.spec.whatwg.org/multipage/semantics.html#ordinal-value + col + span + colgroup (if not col child) + span + td, th + colspan + rowspan + + :computed-value(text-align is initial) > th { + text-align: center; + } + + https://html.spec.whatwg.org/multipage/rendering.html#rendered-legend + +*/ + diff --git a/resources/quirks-mode.css b/resources/quirks-mode.css new file mode 100644 index 00000000000..4ba71bb6392 --- /dev/null +++ b/resources/quirks-mode.css @@ -0,0 +1,33 @@ +/* + +https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3 + +> In quirks mode, the following rules are also expected to apply: + +*/ + +@namespace url(http://www.w3.org/1999/xhtml); + + +form { margin-bottom: 1em; } + + +table { + font-weight: initial; + font-style: initial; + font-variant: initial; + font-size: initial; + line-height: initial; + white-space: initial; + text-align: initial; +} + + +/* FIXME: https://html.spec.whatwg.org/multipage/rendering.html#margin-collapsing-quirks */ + + +input:not([type=image]), textarea { box-sizing: border-box; } + + +img[align=left i] { margin-right: 3px; } +img[align=right i] { margin-left: 3px; } diff --git a/resources/quotes.css b/resources/quotes.css new file mode 100644 index 00000000000..2b1b7470b16 --- /dev/null +++ b/resources/quotes.css @@ -0,0 +1,190 @@ +/* + +https://html.spec.whatwg.org/multipage/rendering.html#quotes + +> This block is automatically generated from the Unicode Common Locale Data Repository. +> http://cldr.unicode.org/ +> +> User agents are expected to use either the block [from the spec] +> (which will be regularly updated) +> or to automatically generate their own copy directly from the source material. +> The language codes are derived from the CLDR file names. +> The quotes are derived from the delimiter blocks, +> with fallback handled as specified in the CLDR documentation. + +*/ + +@namespace url(http://www.w3.org/1999/xhtml); + + +:root { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(af), :not(:lang(af)) > :lang(af) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(agq), :not(:lang(agq)) > :lang(agq) { quotes: '\201e' '\201d' '\201a' '\2019' } /* „ ” ‚ ’ */ +:root:lang(ak), :not(:lang(ak)) > :lang(ak) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(am), :not(:lang(am)) > :lang(am) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(ar), :not(:lang(ar)) > :lang(ar) { quotes: '\201d' '\201c' '\2019' '\2018' } /* ” “ ’ ‘ */ +:root:lang(asa), :not(:lang(asa)) > :lang(asa) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ast), :not(:lang(ast)) > :lang(ast) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(az), :not(:lang(az)) > :lang(az) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(az-Cyrl), :not(:lang(az-Cyrl)) > :lang(az-Cyrl) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(bas), :not(:lang(bas)) > :lang(bas) { quotes: '\00ab' '\00bb' '\201e' '\201c' } /* « » „ “ */ +:root:lang(bem), :not(:lang(bem)) > :lang(bem) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(bez), :not(:lang(bez)) > :lang(bez) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(bg), :not(:lang(bg)) > :lang(bg) { quotes: '\201e' '\201c' '\201e' '\201c' } /* „ “ „ “ */ +:root:lang(bm), :not(:lang(bm)) > :lang(bm) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(bn), :not(:lang(bn)) > :lang(bn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(br), :not(:lang(br)) > :lang(br) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(brx), :not(:lang(brx)) > :lang(brx) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(bs), :not(:lang(bs)) > :lang(bs) { quotes: '\201e' '\201c' '\2018' '\2019' } /* „ “ ‘ ’ */ +:root:lang(bs-Cyrl), :not(:lang(bs-Cyrl)) > :lang(bs-Cyrl) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(ca), :not(:lang(ca)) > :lang(ca) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(cgg), :not(:lang(cgg)) > :lang(cgg) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(chr), :not(:lang(chr)) > :lang(chr) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(cs), :not(:lang(cs)) > :lang(cs) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(cy), :not(:lang(cy)) > :lang(cy) { quotes: '\2018' '\2019' '\201c' '\201d' } /* ‘ ’ “ ” */ +:root:lang(da), :not(:lang(da)) > :lang(da) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(dav), :not(:lang(dav)) > :lang(dav) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(de), :not(:lang(de)) > :lang(de) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(de-CH), :not(:lang(de-CH)) > :lang(de-CH) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(dje), :not(:lang(dje)) > :lang(dje) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(dsb), :not(:lang(dsb)) > :lang(dsb) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(dua), :not(:lang(dua)) > :lang(dua) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */ +:root:lang(dyo), :not(:lang(dyo)) > :lang(dyo) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(dz), :not(:lang(dz)) > :lang(dz) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ebu), :not(:lang(ebu)) > :lang(ebu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ee), :not(:lang(ee)) > :lang(ee) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(el), :not(:lang(el)) > :lang(el) { quotes: '\00ab' '\00bb' '\0022' '\0022' } /* « » " " */ +:root:lang(en), :not(:lang(en)) > :lang(en) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(es), :not(:lang(es)) > :lang(es) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(et), :not(:lang(et)) > :lang(et) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(eu), :not(:lang(eu)) > :lang(eu) { quotes: '\0022' '\0022' '\0022' '\0022' } /* " " " " */ +:root:lang(ewo), :not(:lang(ewo)) > :lang(ewo) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(fa), :not(:lang(fa)) > :lang(fa) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(ff), :not(:lang(ff)) > :lang(ff) { quotes: '\201e' '\201d' '\201a' '\2019' } /* „ ” ‚ ’ */ +:root:lang(fi), :not(:lang(fi)) > :lang(fi) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */ +:root:lang(fil), :not(:lang(fil)) > :lang(fil) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(fr), :not(:lang(fr)) > :lang(fr) { quotes: '\00ab' '\00bb' '\00ab' '\00bb' } /* « » « » */ +:root:lang(fr-CA), :not(:lang(fr-CA)) > :lang(fr-CA) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(fr-CH), :not(:lang(fr-CH)) > :lang(fr-CH) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(ga), :not(:lang(ga)) > :lang(ga) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(gd), :not(:lang(gd)) > :lang(gd) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(gl), :not(:lang(gl)) > :lang(gl) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(gsw), :not(:lang(gsw)) > :lang(gsw) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(gu), :not(:lang(gu)) > :lang(gu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(guz), :not(:lang(guz)) > :lang(guz) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ha), :not(:lang(ha)) > :lang(ha) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(he), :not(:lang(he)) > :lang(he) { quotes: '\05f4' '\05f4' '\05f3' '\05f3' } /* ״ ״ ׳ ׳ */ +:root:lang(hi), :not(:lang(hi)) > :lang(hi) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(hr), :not(:lang(hr)) > :lang(hr) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(hsb), :not(:lang(hsb)) > :lang(hsb) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(hu), :not(:lang(hu)) > :lang(hu) { quotes: '\201e' '\201d' '\00bb' '\00ab' } /* „ ” » « */ +:root:lang(hy), :not(:lang(hy)) > :lang(hy) { quotes: '\00ab' '\00bb' '\00ab' '\00bb' } /* « » « » */ +:root:lang(id), :not(:lang(id)) > :lang(id) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ig), :not(:lang(ig)) > :lang(ig) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(is), :not(:lang(is)) > :lang(is) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(it), :not(:lang(it)) > :lang(it) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(ja), :not(:lang(ja)) > :lang(ja) { quotes: '\300c' '\300d' '\300e' '\300f' } /* 「 」 『 』 */ +:root:lang(jgo), :not(:lang(jgo)) > :lang(jgo) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(jmc), :not(:lang(jmc)) > :lang(jmc) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ka), :not(:lang(ka)) > :lang(ka) { quotes: '\201e' '\201c' '\00ab' '\00bb' } /* „ “ « » */ +:root:lang(kab), :not(:lang(kab)) > :lang(kab) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(kam), :not(:lang(kam)) > :lang(kam) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(kde), :not(:lang(kde)) > :lang(kde) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(kea), :not(:lang(kea)) > :lang(kea) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(khq), :not(:lang(khq)) > :lang(khq) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ki), :not(:lang(ki)) > :lang(ki) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(kk), :not(:lang(kk)) > :lang(kk) { quotes: '\201c' '\0022' '\2018' '\2019' } /* “ " ‘ ’ */ +:root:lang(kkj), :not(:lang(kkj)) > :lang(kkj) { quotes: '\00ab' '\00bb' '\2039' '\203a' } /* « » ‹ › */ +:root:lang(kln), :not(:lang(kln)) > :lang(kln) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(km), :not(:lang(km)) > :lang(km) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(kn), :not(:lang(kn)) > :lang(kn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ko), :not(:lang(ko)) > :lang(ko) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ksb), :not(:lang(ksb)) > :lang(ksb) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ksf), :not(:lang(ksf)) > :lang(ksf) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */ +:root:lang(ky), :not(:lang(ky)) > :lang(ky) { quotes: '\00ab' '\00bb' '\201e' '\201c' } /* « » „ “ */ +:root:lang(lag), :not(:lang(lag)) > :lang(lag) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */ +:root:lang(lb), :not(:lang(lb)) > :lang(lb) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(lg), :not(:lang(lg)) > :lang(lg) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ln), :not(:lang(ln)) > :lang(ln) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(lo), :not(:lang(lo)) > :lang(lo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(lt), :not(:lang(lt)) > :lang(lt) { quotes: '\201e' '\201c' '\201e' '\201c' } /* „ “ „ “ */ +:root:lang(lu), :not(:lang(lu)) > :lang(lu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(luo), :not(:lang(luo)) > :lang(luo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(luy), :not(:lang(luy)) > :lang(luy) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(lv), :not(:lang(lv)) > :lang(lv) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mas), :not(:lang(mas)) > :lang(mas) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mer), :not(:lang(mer)) > :lang(mer) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mfe), :not(:lang(mfe)) > :lang(mfe) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mg), :not(:lang(mg)) > :lang(mg) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(mgo), :not(:lang(mgo)) > :lang(mgo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mk), :not(:lang(mk)) > :lang(mk) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(ml), :not(:lang(ml)) > :lang(ml) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mn), :not(:lang(mn)) > :lang(mn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mr), :not(:lang(mr)) > :lang(mr) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ms), :not(:lang(ms)) > :lang(ms) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mt), :not(:lang(mt)) > :lang(mt) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(mua), :not(:lang(mua)) > :lang(mua) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(my), :not(:lang(my)) > :lang(my) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(naq), :not(:lang(naq)) > :lang(naq) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(nb), :not(:lang(nb)) > :lang(nb) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */ +:root:lang(nd), :not(:lang(nd)) > :lang(nd) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ne), :not(:lang(ne)) > :lang(ne) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(nl), :not(:lang(nl)) > :lang(nl) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(nmg), :not(:lang(nmg)) > :lang(nmg) { quotes: '\201e' '\201d' '\00ab' '\00bb' } /* „ ” « » */ +:root:lang(nn), :not(:lang(nn)) > :lang(nn) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */ +:root:lang(nnh), :not(:lang(nnh)) > :lang(nnh) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(nus), :not(:lang(nus)) > :lang(nus) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(nyn), :not(:lang(nyn)) > :lang(nyn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(pa), :not(:lang(pa)) > :lang(pa) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(pl), :not(:lang(pl)) > :lang(pl) { quotes: '\201e' '\201d' '\00ab' '\00bb' } /* „ ” « » */ +:root:lang(pt), :not(:lang(pt)) > :lang(pt) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(pt-PT), :not(:lang(pt-PT)) > :lang(pt-PT) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(rn), :not(:lang(rn)) > :lang(rn) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */ +:root:lang(ro), :not(:lang(ro)) > :lang(ro) { quotes: '\201c' '\201d' '\00ab' '\00bb' } /* “ ” « » */ +:root:lang(rof), :not(:lang(rof)) > :lang(rof) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ru), :not(:lang(ru)) > :lang(ru) { quotes: '\00ab' '\00bb' '\201e' '\201c' } /* « » „ “ */ +:root:lang(rw), :not(:lang(rw)) > :lang(rw) { quotes: '\00ab' '\00bb' '\2018' '\2019' } /* « » ‘ ’ */ +:root:lang(rwk), :not(:lang(rwk)) > :lang(rwk) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(saq), :not(:lang(saq)) > :lang(saq) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(sbp), :not(:lang(sbp)) > :lang(sbp) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(seh), :not(:lang(seh)) > :lang(seh) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ses), :not(:lang(ses)) > :lang(ses) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(sg), :not(:lang(sg)) > :lang(sg) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(shi), :not(:lang(shi)) > :lang(shi) { quotes: '\00ab' '\00bb' '\201e' '\201d' } /* « » „ ” */ +:root:lang(shi-Latn), :not(:lang(shi-Latn)) > :lang(shi-Latn) { quotes: '\00ab' '\00bb' '\201e' '\201d' } /* « » „ ” */ +:root:lang(si), :not(:lang(si)) > :lang(si) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(sk), :not(:lang(sk)) > :lang(sk) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(sl), :not(:lang(sl)) > :lang(sl) { quotes: '\201e' '\201c' '\201a' '\2018' } /* „ “ ‚ ‘ */ +:root:lang(sn), :not(:lang(sn)) > :lang(sn) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */ +:root:lang(so), :not(:lang(so)) > :lang(so) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(sq), :not(:lang(sq)) > :lang(sq) { quotes: '\00ab' '\00bb' '\201c' '\201d' } /* « » “ ” */ +:root:lang(sr), :not(:lang(sr)) > :lang(sr) { quotes: '\201e' '\201c' '\2018' '\2018' } /* „ “ ‘ ‘ */ +:root:lang(sr-Latn), :not(:lang(sr-Latn)) > :lang(sr-Latn) { quotes: '\201e' '\201c' '\2018' '\2018' } /* „ “ ‘ ‘ */ +:root:lang(sv), :not(:lang(sv)) > :lang(sv) { quotes: '\201d' '\201d' '\2019' '\2019' } /* ” ” ’ ’ */ +:root:lang(sw), :not(:lang(sw)) > :lang(sw) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(swc), :not(:lang(swc)) > :lang(swc) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ta), :not(:lang(ta)) > :lang(ta) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(te), :not(:lang(te)) > :lang(te) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(teo), :not(:lang(teo)) > :lang(teo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(th), :not(:lang(th)) > :lang(th) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(ti-ER), :not(:lang(ti-ER)) > :lang(ti-ER) { quotes: '\2018' '\2019' '\201c' '\201d' } /* ‘ ’ “ ” */ +:root:lang(to), :not(:lang(to)) > :lang(to) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(tr), :not(:lang(tr)) > :lang(tr) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(twq), :not(:lang(twq)) > :lang(twq) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(tzm), :not(:lang(tzm)) > :lang(tzm) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(uk), :not(:lang(uk)) > :lang(uk) { quotes: '\00ab' '\00bb' '\201e' '\201c' } /* « » „ “ */ +:root:lang(ur), :not(:lang(ur)) > :lang(ur) { quotes: '\201d' '\201c' '\2019' '\2018' } /* ” “ ’ ‘ */ +:root:lang(ur-IN), :not(:lang(ur-IN)) > :lang(ur-IN) { quotes: '\0022' '\0022' '\0027' '\0027' } /* " " ' ' */ +:root:lang(uz), :not(:lang(uz)) > :lang(uz) { quotes: '\0022' '\0022' '\0027' '\0027' } /* " " ' ' */ +:root:lang(uz-Cyrl), :not(:lang(uz-Cyrl)) > :lang(uz-Cyrl) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(vai), :not(:lang(vai)) > :lang(vai) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(vai-Latn), :not(:lang(vai-Latn)) > :lang(vai-Latn) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(vi), :not(:lang(vi)) > :lang(vi) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(vun), :not(:lang(vun)) > :lang(vun) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(xog), :not(:lang(xog)) > :lang(xog) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(yav), :not(:lang(yav)) > :lang(yav) { quotes: '\00ab' '\00bb' '\00ab' '\00bb' } /* « » « » */ +:root:lang(yo), :not(:lang(yo)) > :lang(yo) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(zgh), :not(:lang(zgh)) > :lang(zgh) { quotes: '\00ab' '\00bb' '\201e' '\201d' } /* « » „ ” */ +:root:lang(zh), :not(:lang(zh)) > :lang(zh) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ +:root:lang(zh-Hant), :not(:lang(zh-Hant)) > :lang(zh-Hant) { quotes: '\300c' '\300d' '\300e' '\300f' } /* 「 」 『 』 */ +:root:lang(zu), :not(:lang(zu)) > :lang(zu) { quotes: '\201c' '\201d' '\2018' '\2019' } /* “ ” ‘ ’ */ diff --git a/resources/servo.css b/resources/servo.css new file mode 100644 index 00000000000..cdeff0c0ff0 --- /dev/null +++ b/resources/servo.css @@ -0,0 +1,12 @@ +input { background: white; min-height: 1.0em; padding: 0em; padding-left: 0.25em; padding-right: 0.25em; border: solid lightgrey 1px; color: black; white-space: nowrap; } +input[type="button"], +input[type="submit"], +input[type="reset"] { background: lightgrey; border-top: solid 1px #EEEEEE; border-left: solid 1px #CCCCCC; border-right: solid 1px #999999; border-bottom: solid 1px #999999; text-align: center; vertical-align: middle; color: black; } +input[type="hidden"] { display: none !important } +input[type="checkbox"], +input[type="radio"] { font-family: monospace !important; border: none !important; background: transparent; } + +input[type="checkbox"]::before { content: "[ ]"; padding: 0; } +input[type="checkbox"][checked]::before { content: "[✓]"; } +input[type="radio"]::before { content: "( )"; padding: 0; } +input[type="radio"][checked]::before { content: "(●)"; } diff --git a/resources/user-agent.css b/resources/user-agent.css index 209bafa4c2e..8ae8f5a5960 100644 --- a/resources/user-agent.css +++ b/resources/user-agent.css @@ -1,130 +1,276 @@ -html, address, -blockquote, -body, div, -dt, fieldset, form, -frame, frameset, -h1, h2, h3, h4, -h5, h6, noframes, -center, dir, -hr, menu, pre { display: block; unicode-bidi: embed } - head, noscript { display: none } - table { display: table } - tr { display: table-row } - thead { display: table-header-group } - tbody { display: table-row-group } - tfoot { display: table-footer-group } - col { display: table-column } - colgroup { display: table-column-group } - td, th { display: table-cell } - caption { display: table-caption } - th { font-weight: bolder; text-align: center } - caption { text-align: center } - body { margin: 8px } - h1 { font-size: 2em; margin: .67em 0 } - h2 { font-size: 1.5em; margin: .75em 0 } - h3 { font-size: 1.17em; margin: .83em 0 } -h4, -blockquote, -fieldset, dir, -menu { margin: 1.12em 0 } - h5 { font-size: .83em; margin: 1.5em 0 } - h6 { font-size: .75em; margin: 1.67em 0 } -h1, h2, h3, h4, -h5, h6, b, - strong { font-weight: bolder } - blockquote { margin-left: 40px; margin-right: 40px } -i, cite, em, - var, address { font-style: italic } -pre, tt, code, - kbd, samp { font-family: monospace } - pre { white-space: pre } -button, textarea, - input, select { display: inline-block } - big { font-size: 1.17em } - small, sub, sup { font-size: .83em } - sub { vertical-align: sub } - sup { vertical-align: super } - table { border-spacing: 2px; } -thead, tbody, - tfoot { vertical-align: middle } - td, th, tr { vertical-align: inherit } - s, strike, del { text-decoration: line-through } - hr { border: 1px inset } - -/* lists */ -dd { display: block; margin-left: 40px } -p, dl, multicol { display: block; margin: 1em 0 } -ul { display: block; list-style-type: disc; - margin: 1em 0; padding-left: 40px } - -ol { display: block; list-style-type: decimal; - margin: 1em 0; padding-left: 40px } - -li { display: list-item } - -/* nested lists have no top/bottom margins */ -ul ul, ul ol, ul dl, -ol ul, ol ol, ol dl, -dl ul, dl ol, dl dl { margin-top: 0; margin-bottom: 0 } - -/* 2 deep unordered lists use a circle */ -ol ul, ul ul { list-style-type: circle; } - -/* 3 deep (or more) unordered lists use a square */ -ol ol ul, ol ul ul, -ul ol ul, ul ul ul { list-style-type: square; } - -/* The type attribute on ol and ul elements */ -ul[type="disc"] { list-style-type: disc; } -ul[type="circle"] { list-style-type: circle; } -ul[type="square"] { list-style-type: square; } -ol[type="1"] { list-style-type: decimal; } -ol[type="a"] { list-style-type: lower-alpha; } -ol[type="A"] { list-style-type: upper-alpha; } -ol[type="i"] { list-style-type: lower-roman; } -ol[type="I"] { list-style-type: upper-roman; } - -u, ins { text-decoration: underline } -br:before { content: "\A"; white-space: pre } - -center { text-align: center } -a:link, -a:visited, -area:link, -area:visited, -link:link, -link:visited { text-decoration: underline } -:focus { outline: thin dotted invert } - -/* Begin bidirectionality settings (do not change) */ -BDO[DIR="ltr"] { direction: ltr; unicode-bidi: bidi-override } -BDO[DIR="rtl"] { direction: rtl; unicode-bidi: bidi-override } - -*[DIR="ltr"] { direction: ltr; unicode-bidi: embed } -*[DIR="rtl"] { direction: rtl; unicode-bidi: embed } - -@media print { -h1 { page-break-before: always } -h1, h2, h3, -h4, h5, h6 { page-break-after: avoid } -ul, ol, dl { page-break-before: avoid } -} - -/* Servo additions */ -a:link, -area:link, -link:link { color: blue } -script { display: none } -style { display: none } -input { background: white; min-height: 1.0em; padding: 0em; padding-left: 0.25em; padding-right: 0.25em; border: solid lightgrey 1px; color: black; white-space: nowrap; } -input[type="button"], -input[type="submit"], -input[type="reset"] { background: lightgrey; border-top: solid 1px #EEEEEE; border-left: solid 1px #CCCCCC; border-right: solid 1px #999999; border-bottom: solid 1px #999999; text-align: center; vertical-align: middle; color: black; } -input[type="hidden"] { display: none !important } -input[type="checkbox"], -input[type="radio"] { font-family: monospace !important; border: none !important; background: transparent; } - -input[type="checkbox"]::before { content: "[ ]"; padding: 0; } -input[type="checkbox"][checked]::before { content: "[✓]"; } -input[type="radio"]::before { content: "( )"; padding: 0; } -input[type="radio"][checked]::before { content: "(●)"; } +/* +https://html.spec.whatwg.org/multipage/rendering.html#form-controls +*/ + +@namespace url(http://www.w3.org/1999/xhtml); + +/* +FIXME: Uncomment this when :lang() is supported, or do something equivalent. +@import url(quotes.css); +*/ + +[hidden], area, base, basefont, datalist, head, link, menu[type=popup i], meta, +noembed, noframes, param, rp, script, source, style, template, track, title { + display: none; +} + +embed[hidden] { display: inline; height: 0; width: 0; } + +/* FIXME: only if scripting is enabled */ +noscript { display: none !important; } + +input[type=hidden i] { display: none !important; } + + +html, body { display: block; } + +body { margin: 8px; } + + +address, blockquote, center, div, figure, figcaption, footer, form, header, hr, +legend, listing, main, p, plaintext, pre, summary, xmp { + display: block; +} + +blockquote, figure, listing, p, plaintext, pre, xmp { + margin-top: 1em; margin-bottom: 1em; +} + +blockquote, figure { margin-left: 40px; margin-right: 40px; } + +address { font-style: italic; } +listing, plaintext, pre, xmp { + font-family: monospace; white-space: pre; +} + +dialog:not([open]) { display: none; } +dialog { + position: absolute; + left: 0; right: 0; + /* FIXME: support fit-content */ + width: fit-content; + height: fit-content; + margin: auto; + border: solid; + padding: 1em; + background: white; + color: black; +} +/* FIXME: support ::backdrop */ +dialog::backdrop { + position: fixed; + top: 0; right: 0; bottom: 0; left: 0; + background: rgba(0,0,0,0.1); +} + +/* for small devices, modal dialogs go full-screen */ +@media screen and (max-width: 540px) { + /* FIXME: support :modal */ + dialog:modal { + top: 0; + width: auto; + margin: 1em; + } +} + + +cite, dfn, em, i, var { font-style: italic; } +b, strong { font-weight: bolder; } +code, kbd, samp, tt { font-family: monospace; } +big { font-size: larger; } +small { font-size: smaller; } + +sub { vertical-align: sub; } +sup { vertical-align: super; } +sub, sup { line-height: normal; font-size: smaller; } + +ruby { display: ruby; } +rt { display: ruby-text; } + +:link { color: #0000EE; } +:visited { color: #551A8B; } +:link, :visited { text-decoration: underline; } +a:link[rel~=help], a:visited[rel~=help], +area:link[rel~=help], area:visited[rel~=help] { cursor: help; } + +:focus { outline: thin dotted; } /* FIXME: 'outline: auto' ? */ + +mark { background: yellow; color: black; } + +abbr[title], acronym[title] { text-decoration: dotted underline; } +ins, u { text-decoration: underline; } +del, s, strike { text-decoration: line-through; } +blink { text-decoration: blink; } + +q::before { content: open-quote; } +q::after { content: close-quote; } + +/*br { display-outside: newline; } /* this also has bidi implications */ +br::before { content: "\A"; white-space: pre } + +nobr { white-space: nowrap; } +wbr { display-outside: break-opportunity; } /* this also has bidi implications */ +nobr wbr { white-space: normal; } + + +[dir]:dir(ltr), bdi:dir(ltr), input[type=tel]:dir(ltr) { direction: ltr; } +[dir]:dir(rtl), bdi:dir(rtl) { direction: rtl; } + +address, blockquote, center, div, figure, figcaption, footer, form, header, hr, +legend, listing, main, p, plaintext, pre, summary, xmp, article, aside, h1, h2, +h3, h4, h5, h6, hgroup, nav, section, table, caption, colgroup, col, thead, +tbody, tfoot, tr, td, th, dir, dd, dl, dt, menu, ol, ul, li, bdi, output, +[dir=ltr i], [dir=rtl i], [dir=auto i] { + unicode-bidi: isolate; +} + +bdo, bdo[dir] { unicode-bidi: isolate-override; } + +textarea[dir=auto i], pre[dir=auto i] { unicode-bidi: plaintext; } + + +article, aside, h1, h2, h3, h4, h5, h6, hgroup, nav, section { + display: block; +} + +h1 { margin-top: 0.67em; margin-bottom: 0.67em; font-size: 2.00em; font-weight: bold; } +h2 { margin-top: 0.83em; margin-bottom: 0.83em; font-size: 1.50em; font-weight: bold; } +h3 { margin-top: 1.00em; margin-bottom: 1.00em; font-size: 1.17em; font-weight: bold; } +h4 { margin-top: 1.33em; margin-bottom: 1.33em; font-size: 1.00em; font-weight: bold; } +h5 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; font-weight: bold; } +h6 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; font-weight: bold; } + +:matches(article, aside, nav, section) h1 { margin-top: 0.83em; margin-bottom: 0.83em; font-size: 1.50em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) h1 { margin-top: 1.00em; margin-bottom: 1.00em; font-size: 1.17em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1 { margin-top: 1.33em; margin-bottom: 1.33em; font-size: 1.00em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; } + +:matches(article, aside, nav, section) hgroup > h1 ~ h2 { margin-top: 1.00em; margin-bottom: 1.00em; font-size: 1.17em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) hgroup > h1 ~ h2 { margin-top: 1.33em; margin-bottom: 1.33em; font-size: 1.00em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) hgroup > h1 ~ h2 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) hgroup > h1 ~ h2 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; } + +:matches(article, aside, nav, section) hgroup > h1 ~ h3 { margin-top: 1.33em; margin-bottom: 1.33em; font-size: 1.00em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) hgroup > h1 ~ h3 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) hgroup > h1 ~ h3 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; } + +:matches(article, aside, nav, section) hgroup > h1 ~ h4 { margin-top: 1.67em; margin-bottom: 1.67em; font-size: 0.83em; } +:matches(article, aside, nav, section) :matches(article, aside, nav, section) hgroup > h1 ~ h4 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; } + +:matches(article, aside, nav, section) hgroup > h1 ~ h5 { margin-top: 2.33em; margin-bottom: 2.33em; font-size: 0.67em; } + + +dir, dd, dl, dt, menu, ol, ul { display: block; } +li { display: list-item; } + +dir, dl, menu, ol, ul { margin-top: 1em; margin-bottom: 1em; } + +:matches(dir, dl, menu, ol, ul) :matches(dir, dl, menu, ol, ul) { + margin-top: 0; margin-bottom: 0; +} + +dd { margin-left: 40px; } /* FIXME: use margin-inline-start when supported */ +dir, menu, ol, ul { padding-left: 40px; } /* FIXME: use padding-inline-start when supported */ + +ol { list-style-type: decimal; } + +dir, menu, ul { list-style-type: disc; } + +:matches(dir, menu, ol, ul) :matches(dir, menu, ul) { + list-style-type: circle; +} + +:matches(dir, menu, ol, ul) :matches(dir, menu, ol, ul) :matches(dir, menu, ul) { + list-style-type: square; +} + + +table { display: table; } +caption { display: table-caption; } +colgroup, colgroup[hidden] { display: table-column-group; } +col, col[hidden] { display: table-column; } +thead, thead[hidden] { display: table-header-group; } +tbody, tbody[hidden] { display: table-row-group; } +tfoot, tfoot[hidden] { display: table-footer-group; } +tr, tr[hidden] { display: table-row; } +td, th, td[hidden], th[hidden] { display: table-cell; } + +colgroup[hidden], col[hidden], thead[hidden], tbody[hidden], +tfoot[hidden], tr[hidden], td[hidden], th[hidden] { + visibility: collapse; +} + +table { + box-sizing: border-box; + border-spacing: 2px; + border-collapse: separate; + text-indent: initial; +} +td, th { padding: 1px; } +th { font-weight: bold; } + +thead, tbody, tfoot, table > tr { vertical-align: middle; } +tr, td, th { vertical-align: inherit; } + + +table, td, th { border-color: gray; } +thead, tbody, tfoot, tr { border-color: inherit; } +table:matches( + [rules=none i], [rules=groups i], [rules=rows i], + [rules=cols i], [rules=all i], + [frame=void i], [frame=above i], [frame=below i], + [frame=hsides i], [frame=lhs i], [frame=rhs i], + [frame=vsides i], [frame=box i], [frame=border i] +), +table:matches( + [rules=none i], [rules=groups i], [rules=rows i], + [rules=cols i], [rules=all i] +) > tr > :matches(td, th), +table:matches( + [rules=none i], [rules=groups i], [rules=rows i], + [rules=cols i], [rules=all i] +) > :matches(thead, tbody, tfoot) > tr > :matches(td, th) { + border-color: black; +} + + +:matches(table, thead, tbody, tfoot, tr) > form { + display: none !important; +} + + +input, select, option, optgroup, button, textarea, keygen { + text-indent: initial; +} + +textarea { white-space: pre-wrap; } + +input[type="radio"], input[type="checkbox"], input[type="reset"], input[type="button"], +input[type="submit"], select, button { + box-sizing: border-box; +} + + +hr { color: gray; border-style: inset; border-width: 1px; margin: 0.5em auto; } + + +fieldset { + display: block; /* https://www.w3.org/Bugs/Public/show_bug.cgi?id=27018 */ + margin-left: 2px; margin-right: 2px; + border: groove 2px; + border-color: ThreeDFace; /* FIXME: system color */ + padding: 0.35em 0.625em 0.75em; + min-width: min-content; +} + +legend { + padding-left: 2px; padding-right: 2px; +} + +iframe:not([seamless]) { border: 2px inset; } +iframe[seamless] { display: block; } +video { object-fit: contain; } + + +textarea { white-space: pre-wrap; } |