html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}h1{margin:.67em 0;font-size:2em}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace;font-size:1em}a{background-color:#0000}abbr[title]{border-bottom:none;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}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;white-space:normal;max-width:100%;padding:0;display:table}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,[hidden]{display:none}code[class*=language-],pre[class*=language-]{color:#f8f8f2;text-shadow:0 1px #0000004d;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;background:0 0;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5}pre[class*=language-]{border-radius:.3em;margin:.5em 0;padding:1em;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{white-space:normal;border-radius:.3em;padding:.1em}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#708090}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.property,.token.tag,.token.constant,.token.symbol,.token.deleted{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#a6e22e}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.function,.token.class-name{color:#e6db74}.token.keyword{color:#66d9ef}.token.regex,.token.important{color:#fd971f}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}h1{font-size:32px;font-weight:700}p{font-weight:400}a{color:var(--text-color)}@media screen and (width>=600px){p,ul li,ol li{font-size:18px}}@media screen and (width<=599px){p{font-size:16px}ul{& ul li{font-size:16px}}}input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#fff;border:none;border-radius:3px;height:30px;padding-left:5px;display:block}.main-header{background-color:var(--secondary-color);-webkit-clip-path:polygon(0 0,100% 0,100% calc(100% - 3rem),0 100%);clip-path:polygon(0 0,100% 0,100% calc(100% - 3rem),0 100%);text-align:center;padding-bottom:64px;position:relative;overflow:hidden;& h2{margin:0}& p{margin-top:8px}& a{margin-left:5px;margin-right:5px}}.main-footer{text-align:center;background-color:var(--secondary-color);width:100%;position:absolute;bottom:0;& .subscribe-container{flex-direction:column;justify-content:center;align-items:center;padding-top:8px;display:flex;& .subscribe-btn{background-color:#0000;border:none;text-decoration:underline;&:hover{cursor:pointer}&:disabled{color:#999}}& input{width:100%;margin:auto}& input[type=email]{margin-top:8px}& input[type=submit]{margin-top:4px}}& .follow-container{padding-bottom:8px;bottom:0;left:0;right:0;& p{margin-bottom:4px;font-size:12px;& a{font-size:12px}}}& span{font-size:13px}& .subscribe-confirmation-container{color:#333;background-color:#fff;flex-direction:column;justify-content:center;align-items:center;width:200px;height:200px;padding:8px;transition:all .3s;display:flex;position:fixed;bottom:16px;left:16px;& a{color:#333}}& .hidden{display:none}}.fullscreen-overlay{background-color:#000c;flex-direction:column;place-content:center;display:flex;position:fixed;inset:0;& .close-overlay{z-index:3;background-color:unset;border:none;width:44px;height:44px;font-size:0;position:absolute;top:10px;right:10px;&:hover{opacity:1;cursor:pointer}&:before,&:after{content:" ";background-color:#fff;width:2px;height:33px;position:absolute;top:6px;left:21px}&:before{transform:rotate(45deg)}&:after{transform:rotate(-45deg)}}& .overlay-image{width:auto;max-width:90vw;height:auto;max-height:90vh;margin:auto;&[src$=-diagram\.svg]{background-color:#fff}}}.entries-container{flex-direction:column;align-items:center;width:100%;height:100%;display:flex}.entries-center-wrapper{flex-direction:column;align-items:center;width:100%;max-width:800px;padding-bottom:32px;display:flex;& .entry-item{width:100%;margin-top:32px;& h2{margin-top:4px;margin-bottom:4px;font-weight:700}& .publish-date{opacity:.6;margin:0 2px;font-size:13px;display:block}& .desc{margin:6px 2px;font-size:15px}}}.entry-container{& .entry-title{text-align:center}& .entry{text-align:left;box-sizing:border-box;hyphens:auto;width:100%;padding:16px 0;line-height:1.6;& ul{padding-left:24px;font-weight:400;& li+li{margin-top:4px}}& a{border-radius:4px;transition:background-color .3s,color .3s;&:hover{background-color:var(--text-color);color:var(--secondary-color)}}& blockquote{position:relative;overflow:hidden;& :before{content:"";background-color:var(--text-color);width:4px;position:absolute;top:0;bottom:0;left:0}background-color:var(--secondary-color);border-radius:3px;margin:0;padding:8px 12px;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;& p:first-child{margin-top:0}& p:last-child,& ul{margin-bottom:0}}}& .legend-center{text-align:center;width:100%;display:block}& img{border-radius:2px;max-width:100%;margin:auto;display:block}& img[src$=-diagram\.svg]{background-color:#fff}}@keyframes spinner{to{transform:rotate(360deg)}}.spinner{padding:8px;position:relative;&:before{content:"";box-sizing:border-box;border:2px solid #0000;border-top-color:var(--progress-bar-color);border-bottom-color:var(--progress-bar-color);border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;animation:.8s infinite spinner;position:absolute;top:50%;left:50%}}.book-list{width:100%;padding-bottom:32px;& .book-item{background-color:var(--secondary-color);border-radius:6px;margin-top:16px;padding:4px;transition:background-color .3s cubic-bezier(.4,0,.2,1),box-shadow .4s cubic-bezier(.25,.8,.25,1);display:flex;overflow:hidden;box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;&:hover{z-index:2;will-change:background-color, box-shadow;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}& img{width:100%;max-width:70px;height:100%}& .book-data{flex-direction:column;padding-top:8px;padding-left:8px;display:flex;& a{font-weight:700}& span{margin-top:8px}}}}:root{--primary-color:#0f2438;--secondary-color:#20364c;--text-color:#cfd2d6;--progress-bar-color:#cfd2d6;--code-bg:#333}*,:before,:after{box-sizing:border-box}html,body{background-color:var(--primary-color);color:var(--text-color);height:100%;font-family:Fira Sans,sans-serif;transition:color .5s;position:relative;& input[type=submit]{color:var(--text-color)}}.main-container{min-height:100vh;display:block;position:relative;overflow:hidden}.flex-wrapper{flex-direction:column;align-items:center;width:100%;height:100%;display:flex}.max-width-wrapper{flex-direction:column;width:100%;max-width:800px;padding:0 16px 64px;display:flex;& img:hover{cursor:pointer}}.flex-center{flex-direction:column;align-items:center;display:flex}#theme-switcher{background-image:url(/assets/images/moon.svg);background-position:50%;background-repeat:no-repeat;background:unset;border:none;width:30px;height:30px;transition:all .4s;position:fixed;bottom:12px;right:12px;&:hover{cursor:pointer}}.light-mode{--primary-color:#fff;--secondary-color:#f3efec;--text-color:#222;--progress-bar-color:#f0d2bd;--code-bg:#c4ab99}.about-me{& p{text-align:center;width:100%;margin:8px 0}}.me{border-radius:50%;width:150px;height:150px;box-shadow:0 0 16px 1px #00000038}.work{& h1{text-align:left;margin-top:30px}}.job-item{margin-top:24px;@media screen and (width>=600px){grid-template-columns:1fr 1fr;gap:24px;display:grid;&:nth-child(odd){& img{order:-1}}}& h2{text-align:center;margin-bottom:5px}& .date{opacity:.8;font-size:14px}& img{border-radius:4px;width:100%;max-width:500px;margin:auto;display:block}&:last-child{margin-bottom:50px}}.not-found{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:300px;margin:32px 8px;display:flex}.courses{padding-bottom:30px}code.highlighter-rouge,code.highlighter-rouge.language-plaintext{font-family:inherit;font-size:inherit;background-color:var(--code-bg);color:#fff;border-radius:3px;padding:0 8px;line-height:1.3;display:inline-block}.particles-canvas{opacity:.8;z-index:-10;position:absolute;top:0;left:0}#progress-bar{background-color:var(--progress-bar-color);z-index:99;width:0%;height:5px;position:fixed;top:0;left:0}pre:has(>code){tab-size:4;border-radius:.3em;margin:.5em 0;padding:1em;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;line-height:1.5;overflow:auto}pre:has(>code):not([style]){color:#f8f8f2;background:#272822}pre>code{font-family:inherit;font-size:inherit;color:inherit;background:0 0;padding:0}:not(pre)>code{font-family:inherit;font-size:inherit;background-color:var(--code-bg);color:#fff;border-radius:3px;padding:0 8px;line-height:1.3;display:inline-block}