@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media (prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*),[data-astro-transition-scope]{animation:none!important}}.wallpaper-mode-menu[data-astro-cid-347tqriv]{border:1px solid var(--glass-line);background:color-mix(in srgb, var(--accent-soft) 85%, transparent);width:160px;box-shadow:var(--shadow-soft);backdrop-filter:blur(20px)saturate(118%);font-size:15px;overflow:hidden}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}:root{color-scheme:light;--bg:#f5fafc;--paper:#fff;--ink:#123746;--muted:#607d89;--line:#d3e4eb;--accent:#0086bf;--accent-strong:#00658f;--accent-soft:#dff3fb;--pink:#91cfe4;--glass:#ffffff94;--glass-line:#0086bf2e;--shadow-soft:0 14px 40px #005b821a}[data-theme=dark]{color-scheme:dark;--bg:#071f2a;--paper:#0d2b38;--ink:#f2f9fc;--muted:#9ebac6;--line:#264a59;--accent:#0086bf;--accent-strong:#69c8ed;--accent-soft:#103f52;--pink:#367f9d;--glass:#09273394;--glass-line:#5ac1ea33;--shadow-soft:0 16px 44px #000a1042}.decor{pointer-events:none;display:block;position:absolute}.decor-orbit{border:1px solid var(--ink);border-radius:50%;width:170px;height:170px;bottom:70px;right:14%}.decor-orbit:before,.decor-orbit:after{content:"";background:var(--accent);border-radius:50%;width:18px;height:18px;position:absolute;top:20px;left:15px}.decor-orbit:after{background:var(--ink);width:7px;height:7px;inset:auto -3px 45px auto}.decor-flower{background:radial-gradient(circle, var(--ink) 0 10%, transparent 11%), radial-gradient(ellipse at 50% 15%, var(--accent) 0 19%, transparent 20%), radial-gradient(ellipse at 85% 50%, var(--accent) 0 19%, transparent 20%), radial-gradient(ellipse at 50% 85%, var(--accent) 0 19%, transparent 20%), radial-gradient(ellipse at 15% 50%, var(--accent) 0 19%, transparent 20%);width:90px;height:90px;animation:12s linear infinite spin;top:80px;right:12%}@keyframes spin{to{transform:rotate(360deg)}}@font-face{font-family:Overpass;src:url(/_astro/overpass-variable.DKcY6lO1.ttf)format("truetype");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:Overpass;src:url(/_astro/overpass-italic-variable.O-Fx02LY.ttf)format("truetype");font-style:italic;font-weight:100 900;font-display:swap}@font-face{font-family:MiSans;src:url(/_astro/misans-chinese-variable.0QQBLYia.woff2)format("woff2");font-style:normal;font-weight:210 320;font-display:swap;unicode-range:U+3007,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+20000-323AF}html body{font-family:MiSans,Overpass,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);margin:0;font-family:MiSans,Overpass,PingFang SC,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.62;transition:background .25s,color .25s}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}main{min-height:70vh}.shell{width:min(1080px,100% - 40px);margin-inline:auto}.site-header{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;height:78px;padding:0 max(20px,50vw - 590px);display:grid;position:sticky;top:0}.logo{letter-spacing:-.08em;font-size:1.35rem;font-weight:900}.logo span{font-weight:400}.site-header nav{gap:28px;font-size:.9rem;display:flex}.site-header nav a{position:relative}.site-header nav a.active:after{content:"";background:var(--accent);border-radius:50%;width:5px;height:5px;position:absolute;bottom:-12px;left:50%}.theme-toggle{border:1px solid var(--line);background:var(--paper);cursor:pointer;border-radius:99px;justify-self:end;padding:7px 11px}.theme-label{margin-left:5px;font-size:.75rem}.menu-toggle{display:none}.hero{min-height:720px;padding:120px 0 80px;position:relative}.eyebrow{letter-spacing:.18em;text-transform:uppercase;font-size:.72rem;font-weight:800}.hero h1,.page-hero h1,.coming-soon h1{letter-spacing:-.075em;margin:30px 0;font-size:clamp(2.8rem,6.5vw,5.8rem);line-height:.94}.hero h1 span{color:var(--accent-strong)}h1 em,h2 em{color:var(--accent-strong);font-family:Georgia,serif;font-weight:400}.hero-intro{margin-left:50%;font-size:1.05rem}.button-row{gap:12px;margin-top:35px;margin-left:50%;display:flex}.button{border:1px solid var(--glass-line);background:var(--glass);box-shadow:0 8px 24px color-mix(in srgb, var(--ink) 7%, transparent);backdrop-filter:blur(10px)saturate(110%);border-radius:99px;padding:9px 16px;font-size:.86rem;font-weight:650;transition:transform .2s,border-color .2s,background .2s;display:inline-block}.button:hover{border-color:color-mix(in srgb, var(--accent) 38%, var(--line));transform:translateY(-1px)}.button.primary{background:color-mix(in srgb, var(--accent-strong) 92%, transparent);color:#fff;border-color:#0000}.hero-sticker{background:var(--accent);width:125px;height:125px;color:var(--ink);text-align:center;border-radius:50%;padding:25px 12px;font-size:1.2rem;font-weight:900;line-height:1;position:absolute;top:130px;right:4%;transform:rotate(9deg)}.hero-sticker small{margin-top:10px;font-size:.55rem;display:block}.marquee{border-block:1px solid var(--ink);background:var(--accent);color:var(--ink);white-space:nowrap;padding:10px 0;font-weight:900;overflow:hidden}.marquee div{letter-spacing:.14em;font-size:1.05rem}.section{padding:96px 0}.section-heading{justify-content:space-between;align-items:end;margin-bottom:50px;display:flex}.section-heading h2{margin:15px 0;font-size:clamp(2rem,4vw,3.6rem);line-height:1}.text-link{border-bottom:1px solid;font-weight:800}.work-grid{grid-template-columns:repeat(2,1fr);gap:28px;display:grid}.work-card{border:1px solid var(--line);background:var(--glass);box-shadow:var(--shadow-soft);backdrop-filter:blur(12px)saturate(108%);border-radius:18px;transition:transform .2s;overflow:hidden}.work-card:hover{transform:translateY(-3px)}.work-cover,.detail-cover{aspect-ratio:16/10;background:linear-gradient(135deg, var(--accent), var(--pink));place-items:center;display:grid;overflow:hidden}.work-cover span,.detail-cover span{text-transform:uppercase;letter-spacing:.22em;color:var(--ink);font-size:.7rem}.work-cover img{object-fit:cover;width:100%;height:100%}.work-card-body{padding:25px}.work-card h3{margin:4px 0;font-size:1.45rem}.tag-row{flex-wrap:wrap;gap:6px;margin:20px 0;display:flex}.tag-row span{border:1px solid var(--line);border-radius:99px;padding:3px 10px;font-size:.72rem}.home-links{grid-template-columns:repeat(3,1fr);padding-bottom:120px;display:grid}.home-links a{border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(10px)saturate(108%);gap:5px;padding:35px 24px;display:grid}.home-links strong{font-size:1.25rem}.home-links span{justify-self:end;font-size:1.5rem}.site-footer{border-top:1px solid var(--line);background:var(--paper);grid-template-columns:2fr 1fr;gap:30px;padding:55px max(20px,50vw - 590px);display:grid}.site-footer strong{font-size:1.6rem}.footer-links{justify-content:end;gap:20px;display:flex}.site-footer small{color:var(--muted);grid-column:1/-1}.page-hero{padding:92px 0 62px;position:relative}.page-hero>p:last-child{max-width:560px;margin-left:auto}.work-detail{padding:70px 0 120px}.back-link{font-weight:700}.work-detail header{padding:55px 0}.work-detail h1{margin:10px 0;font-size:clamp(2.6rem,6.5vw,5.5rem);line-height:1}.lead{font-size:1.12rem}.detail-cover{border-radius:25px;margin-bottom:65px}.detail-grid{grid-template-columns:1fr 1fr;gap:50px;display:grid}.detail-grid dl div{border-bottom:1px solid var(--line);grid-template-columns:110px 1fr;padding:12px 0;display:grid}.detail-grid dt{color:var(--muted)}.detail-grid dd{margin:0}.download-panel{background:color-mix(in srgb, var(--accent-soft) 72%, transparent);color:var(--ink);border:1px solid var(--glass-line);box-shadow:var(--shadow-soft);backdrop-filter:blur(12px)saturate(110%);border-radius:25px;padding:40px;transform:rotate(1deg)}.download-panel .button{margin-top:15px}.note{font-size:.82rem}.skill-board{grid-template-columns:repeat(3,1fr);gap:22px;padding:30px 0 130px;display:grid}.skill-card{border:1px solid var(--ink);background:var(--glass);min-height:340px;box-shadow:var(--shadow-soft);backdrop-filter:blur(12px)saturate(108%);border-radius:20px;padding:28px;position:relative}.skill-card:nth-child(2){background:var(--accent-soft);color:var(--ink);transform:translateY(22px)}.skill-symbol{font-size:3rem}.skill-card h2{font-size:1.75rem}.skill-cloud{flex-wrap:wrap;gap:10px;margin-top:40px;display:flex}.skill-cloud span{border:1px solid;border-radius:99px;padding:6px 12px}.about-grid{grid-template-columns:1fr 1fr;align-items:center;gap:70px;padding-bottom:130px;display:grid}.portrait-placeholder{aspect-ratio:4/5;background:var(--accent);color:var(--ink);text-align:center;border-radius:48% 48% 22% 22%;place-items:center;font-weight:900;display:grid;transform:rotate(-3deg)}.prose{font-size:1.08rem}.contact-list{padding-bottom:130px}.contact-list a{border-bottom:1px solid var(--line);grid-template-columns:60px 2fr 1fr auto;align-items:center;padding:26px 10px;display:grid}.contact-list strong{font-size:1.6rem}.contact-list b{font-size:1.25rem}.coming-soon{text-align:center;min-height:70vh;padding:120px 0}.coming-soon .seed{background:var(--accent);width:100px;height:100px;color:var(--ink);border-radius:50%;place-items:center;margin:30px auto;font-size:2.5rem;display:grid}.coming-soon p{max-width:600px;margin:20px auto}@media (width<=760px),(hover:none) and (pointer:coarse){.site-header{grid-template-columns:1fr auto auto;gap:10px}.menu-toggle{background:0 0;border:0;display:block}.site-header nav{background:var(--paper);border-bottom:1px solid var(--line);flex-direction:column;padding:25px;display:none;position:absolute;top:77px;left:0;right:0}.site-header.menu-open nav{display:flex}.theme-label{display:none}.hero{min-height:650px;padding-top:90px}.hero-intro,.button-row{margin-left:0}.hero-sticker{width:85px;height:85px;padding:17px 8px;font-size:.85rem;top:75px;right:5%}.work-grid,.detail-grid,.skill-board,.about-grid,.home-links{grid-template-columns:1fr}.section{padding:80px 0}.section-heading{align-items:start;gap:20px}.skill-card:nth-child(2){transform:none}.page-hero>p:last-child{margin-left:0}.site-footer{grid-template-columns:1fr}.footer-links{justify-content:start}.contact-list a{grid-template-columns:45px 1fr auto}.contact-list small{display:none}.contact-list strong{font-size:1.35rem}}.nav-icon{fill:none;stroke:currentColor;stroke-width:1.65px;stroke-linecap:round;stroke-linejoin:round;flex:0 0 23px;align-self:center;width:23px;height:23px;display:block}.theme-icon{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;grid-area:1/1;width:19px;height:19px;transition:opacity .2s,transform .3s}.theme-icon-moon{opacity:0;transform:rotate(-35deg)scale(.7)}.dynamic-performance-warning{z-index:100;border:1px solid color-mix(in srgb, #ef4444 28%, var(--glass-line));color:color-mix(in srgb, #ef4444 72%, var(--ink));background:color-mix(in srgb, #ef4444 14%, var(--paper));box-shadow:var(--shadow-soft);white-space:nowrap;pointer-events:none;opacity:0;backdrop-filter:blur(12px)saturate(110%);border-radius:10px;align-items:center;gap:.4rem;padding:.45rem .6rem;font-size:.78rem;font-weight:650;line-height:1;transition:opacity .16s,transform .18s;display:flex;position:fixed;top:0;left:0;transform:translateY(4px)}.dynamic-performance-warning[hidden]{display:none}.dynamic-performance-warning.is-visible{opacity:1;transform:translateY(0)}.dynamic-performance-warning svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:15px;height:15px}[data-theme=dark] .theme-icon-sun{opacity:0;transform:rotate(35deg)scale(.7)}[data-theme=dark] .theme-icon-moon{opacity:1;transform:rotate(0)scale(1)}@media (width>=761px) and (hover:hover) and (pointer:fine){.site-header{z-index:30;background:color-mix(in srgb, var(--glass) 88%, transparent);border:1px solid var(--glass-line);width:63px;height:auto;box-shadow:var(--shadow-soft);backdrop-filter:blur(20px)saturate(118%);border-radius:19px;flex-direction:column;grid-template-columns:none;align-items:stretch;gap:5px;padding:7px;transition:width .38s cubic-bezier(.2,.8,.2,1),border-radius .38s;display:flex;position:fixed;top:50%;left:21px;overflow:hidden;transform:translateY(-50%)}.site-header:focus-within:not(.pointer-mode),.site-header.is-pointer-open{border-radius:21px;width:160px}.logo{border-bottom:1px solid var(--line);letter-spacing:-.025em;align-items:center;width:100%;height:45px;padding-left:12px;font-weight:900;line-height:1;display:flex;position:relative;overflow:hidden}.logo-w{z-index:2;flex:none;font-size:1.08rem}.logo-dot{z-index:3;flex:none;margin-left:.02em;font-size:1.08rem;transition:transform .52s cubic-bezier(.16,1,.3,1)}.logo-letters{letter-spacing:-.015em;flex:0 0 0;width:0;font-size:1rem;transition:width .52s cubic-bezier(.16,1,.3,1),flex-basis .52s cubic-bezier(.16,1,.3,1);display:flex}.logo-letters span{opacity:0;transition:opacity .2s,transform .4s cubic-bezier(.16,1,.3,1);display:inline-block;transform:translate(-11px)}.logo-letters span:nth-child(n+4){font-weight:400}.site-header:focus-within:not(.pointer-mode) .logo-letters,.site-header.is-pointer-open .logo-letters{flex-basis:70px;width:70px}.site-header:focus-within:not(.pointer-mode) .logo-letters span,.site-header.is-pointer-open .logo-letters span{opacity:1;transform:translate(0)}.logo-letters span:first-child{transition-delay:.29s}.logo-letters span:nth-child(2){transition-delay:.26s}.logo-letters span:nth-child(3){transition-delay:.23s}.logo-letters span:nth-child(4){transition-delay:.2s}.logo-letters span:nth-child(5){transition-delay:.17s}.logo-letters span:nth-child(6){transition-delay:.14s}.logo-letters span:nth-child(7){transition-delay:.11s}.logo-letters span:nth-child(8){transition-delay:80ms}.logo-letters span:nth-child(9),.site-header:focus-within:not(.pointer-mode) .logo-letters span:first-child,.site-header.is-pointer-open .logo-letters span:first-child{transition-delay:50ms}.site-header:focus-within:not(.pointer-mode) .logo-letters span:nth-child(2),.site-header.is-pointer-open .logo-letters span:nth-child(2){transition-delay:80ms}.site-header:focus-within:not(.pointer-mode) .logo-letters span:nth-child(3),.site-header.is-pointer-open .logo-letters span:nth-child(3){transition-delay:.11s}.site-header:focus-within:not(.pointer-mode) .logo-letters span:nth-child(4),.site-header.is-pointer-open .logo-letters span:nth-child(4){transition-delay:.14s}.site-header:focus-within:not(.pointer-mode) .logo-letters span:nth-child(5),.site-header.is-pointer-open .logo-letters span:nth-child(5){transition-delay:.17s}.site-header:focus-within:not(.pointer-mode) .logo-letters span:nth-child(6),.site-header.is-pointer-open .logo-letters span:nth-child(6){transition-delay:.2s}.site-header:focus-within:not(.pointer-mode) .logo-letters span:nth-child(7),.site-header.is-pointer-open .logo-letters span:nth-child(7){transition-delay:.23s}.site-header:focus-within:not(.pointer-mode) .logo-letters span:nth-child(8),.site-header.is-pointer-open .logo-letters span:nth-child(8){transition-delay:.26s}.site-header:focus-within:not(.pointer-mode) .logo-letters span:nth-child(9),.site-header.is-pointer-open .logo-letters span:nth-child(9){transition-delay:.29s}.site-header nav{text-align:left;flex-direction:column;gap:4px;width:100%;font-size:.81rem;display:flex}.site-header nav a{width:100%;height:42px;color:var(--muted);white-space:nowrap;border-radius:12px;grid-template-columns:23px 1fr;align-items:center;column-gap:11px;padding:0 12px;line-height:1;transition:width .38s cubic-bezier(.2,.8,.2,1),background .2s,color .2s,transform .2s;display:grid;overflow:hidden}.site-header nav a.is-link-hovered,.site-header nav a:focus-visible{color:var(--ink);background:color-mix(in srgb, var(--accent) 11%, transparent);transform:none}.site-header nav a.active{color:var(--accent-strong);background:color-mix(in srgb, var(--accent) 17%, transparent);font-weight:700}.site-header nav a.active:after{display:none}.nav-label{opacity:0;align-items:center;height:23px;line-height:23px;transition:opacity .18s,transform .3s;display:block;transform:translate(-8px)}.site-header:focus-within:not(.pointer-mode) .nav-label,.site-header.is-pointer-open .nav-label{opacity:1;transition-delay:80ms;transform:translate(0)}.theme-toggle{z-index:30;border:1px solid var(--glass-line);background:color-mix(in srgb, var(--glass) 88%, transparent);width:46px;height:46px;box-shadow:var(--shadow-soft);backdrop-filter:blur(18px)saturate(116%);cursor:pointer;transform:translateY(calc(var(--home-footer-reveal,0) * -5rem));border-radius:50%;place-items:center;padding:0;transition:transform .24s cubic-bezier(.22,.61,.36,1),background .2s;display:grid;position:fixed;bottom:22px;left:25px}.theme-toggle:hover{transform:translateY(calc(var(--home-footer-reveal,0) * -5rem - 2px));color:var(--accent-strong);background:color-mix(in srgb, var(--paper) 84%, var(--accent-soft))}[data-theme=light] .theme-toggle:hover{background:color-mix(in srgb, var(--paper) 68%, transparent)}.theme-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.menu-label{font-size:.68rem;line-height:1}@media (width<=760px),(hover:none) and (pointer:coarse){.site-header{grid-template-columns:1fr auto;padding-right:74px}.logo{align-items:center;padding-left:0;display:flex}.logo-w,.logo-dot,.logo-letters{position:static}.logo-dot{transform:none}.logo-letters{display:flex}.logo-letters span{opacity:1;transform:none}.logo-letters span:nth-child(n+4){font-weight:400}.menu-toggle{cursor:pointer;grid-template-columns:1fr;place-items:center;width:52px;height:42px;padding:7px 4px;display:grid}.menu-toggle span:not(.menu-label){background:currentColor;width:22px;height:1px;transition:transform .2s}.site-header.menu-open .menu-toggle span:first-child{transform:translateY(5px)rotate(45deg)}.site-header.menu-open .menu-toggle span:nth-child(2){transform:translateY(-5px)rotate(-45deg)}.site-header nav{box-shadow:0 14px 30px color-mix(in srgb, var(--ink) 10%, transparent);gap:4px}.site-header nav a{border-radius:12px;align-items:center;gap:12px;padding:10px 12px;display:flex}.site-header nav a.active{background:color-mix(in srgb, var(--accent) 35%, transparent);font-weight:800}.site-header nav a.active:after{display:none}.nav-icon{flex-basis:20px;width:20px;height:20px}.theme-toggle{z-index:30;border-radius:50%;place-items:center;width:42px;height:42px;padding:0;display:grid;position:fixed;inset:18px 20px auto auto}.theme-label{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (prefers-reduced-motion:reduce){.site-header,.logo-dot,.logo-letters span,.nav-label,.site-header nav a,.theme-icon{transition:none!important}}.orientation-gate[data-astro-cid-z4jru4n3]{display:none}@media (orientation:landscape) and (hover:none) and (pointer:coarse){.orientation-gate[data-astro-cid-z4jru4n3]{z-index:10000;color:var(--ink);background:color-mix(in srgb, var(--paper) 58%, transparent);backdrop-filter:blur(24px)saturate(112%);place-items:center;padding:1.5rem;display:grid;position:fixed;inset:0}.orientation-gate-card[data-astro-cid-z4jru4n3]{text-align:center;border:1px solid var(--glass-line);background:color-mix(in srgb, var(--paper) 78%, transparent);width:min(24rem,84vw);box-shadow:var(--shadow-soft);border-radius:1.25rem;justify-items:center;gap:.85rem;padding:1.5rem 1.25rem;display:grid}.orientation-gate[data-astro-cid-z4jru4n3] svg[data-astro-cid-z4jru4n3]{fill:none;width:3.75rem;height:3.75rem;stroke:var(--accent-strong);stroke-width:2.6px;stroke-linecap:round;stroke-linejoin:round}.orientation-gate[data-astro-cid-z4jru4n3] p[data-astro-cid-z4jru4n3]{margin:0;font-size:clamp(.95rem,3vw,1.1rem);font-weight:750;line-height:1.5}}
