/* 智能助理悬浮框 — 配色跟随主页双色渐变 h1→h2（base.js 每次刷新设置） */
:root{--ast-h:var(--ast-hue,152);--ast-h2:var(--ast-hue2,152);
  --ast-grad:linear-gradient(to left bottom,hsl(var(--ast-h),100%,85%) 0%,hsl(var(--ast-h2),100%,85%) 100%)}

/* 面板底色：主页同款渐变（淡档 97%） */
.ast-panel{position:fixed;right:16px;bottom:56px;width:420px;max-width:calc(100vw - 32px);
  height:560px;max-height:calc(100vh - 48px);
  background:linear-gradient(to left bottom,hsl(var(--ast-h),100%,97%) 0%,hsl(var(--ast-h2),100%,97%) 100%);
  border-radius:18px;box-shadow:0 12px 40px rgba(0,0,0,.12),0 2px 8px rgba(0,0,0,.05);
  z-index:9999;display:flex;flex-direction:column;overflow:hidden;
  opacity:0;transform:translateY(20px) scale(.96);pointer-events:none;
  transition:opacity .25s,transform .25s}
.ast-panel.ast-open{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}
@media(max-width:480px){.ast-panel{right:8px;bottom:8px;left:8px;width:auto;height:calc(100vh - 16px)}}

/* 悬浮球：主页同款双色渐变 + 双色相呼吸光晕（box-shadow 环，只在球外扩散，绝不覆盖球本体） */
.ast-fab{position:fixed;right:16px;bottom:56px;width:52px;height:52px;border-radius:50%;
  background:var(--ast-grad);border:none;cursor:pointer;z-index:9998;
  box-shadow:0 4px 14px rgba(0,0,0,.14),0 0 0 0 hsla(var(--ast-h),90%,60%,0),0 0 0 0 hsla(var(--ast-h2),90%,60%,0);
  display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s;
  animation:astFabPulse 2.4s ease-out infinite}
.ast-fab:hover{transform:translateY(-2px);animation-play-state:paused}
.ast-fab:active{transform:scale(.95)}
@keyframes astFabPulse{
  0%{box-shadow:0 4px 14px rgba(0,0,0,.14),0 0 0 2px hsla(var(--ast-h),90%,60%,.6),0 0 0 4px hsla(var(--ast-h2),90%,60%,.4)}
  100%{box-shadow:0 4px 14px rgba(0,0,0,.14),0 0 0 20px hsla(var(--ast-h),90%,60%,0),0 0 0 24px hsla(var(--ast-h2),90%,60%,0)}
}

/* 头部：主页同款双色渐变 */
.ast-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;
  background:var(--ast-grad);color:hsl(var(--ast-h),55%,25%);flex-shrink:0}
.ast-head-info{display:flex;align-items:center;gap:10px}
.ast-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}
.ast-title{font-size:15px;font-weight:600}
.ast-sub{font-size:11px;opacity:.7}
.ast-head-actions{display:flex;gap:6px}
.ast-close,.ast-new{background:transparent;border:none;color:hsl(var(--ast-h),55%,30%);
  width:28px;height:28px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ast-close{font-size:15px}.ast-new{font-size:18px;line-height:1}
.ast-close:hover,.ast-new:hover{background:hsla(var(--ast-h),60%,40%,.12)}

/* 消息区 */
.ast-msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px;background:hsl(var(--ast-h),100%,96%)}
/* 欢迎屏可见时消息区为空，不占 flex 空间，让欢迎屏独占剩余区域（居中且背景与面板统一） */
.ast-msgs:empty{flex:0 0 0}
.ast-welcome{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:24px;gap:10px}
.ast-welcome-avatar{width:60px;height:60px;border-radius:50%;object-fit:cover}
.ast-welcome-title{font-size:16px;font-weight:600;color:var(--text)}
.ast-welcome-hint{font-size:13px;color:var(--text-muted)}
/* 弹幕：4 轨横向滚动，hover 暂停（照搬 AIGateway 同款，配色跟随主页色相） */
.danmaku-wrapper{overflow:hidden;height:176px;position:relative;width:100%;margin-top:10px}
.danmaku-lane{position:absolute;display:flex;height:36px;align-items:center;left:0}
.danmaku-lane:nth-child(1){top:4px}
.danmaku-lane:nth-child(2){top:48px}
.danmaku-lane:nth-child(3){top:92px}
.danmaku-lane:nth-child(4){top:136px}
.danmaku-chip{display:inline-flex;align-items:center;padding:4px 14px;margin:0 6px;border-radius:16px;
  background:var(--ast-grad);color:hsl(var(--ast-h),55%,28%);font-size:12.5px;
  cursor:pointer;white-space:nowrap;flex-shrink:0;transition:filter .15s}
.danmaku-chip:hover{filter:brightness(.94)}

.ast-msg{display:flex;flex-direction:column;max-width:85%;min-width:0;animation:astIn .25s ease}
@keyframes astIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.ast-msg-user{align-self:flex-end}
.ast-msg-ai{align-self:flex-start}

