/* QilyLean Sitewide Stability Recovery V3｜2026-08-28
 * Emergency regression closure after contact-route rollout.
 * Scope: remove false document tail height and guarantee floating Dock visibility on interactive screens
 * without restoring the Dock during print/PDF rendering.
 * V3: final-load VI surface closure. All equivalent public Hero/header surfaces use one QilyLean deep-teal
 * blueprint background regardless of historical page-local gradients or translated-page rendering.
 */
html body{
  min-height:0!important;
  height:auto!important;
  margin-bottom:0!important;
  padding-bottom:0!important;
}
html body>main{
  flex:none!important;
  min-height:0!important;
  height:auto!important;
  margin-bottom:0!important;
  padding-bottom:0!important;
}
html body>:is(footer,.footer,.module-footer,.qtc-global-trust-footer){
  flex:none!important;
  min-height:0!important;
  margin-bottom:0!important;
}
html body::after{
  content:none!important;
  display:none!important;
}
html body>#floatDock.qily-float-dock,
html body>#floatDock.qily-floating-dock{
  position:fixed!important;
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
  z-index:2147482500!important;
}
html body>#floatDock[hidden]{display:flex!important}

/* Contact navigation: never show embedded third-party map/advertising surfaces. */
html body .contact-page-v3 .map-preview iframe{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  width:0!important;
  height:0!important;
}
html body .contact-page-v3 .map-preview{
  height:auto!important;
  min-height:0!important;
  padding:18px 20px!important;
  border-top:1px solid #cfe0dd!important;
  background:#f7fbfa!important;
}
html body .contact-page-v3 .map-preview .map-click{
  position:static!important;
  inset:auto!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:48px!important;
  padding:0!important;
  border:0!important;
  background:none!important;
  text-decoration:none!important;
}
html body .contact-page-v3 .map-preview .map-click span{
  min-height:46px!important;
  margin:0!important;
  padding:9px 18px!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  background:#0f4b5a!important;
}
html body .contact-page-v3 .qily-map-nav-panel{
  padding:18px 20px!important;
  border-top:1px solid #cfe0dd!important;
  background:#f7fbfa!important;
}
html body .contact-page-v3 .qily-map-nav-copy strong{
  display:block!important;
  color:#0f4b5a!important;
  -webkit-text-fill-color:#0f4b5a!important;
  font-size:18px!important;
  font-weight:950!important;
}
html body .contact-page-v3 .qily-map-nav-copy span{
  display:block!important;
  margin-top:5px!important;
  color:#607574!important;
  -webkit-text-fill-color:#607574!important;
  font-size:14px!important;
  line-height:1.55!important;
}
html body .contact-page-v3 .qily-map-nav-actions{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:9px!important;
  margin-top:14px!important;
}
html body .contact-page-v3 .qily-map-nav-action{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:46px!important;
  padding:9px 10px!important;
  border:1px solid #a9cbc7!important;
  border-radius:999px!important;
  color:#0f4b5a!important;
  -webkit-text-fill-color:#0f4b5a!important;
  background:#fff!important;
  font-size:15px!important;
  font-weight:950!important;
  line-height:1.25!important;
  text-align:center!important;
  text-decoration:none!important;
}
html body .contact-page-v3 .qily-map-nav-action.primary{
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  background:#0f4b5a!important;
  border-color:#0f4b5a!important;
}
html body .contact-page-v3 .qily-map-nav-action:hover,
html body .contact-page-v3 .qily-map-nav-action:focus-visible{
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  background:#178b94!important;
  border-color:#178b94!important;
  outline:3px solid rgba(202,161,95,.24)!important;
  outline-offset:2px!important;
}

