/* Chenda Shengye — cinematic interaction layer */
:root{--cs-ease:cubic-bezier(.22,1,.36,1);--cs-ease2:cubic-bezier(.16,1,.3,1)}
html{scroll-behavior:smooth;background:#0b0b0b}
body{overflow-x:hidden}
body.cs-ready{opacity:1}
body:not(.cs-ready){opacity:0}
.site-wrap{position:relative;isolation:isolate}
/* cinematic page entrance */
.cs-page-wash{position:fixed;inset:0;z-index:99999;background:#080808;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .10s linear,visibility 0s linear .10s;will-change:opacity}
@keyframes csWashIn{to{transform:scaleY(0)}}
.cs-progress{position:fixed;left:0;top:0;width:0;height:2px;z-index:100000;background:rgba(255,255,255,.95);box-shadow:0 0 18px rgba(255,255,255,.45)}
/* header stays visually strong */
.site-navbar-wrap{position:relative;z-index:1000;transition:transform .65s var(--cs-ease),background .65s var(--cs-ease),box-shadow .65s var(--cs-ease)}
.site-navbar-wrap.cs-scrolled{box-shadow:0 12px 45px rgba(0,0,0,.09);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.site-navbar-wrap .site-navbar{transition:background .65s var(--cs-ease)}
/* full-bleed hero treatment */
.site-blocks-cover,.slide-one-item .site-blocks-cover{min-height:100vh!important;height:100svh!important;position:relative;overflow:hidden;display:flex;align-items:center}
.site-blocks-cover:before,.slide-one-item .site-blocks-cover:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.10),transparent 35%,rgba(0,0,0,.34));z-index:1;pointer-events:none}
.site-blocks-cover:after,.slide-one-item .site-blocks-cover:after{content:"";position:absolute;inset:-12%;background:radial-gradient(circle at 75% 25%,rgba(255,255,255,.15),transparent 28%),linear-gradient(120deg,transparent 30%,rgba(255,255,255,.045) 50%,transparent 70%);mix-blend-mode:screen;animation:csLightSweep 12s ease-in-out infinite alternate;z-index:1;pointer-events:none}
@keyframes csLightSweep{0%{transform:translate3d(-5%,0,0) rotate(-2deg);opacity:.35}100%{transform:translate3d(5%,1%,0) rotate(2deg);opacity:.75}}
.site-blocks-cover>.container,.slide-one-item .site-blocks-cover>.container{z-index:3}
.site-blocks-cover video{transform:scale(1.035);filter:saturate(.94) contrast(1.03);animation:csHeroVideo 12s ease-in-out infinite alternate}
@keyframes csHeroVideo{to{transform:scale(1.075)}}
/* hero text becomes cinematic when content exists */
.site-blocks-cover h1,.site-blocks-cover p{opacity:0;transform:translateY(34px);animation:csTextIn 1.1s var(--cs-ease) .35s forwards}
.site-blocks-cover p{animation-delay:.5s}
@keyframes csTextIn{to{opacity:1;transform:none}}
/* sections: create cinematic rhythm without changing content */
.site-section{position:relative;overflow:hidden}
.site-section:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 12% 20%,rgba(0,0,0,.025),transparent 30%),radial-gradient(circle at 88% 75%,rgba(0,0,0,.035),transparent 28%);opacity:0;transition:opacity 1.4s ease}
.site-section.cs-visible:before{opacity:1}
/* generic reveal */
.cs-reveal{opacity:0;transform:translate3d(0,34px,0);filter:none;transition:opacity .68s var(--cs-ease),transform .72s var(--cs-ease)}
.cs-reveal.cs-visible{opacity:1;transform:translate3d(0,0,0)}
.cs-reveal.cs-delay-1{transition-delay:.08s}.cs-reveal.cs-delay-2{transition-delay:.16s}.cs-reveal.cs-delay-3{transition-delay:.24s}.cs-reveal.cs-delay-4{transition-delay:.32s}
/* image/video surfaces */
img,.block-37 .image,.half-sm .image{transition:transform 1.25s var(--cs-ease),filter 1.25s var(--cs-ease)}
.cs-media{overflow:hidden;position:relative}
.cs-media img,.cs-media video{transition:transform 1.4s var(--cs-ease),filter 1.2s var(--cs-ease)}
.cs-media:hover img,.cs-media:hover video{transform:scale(1.045);filter:saturate(1.04)}
/* premium image hover across existing site */
.block-37,.img-fluid,.image{will-change:transform}
.block-37:hover .image{transform:scale(1.035)!important}
/* carousel becomes immersive */
.home-slider,.slide-one-item{position:relative}
.slide-one-item .owl-item.active .site-blocks-cover{animation:csSlideScale 1.6s var(--cs-ease) both}
@keyframes csSlideScale{from{opacity:.55}.to{opacity:1}}
.slide-one-item .owl-nav{opacity:0;transition:opacity .5s ease}
.slide-one-item:hover .owl-nav{opacity:1}
.slide-one-item .owl-prev,.slide-one-item .owl-next{width:58px;height:58px;border-radius:50%!important;border:1px solid rgba(255,255,255,.45)!important;background:rgba(0,0,0,.12)!important;backdrop-filter:blur(12px);transition:transform .45s var(--cs-ease),background .45s ease}
.slide-one-item .owl-prev:hover,.slide-one-item .owl-next:hover{transform:scale(1.08);background:rgba(255,255,255,.16)!important}
/* floating scroll cue */
.cs-scroll-cue{position:absolute;left:50%;bottom:34px;transform:translateX(-50%);z-index:6;color:#fff;font-size:10px;letter-spacing:.32em;text-transform:uppercase;display:flex;flex-direction:column;align-items:center;gap:12px;opacity:.75;pointer-events:none}
.cs-scroll-cue i{display:block;width:1px;height:46px;background:linear-gradient(to bottom,rgba(255,255,255,.9),transparent);animation:csScroll 1.8s ease-in-out infinite}
@keyframes csScroll{50%{transform:scaleY(.45);transform-origin:top;opacity:.3}}
/* subtle animated grain */
body:after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:0;background:none}
@keyframes csGrain{0%{transform:translate(0,0)}25%{transform:translate(1%,-1%)}50%{transform:translate(-1%,1%)}75%{transform:translate(1%,1%)}100%{transform:translate(-1%,-1%)}}
/* cards become floating compositions, not template boxes */
.card,.service,.feature,.block-20,.block-32,.block-39{transition:transform .7s var(--cs-ease),box-shadow .7s var(--cs-ease)}
.card:hover,.service:hover,.feature:hover,.block-20:hover,.block-32:hover,.block-39:hover{transform:translateY(-7px);box-shadow:0 25px 70px rgba(0,0,0,.10)}
/* page footer reveal */
footer{position:relative;overflow:hidden}
footer:before{content:"";position:absolute;left:50%;top:0;width:70vw;height:1px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(0,0,0,.18),transparent)}
/* magnetic cursor on desktop */
.cs-cursor{position:fixed;left:0;top:0;width:18px;height:18px;border:1px solid rgba(0,0,0,.45);border-radius:50%;pointer-events:none;z-index:100001;transform:translate(-50%,-50%);transition:width .35s var(--cs-ease),height .35s var(--cs-ease),background .35s ease,border-color .35s ease;mix-blend-mode:difference}
.cs-cursor.cs-active{width:54px;height:54px;background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.65)}
@media(max-width:991px){.site-blocks-cover,.slide-one-item .site-blocks-cover{min-height:78svh!important;height:78svh!important}.cs-cursor{display:none}.site-blocks-cover h1{font-size:clamp(34px,8vw,58px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}.cs-page-wash{display:none}body:not(.cs-ready){opacity:1}}


/* Ultra-smooth navigation: compositor-only, no blur/scale/long blocking */
html{scroll-behavior:auto}
body.cs-leaving{overflow:hidden}
body.cs-leaving .site-navbar-wrap,
body.cs-leaving .site-wrap{will-change:opacity}
body.cs-leaving .site-navbar-wrap{transition:opacity .10s linear!important;opacity:.99}
.cs-page-wash.cs-transition-out{visibility:visible!important;opacity:.08!important;transition:opacity .10s linear!important}
@media (prefers-reduced-motion:reduce){body.cs-leaving .site-wrap,body.cs-leaving .site-navbar-wrap{transition:none!important}.cs-page-wash.cs-transition-out{opacity:0!important}}
