:root { font-size: 16px; --font-open-sans: 'Open Sans', sans-serif; --font-monospace: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; } @media (max-width: 400px) { :root { font-size: 14px; } } @media (min-width: 1600px) or (min-height: 1600px) { :root { font-size: calc(12px + 100vw / 400); } } @media print { :root { font-size: 12px; } } * { margin: 0; padding: 0; border: 0; box-sizing: border-box; } html, body { height: 100%; min-height: 100%; } body { background: var(--theme-bg-main); } color-theme-toggle, maximize-toggle, outline-toggle { position: fixed; top: 0.5rem; right: 0.5rem; display: block; z-index: 2; } maximize-toggle { top: 0.5rem; right: 3rem; } outline-toggle { top: 0.5rem; right: 5.5rem; } #outline { position: fixed; top: 4rem; right: 2rem; width: min(30rem, 80vw); max-height: 80vh; overflow-y: auto; background: var(--theme-bg-light); border: 0.2rem solid var(--theme-line); display: none; z-index: 10; } [data-show-outline] #outline { display: block; } #outline h2 { margin-block: 1rem; margin-inline: 1rem; padding: 0; font-size: 1.4rem; } #outline ol { list-style: none; padding: 0; } #outline li[data-depth='h1'] { font-size: 1.2rem; font-weight: 700; margin-inline-start: 1rem; } #outline li[data-depth='h2'] { font-size: 1.1rem; font-weight: 600; margin-inline-start: 2rem; } #outline li[data-depth='h3'] { margin-inline-start: 3rem; } #outline li[data-depth='h4'] { font-size: 0.9rem; margin-inline-start: 4rem; } #outline li[data-depth='h5'] { font-size: 0.9rem; margin-inline-start: 5rem; } #outline li[data-depth='h6'] { font-size: 0.9rem; margin-inline-start: 6rem; } @media print { color-theme-toggle, maximize-toggle, outline-toggle, #outline { display: hidden !important; } } /* ===== Theme Toggle Animations ===== */ /* todo: is there a better way to handle defining these animations? despite efforts, this implementation still has some degree of transition stacking / delays in nested svg contexts in chrome */ /* BG Color Only */ body[data-color-transition-enabled], body[data-color-transition-enabled] :is( [data-bg-transition]:not([data-color-transition]):not([data-border-transition]), button, ) { transition: background linear .5s; } /* Border Color Only */ body[data-color-transition-enabled] :is( [data-border-transition]:not([data-bg-transition]):not([data-color-transition]) ) { transition: border-color linear .5s; } /* Color Only */ body[data-color-transition-enabled] :is( [data-color-transition]:not([data-bg-transition]):not([data-border-transition]), p, a:not(h1 a), span:not(p span), time:not(p time), li:not([role='doc-footnote']), dt, dd, h1, h2, h3, h4, h5, h6, td, th ) { transition: color linear .5s; } /* BG and Color */ body[data-color-transition-enabled] :is( [data-bg-transition][data-color-transition]:not([data-border-transition]), pre, code:not(pre code), samp:not(pre samp), mark, [role='doc-footnote'] ) { transition: color linear .5s, background linear .5s; } /* BG and Border */ body[data-color-transition-enabled] :is( [data-bg-transition][data-border-transition]:not([data-color-transition]), #root > footer, p.error-box, .popup form, #outline ) { transition: background linear .5s, border-color linear .5s; } /** Color and Border */ body[data-color-transition-enabled] :is( [data-color-transition][data-border-transition]:not([data-bg-transition]), .private-indicator, tbody tr, .tbody .tr, ) { transition: color linear .5s, border-color linear .5s; } /* BG, Color, and Border */ body[data-color-transition-enabled] :is( [data-bg-transition][data-border-transition][data-color-transition], input, textarea, select, blockquote, :is(section, aside):is([role='note'], .info, .highlight, .warning, .problem) ) { transition: color linear .5s, background linear .5s, border-color linear .5s; } /* Fill and Stroke */ body[data-color-transition-enabled] svg [fill^='var('][stroke^='var(']:not([fill^='var('][stroke^='var('] *) { transition: fill linear .5s, stroke linear .5s; } /* Fill Only */ body[data-color-transition-enabled] svg [fill^='var(']:not([stroke^='var(']):not([fill^='var('] *) { transition: fill linear .5s; } /* Stroke Only */ body[data-color-transition-enabled] :is( svg [stroke^='var(']:not([fill^='var(']):not([stroke^='var('] *), svg.icon ) { transition: stroke linear .5s; } /* ===== Base Layout ===== */ #root { position: relative; min-height: 100%; padding-block: 2rem; z-index: 1; } @media print { #root { padding-block: 0.5rem; } } /* ===== Footer ===== */ #root > footer { position: absolute; bottom: 0; left: 0; right: 0; height: 2.5rem; background: var(--theme-bg-light); border-block-start: 0.1rem solid var(--theme-line); display: flex; flex-direction: row; flex-wrap: nowrap; align-items: center; overflow: hidden; } #root > footer :is(.left, .right) { min-width: 22rem; } #root > footer :is(.left, .center, .right) { flex: 1 1 calc(100% / 3); } #root > footer .left { text-align: left; padding-inline-start: 1.5rem; } #root > footer .center { text-align: center; } #root > footer .right { text-align: right; } #root > footer ul { padding: 0; } #root > footer p { font-size: 0.8rem; margin: 0; padding-block: 0.5rem; } @media (max-width: 1199px) { #root > footer { margin-block-start: 8rem; padding-block-end: 2rem; background: transparent; border: 0; position: static; flex-direction: column; height: auto; } #root > footer > div, #root > footer :is(p, .left, .center, .right) { font-size: 0.8rem; text-align: center; padding-inline: 0; } } /* ===== Typography ===== */ ul, ol { padding-inline-start: 2.5rem; } h1, h2, h3, h4, h5, h6, p, a, li, dt, dd, label, table, .table, td, .td { font-family: var(--font-open-sans); } h1, h2, h3, h4, h5, h6 { line-height: 1; } h1, h2, h3, h4, h5, h6, th, .th { color: var(--theme-text-heading); } code, samp, pre { color: var(--theme-code-normal); font-family: var(--font-monospace); } :not(pre) > code { color: inherit; background: var(--theme-bg-light); padding-inline: 0.25rem; border: 0.1rem solid var(--theme-line); } pre { margin-block: 3rem; margin-inline: 2rem; padding-block: 0.5rem; padding-inline: 1rem; border: 0.1rem solid var(--theme-line); border-radius: 1rem; font-size: 1rem; overflow: auto; background: var(--theme-bg-light); } code, samp { font-size: 1rem; } h1 { font-size: 2rem; font-weight: 300; margin-block-end: 1rem; } article header h1:not(.multiline), article header h1.multiline > div { display: flex; flex-direction: row; column-gap: 1rem; align-items: center; margin-block: 0.5rem; line-height: 1.3; } article header h1:not(.multiline) > svg, article header h1.multiline > div > svg { flex: 0 0 auto; } h2 { font-size: 2rem; font-weight: 500; margin-block: 4rem 1rem; } h3 { font-size: 1.17rem; } h3, h4, h5, h6 { margin-block: 3rem 1rem; } h5, h6 { font-size: 0.9rem; font-weight: 600; } h6 { font-weight: 500; } :not(li) > :is(h1, h2, h3, h4, h5, h6), li > :is(h1, h2, h3, h4, h5, h6):not(:first-child) { padding-block-start: 1rem; } :is(h1, h2, h3, h4, h5, h6) + :is(h1, h2, h3), :is(h1, h2, h3):first-child { margin-block-start: 1rem; } :is(h1, h2, h3, h4, h5, h6) + :is(h4, h5, h6), :is(h4, h5, h6):first-child { margin-block-start: 0; } p, small, li, dt, dd, label, table, .table, td, .td { color: var(--theme-text-body); } p { margin-block: 1.25rem; margin-inline: 0; font-size: 1rem; line-height: 1.75; } :is(aside, section):is([role='note'], .info, .highlight, .warning, .problem) { font-size: 1rem; color: var(--theme-text-light); padding-block: 0.6rem; padding-inline-start: 1rem; margin: 1rem; border-inline-start: 0.8rem solid var(--theme-line); background: var(--theme-bg-light); } :is(aside, section).info { border-inline-start-color: var(--theme-accent-info); } :is(aside, section).highlight { border-inline-start-color: var(--theme-accent-highlight); } :is(aside, section).warning { border-inline-start-color: var(--theme-accent-warning); } :is(aside, section).problem { border-inline-start-color: var(--theme-accent-problem); } :is(a, svg.icon).safe { color: var(--theme-text-safe); } :is(a, svg.icon).warn { color: var(--theme-text-warn); } :is(a, svg.icon).danger { color: var(--theme-text-danger); } [data-currency].negative { color: var(--theme-icon-failure-indicator); } li { font-size: 1rem; margin-block: 0.5rem; line-height: 1.75; } ul[role='doc-endnotes'] { list-style: none; padding-inline-start: 1rem; } [role='doc-footnote']:target { background: var(--theme-bg-heavy); } dl { padding: 1rem; } dt, dd { /* */ } dt { font-weight: 700; } dt p { margin-block-end: 1rem; } dt:not(:first-of-type) { margin-block-start: 2rem; } /* dd { margin-inline-start: 1rem; padding-inline-start: 1rem; padding-block: 0.125rem; border-inline-start: 0.5rem var(--theme-line) solid; background: var(--theme-bg-heavy) } */ dd p { margin-block: 1rem; } table, .table { display: table; margin-block: 2rem; border-collapse: collapse; } table, th, td, .table, .th, .td { font-size: 1rem; line-height: 1.75; } thead, .thead { display: table-header-group; } tbody, .tbody { display: table-row-group; } tbody tr, .tbody .tr { border-top: 1px var(--theme-line) solid; } tr, .tr { display: table-row; } th, .th { text-align: center; font-weight: 700; } th, .th, td, .td { padding-block: 0.5rem; padding-inline: 1rem; display: table-cell; } td, .td { display: table-cell; font-weight: 300; vertical-align: top; } :is(td, .td):not(:last-of-type) { border-inline-end: 0.1rem solid var(--theme-line); } :is(table, .table) :is(input, select) { margin-block: 0; } table dl { padding: 0; } small { font-size: 0.8rem; font-family: var(--font-open-sans); /* font-family: var(--font-nunito); */ } a { color: var(--theme-text-link); } a:active, a:hover, a:focus { color: var(--theme-text-link-active); } a:visited { color: var(--theme-text-link-visited); } a.local-ref { font-size: 0.8em; font-style: italic; } blockquote { margin-block: 2rem; margin-inline: 1rem; padding-block: 0.5rem; padding-inline: 1.5rem; border-inline-start: 0.25rem var(--theme-line) solid; } blockquote.external-embed { max-width: 60rem; background: var(--theme-bg-light); } blockquote p { margin: 0; } hr { border-block-start-width: 0.1rem; border-style: solid; border-color: var(--theme-line); width: 90%; margin-block: 4rem 6rem; } mark { color: var(--theme-text-highlight); background-color: var(--theme-bg-text-highlight); padding: 0.2rem; } ::selection { fill: var(--theme-text-selection) !important; color: var(--theme-text-selection) !important; background-color: var(--theme-bg-text-selection) !important; } figure { margin-block: 2rem; margin-inline: 1rem; padding-bottom: 1.5rem; } figure > :not(figcaption) { margin-block: 0rem; } figure pre { margin-inline: 0; } figcaption { font-family: var(--font-open-sans); text-align: center; font-size: 0.85rem; margin-block-start: 1rem; color: var(--theme-text-light); max-width: 60vw; margin-inline: auto; } a.icon-link { display: inline-flex; column-gap: 0.3rem; align-items: center; } a.icon-link svg.icon { --icon-size: 1rem; } a.heading-anchor { color: var(--theme-text-light); } :is(h1, h2, h3, h4, h5, h6) svg.icon:not(.heading-anchor > svg) { --icon-size: 1em; } .private-indicator { color: var(--theme-text-safe); display: inline-flex; align-items: baseline; column-gap: 0.25rem; margin-inline: 0.25rem; margin-block-end: 1rem; font-family: var(--font-open-sans); border: 0.15rem solid var(--theme-line-safe); border-radius: 1rem; padding: 0.2rem 0.5rem; font-weight: 600; font-size: 0.8rem; } .private-indicator > svg.icon { align-self: center; } .cite-label { font-weight: 600; } /* ===== Popups ===== */ .popup { z-index: 1; position: fixed; top: 0; right: 0; bottom: 0; left: 0; user-select: none; pointer-events: none; display: flex; opacity: 0; transition: opacity 0.125s linear, background .5s linear; background: var(--theme-bg-popup-mask); } .popup:target { opacity: 1; user-select: unset; pointer-events: unset; } .popup form { margin: auto; position: relative; background: var(--theme-bg-main); border: 0.125rem solid var(--theme-border-input); border-radius: 1rem; padding-block-start: 1rem; padding-block-end: 2rem; padding-inline: 2rem; width: 40rem; max-width: 90vw; } .popup h3 { margin-block-start: 2rem; } .popup form :is(h1, h2, h3, h4, h5, h6):first-child { margin-block-start: 0; } .popup a.close-popup { position: absolute; top: 1rem; right: 2rem; font-size: 1rem; } .popup form :is(input, select) { margin-block-start: 0.35rem; margin-block-end: 1rem; } .popup form .inline-list { margin-block-start: 2rem; } /* ===== Forms and Inputs ===== */ label { display: block; font-family: var(--font-open-sans); font-size: 1rem; margin-block-start: 1rem; } label:not(:first-of-type) { margin-block-start: 2rem; } label.radio { display: flex; margin-block: 1rem; justify-content: flex-start; } input, textarea { display: block; margin-block-start: 0.35rem; margin-block-end: 1rem; border: 0.125rem var(--theme-border-input) solid; border-radius: 0.25rem; color: var(--theme-text-body); background-color: var(--theme-bg-input); padding: 0.5rem; font-family: var(--font-open-sans); font-size: 1rem; width: 20rem; } input[disabled], textarea[disabled] { opacity: 0.4; cursor: default; pointer-events: none; } input[type='text']:invalid, input[type='password']:invalid, textarea:invalid { border-color: var(--theme-border-input-invalid); } input[type='text'][readonly] { color: var(--theme-text-light); border-color: var(--theme-line); } input[type='checkbox'] { width: 1rem; height: 1rem; padding: 0; } input[type='checkbox'] + label { margin-inline-start: 0.5rem; margin-inline-end: 2rem; } input[type='radio'] { flex: 0 0 2rem; margin: 0.2rem; } textarea { line-height: 1.7rem; font-family: var(--font-monospace); } ::-webkit-input-placeholder { color: var(--theme-text-light); } button { padding: 0.5rem 1.5rem; border-radius: 0.5rem; font-size: 1rem; margin-block-start: 1rem; margin-inline-end: 1rem; cursor: pointer; user-select: none; appearance: none; color: var(--theme-text-button-primary); background: var(--theme-bg-button-primary); text-decoration: none; font-size: 1rem; font-family: var(--font-open-sans); font-weight: 700; line-height: 2rem; display: flex; align-items: center; } button.icon-only { padding: 0.5rem; } button svg.icon { --icon-size: 2rem; } button:not(.icon-only) svg.icon:first-child { margin-inline-end: 0.5rem; } button:not(.icon-only) svg.icon:last-child { margin-inline-start: 0.5rem; } button[data-style='secondary'] { color: var(--theme-text-button-secondary); background: var(--theme-bg-button-secondary); } button:not([disabled]):hover { background: var(--theme-bg-button-primary-hover); } button[data-style='secondary']:not([disabled]):hover { background: var(--theme-bg-button-secondary-hover); } button[disabled] { opacity: 0.4; cursor: default; pointer-events: none; } select { display: block; margin-block-start: 0.35rem; margin-block-end: 1rem; border: 0.125rem var(--theme-border-input) solid; border-radius: 0.25rem; color: var(--theme-text-body); background-color: var(--theme-bg-input); padding: 0.5rem; font-family: var(--font-open-sans); font-size: 1rem; width: 20rem; cursor: pointer; } select[disabled] { opacity: 0.4; cursor: default; pointer-events: none; } select option { color: var(--theme-text-body); background-color: var(--theme-bg-input); padding: 0.5rem; font-family: var(--font-open-sans); font-size: 1rem; } :is(table, .table) :is(input, select) { margin-block: 0; } p.error-box { margin: 0; padding: 0.5rem; border-radius: 0.25rem; color: var(--theme-text-error-box); background: var(--theme-bg-error-box); border: 0.1rem solid var(--theme-border-error-box); } /* ===== Rendered Blocks ===== */ /* === General === */ figure[data-lang] { margin-block: 2rem; } figure[data-lang] svg { display: block; margin-inline: auto; } figure[data-size='small'] svg { max-width: 40rem; max-height: min(20rem, 50vw); } figure[data-size='medium'] svg { max-width: 60rem; max-height: min(40rem, 50vw); } figure[data-size='large'] svg { max-height: min(60rem, 80vw); } /* figure[data-lang].big { background: var(--theme-bg-main); position: fixed; top: 0; bottom: 0; left: 0; right: 0; z-index: 1000; display: flex; border: 0.25rem var(--theme-line) solid; margin: 3rem; } figure[data-lang].big svg { max-width: none !important; max-height: none !important; } */ figure:is([data-lang='pikchr'], [data-lang='nomnoml'], [data-lang='bytefield']) svg text { fill: var(--theme-text-body); } figure:is([data-lang='pikchr'], [data-lang='nomnoml'], [data-lang='bytefield']) svg text:not([font-family~='Courier']) { font-family: var(--font-open-sans); } [data-lang='bash:samp'] samp { display: block; margin-block-start: 0.5rem; padding-block-start: 0.5rem; border-block-start: 0.1rem solid var(--theme-line); } /* === KaTeX === */ .katex-display { color: var(--theme-text-body); } .katex-display .katex { font-size: 1.4rem; } /* using "body" here to add specificity, to override styles from katex.min.css */ body .katex-display { margin: 2rem; } body .katex-display > .katex { text-align: left; } :not(.katex-display) > .katex { font-size: inherit; margin-inline: 0.5rem; } .katex span[style~='color:transparent;'] { user-select: none; } /* === Pikchr */ /* boxes */ .rendered-pikchr svg path[style*='fill:none;'] { fill: var(--theme-bg-light) !important; transition: fill linear .5s; } /* lines and boxes */ .rendered-pikchr svg path[style*='stroke:rgb(0,0,0);'] { stroke: var(--theme-text-body) !important; } /* circles */ .rendered-pikchr svg circle[style*='stroke:rgb(0,0,0);'] { stroke: var(--theme-text-body) !important; } /* arrow heads */ .rendered-pikchr svg polygon[style='fill:rgb(0,0,0)'] { fill: var(--theme-text-body) !important; transition: fill linear .5s; } /* === Bytefield === */ figure[data-lang='clojure:bytefield'] svg line[stroke-width='1'] { stroke-width: 2; } figure[data-lang='clojure:bytefield'] svg :is(text, tspan)[font-size='11'] { font-size: 14px; } figure[data-lang='clojure:bytefield'] svg :is(text, tspan)[font-size='18'] { font-size: 16px; } figure[data-lang='clojure:bytefield'] svg :is(text, tspan)[font-family~='Courier'] { font-family: var(--font-monospace); } figure[data-lang='clojure:bytefield'] svg :is(text, tspan)[font-family~='Times'] { font-family: var(--font-open-sans); } figure[data-lang='clojure:bytefield'] svg line[stroke-dasharray='1,1'] { stroke-dasharray: 4px, 3px; } figure[data-lang='clojure:bytefield'] svg line[stroke-dasharray='1,3'] { stroke-dasharray: 2px, 3px; } blockquote.external-embed .h-entry footer p { font-size: 0.8rem; margin-block: 1rem; } main > .h-entry header p { margin-block: 0.6rem; } main > .h-entry header p.p-summary { font-style: italic; color: var(--theme-text-light); } main > .h-entry header p.event-time { font-size: 0.8rem; margin-block: 0.3rem; } main > .h-entry header p.publish-time { font-size: 0.8rem; margin-block: 0.3rem; }