@charset "UTF-8";
/* YuanFeng V52.83 generated CSS bundle; source modules retained. */

/* ---- source: assets/css/footer-privacy-v52.56.css ---- */
/* YuanFeng V52.56 — footer privacy link + bilingual label. */
.yf-privacy-label-en{display:none;}
html[data-language="en"] .yf-privacy-label-zh{display:none;}
html[data-language="en"] .yf-privacy-label-en{display:inline;}
.bottomMenu .bottomDiv .bottomLinks .infoDiv .infoList .yf-footer-privacy a{
  color:inherit;text-decoration:none;border-bottom:1px solid rgba(17,17,17,.28);padding-bottom:1px;
}
@media (hover:hover) and (pointer:fine){
  .bottomMenu .bottomDiv .bottomLinks .infoDiv .infoList .yf-footer-privacy a:hover{opacity:.58;}
}
@media (max-width:650px){
  .bottomMenu .bottomDiv .bottomLinks .infoDiv .infoList{flex-wrap:wrap!important;row-gap:10px!important;}
  .bottomMenu .bottomDiv .bottomLinks .infoDiv .infoList .yf-footer-privacy{
    flex:0 0 100%!important;width:100%!important;text-align:center!important;margin-top:2px!important;
  }
}

/* ---- source: assets/css/nav-handoff-stability-v52.62.css ---- */
/* V52.62 — first-paint navigation stability during document hand-off.
   Non-home pages already settle to the solid navigation theme in main.js; prime that exact
   final state in CSS so the newly parsed document never paints the legacy red/transparent
   default for ~1 frame before main.js runs. This removes the brief header flash without
   changing the home hero navigation or any page/title motion. */
.topMenu.scrollA{
  background:#fff!important;
}
.topMenu.scrollA .mLinks .mLinksDiv>div{
  display:flex!important;
}
.topMenu.scrollA .mLogo div ul>li{
  display:block!important;
}
.topMenu.scrollA .mLogo div ul>p{
  display:none!important;
}
.topMenu.scrollA .mLogo div ul>li img,
.topMenu.scrollA .topMenuDiv .mBtn div ul img{
  filter:brightness(0)!important;
  -webkit-filter:brightness(0)!important;
}
.topMenu.scrollA .topMenuDiv .mBtn div ul p,
.topMenu.scrollA .topMenuDiv .mBtn div ul li{
  color:#000!important;
}

/* During the hand-off, navigation chrome does not run any independent CSS tween. */
html.yf-vt-lock .topMenu,
html.yf-vt-lock .subMenu,
html.yf-v520-fallback-running .topMenu,
html.yf-v520-fallback-running .subMenu,
html.yf-v520-fallback-arrival .topMenu,
html.yf-v520-fallback-arrival .subMenu{
  transition:none!important;
  -webkit-transition:none!important;
  animation:none!important;
  will-change:auto!important;
}

/* ---- source: assets/css/service-support-nav-v52.106.css ---- */
/* V52.106: Service & Support uses the site's fixed sub-navigation,
   not the previous hover dropdown. The same tabs remain visible on both support pages. */
.yf-service-subnav .yf-support-tabs .swiper-wrapper{align-items:stretch}
.yf-service-subnav .yf-support-tabs a:focus-visible{outline:2px solid #c81431;outline-offset:2px}
.yf-service-subnav .yf-support-tabs a[aria-current="page"]{color:#000}
.yf-service-subnav .yf-support-tabs a[aria-current="page"] p span{background-color:#000}

/* The first two project cards use picture/img markup while the remaining cards use backgrounds.
   Make their red hover veil an absolute, pointer-transparent overlay so it cannot lose hover
   state or collapse when the responsive picture is decoded. */
.homeLatest .homeLatestDiv .toolItem>div{
  overflow:hidden;
}
.homeLatest .homeLatestDiv .toolItem>div>li{
  position:absolute!important;
  inset:0!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  margin:0!important;
  padding:0!important;
  list-style:none!important;
  background:rgba(200,20,49,.6)!important;
  opacity:0;
  pointer-events:none!important;
  z-index:2;
  transition:opacity .3s ease!important;
}
.homeLatest .homeLatestDiv .toolItem:hover>div>li,
.homeLatest .homeLatestDiv .toolItem:focus-within>div>li{
  opacity:1!important;
}
.homeLatest .homeLatestDiv .toolItem>.yf-responsive-case-art picture,
.homeLatest .homeLatestDiv .toolItem>.yf-responsive-case-art picture>img{
  pointer-events:none;
}
@media(prefers-reduced-motion:reduce){
  .homeLatest .homeLatestDiv .toolItem>div>li{transition:none!important}
}
