:root{--paper:var(--theme-light-background-top-color);--ink:var(--theme-light-font-color);--muted:#66707c;--body-muted:#4f5964;--line:#cfd2d2;--accent:var(--theme-light-highlight-font-color);--accent-soft:#e5ebfa;--surface:var(--theme-light-background-color);--chrome-line:#17202c2e;--image-line:#17202c29;--tag-ink:#4e5864;--contact-bg:var(--theme-light-background-bottom-color);--contact-ink:var(--theme-dark-font-color);--contact-muted:#fff9;--contact-line:#ffffff40;--contact-accent:var(--theme-light-highlight-font-color);--sans:Consolas, "Times New Roman", "Courier New", KaiTi, "Kaiti SC", STKaiti, monospace;color-scheme:light}html[data-theme=dark]{--paper:var(--theme-dark-background-top-color);--ink:var(--theme-dark-font-color);--muted:#aab4c0;--body-muted:#c9d0d8;--line:#3d4856;--accent:var(--theme-dark-highlight-font-color);--accent-soft:#253653;--surface:var(--theme-dark-background-color);--chrome-line:#f4f2eb2e;--image-line:#f4f2eb33;--tag-ink:#bac3ce;--contact-bg:var(--theme-dark-background-bottom-color);--contact-ink:var(--theme-dark-font-color);--contact-muted:#f4f2eb9e;--contact-line:#f4f2eb3d;--contact-accent:var(--theme-dark-highlight-font-color);color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow-wrap:anywhere;margin:0}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit}::selection{background:var(--accent);color:var(--paper)}.progress{z-index:100;height:3px;position:fixed;top:0;left:0;right:0}.progress span{background:var(--accent);transform-origin:0;width:100%;height:100%;display:block;transform:scaleX(0)}.topbar{z-index:10;border-bottom:1px solid var(--chrome-line);grid-template-columns:1fr auto 1fr;align-items:center;height:92px;padding:0 clamp(24px,5vw,76px);display:grid;position:absolute;top:0;left:0;right:0}.identity{align-items:center;gap:12px;font-size:14px;font-weight:600;line-height:1.25;display:flex}.identity-avatar-wrap{flex:0 0 38px;width:38px;height:38px;position:relative}.identity-mark,.identity-avatar{width:38px;height:38px;position:absolute;inset:0}.identity-mark{background:var(--ink);color:var(--paper);letter-spacing:.06em;place-items:center;font-size:11px;display:grid}.identity-avatar{object-fit:cover;border:1px solid var(--image-line);background:var(--ink);display:block}.identity-avatar.is-hidden{visibility:hidden}.identity small{color:var(--muted);font-weight:400}nav{gap:34px;font-size:14px;display:flex}nav a{position:relative}nav a:after{content:"";background:var(--accent);height:1px;transition:right .25s;position:absolute;bottom:-6px;left:0;right:100%}nav a:hover:after{right:0}.header-actions{justify-self:end;align-items:center;gap:10px;display:flex}.theme-toggle{border:1px solid var(--line);width:38px;height:38px;color:var(--ink);cursor:pointer;background:0 0;border-radius:50%;place-items:center;padding:0;transition:border-color .2s,background-color .2s,color .2s;display:grid}.theme-toggle:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.theme-icon{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:17px;height:17px;transition:transform .2s;display:none}html[data-theme-preference=system] .theme-icon-system,html[data-theme-preference=light] .theme-icon-light,html[data-theme-preference=dark] .theme-icon-dark{display:block}.theme-toggle:hover .theme-icon{transform:rotate(8deg)scale(1.04)}.resume-download{border:1px solid var(--ink);background:0 0;align-items:center;padding:10px 15px;font-size:13px;transition:background .2s,color .2s;display:inline-flex}.resume-download span{margin-left:16px}.resume-download:hover{background:var(--ink);color:var(--paper)}.resume-download:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.profile{background:var(--paper);flex-direction:column;min-height:100svh;padding:150px clamp(24px,7vw,108px) 52px;display:flex}.profile-label{color:var(--muted);align-items:center;gap:10px;margin-left:auto;font-size:11px;display:flex;position:relative}.avatar,.avatar-fallback{border-radius:50%;width:52px;height:52px}.avatar{z-index:1;object-fit:cover;border:1px solid var(--image-line);background:var(--ink);display:block;position:relative}.avatar.is-hidden{visibility:hidden}.avatar-fallback{background:var(--ink);color:var(--paper);letter-spacing:.06em;place-items:center;font-size:11px;font-weight:600;display:grid;position:absolute;top:0;left:0}.availability{align-items:center;gap:10px;display:flex}.status-dot{background:#25a55f;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #25a55f1a}.profile-main{grid-template-columns:1.25fr .75fr;align-items:end;gap:clamp(60px,10vw,160px);margin:auto 0;display:grid}.overline,.section-heading>p,.contact>p{color:var(--accent);letter-spacing:.15em;text-transform:uppercase;margin:0 0 20px;font-size:10px;font-weight:600}.profile h1{font-size:var(--theme-title-font-size,clamp(84px, 13vw, 200px));letter-spacing:-.085em;margin:0;font-weight:600;line-height:.82}.role{margin:42px 0 0;font-size:clamp(20px,2vw,30px);font-weight:500;line-height:1.45}.role span{color:var(--muted)}.profile-summary{border-top:2px solid var(--ink);padding-top:25px}.profile-summary>p{margin:0 0 45px;font-size:19px;line-height:1.9}.quick-facts{gap:16px;display:grid}.quick-facts span{grid-template-columns:78px 1fr;font-size:12px;display:grid}.quick-facts small{color:var(--muted);font-size:11px}.quick-facts a{text-underline-offset:3px;text-decoration:underline}.scroll-hint{border-bottom:1px solid var(--ink);gap:38px;width:fit-content;padding-bottom:7px;font-size:11px;display:flex}.scroll-hint span{transition:transform .2s}.scroll-hint:hover span{transform:translateY(3px)}.resume-layout{background:var(--surface);grid-template-columns:minmax(180px,.28fr) minmax(0,1fr);gap:clamp(50px,8vw,130px);padding:130px clamp(24px,7vw,108px);display:grid}.section-index{align-self:start;position:sticky;top:45px}.section-index>p{border-bottom:1px solid var(--line);color:var(--muted);letter-spacing:.12em;margin:0 0 28px;padding-bottom:14px;font-size:14px}.section-index ol{margin:0;padding:0;list-style:none}.section-index a{color:var(--muted);gap:18px;padding:10px 0;font-size:16px;transition:color .2s,transform .2s;display:flex}.section-index a span{width:18px;font-size:13px}.section-index a:hover,.section-index a.is-active{color:var(--accent);transform:translate(4px)}.resume-content{min-width:0}.resume-section{padding:0 0 135px;scroll-margin-top:40px}.section-heading{border-bottom:1px solid var(--ink);grid-template-columns:160px 1fr;align-items:end;padding-bottom:30px;display:grid}.section-heading>p{margin:0}.section-heading h2{letter-spacing:-.055em;margin:0;font-size:clamp(38px,5vw,66px);font-weight:500;line-height:1}.skill-groups{grid-template-columns:1fr 1fr;display:grid}.skill-group{border-bottom:1px solid var(--line);flex-direction:column;min-height:265px;padding:38px 35px 34px 0;display:flex}.skill-group:nth-child(odd){border-right:1px solid var(--line);padding-right:50px}.skill-group:nth-child(2n){padding-left:50px}.skill-group h3,.timeline-body h3,.project-item h3,.education-row h3,.additional-grid h3{margin:0 0 16px;font-size:18px;font-weight:600}.skill-group h3,.job-title h3,.project-item h3,.additional-grid h3{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.skill-group,.project-item>div,.additional-grid>div{min-width:0}.project-link,.additional-link{max-width:100%}.project-link>span:first-child,.additional-link>span:first-child{white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}.project-link-arrow,.additional-link-arrow{flex:none}.skill-group p{min-height:82px;color:var(--body-muted);margin:0;font-size:17px;line-height:1.8}.tags{flex-wrap:wrap;gap:7px;margin-top:auto;padding-top:25px;display:flex}.tags span{border:1px solid var(--line);color:var(--tag-ink);letter-spacing:.04em;padding:5px 9px;font-size:9px;transition:background .2s,color .2s,border-color .2s}.skill-group:hover .tags span{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.timeline-item{border-bottom:1px solid var(--line);padding:46px 0}.timeline-body{min-width:0}.job-title{justify-content:space-between;align-items:baseline;gap:0;display:flex}.job-title h3{margin-bottom:0;font-size:20px}.job-title>span{color:var(--accent);font-size:14px}.job-title .job-position,.job-title .job-location,.job-title .job-time{white-space:nowrap}.job-title .job-position{text-align:center}.job-title .job-location,.job-title .job-time{color:var(--muted);align-items:center;gap:6px;display:inline-flex}.job-meta-icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:14px;height:14px}.job-title .job-time{text-align:right}.job-scope{color:var(--body-muted);margin:16px 0 24px;font-size:17px}.timeline-body ul{margin:0;padding:0;list-style:none}.timeline-body li{margin:10px 0;padding-left:17px;font-size:17px;line-height:1.75;position:relative}.timeline-body li:before{content:"";background:var(--accent);width:5px;height:1px;position:absolute;top:.75em;left:0}.project-item{border-bottom:1px solid var(--line);grid-template-columns:160px 1fr;padding:50px 0;display:grid}.project-number{height:clamp(27.5px,3vw,40px);color:var(--accent);letter-spacing:.12em;align-items:center;font-size:10px;font-weight:600;display:flex}.project-item h3{letter-spacing:-.03em;font-size:clamp(22px,2.4vw,32px);line-height:1.25}.project-link{align-items:center;gap:12px;transition:color .2s;display:inline-flex}.project-link-arrow{color:var(--accent);font-size:.62em;transition:transform .2s cubic-bezier(.2,.7,.2,1);display:inline-block}.project-link:hover{color:var(--accent)}.project-link:hover .project-link-arrow{transform:translate(4px,-4px)}.project-link:focus-visible{outline:2px solid var(--accent);outline-offset:6px}.project-brief{max-width:680px;color:var(--body-muted);margin:0 0 32px;font-size:18px;line-height:1.8}.project-item dl{grid-template-columns:80px 1fr;gap:10px 18px;margin:0;font-size:15px;line-height:1.65;display:grid}.project-item dt{color:var(--muted)}.project-item dd{margin:0}.education-row{border-bottom:1px solid var(--line);grid-template-columns:160px 1fr auto;align-items:start;gap:30px;padding:46px 0;display:grid}.education-row>span{min-height:24.3px;color:var(--muted);align-items:center;font-size:11px;display:flex}.education-row h3{line-height:1.35}.education-row p{color:var(--body-muted);margin:0;font-size:17px}.additional-grid{grid-template-columns:repeat(3,1fr);display:grid}.additional-grid>div{border-bottom:1px solid var(--line);min-height:180px;padding:38px 30px 20px 0}.additional-grid>div+div{border-left:1px solid var(--line);padding-left:30px}.additional-grid p{color:var(--body-muted);margin:0;font-size:16px;line-height:1.85}.additional-link{align-items:center;gap:9px;transition:color .2s;display:inline-flex}.additional-link-arrow{color:var(--accent);font-size:.82em;transition:transform .2s cubic-bezier(.2,.7,.2,1);display:inline-block}.additional-link:hover{color:var(--accent)}.additional-link:hover .additional-link-arrow{transform:translate(3px,-3px)}.additional-link:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.contact{background:var(--contact-bg);min-height:75svh;color:var(--contact-ink);flex-direction:column;padding:110px clamp(24px,7vw,108px) 32px;display:flex}.contact>p{color:var(--contact-accent)}.contact h2{letter-spacing:-.065em;margin:auto 0 40px;font-size:clamp(48px,8vw,115px);font-weight:500;line-height:1.06}.contact>a{border-bottom:1px solid var(--contact-ink);width:fit-content;padding-bottom:7px;font-size:14px}.contact>a span{margin-left:25px;transition:transform .2s;display:inline-block}.contact>a:hover span{transform:translate(5px,-5px)}.contact footer{border-top:1px solid var(--contact-line);color:var(--contact-muted);grid-template-columns:1fr 1fr auto;margin-top:auto;padding-top:28px;font-size:12px;display:grid}.contact footer button{color:var(--contact-ink);cursor:pointer;background:0 0;border:0;padding:0}@media (prefers-reduced-motion:no-preference){body,.profile,.resume-layout,.contact,.topbar,.theme-toggle,.resume-download{transition:background-color .25s,color .25s,border-color .25s}}.reveal{opacity:0;animation:.7s cubic-bezier(.2,.7,.2,1) forwards enter;transform:translateY(18px)}.profile .reveal:nth-child(2){animation-delay:80ms}.profile .reveal:nth-child(3){animation-delay:.16s}@keyframes enter{to{opacity:1;transform:none}}.reveal-on-scroll{opacity:0;transition:opacity .65s,transform .65s cubic-bezier(.2,.7,.2,1);transform:translateY(24px)}.reveal-on-scroll.is-visible{opacity:1;transform:none}@media (width<=800px){.topbar{grid-template-columns:1fr auto;height:74px;padding:0 20px}nav{display:none}.header-actions{gap:6px}.theme-toggle{width:36px;height:36px}.resume-download{padding:9px 10px}.resume-download span{display:none}.profile{background:var(--paper);min-height:820px;padding:120px 22px 35px}.profile-label{margin-left:0}.profile-main{grid-template-columns:1fr;gap:55px;margin:auto 0 55px;padding-top:28px}.profile h1{font-size:clamp(74px,25vw,108px)}.role{margin-top:30px;font-size:19px}.profile-summary>p{margin-bottom:30px}.resume-layout{grid-template-columns:1fr;padding:90px 22px}.section-index{display:none}.resume-section{padding-bottom:100px}.section-heading{grid-template-columns:1fr;gap:12px}.skill-groups{grid-template-columns:1fr}.skill-group,.skill-group:nth-child(odd),.skill-group:nth-child(2n){border-right:0;min-height:0;padding:32px 0}.skill-group p{min-height:0}.skill-group .tags{margin-top:25px;padding-top:0}.project-item{grid-template-columns:1fr;gap:20px}.project-number{height:auto}.job-title{grid-template-columns:minmax(0,1fr) minmax(0,auto);justify-content:normal;gap:7px 20px;display:grid}.job-title .job-position{text-align:right}.job-title .job-location{text-align:left}.job-title .job-time{text-align:right}.job-title .job-position,.job-title .job-location,.job-title .job-time{white-space:normal}.job-meta-icon{width:13px;height:13px}.project-item dl{grid-template-columns:65px 1fr}.education-row{grid-template-columns:1fr;gap:10px}.education-row>span{min-height:0}.additional-grid{grid-template-columns:1fr}.additional-grid>div,.additional-grid>div+div{border-left:0;min-height:0;padding:30px 0}.contact{min-height:700px;padding:90px 22px 25px}.contact footer{grid-template-columns:1fr auto;gap:15px}.contact footer span:nth-child(2){grid-area:2/1/auto/-1}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.reveal,.reveal-on-scroll{opacity:1;transform:none}}