/* Contact page visual recovery: lock dark-hero copy to high-contrast white/gold and keep header typography identical to the site standard. */
html body:has(.contact-page-v3) .contact-hero,
html body:has(.contact-page-v3) .contact-hero *{
  opacity:1!important;
  visibility:visible!important;
  filter:none!important;
  text-shadow:none!important;
}
html body:has(.contact-page-v3) .contact-hero .contact-kicker{
  color:#ffe39b!important;
  -webkit-text-fill-color:#ffe39b!important;
}
html body:has(.contact-page-v3) .contact-hero h1{
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
html body:has(.contact-page-v3) .contact-hero p{
  color:#f3fffc!important;
  -webkit-text-fill-color:#f3fffc!important;
  font-weight:650!important;
}
@media (min-width:1181px){
  html body:has(.contact-page-v3) header.qily-site-header :is(nav.site-nav,nav.qily-global-nav,nav.nav)>a[href],
  html body:has(.contact-page-v3) header.qily-global-header :is(nav.site-nav,nav.qily-global-nav,nav.nav)>a[href],
  html body:has(.contact-page-v3) header.qily-site-header :is(nav.site-nav,nav.qily-global-nav,nav.nav)>a[href][aria-current="page"],
  html body:has(.contact-page-v3) header.qily-global-header :is(nav.site-nav,nav.qily-global-nav,nav.nav)>a[href][aria-current="page"]{
    font-size:clamp(18px,1.12vw,20px)!important;
    line-height:1.2!important;
    font-weight:850!important;
  }
}

@media(max-width:620px){
  html body>#floatDock.qily-float-dock,
  html body>#floatDock.qily-floating-dock{
    right:max(8px,env(safe-area-inset-right))!important;
    bottom:max(8px,env(safe-area-inset-bottom))!important;
  }
  html body .contact-page-v3 .qily-map-nav-panel{padding:16px 14px!important}
  html body .contact-page-v3 .qily-map-nav-actions{gap:6px!important}
  html body .contact-page-v3 .qily-map-nav-action{min-height:44px!important;padding:8px 5px!important;font-size:14px!important}
}

/* QILY-VI-SURFACE-FINAL-GUARD:START
 * 最终加载层只负责“同类深色首屏同一底色”。
 * 基准采用全站多数页面现行工业工程蓝图：#073c47 → #0f4b5a → #178b94。
 * 页面局部 125deg、两段渐变、旧青绿色以及翻译状态均不得改变最终视觉输出。
 * 正文浅色模块、卡片、状态语义色、图片与布局不在本规则作用域。
 */
