/* ---------- Landscape Buddy 站点助手 ---------- */

/* 吉祥物浮窗：sprite 首帧作静态形象，容器按 192:176 的比例 */
.lb-buddy-launcher{
  position:fixed;right:26px;bottom:26px;z-index:70;
  width:68px;height:62px;padding:0;border:0;cursor:pointer;
  border-radius:50%;
  background:#f7f4ec url('/assets/buddy-idle.webp') no-repeat center/cover;
  box-shadow:0 8px 22px rgba(10,22,17,.28),0 0 0 3px rgba(255,255,255,.6);
  transition:transform .2s ease,box-shadow .2s ease;
  animation:lb-buddy-float 4s ease-in-out infinite;
}
.lb-buddy-launcher:hover{transform:translateY(-4px) scale(1.05);box-shadow:0 12px 28px rgba(10,22,17,.34),0 0 0 3px rgba(255,255,255,.8);}
.lb-buddy-launcher:focus-visible{outline:2px solid var(--accent,#3fb98f);outline-offset:3px;}
.lb-buddy-launcher[data-busy="1"]{animation:lb-buddy-think 1.1s ease-in-out infinite;}
@keyframes lb-buddy-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes lb-buddy-think{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-3px) rotate(2deg)}}

/* 面板 */
.lb-buddy-panel{
  position:fixed;right:26px;bottom:100px;z-index:71;
  width:352px;max-height:min(560px,calc(100vh - 140px));
  display:flex;flex-direction:column;
  border-radius:16px;overflow:hidden;
  border:1px solid var(--line,rgba(122,204,168,.16));
  background:var(--card,#0c1512);
  box-shadow:0 20px 50px rgba(0,0,0,.4);
  transform-origin:bottom right;
  animation:lb-buddy-pop .18s ease-out;
}
@keyframes lb-buddy-pop{from{opacity:0;transform:scale(.94) translateY(8px)}to{opacity:1;transform:none}}
.lb-buddy-panel[hidden]{display:none;}

.lb-buddy-head{
  display:flex;align-items:center;gap:10px;
  padding:12px 14px;border-bottom:1px solid var(--line,rgba(122,204,168,.14));
  background:var(--bg-soft,#0a1410);
}
.lb-buddy-avatar{
  width:34px;height:31px;flex:0 0 auto;border-radius:50%;
  background:#f7f4ec url('/assets/buddy-idle.webp') no-repeat center/cover;
}
.lb-buddy-title{flex:1;min-width:0}
.lb-buddy-title strong{display:block;font-size:13.5px;color:var(--text,#e6efe9);font-weight:500}
.lb-buddy-title span{display:block;font-size:11px;color:var(--muted,#98aba2)}
.lb-buddy-close{
  width:26px;height:26px;padding:0;border:0;border-radius:6px;cursor:pointer;
  background:transparent;color:var(--muted,#98aba2);font-size:16px;line-height:1;
}
.lb-buddy-close:hover{background:var(--accent-dim,rgba(63,185,143,.16));color:var(--text,#e6efe9)}

/* 消息区 */
.lb-buddy-body{
  flex:1;min-height:180px;overflow-y:auto;padding:14px;
  display:flex;flex-direction:column;gap:10px;
  scroll-behavior:smooth;
}
.lb-buddy-msg{
  max-width:86%;padding:9px 12px;border-radius:12px;
  font-size:13px;line-height:1.62;white-space:pre-wrap;overflow-wrap:anywhere;
}
.lb-buddy-msg[data-role="user"]{
  align-self:flex-end;color:#ffffff;background:#1f6b52;
  border-bottom-right-radius:4px;
}
.lb-buddy-msg[data-role="assistant"]{
  align-self:flex-start;color:var(--text,#e6efe9);
  background:var(--panel,rgba(255,255,255,.04));
  border:1px solid var(--line,rgba(122,204,168,.12));
  border-bottom-left-radius:4px;
}
.lb-buddy-msg[data-role="error"]{
  align-self:center;font-size:12px;color:#e39a8f;
  background:transparent;padding:4px 8px;
}
.lb-buddy-typing{
  align-self:flex-start;display:flex;gap:4px;padding:10px 13px;
  border-radius:12px;border-bottom-left-radius:4px;
  background:var(--panel,rgba(255,255,255,.04));
  border:1px solid var(--line,rgba(122,204,168,.12));
}
.lb-buddy-typing i{
  width:5px;height:5px;border-radius:50%;background:var(--muted,#98aba2);
  animation:lb-buddy-dot 1.2s infinite;
}
.lb-buddy-typing i:nth-child(2){animation-delay:.18s}
.lb-buddy-typing i:nth-child(3){animation-delay:.36s}
@keyframes lb-buddy-dot{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}

/* 输入区 */
.lb-buddy-foot{
  display:flex;gap:8px;padding:10px 12px;
  border-top:1px solid var(--line,rgba(122,204,168,.14));
  background:var(--bg-soft,#0a1410);
}
.lb-buddy-input{
  flex:1;min-width:0;resize:none;
  height:32px;min-height:32px;max-height:72px;
  padding:6px 9px;border-radius:8px;
  border:1px solid var(--line,rgba(122,204,168,.28));
  background:var(--input-bg,#0c1512);
  color:var(--text,#e6efe9);font:inherit;font-size:12.5px;line-height:1.35;
  overflow-y:auto;
}
.lb-buddy-input::placeholder{color:var(--muted,#98aba2);opacity:.8}
.lb-buddy-input:focus{outline:none;border-color:var(--accent,#3fb98f)}
.lb-buddy-send{
  flex:0 0 auto;padding:0 12px;border:0;border-radius:8px;cursor:pointer;
  background:#1f6b52;color:#ffffff;font-size:12.5px;font-weight:500;
}
.lb-buddy-send:hover{background:#2a7d60}
.lb-buddy-send:disabled{opacity:.45;cursor:not-allowed}

/* 快捷提问 */
.lb-buddy-chips{display:flex;flex-wrap:wrap;gap:5px;padding:0 14px 9px}
.lb-buddy-chip{
  padding:3px 8px;border-radius:999px;cursor:pointer;
  border:1px solid var(--line,rgba(122,204,168,.2));
  background:transparent;color:var(--muted,#98aba2);font-size:11px;line-height:1.5;
}
.lb-buddy-chip:hover{color:var(--accent,#3fb98f);border-color:var(--accent,#3fb98f)}

/* 移动端：面板铺满宽度 */
@media (max-width:520px){
  .lb-buddy-panel{right:10px;left:10px;width:auto;bottom:92px;max-height:calc(100vh - 130px)}
  .lb-buddy-launcher{right:16px;bottom:16px;width:60px;height:55px}
}

/* ---------- 拖拽 ---------- */
.lb-buddy-launcher{cursor:grab;touch-action:none;}
.lb-buddy-launcher[data-dragging="1"]{
  animation:none;cursor:grabbing;transform:none;transition:none;
  box-shadow:0 14px 32px rgba(10,22,17,.4),0 0 0 3px rgba(255,255,255,.85);
}

/* ---------- 拖拽 ---------- */
.lb-buddy-launcher{cursor:grab;touch-action:none;}
.lb-buddy-launcher[data-dragging="1"]{
  animation:none;cursor:grabbing;transform:none;transition:none;
  box-shadow:0 14px 32px rgba(10,22,17,.4),0 0 0 3px rgba(255,255,255,.85);
}

/* ---------- 引用内容卡片 ---------- */
.lb-buddy-cites{display:flex;flex-direction:column;gap:6px;margin-top:9px}
.lb-buddy-cite{
  display:flex;flex-direction:column;gap:1px;
  padding:8px 10px;border-radius:8px;cursor:pointer;text-decoration:none;
  border:1px solid var(--line,rgba(122,204,168,.18));
  background:var(--card,#0c1512);
  transition:border-color .16s ease;
}
.lb-buddy-cite:hover{border-color:var(--accent,#3fb98f)}
.lb-buddy-cite strong{font-size:12.5px;color:var(--text,#e6efe9);font-weight:500}
.lb-buddy-cite span{font-size:11px;color:var(--muted,#98aba2);line-height:1.5}

/* ---------- 静默淡入：等工作证弹出后再显现（时序由 JS 控制） ---------- */
.lb-buddy-launcher{opacity:0}
.lb-buddy-launcher.lb-buddy-enter{opacity:1;transition:opacity .55s ease}

/* ---------- 介绍气泡 ---------- */
.lb-buddy-bubble{
  position:fixed;left:auto;top:auto;z-index:70;
  max-width:250px;padding:10px 13px;border-radius:12px;
  background:var(--card,#0c1512);border:1px solid var(--line,rgba(122,204,168,.22));
  color:var(--text,#e6efe9);font-size:12px;line-height:1.6;
  box-shadow:0 10px 28px rgba(0,0,0,.32);
  opacity:1;transform:translateY(0);transition:opacity .4s ease,transform .4s ease;
}
.lb-buddy-bubble[hidden]{display:none}
.lb-buddy-bubble::after{
  content:'';position:absolute;right:-6px;bottom:20px;
  width:12px;height:12px;
  background:var(--card,#0c1512);
  border-right:1px solid var(--line,rgba(122,204,168,.22));
  border-top:1px solid var(--line,rgba(122,204,168,.22));
  transform:rotate(45deg);
}
.lb-buddy-bubble-hide{opacity:0;transform:translateY(6px);pointer-events:none}

/* ---------- 新对话按钮 ---------- */
.lb-buddy-reset{
  width:26px;height:26px;padding:0;border:0;border-radius:6px;cursor:pointer;
  background:transparent;color:var(--muted,#98aba2);font-size:17px;line-height:1;font-weight:500;
}
.lb-buddy-reset:hover{background:var(--accent-dim,rgba(63,185,143,.16));color:var(--text,#e6efe9)}

/* ---------- 二次确认弹窗 ---------- */
.lb-buddy-confirm{
  position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.5);
  display:flex;align-items:center;justify-content:center;
  animation:lb-buddy-fade .15s ease;
}
@keyframes lb-buddy-fade{from{opacity:0}to{opacity:1}}
.lb-buddy-confirm-box{
  width:280px;max-width:88vw;padding:18px 16px;border-radius:12px;
  background:var(--card,#0c1512);border:1px solid var(--line,rgba(122,204,168,.2));
  box-shadow:0 16px 40px rgba(0,0,0,.4);
}
.lb-buddy-confirm-box p{font-size:13px;color:var(--text,#e6efe9);line-height:1.6;margin:0 0 14px}
.lb-buddy-confirm-actions{display:flex;justify-content:flex-end;gap:8px}
.lb-buddy-confirm-btn{
  padding:6px 14px;border-radius:8px;cursor:pointer;font-size:12.5px;
  border:1px solid var(--line,rgba(122,204,168,.2));background:transparent;color:var(--text,#e6efe9);
}
.lb-buddy-confirm-btn:hover{background:var(--accent-dim,rgba(63,185,143,.12))}
.lb-buddy-confirm-primary{background:#1f6b52;border-color:#1f6b52;color:#fff}
.lb-buddy-confirm-primary:hover{background:#2a7d60}
