@font-face{font-family:geist;src:url(../media/Geist_Regular-s.p.2bavxzb9a8nu7.ttf)format("truetype");font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:geist;src:url(../media/Geist_SemiBold-s.p.2_dfi34kna0hr.ttf)format("truetype");font-display:swap;font-weight:600;font-style:normal}@font-face{font-family:geist Fallback;src:local(Arial);ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.0%;size-adjust:106.28%}._5QQW8G_className{font-family:geist,geist Fallback}._5QQW8G_variable{--portfolio-font:"geist", "geist Fallback"}
.WKpVjW_moving{animation:8s linear infinite WKpVjW_orbit}.WKpVjW_front{animation:8s step-end infinite WKpVjW_foreground}.WKpVjW_back{opacity:0;animation:8s step-end infinite WKpVjW_background}.WKpVjW_gaze{animation:8s ease-in-out infinite WKpVjW_gaze}.WKpVjW_leftEye,.WKpVjW_rightEye{transform-box:fill-box;transform-origin:50%;animation:8s ease-in-out infinite WKpVjW_blink}.WKpVjW_rightEye{animation-name:WKpVjW_expression}@keyframes WKpVjW_foreground{0%,55.99%,96%,to{opacity:1}56%,95.99%{opacity:0}}@keyframes WKpVjW_background{0%,55.99%,96%,to{opacity:0}56%,95.99%{opacity:1}}@keyframes WKpVjW_gaze{0%,10%,55%,65%,to{transform:translate(0)}22%,30%{transform:translate(3px)}42%,48%{transform:translate(-3px,1px)}80%,88%{transform:translate(2px,-2px)}}@keyframes WKpVjW_blink{0%,24%,29%,63%,68%,to{transform:scaleY(1)}26%,65%{transform:scaleY(.12)}36%,42%{transform:scaleY(.65)}}@keyframes WKpVjW_expression{0%,24%,29%,63%,68%,to{transform:scaleY(1)}26%,65%{transform:scaleY(.12)}36%,42%{transform:scaleY(.55)}47%{transform:scaleY(.8)}}@keyframes WKpVjW_orbit{0%{transform:translate(0)}1.5625%{transform:translate(.711px,2.473px)}3.125%{transform:translate(.764px,5.212px)}4.6875%{transform:translate(.159px,8.191px)}6.25%{transform:translate(-1.099px,11.381px)}7.8125%{transform:translate(-2.997px,14.751px)}9.375%{transform:translate(-5.518px,18.269px)}10.9375%{transform:translate(-8.636px,21.9px)}12.5%{transform:translate(-12.323px,25.611px)}14.0625%{transform:translate(-16.541px,29.365px)}15.625%{transform:translate(-21.252px,33.126px)}17.1875%{transform:translate(-26.408px,36.858px)}18.75%{transform:translate(-31.962px,40.524px)}20.3125%{transform:translate(-37.859px,44.091px)}21.875%{transform:translate(-44.042px,47.522px)}23.4375%{transform:translate(-50.452px,50.786px)}25%{transform:translate(-57.027px,53.851px)}26.5625%{transform:translate(-63.704px,56.686px)}28.125%{transform:translate(-70.419px,59.266px)}29.6875%{transform:translate(-77.107px,61.565px)}31.25%{transform:translate(-83.703px,63.561px)}32.8125%{transform:translate(-90.143px,65.234px)}34.375%{transform:translate(-96.367px,66.57px)}35.9375%{transform:translate(-102.314px,67.553px)}37.5%{transform:translate(-107.927px,68.177px)}39.0625%{transform:translate(-113.151px,68.433px)}40.625%{transform:translate(-117.936px,68.321px)}42.1875%{transform:translate(-122.237px,67.84px)}43.75%{transform:translate(-126.012px,66.995px)}45.3125%{transform:translate(-129.224px,65.796px)}46.875%{transform:translate(-131.843px,64.253px)}48.4375%{transform:translate(-133.843px,62.38px)}50%{transform:translate(-135.205px,60.197px)}51.5625%{transform:translate(-135.916px,57.724px)}53.125%{transform:translate(-135.969px,54.985px)}54.6875%{transform:translate(-135.364px,52.006px)}56.25%{transform:translate(-134.106px,48.816px)}57.8125%{transform:translate(-132.207px,45.446px)}59.375%{transform:translate(-129.687px,41.929px)}60.9375%{transform:translate(-126.569px,38.297px)}62.5%{transform:translate(-122.882px,34.586px)}64.0625%{transform:translate(-118.664px,30.832px)}65.625%{transform:translate(-113.953px,27.071px)}67.1875%{transform:translate(-108.796px,23.339px)}68.75%{transform:translate(-103.243px,19.673px)}70.3125%{transform:translate(-97.346px,16.106px)}71.875%{transform:translate(-91.163px,12.675px)}73.4375%{transform:translate(-84.753px,9.411px)}75%{transform:translate(-78.178px,6.346px)}76.5625%{transform:translate(-71.5px,3.511px)}78.125%{transform:translate(-64.786px,.931px)}79.6875%{transform:translate(-58.098px,-1.368px)}81.25%{transform:translate(-51.502px,-3.364px)}82.8125%{transform:translate(-45.061px,-5.037px)}84.375%{transform:translate(-38.837px,-6.373px)}85.9375%{transform:translate(-32.891px,-7.356px)}87.5%{transform:translate(-27.278px,-7.98px)}89.0625%{transform:translate(-22.054px,-8.236px)}90.625%{transform:translate(-17.268px,-8.123px)}92.1875%{transform:translate(-12.967px,-7.643px)}93.75%{transform:translate(-9.193px,-6.798px)}95.3125%{transform:translate(-5.981px,-5.599px)}96.875%{transform:translate(-3.362px,-4.055px)}98.4375%{transform:translate(-1.362px,-2.183px)}to{transform:translate(0)}}@media (prefers-reduced-motion:reduce){.WKpVjW_moving,.WKpVjW_front,.WKpVjW_back,.WKpVjW_gaze,.WKpVjW_leftEye,.WKpVjW_rightEye{animation:none}}
.FOMwPW_site{--background:#fff;--foreground:#171717;--muted-foreground:#7c7c7c;--border:#e5e5e5;--surface:#fafafa;--syntax-comment:#7c7c7c;--syntax-keyword:#171717;--syntax-string:#526977;--syntax-title:#171717;--syntax-literal:#526977;--syntax-tag:#171717;--syntax-attribute:#526977;--gap:16px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;min-height:100svh;color:var(--foreground);background:var(--background);font-family:var(--portfolio-font), "Noto Sans JP Variable", sans-serif;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.4}.FOMwPW_container{max-width:600px;margin-inline:auto;padding:32px 24px}.FOMwPW_site a{text-underline-offset:4px}.FOMwPW_site a:hover{text-decoration:underline}.FOMwPW_site :focus-visible{outline:2px solid var(--foreground);outline-offset:4px}.FOMwPW_site h1{overflow-wrap:anywhere;font-size:20px;font-weight:600;line-height:28px}.FOMwPW_site h2{color:var(--muted-foreground);font-size:14px;font-weight:400;line-height:20px}.FOMwPW_site strong{color:var(--foreground);font-weight:400}.FOMwPW_skipLink{z-index:100;background:#fff;padding:8px;position:fixed;top:8px;left:8px;transform:translateY(-200%)}.FOMwPW_skipLink:focus{transform:translateY(0)}.FOMwPW_header{height:40px;margin-bottom:var(--gap);justify-content:space-between;align-items:center;display:flex}.FOMwPW_avatarLink{width:40px;height:40px;display:block}.FOMwPW_avatarLink svg{width:100%;height:100%}.FOMwPW_main,.FOMwPW_intro{gap:var(--gap);flex-direction:column;display:flex}.FOMwPW_intro p{color:var(--muted-foreground);line-height:19.25px}.FOMwPW_technology{color:var(--foreground);white-space:nowrap;vertical-align:baseline;display:inline-block}.FOMwPW_technology img{vertical-align:-.125em;width:15px;height:15px;margin-inline-end:4px;display:inline-block}.FOMwPW_section{border-top:1px solid var(--border);padding-top:var(--gap)}.FOMwPW_section>h2,.FOMwPW_sectionHeading{margin-bottom:8px}.FOMwPW_sectionHeading{justify-content:space-between;align-items:center;gap:16px;display:flex}.FOMwPW_sectionHeading a{font-size:12px}.FOMwPW_experience{flex-direction:column;gap:0;display:flex}.FOMwPW_experienceRow{justify-content:space-between;align-items:baseline;gap:8px;padding-block:4px;line-height:20px;display:flex}.FOMwPW_job{align-items:baseline;gap:6px;min-width:0;display:flex}.FOMwPW_job img{object-fit:contain;flex-shrink:0;align-self:center;width:16px;height:16px}.FOMwPW_date{color:var(--muted-foreground);white-space:nowrap;font-size:12px}.FOMwPW_secondary{color:var(--muted-foreground)}.FOMwPW_projects{min-height:53px}.FOMwPW_footer{border-top:1px solid var(--border);margin-top:var(--gap);padding-top:var(--gap);color:var(--muted-foreground);justify-content:space-between;align-items:center;font-size:12px;line-height:20px;display:flex}.FOMwPW_socials{align-items:center;gap:12px;display:flex}.FOMwPW_socials a{padding-block:2px;display:inline-flex}.FOMwPW_blogHeading{flex-direction:column;gap:8px;display:flex}.FOMwPW_blogHeading p{color:var(--muted-foreground);line-height:22px}.FOMwPW_posts{padding:0;list-style:none}.FOMwPW_postRow{justify-content:space-between;align-items:baseline;gap:24px;padding-block:4px;line-height:22px;display:flex}.FOMwPW_postRow>span{overflow-wrap:anywhere;min-width:0}.FOMwPW_postRow time{color:var(--muted-foreground);flex-shrink:0;font-size:12px}.FOMwPW_empty{color:var(--muted-foreground);flex-direction:column;gap:8px;padding-block:8px;line-height:22px;display:flex}.FOMwPW_article{flex-direction:column;gap:16px;display:flex}.FOMwPW_articleHeading{flex-direction:column;gap:8px;display:flex}.FOMwPW_articleHeading time{color:var(--muted-foreground);font-size:12px;line-height:18px}.FOMwPW_articleBody{border-block:1px solid var(--border);padding-block:16px}.FOMwPW_articleBody .prose-content{color:var(--muted-foreground);font-size:14px;line-height:22px}.FOMwPW_articleBody .prose-content>*+*{margin-top:16px}.FOMwPW_articleBody :is(h2,h3,h4,h5,h6){color:var(--foreground);letter-spacing:normal;margin-top:24px;font-size:14px;font-weight:400;line-height:22px}.FOMwPW_articleBody :is(h2,h3,h4,h5,h6):first-child{margin-top:0}.FOMwPW_articleBody :is(h2,h3,h4,h5,h6)+p{margin-top:8px}.FOMwPW_articleBody a{color:var(--foreground);text-decoration:underline}.FOMwPW_articleBody blockquote{border-left:1px solid var(--border);padding:4px 0 4px 16px}.FOMwPW_articleBody pre{border-left:1px solid var(--border);background:0 0;border-radius:0;max-width:100%;padding:4px 0 4px 16px;font-size:12px;line-height:20px}.FOMwPW_articleBody :not(pre)>code{background:var(--surface);color:var(--foreground);padding:1px 3px}.FOMwPW_articleBody img{border-radius:0}.FOMwPW_articleBody table{font-size:14px}.FOMwPW_articleBody li+li{margin-top:4px}.FOMwPW_retry{text-underline-offset:4px;align-self:flex-start;text-decoration:underline}@media (min-width:600px){.FOMwPW_container{padding-inline:30px}.FOMwPW_experienceRow{font-size:13px}}@media (max-width:599px){.FOMwPW_experience{gap:16px}.FOMwPW_experienceRow{flex-direction:column;gap:8px}.FOMwPW_postRow{flex-direction:column;gap:4px;padding-block:8px}.FOMwPW_date{font-size:14px}}
