@font-face{font-family:Pretendard Variable;src:url(/fonts/PretendardVariable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}:root{font-family:Pretendard Variable,Apple SD Gothic Neo,Malgun Gothic,system-ui,sans-serif;color:#252b27;background:#fcfdfa;font-synthesis:none;-webkit-font-smoothing:antialiased;scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0;min-width:320px}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid #446b56;outline-offset:4px}::selection{background:#d9e7d9}.container{width:min(100% - 64px,1160px);margin-inline:auto}.skip-link{position:absolute;left:14px;top:-50px;z-index:10;padding:9px 12px;background:#253b2e;color:#fff}.skip-link:focus{top:10px}.site-header{border-bottom:1px solid #d8dfd7}.header-inner{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:30px}.brand{font-size:16px;font-weight:700;letter-spacing:.04em}.site-header nav{display:flex;gap:28px;font-size:13px;color:#59665c}.site-header nav a:hover,.site-header nav a[aria-current=page]{color:#1e3325;text-decoration:underline;text-underline-offset:7px}.eyebrow{margin:0;font-size:12px;font-weight:600;color:#657a68}.hero-message{margin:0;font-size:clamp(24px,3.1vw,39px);line-height:1.35;letter-spacing:-.045em;font-weight:600;word-break:keep-all}.hero-description{max-width:680px;margin:24px 0 0;font-size:16px;line-height:1.8;color:#55635a;word-break:keep-all}.text-links{display:flex;flex-wrap:wrap;gap:26px;margin-top:30px;font-size:13px;font-weight:600}.text-links a:hover,.resume-link:hover,.footer-inner a:hover{text-decoration:underline;text-underline-offset:4px}.main-project-card{position:relative;isolation:isolate}.main-project-card:hover:before,.main-project-card:focus-visible:before{background:#fcfdfa;box-shadow:0 4px 14px #253b2e14}.main-project-grid a:hover h3,.main-project-grid a:focus-visible h3{color:#326849;text-decoration:underline;text-underline-offset:4px}.archive-heading>a{font-size:12px;color:#526b56}.archive-heading>a:hover{text-decoration:underline;text-underline-offset:4px}.archive-card{min-width:0}.archive-card>img{display:block;width:100%;aspect-ratio:16 / 10;object-fit:cover;background:#e8eee7}.archive-card h3{margin:14px 0 5px;font-size:16px;line-height:1.4;letter-spacing:-.025em}.archive-card p{word-break:keep-all;overflow-wrap:break-word;margin:0;color:#647267;font-size:12px;line-height:1.7}.archive-year+h3{margin-top:5px}.archive-empty{margin:0;padding:22px 0;color:#647267;font-size:13px}.document-layout{display:grid;grid-template-columns:180px minmax(0,1fr);gap:48px;align-items:start}.document-column{min-width:0}.document-toc{position:sticky;top:72px;margin-top:76px;max-height:calc(100vh - 104px);overflow-y:auto}.document-layout--resume .document-toc{margin-top:112px}.document-toc summary{margin-bottom:15px;color:#687d6c;font-size:12px;font-weight:600;list-style:none;pointer-events:none}.document-toc summary::-webkit-details-marker{display:none}.document-toc nav{display:grid;gap:3px}.document-toc nav a{padding:7px 0 7px 12px;border-left:2px solid transparent;color:#68756b;font-size:13px;line-height:1.5;word-break:keep-all;overflow-wrap:anywhere}.document-toc nav a.toc-subheading{padding-left:24px;font-size:12px}.document-toc nav a:hover{color:#326849}.document-toc nav a[aria-current=location]{color:#245f3b;border-left-color:#52725b;font-weight:600}.document-column .article-body :is(h1,h2,h3,h4,h5,h6)[id]{scroll-margin-top:100px}.document-column .article-body :is(h1,h2,h3,h4,h5,h6)[id]:focus{outline:none}.article{padding-top:36px;padding-bottom:105px}.back-link{display:inline-block;font-size:13px;color:#526b56}.back-link:hover{text-decoration:underline;text-underline-offset:4px}.article-header{max-width:760px;padding-top:65px;padding-bottom:48px;border-bottom:1px solid #ccd8cc}.article-header h1{font-size:clamp(38px,5vw,62px);line-height:1.18;letter-spacing:-.06em;margin:12px 0 9px}.article-subtitle{font-size:18px;color:#566c5b;margin:0}.article-coverage{font-size:12px;line-height:1.7;color:#687d6c;margin:25px 0 0}.article-body{max-width:760px;padding-top:24px;font-size:16px;line-height:1.9;overflow-wrap:anywhere}.article-body p{margin:20px 0}.article-body :is(h1,h2,h3,h4,h5,h6){font-weight:700;line-height:1.4;letter-spacing:-.025em;margin:35px 0 12px;word-break:keep-all;overflow-wrap:break-word}.article-body h1{font-size:2em}.article-body h2{font-size:1.5em}.article-body h3{font-size:1.25em}.article-body h4{font-size:1.125em}.article-body h5{font-size:1.0625em}.article-body h6{font-size:1em}.article-body :is(h1,h2){margin:54px 0 16px;padding-top:28px;border-top:1px solid #d8e0d6}.article-body ul,.article-body ol{padding-left:24px;margin:20px 0}.article-body li{padding-left:3px;margin:5px 0}.article-body blockquote{border-left:2px solid #819d84;padding-left:18px;margin:26px 0;color:#596b5b}.article-body a{color:#2f6847;text-decoration:underline;text-underline-offset:3px}.article-body img{display:block;width:auto;max-width:min(100%,560px);max-height:560px;height:auto;object-fit:contain;margin:30px auto}.article-body code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.88em;background:#edf2eb;padding:2px 4px}.article-body pre{max-width:100%;overflow-x:auto;padding:18px;background:#edf2eb}.article-body pre code{padding:0}.mermaid-loading{margin:24px 0;padding:15px;border:1px solid #d0dbd0;color:#687d6c;font-size:13px}.mermaid-diagram{max-width:100%;overflow-x:auto;margin:30px 0;text-align:center}.mermaid-diagram svg{display:block;width:auto;max-width:100%;height:auto;margin-inline:auto}.mermaid-error{margin:24px 0}.mermaid-error p{color:#8b4a37;font-size:13px}.mermaid-error pre{text-align:left}.article-body table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse;margin:27px 0;font-size:14px}.article-body th,.article-body td{padding:9px 16px 9px 0;border-bottom:1px solid #d0dbd0;text-align:left}.article-body th{font-weight:700}.resume-page{max-width:900px;padding-top:72px;padding-bottom:105px}.resume-title-row{display:flex;align-items:baseline;justify-content:space-between;gap:20px}.resume-download{white-space:nowrap;color:#526b56;font-size:12px}.resume-download:hover{text-decoration:underline;text-underline-offset:4px}.resume-contact{display:grid;gap:9px;margin:26px 0 0;font-size:14px;line-height:1.6}.resume-contact>div{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px}.resume-contact dt{color:#687d6c}.resume-contact a:hover{text-decoration:underline;text-underline-offset:4px}.resume-body{line-height:1.9;max-width:none;padding-top:0;word-break:keep-all;overflow-wrap:break-word}.resume-body li>ul{margin-top:8px;margin-bottom:18px}.resume-section-level-2>:not(h2){margin-left:24px}.resume-section-level-3>:not(h3){margin-left:20px}.resume-section-level-4>:not(h4){margin-left:16px}.resume-section-level-3>h3{margin-top:48px}.resume-section-level-4>h4{margin-top:40px}.resume-body li>ul li{margin-top:6px}.resume-body .resume-heading-with-date{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:16px}.resume-heading-title{min-width:0}.resume-heading-date{color:#687d6c;font-size:13px;font-weight:400;letter-spacing:0;white-space:nowrap}.site-footer{border-top:1px solid #d8dfd7}.footer-inner{min-height:75px;display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px;color:#607164}.footer-inner>div{display:flex;gap:20px}@media(max-width:760px){.container{width:min(100% - 36px,1160px)}.work-section>.container{width:min(100% - 36px,1440px)}.hero{padding:60px 0 64px}.hero-description{font-size:15px}.work-section{padding:48px 0 72px}.work-section h2{margin-bottom:22px}.archive-section{padding:46px 0 65px}.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 16px}.article{padding-top:25px;padding-bottom:75px}.article-header{padding-top:44px;padding-bottom:38px}.article-body{font-size:15px}.resume-page{padding-top:48px;padding-bottom:72px}.resume-section-level-2>:not(h2){margin-left:12px}.resume-section-level-3>:not(h3){margin-left:10px}.resume-section-level-4>:not(h4){margin-left:8px}.resume-body .resume-heading-with-date{gap:10px}.resume-heading-date{font-size:11px}}@media(max-width:440px){.header-inner{min-height:58px}.site-header nav{gap:18px;font-size:12px}.hero{padding:49px 0 56px}.hero h1{font-size:45px}.hero-message{font-size:27px}.hero-description{font-size:14px;margin-top:20px}.text-links{gap:18px;margin-top:25px;font-size:12px}.work-section h2{font-size:28px}.archive-heading h2{font-size:21px}.archive-grid{grid-template-columns:1fr;gap:25px}.archive-card h3{margin-top:11px}.article-header h1{font-size:39px}}@media(max-width:1100px){.main-project-grid{justify-content:start}.main-project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:960px){.document-layout{grid-template-columns:1fr;gap:0}.document-toc,.document-layout--resume .document-toc{position:static;margin-top:24px;max-height:none}.document-toc summary{display:flex;justify-content:space-between;margin:0;padding:12px 0;border-bottom:1px solid #d8e0d6;pointer-events:auto;cursor:pointer}.document-toc summary:after{content:"+"}.document-toc details[open] summary:after{content:"−"}.document-toc nav{max-height:280px;overflow-y:auto;padding:12px 0}.document-layout .resume-page{padding-top:28px}.document-column .article-body :is(h1,h2,h3,h4,h5,h6)[id]{scroll-margin-top:80px}}@media(max-width:760px){.main-project-grid{gap:22px 16px}}@media(max-width:440px){.main-project-grid{grid-template-columns:1fr;gap:25px}}@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important}}html:has(.document-layout--resume),body:has(.document-layout--resume){color:#161616;background:#fff}body:has(.document-layout--resume) ::selection{background:#ddd}body:has(.document-layout--resume) a:focus-visible{outline-color:#444}body:has(.document-layout--resume) .skip-link{background:#222}body:has(.document-layout--resume) :is(.site-header,.site-footer){border-color:#ddd}body:has(.document-layout--resume) :is(.site-header nav,.footer-inner){color:#161616}body:has(.document-layout--resume) .site-header nav a:is(:hover,[aria-current=page]){color:#161616}.document-layout--resume .document-toc summary{color:#161616;border-color:#ddd}.document-layout--resume .document-toc nav a{color:#161616}.document-layout--resume .document-toc nav a:hover{color:#161616}.document-layout--resume .document-toc nav a[aria-current=location]{color:#161616;border-left-color:#444}.resume-page :is(.eyebrow,.resume-contact,.resume-contact dt,.resume-heading-date){color:#555}.resume-page :is(.resume-download,.article-body a){color:#161616}.resume-body :is(h1,h2,th,td){border-color:#ddd}.resume-body blockquote{color:#161616;border-color:#888}.resume-body :is(code,pre){background:#eee}.resume-body .resume-section-level-3>h3+p{color:#555}.resume-body h2{margin-top:68px;padding-top:40px;margin-bottom:24px}.resume-body p{margin-top:16px;margin-bottom:16px}.resume-body li>p{margin:8px 0}.resume-body li>ul li{margin-top:9px}.resume-page .resume-contact dt{color:#161616;font-weight:700}.resume-contact>div{grid-template-columns:76px minmax(0,1fr)}.resume-contact a[href^="https://"]{color:#161616;text-decoration:underline;text-underline-offset:3px}.resume-body .resume-section-level-3>h3+p>strong{color:#555}.resume-body .resume-section-level-3>h3+p+.resume-section-level-4>h4{margin-top:24px}.resume-body .resume-section-level-3:has(>.resume-section-level-4)+.resume-section-level-3>h3{margin-top:64px}.resume-header h1{margin:12px 0 0;font-size:clamp(40px,5vw,56px);line-height:1.2;letter-spacing:.055em;position:relative;top:-10px}.resume-body .resume-section-level-2:first-child>p{font-size:calc(1em + 1px)}@font-face{font-family:Resume Latin;src:url(/fonts/ResumeLatin-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Resume Latin;src:url(/fonts/ResumeLatin-Bold.woff2) format("woff2");font-weight:600 900;font-style:normal;font-display:swap}.archive-year,.resume-heading-date{font-variant-numeric:lining-nums tabular-nums}.resume-contact,.resume-body li>strong>a{font-family:Resume Latin,Pretendard Variable,sans-serif;font-kerning:normal;letter-spacing:0;font-variant-numeric:normal}.resume-contact dd{margin:0;overflow-wrap:anywhere;-webkit-user-select:text;user-select:text}body:has(.hero){color:#222;background:#fff}body:has(.hero) ::selection{background:#e5e9e5}body:has(.hero) a:focus-visible{outline-color:#333}body:has(.hero) :is(.site-header,.site-footer){border-color:#e4e4e4}body:has(.hero) .site-header nav{color:#666}body:has(.hero) .site-header nav a:is(:hover,[aria-current=page]){color:#222}body:has(.hero) .footer-inner{color:#666}.hero{padding-top:76px;padding-bottom:75px;display:flex;align-items:flex-end;justify-content:space-between;gap:32px;padding-block:48px}.hero .eyebrow{color:#666;font-size:13px;font-weight:400}.hero h1{margin:10px 0 0;font-size:56px;line-height:1.15;font-weight:700;letter-spacing:.04em}.hero .text-links{margin:0 0 7px;gap:24px;font-size:14px;font-weight:400}.hero .text-links>span{color:#666}.work-section{border-top:1px solid #d8dfd7;background:#fff;padding:40px 0 64px;border-color:#e4e4e4}.work-section>.container{width:min(100% - 64px,1160px)}.work-section h2{max-width:none;margin:0 0 28px;font-size:26px;letter-spacing:-.025em}.main-project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 24px;justify-content:start}.main-project-card h3{font-size:18px;font-weight:650;margin-top:16px;margin-bottom:7px}.main-project-card p{font-size:14px;line-height:1.65;color:#666}.main-project-card:before{content:"";position:absolute;inset:-8px;z-index:-1;background:transparent;transition:background .15s,box-shadow .15s}.main-project-card:is(:hover,:focus-visible):before{background:#f6f7f6;box-shadow:none}.main-project-grid a:is(:hover,:focus-visible) h3{color:#222}.archive-section{border-top:1px solid #d8dfd7;padding:40px 0 64px;background:#fff;border-color:#e4e4e4}.archive-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:28px}.archive-heading h2{margin:0;font-size:22px;line-height:1.25;letter-spacing:-.025em}.archive-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px 24px}.archive-section .archive-card h4{font-size:16px;margin-top:14px;margin-bottom:7px}.archive-card>img{background:#f2f2f2}.archive-section .archive-card p{font-size:13px;line-height:1.7;color:#666}.archive-year{display:block;margin-top:14px;color:#777;font-size:12px}@media(max-width:1100px){.archive-grid,.main-project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.hero{align-items:flex-start;flex-direction:column;gap:24px;padding-block:36px}.hero h1{font-size:46px}.hero .text-links{flex-wrap:wrap;margin:0;gap:12px 22px;font-size:13px}.work-section>.container{width:min(100% - 36px,1160px)}.work-section,.archive-section{padding-block:32px 48px}.main-project-grid,.archive-grid{gap:32px 20px}.work-section h2{font-size:24px;margin-bottom:24px}.archive-heading h2{font-size:21px}}@media(max-width:440px){.main-project-grid,.archive-grid{grid-template-columns:1fr}.hero .text-links>span{flex-basis:100%}.main-project-card h3{margin-top:14px}}.archive-year-group+.archive-year-group{margin-top:48px}.archive-group-heading{margin:0 0 20px;color:#555;font-size:18px;font-weight:500;line-height:1.4;font-variant-numeric:lining-nums tabular-nums}.archive-section .archive-card h4{line-height:1.4;letter-spacing:-.025em}@media(max-width:760px){.archive-year-group+.archive-year-group{margin-top:40px}.archive-group-heading{margin-bottom:18px}}.archive-card p.project-fields{margin-top:12px;font-size:12px;line-height:1.6;color:#666;letter-spacing:0}
