| | |
| | | @import "./syntax.scss"; |
| | | @import "./callouts.scss"; |
| | | @use "./custom.scss"; |
| | | @use "./syntax.scss"; |
| | | @use "./callouts.scss"; |
| | | @use "./variables.scss" as *; |
| | | |
| | | html { |
| | | scroll-behavior: smooth; |
| | | -webkit-text-size-adjust: none; |
| | | text-size-adjust: none; |
| | | overflow-x: none; |
| | | width: 100vw; |
| | | } |
| | | |
| | | body { |
| | |
| | | box-sizing: border-box; |
| | | background-color: var(--light); |
| | | font-family: var(--bodyFont); |
| | | --pageWidth: 800px; |
| | | --sidePanelWidth: 400px; |
| | | --topSpacing: 6rem; |
| | | } |
| | | |
| | | .text-highlight { |
| | | background-color: #fff236aa; |
| | | background-color: #fff23688; |
| | | padding: 0 0.1rem; |
| | | border-radius: 5px; |
| | | } |
| | | |
| | | p, ul, text, a, tr, td, li, ol, ul, .katex { |
| | | p, |
| | | ul, |
| | | text, |
| | | a, |
| | | tr, |
| | | td, |
| | | li, |
| | | ol, |
| | | ul, |
| | | .katex, |
| | | .math { |
| | | color: var(--darkgray); |
| | | fill: var(--darkgray); |
| | | overflow-wrap: anywhere; |
| | | hyphens: auto; |
| | | } |
| | | |
| | | .math { |
| | | font-size: 1.1rem; |
| | | &.math-display { |
| | | text-align: center; |
| | | } |
| | | } |
| | | |
| | | a { |
| | |
| | | } |
| | | } |
| | | |
| | | .page { |
| | | & > .page-header { |
| | | max-width: var(--pageWidth); |
| | | margin: var(--topSpacing) auto 0 auto; |
| | | .desktop-only { |
| | | display: initial; |
| | | @media all and (max-width: $fullPageWidth) { |
| | | display: none; |
| | | } |
| | | } |
| | | |
| | | & > #quartz-body { |
| | | width: 100%; |
| | | display: flex; |
| | | |
| | | & .left, & .right { |
| | | flex: 1; |
| | | width: calc(calc(100vw - var(--pageWidth)) / 2); |
| | | } |
| | | |
| | | & .left-inner, & .right-inner { |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 2rem; |
| | | top: 0; |
| | | width: var(--sidePanelWidth); |
| | | margin-top: calc(var(--topSpacing)); |
| | | box-sizing: border-box; |
| | | padding: 0 4rem; |
| | | position: fixed; |
| | | } |
| | | |
| | | & .left-inner { |
| | | left: calc(calc(100vw - var(--pageWidth)) / 2 - var(--sidePanelWidth)); |
| | | } |
| | | |
| | | & .right-inner { |
| | | right: calc(calc(100vw - var(--pageWidth)) / 2 - var(--sidePanelWidth)); |
| | | } |
| | | |
| | | & .center { |
| | | width: var(--pageWidth); |
| | | margin: 0 auto; |
| | | } |
| | | .mobile-only { |
| | | display: none; |
| | | @media all and (max-width: $fullPageWidth) { |
| | | display: initial; |
| | | } |
| | | } |
| | | |
| | | .page { |
| | | @media all and (max-width: 1200px) { |
| | | margin: 25px 5vw; |
| | | & .left, & .right { |
| | | padding: 0; |
| | | height: initial; |
| | | max-width: none; |
| | | position: initial; |
| | | } |
| | | } |
| | | |
| | | & p { |
| | | overflow-wrap: anywhere; |
| | | @media all and (max-width: $fullPageWidth) { |
| | | margin: 0 auto; |
| | | padding: 0 1rem; |
| | | max-width: $pageWidth; |
| | | } |
| | | |
| | | & article { |
| | |
| | | font-size: 2rem; |
| | | } |
| | | |
| | | // darkmode diagrams |
| | | & svg { |
| | | stroke: var(--dark); |
| | | } |
| | | |
| | | & ul:has(input[type='checkbox']) { |
| | | & li:has(> input[type="checkbox"]) { |
| | | list-style-type: none; |
| | | padding-left: 0; |
| | | } |
| | | |
| | | & li:has(> input[type="checkbox"]:checked) { |
| | | text-decoration: line-through; |
| | | text-decoration-color: var(--gray); |
| | | color: var(--gray); |
| | | } |
| | | |
| | | & li > * { |
| | | margin-top: 0; |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | |
| | | & > #quartz-body { |
| | | width: 100%; |
| | | display: flex; |
| | | @media all and (max-width: $fullPageWidth) { |
| | | flex-direction: column; |
| | | } |
| | | |
| | | & .sidebar { |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | gap: 2rem; |
| | | top: 0; |
| | | width: $sidePanelWidth; |
| | | margin-top: $topSpacing; |
| | | box-sizing: border-box; |
| | | padding: 0 4rem; |
| | | position: fixed; |
| | | @media all and (max-width: $fullPageWidth) { |
| | | position: initial; |
| | | flex-direction: row; |
| | | padding: 0; |
| | | width: initial; |
| | | margin-top: 2rem; |
| | | } |
| | | } |
| | | |
| | | & .sidebar.left { |
| | | left: calc(calc(100vw - $pageWidth) / 2 - $sidePanelWidth); |
| | | @media all and (max-width: $fullPageWidth) { |
| | | gap: 0; |
| | | align-items: center; |
| | | } |
| | | } |
| | | |
| | | & .sidebar.right { |
| | | right: calc(calc(100vw - $pageWidth) / 2 - $sidePanelWidth); |
| | | & > * { |
| | | @media all and (max-width: $fullPageWidth) { |
| | | flex: 1; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | & .page-header { |
| | | width: $pageWidth; |
| | | margin: $topSpacing auto 0 auto; |
| | | @media all and (max-width: $fullPageWidth) { |
| | | width: initial; |
| | | margin-top: 2rem; |
| | | } |
| | | } |
| | | |
| | | & .center, |
| | | & footer { |
| | | margin-left: auto; |
| | | margin-right: auto; |
| | | width: $pageWidth; |
| | | @media all and (max-width: $fullPageWidth) { |
| | | width: initial; |
| | | margin-left: 0; |
| | | margin-right: 0; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .footnotes { |
| | | margin-top: 2rem; |
| | | border-top: 1px solid var(--lightgray); |
| | | } |
| | | |
| | | input[type="checkbox"] { |
| | | transform: translateY(2px); |
| | | color: var(--secondary); |
| | | border-color: var(--lightgray); |
| | | border: 1px solid var(--lightgray); |
| | | border-radius: 3px; |
| | | background-color: var(--light); |
| | | position: relative; |
| | | margin-inline-end: 0.2rem; |
| | | margin-inline-start: -1.4rem; |
| | | appearance: none; |
| | | width: 16px; |
| | | height: 16px; |
| | | |
| | | &:checked { |
| | | border-color: var(--secondary); |
| | | background-color: var(--secondary); |
| | | |
| | | &::after { |
| | | content: ""; |
| | | position: absolute; |
| | | left: 4px; |
| | | top: 1px; |
| | | width: 4px; |
| | | height: 8px; |
| | | display: block; |
| | | border: solid var(--light); |
| | | border-width: 0 2px 2px 0; |
| | | transform: rotate(45deg); |
| | | } |
| | | } |
| | | } |
| | | |
| | | blockquote { |
| | |
| | | font-family: var(--headerFont); |
| | | color: var(--dark); |
| | | font-weight: revert; |
| | | margin: 2rem 0 0; |
| | | margin-bottom: 0; |
| | | |
| | | article > & > a { |
| | | color: var(--dark); |
| | |
| | | } |
| | | } |
| | | |
| | | h1, h2, h3, h4, h5, h6 { |
| | | h1, |
| | | h2, |
| | | h3, |
| | | h4, |
| | | h5, |
| | | h6 { |
| | | &[id] > a[href^="#"] { |
| | | margin: 0 0.5rem; |
| | | opacity: 0; |
| | |
| | | font-family: var(--codeFont); |
| | | user-select: none; |
| | | } |
| | | |
| | | &[id]:hover > a { |
| | | opacity: 1; |
| | | } |
| | | } |
| | | |
| | | // typography improvements |
| | | h1 { |
| | | font-size: 1.75rem; |
| | | margin-top: 2.75rem; |
| | | } |
| | | |
| | | h2 { |
| | | font-size: 1.4rem; |
| | | margin-top: 2.4rem; |
| | | } |
| | | |
| | | h3 { |
| | | font-size: 1.12rem; |
| | | margin-top: 2.12rem; |
| | | } |
| | | |
| | | h4, |
| | | h5, |
| | | h6 { |
| | | font-size: 1rem; |
| | | margin-top: 2rem; |
| | | } |
| | | |
| | | div[data-rehype-pretty-code-fragment] { |
| | | line-height: 1.5rem; |
| | | line-height: 1.6rem; |
| | | position: relative; |
| | | |
| | | & > div[data-rehype-pretty-code-title] { |
| | | font-family: var(--codeFont); |
| | | font-size: 0.9rem; |
| | | padding: 0.1rem 0.8rem; |
| | | padding: 0.1rem 0.5rem; |
| | | border: 1px solid var(--lightgray); |
| | | width: max-content; |
| | | border-radius: 5px; |
| | | margin-bottom: -0.8rem; |
| | | margin-bottom: -0.5rem; |
| | | color: var(--darkgray); |
| | | } |
| | | |
| | | & > pre { |
| | | padding: 0.5rem 0; |
| | | } |
| | | } |
| | | |
| | | pre { |
| | | font-family: var(--codeFont); |
| | | padding: 0.5rem; |
| | | border-radius: 5px; |
| | | overflow-x: scroll; |
| | | overflow-x: auto; |
| | | border: 1px solid var(--lightgray); |
| | | |
| | | &:has(> code.mermaid) { |
| | | border: none; |
| | | position: relative; |
| | | } |
| | | |
| | | & > code { |
| | | background: none; |
| | | padding: 0; |
| | |
| | | counter-increment: line 0; |
| | | display: grid; |
| | | |
| | | & .line { |
| | | & [data-highlighted-chars] { |
| | | background-color: var(--highlight); |
| | | border-radius: 5px; |
| | | } |
| | | |
| | | & > [data-line] { |
| | | padding: 0 0.25rem; |
| | | box-sizing: border-box; |
| | | border-left: 3px solid transparent; |
| | | |
| | | &.highlighted { |
| | | &[data-highlighted-line] { |
| | | background-color: var(--highlight); |
| | | border-left: 3px solid var(--secondary); |
| | | } |
| | |
| | | margin-right: 1rem; |
| | | display: inline-block; |
| | | text-align: right; |
| | | color: rgba(115, 138, 148, 0.4); |
| | | color: rgba(115, 138, 148, 0.6); |
| | | } |
| | | } |
| | | |
| | | &[data-line-numbers-max-digits="2"] > [data-line]::before { |
| | | width: 2rem; |
| | | } |
| | | |
| | | &[data-line-numbers-max-digits="3"] > [data-line]::before { |
| | | width: 3rem; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | background: var(--lightgray); |
| | | } |
| | | |
| | | tbody, li, p { |
| | | line-height: 1.5rem; |
| | | tbody, |
| | | li, |
| | | p { |
| | | line-height: 1.6rem; |
| | | } |
| | | |
| | | table { |
| | | border: 2px solid var(--gray); |
| | | width: 100%; |
| | | margin: 1rem; |
| | | padding: 1.5rem; |
| | | border-collapse: collapse; |
| | | & > * { |
| | | line-height: 2rem; |
| | | } |
| | | } |
| | | |
| | | td, th { |
| | | th { |
| | | text-align: left; |
| | | padding: 0.4rem 1rem; |
| | | border-bottom: 2px solid var(--gray); |
| | | } |
| | | |
| | | td { |
| | | padding: 0.2rem 1rem; |
| | | border: 2px solid var(--gray); |
| | | } |
| | | |
| | | tr { |
| | | border-bottom: 1px solid var(--lightgray); |
| | | &:last-child { |
| | | border-bottom: none; |
| | | } |
| | | } |
| | | |
| | | img { |
| | |
| | | background-color: var(--lightgray); |
| | | } |
| | | |
| | | section { |
| | | margin: 2rem auto; |
| | | border-top: 1px solid var(--lightgray); |
| | | |
| | | & > #footnote-label { |
| | | & > a { |
| | | color: var(--dark); |
| | | } |
| | | } |
| | | |
| | | & ol, & ul { |
| | | padding: 0 1em |
| | | } |
| | | } |
| | | |
| | | audio, video { |
| | | audio, |
| | | video { |
| | | width: 100%; |
| | | border-radius: 5px; |
| | | } |
| | |
| | | .spacer { |
| | | flex: 1 1 auto; |
| | | } |
| | | |
| | | ul.overflow, |
| | | ol.overflow { |
| | | height: 300px; |
| | | overflow-y: scroll; |
| | | |
| | | // clearfix |
| | | content: ""; |
| | | clear: both; |
| | | |
| | | & > li:last-of-type { |
| | | margin-bottom: 50px; |
| | | } |
| | | |
| | | &:after { |
| | | pointer-events: none; |
| | | content: ""; |
| | | width: 100%; |
| | | height: 50px; |
| | | position: absolute; |
| | | left: 0; |
| | | bottom: 0; |
| | | opacity: 1; |
| | | transition: opacity 0.3s ease; |
| | | background: linear-gradient(transparent 0px, var(--light)); |
| | | } |
| | | } |