hugo-tufte/assets/scss/tufte.scss
2024-12-08 04:06:42 +01:00

580 lines
11 KiB
SCSS

/* You can find the original at https://github.com/edwardtufte/tufte-css */
/* Import ET Book styles
adapted from https://github.com/edwardtufte/et-book/blob/gh-pages/et-book.css */
@charset "UTF-8";
@font-face {
font-family: "et-book";
src: url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot");
src: url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.eot?#iefix") format("embedded-opentype"),
url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.woff") format("woff"),
url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.ttf") format("truetype"),
url("et-book/et-book-roman-line-figures/et-book-roman-line-figures.svg#etbookromanosf") format("svg");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "et-book";
src: url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot");
src: url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.eot?#iefix")
format("embedded-opentype"),
url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.woff")
format("woff"),
url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.ttf")
format("truetype"),
url("et-book/et-book-display-italic-old-style-figures/et-book-display-italic-old-style-figures.svg#etbookromanosf")
format("svg");
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: "et-book";
src: url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot");
src: url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.eot?#iefix") format("embedded-opentype"),
url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.woff") format("woff"),
url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.ttf") format("truetype"),
url("et-book/et-book-bold-line-figures/et-book-bold-line-figures.svg#etbookromanosf") format("svg");
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: "et-book-roman-old-style";
src: url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot");
src: url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.eot?#iefix")
format("embedded-opentype"),
url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.woff") format("woff"),
url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.ttf") format("truetype"),
url("et-book/et-book-roman-old-style-figures/et-book-roman-old-style-figures.svg#etbookromanosf") format("svg");
font-weight: normal;
font-style: normal;
}
$serif-fonts: et-book, "Noto Serif SC", Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif, "Noto Emoji";
$sans-fonts: "Gill Sans", "Gill Sans MT", Calibri, sans-serif, "Noto Emoji";
$mono-fonts: Consolas, "Liberation Mono", Menlo, Courier, monospace, "Noto Emoji";
/* Tufte CSS styles */
html {
font-size: 0.65rem;
}
body {
margin-top: 2.5vh;
margin-left: 2.5vw;
margin-right: auto;
padding-left: 0;
font-family: $mono-fonts;
background-color: #151515;
color: #ddd;
max-width: #{"min(80vw, 1200px)"};
}
h1, h2, h3 {
font-weight: 400;
line-height: 1;
}
h1 {
margin-top: 1rem;
margin-bottom: 1rem;
font-size: 2.4rem;
}
h2, h3 {
font-style: italic;
margin-bottom: 0;
}
h2 {
margin-top: 1.2rem;
font-size: 2.2rem;
}
h3 {
font-size: 2rem;
margin-top: 2rem;
}
.author, .date {
font-size: 1.4rem;
font-weight: 400;
margin: 1rem auto 1rem 0;
line-height: 1;
}
.subtitle {
font-style: italic;
margin-top: 1rem;
margin-bottom: 1rem;
font-size: 1.8rem;
display: block;
line-height: 1;
}
.numeral {
font-family: et-book-roman-old-style;
}
.danger {
color: red;
}
article {
position: relative;
padding: 0rem 0rem;
}
section {
padding-top: 0rem;
padding-bottom: 0rem;
}
.page-list .content-title {
margin-top: 4.2rem;
margin-bottom: 1.4rem;
}
.page-list .content-title:first-child {
margin-top: 1.4rem;
}
p,
ol,
ul,
dl {
font-size: 1.4rem;
}
p {
line-height: 2rem;
margin-top: 1rem;
margin-bottom: 1rem;
padding-right: 0;
vertical-align: baseline;
hyphens: auto;
-webkit-hyphenate-limit-before: 3;
-webkit-hyphenate-limit-after: 4;
-ms-hyphenate-limit-chars: 10 3 4;
hyphenate-limit-chars: 10 3 4;
}
/* Chapter Epigraphs */
.epigraph {
margin: 3em 0;
}
.epigraph > blockquote {
margin-top: 3em;
margin-bottom: 3em;
}
.epigraph > blockquote {
font-style: italic;
}
.epigraph > blockquote > footer {
font-style: normal;
}
.epigraph > blockquote > footer > cite {
font-style: italic;
}
/* end chapter epigraphs styles */
blockquote {
font-size: 1.4rem;
}
blockquote p {
width: 50%;
}
blockquote footer {
width: 50%;
font-size: 1.1rem;
text-align: right !important;
}
ol,
ul,
dl {
width: 45%;
-webkit-padding-start: 5%;
-webkit-padding-end: 5%;
}
li ul {
width: 100%;
}
li,
dt, dd {
padding: 0.5rem 0;
}
dt {
font-weight: 700;
}
figure {
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
max-width: 55%;
-webkit-margin-start: 0;
-webkit-margin-end: 0;
margin: 0 0 3em 0;
}
figcaption {
float: right;
clear: right;
margin-right: -48%;
margin-top: 0;
margin-bottom: 0;
font-size: 1.1rem;
line-height: 1.6;
vertical-align: baseline;
position: relative;
max-width: 40%;
}
figure.fullwidth figcaption {
margin-right: 24%;
}
/* Links: replicate underline that clears descenders */
a:link,
a:visited {
color: inherit;
}
/* Sidenotes, margin notes, figures, captions */
img {
max-width: 100%;
}
:root {
--sidenote-offset: calc(100% - 42.5%);
}
// .sidenote {
// float: right;
// clear: both;
// left: 57.5%; // var(--sidenote-offset);
// right: 2.5%;
// border-style: solid;
// border-width: 2px;
// border-color: #333333;
// width: auto;
// margin-top: 10px;
// margin-bottom: 10px;
// padding: 8px;
// paddinr-right: 0px;
// font-size: 1.1rem;
// line-height: 1.3;
// position: absolute;
// }
.sidenote {
float: right;
clear: both;
position: relative;
width: 80%;
margin-right: -90%;
border-style: solid;
border-width: 2px;
border-color: #333333;
padding: 8px;
padding-bottom: 4px;
padding-top: 4px;
font-size: 1.1rem;
line-height: 1.3;
}
// there's a difference in how sidenotes are rendered from a list vs a paragraph
// this is an eyeball approximation, it's close enough for me so leaving like this
li .sidenote {
width: 98%;
margin-right: -121.8%;
}
.marginnote {
box-sizing: border-box;
float: right;
width: auto;
position: absolute;
left: 57.5%;
right: 2.5%;
border-style: solid;
border-width: 2px;
border-color: #333333;
padding: 8px;
padding-bottom: 0;
padding-top: 0;
margin-top: 10px;
margin-bottom: 10px;
}
.marginnote p {
width: 100%;
font-size: 1rem;
line-height: 1.3;
}
.table-caption {
float: right;
clear: right;
margin-right: -60%;
width: 50%;
margin-top: 0;
margin-bottom: 0;
font-size: 1rem;
line-height: 1.6;
}
.marginnote-ind,
.sidenote-number {
// font-family: et-book-roman-old-style, "Noto Emoji";
position: relative;
vertical-align: baseline;
user-select: none;
}
// note indicator
label.sidenote-number {
font-size: 1rem;
top: -0.5rem;
left: 0.1rem;
}
label.marginnote-ind {
font-size: 5em;
line-height: 1.125;
float: right;
text-align: center;
width: 1.1em;
height: 1.1em;
margin-left: 10px;
margin-right: 20px;
border-color: #ddd;
border-style: solid;
border-width: 3px;
border-radius: 5px;
}
// inside sidenote
span.marginnote-ind,
span.sidenote-number {
font-size: 1.1rem;
}
p,
table,
div.table-wrapper-small,
div.supertable-wrapper > p,
div.booktabs-wrapper {
// width: #{"min(55%, 770px)"};
width: 50%;
}
footer {
width: 100%;
margin: auto;
text-align: center;
}
div.fullwidth,
table.fullwidth {
width: 100%;
}
div.table-wrapper {
overflow-x: scroll;
font-family: "Trebuchet MS", "Gill Sans", "Gill Sans MT", sans-serif, "Noto Emoji";
}
@media screen and (max-width: 760px) {
h2,
h3,
p,
footer {
width: 90%;
}
ul,
ol,
dl {
width: 85%;
}
figure {
max-width: 90%;
}
figcaption,
figure.fullwidth figcaption {
margin-right: 0%;
max-width: none;
}
blockquote p,
blockquote footer {
width: 90%;
}
}
.sans {
font-family: $sans-fonts;
letter-spacing: 0.03em;
}
code,
.code,
kbd {
font-family: $mono-fonts;
font-size: 1.3rem;
line-height: 1.42;
}
h1 .code,
h2 .code,
h3 .code {
font-size: 0.8em;
}
.marginnote .code,
.sidenote .code {
font-size: 0.9rem;
}
pre.code {
font-size: 0.9rem;
width: 52.5%;
padding-left: 2.5%;
width: 90%;
overflow-x: scroll;
}
.fullwidth {
max-width: 90%;
clear: both;
}
.newthought {
font-variant: small-caps;
font-size: 1.2em;
}
.margin-toggle {
cursor: pointer;
}
// accessibility feature: make label focus-able
input.margin-toggle {
position: absolute;
outline: none;
opacity: 0;
width: 1px;
height: 1px;
// margin-left: 5px;
// margin-top: 5px;
z-index: -100;
}
label:has(+ input.margin-toggle:focus) {
outline: medium auto currentColor;
outline: medium auto invert;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -3px;
}
label.sidenote-number {
display: inline;
}
label.marginnote-ind {
display: none;
}
.video-container {
width: 100%;
margin-top: 1.4rem;
margin-bottom: 1.4rem;
}
.video {
width: 55%;
}
.video--16x9 {
aspect-ratio: 16/9;
}
.video--4x3 {
aspect-ratio: 4/3;
}
@media (max-width: 760px) {
label.marginnote-ind {
display: inline;
}
.sidenote,
.marginnote {
display: none;
}
.margin-toggle:checked + .sidenote,
.margin-toggle:checked + .marginnote {
display: block;
float: left;
left: 1rem;
clear: both;
width: 95%;
margin: 1rem 2.5%;
vertical-align: baseline;
position: relative;
}
.table-caption {
display: block;
float: right;
clear: both;
width: 98%;
margin-top: 1rem;
margin-bottom: 0.5rem;
margin-left: 1%;
margin-right: 1%;
vertical-align: baseline;
position: relative;
}
div.table-wrapper,
table,
table.booktabs {
width: 85%;
}
div.table-wrapper {
border-right: 1px solid #efefef;
}
img {
width: 100%;
}
.video {
width: 90%;
}
}