/* ==========================================================================
   YonGPT 产品页（YonBIP/product/YonGPT）页面级样式
   - 修复首屏 banner 悬停时滚轮无法滚动整页的问题
   - 适配官网统一头部、底部（由服务端注入到 body 首尾）留下的布局空间
   构建产物样式仍由 assets/ 下的 index-*.css 提供，此处只做页面级覆盖。
   ========================================================================== */

/* 修复：首屏 banner 悬停时滚轮无法滚动整页的问题
   原架构 html,body{overflow:hidden} + #app{overflow:hidden auto;height:100%}
   让 #app 成为固定高度的内部滚动容器。部分浏览器/触控板下，悬停首屏子元素时
   滚轮事件未能链式冒泡到该内部滚动容器，导致首屏“卡住”。
   改为由 document 原生滚动，保证任意区域滚轮都能驱动整页滚动；
   GSAP ScrollTrigger 的滚动基准已同步为 window（见 assets/GPT-5b6a496f.js 中 scroller:".page" 的移除）。 */
html,
body {
  height: auto !important;
  transform: none !important;
}

/* document 原生滚动：html 负责视口滚动（原 reset 是 overflow:hidden，必须覆盖，否则整页 wheel 失效）；
   body 必须保持 visible：改成 auto 会让 body 成为独立的滚动容器，
   官网 sticky 头部会以 body 为参照而失效（body 自身并不滚动），整页滚动时头部直接跟着走掉。
   vant 弹窗 lockScroll 时会给 body 加 .van-overflow-hidden，此时通过 :has() 锁定 viewport 滚动。 */
html {
  overflow: auto !important;
}

body:not(.van-overflow-hidden) {
  overflow: visible !important;
}

html:has(body.van-overflow-hidden) {
  overflow: hidden !important;
}

#app {
  height: auto !important;
  overflow: visible !important;
}

/* 真正根因：reset 规则 html *{overscroll-behavior:none} 及 html,body{overscroll-behavior:none}
   会让 banner 的 .swiper(overflow:hidden，属于滚动容器) 等元素在桌面端“吞掉”滚轮，
   且 overscroll-behavior:none 禁止向祖先链式传递，于是首屏滚轮无效、下方区域正常。
   恢复页面主体滚动链上各容器的 overscroll-behavior:auto，让滚轮正常链式传递到 document。 */
html,
body,
#app,
.page,
.page .swiper,
.page .swiper-wrapper,
.page section,
.page .section {
  overscroll-behavior: auto !important;
}

/* 官网头部/底部适配
   服务端为 /yonbip 路径注入的 #app 上下留白（padding-top:80px; margin-bottom:80px）
   是旧版页面（#app 内部滚动）所需；新版改为文档流滚动后，
   头部 sticky 占位、底部在文档流末尾，页面自身不再需要额外留白。 */
#app {
  padding-top: 0 !important;
  margin-bottom: 0 !important;
  /* 首屏 banner 顶到视口顶部，官网悬浮胶囊头部覆盖在 banner 之上
     （与站内 #root-ecology{margin-top:-65px} 的常规做法一致） */
  margin-top: -65px !important;
}

/* sticky 失效、头部切到 fixed 时 body 会有 100px 占位，此时不再上提，避免内容被头部遮挡 */
body.header-fixed-fallback #app {
  margin-top: 0 !important;
}

/* 移动端头部高度 53px（version26/header.css 的 850px 断点）
   移动端首屏文案是顶部对齐的，不再上提，避免被头部遮住 */
@media (max-width: 850px) {
  #app {
    margin-top: 0 !important;
  }
}

/* 官网底部位于文档流末尾，避免与页面最后的固定元素产生叠压 */
body > .footer {
  position: relative;
  z-index: 1;
}
