*{box-sizing:border-box}body,html{margin:0;padding:0;background:#e8eaee}body{font-family:Pretendard Variable,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent,#12484A);text-decoration:none}a:hover{color:var(--accent-ink,#0F3D3F);text-decoration:underline}ul{margin:0;padding:0}.resume-page{--bg:#ffffff;--fg:#1b2127;--sub:#5d6873;--accent:#12484A;--accent-ink:#0F3D3F;--line:#e7eaee;--chipbg:#eff3f2;--chipfg:#46525b;--resbg:#f0faf7;--resline:#cfeae1;--sidebg:#132824;--sidefg:#eaf1ee;--sidesub:#92aca3;--sideline:#25443c;--sidechip:#1d3b33;--sidechipfg:#c9ded7;--sidelink:#8fd9cb}.resume-page[data-theme=dark]{--bg:#14171b;--fg:#e7eaee;--sub:#98a3ae;--accent:#35c4b1;--accent-ink:#45cfbc;--line:#272d34;--chipbg:#20262d;--chipfg:#aeb9c4;--resbg:#152420;--resline:#25473c;--sidebg:#0d1f1b;--sidefg:#e2ece8;--sidesub:#85a198;--sideline:#1e3931;--sidechip:#16302a;--sidechipfg:#bcd4cc;--sidelink:#8fd9cb}.resume-page.theme-ready,.resume-page.theme-ready *{transition:background-color .4s ease,color .4s ease,border-color .4s ease}@media (prefers-reduced-motion:reduce){.resume-page.theme-ready,.resume-page.theme-ready *{transition:none}}.mono{font-family:JetBrains Mono,monospace}.controls{position:fixed;top:20px;right:20px;z-index:50;display:flex;gap:8px}.pill-btn{font-family:JetBrains Mono,monospace;font-size:11px;letter-spacing:.08em;padding:8px 15px;border-radius:999px;border:1px solid #c6ccd3;background:#ffffff;color:#3c434b;cursor:pointer;box-shadow:0 4px 14px rgba(15,22,30,.12);transition:background .15s ease}.pill-btn:hover{background:#f1f3f5}.pill-btn-accent{background:#12484A;border-color:#12484A;color:#ffffff}.pill-btn-accent:hover{background:#0F3D3F}.resume-page{width:960px;margin:40px auto;display:grid;grid-template-columns:288px 1fr;background:var(--bg);color:var(--fg);border-radius:4px;overflow:hidden;box-shadow:0 14px 44px rgba(15,22,30,.12);font-size:14px;line-height:1.62}.resume-aside{background:var(--sidebg);color:var(--sidefg);padding:44px 30px 48px;gap:34px;align-content:flex-start}.aside-profile,.resume-aside{display:flex;flex-direction:column}.aside-profile{gap:16px}.photo-slot{width:128px;height:160px;flex:none;border-radius:14px;overflow:hidden;background:var(--sidechip);color:var(--sidesub);display:flex;align-items:center;justify-content:center;font-family:JetBrains Mono,monospace;font-size:12px;border:1px solid var(--sideline)}.photo-slot img{width:100%;height:100%;object-fit:cover;display:block}.name{margin:0;font-size:27px;font-weight:800;color:var(--sidefg);letter-spacing:-.01em}.name-meta{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--sidesub);margin-top:5px}.role-ko{margin-top:12px;font-size:14.5px;font-weight:700;color:var(--sidelink)}.role-en{margin-top:2px;font-size:12px;color:var(--sidesub)}.aside-label{font-family:JetBrains Mono,monospace;font-size:10.5px;letter-spacing:.18em;color:var(--sidesub);font-weight:700;border-bottom:1px solid var(--sideline);padding-bottom:8px}.aside-contact{gap:12px;page-break-inside:avoid;break-inside:avoid}.aside-contact,.contact-item{display:flex;flex-direction:column}.contact-item{gap:2px}.contact-key{font-size:11px;color:var(--sidesub)}.contact-item a{color:var(--sidelink);font-size:13px}.aside-skills{gap:16px}.aside-skills,.skill-group{display:flex;flex-direction:column}.skill-group{gap:8px;page-break-inside:avoid;break-inside:avoid}.skill-group-name{font-size:11.5px;font-weight:700;color:var(--sidesub);letter-spacing:.05em;text-transform:uppercase}.skill-chips{display:flex;flex-wrap:wrap;gap:5px}.skill-chip{font-family:JetBrains Mono,monospace;font-size:10.5px;padding:3px 8px;border-radius:6px;background:var(--sidechip);color:var(--sidechipfg)}.aside-edu{display:flex;flex-direction:column;gap:10px;page-break-inside:avoid;break-inside:avoid}.edu-school{font-size:13px;font-weight:700;color:var(--sidefg)}.edu-meta{margin-top:3px;font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--sidesub)}.resume-main{padding:44px 48px 52px;min-width:0}.section-head{display:flex;flex-direction:column;gap:4px;margin:0 0 14px;page-break-after:avoid;break-after:avoid}.section-head.spaced{margin:38px 0 14px}.section-head.spaced-tight{margin:38px 0 4px}.section-head.spaced-mid{margin:38px 0 6px}.eyebrow{font-family:JetBrains Mono,monospace;font-size:10.5px;letter-spacing:.18em;color:var(--accent-ink);font-weight:700}.section-title{font-size:18px;font-weight:800}.section-title .years{font-size:12px;font-weight:500;color:var(--sub)}.rule{height:1px;background:var(--line);margin-top:6px}.intro{display:flex;flex-direction:column;gap:9px}.intro p{margin:0;font-size:13.5px;line-height:1.7}.job{padding:20px 0 26px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:18px}.job-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;page-break-after:avoid;break-after:avoid}.job-title{font-size:16.5px;font-weight:800}.job-title .job-sub{font-size:12.5px;font-weight:500;color:var(--sub)}.job-period{font-family:JetBrains Mono,monospace;font-size:11.5px;color:var(--sub);white-space:nowrap}.project-title{font-size:15px;font-weight:700;page-break-after:avoid;break-after:avoid}.project-context{margin:7px 0 0;font-size:13.5px;color:var(--sub);line-height:1.6}.project-points{margin:10px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:5px;font-size:13.5px}.results{margin-top:12px;background:var(--resbg);border:1px solid var(--resline);border-radius:8px;padding:12px 16px;page-break-inside:avoid;break-inside:avoid}.results-label{font-family:JetBrains Mono,monospace;font-size:10.5px;letter-spacing:.12em;color:var(--accent-ink);font-weight:700}.results ul{margin:8px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:13.5px;font-weight:600}.tech-chips{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px;page-break-inside:avoid;break-inside:avoid}.tech-chip{font-family:JetBrains Mono,monospace;font-size:11px;padding:3px 9px;border-radius:999px;background:var(--chipbg);color:var(--chipfg)}.oss{display:flex;flex-direction:column;gap:8px;page-break-inside:avoid;break-inside:avoid}.oss-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px}.oss-title{font-size:14.5px;font-weight:700}.oss-title .oss-sub{font-size:12px;font-weight:500;color:var(--sub)}.oss-period{font-family:JetBrains Mono,monospace;font-size:11.5px;color:var(--sub);white-space:nowrap}.oss ul{margin:0;padding-left:17px;display:flex;flex-direction:column;gap:4px;font-size:13px}.activity-row{display:grid;grid-template-columns:150px 1fr;grid-gap:24px;gap:24px;padding:12px 0;border-bottom:1px solid var(--line);page-break-inside:avoid;break-inside:avoid}.activity-row.last{border-bottom:none}.activity-date{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--sub)}.activity-name{font-size:13.5px;font-weight:700}.activity-points{margin:5px 0 0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:3px;font-size:13px;color:var(--sub)}.resume-footer{margin-top:44px;padding-top:14px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:baseline}.resume-footer .updated{font-family:JetBrains Mono,monospace;font-size:10.5px;letter-spacing:.08em;color:var(--sub)}.resume-footer a{font-size:12.5px}@media (max-width:1000px){.resume-page{width:auto;max-width:720px;margin:20px;grid-template-columns:1fr}}@media (max-width:560px){.resume-page{margin:0;border-radius:0}.resume-aside{padding:32px 22px 36px}.resume-main{padding:32px 24px 40px}.job-head,.oss-head{flex-direction:column;gap:4px}.activity-row{grid-template-columns:1fr;gap:4px}}@media print{@page{size:A4 portrait;margin:10mm}body,html{background:#ffffff!important}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.resume-page,.resume-page[data-theme=dark]{--bg:#ffffff;--fg:#1b2127;--sub:#5d6873;--accent:#12484A;--accent-ink:#0F3D3F;--line:#e7eaee;--chipbg:#eff3f2;--chipfg:#46525b;--resbg:#f0faf7;--resline:#cfeae1;--sidebg:#132824;--sidefg:#eaf1ee;--sidesub:#92aca3;--sideline:#25443c;--sidechip:#1d3b33;--sidechipfg:#c9ded7;--sidelink:#8fd9cb}.no-print{display:none!important}.resume-page{display:table!important;table-layout:fixed;width:100%!important;max-width:none!important;margin:0!important;box-shadow:none!important;border-radius:0!important;overflow:visible!important}.resume-aside{display:table-cell!important;width:58mm;vertical-align:top;background:var(--sidebg)!important;padding:12mm 7mm!important}.resume-aside>*+*{margin-top:26px}.photo-slot{width:96px;height:120px}.resume-main{display:table-cell!important;vertical-align:top;padding:12mm 10mm!important}.job-head,.oss-head,.project-title,.section-head{page-break-after:avoid;break-after:avoid}.activity-row,.aside-contact,.aside-edu,.job>div,.oss,.results,.skill-group,.tech-chips{page-break-inside:avoid;break-inside:avoid}.resume-main a{color:var(--fg)!important;text-decoration:none!important}}