@font-face{font-family:PortfolioDIN;src:url(./D-DIN-Bold-Bzmc2g8M.otf)format("opentype");font-weight:700;font-display:swap}:root{--bg:oklch(100% 0 0);--ink:oklch(10.5% 0 0);--muted:oklch(54% 0 0);--soft:oklch(95% 0 0);--line:oklch(88% 0 0);--dot:oklch(78% 0 0/.34);--ambient:oklch(96% .012 110/.42);--paper:oklch(92.5% .074 96);--paper-deep:oklch(80% .09 88);--primary:oklch(52% .092 112);--accent:oklch(18% .012 250);--nav-bg:oklch(100% 0 0/.58);--control-bg:oklch(100% 0 0/.72);--button-bg:linear-gradient(180deg, oklch(22% 0 0), oklch(6% 0 0));--button-ink:var(--bg);--button-border:oklch(0% 0 0/.12);--contact-bg:var(--ink);--contact-ink:var(--bg);--contact-muted:oklch(100% 0 0/.7);--shadow:0 26px 70px oklch(0% 0 0/.13);--radius-xl:36px;--radius-lg:26px;--radius-md:18px;--ease:cubic-bezier(.16, 1, .3, 1);--sans:"Alibaba PuHuiTi", "AlibabaPuHui", "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--serif:Georgia, "Times New Roman", serif;--num:"PortfolioDIN", "AlibabaPuHui", sans-serif}:root[data-theme=dark]{--bg:oklch(13% .012 250);--ink:oklch(96% 0 0);--muted:oklch(72% .006 250);--soft:oklch(20% .012 250);--line:oklch(34% .012 250);--dot:oklch(56% .014 250/.32);--ambient:oklch(24% .034 112/.34);--paper:oklch(79% .08 94);--paper-deep:oklch(63% .075 92);--primary:oklch(78% .1 112);--accent:oklch(72% .03 252);--nav-bg:oklch(19% .012 250/.68);--control-bg:oklch(18% .012 250/.76);--button-bg:linear-gradient(180deg, oklch(96% 0 0), oklch(82% 0 0));--button-ink:oklch(10% 0 0);--button-border:oklch(100% 0 0/.14);--contact-bg:oklch(19% .012 250);--contact-ink:var(--ink);--contact-muted:oklch(78% .006 250);--shadow:0 26px 70px oklch(0% 0 0/.36)}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{min-height:100%;color:var(--ink);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;background:radial-gradient(circle at 50% 0%, var(--ambient), transparent 28rem), radial-gradient(var(--dot) 1.1px, transparent 1.1px) 0 0 / 18px 18px, var(--bg);transition:background-color .32s var(--ease), color .32s var(--ease);margin:0;overflow-x:hidden}body::selection{background:var(--ink);color:var(--bg)}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,[role=link]:focus-visible{outline:2px solid var(--primary);outline-offset:5px}img{max-width:100%;display:block}button{font:inherit}.site-header{z-index:40;pointer-events:none;justify-content:space-between;align-items:center;padding:clamp(22px,3vw,36px) clamp(22px,5vw,64px);display:flex;position:fixed;top:0;left:0;right:0}.header-left,.brand,.theme-toggle,.nav,.resume-link,.mobile-menu-toggle,.mobile-menu{pointer-events:auto}.header-left{align-items:center;gap:14px;display:inline-flex}.brand{letter-spacing:-.04em;font-size:clamp(1.15rem,1.7vw,1.55rem);font-weight:800}.brand span{color:var(--primary)}.theme-toggle{border:1px solid var(--line);background:var(--control-bg);width:48px;height:48px;color:var(--ink);cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .24s var(--ease), box-shadow .24s var(--ease), background-color .32s var(--ease), border-color .32s var(--ease), color .32s var(--ease);border-radius:999px;place-items:center;display:grid;position:relative;box-shadow:inset 0 0 0 1px oklch(100% 0 0/.18)}.theme-toggle:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px oklch(100% 0 0/.22),0 8px 18px oklch(0% 0 0/.08)}.theme-toggle:active{transform:translateY(0)scale(.98)}.theme-icon{transform-origin:50%;width:18px;height:18px;transition:opacity .26s var(--ease), transform .36s var(--ease);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.theme-sun{border:2px solid;border-radius:50%;box-shadow:0 -8px 0 -6px,0 8px 0 -6px,8px 0 0 -6px,-8px 0 0 -6px,6px 6px 0 -6px,-6px -6px 0 -6px,6px -6px 0 -6px,-6px 6px 0 -6px}.theme-moon{opacity:0;background:currentColor;border-radius:50%;width:20px;height:20px;transform:translate(calc(-50% - 1px),-50%)rotate(-18deg)scale(.72)}.theme-moon:after{content:"";background:var(--control-bg);width:16px;height:16px;box-shadow:0 0 0 1px var(--control-bg);border-radius:50%;position:absolute;top:1px;right:-1px}:root[data-theme=dark] .theme-moon:after{background:oklch(18% .012 250);box-shadow:0 0 0 1px oklch(18% .012 250)}:root[data-theme=dark] .theme-sun{opacity:0;transform:translate(-50%,-50%)rotate(24deg)scale(.72)}:root[data-theme=dark] .theme-moon{opacity:1;transform:translate(calc(-50% - 1px),-50%)rotate(0)scale(1)}.nav{background:var(--nav-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font-family:var(--sans);transition:background-color .32s var(--ease);border-radius:999px;align-items:center;gap:clamp(18px,3vw,38px);padding:6px 6px 6px 22px;display:flex}.nav a:not(.resume-link){color:var(--ink);font-size:.96rem;font-weight:600;position:relative}.nav a:not(.resume-link):after{content:"";transform-origin:100%;height:1px;transition:transform .24s var(--ease);background:currentColor;position:absolute;bottom:-7px;left:0;right:0;transform:scaleX(0)}.nav a:not(.resume-link):hover:after,.nav a:not(.resume-link):focus-visible:after{transform-origin:0;transform:scaleX(1)}.resume-link,.button{border:1px solid var(--button-border);background:var(--button-bg);min-height:52px;color:var(--button-ink);font-weight:800;font-family:var(--sans);transition:transform .22s var(--ease), box-shadow .22s var(--ease);border-radius:999px;justify-content:center;align-items:center;padding:0 28px;display:inline-flex;box-shadow:0 8px 14px oklch(0% 0 0/.13)}.button.light{background:var(--control-bg);color:var(--ink)}.resume-link:hover,.button:hover{box-shadow:0 10px 20px oklch(0% 0 0/.16)}.mobile-menu-toggle,.mobile-menu{display:none}.mobile-menu-toggle{border:1px solid var(--line);background:var(--control-bg);width:44px;height:44px;color:var(--ink);cursor:pointer;transition:transform .22s var(--ease), border-color .22s var(--ease), background-color .32s var(--ease);border-radius:999px;padding:0;position:relative}.mobile-menu-toggle:active{transform:scale(.96)}.mobile-menu-toggle span{transform-origin:50%;width:18px;height:1.5px;transition:top .3s var(--ease), opacity .18s var(--ease), transform .3s var(--ease);background:currentColor;border-radius:999px;position:absolute;left:50%;transform:translate(-50%)}.mobile-menu-toggle span:first-child{top:14px}.mobile-menu-toggle span:nth-child(2){top:21px}.mobile-menu-toggle span:nth-child(3){top:28px}.mobile-menu-toggle.is-open span:first-child{top:21px;transform:translate(-50%)rotate(45deg)}.mobile-menu-toggle.is-open span:nth-child(2){opacity:0;transform:translate(-50%)scaleX(.35)}.mobile-menu-toggle.is-open span:nth-child(3){top:21px;transform:translate(-50%)rotate(-45deg)}main{position:relative}.hero{place-items:center;min-height:100svh;padding:116px 24px 90px;display:grid;position:relative}.hero-inner{text-align:center;width:min(1020px,100%)}.hero-kicker{color:var(--muted);margin:0 0 24px;font-size:1rem;font-weight:600}.hero-title{letter-spacing:-.04em;text-wrap:balance;max-width:980px;margin:0 auto;font-size:clamp(2.85rem,6.2vw,6rem);font-weight:800;line-height:1}.hero-title span{display:block}.hero-script{font-family:var(--serif);letter-spacing:-.035em;margin-top:10px;font-size:clamp(2rem,4.2vw,4.3rem);font-style:italic;font-weight:400;display:block}.desk-cards{perspective:1200px;width:min(780px,88vw);min-height:330px;transform-style:preserve-3d;margin:clamp(70px,9vw,110px) auto 0;position:relative}.paper-card{min-height:220px;box-shadow:var(--shadow);opacity:1;transform:translate3d(-50%, -50%, 0) translate3d(var(--card-x,0px), var(--card-y,0px), var(--card-z,0px)) rotate(var(--card-r,0deg)) scale(1);transform-origin:50%;transform-style:preserve-3d;transition:box-shadow .28s var(--ease);will-change:transform;border-radius:22px;position:absolute;top:50%;left:50%}.paper-card:hover{box-shadow:0 34px 90px oklch(0% 0 0/.18)}.note-card{z-index:1;background:linear-gradient(135deg, oklch(98% .05 98), var(--paper)), var(--paper);color:oklch(18% .012 84);--card-x:-250px;--card-y:0px;--card-r:-6deg;text-align:left;width:230px;padding:28px 26px}.note-card h2,.dictionary h2{letter-spacing:-.04em;margin:0 0 18px;font-size:1.08rem;font-weight:800;line-height:1.1}.note-card ol{color:oklch(34% .04 84);gap:9px;margin:0;padding-left:18px;font-size:.88rem;font-weight:600;line-height:1.35;display:grid}.blog-card{z-index:3;background:linear-gradient(145deg, oklch(24% .012 250), oklch(13% .01 250)), var(--accent);color:oklch(97% 0 0);--card-x:-76px;--card-y:22px;--card-z:42px;--card-r:7deg;text-align:left;width:260px;padding:28px}.blog-card .mark{aspect-ratio:1;width:44px;font-family:var(--serif);background:oklch(100% 0 0/.08);border-radius:11px;place-items:center;margin-bottom:48px;font-size:1.35rem;font-weight:700;display:grid}.blog-card p{color:oklch(94% 0 0);max-width:16ch;margin:0 0 22px;font-size:1rem;font-weight:800;line-height:1.24}.pill-read{min-height:44px;font-family:var(--serif);background:oklch(100% 0 0/.12);border-radius:999px;align-items:center;gap:10px;padding:0 18px;font-size:1.1rem;font-style:italic;display:inline-flex}.photo-card{z-index:2;background:var(--soft);--card-x:84px;--card-y:-14px;--card-z:18px;--card-r:-2.5deg;width:230px;overflow:hidden}.photo-card img{object-fit:cover;filter:none;width:100%;height:250px}.dictionary{z-index:1;border:1px solid var(--line);color:oklch(16% 0 0);--card-x:256px;--card-y:24px;--card-r:2.5deg;text-align:left;background:oklch(97% 0 0);width:250px;padding:28px 26px}.dictionary .phonetic{color:oklch(45% 0 0);border-bottom:1px solid oklch(20% 0 0);margin-bottom:14px;padding-bottom:12px;font-size:.85rem;display:block}.dictionary ol{color:oklch(28% 0 0);gap:7px;margin:0;padding-left:18px;font-size:.88rem;line-height:1.35;display:grid}.section{width:min(1180px,100% - 44px);margin:0 auto;padding:clamp(84px,11vw,146px) 0}.section-head{grid-template-columns:minmax(0,.8fr) minmax(260px,.5fr);align-items:end;gap:clamp(30px,6vw,88px);margin-bottom:clamp(34px,6vw,70px);display:grid}.eyebrow{color:var(--muted);margin:0 0 18px;font-size:.9rem;font-weight:800}.section-title{letter-spacing:-.04em;text-wrap:balance;margin:0;font-size:clamp(2.45rem,5.6vw,5.9rem);font-weight:800;line-height:.95}.section-copy{max-width:38rem;color:var(--muted);text-wrap:pretty;margin:0;font-size:clamp(1rem,1.3vw,1.2rem);font-weight:600;line-height:1.72}.check-grid{grid-template-columns:minmax(250px,.72fr) minmax(0,1.28fr);align-items:start;gap:clamp(38px,7vw,104px);display:grid}.check-note{min-height:clamp(330px,34vw,460px);transform:translate3d(var(--float-x,0px), var(--float-y,0px), 0) rotate(var(--float-r,0deg));will-change:transform;background:0 0;padding:clamp(14px,2vw,24px) 0 clamp(18px,3vw,34px) clamp(28px,4vw,48px);position:sticky;top:120px}.check-note:before{content:"";background:linear-gradient(180deg, var(--ink), var(--line) 70%, transparent);width:2px;position:absolute;top:8px;bottom:8px;left:0}.check-note:after{content:"";border:2px solid var(--primary);background:var(--bg);border-radius:50%;width:16px;height:16px;position:absolute;top:clamp(92px,12vw,150px);left:-7px}.note-label{color:var(--primary);font-family:var(--num);margin-bottom:clamp(40px,7vw,82px);font-size:.78rem;font-weight:800;display:block}.check-note h3{isolation:isolate;letter-spacing:-.04em;text-wrap:balance;width:min-content;margin:0 0 20px;font-size:clamp(3.1rem,5.3vw,5.7rem);line-height:.88;position:relative}.check-note h3:after{content:"";background:var(--paper);z-index:-1;height:.16em;position:absolute;bottom:.08em;left:2px;right:-16px;transform:rotate(-1.4deg)}.check-note p{max-width:28rem;color:var(--muted);margin:0;font-weight:600;line-height:1.7}.check-points{flex-wrap:wrap;gap:10px;max-width:31rem;margin:clamp(26px,4vw,44px) 0 0;padding:0;list-style:none;display:flex}.check-points li{border:1px solid var(--line);background:var(--control-bg);color:var(--ink);transition:transform .28s var(--ease), background-color .28s var(--ease);border-radius:999px;padding:9px 13px;font-size:.9rem;font-weight:800}.check-points li:nth-child(2){transform:rotate(-1.5deg)}.check-points li:nth-child(3){transform:rotate(1.2deg)}.check-note:hover .check-points li{background:var(--paper)}.method-list{border-top:2px solid var(--ink);gap:0;display:grid}.method-row{border-bottom:1px solid var(--line);transform:translate3d(var(--row-x,0px), 0, 0);transition:background-color .24s var(--ease), transform .36s var(--ease);grid-template-columns:70px minmax(0,1fr);gap:clamp(18px,2.6vw,34px);padding:clamp(24px,3vw,36px) clamp(4px,1vw,14px);display:grid;position:relative}.method-row:before{content:"";background:var(--primary);opacity:0;width:8px;height:8px;transition:opacity .22s var(--ease), transform .22s var(--ease);border-radius:50%;position:absolute;top:clamp(30px,3.2vw,42px);left:-22px;transform:scale(.5)}.method-row:hover{--row-x:8px;background:linear-gradient(90deg,oklch(96.5% .012 96/.72),#0000 78%)}:root[data-theme=dark] .method-row:hover{background:linear-gradient(90deg,oklch(24% .015 250/.82),#0000 78%)}.method-row:hover:before{opacity:1;transform:scale(1)}.method-row .num{color:var(--primary);font-family:var(--num);transition:transform .36s var(--ease);font-size:clamp(1.35rem,2vw,1.85rem);display:inline-block}.method-row:hover .num{transform:translate(3px)}.method-row h3{letter-spacing:-.03em;margin:0 0 9px;font-size:clamp(1.45rem,2.25vw,2.3rem)}.method-row p{max-width:52rem;color:var(--muted);margin:0;font-weight:600;line-height:1.7}#work .section-head{grid-template-columns:minmax(0,.88fr) minmax(320px,.52fr)}#work .section-title{letter-spacing:-.038em;max-width:18ch;font-size:clamp(2.65rem,4.3vw,4.75rem);line-height:.98}.project-title-line{white-space:nowrap;display:block}.work-grid{grid-template-columns:repeat(12,1fr);gap:clamp(18px,2.4vw,30px);display:grid}.work-card{border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--soft);grid-column:span 6;min-height:clamp(430px,46vw,640px);position:relative;overflow:hidden;transform:translateZ(0);box-shadow:0 14px 48px oklch(0% 0 0/.08)}.work-card:nth-child(3n+1){grid-column:span 7}.work-card:nth-child(3n+2){grid-column:span 5}.work-card:after{content:"";opacity:.82;pointer-events:none;background:linear-gradient(#0000 28%,oklch(0% 0 0/.72));position:absolute;inset:0}.work-card img{width:100%;height:100%;min-height:inherit;object-fit:cover;transition:transform .8s var(--ease), filter .8s var(--ease)}.work-card:hover img{filter:saturate(1.08)contrast(1.05);transform:scale(1.055)}.work-meta{z-index:2;color:var(--bg);position:absolute;bottom:clamp(20px,3vw,36px);left:clamp(20px,3vw,36px);right:clamp(20px,3vw,36px)}.work-no{font-family:var(--num);color:oklch(88% .08 96);font-size:1rem}.work-meta h3{letter-spacing:-.04em;max-width:13ch;margin:9px 0 12px;font-size:clamp(2rem,3.5vw,4.2rem);line-height:1}.work-meta p{color:oklch(92% 0 0/.82);max-width:40rem;margin:0 0 20px;font-weight:600;line-height:1.65}.tags{flex-wrap:wrap;gap:8px;display:flex}.tag{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:oklch(100% 0 0/.09);border:1px solid oklch(100% 0 0/.2);border-radius:999px;align-items:center;min-height:30px;padding:0 11px;font-size:.78rem;font-weight:700;display:inline-flex}.project-link{z-index:3;position:absolute;inset:0}.project-console{border-top:2px solid var(--ink);border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px 28px;width:min(1200px,100%);margin:clamp(20px,3.6vw,44px) auto 0;padding:16px 0 15px;display:grid}.project-filters{flex-wrap:wrap;gap:8px;display:flex}.project-filter{border:1px solid var(--line);background:var(--control-bg);min-height:44px;color:var(--ink);font:inherit;cursor:pointer;transition:background-color .26s var(--ease), color .26s var(--ease), border-color .26s var(--ease), transform .26s var(--ease);border-radius:999px;padding:0 16px;font-weight:800}.project-filter:hover{border-color:oklch(70% .04 100);transform:translateY(-1px)}.project-filter.is-active,.project-filter[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--bg)}.project-status{color:var(--muted);justify-items:end;gap:4px;font-size:.92rem;font-weight:700;line-height:1.35;display:grid}.project-page{color:var(--ink);font-family:var(--num);font-size:.86rem}.project-stage{grid-template-columns:52px minmax(0,1200px) 52px;justify-content:center;align-items:center;gap:clamp(10px,1.6vw,18px);width:min(1320px,100vw - 44px);margin:clamp(16px,2.6vw,30px) 0 0 50%;display:grid;transform:translate(-50%)}.project-nav{border:1px solid var(--line);background:var(--control-bg);width:52px;min-height:clamp(124px,18vw,220px);color:var(--ink);font-family:var(--num);cursor:pointer;transition:transform .28s var(--ease), background-color .28s var(--ease), color .28s var(--ease), opacity .28s var(--ease);border-radius:12px;font-size:1.55rem;font-weight:800}.project-nav:hover:not(:disabled){background:var(--ink);color:var(--bg);transform:translateY(-2px)}.project-nav:disabled{cursor:not-allowed;opacity:.34}.work-grid.chroma-grid{--x:50%;--y:50%;--r:260px;background:0 0;border:0;border-radius:0;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.4vw,18px);width:100%;margin:0;padding:0;display:grid;position:relative;overflow:visible}.work-grid.chroma-grid.is-switching{pointer-events:none}.chroma-card{aspect-ratio:16/9;background:var(--card-gradient);min-height:0;color:var(--bg);cursor:pointer;isolation:isolate;transition:border-color .3s var(--ease), transform .3s var(--ease), opacity .26s var(--ease);--mouse-x:50%;--mouse-y:50%;--spotlight-color:oklch(100% 0 0/.24);border:1px solid oklch(0% 0 0/.16);border-radius:14px;display:block;position:relative;overflow:hidden;transform:translateZ(0)}.chroma-card[hidden]{display:none}.chroma-card.is-entering{animation:projectCardIn .52s var(--ease) both;animation-delay:calc(var(--slot,0) * 48ms)}.work-grid.chroma-grid.is-switching .chroma-card:not([hidden]){opacity:.38;transform:translateY(8px)scale(.99)}.chroma-card:hover{border-color:var(--card-border);transform:translateY(-4px)}.chroma-card:before{content:"";z-index:2;pointer-events:none;opacity:0;background:radial-gradient(circle at var(--mouse-x) var(--mouse-y), var(--spotlight-color), transparent 68%);transition:opacity .42s var(--ease);position:absolute;inset:0}.chroma-card:hover:before{opacity:1}.chroma-card:after{content:"";z-index:1;pointer-events:none;background:linear-gradient(#0000,oklch(5% 0 0/.9));height:58%;position:absolute;bottom:0;left:0;right:0}.chroma-img-wrapper{z-index:1;padding:8px;position:absolute;inset:0}.chroma-img-wrapper img{object-fit:cover;filter:saturate(1.04)contrast(1.02);width:100%;height:100%;min-height:0;transition:transform .7s var(--ease);border-radius:10px;display:block}.chroma-card:hover .chroma-img-wrapper img{transform:scale(1.045)}.chroma-info{z-index:2;color:var(--bg);font-family:var(--sans);grid-template-columns:1fr auto;gap:4px 12px;padding:0;display:grid;position:absolute;bottom:clamp(12px,1.4vw,18px);left:clamp(14px,1.5vw,20px);right:clamp(14px,1.5vw,20px)}.chroma-info .name{letter-spacing:-.04em;margin:0;font-size:clamp(1.05rem,1.55vw,1.7rem);line-height:1.02}.chroma-info .handle{color:oklch(100% 0 0/.64);font-family:var(--num);white-space:nowrap;align-self:start;font-size:.82rem}.chroma-info .role{color:oklch(100% 0 0/.72);grid-column:1/-1;max-width:46ch;margin:3px 0 0;font-size:clamp(.74rem,.95vw,.86rem);font-weight:600;line-height:1.45}.chroma-info .location{color:oklch(88% .06 96);grid-column:1/-1;margin-top:4px;font-size:.76rem;font-weight:800}.chroma-overlay,.chroma-fade{z-index:3;pointer-events:none;-webkit-backdrop-filter:grayscale()brightness(.78)contrast(1.08);background:oklch(0% 0 0/.001);position:absolute;inset:0}.chroma-overlay{-webkit-mask-image:radial-gradient(circle var(--r) at var(--x) var(--y), transparent 0%, transparent 16%, oklch(0% 0 0/.1) 31%, oklch(0% 0 0/.24) 48%, oklch(0% 0 0/.42) 66%, white 100%);mask-image:radial-gradient(circle var(--r) at var(--x) var(--y), transparent 0%, transparent 16%, oklch(0% 0 0/.1) 31%, oklch(0% 0 0/.24) 48%, oklch(0% 0 0/.42) 66%, white 100%);-webkit-mask-image:radial-gradient(circle var(--r) at var(--x) var(--y), transparent 0%, transparent 16%, oklch(0% 0 0/.1) 31%, oklch(0% 0 0/.24) 48%, oklch(0% 0 0/.42) 66%, white 100%)}.chroma-fade{z-index:4;opacity:1;transition:opacity .25s var(--ease);-webkit-mask-image:radial-gradient(circle var(--r) at var(--x) var(--y), white 0%, white 16%, oklch(100% 0 0/.9) 31%, oklch(100% 0 0/.72) 48%, oklch(100% 0 0/.42) 66%, transparent 100%);mask-image:radial-gradient(circle var(--r) at var(--x) var(--y), white 0%, white 16%, oklch(100% 0 0/.9) 31%, oklch(100% 0 0/.72) 48%, oklch(100% 0 0/.42) 66%, transparent 100%);-webkit-mask-image:radial-gradient(circle var(--r) at var(--x) var(--y), white 0%, white 16%, oklch(100% 0 0/.9) 31%, oklch(100% 0 0/.72) 48%, oklch(100% 0 0/.42) 66%, transparent 100%)}.chroma-grid.is-active .chroma-fade{opacity:0}.about-grid{grid-template-columns:minmax(360px,.76fr) minmax(0,1.24fr);align-items:start;gap:clamp(72px,8vw,124px);display:grid}.portrait{width:min(360px,100%);transform:translate3d(var(--float-x,0px), var(--float-y,0px), 0) rotate(var(--float-r,0deg));will-change:transform;isolation:isolate;background:0 0;justify-self:center;margin:0;position:sticky;top:118px;overflow:visible}.portrait-stack{aspect-ratio:4/5;border-radius:13px;width:100%;margin:0;position:relative;overflow:visible}.portrait-card{border:1px solid var(--line);background:var(--bg);will-change:transform;width:100%;height:100%;transition:transform .62s cubic-bezier(.16, 1, .3, 1), border-color .42s var(--ease), box-shadow .42s var(--ease);border-radius:13px;position:relative;overflow:hidden;box-shadow:0 6px 9px oklch(0% 0 0/.08)}.portrait-photo{transform:rotate(-.35deg)}.portrait:hover .portrait-photo{border-color:oklch(66% 0 0);transform:translateY(-4px)rotate(-.08deg);box-shadow:0 9px 12px oklch(0% 0 0/.1)}:root[data-theme=dark] .portrait-photo{border-color:oklch(100% 0 0/.16);box-shadow:0 8px 10px oklch(0% 0 0/.3)}:root[data-theme=dark] .portrait:hover .portrait-photo{border-color:oklch(100% 0 0/.34)}.portrait-caption{z-index:4;color:oklch(98% 0 0);font-family:var(--num);letter-spacing:0;pointer-events:none;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:.66rem;font-weight:800;transition:transform .62s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;bottom:13px;left:14px;right:14px}.portrait:hover .portrait-caption{transform:translateY(-4px)}.portrait-caption span{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:oklch(7% 0 0/.78);border-radius:999px;align-items:center;min-height:24px;padding:0 8px;display:inline-flex}.portrait img{object-fit:cover;filter:none;width:100%;height:100%;transition:transform .9s var(--ease);display:block}.portrait:hover .portrait-photo img{transform:scale(1.012)}.bio-panel{gap:clamp(18px,2.6vw,30px);display:grid}.bio-panel h2{letter-spacing:-.04em;text-wrap:balance;max-width:11ch;margin:0;font-size:clamp(2.55rem,4.9vw,5.2rem);line-height:.98}.bio-panel p{max-width:52rem;color:var(--muted);margin:0;font-size:clamp(1rem,1.25vw,1.12rem);font-weight:600;line-height:1.75}.facts{border-top:2px solid var(--ink);grid-template-columns:1fr;gap:0;margin-top:6px;display:grid}.fact{border-bottom:1px solid var(--line);min-height:auto;transition:background-color .26s var(--ease), transform .36s var(--ease);background:0 0;grid-template-columns:minmax(150px,.36fr) minmax(0,1fr);gap:clamp(18px,4vw,50px);padding:clamp(18px,2.2vw,28px) 0;display:grid}.fact:hover{background:linear-gradient(90deg,oklch(96.5% .012 96/.72),#0000 72%);transform:translate(4px)}:root[data-theme=dark] .fact:hover{background:linear-gradient(90deg,oklch(24% .015 250/.82),#0000 72%)}.fact strong{letter-spacing:-.02em;margin-bottom:0;font-size:1.05rem;display:block}.fact span{color:var(--muted);font-size:.92rem;font-weight:600;line-height:1.55}.skill-ledger{border-top:2px solid var(--ink);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin:clamp(18px,3vw,34px) 0 22px;display:grid}.skill-ledger-item{border-right:1px solid var(--line);min-height:178px;transition:transform .42s var(--ease), background-color .42s var(--ease), border-color .42s var(--ease);padding:clamp(18px,2vw,26px) clamp(16px,2vw,24px);position:relative;overflow:hidden}.skill-ledger-item:last-child{border-right:0}.skill-ledger-item:before{content:attr(data-index);color:var(--primary);font-family:var(--num);opacity:.13;transition:opacity .42s var(--ease), transform .42s var(--ease);font-size:clamp(2.2rem,3.5vw,4.8rem);line-height:1;position:absolute;top:16px;right:18px}.skill-ledger-item:hover{background:oklch(96.5% .012 96/.62);transform:translateY(-2px)}:root[data-theme=dark] .skill-ledger-item:hover{background:oklch(22% .016 250/.78)}.skill-ledger-item:hover:before{opacity:.26;transform:translateY(-5px)rotate(-2deg)}.skill-ledger-item span{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;margin-bottom:42px;font-size:.76rem;font-weight:800;display:inline-block}.skill-ledger-item h3{z-index:1;letter-spacing:-.03em;margin:0 0 12px;font-size:clamp(1.35rem,1.8vw,2rem);line-height:1.08;position:relative}.skill-ledger-item p{z-index:1;color:var(--muted);margin:0;font-size:.94rem;font-weight:600;line-height:1.62;position:relative}.marquee{border-block:1px solid var(--line);padding:20px 0;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.marquee-track{gap:12px;min-width:max-content;animation:24s linear infinite marquee;display:flex}.skill-pill{border:1px solid var(--line);background:var(--control-bg);min-height:50px;color:var(--ink);border-radius:999px;align-items:center;padding:0 22px;font-weight:800;display:inline-flex}.contact{background:var(--contact-bg);width:min(1180px,100% - 44px);color:var(--contact-ink);text-align:center;border-radius:clamp(20px,3vw,36px);margin:0 auto clamp(36px,5vw,70px);padding:clamp(50px,9vw,110px)}.contact h2{letter-spacing:-.04em;max-width:760px;margin:0 auto 24px;font-size:clamp(2.6rem,6vw,6rem);line-height:.98}.contact p{max-width:600px;color:var(--contact-muted);margin:0 auto 34px;font-weight:600;line-height:1.7}.contact-actions{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}.contact .button.light{background:var(--contact-ink);color:var(--contact-bg);border-color:#0000}.contact .button:not(.light){color:var(--contact-ink);box-shadow:none;background:0 0;border-color:oklch(100% 0 0/.26)}.contact .button:not(.light):hover{box-shadow:none;background:oklch(100% 0 0/.08)}.contact-lines{color:var(--contact-muted);flex-wrap:wrap;justify-content:center;gap:10px 18px;margin:0 0 28px;font-weight:700;display:flex}.contact-lines a,.contact-lines span{align-items:center;min-height:28px;display:inline-flex}.contact-lines a{text-underline-offset:5px;transition:color .22s var(--ease);text-decoration:underline;text-decoration-thickness:1px}.contact-lines a:hover{color:var(--contact-ink)}.reveal{opacity:0;transition:opacity .76s var(--ease), transform .76s var(--ease);transform:translateY(34px)}.reveal.is-visible{opacity:1;transform:translateY(0)}.hero-inner>*{animation:heroIn .86s both var(--ease)}.hero-title{animation-delay:.12s}.hero-script{animation-delay:.18s}.paper-card{animation:none}.note-card{animation-delay:.42s}.blog-card{animation-delay:.5s}.photo-card{animation-delay:.56s}.dictionary{animation-delay:.62s}@keyframes heroIn{0%{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}@keyframes bounceCardIn{0%{opacity:0;transform:translate3d(-50%, -50%, 0) translate3d(calc(var(--card-x,0px) * .32), calc(var(--card-y,0px) + 48px), var(--card-z,0px)) rotate(0deg) scale(0)}64%{opacity:1;transform:translate3d(-50%, -50%, 0) translate3d(calc(var(--card-x,0px) * 1.035), calc(var(--card-y,0px) - 8px), var(--card-z,0px)) rotate(calc(var(--card-r,0deg) * 1.06)) scale(1.055)}to{opacity:1;transform:translate3d(-50%, -50%, 0) translate3d(var(--card-x,0px), var(--card-y,0px), var(--card-z,0px)) rotate(var(--card-r,0deg)) scale(1)}}@keyframes marquee{to{transform:translate(-50%)}}@keyframes projectCardIn{0%{opacity:0;filter:blur(5px);transform:translateY(14px)scale(.985)}to{opacity:1;filter:blur();transform:translate(0,0)scale(1)}}@media (width<=940px){.site-header{align-items:flex-start}.nav a:not(.resume-link){display:none}.nav{padding-left:6px}#work .section-head{grid-template-columns:1fr}#work .section-title{max-width:100%;font-size:clamp(2.7rem,8vw,4.8rem)}.desk-cards{grid-template-columns:1fr;gap:16px;min-height:auto;display:grid}.paper-card{opacity:1;width:100%;min-height:auto;animation:none;position:relative;top:auto;left:auto;right:auto;transform:none}.photo-card img{height:320px}.section-head,.check-grid,.about-grid{grid-template-columns:1fr}.skill-ledger{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-ledger-item:nth-child(2n){border-right:0}.skill-ledger-item{border-bottom:1px solid var(--line)}.check-note{min-height:auto;margin-bottom:12px;padding-top:6px;position:relative;top:auto}.note-label{margin-bottom:34px}.portrait{width:min(360px,100% - 24px);position:relative;top:auto}.portrait-stack{width:100%}.bio-panel h2{max-width:100%}.work-card,.work-card:nth-child(3n+1),.work-card:nth-child(3n+2){grid-column:1/-1}.work-grid.chroma-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chroma-card{aspect-ratio:16/9;min-height:0}.project-console{grid-template-columns:1fr}.project-status{justify-items:start}.project-stage{grid-template-columns:48px minmax(0,1fr) 48px;width:100%;margin-left:0;transform:none}}@media (width<=620px){body{overflow-x:hidden}.site-header{justify-content:space-between;align-items:center;gap:12px;padding:18px 16px;display:flex}.header-left{gap:8px;min-width:0}.brand{font-size:1.15rem}.theme-toggle{width:44px;height:44px}.nav{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;gap:0;max-width:none;padding:0}.resume-link{min-width:74px;min-height:44px;padding:0 16px;font-size:0;display:none}.mobile-menu-toggle{z-index:46;display:block;position:fixed;top:18px;right:16px}.mobile-menu{z-index:44;border:1px solid var(--line);background:var(--bg);opacity:0;visibility:hidden;pointer-events:none;transform-origin:100% 0;transition:opacity .22s var(--ease), visibility .22s var(--ease), transform .3s var(--ease), background-color .32s var(--ease), border-color .32s var(--ease);border-radius:14px;gap:0;padding:8px;display:grid;position:fixed;top:74px;left:16px;right:16px;transform:translateY(-8px)scale(.985);box-shadow:0 8px 12px oklch(0% 0 0/.1)}.mobile-menu.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)scale(1)}.mobile-menu>a{border-bottom:1px solid var(--line);min-height:50px;color:var(--ink);align-items:center;padding:0 14px;font-weight:700;display:flex}.mobile-menu>a:not(.mobile-menu-pdf):active{background:var(--soft)}.mobile-menu>.mobile-menu-pdf{background:var(--ink);min-height:52px;color:var(--bg);border:0;border-radius:10px;justify-content:space-between;margin-top:8px}.resume-link:before{content:"作品集";font-size:.92rem}.hero{align-items:start;min-height:auto;padding:132px 16px 90px;overflow:hidden}.hero-inner{width:100%;max-width:100%}.hero-title{letter-spacing:-.035em;word-break:normal;overflow-wrap:anywhere;line-break:anywhere;max-width:100%;font-size:clamp(2.2rem,10.8vw,3rem)}.hero-script{white-space:normal;overflow-wrap:anywhere;max-width:100%;font-size:clamp(1.2rem,6.1vw,1.75rem)}.section{width:min(100% - 30px,1180px);padding:84px 0}.section-title,.bio-panel h2,.contact h2{letter-spacing:-.04em}#work .section-title{font-size:clamp(2rem,8.6vw,3.2rem)}.project-title-line{white-space:normal}.method-row{grid-template-columns:1fr;gap:10px}.method-row:before{left:-12px}.work-card{border-radius:28px;min-height:500px}.work-grid.chroma-grid{--r:190px;order:1;grid-column:1/-1;grid-template-columns:1fr}.chroma-card{border-radius:14px;min-height:0}.chroma-img-wrapper img{min-height:0}.project-console{padding-top:13px}.project-filter{min-height:44px;padding:0 13px;font-size:.9rem}.project-stage{grid-template-columns:1fr 1fr;gap:10px;width:100%;margin-left:0;transform:none}.project-nav{order:2;width:100%;min-height:48px;font-size:1.2rem}.chroma-info{bottom:11px;left:12px;right:12px}.chroma-info .role{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.work-meta h3{max-width:10ch}.facts{grid-template-columns:1fr}.fact{grid-template-columns:1fr;gap:7px}.portrait{width:min(330px,100% - 32px)}.portrait-stack{width:100%}.portrait:hover .portrait-photo{transform:translateY(-2px)rotate(-.08deg)}.portrait-caption{bottom:10px;left:10px;right:10px}.skill-ledger{grid-template-columns:1fr}.skill-ledger-item{border-right:0;min-height:auto}.skill-ledger-item span{margin-bottom:26px}.contact{width:min(100% - 30px,1180px);padding:58px 22px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}.marquee-track{flex-wrap:wrap;animation:none}[data-inertia],.method-row,.portrait-photo,.portrait img{transform:none!important}}
