@charset "UTF-8";
:root{--dark:#101416;--paper:#f2f1ed;--ink:#202627;--muted:#a0a7a6;--accent:#d8edb2;--line:#d3d5cf;--font:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--dark);color:var(--paper);font-family:var(--font);-webkit-font-smoothing:antialiased}body.locked{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #729a4e;outline-offset:6px}button{color:inherit}img{display:block;width:100%;height:auto}::selection{background:var(--accent);color:var(--dark)}.progress{position:fixed;height:3px;background:var(--accent);top:0;left:0;width:0;z-index:100}.nav{display:flex;align-items:center;justify-content:space-between;padding:21px 4.5%;border-bottom:1px solid #ffffff20;position:sticky;top:0;z-index:30;background:#101416e8;backdrop-filter:blur(18px)}.wordmark{font-size:30px;letter-spacing:-3px;font-weight:900}.wordmark span{font-size:12px;letter-spacing:0;vertical-align:top;margin-left:7px}.nav-caption{font-size:10px;letter-spacing:1.5px;color:#9da5a4;margin-right:auto;margin-left:32px}.nav nav{display:flex;gap:31px;align-items:center}.nav nav a{font-size:12px}.nav nav a span{font-size:8px;color:#9da5a4;margin-left:5px;vertical-align:super}.contact-link{border:1px solid #ffffff40;padding:10px 15px;border-radius:30px}.hero{padding:36px 4.5% 0;max-width:1800px;margin:auto}.hero-top,.hero-bottom{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.3px;color:var(--muted)}.hero-title{display:flex;align-items:center;justify-content:space-between;padding:44px 0 40px;gap:30px}.hero h1{font-size:clamp(58px,7.6vw,115px);font-weight:650;line-height:1.22;letter-spacing:-.055em;margin:0}.hero h1 span{display:block}.outline{color:transparent;-webkit-text-stroke:1px #e1e4df}.hero-aside{width:210px;margin-right:4%;font-size:13px;line-height:1.9;color:#b4bcb9}.star{color:var(--accent);font-size:64px;display:inline-block;animation:rotate 25s linear infinite}.round-link{width:46px;height:46px;border:1px solid #ffffff40;border-radius:50%;display:grid;place-items:center;font-size:22px;transition:background .3s,color .3s}.round-link:hover{background:var(--accent);color:var(--dark)}.hero-stage{position:relative;height:clamp(310px,39vw,570px);overflow:hidden;border-radius:3px;background:#272f31}.hero-stage>img{height:100%;object-fit:cover;object-position:center 42%;transform:scale(1.06);animation:herozoom 2s ease-out both}.stage-shade{position:absolute;inset:0;background:linear-gradient(180deg,#0008,transparent 40%,#000b)}.stage-note{position:absolute;top:25px;left:28px;font-size:10px;letter-spacing:1.5px;display:flex;gap:10px;align-items:center}.dot{width:7px;height:7px;background:var(--accent);border-radius:50%;box-shadow:0 0 12px var(--accent)}.stage-bottom{position:absolute;bottom:28px;left:28px;right:28px;display:flex;align-items:end;justify-content:space-between}.stage-bottom p{font-size:clamp(20px,2.3vw,34px);line-height:1.5;margin:0;font-weight:600;letter-spacing:.05em}.stage-button{background:var(--paper);border:0;border-radius:40px;color:var(--ink);padding:17px 22px;font-size:12px}.stage-button span{margin-left:28px;font-size:20px}.hero-bottom{padding:20px 0 35px}.ticker{overflow:hidden;border-block:1px solid #ffffff25;padding:23px 0;white-space:nowrap;color:#d9dfd8;margin-top:24px}.ticker>div{font-size:clamp(22px,3vw,40px);letter-spacing:-1px;width:max-content;animation:marquee 38s linear infinite}.ticker i{font-style:normal;margin:0 40px;color:var(--accent)}.section-light{background:var(--paper);color:var(--ink)}.work{padding:100px 4.5% 70px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:45px}.eyebrow{font-size:10px;font-family:var(--font);letter-spacing:1.8px}.section-head h2,.about h2{font-size:clamp(32px,4vw,60px);letter-spacing:-.045em;line-height:1.4;font-weight:650;margin:20px 0 0}.section-head h2 span{color:#638341}.section-head>p,.section-head>div>p{font-size:13px;line-height:1.9;color:#6b7270;margin:0 0 6px}.filters{display:flex;gap:11px;margin-bottom:37px;flex-wrap:wrap}.filters button{background:transparent;border:1px solid #c6cbc4;border-radius:30px;font-size:12px;padding:11px 18px;color:var(--ink);transition:all .25s}.filters button.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}sup{font-size:8px;margin-left:6px}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:48px 24px}.project-card{display:block;text-align:left;border:none;background:transparent;padding:0;width:100%;color:var(--ink)}.project-card[hidden]{display:none}.project-image{position:relative;aspect-ratio:1.65;overflow:hidden;border-radius:2px;background:#e3e4dc}.project-image img{height:100%;object-fit:cover;transition:transform .75s cubic-bezier(.2,.6,.2,1),filter .5s}.project-card:hover .project-image img{transform:scale(1.04);filter:brightness(.93)}.tire-cover img{object-position:50% 15%}.image-arrow{position:absolute;right:20px;top:20px;border-radius:50%;width:43px;height:43px;display:grid;place-items:center;background:#f2f1ed;font-size:23px;transition:transform .3s}.project-card:hover .image-arrow{transform:rotate(45deg)}.image-label{position:absolute;left:16px;bottom:15px;background:#101416bb;backdrop-filter:blur(8px);color:#fff;font-size:8px;letter-spacing:1.6px;padding:8px 11px;border:1px solid #ffffff22}.project-info{display:flex;justify-content:space-between;gap:10px;padding-top:19px}.project-info h3{margin:0;font-size:18px;line-height:1.5;font-weight:600}.project-info p{margin:8px 0 0;font-size:11px;color:#767c76}.project-info>span{font-size:9px;color:#6c756d;white-space:nowrap;padding-top:6px}.work-footnote{font-size:10px;color:#777f78;margin:38px 0 0;border-top:1px solid #d3d5cf;padding-top:17px}.motion{padding:100px 4.5% 80px}.motion .section-head>div>p{color:#a6afaa;margin-top:24px}.motion-stamp{font-size:14px;letter-spacing:2px;color:var(--accent);display:block;border-top:1px solid #ffffff30;padding-top:12px;width:190px;line-height:1.7}.video-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px 22px}.video-card{background:transparent;border:none;text-align:left;padding:0;display:block}.video-cover{aspect-ratio:16/9;position:relative;overflow:hidden;background:#252d2e;border-radius:3px}.video-cover img{height:100%;object-fit:cover;opacity:.8;transition:transform .6s,opacity .6s}.video-card:hover img{transform:scale(1.05);opacity:1}.play-circle{display:grid;place-items:center;position:absolute;inset:0;margin:auto;width:52px;height:52px;border-radius:50%;background:#f2f1eddf;color:var(--ink);font-size:17px;padding-left:3px;transition:background .2s,transform .2s}.video-card:hover .play-circle{background:var(--accent);transform:scale(1.1)}.video-label{display:flex;justify-content:space-between;font-size:12px;padding-top:14px}.video-label span{font-size:9px;color:#8a9790}.motion-process{display:flex;justify-content:space-between;gap:20px;align-items:center;border-top:1px solid #ffffff25;padding-top:30px;margin-top:44px}.motion-process>span{font-size:11px;color:#9ca79f}.motion-process p{font-size:13px;margin:0}.motion-process b{color:var(--accent);margin:0 17px}.about{display:grid;grid-template-columns:1fr 1fr;gap:11%;padding:100px 6%}.about-intro>p{font-size:14px;line-height:2.1;max-width:440px;color:#5b6660;margin-top:26px}.text-link{display:inline-flex;align-items:center;justify-content:space-between;width:210px;border-bottom:1px solid var(--ink);padding:16px 0;font-size:13px;margin-top:18px}.text-link span{font-size:23px}.capability{display:grid;grid-template-columns:35px 1fr;gap:10px 0;border-bottom:1px solid #cdd3ca;padding:0 0 20px;margin-bottom:23px}.capability span{grid-row:span 2;font-size:10px;color:#6d796b;padding-top:5px}.capability h3{font-size:19px;margin:0;font-weight:600}.capability p{font-size:12px;line-height:1.7;color:#6b756a;margin:0}.experience{padding-top:16px}.experience p{font-size:11px;line-height:1.7;color:#667060;margin:19px 0 0}.experience b{font-size:10px;display:block;font-weight:500;color:var(--ink);margin-bottom:3px}footer{padding:75px 4.5% 25px}footer>.eyebrow{color:var(--accent)}.contact-title{display:block;position:relative;font-size:clamp(36px,5.8vw,84px);font-weight:600;line-height:1.45;letter-spacing:-.04em;margin-top:28px}.contact-title>span{position:absolute;right:5%;top:20px;color:var(--accent);font-weight:300;font-size:100px;transition:transform .4s}.contact-title:hover>span{transform:translate(8px,-8px)}.contact-row{display:flex;gap:27px;align-items:center;margin-top:35px}.contact-row a{font-size:18px}.contact-row button{background:transparent;border:1px solid #ffffff40;color:#b6c0b7;padding:10px 14px;border-radius:30px;font-size:11px}.footer-bottom{display:flex;justify-content:space-between;border-top:1px solid #ffffff25;margin-top:65px;padding-top:22px;font-size:10px;letter-spacing:1px;color:#9ca69e}.project-dialog{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;border:0;padding:0;background:var(--paper);color:var(--ink);overflow-y:auto}.project-dialog::backdrop,.video-dialog::backdrop{background:#000c;backdrop-filter:blur(9px)}.dialog-nav{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:18px 4.5%;background:#f2f1edf2;border-bottom:1px solid var(--line);backdrop-filter:blur(15px);font-size:10px;letter-spacing:1px}.dialog-nav button{border:1px solid #bac4b7;border-radius:30px;background:transparent;padding:10px 18px;font-size:12px;color:var(--ink)}.dialog-body{max-width:1300px;margin:auto;padding:60px 4.5%}.dialog-heading h2{font-size:clamp(30px,4vw,55px);line-height:1.3;margin:17px 0}.dialog-heading p{font-size:14px;line-height:2;color:#5c675f;max-width:730px}.project-facts{display:grid;grid-template-columns:1fr 1fr 2fr;gap:22px;border-block:1px solid var(--line);margin:35px 0;padding:22px 0}.project-facts span{display:block;font-size:9px;letter-spacing:1px;color:#737f70;margin-bottom:8px}.project-facts p{font-size:12px;line-height:1.8;margin:0}#project-gallery{display:flex;flex-direction:column;gap:18px}#project-gallery img{background:#e6e8e1}.gallery-section{padding:35px 0 8px;font-size:21px;margin:0}.next-project{display:block;margin:45px auto 5px;background:var(--ink);color:var(--paper);border:none;border-radius:40px;padding:17px 35px}.video-dialog{background:#101416;color:var(--paper);border:1px solid #ffffff30;padding:0;width:min(1100px,94vw);max-width:1100px;border-radius:5px}.video-dialog .dialog-nav{position:static;background:#101416;color:var(--paper);border-bottom:1px solid #ffffff20;padding:14px 20px}.video-dialog .dialog-nav button{color:var(--paper);border-color:#ffffff40}.video-dialog video{display:block;width:100%;max-height:75vh;background:#000}.video-dialog>p{font-size:11px;color:#a7b1a8;padding:10px 20px;line-height:1.8}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,15px);background:var(--accent);color:var(--ink);padding:12px 22px;border-radius:30px;font-size:12px;z-index:100;opacity:0;pointer-events:none;transition:.3s}.toast.show{opacity:1;transform:translate(-50%,0)}.cursor{display:none;position:fixed;width:82px;height:82px;border-radius:50%;background:var(--accent);color:var(--ink);z-index:20;pointer-events:none;align-items:center;justify-content:center;font-size:11px;letter-spacing:1px;transform:translate(-50%,-50%)}.reveal{opacity:1;transform:none}.js-motion .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s}.js-motion .reveal.visible{opacity:1;transform:none}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes marquee{to{transform:translateX(-50%)}}@keyframes herozoom{from{transform:scale(1.13);filter:brightness(.7)}to{transform:scale(1.03);filter:brightness(1)}}
@media(min-width:1500px){.work,.motion,.about,footer{padding-left:max(4.5%,calc((100vw - 1600px)/2));padding-right:max(4.5%,calc((100vw - 1600px)/2))}}@media(max-width:900px){.nav-caption{display:none}.hero-aside{margin-right:0;width:170px}.video-grid{grid-template-columns:1fr 1fr}.about{gap:7%}.project-info h3{font-size:16px}.project-info>span{display:none}.motion-process{align-items:start}.motion-process p{line-height:2}.motion-process b{margin:0 8px}}
@media(max-width:600px){.nav{padding:16px 5%}.wordmark{font-size:25px}.nav nav{gap:15px}.nav nav a{font-size:11px}.nav nav a span{display:none}.contact-link{padding:7px 10px}.hero{padding:24px 5% 0}.hero-top{font-size:8px;letter-spacing:.6px}.hero-top>span:first-child{max-width:160px}.hero-title{padding:34px 0 27px;gap:13px}.hero h1{font-size:clamp(43px,10.5vw,64px)}.hero-aside{width:92px;font-size:9px;line-height:1.8}.star{font-size:34px}.hero-aside p{margin:4px 0 12px}.round-link{width:32px;height:32px;font-size:17px}.hero-stage{height:390px}.hero-stage>img{object-position:66% 34%}.stage-note{left:17px;top:18px;font-size:8px;letter-spacing:.7px}.stage-bottom{left:17px;right:17px;bottom:20px;display:block}.stage-bottom p{font-size:22px}.stage-button{padding:12px 17px;font-size:11px;margin-top:17px}.stage-button span{margin-left:15px;font-size:17px}.hero-bottom{font-size:8px;letter-spacing:0;padding:17px 0}.ticker{margin-top:16px;padding:18px 0}.ticker i{margin:0 25px}.work,.motion{padding:64px 5% 50px}.section-head{display:block;margin-bottom:30px}.section-head h2{font-size:33px;margin-top:16px}.section-head>p,.section-head>div>p{font-size:12px;margin-top:16px}.filters{gap:7px;margin-bottom:25px}.filters button{padding:9px 12px;font-size:11px}.project-grid{grid-template-columns:1fr;gap:30px}.project-info h3{font-size:17px}.project-info>span{display:block;font-size:8px}.project-image{aspect-ratio:1.45}.video-grid{gap:23px 12px}.play-circle{width:37px;height:37px;font-size:12px}.video-label{font-size:10px}.video-label span{display:none}.motion-stamp{display:none}.motion-process{display:block}.motion-process p{font-size:11px;margin-top:12px}.motion-process b{margin:0 5px}.about{display:block;padding:64px 5%}.about h2{font-size:34px}.about-intro>p{font-size:13px}.about-detail{margin-top:50px}.contact-title{font-size:37px}.contact-title>span{right:0;top:38px;font-size:52px}.contact-row{gap:12px;flex-wrap:wrap}.contact-row a{font-size:15px}footer{padding:60px 5% 22px}.footer-bottom{font-size:8px;letter-spacing:.3px;margin-top:43px}.dialog-body{padding:35px 5%}.project-facts{grid-template-columns:1fr 1fr;gap:20px}.project-facts>div:last-child{grid-column:1/-1}.project-facts p{font-size:11px}.dialog-heading p{font-size:13px}.dialog-nav{padding:13px 5%}.gallery-section{font-size:18px}#project-gallery{gap:10px}.video-dialog{width:96vw}.video-dialog .dialog-nav{padding:12px}.video-dialog .dialog-nav>span{font-size:9px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.js-motion .reveal{opacity:1;transform:none}.cursor{display:none!important}}
.hero-stage{background:radial-gradient(ellipse at 70% 50%,#384039 0,#18201b 48%,#121915 80%)}.hero-stage>img{clip-path:inset(0 0 0 38%)}.stage-shade{background:linear-gradient(90deg,#121915 20%,transparent 62%),linear-gradient(180deg,#0003,transparent 45%,#0008)}
@media(max-width:600px){.hero-stage>img{clip-path:inset(0 0 0 15%)}.stage-shade{background:linear-gradient(180deg,#0005,transparent 28%,#000c)}}
@media(min-width:601px){.stage-shade{background:linear-gradient(90deg,#121915 36%,#121915ed 44%,transparent 64%),linear-gradient(180deg,#0003,transparent 45%,#0008)}}
/* Type-led identity: editorial grid, scale contrast and restrained motion. */
.wordmark{font-size:19px;letter-spacing:-1px;font-family:Arial,Helvetica,sans-serif;font-weight:800}.wordmark span{font-size:8px;letter-spacing:0;margin-left:6px}.type-hero{--type-x:0px;--type-y:0px;max-width:1800px;margin:auto;padding:30px 4.5% 0;min-height:calc(100svh - 85px);display:flex;flex-direction:column;background:radial-gradient(ellipse at 78% 25%,#192021 0,transparent 56%)}.type-meta{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.5px;color:#9ba5a6}.type-composition{padding-top:48px;flex:1;display:flex;flex-direction:column;justify-content:center}.type-kicker{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;font-size:10px;letter-spacing:2.7px;color:#b8c3c3}.type-spark{font-size:45px;line-height:1;color:#c4d4d1;animation:rotate 35s linear infinite}.type-name{font-family:Arial,Helvetica,sans-serif;font-size:clamp(85px,18.25vw,292px);font-weight:800;letter-spacing:-.075em;line-height:.82;display:flex;justify-content:space-between;margin:0 -0.035em 0 -0.015em;color:#f1f1ea;transform:translate(var(--type-x),var(--type-y));transition:transform .5s ease-out;position:relative}.type-name span{display:block;animation:letter-arrive 1.2s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0)*65ms);transition:color .35s}.type-name span:hover{color:#a6bdb8}.type-name span:nth-child(2){--i:1}.type-name span:nth-child(3){--i:2}.type-name span:nth-child(4){--i:3}.type-name span:nth-child(5){--i:4}.type-name span:nth-child(6){--i:5}.type-name span:nth-child(7){--i:6}.type-subrow{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff24;padding:27px 0 30px;margin-top:25px;gap:25px}.edition{font-size:9px;letter-spacing:1.7px;line-height:1.9;color:#8f9d9e}.edition b{font-weight:400;display:block;margin-top:9px;color:#bdc8c5}.type-portfolio{font-family:Georgia,'Times New Roman',serif;font-size:clamp(35px,7.9vw,126px);font-weight:400;font-style:italic;letter-spacing:-.055em;line-height:1;margin:0;color:#b7c4c2;animation:portfolio-arrive 1.4s .15s both}.type-period{color:#d8edb2}.type-caption{display:grid;grid-template-columns:1.4fr 1fr .9fr;align-items:center;gap:30px;margin:40px 0 47px}.type-caption>p{font-size:clamp(19px,2vw,30px);line-height:1.6;letter-spacing:.02em;margin:0;font-weight:500}.type-disciplines{display:flex;flex-direction:column;gap:12px;font-size:9px;letter-spacing:1.1px;color:#93a4a3}.type-explore{justify-self:end;display:flex;align-items:center;gap:30px;border-bottom:1px solid #697574;padding:12px 0;font-size:12px}.type-explore small{font-size:8px;letter-spacing:1.5px;display:block;margin-top:7px;color:#849592}.type-arrow{font-size:41px;line-height:1;color:#cedbd7;transition:transform .3s}.type-explore:hover .type-arrow{transform:translate(5px,5px)}.type-footer{border-top:1px solid #ffffff24;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:#82918e;padding:19px 0 18px}.type-hero+.ticker{margin-top:0} @keyframes letter-arrive{from{opacity:0;transform:translateY(35px) rotate(2deg)}to{opacity:1;transform:translateY(0) rotate(0)}}@keyframes portfolio-arrive{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}
@media(min-width:1800px){.type-name{font-size:292px}}@media(max-width:900px){.nav-caption{display:none}.type-hero{min-height:calc(85svh - 80px)}.type-composition{padding-top:40px}.type-caption{grid-template-columns:1.2fr 1fr}.type-disciplines{display:none}.type-caption>p{font-size:22px}.type-explore{gap:22px}}
@media(max-width:600px){.wordmark{font-size:16px;letter-spacing:-.8px}.nav nav{gap:12px}.type-hero{padding:24px 5% 0;min-height:calc(90svh - 67px)}.type-meta{font-size:8px;letter-spacing:.4px}.type-meta>span:last-child{max-width:142px;text-align:right}.type-composition{padding-top:45px;padding-bottom:15px}.type-kicker{margin-bottom:24px;font-size:8px;letter-spacing:1.8px}.type-spark{font-size:32px}.type-name{font-size:18.05vw;letter-spacing:-.075em;margin:0 -.015em;line-height:.85}.type-subrow{padding:20px 0 27px;display:block;margin-top:20px}.edition{font-size:7px;line-height:1.7;letter-spacing:.9px;display:block}.edition b{display:none}.type-portfolio{font-size:11.8vw;margin-top:13px;text-align:right}.type-caption{margin:18px 0 35px;gap:10px;grid-template-columns:1.15fr 1fr}.type-caption>p{font-size:18px}.type-explore{gap:17px;font-size:11px}.type-explore small{font-size:7px;letter-spacing:.8px}.type-arrow{font-size:28px}.type-footer{font-size:8px;letter-spacing:.4px;padding:16px 0}.type-hero+.ticker{margin-top:0}}
@media(prefers-reduced-motion:reduce){.type-name{transform:none}.type-name span,.type-portfolio{opacity:1;transform:none}}
/* Liquid-chrome sculpture, layered with a restrained personal wordmark. */
.metal-hero{max-width:1800px;margin:auto;padding:29px 4.5% 0;background:radial-gradient(ellipse at 62% 45%,#17202c 0,#0f1319 34%,#101416 70%)}.metal-meta{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.5px;color:#a7adb4}.metal-stage{height:clamp(470px,58vw,750px);max-height:72svh;min-height:470px;position:relative;isolation:isolate;overflow:hidden;margin-top:20px}.metal-name{position:absolute;top:21%;left:0;width:100%;text-align:center;font-family:Arial,Helvetica,sans-serif;font-size:clamp(75px,16.4vw,270px);font-weight:800;letter-spacing:-.07em;line-height:1;margin:0;color:#eeeef1;z-index:1;animation:metal-title-in 1.2s both}.metal-grid{position:absolute;inset:25px 0 12px;z-index:0;border-inline:1px solid #ffffff08;background:linear-gradient(90deg,transparent 24.95%,#ffffff06 25%,transparent 25.05%,transparent 49.95%,#ffffff06 50%,transparent 50.05%,transparent 74.95%,#ffffff06 75%,transparent 75.05%)}#metal-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}.metal-fallback{position:absolute;inset:0;margin:auto;height:94%;width:80%;z-index:2;filter:drop-shadow(0 25px 30px #0008);display:block}.metal-ready .metal-fallback{display:none}.metal-foreground{position:absolute;left:2%;bottom:9%;z-index:3}.metal-index{font-size:8px;letter-spacing:2.7px;color:#b1bac9}.metal-portfolio{font-family:Georgia,'Times New Roman',serif;font-size:clamp(36px,6.1vw,95px);font-style:italic;font-weight:400;letter-spacing:-.055em;margin:18px 0 0;line-height:1;color:#e0e4ef;text-shadow:0 4px 35px #000b}.metal-portfolio>span{color:#98afd7}.metal-annotation{position:absolute;bottom:13%;right:1%;z-index:3;display:flex;align-items:center;gap:9px;font-size:8px;letter-spacing:1.5px;color:#9faabe}.metal-dot{height:5px;width:5px;background:#a0b7ef;border-radius:50%;box-shadow:0 0 9px #859df0}.metal-annotation i{font-size:22px;font-style:normal;margin-left:14px}.metal-caption{border-top:1px solid #ffffff24;padding:26px 0;display:flex;align-items:center;justify-content:space-between;gap:25px}.metal-caption>p{font-size:21px;line-height:1.6;margin:0;letter-spacing:1px}.metal-caption>div{font-size:11px;color:#c1c9d0;letter-spacing:2px}.metal-caption small{display:block;font-size:8px;margin-top:10px;letter-spacing:1.2px;color:#798795}.metal-explore{font-size:12px;display:flex;align-items:center;gap:32px;border-bottom:1px solid #8193ab;padding:11px 0}.metal-explore>span{font-size:30px;color:#bac9e6;transition:transform .3s}.metal-explore:hover>span{transform:translate(4px,4px)}.metal-footer{border-top:1px solid #ffffff16;padding:17px 0;display:flex;justify-content:space-between;color:#788592;font-size:8px;letter-spacing:1.5px}.metal-hero+.ticker{margin-top:0}@keyframes metal-title-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@media(max-width:900px){.metal-stage{height:580px;max-height:70svh}.metal-caption>p{font-size:19px}.metal-name{top:25%}.metal-annotation{font-size:7px;letter-spacing:1px}.metal-foreground{bottom:10%}}
@media(max-width:600px){.metal-hero{padding:24px 5% 0}.metal-meta{font-size:7px;letter-spacing:.4px}.metal-stage{height:490px;max-height:62svh;min-height:390px;margin-top:21px;margin-inline:-5.5%}.metal-name{font-size:16.3vw;top:31%;letter-spacing:-.06em}.metal-foreground{left:5%;bottom:5%}.metal-index{font-size:6px;letter-spacing:1.9px}.metal-portfolio{font-size:10vw;margin-top:11px}.metal-annotation{display:none}.metal-caption{padding:23px 0;gap:15px}.metal-caption>p{font-size:18px}.metal-caption>div{display:none}.metal-explore{font-size:11px;gap:19px}.metal-explore>span{font-size:27px}.metal-footer{font-size:7px;letter-spacing:.4px;padding:17px 0}.metal-fallback{width:100%}}
@media(prefers-reduced-motion:reduce){.metal-name{animation:none}}
/* One coherent sans-serif system, with a compact sculpture in its own corner. */
:root{--font:Arial,Helvetica,"Microsoft YaHei","PingFang SC",sans-serif}.wordmark,.type-name,.type-portfolio,.metal-name,.metal-portfolio{font-family:var(--font)}.metal-portfolio{font-style:normal;font-weight:500;font-size:clamp(31px,4.5vw,72px);letter-spacing:-.06em;margin-top:17px}.metal-stage{height:clamp(520px,47vw,680px);min-height:520px;max-height:none}.metal-name{top:11%;z-index:3;font-size:clamp(75px,16.4vw,260px)}#metal-canvas{inset:auto 0 0 auto;width:43%;height:51%;z-index:2}.metal-fallback{inset:auto 0 0 auto;width:43%;height:51%;margin:0}.metal-foreground{top:53%;bottom:auto;left:2%;width:50%;z-index:3}.metal-notes{margin-top:27px;display:flex;flex-direction:column;gap:10px;font-size:8px;letter-spacing:1.7px;color:#8293a6}.metal-notes p{font-size:7px;letter-spacing:2px;color:#596b82;margin:16px 0 0}.metal-annotation{bottom:auto;top:47%;right:1%;font-size:7px;letter-spacing:1.2px}.metal-caption>p{font-size:19px}.dialog-actions{display:flex;gap:8px;align-items:center}.dialog-actions button:first-child{background:#202627;color:#f2f1ed;border-color:#202627}.video-dialog .dialog-actions button:first-child{background:#f2f1ed;color:#202627;border-color:#f2f1ed}
@media(max-width:900px){.metal-stage{height:550px;min-height:500px}.metal-name{top:13%}.metal-foreground{top:48%}#metal-canvas,.metal-fallback{width:48%;height:50%}.metal-annotation{top:44%}}
@media(max-width:600px){.metal-stage{height:540px;min-height:540px;margin-inline:0;max-height:none}.metal-name{top:10%;font-size:16.3vw;letter-spacing:-.06em}.metal-foreground{top:31%;left:0;width:100%}.metal-portfolio{font-size:9.7vw;letter-spacing:-.055em}.metal-index{font-size:6px;letter-spacing:1.1px}.metal-notes{margin-top:22px;font-size:7px;gap:8px;letter-spacing:1px}.metal-notes p{font-size:6px;margin-top:8px;letter-spacing:1.2px}#metal-canvas,.metal-fallback{width:67%;height:38%;bottom:0;right:-2%}.metal-caption>p{font-size:17px}.dialog-actions{gap:5px}.dialog-nav .dialog-actions button{font-size:10px;padding:8px 11px}.dialog-nav>span{max-width:38%;font-size:8px}}
/* Approved geometric identity: original letter outlines, light and graphic rhythm. */

.wordmark{display:flex;align-items:center;width:133px;letter-spacing:0}.wordmark img{filter:invert(1);width:100%;height:auto}
.identity-hero{--lx:50%;--ly:50%;position:relative;isolation:isolate;max-width:1800px;margin:auto;padding:29px 4.5% 0;background:radial-gradient(ellipse at 82% 66%,#182235 0,transparent 48%),#101416;overflow:hidden}
.identity-meta,.identity-stage,.identity-footer{position:relative;z-index:1}
.hero-glow,.hero-pulses{position:absolute;inset:0;pointer-events:none;z-index:0}.hero-glow{background:radial-gradient(ellipse 390px 340px at var(--gx,70%) var(--gy,65%),#306ab94a 0,#28558a22 45%,transparent 75%);opacity:0;transition:opacity .6s}.identity-hero.glow-active .hero-glow{opacity:1}.hero-pulse{position:absolute;width:30px;height:30px;border:1px solid #80baff65;border-radius:50%;background:radial-gradient(circle,#548ee04a,transparent 70%);transform:translate(-50%,-50%);animation:blue-pulse 1.15s ease-out forwards}
.identity-meta,.identity-topline,.identity-footer{display:flex;justify-content:space-between;gap:18px;font-size:8px;letter-spacing:1.4px;color:#a2adb0}.identity-meta{font-size:9px}.identity-stage{padding-top:60px}.identity-topline{padding-bottom:26px;border-bottom:1px solid #ffffff1c}
.identity-logo{margin:58px 0 65px;position:relative;animation:identity-reveal 1.4s cubic-bezier(.2,.75,.2,1) both}.identity-logo img{width:100%;filter:invert(1);opacity:.94;position:relative;display:block}.logo-spectrum{position:absolute;inset:0;mask:url('assets/haotian-logo.png') center/100% 100% no-repeat;-webkit-mask:url('assets/haotian-logo.png') center/100% 100% no-repeat;pointer-events:none;background:radial-gradient(ellipse 28% 150% at var(--lx) var(--ly),#b5d7ff 0,#b6b7ed70 36%,transparent 72%);opacity:0;transition:opacity .7s}.identity-logo:hover .logo-spectrum{opacity:.85}.identity-logo:after{content:"";position:absolute;inset:0;mask:url('assets/haotian-logo.png') center/100% 100% no-repeat;-webkit-mask:url('assets/haotian-logo.png') center/100% 100% no-repeat;background:linear-gradient(105deg,transparent 35%,#bbdfffaa 47%,#f9faff 50%,#cfbaff80 53%,transparent 65%);background-size:280% 100%;animation:identity-shine 8s 1.2s ease-in-out infinite;pointer-events:none;opacity:.6}
.identity-editorial{display:grid;grid-template-columns:1fr 1.7fr 1fr;gap:32px;padding:46px 0 40px;border-top:1px solid #ffffff1c;align-items:end}.identity-statement{height:338px;position:relative;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:flex-end}.identity-eyebrow{position:absolute;top:0;left:0;right:0;font-size:9px;letter-spacing:1.8px;color:#d4dbdf}.identity-statement h2{font-size:clamp(23px,2.13vw,34px);font-weight:400;line-height:1.55;letter-spacing:.02em;margin:0 0 24px;white-space:nowrap}.identity-statement>p{font-size:14px;letter-spacing:3px;color:#d3dce0;margin:0}.identity-cta{display:inline-flex;gap:14px;align-items:center;justify-content:center;min-height:40px;padding:9px 23px;margin-top:55px;border:0;border-radius:40px;background:#f9fafb;color:#11171c;font-size:12px;font-weight:600;transition:background .25s,box-shadow .25s,transform .25s}.identity-cta>span{font-size:20px;line-height:1;transition:transform .25s}.identity-cta:hover{background:#dcecff;box-shadow:0 0 25px #78a7ec2c;transform:translateY(-2px)}.identity-cta:hover>span{transform:translateY(3px)}
.identity-orbit-panel,.identity-a-panel{height:280px;display:grid;place-items:center}.study-orbit{position:relative;width:100%;max-width:280px;aspect-ratio:1;pointer-events:none}.study-orbit i{display:block;position:absolute;inset:9%;border:2px solid #a0c9f2;border-radius:30%;animation:orbit-rhythm 28s linear infinite;box-shadow:0 0 12px #7a8aec0a;--angle:15deg;transform:rotate(var(--angle))}.study-orbit i:nth-child(2){inset:19%;border-color:#c69cec;--angle:-28deg;animation-duration:32s;animation-direction:reverse}.study-orbit i:nth-child(3){inset:31%;border-color:#91dfdc;--angle:0deg;animation-duration:38s}.study-orbit i:nth-child(4){inset:42%;border-color:#e7edf5;--angle:-30deg;animation-duration:25s;animation-direction:reverse}.study-halo{position:relative;width:100%;max-width:280px;aspect-ratio:1;border:1px solid #7898c47a;border-radius:50%;display:grid;place-items:center}.study-triangle{width:65%;height:60%;background:linear-gradient(145deg,#fcfdff 10%,#c5ccdb 45%,#526078 100%);clip-path:polygon(50% 0,100% 100%,78% 100%,50% 44%,22% 100%,0 100%)}.study-cross{position:absolute;right:18%;top:16%;color:#9bddff;font-size:31px;line-height:1;font-weight:300}.identity-footer{padding:20px 0;border-top:1px solid #ffffff1c;font-size:7px}.identity-hero+.ticker{margin-top:0}
@keyframes identity-reveal{from{opacity:0;clip-path:inset(0 100% 0 0);transform:translateY(12px)}to{opacity:1;clip-path:inset(0);transform:none}}@keyframes identity-shine{0%,10%{background-position:100% 0}40%,100%{background-position:0% 0}}@keyframes orbit-rhythm{from{transform:rotate(var(--angle))}to{transform:rotate(calc(var(--angle) + 360deg))}}@keyframes blue-pulse{0%{opacity:.9;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(22)}}
@media(max-width:900px){.identity-stage{padding-top:42px}.identity-logo{margin:44px 0 48px}.identity-editorial{gap:16px;padding-top:36px}.identity-statement{height:285px}.identity-statement h2{font-size:21px}.identity-statement>p{font-size:11px;letter-spacing:1px}.identity-eyebrow{font-size:6px;letter-spacing:1px}.identity-orbit-panel,.identity-a-panel{height:200px}.identity-cta{font-size:11px;padding:8px 17px;min-height:36px;margin-top:30px}}
@media(max-width:600px){.wordmark{width:104px}.identity-hero{padding:24px 5% 0}.identity-meta{font-size:7px;letter-spacing:.4px}.identity-stage{padding-top:40px}.identity-topline{font-size:6px;letter-spacing:1px;padding-bottom:17px}.identity-logo{margin:36px 0 32px}.identity-editorial{grid-template-columns:1fr 1fr;gap:22px;padding:31px 0 28px}.identity-statement{grid-column:1/-1;grid-row:1;height:auto;padding-top:43px}.identity-statement h2{font-size:25px;margin-bottom:18px}.identity-eyebrow{font-size:7px}.identity-statement>p{font-size:11px}.identity-cta{margin-top:22px}.identity-orbit-panel,.identity-a-panel{height:auto;aspect-ratio:1}.study-halo{width:88%}.study-orbit{width:100%}.study-cross{font-size:20px}.identity-footer{font-size:6px;letter-spacing:.4px;gap:16px;padding:18px 0}.identity-footer>span:first-child{max-width:185px;line-height:1.7}.identity-footer>span:last-child{text-align:right;line-height:1.7;max-width:140px}.hero-glow{background:radial-gradient(circle 230px at var(--gx,50%) var(--gy,60%),#306ab93a,transparent 75%)}}
@media(prefers-reduced-motion:reduce){.identity-logo{opacity:1;clip-path:none;transform:none}.identity-logo:after,.hero-pulses{display:none}.study-orbit i{animation:none;transform:rotate(var(--angle))}}

/* Shared charcoal / blue visual language across the portfolio. */
:root{--accent:#a7cbff;--ink:#edf1f7;--paper:#11171e;--line:#ffffff20;--muted:#a4b0bf}
button:focus-visible,a:focus-visible{outline-color:#a7cbff}::selection{background:#a7cbff;color:#101416}
.ticker{color:#d5dfe9;background:#101416}.ticker i{display:inline-block;color:#a7cbff;font-size:.65em;vertical-align:.08em}
.section-light,.motion,footer{color:#edf1f7;background:radial-gradient(ellipse at 85% 20%,#1a263b80,transparent 65%),#101416;border-top:1px solid #ffffff1c}
.work,.motion,.about,footer{padding-left:4.5%;padding-right:4.5%}
.section-head h2,.about h2,.contact-title{font-weight:400;letter-spacing:.015em}.section-head h2 span{color:#a7cbff}
.eyebrow{color:#a5b7cb}.section-head>p,.section-head>div>p,.about-intro>p,.dialog-heading p{color:#a9b6c5}
.filters button{border-color:#ffffff35;color:#c0cddd}.filters button:hover{border-color:#a7cbff;background:#a7cbff12}.filters button.active{background:#f5f7fa;color:#101416;border-color:#f5f7fa}
.project-card{color:#edf1f7}.project-image,.video-cover{background:#192330;border:1px solid #ffffff15;border-radius:10px}.image-arrow{background:#f5f7fa;color:#101416}.image-label{background:#111925bd;border-color:#ffffff25;border-radius:20px}.project-info p,.project-info>span,.video-label span,.work-footnote{color:#a3b1c1}.work-footnote{border-color:#ffffff20}
.project-info{padding-bottom:15px;border-bottom:1px solid #ffffff18}.project-info h3,.capability h3{font-weight:500}
.motion-stamp{color:#a7cbff;border-color:#ffffff25}.motion-process>span{color:#a3b1c1}.play-circle{background:#f5f7fa;color:#101416}.video-card:hover .play-circle{background:#a7cbff;color:#101416}
.capability{border-color:#ffffff20}.capability span,.capability p,.experience p{color:#a3b1c1}.experience b{color:#d4e0f0}
.text-link{width:auto;gap:30px;background:#f5f7fa;color:#101416;border:0;border-radius:40px;padding:11px 22px;font-size:12px}.text-link span{font-size:18px}.text-link:hover{background:#dcecff}.contact-row button{color:#d4e0f0;border-color:#ffffff40}.footer-bottom{color:#a3b1c1;border-color:#ffffff20}
.project-dialog{background:radial-gradient(ellipse at 90% 5%,#1b2940,transparent 65%),#101416;color:#edf1f7}.dialog-nav,.video-dialog .dialog-nav{background:#10161ef2;color:#edf1f7;border-color:#ffffff20}.dialog-nav button{color:#edf1f7;border-color:#ffffff40}.dialog-nav button:hover{background:#edf1f7;color:#101416}.project-facts span{color:#a3b1c1}.next-project{background:#f5f7fa;color:#101416}.next-project:hover{background:#dcecff}.video-dialog{border-radius:12px}.video-dialog>p{color:#a3b1c1}.toast,.cursor{background:#a7cbff;color:#101416}
.study-triangle{animation:a-float-fade 6s ease-in-out infinite;mask-image:linear-gradient(to bottom,#000 0%,#000 72%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 72%,transparent 100%)}
@keyframes a-float-fade{0%,100%{transform:translateY(4px);mask-image:linear-gradient(to bottom,#000 0%,#000 79%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 79%,transparent 100%)}50%{transform:translateY(-7px);mask-image:linear-gradient(to bottom,#000 0%,#000 65%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 65%,transparent 100%)}}
@property --a-fade-start{syntax:"<percentage>";inherits:false;initial-value:79%}
body{color:#edf1f7}
.study-triangle{mask-image:linear-gradient(to bottom,#000 0%,#000 var(--a-fade-start),transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 var(--a-fade-start),transparent 100%)}
@keyframes a-float-fade{0%,100%{transform:translateY(4px);--a-fade-start:79%}50%{transform:translateY(-7px);--a-fade-start:65%}}
@media(prefers-reduced-motion:reduce){.study-triangle{animation:none;transform:none}}
