@charset "utf-8"; /* Document * ========================================================================== */ /** * 1. Add border box sizing in all browsers (opinionated). * 2. Backgrounds do not repeat by default (opinionated). */ *, ::before, ::after { box-sizing: border-box; /* 1 */ } /** * 1. Add text decoration inheritance in all browsers (opinionated). * 2. Add vertical alignment inheritance in all browsers (opinionated). */ ::before, ::after { text-decoration: inherit; /* 1 */ vertical-align: inherit; /* 2 */ } /** * 1. Use the default cursor in all browsers (opinionated). * 2. Change the line height in all browsers (opinionated). * 3. Breaks words to prevent overflow in all browsers (opinionated). * 4. Use a 4-space tab width in all browsers (opinionated). * 5. Remove the grey highlight on links in iOS (opinionated). * 6. Prevent adjustments of font size after orientation changes in iOS. */ :where(:root) { cursor: default; /* 1 */ line-height: 1.5; /* 2 */ overflow-wrap: break-word; /* 3 */ -moz-tab-size: 4; /* 4 */ -o-tab-size: 4; tab-size: 4; /* 4 */ -webkit-tap-highlight-color: transparent; /* 5 */ -webkit-text-size-adjust: 100%; /* 6 */ } /* Sections * ========================================================================== */ /** * Remove the margin in all browsers (opinionated). */ :where(body) { margin: 0; } /** * Correct the font size and margin on `h1` elements within `section` and * `article` contexts in Chrome, Edge, Firefox, and Safari. */ :where(h1) { font-size: 2em; margin: 0.67em 0; } /* Grouping content * ========================================================================== */ /** * Remove the margin on nested lists in Chrome, Edge, and Safari. */ :where(dl, ol, ul) :where(dl, ol, ul) { margin: 0; } /** * 1. Correct the inheritance of border color in Firefox. * 2. Add the correct box sizing in Firefox. */ :where(hr) { color: inherit; /* 1 */ height: 0; /* 2 */ } /** * Remove the list style on navigation lists in all browsers (opinionated). */ :where(nav) :where(ol, ul) { list-style-type: none; padding: 0; } /** * Prevent VoiceOver from ignoring list semantics in Safari (opinionated). */ :where(nav li)::before { content: "\200B"; float: left; } /** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. * 3. Prevent overflow of the container in all browsers (opinionated). */ :where(pre) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ overflow: auto; /* 3 */ } /* Text-level semantics * ========================================================================== */ /** * Add the correct text decoration in Safari. */ :where(abbr[title]) { text-decoration: underline; -webkit-text-decoration: underline dotted; text-decoration: underline dotted; } /** * Add the correct font weight in Chrome, Edge, and Safari. */ :where(b, strong) { font-weight: bolder; } /** * 1. Correct the inheritance and scaling of font size in all browsers. * 2. Correct the odd `em` font sizing in all browsers. */ :where(code, kbd, samp) { font-family: monospace, monospace; /* 1 */ font-size: 1em; /* 2 */ } /** * Add the correct font size in all browsers. */ :where(small) { font-size: 80%; } /* Embedded content * ========================================================================== */ /* * Change the alignment on media elements in all browsers (opinionated). */ :where(audio, canvas, iframe, img, svg, video) { vertical-align: middle; } /** * Remove the border on iframes in all browsers (opinionated). */ :where(iframe) { border-style: none; } /** * Change the fill color to match the text color in all browsers (opinionated). */ :where(svg:not([fill])) { fill: currentColor; } /* Tabular data * ========================================================================== */ /** * 1. Collapse border spacing in all browsers (opinionated). * 2. Correct table border color inheritance in all Chrome, Edge, and Safari. * 3. Remove text indentation from table contents in Chrome, Edge, and Safari. */ :where(table) { border-collapse: collapse; /* 1 */ border-color: inherit; /* 2 */ text-indent: 0; /* 3 */ } /* Forms * ========================================================================== */ /** * Remove the margin on controls in Safari. */ :where(button, input, select) { margin: 0; } /** * Correct the inability to style buttons in iOS and Safari. */ :where(button, [type="button" i], [type="reset" i], [type="submit" i]) { -webkit-appearance: button; } /** * Change the inconsistent appearance in all browsers (opinionated). */ :where(fieldset) { border: 1px solid #a0a0a0; } /** * Add the correct vertical alignment in Chrome, Edge, and Firefox. */ :where(progress) { vertical-align: baseline; } /** * 1. Remove the margin in Firefox and Safari. * 3. Change the resize direction in all browsers (opinionated). */ :where(textarea) { margin: 0; /* 1 */ resize: vertical; /* 3 */ } /** * 1. Correct the odd appearance in Chrome, Edge, and Safari. * 2. Correct the outline style in Safari. */ :where([type="search" i]) { -webkit-appearance: textfield; /* 1 */ outline-offset: -2px; /* 2 */ } /** * Correct the cursor style of increment and decrement buttons in Safari. */ ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { height: auto; } /** * Correct the text style of placeholders in Chrome, Edge, and Safari. */ ::-webkit-input-placeholder { color: inherit; opacity: 0.54; } /** * Remove the inner padding in Chrome, Edge, and Safari on macOS. */ ::-webkit-search-decoration { -webkit-appearance: none; } /** * 1. Correct the inability to style upload buttons in iOS and Safari. * 2. Change font properties to `inherit` in Safari. */ ::-webkit-file-upload-button { -webkit-appearance: button; /* 1 */ font: inherit; /* 2 */ } /* Interactive * ========================================================================== */ /* * Add the correct styles in Safari. */ :where(dialog) { background-color: white; border: solid; color: black; height: -moz-fit-content; height: -webkit-fit-content; height: fit-content; left: 0; margin: auto; padding: 1em; position: absolute; right: 0; width: -moz-fit-content; width: -webkit-fit-content; width: fit-content; } :where(dialog:not([open])) { display: none; } /* * Add the correct display in Safari. */ :where(details > summary:first-of-type) { display: list-item; } /* Accessibility * ========================================================================== */ /** * Change the cursor on busy elements in all browsers (opinionated). */ :where([aria-busy="true" i]) { cursor: progress; } /* * Change the cursor on control elements in all browsers (opinionated). */ :where([aria-controls]) { cursor: pointer; } /* * Change the cursor on disabled, not-editable, or otherwise * inoperable elements in all browsers (opinionated). */ :where([aria-disabled="true" i], [disabled]) { cursor: not-allowed; } /* * Change the display on visually hidden accessible elements * in all browsers (opinionated). */ :where([aria-hidden="false" i][hidden]) { display: initial; } :where([aria-hidden="false" i][hidden]:not(:focus)) { clip: rect(0, 0, 0, 0); position: absolute; } /** * 1. Change the inconsistent appearance in all browsers (opinionated). * 2. Add typography inheritance in all browsers (opinionated). */ :where(button, input, select, textarea) { background-color: transparent; /* 1 */ border: 1px solid WindowFrame; /* 1 */ color: inherit; /* 1 */ font: inherit; /* 2 */ letter-spacing: inherit; /* 2 */ padding: 0.25em 0.375em; /* 1 */ } /** * Change the inconsistent appearance in all browsers (opinionated). */ :where(select) { -webkit-appearance: none; -moz-appearance: none; appearance: none; background: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='4'%3E%3Cpath d='M4 0h6L7 4'/%3E%3C/svg%3E") no-repeat right center / 1em; border-radius: 0; padding-right: 1em; } /** * Remove the border and padding in all browsers (opinionated). */ :where([type="color" i], [type="range" i]) { border-width: 0; padding: 0; } :root { --main-bg-color: black; --main-font-color: #e6e6e6; --alt-bg-color: #333; --link-underline: #3f72af; --code-add-bg-color: #144212; --code-del-bg-color: #600; } html { cursor: unset; height: 100%; line-height: 1.15; } body { color: var(--main-font-color); background: var(--main-bg-color); font-family: sans-serif; font-size: 1.2em; /* https://stackoverflow.com/a/6654996 */ min-height: 100%; line-height: 1.5; } /* * Restrict sizing to the page width in all browsers (opinionated). * sanitize/page */ iframe, img, input, select, textarea { height: auto; max-width: 100%; } h1, h2, h3, h4, h5, h6 { font-family: serif; font-weight: bold; line-height: 1.35; margin-top: 1em; margin-bottom: 0.5em; } h1 { font-size: 1.5em; margin: 0.5em 0; } /* Disable line break for site title */ a.site-title { font-family: serif; font-size: 1.5em; font-weight: bold; line-height: 1.35; margin: 0.5em 0; white-space: nowrap; } h2 { font-size: 1.3em; } h3 { font-size: 1.2em; } h4 { font-size: 1.1em; } a { background: none; color: var(--link-underline); cursor: pointer; text-decoration: none; } a:hover, a:focus { text-decoration: underline; } a:visited { color: purple; } a:active { color: #faa700; } button, input, select, textarea { font-size: 100%; line-height: 1.15; } hr { background-image: -webkit-linear-gradient(0deg,transparent,var(--main-font-color),transparent); border: none; box-sizing: content-box; height: 1px; margin-bottom: 1em; margin-left: 25%; overflow: visible; width: 50%; } .archive-container hr, .article hr { width: 100%; margin-left: 0; } .article .article-footer, .article .article-footer hr { margin-top: 1em; } .header-hr { background-image: -webkit-linear-gradient(90deg,var(--main-font-color),var(--main-font-color),transparent); } figcaption, small, pre div.caption { font-size: 0.9em; color: #888; } /* code caption */ figcaption, pre div.caption { margin-bottom: 0.5em; } pre figcaption a, pre div.caption a { float: right; } dl, form, hr, ol, p, pre, table, ul, blockquote { margin-bottom: 1em; } ul.index-list { font-size: 1.1em; } ol { list-style: decimal; } ol.toc { list-style: disc; } ol.toc-child { list-style: circle; margin-bottom: unset; } li ol, li ul, ol, ul { margin-bottom: 0.8em; } li ul, ul { list-style: disc; } table caption, table td, table th, td, th { border: 1px solid #ddd; padding: 0.5em 1em; } table th, th, table tr:nth-child(even), tr:nth-child(even) { background: var(--alt-bg-color); } em, caption, legend { font-weight: inherit; } code, kbd, pre, samp { font-size: 0.9em; } kbd { border: 1px solid var(--alt-bg-color); border-radius: 3px; /* https://github.com/alvaromontoro/almond.css */ padding: 0.125rem 0.25rem; } /* set bg colour of single backtick wrap */ p code { background: var(--alt-bg-color); } /* set codeblock width to minimum */ pre { border-left: 0.1em solid var(--link-underline); padding-left: 1em; max-width: -webkit-max-content; max-width: -moz-max-content; max-width: max-content; } mark { background: var(--alt-bg-color); color: unset; } /* Hide post's excerpt in article */ .p-summary { display: none; } .main-nav-link { margin-right: 0.5em; padding-bottom: 0.5em; display: inline-block; border: 0; } b, strong { font-weight: 700; } blockquote { background: var(--alt-bg-color); border-left: 0.1em solid #666; padding-left: 1em; margin: 1em 3em 1em 0em; max-width: -webkit-max-content; max-width: -moz-max-content; max-width: max-content; } .page-nav { margin-top: 2em; text-align: center; } .footer { box-sizing: border-box; } .container { width: 100%; } .copyright, .footer-content, .footer-links { text-align: center; font-size: 0.95em; max-width: 80ch; padding: 0 2ch; margin: auto; } .copyright li, .footer-content li, .footer-links li { display: inline-block; } .footer-content { margin: 0 auto; text-align: left; } .footer-links { font-size: 0.9em; padding: 0; } .footer-links a { text-decoration: none; } .footer-links li { margin-right: 1em; } /* Wrap count in brackets */ span.index-list-count:before { content: ' ('; } span.index-list-count:after { content: ')'; } /* align badge in /about/ */ .about-body .article .article-entry img.svg { /* display same line */ display: inline; /* align to the left */ margin: auto 0 .5em; } /* https://jrl.ninja/etc/1/ */ .archive-container { position: relative; max-width: 80ch; padding: 2ch; margin: auto; } .archive-container article { margin-bottom: 1em; line-height: 1em; } .archive-container a, .archive-container a:hover { border: 0; } .archive-container .header, .article .header { font-size: 1.1em; } .archive-container .archive-article-header > a, .archive-container .archive-article-header > h1 { vertical-align: middle; } .archive-container .archive-article-header h1 { font-size: 1.2em; margin: 0; } .archive-container .archive-article-date { font-size: 0.8em; } .archive-container .extend, .archive-container .page-number { margin-right: 1em; } .article { max-width: 80ch; padding: 2ch; margin: auto; position: relative; } .article .article-entry { word-break: break-word; } .article .article-entry img { display: block; margin: auto; margin-bottom: 0.5em; max-height: 30em; } .article .article-entry blockquote footer { text-align: center; font-size: 80%; } .article .article-entry blockquote footer cite { font-style: italic; } .article .article-entry blockquote footer cite:before { content: "—"; padding: 0 0.5em; } .article .article-entry blockquote footer strong { font-weight: 400; } .article .article-entry table caption, .article .article-entry table td, .article .article-entry table th, .article .article-entry td, .article .article-entry th { word-break: normal; } .article .article-entry .pullquote { width: 45%; border: 0; } .article .article-entry .pullquote.left { float: left; text-align: left; } .article .article-entry .pullquote.right { float: right; text-align: right; } .article .article-entry .video-container { position: relative; padding-top: 56.25%; margin-bottom: 1em; height: 0; overflow: hidden; } .article .article-entry .video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; margin-top: 0; } .article .article-nav { max-width: 100%; } .article .article-nav-link-wrap { display: inline-block; padding: 0 1em; width: 49%; box-sizing: border-box; vertical-align: top; border: 0; } .article .article-nav-link-wrap:hover { border-bottom: 0; } .article .article-nav-link-wrap.newer { text-align: right; } .article .article-nav-link-wrap.older { text-align: left; } .article .article-meta { font-size: 0.9em; list-style: none; margin: 0; padding: 0; } .article .article-meta .label { margin-right: 0.5em; } .article .article-meta .article-category, .article .article-meta .article-tag-list { display: inline-block; margin: 0; padding: 0; } .article .article-meta .article-tag-list-item { display: inline-block; margin-right: 1em; } .article .article-meta .article-tag-list-item:before { content: "#"; } .article .article-gallery img { width: 100%; } .article-type-page .article-footer { display: none; } table caption, table td, td { border: 1px solid #ddd; } /* * Visual Studio 2015 dark style * Author: Nicolas LLOBERA * https://github.com/highlightjs/highlight.js/blob/master/src/styles/vs2015.css */ .hljs { display: block; overflow-x: auto; /* padding: 0.5em; background: #1E1E1E; color: #DCDCDC; */ } .hljs-keyword, .hljs-literal, .hljs-symbol, .hljs-name { color: #569CD6; } .hljs-link { color: #569CD6; text-decoration: underline; } .hljs-built_in, .hljs-type { color: #4EC9B0; } .hljs-number, .hljs-class { color: #689E44; } .hljs-string, .hljs-meta-string { color: #D69D85; } .hljs-regexp, .hljs-template-tag { color: #9A5334; } .hljs-subst, .hljs-function, .hljs-title, .hljs-params, .hljs-formula { color: #808080; } .hljs-comment, .hljs-quote { color: #57A64A; font-style: italic; } .hljs-doctag { color: #608B4E; } .hljs-meta, .hljs-meta-keyword, .hljs-tag { color: #9B9B9B; } .hljs-variable, .hljs-template-variable { color: #BD63C5; } .hljs-attr, .hljs-attribute, .hljs-builtin-name { color: #9CDCFE; } .hljs-section { color: gold; } .hljs-emphasis { font-style: italic; } .hljs-strong { font-weight: bold; } /*.hljs-code { font-family:'Monospace'; }*/ .hljs-bullet, .hljs-selector-tag, .hljs-selector-id, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo { color: #D7BA7D; } .hljs-addition { background-color: var(--code-add-bg-color); display: inline-block; } .hljs-deletion { background-color: var(--code-del-bg-color); display: inline-block; } /* hide mobile nav menu and its checkbox */ /* when it's not mobile */ .mobile-nav, #mobile-menu-toggle, #mobile-nav-link { display: none; } /* set line-height in /archives page */ .mobile-nav-menu { line-height: 1.8; } /* overlap other elements */ #mobile-nav-link { background: var(--main-bg-color); color: var(--main-font-color); border: 2px solid #999; border-radius: 5px; right: 0; margin-left: 5px; padding: 0.5em; position: absolute; } .mobile-nav-link-a { text-align: center; } #menu-button { font-size: 2em; } /* search bar */ .search-container { border-radius: 5px; width: 10em; background: var(--alt-bg-color); outline: 0; float: right; height: 1.8em; position: relative; margin: auto; } /* inline-block to position them in same line */ .search-box, .search-button{ display:inline-block; } /* hide the border and fill the height to parent's */ .search-box { border: 0; border-radius: 5px; height:1.8em; width: 85%; padding-left: 0.2em; box-sizing: border-box; } /* * Override sanitize/forms * to prevent conflict with * .search-box padding-left */ input { padding: 0; } /* highlight the text box when focused */ .search-box:focus { border: 1px solid var(--link-underline); } /* align the button to center */ .search-button { width: 10%; position: absolute; top: 45%; transform: translate(30%, -50%); } /* fill the svg with parent's font color */ svg { fill: currentColor; } /* don't underline specific tag */ .no-underline { border-bottom: none; } /* fill the search, permalink and share icons with link's color */ svg#search, svg#link, svg#share { fill: var(--link-underline); } /* use font color when hover */ svg#search:hover, svg#link:hover, svg#share:hover { fill: currentColor; } /* hide share button by default unhide (via JS) if Web Share API is supported */ .article-title a#btnshare { display: none; height: 1em; width: 1em; } .article-title a#btnshare img { display: block; margin: auto; margin-bottom: 0.5em; max-height: 30em; } .article .article-entry a.headerlink, .article-title a#btnshare { margin-left: 0.5em; } @media (max-width: 768px) { .article-title { font-size: 1.8rem; } /* hide desktop nav */ .main-nav { display: none; } /* display mobile nav */ .mobile-nav { display: flex; align-items: center; justify-content: space-between; /* reduce height of mobile header */ height: 1.5em; } /* display links when menu button is clicked */ /* use grid to display each link in new line */ #mobile-menu-toggle:checked + #mobile-nav-link { display: grid; } } @media (max-width: 468px) { .archive-container .archive-footer, .archive-container .post-footer { padding: 1em; } .archive-container .archive-article-header > a, .archive-container .archive-article-header > h1 { width: 100%; } } @media (max-width: 320px) { .article { font-size: 1em; } .archive-container .archive-footer, .archive-container .post-footer { padding: 1em; } .footer, .footer-content { font-size: 0.9em; } } .copy-button { border: 1px solid #999; border-radius: 5px; cursor: pointer; font-size: 0.8em; line-height: 1em; margin-top: 1em; padding: 5px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .copy-button:hover { background: var(--main-font-color); color: var(--main-bg-color); } @media (prefers-color-scheme: dark) { :root { --main-bg-color: black; --main-font-color: #e6e6e6; --alt-bg-color: #333; --code-add-bg-color: #144212; --code-del-bg-color: #600; } } @media (prefers-color-scheme: light) { :root { --main-bg-color: #f1f1f1; --main-font-color: #333; --alt-bg-color: #d8d8d8; --code-add-bg-color: #e6ffec; --code-del-bg-color: #ffebe9; } /* * Visual Studio-like style based on original C# coloring * Author: Jason Diamond * https://github.com/highlightjs/highlight.js/blob/master/src/styles/vs.css */ .hljs { display: block; overflow-x: auto; /* padding: 0.5em; background: white; color: black; */ } .hljs-comment, .hljs-quote, .hljs-variable { color: #008000; } .hljs-keyword, .hljs-selector-tag, .hljs-built_in, .hljs-name, .hljs-tag { color: #00f; } .hljs-string, .hljs-title, .hljs-section, .hljs-attribute, .hljs-literal, .hljs-template-tag, .hljs-template-variable, .hljs-type { color: #a31515; } .hljs-selector-attr, .hljs-selector-pseudo, .hljs-meta { color: #2b91af; } .hljs-doctag { color: #808080; } .hljs-attr { color: #f00; } .hljs-symbol, .hljs-bullet, .hljs-link { color: #00b0e8; } .hljs-emphasis { font-style: italic; } .hljs-strong { font-weight: bold; } }