/*!* Hugo Theme Stack * * @author: Jimmy Cai * @website: https://jimmycai.com * @link: https://github.com/CaiJimmy/hugo-theme-stack*/ :root { --main-top-padding: 35px; --body-background: #f5f5fa; --accent-color: #34495e; --accent-color-darker: #2c3e50; --accent-color-text: #fff; --body-text-color: #707070; --tag-border-radius: 4px; --section-separation: 40px; --scrollbar-thumb: hsl(0, 0%, 85%); --scrollbar-track: var(--body-background) } @media(min-width:1280px) { :root { --main-top-padding: 50px } } :root[data-scheme=dark] { --body-background: #303030; --accent-color: #ecf0f1; --accent-color-darker: #bdc3c7; --accent-color-text: #000; --body-text-color: rgba(255, 255, 255, 0.7); --scrollbar-thumb: hsl(0, 0%, 40%); --scrollbar-track: var(--body-background) } :root { --sys-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Droid Sans", "Helvetica Neue"; --zh-font-family: "LXGWWenKai", "LXGW WenKai Screen", "PingFang SC", "Hiragino Sans GB", "Droid Sans Fallback", "Microsoft YaHei"; --base-font-family: "Lato", var(--sys-font-family), var(--zh-font-family), sans-serif; --code-font-family: Menlo, Monaco, Consolas,"LXGWWenKaiMono", "Courier New", var(--zh-font-family), monospace } :root { --card-background: #fff; --card-background-selected: #eaeaea; --card-text-color-main: #000; --card-text-color-secondary: #747474; --card-text-color-tertiary: #767676; --card-separator-color: rgba(218, 218, 218, 0.5); --card-border-radius: 10px; --card-padding: 20px; --small-card-padding: 25px 20px } @media(min-width:768px) { :root { --card-padding: 25px } } @media(min-width:1280px) { :root { --card-padding: 30px } } @media(min-width:768px) { :root { --small-card-padding: 25px } } :root[data-scheme=dark] { --card-background: #424242; --card-background-selected: rgba(255, 255, 255, 0.16); --card-text-color-main: rgba(255, 255, 255, 0.9); --card-text-color-secondary: rgba(255, 255, 255, 0.7); --card-text-color-tertiary: rgba(255, 255, 255, 0.5); --card-separator-color: rgba(255, 255, 255, 0.12) } :root { --article-font-family: var(--base-font-family); --article-font-size: 1.6rem; --article-line-height: 1.85 } @media(min-width:768px) { :root { --article-font-size: 1.7rem } } :root { --blockquote-border-size: 4px; --blockquote-background-color: rgb(248 248 248); --heading-border-size: 4px; --link-background-color: 189, 195, 199; --link-background-opacity: 0.5; --link-background-opacity-hover: 0.7; --pre-background-color: #272822; --pre-text-color: #f8f8f2; --code-background-color: rgba(0, 0, 0, 0.12); --code-text-color: #808080; --table-border-color: #dadada; --tr-even-background-color: #efefee; --kbd-border-color: #dadada } :root[data-scheme=dark] { --code-background-color: #272822; --code-text-color: rgba(255, 255, 255, 0.9); --table-border-color: #717171; --tr-even-background-color: #545454; --blockquote-background-color: rgb(75 75 75) } :root { --shadow-l1: 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 2px rgba(0, 0, 0, 0.06), 0px 0px 1px rgba(0, 0, 0, 0.04); --shadow-l2: 0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04); --shadow-l3: 0px 10px 20px rgba(0, 0, 0, 0.04), 0px 2px 6px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04); --shadow-l4: 0px 24px 32px rgba(0, 0, 0, 0.04), 0px 16px 24px rgba(0, 0, 0, 0.04), 0px 4px 8px rgba(0, 0, 0, 0.04), 0px 0px 1px rgba(0, 0, 0, 0.04) } [data-scheme=light] { --pre-text-color: #272822; --pre-background-color: #fafafa } [data-scheme=light] .chroma { color: #272822; background-color: #fafafa } [data-scheme=light] .chroma .err { color: #960050 } [data-scheme=light] .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0 } [data-scheme=light] .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: 100%; display: block } [data-scheme=light] .chroma .lntable>tbody { display: block; width: 100% } [data-scheme=light] .chroma .lntable>tbody>tr { display: flex; width: 100% } [data-scheme=light] .chroma .lntable>tbody>tr>td:last-child { overflow-x: auto } [data-scheme=light] .chroma .hl { display: block; width: 100%; background-color: #ffc } [data-scheme=light] .chroma .lnt { margin-right: .4em; padding: 0 .4em; color: #7f7f7f; display: block } [data-scheme=light] .chroma .ln { margin-right: .4em; padding: 0 .4em; color: #7f7f7f } [data-scheme=light] .chroma .k { color: #00a8c8 } [data-scheme=light] .chroma .kc { color: #00a8c8 } [data-scheme=light] .chroma .kd { color: #00a8c8 } [data-scheme=light] .chroma .kn { color: #f92672 } [data-scheme=light] .chroma .kp { color: #00a8c8 } [data-scheme=light] .chroma .kr { color: #00a8c8 } [data-scheme=light] .chroma .kt { color: #00a8c8 } [data-scheme=light] .chroma .n { color: #111 } [data-scheme=light] .chroma .na { color: #75af00 } [data-scheme=light] .chroma .nb { color: #111 } [data-scheme=light] .chroma .bp { color: #111 } [data-scheme=light] .chroma .nc { color: #75af00 } [data-scheme=light] .chroma .no { color: #00a8c8 } [data-scheme=light] .chroma .nd { color: #75af00 } [data-scheme=light] .chroma .ni { color: #111 } [data-scheme=light] .chroma .ne { color: #75af00 } [data-scheme=light] .chroma .nf { color: #75af00 } [data-scheme=light] .chroma .fm { color: #111 } [data-scheme=light] .chroma .nl { color: #111 } [data-scheme=light] .chroma .nn { color: #111 } [data-scheme=light] .chroma .nx { color: #75af00 } [data-scheme=light] .chroma .py { color: #111 } [data-scheme=light] .chroma .nt { color: #f92672 } [data-scheme=light] .chroma .nv { color: #111 } [data-scheme=light] .chroma .vc { color: #111 } [data-scheme=light] .chroma .vg { color: #111 } [data-scheme=light] .chroma .vi { color: #111 } [data-scheme=light] .chroma .vm { color: #111 } [data-scheme=light] .chroma .l { color: #ae81ff } [data-scheme=light] .chroma .ld { color: #d88200 } [data-scheme=light] .chroma .s { color: #d88200 } [data-scheme=light] .chroma .sa { color: #d88200 } [data-scheme=light] .chroma .sb { color: #d88200 } [data-scheme=light] .chroma .sc { color: #d88200 } [data-scheme=light] .chroma .dl { color: #d88200 } [data-scheme=light] .chroma .sd { color: #d88200 } [data-scheme=light] .chroma .s2 { color: #d88200 } [data-scheme=light] .chroma .se { color: #ae81ff } [data-scheme=light] .chroma .sh { color: #d88200 } [data-scheme=light] .chroma .si { color: #d88200 } [data-scheme=light] .chroma .sx { color: #d88200 } [data-scheme=light] .chroma .sr { color: #d88200 } [data-scheme=light] .chroma .s1 { color: #d88200 } [data-scheme=light] .chroma .ss { color: #d88200 } [data-scheme=light] .chroma .m { color: #ae81ff } [data-scheme=light] .chroma .mb { color: #ae81ff } [data-scheme=light] .chroma .mf { color: #ae81ff } [data-scheme=light] .chroma .mh { color: #ae81ff } [data-scheme=light] .chroma .mi { color: #ae81ff } [data-scheme=light] .chroma .il { color: #ae81ff } [data-scheme=light] .chroma .mo { color: #ae81ff } [data-scheme=light] .chroma .o { color: #f92672 } [data-scheme=light] .chroma .ow { color: #f92672 } [data-scheme=light] .chroma .p { color: #111 } [data-scheme=light] .chroma .c { color: #75715e } [data-scheme=light] .chroma .ch { color: #75715e } [data-scheme=light] .chroma .cm { color: #75715e } [data-scheme=light] .chroma .c1 { color: #75715e } [data-scheme=light] .chroma .cs { color: #75715e } [data-scheme=light] .chroma .cp { color: #75715e } [data-scheme=light] .chroma .cpf { color: #75715e } [data-scheme=light] .chroma .gd { color: #f92672 } [data-scheme=light] .chroma .ge { font-style: italic } [data-scheme=light] .chroma .gi { color: #75af00 } [data-scheme=light] .chroma .gs { font-weight: 700 } [data-scheme=light] .chroma .gu { color: #75715e } [data-scheme=dark] { --pre-text-color: #f8f8f2; --pre-background-color: #272822 } [data-scheme=dark] .chroma { color: #f8f8f2; background-color: #272822 } [data-scheme=dark] .chroma .err { color: #bb0064 } [data-scheme=dark] .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0 } [data-scheme=dark] .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: 100%; display: block } [data-scheme=dark] .chroma .lntable>tbody { display: block; width: 100% } [data-scheme=dark] .chroma .lntable>tbody>tr { display: flex; width: 100% } [data-scheme=dark] .chroma .lntable>tbody>tr>td:last-child { overflow-x: auto } [data-scheme=dark] .chroma .hl { display: block; width: 100%; background-color: #ffc } [data-scheme=dark] .chroma .lnt { margin-right: .4em; padding: 0 .4em; color: #7f7f7f; display: block } [data-scheme=dark] .chroma .ln { margin-right: .4em; padding: 0 .4em; color: #7f7f7f } [data-scheme=dark] .chroma .k { color: #66d9ef } [data-scheme=dark] .chroma .kc { color: #66d9ef } [data-scheme=dark] .chroma .kd { color: #66d9ef } [data-scheme=dark] .chroma .kn { color: #f92672 } [data-scheme=dark] .chroma .kp { color: #66d9ef } [data-scheme=dark] .chroma .kr { color: #66d9ef } [data-scheme=dark] .chroma .kt { color: #66d9ef } [data-scheme=dark] .chroma .n { color: #f8f8f2 } [data-scheme=dark] .chroma .na { color: #a6e22e } [data-scheme=dark] .chroma .nb { color: #f8f8f2 } [data-scheme=dark] .chroma .bp { color: #f8f8f2 } [data-scheme=dark] .chroma .nc { color: #a6e22e } [data-scheme=dark] .chroma .no { color: #66d9ef } [data-scheme=dark] .chroma .nd { color: #a6e22e } [data-scheme=dark] .chroma .ni { color: #f8f8f2 } [data-scheme=dark] .chroma .ne { color: #a6e22e } [data-scheme=dark] .chroma .nf { color: #a6e22e } [data-scheme=dark] .chroma .fm { color: #f8f8f2 } [data-scheme=dark] .chroma .nl { color: #f8f8f2 } [data-scheme=dark] .chroma .nn { color: #f8f8f2 } [data-scheme=dark] .chroma .nx { color: #a6e22e } [data-scheme=dark] .chroma .py { color: #f8f8f2 } [data-scheme=dark] .chroma .nt { color: #f92672 } [data-scheme=dark] .chroma .nv { color: #f8f8f2 } [data-scheme=dark] .chroma .vc { color: #f8f8f2 } [data-scheme=dark] .chroma .vg { color: #f8f8f2 } [data-scheme=dark] .chroma .vi { color: #f8f8f2 } [data-scheme=dark] .chroma .vm { color: #f8f8f2 } [data-scheme=dark] .chroma .l { color: #ae81ff } [data-scheme=dark] .chroma .ld { color: #e6db74 } [data-scheme=dark] .chroma .s { color: #e6db74 } [data-scheme=dark] .chroma .sa { color: #e6db74 } [data-scheme=dark] .chroma .sb { color: #e6db74 } [data-scheme=dark] .chroma .sc { color: #e6db74 } [data-scheme=dark] .chroma .dl { color: #e6db74 } [data-scheme=dark] .chroma .sd { color: #e6db74 } [data-scheme=dark] .chroma .s2 { color: #e6db74 } [data-scheme=dark] .chroma .se { color: #ae81ff } [data-scheme=dark] .chroma .sh { color: #e6db74 } [data-scheme=dark] .chroma .si { color: #e6db74 } [data-scheme=dark] .chroma .sx { color: #e6db74 } [data-scheme=dark] .chroma .sr { color: #e6db74 } [data-scheme=dark] .chroma .s1 { color: #e6db74 } [data-scheme=dark] .chroma .ss { color: #e6db74 } [data-scheme=dark] .chroma .m { color: #ae81ff } [data-scheme=dark] .chroma .mb { color: #ae81ff } [data-scheme=dark] .chroma .mf { color: #ae81ff } [data-scheme=dark] .chroma .mh { color: #ae81ff } [data-scheme=dark] .chroma .mi { color: #ae81ff } [data-scheme=dark] .chroma .il { color: #ae81ff } [data-scheme=dark] .chroma .mo { color: #ae81ff } [data-scheme=dark] .chroma .o { color: #f92672 } [data-scheme=dark] .chroma .ow { color: #f92672 } [data-scheme=dark] .chroma .p { color: #f8f8f2 } [data-scheme=dark] .chroma .c { color: #75715e } [data-scheme=dark] .chroma .ch { color: #75715e } [data-scheme=dark] .chroma .cm { color: #75715e } [data-scheme=dark] .chroma .c1 { color: #75715e } [data-scheme=dark] .chroma .cs { color: #75715e } [data-scheme=dark] .chroma .cp { color: #75715e } [data-scheme=dark] .chroma .cpf { color: #75715e } [data-scheme=dark] .chroma .gd { color: #f92672 } [data-scheme=dark] .chroma .ge { font-style: italic } [data-scheme=dark] .chroma .gi { color: #a6e22e } [data-scheme=dark] .chroma .gs { font-weight: 700 } [data-scheme=dark] .chroma .gu { color: #75715e } :root { --menu-icon-separation: 40px; --container-padding: 15px; --widget-separation: var(--section-separation) } .container { margin-left: auto; margin-right: auto } .container .left-sidebar { order: -3; max-width: var(--left-sidebar-max-width) } .container .right-sidebar { order: -1; max-width: var(--right-sidebar-max-width) } @media(min-width:1024px) { .container .right-sidebar { display: flex } } @media(min-width:768px) { .container.extended { max-width: 1024px; --left-sidebar-max-width: 25%; --right-sidebar-max-width: 30% } } @media(min-width:1024px) { .container.extended { max-width: 1280px; --left-sidebar-max-width: 20%; --right-sidebar-max-width: 30% } } @media(min-width:1280px) { .container.extended { max-width: 1536px; --left-sidebar-max-width: 15%; --right-sidebar-max-width: 25% } } @media(min-width:768px) { .container.compact { --left-sidebar-max-width: 25%; max-width: 768px } } @media(min-width:1024px) { .container.compact { max-width: 1024px; --left-sidebar-max-width: 20% } } @media(min-width:1280px) { .container.compact { max-width: 1280px } } .flex { display: flex; flex-direction: row } .flex.column { flex-direction: column } .flex.on-phone--column { flex-direction: column } @media(min-width:768px) { .flex.on-phone--column { flex-direction: unset } } .flex .full-width { width: 100% } main.main { order: -2; min-width: 0; max-width: 100%; flex-grow: 1; display: flex; flex-direction: column; gap: var(--section-separation) } @media(min-width:768px) { main.main { padding-top: var(--main-top-padding) } } .main-container { min-height: 100vh; align-items: flex-start; padding: 0 15px; gap: var(--section-separation); padding-top: var(--main-top-padding) } @media(min-width:768px) { .main-container { padding: 0 20px } } /*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/ html { line-height: 1.15; -webkit-text-size-adjust: 100% } body { margin: 0 } main { display: block } h1 { font-size: 2em; margin: .67em 0 } hr { box-sizing: content-box; height: 0; overflow: visible } pre { font-family: monospace, monospace; font-size: 1em } a { background-color: transparent } abbr[title] { border-bottom: none; text-decoration: underline; text-decoration: underline dotted } b, strong { font-weight: bolder } code, kbd, samp { font-family: monospace, monospace; font-size: 1em } small { font-size: 80% } sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline } sub { bottom: -.25em } sup { top: -.5em } img { border-style: none } button, input, optgroup, select, textarea { font-family: inherit; font-size: 100%; line-height: 1.15; margin: 0 } button, input { overflow: visible } button, select { text-transform: none } button, [type=button], [type=reset], [type=submit] { -webkit-appearance: button } button::-moz-focus-inner, [type=button]::-moz-focus-inner, [type=reset]::-moz-focus-inner, [type=submit]::-moz-focus-inner { border-style: none; padding: 0 } button:-moz-focusring, [type=button]:-moz-focusring, [type=reset]:-moz-focusring, [type=submit]:-moz-focusring { outline: 1px dotted ButtonText } fieldset { padding: .35em .75em .625em } legend { box-sizing: border-box; color: inherit; display: table; max-width: 100%; padding: 0; white-space: normal } progress { vertical-align: baseline } textarea { overflow: auto } [type=checkbox], [type=radio] { box-sizing: border-box; padding: 0 } [type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button { height: auto } [type=search] { -webkit-appearance: textfield; outline-offset: -2px } [type=search]::-webkit-search-decoration { -webkit-appearance: none } ::-webkit-file-upload-button { -webkit-appearance: button; font: inherit } details { display: block } summary { display: list-item } template { display: none } [hidden] { display: none } /*!* Hamburgers * @description Tasty CSS-animated hamburgers * @author Jonathan Suh @jonsuh * @site https://jonsuh.com/hamburgers * @link https://github.com/jonsuh/hamburgers*/ .hamburger { padding-top: 10px; display: inline-block; cursor: pointer; transition-property: opacity, filter; transition-duration: .15s; transition-timing-function: linear; font: inherit; color: inherit; text-transform: none; background-color: transparent; border: 0; margin: 0; overflow: visible } .hamburger:hover { opacity: .7 } .hamburger.is-active:hover { opacity: .7 } .hamburger.is-active .hamburger-inner, .hamburger.is-active .hamburger-inner::before, .hamburger.is-active .hamburger-inner::after { background-color: #000 } .hamburger-box { width: 30px; height: 24px; display: inline-block; position: relative } .hamburger-inner { display: block; top: 50%; margin-top: -2px } .hamburger-inner, .hamburger-inner::before, .hamburger-inner::after { width: 30px; height: 2px; background-color: var(--card-text-color-main); border-radius: 4px; position: absolute; transition-property: transform; transition-duration: .15s; transition-timing-function: ease } .hamburger-inner::before, .hamburger-inner::after { content: ""; display: block } .hamburger-inner::before { top: -10px } .hamburger-inner::after { bottom: -10px } .hamburger--spin .hamburger-inner { transition-duration: .22s; transition-timing-function: cubic-bezier(.55, .055, .675, .19) } .hamburger--spin .hamburger-inner::before { transition: top .1s .25s ease-in, opacity .1s ease-in } .hamburger--spin .hamburger-inner::after { transition: bottom .1s .25s ease-in, transform .22s cubic-bezier(.55, .055, .675, .19) } .hamburger--spin.is-active .hamburger-inner { transform: rotate(225deg); transition-delay: .12s; transition-timing-function: cubic-bezier(.215, .61, .355, 1) } .hamburger--spin.is-active .hamburger-inner::before { top: 0; opacity: 0; transition: top .1s ease-out, opacity .1s .12s ease-out } .hamburger--spin.is-active .hamburger-inner::after { bottom: 0; transform: rotate(-90deg); transition: bottom .1s ease-out, transform .22s .12s cubic-bezier(.215, .61, .355, 1) } #toggle-menu { background: 0 0; border: none; position: absolute; right: 0; top: 0; z-index: 2; cursor: pointer; outline: none } [dir=rtl] #toggle-menu { left: 0; right: auto } @media(min-width:768px) { #toggle-menu { display: none } } #toggle-menu.is-active .hamburger-inner, #toggle-menu.is-active .hamburger-inner::before, #toggle-menu.is-active .hamburger-inner::after { background-color: var(--accent-color) } #main-menu { list-style: none; overflow-y: auto; flex-grow: 1; font-size: 1.4rem; background-color: var(--card-background); box-shadow: var(--shadow-l1); display: none; margin: 0 calc(var(--container-padding) * -1); padding: 30px } @media(min-width:1280px) { #main-menu { padding: 15px 0 } } #main-menu, #main-menu .menu-bottom-section ol { flex-direction: column; gap: 30px } @media(min-width:1280px) { #main-menu, #main-menu .menu-bottom-section ol { gap: 25px } } #main-menu.show { display: flex } @media(min-width:768px) { #main-menu { align-items: flex-end; display: flex; background-color: transparent; padding: 0; box-shadow: none; margin: 0 } } #main-menu li { position: relative; vertical-align: middle; padding: 0 } @media(min-width:768px) { #main-menu li { width: 100% } } #main-menu li svg { stroke: currentColor; stroke-width: 1.33; width: 20px; height: 20px } #main-menu li a { height: 100%; display: inline-flex; align-items: center; color: var(--body-text-color); gap: var(--menu-icon-separation) } #main-menu li span { flex: 1 } #main-menu li.current a { color: var(--accent-color); font-weight: 700 } #main-menu li.menu-bottom-section { margin-top: auto } #main-menu li.menu-bottom-section ol { display: flex; padding-left: 0 } .menu-social { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: row; gap: 10px } .menu-social svg { width: 24px; height: 24px; stroke: var(--body-text-color); stroke-width: 1.33 } .article-list { display: flex; flex-direction: column; gap: var(--section-separation) } .article-list article { display: flex; flex-direction: column; background-color: var(--card-background); box-shadow: var(--shadow-l1); border-radius: var(--card-border-radius); overflow: hidden; transition: box-shadow .3s ease } .article-list article:hover { box-shadow: var(--shadow-l2) } .article-list article .article-image img { width: 100%; height: 150px; object-fit: cover } @media(min-width:768px) { .article-list article .article-image img { height: 200px } } @media(min-width:1280px) { .article-list article .article-image img { height: 250px } } .article-list article:nth-child(5n+1) .article-category a { background: #8ea885; color: #fff } .article-list article:nth-child(5n+2) .article-category a { background: #df7988; color: #fff } .article-list article:nth-child(5n+3) .article-category a { background: #0177b8; color: #fff } .article-list article:nth-child(5n+4) .article-category a { background: #ffb900; color: #fff } .article-list article:nth-child(5n+5) .article-category a { background: #6b69d6; color: #fff } .article-details { display: flex; flex-direction: column; justify-content: center; padding: var(--card-padding); gap: 15px } .article-title { font-family: var(--article-font-family); font-weight: 600; margin: 0; color: var(--card-text-color-main); font-size: 2.2rem } @media(min-width:1280px) { .article-title { font-size: 2.4rem } } .article-title a { color: var(--card-text-color-main) } .article-title a:hover { color: var(--card-text-color-main) } .article-subtitle { font-weight: 400; color: var(--card-text-color-secondary); line-height: 1.5; margin: 0; font-size: 1.75rem } @media(min-width:1280px) { .article-subtitle { font-size: 2rem } } .article-title-wrapper { display: flex; flex-direction: column; gap: 8px } .article-time, .article-translations { display: flex; color: var(--card-text-color-tertiary); gap: 15px } .article-time svg, .article-translations svg { vertical-align: middle; width: 20px; height: 20px; stroke-width: 1.33; flex-shrink: 0 } .article-time time, .article-time a, .article-translations time, .article-translations a { font-size: 1.4rem; color: var(--card-text-color-tertiary) } .article-time>div, .article-translations>div { display: inline-flex; align-items: center; gap: 15px } .article-time { flex-wrap: wrap } .article-translations>div { flex-wrap: wrap } .article-category, .article-tags { display: flex; gap: 10px } .article-category a, .article-tags a { color: var(--accent-color-text); background-color: var(--accent-color); padding: 8px 16px; border-radius: var(--tag-border-radius); display: inline-block; font-size: 1.4rem; transition: background-color .5s ease } .article-category a:hover, .article-tags a:hover { color: var(--accent-color-text); background-color: var(--accent-color-darker) } .article-list--compact { border-radius: var(--card-border-radius); box-shadow: var(--shadow-l1); background-color: var(--card-background); --image-size: 50px } @media(min-width:768px) { .article-list--compact { --image-size: 60px } } .article-list--compact article>a { display: flex; align-items: center; padding: var(--small-card-padding); gap: 15px } .article-list--compact article:not(:last-of-type) { border-bottom: 1.5px solid var(--card-separator-color) } .article-list--compact article .article-details { flex-grow: 1; padding: 0; min-height: var(--image-size); gap: 10px } .article-list--compact article .article-title { margin: 0; font-size: 1.6rem } @media(min-width:768px) { .article-list--compact article .article-title { font-size: 1.8rem } } .article-list--compact article .article-image img { width: var(--image-size); height: var(--image-size); object-fit: cover } .article-list--compact article .article-time { font-size: 1.4rem } .article-list--compact article .article-preview { font-size: 1.4rem; color: var(--card-text-color-tertiary); margin-top: 10px; line-height: 1.5 } .article-list--tile article { border-radius: var(--card-border-radius); overflow: hidden; position: relative; height: 350px; width: 250px; box-shadow: var(--shadow-l1); transition: box-shadow .3s ease; background-color: var(--card-background) } .article-list--tile article:hover { box-shadow: var(--shadow-l2) } .article-list--tile article.has-image .article-details { background-color: rgba(0, 0, 0, .25) } .article-list--tile article.has-image .article-title { color: #fff } .article-list--tile article .article-image { position: absolute; top: 0; left: 0; width: 100%; height: 100% } .article-list--tile article .article-image img { width: 100%; height: 100%; object-fit: cover } .article-list--tile article .article-details { border-radius: var(--card-border-radius); position: relative; height: 100%; width: 100%; display: flex; flex-direction: column; justify-content: flex-end; z-index: 2; padding: 15px } @media(min-width:640px) { .article-list--tile article .article-details { padding: 20px } } .article-list--tile article .article-title { font-size: 2rem; font-weight: 500; color: var(--card-text-color-main) } @media(min-width:640px) { .article-list--tile article .article-title { font-size: 2.2rem } } .widget { display: flex; flex-direction: column } .widget .widget-icon svg { width: 32px; height: 32px; stroke-width: 1.6; color: var(--body-text-color) } .tagCloud .tagCloud-tags { display: flex; flex-wrap: wrap; gap: 10px } .tagCloud .tagCloud-tags a { background: var(--card-background); box-shadow: var(--shadow-l1); border-radius: var(--tag-border-radius); padding: 8px 20px; color: var(--card-text-color-main); font-size: 1.4rem; transition: box-shadow .3s ease } .tagCloud .tagCloud-tags a:hover { box-shadow: var(--shadow-l2) } .widget.archives .widget-archive--list { border-radius: var(--card-border-radius); box-shadow: var(--shadow-l1); background-color: var(--card-background) } .widget.archives .archives-year:not(:last-of-type) { border-bottom: 1.5px solid var(--card-separator-color) } .widget.archives .archives-year a { font-size: 1.4rem; padding: 18px 25px; display: flex } .widget.archives .archives-year a span.year { flex: 1; color: var(--card-text-color-main); font-weight: 700 } .widget.archives .archives-year a span.count { color: var(--card-text-color-tertiary) } footer.site-footer { padding: 20px 0 var(--section-separation); font-size: 1.4rem; line-height: 1.75 } footer.site-footer:before { content: ""; display: block; height: 3px; width: 50px; background: var(--body-text-color); margin-bottom: 20px } footer.site-footer .copyright { color: var(--accent-color); font-weight: 700; margin-bottom: 5px } footer.site-footer .powerby { color: var(--body-text-color); font-weight: 400; font-size: 1.2rem } footer.site-footer .powerby a { color: var(--body-text-color) } .pagination { display: flex; background-color: var(--card-background); box-shadow: var(--shadow-l1); border-radius: var(--card-border-radius); overflow: hidden; flex-wrap: wrap } .pagination .page-link { padding: 16px 32px; display: inline-flex; color: var(--card-text-color-secondary) } .pagination .page-link.current { font-weight: 700; background-color: var(--card-background-selected); color: var(--card-text-color-main) } .hidden { display: none !important; } section nav a { padding: 16px 32px; display: inline-flex; color: var(--card-text-color-secondary) } @media(min-width:768px) { .sidebar.sticky { position: sticky } } .left-sidebar { display: flex; flex-direction: column; flex-shrink: 0; align-self: stretch; gap: var(--sidebar-element-separation); max-width: none; width: 100%; position: relative; --sidebar-avatar-size: 100px; --sidebar-element-separation: 20px; --emoji-size: 40px; --emoji-font-size: 20px } @media(min-width:768px) { .left-sidebar { width: auto; padding-top: var(--main-top-padding); padding-bottom: var(--main-top-padding); max-height: 100vh } } @media(min-width:1536px) { .left-sidebar { --sidebar-avatar-size: 120px; --sidebar-element-separation: 25px; --emoji-size: 40px } } .left-sidebar.sticky { top: 0 } .left-sidebar.compact { --sidebar-avatar-size: 80px; --emoji-size: 30px; --emoji-font-size: 15px } @media(min-width:1024px) { .left-sidebar.compact header { flex-direction: row } } .left-sidebar.compact header .site-meta { gap: 5px } .left-sidebar.compact header .site-name { font-size: 1.4rem } @media(min-width:1536px) { .left-sidebar.compact header .site-name { font-size: 1.75rem } } .left-sidebar.compact header .site-description { font-size: 1.4rem } .right-sidebar { width: 100%; display: none; flex-direction: column; gap: var(--widget-separation) } .right-sidebar.sticky { top: 0 } @media(min-width:1024px) { .right-sidebar { padding-top: var(--main-top-padding); padding-bottom: var(--main-top-padding) } } .sidebar header { z-index: 1; transition: box-shadow .5s ease; display: flex; flex-direction: column; gap: var(--sidebar-element-separation) } @media(min-width:768px) { .sidebar header { padding: 0 } } .sidebar header .site-avatar { position: relative; margin: 0; width: var(--sidebar-avatar-size); height: var(--sidebar-avatar-size); flex-shrink: 0 } .sidebar header .site-avatar .site-logo { width: 100%; height: 100%; border-radius: 100%; box-shadow: var(--shadow-l1) } .sidebar header .site-avatar .emoji { position: absolute; width: var(--emoji-size); height: var(--emoji-size); line-height: var(--emoji-size); border-radius: 100%; bottom: 0; right: 0; text-align: center; font-size: var(--emoji-font-size); background-color: var(--card-background); box-shadow: var(--shadow-l2) } .sidebar header .site-meta { display: flex; flex-direction: column; gap: 10px; justify-content: center } .sidebar header .site-name { color: var(--accent-color); margin: 0; font-size: 1.6rem } @media(min-width:1536px) { .sidebar header .site-name { font-size: 1.8rem } } .sidebar header .site-description { color: var(--body-text-color); font-weight: 400; margin: 0; font-size: 1.4rem } @media(min-width:1536px) { .sidebar header .site-description { font-size: 1.6rem } } [data-scheme=dark] #dark-mode-toggle { color: var(--accent-color); font-weight: 700 } [data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-left { display: none } [data-scheme=dark] #dark-mode-toggle .icon-tabler-toggle-right { display: unset } #dark-mode-toggle { margin-top: auto; color: var(--body-text-color); display: flex; align-items: center; cursor: pointer; gap: var(--menu-icon-separation) } #dark-mode-toggle .icon-tabler-toggle-right { display: none } #i18n-switch { color: var(--body-text-color); display: inline-flex; align-content: center; gap: var(--menu-icon-separation) } #i18n-switch select { border: 0; background-color: transparent; color: var(--body-text-color) } #i18n-switch select option { color: var(--card-text-color-main); background-color: var(--card-background) } html { font-size: 62.5%; overflow-y: scroll } * { box-sizing: border-box } body { background: var(--body-background); margin: 0; font-family: var(--base-font-family); font-size: 1.6rem; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale } * { scrollbar-width: auto; scrollbar-color: var(--scrollbar-thumb)transparent } ::-webkit-scrollbar { height: auto } ::-webkit-scrollbar-thumb { background-color: var(--scrollbar-thumb) } ::-webkit-scrollbar-track { background-color: transparent } .article-page.hide-sidebar-sm .left-sidebar { display: none } @media(min-width:768px) { .article-page.hide-sidebar-sm .left-sidebar { display: inherit } } .article-page .main-article { background: var(--card-background); border-radius: var(--card-border-radius); box-shadow: var(--shadow-l1); overflow: hidden } .article-page .main-article .article-header .article-image img { height: auto; width: 100%; max-height: 50vh; object-fit: cover } .article-page .main-article .article-header .article-details { padding: var(--card-padding); padding-bottom: 0 } .article-page .main-article .article-content { margin: var(--card-padding)0; color: var(--card-text-color-main) } .article-page .main-article .article-content .footnotes { font-family: var(--base-font-family) } .article-page .main-article .article-content img { max-width: 100%; height: auto } .article-page .main-article .article-footer { margin: var(--card-padding); margin-top: 0 } .article-page .main-article .article-footer section:not(:first-child) { margin-top: var(--card-padding) } .article-page .main-article .article-footer section { color: var(--card-text-color-tertiary); text-transform: uppercase; display: flex; align-items: center; font-size: 1.4rem; gap: 15px } .article-page .main-article .article-footer section svg { width: 20px; height: 20px; stroke-width: 1.33 } .article-page .main-article .article-footer .article-tags { flex-wrap: wrap; text-transform: unset } .article-page .main-article .article-footer .article-copyright a, .article-page .main-article .article-footer .article-lastmod a { color: var(--body-text-color) } .article-page .main-article .article-footer .article-copyright a.link, .article-page .main-article .article-footer .article-lastmod a.link { box-shadow: unset } .widget--toc { background-color: var(--card-background); border-radius: var(--card-border-radius); box-shadow: var(--shadow-l1); display: flex; flex-direction: column; color: var(--card-text-color-main); overflow: hidden } .widget--toc ::-webkit-scrollbar-thumb { background-color: var(--card-separator-color) } .widget--toc #TableOfContents { overflow-x: auto; max-height: 75vh } .widget--toc #TableOfContents ol, .widget--toc #TableOfContents ul { margin: 0; padding: 0 } .widget--toc #TableOfContents ol { list-style-type: none; counter-reset: item } .widget--toc #TableOfContents ol li a:first-of-type::before { counter-increment: item; content: counters(item, ".")". "; font-weight: 700; margin-right: 5px } .widget--toc #TableOfContents>ul { padding: 0 1em } .widget--toc #TableOfContents li { margin: 15px 0 15px 20px; padding: 5px } .widget--toc #TableOfContents li>ol, .widget--toc #TableOfContents li>ul { margin-top: 10px; padding-left: 10px; margin-bottom: -5px } .widget--toc #TableOfContents li>ol>li:last-child, .widget--toc #TableOfContents li>ul>li:last-child { margin-bottom: 0 } .widget--toc #TableOfContents li.active-class>a { border-left: var(--heading-border-size)solid var(--accent-color); font-weight: 700 } .widget--toc #TableOfContents ul li.active-class>a { display: block } .widget--toc #TableOfContents>ul>li.active-class>a { margin-left: calc(-25px - 1em); padding-left: calc(25px + 1em - var(--heading-border-size)) } .widget--toc #TableOfContents>ol>li.active-class>a { margin-left: calc(-9px - 1em); padding-left: calc(9px + 1em - var(--heading-border-size)); display: block } .widget--toc #TableOfContents>ul>li>ul>li.active-class>a { margin-left: calc(-60px - 1em); padding-left: calc(60px + 1em - var(--heading-border-size)) } .widget--toc #TableOfContents>ol>li>ol>li.active-class>a { margin-left: calc(-44px - 1em); padding-left: calc(44px + 1em - var(--heading-border-size)); display: block } .widget--toc #TableOfContents>ul>li>ul>li>ul>li.active-class>a { margin-left: calc(-95px - 1em); padding-left: calc(95px + 1em - var(--heading-border-size)) } .widget--toc #TableOfContents>ol>li>ol>li>ol>li.active-class>a { margin-left: calc(-79px - 1em); padding-left: calc(79px + 1em - var(--heading-border-size)); display: block } .widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li.active-class>a { margin-left: calc(-130px - 1em); padding-left: calc(130px + 1em - var(--heading-border-size)) } .widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li.active-class>a { margin-left: calc(-114px - 1em); padding-left: calc(114px + 1em - var(--heading-border-size)); display: block } .widget--toc #TableOfContents>ul>li>ul>li>ul>li>ul>li>ul>li.active-class>a { margin-left: calc(-165px - 1em); padding-left: calc(165px + 1em - var(--heading-border-size)) } .widget--toc #TableOfContents>ol>li>ol>li>ol>li>ol>li>ol>li.active-class>a { margin-left: calc(-149px - 1em); padding-left: calc(149px + 1em - var(--heading-border-size)); display: block } .related-content { overflow-x: auto; padding-bottom: 15px } .related-content>.flex { float: left } .related-content article { margin-right: 15px; flex-shrink: 0; overflow: hidden; width: 250px; height: 150px } .related-content article .article-title { font-size: 1.8rem; margin: 0 } .related-content article.has-image .article-details { padding: 20px; background: linear-gradient(0deg, rgba(0, 0, 0, .25) 0%, rgba(0, 0, 0, .75) 100%) } .article-content { font-family: var(--article-font-family); font-size: var(--article-font-size); padding: 0 var(--card-padding); line-height: var(--article-line-height) } .article-content>p { margin: 1.5em 0 } .article-content h1, .article-content h2, .article-content h3, .article-content h4, .article-content h5, .article-content h6 { margin-inline-start: calc((var(--card-padding)) * -1); padding-inline-start: calc(var(--card-padding) - var(--heading-border-size)); border-inline-start: var(--heading-border-size)solid var(--accent-color); position: relative } .article-content h1 a.header-anchor, .article-content h2 a.header-anchor, .article-content h3 a.header-anchor, .article-content h4 a.header-anchor, .article-content h5 a.header-anchor, .article-content h6 a.header-anchor { transition: opacity .3s ease; opacity: 0; position: absolute; left: 0; width: var(--card-padding); text-align: center; color: var(--accent-color) } .article-content h1 a.header-anchor:before, .article-content h2 a.header-anchor:before, .article-content h3 a.header-anchor:before, .article-content h4 a.header-anchor:before, .article-content h5 a.header-anchor:before, .article-content h6 a.header-anchor:before { content: "#" } .article-content h1:hover a.header-anchor, .article-content h1:focus a.header-anchor, .article-content h2:hover a.header-anchor, .article-content h2:focus a.header-anchor, .article-content h3:hover a.header-anchor, .article-content h3:focus a.header-anchor, .article-content h4:hover a.header-anchor, .article-content h4:focus a.header-anchor, .article-content h5:hover a.header-anchor, .article-content h5:focus a.header-anchor, .article-content h6:hover a.header-anchor, .article-content h6:focus a.header-anchor { opacity: 1 } .article-content figure { text-align: center } .article-content figure figcaption { font-size: 1.4rem; color: var(--card-text-color-secondary) } .article-content blockquote { position: relative; margin: 1.5em 0; border-inline-start: var(--blockquote-border-size)solid var(--card-separator-color); padding: 15px calc(var(--card-padding) - var(--blockquote-border-size)); background-color: var(--blockquote-background-color) } .article-content blockquote .cite { display: block; text-align: right; font-size: .75em } .article-content blockquote .cite a { text-decoration: underline } .article-content hr { width: 100px; margin: 40px auto; background: var(--card-text-color-tertiary); height: 2px; border: 0; opacity: .55 } .article-content code { color: var(--code-text-color); background-color: var(--code-background-color); padding: 2px 4px; border-radius: var(--tag-border-radius); font-family: var(--code-font-family) } .article-content a, .article-content code { word-break: break-word } .article-content .gallery { position: relative; display: flex; flex-direction: row; justify-content: center; margin: 1.5em 0; gap: 10px } .article-content .gallery figure { margin: 0 } .article-content pre { overflow-x: auto; display: block; background-color: var(--pre-background-color); color: var(--pre-text-color); font-family: var(--code-font-family); line-height: 1.428571429; word-break: break-all; padding: var(--card-padding) } [dir=rtl] .article-content pre { direction: ltr } .article-content pre code { color: unset; border: none; background: 0 0; padding: 0 } .article-content .highlight { background-color: var(--pre-background-color); padding: var(--card-padding); position: relative } .article-content .highlight:hover .copyCodeButton { opacity: 1 } [dir=rtl] .article-content .highlight { direction: ltr } .article-content .highlight pre { margin: initial; padding: 0; margin: 0; width: auto } .article-content .copyCodeButton { position: absolute; top: calc(var(--card-padding)); right: calc(var(--card-padding)); background: var(--card-background); border: none; box-shadow: var(--shadow-l2); border-radius: var(--tag-border-radius); padding: 8px 16px; color: var(--card-text-color-main); cursor: pointer; font-size: 14px; opacity: 0; transition: opacity .3s ease } .article-content .table-wrapper { padding: 0 var(--card-padding); overflow-x: auto; display: block } .article-content table { width: 100%; border-collapse: collapse; border-spacing: 0; margin-bottom: 1.5em; font-size: .96em } .article-content th, .article-content td { text-align: left; padding: 4px 8px 4px 10px; border: 1px solid var(--table-border-color) } .article-content td { vertical-align: top } .article-content tr:nth-child(even) { background-color: var(--tr-even-background-color) } .article-content .twitter-tweet { color: var(--card-text-color-main) } .article-content .video-wrapper { position: relative; width: 100%; height: 0; padding-bottom: 56.25%; overflow: hidden } .article-content .video-wrapper>iframe, .article-content .video-wrapper>video { position: absolute; width: 100%; height: 100%; left: 0; top: 0; border: 0 } .article-content .gitlab-embed-snippets { margin: 0 !important } .article-content .gitlab-embed-snippets .file-holder.snippet-file-content { margin-block-end: 0 !important; margin-block-start: 0 !important; margin-left: calc((var(--card-padding)) * -1) !important; margin-right: calc((var(--card-padding)) * -1) !important; padding: 0 var(--card-padding) !important } .article-content blockquote, .article-content figure, .article-content .highlight, .article-content pre, .article-content .gallery, .article-content .video-wrapper, .article-content .table-wrapper, .article-content .s_video_simple { margin-left: calc((var(--card-padding)) * -1); margin-right: calc((var(--card-padding)) * -1); width: calc(100% + var(--card-padding) * 2) } .article-content .katex-display>.katex { overflow-x: auto; overflow-y: hidden } .article-content kbd { border: 1px solid var(--kbd-border-color); font-weight: 700; font-size: .9em; line-height: 1; padding: 2px 4px; border-radius: 4px; display: inline-block } .section-card { border-radius: var(--card-border-radius); background-color: var(--card-background); padding: var(--small-card-padding); box-shadow: var(--shadow-l1); display: flex; align-items: center; gap: 20px; --separation: 15px } .section-card .section-term { font-size: 2.2rem; margin: 0; color: var(--card-text-color-main) } .section-card .section-description { font-weight: 400; color: var(--card-text-color-secondary); font-size: 1.6rem; margin: 0 } .section-card .section-details { flex-grow: 1; display: flex; flex-direction: column; gap: 8px } .section-card .section-image img { width: 60px; height: 60px } .section-card .section-count { color: var(--card-text-color-tertiary); font-size: 1.4rem; margin: 0; font-weight: 700; text-transform: uppercase } .subsection-list { overflow-x: auto } .subsection-list .article-list--tile { display: flex; padding-bottom: 15px } .subsection-list .article-list--tile article { width: 250px; height: 150px; margin-right: 20px; flex-shrink: 0 } .subsection-list .article-list--tile article .article-title { margin: 0; font-size: 1.8rem } .subsection-list .article-list--tile article .article-details { padding: 20px } .not-found-card { background-color: var(--card-background); box-shadow: var(--shadow-l1); border-radius: var(--card-border-radius); padding: var(--card-padding) } .search-form { position: relative; --button-size: 80px } .search-form.widget { --button-size: 60px } .search-form.widget label { font-size: 1.3rem; top: 10px } .search-form.widget input { font-size: 1.5rem; padding: 30px 20px 15px } .search-form p { position: relative; margin: 0 } .search-form label { position: absolute; top: 15px; inset-inline-start: 20px; font-size: 1.4rem; color: var(--card-text-color-tertiary) } .search-form input { padding: 40px 20px 20px; border-radius: var(--card-border-radius); background-color: var(--card-background); box-shadow: var(--shadow-l1); color: var(--card-text-color-main); width: 100%; border: 0; -webkit-appearance: none; transition: box-shadow .3s ease; font-size: 1.8rem } .search-form input:focus { outline: 0; box-shadow: var(--shadow-l2) } .search-form button { position: absolute; inset-inline-end: 0; top: 0; height: 100%; width: var(--button-size); cursor: pointer; background-color: transparent; border: 0; padding: 0 10px } .search-form button:focus { outline: 0 } .search-form button:focus svg { stroke-width: 2; color: var(--accent-color) } .search-form button svg { color: var(--card-text-color-secondary); stroke-width: 1.33; transition: all .3s ease; width: 20px; height: 20px } a { text-decoration: none; color: var(--accent-color) } a:hover { color: var(--accent-color-darker) } a.link { box-shadow: 0 -2px rgba(var(--link-background-color), var(--link-background-opacity))inset; transition: all .3s ease } a.link:hover { box-shadow: 0 calc(-1rem * var(--article-line-height))rgba(var(--link-background-color), var(--link-background-opacity-hover))inset } .section-title { text-transform: uppercase; margin-top: 0; margin-bottom: 10px; display: block; font-size: 1.6rem; font-weight: 700; color: var(--body-text-color) } .section-title a { color: var(--body-text-color) }