.hero-section[data-astro-cid-wzesxgyb]{min-height:100vh;position:relative;overflow:hidden;display:flex;align-items:center}.hero-ambient[data-astro-cid-wzesxgyb]{position:absolute;inset:0;overflow:hidden;pointer-events:none}.orb[data-astro-cid-wzesxgyb]{position:absolute;border-radius:50%;filter:blur(80px);will-change:transform}.orb-1[data-astro-cid-wzesxgyb]{width:500px;height:500px;top:5%;right:10%;background:radial-gradient(circle,oklch(.35 .15 265 / .25),transparent 70%);animation:float-1 12s ease-in-out infinite}.orb-2[data-astro-cid-wzesxgyb]{width:350px;height:350px;bottom:15%;right:25%;background:radial-gradient(circle,oklch(.3 .12 300 / .18),transparent 70%);animation:float-2 16s ease-in-out infinite}.orb-3[data-astro-cid-wzesxgyb]{width:300px;height:300px;top:40%;left:35%;background:radial-gradient(circle,oklch(.25 .1 230 / .12),transparent 70%);animation:float-3 14s ease-in-out infinite}@keyframes float-1{0%,to{transform:translateY(0)}50%{transform:translateY(-30px)}}@keyframes float-2{0%,to{transform:translateY(0) translate(0)}33%{transform:translateY(-20px) translate(15px)}66%{transform:translateY(10px) translate(-10px)}}@keyframes float-3{0%,to{transform:translateY(0)}50%{transform:translateY(-25px)}}[data-astro-cid-wzesxgyb][data-theme=light] .orb-1[data-astro-cid-wzesxgyb]{background:radial-gradient(circle,oklch(.8 .08 265 / .2),transparent 70%)}[data-astro-cid-wzesxgyb][data-theme=light] .orb-2[data-astro-cid-wzesxgyb]{background:radial-gradient(circle,oklch(.82 .06 300 / .15),transparent 70%)}[data-astro-cid-wzesxgyb][data-theme=light] .orb-3[data-astro-cid-wzesxgyb]{background:radial-gradient(circle,oklch(.78 .05 230 / .1),transparent 70%)}.hero-layout[data-astro-cid-wzesxgyb]{position:relative;z-index:1;width:100%;min-height:100vh;display:flex;align-items:stretch}.hero-photo-side[data-astro-cid-wzesxgyb]{width:40%;position:relative;flex-shrink:0}.hero-photo[data-astro-cid-wzesxgyb]{width:100%;height:100%;object-fit:cover;object-position:center 20%;display:block;transition:opacity .18s ease;mask-image:linear-gradient(to right,black 0%,black 65%,transparent 95%),linear-gradient(to bottom,black 0%,black 82%,transparent 100%);mask-composite:intersect;-webkit-mask-image:linear-gradient(to right,black 0%,black 65%,transparent 95%),linear-gradient(to bottom,black 0%,black 82%,transparent 100%);-webkit-mask-composite:source-in}.hero-photo[data-astro-cid-wzesxgyb].profile-swapping{opacity:.35}.hero-content-side[data-astro-cid-wzesxgyb]{width:60%;display:flex;flex-direction:column;justify-content:center;padding:4rem 4rem 4rem 2rem;position:relative;z-index:2}.hero-particles[data-astro-cid-wzesxgyb]{position:absolute;inset:0;z-index:0;pointer-events:none}.hero-content-side[data-astro-cid-wzesxgyb]>[data-astro-cid-wzesxgyb]:not(.hero-particles){position:relative;z-index:1}.hero-name[data-astro-cid-wzesxgyb]{font-size:clamp(2.5rem,5vw,4.5rem);line-height:1.05;margin-bottom:.75rem;color:var(--color-text-primary)}.hc[data-astro-cid-wzesxgyb]{display:inline-block;transition:transform .35s cubic-bezier(.175,.885,.32,1.275);cursor:default;transform-origin:center bottom}.hc-space[data-astro-cid-wzesxgyb]{pointer-events:none}@media(prefers-reduced-motion:reduce){.hc[data-astro-cid-wzesxgyb]{transition:none!important}}.hero-name-en[data-astro-cid-wzesxgyb]{font-family:var(--font-sans);font-weight:600;letter-spacing:-.03em;cursor:pointer;position:relative}.hero-name-variant[data-astro-cid-wzesxgyb]{display:inline-flex}.hero-name-variant[data-astro-cid-wzesxgyb]:not(.hero-name-variant--active){position:absolute;left:0;top:0;pointer-events:none}.hero-name-variant[data-astro-cid-wzesxgyb]:not(.hero-name-variant--active) .hc[data-astro-cid-wzesxgyb]{opacity:0;transform:translate(-18px)}.hero-name-variant--exiting[data-astro-cid-wzesxgyb] .hc[data-astro-cid-wzesxgyb]{opacity:0!important;transform:translate(-18px)!important}.hero-name-variant--entering[data-astro-cid-wzesxgyb] .hc[data-astro-cid-wzesxgyb]{opacity:1!important;transform:translate(0)!important}.hc[data-astro-cid-wzesxgyb]{transition:transform .35s cubic-bezier(.175,.885,.32,1.275),opacity .3s ease}.hero-name-zh[data-astro-cid-wzesxgyb]{font-family:"Noto Serif SC","Source Han Serif SC",SimSun,STSong,serif;font-weight:500;letter-spacing:.05em}.hero-positioning[data-astro-cid-wzesxgyb]{max-width:38rem;margin:0 0 1rem;padding-left:1rem;border-left:2px solid var(--color-accent);color:var(--color-text-primary);font-size:clamp(1rem,1.35vw,1.15rem);font-weight:450;line-height:1.55;text-wrap:balance}.hero-tagline[data-astro-cid-wzesxgyb]{font-size:clamp(.9rem,1.3vw,1.05rem);color:var(--color-accent);margin-bottom:.85rem;min-height:1.75em;font-weight:500;letter-spacing:.01em}.hero-bio[data-astro-cid-wzesxgyb]{font-size:.9375rem;line-height:1.6;color:var(--color-text-secondary);margin-top:.25rem;max-width:28rem}.bio-char[data-astro-cid-wzesxgyb]{display:inline-block;opacity:0;transform:translateY(2px);white-space:pre}.bio-anim[data-astro-cid-wzesxgyb].bio-running .bio-char[data-astro-cid-wzesxgyb]{animation:bio-typewriter-in .18s ease-out forwards;animation-delay:calc(var(--bi) * 32ms)}@keyframes bio-typewriter-in{to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.bio-char[data-astro-cid-wzesxgyb]{opacity:1!important;transform:none!important;animation:none!important}}.hero-chips[data-astro-cid-wzesxgyb]{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem}.hero-chip[data-astro-cid-wzesxgyb]{font-size:.75rem;font-weight:500;letter-spacing:.02em;padding:.3rem .75rem;border-radius:100px;background:var(--color-surface-glass);border:1px solid var(--color-border-subtle);color:var(--color-text-secondary);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:border-color .25s ease,color .25s ease}.hero-chip[data-astro-cid-wzesxgyb]:hover{border-color:var(--color-accent);color:var(--color-text-primary)}.hero-actions[data-astro-cid-wzesxgyb]{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.hero-location-btn[data-astro-cid-wzesxgyb]{position:relative;cursor:default}.hero-location-btn[data-astro-cid-wzesxgyb]:after{content:attr(data-tooltip-en);position:absolute;left:calc(100% + .6rem);top:50%;transform:translateY(-50%) translate(-4px);white-space:nowrap;padding:.4rem .75rem;border-radius:8px;background:var(--color-surface-elevated);backdrop-filter:blur(12px) saturate(140%);-webkit-backdrop-filter:blur(12px) saturate(140%);border:1px solid var(--color-border-glass);color:var(--color-text-primary);font-size:.78rem;font-weight:500;letter-spacing:.02em;box-shadow:0 4px 16px var(--color-shadow-depth);opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s cubic-bezier(.16,1,.3,1)}[data-site-lang=zh] .hero-location-btn[data-astro-cid-wzesxgyb]:after{content:attr(data-tooltip-zh);font-family:STKaiti,Kaiti SC,KaiTi,楷体,AR PL UKai,serif;letter-spacing:.05em}.hero-location-btn[data-astro-cid-wzesxgyb]:hover:after,.hero-location-btn[data-astro-cid-wzesxgyb]:focus-visible:after{opacity:1;transform:translateY(-50%) translate(0)}.hero-primary-cta[data-astro-cid-wzesxgyb]{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:var(--color-accent);color:#fff;font-size:.875rem;font-weight:600;letter-spacing:.01em;text-decoration:none;border-radius:100px;transition:background .25s ease,transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s ease}.hero-primary-cta[data-astro-cid-wzesxgyb]:hover{background:var(--color-accent-hover);transform:translateY(-2px);box-shadow:0 8px 24px var(--color-accent-glow)}.hero-icon-links[data-astro-cid-wzesxgyb]{display:flex;gap:.75rem}.hero-icon-btn[data-astro-cid-wzesxgyb]{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:50%;border:1.5px solid var(--color-border-glass);color:var(--color-text-secondary);text-decoration:none;background:var(--color-surface-glass);backdrop-filter:blur(12px) saturate(130%);-webkit-backdrop-filter:blur(12px) saturate(130%);box-shadow:0 1px 6px var(--color-shadow-depth),inset 0 1px 0 var(--color-inset-highlight);transition:color .25s ease,border-color .25s ease,transform .25s ease,box-shadow .25s ease}.hero-icon-btn[data-astro-cid-wzesxgyb] svg[data-astro-cid-wzesxgyb]{width:1.2rem;height:1.2rem}.hero-icon-btn[data-astro-cid-wzesxgyb]:hover{color:var(--color-text-primary);border-color:var(--color-accent);transform:translateY(-2px);box-shadow:0 4px 12px var(--color-shadow-depth-hover),0 0 8px var(--color-accent-glow),inset 0 1px 0 var(--color-inset-highlight-hover)}@media(max-width:768px){.hero-layout[data-astro-cid-wzesxgyb]{flex-direction:column;min-height:auto}.hero-photo-side[data-astro-cid-wzesxgyb]{width:100%;height:50vh}.hero-photo[data-astro-cid-wzesxgyb]{mask-image:linear-gradient(to bottom,black 0%,black 50%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,black 0%,black 50%,transparent 100%)}.hero-content-side[data-astro-cid-wzesxgyb]{width:100%;padding:2rem 1.5rem 4rem;align-items:center;text-align:center}.hero-positioning[data-astro-cid-wzesxgyb]{max-width:32rem;padding:.75rem 0 0;border-left:0;border-top:1px solid var(--color-accent-dim)}.hero-particles[data-astro-cid-wzesxgyb]{display:none}.hero-bio[data-astro-cid-wzesxgyb]{text-align:center;max-width:100%}.hero-chips[data-astro-cid-wzesxgyb],.hero-actions[data-astro-cid-wzesxgyb]{justify-content:center}.hero-disclaimer[data-astro-cid-wzesxgyb]{text-align:center}}@media(prefers-reduced-motion:reduce){.orb[data-astro-cid-wzesxgyb]{animation:none!important}}.strands-container{position:relative;width:100%;height:100%;background:transparent}.strands-container canvas{display:block;width:100%;height:100%}.site-strands[data-astro-cid-lfkmenwf]{position:fixed;z-index:-1;inset:64px 0 0;overflow:hidden;opacity:.3;pointer-events:none}[data-theme=dark] .site-strands[data-astro-cid-lfkmenwf]{opacity:.44}@media(max-width:768px),(pointer:coarse),(prefers-reduced-motion:reduce){.site-strands[data-astro-cid-lfkmenwf]{display:none}}.sh-editorial[data-astro-cid-bvpd7s2s]{margin-bottom:3rem}.sh-label[data-astro-cid-bvpd7s2s]{font-size:.6875rem;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-tertiary);margin-bottom:.5rem}.sh-editorial-title[data-astro-cid-bvpd7s2s]{font-family:var(--font-display);font-weight:400;font-size:clamp(1.75rem,3vw,2.5rem);letter-spacing:-.02em;line-height:1.15;color:var(--color-text-primary)}.sh-numbered[data-astro-cid-bvpd7s2s]{display:flex;align-items:baseline;gap:1rem;margin-bottom:3rem}.sh-num[data-astro-cid-bvpd7s2s]{font-size:.6875rem;letter-spacing:.1em;color:var(--color-accent);flex-shrink:0}.sh-numbered-title[data-astro-cid-bvpd7s2s]{font-family:var(--font-display);font-weight:400;font-size:clamp(1.5rem,2.5vw,2rem);letter-spacing:-.01em;color:var(--color-text-primary);flex-shrink:0}.sh-line[data-astro-cid-bvpd7s2s]{flex:1;height:1px;background:linear-gradient(90deg,var(--color-border-subtle),transparent);margin-top:.125rem}.sh-minimal[data-astro-cid-bvpd7s2s]{text-align:center;margin-bottom:3rem}.sh-minimal-title[data-astro-cid-bvpd7s2s]{font-family:var(--font-display);font-weight:400;font-size:clamp(1.75rem,3vw,2.5rem);letter-spacing:-.02em;color:var(--color-text-primary)}[data-site-lang=zh] .sh-editorial-title,[data-site-lang=zh] .sh-numbered-title,[data-site-lang=zh] .sh-minimal-title{font-family:Songti SC,STSongti,SimSun,"Noto Serif SC",serif!important}[data-lang=en].bio-text{font-family:Fraunces,serif;font-size:1.25rem;font-weight:400;line-height:1.6;letter-spacing:-.01em;color:var(--color-text-secondary)}[data-lang=zh].bio-text{font-family:STKaiti,Kaiti SC,KaiTi,楷体,DFKai-SB,BiauKai,AR PL UKai,serif;font-size:1.3125rem;font-weight:400;line-height:1.75;letter-spacing:0;word-break:normal;overflow-wrap:break-word;color:var(--color-text-secondary)}[data-lang=zh].bio-text [data-latin]{font-family:Fraunces,serif;letter-spacing:-.005em}.about-row{display:flex;align-items:center;gap:2.5rem;margin-bottom:3rem;max-width:64rem;margin-left:auto;margin-right:auto}.about-row:last-child{margin-bottom:0}.about-text{flex:1;min-width:0}.about-text--left{text-align:left}.about-text--right{text-align:right}.about-cards{display:flex;gap:1rem;flex-shrink:0}.about-cards--pair{width:22rem}.about-cards--pair .skill-card{flex:1}.about-cards--single{width:11rem}.about-cards--single .skill-card{width:100%}.about-row--reversed{flex-direction:row}.skill-card{display:flex;flex-direction:column}.skill-scroll{flex:1;overflow-y:auto;max-height:10rem;scrollbar-width:thin;scrollbar-color:var(--skill-scroll-thumb) var(--skill-scroll-track);padding-right:.25rem;--skill-scroll-thumb: oklch(.45 .01 255 / .5);--skill-scroll-track: oklch(.3 .008 255 / .2)}:global([data-theme=light]) .skill-scroll{--skill-scroll-thumb: oklch(.55 .015 60 / .45);--skill-scroll-track: oklch(.75 .01 60 / .15)}.skill-scroll::-webkit-scrollbar{width:4px}.skill-scroll::-webkit-scrollbar-thumb{background:var(--skill-scroll-thumb);border-radius:4px}.skill-scroll::-webkit-scrollbar-track{background:var(--skill-scroll-track);border-radius:4px}[data-foil]:before{content:"";position:absolute;inset:-40%;background-repeat:no-repeat;background-position:center;background-size:contain;opacity:0;transform:scale(.95);transition:opacity .25s ease-out,transform .35s ease;pointer-events:none;z-index:0;-webkit-mask-image:radial-gradient(ellipse at center,black 50%,transparent 85%);mask-image:radial-gradient(ellipse at center,black 50%,transparent 85%)}[data-foil]:hover:before{opacity:.4;transform:scale(1)}[data-foil]>*{position:relative;z-index:1}[data-foil=code]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%236B7280'/%3E%3Cstop offset='50%25' stop-color='%23E5E7EB'/%3E%3Cstop offset='100%25' stop-color='%239CA3AF'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ctext x='5' y='20' font-family='monospace' font-size='12' fill='url(%23s)'%3E&lt;div&gt;%3C/text%3E%3Ctext x='68' y='16' font-family='monospace' font-size='9' fill='url(%23s)'%3Eimport%3C/text%3E%3Ctext x='50' y='38' font-family='monospace' font-size='10' fill='url(%23s)'%3E.append()%3C/text%3E%3Ctext x='5' y='50' font-family='monospace' font-size='14' fill='url(%23s)'%3Evoid%3C/text%3E%3Ctext x='50' y='64' font-family='monospace' font-size='18' fill='url(%23s)'%3E{ }%3C/text%3E%3Ctext x='3' y='82' font-family='monospace' font-size='10' fill='url(%23s)'%3Econst x =%3C/text%3E%3Ctext x='65' y='82' font-family='monospace' font-size='10' fill='url(%23s)'%3Ereturn%3C/text%3E%3Ctext x='10' y='102' font-family='monospace' font-size='11' fill='url(%23s)'%3E// TODO%3C/text%3E%3Ctext x='72' y='100' font-family='monospace' font-size='12' fill='url(%23s)'%3E=&gt;%3C/text%3E%3Ctext x='5' y='115' font-family='monospace' font-size='9' fill='url(%23s)'%3Edef main():%3C/text%3E%3C/svg%3E")}[data-foil=data]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%236B7280'/%3E%3Cstop offset='50%25' stop-color='%23E5E7EB'/%3E%3Cstop offset='100%25' stop-color='%239CA3AF'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ccircle cx='12' cy='38' r='2.5' fill='url(%23s)'/%3E%3Ccircle cx='25' cy='32' r='2.5' fill='url(%23s)'/%3E%3Ccircle cx='40' cy='26' r='2.5' fill='url(%23s)'/%3E%3Ccircle cx='55' cy='22' r='2.5' fill='url(%23s)'/%3E%3Ccircle cx='70' cy='16' r='2.5' fill='url(%23s)'/%3E%3Ccircle cx='85' cy='12' r='2.5' fill='url(%23s)'/%3E%3Ccircle cx='32' cy='36' r='2.5' fill='url(%23s)'/%3E%3Ccircle cx='62' cy='20' r='2.5' fill='url(%23s)'/%3E%3Cline x1='8' y1='42' x2='92' y2='8' stroke='url(%23s)' stroke-width='1.2' stroke-dasharray='4 3'/%3E%3Ccircle cx='60' cy='62' r='5' stroke='url(%23s)' stroke-width='1.4'/%3E%3Cline x1='56' y1='66' x2='38' y2='78' stroke='url(%23s)' stroke-width='1'/%3E%3Cline x1='64' y1='66' x2='82' y2='78' stroke='url(%23s)' stroke-width='1'/%3E%3Ccircle cx='35' cy='81' r='4' stroke='url(%23s)' stroke-width='1.2'/%3E%3Ccircle cx='85' cy='81' r='4' stroke='url(%23s)' stroke-width='1.2'/%3E%3Cline x1='32' y1='84' x2='20' y2='94' stroke='url(%23s)' stroke-width='0.8'/%3E%3Cline x1='38' y1='84' x2='50' y2='94' stroke='url(%23s)' stroke-width='0.8'/%3E%3Cline x1='82' y1='84' x2='70' y2='94' stroke='url(%23s)' stroke-width='0.8'/%3E%3Cline x1='88' y1='84' x2='100' y2='94' stroke='url(%23s)' stroke-width='0.8'/%3E%3Ccircle cx='18' cy='97' r='3' stroke='url(%23s)' stroke-width='1'/%3E%3Ccircle cx='52' cy='97' r='3' stroke='url(%23s)' stroke-width='1'/%3E%3Ccircle cx='68' cy='97' r='3' stroke='url(%23s)' stroke-width='1'/%3E%3Ccircle cx='102' cy='97' r='3' stroke='url(%23s)' stroke-width='1'/%3E%3C/svg%3E")}[data-foil=finance]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%236B7280'/%3E%3Cstop offset='50%25' stop-color='%23E5E7EB'/%3E%3Cstop offset='100%25' stop-color='%239CA3AF'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cline x1='5' y1='105' x2='115' y2='105' stroke='url(%23s)' stroke-width='0.6'/%3E%3Cline x1='12' y1='55' x2='12' y2='95' stroke='url(%23s)' stroke-width='0.8'/%3E%3Crect x='8' y='62' width='8' height='22' rx='1' stroke='url(%23s)' stroke-width='1.2'/%3E%3Cline x1='26' y1='45' x2='26' y2='88' stroke='url(%23s)' stroke-width='0.8'/%3E%3Crect x='22' y='45' width='8' height='20' rx='1' stroke='url(%23s)' stroke-width='1.2' fill='url(%23s)' fill-opacity='0.12'/%3E%3Cline x1='40' y1='18' x2='40' y2='98' stroke='url(%23s)' stroke-width='0.8'/%3E%3Crect x='36' y='28' width='8' height='48' rx='1' stroke='url(%23s)' stroke-width='1.2'/%3E%3Cline x1='54' y1='58' x2='54' y2='92' stroke='url(%23s)' stroke-width='0.8'/%3E%3Crect x='50' y='58' width='8' height='15' rx='1' stroke='url(%23s)' stroke-width='1.2' fill='url(%23s)' fill-opacity='0.12'/%3E%3Cline x1='68' y1='22' x2='68' y2='90' stroke='url(%23s)' stroke-width='0.8'/%3E%3Crect x='64' y='22' width='8' height='38' rx='1' stroke='url(%23s)' stroke-width='1.2' fill='url(%23s)' fill-opacity='0.12'/%3E%3Cline x1='82' y1='32' x2='82' y2='95' stroke='url(%23s)' stroke-width='0.8'/%3E%3Crect x='78' y='48' width='8' height='30' rx='1' stroke='url(%23s)' stroke-width='1.2'/%3E%3Cline x1='96' y1='38' x2='96' y2='100' stroke='url(%23s)' stroke-width='0.8'/%3E%3Crect x='92' y='45' width='8' height='38' rx='1' stroke='url(%23s)' stroke-width='1.2'/%3E%3Cline x1='110' y1='30' x2='110' y2='88' stroke='url(%23s)' stroke-width='0.8'/%3E%3Crect x='106' y='30' width='8' height='28' rx='1' stroke='url(%23s)' stroke-width='1.2' fill='url(%23s)' fill-opacity='0.12'/%3E%3Cpath d='M8 80 Q35 50 60 65 T112 35' stroke='url(%23s)' stroke-width='1' stroke-dasharray='5 4' fill='none'/%3E%3Ctext x='2' y='16' font-family='serif' font-size='16' fill='url(%23s)' font-weight='300'%3E$%3C/text%3E%3C/svg%3E")}[data-foil=office]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%236B7280'/%3E%3Cstop offset='50%25' stop-color='%23E5E7EB'/%3E%3Cstop offset='100%25' stop-color='%239CA3AF'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect x='8' y='8' width='104' height='104' rx='3' stroke='url(%23s)' stroke-width='1.4'/%3E%3Crect x='8' y='8' width='104' height='14' rx='3' stroke='url(%23s)' stroke-width='0.6' fill='url(%23s)' fill-opacity='0.06'/%3E%3Ctext x='30' y='19' font-family='monospace' font-size='8' fill='url(%23s)'%3EA%3C/text%3E%3Ctext x='55' y='19' font-family='monospace' font-size='8' fill='url(%23s)'%3EB%3C/text%3E%3Ctext x='80' y='19' font-family='monospace' font-size='8' fill='url(%23s)'%3EC%3C/text%3E%3Ctext x='12' y='35' font-family='monospace' font-size='7' fill='url(%23s)'%3E1%3C/text%3E%3Ctext x='12' y='52' font-family='monospace' font-size='7' fill='url(%23s)'%3E2%3C/text%3E%3Ctext x='12' y='69' font-family='monospace' font-size='7' fill='url(%23s)'%3E3%3C/text%3E%3Ctext x='12' y='86' font-family='monospace' font-size='7' fill='url(%23s)'%3E4%3C/text%3E%3Ctext x='12' y='103' font-family='monospace' font-size='7' fill='url(%23s)'%3E5%3C/text%3E%3Cline x1='22' y1='8' x2='22' y2='112' stroke='url(%23s)' stroke-width='0.4'/%3E%3Cline x1='47' y1='8' x2='47' y2='112' stroke='url(%23s)' stroke-width='0.4'/%3E%3Cline x1='72' y1='8' x2='72' y2='112' stroke='url(%23s)' stroke-width='0.4'/%3E%3Cline x1='97' y1='8' x2='97' y2='112' stroke='url(%23s)' stroke-width='0.4'/%3E%3Cline x1='8' y1='22' x2='112' y2='22' stroke='url(%23s)' stroke-width='0.4'/%3E%3Cline x1='8' y1='42' x2='112' y2='42' stroke='url(%23s)' stroke-width='0.4'/%3E%3Cline x1='8' y1='59' x2='112' y2='59' stroke='url(%23s)' stroke-width='0.4'/%3E%3Cline x1='8' y1='76' x2='112' y2='76' stroke='url(%23s)' stroke-width='0.4'/%3E%3Cline x1='8' y1='93' x2='112' y2='93' stroke='url(%23s)' stroke-width='0.4'/%3E%3Ctext x='28' y='35' font-family='monospace' font-size='6' fill='url(%23s)'%3E1024%3C/text%3E%3Ctext x='53' y='35' font-family='monospace' font-size='6' fill='url(%23s)'%3E3.14%3C/text%3E%3Crect x='48' y='60' width='23' height='13' rx='1' stroke='url(%23s)' stroke-width='0.8' fill='url(%23s)' fill-opacity='0.08'/%3E%3Ctext x='53' y='70' font-family='monospace' font-size='6' fill='url(%23s)'%3ESUM%3C/text%3E%3Ctext x='78' y='52' font-family='monospace' font-size='6' fill='url(%23s)'%3ENPV%3C/text%3E%3Ctext x='28' y='69' font-family='monospace' font-size='6' fill='url(%23s)'%3EIRR%3C/text%3E%3Ctext x='28' y='107' font-family='monospace' font-size='5' fill='url(%23s)'%3Efx =SUM(A1:C5)%3C/text%3E%3C/svg%3E")}[data-foil=ai]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='s' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%236B7280'/%3E%3Cstop offset='50%25' stop-color='%23E5E7EB'/%3E%3Cstop offset='100%25' stop-color='%239CA3AF'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect x='6' y='10' width='108' height='76' rx='5' stroke='url(%23s)' stroke-width='1.6'/%3E%3Cline x1='6' y1='26' x2='114' y2='26' stroke='url(%23s)' stroke-width='1'/%3E%3Ccircle cx='17' cy='18' r='2.5' stroke='url(%23s)' stroke-width='1'/%3E%3Ccircle cx='26' cy='18' r='2.5' stroke='url(%23s)' stroke-width='1'/%3E%3Ccircle cx='35' cy='18' r='2.5' stroke='url(%23s)' stroke-width='1'/%3E%3Ctext x='14' y='42' font-family='monospace' font-size='9' fill='url(%23s)'%3E%26gt; claude%3C/text%3E%3Ctext x='14' y='56' font-family='monospace' font-size='9' fill='url(%23s)'%3E%26gt; pnpm run%3C/text%3E%3Ctext x='14' y='70' font-family='monospace' font-size='9' fill='url(%23s)'%3E%26gt; git commit%3C/text%3E%3Ctext x='14' y='80' font-family='monospace' font-size='8' fill='url(%23s)' opacity='0.5'%3E_%3C/text%3E%3Ctext x='14' y='105' font-family='monospace' font-size='7' fill='url(%23s)' opacity='0.4'%3Eagent orchestration%3C/text%3E%3C/svg%3E")}[data-theme=light] [data-foil]:hover:before{opacity:.45}[data-theme=light] [data-foil=code]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%237A5C1F'/%3E%3Cstop offset='50%25' stop-color='%23B8943F'/%3E%3Cstop offset='100%25' stop-color='%238B6914'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ctext x='5' y='20' font-family='monospace' font-size='12' fill='url(%23g)'%3E&lt;div&gt;%3C/text%3E%3Ctext x='68' y='16' font-family='monospace' font-size='9' fill='url(%23g)'%3Eimport%3C/text%3E%3Ctext x='50' y='38' font-family='monospace' font-size='10' fill='url(%23g)'%3E.append()%3C/text%3E%3Ctext x='5' y='50' font-family='monospace' font-size='14' fill='url(%23g)'%3Evoid%3C/text%3E%3Ctext x='50' y='64' font-family='monospace' font-size='18' fill='url(%23g)'%3E{ }%3C/text%3E%3Ctext x='3' y='82' font-family='monospace' font-size='10' fill='url(%23g)'%3Econst x =%3C/text%3E%3Ctext x='65' y='82' font-family='monospace' font-size='10' fill='url(%23g)'%3Ereturn%3C/text%3E%3Ctext x='10' y='102' font-family='monospace' font-size='11' fill='url(%23g)'%3E// TODO%3C/text%3E%3Ctext x='72' y='100' font-family='monospace' font-size='12' fill='url(%23g)'%3E=&gt;%3C/text%3E%3Ctext x='5' y='115' font-family='monospace' font-size='9' fill='url(%23g)'%3Edef main():%3C/text%3E%3C/svg%3E")}[data-theme=light] [data-foil=data]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%237A5C1F'/%3E%3Cstop offset='50%25' stop-color='%23B8943F'/%3E%3Cstop offset='100%25' stop-color='%238B6914'/%3E%3C/linearGradient%3E%3C/defs%3E%3Ccircle cx='12' cy='38' r='2.5' fill='url(%23g)'/%3E%3Ccircle cx='25' cy='32' r='2.5' fill='url(%23g)'/%3E%3Ccircle cx='40' cy='26' r='2.5' fill='url(%23g)'/%3E%3Ccircle cx='55' cy='22' r='2.5' fill='url(%23g)'/%3E%3Ccircle cx='70' cy='16' r='2.5' fill='url(%23g)'/%3E%3Ccircle cx='85' cy='12' r='2.5' fill='url(%23g)'/%3E%3Ccircle cx='32' cy='36' r='2.5' fill='url(%23g)'/%3E%3Ccircle cx='62' cy='20' r='2.5' fill='url(%23g)'/%3E%3Cline x1='8' y1='42' x2='92' y2='8' stroke='url(%23g)' stroke-width='1.2' stroke-dasharray='4 3'/%3E%3Ccircle cx='60' cy='62' r='5' stroke='url(%23g)' stroke-width='1.4'/%3E%3Cline x1='56' y1='66' x2='38' y2='78' stroke='url(%23g)' stroke-width='1'/%3E%3Cline x1='64' y1='66' x2='82' y2='78' stroke='url(%23g)' stroke-width='1'/%3E%3Ccircle cx='35' cy='81' r='4' stroke='url(%23g)' stroke-width='1.2'/%3E%3Ccircle cx='85' cy='81' r='4' stroke='url(%23g)' stroke-width='1.2'/%3E%3Cline x1='32' y1='84' x2='20' y2='94' stroke='url(%23g)' stroke-width='0.8'/%3E%3Cline x1='38' y1='84' x2='50' y2='94' stroke='url(%23g)' stroke-width='0.8'/%3E%3Cline x1='82' y1='84' x2='70' y2='94' stroke='url(%23g)' stroke-width='0.8'/%3E%3Cline x1='88' y1='84' x2='100' y2='94' stroke='url(%23g)' stroke-width='0.8'/%3E%3Ccircle cx='18' cy='97' r='3' stroke='url(%23g)' stroke-width='1'/%3E%3Ccircle cx='52' cy='97' r='3' stroke='url(%23g)' stroke-width='1'/%3E%3Ccircle cx='68' cy='97' r='3' stroke='url(%23g)' stroke-width='1'/%3E%3Ccircle cx='102' cy='97' r='3' stroke='url(%23g)' stroke-width='1'/%3E%3C/svg%3E")}[data-theme=light] [data-foil=finance]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%237A5C1F'/%3E%3Cstop offset='50%25' stop-color='%23B8943F'/%3E%3Cstop offset='100%25' stop-color='%238B6914'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cline x1='5' y1='105' x2='115' y2='105' stroke='url(%23g)' stroke-width='0.6'/%3E%3Cline x1='12' y1='55' x2='12' y2='95' stroke='url(%23g)' stroke-width='0.8'/%3E%3Crect x='8' y='62' width='8' height='22' rx='1' stroke='url(%23g)' stroke-width='1.2'/%3E%3Cline x1='26' y1='45' x2='26' y2='88' stroke='url(%23g)' stroke-width='0.8'/%3E%3Crect x='22' y='45' width='8' height='20' rx='1' stroke='url(%23g)' stroke-width='1.2' fill='url(%23g)' fill-opacity='0.12'/%3E%3Cline x1='40' y1='18' x2='40' y2='98' stroke='url(%23g)' stroke-width='0.8'/%3E%3Crect x='36' y='28' width='8' height='48' rx='1' stroke='url(%23g)' stroke-width='1.2'/%3E%3Cline x1='54' y1='58' x2='54' y2='92' stroke='url(%23g)' stroke-width='0.8'/%3E%3Crect x='50' y='58' width='8' height='15' rx='1' stroke='url(%23g)' stroke-width='1.2' fill='url(%23g)' fill-opacity='0.12'/%3E%3Cline x1='68' y1='22' x2='68' y2='90' stroke='url(%23g)' stroke-width='0.8'/%3E%3Crect x='64' y='22' width='8' height='38' rx='1' stroke='url(%23g)' stroke-width='1.2' fill='url(%23g)' fill-opacity='0.12'/%3E%3Cline x1='82' y1='32' x2='82' y2='95' stroke='url(%23g)' stroke-width='0.8'/%3E%3Crect x='78' y='48' width='8' height='30' rx='1' stroke='url(%23g)' stroke-width='1.2'/%3E%3Cline x1='96' y1='38' x2='96' y2='100' stroke='url(%23g)' stroke-width='0.8'/%3E%3Crect x='92' y='45' width='8' height='38' rx='1' stroke='url(%23g)' stroke-width='1.2'/%3E%3Cline x1='110' y1='30' x2='110' y2='88' stroke='url(%23g)' stroke-width='0.8'/%3E%3Crect x='106' y='30' width='8' height='28' rx='1' stroke='url(%23g)' stroke-width='1.2' fill='url(%23g)' fill-opacity='0.12'/%3E%3Cpath d='M8 80 Q35 50 60 65 T112 35' stroke='url(%23g)' stroke-width='1' stroke-dasharray='5 4' fill='none'/%3E%3Ctext x='2' y='16' font-family='serif' font-size='16' fill='url(%23g)' font-weight='300'%3E$%3C/text%3E%3C/svg%3E")}[data-theme=light] [data-foil=office]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%237A5C1F'/%3E%3Cstop offset='50%25' stop-color='%23B8943F'/%3E%3Cstop offset='100%25' stop-color='%238B6914'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect x='8' y='8' width='104' height='104' rx='3' stroke='url(%23g)' stroke-width='1.4'/%3E%3Crect x='8' y='8' width='104' height='14' rx='3' stroke='url(%23g)' stroke-width='0.6' fill='url(%23g)' fill-opacity='0.06'/%3E%3Ctext x='30' y='19' font-family='monospace' font-size='8' fill='url(%23g)'%3EA%3C/text%3E%3Ctext x='55' y='19' font-family='monospace' font-size='8' fill='url(%23g)'%3EB%3C/text%3E%3Ctext x='80' y='19' font-family='monospace' font-size='8' fill='url(%23g)'%3EC%3C/text%3E%3Ctext x='12' y='35' font-family='monospace' font-size='7' fill='url(%23g)'%3E1%3C/text%3E%3Ctext x='12' y='52' font-family='monospace' font-size='7' fill='url(%23g)'%3E2%3C/text%3E%3Ctext x='12' y='69' font-family='monospace' font-size='7' fill='url(%23g)'%3E3%3C/text%3E%3Ctext x='12' y='86' font-family='monospace' font-size='7' fill='url(%23g)'%3E4%3C/text%3E%3Ctext x='12' y='103' font-family='monospace' font-size='7' fill='url(%23g)'%3E5%3C/text%3E%3Cline x1='22' y1='8' x2='22' y2='112' stroke='url(%23g)' stroke-width='0.4'/%3E%3Cline x1='47' y1='8' x2='47' y2='112' stroke='url(%23g)' stroke-width='0.4'/%3E%3Cline x1='72' y1='8' x2='72' y2='112' stroke='url(%23g)' stroke-width='0.4'/%3E%3Cline x1='97' y1='8' x2='97' y2='112' stroke='url(%23g)' stroke-width='0.4'/%3E%3Cline x1='8' y1='22' x2='112' y2='22' stroke='url(%23g)' stroke-width='0.4'/%3E%3Cline x1='8' y1='42' x2='112' y2='42' stroke='url(%23g)' stroke-width='0.4'/%3E%3Cline x1='8' y1='59' x2='112' y2='59' stroke='url(%23g)' stroke-width='0.4'/%3E%3Cline x1='8' y1='76' x2='112' y2='76' stroke='url(%23g)' stroke-width='0.4'/%3E%3Cline x1='8' y1='93' x2='112' y2='93' stroke='url(%23g)' stroke-width='0.4'/%3E%3Ctext x='28' y='35' font-family='monospace' font-size='6' fill='url(%23g)'%3E1024%3C/text%3E%3Ctext x='53' y='35' font-family='monospace' font-size='6' fill='url(%23g)'%3E3.14%3C/text%3E%3Crect x='48' y='60' width='23' height='13' rx='1' stroke='url(%23g)' stroke-width='0.8' fill='url(%23g)' fill-opacity='0.08'/%3E%3Ctext x='53' y='70' font-family='monospace' font-size='6' fill='url(%23g)'%3ESUM%3C/text%3E%3Ctext x='78' y='52' font-family='monospace' font-size='6' fill='url(%23g)'%3ENPV%3C/text%3E%3Ctext x='28' y='69' font-family='monospace' font-size='6' fill='url(%23g)'%3EIRR%3C/text%3E%3Ctext x='28' y='107' font-family='monospace' font-size='5' fill='url(%23g)'%3Efx =SUM(A1:C5)%3C/text%3E%3C/svg%3E")}[data-theme=light] [data-foil=ai]:before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120' fill='none'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='120' y2='120' gradientUnits='userSpaceOnUse'%3E%3Cstop offset='0%25' stop-color='%237A5C1F'/%3E%3Cstop offset='50%25' stop-color='%23B8943F'/%3E%3Cstop offset='100%25' stop-color='%238B6914'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect x='6' y='10' width='108' height='76' rx='5' stroke='url(%23g)' stroke-width='1.6'/%3E%3Cline x1='6' y1='26' x2='114' y2='26' stroke='url(%23g)' stroke-width='1'/%3E%3Ccircle cx='17' cy='18' r='2.5' stroke='url(%23g)' stroke-width='1'/%3E%3Ccircle cx='26' cy='18' r='2.5' stroke='url(%23g)' stroke-width='1'/%3E%3Ccircle cx='35' cy='18' r='2.5' stroke='url(%23g)' stroke-width='1'/%3E%3Ctext x='14' y='42' font-family='monospace' font-size='9' fill='url(%23g)'%3E%26gt; claude%3C/text%3E%3Ctext x='14' y='56' font-family='monospace' font-size='9' fill='url(%23g)'%3E%26gt; pnpm run%3C/text%3E%3Ctext x='14' y='70' font-family='monospace' font-size='9' fill='url(%23g)'%3E%26gt; git commit%3C/text%3E%3Ctext x='14' y='80' font-family='monospace' font-size='8' fill='url(%23g)' opacity='0.5'%3E_%3C/text%3E%3Ctext x='14' y='105' font-family='monospace' font-size='7' fill='url(%23g)' opacity='0.4'%3Eagent orchestration%3C/text%3E%3C/svg%3E")}@media(max-width:767px){.about-row{flex-direction:column;gap:1.5rem}.about-row--reversed{flex-direction:column}.about-text--right{text-align:left}.about-cards--pair,.about-cards--single{width:100%}.about-cards--pair{justify-content:center}.about-cards--pair .skill-card{max-width:10rem}.about-cards--single .skill-card{max-width:10rem;margin:0 auto}}.rotating-text{display:inline-grid;align-items:center;justify-items:center;vertical-align:middle;white-space:nowrap}.rotating-text-sizer,.rotating-text-current{grid-area:1 / 1}.rotating-text-sizer{display:flex;flex-direction:column;align-items:flex-start;height:0;visibility:hidden;pointer-events:none}.rotating-text-sizer>span{inline-size:max-content;white-space:nowrap}.rotating-text-sizer>span>span{display:inline-block}.rotating-text-current{display:inline-flex;align-items:baseline;justify-content:center}.rotating-text-group{display:inline-flex}.rotating-text-group>span{display:inline-block}.course-scroll[data-astro-cid-yrfusmy5]{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-border-subtle) transparent;padding-bottom:.5rem}.course-scroll[data-astro-cid-yrfusmy5]::-webkit-scrollbar{height:4px}.course-scroll[data-astro-cid-yrfusmy5]::-webkit-scrollbar-thumb{background:var(--color-border-subtle);border-radius:4px}.course-scroll-inner[data-astro-cid-yrfusmy5]{display:flex;gap:.5rem;width:max-content}.course-chip[data-astro-cid-yrfusmy5]{white-space:nowrap;font-family:var(--font-mono, ui-monospace, monospace);font-size:.7rem;font-weight:500;letter-spacing:.01em;padding:.3rem .75rem;border-radius:100px;background:transparent;border:1px solid var(--color-border-subtle);color:var(--color-text-secondary);transition:border-color .2s ease,color .2s ease}.course-chip[data-astro-cid-yrfusmy5]:hover{border-color:var(--color-uni-gold);color:var(--color-uni-gold)}[data-foil=cuhk]:before{content:"";position:absolute;inset:-30%;background-repeat:no-repeat;background-position:center;background-size:contain;opacity:calc(.05 + var(--glow, 0) * .08);transform:scale(calc(.96 + var(--glow, 0) * .04));transition:opacity .4s ease,transform .4s ease;pointer-events:none;z-index:0;-webkit-mask-image:radial-gradient(ellipse at center,black 45%,transparent 82%);mask-image:radial-gradient(ellipse at center,black 45%,transparent 82%);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 220' fill='none'%3E %3Cdefs%3E%3ClinearGradient id='pg' x1='0' y1='0' x2='200' y2='220' gradientUnits='userSpaceOnUse'%3E %3Cstop offset='0%25' stop-color='%239B8EC4'/%3E%3Cstop offset='40%25' stop-color='%23D4CDE8'/%3E %3Cstop offset='60%25' stop-color='%23E8D5A0'/%3E%3Cstop offset='100%25' stop-color='%23C4A960'/%3E %3C/linearGradient%3E%3C/defs%3E %3Ccircle cx='100' cy='110' r='90' stroke='url(%23pg)' stroke-width='1.5' fill='none'/%3E %3Ccircle cx='100' cy='110' r='84' stroke='url(%23pg)' stroke-width='0.6' fill='none'/%3E %3Ctext x='100' y='58' font-family='serif' font-size='34' fill='url(%23pg)' text-anchor='middle'%3E博%3C/text%3E %3Ctext x='100' y='95' font-family='serif' font-size='34' fill='url(%23pg)' text-anchor='middle'%3E文%3C/text%3E %3Ctext x='100' y='132' font-family='serif' font-size='34' fill='url(%23pg)' text-anchor='middle'%3E約%3C/text%3E %3Ctext x='100' y='169' font-family='serif' font-size='34' fill='url(%23pg)' text-anchor='middle'%3E禮%3C/text%3E %3C/svg%3E")}[data-foil=cuhk]>*{position:relative;z-index:1}[data-theme=light] [data-foil=cuhk]:before{opacity:calc(.06 + var(--glow, 0) * .07);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 220' fill='none'%3E %3Cdefs%3E%3ClinearGradient id='pg' x1='0' y1='0' x2='200' y2='220' gradientUnits='userSpaceOnUse'%3E %3Cstop offset='0%25' stop-color='%234A3870'/%3E%3Cstop offset='40%25' stop-color='%236B5A90'/%3E %3Cstop offset='60%25' stop-color='%238A7030'/%3E%3Cstop offset='100%25' stop-color='%236B5520'/%3E %3C/linearGradient%3E%3C/defs%3E %3Ccircle cx='100' cy='110' r='90' stroke='url(%23pg)' stroke-width='1.8' fill='none'/%3E %3Ccircle cx='100' cy='110' r='84' stroke='url(%23pg)' stroke-width='0.8' fill='none'/%3E %3Ctext x='100' y='58' font-family='serif' font-size='34' fill='url(%23pg)' text-anchor='middle'%3E博%3C/text%3E %3Ctext x='100' y='95' font-family='serif' font-size='34' fill='url(%23pg)' text-anchor='middle'%3E文%3C/text%3E %3Ctext x='100' y='132' font-family='serif' font-size='34' fill='url(%23pg)' text-anchor='middle'%3E約%3C/text%3E %3Ctext x='100' y='169' font-family='serif' font-size='34' fill='url(%23pg)' text-anchor='middle'%3E禮%3C/text%3E %3C/svg%3E")}.campus-tilt-stack[data-astro-cid-koipxs4u]{perspective:1400px;perspective-origin:50% 50%}.tilt-card[data-astro-cid-koipxs4u]{position:relative;transform-style:preserve-3d;transform:rotateX(0) rotateY(0);transition:transform .4s cubic-bezier(.16,1,.3,1),box-shadow .4s ease;will-change:transform}.tilt-card[data-astro-cid-koipxs4u].tilt-active{transition:transform .08s linear,box-shadow .4s ease}.tilt-card-inner[data-astro-cid-koipxs4u]{transform-style:preserve-3d}.tilt-card-inner[data-astro-cid-koipxs4u]>[data-astro-cid-koipxs4u]{transition:transform .18s ease-out}.tilt-card[data-astro-cid-koipxs4u].tilt-active .tilt-layer-front[data-astro-cid-koipxs4u]{transform:translateZ(28px)}.tilt-card-glare[data-astro-cid-koipxs4u]{position:absolute;inset:0;border-radius:inherit;pointer-events:none;--glare-rgb: 255, 255, 255;background:radial-gradient(circle at var(--glare-x, 50%) var(--glare-y, 50%),rgba(var(--glare-rgb),var(--glare-strength, 0)) 0%,transparent 50%);mix-blend-mode:overlay;transition:opacity .3s ease;opacity:0}[data-theme=light] .tilt-card-glare[data-astro-cid-koipxs4u]{--glare-rgb: 200, 160, 70;mix-blend-mode:normal}.tilt-card[data-astro-cid-koipxs4u].tilt-active .tilt-card-glare[data-astro-cid-koipxs4u]{opacity:1}@media(prefers-reduced-motion:reduce){.tilt-card[data-astro-cid-koipxs4u],.tilt-card[data-astro-cid-koipxs4u].tilt-active,.tilt-card-inner[data-astro-cid-koipxs4u]>[data-astro-cid-koipxs4u]{transition:none!important;transform:none!important}.tilt-card-glare[data-astro-cid-koipxs4u]{display:none}}.motion-works{display:grid;gap:clamp(5rem,11vw,9rem)}.motion-work{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(17rem,.75fr);align-items:center;gap:clamp(2.5rem,6vw,6rem)}.motion-work.is-reversed{grid-template-columns:minmax(17rem,.75fr) minmax(0,1.55fr)}.motion-work.is-reversed .motion-work-visual{order:2}.motion-work-visual{position:relative;min-width:0;transform-origin:bottom left;transition:transform .36s cubic-bezier(.2,.8,.2,1)}.motion-work-visual.is-active:hover,.motion-work-visual.is-active:focus-within{transform:translate3d(.85rem,-.85rem,0) scale(1.022)}.motion-work-media{position:relative;aspect-ratio:16 / 9;overflow:hidden;border:1px solid var(--color-border-glass);border-radius:var(--radius-lg);background:#010204;box-shadow:0 30px 80px var(--color-shadow-depth),inset 0 1px 0 var(--color-inset-highlight)}.motion-work-media>img,.motion-work-media>video{width:100%;height:100%;display:block;object-fit:cover}.motion-work-media:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 52%,oklch(.04 .01 255 / .38))}.motion-work-media:has(video):after{display:none}.motion-play{position:absolute;z-index:2;inset:0;display:flex;align-items:flex-end;gap:.75rem;padding:1.35rem;border:0;background:transparent;color:#fff;font:inherit;font-size:.86rem;font-weight:640;text-align:left;cursor:pointer}.motion-play-icon{display:grid;width:44px;height:44px;place-items:center;flex:0 0 auto;border:1px solid oklch(1 0 0 / .35);border-radius:50%;background:#0203079e;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:transform .18s cubic-bezier(.2,.8,.2,1),background .18s ease}.motion-play-icon svg{width:1.15rem;height:1.15rem;fill:currentColor}.motion-play:hover .motion-play-icon{transform:scale(1.08);background:#0a121cc7}.motion-play:active .motion-play-icon{transform:scale(.98)}.motion-play:focus-visible{outline:2px solid white;outline-offset:-5px;border-radius:var(--radius-lg)}.motion-close{position:absolute;z-index:4;top:0;right:0;display:inline-flex;min-height:44px;align-items:center;gap:.5rem;padding:.6rem .8rem;border:1px solid oklch(1 0 0 / .25);border-radius:999px;background:#020307b8;color:#fff;font:inherit;font-size:.72rem;cursor:pointer;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 10px 30px #00000047;opacity:0;pointer-events:none;transform:translate3d(0,calc(-100% + .45rem),0) scale(.94);transition:opacity .22s ease,transform .3s cubic-bezier(.2,.8,.2,1),background .18s ease}.motion-work-visual.is-active:hover .motion-close,.motion-work-visual.is-active:focus-within .motion-close{opacity:1;pointer-events:auto;transform:translate3d(0,calc(-100% - .75rem),0) scale(1)}.motion-close:hover{background:#080e16e0}.motion-close svg{width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.motion-close:focus-visible,.motion-player-state button:focus-visible{outline:2px solid white;outline-offset:2px}.motion-player-state{position:absolute;z-index:3;inset:0;display:grid;place-content:center;justify-items:center;gap:.7rem;padding:2rem;background:#000205d1;color:#fff;text-align:center;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.motion-player-state strong{font-size:.9rem}.motion-player-state>span:not(.motion-loading-ring){font-size:.75rem;color:#b7b7b7}.motion-loading-ring{width:2rem;height:2rem;border:2px solid oklch(1 0 0 / .2);border-top-color:#fff;border-radius:50%;animation:motion-spin .8s linear infinite}.motion-loading-track{width:min(15rem,65%);height:2px;overflow:hidden;border-radius:999px;background:#ffffff2e}.motion-loading-track span{display:block;height:100%;background:#fff;transition:width .12s linear}.motion-player-state.is-error p{max-width:22rem;margin:0;font-size:.82rem;line-height:1.6}.motion-player-state button{min-height:44px;padding:.65rem 1rem;border:1px solid oklch(1 0 0 / .3);border-radius:999px;background:#ffffff1f;color:#fff;font:inherit;cursor:pointer}@keyframes motion-spin{to{transform:rotate(360deg)}}.motion-work-copy{min-width:0}.motion-work-kicker{display:flex;align-items:center;gap:.7rem;margin-bottom:1.25rem;color:var(--color-text-tertiary);font-size:.69rem;font-weight:650;letter-spacing:.12em;text-transform:uppercase}.motion-work-kicker>span:first-child{color:var(--color-accent)}.motion-work h3{margin:0;color:var(--color-text-primary);font-family:var(--font-display);font-size:clamp(2.4rem,5vw,4.6rem);font-weight:400;line-height:.95;letter-spacing:-.035em}[data-site-lang=zh] .motion-work h3{font-size:clamp(2.3rem,3.2vw,3.4rem);letter-spacing:-.055em;white-space:nowrap}.motion-work-role{margin:1.3rem 0 0;color:var(--color-text-primary);font-size:.82rem;font-weight:620;letter-spacing:.02em}.motion-work-description{margin:1rem 0 0;color:var(--color-text-secondary);font-size:.9rem;line-height:1.75;text-wrap:pretty}.motion-work-duration{display:flex;align-items:center;justify-content:space-between;margin-top:1.8rem;padding-top:.8rem;border-top:1px solid var(--color-border-subtle);color:var(--color-text-tertiary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;letter-spacing:.12em}@media(max-width:900px){.motion-work,.motion-work.is-reversed{grid-template-columns:1fr;gap:2rem}.motion-work.is-reversed .motion-work-visual{order:0}.motion-work-copy{max-width:40rem}}@media(max-width:520px){.motion-works{gap:5rem}.motion-work-visual{margin-inline:-.25rem}.motion-work-media{border-radius:var(--radius-md)}.motion-play{padding:1rem}.motion-close>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.motion-close{width:44px;justify-content:center;padding:0;top:-.75rem;right:-.35rem;opacity:1;pointer-events:auto;transform:none}.motion-work h3{font-size:clamp(2.5rem,15vw,4rem)}[data-site-lang=zh] .motion-work h3{font-size:clamp(2.2rem,11vw,3.25rem);letter-spacing:-.055em;white-space:nowrap}}@media(hover:none),(pointer:coarse){.motion-work-visual.is-active:hover,.motion-work-visual.is-active:focus-within{transform:none}.motion-close{top:-.75rem;right:-.35rem;opacity:1;pointer-events:auto;transform:none}}@media(prefers-reduced-motion:reduce){.motion-play-icon,.motion-loading-track span,.motion-work-visual,.motion-close{transition:none!important}.motion-loading-ring{animation:none;border-top-color:currentColor}}.motion-expand-track{position:relative;height:165dvh}.motion-expand-stage{position:sticky;z-index:2;top:64px;width:100%;height:calc(100dvh - 64px);min-height:34rem;overflow:hidden;isolation:isolate;pointer-events:none}.motion-expand-media{position:absolute;inset:0;clip-path:inset(var(--motion-y-inset) var(--motion-x-inset) var(--motion-y-inset) var(--motion-x-inset) round var(--motion-radius));opacity:var(--motion-media-opacity);box-shadow:0 24px 80px var(--color-shadow-depth);will-change:clip-path,opacity}.motion-expand-media img{width:100%;height:100%;object-fit:cover;object-position:50% 53%;transform:scale(var(--motion-image-scale));will-change:transform}.motion-expand-shade{position:absolute;inset:0;background:linear-gradient(180deg,oklch(.05 .02 255 / .42),transparent 32%),linear-gradient(0deg,oklch(.04 .02 255 / .55),transparent 44%);pointer-events:none}.motion-expand-copy{position:absolute;z-index:2;left:calc(var(--motion-x-inset) + clamp(1.5rem,3vw,3rem));top:calc(var(--motion-y-inset) + clamp(1.5rem,3vw,3rem));display:grid;gap:.7rem;max-width:28rem;color:#fff;opacity:var(--motion-copy-opacity);transform:translate3d(0,var(--motion-copy-y),0);will-change:opacity,transform;text-shadow:0 2px 20px oklch(0 0 0 / .38)}.motion-scroll-hint{position:absolute;z-index:3;left:50%;bottom:clamp(1.5rem,4vh,2.75rem);display:inline-flex;min-height:44px;align-items:center;gap:.65rem;padding:.7rem 1rem .7rem 1.15rem;border:1px solid oklch(1 0 0 / .3);border-radius:999px;background:#020307a3;color:#fff;font-size:.76rem;font-weight:640;letter-spacing:.015em;opacity:var(--motion-hint-opacity);transform:translate(-50%);backdrop-filter:blur(14px) saturate(135%);-webkit-backdrop-filter:blur(14px) saturate(135%);box-shadow:0 10px 36px #0000003d;pointer-events:none;white-space:nowrap;will-change:opacity}.motion-scroll-hint svg{width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8;animation:motion-hint-drift 1.6s ease-in-out infinite}@keyframes motion-hint-drift{0%,to{transform:translateY(-1px)}50%{transform:translateY(3px)}}.motion-expand-index{font-size:.7rem;font-weight:650;letter-spacing:.2em;text-transform:uppercase;opacity:.78}.motion-expand-copy p{margin:0;font-family:var(--font-display);font-size:clamp(1.8rem,4vw,4.25rem);line-height:.98;letter-spacing:-.025em}.motion-expand-line{display:block;width:5rem;height:1px;margin-top:.3rem;background:currentColor;opacity:.65}.motion-expand-button{position:absolute;z-index:3;left:50%;bottom:1.5rem;display:inline-flex;min-height:44px;align-items:center;gap:.6rem;padding:.7rem 1rem;border:1px solid oklch(1 0 0 / .3);border-radius:999px;background:#02060d9e;color:#fff;font:inherit;font-size:.78rem;font-weight:620;transform:translate(-50%);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);cursor:pointer;white-space:nowrap;pointer-events:auto}.motion-expand-button svg{width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.motion-expand-button:focus-visible{outline:2px solid white;outline-offset:3px}.motion-expand-track.is-mobile{height:min(78dvh,44rem);min-height:32rem;padding:0 1rem}.motion-expand-track.is-mobile .motion-expand-stage{position:relative;top:0;height:100%;min-height:32rem}.motion-expand-track.is-mobile .motion-expand-copy{left:calc(var(--motion-x-inset) + 1.25rem);right:auto;top:calc(var(--motion-y-inset) + 1.25rem)}.motion-expand-track.is-mobile .motion-expand-copy p{font-size:clamp(1.65rem,8vw,2.6rem)}.motion-expand-track.is-reduced{height:min(86dvh,50rem);min-height:34rem;padding:0 clamp(1rem,4vw,3rem)}.motion-expand-track.is-reduced .motion-expand-stage{position:relative;top:0;height:100%}.motion-expand-track.is-reduced .motion-expand-media,.motion-expand-track.is-reduced .motion-expand-media img,.motion-expand-track.is-reduced .motion-expand-copy{will-change:auto}@media(max-width:768px){.motion-expand-media{box-shadow:0 16px 44px var(--color-shadow-depth)}.motion-expand-media img{object-position:57% 50%}}@media(prefers-reduced-motion:reduce){.motion-expand-media,.motion-expand-media img,.motion-expand-copy,.motion-expand-button,.motion-scroll-hint{transition:none!important}.motion-scroll-hint svg{animation:none}}.motion-section[data-astro-cid-pabhz3vj]{position:relative;scroll-margin-top:64px}.motion-editorial[data-astro-cid-pabhz3vj]{position:relative;z-index:1;margin-top:calc(-100dvh + 64px);padding-top:clamp(4.5rem,9vw,7rem);padding-bottom:clamp(3rem,7vw,6rem);opacity:var(--motion-editorial-opacity, 1);transform:translate3d(0,var(--motion-editorial-y, 0),0)}.motion-intro[data-astro-cid-pabhz3vj]{max-width:42rem;margin:-1.5rem 0 clamp(4.5rem,9vw,8rem);color:var(--color-text-secondary);font-family:var(--font-display);font-size:clamp(1.45rem,3vw,2.35rem);line-height:1.35;letter-spacing:-.018em;text-wrap:balance}@media(max-width:768px){.motion-editorial[data-astro-cid-pabhz3vj]{margin-top:0;padding-top:var(--spacing-section-mobile);opacity:1;transform:none}.motion-intro[data-astro-cid-pabhz3vj]{margin-top:-.75rem;margin-bottom:4rem;font-size:clamp(1.4rem,7vw,2rem)}}.social-link[data-astro-cid-t4mufisl]{color:var(--color-text-tertiary)}.social-link[data-astro-cid-t4mufisl]:hover{color:var(--color-text-primary)}.scroll-stack-scroller{position:relative;width:100%;overflow:visible}.scroll-stack-inner{position:relative}.scroll-stack-card{position:relative;backface-visibility:hidden;transform-origin:50% 112%;transition:transform .26s cubic-bezier(.22,1,.36,1)}.scroll-stack-end{width:100%;height:1px}@media(max-width:900px){.scroll-stack-inner{padding:3rem 0 24vh}.scroll-stack-card{position:sticky;top:var(--stack-top, 5rem);transform:scale(var(--stack-scale, 1)) rotate(var(--stack-rotate, 0deg));transform-origin:top center;margin-bottom:5rem}.scroll-stack-end{height:18vh}}@media(prefers-reduced-motion:reduce){.scroll-stack-card{transition:none}@media(max-width:900px){.scroll-stack-inner{padding:1rem 0 2rem}.scroll-stack-card{position:relative;top:auto;transform:none;margin-bottom:1rem}}}
