
:root{color-scheme:dark;--bg:#0f172a;--text:#96a4ba;--title:#e2e8f0;--accent:#64e6d2;--muted:#77869e}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:72px}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;font-size:15px;line-height:1.85;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(650px at var(--mx,15%) var(--my,10%),rgba(38,67,137,.16),transparent 80%);z-index:-1}::selection{background:#5eead4;color:#0f172a}a{color:inherit;text-decoration:none}button{font:inherit}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:7px}a:hover{color:var(--accent)}.skip{position:fixed;top:-80px;left:24px;padding:12px;background:var(--accent);color:#0f172a;z-index:10}.skip:focus{top:16px}.layout{max-width:1168px;margin:auto;padding:0 44px;display:grid;grid-template-columns:42% 58%;gap:0}.sidebar{position:sticky;top:0;height:100vh;padding:88px 32px 46px 0;display:flex;flex-direction:column;justify-content:space-between}.eyebrow{font-size:11px;letter-spacing:.2em;color:var(--accent);font-weight:600;margin:0 0 18px}.name{display:inline-block;font-size:48px;font-weight:700;letter-spacing:.04em;line-height:1.2;color:var(--title)}.roman{font-size:12px;letter-spacing:.24em;margin:13px 0 25px;color:var(--muted)}.role{font-size:21px;font-weight:500;letter-spacing:.03em;color:var(--title);margin:0 0 14px}.tagline{max-width:290px;line-height:1.85;margin:0;font-size:15px}.nav{margin-top:48px;display:flex;flex-direction:column;align-items:flex-start;gap:15px}.nav a{display:flex;align-items:center;gap:17px;font-size:12px;font-weight:600;letter-spacing:.12em;color:var(--muted);padding:3px 0}.nav a:before{content:"";width:30px;height:1px;background:var(--muted);transition:width .2s,background .2s}.nav a.active,.nav a:hover{color:var(--title)}.nav a.active:before,.nav a:hover:before{width:62px;background:var(--title)}.nav small{font-size:9px;font-weight:500;letter-spacing:.1em;margin-left:2px;opacity:.7}.contact{display:flex;gap:20px;align-items:center}.icon-link{width:22px;height:26px;display:inline-flex;align-items:center}.icon-link svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.6}.contact-text{font-size:12px;letter-spacing:.04em}.location{font-size:11px;margin:17px 0 0;color:var(--muted);letter-spacing:.06em}.main{padding:88px 0 60px 35px;min-width:0}.section{margin-bottom:86px;scroll-margin-top:30px}.section-title{display:flex;align-items:center;gap:10px;color:var(--title);font-size:11px;letter-spacing:.15em;margin:0 0 28px;font-weight:600}.section-title span{font-size:10px;color:var(--muted);font-weight:400;letter-spacing:.12em}.section-title:after{content:"";height:1px;background:#263147;flex:1;margin-left:8px}.about p{margin:0 0 18px}.about strong{color:var(--title);font-weight:500}.about .intro{font-size:16px;line-height:1.95}.skills{display:flex;gap:8px;flex-wrap:wrap;margin-top:24px}.tag{font-size:11px;line-height:1.5;background:rgba(45,212,191,.09);color:#76decf;padding:5px 10px;border-radius:20px;white-space:nowrap}.experience-card{display:grid;grid-template-columns:115px 1fr;gap:16px;margin:0 -18px 24px;padding:20px 18px;border:1px solid transparent;border-radius:7px;transition:background .2s}.experience-card:hover,.project:hover{background:rgba(148,163,184,.045);border-color:rgba(148,163,184,.08)}.date{font-size:10px;letter-spacing:.025em;line-height:1.6;color:var(--muted);padding-top:4px;font-variant-numeric:tabular-nums}.date span{display:block}.card-title{color:var(--title);font-size:15px;font-weight:500;line-height:1.65;margin:0 0 7px}.arrow{display:inline-block;font-size:17px;transition:transform .2s;margin-left:4px}.card-title a:hover .arrow,.project:hover .arrow{transform:translate(3px,-3px)}.company{font-size:12px;color:#a2afc2;margin-bottom:16px}.description{font-size:13px;line-height:1.9;margin:0 0 12px}.result{font-size:12px;line-height:1.8;color:#aab7ca;margin:17px 0}.result strong{font-size:16px;color:var(--title);font-weight:500}.inline-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px}.text-link{display:inline-flex;gap:9px;align-items:center;color:var(--title);font-size:13px;line-height:1.6;font-weight:500}.text-link:hover{text-decoration:underline;text-underline-offset:5px}.project{position:relative;display:grid;grid-template-columns:134px 1fr;gap:22px;padding:20px 18px;margin:0 -18px 16px;border-radius:7px;border:1px solid transparent;transition:background .2s}.project .date{font-size:10px;margin-bottom:7px;padding:0}.project .card-title{font-size:14px}.project .description{font-size:12px;margin-bottom:0}.project .tag{font-size:10px;padding:4px 8px}.thumb{width:134px;aspect-ratio:1.48;border:1px solid #354158;border-radius:5px;overflow:hidden;position:relative;background:#17243a;display:flex;align-items:center;justify-content:center;color:#a2d6d3;margin-top:5px}.thumb svg{width:100%;height:100%}.thumb small{position:absolute;bottom:6px;left:8px;font-size:6px;letter-spacing:.12em;color:#bac7da}.education{display:flex;justify-content:space-between;gap:20px}.education h3{font-size:15px;color:var(--title);font-weight:500;margin:0 0 8px}.education p{font-size:13px;margin:0}.education .date{text-align:right}.footer{font-size:11px;line-height:1.9;max-width:390px;color:var(--muted)}.footer a{color:#a4b2c7}.back-top{display:inline-block;margin-top:20px;font-size:11px}.subpage{max-width:800px;margin:0 auto;padding:80px 30px}.subpage h1{color:var(--title);font-size:30px;font-weight:500;line-height:1.5;margin-top:80px}.subpage .empty{border-top:1px solid #263147;margin-top:40px;padding-top:28px;font-size:14px}.subpage .sub-label{color:var(--accent);font-size:11px;letter-spacing:.12em;margin-top:75px}.subpage .sub-label+h1{margin-top:15px}
@media(min-width:1450px){.layout{max-width:1230px}.sidebar,.main{padding-top:108px}}@media(max-width:1020px){.layout{padding:0 34px;grid-template-columns:40% 60%}.sidebar{padding-top:64px}.main{padding:64px 0 40px 24px}.name{font-size:40px}.experience-card{grid-template-columns:1fr;gap:9px}.experience-card .date span{display:inline}.experience-card .date span+span:before{content:" "}.project{grid-template-columns:104px 1fr;gap:16px}.thumb{width:104px}.nav small{display:none}}@media(max-width:740px){html{scroll-padding-top:78px}.layout{display:block;padding:0 25px}.sidebar{position:relative;height:auto;padding:56px 0 0;display:block}.name{font-size:42px}.roman{margin:12px 0 22px}.role{font-size:20px}.tagline{max-width:340px}.nav{position:relative;flex-direction:row;gap:22px;margin-top:32px;padding-bottom:18px;border-bottom:1px solid #263147}.nav a{font-size:11px;letter-spacing:.05em;gap:0}.nav a:before{display:none}.sidebar-bottom{margin-top:23px}.contact{gap:18px}.location{display:none}.main{padding:50px 0 30px}.section{margin-bottom:60px;scroll-margin-top:25px}.section-title{margin-bottom:23px}.experience-card{padding:15px 10px;margin:0 -10px 20px}.project{padding:17px 10px;margin:0 -10px 13px;grid-template-columns:106px 1fr;gap:16px}.project .description{font-size:12px;line-height:1.85}.thumb{width:106px}.about .intro{font-size:15px}.subpage{padding:35px 25px}.subpage h1{font-size:25px}}@media(max-width:390px){.layout{padding:0 20px}.project{grid-template-columns:1fr}.thumb{width:140px}.project .date{margin-top:2px}.nav{gap:18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before{transition:none!important}}


.project-group+.project-group{margin-top:42px}.project-group-title{display:flex;align-items:baseline;gap:12px;color:var(--title);font-size:15px;font-weight:500;letter-spacing:.015em;margin:0 0 18px}.project-group-title span{font-size:11px;font-weight:400;letter-spacing:.05em;color:var(--muted)}.project-tag-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 23px}.project-tag-row a.tag:hover{background:rgba(45,212,191,.16);color:var(--accent)}@media(max-width:740px){.project-group+.project-group{margin-top:32px}.project-group-title{font-size:14px;margin-bottom:16px}}

.thumb img{width:100%;height:100%;object-fit:cover;display:block}
