:root{font-family:Inter,Pretendard,Noto Sans KR,Malgun Gothic,system-ui,sans-serif;color:#17283b;background:#f6f8fa;font-synthesis:none;font-size:16px;line-height:1.7;--navy:#101e30;--mint:#ace9d1;--muted:#5b6978;--line:#dce3e9}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible{outline:3px solid #168c77;outline-offset:5px}h1,h2,h3,p{margin-top:0}h2{font-size:2rem;line-height:1.4;letter-spacing:-.045em;margin-bottom:12px}h3{font-size:1.15rem;line-height:1.5;letter-spacing:-.025em}p{word-break:keep-all;overflow-wrap:anywhere}ul{padding-left:22px}li{margin-bottom:9px;word-break:keep-all}button{color:inherit}.site-header{height:88px;max-width:1280px;margin:auto;padding:0 48px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:12px;font-weight:700}.brand-sub{font-size:.875rem;color:var(--muted);font-weight:400}.monogram{display:grid;place-items:center;width:56px;height:56px;border-radius:14px;color:var(--mint);background:var(--navy);font-weight:800;letter-spacing:-2px}.monogram.small{width:36px;height:36px;font-size:16px;border-radius:9px}nav{display:flex;gap:28px;font-size:.875rem;align-items:center}nav a:hover,.text-link:hover{text-decoration:underline;text-underline-offset:5px}.nav-contact{font-weight:700}main{max-width:1280px;margin:auto}.hero{background:var(--navy);color:#fff;border-radius:24px;padding:64px;display:grid;grid-template-columns:1.4fr 1fr;gap:56px;margin:0 24px}.eyebrow{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.75rem;letter-spacing:.14em;font-weight:600;color:#506579;margin-bottom:20px}.hero .eyebrow{color:var(--mint)}h1{font-size:clamp(2.1rem,3.9vw,3.5rem);line-height:1.28;font-weight:750;letter-spacing:-.055em;margin-bottom:26px}.mint{color:var(--mint)}.hero-intro{max-width:540px;color:#c2cdda;font-size:1rem;line-height:1.95}.hero-actions{display:flex;gap:26px;align-items:center;margin-top:34px}.button{display:inline-flex;align-items:center;justify-content:center;gap:24px;padding:13px 22px;border:0;border-radius:8px;background:var(--navy);color:#fff;font-weight:650;font-size:.9375rem}.mint-button{background:var(--mint);color:#132d27}.button:hover{filter:brightness(.95)}.text-link{font-size:.875rem;color:#e4eaf0}.hero-caption{font-size:.8125rem;color:#a8b8c9;margin:32px 0 0}.profile-card{align-self:center;border:1px solid #3b4a5d;background:#1a2a3e;border-radius:16px;padding:28px}.card-top{display:flex;justify-content:space-between;color:#a4b5c6;font:.75rem ui-monospace,monospace;letter-spacing:.08em}.profile-name{font-size:1.7rem;font-weight:700;margin:25px 0 0}.profile-name span{display:block;font-size:.875rem;font-weight:400;color:#bdcad7}.experience-number{font-size:2.2rem;font-weight:700;letter-spacing:-.05em;margin-top:24px;color:var(--mint)}.experience-number>span{display:block;color:#cad5e0;font-size:.875rem;font-weight:400;letter-spacing:0}dl{font-size:.8125rem;margin:25px 0}dl>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0}dt{color:#aebed0}dd{margin:0;text-align:right}.growth{font-size:.8125rem;line-height:1.7;color:#c7d7e3;border-top:1px solid #3b4a5d;padding-top:16px;margin-bottom:0}.highlights{display:grid;grid-template-columns:repeat(3,1fr);padding:38px 48px 16px}.highlight{background:none;border:0;text-align:left;padding:8px 28px;border-right:1px solid var(--line)}.highlight:first-child{padding-left:16px}.highlight:last-child{border:0}.metric-index{display:block;color:var(--muted);font-size:.8125rem}.metric-value{display:block;font-size:2.6rem;font-weight:750;letter-spacing:-.05em;margin:8px 0}.metric-value small{font-size:.875rem;font-weight:500;color:var(--muted);margin-left:10px;letter-spacing:0}.metric-detail{font-size:.8125rem;color:var(--muted);display:block}.section{padding:64px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:26px}.section-heading .eyebrow{margin-bottom:10px}.section-heading>p{color:var(--muted);font-size:.9375rem;margin-bottom:16px}.filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 28px}.filters button{border:1px solid var(--line);background:transparent;border-radius:24px;padding:7px 18px;font-size:.875rem}.filters button[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:#fff}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.project-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px;transition:border-color .2s,transform .2s}.project-card:hover{border-color:#75998f;transform:translateY(-2px)}.project-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;font-size:.8125rem;color:#3b6c60}.project-index{font-family:monospace;color:#63778b}.project-card h3{margin:0 0 12px}.project-title{display:flex;width:100%;align-items:center;justify-content:space-between;gap:16px;border:0;background:none;text-align:left;font-weight:700;font-size:1.2rem;padding:0}.project-title span{font-weight:400;color:#63778b}.project-card>p{color:var(--muted);font-size:.9375rem;min-height:3.2em}.tags{display:flex;flex-wrap:wrap;gap:7px}.tags span{font-size:.75rem;border:1px solid #e0e6ec;border-radius:5px;padding:3px 9px;color:#4d5c6d;background:#f7f9fb}.project-result{margin-top:24px;border-top:1px solid #e7ecf0;padding-top:17px;color:#235c4c;font-weight:650;font-size:.9375rem}.source-note{font-size:.8125rem;color:var(--muted);margin-top:20px}.skills-section{background:#eef2f5;margin:0 24px;border-radius:20px;padding:48px 40px}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}.skill-number{font:.8125rem ui-monospace,monospace;color:#527365;display:block;margin-bottom:16px}.skills-grid h3{margin-bottom:12px}.skills-grid p{color:var(--muted);font-size:.875rem;min-height:3.4em}.skills-grid .tags span{background:#fff}.career-section{display:grid;grid-template-columns:1fr 2fr;gap:48px;border-bottom:1px solid var(--line);margin:0 64px;padding:64px 0}.muted{color:var(--muted)}.period{font:.875rem ui-monospace,monospace;color:#536777}.career h3{font-size:1.5rem;margin:0 0 6px}.career .position{color:#386658;font-weight:600}.career ul{color:var(--muted);font-size:.9375rem}.credentials{display:grid;grid-template-columns:1fr 1fr;gap:60px}.credentials article{padding:18px 0;border-bottom:1px solid var(--line)}.credentials h3{margin:0 0 6px;font-size:1rem}.credentials article p{color:var(--muted);font-size:.875rem;margin:0}footer{margin:0 24px 24px;border-radius:20px;background:var(--navy);padding:44px 40px;color:#fff;display:flex;justify-content:space-between;gap:30px;align-items:flex-end}footer .eyebrow{color:var(--mint);margin-bottom:12px}footer h2{font-size:1.8rem}footer a{color:var(--mint)}footer>p{font-size:.875rem;color:#b8c7d5;text-align:right;margin:0}.project-dialog{width:min(720px,calc(100% - 32px));max-height:88vh;border:0;border-radius:18px;padding:0;color:#17283b;overscroll-behavior:contain}.project-dialog::backdrop{background:#091423b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog-inner{padding:44px;position:relative}.dialog-inner .eyebrow{padding-right:30px}.dialog-inner h2{font-size:1.8rem}.dialog-inner section{margin-top:26px}.dialog-inner section h3{color:#3d7161;font-size:.9375rem}.dialog-inner section p,.dialog-inner li{color:#4b5a69;font-size:1rem}.close{position:absolute;right:18px;top:16px;border:0;border-radius:50%;background:#eef2f5;width:40px;height:40px;font-size:26px;line-height:1}.result-banner{padding:18px;background:#edf7f2;color:#245d4a;border-radius:8px;margin-top:26px;font-weight:700}.modal-open{overflow:hidden}.loading{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:24px}.loading h1{font-size:1.7rem;margin-top:28px}.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip:focus{position:fixed;top:10px;left:10px;padding:12px;background:#fff;z-index:10}section[id]{scroll-margin-top:24px}@media(min-width:1400px){.hero{padding-top:76px;padding-bottom:76px}}@media(max-width:960px){.hero{padding:40px;gap:30px;grid-template-columns:1.2fr 1fr}.hero-actions{flex-wrap:wrap;gap:16px}.section{padding:48px 40px}.skills-grid{grid-template-columns:1fr 1fr}.highlights{padding:28px 24px 0}.metric-value{font-size:2.1rem}.section-heading{align-items:flex-start;flex-direction:column;gap:0}.career-section{margin:0 40px;padding:48px 0;grid-template-columns:1fr}.site-header{padding:0 30px}.brand-sub{display:none}.credentials{gap:30px}}@media(max-width:640px){.site-header{height:auto;min-height:76px;padding:18px 22px;flex-wrap:wrap;gap:14px}nav{gap:20px;font-size:.8125rem;flex-wrap:wrap}.nav-contact{display:none}.hero{margin:0 12px;padding:32px 24px;grid-template-columns:1fr;border-radius:18px;gap:30px}.hero h1{font-size:2.2rem}.hero-intro{font-size:.9375rem}.profile-card{padding:24px}.highlights{grid-template-columns:1fr;padding:12px 24px}.highlight,.highlight:first-child{border-right:0;border-bottom:1px solid var(--line);padding:22px 0}.metric-value{font-size:2.4rem;margin:4px 0}.section{padding:38px 24px}.project-grid{grid-template-columns:1fr}.project-card{padding:24px}.skills-section{margin:0 12px}.skills-grid{grid-template-columns:1fr;gap:32px}.skills-grid p{min-height:0}.career-section{margin:0 24px;padding:38px 0;gap:20px}.credentials{grid-template-columns:1fr;gap:36px}footer{margin:0 12px 12px;padding:30px 24px;align-items:flex-start;flex-direction:column}footer h2{font-size:1.5rem}footer>p{text-align:left}.dialog-inner{padding:44px 24px 24px}.dialog-inner h2{font-size:1.5rem}}.project-dialog{width:min(920px,calc(100% - 32px));max-height:90dvh;overflow-y:auto}.project-meta{background:#f2f6f8;padding:18px 22px;border-radius:10px;font-size:.9375rem}.project-meta>div{justify-content:flex-start;align-items:baseline}.project-meta dt{color:#536777;flex:0 0 64px;font-weight:700}.project-meta dd{text-align:left;overflow-wrap:anywhere}.stack-label{font-size:.875rem;margin-top:24px}.dialog-inner .project-detail-section{margin-top:36px;border-top:1px solid var(--line);padding-top:24px}.dialog-inner .project-detail-section h3{font-size:1.2rem;color:var(--navy)}.project-detail-section p{line-height:1.95;white-space:pre-line}.detail-list>li{margin-bottom:22px}.detail-list>li>strong{color:#243c50}.detail-list ul{margin-top:10px;padding-left:24px}.detail-list ul li{line-height:1.9;font-weight:400;margin-bottom:7px}.detail-done{margin-top:28px}.project-detail-section code{overflow-wrap:anywhere}.project-dialog .close{position:sticky;top:12px;float:right;z-index:1;box-shadow:0 2px 8px #17283b22}.project-dialog h2{padding-right:38px}@media(max-width:640px){.project-meta{padding:14px}.project-meta>div{display:block}.project-meta dt{margin-bottom:4px}.project-detail-section li{overflow-wrap:anywhere}.dialog-inner .project-detail-section{margin-top:26px;padding-top:20px}}.collection-label{display:inline-flex;align-items:center;gap:12px;border-radius:8px;background:#e9eef2;padding:7px 12px;margin-bottom:20px;font-size:.85rem;font-weight:650}.collection-label span{color:var(--muted)}.portfolio-section{border-top:1px solid var(--line)}.portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.portfolio-card{padding:0;overflow:hidden}.portfolio-card .project-card-body{padding:22px}.project-card-body>p{color:var(--muted);font-size:.9rem}.card-period{font-size:.8rem!important;margin-top:18px;margin-bottom:0}.portfolio-card .project-title{font-size:1.05rem}.portfolio-cover{width:100%;min-height:180px;padding:22px;text-align:left;border:0;background:#173c55;color:#fff;display:flex;flex-direction:column;gap:8px;position:relative;overflow:hidden}.portfolio-cover>strong{font-size:1.6rem;letter-spacing:-.03em}.portfolio-cover>span{font-size:.75rem}.portfolio-cover .cover-kicker{font-size:.6rem;letter-spacing:.14em;opacity:.8}.cover-art{align-self:flex-end;font-size:1.7rem!important;opacity:.5;margin-top:8px;letter-spacing:7px}.cover-rabbitmq{background:#a9440a}.cover-routing{background:#126b74}.cover-gemfire-ha{background:#234e96}.cover-marketing-performance{background:#293344}.cover-allone{background:#286453}.cover-log-cache{background:#57466e}.portfolio-cover:hover{filter:brightness(1.1)}.portfolio-card .project-result{font-size:.85rem}.portfolio-card .project-top{margin-bottom:10px}.project-card-body .tags{margin-top:16px}@media(max-width:1000px){.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.portfolio-grid{grid-template-columns:1fr}.portfolio-cover{min-height:165px}.site-header nav{gap:14px}.portfolio-card .project-card-body{padding:22px}}.detail-figure{margin:24px 0;background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}.detail-figure img{display:block;width:100%;height:auto}.detail-figure a{display:block;padding:10px}.detail-figure figcaption{padding:12px 16px;background:#f2f6f8;font-size:.85rem;color:#415569}.detail-figure figcaption span{display:block;font-size:.75rem;color:var(--muted);margin-top:3px}.detail-toc{padding:16px 20px;background:#eef4f6;border-radius:10px;margin:24px 0}.detail-toc summary{cursor:pointer;font-weight:700}.detail-toc nav{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px;padding-top:18px}.detail-toc a{font-size:.85rem}.project-detail-section{scroll-margin-top:24px}.detail-list>li>strong{font-weight:500}.detail-list>li>strong strong{font-weight:750}@media(max-width:640px){.detail-toc nav{grid-template-columns:1fr}.detail-figure a{padding:3px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
