:root{--brand:#ff4f2f;--background:#f7f8fa;--paper:#ffffff;--card:#eef1f4;--foreground:#111318;--muted-foreground:#667085;--border:#d8dde4;--dark:#15171b;--radius:24px;--shell:1440px;--gutter:clamp(20px,4vw,64px);--font-sans:Geist,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;--font-serif:"Playfair Display","Songti SC","STSong",serif;--font-mono:"Roboto Mono",ui-monospace,SFMono-Regular,Menlo,monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;overflow-x:hidden;background:var(--background);color:var(--foreground);font-family:var(--font-sans);font-size:16px;line-height:1.65;text-rendering:optimizeLegibility}::selection{background:var(--foreground);color:var(--paper)}a{color:inherit;text-decoration:none}img{display:block}blockquote,dd,dl,figure,h1,h2,h3,p{margin:0}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible{outline:2px solid var(--brand);outline-offset:5px}.shell{width:min(100% - (var(--gutter) * 2),var(--shell));margin-inline:auto}.shell-wide{width:min(100% - 32px,1720px);margin-inline:auto}.kicker{color:var(--muted-foreground);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.scroll-progress{position:fixed;z-index:100;top:0;left:0;width:100%;height:2px;pointer-events:none}.scroll-progress>div{width:100%;height:100%;background:var(--brand);transform:scaleX(0);transform-origin:left center}[data-reveal]{opacity:0;transform:translateY(36px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,0,1)}[data-reveal][data-visible=true]{opacity:1;transform:none}.site-header{position:sticky;z-index:60;top:0;display:flex;height:76px;align-items:center;justify-content:space-between;gap:32px;padding-inline:var(--gutter);border-bottom:1px solid color-mix(in srgb,var(--border) 78%,transparent);background:color-mix(in srgb,var(--background) 92%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.site-brand{font-size:16px;font-weight:820;letter-spacing:-.04em}.site-nav{display:flex;align-items:center;gap:clamp(20px,3vw,44px);font-family:var(--font-mono);font-size:11px}.site-nav a{color:var(--muted-foreground);transition:color .16s ease}.site-nav a:hover{color:var(--foreground)}.home-hero{display:grid;min-height:calc(100svh - 76px);grid-template-columns:minmax(0,7fr) minmax(360px,5fr);align-items:center;gap:clamp(36px,6vw,100px);padding-block:clamp(72px,9vh,128px)}.home-hero-copy h1{max-width:940px;margin-top:32px;font-size:clamp(56px,7vw,112px);font-weight:520;letter-spacing:-.07em;line-height:.98;text-wrap:balance}.home-hero-copy h1 strong{font-weight:680}.home-hero-copy>p:not(.kicker){max-width:600px;margin-top:52px;color:var(--muted-foreground);font-size:clamp(18px,1.6vw,24px)}.hero-actions{display:flex;gap:26px;margin-top:48px;font-family:var(--font-mono);font-size:11px}.hero-actions a{padding-bottom:4px;border-bottom:1px solid}.dot-portrait{width:min(100%,650px);justify-self:end}.dot-portrait-stage{position:relative;overflow:hidden;width:100%;aspect-ratio:1;border-bottom:1px solid var(--border);cursor:crosshair}.dot-portrait canvas,.dot-portrait-fallback{position:absolute;inset:0;width:100%;height:100%}.dot-portrait-fallback{filter:grayscale(1) contrast(1.08);object-fit:contain;opacity:.22;transition:opacity .24s ease}.dot-portrait-stage[data-ready=true] .dot-portrait-fallback{opacity:0}.dot-portrait figcaption{display:flex;justify-content:space-between;gap:16px;padding-top:12px;font-family:var(--font-mono);font-size:10px;text-transform:uppercase}.home-section{padding-block:clamp(110px,14vw,210px)}.simple-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding-bottom:26px;border-bottom:1px solid var(--foreground)}.simple-heading h2{padding-inline:.035em .06em;background-image:linear-gradient(var(--foreground),var(--foreground));background-position:0;background-repeat:no-repeat;background-size:0 100%;color:var(--foreground);font-size:clamp(58px,8vw,126px);font-weight:520;letter-spacing:-.075em;line-height:.82;transition:background-size .52s cubic-bezier(.2,.72,0,1),color 0s linear .15s}.simple-heading h2[data-selected=true]{background-size:100% 100%;color:var(--background)}.simple-heading a{padding-bottom:2px;border-bottom:1px solid;font-family:var(--font-mono);font-size:10px}.archive-grid,.work-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:40px}.post-card>a{display:grid;min-height:clamp(650px,52vw,780px);height:100%;grid-template-rows:auto 1fr auto;padding:clamp(32px,3vw,46px) clamp(24px,2.4vw,38px) clamp(26px,2.5vw,36px);border-radius:calc(var(--radius) + 6px);background:var(--card)}.post-card-image{position:relative;overflow:hidden;width:86%;aspect-ratio:4/3;align-self:center;justify-self:center;border-radius:calc(var(--radius) - 6px);background:var(--paper)}.post-card-image img{filter:grayscale(1);object-fit:cover;transition:filter .5s ease,transform .7s cubic-bezier(.2,.7,0,1)}.post-card:hover .post-card-image img{filter:grayscale(0);transform:scale(1.025)}.post-card-copy{text-align:center}.post-card-meta{display:flex;justify-content:center;gap:16px;color:var(--muted-foreground);font-family:var(--font-mono);font-size:9px;text-transform:uppercase}.post-card-meta span+span:before{margin-right:16px;color:var(--border);content:"/"}.post-card h3{margin-top:20px;font-size:clamp(25px,2.2vw,36px);font-weight:650;letter-spacing:-.045em;line-height:1.1}.post-card-copy>p{max-width:36ch;margin:12px auto 0;color:var(--muted-foreground);font-size:13px;line-height:1.6}.post-card-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px}.post-card-footer>span:first-child{border-bottom:1px solid}.post-card-cta{display:inline-flex;min-height:46px;align-items:center;gap:12px;padding-inline:22px;border-radius:999px;background:var(--foreground);color:var(--paper);transition:transform .18s ease}.post-card:hover .post-card-cta{transform:translateY(-2px)}.line-list>a{display:grid;min-height:176px;grid-template-columns:70px 4fr 3fr 80px;align-items:center;gap:24px;border-bottom:1px solid var(--border)}.line-list time,.line-list>a>span{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px}.line-list h3{font-size:clamp(27px,3vw,44px);font-weight:540;letter-spacing:-.045em;line-height:1.15}.line-list p{color:var(--muted-foreground);font-size:13px}.line-list time{text-align:right}.line-list>a:hover h3{color:var(--brand)}.blog-list>a,.press-list>a{display:grid;min-height:112px;align-items:center;gap:24px;border-bottom:1px solid var(--border)}.blog-list>a{grid-template-columns:140px 1fr 24px}.blog-list time,.press-list time,.press-list>a>span:first-child{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px}.blog-list h3,.press-list h3{font-size:clamp(22px,2.5vw,36px);font-weight:540;letter-spacing:-.035em}.blog-list>a>span:last-child,.press-list>a>span:last-child{justify-self:end;transition:transform .18s ease}.blog-list>a:hover>span:last-child,.press-list>a:hover>span:last-child{transform:translate(4px,-4px)}.press-section{padding-bottom:clamp(150px,18vw,260px)}.press-list>a{grid-template-columns:140px 1fr 80px 24px}.about-page,.index-page{padding-block:clamp(90px,10vw,150px) clamp(140px,16vw,240px)}.index-header{display:grid;min-height:480px;grid-template-columns:1fr 3fr 1fr;align-content:center;gap:24px}.index-header h1{grid-column:2;font-size:clamp(80px,13vw,210px);font-weight:520;letter-spacing:-.085em;line-height:.78}.index-header>p:last-child{grid-column:2;max-width:650px;margin-top:54px;color:var(--muted-foreground);font-size:clamp(18px,1.6vw,24px)}.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:90px;padding-top:48px}.archive-grid,.blog-archive,.essay-index{border-top:1px solid var(--foreground)}.essay-index>a{display:grid;min-height:270px;grid-template-columns:70px 1fr 120px;gap:32px;padding-block:38px;border-bottom:1px solid var(--border)}.essay-index time,.essay-index>a>div>p:first-child,.essay-index>a>span{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px}.essay-index h2{max-width:920px;margin-top:36px;font-size:clamp(38px,5vw,78px);font-weight:530;letter-spacing:-.055em;line-height:1.05}.essay-index>a>div>p:last-child{max-width:700px;margin-top:26px;color:var(--muted-foreground)}.essay-index time{text-align:right}.essay-index>a:hover h2{color:var(--brand)}.blog-archive>a{display:grid;min-height:180px;grid-template-columns:160px 1fr 32px;align-items:center;gap:28px;border-bottom:1px solid var(--border)}.blog-archive time{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px}.blog-archive h2{font-size:clamp(28px,3.4vw,52px);font-weight:540;letter-spacing:-.045em}.blog-archive p{margin-top:10px;color:var(--muted-foreground);font-size:13px}.post-header{display:grid;min-height:720px;grid-template-columns:1fr 4fr 1fr;align-content:center;gap:24px;padding-block:100px}.post-header h1{grid-column:2/4;margin-top:34px;font-size:clamp(60px,9vw,144px);font-weight:520;letter-spacing:-.075em;line-height:.94;text-wrap:balance}.post-summary{grid-column:2;max-width:760px;margin-top:64px;color:var(--muted-foreground);font-size:clamp(20px,2vw,30px)}.post-meta{grid-column:3;align-self:end;margin-top:64px}.post-meta>div{display:grid;grid-template-columns:72px 1fr;gap:18px;padding-block:10px;border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:9px}.post-meta dt{color:var(--muted-foreground)}.post-cover{position:relative;overflow:hidden;aspect-ratio:16/8.3;border-radius:var(--radius);background:var(--card)}.post-cover img{object-fit:cover}.article-layout{display:grid;grid-template-columns:84px minmax(0,900px);justify-content:center;gap:clamp(40px,8vw,130px);padding-block:clamp(120px,15vw,230px)}.article-toc{position:sticky;z-index:5;top:124px;width:44px;height:max-content;align-self:start}.toc-rail{position:relative;display:flex;min-height:220px;flex-direction:column;justify-content:space-around;align-items:center}.toc-rail:before{position:absolute;inset-block:0;left:50%;width:1px;background:var(--border);content:""}.toc-rail span{z-index:1;width:7px;height:7px;border:1px solid var(--border);border-radius:50%;background:var(--background);transition:border-color .16s ease,background .16s ease,transform .16s ease}.toc-rail span.is-active{border-color:var(--brand);background:var(--brand);transform:scale(1.35)}.toc-tree{position:absolute;top:-22px;left:30px;width:330px;padding:22px 24px;border:1px solid var(--border);border-radius:var(--radius);background:color-mix(in srgb,var(--paper) 96%,transparent);box-shadow:0 18px 60px rgb(33 29 26/8%);opacity:0;pointer-events:none;transform:translateX(-10px);transition:opacity .18s ease,transform .18s ease;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.article-toc:focus-within .toc-tree,.article-toc:hover .toc-tree{opacity:1;pointer-events:auto;transform:none}.toc-tree p{margin-bottom:16px;font-family:var(--font-mono);font-size:9px}.toc-tree a,.toc-tree p{color:var(--muted-foreground)}.toc-tree a{display:block;padding-block:7px;font-size:13px;line-height:1.35}.toc-tree a.is-child{padding-left:16px;font-size:12px}.toc-tree a.is-active{color:var(--foreground)}.markdown-body{min-width:0}.markdown-body li,.markdown-body>p{max-width:760px;font-size:clamp(17px,1.35vw,20px);line-height:1.95}.markdown-body>p+p{margin-top:24px}.markdown-body h2,.markdown-body h3{scroll-margin-top:120px}.markdown-body h2{max-width:850px;margin-top:120px;margin-bottom:42px;font-size:clamp(40px,5vw,72px);font-weight:530;letter-spacing:-.055em;line-height:1.08}.markdown-body>h2:first-child{margin-top:0}.markdown-body h3{margin-top:72px;margin-bottom:28px;font-size:clamp(26px,3vw,42px);font-weight:550;letter-spacing:-.035em}.markdown-body blockquote{margin-block:84px;padding-block:30px;border-block:1px solid var(--foreground);font-family:var(--font-serif);font-size:clamp(30px,3.8vw,54px);font-style:italic;line-height:1.35}.markdown-body ul{max-width:760px;margin:34px 0;padding-left:22px}.markdown-body li+li{margin-top:10px}.post-footer{display:flex;justify-content:space-between;gap:28px;padding-block:0 150px;font-family:var(--font-mono);font-size:10px}.post-footer a{padding-bottom:3px;border-bottom:1px solid}.about-profile{display:grid;grid-template-columns:5fr 7fr;gap:clamp(48px,8vw,130px);align-items:center;padding-block:80px 150px;border-top:1px solid var(--foreground)}.about-profile-image{position:relative;overflow:hidden;aspect-ratio:1;border-radius:var(--radius);background:var(--card)}.about-profile-image img{filter:grayscale(1);object-fit:contain}.about-profile>div:last-child>p{max-width:720px;font-size:clamp(22px,2.8vw,42px);letter-spacing:-.025em;line-height:1.45}.about-profile>div:last-child>p+p{margin-top:32px;color:var(--muted-foreground);font-size:clamp(17px,1.4vw,20px)}.about-profile a{display:inline-block;margin-top:44px;border-bottom:1px solid;font-family:var(--font-mono);font-size:10px}.about-experience>h2{padding-bottom:24px;border-bottom:1px solid var(--foreground);font-size:clamp(54px,8vw,120px);font-weight:520;letter-spacing:-.07em}.about-experience article{display:grid;min-height:160px;grid-template-columns:1fr 3fr 4fr;gap:28px;align-items:center;border-bottom:1px solid var(--border)}.about-experience time{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px}.about-experience h3{font-size:clamp(24px,3vw,40px);font-weight:550;letter-spacing:-.04em}.about-experience article p{color:var(--muted-foreground);font-size:13px}.site-footer{display:grid;grid-template-columns:2fr 1fr;align-items:end;gap:50px;padding:clamp(90px,12vw,180px) var(--gutter) 34px;background:var(--dark);color:var(--paper)}.footer-title{grid-column:1/-1;overflow:hidden;color:var(--paper);line-height:0}.footer-title svg{display:block;width:100%;height:auto}.footer-about{max-width:650px;color:#b7afa6;font-size:clamp(16px,1.4vw,20px)}.footer-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:14px 24px;color:#d0c8bf;font-family:var(--font-mono);font-size:10px}.footer-links a{border-bottom:1px solid}.footer-meta{grid-column:1/-1;margin-top:60px;padding-top:18px;border-top:1px solid #47433f;color:#8e8780;font-family:var(--font-mono);font-size:9px}.resume-page{padding-block:80px 150px}.resume-controls{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:36px}.eyebrow{color:var(--muted-foreground);font-family:var(--font-mono);font-size:10px;text-transform:uppercase}.button-link{display:inline-flex;min-height:44px;align-items:center;padding:0 18px;border:1px solid var(--foreground);font-size:12px}.button-link,.resume-sheet{border-radius:var(--radius)}.resume-sheet{max-width:1120px;margin-inline:auto;padding:clamp(32px,6vw,80px);background:var(--paper)}.resume-header,.resume-section,.resume-summary{display:grid;grid-template-columns:1fr 3fr;gap:36px;padding-block:38px;border-bottom:1px solid var(--border)}.resume-header{grid-template-columns:3fr 1fr;border-bottom-color:var(--foreground)}.resume-header h1{margin-top:18px;font-size:clamp(48px,7vw,84px);letter-spacing:-.06em}.resume-header h1 span,.resume-metrics strong{color:var(--brand)}.resume-header address{display:flex;flex-direction:column;justify-content:flex-end;gap:6px;font-family:var(--font-mono);font-size:9px;font-style:normal}.resume-section>h2,.resume-summary h2{font-family:var(--font-mono);font-size:10px;text-transform:uppercase}.resume-metrics{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--border)}.resume-metrics div{padding:28px 14px;border-right:1px solid var(--border)}.resume-metrics span,.resume-metrics strong{display:block}.resume-metrics span{margin-top:16px;font-size:10px}.resume-experience article{display:grid;grid-template-columns:1fr 4fr;gap:20px;margin-bottom:24px}.resume-experience p,.resume-projects p{color:var(--muted-foreground);font-size:11px}.resume-projects article{grid-column:2;margin-bottom:22px}.resume-skills{display:flex;flex-wrap:wrap;gap:8px}.resume-skills span{padding:7px 11px;border:1px solid var(--border);border-radius:999px}.resume-footer,.resume-skills span{font-family:var(--font-mono);font-size:9px}.resume-footer{display:flex;justify-content:space-between;padding-top:28px}@media (max-width:980px){.home-hero{min-height:auto;grid-template-columns:1fr}.dot-portrait{width:min(78vw,620px)}.work-grid{grid-template-columns:1fr 1fr}.line-list>a{grid-template-columns:54px 3fr 2fr}.line-list time{display:none}.index-header{grid-template-columns:1fr 5fr}.index-header h1,.index-header>p:last-child{grid-column:2}.post-header{grid-template-columns:1fr 5fr}.post-header h1{grid-column:1/3}.post-meta,.post-summary{grid-column:2}.about-profile{grid-template-columns:1fr}.about-profile-image{width:min(80vw,620px)}}@media (max-width:700px){:root{--gutter:18px}.site-header{position:relative;height:auto;align-items:flex-start;flex-direction:column;padding-block:18px}.site-nav{width:100%;gap:24px;overflow-x:auto;padding-bottom:3px}.home-hero{padding-top:70px}.home-hero-copy h1{font-size:15vw}.dot-portrait{width:100%;margin-top:30px}.home-section{padding-block:100px}.simple-heading h2{font-size:16vw}.archive-grid,.work-grid{grid-template-columns:1fr}.work-grid .post-card:first-child{grid-column:auto}.post-card>a{min-height:640px}.post-card-image{width:88%}.line-list>a{min-height:220px;grid-template-columns:36px 1fr;align-content:center}.line-list p{grid-column:2}.blog-list>a,.press-list>a{grid-template-columns:1fr 24px;padding-block:22px}.blog-list h3,.blog-list time,.press-list h3,.press-list time,.press-list>a>span:first-child{grid-column:1}.blog-list>a>span:last-child,.press-list>a>span:last-child{grid-column:2;grid-row:1/3}.index-header{display:block;min-height:430px;padding-block:90px}.index-header h1{margin-top:32px;font-size:25vw}.index-header>p:last-child{margin-top:44px}.essay-index>a{min-height:300px;grid-template-columns:36px 1fr}.essay-index time{display:none}.blog-archive>a{grid-template-columns:1fr 24px;padding-block:28px}.blog-archive time,.blog-archive>a>div{grid-column:1}.blog-archive>a>span{grid-column:2;grid-row:1/3}.post-header{display:block;min-height:auto;padding-block:100px}.post-header h1{margin-top:32px;font-size:15vw}.post-meta,.post-summary{margin-top:48px}.post-cover{aspect-ratio:4/3}.article-layout{display:block}.article-toc{position:relative;top:auto;width:100%;margin-bottom:90px}.toc-rail{display:none}.toc-tree{position:static;width:100%;padding:20px 0;border:0;border-block:1px solid var(--border);border-radius:0;background:transparent;box-shadow:none;opacity:1;pointer-events:auto;transform:none}.markdown-body h2{margin-top:90px}.post-footer{align-items:flex-start;flex-direction:column}.about-experience article{grid-template-columns:1fr;padding-block:28px}.site-footer{grid-template-columns:1fr}.footer-title{font-size:25vw}.footer-links{justify-content:flex-start}.resume-controls,.resume-header,.resume-section,.resume-summary{grid-template-columns:1fr}.resume-controls{display:flex;align-items:flex-start;flex-direction:column}.resume-metrics{grid-template-columns:1fr 1fr}.resume-projects article{grid-column:auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}[data-reveal]{opacity:1;transform:none}}@media print{@page{size:A4;margin:10mm}body{background:white;color:black;font-size:10pt}.resume-controls,.scroll-progress,.site-footer,.site-header{display:none!important}.resume-page,.resume-sheet{width:100%;max-width:none;padding:0;background:white}}