/* ============================================
   AI 知识库 · 全站共享交互样式
   进度条 / 侧栏筛选 / 代码复制 / 灯箱 / 跳转面板
   ============================================ */
.topbar .right{display:flex;align-items:center;gap:12px}
.progress{position:fixed;top:60px;left:0;height:3px;width:0;z-index:101;
  background:linear-gradient(90deg,var(--accent),var(--accent-2))}
.side-filter{margin:0 12px 14px;position:relative}
.side-filter input{width:100%;padding:8px 30px 8px 12px;border:1px solid var(--border-2);border-radius:8px;
  font-size:13px;font-family:var(--font);background:#fff;color:var(--text);outline:none}
.side-filter input:focus{border-color:var(--accent)}
.side-filter .fk{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-family:var(--mono);
  font-size:10.5px;color:var(--text-3);border:1px solid var(--border-2);border-radius:5px;padding:0 5px;background:#fff}
pre{position:relative}
.copy-btn{position:absolute;top:10px;right:10px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);
  color:#cbd5e1;font-size:11.5px;font-family:var(--font);padding:4px 10px;border-radius:7px;cursor:pointer;
  opacity:0;transition:.15s}
pre:hover .copy-btn{opacity:1}
.copy-btn:hover{background:rgba(255,255,255,.16)}
.copy-btn.ok{color:#4ade80;border-color:rgba(74,222,128,.4)}
figure img{cursor:zoom-in}
.lightbox{position:fixed;inset:0;background:rgba(10,12,18,.92);z-index:200;display:none;
  align-items:center;justify-content:center;cursor:zoom-out;padding:30px}
.lightbox.on{display:flex}
.lightbox img{max-width:94%;max-height:92%;border-radius:10px;box-shadow:0 24px 80px rgba(0,0,0,.5)}
.palette{position:fixed;inset:0;background:rgba(10,12,18,.45);z-index:210;display:none;
  align-items:flex-start;justify-content:center;padding-top:12vh}
.palette.on{display:flex}
.palette .box{width:min(560px,92vw);background:#fff;border-radius:14px;box-shadow:0 30px 90px rgba(0,0,0,.3);overflow:hidden}
.palette input{width:100%;border:none;outline:none;padding:16px 20px;font-size:15px;font-family:var(--font);
  border-bottom:1px solid var(--border);color:var(--text);background:#fff}
.palette .list{max-height:46vh;overflow-y:auto;padding:8px}
.palette .it{display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:8px;cursor:pointer;
  font-size:13.5px;color:var(--text-2)}
.palette .it b{color:var(--text);font-weight:650}
.palette .it .g{font-size:11px;color:var(--text-3);margin-left:auto;white-space:nowrap;padding-left:12px}
.palette .it.sel{background:var(--accent-soft);color:var(--accent)}
.palette .it.sel b{color:var(--accent)}
.palette .hint{padding:8px 16px;font-size:11px;color:var(--text-3);border-top:1px solid var(--border);display:flex;gap:12px}
.palette .empty{padding:18px;text-align:center;font-size:13px;color:var(--text-3)}
.kbtn{display:flex;align-items:center;gap:6px;border:1px solid var(--border-2);background:#fff;color:var(--text-2);
  font-size:12px;font-family:var(--font);padding:5px 10px;border-radius:8px;cursor:pointer;transition:.15s}
.kbtn:hover{color:var(--accent);border-color:var(--accent)}
.kbtn span{font-family:var(--mono);font-size:10.5px;border:1px solid var(--border-2);border-radius:4px;padding:0 4px;color:var(--text-3)}

/* ===== 分页模式 ===== */
.page-hidden{display:none!important}
.wrap .divider{display:none}
@keyframes pgIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.pg-anim{animation:pgIn .28s ease both}
.pager{display:flex;gap:14px;margin:48px 0 0}
.pager a{flex:1;border:1px solid var(--border);border-radius:12px;padding:14px 18px;cursor:pointer;
  text-decoration:none;background:#fff;transition:.15s;display:block;max-width:50%}
.pager a:hover{border-color:var(--accent);box-shadow:0 6px 20px rgba(15,23,42,.06)}
.pager a span{display:block;font-size:11.5px;color:var(--text-3);margin-bottom:3px}
.pager a b{font-size:14px;color:var(--text);font-weight:650}
.pager a:hover b{color:var(--accent)}
.pager .nx{text-align:right;margin-left:auto}

/* ===== 移动端顶栏收敛(所有主题页共用) =====
   窄屏下顶栏内容过多会撑爆 60px 固定高度并相互重叠:
   隐藏版本号、干货版徽章与 ⌘K 提示,标题不换行溢出省略,保留返回入口 */
@media (max-width:640px){
  .topbar{padding:0 12px!important;gap:8px!important}
  .topbar .logo{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:14.5px!important}
  .topbar .logo .mark{flex:none}
  .topbar .logo .sub{display:none}
  .topbar .right{flex:none;gap:8px!important}
  .topbar .right>span{display:none}      /* 版本号:手机上无用,占地方 */
  .kbtn{padding:5px 9px}
  .kbtn span{display:none}                /* ⌘K 提示:手机无键盘,只留「跳转」 */
}
@media (max-width:380px){
  .kbtn{display:none}                     /* 极窄屏:侧栏筛选已覆盖导航,让位给标题 */
}

/* ===== 移动端侧栏遮罩:打开时点正文区域即可关闭(标准手势) ===== */
.sb-backdrop{position:fixed;inset:60px 0 0 0;background:rgba(10,12,18,.42);z-index:85;
  opacity:0;pointer-events:none;transition:opacity .25s}
.sb-backdrop.on{opacity:1;pointer-events:auto}
@media (min-width:1081px){.sb-backdrop{display:none}}  /* 桌面侧栏常驻,无需遮罩 */

/* ===== 大厂动效:令牌 + 滚动浮现基础样式(供 motion.js 使用) ===== */
:root{
  --ease-breathe:cubic-bezier(.22,1,.36,1);
  --dur-enter:.7s;
  --dur-hover:.3s;
  --rise-enter:16px;
  --rise-hover:3px;
}
[data-reveal]{opacity:0;transform:translateY(var(--rise-enter))}
[data-reveal].is-visible{opacity:1;transform:none;
  transition:opacity var(--dur-enter) var(--ease-breathe) var(--reveal-delay,0ms),
  transform var(--dur-enter) var(--ease-breathe) var(--reveal-delay,0ms)}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* ===== 语言切换器 (三态分段胶囊) ===== */
.lang-switcher{display:inline-flex;align-items:center;background:var(--border-2);border-radius:14px;padding:2px;gap:2px;font-size:11px;font-weight:700;margin-right:12px;font-family:var(--font)}
.lang-switcher .lang-btn{border:none;background:none;border-radius:10px;padding:2px 7px;cursor:pointer;color:var(--text-3);font-size:11px;font-weight:700;transition:all .2s;line-height:1.2;font-family:inherit}
.lang-switcher .lang-btn:hover{color:var(--text)}
.lang-switcher .lang-btn.active{background:#fff;color:var(--ink,#0f172a);box-shadow:0 1px 3px rgba(0,0,0,.14)}
html.dark .lang-switcher .lang-btn.active{background:#1e293b;color:#f1f5f9;box-shadow:0 1px 3px rgba(0,0,0,.4)}

