:root{--bg:#15171b;--surface:#23262c;--surface-2:#1b1e23;--text:#f1f2f4;--muted:#a5aab4;--accent:#d9a1b4;--line:#343840;--max:1360px;--pad:clamp(20px,4vw,64px);font-family:Pretendard,Apple SD Gothic Neo,Noto Sans KR,Malgun Gothic,system-ui,sans-serif;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);line-height:1.65}body.no-scroll{overflow:hidden}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}button{font:inherit}.skip-link{position:fixed;left:16px;top:-80px;z-index:100;background:var(--text);color:var(--bg);padding:10px 16px}.skip-link:focus{top:16px}.site-header{height:80px;padding:0 var(--pad);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:10}.brand{display:flex;align-items:baseline;gap:10px;font-weight:800}.brand strong{font-size:16px}.brand span{color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.04em}.site-header nav{display:flex;align-items:center;gap:clamp(14px,2vw,30px);font-size:13px}.site-header nav a{padding:10px 0;color:var(--muted)}.site-header nav a:hover,.site-header nav a[aria-current=page]{color:var(--text)}.site-header nav a[aria-current=page]{border-bottom:1px solid var(--accent)}.nav-disabled{color:#626771;cursor:not-allowed}.page-shell{width:min(calc(100% - var(--pad)*2),var(--max));margin-inline:auto}.hero{padding-block:clamp(42px,5vw,72px) clamp(30px,3.5vw,48px)}.eyebrow{margin:0 0 14px;color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.04em}.hero h1,.page-intro h1,.project-hero h1{font-size:clamp(48px,8vw,112px);line-height:.92;letter-spacing:-.055em;margin:0}.hero-copy,.page-intro>p:last-child,.project-hero>p:last-child{max-width:650px;color:#b8bdc6;font-size:clamp(16px,2vw,21px);margin:24px 0 0}.section{padding-block:clamp(60px,7vw,100px)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:30px}.section-heading h2{font-size:clamp(26px,3vw,42px);letter-spacing:-.035em;margin:0}.section-heading span,.section-heading a{font-size:13px;color:var(--muted)}.mosaic{display:grid;grid-template-columns:1.35fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:14px}.mosaic-item{position:relative;min-width:0;overflow:hidden;background:var(--surface-2)}.mosaic-item.large{grid-row:span 2}.mosaic-item .placeholder,.mosaic-item>img{height:100%;width:100%;object-fit:cover}.mosaic-item>span{position:absolute;left:18px;bottom:14px;font-weight:700;text-shadow:0 1px 12px #000}.mosaic-item>small{position:absolute;right:12px;top:12px;padding:5px 8px;background:#15171bd1;color:var(--muted);font-size:10px}.placeholder{aspect-ratio:var(--ratio);background:linear-gradient(135deg,#2c3037,#202329);display:grid;place-items:center;color:#7f858f;overflow:hidden}.placeholder span{font-size:12px;letter-spacing:.08em}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(18px,3vw,40px)}.project-card{background:var(--surface-2)}.project-card>a{display:block}.project-card img{width:100%;aspect-ratio:760/520;object-fit:cover;transform:scale(var(--thumb-scale,1))}.card-image{position:relative;overflow:hidden}.card-copy{padding:20px;display:flex;justify-content:space-between;gap:16px}.card-copy h3{margin:0;font-size:22px}.card-copy .eyebrow{margin-bottom:6px}.card-copy>span{color:var(--accent);font-size:22px}.experience-list{border-top:1px solid var(--line)}.experience-list article{display:grid;grid-template-columns:64px 1fr auto;gap:24px;align-items:start;padding:30px 0;border-bottom:1px solid var(--line)}.experience-list h3,.experience-list p{margin:0}.experience-list p,.experience-list small{color:var(--muted)}.page-intro{padding-block:clamp(58px,7vw,100px)}.project-hero{padding-block:clamp(48px,6vw,84px)}.back-link{display:inline-block;margin-bottom:28px;color:var(--muted)}.project-meta{display:grid;grid-template-columns:repeat(5,1fr);border-block:1px solid var(--line)}.project-meta div{padding:24px 18px;border-right:1px solid var(--line)}.project-meta dt{color:var(--muted);font-size:12px}.project-meta dd{margin:6px 0 0}.empty-state{text-align:center}.empty-state .placeholder{margin-bottom:30px}.empty-state h3{margin:0}.empty-state p{color:var(--muted)}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.gallery-grid figure{margin:0}.gallery-button{padding:0;border:0;background:none;cursor:zoom-in;width:100%;overflow:hidden;display:block}.gallery-button img{width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--surface-2);transform:scale(var(--thumb-scale,1))}.gallery-grid figcaption{padding:14px 0;color:var(--muted)}.gallery-grid figcaption p{margin:5px 0}.ingame-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.ingame-grid .gallery-button img{aspect-ratio:16/9;object-fit:contain}.lightbox{width:100vw;max-width:none;height:100vh;max-height:none;margin:0;padding:48px 90px;border:0;background:#08090bf5;color:var(--text)}.lightbox::backdrop{background:transparent}.lightbox figure{height:100%;margin:0;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:16px;text-align:center}.lightbox img{width:100%;height:100%;object-fit:contain}.lightbox button{position:fixed;z-index:2;border:1px solid var(--line);background:var(--surface);color:var(--text);width:48px;height:48px;cursor:pointer}.lightbox-close{right:22px;top:22px}.lightbox-prev{left:22px;top:50%}.lightbox-next{right:22px;top:50%}.timeline{border-top:1px solid var(--line)}.timeline article{display:grid;grid-template-columns:80px 1fr;gap:28px;padding:38px 0;border-bottom:1px solid var(--line)}.timeline h3{font-size:26px;margin:0}.timeline p:not(.eyebrow){color:var(--muted)}.timeline-marker{color:var(--accent)}.tag-list{display:flex;flex-wrap:wrap;gap:10px}.tag-list a{padding:7px 12px;border:1px solid var(--line);font-size:13px}.split-section{display:grid;grid-template-columns:1fr 1fr;gap:40px;border-top:1px solid var(--line)}.split-section h2{font-size:clamp(28px,4vw,52px);margin:0}.split-section>p{color:var(--muted)}.contact-panel{margin-bottom:100px;padding:clamp(34px,5vw,70px);background:var(--surface)}.contact-panel h2{margin-top:0}.contact-panel p{color:var(--muted);margin-bottom:0}.site-footer{padding:30px var(--pad);border-top:1px solid var(--line);display:flex;justify-content:space-between;color:var(--muted);font-size:12px}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:4px}@media(max-width:800px){.site-header{height:auto;padding-block:22px;align-items:flex-start}.site-header nav{max-width:280px;justify-content:flex-end;flex-wrap:wrap}.mosaic{grid-template-columns:1fr 1fr;grid-template-rows:auto}.mosaic-item.large{grid-column:span 2;grid-row:auto}.project-grid{grid-template-columns:1fr}.project-meta{grid-template-columns:1fr 1fr}.project-meta div{border-bottom:1px solid var(--line)}.gallery-grid{grid-template-columns:1fr 1fr}.ingame-grid{grid-template-columns:1fr}.experience-list article{grid-template-columns:40px 1fr}.experience-list small{grid-column:2}.split-section{grid-template-columns:1fr}.lightbox{padding:64px 18px 70px}.lightbox-prev,.lightbox-next{top:auto;bottom:14px}.lightbox-prev{left:calc(50% - 60px)}.lightbox-next{right:calc(50% - 60px)}}@media(max-width:520px){.site-header{display:block}.brand{display:block;margin-bottom:16px}.site-header nav{justify-content:flex-start}.hero{padding-top:52px}.hero h1,.page-intro h1,.project-hero h1{font-size:clamp(44px,15vw,64px)}.mosaic{display:block}.mosaic-item{display:block;margin-bottom:12px;aspect-ratio:4/3}.gallery-grid,.project-meta{grid-template-columns:1fr}.site-footer{display:block}.site-footer span{display:block;margin-top:6px}}.featured-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.featured-card{position:relative;min-width:0;aspect-ratio:4/3;overflow:hidden;background:var(--surface-2)}.featured-card .placeholder,.featured-card>img{height:100%;width:100%;object-fit:cover;transform:scale(var(--thumb-scale,1));transition:transform .2s ease}.featured-card:hover>img{transform:scale(calc(var(--thumb-scale,1) * 1.015))}.featured-card:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#08090be6);pointer-events:none}.featured-copy{position:absolute;z-index:1;left:16px;right:16px;bottom:14px;display:flex;flex-direction:column;text-shadow:0 1px 12px #000}.featured-copy span{font-weight:700}.featured-copy em{color:#d1d4da;font-size:12px;font-style:normal;letter-spacing:0}.project-hero{padding-block:clamp(34px,4vw,58px)}.project-hero h1{font-size:clamp(42px,6vw,78px)}.project-hero>p:last-child{margin-top:20px}.back-link{margin-bottom:20px}.project-meta div{padding:18px}.project-work{padding-block:clamp(38px,5vw,68px)}.gallery-section+.gallery-section{margin-top:clamp(54px,7vw,92px)}.gallery-heading{margin-bottom:22px}.gallery-heading h2{font-size:clamp(25px,2.5vw,36px)}@media(max-width:1000px){.featured-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:520px){.project-hero h1{font-size:clamp(38px,13vw,54px)}.featured-grid{grid-template-columns:1fr}}.sticky-back{position:fixed;left:calc(50% + min(var(--max),calc(100vw - var(--pad)*2))/2 + 20px);top:58%;z-index:8;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-width:120px;min-height:48px;padding:10px 16px;border:1px solid var(--line);border-radius:999px;background:#1c1f24f0;color:var(--text);font-size:13px;font-weight:700;box-shadow:0 8px 24px #00000047;transform:translateY(-50%);backdrop-filter:blur(8px)}.sticky-back:hover{border-color:var(--accent);background:var(--surface-2)}.sticky-back span:first-child{font-size:18px;line-height:1}@media(max-width:1640px){.sticky-back{left:auto;right:max(16px,env(safe-area-inset-right));top:auto;bottom:max(18px,env(safe-area-inset-bottom));transform:none}}@media(max-width:800px){.sticky-back{right:max(12px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));min-width:112px;min-height:46px;padding:9px 13px}.sticky-back span:last-child{font-size:12px}}.project-hero{padding-block:clamp(30px,3.5vw,48px)}.project-hero h1{font-size:clamp(38px,4vw,44px);line-height:1.05;letter-spacing:-.035em}.project-hero>p:last-child{max-width:760px;margin-top:16px;font-size:clamp(16px,1.5vw,17px);line-height:1.65}.project-meta{grid-template-columns:minmax(180px,.75fr) minmax(300px,1.25fr) minmax(280px,1fr)}.project-meta div{padding:18px clamp(18px,2vw,28px)}.project-meta div:last-child{border-right:0}.project-work{padding-top:clamp(28px,3.5vw,46px)}.gallery-heading>div{max-width:820px}.gallery-heading p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.65}.project-screenshot-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:start}.project-screenshot-grid .gallery-button{aspect-ratio:auto;overflow:visible;background:var(--surface-2)}.project-screenshot-grid .gallery-button img.project-screenshot-image{position:static;width:100%;height:auto;max-width:100%;aspect-ratio:auto;object-fit:contain;object-position:center;transform:none;background:var(--surface-2)}@media(max-width:1000px){.project-meta{grid-template-columns:1fr 1fr}.project-meta div:last-child{grid-column:1/-1}.project-screenshot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.project-meta{grid-template-columns:1fr}.project-meta div:last-child{grid-column:auto}.project-screenshot-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}@media(max-width:420px){.project-screenshot-grid{grid-template-columns:1fr}}.project-landscape-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start}.project-landscape-grid .gallery-button{aspect-ratio:auto;overflow:visible;background:var(--surface-2)}.project-landscape-grid .gallery-button img.project-ingame-image{position:static;width:100%;height:auto;max-width:100%;aspect-ratio:auto;object-fit:contain;object-position:center;transform:none;background:var(--surface-2)}@media(max-width:600px){.project-landscape-grid{grid-template-columns:1fr;gap:14px}}.experience-projects{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.experience-projects a{padding:5px 10px;border:1px solid var(--line);color:var(--text);font-size:12px}.experience-projects a:hover,.tag-list a:hover{border-color:var(--accent)}.skills-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.skill-group{padding:28px;background:var(--surface-2);border:1px solid transparent}.skill-group h3{margin:0 0 18px;font-size:18px}.skill-group ul{display:flex;flex-wrap:wrap;gap:9px;margin:0;padding:0;list-style:none}.skill-group li{padding:7px 11px;background:var(--surface);color:var(--muted);font-size:13px}.ai-skill-group{border-color:#d9a1b440}@media(max-width:600px){.skills-grid{grid-template-columns:1fr}.skill-group{padding:22px}}.about-intro{padding-block:clamp(44px,5vw,72px) clamp(30px,3.5vw,48px)}.about-intro h1{font-size:clamp(46px,7vw,92px)}.about-experience{padding-top:clamp(30px,3.5vw,52px)}.timeline article{grid-template-columns:64px 1fr;gap:24px;padding:34px 0}.timeline h3{font-size:clamp(24px,2.4vw,34px);line-height:1.25}.career-period{margin-bottom:10px;color:var(--accent);font-size:12px}.career-role{margin:10px 0 16px!important;color:#c6cad1!important;font-size:15px}.gallery-item{scroll-margin-top:24px}.gallery-item:target{outline:2px solid var(--accent);outline-offset:6px}@media(max-width:520px){.about-intro{padding-block:36px 28px}.about-experience{padding-top:24px}.timeline article{grid-template-columns:40px 1fr;gap:16px;padding:28px 0}}.profile-name{margin:20px 0 0!important;color:var(--text)!important;font-size:clamp(20px,2.2vw,28px)!important;font-weight:700}.profile-name+p{margin-top:8px!important}#experience{scroll-margin-top:20px}.contact-panel a{color:var(--text);text-decoration:underline;text-underline-offset:4px}.contact-intro{padding-bottom:clamp(34px,4vw,56px)}.contact-card{margin-bottom:clamp(70px,9vw,130px);padding:clamp(32px,5vw,72px);background:var(--surface)}.contact-card h2{margin:0;font-size:clamp(28px,4vw,52px);line-height:1.2}.contact-card h2 small{color:var(--muted);font-size:.42em;font-weight:600}.contact-role{margin:8px 0 28px;color:var(--muted)}.contact-email{display:inline-block;max-width:100%;color:var(--accent);font-size:clamp(21px,4vw,52px);font-weight:700;line-height:1.25;overflow-wrap:anywhere;border-bottom:1px solid currentColor}.contact-email:hover{color:var(--text)}@media(max-width:520px){.brand{font-size:14px}.contact-card{padding:28px 22px}.contact-email{font-size:clamp(19px,6.4vw,26px)}}.hero h1{font-size:clamp(54px,8vw,104px)}.hero-role{margin:18px 0 0;color:var(--text);font-size:clamp(21px,2.4vw,32px);font-weight:700}.hero-summary{margin:10px 0 0;color:#c7cbd2;font-size:clamp(15px,1.5vw,18px)}.hero-summary span{padding-inline:5px;color:var(--accent)}.hero-scope{margin:4px 0 0;color:var(--muted);font-size:15px}.tools-summary{margin-bottom:clamp(46px,5vw,70px);padding:20px 24px;border-block:1px solid var(--line);background:var(--surface-2)}.tools-summary h2{margin:0 0 14px;font-size:18px}.tools-summary>div{display:flex;align-items:flex-start;gap:18px}.tools-summary>div+div{margin-top:9px}.tool-label{flex:0 0 88px;color:var(--accent);font-size:12px;font-weight:700}.tools-summary ul{display:flex;flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none}.tools-summary li{padding:3px 9px;background:var(--surface);color:#d7d9de;font-size:12px}.tools-summary p{margin:0;color:var(--muted);font-size:13px}.project-meta dt,.site-footer{font-size:12px}.gallery-grid figcaption,.timeline p:not(.eyebrow),.contact-panel p{color:#b8bdc6}@media(max-width:520px){.brand{display:flex;margin-bottom:16px}.brand span{font-size:10px}.hero{padding-top:38px}.hero-summary span{padding-inline:2px}.tools-summary{padding:18px}.tools-summary>div{display:block}.tool-label{display:block;margin-bottom:7px}.tools-summary>div+div{margin-top:14px}}.card-image{aspect-ratio:760/520}.gallery-button{position:relative;aspect-ratio:4/3}.ingame-grid .gallery-button{aspect-ratio:16/9}img.pan-thumbnail-v2{position:absolute;max-width:none;aspect-ratio:auto;object-fit:fill;transform-origin:center;transition:none}.featured-card:hover>img.pan-thumbnail-v2{transform:scale(var(--thumb-scale,1))}.hero{padding-block:clamp(36px,4vw,56px) clamp(24px,2.6vw,36px)}.hero h1{font-size:clamp(48px,4.2vw,56px);line-height:1.04;letter-spacing:-.04em}.hero-role{margin-top:14px;font-size:clamp(24px,2vw,26px);line-height:1.3}.hero-summary{margin-top:8px;font-size:clamp(15px,1.3vw,16px)}.hero-scope{margin-top:3px;font-size:14px}.tools-summary{margin-bottom:clamp(38px,4vw,54px);padding:17px 22px}.tools-summary h2{margin-bottom:11px;font-size:17px}.tools-summary li,.tools-summary p{font-size:13px}.home-section-heading{margin-bottom:24px}.home-section-heading h2{font-size:clamp(26px,2.5vw,30px);line-height:1.25;letter-spacing:-.025em}.home-projects{padding-top:clamp(54px,6vw,78px)}@media(max-width:800px){.home-section-heading{margin-bottom:20px}}@media(max-width:520px){.hero{padding-block:32px 22px}.hero h1{font-size:clamp(40px,12vw,48px)}.hero-role{font-size:22px}.hero-summary{font-size:15px}.hero-scope{font-size:14px}.tools-summary{margin-bottom:38px}.home-section-heading h2{font-size:26px}}.royalcrown-assets-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.royalcrown-assets-grid .gallery-button{aspect-ratio:auto}.royalcrown-assets-grid .gallery-button img.royalcrown-asset-image{position:static;width:100%;height:auto;max-width:100%;aspect-ratio:auto;object-fit:contain;object-position:center;transform:none;background:var(--surface-2)}@media(max-width:800px){.royalcrown-assets-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}}@media(max-width:520px){.royalcrown-assets-grid{grid-template-columns:1fr}}.projects-intro,.about-intro,.contact-intro{padding-block:clamp(42px,5vw,68px) clamp(30px,3.5vw,46px)}.projects-intro h1,.about-intro h1,.contact-intro h1{font-size:clamp(48px,4.2vw,56px);line-height:1.06;letter-spacing:-.04em}.projects-intro>p:last-child,.about-intro>p:last-child,.contact-intro>p:last-child{max-width:720px;margin-top:18px;font-size:clamp(15px,1.35vw,17px);line-height:1.7}.projects-section{padding-top:clamp(24px,3vw,40px)}.projects-section .card-copy h3{font-size:clamp(20px,1.8vw,24px);line-height:1.25}.about-experience .section-heading h2,.about-skills .section-heading h2{font-size:clamp(28px,2.6vw,32px);line-height:1.25;letter-spacing:-.03em}.about-experience .timeline h3{font-size:clamp(24px,2.2vw,30px);line-height:1.3}.about-experience .career-role{font-size:clamp(15px,1.3vw,16px)}.about-skills{padding-top:clamp(52px,6vw,78px);padding-bottom:clamp(72px,8vw,110px)}.about-skills .skill-group h3{font-size:clamp(18px,1.6vw,20px);line-height:1.35}.contact-card{margin-bottom:clamp(72px,8vw,110px);padding:clamp(30px,4vw,52px)}.contact-card h2{font-size:clamp(28px,2.8vw,34px);line-height:1.25}.contact-card h2 small{font-size:.5em}.contact-role{margin:8px 0 24px;font-size:clamp(15px,1.3vw,17px)}.contact-email{font-size:clamp(22px,3vw,38px);line-height:1.3}@media(max-width:800px){.projects-intro,.about-intro,.contact-intro{padding-block:38px 30px}.projects-section{padding-top:20px}.about-skills{padding-bottom:72px}}@media(max-width:520px){.projects-intro h1,.about-intro h1,.contact-intro h1{font-size:clamp(38px,11vw,46px)}.projects-intro>p:last-child,.about-intro>p:last-child,.contact-intro>p:last-child{font-size:15px}.contact-card{padding:26px 20px}.contact-card h2 small{display:block;margin-top:4px;font-size:.55em}.contact-email{font-size:clamp(19px,6.2vw,26px)}}.career-period{margin:5px 0 0!important;color:var(--muted)!important;font-size:13px!important;font-weight:500}.career-duration{align-self:start;color:#d7dae0;font-size:14px;font-weight:700;white-space:nowrap}.experience-list .career-role{margin:9px 0 0!important;color:#c6cad1!important;font-size:15px}.experience-list .experience-projects{margin-top:14px}.career-introduction{width:100%;max-width:860px;margin-top:18px}.career-introduction p{margin:0;color:#b8bdc6;font-size:clamp(15px,1.35vw,17px);line-height:1.75}.about-intro .career-introduction{max-width:860px}.about-experience{padding-top:clamp(22px,2.6vw,39px)}.about-experience .timeline article{grid-template-columns:64px minmax(0,1fr) auto}.about-experience .career-role{margin:12px 0 0!important}.career-contribution{max-width:760px;margin:8px 0 16px!important;color:#b8bdc6!important;font-size:15px;line-height:1.7}@media(max-width:800px){.career-duration{grid-column:3}}@media(max-width:520px){.about-experience{padding-top:18px}.experience-list article,.about-experience .timeline article{grid-template-columns:40px minmax(0,1fr)}.experience-list .career-duration,.about-experience .career-duration{grid-column:2;justify-self:start;margin-top:12px}.career-introduction{margin-top:16px}.career-introduction p{font-size:15px}}
