@import "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700;900&display=swap";:root{--ink:#eee8f1;--muted:#a59aa9;--paper:#17141c;--page-bg:#0c0a0f;--surface:#1b1720;--line:#dac4e421;--accent:#c39ae0;--accent-deep:#e3c7f4;--accent-soft:#b383d11a;--font:"Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.2, .9, .25, 1.25)}*{box-sizing:border-box}html{background:var(--page-bg);min-width:320px;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}body{background:radial-gradient(circle at 12% -5%, #9054b321, transparent 34rem), radial-gradient(circle at 92% 35%, #59396d17, transparent 28rem), var(--page-bg);margin:0;font-size:14px;font-weight:400;line-height:1.75;position:relative}body:before{content:"";z-index:-1;pointer-events:none;opacity:.65;filter:blur(22px);background:radial-gradient(circle at 30% 18%,#b87fda1c,#0000 21rem),radial-gradient(circle at 75% 72%,#694a8117,#0000 26rem);animation:18s ease-in-out infinite alternate ambient-drift;position:fixed;inset:-18%}a{color:inherit;text-decoration:none}.rain-overlay{--rain-start-x:0vw;--rain-end-x:79.27vh;--rain-angle:-25deg;z-index:12;pointer-events:none;mix-blend-mode:screen;position:fixed;inset:0;overflow:hidden}.rain-overlay i{top:-30vh;left:var(--rain-x);width:1.35px;height:var(--rain-length);opacity:var(--rain-opacity);will-change:transform;animation:rain-fall var(--rain-duration) linear var(--rain-delay) infinite;background:linear-gradient(#0000,#ddc9ece0);border-radius:999px;position:absolute;box-shadow:0 0 6px #b58bd033}.rain-splash{bottom:1px;left:calc(var(--splash-x) + var(--rain-end-x));opacity:0;will-change:transform, opacity;width:16px;height:5px;animation:splash-ring var(--splash-duration) linear var(--splash-delay) infinite;border:1px solid #dcc7ebb8;border-top-color:#0000;border-radius:50%;position:absolute}.rain-splash:before,.rain-splash:after{content:"";opacity:0;will-change:transform, opacity;background:#e0cceec7;border-radius:50%;width:2px;height:2px;position:absolute;bottom:1px;left:50%;box-shadow:0 0 4px #ba91d338}.rain-splash:before{animation:splash-particle-left var(--splash-duration) linear var(--splash-delay) infinite}.rain-splash:after{animation:splash-particle-right var(--splash-duration) linear var(--splash-delay) infinite}.pdf-button{z-index:20;color:#d9c9e0;min-height:40px;font:500 .68rem/1.2 var(--font);cursor:pointer;backdrop-filter:blur(12px);transition:color .36s ease, border-color .42s ease, background-color .42s ease, box-shadow .6s var(--ease-out), transform .5s var(--ease-spring);background:#16121bc7;border:1px solid #d6b2e840;border-radius:8px;align-items:center;gap:8px;padding:8px 14px;display:inline-flex;position:fixed;top:20px;right:20px;box-shadow:inset 0 1px #ffffff0a,0 8px 28px #0000004d}.pdf-button span{color:var(--accent);transition:transform .5s var(--ease-spring);font-size:.85rem}.pdf-button:hover,.pdf-button:focus-visible{color:#fff;background:#1f1925eb;border-color:#debcf07a;outline:none;transform:translateY(-1px);box-shadow:inset 0 1px #ffffff0f,0 10px 34px #0000005c,0 0 24px #ae73cd1a}.pdf-button:hover span,.pdf-button:focus-visible span{transform:translateY(2px)}.resume-page{background:var(--paper);width:min(1080px,100% - 48px);animation:page-enter .7s var(--ease-out) both;border:1px solid #decae81a;margin:32px auto;overflow:hidden;box-shadow:0 24px 90px #00000080,0 0 70px #7d51970f}.resume-header{color:#fff;background-color:#0000;background-image:radial-gradient(circle at 22% 10%,#9c65bb33,#0000 24rem),linear-gradient(125deg,#211827,#111015 72%);background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:125% 125%;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;grid-template-columns:minmax(260px,.8fr) minmax(360px,1.2fr);gap:28px 72px;padding:48px 56px 0;animation:13s ease-in-out infinite alternate header-ambient;display:grid;position:relative;overflow:hidden}.resume-kicker{color:#b9a8c1;letter-spacing:.12em;text-transform:uppercase;animation:header-enter .65s 80ms var(--ease-out) both;margin:0 0 10px;font-size:.66rem;font-weight:500}.identity h1{letter-spacing:0;isolation:isolate;animation:header-enter .78s .13s var(--ease-spring) both;align-items:baseline;gap:.13em;margin:0;font-size:clamp(3rem,6vw,5rem);font-weight:900;line-height:1;display:flex}.neon-character{color:#fff;will-change:opacity, filter, text-shadow;text-shadow:0 0 2px #fff,0 0 8px #ebd7f8db,0 0 23px #c994e8ad,0 0 52px #a560cc75,0 0 90px #8b47b540;animation:4.8s ease-in-out infinite alternate neon-breathe;display:inline-block}.neon-character:nth-child(2n){animation-delay:-1.7s}.neon-character.is-flickering{animation:.52s step-end both neon-flicker}.role-label{color:#d9cbdc;animation:header-enter .68s .23s var(--ease-out) both;margin:14px 0 0;font-size:.86rem;font-weight:500}.profile-summary{align-self:end;padding-bottom:4px}.profile-summary p{color:#c3b8c7;max-width:600px;animation:header-enter .72s .25s var(--ease-out) both;margin:0;font-size:.82rem;font-weight:400;line-height:1.9}.contact-list{border-top:1px solid #ffffff2e;flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:0;margin-top:8px;display:flex}.contact-list>*{color:#bfb2c4;white-space:nowrap;animation:contact-enter .56s var(--ease-out) backwards;margin-right:18px;padding:14px 18px 14px 0;font-size:.65rem;font-weight:400}.contact-list>:first-child{animation-delay:.3s}.contact-list>:nth-child(2){animation-delay:.35s}.contact-list>:nth-child(3){animation-delay:.4s}.contact-list>:nth-child(4){animation-delay:.45s}.contact-list>:nth-child(5){animation-delay:.5s}.contact-list>:nth-child(6){animation-delay:.55s}.contact-list>:not(:last-child){border-right:1px solid #ffffff26}.contact-list a:hover,.contact-list a:focus-visible{color:#fff;text-underline-offset:4px;outline:none;text-decoration:underline;transform:translateY(-1px)}.contact-list a{transition:color .22s ease, transform .32s var(--ease-out)}.resume-grid{grid-template-columns:minmax(0,1fr) 310px;display:grid}.main-column{padding:48px 50px 64px 56px}.sidebar{border-left:1px solid var(--line);background:var(--surface);padding:48px 36px 64px}.resume-section+.resume-section,.sidebar-section+.sidebar-section{margin-top:48px}.section-heading{border-bottom:1px solid var(--line);align-items:center;gap:13px;margin-bottom:22px;padding-bottom:13px;display:flex;position:relative}.section-heading:after{content:"";transform-origin:0;height:1px;transition:transform .95s var(--ease-out);background:linear-gradient(90deg,#ca9ee1b8,#ca9ee114 52%,#0000);position:absolute;bottom:-1px;left:0;right:0;transform:scaleX(0)}.reveal-item.is-visible .section-heading:after{transform:scaleX(1)}.section-heading h2{margin:0;font-size:1.08rem;font-weight:700;line-height:1.25}.section-heading h2 span{display:none}.section-heading p{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin:2px 0 0;font-size:.58rem;font-weight:500}.entry-heading,.project-header{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.entry-heading h3,.project-header h3,.skill-group h3,.compact-list h3{margin:0;font-size:.92rem;font-weight:700;line-height:1.5}.entry-heading p{color:var(--accent);margin:3px 0 0;font-size:.74rem;font-weight:500}.entry-heading time{color:var(--muted);flex:none;font-size:.65rem}.education-item,.experience-item{padding:4px 0 8px}.course-list,.experience-item>p{color:var(--muted);margin:14px 0 0;font-size:.7rem}.course-list strong{color:var(--ink)}.project-list{display:grid}.project-card{border-bottom:1px solid var(--line);break-inside:avoid;transition:opacity .82s var(--ease-out), filter .95s var(--ease-out);transition-delay:calc(var(--stagger,0) * 70ms);padding:24px 0 26px;position:relative}.project-card:first-child{padding-top:2px}.project-card:last-child{border-bottom:0}.project-type{background:var(--accent-soft);color:var(--accent);border:1px solid #c9a3dc21;border-radius:5px;margin-bottom:7px;padding:2px 7px;font-size:.56rem;font-weight:600;display:inline-block}.project-link{opacity:.78;color:var(--accent);flex:none;font-size:.62rem;font-weight:600}.print-link{display:none}.project-link:hover,.project-link:focus-visible{color:#f0dcfb;opacity:1;text-underline-offset:3px;outline:none;text-decoration:underline}.project-description{margin:12px 0 0;font-size:.76rem;font-weight:500}.highlight-list,.experience-item ul{color:var(--muted);margin:10px 0 0;padding-left:1.15rem;font-size:.7rem}.highlight-list li+li,.experience-item li+li{margin-top:5px}.highlight-list li::marker,.experience-item li::marker{color:var(--accent)}.tag-list{flex-wrap:wrap;gap:6px;margin:13px 0 0;padding:0;list-style:none;display:flex}.tag-list li{border:1px solid var(--line);color:var(--muted);transition:color .36s ease, border-color .42s ease, background-color .42s ease, box-shadow .52s var(--ease-out);background:#ffffff03;border-radius:999px;padding:2px 7px;font-size:.55rem}.tag-list li:hover{color:#ded0e5;background:#b481d00e;border-color:#c49dd952;box-shadow:inset 0 0 12px #b481d009}.sidebar .section-heading{margin-bottom:18px}.sidebar .section-heading h2{font-size:.95rem}.skill-group+.skill-group{margin-top:20px}.skill-group h3{color:var(--accent-deep);font-size:.75rem;font-weight:600}.skill-group ul{flex-wrap:wrap;gap:6px;margin:0;padding:8px 0 0;list-style:none;display:flex}.skill-group li{color:#b8acbd;transition:color .42s ease, border-color .5s ease, background-color .5s ease, box-shadow .65s var(--ease-out), transform .65s var(--ease-out);background:linear-gradient(135deg,#ffffff07,#ffffff02),#9469ab06;border:1px solid #cfb7dc1f;border-radius:5px;padding:3px 7px;font-size:.6rem;font-weight:500;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff06}.skill-group li:before{content:"";pointer-events:none;opacity:0;transition:transform .9s var(--ease-out), opacity .36s ease;background:linear-gradient(112deg,#0000 18%,#ebd8f41f 43%,#0000 68%);position:absolute;inset:-1px;transform:translate(-125%)}.skill-group li:after{content:"";opacity:0;height:1px;transition:opacity .5s ease, inset .65s var(--ease-out);background:linear-gradient(90deg,#0000,#d3abe7b8,#0000);position:absolute;bottom:-1px;left:12%;right:12%;box-shadow:0 0 10px #be88da61}.skill-group li:hover{color:#eee5f2;background-color:#a470c00f;border-color:#d6b2e84d;transform:translateY(-1px);box-shadow:inset 0 1px #ffffff0b,0 7px 24px #0000001f,0 0 18px #a26bc00b}.skill-group li:hover:before{opacity:1;transform:translate(125%)}.skill-group li:hover:after{opacity:.72;left:22%;right:22%}.compact-list article{border-bottom:1px solid var(--line);padding:10px 0}.compact-list h3{font-size:.72rem}.compact-list p{color:var(--muted);margin:3px 0 0;font-size:.63rem}.resume-footer{border-top:1px solid var(--line);color:var(--muted);background:#141117;justify-content:space-between;padding:18px 56px;font-size:.58rem;display:flex}.motion-ready .reveal-item{opacity:0;transform:translateY(18px)}.motion-ready .reveal-item.is-visible{opacity:1;transition:opacity .65s var(--ease-out), transform .76s var(--ease-out);transform:translateY(0)}.motion-ready .project-card.reveal-item.is-visible{transition:opacity .82s var(--ease-out), filter .95s var(--ease-out);transition-delay:calc(var(--stagger,0) * 70ms)}.motion-ready .project-card.reveal-item{filter:blur(2px);transform:none}.motion-ready .project-card.reveal-item.is-visible{filter:none}@keyframes ambient-drift{0%{opacity:.48;transform:translate(-1.5%,-1%)scale(.98)}to{opacity:.72;transform:translate(1.5%,1%)scale(1.02)}}@keyframes header-ambient{0%{background-position:0 20%}to{background-position:100% 70%}}@keyframes rain-fall{0%{transform:translate3d(var(--rain-start-x), -18vh, 0) rotate(var(--rain-angle))}to{transform:translate3d(var(--rain-end-x), 152vh, 0) rotate(var(--rain-angle))}}@keyframes splash-ring{0%,85%{opacity:0;transform:translate(-50%)scale(.18,.35)}88%{opacity:var(--splash-opacity)}96%{opacity:0;transform:translate(-50%)scale(1.35,.72)}to{opacity:0;transform:translate(-50%)scale(1.5,.8)}}@keyframes splash-particle-left{0%,86%{opacity:0;transform:translate(-1px)scale(.5)}89%{opacity:var(--splash-opacity)}96%,to{opacity:0;transform:translate(-7px,-8px)scale(.25)}}@keyframes splash-particle-right{0%,86%{opacity:0;transform:translate(1px)scale(.5)}89%{opacity:var(--splash-opacity)}96%,to{opacity:0;transform:translate(6px,-6px)scale(.25)}}@keyframes page-enter{0%{opacity:0;transform:translateY(12px)scale(.995)}to{opacity:1;transform:none}}@keyframes header-enter{0%{opacity:0;filter:blur(4px);transform:translateY(14px)}to{opacity:1;filter:none;transform:none}}@keyframes contact-enter{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:none}}@keyframes neon-breathe{0%,18%{filter:brightness();text-shadow:0 0 2px #fff,0 0 7px #ebd7f8c2,0 0 18px #c994e885,0 0 42px #a560cc52}72%,to{filter:brightness(1.14);text-shadow:0 0 3px #fff,0 0 10px #efdcfaf5,0 0 27px #cc97eac7,0 0 60px #a560cc8f,0 0 105px #8b47b54d}}@keyframes neon-flicker{0%,12%,20%,44%,52%,to{opacity:1;color:#fff}13%,18%,45%,49%{opacity:.16;color:#796a82;filter:brightness(.45);text-shadow:none}19%,50%{opacity:.72;color:#eadbf3;text-shadow:0 0 5px #d9b8f061}}@media (width<=860px){.resume-page{width:min(720px,100% - 28px);margin:14px auto}.resume-header{grid-template-columns:1fr;gap:24px;padding:40px 34px 0}.resume-grid{grid-template-columns:1fr}.main-column,.sidebar{padding:40px 34px 50px}.sidebar{border-top:1px solid var(--line);border-left:0}.skill-groups{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.skill-group+.skill-group{margin-top:0}}@media (width<=560px){.pdf-button{top:auto;bottom:14px;right:14px}.resume-page{width:100%;box-shadow:none;margin:0}.resume-header,.main-column,.sidebar,.resume-footer{padding-left:22px;padding-right:22px}.identity h1{font-size:3.4rem}.contact-list>*{padding-top:10px;padding-bottom:10px}.entry-heading,.project-header{display:block}.entry-heading time,.project-link{margin-top:7px;display:inline-block}.skill-groups{grid-template-columns:1fr}.resume-footer{display:block}.resume-footer span+span{margin-top:2px;display:block}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.motion-ready .reveal-item{opacity:1;transform:none}.rain-overlay{display:none}}@media print{@page{size:A4;margin:10mm}:root{--ink:#18151d;--muted:#5d5661;--paper:#fff;--surface:#fafafa;--line:#d7d2da;--accent:#6c4c87;--accent-deep:#372947;--accent-soft:#eee7f3}html,body{color-scheme:light;color:#18151d;print-color-adjust:exact;font-size:9pt;background:#fff!important}.resume-page{width:100%;box-shadow:none;background:#fff;border:0;margin:0}body:before{display:none}.resume-header{border-bottom:1px solid #333;padding:8mm 8mm 0;color:#18151d!important;background:#fff!important}.identity h1,.neon-character{color:#111!important;filter:none!important;text-shadow:none!important}.resume-kicker,.role-label,.profile-summary p,.contact-list>*{color:#333!important}.contact-list a{text-underline-offset:2px;text-decoration:underline;color:#263d55!important}.contact-list{border-color:#bbb}.resume-grid{grid-template-columns:minmax(0,1fr) 60mm}.main-column{padding:8mm 7mm 9mm 8mm}.sidebar{color:#18151d;padding:8mm 7mm 9mm;background:#fafafa!important}.section-heading:after,.skill-group li:before,.skill-group li:after{display:none}.entry-heading p,.project-type,.skill-group h3{color:#4f3564!important}.project-type,.tag-list li,.skill-group li{color:#332e36!important;box-shadow:none!important;background:#f6f3f7!important;border-color:#cfc7d3!important}.entry-heading time,.course-list,.experience-item>p,.highlight-list,.experience-item ul,.compact-list p{color:#514b55!important}.resume-section,.sidebar-section,.education-item,.experience-item,.project-card,.skill-group{break-inside:avoid}.rain-overlay,.pdf-button,.screen-link{display:none!important}.project-link{color:#315f8f;text-underline-offset:2px;overflow-wrap:anywhere;font-size:7.5pt;font-weight:500;text-decoration:underline;display:inline}.print-link{display:inline}.motion-ready .reveal-item,.motion-ready .reveal-item.is-visible,.motion-ready .project-card.reveal-item.is-visible{opacity:1!important;filter:none!important;transform:none!important}*,:before,:after{transition:none!important;animation:none!important}.resume-footer{color:#514b55;padding:4mm 8mm;background:#fff!important}}
