@font-face{font-family:WenYue;src:url("assets/fonts/WenYueMingChao-gb.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:PingFang;src:url("assets/fonts/PingFang-Regular-gb.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:PingFang;src:url("assets/fonts/PingFang-ExtraLight-gb.woff2") format("woff2");font-style:normal;font-weight:200;font-display:swap}
@font-face{font-family:PingFang;src:url("assets/fonts/PingFang-Medium-gb.woff2") format("woff2");font-style:normal;font-weight:500;font-display:swap}
@font-face{font-family:PingFang;src:url("assets/fonts/PingFang-Heavy-gb.woff2") format("woff2");font-style:normal;font-weight:800;font-display:swap}

:root{
  --paper:#efeee9;--paper-deep:#e4e2db;--ink:#121211;--ink-soft:#343431;
  --mist:#a8a69f;--line:rgba(18,18,17,.22);--red:#f04423;--blue:#155bd7;
  --green:#0f9b6d;--yellow:#ffd21a;--side:clamp(24px,5vw,80px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:PingFang,"Microsoft YaHei",sans-serif;font-weight:200;overflow-x:hidden;cursor:none}
.cursor{left:0!important;top:0!important;will-change:transform}
a,button{color:inherit;font:inherit}
a{text-decoration:none}
button{border:0;background:none;cursor:none}
.noise{position:fixed;inset:0;z-index:1000;pointer-events:none;opacity:.17;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E")}
.cursor{position:fixed;z-index:1100;pointer-events:none;border-radius:50%;transform:translate(-50%,-50%)}
.cursor-dot{width:5px;height:5px;background:var(--red)}
.cursor-ring{width:34px;height:34px;border:1px solid rgba(18,18,17,.55);transition:width .25s,height .25s,background .25s}
.cursor-ring.active{width:58px;height:58px;background:rgba(240,68,35,.12);border-color:var(--red)}
.site-header{position:fixed;top:0;left:0;width:100%;z-index:100;display:flex;justify-content:space-between;align-items:flex-start;padding:24px var(--side);mix-blend-mode:difference;color:#fff}
.brand{display:grid;grid-template-columns:34px auto;grid-template-rows:auto auto;column-gap:10px;align-items:center}
.brand-roof{grid-row:1/3;width:32px;height:27px;border:1px solid currentColor;border-top:0;clip-path:polygon(0 25%,39% 38%,50% 0,61% 38%,100% 25%,92% 45%,92% 100%,8% 100%,8% 45%)}
.brand-name{font-family:WenYue,serif;font-size:20px;letter-spacing:.15em;line-height:1}
.brand-en{font-size:6px;letter-spacing:.13em;margin-top:4px}
.menu-toggle{display:none}
.site-nav{display:flex;gap:clamp(18px,2.8vw,48px);font-size:12px;letter-spacing:.08em}
.site-nav a{position:relative;padding-top:5px}
.site-nav em{font-style:normal;font-size:7px;position:absolute;top:-4px;left:-10px;opacity:.65}
.site-nav a:after{content:"";position:absolute;left:0;bottom:-6px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .35s}
.site-nav a:hover:after{transform:scaleX(1);transform-origin:left}

.hero{position:relative;height:100svh;min-height:700px;background:#d9d8d4;overflow:hidden}
#ink-canvas{position:absolute;inset:0;width:100%;height:100%;filter:contrast(1.08)}
.hero-copy{position:absolute;left:var(--side);right:var(--side);top:50%;transform:translateY(-46%);z-index:2}
.eyebrow{font-size:11px;letter-spacing:.3em;margin:0 0 34px}
.hero h1{margin:0;font-family:WenYue,serif;font-size:clamp(82px,15vw,230px);font-weight:400;line-height:.71;letter-spacing:-.04em}
.title-line{display:block;width:max-content}
.title-line:nth-child(2){margin-left:23vw}
.title-line:nth-child(3){margin-left:47vw}
.hero-note{position:absolute;left:1vw;top:calc(100% + 44px);display:flex;gap:55px;font-size:11px;line-height:1.7;letter-spacing:.12em}
.hero-note p:last-child{font-size:8px;letter-spacing:.18em;color:#5d5d58}
.hero-seal{position:absolute;right:8vw;top:25%;z-index:3;width:42px;height:42px;display:grid;place-items:center;background:var(--red);color:#fff;font-family:WenYue;font-size:24px;transform:rotate(3deg);box-shadow:0 5px 25px rgba(240,68,35,.15)}
.scroll-mark{position:absolute;right:var(--side);bottom:34px;display:flex;align-items:center;gap:14px;font-size:9px;letter-spacing:.25em;writing-mode:vertical-rl}
.scroll-mark i{height:55px;width:1px;background:var(--ink);animation:scrollLine 2s infinite}
.hero-index{position:absolute;left:var(--side);bottom:30px;font-size:9px;letter-spacing:.25em}
@keyframes scrollLine{0%,100%{transform:scaleY(.3);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}}

.section-pad{padding:clamp(100px,14vw,210px) var(--side)}
.section-label{font-size:10px;letter-spacing:.28em;display:flex;gap:24px;align-items:center;white-space:nowrap}
.section-label span{opacity:.45}
.section-label:after{content:"";height:1px;width:50px;background:currentColor;opacity:.3}
.section-label.light{color:#ddd}
.manifesto{min-height:92vh;display:grid;grid-template-columns:1fr 4fr;grid-template-rows:auto 1fr auto}
.manifesto-text{grid-column:2;font-family:WenYue,serif;font-size:clamp(42px,6.5vw,104px);line-height:1.45;letter-spacing:.02em;margin:7vw 0}
.accent-text{position:relative;white-space:nowrap}
.accent-text:after{content:"";position:absolute;left:0;bottom:.05em;width:100%;height:5px;background:var(--red);transform:scaleX(.12);transform-origin:left;transition:transform 1.2s ease}
.accent-text.is-visible:after{transform:scaleX(1)}
.manifesto-meta{grid-column:2;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:20px;font-size:11px;letter-spacing:.12em}
.text-link span{color:var(--red);margin-left:12px}

.dark-section{background:var(--ink);color:#e7e6e1}
.section-head h2,.join h2{font-family:WenYue,serif;font-size:clamp(50px,7vw,108px);font-weight:400;line-height:1.2;margin:10vw 0 6vw}
.research-list{border-top:1px solid rgba(255,255,255,.22)}
.research-item{position:relative;display:grid;grid-template-columns:1fr 2.2fr 2fr auto;align-items:center;gap:30px;padding:38px 0;border-bottom:1px solid rgba(255,255,255,.22);transition:padding .4s}
.research-item:hover{padding-left:18px}
.item-no{font-size:9px;letter-spacing:.2em;color:#888}
.research-item h3{font-family:WenYue;font-size:clamp(26px,3vw,46px);font-weight:400;margin:0}
.research-item p{font-size:12px;line-height:1.8;color:#aaa;max-width:360px}
.ink-dot{width:9px;height:9px;border-radius:50%;box-shadow:0 0 25px currentColor;transition:transform .5s}
.research-item:hover .ink-dot{transform:scale(2.5)}
.vermilion{background:var(--red);color:var(--red)}.mineral-blue{background:var(--blue);color:var(--blue)}.mineral-green{background:var(--green);color:var(--green)}.bright-yellow{background:var(--yellow);color:var(--yellow)}

.section-head.split{display:grid;grid-template-columns:1fr 1fr;gap:10vw;align-items:start;margin-bottom:8vw}
.section-head.split>p{margin:0;max-width:560px;font-family:WenYue;font-size:clamp(22px,2.5vw,38px);line-height:1.7}
.project-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:9vw 3vw}
.project-large{grid-row:span 2}
.media-slot{position:relative;overflow:hidden;background:#d7d5cf;aspect-ratio:16/10}
.media-slot.portrait{aspect-ratio:4/5}.media-slot.square{aspect-ratio:1}
.media-slot img{width:100%;height:100%;object-fit:cover;filter:grayscale(100%);transition:filter .8s,transform 1.1s}
.media-slot:hover img{filter:grayscale(15%);transform:scale(1.025)}
.slot-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;background:radial-gradient(circle at 48% 40%,#efeee9 0,#ceccc5 46%,#aaa8a1 100%)}
.slot-placeholder:before{content:"";position:absolute;width:45%;height:45%;border-radius:50%;background:#31312e;filter:blur(45px);opacity:.13}
.slot-placeholder span{font-family:WenYue;font-size:clamp(50px,8vw,120px);color:rgba(18,18,17,.08);line-height:1}
.slot-placeholder p{margin:10px 0 4px;font-size:11px;letter-spacing:.18em}.slot-placeholder small{font-size:8px;letter-spacing:.1em;color:#777}
.upload-trigger{position:absolute;right:14px;bottom:14px;padding:9px 14px;background:rgba(239,238,233,.88);backdrop-filter:blur(8px);font-size:9px;letter-spacing:.14em;border:1px solid rgba(18,18,17,.15);opacity:0;transform:translateY(5px);transition:.3s}
.media-slot:hover .upload-trigger{opacity:1;transform:none}
.media-slot.has-image .slot-placeholder{display:none}
.media-slot.has-image .upload-trigger{color:#fff;background:rgba(18,18,17,.66);border-color:rgba(255,255,255,.25)}
.project-info{display:flex;justify-content:space-between;gap:30px;padding-top:18px}
.project-info span{font-size:8px;letter-spacing:.18em;color:#777}
.project-info h3{font-family:WenYue;font-size:clamp(22px,2.1vw,34px);font-weight:400;margin:8px 0}
.project-info p{max-width:240px;font-size:10px;line-height:1.8;color:#777}
.all-link{display:flex;align-items:center;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:24px 0;margin-top:10vw;font-family:WenYue;font-size:clamp(26px,3vw,42px)}
.all-link span{font-family:PingFang;font-size:9px;margin-left:20px;letter-spacing:.13em}.all-link i{margin-left:auto;color:var(--red);font-style:normal}

.soft-section{background:var(--paper-deep)}
.team-stage{display:grid;grid-template-columns:1.3fr 1fr;gap:4vw}.team-photo{aspect-ratio:4/3}
.team-categories{border-top:1px solid var(--line)}
.team-categories a{display:grid;grid-template-columns:50px 1fr auto;align-items:center;padding:25px 0;border-bottom:1px solid var(--line);font-family:WenYue;font-size:clamp(21px,2.2vw,34px)}
.team-categories a span{font-family:PingFang;font-size:8px;color:#888}.team-categories i{font-style:normal;font-family:PingFang;font-size:12px;color:var(--red);opacity:0;transition:.3s}.team-categories a:hover i{opacity:1}

.cooperation{min-height:100vh}.cooperation .section-head h2{margin-bottom:2vw}
.cooperation-orbit{position:relative;width:min(65vw,760px);aspect-ratio:1;margin:0 auto;border:1px solid var(--line);border-radius:50%;animation:breath 6s ease-in-out infinite}
.cooperation-orbit:before{content:"";position:absolute;inset:18%;border:1px solid var(--line);border-radius:50%}
.orbit-center{position:absolute;inset:37%;border-radius:50%;background:var(--ink);color:#eee;display:flex;flex-direction:column;align-items:center;justify-content:center}
.orbit-center span{font-family:WenYue;font-size:clamp(20px,3vw,40px)}.orbit-center small{font-size:6px;letter-spacing:.2em;margin-top:8px;color:#999}
.cooperation-orbit button{position:absolute;left:50%;top:50%;width:76px;height:76px;margin:-38px;border-radius:50%;background:var(--paper);border:1px solid var(--ink);font-family:WenYue;font-size:18px;transform:rotate(calc(var(--i)*72deg - 90deg)) translateX(min(32.5vw,380px)) rotate(calc(var(--i)*-72deg + 90deg));transition:.4s}
.cooperation-orbit button:hover{background:var(--red);color:#fff;border-color:var(--red)}
@keyframes breath{50%{transform:scale(.985)}}
.cooperation-foot{display:flex;justify-content:space-between;align-items:center;margin-top:7vw;border-top:1px solid var(--line);padding-top:24px}.cooperation-foot p{font-size:11px;line-height:1.8;max-width:500px}.outline-link{border:1px solid var(--ink);padding:14px 20px;font-size:10px;letter-spacing:.15em}.outline-link span{color:var(--red);margin-left:15px}

.news-tabs{display:flex;gap:25px;justify-content:flex-end}.news-tabs button{color:#777;font-size:10px}.news-tabs button.active{color:#fff}.news-tabs button.active:after{content:"";display:block;height:2px;background:var(--red);margin-top:6px}
.news-list{border-top:1px solid #444}.news-row{display:grid;grid-template-columns:1fr 1fr 4fr auto;gap:30px;align-items:center;padding:30px 0;border-bottom:1px solid #444}.news-row time,.news-row span{font-size:9px;letter-spacing:.14em;color:#777}.news-row h3{font-family:WenYue;font-weight:400;font-size:clamp(20px,2vw,30px);margin:0}.news-row i{font-style:normal;color:var(--red);opacity:0;transition:.3s}.news-row:hover i{opacity:1}

.join{position:relative;overflow:hidden}.join-mark{position:absolute;right:-.03em;top:-.1em;font-family:WenYue;font-size:50vw;line-height:1;color:rgba(18,18,17,.035);pointer-events:none}.join h2{position:relative;margin:8vw 0}.join-paths{position:relative;border-top:1px solid var(--ink)}.join-paths a{display:grid;grid-template-columns:1fr 4fr auto;align-items:center;border-bottom:1px solid var(--ink);padding:25px 0}.join-paths span{font-size:9px}.join-paths h3{font-family:WenYue;font-size:clamp(25px,3vw,44px);font-weight:400;margin:0}.join-paths i{font-style:normal;color:var(--red);font-size:24px}
.site-footer{background:var(--ink);color:#aaa;padding:70px var(--side) 35px;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;font-size:9px;letter-spacing:.13em}.site-footer>div{display:flex;flex-direction:column;gap:12px}.site-footer strong{font-family:WenYue;color:#eee;font-size:38px;font-weight:400}.site-footer span{color:#666}.site-footer a,.site-footer p{margin:0;color:#ccc}.footer-end{align-items:flex-end;justify-content:space-between}

.reveal{opacity:0;transform:translateY(35px);transition:opacity 1.1s cubic-bezier(.2,.7,.2,1),transform 1.1s cubic-bezier(.2,.7,.2,1)}
.reveal.is-visible{opacity:1;transform:none}.delay-1{transition-delay:.12s}.delay-2{transition-delay:.24s}.delay-3{transition-delay:.4s}
.upload-toast{position:fixed;left:50%;bottom:25px;z-index:1200;transform:translate(-50%,20px);opacity:0;background:var(--ink);color:#fff;padding:12px 20px;font-size:10px;letter-spacing:.13em;transition:.35s}.upload-toast.show{opacity:1;transform:translate(-50%,0)}

@media (max-width:900px){
  body{cursor:auto}.cursor{display:none}.site-header{padding-top:18px}.menu-toggle{display:flex;color:inherit;align-items:center;gap:10px;font-size:11px}.menu-toggle i{width:18px;height:1px;background:currentColor}
  .site-nav{position:fixed;inset:0;background:var(--ink);color:#eee;display:flex;flex-direction:column;justify-content:center;padding:12vw;gap:20px;transform:translateY(-100%);transition:.6s;z-index:-1;mix-blend-mode:normal}.site-nav.open{transform:none}.site-nav a{font-family:WenYue;font-size:clamp(25px,6vw,48px)}
  .hero h1{font-size:24vw;line-height:.78}.title-line:nth-child(2){margin-left:12vw}.title-line:nth-child(3){margin-left:25vw}.hero-note{position:static;margin-top:40px}.hero-seal{top:21%}
  .manifesto{display:block}.manifesto-text{margin:18vw 0}.manifesto-meta{display:block}.manifesto-meta .text-link{display:block;margin-top:24px}
  .research-item{grid-template-columns:45px 1fr auto}.research-item p{grid-column:2/4}.section-head.split{grid-template-columns:1fr;gap:40px}
  .project-grid,.team-stage{grid-template-columns:1fr}.project-large{grid-row:auto}.project-card{margin-bottom:40px}
  .cooperation-orbit{width:72vw}.cooperation-orbit button{transform:rotate(calc(var(--i)*72deg - 90deg)) translateX(36vw) rotate(calc(var(--i)*-72deg + 90deg));width:58px;height:58px;margin:-29px;font-size:15px}
  .news-tabs{justify-content:flex-start;flex-wrap:wrap}.news-row{grid-template-columns:1fr 1fr auto}.news-row h3{grid-column:1/3}.news-row i{grid-column:3;grid-row:1/3}
  .site-footer{grid-template-columns:1fr 1fr}.footer-end{align-items:flex-start}.upload-trigger{opacity:1;transform:none}
}
@media (max-width:560px){
  :root{--side:20px}.hero{min-height:620px}.hero-note{gap:25px}.hero-seal{right:8vw;width:34px;height:34px;font-size:19px}
  .section-pad{padding-top:90px;padding-bottom:90px}.manifesto-text{font-size:37px}.research-item{padding:26px 0}.research-item h3{font-size:25px}
  .cooperation-orbit{width:76vw;margin-top:90px;margin-bottom:70px}.cooperation-orbit button{transform:rotate(calc(var(--i)*72deg - 90deg)) translateX(38vw) rotate(calc(var(--i)*-72deg + 90deg));font-size:13px}
  .cooperation-foot{display:block}.outline-link{display:inline-block;margin-top:20px}.join-paths a{grid-template-columns:34px 1fr auto}.site-footer{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}

/* Cursor fail-safe: native pointer remains available until the custom cursor is live. */
html:not(.cursor-ready) body,html.cursor-suspended body{cursor:auto}
html:not(.cursor-ready) button,html.cursor-suspended button{cursor:pointer}
.cursor{opacity:0;transition:opacity .12s ease,width .25s,height .25s,background .25s;transform:translate3d(var(--cursor-dot-x,50vw),var(--cursor-dot-y,50vh),0) translate(-50%,-50%)!important}
.cursor-ring{transform:translate3d(var(--cursor-ring-x,50vw),var(--cursor-ring-y,50vh),0) translate(-50%,-50%)!important}
html.cursor-ready .cursor{opacity:1}
html.cursor-suspended .cursor{opacity:0}
