.photos_photosContainer__ve_vo{margin:0 auto;max-width:var(--width-container)}.photos_loadMoreButton__GWaj_{display:block;cursor:pointer;font-size:.75rem;padding:.5rem .75rem;margin:var(--space-sm) auto;border-radius:var(--border-radius);color:var(--text-color);background:var(--content-bg);font-family:var(--primary-font);transition:.2s;border:none;border-radius:5px}.photos_loadMoreButton__GWaj_:hover{background-color:var(--content-color);color:var(--text-color)}.grid_gridContainer__eCmFd{display:grid;margin:auto auto auto 0;padding-left:var(--space);padding-right:var(--space);margin-bottom:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-template-rows:masonry;grid-gap:var(--space);gap:var(--space);list-style:none}@media (max-width:768px){.grid_gridContainer__eCmFd{padding-left:var(--space-sm);padding-right:var(--space-sm);grid-template-columns:repeat(1,minmax(0,1fr))}}.articleAuthor_authorWrapper__QzQKZ{display:flex;margin-top:var(--space-sm)}.articleAuthor_authorMeta__mcSZs{margin-left:var(--space-sm);width:100%}.articleAuthor_authorName___Q8FP{font-weight:700;cursor:pointer}.articleAuthor_authorImgWrapper__KaytA{overflow:hidden;height:50px;width:55px}.articleAuthor_authorSocials__CYivR{margin-top:var(--space-sm)}.articleAuthor_authorTitle__7yfOH{margin-top:var(--space);font-size:1.5rem;font-weight:600}.articleAuthor_authorBio__DpcHs{margin-top:var(--space-sm);line-height:1.6}.articleAuthor_authorDescription__gPQNz,.articleAuthor_authorSocialsContainer__LP6vJ{margin-top:var(--space-sm)}.articleAuthor_supportButtonContainer__agaTI{margin-bottom:var(--space);margin-top:var(--space)}.articleAuthor_buttonText__lTmpX{margin-left:0}.articleAuthor_authorLink__akFBf{padding-top:1rem;text-decoration:none;box-shadow:0 -3px 0 0 var(--secondary-color) inset;transition:box-shadow .15s ease-in-out;color:var(--text-color);cursor:pointer}.linkPreview_linkContainer__1HE4e{padding:var(--space-sm) var(--space)}.linkPreview_linksTitle__GfGst{font-size:1.25rem;margin-bottom:calc(var(--space-sm) * .5)}.linkPreview_linksTitleHover__PR6Nf:hover{text-decoration:underline}.linkPreview_linksContent__l71Lo{margin:calc(var(--space-sm) * .5) 0;max-width:700px;font-size:.875rem;line-height:1.5}.linkPreview_linkLink__IDdf8{word-break:all;font-size:14px;cursor:pointer;text-decoration:none;box-shadow:0 -3px 0 0 var(--secondary-color) inset;transition:box-shadow .15s ease-in-out}.linkPreview_linkLinkHover__tsFs0:hover{box-shadow:0 -16px 0 0 var(--secondary-color) inset}.articleBody_postContent__63VWq{position:relative;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-gap:var(--space-sm);gap:var(--space-sm);margin:var(--space-sm) 0}@media (max-width:768px){.articleBody_postContent__63VWq{display:flex;flex-direction:column-reverse}}.articleBody_endOfPost__J6lMF{display:flex}.articleBody_square__yIs_r{display:block;content:"";margin-right:var(--space-sm);width:10px;height:10px;background-color:var(--secondary-color)}.articleBody_contentWrapper__3_fS4{position:relative;grid-column:span 6/span 6;z-index:2}.articleBody_sidebar__IzPx7{grid-column:span 2/span 2;z-index:1}.articleToc_toCWrapper__P5Sd9{position:-webkit-sticky;position:sticky;top:var(--space-sm);margin-bottom:var(--space-sm);background-color:var(--content-bg);border-radius:var(--border-radius);font-size:15px;padding:var(--space-sm);box-shadow:var(--box-shadow)}.articleToc_toCTitle__CyyAE{font-size:.8rem;margin-bottom:var(--space-sm);font-weight:300}.articleToc_toCList__8Lfvc{-webkit-padding-start:0;padding-inline-start:0}.articleToc_toCListItem__fk_tD{list-style-type:none;margin-bottom:1rem;padding-left:var(--space-sm);border-left:2px solid var(--secondary-color)}.articleToc_toCListItem__fk_tD:last-child{margin-bottom:0}.articleToc_toCItemTitle___Z1tH{transition:.2s;text-decoration:none}.articleToc_toCItemTitle___Z1tH:hover{color:var(--secondary-color)}.mdx_p__ZfMo6{margin-bottom:var(--space-sm)}.mdx_a__c1wGN{text-decoration:none;box-shadow:0 -3px 0 0 var(--secondary-color) inset;transition:box-shadow .15s ease-in-out;color:var(--text-color);cursor:pointer}.mdx_a__c1wGN:hover{box-shadow:0 -18px 0 0 var(--secondary-color) inset}.mdx_img__Z8YsF{margin:var(--space) auto}.mdx_ol__WnQtw{-webkit-padding-start:0;padding-inline-start:0;counter-reset:ol}.mdx_ol__WnQtw li{display:flex;align-items:center;margin:1rem 0;width:100%;counter-increment:ol}.mdx_ol__WnQtw li:before{display:flex;justify-content:center;align-items:center;min-width:3rem!important;min-height:3rem!important;content:counter(ol);color:var(--text-color);background-color:var(--content-bg);font-weight:600;border-radius:50%;margin-right:var(--space-sm);box-shadow:var(--box-shadow)}.mdx_ul___hr2g{margin-bottom:var(--space);-webkit-padding-start:var(--space-sm);padding-inline-start:var(--space-sm)}.mdx_ul___hr2g li{margin:.5rem 0}.mdx_h2__Kn4ia{color:var(--text-color);font-size:2rem;margin-top:var(--space);margin-bottom:1.5rem;font-family:var(--primary-font)}.mdx_h2__Kn4ia a{text-decoration:none;box-shadow:0 -3px 0 0 var(--secondary-color) inset;transition:box-shadow .15s ease-in-out;color:var(--text-color)}.mdx_h2__Kn4ia a:hover{box-shadow:0 -18px 0 0 var(--secondary-color) inset}.mdx_h3__bzXem{font-size:1.75rem;margin-top:1.75rem;margin-bottom:1.25rem;font-family:var(--primary-font)}.mdx_pre__13Cda{overflow:auto;border-bottom-left-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.mdx_pre__13Cda code{font-size:1rem}.mdx_blockquote___6fGp{border-left:2px solid var(--secondary-color);padding:var(--space-sm) var(--space);margin-bottom:var(--space);background:var(--content-bg);font-style:italic;box-shadow:var(--box-shadow)}.mdx_blockquote___6fGp p{margin-bottom:0}.CopyCodeButton_copyButton__h0jYK{z-index:1;cursor:pointer;border-radius:var(--border-radius);font-size:1rem;transition:all .2s ease-in-out;margin-right:8px;pointer-events:auto;touch-action:manipulation}.CopyCodeButton_copyButton__h0jYK:hover{color:var(--secondary-color)}.CopyCodeButton_copyWrapper__UWX2c{display:flex;align-items:center;font-family:var(--primary-font);font-size:12px;justify-content:space-between;padding:2px 10px;border-radius:var(--border-radius)}.CopyCodeButton_icon___O9TI{margin-right:7px;font-size:14px}.CopyCodeButton_iconCopy__rDjak{color:var(--text-color)}.CopyCodeButton_iconCopied__fYomT{color:var(--secondary-color)}.logo_logoWrapper__BdHdF{grid-column:span 2/span 2;display:inline-block;line-height:1.25;margin:0;display:flex}@media (max-width:600px){.logo_logoWrapper__BdHdF{font-size:1rem}}.logo_logoName__du0Ty{font-weight:700}.logo_logoName__du0Ty:hover{color:var(--secondary-color)}.cv_paper__k4vA9{width:210mm;height:297mm;padding:16px;margin-bottom:28px;position:relative;background-color:var(--content-bg);overflow:hidden;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.cv_title__VzJZE{font-size:18px;font-weight:600}.cv_subtitle__TxB58{font-weight:600;font-size:14px}.cv_smallBio__NjL6o{margin-bottom:16px;padding-bottom:16px;border-bottom:2px solid var(--primary-color);font-size:12px}.cv_grid__rBpQD{display:grid;grid-gap:28px;gap:28px;font-size:14px;grid-template-columns:repeat(4,minmax(0,1fr))}.cv_col1__yF_0J{grid-column:span 1/span 1;font-size:12px}.cv_col2__WllyI{grid-column:span 3/span 3;font-size:12px}.cv_colTitle__a31D_{font-weight:600;font-size:12px;color:var(--thirdy-color);text-transform:uppercase;margin-bottom:4px;letter-spacing:1.25px}.cv_skillGrid__2Gcf9{display:grid;grid-gap:2px;gap:2px;grid-template-columns:repeat(2,minmax(0,1fr))}.cv_timelineItem__vUUb9{margin-bottom:16px;padding-bottom:16px;border-bottom:2px solid var(--primary-color)}.cv_timelineTitle__Ybv3R{font-weight:700;font-size:14px}.cv_timelineCompany__ShfX0{font-weight:600}.cv_timelineDate__HGj_b{font-size:12px}.cv_timelineTags__4f81P{color:var(--thirdy-color);font-weight:600}.cv_education__OEQYK{margin-bottom:16px}.cv_educationTitle__KrwcX{font-weight:700}.cv_educationLocation__BjYuf{font-weight:600}.cv_resumeWrapper__eaq3k{max-width:var(--width-container);margin:var(--space) auto var(--space) auto;padding:0 var(--space)}@media (max-width:1200px){.cv_resumeWrapper__eaq3k{padding-left:var(--space-sm);padding-right:var(--space-sm)}}.Renderers_permaLink__GKqvd{cursor:pointer;margin-left:var(--space-sm);font-size:14px}.Renderers_defaultCode__sUsLn{padding:4px 8px;background-color:#111b27;color:#e3eaf2;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace}.Renderers_codeCopyWrapper__WroxI{justify-content:flex-end;padding-top:8px;padding-bottom:8px;background-color:var(--content-bg);display:flex;border-top-left-radius:var(--border-radius);border-top-right-radius:var(--border-radius);justify-content:space-between;align-items:center;font-family:var(--primary-font);position:-webkit-sticky;position:sticky;top:0;box-shadow:var(--box-shadow)}.Renderers_languageWrapper__zeQUG{margin-left:var(--space-sm);font-size:12px}.imageModal_thumbnail__6EPw7{margin:var(--space-sm) 0;cursor:pointer;border-radius:var(--border-radius);box-shadow:0 4px 6px rgba(0,0,0,.1);transition:opacity .3s ease-in-out}.imageModal_thumbnail__6EPw7:hover{opacity:.8}.imageModal_modalOverlay__sJUgi{position:fixed;inset:0;background:rgba(0,0,0,.8);display:flex;justify-content:center;align-items:center;z-index:50}.imageModal_modalContent__w5Jms{position:relative;padding:20px}.imageModal_imageDescription__nb2Pd{color:var(--text-color)}.imageModal_imageDescription__nb2Pd p{font-size:14px;opacity:.8}.imageModal_closeButton__ifOFc{position:absolute;top:-15px;right:13px;font-size:24px;background:none;border:none;color:var(--text-color);cursor:pointer}.imageModal_closeButton__ifOFc:hover{color:var(--secondary-color)}.imageModal_placeholderImage__mWi0U{display:block;position:relative;padding:60px 0;background-color:var(--content-bg);text-align:center;margin-top:var(--space-sm);margin-bottom:var(--space-sm)}.imageModal_placeholderImage__mWi0U:hover{opacity:.8}.header_headerWrapper__0WcQV{position:absolute;width:100%;top:0;left:0;color:var(--text-color);z-index:3}.header_innerHeader___JTs2{max-width:var(--width-container);margin:calc(var(--space-sm) * .5) auto var(--space) auto;padding:var(--space-sm) var(--space);height:80px}@media (max-width:1024px){.header_innerHeader___JTs2{padding:var(--space-sm)}}.header_mainNav__wMuNc{text-align:justify;list-style-type:none;-webkit-padding-start:0;padding-inline-start:0;gap:var(--space-sm);display:flex;justify-content:space-between}@media (max-width:768px){.header_mainNav__wMuNc{display:block}}.footer_footerContainer___6lZl{padding:var(--space-sm) 0;margin:0 auto}@media (max-width:768px){.footer_footerContainer___6lZl{flex-wrap:wrap;padding:var(--space-sm)}}.footer_footerInnerContainer__Q4OTw{grid-template-columns:repeat(4,minmax(0,1fr));display:grid;margin:0 auto;padding:var(--space) var(--space) 0 var(--space);max-width:1200px;border-top:1px solid var(--content-bg)}@media (max-width:768px){.footer_footerInnerContainer__Q4OTw{padding:var(--space) 0 0 0;display:block}}.footer_footerColumnWrapper__fFPYr{grid-column:span 4/span 4;list-style:none;-webkit-padding-start:0;padding-inline-start:0;max-width:1200px;margin-top:var(--space);font-size:.875rem;display:flex;justify-content:space-between}@media (max-width:768px){.footer_footerColumnWrapper__fFPYr{display:block}}.footer_footerColumn__AlxiI{max-width:25%;line-height:1.25rem}@media (max-width:768px){.footer_footerColumn__AlxiI{margin-bottom:var(--space);max-width:100%;border-bottom:1px solid var(--content-bg);padding-bottom:var(--space-sm)}}.footer_footerColumnPosts__Dg8wD{max-width:30%;line-height:1.25rem}@media (max-width:768px){.footer_footerColumnPosts__Dg8wD{margin-bottom:var(--space);max-width:100%;border-bottom:1px solid var(--content-bg);padding-bottom:var(--space-sm)}}.footer_footerColumnTitle__i429U{font-weight:600;margin-bottom:var(--space-sm)}.footer_footerColumnDescription__cZ1WO{margin-bottom:var(--space);line-height:1.75}.footer_list__g4ZnA{list-style:none;-webkit-padding-start:0;padding-inline-start:0}.footer_footerItem__g13Kv{margin-bottom:var(--space-sm);transition:.2s}.footer_footerItem__g13Kv:hover{color:var(--secondary-color);cursor:pointer}.footer_footerNotice__L0YyI{font-size:.75rem;grid-column:span 4/span 4;margin-top:var(--space-sm)}.footer_footerLink__JgAWe{color:var(--text-color);border-bottom:1px solid var(--secondary-color);cursor:pointer}.footer_footerLink__JgAWe:hover{border-bottom:1px solid transparent}.footer_footerBar__hNLHk{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--space-sm);gap:var(--space-sm);grid-column:span 4/span 4}@media (max-width:768px){.footer_footerBar__hNLHk{display:block}}.footer_searchWrapper__sq05x{font-family:var(--primary-font);grid-column:span 2/span 2;height:var(--space)}.footer_aboutMeLink__pgFEI{padding-top:var(--space-sm);border-bottom:1px solid var(--secondary-color);cursor:pointer}.footer_aboutMeLink__pgFEI:hover{border-bottom:1px solid transparent}.newsletter_container__PPlEs{max-width:var(--width-container);margin:var(--space) auto;padding-left:var(--space);padding-right:var(--space)}@media (max-width:768px){.newsletter_container__PPlEs{padding-left:var(--space-sm);padding-right:var(--space-sm)}}.topics_tagContainer__4qZBj{max-width:var(--width-container);margin:auto}.photo_pageWrapper__pokgL{position:relative;max-width:var(--width-container);padding:0 var(--space);margin:var(--space-sm) auto}@media (max-width:768px){.photo_pageWrapper__pokgL{padding-left:var(--space-sm);padding-right:var(--space-sm)}}.photo_photoList__b_r6R{list-style:none;-webkit-padding-start:0;padding-inline-start:0}.photo_photoItem__JqwJx{margin-bottom:var(--space)}.photo_imageContainer___3Bxa{margin:0 auto var(--space-sm) auto}.nav_navItems__12cCC{grid-column:span 1/span 1;display:flex;justify-content:space-between;align-items:flex-end;-webkit-padding-start:0;padding-inline-start:0;list-style:none}.nav_navItem__nuZSs{padding-left:0;margin-left:var(--space);transition:background-size .3s ease}.nav_navItem__nuZSs a{text-decoration:none;color:inherit;border-radius:5px;position:relative}.nav_navItem__nuZSs a:after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background-color:var(--secondary-color);transform:scaleX(0);transition:transform .3s ease}.nav_active__4Fs3R a:after,.nav_navItem__nuZSs:hover a:after{transform:scaleX(1)}.nav_active__4Fs3R a{font-weight:700}@media (max-width:768px){.nav_navItems__12cCC{margin-top:var(--space-sm)}.nav_navItem__nuZSs{margin-left:0}}@media (max-width:480px){.nav_navItem__nuZSs{font-size:1rem}}.about_pageWrapper__ahZwd{max-width:var(--width-container);margin:var(--space) auto var(--space) auto;padding:0 var(--space)}@media (max-width:1200px){.about_pageWrapper__ahZwd{padding-left:var(--space-sm);padding-right:var(--space-sm)}}.about_imageWrapper__bBs_C{max-width:1200px;margin:calc(var(--space-lg) * 2.5) auto 0 auto;padding-top:11px;padding-left:var(--space)}@media (max-width:768px){.about_imageWrapper__bBs_C{padding-left:var(--space-sm);padding-right:var(--space-sm);margin:calc(var(--space-lg) * 2.5) auto var(--space-sm) auto}}.about_title__xTCOI{font-size:3rem;margin-top:var(--space);margin-bottom:var(--space)}@media (max-width:768px){.about_title__xTCOI{font-size:2rem}}.about_intro__TAj0e{font-size:1.25rem;max-width:var(--content-width);margin:var(--space) 0;line-height:1.75rem}.mdxWrapper_contentWrapper___QxaC{max-width:var(--content-width);line-height:1.8;-webkit-hyphens:auto;hyphens:auto;padding-bottom:var(--space-sm)}.mdxWrapper_mdxContent__yIhmL{width:100%;height:100%;position:relative}.projectPreview_projectItemWrapper__mLOlF{height:100%;width:100%;display:flex;flex-direction:column;justify-content:space-between;padding:var(--space-sm) var(--space) var(--space) var(--space)}.projectPreview_projectItemInfo__u8zIF{padding-bottom:var(--space-sm)}.projectPreview_projectItemTitle__2eMtc{display:flex;font-size:1.25rem;color:var(--secondary-color);font-weight:700;margin-bottom:.5rem}.projectPreview_projectItemTitle__2eMtc:hover{text-decoration:underline}.projectPreview_projectItemDescription__wqiZr{line-height:1.5;margin:0 0 1rem;font-size:.875rem}.projectPreview_projectItemTopics__kasPQ{display:flex}.projectPreview_projectItemTopic__RthuU{font-size:.775rem;display:inline-block;background-color:var(--secondary-color);padding:5px 10px;margin-left:8px;cursor:pointer;border-radius:var(--border-radius);transition:.2;text-align:center;margin-bottom:var(--space-sm)}.projectPreview_projectItemTopic__RthuU:hover{background-color:var(--body-bg)}.projectPreview_projectItemTopic__RthuU:first-child{margin-left:0}.projectPreview_projectMeta__paXtS{display:flex}.projectPreview_projectItemLanguageName__bOi8Z,.projectPreview_projectItemLinkName__Y35V3{font-size:.775rem;margin-right:var(--space-sm)}.projectPreview_projectItemLinkName__Y35V3:hover{color:var(--secondary-color)}.projectPreview_projectItemLanguageColor__dkjGV{position:relative;top:1px;display:inline-block;width:12px;height:12px;border:var(--borderWidth-thin) solid var(--borderColor-translucent);border-radius:50%;margin-right:3px}.projectPreview_projectItemLHomepageUrl__Vq00L{font-size:.775rem;margin-right:var(--space-sm)}.projectPreview_projectItemLHomepageUrl__Vq00L:hover{color:var(--secondary-color)}.projectPreview_projectItemInfoLink__WKPIK{margin-bottom:8px;font-size:.775rem}.projectPreview_projectItemDemoTitle__Mz2oF{margin-bottom:var(--space-sm);font-weight:700}@media (max-width:600px){.projectPreview_projectItemWrapper__mLOlF{flex-direction:column}}.pages_pageWrapper__kfQ25{max-width:1200px;margin:var(--space) auto;padding:0 var(--space)}@media (max-width:1024px){.pages_pageWrapper__kfQ25{padding-left:var(--space-sm);padding-right:var(--space-sm)}}.postTitle_title__Ilhfd{margin:var(--space-sm) auto var(--space) 0;font-size:3rem;font-weight:700}@media (max-width:1024px){.postTitle_title__Ilhfd{font-size:2rem}}.tags_tagsWrapper__ZQWHH{margin-top:var(--space-sm);display:block;padding-bottom:var(--space-sm)}.tags_tagItem__Y9QLo{border-radius:var(--border-radius);display:inline-block;font-size:.75rem;margin:.25rem 1rem .5rem 0;padding:3px calc(var(--space-sm) * .5);background-color:var(--content-bg);color:var(--text-color);border:1px solid var(--body-bg);transition:.2s}.tags_tagItem__Y9QLo:hover{color:var(--body-bg);background-color:var(--secondary-color)}.nowPlaying_card__yGNtS{display:flex;align-items:center;gap:1rem;padding:1rem;border-radius:var(--border-radius);background-color:var(--content-bg);box-shadow:0 2px 8px rgb(0 0 0/.1);max-width:var(--card-width);color:var(--text-color);transition:box-shadow .2s ease;cursor:default;margin-bottom:2rem}.nowPlaying_card__yGNtS:hover{box-shadow:0 4px 16px rgb(0 0 0/.15)}.nowPlaying_albumImage__k4pQF{width:64x;height:64x;border-radius:10px;object-fit:cover;flex-shrink:0}.nowPlaying_content__Qzha1{flex:1 1;display:flex;flex-direction:column;overflow:hidden}.nowPlaying_title__ukt4y{font-weight:600;margin-bottom:.5rem}.nowPlaying_artist__y3GP_,.nowPlaying_title__ukt4y{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nowPlaying_artist__y3GP_{font-size:.75rem;color:var(--text-color)}.nowPlaying_link__D0tg9{color:var(--secondary-color);text-decoration:none;padding-left:.2rem}.nowPlaying_link__D0tg9:hover{text-decoration:underline}.nowPlaying_header__bAI2i{font-size:1rem;margin-bottom:.5rem;color:var(--text-color)}.nowPlaying_pulseIcon__u4tJ_{position:relative;display:inline-flex;width:12px;height:12px;margin-right:.15rem;flex-shrink:0;margin-bottom:.5rem}.nowPlaying_pulseIcon__u4tJ_:before{content:"";position:absolute;width:100%;height:100%;border-radius:50%;background-color:#22c55e;animation:nowPlaying_pulse__gOaGf 1.5s cubic-bezier(0,0,.2,1) infinite;opacity:.75;top:0;left:0}.nowPlaying_pulseIcon__u4tJ_:after{content:"";position:relative;width:12px;height:12px;border-radius:50%;background-color:#16a34a;z-index:1}@keyframes nowPlaying_pulse__gOaGf{0%{transform:scale(1);opacity:.75}50%{transform:scale(2);opacity:0}to{transform:scale(1);opacity:.75}}