/*!* 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";--base-font-family:"Lato", var(--sys-font-family), sans-serif;--code-font-family:Menlo, Monaco, Consolas, "Courier New", 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:initial}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:initial;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:initial;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-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;flex-wrap:wrap}.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);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}.pagination .page-link{padding:16px 0;margin:0;border-radius:0;display:flex;align-items:center;justify-content:center;flex:auto;min-width:48px;color:var(--card-text-color-secondary);text-decoration:none}.pagination .page-link:first-child,.pagination .page-link:last-child{flex:0 0 48px;padding:16px}.pagination .page-link:hover:not(.current):not(.disabled){background-color:var(--card-background-selected);opacity:.8}.pagination .page-link.current{background-color:var(--card-background-selected);color:var(--card-text-color-main);font-weight:700;cursor:default}.pagination .page-link.disabled{opacity:.3;cursor:not-allowed;pointer-events:none;color:var(--card-text-color-secondary)}.pagination .page-link svg{width:20px;height:20px}@media(min-width:768px){.sidebar.sticky{position:sticky}}.left-sidebar{display:flex;flex-direction:column;flex-shrink:0;align-self:stretch;margin-bottom:calc(-1 * 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{gap:var(--sidebar-element-separation)}}@media(min-width:768px){.left-sidebar{margin-bottom:0}}.left-sidebar>:not(:last-child){margin-bottom:var(--sidebar-element-separation)}@media(min-width:768px){.left-sidebar>:not(:last-child){margin-bottom:0}}@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:0 0!important;color:var(--body-text-color);padding:0!important;cursor:pointer;font-family:inherit;font-size:inherit;appearance:none;-webkit-appearance:none;-moz-appearance:none}#i18n-switch select::-ms-expand{display:none}#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;text-autospace:ideograph-alpha ideograph-numeric punctuation insert;text-spacing-trim:trim-start allow-end;-ms-text-autospace:ideograph-alpha;-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:initial}.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{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}.toc-nav{overflow-x:auto;max-height:75vh}.toc-nav ol,.toc-nav ul{margin:0;padding:0}.toc-nav ol{list-style-type:none;counter-reset:item}.toc-nav ol li a:first-of-type::before{counter-increment:item;content:counters(item,".")". ";font-weight:700;margin-right:5px}.toc-nav>ul{padding:0 1em}.toc-nav li{margin:15px 0 15px 20px;padding:5px}.toc-nav li>ol,.toc-nav li>ul{margin-top:10px;padding-left:10px;margin-bottom:-5px}.toc-nav li>ol>li:last-child,.toc-nav li>ul>li:last-child{margin-bottom:0}.toc-nav li.active-class>a{border-left:var(--heading-border-size)solid var(--accent-color);font-weight:700}.toc-nav ul li.active-class>a{display:block}.toc-nav>ul>li.active-class>a{margin-left:calc(-25px - 1em);padding-left:calc(25px + 1em - var(--heading-border-size))}.toc-nav>ol>li.active-class>a{margin-left:calc(-9px - 1em);padding-left:calc(9px + 1em - var(--heading-border-size));display:block}.toc-nav>ul>li>ul>li.active-class>a{margin-left:calc(-60px - 1em);padding-left:calc(60px + 1em - var(--heading-border-size))}.toc-nav>ol>li>ol>li.active-class>a{margin-left:calc(-44px - 1em);padding-left:calc(44px + 1em - var(--heading-border-size));display:block}.toc-nav>ul>li>ul>li>ul>li.active-class>a{margin-left:calc(-95px - 1em);padding-left:calc(95px + 1em - var(--heading-border-size))}.toc-nav>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}.toc-nav>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))}.toc-nav>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}.toc-nav>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))}.toc-nav>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}.widget--toc,.article-toc{display:flex;flex-direction:column;color:var(--card-text-color-main)}.widget--toc ::-webkit-scrollbar-thumb,.article-toc ::-webkit-scrollbar-thumb{background-color:var(--card-separator-color)}.widget--toc{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l1);overflow:hidden}.article-toc{padding:0 var(--card-padding);margin-top:20px}@media(min-width:1024px){.article-toc{display:none}}.article-toc details{background-color:var(--card-background);border-radius:var(--card-border-radius);box-shadow:var(--shadow-l2)}.article-toc details[open] .article-toc-title svg{transform:rotate(90deg)}.article-toc details summary{list-style:none;padding:15px 20px;cursor:pointer}.article-toc details summary::-webkit-details-marker{display:none}.article-toc details summary .article-toc-title{display:flex;align-items:center;gap:10px;text-transform:uppercase;font-size:1.4rem;font-weight:700;color:var(--card-text-color-tertiary)}.article-toc details summary .article-toc-title svg{width:20px;height:20px;stroke-width:1.33;transition:transform .3s ease}.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;object-fit:cover}.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;margin-left:-24px}.subsection-list .article-list--tile{display:flex;padding:8px 0 34px 24px;width:max-content}.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:initial;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)}.portfolio-page{--ink:#e9eef5;--muted:#93a0b2;--dim:#667386;--surface:#10151d;--surface-2:#151c26;--surface-3:#1b2430;--line:rgba(152, 169, 190, 0.18);--accent:#65f2a4;--accent-2:#77b7ff;--glow:rgba(101, 242, 164, 0.16);--mono:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--sans:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;background-color:#0b1017;background-image:linear-gradient(rgba(119,183,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(119,183,255,.035) 1px,transparent 1px);background-size:42px 42px;color:var(--ink);font-family:var(--sans);transition:background-color 220ms ease,color 220ms ease}[data-scheme=light] .portfolio-page{--ink:#17202c;--muted:#526071;--dim:#788596;--surface:#f7f9fc;--surface-2:#ffffff;--surface-3:#edf2f7;--line:rgba(43, 61, 79, 0.16);--accent:#087a4a;--accent-2:#0969c3;--glow:rgba(8, 122, 74, 0.1);background-color:#f4f7fa;background-image:linear-gradient(rgba(9,105,195,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(9,105,195,.045) 1px,transparent 1px)}.portfolio-page .left-sidebar,.portfolio-page .site-footer{display:none}.portfolio-page .main-container.compact{width:calc(100% - 48px);max-width:1180px}.portfolio-page main.main{padding:0}.portfolio-page a{color:inherit}.portfolio-topnav{display:flex;align-items:center;justify-content:space-between;min-height:80px;border-bottom:1px solid var(--line)}.portfolio-brand{display:inline-flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none}.brand-mark{display:grid;width:38px;height:38px;place-items:center;border:1px solid var(--accent);border-radius:4px;box-shadow:inset 0 0 18px var(--glow),0 0 20px var(--glow);color:var(--accent);font-family:var(--mono);font-size:14px;font-weight:800}.brand-copy{display:flex;flex-direction:column}.brand-copy strong{color:var(--ink);font-size:15px;letter-spacing:.02em}.brand-copy small{color:var(--dim);font-family:var(--mono);font-size:10px;letter-spacing:.04em}.portfolio-navlinks{display:flex;align-items:center;gap:28px}.portfolio-navlinks a,.theme-toggle{border:0;background:0 0;color:var(--muted);cursor:pointer;font-family:var(--mono);font-size:12px;font-weight:600;text-decoration:none;text-transform:uppercase}.portfolio-navlinks a:hover,.theme-toggle:hover{color:var(--accent)}.theme-toggle{display:grid;width:34px;height:34px;place-items:center;border:1px solid var(--line);border-radius:50%;font-size:16px}.theme-toggle span{display:block;line-height:1}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.portfolio-hero{display:grid;grid-template-columns:minmax(0,1.45fr)minmax(300px,.7fr);gap:clamp(48px,8vw,110px);align-items:center;min-height:640px;padding:90px 0;border-bottom:1px solid var(--line)}.terminal-line,.section-index,.project-eyebrow,.back-link,.sidebar-label{color:var(--accent);font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.terminal-line{margin:0 0 26px;color:var(--muted);letter-spacing:0;text-transform:none}.terminal-line span:first-child{color:var(--accent)}.terminal-line span:nth-child(2){color:var(--accent-2)}.cursor{display:inline-block;width:8px;height:1.1em;margin-left:7px;background:var(--accent);vertical-align:-2px;animation:cursor-blink 1.2s steps(2,start)infinite}@keyframes cursor-blink{50%{opacity:0}}.portfolio-hero h1{max-width:790px;margin:0;color:var(--ink);font-size:clamp(48px,6.1vw,78px);font-weight:760;letter-spacing:-.055em;line-height:1.02}.portfolio-hero h1 em{color:var(--accent);font-style:normal;text-shadow:0 0 32px var(--glow)}.portfolio-summary{max-width:760px;margin:30px 0 0;color:var(--muted);font-size:18px;line-height:1.75}.portfolio-actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:32px}.portfolio-actions a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;color:var(--muted);font-family:var(--mono);font-size:12px;font-weight:700;text-decoration:none;text-transform:uppercase}.portfolio-actions a:hover{color:var(--accent)}.portfolio-actions .action-primary{padding:0 19px;border:1px solid var(--accent);border-radius:3px;background:var(--glow);color:var(--accent)}.portfolio-actions .action-primary:hover{box-shadow:0 0 30px var(--glow)}.hero-console{overflow:hidden;border:1px solid var(--line);border-radius:7px;background:color-mix(in srgb,var(--surface-2) 92%,transparent);box-shadow:0 24px 80px rgba(0,0,0,.24),inset 0 0 50px rgba(119,183,255,.025);transform:perspective(900px)rotateY(-3deg)}.console-bar,.demo-bar{display:flex;align-items:center;gap:6px;height:42px;padding:0 15px;border-bottom:1px solid var(--line);background:var(--surface-3);color:var(--dim);font-family:var(--mono);font-size:10px}.console-bar i{width:8px;height:8px;border-radius:50%;background:#ff6c6c}.console-bar i:nth-child(2){background:#f5c451}.console-bar i:nth-child(3){background:var(--accent)}.console-bar span{margin-left:auto}.hero-console dl{margin:0;padding:16px 20px 22px;font-family:var(--mono);font-size:12px;line-height:1.6}.hero-console dl div{display:grid;grid-template-columns:90px minmax(0,1fr);gap:10px;padding:9px 0}.hero-console dt{color:var(--accent-2)}.hero-console dt::after{content:":";color:var(--dim)}.hero-console dd{margin:0;color:var(--muted);overflow-wrap:anywhere}.status-dot{display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px var(--accent)}.work-section,.about-section{padding:110px 0;border-bottom:1px solid var(--line)}.section-heading{display:grid;grid-template-columns:1fr minmax(280px,430px);gap:48px;align-items:end;margin-bottom:76px}.section-heading h2,.contact-section h2{margin:10px 0 0;color:var(--ink);font-size:clamp(36px,4vw,54px);letter-spacing:-.045em;line-height:1.05}.section-heading>p,.contact-section p{margin:0;color:var(--muted);font-size:16px;line-height:1.7}.project-group+.project-group{margin-top:86px}.group-heading{display:flex;gap:28px;align-items:baseline;margin-bottom:26px}.group-heading h3{margin:0;color:var(--ink);font-family:var(--mono);font-size:17px;letter-spacing:-.02em}.group-heading h3::before{content:"// ";color:var(--accent-2)}.group-heading p{max-width:620px;margin:0;color:var(--dim);font-size:13px}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.project-card{overflow:hidden;border:1px solid var(--line);border-radius:6px;background:color-mix(in srgb,var(--surface-2) 94%,transparent);transition:border-color 180ms ease,transform 180ms ease,box-shadow 180ms ease}.project-card:hover{border-color:color-mix(in srgb,var(--accent) 60%,var(--line));box-shadow:0 16px 45px rgba(0,0,0,.18),0 0 30px var(--glow);transform:translateY(-3px)}.project-card--featured{display:grid;grid-column:1/-1;grid-template-columns:1.12fr .88fr}.project-media{position:relative;display:block;overflow:hidden;min-height:250px;border-bottom:1px solid var(--line);background:#05080c}.project-card--featured .project-media{min-height:440px;border-right:1px solid var(--line);border-bottom:0}.project-media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform 500ms ease,filter 300ms ease}.project-card:not(.project-card--featured) .project-media img{aspect-ratio:16/8.5}.project-card:hover .project-media img{filter:saturate(1.08)contrast(1.03);transform:scale(1.015)}.media-corner{position:absolute;top:12px;left:12px;padding:6px 8px;border:1px solid rgba(255,255,255,.15);border-radius:2px;background:rgba(7,12,18,.82);color:#b9c5d3;font-family:var(--mono);font-size:9px;letter-spacing:.08em}.project-card-body{display:flex;flex-direction:column;padding:27px}.project-card--featured .project-card-body{justify-content:center;padding:42px}.project-meta{display:flex;justify-content:space-between;color:var(--accent-2);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.project-meta span:last-child{color:var(--dim)}.project-card h4{margin:14px 0 12px;color:var(--ink);font-size:28px;letter-spacing:-.035em}.project-card h4 a{text-decoration:none}.project-card h4 a:hover{color:var(--accent)}.project-value{margin:0;color:var(--muted);font-size:15px;line-height:1.67}.project-highlight{margin:18px 0 0;padding-left:13px;border-left:2px solid var(--accent);color:var(--dim);font-size:12px;line-height:1.6}.project-highlight strong{color:var(--muted)}.tech-list{display:flex;flex-wrap:wrap;gap:7px;margin:21px 0 0;padding:0;list-style:none}.tech-list li{margin:0;padding:5px 8px;border:1px solid var(--line);border-radius:2px;background:var(--surface-3);color:var(--muted);font-family:var(--mono);font-size:9px;line-height:1}.project-links{display:flex;flex-wrap:wrap;gap:20px;margin-top:24px}.project-links a{color:var(--accent);font-family:var(--mono);font-size:10px;font-weight:700;text-decoration:none;text-transform:uppercase}.about-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(60px,9vw,130px)}.about-intro p{margin:0;color:var(--ink);font-size:24px;font-weight:560;letter-spacing:-.025em;line-height:1.55}.principle-list article{display:grid;grid-template-columns:44px 1fr;gap:18px;padding:24px 0;border-top:1px solid var(--line)}.principle-list article:last-child{border-bottom:1px solid var(--line)}.principle-list article>span{color:var(--accent);font-family:var(--mono);font-size:10px}.principle-list h3{margin:0 0 7px;color:var(--ink);font-size:17px}.principle-list p{margin:0;color:var(--muted);font-size:14px;line-height:1.65}.stack-marquee{display:flex;flex-wrap:wrap;gap:10px;margin-top:70px}.stack-marquee span{padding:9px 12px;border:1px solid var(--line);color:var(--dim);font-family:var(--mono);font-size:10px;text-transform:uppercase}.contact-section{display:grid;grid-template-columns:130px 1fr auto;gap:50px;align-items:center;padding:80px 0;border-bottom:1px solid var(--line)}.contact-section h2{font-size:36px}.contact-section p{margin-top:9px}.contact-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}.contact-actions button,.contact-actions a{min-height:44px;padding:12px 16px;border:1px solid var(--accent);border-radius:3px;background:0 0;color:var(--accent);cursor:pointer;font-family:var(--mono);font-size:11px;font-weight:700;line-height:18px;text-decoration:none;text-transform:uppercase}.contact-actions button:hover,.contact-actions a:hover{background:var(--glow);box-shadow:0 0 24px var(--glow)}.contact-actions button:focus-visible,.contact-actions a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.portfolio-footer{display:flex;justify-content:space-between;padding:26px 0 38px;color:var(--dim);font-family:var(--mono);font-size:10px}.portfolio-footer a{text-decoration:none}.portfolio-footer a:hover{color:var(--accent)}.project-detail{padding-top:48px}.back-link{display:inline-block;margin-bottom:42px;color:var(--muted);text-decoration:none}.back-link:hover{color:var(--accent)}.project-hero{display:grid;grid-template-columns:1fr 310px;gap:80px;align-items:end;padding-bottom:58px}.project-hero h1{margin:13px 0 20px;color:var(--ink);font-size:clamp(52px,7vw,88px);letter-spacing:-.055em;line-height:1}.project-lede{max-width:770px;margin:0;color:var(--muted);font-size:20px;line-height:1.65}.project-facts{border-top:1px solid var(--line)}.project-facts div{display:grid;grid-template-columns:72px 1fr;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}.project-facts span{color:var(--dim);font-family:var(--mono);font-size:9px;letter-spacing:.08em}.project-facts strong{color:var(--ink);font-size:12px;font-weight:600}.project-demo{overflow:hidden;border:1px solid var(--line);border-radius:6px;background:#05080c}.demo-bar{justify-content:space-between;color:#7f8b9a}.project-demo>img,.project-demo>video{display:block;width:100%;max-height:720px;aspect-ratio:16/8.5;object-fit:contain;background:#05080c}.result-grid{display:grid;grid-template-columns:repeat(3,1fr);margin:22px 0 88px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}.result-grid div{padding:22px 24px;border-right:1px solid var(--line)}.result-grid div:last-child{border:0}.result-grid span{display:block;margin-bottom:8px;color:var(--dim);font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase}.result-grid strong{color:var(--ink);font-size:15px;font-weight:650}.project-content-grid{display:grid;grid-template-columns:minmax(0,760px)minmax(230px,300px);gap:clamp(60px,9vw,120px);justify-content:center;padding-bottom:100px}.project-prose{color:var(--muted);font-family:var(--sans);font-size:17px;line-height:1.82}.project-prose h2{margin:62px 0 18px;padding:0;border:0;color:var(--ink);font-size:31px;letter-spacing:-.035em}.project-prose h2:first-child{margin-top:0}.project-prose h2::before{content:"## ";color:var(--accent);font-family:var(--mono);font-size:15px;vertical-align:4px}.project-prose p{margin:0 0 24px}.project-prose strong{color:var(--ink)}.project-prose code{color:var(--accent)}.project-sidebar{align-self:start;position:sticky;top:24px}.project-sidebar>div{padding:20px 0;border-top:1px solid var(--line)}.project-sidebar>div:last-child{border-bottom:1px solid var(--line)}.project-sidebar .tech-list{margin-top:14px}.project-sidebar p{margin:12px 0 0;color:var(--muted);font-size:13px;line-height:1.65}.sidebar-links{display:flex;flex-direction:column;gap:11px}.sidebar-links .sidebar-label{margin-bottom:2px}.sidebar-links a{color:var(--accent);font-family:var(--mono);font-size:10px;font-weight:700;text-decoration:none;text-transform:uppercase}.project-gallery{display:grid;gap:22px;margin-top:58px}.project-gallery figure{margin:0}.project-gallery img{display:block;width:100%;border:1px solid var(--line);border-radius:4px}.project-gallery figcaption{padding:9px 0;color:var(--dim);font-family:var(--mono);font-size:10px}.project-next{display:flex;justify-content:space-between;padding:40px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.project-next span{color:var(--dim);font-family:var(--mono);font-size:9px;letter-spacing:.08em}.project-next a{color:var(--accent);font-family:var(--mono);font-size:11px;font-weight:700;text-decoration:none;text-transform:uppercase}@media(max-width:900px){.portfolio-page .main-container.compact{width:calc(100% - 30px);max-width:760px}.portfolio-hero{grid-template-columns:1fr;min-height:auto;padding:72px 0}.hero-console{max-width:540px;transform:none}.section-heading{grid-template-columns:1fr;gap:20px}.project-card--featured{display:block}.project-card--featured .project-media{min-height:300px;border-right:0;border-bottom:1px solid var(--line)}.project-card--featured .project-card-body{padding:27px}.about-grid{grid-template-columns:1fr;gap:50px}.contact-section{grid-template-columns:1fr;gap:22px}.contact-actions{justify-content:flex-start}.project-hero{grid-template-columns:1fr;gap:45px}.project-content-grid{grid-template-columns:minmax(0,1fr)240px;gap:45px}}@media(max-width:640px){.portfolio-page .main-container.compact{width:calc(100% - 28px)}.portfolio-topnav{min-height:68px}.brand-copy small{display:none}.portfolio-navlinks{gap:14px}.portfolio-navlinks a:nth-child(2){display:none}.theme-toggle{width:30px;height:30px}.portfolio-hero{gap:46px;padding:58px 0 68px}.portfolio-hero h1{font-size:clamp(43px,13vw,60px)}.portfolio-summary{font-size:16px}.portfolio-actions{align-items:stretch;flex-direction:column}.portfolio-actions a{justify-content:center}.hero-console dl{padding-inline:15px;font-size:10px}.hero-console dl div{grid-template-columns:74px 1fr}.work-section,.about-section{padding:78px 0}.section-heading{margin-bottom:52px}.section-heading h2,.contact-section h2{font-size:34px}.group-heading{display:block}.group-heading p{margin-top:10px}.project-grid{grid-template-columns:1fr}.project-card--featured{grid-column:auto}.project-media,.project-card--featured .project-media{min-height:210px}.project-card-body,.project-card--featured .project-card-body{padding:22px}.about-intro p{font-size:21px}.contact-section{padding:64px 0}.portfolio-footer{padding-bottom:28px}.project-detail{padding-top:35px}.back-link{margin-bottom:32px}.project-hero{padding-bottom:42px}.project-hero h1{font-size:52px}.project-lede{font-size:17px}.project-demo>img,.project-demo>video{aspect-ratio:16/10}.result-grid{grid-template-columns:1fr;margin-bottom:65px}.result-grid div{border-right:0;border-bottom:1px solid var(--line)}.project-content-grid{display:flex;flex-direction:column;gap:45px;padding-bottom:70px}.project-prose{font-size:16px}.project-prose h2{font-size:27px}.project-sidebar{position:static}}@media(prefers-reduced-motion:reduce){.cursor{animation:none}.project-card,.project-media img{transition:none}}