body { font-size: 17px; margin: 20px auto 50px; padding: 10px 15px; max-width: 800px; font-family: "PT Sans", -apple-system, system-ui, BlinkMacSystemFont, sans-serif; font-optical-sizing: auto; font-weight: 400; font-style: normal; line-height: 1.5; hyphens: initial; } :root { --dark--bg-color: #1b1f29; --dark--p-color: #eff1f8; --dark--header-color: #ffffff; --dark--link-color: #5da9e9; --dark--blockquote-color: #eff1f8; --dark--blockquote-bg-color: #ffffff10; --dark--code-bg-color: #ffffff00; --dark--syntax-0: #eff1f8; --dark--syntax-1: #5da9e9; --dark--syntax-2: #f8b67b; --dark--syntax-3: #b884b8; --light--bg-color: #ffffff; --light--p-color: #1a1a1a; --light--header-color: #003f91; --light--link-color: #3980bc; --light--blockquote-color: #1a1a1a; --light--blockquote-bg-color: #eff1f866; --light--code-bg-color: #282a36; --light--syntax-0: #1a1a1a; --light--syntax-1: #6d326d; --light--syntax-2: #3980bc; --light--syntax-3: #003f91; } @media (prefers-color-scheme: dark) { :root { --header-color: var(--dark--header-color); --p-color: var(--dark--p-color); --link-color: var(--dark--link-color); --bg-color: var(--dark--bg-color); --blockquote-color: var(--dark--blockquote-color); --blockquote-bg-color: var(--dark--blockquote-bg-color); --code-bg-color: var(--dark--code-bg-color); } } @media (prefers-color-scheme: light) { :root { --header-color: var(--light--header-color); --p-color: var(--light--p-color); --link-color: var(--light--link-color); --bg-color: var(--light--bg-color); --blockquote-color: var(--light--blockquote-color); --blockquote-bg-color: var(--light--blockquote-bg-color); --code-bg-color: var(--light--code-bg-color); } } html.dark { --header-color: var(--dark--header-color); --p-color: var(--dark--p-color); --link-color: var(--dark--link-color); --bg-color: var(--dark--bg-color); --blockquote-color: var(--dark--blockquote-color); --blockquote-bg-color: var(--dark--blockquote-bg-color); --code-bg-color: var(--dark--code-bg-color); } html.light { --header-color: var(--light--header-color); --p-color: var(--light--p-color); --link-color: var(--light--link-color); --bg-color: var(--light--bg-color); --blockquote-color: var(--light--blockquote-color); --blockquote-bg-color: var(--light--blockquote-bg-color); --code-bg-color: var(--light--code-bg-color); } html { color: var(--p-color); background-color: var(--bg-color); } h1, h2, h3, h4, h5, h6 { color: var(--header-color); line-height: 1.2; margin-top: 1.4em; } h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { color: inherit !important; font-style: inherit !important; font-weight: 600 !important; } a, a:visited { color: var(--link-color); text-decoration: none; font-weight: normal; cursor: pointer; text-underline-position: under; } a:hover, a:focus { text-decoration: underline; } #dark-mode-btn { border: none; background: none; font-size: 30px; cursor: pointer; padding: 0; margin: 0; } .header-row { display: flex; flex-flow: row nowrap; align-items: center; justify-content: space-between; margin: 30px 0; } .header-row h1 { margin: 0; } .page-title { text-decoration: none; color: var(--header-color) !important; font-size: 32px; font-weight: 700; } .latest-posts { margin: 35px 0; } code { padding: 3px 5px; border: 1px solid var(--blockquote-color); white-space: nowrap; } pre { padding: 8px 10px; overflow-x: scroll; color: inherit; border: 1px solid var(--blockquote-color); } pre code { white-space: inherit; border: none; } @media screen and (max-width: 600px) { pre, div.sourceCode { margin: 20px -15px; } } .sourceCode { line-height: 1.3; border: 1px solid var(--blockquote-color); } .sourceCode code, .sourceCode pre { border: none; min-width: max-content; } blockquote { display: block; color: var(--blockquote-color); border-left: 10px solid var(--link-color); margin: 20px 0; padding: 2px 15px; quotes: "\201C" "\201D" "\2018" "\2019"; } blockquote p { margin: 10px 0; } img { max-width: 100%; width: 100%; margin: 20px 0; } figure { max-width: 100%; padding: 0; margin: 20px 0; display: block; border: 1px solid var(--p-color); } @media screen and (max-width: 600px) { figure { max-width: calc(100% + 2 * 15px); margin: 20px -15px; } } figure img { margin: 0; border-bottom: 1px solid var(--p-color); } figure figcaption { font-style: italic; text-align: center; margin: 7px auto 15px; max-width: 550px; padding: 0 10px; color: var(--blockquote-color); } hr { background: none !important; height: 0; margin: 40px auto; border: none; border-top: 2px dotted var(--header-color) !important; width: 50%; } .nojs-hidden { display: none; } small { color: var(--blockquote-color); } h1 small { opacity: 0.65; font-weight: 400; font-size: 20px; } ul, ol { margin-left: 10px; } li::marker { color: var(--link-color); } .webrings p { margin: 0 !important; } .archive-list { margin-left: 15px; padding-left: 0; } .archive-entry { list-style: disclosure-closed; margin-bottom: 8px; } .archive-entry a { line-height: 1.5; display: block; margin-bottom: 6px; } .archive-entry small { margin-top: -10px; display: block; font-size: 16px; } .archive-entry small span { color: var(--header-color); } /* Post navigation (previous/next) */ .post-nav { padding-top: 10px; display: flex; justify-content: space-between; gap: 16px; } .post-nav-left { flex: 1; text-align: left; } .post-nav-right { flex: 1; text-align: right; } .post-nav-link { display: inline-block; } table td { width: 1%; /* I have no idea why this makes columns responsive width */ min-width: 150px; } th { border-top: none; } tbody { border-bottom: none; border-top: 2px solid var(--blockquote-color); } table .odd { background-color: var(--blockquote-bg-color); } table { margin: 20px 0 30px; } table tr { border-bottom: 1px dotted var(--p-color); } p { margin: 20px 0; line-height: 1.5; } /* Highlighting with Dracula theme as the base */ .z-code { color: #f8f8f2; background-color: var(--code-bg-color); } .z-comment { color: #6272a4; } .z-string { color: #f1fa8c; } .z-constant.z-numeric { color: #bd93f9; } .z-constant.z-language { color: #bd93f9; } .z-constant.z-character, .z-constant.z-other { color: #bd93f9; } .z-variable { } .z-variable.z-other.z-readwrite.z-instance { color: #ffb86c; } .z-constant.z-character.z-escaped, .z-constant.z-character.z-escape, .z-string .z-source, .z-string .z-source.z-ruby { color: #ff79c6; } .z-source.z-ruby .z-string.z-regexp.z-classic.z-ruby, .z-source.z-ruby .z-string.z-regexp.z-mod-r.z-ruby { color: #ff5555; } .z-keyword { color: #ff79c6; } .z-storage { color: #ff79c6; } .z-storage.z-type { color: #8be9fd; font-style: italic; } .z-storage.z-type.z-namespace { color: #8be9fd; font-style: italic; } .z-storage.z-type.z-class { color: #ff79c6; font-style: italic; } .z-entity.z-name.z-class { color: #8be9fd; text-decoration: underline; } .z-meta.z-path { color: #66d9ef; text-decoration: underline; } .z-entity.z-other.z-inherited-class { color: #8be9fd; text-decoration: underline; font-style: italic; } .z-entity.z-name.z-function { color: #50fa7b; } .z-variable.z-parameter { color: #ffb86c; font-style: italic; } .z-entity.z-name.z-tag { color: #ff79c6; } .z-entity.z-other.z-attribute-name { color: #50fa7b; } .z-support.z-function { color: #8be9fd; } .z-support.z-constant { color: #6be5fd; } .z-support.z-type, .z-support.z-class { color: #66d9ef; font-style: italic; } .z-support.z-other.z-variable { } .z-support.z-other.z-namespace { color: #66d9ef; font-style: italic; } .z-invalid { color: #f8f8f0; background-color: #ff79c6; } .z-invalid.z-deprecated { color: #f8f8f0; background-color: #bd93f9; } .z-meta.z-structure.z-dictionary.z-json .z-string.z-quoted.z-double.z-json { color: #cfcfc2; } .z-meta.z-diff, .z-meta.z-diff.z-header { color: #6272a4; } .z-markup.z-deleted { color: #ff79c6; } .z-markup.z-inserted { color: #50fa7b; } .z-markup.z-changed { color: #e6db74; } .z-constant.z-numeric.z-line-number.z-find-in-files { color: #bd93f9; } .z-entity.z-name.z-filename { color: #e6db74; } .z-message.z-error { color: #f83333; } .z-punctuation.z-definition.z-string.z-begin.z-json, .z-punctuation.z-definition.z-string.z-end.z-json { color: #eeeeee; } .z-meta.z-structure.z-dictionary.z-json .z-string.z-quoted.z-double.z-json { color: #8be9fd; } .z-meta.z-structure.z-dictionary.z-value.z-json .z-string.z-quoted.z-double.z-json { color: #f1fa8c; } .z-meta .z-meta .z-meta .z-meta .z-meta .z-meta .z-meta.z-structure.z-dictionary.z-value .z-string { color: #50fa7b; } .z-meta .z-meta .z-meta .z-meta .z-meta .z-meta.z-structure.z-dictionary.z-value .z-string { color: #ffb86c; } .z-meta .z-meta .z-meta .z-meta .z-meta.z-structure.z-dictionary.z-value .z-string { color: #ff79c6; } .z-meta .z-meta .z-meta .z-meta.z-structure.z-dictionary.z-value .z-string { color: #bd93f9; } .z-meta .z-meta .z-meta.z-structure.z-dictionary.z-value .z-string { color: #50fa7b; } .z-meta .z-meta.z-structure.z-dictionary.z-value .z-string { color: #ffb86c; } .z-markup.z-strike { color: #ffb86c; font-style: italic; } .z-markup.z-bold { color: #ffb86c; font-weight: bold; } .z-markup.z-italic { color: #ffb86c; font-style: italic; } .z-markup.z-heading { color: #8be9fd; } .z-punctuation.z-definition.z-list_item.z-markdown { color: #ff79c6; } .z-markup.z-quote { color: #6272a4; font-style: italic; } .z-punctuation.z-definition.z-blockquote.z-markdown { color: #6272a4; background-color: #6272a4; font-style: italic; } .z-meta.z-separator { color: #6272a4; } .z-text.z-html.z-markdown .z-markup.z-raw.z-inline { color: #50fa7b; } .z-markup.z-underline { color: #bd93f9; text-decoration: underline; } .z-markup.z-raw.z-block { color: #cfcfc2; } .z-markup.z-raw.z-block.z-fenced.z-markdown .z-source { color: #f8f8f2; } .z-punctuation.z-definition.z-fenced.z-markdown, .z-variable.z-language.z-fenced.z-markdown { color: #6272a4; font-style: italic; } .z-variable.z-language.z-fenced.z-markdown { color: #6272a4; font-style: italic; } .z-punctuation.z-accessor { color: #ff79c6; } .z-meta.z-function.z-return-type { color: #ff79c6; } .z-punctuation.z-section.z-block.z-begin { color: #ffffff; } .z-punctuation.z-section.z-block.z-end { color: #ffffff; } .z-punctuation.z-section.z-embedded.z-begin { color: #ff79c6; } .z-punctuation.z-section.z-embedded.z-end { color: #ff79c6; } .z-punctuation.z-separator.z-namespace { color: #ff79c6; } .z-variable.z-function { color: #50fa7b; } .z-variable.z-other { color: #ffffff; } .z-variable.z-language { color: #bd93f9; } .z-entity.z-name.z-module.z-ruby { color: #8be9fd; } .z-entity.z-name.z-constant.z-ruby { color: #bd93f9; } .z-support.z-function.z-builtin.z-ruby { color: #ffffff; } .z-storage.z-type.z-namespace.z-cs { color: #ff79c6; } .z-entity.z-name.z-namespace.z-cs { color: #8be9fd; }