/* 华善社官网轻特效：正式、克制、公益机构风格 */
:root{
  --fx-red:#9d1511;
  --fx-red-dark:#421a14;
  --fx-gold:#c59855;
  --fx-ink:#2b1713;
  --fx-paper:#fffdf8;
}
html{scroll-behavior:smooth}
body{background-attachment:fixed;animation:fxPageIn .45s ease both}
body.fx-page-ready{opacity:1}
@keyframes fxPageIn{from{opacity:.82;filter:saturate(.96)}to{opacity:1;filter:none}}
.fx-scroll-progress{position:fixed;left:0;top:0;width:0;height:3px;z-index:9999;background:linear-gradient(90deg,var(--fx-red),var(--fx-gold));box-shadow:0 0 12px rgba(157,21,17,.25);transition:width .08s linear}
.site-header{transition:box-shadow .25s ease, background .25s ease, transform .25s ease}
.site-header.fx-scrolled{box-shadow:0 12px 36px rgba(65,24,18,.10);background:rgba(255,253,248,.96);backdrop-filter:saturate(140%) blur(10px)}
.nav a{position:relative;overflow:hidden}
.nav a:after{content:"";position:absolute;left:14px;right:14px;bottom:7px;height:2px;background:linear-gradient(90deg,var(--fx-red),var(--fx-gold));transform:scaleX(0);transform-origin:left;transition:transform .24s ease;border-radius:2px}
.nav a:hover:after,.nav a.active:after{transform:scaleX(1)}
.btn,.header-cta,.read-more,.text-link,.flat-team-anchors a{position:relative;overflow:hidden;isolation:isolate}
.btn:before,.header-cta:before{content:"";position:absolute;inset:-80% -30%;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.35) 48%,transparent 66%);transform:translateX(-120%);transition:transform .72s ease;z-index:-1}
.btn:hover:before,.header-cta:hover:before{transform:translateX(120%)}
.fx-ripple{position:absolute;border-radius:999px;transform:translate(-50%,-50%) scale(0);background:rgba(255,255,255,.38);pointer-events:none;animation:fxRipple .62s ease-out forwards;z-index:1}
@keyframes fxRipple{to{transform:translate(-50%,-50%) scale(1);opacity:0}}
.home-new-hero,.page-hero,.flat-team-hero,.person-detail-hero{position:relative;overflow:hidden}
.home-new-hero:after,.page-hero:after,.flat-team-hero:after,.person-detail-hero:after{content:"";position:absolute;right:-90px;top:-110px;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(197,152,85,.20),rgba(157,21,17,.08) 42%,transparent 70%);filter:blur(2px);animation:fxBreath 8s ease-in-out infinite;pointer-events:none}
@keyframes fxBreath{0%,100%{transform:scale(1);opacity:.75}50%{transform:scale(1.13);opacity:1}}
.fx-hero-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.62;mix-blend-mode:multiply;z-index:0}.home-new-hero>.container,.home-new-hero .hero-bg-mark,.page-hero>.container,.flat-team-hero>.container,.person-detail-hero>.container{position:relative;z-index:1}
.home-system-panel{transform-style:preserve-3d;transition:transform .25s ease, box-shadow .25s ease}.home-system-panel:hover{box-shadow:0 28px 78px rgba(95,45,23,.13)}
.home-system-map em{animation:fxFloat 4.8s ease-in-out infinite}.home-system-map em:nth-of-type(2){animation-delay:.4s}.home-system-map em:nth-of-type(3){animation-delay:.8s}.home-system-map em:nth-of-type(4){animation-delay:1.2s}.home-system-map em:nth-of-type(5){animation-delay:1.6s}.home-system-map em:nth-of-type(6){animation-delay:2s}.system-center{animation:fxPulseRing 4.2s ease-in-out infinite}
@keyframes fxFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes fxPulseRing{0%,100%{box-shadow:0 0 0 0 rgba(157,21,17,.18),0 16px 40px rgba(95,45,23,.12)}50%{box-shadow:0 0 0 12px rgba(157,21,17,0),0 18px 45px rgba(95,45,23,.15)}}
.fx-reveal{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.22,.72,.22,1),transform .7s cubic-bezier(.22,.72,.22,1);transition-delay:var(--fx-delay,0ms)}
.fx-reveal.in-view{opacity:1;transform:translateY(0)}
.fx-reveal-left{opacity:0;transform:translateX(-28px);transition:opacity .72s ease,transform .72s ease;transition-delay:var(--fx-delay,0ms)}
.fx-reveal-right{opacity:0;transform:translateX(28px);transition:opacity .72s ease,transform .72s ease;transition-delay:var(--fx-delay,0ms)}
.fx-reveal-left.in-view,.fx-reveal-right.in-view{opacity:1;transform:translateX(0)}
.home-project-card,.home-news-card,.news-list-card,.flat-person-card,.flat-layer-tile,.governance-card,.dashboard-stats div,.process-ribbon div,.person-article-card,.person-side-card,.card,.big-stat{will-change:transform;transition:transform .26s ease, box-shadow .26s ease, border-color .26s ease}
.home-project-card:hover,.home-news-card:hover,.news-list-card:hover,.flat-person-card:hover,.flat-layer-tile:hover,.governance-card:hover,.dashboard-stats div:hover,.process-ribbon div:hover,.person-article-card:hover,.person-side-card:hover,.card:hover,.big-stat:hover{box-shadow:0 24px 72px rgba(65,24,18,.13);border-color:rgba(157,21,17,.22)}
.fx-tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--ty,0));}
.home-project-card:before,.flat-person-photo:after,.home-news-card:before,.news-list-card:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.24),transparent 36%);opacity:0;transition:opacity .25s ease;pointer-events:none}.home-project-card:hover:before,.flat-person-card:hover .flat-person-photo:after,.home-news-card:hover:before,.news-list-card:hover:before{opacity:1}.home-news-card,.news-list-card{position:relative}.home-news-card img,.news-list-card img,.flat-person-photo img,.home-team-slide img{transition:transform .42s ease, filter .42s ease}.home-news-card:hover img,.news-list-card:hover img,.flat-person-card:hover .flat-person-photo img,.home-team-slide:hover img{transform:scale(1.045);filter:saturate(1.04) contrast(1.02)}
.process-ribbon div{position:relative}.process-ribbon div:before{content:"";position:absolute;left:30px;right:30px;top:0;height:3px;background:linear-gradient(90deg,var(--fx-red),var(--fx-gold));transform:scaleX(0);transform-origin:left;transition:transform .28s ease}.process-ribbon div:hover:before{transform:scaleX(1)}
.dashboard-stats b{letter-spacing:-.02em;text-shadow:0 8px 22px rgba(157,21,17,.09)}
.home-team-track{will-change:transform}.home-team-carousel{mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.home-team-slide{position:relative}.home-team-slide:after{content:"";position:absolute;left:18px;right:18px;bottom:0;height:3px;background:linear-gradient(90deg,var(--fx-red),var(--fx-gold));transform:scaleX(0);transform-origin:left;transition:transform .28s ease}.home-team-slide:hover:after{transform:scaleX(1)}
.footer-official{position:relative;overflow:hidden}.footer-official:before{content:"";position:absolute;right:-120px;bottom:-160px;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle,rgba(197,152,85,.13),transparent 68%);pointer-events:none}.footer-links a{transition:color .2s ease, transform .2s ease}.footer-links a:hover{transform:translateX(4px)}
.fx-backtop{position:fixed;right:24px;bottom:24px;width:46px;height:46px;border:0;border-radius:50%;background:linear-gradient(135deg,var(--fx-red),#7a120f);color:#fff;font-weight:900;box-shadow:0 16px 38px rgba(87,28,20,.25);cursor:pointer;opacity:0;transform:translateY(16px);pointer-events:none;transition:.25s ease;z-index:1000}.fx-backtop.show{opacity:1;transform:translateY(0);pointer-events:auto}.fx-backtop:hover{transform:translateY(-3px)}
@media(max-width:980px){.fx-hero-canvas{opacity:.35}.home-new-hero:after,.page-hero:after,.flat-team-hero:after,.person-detail-hero:after{width:220px;height:220px}.fx-backtop{right:16px;bottom:16px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.fx-reveal,.fx-reveal-left,.fx-reveal-right{opacity:1!important;transform:none!important}.fx-hero-canvas{display:none!important}}
