:root{--paper:#fff;--ink:#101b2a;--accent:#2454e6;--muted:#596578;--rule:#d6dbe2;--soft:#f3f5f8;--body:Arial,Helvetica,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:18px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}button{font:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:6px}button:focus-visible{border-radius:1px}svg{flex:none}img{display:block;max-width:100%}[hidden]{display:none!important}html[lang=en] [data-l=zh],html[lang=zh-CN] [data-l=en]{display:none}.wrap{width:min(1280px,calc(100% - 96px));margin-inline:auto}.site-header{display:flex;align-items:center;gap:42px;padding-block:30px}.wordmark{font-size:30px;line-height:1;letter-spacing:-1.2px;font-weight:750;margin-right:auto}.site-header nav{display:flex;gap:34px;font-size:16px}.languages{display:flex;gap:5px;align-items:center;font-size:14px}.languages button{padding:4px 0;border:0;background:transparent;color:var(--ink);font-size:14px}.languages [aria-pressed=true]{color:var(--accent)}.skip{position:absolute;top:-90px;left:24px;background:var(--ink);color:white;padding:12px;z-index:10}.skip:focus{top:10px}.hero{padding:112px 0 114px}h1,h2,h3,p{margin:0}h1{font-size:clamp(64px,7.2vw,104px);font-weight:750;line-height:1.06;letter-spacing:-.055em;max-width:1100px}.hero-description{margin-top:36px;font-size:clamp(20px,2.1vw,28px);line-height:1.42;letter-spacing:-.015em}.hero-links{display:flex;align-items:center;gap:52px;margin-top:42px;font-size:21px}.arrow-link{display:inline-flex;align-items:center;gap:20px;color:var(--accent)}.arrow{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s}.arrow-link:hover .arrow,.research-row:hover .arrow{transform:translateX(4px)}.featured{display:grid;grid-template-columns: .95fr 2fr;gap:64px;align-items:start}.section-label{font-size:16px;line-height:1.4;font-weight:600;margin-bottom:34px}.featured h2{font-size:clamp(30px,3.1vw,44px);line-height:1.15;letter-spacing:-.04em;margin-bottom:24px}.featured-copy>p:not(.section-label){font-size:22px;line-height:1.5;max-width:380px}.featured-copy>.arrow-link{margin-top:36px;font-size:21px}.project-preview{display:block;margin-top:5px;border:1px solid #bcc6d6;box-shadow:0 8px 16px #101b2a15;transition:transform .2s}.project-preview:hover{transform:translateY(-3px)}.preview-heading{background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:14px 24px;font-size:18px;font-weight:600}.project-preview img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;background:#f3f5f8}.preview-caption{display:flex;justify-content:space-between;gap:20px;padding:16px 24px;color:var(--muted);font-size:14px}.research{padding-top:70px}.research .section-label{margin-bottom:18px}.research-row{display:grid;grid-template-columns:1fr auto 32px;align-items:center;gap:42px;border-top:1px solid var(--rule);padding:26px 0;transition:color .18s}.research-row:last-child{border-bottom:1px solid var(--rule)}.research-row h3{font-size:clamp(23px,2.3vw,31px);line-height:1.3;letter-spacing:-.03em;font-weight:650}.research-row p{font-size:18px;color:var(--muted);margin-top:5px}.research-row time{font-size:19px;white-space:nowrap;color:var(--ink)}.research-row>.arrow{color:var(--accent)}.about-contact{display:grid;grid-template-columns:1fr 1fr;gap:90px;padding-block:52px 68px}.about-contact .section-label{margin-bottom:22px}.about-contact h2{font-size:clamp(26px,2.6vw,36px);letter-spacing:-.035em;line-height:1.2;margin-bottom:18px}.about-contact p:not(.section-label){font-size:21px;line-height:1.5;max-width:540px}.draft-strip{padding-block:15px;background:var(--soft);color:var(--muted);font-size:15px}footer{display:flex;justify-content:space-between;gap:28px;padding-block:28px;font-size:16px}footer>a{color:var(--muted)}.case-hero{padding-block:65px 64px}.back-link{font-size:16px;margin-bottom:54px;display:inline-flex;color:var(--muted)}.case-hero h1{font-size:clamp(52px,6.8vw,96px)}.case-hero>.lead{font-size:clamp(22px,2.5vw,32px);max-width:880px;margin-top:28px;line-height:1.4;letter-spacing:-.015em}.case-meta{display:flex;flex-wrap:wrap;gap:40px;margin-top:42px;color:var(--muted);font-size:16px}.case-image{margin:0;border:1px solid var(--rule);background:var(--soft);padding:24px}.case-image img{width:100%;height:auto}.case-section{display:grid;grid-template-columns:1fr 2fr;gap:64px;border-top:1px solid var(--rule);padding-block:44px}.case-section h2{font-size:26px;letter-spacing:-.025em}.case-section .prose{font-size:21px;line-height:1.6;max-width:830px}.prose p+p{margin-top:20px}.prose ul{padding-left:22px;margin:16px 0}.prose li+li{margin-top:14px}.case-body{padding-block:60px 35px}.workflow{display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--rule);margin:28px 0 0;gap:24px;padding-block:24px}.workflow b{display:block;color:var(--accent);font-size:15px;margin-bottom:8px}.workflow span{font-size:18px;line-height:1.45}.case-end{padding:16px 0 75px}.case-end .arrow-link{font-size:23px}.case-profile-note{color:var(--muted);font-size:17px!important}html[lang=zh-CN] h1{font-weight:650;letter-spacing:-.045em;line-height:1.2}html[lang=zh-CN] .hero-description{line-height:1.65}html[lang=zh-CN] .featured-copy>p{line-height:1.7}
@media(max-width:1050px){.wrap{width:calc(100% - 90px)}.site-header{gap:28px}.site-header nav{gap:24px}.hero{padding-block:70px 78px}.hero-description{margin-top:28px}.hero-links{margin-top:34px}.featured{gap:36px;grid-template-columns:.9fr 2fr}.featured-copy>p:not(.section-label){font-size:20px}.featured-copy>.arrow-link{font-size:19px}.section-label{margin-bottom:30px}.research{padding-top:54px}.about-contact{gap:58px}.about-contact p:not(.section-label){font-size:19px}.case-section{gap:36px}}
@media(max-width:700px){.wrap{width:calc(100% - 40px)}.site-header{padding-block:24px;gap:20px;flex-wrap:wrap}.wordmark{font-size:26px}.languages{order:1}.site-header nav{order:2;flex-basis:100%;justify-content:space-between;font-size:15px;gap:16px;padding-top:10px}.hero{padding:65px 0 72px}h1{font-size:clamp(44px,10.2vw,66px);letter-spacing:-.055em;line-height:1.07}.hero-description{font-size:20px;margin-top:26px}.hero-description br{display:none}.hero-links{font-size:17px;gap:27px;margin-top:32px;flex-wrap:wrap}.arrow-link{gap:13px}.arrow{width:22px;height:22px}.featured{grid-template-columns:1fr;gap:34px}.section-label{font-size:15px;margin-bottom:22px}.featured h2{font-size:36px;margin-bottom:17px}.featured-copy>p:not(.section-label){font-size:20px;max-width:none}.featured-copy>.arrow-link{margin-top:22px;font-size:18px}.preview-heading{font-size:16px;padding:12px 16px}.preview-caption{font-size:13px;padding:13px 16px;gap:10px}.research{padding-top:52px}.research-row{grid-template-columns:1fr 24px;gap:8px 20px;padding-block:23px}.research-row h3{font-size:24px}.research-row p{font-size:15px;margin-top:8px}.research-row time{font-size:15px;grid-row:2}.research-row .arrow{grid-row:1/3;grid-column:2}.about-contact{grid-template-columns:1fr;gap:40px;padding-block:42px 48px}.about-contact h2{font-size:29px}.about-contact p:not(.section-label){font-size:19px}.draft-strip{font-size:13px}footer{font-size:14px;padding-block:24px}.case-hero{padding-block:40px 40px}.back-link{margin-bottom:38px}.case-hero h1{font-size:52px}.case-hero>.lead{font-size:23px}.case-meta{gap:14px 24px;margin-top:28px;font-size:14px}.case-image{padding:8px}.case-body{padding-top:38px}.case-section{grid-template-columns:1fr;gap:18px;padding-block:30px}.case-section .prose{font-size:19px}.workflow{grid-template-columns:1fr;gap:20px}.workflow b{margin-bottom:3px}.case-end{padding-bottom:50px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}

/* Louis M profile and second project extend the existing editorial layout. */
.wordmark{font-size:26px;letter-spacing:-.8px;white-space:nowrap}.featured h3{font-size:clamp(30px,3.1vw,44px);line-height:1.15;letter-spacing:-.04em;margin-bottom:24px}.work-section>.section-label{margin-bottom:40px}.featured-copy .section-label{color:var(--muted);font-size:14px;margin-bottom:20px}.second-work{margin-top:68px;padding-top:52px;border-top:1px solid var(--rule)}.featured-copy>p.role{font-size:14px;color:var(--muted);margin-top:24px}.role strong{display:block;color:var(--ink);font-weight:400;font-size:17px;margin-top:6px}.project-preview img{aspect-ratio:8/5;object-fit:contain}.hero-description{max-width:800px}.about-contact{grid-template-columns:1fr}.about-contact p:not(.section-label){max-width:800px}.writing-more{padding-top:24px}#roadmaps .featured{grid-template-columns:1fr}#roadmaps .featured-copy>p:not(.section-label){max-width:720px}#roadmaps{padding-bottom:12px}.local-note{color:var(--muted);font-size:16px;margin-top:18px}.writing-note{margin:60px 0}.writing-list .section-label{margin-bottom:20px}
.case-kicker{color:var(--accent);font-size:14px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:20px}.case-cta{display:flex;flex-wrap:wrap;align-items:baseline;gap:18px 28px;margin-top:36px}.case-cta .arrow-link{margin:0;font-size:21px}.case-cta>a:not(.arrow-link){color:var(--muted);font-size:16px}.case-cta p{width:100%;margin:0;color:var(--muted);font-size:14px}.studio-open{margin-top:16px;font-size:16px;color:var(--muted)}.studio-open a{color:var(--accent)}.case-image figcaption{display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:14px;padding-top:16px}.product-workflow{margin-top:30px}.case-gallery{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin:0 0 42px}.case-gallery figure{margin:0;border:1px solid var(--rule);background:var(--soft)}.case-gallery img{width:100%;aspect-ratio:8/5;object-fit:cover;border-bottom:1px solid var(--rule)}.case-gallery figcaption{display:grid;gap:7px;padding:18px 20px;color:var(--muted);font-size:15px;line-height:1.45}.case-gallery figcaption b{color:var(--ink);font-size:18px}.case-body-after-gallery{padding-top:0}
@media(max-width:700px){.wordmark{font-size:23px}.site-header{gap:12px}.site-header nav{justify-content:flex-start;gap:30px}.featured h3{font-size:34px;margin-bottom:17px}.second-work{margin-top:44px;padding-top:34px}.work-section>.section-label{margin-bottom:28px}.case-hero h1{font-size:clamp(40px,10vw,52px)}.case-end .arrow-link{font-size:20px}.hero{padding-top:44px}}
@media(max-width:700px){.case-kicker{font-size:12px;margin-bottom:14px}.case-image figcaption{font-size:12px;padding:11px 3px 3px}.case-gallery{grid-template-columns:1fr;gap:20px;margin-bottom:32px}.case-gallery figcaption{padding:15px 16px}.case-gallery figcaption b{font-size:17px}}
@media(max-width:360px){.wordmark{font-size:20px}.languages{margin-left:auto}.wrap{width:calc(100% - 32px)}}

/* Personal essays use the showcase palette with a comfortable reading measure. */
.writing-list{padding-bottom:72px}.essay{max-width:980px;margin-inline:auto}.essay-hero{padding-bottom:48px}.essay-hero h1{font-size:clamp(40px,5vw,68px);line-height:1.12;letter-spacing:-.04em}.essay-hero .case-meta{margin-top:28px;gap:24px}.essay-body{max-width:760px;font-size:20px;line-height:1.8;overflow-wrap:break-word}.essay-body p+p{margin-top:24px}.essay-body h2{font-size:32px;line-height:1.3;letter-spacing:-.025em;margin:48px 0 24px}.essay-body h3{font-size:24px;line-height:1.4;letter-spacing:-.015em;margin:32px 0 20px}.essay-body ul,.essay-body ol{padding-left:1.5em;margin:24px 0}.essay-body li+li{margin-top:16px}.essay-body hr{border:0;border-top:1px solid var(--rule);margin:44px 0}.essay-body code{font-family:monospace;font-size:.88em;background:var(--soft);padding:2px 5px;border-radius:3px}.essay-end{max-width:760px;border-top:1px solid var(--rule);margin-top:48px;padding:28px 0 64px}html[lang=zh-CN] .essay-body{line-height:1.95}
@media(max-width:700px){.writing-list{padding-bottom:44px}.essay-hero{padding-bottom:32px}.essay-hero h1{font-size:clamp(34px,8.8vw,48px)}.essay-body{font-size:18px;line-height:1.8}.essay-body h2{font-size:27px;margin-top:36px}.essay-body h3{font-size:22px}.essay-body hr{margin:32px 0}.essay-end{margin-top:36px;padding-bottom:44px}}
