@import "https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css";:root{--bg:#f8f7f4;--surface:#f0efe9;--text:#272b27;--muted:#747970;--line:#ddded5;--accent:#3f6fa6;--soft:#e9eff7;--serif:Georgia,"Times New Roman",serif;color-scheme:light;font-synthesis:none;font-family:Pretendard Variable,Pretendard,-apple-system,BlinkMacSystemFont,system-ui,Segoe UI,sans-serif}:root[data-theme=dark]{--bg:#191d24;--surface:#232a34;--text:#e3e7ef;--muted:#a3adbd;--line:#363f4d;--accent:#94b8e2;--soft:#253345;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.8}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer;color:inherit}a,button{-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.3}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:var(--accent);color:var(--bg)}[hidden]{display:none!important}.shell{max-width:1008px;margin:auto;padding:0 40px}.site-header{border-bottom:1px solid var(--line);align-items:center;gap:35px;height:104px;display:flex}.wordmark{font:700 42px/1 var(--serif);letter-spacing:-2.7px}.wordmark span{color:var(--accent)}.site-header nav{align-items:center;gap:30px;height:100%;margin-left:auto;display:flex}.site-header nav a{letter-spacing:1px;color:var(--muted);align-items:center;height:100%;font-size:11px;font-weight:600;display:flex;position:relative}.site-header nav a:hover,.site-header nav a[aria-current=page]{color:var(--accent)}.site-header nav a[aria-current=page]:after{content:"";background:var(--accent);height:1px;position:absolute;bottom:29px;left:0;right:0}.theme-toggle{border:1px solid var(--line);background:0 0;border-radius:50%;place-items:center;width:35px;height:35px;display:grid}.theme-toggle:hover{background:var(--soft)}.sun{display:none}[data-theme=dark] .sun{display:block}[data-theme=dark] .moon{display:none}.skip-link{background:var(--text);color:var(--bg);z-index:20;padding:10px 20px;position:fixed;top:-80px;left:20px}.skip-link:focus{top:15px}.eyebrow{letter-spacing:1px;color:var(--muted);font-family:inherit;font-size:12px;font-weight:550;line-height:1.6;display:block}.accent{color:var(--accent)}.hero{padding:65px 0 43px;position:relative}.hero .eyebrow{align-items:center;gap:9px;display:flex}.status-dot{background:var(--accent);border-radius:50%;width:6px;height:6px}.hero h1{letter-spacing:-3.6px;margin:23px 0 28px;font-size:57px;font-weight:550;line-height:1.44}.hero-last{color:var(--accent)}.hero-last .accent{color:var(--text)}.hero-bottom{justify-content:space-between;align-items:flex-end;display:flex}.hero-name{margin:0 0 10px;font-size:14px;font-weight:600}.hero-name span{color:var(--muted);margin-left:12px;font-size:11px;font-weight:400}.hero-description{color:var(--muted);margin:0;font-size:13px;line-height:1.95}.text-link{white-space:nowrap;align-items:center;gap:22px;font-size:11px;display:inline-flex}.text-link:hover{color:var(--accent)}.hero-bottom>.text-link{padding-bottom:5px}.hero-index{text-align:right;color:var(--muted);letter-spacing:1.1px;margin-top:47px;font:9px monospace;display:block}.mobile-break{display:none}.home-section{margin-top:24px}.section-heading{border-bottom:1px solid var(--text);justify-content:space-between;align-items:center;gap:16px;padding-bottom:16px;display:flex}.section-heading h2{letter-spacing:-.5px;margin:0;font-size:15px;font-weight:600}.section-en{letter-spacing:.7px;color:var(--muted);margin-left:15px;font-family:inherit;font-size:12px;font-weight:500;line-height:1.6}.post-row{border-bottom:1px solid var(--line);grid-template-columns:112px 1fr;gap:14px;padding:28px 0 26px;display:grid}.post-row time{color:var(--muted);padding-top:4px;font:11px/2 monospace}.post-row h3{letter-spacing:-.6px;margin:0 0 7px;font-size:17px;font-weight:550;line-height:1.65}.post-row h3 a{display:block}.post-row h3 a:hover{color:var(--accent)}.row-arrow{float:right;color:var(--muted);font-size:18px;font-weight:400;transition:transform .2s}.post-row h3 a:hover .row-arrow{color:var(--accent);transform:translate(2px,-2px)}.post-content>p{color:var(--muted);margin:0 30px 13px 0;font-size:12px;line-height:1.95}.tags{color:var(--muted);flex-wrap:wrap;gap:12px;font-size:10px;display:flex}.tags a:hover{color:var(--accent);text-underline-offset:4px;text-decoration:underline}.sample-label{letter-spacing:.7px;color:var(--accent);margin-bottom:7px;font-family:inherit;font-size:11px;font-weight:550;line-height:1.6;display:inline-block}.home-section+.home-section{margin-top:58px}.project-feature{grid-template-columns:1fr 1fr;align-items:center;gap:36px;margin-top:25px;display:grid}.project-art{aspect-ratio:1.48;color:#3f6fa6;background:#e7edf5;border:1px solid #d6e0ee;flex-direction:column;justify-content:space-between;padding:22px;display:flex;position:relative;overflow:hidden}.project-art:before{content:"";opacity:.55;border:1px solid #c2d1e4;border-radius:50%;width:230px;height:230px;position:absolute;top:-90px;right:-65px;box-shadow:0 0 0 30px #dfe7f2,0 0 0 31px #c2d1e4,0 0 0 60px #dfe7f2,0 0 0 61px #c2d1e4}.art-top,.art-bottom{letter-spacing:1.1px;font:8px monospace;position:relative}.art-logo{font:700 77px/1 var(--serif);letter-spacing:-5px;position:relative}.art-logo span{color:#88a4c7}.art-bottom{justify-content:space-between;display:flex}.art-bottom>span{font-size:18px}.project-feature-info h3,.project-feature-info h2{letter-spacing:-.7px;margin:11px 0;font-size:20px;font-weight:550}.project-feature-info h3>span,.project-feature-info h2>span{float:right;font-size:16px}.project-feature-info p{color:var(--muted);margin-bottom:21px;font-size:12px;line-height:1.95}.project-feature-info .tags{gap:8px}.project-feature-info .tags span{border:1px solid var(--line);padding:2px 8px}.project-status,.project-feature:hover h3,.project-feature:hover h2{color:var(--accent)}.project-more{margin-top:24px}.site-footer{border-top:1px solid var(--line);color:var(--muted);margin-top:90px;padding:30px 0 25px}.site-footer>div:first-child{justify-content:space-between;align-items:center;display:flex}.footer-logo{font:700 25px var(--serif);letter-spacing:-1px;color:var(--text)}.site-footer>div:first-child>span{font-size:10px}.footer-bottom{justify-content:space-between;margin-top:23px;font-size:9px;display:flex}.footer-bottom>span:last-child{font-family:monospace}.footer-dot{margin:0 12px}.footer-bottom a:hover{color:var(--accent)}.page-heading{padding:60px 0 45px}.page-heading h1{font:400 48px/1.2 var(--serif);letter-spacing:-3px;margin:15px 0}.page-heading p{color:var(--muted);margin:18px 0 0;font-size:13px}.posts-toolbar{border-bottom:1px solid var(--text);justify-content:space-between;align-items:center;gap:20px;padding-bottom:20px;display:flex}.tag-filters{flex-wrap:wrap;gap:8px;display:flex}.tag-filters button{color:var(--muted);background:0 0;border:1px solid #0000;padding:4px 9px;font-size:10px}.tag-filters button.active{background:var(--text);color:var(--bg)}.tag-filters button:hover:not(.active){border-color:var(--line)}.tag-filters button span{opacity:.7;margin-left:5px}kbd{border:1px solid var(--line);border-radius:3px;padding:1px 5px;font:10px monospace}.pagination{color:var(--muted);justify-content:center;align-items:center;gap:26px;margin-top:35px;font:11px monospace;display:flex}.pagination button{border:1px solid var(--line);background:0 0;width:29px;height:29px}.empty-state{text-align:center;color:var(--muted);padding:50px 0}.article-heading{max-width:760px;padding:45px 0 30px}.back-link{color:var(--muted);margin-bottom:38px;font-size:11px;display:block}.back-link:hover{color:var(--accent)}.article-heading h1{letter-spacing:-1.7px;margin:16px 0;font-size:37px;font-weight:600;line-height:1.5}.article-description{color:var(--muted);font-size:14px;line-height:1.9}.article-meta{color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:25px;font-size:11px;display:flex}.sample-notice{background:var(--soft);border-left:2px solid var(--accent);max-width:700px;color:var(--muted);margin-bottom:33px;padding:13px 17px;font-size:11px}.article-layout{grid-template-columns:minmax(0,700px) 160px;gap:40px;display:grid}.prose{overflow-wrap:anywhere;min-width:0;font-size:16px;line-height:1.95}.prose h2{letter-spacing:-.8px;margin:46px 0 16px;font-size:23px;font-weight:600;line-height:1.6}.prose h2:first-child{margin-top:0}.prose h3{margin-top:32px;font-size:18px}.prose p{margin:0 0 22px}.prose a{color:var(--accent);text-underline-offset:4px;text-decoration:underline}.prose ul,.prose ol{padding-left:24px}.prose li{margin:6px 0}.prose blockquote{border-left:2px solid var(--accent);color:var(--muted);background:var(--soft);margin:25px 0;padding:5px 20px}.prose blockquote p{margin:10px 0}.prose :not(pre)>code{background:var(--surface);border-radius:3px;padding:3px 6px;font-size:.85em}.prose pre{border:1px solid var(--line);border-radius:3px;max-width:100%;padding:42px 20px 22px;font-size:12px;line-height:1.85;position:relative;overflow:auto}.copy-code{background:var(--bg);color:var(--muted);border:1px solid var(--line);padding:2px 8px;font-size:10px;position:absolute;top:8px;right:10px}.prose table{border-collapse:collapse;max-width:100%;margin:24px 0;font-size:13px;display:block;overflow:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);padding:11px 15px}.prose th{background:var(--surface)}.prose img{max-width:100%;height:auto}.toc{border-left:1px solid var(--line);align-self:start;padding-left:17px;position:sticky;top:32px}.toc .eyebrow{margin-bottom:16px;font-size:11px}.toc nav{flex-direction:column;gap:10px;display:flex}.toc a{color:var(--muted);font-size:10px;line-height:1.8}.toc a.active,.toc a:hover{color:var(--accent)}.toc a.nested{padding-left:10px}.article-navigation{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:40px;margin-top:60px;padding-top:24px;display:grid}.article-navigation a span{color:var(--muted);margin-bottom:10px;font-size:10px;display:block}.article-navigation strong{font-size:13px;font-weight:500}.article-navigation a:hover strong{color:var(--accent)}.article-navigation>a:last-child{text-align:right}.project-prose{max-width:700px}.project-links{gap:25px;margin-top:20px;display:flex}.project-large{margin-top:30px}.about-intro{padding:25px 0 50px;position:relative;overflow:hidden}.about-intro h2{letter-spacing:-2px;margin:18px 0 10px;font-size:48px;font-weight:550;line-height:1.3}.about-role{color:var(--muted);margin:0;font-size:14px}.about-description{letter-spacing:-.4px;margin-top:30px;font-size:18px;line-height:1.9}.about-monogram{font:230px/1 var(--serif);color:var(--line);letter-spacing:-20px;user-select:none;position:absolute;top:0;right:45px}.about-monogram span{color:var(--soft)}.about-section{border-top:1px solid var(--line);grid-template-columns:230px 1fr;gap:25px;padding:30px 0;display:grid}.about-section h2{margin:0;font-size:14px;font-weight:550}.about-section h2 .section-en{margin:7px 0;display:block}.about-section p{color:var(--muted);margin:0 0 15px;font-size:13px}.about-section strong{color:var(--text);font-weight:550}.not-found{padding:100px 0}.not-found h1{letter-spacing:-2px;font-size:45px;font-weight:500;line-height:1.6}.not-found p{color:var(--muted);margin-bottom:30px}[data-theme=dark] .astro-code,[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}@media (width>=1400px){.shell{max-width:1080px;padding:0 55px}.hero{padding-top:80px}.hero h1{font-size:64px}.hero-index{margin-top:55px}.site-header{height:110px}}@media (width<=800px){.shell{padding:0 28px}.site-header{gap:22px;height:86px}.site-header nav{gap:22px}.hero h1{font-size:49px}.article-layout{grid-template-columns:minmax(0,1fr);gap:25px}.toc{background:var(--surface);grid-row:1;padding:14px 18px;position:static}.toc nav{flex-flow:wrap;gap:8px 16px}.toc .eyebrow{margin-bottom:10px}.toc a.nested{padding-left:0}.article-heading{max-width:100%}.project-feature{gap:24px}.project-feature-info h3,.project-feature-info h2{font-size:17px}.about-monogram{right:20px}}@media (width<=560px){.shell{padding:0 22px}.site-header{flex-wrap:wrap;gap:14px;height:82px;padding-bottom:0;position:relative}.wordmark{font-size:34px}.site-header nav{gap:15px}.site-header nav a{letter-spacing:.6px;font-size:8px}.site-header nav a[aria-current=page]:after{bottom:22px}.theme-toggle{width:28px;height:28px}.theme-toggle svg{width:14px;height:14px}.hero{padding:46px 0 30px}.hero h1{letter-spacing:-2.5px;margin:23px 0 25px;font-size:40px}.hero .eyebrow{letter-spacing:.7px;font-size:11px}.hero-bottom{flex-direction:column;align-items:flex-start;gap:20px}.hero-name{font-size:13px}.hero-description{font-size:12px}.hero-bottom>.text-link{font-size:10px}.hero-index{margin-top:30px;font-size:8px}.section-heading h2{font-size:14px}.section-en{letter-spacing:.4px;margin-left:8px;font-size:11px}.section-heading>.text-link{gap:8px;font-size:9px}.post-row{grid-template-columns:1fr;gap:6px;padding:23px 0}.post-row time{padding:0;font-size:10px}.post-row h3{letter-spacing:-.5px;font-size:16px}.post-content>p{margin-right:15px;font-size:12px}.tags{gap:10px;font-size:9px}.sample-label{margin:0 0 6px;font-size:11px}.project-feature{grid-template-columns:1fr;gap:22px}.project-art{aspect-ratio:1.8}.project-feature-info h3,.project-feature-info h2{font-size:19px}.home-section+.home-section{margin-top:42px}.site-footer{margin-top:60px}.site-footer>div:first-child{align-items:flex-start;gap:15px}.site-footer>div:first-child>span{padding-top:8px;font-size:9px}.footer-bottom{gap:15px;font-size:8px}.footer-dot{margin:0 6px}.page-heading{padding:45px 0 32px}.page-heading h1{letter-spacing:-2px;font-size:40px}.page-heading p{font-size:12px}.posts-toolbar{flex-direction:column;align-items:flex-start;gap:20px}.article-heading h1{letter-spacing:-1px;font-size:28px}.article-description{font-size:13px}.article-heading{padding-top:30px}.back-link{margin-bottom:28px}.prose{font-size:15px}.prose h2{font-size:21px}.article-navigation{gap:20px}.article-navigation strong{font-size:12px}.about-intro h2{font-size:39px}.about-monogram{z-index:-1;font-size:150px;top:15px;right:0}.about-description{font-size:16px}.about-section{grid-template-columns:1fr;gap:16px}.about-section h2 .section-en{margin-left:10px;display:inline}.not-found h1{font-size:32px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.project-heading,.posts-heading{padding-bottom:24px}@media (width<=560px){.project-heading,.posts-heading{padding-bottom:18px}}.posts-search{border:1px solid var(--line);background:var(--surface);width:100%;min-height:50px;color:var(--muted);border-radius:4px;align-items:center;gap:14px;margin-bottom:24px;padding:0 17px;display:flex}.posts-search:focus-within{border-color:var(--accent)}.posts-search>svg{flex-shrink:0}.posts-search input{width:100%;min-width:0;color:var(--text);background:0 0;border:0;outline:none;flex:1;padding:14px 0;font-size:13px}.posts-search input::placeholder{color:var(--muted)}.posts-search input::-webkit-search-cancel-button{appearance:none}.posts-search button{color:var(--muted);background:0 0;border:0;flex-shrink:0;padding:3px;font-size:11px}.posts-search button:hover{color:var(--accent)}.posts-search-status{color:var(--muted);margin:18px 0 0;font-size:11px}.footer-handle{text-align:right;color:var(--muted);font-family:monospace;font-size:12px;display:block}.hero-profile{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:40px;display:grid}.hero .profile-name{letter-spacing:-1.3px;margin:18px 0 16px;font-size:34px;font-weight:650;line-height:1.3}.profile-name>span{color:var(--muted);letter-spacing:-.2px;vertical-align:middle;margin-left:12px;font-size:13px;font-weight:400;display:inline-block}.profile-link{margin-top:24px}.profile-photo{border:1px solid var(--line);border-radius:3px;max-width:100%;height:auto;display:block}.home-photo{width:112px}.about-with-photo{grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:40px;display:grid}.about-photo{width:147px;margin-top:10px}@media screen{.about-with-photo{padding:22px 0 40px}.about-with-photo h2{letter-spacing:-1.6px;margin:16px 0 9px;font-size:42px}.about-with-photo .about-role{font-size:13px}.about-with-photo .about-description{margin-top:24px;font-size:16px}.about-with-photo .resume-actions{margin-top:20px}}.resume-actions{flex-wrap:wrap;gap:14px 26px;margin-top:24px;display:flex}.resume-nav{color:var(--muted);flex-wrap:wrap;gap:12px 26px;padding:0 0 24px;font-size:11px;display:flex}.resume-nav a:hover{color:var(--accent)}.resume-list{min-width:0}.resume-entry+.resume-entry{border-top:1px solid var(--line);margin-top:25px;padding-top:24px}.resume-entry h3{letter-spacing:-.3px;margin:6px 0 7px;font-size:15px;font-weight:550;line-height:1.7}.resume-entry p{margin-bottom:0}.resume-date{color:var(--muted);white-space:nowrap;font-family:monospace;font-size:10px;line-height:1.8;display:block}.resume-note{color:var(--muted);margin-top:8px;font-size:11px;display:block}.resume-entry-compact{justify-content:space-between;align-items:baseline;gap:18px;display:flex}.resume-entry-compact h3{margin-top:0}.resume-email{color:var(--accent);overflow-wrap:anywhere;margin-top:12px;font-size:17px;display:inline-block}.resume-email span{margin-left:16px}@media (width<=560px){.hero-profile{align-items:start;gap:20px}.hero .profile-name{margin-top:16px;font-size:28px}.profile-name>span{margin:8px 0 0;font-size:12px;display:block}.hero-copy>.eyebrow{letter-spacing:.5px;font-size:11px}.home-photo{width:80px;margin-top:24px}.about-with-photo{gap:20px}.about-photo{width:80px}.about-with-photo h2{font-size:34px}.about-with-photo .about-description{font-size:13px}.resume-actions{flex-direction:column;align-items:flex-start;gap:12px}.resume-entry-compact{flex-direction:column;gap:8px}.resume-entry-compact time{order:-1}.resume-email{font-size:15px}}@media print{@page{size:A4;margin:16mm}:root[data-theme]{--bg:#fff;--text:#222;--muted:#555;--line:#ddd;--accent:#3f6fa6;color-scheme:light}.site-header,.site-footer,.skip-link,.page-heading,.resume-nav,.resume-actions{display:none}.shell{max-width:none;padding:0}.about-intro{padding:0 0 20px}.about-intro h2{font-size:30px}.about-description{margin-top:16px;font-size:14px}.about-photo{width:90px;margin:0}.about-section{grid-template-columns:145px minmax(0,1fr);gap:20px;padding:18px 0}.about-section h2{break-after:avoid}.about-section p{font-size:11px}.resume-entry{break-inside:avoid}.resume-entry h3{font-size:12px}.resume-entry+.resume-entry{margin-top:12px;padding-top:12px}.resume-email{font-size:13px}}
