/*!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}*,*::before,*::after{box-sizing:border-box}@font-face{font-family:inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/InterVariable.woff2)format("woff2")}:root{--color-mode:light;--heading-color:#de5b34;--heading-hover-color:#e26e4b;--h1-color:#343a40;--font-color:#495057;--dark-font-color:#1b1d25;--medium-font-color:#60656c;--light-font-color:#858b93;--background:white;--light-background:#f1f4f8;--light-background-hover:#e6eaf0;--code-background-color:#2e2e30;--border:#e6e7eb;--link-border:#ed805e;--link-border-dark:#ffb199;--link-color:#5183f5;--link-color-darker:#364fc7;--navbar-color:rgba(255, 255, 255, 0.7);--navber-border-color:rgba(232, 232, 237, 0.7);--blockquote:#f9f9f9;--blockquote-left:#e3e6eb;--transparent-text:rgba(0, 0, 0, 0.7);--transparent-bg:rgba(0, 0, 0, 0.05);--light-transparent-bg:rgba(255, 255, 255, 0.1);--img-links-opacity:0.6;--img-links-filter:none;--topbtn-font:#b6b6b6;--topbtn-font-hover:var(--heading-hover-color);--light-topbtn:#f9f9f9;--dark-topbtn:#989898;--topbtn-border:#ababab;--topbtn-shadow:#dfdddd}:root{--zh-font-family: ;--sys-font-family:"Inter", system-ui, sans-serif;--base-font-family:var(--zh-font-family)var(--sys-font-family);--code-font-family:monospace, system-ui, sans-serif;--article-font-family:var(--base-font-family)}.flex{display:flex;align-items:center}.flex-row{display:flex;flex-direction:column}@media screen and (min-width:687px){.flex-row{flex-direction:row}}.flex-col{flex:1}.flex-two-thirds{flex:2}.justify-center{justify-content:center}html{font-family:var(--base-font-family);color:var(--font-color);font-weight:400;font-size:1rem;line-height:1.75;scroll-behavior:smooth;height:100%}body{background:var(--background);margin:0;padding:0;min-height:100%;display:flex;flex-direction:column}section{margin:2rem 0}section:first-of-type{margin-top:0}section>h2{display:flex;align-items:center;font-size:1.6rem;margin-top:0;margin-bottom:.5rem}@media screen and (min-width:687px){section>h2{margin-bottom:2rem}}.index h2,section>h2{border-bottom-width:0}@media screen and (min-width:687px){.index h2,section>h2{border-bottom-width:4px}}a.section-button{font-weight:500;background:var(--light-background);color:var(--dark-font-color);padding:.4rem .6rem;font-size:.85rem;border-radius:.3rem;border-width:0!important;white-space:nowrap;margin-left:2rem}a.section-button:hover{background:var(--light-background-hover);color:var(--heading-color)}@media screen and (min-width:687px){section{margin:3.5rem 0}section>h2{font-size:2rem;margin:0 0 1rem}}.container-narrow,.container,.container-wide,.container-full{padding:0 1.5rem;margin-left:auto;margin-right:auto}.container-narrow{max-width:687px}.container{max-width:821px}.container.page p{max-width:600px}.container-wide{max-width:1024px}.container-full{max-width:100%}@media screen and (min-width:687px){.container{padding:0 2rem}}img{display:inline-block;max-width:100%;height:auto;text-align:center}p,ol,ul,dl,table,blockquote{font-size:1.05rem;margin:0 0 1.5rem}blockquote p{margin:.75rem 0}ul{padding:0 1rem}ul li:not(:last-child){margin-bottom:.5rem}ul li p:not(:last-child){margin-bottom:1rem}ul li p{margin:0 0 1rem}ul li ul{padding-left:1rem;margin:0}ul li ul li{margin:0}ol li:not(:last-child){margin-bottom:.5rem}ol li ol{margin-bottom:0}.task-list-item [type=checkbox]{margin-right:.5rem}blockquote{margin:2rem 0;padding:.25rem 1rem;background:var(--blockquote);font-weight:400;border-left:5px solid var(--blockquote-left)}blockquote :not(pre)>code[class*=language-]{background:rgba(0,0,0,.1)!important}blockquote h1:first-child,blockquote h2:first-child,blockquote h3:first-child,blockquote h4:first-child,blockquote h5:first-child{margin-top:1rem}@media screen and (min-width:687px){p,ol,ul,dl,table,blockquote{font-size:1.05rem}ul{padding:0 0 0 2.25rem}blockquote{padding:.25rem 1rem .25rem 2rem}}::selection{background:#3b5bdb;color:#fff}h1{color:var(--h1-color)}h3,h4{color:var(--medium-font-color)}h2,h5{color:var(--heading-color)}h1,h2,h3,h4,h5{margin:0 0 1.5rem;font-weight:700;line-height:1.2;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}strong{color:var(--dark-font-color)}h1:not(:first-child),h2:not(:first-child),h3:not(:first-child),h4:not(:first-child){margin-top:3rem}h1{font-size:2.5rem;line-height:1.1}h2{font-size:1.75rem;padding-bottom:.5rem;border-bottom:4px solid var(--light-background)}h2 code{font-size:1.75rem!important}h3{font-size:1.5rem;color:var(--font-color);font-weight:600;margin-bottom:1.5rem}h3 code{font-size:1.4rem!important}h4{font-size:1.3rem;color:var(--font-color);font-weight:500;margin-bottom:1rem;border-bottom:2px solid var(--light-background);padding-bottom:.25rem}h5{font-size:1.2rem;margin-bottom:1rem}@media screen and (min-width:687px){h1{font-size:3rem}h2{font-size:1.9rem}h2 code{font-size:1.9rem!important}h3{font-size:1.7rem;color:var(--font-color);font-weight:600}h3 code{font-size:1.6rem!important}h4{font-weight:400;font-size:1.4rem}}a.link{display:block;padding:.25rem 0;margin:.25rem 0;border-radius:.35rem;font-weight:600;color:var(--dark-font-color)}a.link:hover{color:var(--link-color)}a.button{display:inline-block;border:2px solid var(--link-color);padding:.3rem .6rem;margin-right:.75rem;font-weight:500;background:var(--link-color);color:#fff;border-radius:.35rem;font-size:.9rem}a.button.large{padding:.8rem 1rem;font-size:1.05rem}a.button.secondary{border:2px solid #edf2ff;background:#edf2ff;color:#3b5bdb}a.button:hover,a.button.secondary:hover{border:2px solid var(--link-color-darker);background:var(--link-color-darker);color:#fff}@media screen and (min-width:687px){a.button{font-size:.9rem}a.button.large{padding:1rem 1.5rem;font-size:1.1rem}}a{color:inherit;text-decoration:none}a.image-link{border-width:0}a code[class*=language-]{color:var(--link-color)!important}a code[class*=language-]:hover{background:var(--link-color)!important;color:#fff!important}main{margin-top:0;flex:1}#top{display:flex;margin-bottom:5rem}.emoji{margin:0 .4rem 0 .1rem}.navbar{width:100%;position:fixed;top:0;left:0;background:var(--navbar-color);border-bottom:1px solid var(--navber-border-color);z-index:2;padding:.5rem;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.navbar .flex{justify-content:space-between}.navbar a{border-radius:.35rem;margin:0 .05rem;color:var(--font-color);font-weight:400;font-size:.95rem;border:1px solid transparent;padding:.5rem;line-height:1;background:0 0}.navbar a:first-of-type{margin-left:-1rem}.navbar a .emoji{display:none}.navbar a.brand{font-weight:800;color:var(--dark-font-color);white-space:nowrap;border:none;display:flex;align-items:center;line-height:1;background:0 0}.navbar a.brand .emoji{display:inline-block!important}.navbar a.brand img{height:22px;width:22px}.navbar button{font-size:1rem;margin-right:-1rem}.navarea{max-width:990px;margin-left:auto;margin-right:auto}#dark-mode-button{display:flex;border:none;padding:.2rem .7rem .2rem .5rem;border-radius:.35rem;box-sizing:content-box;cursor:pointer;font-size:1.1rem;background:0 0}#dark-mode-button .dark{display:none}#dark-mode-button:focus{outline:none}@media screen and (min-width:687px){#top{display:flex;margin:0}.emoji{margin:0 .5rem 0 .1rem}.navbar{position:static;padding:.2rem 0;background:0 0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}.navbar .flex{justify-content:space-between}.navbar a{margin:0 .25rem;color:var(--font-color);font-weight:400;padding:.75rem .5rem;font-size:.95rem}.navbar a:hover,.navbar a[aria-current=page]{color:var(--dark-font-color)}.navbar a.brand{padding:.75rem 1.25rem;font-size:1.2rem;margin-right:3rem;border:none;background:0 0!important;color:var(--dark-font-color)}.navbar a.brand img{height:26px;width:26px;margin-right:.25rem}.navbar button{margin-right:0}#dark-mode-button{padding:.75rem;font-size:1.2rem;height:1.35rem}#dark-mode-button:hover{filter:brightness(.92)}}@media print{.navbar{display:none}}[data-user-color-scheme=dark] #dark-mode-button .light{display:none}[data-user-color-scheme=dark] #dark-mode-button .dark{display:unset}.my p a{box-shadow:0 -2px 0 var(--link-border)inset;transition:all .3s ease}.my p a:hover{box-shadow:0 -10px 0 var(--link-border-dark)inset}.my .bio-banner{border-radius:8px}.my .bio-social{margin-top:-.5rem;margin-bottom:-1rem}.my .bio-social a{border:none;margin-right:1rem;line-height:3}.my .bio-social a:hover{border:none;color:var(--heading-color)}.my .bio-social a svg{transition:all .2s ease}@media screen and (min-width:499px){.my .bio-banner{border-radius:14px}}@media screen and (min-width:687px){.my{padding-top:2rem}}@media screen and (min-width:821px){.my .bio-banner{border-radius:20px}}header{padding:1.5rem 0}header h1{font-size:2.5rem;display:inline-block;font-weight:600;margin-top:1rem;margin-bottom:.35rem}header p.subtitle{font-size:1.1rem;font-weight:300;margin-bottom:0}header u{display:inline-block;text-decoration:none;padding:.4rem 0}.list-header h1{font-size:1.8rem;margin-bottom:.5rem}.post-row{display:flex;align-items:center;width:100%}.post-row .list-page-number{display:block;flex:none}.post-row h3{flex:1}.posts .post:last-of-type a{border-bottom-width:0}.post a{display:flex;align-items:center;justify-content:stretch;padding:1rem 0;border-bottom:2px solid var(--light-background);transition:all .2s ease}.post a:hover{border-radius:.3rem}.post h3{margin-top:.1rem;margin-bottom:0;font-size:1.1rem;font-weight:600}@media screen and (min-width:687px){header h1{font-size:3rem;margin-top:2rem;margin-bottom:.5rem}header p.subtitle{font-size:1.3rem}header u{background:linear-gradient(transparent 85%,#bac8ff 0)}.list-header h1{font-size:2.5rem}.post a{padding:.75rem 1rem;border-bottom-color:transparent}.post a:hover{background:var(--light-background)}.post h3{font-size:1.3rem}.post-row .list-page-number{flex:none}}.list-page-number{display:block;flex:none;min-width:0;color:var(--light-font-color);font-family:inherit;font-size:1rem;font-variant-numeric:normal;letter-spacing:normal;text-align:right}.post-action a{color:var(--heading-color)}.post-action h3{font-weight:400}.new-post,.popular-post{display:inline-block;color:#111;padding:.3rem .4rem;border-radius:.3rem;font-size:.85rem;margin-left:1rem}.new-post{background:#d3f9d8}.popular-post{background:#dce6fd;color:var(--heading-color)}@media screen and (min-width:687px){.new-post,.popular-post{margin-bottom:0}}.footer{margin-top:2rem;border-top:1px solid var(--navber-border-color)}.footer-nav{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;padding:6rem 0 1rem}.footer-nav>.flex{flex-direction:column;align-items:center;justify-content:center}.footer-nav img{height:30px;width:30px}.footer-nav a{border-radius:.35rem;margin:0 .05rem;font-weight:400;font-size:.95rem;border:1px solid transparent;padding:.35rem .5rem;margin:0 .5rem;color:var(--light-font-color)}.footer-nav a:hover{color:var(--heading-color);background:var(--light-background)}.footer-nav a.img{display:flex;align-items:center;padding:0;margin:0 .75rem;background:0 0}.footer-links{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;padding:0}.footer-links>.flex{flex-direction:column;align-items:center;justify-content:center}.footer-links img{max-height:1.5rem;width:auto}.footer-links img.mono{opacity:var(--img-links-opacity);filter:var(--img-links-filter)}.footer-links .footer-text{border-radius:.35rem;margin:0 .05rem;font-weight:400;font-size:.8rem;border:1px solid transparent;padding:0 .3rem;margin:0;color:var(--light-font-color);display:flex;align-items:center;white-space:pre}.footer-links .footer-text a{display:flex;align-items:center}.footer-links .footer-text.img{display:flex;align-items:center;padding:0;margin:0 .75rem;background:0 0}.backtop-box{font-size:.65rem;line-height:1.5;display:flex;align-items:center;justify-content:center;margin:2rem 0;height:100%}.backtop-box a{position:relative;display:inline-block;cursor:pointer;outline:none;border:0;vertical-align:middle;text-decoration:none;font-size:inherit;font-family:inherit}.backtop-box a.backtop{font-weight:400;color:var(--topbtn-font);fill:var(--topbtn-font);text-transform:uppercase;padding:.75rem 1rem;background:var(--light-topbtn);border:1px solid var(--topbtn-border);border-radius:.75rem;transform-style:preserve-3d;transition:transform 150ms cubic-bezier(0,0,.58,1),background 150ms cubic-bezier(0,0,.58,1)}.backtop-box a.backtop::before{position:absolute;content:'';width:100%;height:100%;top:0;left:0;right:0;bottom:0;background:var(--dark-topbtn);border-radius:inherit;box-shadow:0 0 0 1px var(--topbtn-border),0 .55rem 0 0 var(--topbtn-shadow);transform:translate3d(0,.35rem,-1rem);transition:transform 150ms cubic-bezier(0,0,.58,1),box-shadow 150ms cubic-bezier(0,0,.58,1)}.backtop-box a.backtop:hover{transform:translate(0,.15rem)}.backtop-box a.backtop:hover::before{box-shadow:0 0 0 1px var(--topbtn-border),0 .375rem 0 0 var(--topbtn-shadow);transform:translate3d(0,.2rem,-1rem)}.backtop-box a.backtop:active{color:var(--topbtn-font-hover);fill:var(--topbtn-font-hover);transform:translate(0,.35rem)}.backtop-box a.backtop:active::before{box-shadow:0 0 0 1px var(--topbtn-border),0 0 var(--topbtn-shadow);transform:translate3d(0,0,-1rem)}@media screen and (min-width:687px){.footer section{margin-bottom:2rem}.footer-nav>.flex{align-items:flex-start;margin-left:-1.5rem;margin-right:-1.5rem}.footer-nav a.img{padding:0 .5rem;margin:0 1rem}.footer-links>.flex{align-items:flex-start;margin-left:-1.5rem;margin-right:-1.5rem}.footer-links .footer-text.img{padding:0 .5rem;margin:0 1rem}}@media print{.footer{display:none}}.small{max-width:600px}time,.meta{color:var(--light-font-color);font-size:.85rem;white-space:nowrap;font-weight:400}.meta{color:var(--medium-font-color);font-size:1rem}table{border-collapse:separate;border-spacing:0;width:100%;max-width:100%;overflow-x:auto}thead,tbody{white-space:nowrap}th{border-bottom:2px solid var(--border)}tfoot th{border-top:1px solid var(--border)}td{border-bottom:1px solid var(--border)}th,td{text-align:left;padding:.75rem;hyphens:auto}tbody tr:nth-child(even){background-color:var(--light-background)}@media screen and (min-width:687px){table{display:table;border:1px solid var(--border)}thead,tbody{white-space:normal}}.tags{display:flex!important;flex-wrap:wrap;align-items:center;margin:-2rem -.2rem 2rem}.tags>a{display:block;font-weight:500;background:var(--light-background);color:var(--font-color);margin:.2rem;padding:.8rem;font-size:.8rem;border-radius:.3rem;border-bottom:0;white-space:nowrap;line-height:1;transition:all .2s ease}.tags>a:hover{background:var(--light-background-hover);color:var(--heading-color)}mark{background:#ffec99}.utterances{margin-left:-4px;margin-right:-4px}kbd{background-color:#f7f7f7;border:2px solid rgba(0,0,0,.3);border-radius:3px;box-shadow:0 1px rgba(0,0,0,.2),inset 0 0 0 2px #fff;color:#333;display:inline-block;font-family:var(--sys-font-family);line-height:1.4;margin:0 .1em;padding:.1em .6em;text-shadow:0 1px 0 #fff;font-size:14px}#comments{margin-top:3rem}#comments h2{margin:0}@media print{.comments,#comments{display:none}}#search-query{padding:.8rem 1rem;background:var(--light-background);color:var(--font-color);border:0;outline:none;width:100%;border-radius:5px;font-size:1rem;margin-left:auto;margin-right:auto;margin-bottom:1.5rem}#search-query:focus{background:var(--light-background-hover)}#search-results{display:none}.filter-container{display:flex;justify-content:flex-start;margin-bottom:4rem;flex-wrap:wrap}.filter-item{font-size:.85rem;padding:.5rem .75rem;background:var(--light-background);border-radius:4px;margin-right:.5rem;margin-bottom:.5rem;font-weight:600;cursor:pointer;transition:all .2s ease}.filter-item:hover{background:var(--light-background-hover);color:var(--heading-color)}.filter-item:last-of-type{margin-right:0}.filter-item.active{background:var(--heading-color);color:var(--background)}.filter-item.active:hover{color:var(--background);background:var(--heading-hover-color)}.article-header{padding-top:2rem;margin-bottom:1.5rem}.article-header .container{padding-left:0;padding-right:0}.article-header .thumb{display:flex;flex-direction:column}.article-header h1{font-weight:700;font-size:1.8rem;margin:0;line-height:1.3}.article-header .description{font-size:1.2rem;color:var(--light-font-color);font-weight:300;margin-top:2rem;margin-bottom:0}.post-meta{margin-top:1rem;padding:0;color:var(--light-font-color);font-size:.9rem}.post-meta a{color:var(--font-color);border-width:0}.post-meta time{margin-top:.2rem;font-size:.9rem}.post-meta .tags{margin-top:.5rem}.post-meta .tags a{text-decoration:none}.post-meta .dot{padding:0 .3rem}.article-post{margin-bottom:5rem;font-family:var(--article-font-family)}.article-post h2,.article-post h5{color:var(--font-color)}.article-post img{border-radius:5px;display:block;margin-left:auto;margin-right:auto;border:1px solid var(--navber-border-color)}.article-post figure{margin-left:auto;margin-right:auto}.article-post figure figcaption{color:var(--light-font-color);text-align:center;margin:.5rem auto 1.5rem}.article-post a{box-shadow:0 -2px 0 var(--border)inset;transition:all .3s ease}.article-post a:hover{box-shadow:0 -10px 0 var(--link-border-dark)inset}.article-post hr{margin:2.5rem 0;box-sizing:content-box;height:0;border:2px solid var(--light-background)}.article-post code{overflow-x:auto}.article-post h1 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h1 .anchor .icon{visibility:hidden}.article-post h1:hover .anchor{box-shadow:none}.article-post h1:hover .anchor .icon{visibility:visible}.article-post h2 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h2 .anchor .icon{visibility:hidden}.article-post h2:hover .anchor{box-shadow:none}.article-post h2:hover .anchor .icon{visibility:visible}.article-post h3 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h3 .anchor .icon{visibility:hidden}.article-post h3:hover .anchor{box-shadow:none}.article-post h3:hover .anchor .icon{visibility:visible}.article-post h4 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h4 .anchor .icon{visibility:hidden}.article-post h4:hover .anchor{box-shadow:none}.article-post h4:hover .anchor .icon{visibility:visible}.article-post h5 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h5 .anchor .icon{visibility:hidden}.article-post h5:hover .anchor{box-shadow:none}.article-post h5:hover .anchor .icon{visibility:visible}.article-post h6 .anchor{stroke:var(--link-color);stroke-width:1px;fill:var(--link-color);font-weight:700;left:-.25rem;border-width:0;float:left;line-height:1;margin-left:-20px;padding-right:4px;box-shadow:none;transition:none}.article-post h6 .anchor .icon{visibility:hidden}.article-post h6:hover .anchor{box-shadow:none}.article-post h6:hover .anchor .icon{visibility:visible}.article-post .highlight{position:relative}.article-post .highlight:hover .copyCodeButton{opacity:1}.article-post .copyCodeButton{position:absolute;top:35px;right:5px;background:#424242;border:none;box-shadow:0 10px 20px rgba(0,0,0,4%),0 2px 6px rgba(0,0,0,4%),0 0 1px rgba(0,0,0,4%);border-radius:4px;padding:8px 16px;color:rgba(255,255,255,.9);cursor:pointer;font-size:14px;opacity:0;transition:opacity .3s ease}.holder-content{display:flex;justify-content:center;align-items:center;border-radius:11px;width:100%}.holder-info{position:absolute;z-index:-1}.holder-info p{margin:0;color:var(--light-font-color);font-size:.85rem}@media screen and (min-width:687px){.article-post{margin-bottom:6rem}.article-post h1:not(:first-child),.article-post h2:not(:first-child),.article-post h3:not(:first-child),.article-post h4:not(:first-child),.article-post h5:not(:first-child){padding-top:1rem}.post-meta{margin-top:.5rem;padding:.5rem 0}.article-header{padding-top:2.8rem}.article-header h1{padding-top:0;font-size:2.2rem}.article-header .thumb{flex-direction:row}.article-header .description{font-size:1.8rem;line-height:1.5}}@media screen and (min-width:1024px){.article-header h1{font-size:2.5rem}}.post-thumbnail{display:block!important}.disqus-container{padding-top:2rem}#cusdis_thread{padding-top:2rem}.giscus{padding-top:2rem}code,pre{font-size:.9rem;font-family:var(--code-font-family);background:#373b41}:not(pre)>code{color:var(--dark-font-color);background:var(--light-background)}code{padding:3px 5px;border-radius:4px;color:#f8f8f2}pre>code{display:block}.highlight>.chroma{margin:0 0 2rem;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#373b41}.highlight>.chroma code{padding:40px 10px 10px}.highlight>.chroma code[data-lang]::before{position:absolute;top:0;right:0;left:0;padding:2px 10px;width:100%;height:30px;font-size:.9rem;line-height:1.9;font-weight:700;color:#b1b1b1;background:#303339;content:attr(data-lang)}.highlight>.chroma table{position:relative;border:none}.highlight>.chroma table code{padding:0}.highlight>.chroma .lntd:first-child{width:10px}.highlight>.chroma .lntd:first-child pre{margin:0;padding:40px 7px 10px}.highlight>.chroma .lntd:last-child{vertical-align:top}.highlight>.chroma .lntd:last-child pre{margin:0;padding:40px 10px 10px}.highlight>.chroma table,.highlight>.chroma tr,.highlight>.chroma td{margin:0;padding:0;width:100%;border-collapse:collapse;border:none}.highlight>.chroma .hl{display:block;width:100%;background-color:#000}.highlight>.chroma .lnt{color:#7f7f7f}.highlight>.chroma .ln{padding:0 .4em;color:#7f7f7f}.highlight>.chroma .err{color:#960050}.highlight>.chroma .c{color:#999}.highlight>.chroma .err{color:#f2777a}.highlight>.chroma .k{color:#c9c}.highlight>.chroma .l{color:#f99157}.highlight>.chroma .n{color:#ccc}.highlight>.chroma .o{color:#6cc}.highlight>.chroma .p{color:#ccc}.highlight>.chroma .cm{color:#999}.highlight>.chroma .cp{color:#999}.highlight>.chroma .c1{color:#999}.highlight>.chroma .cs{color:#999}.highlight>.chroma .gd{color:#f2777a}.highlight>.chroma .ge{font-style:italic}.highlight>.chroma .gh{color:#ccc;font-weight:700}.highlight>.chroma .gi{color:#9c9}.highlight>.chroma .gp{color:#999;font-weight:700}.highlight>.chroma .gs{font-weight:700}.highlight>.chroma .gu{color:#6cc;font-weight:700}.highlight>.chroma .kc{color:#c9c}.highlight>.chroma .kd{color:#c9c}.highlight>.chroma .kn{color:#6cc}.highlight>.chroma .kp{color:#c9c}.highlight>.chroma .kr{color:#c9c}.highlight>.chroma .kt{color:#fc6}.highlight>.chroma .ld{color:#9c9}.highlight>.chroma .m{color:#f99157}.highlight>.chroma .s{color:#9c9}.highlight>.chroma .na{color:#69c}.highlight>.chroma .nb{color:#ccc}.highlight>.chroma .nc{color:#fc6}.highlight>.chroma .no{color:#f2777a}.highlight>.chroma .nd{color:#6cc}.highlight>.chroma .ni{color:#ccc}.highlight>.chroma .ne{color:#f2777a}.highlight>.chroma .nf{color:#69c}.highlight>.chroma .nl{color:#ccc}.highlight>.chroma .nn{color:#fc6}.highlight>.chroma .nx{color:#69c}.highlight>.chroma .py{color:#ccc}.highlight>.chroma .nt{color:#6cc}.highlight>.chroma .nv{color:#f2777a}.highlight>.chroma .ow{color:#6cc}.highlight>.chroma .w{color:#ccc}.highlight>.chroma .mf{color:#f99157}.highlight>.chroma .mh{color:#f99157}.highlight>.chroma .mi{color:#f99157}.highlight>.chroma .mo{color:#f99157}.highlight>.chroma .sb{color:#9c9}.highlight>.chroma .sc{color:#ccc}.highlight>.chroma .sd{color:#999}.highlight>.chroma .s2{color:#9c9}.highlight>.chroma .se{color:#f99157}.highlight>.chroma .sh{color:#9c9}.highlight>.chroma .si{color:#f99157}.highlight>.chroma .sx{color:#9c9}.highlight>.chroma .sr{color:#9c9}.highlight>.chroma .s1{color:#9c9}.highlight>.chroma .ss{color:#9c9}.highlight>.chroma .bp{color:#ccc}.highlight>.chroma .vc{color:#f2777a}.highlight>.chroma .vg{color:#f2777a}.highlight>.chroma .vi{color:#f2777a}.highlight>.chroma .il{color:#f99157}.side{width:200px;margin:0 auto}.side p{margin:0}.side-right{float:right;clear:right;margin-right:calc(-200px - 2em);background-color:var(--background)}.side-right p{font-size:.9rem}.footnotes ol li p{margin:0}.footnotes hr{border:none;border-top:1px solid var(--border)}.footnote-ref{box-shadow:none!important}.footnote-backref{box-shadow:none!important}.note-ref{cursor:pointer;border:none;box-shadow:none!important}.note-ref:hover{box-shadow:none;border:none}.bg-number{background:var(--light-background);font-size:.9rem;color:var(--font-color);text-decoration:none;padding:1px 5px;border-radius:5px}@media(max-width:1280px){.side{width:100%;padding:0 2em}.side-right{float:none;clear:both;margin:1em auto;background:0 0}}@media(min-width:1280px){.note-ref:hover~.side{display:inline-block;position:absolute;margin-left:1rem;padding:.5rem;box-sizing:content-box}}.suggested{display:grid;grid-template-columns:1fr;align-items:stretch;margin:0 -.5rem;padding:0}.suggested span{display:block;color:var(--heading-color);font-size:.9rem;font-weight:400}.suggested .navigation-link{flex:initial}.navigation-link{display:block;margin:.5rem;padding:.75rem 1.5rem;border-bottom:none;border-radius:.35rem;background:var(--light-background);color:var(--font-color);transition:all .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.navigation-link:hover{transform:translate3D(0,-1px,0);background:var(--light-background-hover)}.navigation-link.disabled{pointer-events:none;opacity:.7}.navigation-link.disabled span{color:var(--font-color)}.suggested .random-post-link{display:flex;align-items:center;justify-content:center;text-align:center}.suggested>a:nth-of-type(2){text-align:right}.article-page-number{margin:0 auto .5rem;text-align:center}.article-page-number .page-number{display:inline-block;min-width:0;color:var(--light-font-color);font-size:.65rem;font-family:var(--code-font-family);font-variant-numeric:tabular-nums;letter-spacing:.14em;text-align:center}@media screen and (min-width:687px){.suggested{grid-template-columns:minmax(0,1fr)auto minmax(0,1fr)}.suggested>a:nth-of-type(2){grid-column:3;grid-row:1}.suggested .random-post-link{grid-column:2;grid-row:1}}.projects .project:last-of-type{border-bottom-width:0}.project{display:flex;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:2px solid var(--light-background)}.project .icon{font-size:1.5rem;width:40px}.project a{display:flex;align-items:center;margin-bottom:.25rem;border-width:0}.project a:hover h3{text-decoration:underline}.project a.button{margin-left:1.5rem;border-width:2px}.project h3{font-size:1.2rem;margin:0}.project .description{font-size:1.1rem;color:var(--light-font-color)}@media screen and (min-width:687px){.project{border-bottom-width:0}.project h3{font-size:1.3rem}.project .description{font-size:1rem}}.terms a{padding:.5rem 1.25rem;margin:1rem 0 0 .25rem;font-size:.9rem;font-weight:500;color:var(--font-color);border-radius:.35rem;display:inline-block;background:var(--light-background);transition:all .2s ease}.terms a:hover{background:var(--light-background-hover);color:var(--dark-font-color)}.terms-number{font-size:.75rem;font-weight:400;padding-left:.25rem}.pagination{flex-direction:column;display:flex}.pagination .prev-page,.pagination .next-page{margin-top:.75rem;flex-grow:1;flex-shrink:1;display:flex}.pagination .next-page{text-align:right}.pagination a{border-radius:.35rem;padding:.75rem 1.25rem;margin:0;font-size:.9rem;font-weight:400;background:var(--light-background);color:var(--heading-color);transition:all .2s ease;width:100%}.pagination a:hover,.pagination a[aria-current=page]{transform:translate3D(0,-1px,0);background:var(--light-background-hover)}.pagination a.disabled{pointer-events:none;opacity:.7;color:var(--font-color)}@media screen and (min-width:366px){.pagination{flex-direction:row}.prev-page,.next-page{width:calc(50% - .25rem)}.prev-page{margin-right:.5rem}.next-page{margin-left:.5rem}}@media(prefers-color-scheme:dark){:root{--color-mode:dark}:root:not([data-user-color-scheme]){--heading-color:#9092ff;--heading-hover-color:#7a7cf0;--h1-color:white;--font-color:#b3b9c5;--dark-font-color:#ced4da;--medium-font-color:#dee2e6;--light-font-color:#868e96;--background:#1e1f24;--light-background:#2D2D31;--light-background-hover:#36363a;--code-background-color:#2e2e30;--border:#383838;--link-border:var(--heading-hover-color);--link-border-dark:#4f50a7;--link-color:#6ab0f3;--link-color-darker:#4a72a5;--link-hover-color:#e1a6f2;--navbar-color:rgba(23, 25, 27, 0.7);--navber-border-color:rgba(44, 47, 50, 0.7);--blockquote:#2b2b2b;--blockquote-left:#191919;--transparent-text:rgba(255, 255, 255, 0.7);--transparent-bg:rgba(0, 0, 0, 0.2);--light-transparent-bg:rgba(255, 255, 255, 0.05);--img-links-opacity:0.7;--img-links-filter:invert(100%);--topbtn-font:#212121;--topbtn-font-hover:var(--heading-hover-color);--light-topbtn:#575859;--middle-topbtn:#464748;--dark-topbtn:#2c2d2d;--topbtn-border:#212121;--topbtn-shadow:#131515}}[data-user-color-scheme=dark]{--heading-color:#9092ff;--heading-hover-color:#7a7cf0;--h1-color:white;--font-color:#b3b9c5;--dark-font-color:#ced4da;--medium-font-color:#dee2e6;--light-font-color:#868e96;--background:#1f2022;--light-background:#2D2D31;--light-background-hover:#36363a;--code-background-color:#2e2e30;--border:#383838;--link-border:var(--heading-hover-color);--link-border-dark:#4f50a7;--link-color:#6ab0f3;--link-color-darker:#4a72a5;--link-hover-color:#e1a6f2;--navbar-color:rgba(23, 25, 27, 0.7);--navber-border-color:rgba(44, 47, 50, 0.7);--blockquote:rgba(107, 107, 107, 0.2);--blockquote-left:rgba(107, 107, 107, 0.7);--transparent-text:rgba(255, 255, 255, 0.7);--transparent-bg:rgba(0, 0, 0, 0.2);--light-transparent-bg:rgba(255, 255, 255, 0.05);--img-links-opacity:0.7;--img-links-filter:invert(100%);--topbtn-font:#212121;--topbtn-font-hover:var(--heading-hover-color);--light-topbtn:#575859;--dark-topbtn:#2c2d2d;--topbtn-border:#212121;--topbtn-shadow:#131515}