diff options
| author | Fuwn <[email protected]> | 2023-09-03 22:18:29 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-09-03 22:18:29 -0700 |
| commit | 5bce83d700be142feecb743b51169b6b8ac8e61c (patch) | |
| tree | e8ce58085a626dffaf1641063ad95cb7fba11a1c /static | |
| parent | fix(html): meta name (diff) | |
| download | due.moe-5bce83d700be142feecb743b51169b6b8ac8e61c.tar.xz due.moe-5bce83d700be142feecb743b51169b6b8ac8e61c.zip | |
feat(html): local css
Diffstat (limited to 'static')
| -rw-r--r-- | static/css/about.css | 26 | ||||
| -rw-r--r-- | static/css/base16-light.css | 22 | ||||
| -rw-r--r-- | static/css/colours.css | 17 | ||||
| -rw-r--r-- | static/css/footer.css | 7 | ||||
| -rw-r--r-- | static/css/header.css | 18 | ||||
| -rw-r--r-- | static/css/layout.css | 57 | ||||
| -rw-r--r-- | static/css/logo.css | 37 | ||||
| -rw-r--r-- | static/css/risotto.css | 12 | ||||
| -rw-r--r-- | static/css/style.css | 648 | ||||
| -rw-r--r-- | static/css/typography.css | 214 |
10 files changed, 1058 insertions, 0 deletions
diff --git a/static/css/about.css b/static/css/about.css new file mode 100644 index 00000000..6c12ba46 --- /dev/null +++ b/static/css/about.css @@ -0,0 +1,26 @@ +/* About/bio section */ +.about__logo { + height: 1.5rem; +} + +.about__title { + display: inline; + vertical-align: top; +} + +.about__title::before { + content: none; +} + +/* Social media links */ +.aside__social-links { + padding: 0; +} + +.aside__social-links li { + display: inline-block; +} + +.aside__social-links li::marker { + content: none; +} diff --git a/static/css/base16-light.css b/static/css/base16-light.css new file mode 100644 index 00000000..bcbbb5a5 --- /dev/null +++ b/static/css/base16-light.css @@ -0,0 +1,22 @@ +/* base16 default light + * https://github.com/chriskempson/base16-default-schemes + */ + +:root { + --base00: #f8f8f8; + --base01: #e8e8e8; + --base02: #d8d8d8; + --base03: #b8b8b8; + --base04: #585858; + --base05: #383838; + --base06: #282828; + --base07: #181818; + --base08: #ab4642; + --base09: #dc9656; + --base0A: #f7ca88; + --base0B: #a1b56c; + --base0C: #86c1b9; + --base0D: #7cafc2; + --base0E: #ba8baf; + --base0F: #a16946; +} diff --git a/static/css/colours.css b/static/css/colours.css new file mode 100644 index 00000000..43269856 --- /dev/null +++ b/static/css/colours.css @@ -0,0 +1,17 @@ +:root { + /* Background */ + --bg: var(--base00); + --off-bg: var(--base01); + --inner-bg: var(--base02); + + /* Text */ + --fg: var(--base05); + --off-fg: var(--base04); + --muted: var(--base03); + --link: var(--base0D); + --hover: var(--base0C); + --highlight: var(--base0A); + + /* Logo */ + --logo: var(--base0B); +} diff --git a/static/css/footer.css b/static/css/footer.css new file mode 100644 index 00000000..3e841886 --- /dev/null +++ b/static/css/footer.css @@ -0,0 +1,7 @@ +.page__footer { + color: var(--off-fg); +} + +.page__footer p { + margin: 0; +} diff --git a/static/css/header.css b/static/css/header.css new file mode 100644 index 00000000..875201b0 --- /dev/null +++ b/static/css/header.css @@ -0,0 +1,18 @@ +/* Main menu */ +.main-nav ul { + display: flex; + flex-flow: row wrap; + justify-content: flex-start; + margin: 0; + padding: 0.25rem 0; +} + +.main-nav li { + margin-left: 2.5rem; + text-transform: lowercase; +} + +.main-nav li::marker { + content: "./"; +} + diff --git a/static/css/layout.css b/static/css/layout.css new file mode 100644 index 00000000..d2491664 --- /dev/null +++ b/static/css/layout.css @@ -0,0 +1,57 @@ +/* 1rem = 16px by default */ + +.page { + max-width: 64rem; + margin: 1rem auto; + display: grid; + grid-template-areas: + "header" + "body" + "aside" + "footer"; + grid-template-columns: minmax(0, 1fr); /* https://css-tricks.com/preventing-a-grid-blowout/ */ + grid-row-gap: 2rem; +} + +@media (min-width: 45rem) { + .page { + grid-template-areas: + "header header" + "body aside" + "footer footer"; + grid-template-columns: minmax(0, 1fr) 15rem; + grid-column-gap: 2rem; + } +} + +/* Header */ +.page__header { + grid-area: header; + display: flex; +} + +.page__logo { + flex-shrink: 0; +} + +.page__nav { + flex-grow: 1; +} + +/* Body + aside */ +.page__body { + grid-area: body; + background-color: var(--off-bg); + box-shadow: 0 0 0 1rem var(--off-bg); + overflow-wrap: break-word; +} + +.page__aside { + grid-area: aside; + color: var(--off-fg); +} + +/* Footer */ +.page__footer { + grid-area: footer; +} diff --git a/static/css/logo.css b/static/css/logo.css new file mode 100644 index 00000000..368fff48 --- /dev/null +++ b/static/css/logo.css @@ -0,0 +1,37 @@ +.page__logo { + padding: 0; + margin: 0; + font-weight: inherit; + color: var(--bg); +} + +.page__logo:before { + content: none; +} + +.page__logo-inner { + display: block; + background: var(--logo); + opacity: 0.90; + padding: 0.25rem; +} + +a.page__logo-inner:link, a.page__logo-inner:visited { + color: inherit; + text-decoration: inherit; +} + +a.page__logo-inner:hover, +a.page__logo-inner:active { + opacity: 1; +} + +.page__logo-inner:before { + content: "["; + color: var(--bg); +} + +.page__logo-inner:after { + content: "] $"; + color: var(--bg); +} diff --git a/static/css/risotto.css b/static/css/risotto.css new file mode 100644 index 00000000..dcb5a96d --- /dev/null +++ b/static/css/risotto.css @@ -0,0 +1,12 @@ +@import 'colours.css'; +@import 'typography.css'; +@import 'layout.css'; +@import 'header.css'; +@import 'logo.css'; +@import 'about.css'; +@import 'footer.css'; + +body { + background-color: var(--bg); + color: var(--fg); +} diff --git a/static/css/style.css b/static/css/style.css new file mode 100644 index 00000000..ca352b4e --- /dev/null +++ b/static/css/style.css @@ -0,0 +1,648 @@ +/*! + * LaTeX.css (https://latex.now.sh/) + * + * Source: https://github.com/vincentdoerig/latex-css + * Licensed under MIT (https://github.com/vincentdoerig/latex-css/blob/master/LICENSE) +*/ + +@font-face { + font-family: 'Latin Modern'; + font-style: normal; + font-weight: normal; + font-display: swap; + src: url('./fonts/LM-regular.woff2') format('woff2'), + url('./fonts/LM-regular.woff') format('woff'), + url('./fonts/LM-regular.ttf') format('truetype'); +} + +@font-face { + font-family: 'Latin Modern'; + font-style: italic; + font-weight: normal; + font-display: swap; + src: url('./fonts/LM-italic.woff2') format('woff2'), + url('./fonts/LM-italic.woff') format('woff'), + url('./fonts/LM-italic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Latin Modern'; + font-style: normal; + font-weight: bold; + font-display: swap; + src: url('./fonts/LM-bold.woff2') format('woff2'), + url('./fonts/LM-bold.woff') format('woff'), + url('./fonts/LM-bold.ttf') format('truetype'); +} + +@font-face { + font-family: 'Latin Modern'; + font-style: italic; + font-weight: bold; + font-display: swap; + src: url('./fonts/LM-bold-italic.woff2') format('woff2'), + url('./fonts/LM-bold-italic.woff') format('woff'), + url('./fonts/LM-bold-italic.ttf') format('truetype'); +} + +@font-face { + font-family: 'Libertinus'; + font-style: normal; + font-weight: normal; + font-display: swap; + src: url('./fonts/Libertinus-regular.woff2') format('woff2'); +} + +@font-face { + font-family: 'Libertinus'; + font-style: italic; + font-weight: normal; + font-display: swap; + src: url('./fonts/Libertinus-italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Libertinus'; + font-style: normal; + font-weight: bold; + font-display: swap; + src: url('./fonts/Libertinus-bold.woff2') format('woff2'); +} + +@font-face { + font-family: 'Libertinus'; + font-style: italic; + font-weight: bold; + font-display: swap; + src: url('./fonts/Libertinus-bold-italic.woff2') format('woff2'); +} + +@font-face { + font-family: 'Libertinus'; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url('./fonts/Libertinus-semibold.woff2') format('woff2'); +} + +@font-face { + font-family: 'Libertinus'; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url('./fonts/Libertinus-semibold-italic.woff2') format('woff2'); +} + +/* Box sizing rules */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +:root { + --body-color: hsl(0, 5%, 10%); + --body-bg-color: hsl(210, 20%, 98%); + --link-visited: hsl(0, 100%, 33%); + --link-focus-outline: hsl(220, 90%, 52%); + --pre-bg-color: hsl(210, 28%, 93%); + --kbd-bg-color: hsl(210, 5%, 100%); + --kbd-border-color: hsl(210, 5%, 70%); + --table-border-color: black; + --sidenote-target-border-color: hsl(55, 55%, 70%); + --footnotes-border-color: hsl(0, 0%, 39%); + --text-indent-size: 1.463rem; /* In 12pt [Latin Modern font] LaTeX article + \parindent =~ 17.625pt; taking also into account the ratio + 1pt[LaTeX] = (72 / 72.27) * 1pt[HTML], with default 12pt/1rem LaTeX.css font + size, the identation value in rem CSS units is: + \parindent =~ 17.625 * (72 / 72.27) / 12 = 1.463rem. */ +} + +.latex-dark { + --body-color: hsl(0, 0%, 86%); + --body-bg-color: hsl(0, 0%, 16%); + --link-visited: hsl(196 80% 77%); + --link-focus-outline: hsl(215, 63%, 73%); + --pre-bg-color: hsl(0, 1%, 25%); + --kbd-bg-color: hsl(0, 0%, 16%); + --kbd-border-color: hsl(210, 5%, 70%); + --table-border-color: white; + --sidenote-target-border-color: hsl(0, 0%, 59%); + --footnotes-border-color: hsl(0, 0%, 59%); + --proof-symbol-filter: invert(80%); +} + +@media (prefers-color-scheme: dark) { + .latex-dark-auto { + --body-color: hsl(0, 0%, 86%); + --body-bg-color: hsl(0, 0%, 16%); + --link-visited: hsl(196 80% 77%); + --link-focus-outline: hsl(215, 63%, 73%); + --pre-bg-color: hsl(0, 1%, 25%); + --kbd-bg-color: hsl(0, 0%, 16%); + --kbd-border-color: hsl(210, 5%, 70%); + --table-border-color: white; + --sidenote-target-border-color: hsl(0, 0%, 59%); + --footnotes-border-color: hsl(0, 0%, 59%); + --proof-symbol-filter: invert(80%); + } +} + +/* Remove default margin */ +body, +h1, +h2, +h3, +h4, +p, +ul[class], +ol[class], +li, +figure, +figcaption, +dl, +dd { + margin: 0; +} + +/* Make default font-size 1rem and add smooth scrolling to anchors */ +html { + font-size: 1rem; +} +@media (prefers-reduced-motion: no-preference) { + html { + scroll-behavior: smooth; + } +} + +body.libertinus { + font-family: 'Libertinus', Georgia, Cambria, 'Times New Roman', Times, serif; +} + +body { + font-family: 'Latin Modern', Georgia, Cambria, 'Times New Roman', Times, serif; + line-height: 1.8; + + max-width: 80ch; + min-height: 100vh; + overflow-x: hidden; + margin: 0 auto; + padding: 2rem 1.25rem; + + counter-reset: theorem definition sidenote-counter; + + color: var(--body-color); + background-color: var(--body-bg-color); + + text-rendering: optimizeLegibility; +} + +/* Justify and hyphenate all paragraphs */ +p { + text-align: justify; + hyphens: auto; + -webkit-hyphens: auto; + -moz-hyphens: auto; + margin-top: 1rem; +} + +/* Indents paragraphs like in LaTeX documents*/ +.indent-pars p { + text-indent: var(--text-indent-size); +} + +.indent-pars p.no-indent, +p.no-indent { + text-indent: 0; +} + +.indent-pars ol p, +.indent-pars ul p { + text-indent: 0; +} + +.indent-pars h2 + p, +.indent-pars h3 + p, +.indent-pars h4 + p { + text-indent: 0; +} + +/* A elements that don't have a class get default styles */ +a:not([class]) { + text-decoration-skip-ink: auto; +} + +/* Make links red */ +a, +a:visited { + color: var(--link-visited); +} + +a:focus { + outline-offset: 2px; + outline: 2px solid var(--link-focus-outline); +} + +/* Make images easier to work with */ +img { + max-width: 100%; + height: auto; + display: block; +} + +/* Inherit fonts for inputs and buttons */ +input, +button, +textarea, +select { + font: inherit; +} + +/* Prevent textarea from overflowing */ +textarea { + width: 100%; +} + +/* Natural flow and rhythm in articles by default */ +article > * + * { + margin-top: 1em; +} + +/* Styles for inline code or code snippets */ +code, +pre, +kbd { + font-family: Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', + monospace; + font-size: 85%; +} +pre { + padding: 1rem 1.4rem; + max-width: 100%; + overflow: auto; + border-radius: 4px; + background: var(--pre-bg-color); +} +pre code { + font-size: 95%; + position: relative; +} +kbd { + background: var(--kbd-bg-color); + border: 1px solid var(--kbd-border-color); + border-radius: 2px; + padding: 2px 4px; + font-size: 75%; +} + +/* Better tables */ +table { + border-collapse: collapse; + border-spacing: 0; + width: auto; + max-width: 100%; + border-top: 2.27px solid var(--table-border-color); + border-bottom: 2.27px solid var(--table-border-color); + /* display: block; */ + overflow-x: auto; /* does not work because element is not block */ + /* white-space: nowrap; */ + counter-increment: caption; +} +/* add bottom border on column table headings */ +table tr > th[scope='col'] { + border-bottom: 1.36px solid var(--table-border-color); +} +/* add right border on row table headings */ +table tr > th[scope='row'] { + border-right: 1.36px solid var(--table-border-color); +} +table > tbody > tr:first-child > td, +table > tbody > tr:first-child > th { + border-top: 1.36px solid var(--table-border-color); +} +table > tbody > tr:last-child > td, +table > tbody > tr:last-child > th { + border-bottom: 1.36px solid var(--table-border-color); +} + +th, +td { + text-align: left; + padding: 0.5rem; + line-height: 1.1; +} +/* Table caption */ +caption { + text-align: left; + font-size: 0.923em; + /* border-bottom: 2pt solid #000; */ + padding: 0 0.25em 0.25em; + width: 100%; + margin-left: 0; +} + +caption::before { + content: 'Table ' counter(caption) '. '; + font-weight: bold; +} + +/* allow scroll on the x-axis */ +.scroll-wrapper { + overflow-x: auto; +} + +/* if a table is wrapped in a scroll wrapper, + the table cells shouldn't wrap */ +.scroll-wrapper > table td { + white-space: nowrap; +} + +/* Center align the title */ +h1:first-child { + text-align: center; +} + +/* Nested ordered list for ToC */ +nav ol { + counter-reset: item; + padding-left: 2rem; +} +nav li { + display: block; +} +nav li:before { + content: counters(item, '.') ' '; + counter-increment: item; + padding-right: 0.85rem; +} + +/* Center definitions (most useful for display equations) */ +dl dd { + text-align: center; +} + +/* Theorem */ +.theorem { + counter-increment: theorem; + display: block; + margin: 12px 0; + font-style: italic; +} +.theorem::before { + content: 'Theorem ' counter(theorem) '. '; + font-weight: bold; + font-style: normal; +} + +/* Lemma */ +.lemma { + counter-increment: theorem; + display: block; + margin: 12px 0; + font-style: italic; +} +.lemma::before { + content: 'Lemma ' counter(theorem) '. '; + font-weight: bold; + font-style: normal; +} + +/* Proof */ +.proof { + display: block; + margin: 12px 0; + font-style: normal; + position: relative; +} +.proof::before { + content: 'Proof. ' attr(title); + font-style: italic; +} +.proof:after { + content: '◾️'; + filter: var(--proof-symbol-filter); + position: absolute; + right: -12px; + bottom: -2px; +} + +/* Definition */ +.definition { + counter-increment: definition; + display: block; + margin: 12px 0; + font-style: normal; +} +.definition::before { + content: 'Definition ' counter(definition) '. '; + font-weight: bold; + font-style: normal; +} + +/* Center align author name, use small caps and add vertical spacing */ +.author { + margin: 0.85rem 0; + font-variant-caps: small-caps; + text-align: center; +} + +/* Sidenotes */ + +.sidenote { + font-size: 0.8rem; + float: right; + clear: right; + width: 18vw; + margin-right: -20vw; + margin-bottom: 1em; + text-indent: 0; +} + +.sidenote.left { + float: left; + margin-left: -20vw; + margin-bottom: 1em; + text-indent: 0; +} + +/* (WIP) add border when a sidenote is clicked on */ +.sidenote:target { + border: var(--sidenote-target-border-color) 1.5px solid; + padding: 0 .5rem; + scroll-margin-block-start: 10rem; +} + +/* sidenote counter */ +.sidenote-number { + counter-increment: sidenote-counter; +} + +.sidenote-number::after, +.sidenote::before { + position: relative; + vertical-align: baseline; +} + +/* add number in main content */ +.sidenote-number::after { + content: counter(sidenote-counter); + font-size: 0.7rem; + top: -0.5rem; + left: 0.1rem; +} + +/* add number in front of the sidenote */ +.sidenote-number ~ .sidenote::before { + content: counter(sidenote-counter) ' '; + font-size: 0.7rem; + top: -0.5rem; +} + +label.sidenote-toggle:not(.sidenote-number) { + display: none; +} + +/* sidenotes inside blockquotes are indented more */ +blockquote .sidenote { + margin-right: -24vw; + width: 18vw; +} + + +label.sidenote-toggle { + display: inline; + cursor: pointer; +} + +input.sidenote-toggle { + display: none; +} + +@media (max-width: 1050px) { + label.sidenote-toggle:not(.sidenote-number) { + display: inline; + } + .sidenote { + display: none; + } + .sidenote-toggle:checked + .sidenote { + display: block; + margin: 0.5rem 1.25rem 1rem 0.5rem; + float: left; + left: 1rem; + clear: both; + width: 95%; + } + /* tweak indentation of sidenote inside a blockquote */ + blockquote .sidenote { + margin-right: -25vw; + width: 16vw; + } +} + +/* Make footnote text smaller and left align it (looks bad with long URLs) */ +.footnotes p { + text-align: left; + line-height: 1.5; + font-size: 85%; + margin-bottom: 0.4rem; +} +.footnotes { + border-top: 1px solid var(--footnotes-border-color); +} + +/* Center title and paragraph */ +.abstract, +.abstract p { + text-align: center; + margin-top: 0; +} +.abstract { + margin: 2.25rem 0; +} +.abstract > h2 { + font-size: 1rem; + margin-bottom: -0.2rem; +} + +/* Format the LaTeX symbol correctly (a higher up, e lower) */ +.latex span:nth-child(1) { + text-transform: uppercase; + font-size: 0.75em; + vertical-align: 0.28em; + margin-left: -0.48em; + margin-right: -0.15em; + line-height: 1ex; +} + +.latex span:nth-child(2) { + text-transform: uppercase; + vertical-align: -0.5ex; + margin-left: -0.1667em; + margin-right: -0.125em; + line-height: 1ex; +} + +/* Heading typography */ +h1 { + font-size: 2.5rem; + line-height: 3.25rem; + margin-bottom: 1.625rem; +} + +h2 { + font-size: 1.7rem; + line-height: 2rem; + margin-top: 3rem; +} + +h3 { + font-size: 1.4rem; + margin-top: 2.5rem; +} + +h4 { + font-size: 1.2rem; + margin-top: 2rem; +} + +h5 { + font-size: 1rem; + margin-top: 1.8rem; +} + +h6 { + font-size: 1rem; + font-style: italic; + font-weight: normal; + margin-top: 2.5rem; +} + +h3, +h4, +h5, +h6 { + line-height: 1.625rem; +} + +h1 + h2 { + margin-top: 1.625rem; +} + +h2 + h3, +h3 + h4, +h4 + h5 { + margin-top: 0.8rem; +} + +h5 + h6 { + margin-top: -0.8rem; +} + +h2, +h3, +h4, +h5, +h6 { + margin-bottom: 0.8rem; +} diff --git a/static/css/typography.css b/static/css/typography.css new file mode 100644 index 00000000..3d719a4f --- /dev/null +++ b/static/css/typography.css @@ -0,0 +1,214 @@ +/* Fonts */ +:root { + --font-monospace: "Fira Mono", monospace; +} + +body { + font-family: var(--font-monospace); + font-size: 16px; + line-height: 1.5rem; +} + +/* Headings */ +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 12px; + margin: 1.5rem 0 0 0; + font-weight: 600; +} + +h1+h2, +h1+h3, +h1+h4, +h1+h5, +h1+h6, +h2+h3, +h2+h4, +h2+h5, +h2+h6, +h3+h4, +h3+h5, +h3+h6, +h4+h5, +h4+h6, +h5+h6 { + margin: 0; +} + +h1:before { content: "# "; } +h2:before { content: "## "; } +h3:before { content: "### "; } +h4:before { content: "#### "; } +h5:before { content: "##### "; } +h6:before { content: "###### "; } + +h1:before, +h2:before, +h3:before, +h4:before, +h5:before, +h6:before { + color: var(--muted); +} + +h1:first-child { + margin-top: 0; +} + +/* Paragraphs */ +p { + margin: 0 0 1.5rem 0; +} + +/* Links */ + +a:link, a:visited { + color: var(--link); +} + +a:hover, a:active, a.active { + color: var(--hover); +} + +/* Lists */ +ul { + margin: 0 0 1.5rem 0; + padding-left: 1.25rem; +} + +ol { + margin: 0 0 1.5rem 0; + padding-left: 1.75rem; +} + +ul ul, +ul ol, +ol ul, +ol ol { + margin: 0; +} + +ul li::marker { + content: '∗\00A0'; + color: var(--muted); +} + +ol li::marker { + color: var(--muted); +} + +dt { + margin: 0; + font-weight: bold; +} + +dd { + margin: 0 0 0 1.5rem; + font-style: italic; +} + +dd + dt { + margin-top: 1.5rem; +} + +dl { + margin: 0 0 1.5rem 0; +} + +/* Blockquotes */ +blockquote { + position: relative; + margin: 0 0 1.5rem 1.5rem; +} + +blockquote::before { + position: absolute; + left: -1.5rem; + content: ">"; + color: var(--muted); +} + +.twitter-tweet::before { + content: "\f099"; + font-family: "Font Awesome 5 Brands"; + font-weight: 400; +} + +/* Code */ +pre, +code, +kbd, +samp { + background: var(--inner-bg) !important; + font-family: var(--font-monospace); + color: var(--off-fg); +} + +pre { + overflow-x: auto; + padding: 1.5rem; + margin: 0 0 1.5rem 0; +} + +/* Emphasis */ +b, +strong { + font-weight: 600; +} + +/* Highlighting */ +::selection, +mark { + background-color: var(--highlight); + color: var(--bg); +} + +/* Other typographic elements */ +hr { + border: 0; + margin-bottom: 1.5rem; +} + +hr:after { + content: '---'; + color: var(--muted); +} + + +/* Prevent super/sub from affecting line height */ +sup, sub { + vertical-align: baseline; + position: relative; + top: -0.25rem; + font-size: unset; +} +sub { + top: 0.25rem; +} + +/* Tables */ +table { + border-spacing: 0; + margin: 0 0 1.5rem 0; + overflow-wrap: anywhere; +} +th, td { + padding: 0 .75rem; + vertical-align: top; +} +th:first-child, td:first-child { + padding-left: 0; +} +th { + text-align: inherit; +} + +/* Figures */ +img { + max-width: 100%; + height: auto; +} |