/* ===== home page: glass-N hero, filters, load-more grid, flythrough, services/process ===== */
/* hero art */
.cbg{position:absolute;left:0;right:0;top:0;height:35.9vw;overflow:hidden;pointer-events:none;z-index:0}
.cbg img{position:absolute;left:12.1%;top:0;width:69.6%;height:auto;max-width:none;
 -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 14%,#000 86%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 14%,#000 86%,transparent 100%)}
/* hero text */
.home .ph{position:relative;box-sizing:border-box;min-height:calc(35.9vw - 98px);padding-top:max(24px,calc(12.6vw - 98px));padding-bottom:36px;border-bottom:1px solid rgba(255,255,255,.3)}
.home .ph .lab{font-size:14px;font-weight:400;letter-spacing:.02em;color:#D9D7DE}
.home .ph .h1{margin-top:16px;font-weight:700;font-size:clamp(40px,4.3vw,76px);line-height:1.17;letter-spacing:0;max-width:52%}
.home .ph .sub{margin-top:16px;font-size:clamp(16px,1.25vw,21px);color:#E6E4EA;max-width:52%}
/* filter bar */
.cd .fbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:22px}
.cd .filters{margin:0;gap:0;font-size:14px;flex-wrap:wrap}
.cd .filters button{color:var(--ink);border:0;height:42px;padding:0 22px;border-radius:21px;transition:background .2s,color .2s}
.cd .filters button:hover{color:#B9AAFF}
.cd .filters button[aria-pressed=true]{background:var(--accent);color:#fff}
.cd .cnt{margin:0;font-size:14px;color:#BDBBC2;white-space:nowrap}
.cd .card.pg-x{display:none}
.cd .more{margin-top:34px;text-align:center}
.cd .more .shown{display:flex;align-items:center;gap:40px;margin:0;font-size:14px;color:var(--muted)}
.cd .more .shown::before,.cd .more .shown::after{content:"";flex:1;height:1px;background:rgba(255,255,255,.22)}
.cd .ldm{margin-top:22px;width:290px;height:48px;border-radius:24px;border:1px solid rgba(255,255,255,.55);background:none;color:var(--ink);font:inherit;font-size:15px;cursor:pointer;transition:border-color .2s,background .2s}
.cd .ldm:hover{border-color:#fff;background:rgba(255,255,255,.05)}
.cd .ldm span{margin-left:10px}
@media (max-width:767px){
 .cbg{height:52vw}
 .cbg img{left:3%;width:107%;top:-1vw;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 18%);mask-image:linear-gradient(90deg,transparent 0,#000 18%)}
 .home .ph{min-height:calc(52vw - 64px);padding-top:max(10px,calc(14vw - 64px));padding-bottom:0;border-bottom:0}
 .home .ph .lab{font-size:3.6vw}
 .home .ph .h1{margin-top:2.6vw;font-size:6.6vw;line-height:1.16;max-width:54%}
 .home .ph .sub{margin-top:2.6vw;font-size:3.6vw;line-height:1.4;max-width:46%}
 .home br.bd{display:inline}
 html:lang(zh) .home .ph .h1{max-width:5.9em}
 html:lang(zh) .home .ph .sub{max-width:13.3em}
 .cd .fbar{flex-direction:column;align-items:flex-start;gap:12px;margin-top:4vw}
 .cd .filters{flex-wrap:nowrap;max-width:100%;overflow-x:auto;padding:3px;border-radius:30px;background:#08090B;border:1px solid rgba(255,255,255,.12);scrollbar-width:none}
 .cd .filters::-webkit-scrollbar{display:none}
 .cd .filters button{flex:none;height:38px;padding:0 3.3vw;font-size:14px;border-radius:19px}
 .cd .cnt{font-size:13px}
 .cd .more{margin-top:24px}.cd .more .shown{display:block;font-size:13px}.cd .more .shown::before,.cd .more .shown::after{display:none}
 .cd .ldm{width:100%;margin-top:12px;height:46px}
}

/* ===== depth flythrough — only when html.fx-on (set by cases-fx.js) ===== */
.fx{position:relative;margin-top:8px;--gx:max(var(--gut),calc((100% - var(--max))/2))}
.fx-stick{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;
 background:radial-gradient(58% 54% at 52% 46%,rgba(109,82,248,.17) 0,rgba(109,82,248,.06) 42%,rgba(3,4,5,0) 72%),var(--canvas)}
.fx-stick::before{content:"";position:absolute;left:0;right:0;top:0;height:120px;background:linear-gradient(var(--canvas),rgba(3,4,5,0));z-index:1;pointer-events:none}
.fx-stick::after{content:"";position:absolute;left:0;right:0;bottom:0;height:170px;background:linear-gradient(rgba(3,4,5,0),rgba(3,4,5,.85));z-index:1;pointer-events:none}
.fx-cv{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0;transition:opacity 1s ease}
.fx.ready .fx-cv{opacity:1}
.fx-hud{position:absolute;inset:0;pointer-events:none;z-index:2}
.fx .fbar{position:absolute;left:var(--gx);right:var(--gx);top:14px;margin:0;pointer-events:auto}
.fx-count{position:absolute;right:var(--gx);bottom:50px;margin:0;font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums;display:flex;gap:8px}
.fx-count .fx-i{color:var(--ink)}
.fx-info{position:absolute;left:var(--gx);bottom:46px;max-width:calc(100% - 2*var(--gx) - 160px)}
.fx-title{display:block;overflow:hidden;text-decoration:none;color:var(--ink);pointer-events:auto;font-weight:700;font-size:clamp(36px,4.3vw,72px);line-height:1.12;padding:.06em 0}
.fx-title span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;transition:transform .5s cubic-bezier(.2,.7,.1,1),opacity .35s}
.fx-title:hover{color:#B9AAFF}
.fx-cat{margin:10px 0 0;font-size:15px;color:#BDBBC2;display:flex;gap:22px;align-items:baseline;transition:opacity .35s}
.fx-go{color:#B9AAFF;font-weight:600}.fx-go b{font-weight:400}
.fx-info.out .fx-title span{transform:translateY(-105%);opacity:0}
.fx-info.out .fx-cat{opacity:0}
.fx-info.pre .fx-title span{transform:translateY(105%);opacity:0;transition:none}
.fx-info.pre .fx-cat{opacity:0;transition:none}
.fx-info.kb .fx-title span{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.12em}
.fx-bar{position:absolute;right:30px;top:50%;width:1px;height:28vh;background:rgba(255,255,255,.16);transform:translateY(-50%)}
.fx-bar i{display:block;width:100%;height:100%;background:var(--accent);transform-origin:top;transform:scaleY(0)}
.fx-hint{position:absolute;left:50%;bottom:52px;transform:translateX(-50%);margin:0;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:10px;white-space:nowrap}
.fx-hint i{display:block;width:1px;height:22px;background:var(--muted);transform-origin:top;animation:fxdrip 1.8s ease-in-out infinite}
@keyframes fxdrip{0%{transform:scaleY(0)}50%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}
.fx-cur{position:absolute;left:0;top:0;width:96px;height:96px;margin:-48px 0 0 -48px;border-radius:50%;background:var(--accent);color:#fff;font-size:13px;font-weight:600;
 display:flex;align-items:center;justify-content:center;text-align:center;pointer-events:none;transform:scale(0);will-change:transform;z-index:3;box-shadow:0 0 40px rgba(109,82,248,.45)}
.fx-veil{position:absolute;inset:0;background:var(--canvas);opacity:0;pointer-events:none;transition:opacity .38s ease .34s;z-index:4}
.fx.go .fx-veil{opacity:1}
.fx.go .fx-hud{opacity:0;transition:opacity .3s}
.fx-src{position:absolute!important;left:0;top:0;width:1px!important;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;margin:0!important}
html.fx-on .cband{margin-top:0}
@media (max-width:1023px){.fx-info{max-width:calc(100% - 2*var(--gx) - 90px)}.fx .filters button{padding:0 14px}}

/* ===== services + process (ported from the previous home page, same artwork coordinates) ===== */
.hrest{position:relative;width:100%;height:101.5vw;margin-top:60px;background:var(--canvas);color:#F5F4F7}
html.fx-on .hrest{margin-top:0}
.hrest>.bg{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;z-index:0;clip-path:inset(.7vw 0 0 0)}
.hrest section{scroll-margin-top:0}
.hrest .ov{position:absolute;z-index:2;margin:0}
.hrest .h2{font-size:5.15vw;line-height:1.06;letter-spacing:-.012em;font-weight:500;margin:0;color:#F5F4F7}
.hrest .lab{font-size:1.05vw;letter-spacing:.32em;text-transform:uppercase;color:#cfcdd8;font-weight:400}
.hrest .dash{width:2.5vw;height:.14vw;background:#dedbe6}
#svc .dash{left:5.5vw;top:8.3vw}#svc .h2{left:5.4vw;top:10.5vw}
#svc .rows{left:5.5vw;top:22.8vw;width:39.5vw;margin:0;border:0}
#svc .row{display:grid;grid-template-columns:5.6vw 1fr 2.2vw;align-items:center;height:5.9vw;padding:0;border-bottom:1px solid rgba(255,255,255,.28);text-decoration:none;color:#F5F4F7;transition:color .18s}
#svc .row:hover{color:#B9AAFF}
#svc .row .n{font-size:2.2vw;font-weight:300;color:#d5d3dc;font-family:Georgia,"Times New Roman",serif;padding:0}
#svc .row span{font-size:1.75vw}#svc .row .ar{font-size:1.9vw;color:#e6e4ec;transition:transform .18s}#svc .row:hover .ar{transform:translateX(.3vw)}
#stu .lab{left:5.5vw;top:62.8vw}#stu .h2{left:5.4vw;top:65.7vw;font-size:4.5vw;line-height:1.1}
#stu .cols{left:6.6vw;top:80.9vw;width:88vw;height:12.5vw;display:grid;grid-template-columns:27.7vw 31.3vw 1fr}
#stu .c{border-left:0;padding:.8vw 0 0 5vw}
#stu .c .n{font-size:2.6vw;font-weight:300;font-family:Georgia,"Times New Roman",serif;color:#e8e6ee;margin:0 0 .7vw}
#stu .c h3{font-size:2.2vw;font-weight:400;margin:0 0 .9vw}#stu .c .dash{width:2.2vw}#stu .c p:not(.n){display:none}
@media (max-width:767px){
 .hrest{height:auto;margin-top:48px;padding:0 var(--gut)}
 .hrest>.bg{display:none}
 .hrest .ov{position:static}
 .hrest section{padding:36px 0 8px}
 .hrest .dash{display:none}
 .hrest .h2,#stu .h2{font-size:30px;line-height:1.2;font-weight:700}
 .hrest .lab{font-size:12px;letter-spacing:.2em}
 #stu .h2{margin-top:12px}
 #svc .rows{width:100%;margin-top:22px}
 #svc .row{grid-template-columns:44px 1fr 22px;height:56px}
 #svc .row .n{font-size:20px}#svc .row span{font-size:16px}#svc .row .ar{font-size:18px}
 #stu .cols{display:grid;grid-template-columns:1fr;gap:18px;margin-top:24px;width:auto;height:auto}
 #stu .c{border-left:1px solid rgba(255,255,255,.16);padding:4px 0 4px 18px}
 #stu .c .n{font-size:22px;margin:0 0 6px}#stu .c h3{font-size:20px;margin:0 0 6px}
 #stu .c p:not(.n){display:block;color:#BDBBC2;font-size:14px;margin:0}

}
