mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-10 13:00:29 +03:00
0cd82d2da7
Since all the spec sections are annotated with comments already, let's also have a comment mentioning that the file starts with ad-hoc rules.
696 lines
14 KiB
CSS
696 lines
14 KiB
CSS
/* Default user-agent stylesheet for LibWeb
|
|
* Note: This stylesheet starts with a bunch of ad-hoc custom rules.
|
|
* After that, rules from the HTML spec follow.
|
|
*/
|
|
|
|
html {
|
|
font-family: sans-serif;
|
|
color: -libweb-palette-base-text;
|
|
}
|
|
|
|
body {
|
|
margin: 8px;
|
|
}
|
|
|
|
center {
|
|
text-align: -libweb-center;
|
|
}
|
|
|
|
hr {
|
|
margin-top: 0.5em;
|
|
margin-bottom: 0.5em;
|
|
border: 1px inset #888888;
|
|
}
|
|
|
|
blink {
|
|
display: inline;
|
|
}
|
|
|
|
/* FIXME: This is a temporary hack until we can render a native-looking frame for these. */
|
|
input, textarea {
|
|
border: 1px solid -libweb-palette-threed-shadow1;
|
|
min-width: 80px;
|
|
min-height: 16px;
|
|
width: 120px;
|
|
cursor: text;
|
|
overflow: hidden;
|
|
}
|
|
|
|
textarea {
|
|
padding: 2px;
|
|
display: inline-block;
|
|
overflow: scroll;
|
|
}
|
|
|
|
input[type=submit], input[type=button], input[type=reset], input[type=checkbox], input[type=radio] {
|
|
border: none;
|
|
min-width: unset;
|
|
min-height: unset;
|
|
width: unset;
|
|
cursor: unset;
|
|
}
|
|
|
|
button, input[type=submit], input[type=button], input[type=reset] {
|
|
padding: 1px 4px;
|
|
background-color: -libweb-palette-button;
|
|
border: 1px solid -libweb-palette-threed-shadow1;
|
|
color: -libweb-palette-button-text;
|
|
}
|
|
|
|
button:hover, input[type=submit]:hover, input[type=button]:hover, input[type=reset]:hover {
|
|
background-color: -libweb-palette-hover-highlight;
|
|
}
|
|
|
|
option {
|
|
display: none;
|
|
}
|
|
|
|
/* 15.3.1 Hidden elements
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#hidden-elements
|
|
*/
|
|
|
|
area, base, basefont, datalist, head, link, meta, noembed,
|
|
noframes, param, rp, script, style, template, title {
|
|
display: none;
|
|
}
|
|
|
|
[hidden]:not([hidden=until-found i]) {
|
|
display: none;
|
|
}
|
|
|
|
[hidden=until-found i]:not(embed) {
|
|
content-visibility: hidden;
|
|
}
|
|
|
|
embed[hidden] {
|
|
display: inline;
|
|
height: 0;
|
|
width: 0;
|
|
}
|
|
|
|
input[type=hidden i] {
|
|
display: none !important;
|
|
}
|
|
|
|
@media (scripting) {
|
|
noscript {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
/* 15.3.2 The page
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#the-page
|
|
*/
|
|
|
|
html, body {
|
|
display: block;
|
|
}
|
|
|
|
/* 15.3.3 Flow content
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#flow-content-3
|
|
*/
|
|
address, blockquote, center, dialog, div, figure, figcaption, footer, form,
|
|
header, hr, legend, listing, main, p, plaintext, pre, 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;
|
|
inset-left: 0;
|
|
inset-right: 0;
|
|
width: fit-content;
|
|
height: fit-content;
|
|
margin: auto;
|
|
border: solid;
|
|
padding: 1em;
|
|
background-color: Canvas;
|
|
color: CanvasText;
|
|
}
|
|
|
|
dialog::backdrop {
|
|
background: rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
slot {
|
|
display: contents;
|
|
}
|
|
|
|
/* 15.3.4 Phrasing content
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#phrasing-content-3
|
|
*/
|
|
|
|
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: -libweb-link;
|
|
}
|
|
|
|
:visited {
|
|
color: -libweb-palette-visited-link;
|
|
}
|
|
|
|
:link:active, :visited:active {
|
|
color: -libweb-palette-active-link;
|
|
}
|
|
|
|
:link, :visited {
|
|
text-decoration: underline;
|
|
cursor: pointer;
|
|
}
|
|
|
|
:focus-visible {
|
|
outline: auto;
|
|
}
|
|
|
|
mark {
|
|
background: yellow;
|
|
color: black;
|
|
}
|
|
|
|
/* this color is just a suggestion and can be changed based on implementation feedback */
|
|
|
|
abbr[title], acronym[title] {
|
|
text-decoration: dotted underline;
|
|
}
|
|
|
|
ins, u {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
del, s, strike {
|
|
text-decoration: line-through;
|
|
}
|
|
|
|
q::before {
|
|
content: open-quote;
|
|
}
|
|
|
|
q::after {
|
|
content: close-quote;
|
|
}
|
|
|
|
br {
|
|
display-outside: newline;
|
|
}
|
|
|
|
/* this also has bidi implications */
|
|
nobr {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
wbr {
|
|
display-outside: break-opportunity;
|
|
}
|
|
|
|
/* this also has bidi implications */
|
|
nobr wbr {
|
|
white-space: normal;
|
|
}
|
|
|
|
/* 15.3.5 Bidirectional text
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#bidi-rendering
|
|
*/
|
|
|
|
[dir]:dir(ltr), bdi:dir(ltr), input[type=tel i]: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;
|
|
}
|
|
|
|
input[dir=auto i]:is([type=search i], [type=tel i], [type=url i],
|
|
[type=email i]), textarea[dir=auto i], pre[dir=auto i] {
|
|
unicode-bidi: plaintext;
|
|
}
|
|
|
|
/* 15.3.6 Sections and headings
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#sections-and-headings
|
|
*/
|
|
|
|
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;
|
|
}
|
|
|
|
:is(article, aside, nav, section) h1 {
|
|
margin-top: 0.83em;
|
|
margin-bottom: 0.83em;
|
|
font-size: 1.50em;
|
|
}
|
|
|
|
:is(article, aside, nav, section) :is(article, aside, nav, section) h1 {
|
|
margin-top: 1.00em;
|
|
margin-bottom: 1.00em;
|
|
font-size: 1.17em;
|
|
}
|
|
|
|
:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 {
|
|
margin-top: 1.33em;
|
|
margin-bottom: 1.33em;
|
|
font-size: 1.00em;
|
|
}
|
|
|
|
:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 {
|
|
margin-top: 1.67em;
|
|
margin-bottom: 1.67em;
|
|
font-size: 0.83em;
|
|
}
|
|
|
|
:is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) :is(article, aside, nav, section) h1 {
|
|
margin-top: 2.33em;
|
|
margin-bottom: 2.33em;
|
|
font-size: 0.67em;
|
|
}
|
|
|
|
/* 15.3.7 Lists
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#lists
|
|
*/
|
|
dir, dd, dl, dt, menu, ol, ul {
|
|
display: block;
|
|
}
|
|
|
|
li {
|
|
display: list-item;
|
|
text-align: match-parent;
|
|
}
|
|
|
|
dir, dl, menu, ol, ul {
|
|
margin-top: 1em;
|
|
margin-bottom: 1em;
|
|
}
|
|
|
|
:is(dir, dl, menu, ol, ul) :is(dir, dl, menu, ol, ul) {
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
dd {
|
|
margin-left: 40px;
|
|
}
|
|
|
|
dir, menu, ol, ul {
|
|
padding-left: 40px;
|
|
}
|
|
|
|
ol, ul, menu {
|
|
counter-reset: list-item;
|
|
}
|
|
|
|
ol {
|
|
list-style-type: decimal;
|
|
}
|
|
|
|
dir, menu, ul {
|
|
list-style-type: disc;
|
|
}
|
|
|
|
:is(dir, menu, ol, ul) :is(dir, menu, ul) {
|
|
list-style-type: circle;
|
|
}
|
|
|
|
:is(dir, menu, ol, ul) :is(dir, menu, ol, ul) :is(dir, menu, ul) {
|
|
list-style-type: square;
|
|
}
|
|
|
|
/* 15.3.8 Tables
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#tables-2
|
|
*/
|
|
|
|
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 {
|
|
display: table-cell;
|
|
}
|
|
|
|
colgroup[hidden], col[hidden], thead[hidden], tbody[hidden],
|
|
tfoot[hidden], tr[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;
|
|
}
|
|
|
|
caption {
|
|
text-align: center;
|
|
}
|
|
|
|
thead, tbody, tfoot, table > tr {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
tr, td, th {
|
|
vertical-align: inherit;
|
|
}
|
|
|
|
thead, tbody, tfoot, tr {
|
|
border-color: inherit;
|
|
}
|
|
|
|
table[rules=none i], table[rules=groups i], table[rules=rows i],
|
|
table[rules=cols i], table[rules=all i], table[frame=void i],
|
|
table[frame=above i], table[frame=below i], table[frame=hsides i],
|
|
table[frame=lhs i], table[frame=rhs i], table[frame=vsides i],
|
|
table[frame=box i], table[frame=border i],
|
|
table[rules=none i] > tr > td, table[rules=none i] > tr > th,
|
|
table[rules=groups i] > tr > td, table[rules=groups i] > tr > th,
|
|
table[rules=rows i] > tr > td, table[rules=rows i] > tr > th,
|
|
table[rules=cols i] > tr > td, table[rules=cols i] > tr > th,
|
|
table[rules=all i] > tr > td, table[rules=all i] > tr > th,
|
|
table[rules=none i] > thead > tr > td, table[rules=none i] > thead > tr > th,
|
|
table[rules=groups i] > thead > tr > td, table[rules=groups i] > thead > tr > th,
|
|
table[rules=rows i] > thead > tr > td, table[rules=rows i] > thead > tr > th,
|
|
table[rules=cols i] > thead > tr > td, table[rules=cols i] > thead > tr > th,
|
|
table[rules=all i] > thead > tr > td, table[rules=all i] > thead > tr > th,
|
|
table[rules=none i] > tbody > tr > td, table[rules=none i] > tbody > tr > th,
|
|
table[rules=groups i] > tbody > tr > td, table[rules=groups i] > tbody > tr > th,
|
|
table[rules=rows i] > tbody > tr > td, table[rules=rows i] > tbody > tr > th,
|
|
table[rules=cols i] > tbody > tr > td, table[rules=cols i] > tbody > tr > th,
|
|
table[rules=all i] > tbody > tr > td, table[rules=all i] > tbody > tr > th,
|
|
table[rules=none i] > tfoot > tr > td, table[rules=none i] > tfoot > tr > th,
|
|
table[rules=groups i] > tfoot > tr > td, table[rules=groups i] > tfoot > tr > th,
|
|
table[rules=rows i] > tfoot > tr > td, table[rules=rows i] > tfoot > tr > th,
|
|
table[rules=cols i] > tfoot > tr > td, table[rules=cols i] > tfoot > tr > th,
|
|
table[rules=all i] > tfoot > tr > td, table[rules=all i] > tfoot > tr > th {
|
|
border-color: black;
|
|
}
|
|
|
|
/* 15.3.10 Form controls
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#form-controls
|
|
*/
|
|
|
|
input, select, button, textarea {
|
|
letter-spacing: initial;
|
|
word-spacing: initial;
|
|
line-height: initial;
|
|
text-transform: initial;
|
|
text-indent: initial;
|
|
text-shadow: initial;
|
|
appearance: auto;
|
|
}
|
|
|
|
input, select, textarea {
|
|
text-align: initial;
|
|
}
|
|
|
|
input:is([type=reset i], [type=button i], [type=submit i]), button {
|
|
text-align: center;
|
|
}
|
|
|
|
input, button {
|
|
display: inline-block;
|
|
}
|
|
|
|
input[type=hidden i], input[type=file i], input[type=image i] {
|
|
appearance: none;
|
|
}
|
|
|
|
input:is([type=radio i], [type=checkbox i], [type=reset i], [type=button i],
|
|
[type=submit i], [type=color i], [type=search i]), select, button {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
textarea {
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
/* 15.3.11 The hr element
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#the-hr-element-2
|
|
*/
|
|
|
|
hr {
|
|
color: gray;
|
|
border-style: inset;
|
|
border-width: 1px;
|
|
margin: 0.5em auto;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* 15.3.12 The fieldset and legend elements
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#the-fieldset-and-legend-elements
|
|
*/
|
|
|
|
fieldset {
|
|
display: block;
|
|
margin-left: 2px;
|
|
margin-right: 2px;
|
|
border: groove 2px ThreeDFace;
|
|
padding: 0.35em 0.75em 0.625em;
|
|
min-inline-size: min-content;
|
|
}
|
|
|
|
legend {
|
|
padding-left: 2px;
|
|
padding-right: 2px;
|
|
}
|
|
|
|
legend[align=left i] {
|
|
justify-self: left;
|
|
}
|
|
|
|
legend[align=center i] {
|
|
justify-self: center;
|
|
}
|
|
|
|
legend[align=right i] {
|
|
justify-self: right;
|
|
}
|
|
|
|
/* 15.4.1 Embedded content
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#embedded-content-rendering-rules
|
|
*/
|
|
iframe {
|
|
border: 2px inset;
|
|
}
|
|
|
|
video {
|
|
object-fit: contain;
|
|
}
|
|
|
|
/* 15.5.4 The details and summary elements
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#the-details-and-summary-elements
|
|
*/
|
|
|
|
summary {
|
|
display: list-item;
|
|
counter-increment: list-item 0;
|
|
list-style: disclosure-closed inside;
|
|
}
|
|
|
|
details[open] > summary {
|
|
list-style-type: disclosure-open;
|
|
}
|
|
|
|
/* 15.5.12 The marquee element
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#the-marquee-element-2
|
|
*/
|
|
|
|
marquee {
|
|
display: inline-block;
|
|
text-align: initial;
|
|
}
|
|
|
|
/* 15.5.13 The meter element
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#the-meter-element-2
|
|
*/
|
|
|
|
meter {
|
|
appearance: auto;
|
|
}
|
|
|
|
/* 15.5.14 The progress element
|
|
* https://html.spec.whatwg.org/multipage/rendering.html#the-progress-element-2
|
|
*/
|
|
|
|
progress {
|
|
appearance: auto;
|
|
}
|
|
|
|
/* https://www.w3.org/TR/mediaqueries-5/#descdef-media-inverted-colors
|
|
*/
|
|
@media (inverted-colors) {
|
|
img:not(picture>img),
|
|
picture,
|
|
video {
|
|
filter: invert(100%);
|
|
}
|
|
}
|
|
|
|
/* This is the same as default intrinsic size of a <progress> element */
|
|
progress {
|
|
width: 300px;
|
|
height: 12px;
|
|
}
|
|
|
|
/* The default progress-value/bar CSS below is the same as Blink/WebKit.
|
|
* Note: Setting any more than the backgrond-color may have unintended consequences, as sites don't expect to unset more than that.
|
|
*/
|
|
|
|
progress::-webkit-progress-bar {
|
|
width: inherit;
|
|
height: inherit;
|
|
background-color: grey;
|
|
}
|
|
|
|
progress::-webkit-progress-value {
|
|
height: inherit;
|
|
background-color: green;
|
|
}
|