/* 1012 首页整页首次载入 · transitions.dev / Texts reveal。 */
:root {
  --stagger-dur: 500ms;
  --stagger-distance: 12px;
  --stagger-stagger: 40ms;
  --stagger-blur: 3px;
  --stagger-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --load-nav-dur: 250ms;
  --load-scene-dur: 400ms;
}

/* Lines start translated down + blurred + invisible; .is-shown
   on the parent flips them to their resting state. The second
   line's transition-delay holds it back by --stagger-stagger
   so the eye lands on the headline first. */
.t-stagger-line {
  display: block;
  opacity: 0;
  transform: translateY(var(--stagger-distance));
  filter: blur(var(--stagger-blur));
  transition:
    opacity   var(--stagger-dur) var(--stagger-ease),
    transform var(--stagger-dur) var(--stagger-ease),
    filter    var(--stagger-dur) var(--stagger-ease);
  will-change: transform, opacity, filter;
}
.t-stagger-line--2 { transition-delay: var(--stagger-stagger); }

.t-stagger.is-shown .t-stagger-line {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}
/* Exit decouples from the stagger: same fade for every line,
   no Y return, no blur — so the disappearance reads as a
   single quiet fade instead of a reverse reveal. */
.t-stagger.is-hiding .t-stagger-line {
  opacity: 0;
  transform: translateY(0);
  filter: blur(0);
  transition:
    opacity 200ms ease,
    transform 0s linear,
    filter 0s linear;
  transition-delay: 0s;
}

@media (prefers-reduced-motion: reduce) {
  .t-stagger-line { transition: none !important; }
}

/* 四拍节奏：标题首行 80 / 次行 160 / 说明 240 / 按钮 320ms。 */
.wy-load-copy { --stagger-stagger: 80ms; }
.wy-load-copy .t-stagger-line--1 { transition-delay: var(--stagger-stagger); }
.wy-load-copy .t-stagger-line--2 { transition-delay: calc(var(--stagger-stagger) * 2); }
.wy-load-copy .t-stagger-line--3 { transition-delay: calc(var(--stagger-stagger) * 3); }
.wy-load-copy .t-stagger-line--4 { transition-delay: calc(var(--stagger-stagger) * 4); }

/* 导航只淡入，固定导航的布局与定位照旧。 */
.wy-load-armed #nav .nav__inner {
  opacity: 0;
  transition: opacity var(--load-nav-dur) var(--stagger-ease);
}
.wy-load-armed.wy-load-shown #nav .nav__inner { opacity: 1; }
.wy-load-armed #top .hero__threads {
  opacity: 0;
  transition: opacity var(--load-scene-dur) var(--stagger-ease);
  transition-delay: calc(var(--stagger-stagger) * 6);
}
.wy-load-armed.wy-load-shown #top .hero__threads { opacity: .92; }

/* 页面首帧已占好最终空间；无 JS 或脚本失败仍直接呈现完整内容。 */
html:not(.wy-load-armed) .t-stagger-line,
.wy-load-settled .wy-load-copy .t-stagger-line {
  opacity: 1;
  transform: none;
  filter: none;
  will-change: auto;
}
html:not(.wy-load-armed) .t-stagger-line,
.wy-load-reset .t-stagger-line,
.wy-load-reset #nav .nav__inner,
.wy-load-reset #top .hero__threads { transition: none !important; }

/* 滚动、键盘或点击立即打断登场，避免内容与输入互相等待。 */
.wy-load-instant .wy-load-copy .t-stagger-line,
.wy-load-instant #nav .nav__inner,
.wy-load-instant #top .hero__threads { transition: none !important; }

@media (prefers-reduced-motion: reduce) {
  .wy-load-armed .t-stagger-line { opacity: 1; transform: none; filter: none; will-change: auto; }
  .wy-load-armed #nav .nav__inner { opacity: 1; transition: none !important; }
  .wy-load-armed #top .hero__threads { opacity: .92; transition: none !important; }
}

/* 首次进入视口的内容单元。保留原有 flex/grid/inline 布局；完成后移除
   t-stagger-line，归还元素原有 transition、transform 和 filter。 */
.wy-load-item.t-stagger-line {
  --stagger-dur: var(--load-scene-dur);
  --stagger-distance: var(--wy-s2, 8px);
  display: var(--load-display, block);
  filter: none;
  transition:
    opacity var(--stagger-dur) var(--stagger-ease),
    transform var(--stagger-dur) var(--stagger-ease);
  transition-delay: calc(var(--stagger-stagger) * var(--load-order, 0));
  will-change: transform, opacity;
}
.wy-load-item.t-stagger-line.is-shown {
  opacity: 1;
  transform: translateY(0);
  filter: none;
}
.wy-load-item.t-stagger-line.wy-load-item-instant { transition: none !important; }

/* 初帧保留最终布局，Logo 槽位与内容块仅做轻量位移和淡入。
   大面积卡片不参与模糊重绘；Hero 保留已审阅的文字登场。 */
@media (prefers-reduced-motion: no-preference) {
.wy-load-armed:not(.wy-load-ready) :is(
  #clientsRail,
  #clientsStaticWall .clients__static-grid > .clients__item,
  #solutions .sec-head, #solutions .sol__inner,
  #agents .sec-head, #agents .card, #agents .wy-agents-controls,
  #why .wtitle, #whyc .wc,
  #cases .fill-cases__head, #cases .fill-case,
  #cta .ctaE__grid > div,
  .wy-footer .footer__grid > *, .wy-footer .footer__bottom
) {
  opacity: 0;
  transform: translateY(var(--wy-s2, 8px));
  transition: none;
}
}
