@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(./space-grotesk-latin-wght-normal-BhU9QXUp.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}:root{--font-sans:"Space Grotesk Variable", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-back:cubic-bezier(.34, 1.56, .64, 1);--gutter:clamp(20px, 4vw, 64px);--header-h:76px;--radius-lg:28px;--radius-md:18px;--radius-sm:10px;--max-w:1440px}:root,[data-theme=dark]{--bg:#0b0b0e;--bg-elev:#141418;--bg-soft:#1b1b21;--fg:#f3f1ea;--fg-muted:#a5a3aa;--fg-faint:#6e6d75;--line:#f3f1ea1a;--line-strong:#f3f1ea33;--accent:#c8ff4d;--accent-ink:#c8ff4d;--accent-contrast:#0b0b0e;--accent-2:#8f7cff;--accent-3:#3fd4ff;--blob-a:#4b2fe0;--blob-b:#26c6f0;--blob-c:#c8ff4d;--blob-dust:#c8ff4d;--blob-rim:1;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light]{--bg:#f4f1ea;--bg-elev:#ebe7de;--bg-soft:#e3ded3;--fg:#141416;--fg-muted:#5b5953;--fg-faint:#8f8b81;--line:#1414161a;--line-strong:#14141633;--accent:#c2f53a;--accent-ink:#3d6a00;--accent-contrast:#0b0b0e;--accent-2:#6a4dff;--accent-3:#0089c2;--blob-a:#7b61ff;--blob-b:#3fd4ff;--blob-c:#c8ff4d;--blob-dust:#6a4dff;--blob-rim:.55;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (width<=640px){:root{--header-h:64px}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;background:var(--bg)}html.is-loading,html.is-locked{overflow:hidden}body{background:var(--bg);min-height:100vh;color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;overflow-wrap:break-word;margin:0;font-size:16px;line-height:1.6;overflow-x:clip}h1,h2,h3,h4{font-size:inherit;text-wrap:balance;margin:0;font-weight:600;line-height:1.15}p,figure,blockquote,dl,dd{margin:0}p{text-wrap:pretty}:where(ul[class],ol[class]){margin:0;padding:0;list-style:none}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit;letter-spacing:inherit;text-align:inherit;cursor:pointer;background:0 0;border:0;margin:0;padding:0}img,svg,canvas,video{max-width:100%;display:block}::selection{background:var(--accent);color:var(--accent-contrast)}:focus-visible{outline:2px solid var(--accent-ink);outline-offset:3px}.container{width:100%;max-width:var(--max-w);padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:clamp(96px,14vw,180px);position:relative}.section-head{justify-items:start;gap:clamp(16px,2vw,24px);margin-bottom:clamp(48px,7vw,96px);display:grid}.section-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-muted);align-items:center;gap:12px;font-size:12px;display:inline-flex}.section-label__index{color:var(--accent-ink);align-items:center;gap:12px;display:inline-flex}.section-label__index:after{content:"";opacity:.6;background:currentColor;width:32px;height:1px}.section-title{letter-spacing:-.045em;font-size:clamp(2.6rem,6.4vw,6rem);font-weight:600;line-height:1}:lang(zh-CN) .section-title{letter-spacing:-.01em;line-height:1.16}.section-intro{max-width:46ch;color:var(--fg-muted);font-size:clamp(1rem,1.2vw,1.12rem)}.reveal-text .line{margin-block:-.04em -.14em;padding-block:.04em .14em;display:block;overflow:hidden}.line__inner{display:inline-block}.split-word{white-space:nowrap;display:inline-block}.split-char{display:inline-block}.roll{line-height:1.3;display:inline-grid;position:relative;overflow:hidden}.roll>span{white-space:nowrap;transition:translate .6s var(--ease-out);grid-area:1/1}.roll>span:last-child{translate:0 110%}.has-roll:focus-visible .roll>span:first-child{translate:0 -110%}.has-roll:focus-visible .roll>span:last-child{translate:0}@media (hover:hover){.has-roll:hover .roll>span:first-child{translate:0 -110%}.has-roll:hover .roll>span:last-child{translate:0}}.btn{--fill:var(--fg);--fill-ink:var(--bg);isolation:isolate;white-space:nowrap;min-height:56px;transition:color .45s var(--ease-out), border-color .45s ease;border-radius:999px;justify-content:center;align-items:center;padding:0 28px;font-size:15px;font-weight:500;display:inline-flex;position:relative}.btn:before{content:"";z-index:-1;border-radius:inherit;background:var(--fill);clip-path:circle(0% at 50% 120%);transition:clip-path .7s var(--ease-out);position:absolute;inset:-1px}.btn__inner{align-items:center;gap:12px;display:inline-flex;position:relative}.btn__icon{width:18px;height:18px;transition:translate .5s var(--ease-back), rotate .5s var(--ease-back);place-items:center;display:grid}.btn__icon svg{width:100%;height:100%}.btn:focus-visible{color:var(--fill-ink)}.btn:focus-visible:before{clip-path:circle(140% at 50% 120%)}@media (hover:hover){.btn:hover{color:var(--fill-ink)}.btn:hover:before{clip-path:circle(140% at 50% 120%)}.btn:hover .btn__icon{translate:3px}}.btn--solid{background:var(--accent);color:var(--accent-contrast)}.btn--ghost{border:1px solid var(--line-strong);color:var(--fg)}.btn--ghost:hover{border-color:var(--fg)}.btn--round{aspect-ratio:1;background:var(--accent);width:160px;min-height:0;color:var(--accent-contrast);border-radius:50%;padding:0;font-size:clamp(15px,1.25vw,17px);font-weight:600}.btn--round .btn__inner{flex-direction:column;gap:8px}.btn--round .btn__icon{width:22px;height:22px}@media (hover:hover){.btn--round:hover .btn__icon{translate:0;rotate:45deg}}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line-strong);font-family:var(--font-mono);color:var(--fg-muted);border-radius:999px;padding:5px 12px;font-size:12px;line-height:1.5}.status-dot{background:#3ddc84;border-radius:50%;flex:none;width:8px;height:8px;display:inline-block;position:relative}.status-dot:after{content:"";border-radius:inherit;background:inherit;animation:status-pulse 2s var(--ease-out) infinite;position:absolute;inset:0}@keyframes status-pulse{0%{opacity:.7;scale:1}70%,to{opacity:0;scale:3}}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:2000;background:var(--accent);color:var(--accent-contrast);transition:translate .4s var(--ease-out);border-radius:999px;padding:10px 18px;font-weight:600;position:fixed;top:12px;left:12px;translate:0 -200%}.skip-link:focus{translate:0}.scroll-progress{z-index:101;pointer-events:none;height:2px;position:fixed;inset:0 0 auto}.scroll-progress__bar{background:linear-gradient(90deg, var(--accent), var(--accent-2));transform-origin:0;height:100%;transform:scaleX(0)}.toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:1200;background:var(--fg);color:var(--bg);opacity:0;pointer-events:none;transition:translate .6s var(--ease-back), opacity .3s ease;border-radius:999px;padding:12px 20px;font-size:14px;font-weight:500;position:fixed;translate:-50% 160%;box-shadow:0 18px 50px -20px #00000080}.toast.is-visible{opacity:1;translate:-50%}.toast:empty{visibility:hidden}.grain{z-index:9000;pointer-events:none;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:180px;animation:.9s steps(5,end) infinite grain;position:fixed;inset:-10%}[data-theme=light] .grain{opacity:.07}@keyframes grain{0%{translate:0}20%{translate:-3% 2%}40%{translate:2% -3%}60%{translate:-2% -1%}80%{translate:3% 3%}to{translate:0}}::view-transition-old(root){animation-duration:.45s}::view-transition-new(root){animation-duration:.45s}html.vt-theme::view-transition-old(root){mix-blend-mode:normal;animation:none}html.vt-theme::view-transition-new(root){mix-blend-mode:normal;animation:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.print-resume{display:none}@media print{@page{size:A4;margin:14mm 14mm 15mm}html,body{color:#16161a!important;background:#fff!important;height:auto!important;overflow:visible!important}html{--lightningcss-light:initial!important;--lightningcss-dark: !important;color-scheme:light!important}body>:not(#root),#root>:not(.print-resume){display:none!important}.print-resume{--pr-ink:#16161a;--pr-muted:#5f5f68;--pr-line:#dcdce2;--pr-accent:#5b3df5;font-family:var(--font-sans);color:var(--pr-ink);-webkit-print-color-adjust:exact;print-color-adjust:exact;font-size:9.4pt;line-height:1.5;display:block}.pr-header{border-bottom:1.5pt solid var(--pr-ink);justify-content:space-between;align-items:flex-end;gap:8mm;padding-bottom:5mm;display:flex}.pr-name{letter-spacing:-.02em;font-size:23pt;font-weight:700;line-height:1.1}.pr-name span{letter-spacing:0;color:var(--pr-muted);margin-left:2mm;font-size:12pt;font-weight:500}.pr-role{color:var(--pr-accent);margin-top:1.5mm;font-size:11pt;font-weight:500}.pr-contact{text-align:right;color:#3a3a42;font-size:8.4pt;line-height:1.6}.pr-section{border-bottom:.5pt solid var(--pr-line);grid-template-columns:26mm minmax(0,1fr);gap:5mm;padding-block:4.5mm;display:grid}.pr-section:last-child{border-bottom:0}.pr-section h2{letter-spacing:.12em;text-transform:uppercase;color:var(--pr-accent);break-after:avoid;padding-top:.6mm;font-size:8.4pt;font-weight:600}.pr-stats{color:var(--pr-muted);flex-wrap:wrap;gap:1mm 5mm;margin-top:2.5mm;display:flex}.pr-stats strong{color:var(--pr-ink);font-weight:700}.pr-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8mm 6mm;margin-top:2.5mm;display:grid}.pr-facts div,.pr-skills div{grid-template-columns:20mm minmax(0,1fr);gap:2mm;display:grid}.pr-skills div{grid-template-columns:34mm minmax(0,1fr);gap:3mm;padding-block:.6mm}.pr-facts dt{color:var(--pr-muted)}.pr-skills dt{font-weight:600}.pr-item__head,.pr-item>p:not(.pr-stack),.pr-bullets li:first-child,.pr-bullets li:nth-last-child(2){break-after:avoid}.pr-item p,.pr-bullets li{break-inside:avoid}.pr-item+.pr-item{margin-top:4mm}.pr-item__head{justify-content:space-between;align-items:baseline;gap:4mm;margin-bottom:.8mm;display:flex}.pr-item h3{font-size:10.4pt;font-weight:600}.pr-item h3 span{color:var(--pr-muted);font-weight:400}.pr-item__meta{font-family:var(--font-mono);color:var(--pr-muted);flex:none;font-size:8pt}.pr-item__role{color:var(--pr-muted);margin-top:-.6mm;margin-bottom:.8mm;font-weight:500}.pr-bullets{margin-top:1.2mm}.pr-bullets li{padding-left:4mm;position:relative}.pr-bullets li+li{margin-top:.5mm}.pr-bullets li:before{content:"";background:var(--pr-accent);width:1.6mm;height:.5pt;position:absolute;top:.72em;left:.6mm}.pr-stack{break-before:avoid;font-family:var(--font-mono);color:var(--pr-muted);margin-top:1.2mm;font-size:7.8pt}.pr-links{gap:.8mm;display:grid}.pr-links li{grid-template-columns:20mm minmax(0,1fr);gap:2mm;display:grid}.pr-links span{font-weight:600}.pr-links a{overflow-wrap:anywhere}}.has-custom-cursor,.has-custom-cursor *{cursor:none!important}.cursor{z-index:10000;pointer-events:none;opacity:0;transition:opacity .3s;position:fixed;top:0;left:0}.cursor-visible .cursor{opacity:1}.cursor--dot{background:var(--fg);width:6px;height:6px;transition:opacity .3s ease, scale .3s var(--ease-out);border-radius:50%}.cursor--ring{border:1px solid color-mix(in srgb, var(--fg) 45%, transparent);width:38px;height:38px;transition:width .45s var(--ease-out), height .45s var(--ease-out), background-color .3s ease, border-color .3s ease, opacity .3s ease, scale .3s var(--ease-out);border-radius:50%;place-items:center;display:grid}.cursor__label{letter-spacing:.02em;white-space:nowrap;color:var(--accent-contrast);opacity:0;transition:opacity .3s ease, scale .45s var(--ease-out);font-size:13px;font-weight:600;scale:.5}.cursor--ring[data-state=link]{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 16%, transparent);width:64px;height:64px}.cursor--ring[data-state=view],.cursor--ring[data-state=label],.cursor--ring[data-state=drag]{background:var(--accent);border-color:#0000;width:92px;height:92px}.cursor--ring[data-state=view] .cursor__label,.cursor--ring[data-state=label] .cursor__label,.cursor--ring[data-state=drag] .cursor__label{opacity:1;scale:1}.cursor--dot[data-state=view],.cursor--dot[data-state=label],.cursor--dot[data-state=drag],.cursor--dot[data-state=link]{opacity:0}.cursor--ring[data-state=dot]{border-color:var(--accent);width:18px;height:18px}.cursor--ring[data-state=hide],.cursor--dot[data-state=hide]{opacity:0}.cursor-down .cursor--ring{scale:.82}.cursor-down .cursor--dot{scale:1.6}.footer{padding-top:clamp(28px,4vw,48px);padding-bottom:calc(clamp(18px, 2.4vw, 28px) + env(safe-area-inset-bottom));border-top:1px solid var(--line);position:relative;overflow:hidden}.footer__top{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:20px clamp(24px,5vw,80px);display:grid}.footer__role{color:var(--fg-muted);font-size:15px}.footer__time{gap:2px;display:grid}.footer__label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);font-size:11px}.footer__time time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--fg);font-size:14px}.footer__back{align-items:center;gap:14px;font-size:15px;font-weight:500;display:inline-flex}.footer__back-icon{background:var(--accent);width:48px;height:48px;color:var(--accent-contrast);transition:scale .5s var(--ease-back);border-radius:50%;place-items:center;display:grid;overflow:hidden}.footer__back:hover .footer__back-icon{scale:1.08}.footer__back:hover .footer__back-icon svg{animation:footer-arrow .7s var(--ease-out)}@keyframes footer-arrow{45%{translate:0 -160%}46%{translate:0 160%}}.footer__wordmark{margin-top:clamp(40px,7vw,96px)}.footer__wordmark-text{width:max-content;font-size:var(--wordmark-size,20vw);letter-spacing:-.06em;white-space:nowrap;clip-path:inset(-.5em -.2em 0);-webkit-user-select:none;user-select:none;padding:0 .06em .16em 0;font-weight:700;line-height:.8;display:flex}.footer__char{background-image:linear-gradient(90deg, var(--fg) 0%, var(--fg) 28%, var(--accent-ink) 64%, var(--accent-2) 100%);color:#0000;transition:translate .6s var(--ease-back);-webkit-background-clip:text;background-clip:text}.footer__char:hover{translate:0 -.06em}.footer__bottom{border-top:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-faint);flex-wrap:wrap;justify-content:space-between;gap:8px 24px;padding-top:16px;font-size:12px;display:flex}@media (width<=720px){.footer__top{grid-template-columns:minmax(0,1fr) auto}.footer__role{grid-column:1/-1}}.header{z-index:100;height:var(--header-h);padding-inline:var(--gutter);transition:translate .6s var(--ease-out), background-color .4s ease, border-color .4s ease, backdrop-filter .4s ease;border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:24px;display:flex;position:fixed;inset:0 0 auto}.header.is-scrolled{background:color-mix(in srgb, var(--bg) 72%, transparent);border-color:var(--line);-webkit-backdrop-filter:blur(14px)saturate(1.4);backdrop-filter:blur(14px)saturate(1.4)}.header.is-hidden{translate:0 -100%}.header.is-menu-open{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-color:#0000}.header__logo{letter-spacing:-.01em;align-items:center;gap:12px;font-weight:600;display:inline-flex}.header__mark{background:var(--accent);width:38px;height:38px;color:var(--accent-contrast);letter-spacing:.02em;transition:rotate .6s var(--ease-back);border-radius:50%;place-items:center;font-size:13px;font-weight:700;display:grid}.header__logo:hover .header__mark{rotate:-18deg}.header__nav ul{gap:clamp(14px,2vw,34px);margin:0;padding:0;list-style:none;display:flex}.header__link{color:var(--fg-muted);align-items:baseline;gap:6px;padding-block:6px;font-size:15px;transition:color .3s;display:inline-flex;position:relative}.header__link:hover,.header__link.is-active{color:var(--fg)}.header__link-index{font-family:var(--font-mono);color:var(--fg-faint);font-size:10px}.header__link:after{content:"";background:var(--accent);width:5px;height:5px;transition:scale .4s var(--ease-back);border-radius:50%;position:absolute;bottom:-4px;left:50%;translate:-50%;scale:0}.header__link.is-active:after{scale:1}.header__actions{align-items:center;gap:10px;display:flex}.header__pill,.header__icon-btn,.header__menu-btn{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--bg) 30%, transparent);border-radius:999px;place-items:center;height:40px;transition:background-color .3s,color .3s,border-color .3s;display:inline-grid}.header__pill{min-width:52px;padding-inline:14px;font-size:14px;font-weight:500}.header__icon-btn,.header__menu-btn{width:40px}.header__pill:hover,.header__icon-btn:hover,.header__menu-btn:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}.header__theme-icon{animation:theme-icon-in .6s var(--ease-back);display:grid}@keyframes theme-icon-in{0%{opacity:0;rotate:-120deg;scale:.3}}.header__menu-btn{display:none}.burger{width:16px;height:10px;position:relative}.burger i{width:100%;height:1.5px;transition:top .4s var(--ease-out), rotate .4s var(--ease-out);background:currentColor;border-radius:2px;position:absolute;left:0}.burger i:first-child{top:0}.burger i:last-child{top:calc(100% - 1.5px)}.is-menu-open .burger i{top:calc(50% - .75px)}.is-menu-open .burger i:first-child{rotate:45deg}.is-menu-open .burger i:last-child{rotate:-45deg}.menu{--origin:calc(100% - var(--gutter) - 20px) calc(var(--header-h) / 2);z-index:90;padding:calc(var(--header-h) + 6vh) var(--gutter) calc(var(--gutter) + env(safe-area-inset-bottom));background:var(--bg-elev);clip-path:circle(0 at var(--origin));visibility:hidden;transition:clip-path .8s var(--ease-in-out), visibility 0s linear .8s;flex-direction:column;justify-content:space-between;gap:40px;display:flex;position:fixed;inset:0}.menu.is-open{clip-path:circle(150vmax at var(--origin));visibility:visible;transition:clip-path .9s var(--ease-in-out), visibility 0s linear 0s}.menu__list{gap:2px;margin:0;padding:0;list-style:none;display:grid}.menu__link{letter-spacing:-.04em;font-size:clamp(2.4rem,11vw,4.6rem);font-weight:600;line-height:1.1;display:block;overflow:hidden}.menu__link-inner{transition:translate .5s var(--ease-out);align-items:baseline;gap:14px;display:inline-flex;translate:0 110%}.menu__link-inner small{font-family:var(--font-mono);letter-spacing:0;color:var(--accent-ink);font-size:13px;font-weight:400}.menu.is-open .menu__link-inner{transition:translate .9s var(--ease-out) calc(.25s + var(--i) * 60ms);translate:0}.menu__footer{color:var(--fg-muted);gap:16px;font-size:15px;display:grid}.menu__socials{flex-wrap:wrap;gap:8px 20px;display:flex}.menu__socials a{color:var(--fg);align-items:center;gap:4px;display:inline-flex}@media (width<=960px){.header__nav{display:none}.header__menu-btn{display:inline-grid}}@media (width<=520px){.header__name{display:none}}.preloader{z-index:1000;position:fixed;inset:0}.preloader__panel{background:var(--bg-elev);will-change:transform;position:absolute;inset:0}.preloader__panel--accent{background:var(--accent)}.preloader__inner{padding:calc(var(--gutter) * .75) var(--gutter);flex-direction:column;justify-content:space-between;display:flex;position:absolute;inset:0}.preloader__top{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);justify-content:space-between;gap:16px;font-size:12px;display:flex}.preloader__greeting{letter-spacing:-.03em;white-space:nowrap;align-items:center;gap:18px;font-size:clamp(2.4rem,6vw,5rem);font-weight:600;display:flex;position:absolute;top:50%;left:50%;translate:-50% -50%}.preloader__greeting:before{content:"";background:var(--accent);border-radius:50%;width:.24em;height:.24em}.preloader__bottom{justify-content:space-between;align-items:flex-end;gap:24px;display:flex}.preloader__count{letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-size:clamp(4.5rem,15vw,13rem);font-weight:600;line-height:.8}.preloader__bar{background:var(--line-strong);width:min(320px,38vw);height:2px;margin-bottom:.6em;overflow:hidden}.preloader__bar i{background:var(--accent);transform-origin:0;height:100%;display:block;transform:scaleX(0)}@property --portrait-angle{syntax:"<angle>";inherits:false;initial-value:0deg}.about__grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:clamp(40px,7vw,120px);display:grid}.about__aside{top:calc(var(--header-h) + 24px);gap:32px;display:grid;position:sticky}.portrait-wrap{perspective:1000px}.portrait{aspect-ratio:4/5;border-radius:var(--radius-lg);background:var(--bg-soft);clip-path:inset(0% 0% 0% 0% round var(--radius-lg));will-change:transform;position:relative;overflow:hidden}.portrait__media{position:absolute;inset:-10% 0 -14%}.portrait__media img{object-fit:cover;width:100%;height:100%}.portrait__art{background:radial-gradient(circle at 28% 22%, color-mix(in srgb, var(--accent) 75%, transparent), transparent 46%), radial-gradient(circle at 78% 82%, color-mix(in srgb, var(--accent-2) 85%, transparent), transparent 52%), conic-gradient(from var(--portrait-angle) at 50% 55%, var(--accent-3), var(--accent-2), var(--accent), var(--accent-3));place-items:center;animation:16s linear infinite portrait-angle;display:grid;position:absolute;inset:0}.portrait__art:before{content:"";mix-blend-mode:overlay;background:repeating-radial-gradient(circle at 50% 55%,#0000 0 22px,#ffffff1f 22px 23px);position:absolute;inset:0}.portrait__art:after{content:"";background:linear-gradient(#0000 55%,#00000073);position:absolute;inset:0}@keyframes portrait-angle{to{--portrait-angle:360deg}}.portrait__initials{z-index:1;letter-spacing:-.06em;color:#0000;-webkit-text-stroke:1.5px #ffffffe6;font-size:clamp(6rem,13vw,12rem);font-weight:700;line-height:1;position:relative}.portrait__shine{pointer-events:none;background:radial-gradient(circle at var(--shine-x,50%) var(--shine-y,50%), #fff6, transparent 48%);mix-blend-mode:overlay;opacity:0;transition:opacity .5s;position:absolute;inset:0}.portrait:hover .portrait__shine{opacity:1}.portrait__badge{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;background:#0a0a0e6b;border:1px solid #ffffff38;border-radius:999px;align-items:center;gap:10px;padding:9px 16px 9px 12px;font-size:13px;display:inline-flex;position:absolute;bottom:18px;left:18px}.about__facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 24px;margin:0;display:grid}.fact{border-top:1px solid var(--line);align-content:start;gap:6px;padding-top:14px;display:grid}.fact dt{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint);font-size:11px}.fact dd{color:var(--fg);margin:0;font-size:15px}.about__main{gap:clamp(36px,5vw,64px);display:grid}.about__paragraph{letter-spacing:-.015em;color:var(--fg);font-size:clamp(1.3rem,2.25vw,2.05rem);font-weight:500;line-height:1.42}:lang(zh-CN) .about__paragraph{letter-spacing:.01em;line-height:1.7}.about__stats{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.stat{background:var(--bg);align-content:space-between;gap:18px;min-height:168px;padding:clamp(20px,2.4vw,32px);transition:background-color .4s;display:grid}.stat:hover{background:var(--bg-elev)}.stat__value{letter-spacing:-.05em;font-variant-numeric:tabular-nums;align-items:baseline;font-size:clamp(2.8rem,5vw,4.6rem);font-weight:600;line-height:1;display:flex}.stat__suffix{color:var(--accent-ink)}.stat__label{color:var(--fg-muted);font-size:14px}@media (width<=960px){.about__grid{grid-template-columns:1fr}.about__aside{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;position:relative;top:0}}@media (width<=640px){.about__aside{grid-template-columns:1fr}.about__facts{grid-template-columns:1fr 1fr}.stat{min-height:136px}}.contact{isolation:isolate;overflow:hidden}.contact__glow{z-index:-1;aspect-ratio:1;background:radial-gradient(circle at 40% 40%, color-mix(in srgb, var(--accent) 30%, transparent), transparent 60%), radial-gradient(circle at 65% 60%, color-mix(in srgb, var(--accent-2) 35%, transparent), transparent 62%);filter:blur(70px);opacity:.55;pointer-events:none;border-radius:50%;width:min(80vw,1100px);position:absolute;bottom:-20vw;right:-10vw}.contact .section-label{margin-bottom:clamp(20px,3vw,36px)}.contact__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:32px 48px;display:flex}.contact__title{letter-spacing:-.05em;font-size:clamp(3rem,9.4vw,9.6rem);font-weight:600;line-height:.95}:lang(zh-CN) .contact__title{letter-spacing:-.02em;font-size:clamp(2.8rem,8.4vw,8.4rem);line-height:1.12}.contact__title .line:last-child{color:var(--accent-ink)}.contact__badge{aspect-ratio:1;flex:none;place-items:center;width:clamp(200px,21vw,280px);margin-inline:auto 0;display:grid;position:relative}.contact__ring{width:100%;height:100%;animation:24s linear infinite contact-spin;position:absolute;inset:0;overflow:visible}.contact__ring text{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;fill:var(--fg-muted);font-size:12.5px}@keyframes contact-spin{to{rotate:360deg}}.contact__badge .btn--round{width:62%}.contact__intro{max-width:640px;color:var(--fg-muted);margin-top:clamp(28px,4vw,48px);font-size:clamp(1.05rem,1.5vw,1.3rem)}.contact__grid{border-top:1px solid var(--line-strong);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;margin-top:clamp(48px,7vw,96px);display:grid}.contact__block{align-content:start;justify-items:start;gap:12px;padding:26px 24px 0 0;display:grid}.contact__block+.contact__block{border-left:1px solid var(--line);padding-left:24px}.contact__label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);font-size:11px}.contact__value{overflow-wrap:anywhere;max-width:100%;font-size:clamp(1.05rem,1.4vw,1.25rem);font-weight:500}.contact__copy{border:1px solid var(--line-strong);height:34px;color:var(--fg-muted);border-radius:999px;align-items:center;gap:8px;padding-inline:14px;font-size:13px;transition:background-color .3s,color .3s,border-color .3s;display:inline-flex}.contact__copy:hover{border-color:var(--fg);background:var(--fg);color:var(--bg)}.contact__socials{grid-template-columns:max-content;gap:6px;display:grid}.contact__social{justify-content:space-between;align-items:center;gap:16px;font-size:1.05rem;font-weight:500;display:flex}.contact__social svg{color:var(--fg-faint);transition:color .3s ease, translate .4s var(--ease-back)}.contact__social:hover svg{color:var(--accent-ink);translate:2px -2px}.contact__status{align-items:center;gap:10px;display:inline-flex}.contact__note{color:var(--fg-muted);font-size:14px}@media (width<=1024px){.contact__grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row}.contact__block{padding-bottom:26px}.contact__block:nth-child(3){border-left:0;padding-left:0}.contact__block:nth-child(n+3){border-top:1px solid var(--line)}.contact__block:last-child:nth-child(odd){grid-column:1/-1}}@media (width<=560px){.contact__grid{grid-template-columns:1fr}.contact__block+.contact__block{border-top:1px solid var(--line);border-left:0;padding-left:0}.contact__badge{margin-inline:auto}}.timeline{--rail-x:7px;position:relative}.timeline__rail{top:8px;bottom:8px;left:var(--rail-x);background:var(--line-strong);width:1px;position:absolute}.timeline__progress{background:linear-gradient(to bottom, var(--accent), var(--accent-2));transform-origin:top;position:absolute;inset:0}.timeline__list{gap:clamp(28px,4vw,56px);margin:0;padding:0;list-style:none;display:grid}.job{grid-template-columns:minmax(160px,240px) minmax(0,1fr);gap:clamp(20px,4vw,64px);padding-left:clamp(40px,5vw,72px);display:grid;position:relative}.job__dot{top:6px;left:calc(var(--rail-x) - 7px);border:1px solid var(--line-strong);background:var(--bg);width:15px;height:15px;transition:background-color .4s ease, border-color .4s ease, box-shadow .4s ease, scale .5s var(--ease-back);border-radius:50%;position:absolute}.job.is-active .job__dot{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 6px color-mix(in srgb, var(--accent) 18%, transparent);scale:1.15}.job__meta{font-family:var(--font-mono);color:var(--fg-muted);align-content:start;gap:6px;font-size:13px;display:grid}.job__index{color:var(--fg-faint);font-size:11px}.job__period{color:var(--fg);font-size:clamp(1.05rem,1.6vw,1.3rem);transition:color .4s}.job.is-active .job__period{color:var(--accent-ink)}.job__card{--mx:50%;--my:50%;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-elev);isolation:isolate;transition:border-color .4s ease, translate .6s var(--ease-out);gap:18px;padding:clamp(22px,3vw,40px);display:grid;position:relative;overflow:hidden}.job__card:before{content:"";z-index:-1;background:radial-gradient(520px circle at var(--mx) var(--my), color-mix(in srgb, var(--accent) 14%, transparent), transparent 45%);opacity:0;transition:opacity .5s;position:absolute;inset:0}.job__card:hover{border-color:var(--line-strong)}.job__card:hover:before{opacity:1}.job__company{letter-spacing:-.03em;font-size:clamp(1.45rem,2.4vw,2.1rem);font-weight:600}.job__role{color:var(--fg-muted);margin-top:4px}.job__summary{color:var(--fg);font-size:16px}.job__highlights{color:var(--fg-muted);gap:10px;margin:0;padding:0;list-style:none;display:grid}.job__highlights li{padding-left:22px;position:relative}.job__highlights li:before{content:"";background:var(--accent-ink);width:10px;height:1px;position:absolute;top:.72em;left:0}@media (width<=760px){.job{grid-template-columns:1fr;gap:14px;padding-left:36px}.job__meta{grid-auto-flow:column;justify-content:start;align-items:baseline;gap:12px}}.hero{isolation:isolate;min-height:100svh;position:relative;overflow:hidden}.hero__visual{z-index:-1;pointer-events:none;position:absolute;inset:0}.hero__canvas{width:100%;height:100%;position:absolute;inset:0}.hero__glow{aspect-ratio:1;background:radial-gradient(circle at 35% 35%, var(--blob-c), transparent 55%), radial-gradient(circle at 70% 70%, var(--blob-b), transparent 60%), var(--blob-a);filter:blur(60px);opacity:.45;border-radius:50%;width:min(52vw,640px);transition:opacity 1.2s;animation:9s ease-in-out infinite alternate hero-glow;position:absolute;top:50%;right:8%;translate:0 -50%}.hero__visual[data-status=ready] .hero__glow{opacity:0}@keyframes hero-glow{to{rotate:40deg;scale:1.12}}.hero__layout{min-height:100svh;display:flex;position:relative}.hero__content{padding-top:calc(var(--header-h) + 5vh);flex-direction:column;flex:1;justify-content:flex-end;gap:clamp(18px,2.6vh,32px);padding-bottom:clamp(18px,3.5vh,36px);display:flex}.hero__eyebrow{border:1px solid var(--line-strong);background:color-mix(in srgb, var(--bg) 45%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-muted);border-radius:999px;align-self:flex-start;align-items:center;gap:10px;padding:8px 16px 8px 12px;font-size:12px;display:inline-flex}.hero__title{letter-spacing:-.05em;font-size:clamp(3.4rem,10vw,10.5rem);font-weight:600;line-height:.92}:lang(zh-CN) .hero__title{letter-spacing:-.02em;font-size:clamp(3.2rem,9vw,9.4rem);line-height:1.04}.hero__line{margin-block:-.03em -.15em;padding-block:.03em .15em;display:block;overflow:hidden}.hero__line:nth-child(2){padding-left:clamp(0px,9vw,1.4em)}.hero__line:last-child{color:var(--accent-ink)}.hero__line .split-char{transition:translate .6s var(--ease-back), rotate .6s var(--ease-back), color .3s ease}.hero__line .split-char:hover{color:var(--accent-2);translate:0 -.08em;rotate:-6deg}.hero__role{color:var(--fg-muted);flex-wrap:wrap;align-items:baseline;gap:.4em;font-size:clamp(1.05rem,1.9vw,1.55rem);display:flex}.role-cycler__text{color:var(--fg);font-weight:500}.role-cycler__text:after{content:"";vertical-align:-.12em;background:var(--accent-ink);width:.08em;height:1em;margin-left:.12em;animation:1s step-end infinite caret;display:inline-block}@keyframes caret{50%{opacity:0}}.scramble-glyph{color:var(--accent-ink);opacity:.85}.hero__bottom{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px 48px;display:flex}.hero__intro{max-width:500px;color:var(--fg-muted);font-size:clamp(.98rem,1.15vw,1.1rem)}.hero__cta{flex-wrap:wrap;gap:12px;display:flex}.hero__meta{--meta-line:1;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);justify-content:space-between;align-items:center;gap:16px;padding-top:18px;font-size:12px;display:flex;position:relative}.hero__meta:before{content:"";background:var(--line-strong);transform-origin:0;height:1px;transform:scaleX(var(--meta-line));position:absolute;inset:0 0 auto}.hero__scroll{align-items:center;gap:10px;transition:color .3s;display:inline-flex}.hero__scroll:hover{color:var(--fg)}.hero__scroll-line{background:var(--line-strong);width:36px;height:1px;position:relative;overflow:hidden}.hero__scroll-line:after{content:"";background:var(--accent-ink);animation:scroll-line 1.8s var(--ease-in-out) infinite;position:absolute;inset:0}@keyframes scroll-line{0%{translate:-100%}55%,to{translate:100%}}@media (width<=768px){.hero__content{gap:18px}.hero__line:nth-child(2){padding-left:0}.hero__meta-right{display:none}}.lab__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,24px);display:grid}.lab-card{--mx:50%;--my:50%;isolation:isolate;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-elev);flex-direction:column;transition:border-color .4s;display:flex;position:relative;overflow:hidden}.lab-card:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(420px circle at var(--mx) var(--my), color-mix(in srgb, var(--accent) 10%, transparent), transparent 50%);opacity:0;transition:opacity .5s;position:absolute;inset:0}.lab-card:hover{border-color:var(--line-strong)}.lab-card:hover:before{opacity:1}.lab-card__stage{aspect-ratio:4/3;border-bottom:1px solid var(--line);background:radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--fg) 5%, transparent), transparent 70%), var(--bg);position:relative;overflow:hidden}.sketch-canvas{touch-action:pan-y;width:100%;height:100%;position:absolute;inset:0}.lab-card__info{grid-template-columns:auto minmax(0,1fr);gap:6px 16px;padding:18px 22px 22px;display:grid}.lab-card__index{font-family:var(--font-mono);color:var(--accent-ink);padding-top:5px;font-size:12px}.lab-card__title{letter-spacing:-.02em;font-size:1.2rem;font-weight:600}.lab-card__tech{font-family:var(--font-mono);color:var(--fg-muted);margin-top:2px;font-size:12px}.lab-card__hint{color:var(--fg-faint);grid-column:2;align-items:center;gap:8px;margin-top:6px;font-size:13px;display:flex}.lab-card__hint:before{content:"";background:currentColor;flex:none;width:14px;height:1px}.goo{touch-action:pan-y;width:100%;height:100%;position:absolute;inset:0}.goo__trail{fill:color-mix(in oklab, var(--goo-head) calc(100% - var(--t) * 100%), var(--goo-tail))}.goo__drop{fill:var(--goo-drop)}.lab{--goo-head:var(--accent);--goo-tail:var(--accent-2);--goo-drop:var(--accent-3)}[data-theme=light] .lab{--goo-head:var(--accent-2);--goo-tail:var(--accent-3);--goo-drop:var(--accent-ink)}.morph{place-items:center;width:100%;display:grid;position:absolute;inset:0}.morph__svg{width:min(58%,250px);height:auto;overflow:visible}.morph__stop-a{stop-color:var(--accent)}.morph__stop-b{stop-color:var(--accent-2)}.morph__outline{fill:none;stroke:var(--fg);stroke-width:1.5px;stroke-linejoin:round;transform:translate(9px,9px)}.morph__ring{aspect-ratio:1;border:1px dashed var(--line-strong);border-radius:50%;width:min(80%,340px);animation:40s linear infinite morph-ring;position:absolute;top:50%;left:50%;translate:-50% -50%}.morph__ring:after{content:"";background:var(--accent-ink);border-radius:50%;width:8px;height:8px;margin-left:-4px;position:absolute;top:-4px;left:50%}@keyframes morph-ring{to{rotate:360deg}}.morph__counter{font-family:var(--font-mono);color:var(--fg-muted);font-size:12px;position:absolute;top:16px;left:18px}.flip{padding:16px 16px 62px;position:absolute;inset:0}.flip__grid{gap:8px;height:100%;display:grid}.flip__grid[data-layout=grid]{grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:repeat(3,minmax(0,1fr))}.flip__grid[data-layout=feature]{grid-template-rows:repeat(3,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr))}.flip__grid[data-layout=feature] .flip-tile:first-child{grid-area:span 2/span 2}.flip__grid[data-layout=bars]{grid-template-rows:minmax(0,1fr);grid-template-columns:repeat(9,minmax(0,1fr));align-items:end;gap:6px}.flip__grid[data-layout=bars] .flip-tile{height:calc(var(--h) * 100%)}.flip-tile{min-width:0;font-family:var(--font-mono);border-radius:10px;padding:7px 8px;font-size:11px;line-height:1;overflow:hidden}.flip-tile[data-tone="0"]{background:var(--accent);color:var(--accent-contrast)}.flip-tile[data-tone="1"]{background:var(--accent-2);color:#fff}.flip-tile[data-tone="2"]{background:var(--accent-3);color:#05202a}.flip-tile[data-tone="3"]{border:1px solid var(--line-strong);background:var(--bg-soft);color:var(--fg-muted)}.flip__controls{align-items:center;gap:8px;display:flex;position:absolute;bottom:14px;left:18px;right:16px}.flip__state{font-family:var(--font-mono);color:var(--fg-faint);margin-right:auto;font-size:12px}.flip__state b{color:var(--fg);font-weight:500}.flip__btn{border:1px solid var(--line-strong);width:36px;height:36px;transition:background-color .3s ease, color .3s ease, border-color .3s ease, rotate .5s var(--ease-back);border-radius:50%;place-items:center;display:grid}.flip__btn:hover{border-color:var(--fg);background:var(--fg);color:var(--bg);rotate:90deg}@media (width<=1100px){.lab__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=680px){.lab__grid{grid-template-columns:1fr}}.marquee{padding-block:clamp(48px,7vw,96px);position:relative;overflow:hidden}.marquee__band{white-space:nowrap;padding-block:clamp(14px,1.6vw,22px);display:flex;overflow:hidden}.marquee__band--solid{z-index:1;background:var(--accent);color:var(--accent-contrast);position:relative;rotate:-2.5deg;scale:1.06}.marquee__band--outline{background:var(--bg-elev);border-block:1px solid var(--line);margin-top:-6px;rotate:2deg;scale:1.06}.marquee__track{will-change:transform;flex-shrink:0;display:flex}.marquee__group{flex-shrink:0;display:flex}.marquee__item{letter-spacing:-.03em;text-transform:uppercase;align-items:center;gap:clamp(18px,2.4vw,36px);padding-right:clamp(18px,2.4vw,36px);font-size:clamp(1.7rem,4vw,3.4rem);font-weight:600;line-height:1.1;display:inline-flex}.marquee__band--outline .marquee__item{color:#0000;-webkit-text-stroke:1px var(--fg-muted)}.marquee__star{fill:currentColor;width:.55em;height:.55em;animation:6s linear infinite spin}.marquee__band--outline .marquee__star{fill:var(--accent-ink)}@keyframes spin{to{rotate:360deg}}.modal{--modal-inset-y:clamp(10px, 3vh, 32px);--modal-inset-x:clamp(10px, 3vw, 48px);z-index:500;position:fixed;inset:0}.modal__backdrop{background:color-mix(in srgb, var(--bg) 62%, transparent);-webkit-backdrop-filter:blur(10px)saturate(1.2);backdrop-filter:blur(10px)saturate(1.2);position:absolute;inset:0}.modal__surface,.modal__panel{inset:var(--modal-inset-y) var(--modal-inset-x);border-radius:var(--radius-lg);position:absolute}.modal__surface{border:1px solid var(--line);background:var(--bg-elev);box-shadow:0 40px 120px -20px #00000080}.modal__panel{pointer-events:none;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);padding:10px;display:grid}.modal__panel>*{pointer-events:auto}.modal__media{border-radius:calc(var(--radius-lg) - 8px);background:#0b0b0e;grid-area:1/1;position:relative;overflow:hidden}.modal__media-inner{position:absolute;inset:0}.modal__media .cover{object-fit:cover;width:100%;height:100%}.modal__counter{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-family:var(--font-mono);color:#fff;background:#0a0a0e73;border-radius:999px;padding:6px 12px;font-size:12px;position:absolute;bottom:16px;left:18px}.modal__body{overscroll-behavior:contain;scrollbar-width:thin;grid-area:1/2;align-content:start;gap:26px;padding:clamp(28px,4vw,60px) clamp(22px,3.6vw,56px) clamp(28px,4vw,48px);display:grid;overflow-y:auto}.modal__eyebrow{font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-muted);flex-wrap:wrap;align-items:center;gap:10px;padding-right:48px;font-size:12px;display:flex}.modal__eyebrow span{background:var(--accent);color:var(--accent-contrast);border-radius:999px;padding:3px 9px}.modal__title{letter-spacing:-.04em;font-size:clamp(2rem,3.8vw,3.4rem);font-weight:600;line-height:1.02}.modal__description{color:var(--fg-muted);font-size:clamp(1rem,1.2vw,1.12rem)}.modal__facts{gap:18px;margin:0;display:grid}.modal__facts>div{border-top:1px solid var(--line);grid-template-columns:90px minmax(0,1fr);gap:16px;padding-top:16px;display:grid}.modal__facts dt,.modal__highlights h3{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint);font-size:11px;font-weight:400}.modal__facts dd{margin:0}.modal__highlights{gap:14px;display:grid}.modal__highlights ol{gap:10px;margin:0;padding:0;list-style:none;display:grid}.modal__highlights li{border-radius:var(--radius-sm);background:var(--bg-soft);grid-template-columns:32px minmax(0,1fr);padding:14px 16px;display:grid}.modal__highlights li span{font-family:var(--font-mono);color:var(--accent-ink);font-size:12px;line-height:1.9}.modal__links{flex-wrap:wrap;gap:10px;display:flex}.modal__link{border:1px solid var(--line-strong);border-radius:999px;align-items:center;gap:8px;padding:11px 18px;font-size:15px;transition:background-color .3s,color .3s,border-color .3s;display:inline-flex}.modal__link:hover{background:var(--fg);border-color:var(--fg);color:var(--bg)}.modal__next{border:1px solid var(--line);border-radius:var(--radius-md);text-align:left;isolation:isolate;transition:color .5s var(--ease-out);grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:4px 16px;margin-top:12px;padding:22px 24px;display:grid;position:relative;overflow:hidden}.modal__next:before{content:"";z-index:-1;background:var(--accent);clip-path:inset(100% 0 0);transition:clip-path .6s var(--ease-out);position:absolute;inset:0}.modal__next:hover{color:var(--accent-contrast)}.modal__next:hover:before{clip-path:inset(0)}.modal__next-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;opacity:.7;grid-column:1;font-size:11px}.modal__next-title{letter-spacing:-.03em;grid-column:1;font-size:clamp(1.3rem,2vw,1.7rem);font-weight:600}.modal__next-icon{transition:translate .5s var(--ease-out);grid-area:1/2/span 2;align-self:center}.modal__next:hover .modal__next-icon{translate:6px}.modal__close{z-index:6;border:1px solid var(--line-strong);background:var(--bg-elev);width:46px;height:46px;transition:background-color .3s ease, color .3s ease, rotate .5s var(--ease-back);border-radius:50%;place-items:center;display:grid;position:absolute;top:22px;right:22px}.modal__close:hover{background:var(--fg);color:var(--bg);rotate:90deg}@media (width<=860px){.modal__panel{grid-template-rows:32svh minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.modal__media{grid-area:1/1}.modal__body{grid-area:2/1}.modal__close{color:#fff;background:#0a0a0e80;border-color:#ffffff4d;top:18px;right:18px}}.projects{padding-block:clamp(96px,12vw,160px) clamp(48px,6vw,96px);position:relative}.projects__pin{flex-direction:column;gap:clamp(28px,4vh,56px);display:flex}.projects__head{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:32px;display:grid}.projects__head .section-head{margin-bottom:0}.projects__progress{min-width:220px;font-family:var(--font-mono);letter-spacing:.06em;color:var(--fg-muted);justify-items:end;gap:12px;font-size:12px;display:none}.projects__count{color:var(--fg);font-size:15px}.projects__current{color:var(--accent-ink)}.projects__bar{background:var(--line-strong);width:220px;height:2px;display:block;overflow:hidden}.projects__bar i{background:var(--accent);transform-origin:0;height:100%;display:block;transform:scaleX(0)}.projects__caption{text-transform:uppercase}.projects__track{padding:0 var(--gutter);grid-template-columns:repeat(auto-fill,minmax(min(100%,380px),1fr));gap:clamp(32px,4vw,48px) 24px;margin:0;list-style:none;display:grid}.project-card__open{text-align:left;gap:18px;width:100%;display:grid}.project-card__media{aspect-ratio:16/10;border-radius:var(--radius-md);background:var(--bg-soft);display:block;position:relative;overflow:hidden}.project-card__parallax{transition:scale 1.1s var(--ease-out);display:block;position:absolute;inset:0 -8%}.project-card__parallax .cover{object-fit:cover;width:100%;height:100%;display:block}.project-card__open:hover .project-card__parallax{scale:1.06}.project-card__badge{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;opacity:0;transition:opacity .4s ease, translate .5s var(--ease-out);background:#0a0a0e80;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:12px;display:inline-flex;position:absolute;top:14px;right:14px;translate:0 -8px}.project-card__open:hover .project-card__badge,.project-card__open:focus-visible .project-card__badge{opacity:1;translate:0}.has-custom-cursor .project-card__badge{display:none}.project-card__info{grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:16px;display:grid}.project-card__index{font-family:var(--font-mono);color:var(--fg-faint);padding-top:7px;font-size:12px}.project-card__title{letter-spacing:-.03em;font-size:clamp(1.3rem,1.9vw,1.75rem);font-weight:600;line-height:1.2;transition:color .3s;display:block}.project-card__open:hover .project-card__title{color:var(--accent-ink)}.project-card__subtitle{color:var(--fg-muted);margin-top:4px;font-size:14px;display:block}.project-card__year{border:1px solid var(--line-strong);font-family:var(--font-mono);color:var(--fg-muted);border-radius:999px;padding:4px 10px;font-size:12px}.project-more{border:1px dashed var(--line-strong);border-radius:var(--radius-md);align-content:space-between;gap:28px;height:100%;min-height:280px;padding:clamp(24px,3vw,40px);transition:border-color .4s,background-color .4s;display:grid}.project-more:hover{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, transparent)}.project-more__title{letter-spacing:-.04em;font-size:clamp(2rem,4vw,3.4rem);font-weight:600;line-height:1}.project-more__text{max-width:34ch;color:var(--fg-muted)}.project-more__cta{align-items:center;gap:14px;font-weight:500;display:inline-flex}.project-more__icon{background:var(--accent);width:56px;height:56px;color:var(--accent-contrast);transition:rotate .6s var(--ease-back);border-radius:50%;place-items:center;display:grid}.project-more:hover .project-more__icon{rotate:45deg}@media (width>=900px) and (prefers-reduced-motion:no-preference){.projects{padding-block:0}.projects__pin{height:100svh;padding-top:calc(var(--header-h) * .5);justify-content:center;overflow:hidden}.projects__progress{display:grid}.projects__head .section-title{font-size:clamp(2.6rem,5vw,4.8rem)}.projects__track{--card-w:clamp(340px, min(38vw, 68vh), 620px);will-change:transform;gap:clamp(20px,2.4vw,40px);width:max-content;display:flex}.project-card{width:var(--card-w);flex-shrink:0}.project-card--more{width:calc(var(--card-w) * .72)}}.skills__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:clamp(40px,6vw,96px);display:grid}.skills__sphere{place-items:center;display:grid}.sphere{aspect-ratio:1;touch-action:pan-y;-webkit-user-select:none;user-select:none;cursor:grab;width:min(100%,560px);position:relative}.sphere.is-dragging{cursor:grabbing}.sphere__glow{background:radial-gradient(circle, color-mix(in srgb, var(--accent-2) 38%, transparent), transparent 70%);filter:blur(30px);opacity:.8;border-radius:50%;position:absolute;inset:18%}.sphere__ring{border:1px dashed var(--line-strong);border-radius:50%;animation:40s linear infinite sphere-ring;position:absolute;inset:9%}.sphere__ring:after{content:"";background:var(--accent);width:7px;height:7px;box-shadow:0 0 16px var(--accent);border-radius:50%;position:absolute;top:-4px;left:50%}@keyframes sphere-ring{to{rotate:360deg}}.sphere__tag{white-space:nowrap;color:var(--fg);will-change:transform, opacity;border-radius:999px;padding:4px 10px;font-size:clamp(13px,1.25vw,17px);font-weight:500;transition:color .3s,background-color .3s;position:absolute;top:50%;left:50%}.sphere__tag.is-highlight{background:var(--accent);color:var(--accent-contrast)}.skills__groups{gap:clamp(28px,3.5vw,44px);display:grid}.skill-group__title{border-bottom:1px solid var(--line);color:var(--fg-muted);align-items:baseline;gap:12px;margin-bottom:16px;padding-bottom:12px;font-size:15px;font-weight:500;display:flex}.skill-group__title span{font-family:var(--font-mono);color:var(--accent-ink);font-size:11px}.skill-group__list{flex-wrap:wrap;gap:10px;margin:0;padding:0;list-style:none;display:flex}.skill-chip{border:1px solid var(--line-strong);isolation:isolate;color:var(--fg);transition:color .4s var(--ease-out), border-color .4s ease;border-radius:999px;padding:10px 18px;font-size:15px;position:relative;overflow:hidden}.skill-chip:before{content:"";z-index:-1;background:var(--accent);border-radius:inherit;transition:translate .5s var(--ease-out);position:absolute;inset:0;translate:0 101%}.skill-chip.is-active,.skill-chip[aria-pressed=true]{color:var(--accent-contrast);border-color:var(--accent)}.skill-chip.is-active:before,.skill-chip[aria-pressed=true]:before{translate:0}@media (width<=960px){.skills__grid{grid-template-columns:1fr}.sphere{width:min(100%,460px)}}
