/* 凌近官网动效规范（“中”档）：进入、跨页、滚动揭示、按钮、导航、问答。
   全部在 prefers-reduced-motion: no-preference 下生效；用户关闭动画时零动效。
   时长边界：跨页淡出不超过 200ms；不做视差与大面积动画。 */
@media (prefers-reduced-motion: no-preference) {
  @keyframes m-up { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
  @keyframes m-fade { from { opacity: 0; } to { opacity: 1; } }

  /* 跨页切换：浏览器原生 View Transition，新旧页面交叉淡化，无空白帧；
     导航栏单独成组，切换时保持不动。不支持的浏览器直接切换。 */
  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) {
    animation-duration: .32s; animation-timing-function: cubic-bezier(.2,.7,.2,1);
  }
  .nav { view-transition-name: site-nav; }
  ::view-transition-old(site-nav), ::view-transition-new(site-nav) { animation-duration: .01s; }

  /* 首屏分层进入 */
  .hero-inner > * { animation: m-up .55s cubic-bezier(.2,.7,.2,1) both; }
  .hero-inner > :nth-child(2) { animation-delay: .08s; }
  .hero-inner > :nth-child(3) { animation-delay: .16s; }
  .hero-inner > :nth-child(4) { animation-delay: .24s; }
  .hero-inner > :nth-child(5) { animation-delay: .32s; }

  /* 滚动揭示：候选元素在 JS 就绪后先隐藏，进入视口时上浮显示，只播一次 */
  html.m-js :is(.grid > .card, .block, .cta-strip, .chat, .qa-card, .form-wrap > *, .sec-head, .ai-note, .kb-note, .filters, .dochead, .docbody) {
    opacity: 0; transform: translateY(18px);
    transition: opacity .5s cubic-bezier(.2,.7,.2,1), transform .5s cubic-bezier(.2,.7,.2,1);
  }
  html.m-js :is(.grid > .card, .block, .cta-strip, .chat, .qa-card, .form-wrap > *, .sec-head, .ai-note, .kb-note, .filters, .dochead, .docbody).in {
    opacity: 1; transform: none;
  }

  /* 按钮：悬停上浮，按下回弹 */
  .btn { transition: background .18s, transform .18s cubic-bezier(.2,.7,.2,1), box-shadow .18s, border-color .18s, color .18s; }
  .btn:active:not(:disabled) { transform: scale(.98); transition-duration: .12s; }
  .card { transition: transform .32s cubic-bezier(.2,.7,.2,1), box-shadow .32s, border-color .22s, opacity .5s cubic-bezier(.2,.7,.2,1); }

  /* 导航当前项下划线从左滑出 */
  .nav-links a { position: relative; border-bottom-color: transparent !important; }
  .nav-links a::after { content: ""; position: absolute; left: 2px; right: 2px; bottom: -2px; height: 2px; background: var(--rose, #c48385); transform: scaleX(0); transform-origin: left; transition: transform .25s cubic-bezier(.2,.7,.2,1); }
  .nav-links a:hover::after, .nav-links a.active::after { transform: scaleX(1); }

  /* 问答：消息气泡与依据卡片依次进入 */
  .chat-body .msg { animation: m-up .24s ease-out both; }
  .citation-list .citation-card { animation: m-up .3s ease-out both; }
  .citation-list .citation-card:nth-child(2) { animation-delay: .06s; }
  .citation-list .citation-card:nth-child(3) { animation-delay: .12s; }
  .citation-list .citation-card:nth-child(4) { animation-delay: .18s; }
  .citation-list .citation-card:nth-child(5) { animation-delay: .24s; }
  .citation-list .citation-card:nth-child(n+6) { animation-delay: .3s; }

  /* 知识库文献行 */
  .doclist .doc { animation: m-up .28s ease-out both; }
}

/* ======================================================================
   悬停与焦点反馈：凡可点击之处都有回应。静态样式放在动画偏好之外（关闭动画也有
   反馈，只是不过渡），过渡时长统一 .18s，曲线 cubic-bezier(.2,.7,.2,1)。
   ====================================================================== */

/* 文字链接：渐变下划线从左画出（页脚、正文、返回链接、卡片“了解详情”） */
.foot-links a, .prose a, .topbar a, .alink, .handoff a, .auth-alt a, .check a {
  background-image: linear-gradient(115deg, #22485b 0%, #736570 48%, #e28e8d 100%);
  background-repeat: no-repeat; background-size: 0 2px; background-position: 0 100%;
  padding-bottom: 2px; border-bottom: 0 !important;
}
.foot-links a:hover, .prose a:hover, .topbar a:hover, .alink:hover, .handoff a:hover, .auth-alt a:hover, .check a:hover {
  background-size: 100% 2px; color: var(--steel, #22485b);
}
.topbar a:hover { transform: translateX(-3px); }
.alink:hover::after { transform: translateX(6px); }

/* 品牌：悬停微微上浮 */
.brand:hover img { transform: translateY(-1px) rotate(-3deg); }
.brand:hover b { color: var(--steel, #22485b); }

/* 卡片：整卡上浮、顶部渐变条点亮、角标字放大一点 */
.card:hover { transform: translateY(-5px); box-shadow: 0 20px 44px rgba(19,32,44,.12); border-color: #d3dde5; }
.card:hover::before { opacity: 1; }
.card:hover::after { opacity: .09; transform: translate(-4px, -4px); }

/* 按钮家族：悬停上浮加阴影，按下回弹（覆盖各页内联样式的差异，统一手感） */
.btn:hover:not(:disabled) { transform: translateY(-1px); }
.btn-primary:hover:not(:disabled) { box-shadow: 0 8px 20px rgba(19,32,44,.25); }
.btn-ghost:hover:not(:disabled) { border-color: var(--steel, #22485b); color: var(--steel, #22485b); box-shadow: 0 6px 16px rgba(19,32,44,.08); }
.btn-ondark:hover:not(:disabled) { box-shadow: 0 10px 24px rgba(0,0,0,.28); }
.btn-ondark-ghost:hover:not(:disabled) { background: rgba(255,255,255,.08); }
.tool-btn:hover:not(:disabled), .chip:hover:not(:disabled), .tag:hover, .act:hover:not(:disabled) { transform: translateY(-1px); }
.tool-btn:active:not(:disabled), .chip:active:not(:disabled), .tag:active, .act:active:not(:disabled), .fb-btn:active:not(:disabled), .to-human:active { transform: scale(.97); }
.chip:hover:not(:disabled) { box-shadow: 0 4px 12px rgba(19,32,44,.08); background: var(--paper2, #f6f8fa); }
.tag:hover { background: rgba(255,255,255,.08); }
.to-human:hover { letter-spacing: .02em; }
.menu-toggle:hover span { background: var(--steel, #22485b); }
.menu-toggle:hover span:nth-child(1) { transform: translateX(2px); }
.menu-toggle:hover span:nth-child(3) { transform: translateX(-2px); }

/* 列表行：知识库文献、依据卡片、发布行——左侧渐变竖条滑入，整行右移 2px */
.doc, .citation-card { position: relative; }
.doc::before, .citation-card::before {
  content: ""; position: absolute; left: 0; top: 10px; bottom: 10px; width: 3px; border-radius: 99px;
  background: linear-gradient(180deg, #22485b, #e28e8d); opacity: 0; transform: scaleY(.4);
}
.doc:hover, .citation-card:hover:not(:disabled) { transform: translateX(2px); border-color: var(--steel, #22485b); box-shadow: 0 8px 22px rgba(19,32,44,.10); }
.doc:hover::before, .citation-card:hover:not(:disabled)::before { opacity: 1; transform: none; }
.claim-cite-link:hover { background: var(--paper2, #f6f8fa); transform: translateY(-1px); }
.fb-btn:hover:not(:disabled) { transform: translateY(-1px); background: var(--paper2, #f6f8fa); }

/* 表单：输入框悬停微亮，聚焦光环；身份分段按钮与勾选框有悬停 */
.input:hover, textarea:hover, select:hover, .qfield select:hover, .filters select:hover, .chat-foot input:hover:not(:disabled), .kb-search .input:hover { border-color: #b9c8d3; }
.input:focus, textarea:focus, .chat-foot input:focus { box-shadow: 0 0 0 4px rgba(34,72,91,.12); }
.seg label:hover { border-color: var(--steel, #22485b); color: var(--steel, #22485b); transform: translateY(-1px); }
.seg input:checked + label:hover { color: #fff; }
.check:hover input { transform: scale(1.1); }
.check label { cursor: pointer; }

/* 页脚标题：悬停时渐变流动一下 */
.foot-title { background-size: 200% 100%; cursor: default; }
.foot-title:hover { background-position: 100% 0; }

/* 光标 */
a[href], button:not(:disabled), .tag, .chip, .seg label, .clip, summary { cursor: pointer; }
button:disabled { cursor: not-allowed; }

@media (prefers-reduced-motion: no-preference) {
  .foot-links a, .prose a, .topbar a, .alink, .handoff a, .auth-alt a, .check a { transition: background-size .28s cubic-bezier(.2,.7,.2,1), color .18s, transform .18s cubic-bezier(.2,.7,.2,1); }
  .brand img, .brand b { transition: transform .22s cubic-bezier(.2,.7,.2,1), color .18s; }
  .card::after { transition: opacity .3s, transform .3s cubic-bezier(.2,.7,.2,1); }
  .tool-btn, .chip, .tag, .act, .fb-btn, .to-human, .claim-cite-link, .seg label, .check input, .menu-toggle span {
    transition: transform .18s cubic-bezier(.2,.7,.2,1), background .18s, border-color .18s, color .18s, box-shadow .18s, letter-spacing .18s;
  }
  .doc, .citation-card { transition: transform .22s cubic-bezier(.2,.7,.2,1), border-color .18s, box-shadow .22s, opacity .28s; }
  .doc::before, .citation-card::before { transition: opacity .2s, transform .22s cubic-bezier(.2,.7,.2,1); }
  .input, textarea, select, .chat-foot input, .kb-search .input { transition: border-color .18s, box-shadow .18s; }
  .foot-title { transition: background-position .6s cubic-bezier(.2,.7,.2,1); }
}

/* ======================================================================
   环境动效（ambient.js 启用时才有 html.m-ambient）：光标环、拖尾画布、磁吸、追光、进度线、航点。
   ====================================================================== */
html.m-ambient .m-cursor{position:fixed;left:0;top:0;width:28px;height:28px;margin:-14px 0 0 -14px;border-radius:50%;border:1.5px solid rgba(34,72,91,.55);
  pointer-events:none;z-index:9999;opacity:0;transform:translate(-100px,-100px);
  transition:width .22s cubic-bezier(.2,.7,.2,1),height .22s cubic-bezier(.2,.7,.2,1),margin .22s cubic-bezier(.2,.7,.2,1),border-color .2s,background .2s,opacity .3s;
  display:flex;align-items:center;justify-content:center;mix-blend-mode:multiply}
html.m-ambient .m-cursor.is-on{opacity:1}
html.m-ambient .m-cursor span{font:600 11px/1 var(--sans,sans-serif);color:#fff;letter-spacing:.06em;opacity:0;transition:opacity .2s;white-space:nowrap}
html.m-ambient .m-cursor.is-link{width:44px;height:44px;margin:-22px 0 0 -22px;border-color:transparent;background:linear-gradient(115deg,rgba(127,164,186,.35),rgba(242,167,162,.35))}
html.m-ambient .m-cursor.is-label{width:auto;height:30px;min-width:74px;margin:-15px 0 0 -37px;padding:0 12px;border-radius:999px;border-color:transparent;background:rgba(34,72,91,.92);mix-blend-mode:normal}
html.m-ambient .m-cursor.is-label span{opacity:1}
html.m-ambient .m-cursor.is-text{width:2px;height:26px;margin:-13px 0 0 -1px;border-radius:2px;border:0;background:var(--rose-d,#a9666c)}
html.m-ambient .m-cursor.is-down{transform-origin:center}
html.m-ambient .m-cursor.is-down.is-link{background:linear-gradient(115deg,rgba(127,164,186,.6),rgba(242,167,162,.6))}
html.m-ambient .m-trail{position:fixed;inset:0;pointer-events:none;z-index:9998}

/* 磁吸：与悬停上浮叠加 */
html.m-ambient .m-mag{transform:translate(var(--mag-x,0),calc(var(--mag-y,0) - 1px)) !important}

/* 追光：内部一层随光标移动的柔光 */
html.m-ambient .m-lit{background-image:radial-gradient(260px circle at var(--lx,50%) var(--ly,50%),rgba(127,164,186,.14),transparent 62%)}
html.m-ambient .chat.m-lit{background-image:radial-gradient(320px circle at var(--lx,50%) var(--ly,50%),rgba(127,164,186,.10),transparent 60%)}
html.m-ambient .doc.m-lit{background-image:radial-gradient(220px circle at var(--lx,50%) var(--ly,50%),rgba(127,164,186,.12),transparent 62%)}

/* 阅读进度线：贴在导航栏下沿 */
html.m-ambient .m-progress{position:fixed;left:0;top:66px;width:100%;height:2px;z-index:60;pointer-events:none}
html.m-ambient .m-progress::before{content:"";position:absolute;left:0;top:0;height:100%;width:var(--p,0%);background:var(--grad,linear-gradient(90deg,#22485b,#e28e8d));transition:width .12s linear}
html.m-ambient .m-progress i{position:absolute;top:-3px;left:var(--p,0%);width:8px;height:8px;margin-left:-4px;border-radius:50%;background:#e28e8d;box-shadow:0 0 0 3px rgba(226,142,141,.18);opacity:0;transition:opacity .3s,left .12s linear}
html.m-ambient .m-progress.at-end i{opacity:1}

/* 航点点亮：分节标记进入视口时涟漪一圈 */
.sec-head.in .wp i{animation:wp-ripple 1.1s .2s cubic-bezier(.2,.7,.2,1) both}
@keyframes wp-ripple{0%{box-shadow:0 0 0 5px rgba(196,131,133,.14)}40%{box-shadow:0 0 0 14px rgba(196,131,133,.10)}100%{box-shadow:0 0 0 5px rgba(196,131,133,.14)}}
