body{font-family:'Inter',system-ui,-apple-system,sans-serif}
/* 移动端浏览器地址栏伸缩导致 100vh 失准：用 dvh（不支持则回落 100vh），输入框不再被裁 */
html,body{height:100%}
body.h-screen{height:100vh;height:100dvh}
[v-cloak]{display:none!important}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#D1D5DB;border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:#9CA3AF}
@keyframes fadeInUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
.toast-anim{animation:toastIn .35s ease-out}
@keyframes pulse-3{0%,100%{opacity:.3}50%{opacity:1}}
.typing-dot:nth-child(1){animation:pulse-3 1.4s infinite 0s}
.typing-dot:nth-child(2){animation:pulse-3 1.4s infinite .2s}
.typing-dot:nth-child(3){animation:pulse-3 1.4s infinite .4s}
textarea.auto-grow{min-height:38px;max-height:200px;overflow-y:auto;resize:none}

/* ===== 移动端适配（<768px）：触摸目标 / iOS 缩放 / 安全区 ===== */
@media (max-width: 767px) {
  /* 操作按钮不小于 40px 触摸目标（大厂移动端规范） */
  button.w-8 { width: 2.5rem; height: 2.5rem; }
  button.w-8 svg, button.w-8 i { font-size: 16px; }
  /* 表单字号不小于 16px，防止 iOS 聚焦自动缩放 */
  input, select, textarea { font-size: 16px !important; }
}
.sidebar-transition{transition:width .2s ease,transform .2s ease}
.msg-bubble-user{background:linear-gradient(135deg,#3B82F6 0%,#2563EB 100%);border-radius:18px 18px 4px 18px}
.msg-bubble-assistant{background:#FFF;border:1px solid #E5E7EB;border-radius:18px 18px 18px 4px}
.case-card{border:1px solid #E5E7EB;border-radius:12px;transition:all .2s}
.case-card:hover{border-color:#3B82F6;box-shadow:0 2px 8px rgba(59,130,246,.08)}
.suggestion-chip{transition:all .2s}
.suggestion-chip:hover{border-color:#3B82F6;background:#EFF6FF;transform:translateY(-1px)}
.conv-item{transition:all .15s}
.conv-item:hover{background:#F3F4F6}
.conv-item.active{background:#EFF6FF;color:#1D4ED8}
.input-bar{transition:all .2s;border:1px solid #E5E7EB}
.input-bar:focus-within{border-color:#3B82F6;box-shadow:0 0 0 3px rgba(59,130,246,.1)}
.modal-overlay{background:rgba(0,0,0,.4);backdrop-filter:blur(4px)}
.prose-sm p{margin-bottom:.5em;line-height:1.7}
/* 长串（故障码/编号/URL）强制断行：页面永不出现横向滚动条（ChatGPT 同款行为） */
.prose-sm,.msg-user-text{overflow-wrap:anywhere;word-break:break-word}
.prose-sm strong{font-weight:600;color:#111827}
.prose-sm ul{list-style-type:disc;padding-left:1.2em;margin:.5em 0}
.prose-sm ol{list-style-type:decimal;padding-left:1.2em;margin:.5em 0}
.prose-sm li{margin-bottom:.25em}
.prose-sm code{background:#F3F4F6;padding:.15em .4em;border-radius:4px;font-size:.875em}
.prose-sm{overflow-wrap:anywhere;word-break:break-word}
.prose-sm pre{white-space:pre;word-break:normal;overflow-wrap:normal}
.prose-sm pre{background:#1F2937;color:#F9FAFB;padding:.75em 1em;border-radius:8px;overflow-x:auto;margin:.5em 0}
.prose-sm pre code{background:none;color:inherit;padding:0}
.prose-sm h1,.prose-sm h2,.prose-sm h3,.prose-sm h4{font-weight:600;margin:.75em 0 .5em;color:#111827}
.prose-sm h1{font-size:1.15em}.prose-sm h2{font-size:1.08em}.prose-sm h3{font-size:1em}.prose-sm h4{font-size:.95em}
.prose-sm hr{border:none;border-top:1px solid #E5E7EB;margin:.75em 0}
.prose-sm blockquote{border-left:3px solid #F59E0B;background:#FFFBEB;padding:.5em .75em;border-radius:0 8px 8px 0;margin:.5em 0;color:#92400E}
.prose-sm .md-table-wrap{overflow-x:auto;margin:.5em 0}
.prose-sm table{border-collapse:collapse;width:100%;margin:.5em 0}
.prose-sm th,.prose-sm td{border:1px solid #E5E7EB;padding:.5em .75em;text-align:left}
.prose-sm th{background:#F9FAFB;font-weight:600}
.demo-badge{background:linear-gradient(135deg,#F59E0B,#D97706);color:#fff;font-size:11px;padding:2px 10px;border-radius:9999px;font-weight:600;animation:pulse 2s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(245,158,11,.4)}50%{box-shadow:0 0 0 6px rgba(245,158,11,0)}}
.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.status-connected{background:#10B981;box-shadow:0 0 0 2px rgba(16,185,129,.2)}
/* 语音对话光球（ChatGPT Voice Mode 风格） */
.voice-stage{position:relative;width:220px;height:220px;display:grid;place-items:center;cursor:pointer}
.voice-orb{width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff,#c7d2fe 35%,#818cf8 60%,#4f46e5 85%);box-shadow:0 0 60px rgba(129,140,248,.55),0 0 140px rgba(79,70,229,.35);transition:transform .12s linear}
.voice-ring{position:absolute;width:170px;height:170px;border-radius:50%;border:1.5px solid rgba(255,255,255,.35);transition:transform .12s linear,opacity .2s}
.voice-ring.r2{width:200px;height:200px}
.status-demo{background:#F59E0B;box-shadow:0 0 0 2px rgba(245,158,11,.2)}
.status-error{background:#EF4444;box-shadow:0 0 0 2px rgba(239,68,68,.2)}
