:root{color:#171717;font-synthesis:none;text-rendering:optimizelegibility;--text:#171717;--muted:#737373;--soft-muted:#a3a3a3;--line:#e8e8e5;--accent:#315f57;--max:1040px;background:#fff;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:#fff;min-width:320px;min-height:100vh;margin:0}button{font:inherit;cursor:pointer}a{color:inherit}.site-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{width:min(var(--max), calc(100% - 48px));border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:70px;margin:0 auto;display:flex}.wordmark{color:var(--text);letter-spacing:-.02em;white-space:nowrap;background:0 0;border:0;padding:0;font-size:15px;font-weight:650}.desktop-nav{align-items:center;gap:21px;display:flex}.desktop-nav button,.mobile-nav button{color:#969696;background:0 0;border:0;padding:8px 0;font-size:11px;font-weight:500}.desktop-nav button.active,.mobile-nav button.active{color:var(--text)}.desktop-nav button.active{border-bottom:1px solid var(--text)}.menu-button{color:var(--text);background:0 0;border:0;padding:8px;display:none}.mobile-nav{z-index:20;border:1px solid var(--line);background:#fff;padding:14px 18px;display:none;position:fixed;top:68px;left:18px;right:18px}.mobile-nav button{text-align:left}main{flex:1}.page{width:min(var(--max), calc(100% - 48px));margin:0 auto;padding:90px 0 110px}.section-label{color:var(--accent);letter-spacing:.14em;margin:0 0 14px;font-size:10px;font-weight:700}.profile-hero{grid-template-columns:160px minmax(0,1fr);align-items:start;gap:44px;max-width:860px;display:grid}.profile-photo-wrap{background:#f5f5f3;width:160px;overflow:hidden}.profile-photo{object-fit:cover;width:100%;height:auto;display:block}.profile-intro{padding-top:1px}.profile-intro h1{letter-spacing:-.045em;margin:0;font-size:clamp(34px,4.4vw,42px);font-weight:650;line-height:1.06}.profile-role{color:#383838;margin:14px 0 0;font-size:13px}.profile-copy{max-width:650px;color:var(--muted);word-break:keep-all;margin:26px 0 0;font-size:13px;line-height:1.85}.github-link{color:#4c4c4c;border-bottom:1px solid #cfcfcb;align-items:center;gap:7px;width:fit-content;margin-top:22px;padding-bottom:2px;font-size:11px;text-decoration:none;display:inline-flex}.resume-section{margin-top:82px}.resume-heading,.lab-heading{border-bottom:1px solid #222;grid-template-columns:60px 1fr;align-items:baseline;padding-bottom:14px;display:grid}.resume-heading>span,.lab-heading>span{color:var(--soft-muted);font-size:10px}.resume-heading h2,.lab-heading h2{letter-spacing:-.02em;margin:0;font-size:16px;font-weight:640}.resume-row{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:start;gap:28px;padding:20px 0 19px 60px;display:grid}.resume-text strong{color:#272727;font-size:13px;font-weight:600;display:block}.resume-text p{color:#898989;word-break:keep-all;margin:6px 0 0;font-size:11px;line-height:1.6}.resume-meta{color:var(--accent);white-space:nowrap;padding-top:1px;font-size:11px;font-weight:600}.page-heading{max-width:780px;margin-bottom:48px}.page-heading h1{letter-spacing:-.04em;margin:0;font-size:clamp(32px,4.7vw,44px);font-weight:640;line-height:1.16}.page-heading>p:last-child{max-width:700px;color:var(--muted);word-break:keep-all;margin:21px 0 0;font-size:13px;line-height:1.8}.process-flow{border-top:1px solid #222;border-bottom:1px solid var(--line);flex-wrap:wrap;gap:12px 24px;margin-bottom:54px;padding:16px 0;display:flex}.process-flow span{color:#666;font-size:11px}.process-flow span:not(:last-child):after{content:"→";color:#b4b4b4;margin-left:24px}.portfolio-list{border-top:1px solid #222}.portfolio-row{border-bottom:1px solid var(--line);grid-template-columns:60px 1fr;padding:25px 0;display:grid}.portfolio-index{color:#aaa;padding-top:4px;font-size:10px}.portfolio-title{justify-content:space-between;align-items:baseline;gap:20px;display:flex}.portfolio-title h2{letter-spacing:-.02em;margin:0;font-size:16px;font-weight:610;line-height:1.45}.portfolio-title>span{color:var(--accent);white-space:nowrap;font-size:10px}.portfolio-main>p{max-width:720px;color:var(--muted);margin:9px 0 0;font-size:12px;line-height:1.7}.portfolio-footnote{color:#9b9b9b;margin:22px 0 0 60px;font-size:10px;line-height:1.6}.lab-section{margin-top:72px}.hypothesis-list{border-bottom:1px solid var(--line)}.hypothesis-row{border-bottom:1px solid var(--line);grid-template-columns:60px 1fr;padding:22px 0;display:grid}.hypothesis-row:last-child{border-bottom:0}.hypothesis-row>span{color:#aaa;padding-top:3px;font-size:10px}.hypothesis-row strong{font-size:13px;font-weight:620}.hypothesis-row p{max-width:760px;color:var(--muted);word-break:keep-all;margin:7px 0 0;font-size:12px;line-height:1.72}.problem-format-list{border-bottom:1px solid var(--line)}.problem-format-row{border-bottom:1px solid var(--line);grid-template-columns:60px 180px 1fr;align-items:baseline;gap:0;padding:18px 0;display:grid}.problem-format-row:last-child{border-bottom:0}.problem-format-row>span{color:#aaa;font-size:10px}.problem-format-row strong{color:#333;font-size:12px;font-weight:600}.problem-format-row p{color:#858585;margin:0;font-size:11px;line-height:1.6}.challenge-row{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:24px;padding:22px 0;display:grid}.challenge-row strong{font-size:14px;font-weight:620}.challenge-row p{max-width:760px;color:var(--muted);margin:7px 0 0;font-size:12px;line-height:1.7}.challenge-row>span{color:var(--accent);padding-top:3px;font-size:10px}.lab-note{color:#999;margin:16px 0 0 60px;font-size:10px;line-height:1.6}.topic-line{border-top:1px solid #222;border-bottom:1px solid var(--line);flex-wrap:wrap;gap:9px 18px;padding:15px 0;display:flex}.topic-line span{color:#707070;font-size:10px}.news-list{border-bottom:1px solid var(--line)}.news-row{border-bottom:1px solid var(--line);grid-template-columns:170px 1fr;gap:22px;padding:22px 0;display:grid}.news-row:last-child{border-bottom:0}.news-meta{color:#999;flex-direction:column;gap:5px;font-size:9px;display:flex}.news-meta span:first-child{color:var(--accent)}.news-main a{color:#242424;font-size:13px;font-weight:620;line-height:1.55;text-decoration:none;display:inline}.news-main a:hover{border-bottom:1px solid #999}.news-main p{max-width:720px;color:var(--muted);margin:7px 0 5px;font-size:11px;line-height:1.65}.news-main small{color:#aaa;font-size:9px}.news-empty,.tech-note-row{border-bottom:1px solid var(--line);padding:22px 0 22px 60px}.news-empty strong,.tech-note-row strong{font-size:12px;font-weight:600}.news-empty p,.tech-note-row p{color:#8a8a8a;max-width:720px;margin:7px 0 0;font-size:11px;line-height:1.65}footer{width:min(var(--max), calc(100% - 48px));border-top:1px solid var(--line);color:#a0a0a0;justify-content:space-between;margin:0 auto;padding:23px 0 30px;font-size:10px;display:flex}@media (width<=760px){.topbar,.page,footer{width:min(100% - 32px, var(--max))}.desktop-nav{display:none}.menu-button{display:block}.mobile-nav{gap:2px;display:grid}.page{padding-top:62px;padding-bottom:82px}.profile-hero{grid-template-columns:112px 1fr;gap:24px}.profile-photo-wrap{width:112px}.profile-intro h1{font-size:32px}.profile-role{font-size:11px;line-height:1.5}.profile-copy{font-size:12px}.resume-section,.lab-section{margin-top:62px}.resume-heading,.lab-heading{grid-template-columns:42px 1fr}.resume-row{gap:18px;padding-left:42px}.portfolio-row,.hypothesis-row{grid-template-columns:42px 1fr}.portfolio-footnote,.lab-note{margin-left:42px}.problem-format-row{grid-template-columns:42px 135px 1fr}.news-row{grid-template-columns:120px 1fr}.news-empty,.tech-note-row{padding-left:42px}footer{flex-direction:column;gap:5px}}@media (width<=520px){.profile-hero{grid-template-columns:96px 1fr;gap:18px}.profile-photo-wrap{width:96px}.profile-intro h1{font-size:29px}.profile-copy{grid-column:1/-1;margin-top:20px}.resume-row{grid-template-columns:1fr;gap:8px;padding-left:0}.resume-heading,.lab-heading,.portfolio-row,.hypothesis-row{grid-template-columns:34px 1fr}.portfolio-footnote,.lab-note{margin-left:34px}.process-flow span:not(:last-child):after{margin-left:12px}.problem-format-row{grid-template-columns:34px 1fr;gap:6px 0}.problem-format-row p{grid-column:2}.challenge-row{grid-template-columns:1fr;gap:8px}.news-row{grid-template-columns:1fr;gap:9px}.news-meta{flex-direction:row;gap:12px}.news-empty,.tech-note-row{padding-left:0}}
