:root{--bg:#fff;--ink:#202124;--muted:#666970;--faint:#85888e;--line:#e8e9eb;--subtle:#f6f6f7;--hover:#f0f1f2;--font:"Plus Jakarta Sans", "Pretendard", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#171819;--ink:#ededee;--muted:#a1a3a8;--faint:#8e9096;--line:#303135;--subtle:#202123;--hover:#2b2c2f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-width:none;scroll-padding-top:112px}body{background:var(--bg);color:var(--ink);font:15px/1.8 var(--font);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-decoration:none}a:hover{text-underline-offset:5px;text-decoration:underline}button,input{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}img{max-width:100%;height:auto}svg{vertical-align:middle;flex-shrink:0}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{letter-spacing:-.035em;overflow-wrap:anywhere;line-height:1.4}:focus-visible{outline:2px solid var(--muted);outline-offset:5px}::selection{background:#87939840}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:20;background:var(--bg);padding:10px;position:fixed;top:-100px;left:16px}.skip-link:focus{top:10px}.site-header{z-index:10;background:var(--bg);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:20px;max-width:800px;margin:0 auto;padding:20px 28px;display:flex;position:sticky;top:0}.site-header nav{color:var(--muted);gap:24px;font-size:12px;display:flex}.header-tools{align-items:center;gap:18px;display:flex}.language-toggle{white-space:nowrap;gap:10px;font-size:12px;display:flex}.language-toggle button{color:var(--muted);padding:5px 0}.language-toggle button[aria-pressed=true]{color:var(--ink);text-underline-offset:5px;text-decoration:underline}.theme-toggle{gap:4px;display:flex}.theme-toggle button{width:28px;height:28px;color:var(--faint);place-items:center;display:grid}.theme-toggle button[aria-pressed=true]{color:var(--ink)}main{max-width:800px;margin:0 auto;padding:0 28px}.introduction{padding:68px 0 76px}.intro-heading{justify-content:space-between;align-items:center;gap:30px;display:flex}.introduction h1{letter-spacing:-.06em;font-size:54px;font-weight:650}.profile-name-motion{text-align:left;width:100%;font:inherit;letter-spacing:inherit;padding:0;display:grid}.profile-name-motion>span{grid-area:1/1;min-width:0;animation:12s ease-in-out infinite profile-name-slide}.profile-name-motion .profile-name-ko{animation-delay:-6s}@keyframes profile-name-slide{0%,40%{opacity:1;transform:translateY(0)}50%{opacity:0;transform:translateY(3px)}50.01%,90%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce),print{.profile-name-motion>span{opacity:1;animation:none;transform:none}.profile-name-motion .profile-name-en{grid-area:1/1}.profile-name-motion .profile-name-ko{color:var(--muted);grid-area:2/1;font-size:.5em}}.intro-role{color:var(--muted);margin-top:10px;font-size:16px}.portrait{object-fit:cover;border-radius:3px;width:110px;height:130px}.intro-prose{max-width:650px;margin-top:32px}.intro-prose p{color:var(--muted);line-height:1.95}.intro-prose p+p{margin-top:18px}.intro-details{gap:9px;margin:28px 0 0;font-size:13px;display:grid}.intro-details>div{grid-template-columns:90px minmax(0,1fr);gap:16px;display:grid}.intro-details dt{color:var(--muted)}.intro-details dd{overflow-wrap:anywhere;margin:0}.intro-details a{text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:4px}.intro-links{flex-wrap:wrap;gap:22px;margin-top:28px;display:flex}.intro-links a{align-items:center;gap:8px;font-size:13px;display:flex}.content-section{border-top:1px solid var(--line);padding:42px 0;scroll-margin-top:25px}.content-section>h2{margin-bottom:28px;font-size:20px;font-weight:600}.sample-note{color:var(--faint);margin:-14px 0 20px;font-size:11px}.project-filters{flex-wrap:wrap;gap:19px;margin-bottom:25px;display:flex}.project-filters button{color:var(--faint);border-bottom:1px solid #0000;padding:0 0 4px;font-size:12px}.project-filters button[aria-pressed=true]{color:var(--ink);border-color:var(--ink)}.project-list{flex-direction:column;gap:29px;display:flex}.project-row{grid-template-columns:52px minmax(0,1fr) 20px;gap:20px;display:grid}.project-year,.timeline-date{color:var(--faint);font-variant-numeric:tabular-nums;padding-top:3px;font-size:12px}.project-row h3{font-size:16px;font-weight:600}.project-row p{color:var(--muted);margin-top:7px;font-size:13px;line-height:1.8}.project-open{color:var(--muted)}.project-thumbnail{object-fit:contain;border-radius:3px;width:100%;max-height:250px;margin-bottom:15px;display:block}.stack-tags{color:var(--faint);flex-wrap:wrap;gap:12px;margin:10px 0 0;padding:0;font-size:11px;list-style:none;display:flex}.skill-groups{flex-direction:column;gap:21px;display:flex}.skill-group{grid-template-columns:145px 1fr;align-items:start;gap:20px;display:grid}.skill-group h3{padding-top:5px;font-size:13px;font-weight:500}.skill-group p{display:none}.skill-badges{flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;display:flex}.skill-badges li{border:1px solid var(--line);border-radius:4px;align-items:center;gap:7px;padding:4px 9px;font-size:12px;display:flex}.skill-mark{display:flex}.skill-mark svg{width:14px;height:14px}.timeline{flex-direction:column;gap:35px;display:flex}.timeline article{grid-template-columns:120px 1fr;gap:25px;display:grid}.timeline h3{font-size:15px;font-weight:550}.timeline p{color:var(--muted);margin-top:7px;font-size:13px}.timeline-description{white-space:pre-line}.timeline .timeline-org{color:var(--faint);margin-top:3px;font-size:12px}.recognition-grid{flex-direction:column;gap:28px;display:flex}.group-title{color:var(--muted);margin-bottom:14px;font-size:12px;font-weight:500}.recognition-list{flex-direction:column;gap:15px;margin:0;padding:0;list-style:none;display:flex}.recognition-list li{grid-template-columns:120px 1fr;gap:25px;display:grid}.recognition-list h4{font-size:14px;font-weight:500}.recognition-list p{color:var(--faint);margin-top:3px;font-size:12px}.writing-intro{color:var(--muted);justify-content:space-between;gap:15px;font-size:13px;display:flex}.writing-intro>p{display:none}.writing-list{margin:20px 0 0;padding:0;list-style:none}.writing-list li+li{margin-top:21px}.writing-list li>a{grid-template-columns:95px 1fr 16px;align-items:baseline;gap:20px;display:grid}.writing-list time{color:var(--faint);font-size:12px}.writing-list h3{font-size:14px;font-weight:500}.writing-list p{color:var(--muted);margin-top:5px;font-size:12px}.writing-list a>div>span{display:none}.writing-list svg{color:var(--faint)}.writing-empty{color:var(--muted);margin-top:15px;font-size:13px}.writing-empty a{display:none}.beyond-work{padding-block:20px}.beyond-work>details{padding:14px 0}.beyond-work>details>summary{color:var(--muted);cursor:pointer;justify-content:space-between;align-items:center;font-size:14px;list-style:none;display:flex}.beyond-work>details>summary::-webkit-details-marker{display:none}.beyond-work>details>summary:after{content:"+";font-size:18px;font-weight:400}.beyond-work>details[open]>summary:after{content:"−"}.github-widget{margin-top:25px;padding-bottom:15px}.rail-heading{justify-content:space-between;align-items:center;display:flex}.rail-heading h2{font-size:14px;font-weight:500}.rail-heading h2 svg{margin-right:7px}.github-user,.github-status{color:var(--faint);font-size:12px}.github-stats{gap:36px;margin:16px 0;display:flex}.github-stats strong{font-size:21px;font-weight:550;display:block}.github-stats span{color:var(--muted);font-size:11px}.repo-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin:20px 0 0;padding:0;list-style:none;display:grid}.repo-list strong{overflow-wrap:anywhere;font-size:13px;font-weight:550}.repo-list p{color:var(--muted);margin-top:6px;font-size:12px}.repo-meta{color:var(--faint);flex-wrap:wrap;gap:10px;margin-top:8px;font-size:10px;display:flex}.repo-meta>span{align-items:center;gap:3px;display:flex}.playlist{padding-top:25px}.playlist-intro h3{font-size:15px;font-weight:500}.playlist-intro p{color:var(--muted);margin:8px 0;font-size:13px}.playlist-intro .text-action{margin-top:12px}.small-muted{color:var(--faint);margin-top:10px;font-size:11px;display:block}.track-list{margin:22px 0 0;padding:0;list-style:none}.track-list a{align-items:center;gap:15px;padding:11px 0;display:flex}.track-number{color:var(--faint);width:17px;font-size:11px}.track-title strong{font-size:13px;font-weight:500;display:block}.track-title>span{color:var(--faint);font-size:12px;display:block}.track-duration{color:var(--faint);margin-left:auto;font-size:11px}.track-arrow{color:var(--faint)}.music-player{margin-top:20px}.music-player iframe{border:0;border-radius:5px;width:100%}.contact-section{padding-bottom:65px}.contact-section>h2{margin-bottom:14px}.contact-section>p{color:var(--muted);font-size:14px}.inline-link{text-underline-offset:5px;margin-top:19px;font-size:13px;text-decoration:underline;display:inline-block}.text-action{align-items:center;gap:7px;padding:0;font-size:12px;display:inline-flex}.contact-actions{flex-wrap:wrap;align-items:center;gap:24px;margin-top:20px;display:flex}.button{text-underline-offset:5px;align-items:center;gap:8px;padding:0;font-size:13px;text-decoration:underline;display:inline-flex}.copy-status{color:var(--muted);width:100%;font-size:12px}.copy-status:empty{display:none}.site-footer{max-width:800px;color:var(--faint);justify-content:space-between;align-items:center;margin:auto;padding:22px 28px 35px;font-size:11px;display:flex}.project-detail{padding:65px 0}.back-link{color:var(--muted);align-items:center;gap:7px;margin-bottom:40px;font-size:12px;display:inline-flex}.demo-caption{color:var(--faint);margin-bottom:20px;font-size:11px}.detail-eyebrow{color:var(--muted);gap:16px;font-size:12px;display:flex}.project-detail h1{margin-top:18px;font-size:44px}.detail-subtitle{margin-top:6px;font-size:18px}.detail-summary{color:var(--muted);margin:20px 0 32px}.project-detail-image{border-radius:3px;width:100%;height:auto;margin-bottom:30px;display:block}.project-facts{border-block:1px solid var(--line);grid-template-columns:1fr 1fr;gap:20px;margin:0;padding:24px 0;display:grid}.project-facts>div:last-child{grid-column:1/-1}.project-facts dt{color:var(--faint);font-size:11px}.project-facts dd{margin:5px 0 0;font-size:13px}.detail-links{gap:20px;margin-top:25px;display:flex}.project-story section{margin-top:38px}.project-story h2{margin-bottom:14px;font-size:20px}.project-story p{color:var(--muted);white-space:pre-line;overflow-wrap:anywhere;line-height:1.9}.highlights{margin:0;padding:0;list-style:none}.highlights li{color:var(--muted);margin:10px 0;font-size:14px}.highlights svg{display:none}.next-project{border-top:1px solid var(--line);justify-content:space-between;align-items:center;margin-top:50px;padding-top:25px;display:flex}.next-project .eyebrow{color:var(--faint);font-size:11px;display:block}.next-project strong{margin-top:7px;font-size:20px;font-weight:500;display:block}.not-found{padding:100px 0}.not-found h1{margin-bottom:20px;font-size:27px}.not-found p{color:var(--muted);margin-bottom:25px}@media (max-width:600px){html{scroll-padding-top:140px}.site-header{flex-wrap:wrap;gap:12px;padding:16px 22px}.header-tools{gap:12px;margin-left:auto}.site-header nav{gap:17px;font-size:11px}.theme-toggle{gap:0}.theme-toggle button{width:23px}main{padding-inline:24px}.introduction{padding:48px 0 55px}.intro-heading{flex-wrap:wrap;gap:20px}.introduction h1{font-size:clamp(32px,7.2vw,43px)}.intro-role{font-size:14px}.intro-prose{margin-top:26px}.intro-prose p{font-size:14px}.portrait{width:74px;height:94px}.content-section{padding-block:32px}.project-row{grid-template-columns:1fr 18px;gap:5px 13px}.project-year{grid-column:1/-1;margin-bottom:5px;font-size:11px}.skill-group{grid-template-columns:1fr;gap:11px}.skill-badges{gap:6px}.timeline article{grid-template-columns:1fr;gap:7px}.recognition-list li{grid-template-columns:72px 1fr;gap:14px}.writing-list li>a{grid-template-columns:1fr 16px;gap:6px}.writing-list time{grid-column:1/-1;font-size:11px}.repo-list{grid-template-columns:1fr}.site-footer{padding-inline:24px}.project-detail{padding-top:40px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@media print{.site-header,.site-footer,.beyond-work{display:none}main{max-width:none}.content-section{break-inside:avoid}}
