@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.margin-dots[data-astro-cid-mb73ykiq]{inset-block:0;color:#c8c5be;pointer-events:none;height:100%;position:fixed;right:0}@media print{.margin-dots[data-astro-cid-mb73ykiq]{display:none}}:root{color-scheme:light;--text:#302f2c;--text-strong:#302f2c;--text-muted:#6b6862;--border:#d8d5cf;--surface:#fff;--page-background:#fff}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;font:18px/28px Georgia,serif}body{background:var(--page-background);color:var(--text);overflow-wrap:break-word;margin:0;padding-inline:28px}.page-shell{flex-direction:column;width:100%;max-width:504px;min-height:100svh;margin-inline:0;padding-block:84px 28px;display:flex;position:relative}.screen{flex:1;min-width:0}.screen>main{width:100%;max-width:504px;margin-inline:0}h1,h2,h3,h4,h5,h6{font:inherit;margin:56px 0 28px;font-weight:700}h1{margin-top:0}p,ul,ol,blockquote,pre,figure,dl{margin:28px 0}ul,ol{padding-left:1.4em}li+li{margin-top:7px}li>:is(ul,ol){margin-block:7px}a{color:inherit;text-underline-offset:3px;text-decoration:underline 1px #8b8780}a:hover,a:focus-visible{text-decoration-color:currentColor}:focus-visible{outline-offset:4px;outline:2px solid}strong{font-weight:700}small,figcaption,button,input{font:inherit}button,summary{cursor:pointer}button{color:inherit}:target{scroll-margin-top:28px}.skip-link{z-index:10;background:#fff;padding:7px;position:fixed;top:7px;left:7px;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.site-header{margin-bottom:56px}.page-navigation{flex-wrap:wrap;align-items:center;gap:0 14px;display:flex}.nav-divider{color:var(--text-muted)}.nav-page{margin:0;font-weight:400}.brand{text-decoration:none;display:inline-flex}.brand-wordmark{width:auto;height:28px;display:block}.page-navigation:has(.nav-divider) .brand{transform:translateY(-1.5px)}.brand:hover,.brand:focus-visible{opacity:.75}.site-footer{color:var(--text-muted);padding-top:84px}.site-footer p{margin:0}.site-footer span{display:inline-block}.header--with-margin,.post-header{margin-bottom:56px}.home-intro p{margin:0}.home-work p+p{margin-top:28px}.home-intro h1{margin:56px 0 28px}.home-links{color:var(--text-muted);margin:56px 0 0}.post-list,.project-list,.feed-list{margin:0;padding:0;list-style:none}.post-list li{margin:0}.post-item{margin-bottom:28px}.post-item time{color:var(--text-muted);display:block}.blog-list-footer{margin:56px 0 0}.blog-meta{color:var(--text-muted);margin:0}.blog-content>:first-child{margin-top:0}.blog-content>:last-child{margin-bottom:0}.margin-section{margin-top:56px;display:flow-root}.margin-section>h2{margin:0 0 28px}.margin-section>:last-child{margin-bottom:0}.blog-content .article-wide,.blog-content lite-youtube{width:min(952px,100vw - 56px);max-width:none;margin-inline:0}.blog-content .article-wide,.blog-content p.portrait,.blog-content lite-youtube{margin-block:56px}.article-wide>:is(img,pre,.expressive-code),.article-wide>.image-zoom>img,.blog-content p.portrait>.image-zoom>img{margin-block:0}.image-zoom{cursor:zoom-in;display:block}.pswp.image-viewer{--pswp-bg:#fff;--pswp-icon-color:var(--text);--pswp-icon-color-secondary:#fff}.image-viewer .pswp__img{cursor:zoom-out}.article-table{overflow-x:auto}.article-table table{width:100%;display:table}.blog-content .portrait>img{margin-block:0}blockquote{border-left:1px solid var(--border);padding-left:28px}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{border:0;border-top:1px solid var(--border);margin-block:56px}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:inherit}pre{overflow-x:auto}.expressive-code{margin-block:28px}img,video,svg{max-width:100%;height:auto}.blog-content img{margin-block:28px;display:block}iframe{max-width:100%}figure{margin-inline:0}figcaption{color:var(--text-muted)}table{border-collapse:collapse;max-width:100%;display:block;overflow-x:auto}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:7px}.article-toc{margin-bottom:28px}.article-toc ul{margin-bottom:0}.project-list>li,.feed-list>li{margin-block:0 56px}.project-list h2,.feed-list h2,.project-list p,.feed-list p{margin:0}.project-list p,.feed-list p{margin-top:14px}.project-links{color:var(--text-muted)}.cv-contact{flex-wrap:wrap;gap:0 14px;display:flex}.ai-badge-term,.ai-badges-footer,.cv-role,.cv-period,.cv-technologies{color:var(--text-muted)}.cv-contact{margin-top:28px;font-style:normal}.cv-contact>span{flex-basis:100%}.cv-print{text-underline-offset:3px;background:0 0;border:0;margin-top:28px;padding:0;text-decoration:underline}.cv-entry{margin-bottom:56px}.cv-entry:last-child{margin-bottom:0}.cv-entry-header h3,.cv-entry-header p{margin:0}.cv-facts dd{margin:0 0 28px}@media (width<=700px){.page-shell{padding-top:56px}}@media screen and (width>=701px){.page-shell{margin-left:56px}.blog-content .article-wide,.blog-content lite-youtube{width:min(952px,100vw - 112px)}}@media screen and (width>=1008px){.blog-content .article-wide,.blog-content p.portrait,.blog-content lite-youtube{margin-block:84px}}@page{size:A4;margin:14mm 16mm}@media print{html{font-size:10pt;line-height:1.5}body{padding:0}.page-shell{max-width:none;min-height:0;padding:0;display:block}.screen>main{max-width:none}.blog-content .article-wide,.blog-content lite-youtube{width:100%;margin-inline:0}.blog-content .article-wide,.blog-content p.portrait,.blog-content lite-youtube{margin-block:28px}.site-header,.site-footer,.skip-link,.cv-print,.article-toc{display:none}.site-header:has(.nav-page){margin-bottom:28px;display:block}.page-navigation>:not(.nav-page){display:none}.nav-page{font-weight:700}.cv-entry{break-inside:avoid}h2,h3{break-after:avoid}}