:root{
  --qily-final-vi-hero-base:#0f4b5a;
  --qily-final-vi-hero-bg:linear-gradient(118deg,rgba(7,60,71,.99),rgba(15,75,90,.97) 58%,rgba(23,139,148,.90));
  --qily-final-vi-hero-border:rgba(202,161,95,.48);
}
html:root body :is(
  .hero,.module-hero,.daily-hero,.document-hero,.project-hero,.projects-hero,
  .cooperation-hero,.capability-hero,.capabilities-hero,.experience-hero,
  .improvement-hero,.improvements-hero,.knowledge-hero,.trust-hero,.article-hero,
  .article-hub,.tool-hero,.contact-hero,.preview-head,
  [data-qily-hero-surface="dark"]
),
html:root body main>section[class$="-hero"],
html:root body main>section[class*="-hero "],
html:root body main>header[class$="-hero"],
html:root body main>header[class*="-hero "]{
  background-color:var(--qily-final-vi-hero-base)!important;
  background-image:var(--qily-final-vi-hero-bg)!important;
  border-bottom-color:var(--qily-final-vi-hero-border)!important;
  background-blend-mode:normal!important;
}
/* 保护深色首屏基本对比度；翻译只换文字，不改变 VI。 */
html:root body :is(
  .hero,.module-hero,.daily-hero,.document-hero,.project-hero,.projects-hero,
  .cooperation-hero,.capability-hero,.capabilities-hero,.experience-hero,
  .improvement-hero,.improvements-hero,.knowledge-hero,.trust-hero,.article-hero,
  .article-hub,.tool-hero,.contact-hero,.preview-head,
  [data-qily-hero-surface="dark"]
) :is(h1,h2,h3,.lead,.hero-lead,.module-lead){
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
html:root body :is(
  .hero,.module-hero,.daily-hero,.document-hero,.project-hero,.projects-hero,
  .cooperation-hero,.capability-hero,.capabilities-hero,.experience-hero,
  .improvement-hero,.improvements-hero,.knowledge-hero,.trust-hero,.article-hero,
  .article-hub,.tool-hero,.contact-hero,.preview-head,
  [data-qily-hero-surface="dark"]
) :is(.eyebrow,.module-eyebrow,.kicker,.section-kicker,.contact-kicker,small,.meta,.fine){
  color:#ffe39b!important;
  -webkit-text-fill-color:#ffe39b!important;
}
/* QILY-VI-SURFACE-FINAL-GUARD:END */

/* QILY-REDLINE-CLOSURE-20260828:START */
/* Screenshot redline closure: one final authority for contrast, width and six-button Dock visuals. */
:root{--qily-redline-axis:1560px;--qily-redline-gutter:40px;--qily-redline-dock-bg:#0f4b5a;--qily-redline-dock-border:#caa15f;--qily-redline-dock-text:#ffe39b}

/* GB/T 2828 and equivalent dark preview headers: filename/meta copy must never fall back to muted dark ink. */
html:root body .preview-head .file-meta,
html:root body .preview-head [class*="file-meta"],
html:root body .preview-head>p:not(.eyebrow):not(.kicker):not(.meta):not(.fine){
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  opacity:1!important;
  text-shadow:none!important;
}

/* OPL is a public knowledge asset and must use the same 1560px desktop content axis as the main site. */
html:root body .opl-shell{
  width:min(var(--qily-redline-axis),calc(100% - (var(--qily-redline-gutter) * 2)))!important;
  max-width:var(--qily-redline-axis)!important;
  min-width:0!important;
  margin-left:auto!important;
  margin-right:auto!important;
  box-sizing:border-box!important;
}

/* Every Dock action uses one shared visual template. Share/contact may not introduce separate fills. */
html:root body #floatDock.qily-float-dock .qily-float-btn,
html:root body #floatDock.qily-floating-dock .qily-float-btn,
html:root body #floatDock :is(a,button).qily-float-btn{
  color:var(--qily-redline-dock-text)!important;
  -webkit-text-fill-color:var(--qily-redline-dock-text)!important;
  background:var(--qily-redline-dock-bg)!important;
  background-color:var(--qily-redline-dock-bg)!important;
  background-image:none!important;
  border-color:var(--qily-redline-dock-border)!important;
  box-shadow:0 8px 20px rgba(7,60,71,.22)!important;
  opacity:1!important;
  filter:none!important;
  mix-blend-mode:normal!important;
}
html:root body #floatDock .qily-float-btn *,
html:root body #floatDock .qily-float-btn:is(:link,:visited,:hover,:focus-visible,:active){
  color:var(--qily-redline-dock-text)!important;
  -webkit-text-fill-color:var(--qily-redline-dock-text)!important;
}
html:root body #floatDock .qily-float-btn:is(:hover,:focus-visible){
  background:#12606f!important;
  background-color:#12606f!important;
  background-image:none!important;
  border-color:#ffe39b!important;
}
@media(max-width:900px){
  :root{--qily-redline-gutter:15px}
  html:root body .opl-shell{width:calc(100% - 30px)!important;max-width:100%!important}
}
/* QILY-REDLINE-CLOSURE-20260828:END */

/* Print/PDF is non-interactive. This rule MUST remain last so the screen stability recovery above cannot resurrect the Dock. */
@media print{
  html body>#floatDock,
  html body>#floatDock.qily-float-dock,
  html body>#floatDock.qily-floating-dock,
  html body>#floatDock[hidden],
  html body .qily-floating-dock,
  html body .qily-float-dock{
    display:none!important;
    visibility:hidden!important;
    opacity:0!important;
    pointer-events:none!important;
  }
}
