/* readable.css 1.1.0, licensed 0BSD */ /* Font family support */ html, html[data-font-family="serif"] { --font-family: serif; } html[data-font-family="sans-serif"] { --font-family: sans-serif; } html[data-font-family="monospace"] { --font-family: monospace; } /* Color scheme support */ html, html[data-theme="light"] { --background-color: snow; --color: #000; } html[data-high-contrast="on"], html[data-theme="light"][data-high-contrast="on"] { --background-color: #fff; } html[data-theme="dark"] { --background-color: #1f272d; --color: #fff; } html[data-theme="dark"][data-high-contrast="on"] { --background-color: #000; } @media (prefers-color-scheme: dark) { html { --background-color: #222830; --color: #fff; } html[data-high-contrast="on"] { --background-color: #000; } } @media (prefers-contrast: more) { :is(html, html[data-theme="light"]):not([data-high-contrast="off"]) { --background-color: #fff; } html[data-theme="dark"]:not([data-high-contrast="off"]) { --background-color: #000; } } /* Generic styles */ :root { --column-width: 67ch; --form-width: 50ch; --line-width: 0.125rem; --line-height: 1.5; --one-line: calc(var(--line-height) * 1rem); --half-line: calc(var(--one-line) * 0.5); font-family: var(--font-family); background-color: var(--background-color); color: var(--color); } a { color: inherit; } a:active { color: red; } header, footer, h1, h2 { text-align: center; } footer:not(.exclude) { border-top: var(--line-width) solid; } summary { cursor: pointer; } blockquote:not(.exclude) { padding-left: var(--one-line); border-left: var(--line-width) solid; } ul, ol { padding-left: calc(var(--line-height) * 2rem); } :is(body, article, main, figure) > :is(img, video):not(.exclude) { max-width: 100%; } figure:not(.exclude) { text-align: center; } figure:not(.exclude) > * + figcaption { margin-top: 0; font-style: italic; } article aside:not(.exclude) { border: var(--line-width) solid; padding: 0 var(--one-line); border-radius: var(--half-line); } pre { max-width: 100%; overflow: auto; } hr { color: inherit; border: 0; border-top: var(--line-width) solid; } /* Vertical Rhythm */ p, ul, ol, figcaption, nav, td, th, label { line-height: var(--line-height); } h1, h2, h3, h4, h5, h6, p, blockquote, hr, footer, header, nav, figure, figcaption, :is(ul, ol):not(li > *), :is(body, article, main) > :is(img, video, details):not(.exclude), table, article > aside, article > aside { margin: var(--one-line) 0; } /* Headings */ header h1 { font-weight: normal; } h1, h2 { line-height: calc(var(--line-height) * 2rem); } h1 { font-size: 2.5rem; } h2 { font-size: 1.75rem; } h3, h4, h5, h6 { line-height: var(--one-line); padding-top: calc(var(--line-height) * 0.75rem); margin-bottom: calc(var(--line-height) * 0.25rem); } :is(h3, h4, h5, h6) + * { margin-top: 0; } /* Navbar */ nav:not(.exclude:not([data-style]), [data-style="none"]) { /* This styling only affects the first nav element that is the direct child of the body */ text-align: center; border-width: var(--line-width) 0; border-style: solid; line-height: var(--line-height); display: flex; flex-flow: row wrap; } nav:not(.exclude:not([data-style]), [data-style="none"]) > * { flex-grow: 1; margin: calc((var(--line-height) * 0.5rem) - var(--line-width)) var(--half-line); /* Put half a line's height on both top and bottom, then remove the width of the border */ text-transform: uppercase; } nav[data-style="blockout"], nav:is([data-style="boxes"], [data-style="roundesque"]) a:is(:hover, :focus) { background-color: var(--color); color: var(--background-color); } nav[data-style="blockout"] a { text-decoration: none; } nav[data-style="blockout"] a:is(:hover, :focus) { background-color: var(--background-color); color: var(--color); } nav[data-style]:is([data-style="boxes"], [data-style="roundesque"]) { border: 0; } nav:is([data-style="boxes"], [data-style="roundesque"]) a { text-decoration: none; border: var(--line-width) solid; } nav[data-style="roundesque"] a { border-radius: calc(0.25 * var(--one-line)); } @media (prefers-reduced-motion: no-preference) { nav[data-style="classy"] span > a { text-decoration: none; display: inline-block; } nav[data-style="classy"] span > a::after { content: ''; width: 0; height: var(--line-width); display: block; background: var(--color); transition: 150ms; } nav[data-style="classy"] span > a:is(:hover, :focus)::after { width: 100%; } } /* Column */ body { margin: 0 auto; width: min(95%, var(--column-width)); } /* Justification (default off; use data-justify="on" on to enable) */ /* 67ch (var(--column-width) / 95% (column max-width) === 70.526315789ch */ @media (min-width: 70.5ch) { [data-justify="on"] body { text-align: justify; text-justify: inter-character; } } /* Tables */ table:not(.exclude) { display: block; width: 100%; overflow: auto; border-collapse: collapse; } table:not(.exclude) :is(td, th) { padding: calc(var(--line-height) * 0.25rem); border: var(--line-width) solid; } table:not(.exclude) td { word-wrap: break-word; } /* Forms */ form { max-width: var(--form-width) } form:not(.exclude) :is(label:not(input:is([type="checkbox"], [type="radio"]) + label), input:not([type="checkbox"], [type="radio"]), textarea, select) { display: block; margin: var(--half-line) 0; } form:not(.exclude) :is(input:not([type="checkbox"], [type="radio"]), textarea, select), button { box-sizing: border-box; padding: var(--half-line); background: transparent; border: var(--line-width) solid; color: inherit; font: inherit; width: 100%; } button { width: initial; } form:not(.exclude) label:not(input:is([type="checkbox"], [type="radio"]) + label) { font-weight: bold; }