:root{--trans-default:.2s ease-in-out;--trans-anim:.4s ease-in-out;--global-max-width:1100px;--nav-height:60px;--gutter:15px;--shadow-lighter:0 5px 20px #00000040;--shadow-light:0 5px 20px #0006;--default-shadow:0 10px 20px #00000080;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--radius-round:9999px;--brand-50:#e1faff;--brand-100:#cdf0ff;--brand-200:#9fdefa;--brand-300:#6dccf6;--brand-400:#46bcf2;--brand-500:#2cb2f1;--brand-600:#0ea5e9;--brand-700:#0098d7;--brand-800:#0087c2;--brand-900:#0075ac;--bg-dark:#050609;--bg:#0a0c10;--bg-light:#101319;--bg-lighter:#171c23;--bg-bright:#21272f;--main-color:#f2f4f8;--fg-lighter:#9ba3b2;--border-color:#333b47;--accent-light:var(--brand-400);--accent:var(--brand-500);--accent-dark:var(--brand-700);--accent-contrast:var(--bg-dark);--success-bg:#12291c;--success-fg:#6ee7b7;--error-bg:#33161a;--error-fg:#f87171;--info-bg:#16222e;--info-fg:#7dd3fc;--warning-fg:#fbbf24}.alt-section{--bg:var(--bg-light)}.alt-section-dark{--bg:var(--bg-dark)}@keyframes scroll-cascade{0%,to{color:var(--accent-dark);opacity:.3}35%{color:var(--accent-light);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes spin{to{transform:rotate(360deg)}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--bg);color:var(--main-color);box-sizing:border-box;margin:0;font-size:12pt}a{color:inherit;transition:var(--trans-default);text-decoration:none}a:hover{color:var(--accent)}.link{color:var(--accent);position:relative}.link:before{content:"";background-color:var(--accent);width:0;height:2px;transition:var(--trans-default);display:block;position:absolute;bottom:0;left:0}.link:hover:before{width:100%}.link svg{vertical-align:-.15em;margin-left:.4em}a,a>*,.button{cursor:pointer}button{font:inherit;border:none}h1{margin:0 0 20px;font-size:3em;font-weight:800}h2{margin:10px 0 15px;font-size:2em;font-weight:700}h3{margin:5px 0 10px;font-size:1.2em;font-weight:600}h4{text-transform:capitalize;margin:5px 0;font-size:1em;font-weight:600}.section-heading{margin:0 0 20px;font-size:3em;font-weight:800}.style-headline{text-transform:lowercase;margin:0;font-size:1em;font-weight:600}body:lang(ko),.lang-switcher{font-family:var(--font-sans),var(--font-korean),sans-serif}img{max-width:100%}p{opacity:.8;margin:0 0 10px;line-height:1.5em}p a{border-bottom:2px solid var(--main-color)}p a:hover{border-color:var(--accent)}.p-capped{max-width:750px}.p-no-margin{margin:0}ul{opacity:.8;margin:0 0 10px}li{margin:0 0 5px;line-height:1.5em}b{font-weight:700}.bold{font-size:.8em;font-weight:700}.light{font-size:.8em;font-weight:400}.block{display:block}.spinner{animation:1s linear infinite spin}.portrait-photo{border-radius:var(--radius-round);transition:var(--trans-default)}.portrait-photo:hover{transform:scale(1.05)}@media screen and (max-width:1000px){.hero-portrait{order:-1;align-items:flex-start;margin-bottom:20px}.hero-portrait .portrait-photo{width:80px;height:80px}}.scroll-down{transition:opacity var(--trans-anim),visibility var(--trans-anim);flex-direction:column;align-items:center;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.scroll-down-hidden{opacity:0;visibility:hidden;pointer-events:none}.scroll-chevron{font-family:var(--font-vt);color:var(--accent);font-size:1.4em;line-height:.62;animation:1.6s ease-in-out infinite scroll-cascade;display:block}.scroll-chevron:before{content:"v"}.scroll-chevron:first-child{transform:translateY(8px)scale(2,.6)}.scroll-chevron:nth-child(2){animation-delay:.2s;transform:scale(2,.6)}.scroll-chevron:nth-child(3){animation-delay:.4s;transform:translateY(-8px)scale(2,.6)}@media (prefers-reduced-motion:reduce){.scroll-chevron{opacity:.7;animation:none}}.hidden{display:none!important}#portrait{box-shadow:var(--default-shadow);position:relative}#portrait,#portrait:after,#portrait img{border-radius:var(--radius-lg);transition:var(--trans-default)}#portrait img{filter:grayscale();width:312px;height:312px;display:block}#portrait:after{content:"";z-index:1;background:linear-gradient(to bottom, var(--accent), var(--bg));opacity:.3;width:100%;height:100%;display:block;position:absolute;top:0;left:0}#portrait:hover{transform:scale(1.1)}#portrait:hover img{filter:grayscale(0%)}#portrait:hover:after{opacity:0}.scroll-to-top{visibility:hidden;position:fixed;bottom:40px;right:40px}.scroll-to-top a{border-radius:var(--radius-sm);background-color:var(--accent);width:45px;height:45px;color:var(--main-color);transition:var(--trans-default);justify-content:center;align-items:center;font-size:1.5em;display:flex}.scroll-to-top a:hover{opacity:.8;box-shadow:var(--shadow-light)}.visible{visibility:visible;animation:fade-in var(--trans-anim)}.typewriter{font-family:var(--font-vt);text-transform:uppercase;color:var(--accent);letter-spacing:.2em;margin:5px 0 10px;font-size:1.6em;font-weight:400;line-height:normal}.typewriter:after{content:"_";margin-left:5px;font-weight:700;animation:.7s infinite blink}.simple-bg{background-image:url(../media/simple-bg.3vug3g4q3r3rc.svg);background-position:50%;background-repeat:no-repeat;background-size:cover}#top{view-timeline-name:--hero-exit;overflow:hidden}#top .container{z-index:1;position:relative}#top .scroll-down{z-index:1}.terminal-bg{z-index:0;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:fixed;inset:0}#footer span{color:var(--fg-lighter);margin-bottom:10px;font-size:.8em;font-weight:600}#footer .light{font-size:.7em;font-weight:400}#footer a:hover{color:var(--accent)}#footer .social-media-container{margin-top:0}#footer .terminal-prompt{font-family:var(--font-vt);color:var(--main-color);font-size:.9em;font-weight:400;line-height:normal}#footer .terminal-prompt span{font:inherit;color:var(--accent)}#footer .terminal-prompt:after{content:"_";margin-left:5px;font-weight:700;animation:.7s infinite blink}.secondary-route-header{flex-direction:column;gap:20px;display:flex}.projects-grid{grid-template-columns:repeat(2,1fr);gap:30px 40px;width:100%;margin:20px 0;display:grid}.project{padding:20px calc(var(--gutter) - 2px);border-radius:var(--radius-md);transition:var(--trans-default);border:2px solid #0000}.project:hover{color:inherit;border-color:var(--border-color);background-color:color-mix(in srgb, var(--bg-lighter) 40%, transparent);box-shadow:var(--shadow-light)}.project{flex-direction:column;display:flex}.project p{opacity:.8;margin:0 0 15px;font-size:.9em}.project:hover .project-stack span{color:var(--accent)}.project-heading{align-items:center;gap:12px;margin:0 0 10px;font-size:1.5em;font-weight:800;display:flex}.project-source{transition:var(--trans-default);align-items:center;margin-left:4px;padding:4px;font-size:.6em;display:flex}.project-source:hover{color:var(--accent);transform:scale(1.2)}.project-stack{gap:8px;margin-bottom:0;display:flex}.project-stack span{font-family:var(--font-vt);transition:var(--trans-default)}.project-stack span:after{color:var(--main-color);opacity:.2;content:"/";margin-left:8px}.project-stack span:last-child:after{display:none}.publication{padding:20px calc(var(--gutter) - 2px);border-radius:var(--radius-md);transition:var(--trans-default);border:2px solid #0000}.publication:hover{color:inherit;border-color:var(--border-color);background-color:color-mix(in srgb, var(--bg-lighter) 40%, transparent);box-shadow:var(--shadow-light)}.publication{flex-direction:column;width:100%;margin:20px 0;display:flex}.publication h3{margin:0 0 15px;font-size:1.3em;font-weight:800}.publication p{opacity:.8;margin:20px 0;font-size:.8em}.publication:hover .publication-doi{color:var(--accent)}.publication-doi{transition:var(--trans-default);font-size:1.1em;font-family:var(--font-vt);align-self:start}.publication-metadata{margin-bottom:5px;font-size:.9em;font-weight:600}.publication-authors{margin-left:10px;font-weight:400}.metadata-separator{opacity:.5;margin:0 8px}.publication-keywords{gap:12px;margin:5px 0;font-size:.7em;display:flex}.publication-keywords span:before{content:"#";color:var(--accent);margin-right:4px;font-weight:700}section{color:var(--main-color);padding:20px 0;display:flex;position:relative}.padding-section{padding:90px 0}.full-height{box-sizing:border-box;height:100vh}.container{width:100%;max-width:var(--global-max-width);margin:0 auto}.row{flex-wrap:wrap;align-items:flex-start;width:100%;display:flex}.row-reversed{flex-direction:row-reverse}.padding-row{padding:20px 0!important}.row-slim{padding:10px 0}.row-slim div:first-of-type{padding-left:0!important}.row-slim div:last-of-type{padding-right:0!important}.row-1{max-width:75%}.x-axis-space-between{justify-content:space-between!important}.x-axis-centered{justify-content:center!important}.x-axis-start{justify-content:flex-start!important}.x-axis-end{justify-content:flex-end!important}.y-axis-centered{align-items:center!important}.y-axis-stretched{align-items:stretch!important}.column{box-sizing:border-box;width:100%;padding:0 var(--gutter);flex-direction:column;justify-content:center;display:flex}.column-left{box-sizing:border-box;width:100%;padding:0 var(--gutter);text-align:left;flex-direction:column;justify-content:center;align-items:flex-start;display:flex}.column-centered{box-sizing:border-box;width:100%;padding:0 var(--gutter);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.column-right{box-sizing:border-box;width:100%;padding:0 var(--gutter);text-align:right;flex-direction:column;justify-content:center;align-items:flex-end;display:flex}.column-flex{box-sizing:border-box;width:100%;padding:0 var(--gutter);flex-wrap:wrap;justify-content:space-between;display:flex}.column-min{box-sizing:border-box;width:100%;padding:0 var(--gutter);flex-direction:column;justify-content:center;width:auto;display:flex}.col-alt-padding .row:first-of-type{padding-top:0!important}.col-alt-padding .row:last-of-type{padding-bottom:0!important}.col-alt-padding .row-slim:first-of-type{padding-top:10px!important}.col-alt-padding .row-slim:last-of-type{padding-bottom:10px!important}.col-no-padding{padding:0}@media screen and not (max-width:1000px){.col-2{max-width:50%}}@media screen and (max-width:1000px){.col-2{width:100%;max-width:100%}}@media screen and not (max-width:1000px){.col-3{max-width:33.3%}.col-3-double{max-width:66.6%}}@media screen and (600px<width<=1000px){.col-3,.col-3-double{width:50%;max-width:50%}}@media screen and (max-width:1000px){.col-3,.col-3-double{width:100%;max-width:100%}}@media screen and not (max-width:900px){.col-4{max-width:25%}.col-4-triple{max-width:75%}}@media screen and (600px<width<=900px){.col-4,.col-4-triple{width:50%;max-width:50%}}@media screen and (max-width:600px){.col-4{width:100%;max-width:100%}}.col-border{border:2px solid var(--border-color);margin:15px 0;padding-top:15px;padding-bottom:15px}.col-margin{margin:20px 0}.nowrap{flex-wrap:nowrap}@media screen and (500px<width<=800px){.row-on-smaller-screens{flex-direction:row;justify-content:space-evenly}}@media screen and (max-width:500px){.row-on-smaller-screens{flex-direction:column;justify-content:center}}.nav{width:100%;height:var(--nav-height);z-index:10;color:var(--main-color);position:fixed;top:0;left:0}.nav ul{opacity:0;transition:var(--trans-default);margin:0;padding:0;display:none;position:absolute;top:30%;left:50%;transform:translate(-50%,-30%)}.nav ul li{transition:var(--trans-default);margin:0 0 15px;list-style:none}.nav ul li a{padding:1.4rem;font-size:1.7em;font-weight:500;display:block}.nav ul li a:hover{color:var(--accent)}.nav .nav-top-bar{width:100%;max-width:var(--global-max-width);height:var(--nav-height);padding:0 var(--gutter);box-sizing:border-box;align-items:center;margin:0 auto;display:flex;position:relative}.nav .nav-switcher{opacity:.8;z-index:11;width:60px;height:60px;transition:var(--trans-default);justify-content:center;align-items:center;display:flex;position:absolute;right:0}.nav .nav-switcher button{background-color:#0000;flex-direction:column;justify-content:space-between;align-items:flex-end;width:40px;height:40px;padding:10px;display:flex}.nav .nav-switcher .top-line,.nav .nav-switcher .middle-line,.nav .nav-switcher .bottom-line{background-color:var(--main-color);border-radius:var(--radius-round);width:18px;height:2px;transition:var(--trans-default);display:block}.nav .nav-switcher .middle-line{width:24px}.nav .nav-switcher,.nav .nav-switcher *{cursor:pointer}.nav .nav-switcher:hover{opacity:1}.nav.nav-visible{background-color:var(--bg-dark);opacity:.9;height:100%}.nav.nav-visible ul{opacity:1;display:block}.nav.nav-visible .top-line{width:24px;transform:translateY(9px)rotate(45deg)}.nav.nav-visible .bottom-line{width:24px;transform:translateY(-9px)rotate(-45deg)}.nav.nav-visible .middle-line{width:0}.adjust-to-nav{margin-top:var(--nav-height)}.contact-form{flex:1;grid-template-columns:repeat(2,1fr);gap:30px;min-width:0;display:grid}.contact-form>*{grid-column:1/-1}.contact-form .half-input{grid-column:span 1}.input-wrapper{width:100%;position:relative}.input-wrapper span{opacity:.7;width:fit-content;font-size:.7em;position:absolute;bottom:10px;right:10px}.error-message{color:var(--error-fg);font-size:.8em}.warning-message{color:var(--warning-fg);font-size:.8em}input,textarea{font:inherit;box-sizing:border-box;cursor:text;width:100%;color:var(--main-color);border-radius:var(--radius-sm);transition:var(--trans-default);box-shadow:var(--shadow-light);outline:2px solid var(--border-color);background-color:color-mix(in srgb, var(--bg-lighter) 40%, transparent);border:none;padding:15px 25px;font-size:.8em;font-weight:500;display:block}input::placeholder,textarea::placeholder{color:var(--fg-lighter)}input:hover,textarea:hover{background-color:color-mix(in srgb, var(--bg-lighter) 60%, transparent)}input:focus,textarea:focus{background-color:color-mix(in srgb, var(--bg-lighter) 80%, transparent);outline:2px solid var(--accent)}textarea{resize:vertical;height:15em;min-height:5em;max-height:30em;transition:all var(--trans-default),height 0s linear}.empty-input{color:var(--error-fg)}.captcha-wrapper{margin:10px 0}.captcha-wrapper span{display:block}.contact-option{text-align:left;flex-direction:row;align-items:center;margin:0 0 20px;display:flex}.contact-option div{display:block}.contact-option div span{white-space:nowrap;display:block}.contact-option svg{margin-right:15px;font-size:1.5em;display:block}@media screen and (max-width:800px){.scroll-to-top{background-color:var(--bg-dark);border-radius:var(--radius-sm);padding:10px;bottom:20px;right:20px}.nowrap{flex-wrap:wrap!important}.column-min{text-align:center;align-items:center;width:100%!important}}@media screen and (min-width:600px){body{font-size:14pt}}@media screen and (max-width:800px){.padding-section{padding:90px 0}.projects-grid,.contact-form{grid-template-columns:1fr}}
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/fef07dbb0973bf53-s.3p2_lha1f2xer.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.1qq4vpdcun5oj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/53b9e256198e5412-s.390ncx5urfkfu.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.21jp631_3pja2.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.0wgildi0cnwt9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_ff61a596-module__UdeZcG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_ff61a596-module__UdeZcG__variable{--font-sans:"Geist", "Geist Fallback"}