/* 用户气泡：主页同款双色渐变 */
.ast-bubble-user{background:var(--ast-grad);color:hsl(var(--ast-h),55%,25%);padding:9px 13px;
  border-radius:14px 14px 4px 14px;font-size:14px;line-height:1.6;word-break:break-word}
/* AI 气泡：主页同款双色渐变 */
.ast-bubble-ai{background:var(--ast-grad);color:hsl(var(--ast-h),55%,25%);padding:10px 13px;
  border-radius:14px 14px 14px 4px;font-size:14px;line-height:1.65;word-break:break-word;
  min-width:0;overflow-wrap:anywhere}
.ast-bubble-ai p{margin:0 0 6px;min-width:0;overflow-wrap:anywhere}.ast-bubble-ai p:last-child{margin:0}
.ast-bubble-ai strong{font-weight:600}
.ast-bubble-ai code{background:hsla(var(--ast-h),100%,100%,.45);padding:1px 5px;border-radius:4px;font-size:13px}
.ast-code pre{background:#1e1e1e;color:#d4d4d4;padding:10px;border-radius:8px;overflow-x:auto;margin:6px 0;max-width:100%}
.ast-code code{font-family:Consolas,monospace;font-size:12px;background:0;padding:0}
.ast-code-h{background:#2d2d2d;color:#aaa;font-size:11px;padding:4px 10px;border-radius:8px 8px 0 0}
.ast-code-lang{font-family:Consolas,monospace}
.ast-bubble-ai h1,.ast-bubble-ai h2,.ast-bubble-ai h3,.ast-bubble-ai h4,.ast-bubble-ai h5
  {margin:8px 0 4px;line-height:1.3;font-weight:600;color:var(--text)}
.ast-bubble-ai h1{font-size:17px}.ast-bubble-ai h2{font-size:15px}.ast-bubble-ai h3{font-size:14px}
.ast-bubble-ai h4,.ast-bubble-ai h5{font-size:13px}
.ast-bubble-ai blockquote{margin:6px 0;padding:4px 10px;border-left:3px solid hsl(var(--ast-h),100%,75%);
  color:var(--text-light);background:hsl(var(--ast-h),100%,96%);border-radius:0 6px 6px 0}
.ast-bubble-ai ul,.ast-bubble-ai ol{margin:6px 0;padding-left:22px}
.ast-bubble-ai li{margin:2px 0}
.ast-tbwrap{overflow-x:auto;margin:6px 0;max-width:100%}
.ast-bubble-ai table{border-collapse:collapse;width:100%;font-size:13px}
.ast-bubble-ai th,.ast-bubble-ai td{border:1px solid #e0e0e0;padding:5px 8px;text-align:left}
.ast-bubble-ai th{background:hsl(var(--ast-h),100%,92%);font-weight:600}

/* 检索标签 */
.ast-sources{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}
.ast-src-tag{font-size:11px;background:var(--ast-grad);color:hsl(var(--ast-h),55%,28%);
  padding:3px 8px;border-radius:10px;animation:astIn .2s}

.ast-typing{display:inline-flex;gap:4px;padding:4px 0}
.ast-typing .d{width:7px;height:7px;background:#bbb;border-radius:50%;animation:astBlink 1.2s infinite both}
.ast-typing .d:nth-child(2){animation-delay:.2s}
.ast-typing .d:nth-child(3){animation-delay:.4s}
@keyframes astBlink{0%,80%,100%{opacity:.3}40%{opacity:1}}

.ast-cursor{display:inline-block;color:#999;animation:astCursor 1s infinite}
@keyframes astCursor{0%,50%{opacity:1}51%,100%{opacity:0}}

.ast-error{color:#ef4444;font-size:13px}
/* 未登录引导 */
.ast-login-hint{font-size:14px;margin-bottom:8px}
.ast-login-btn{background:var(--ast-grad);color:hsl(var(--ast-h),55%,25%);border:none;padding:8px 20px;
  border-radius:10px;cursor:pointer;font-size:14px;transition:filter .15s}
.ast-login-btn:hover{filter:brightness(.94)}

/* 输入区 */
.ast-input-wrap{display:flex;gap:8px;padding:12px;border-top:1px solid hsl(var(--ast-h),60%,90%);flex-shrink:0;align-items:flex-end;background:hsl(var(--ast-h),100%,97%)}
.ast-input-wrap textarea{flex:1;border:1px solid hsl(var(--ast-h),60%,88%);border-radius:10px;padding:9px 12px;
  font-size:14px;resize:none;outline:none;font-family:inherit;line-height:1.4;max-height:120px;
  background:#fff;transition:border-color .15s;overflow-y:hidden;scrollbar-width:none}
.ast-input-wrap textarea::-webkit-scrollbar{display:none}
.ast-input-wrap textarea:focus{border-color:hsl(var(--ast-h),100%,70%)}
.ast-input-wrap button{background:var(--ast-grad);color:hsl(var(--ast-h),55%,25%);border:none;padding:9px 18px;
  border-radius:10px;cursor:pointer;font-size:14px;flex-shrink:0;transition:opacity .15s}
.ast-input-wrap button:hover:not(:disabled){opacity:.85}
.ast-input-wrap button:disabled{opacity:.5;cursor:not-allowed}
