/* AI 助手弹窗（客户 2026-11-01 设计稿，全站共用）。不用 Bootstrap 模态框；id 沿用 aiAssistantModal / chatHistory / chatInput。 */
.ai-modal{--ink:#0F172A;--ink-2:#475569;--ink-3:#94A3B8;--line-soft:#EEF1F7;--grad:linear-gradient(135deg,#6366F1 0%,#8B5CF6 48%,#D946EF 100%);--font-display:"Space Grotesk","Noto Sans SC",sans-serif;--font-body:"Noto Sans SC",-apple-system,"Segoe UI",sans-serif;font-family:var(--font-body)}
.ai-modal{position:fixed;inset:0;z-index:1060;display:none;align-items:center;justify-content:center;padding:22px}
.ai-modal.open{display:flex}
.ai-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.42);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.ai-dialog{position:relative;width:min(540px,100%);max-height:min(760px,92vh);display:flex;flex-direction:column;background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 48px 96px -32px rgba(15,23,42,.5);border:1px solid #EEF1F7;animation:aiIn .28s cubic-bezier(.2,.8,.2,1)}
@keyframes aiIn{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
.ai-head{position:relative;padding:18px 22px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px;background:linear-gradient(135deg,#F6F7FF 0%,#FBF5FF 60%,#FFF7FB 100%);border-bottom:1px solid #EEF1F7}
.ai-head::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#60A5FA,#8B5CF6,#F472B6)}
.ai-head-l{display:flex;align-items:center;gap:13px;min-width:0}
.ai-avatar{flex:none;width:70px;height:44px;position:relative;display:flex;align-items:center}
.ai-avatar .av{width:44px;height:44px;border-radius:50%;overflow:hidden;border:2px solid #fff;box-shadow:0 8px 18px -8px rgba(15,23,42,.45);background:#fff;position:relative;flex:none}
.ai-avatar .av img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block}
.ai-avatar .av.q{border-color:#BFDBFE}
.ai-avatar .av.m{margin-left:-14px;border-color:#FBCFE8}
.ai-head h3{font-family:var(--font-display);font-size:1.08rem;font-weight:700;color:var(--ink);letter-spacing:.01em}
.ai-head .sub{font-size:.76rem;color:var(--ink-2);margin-top:1px}
.ai-head .tag{display:inline-flex;align-items:center;gap:5px;margin-left:8px;padding:2px 8px;border-radius:999px;background:#EEF2FF;color:#4F46E5;font-size:.68rem;vertical-align:middle;font-weight:500}
.ai-head .tag i{width:6px;height:6px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.18)}
.ai-close{flex:none;width:34px;height:34px;border-radius:10px;border:none;background:#fff;color:#94A3B8;display:grid;place-items:center;cursor:pointer;box-shadow:0 2px 8px -2px rgba(15,23,42,.14);transition:color .2s,background .2s,transform .2s}
.ai-close:hover{color:#0F172A;background:#F1F5F9;transform:rotate(90deg)}
.ai-close svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round}
.ai-body{flex:1;overflow-y:auto;padding:20px 22px;display:flex;flex-direction:column;gap:14px;background:radial-gradient(120% 60% at 50% 0%,#FBFBFF 0%,#FFFFFF 72%)}
.ai-empty{flex:1;min-height:270px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px 10px}
.ai-duo{position:relative;display:flex;align-items:center;justify-content:center;height:112px;margin-bottom:4px}
.ai-duo .ring{position:relative;width:94px;height:94px;border-radius:50%;background:conic-gradient(from 210deg,#60A5FA,#818CF8,#C084FC,#60A5FA);padding:3px;box-shadow:0 20px 40px -18px rgba(99,102,241,.5)}
.ai-duo .ring::before{content:"";position:absolute;inset:-13px;border-radius:50%;border:1px dashed rgba(139,92,246,.35);animation:spin 24s linear infinite}
.ai-duo .ring .img{width:100%;height:100%;border-radius:50%;overflow:hidden;background:#fff}
.ai-duo .ring .img img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block}
.ai-duo .duo2{position:absolute;left:calc(50% + 26px);top:0;width:66px;height:66px;border-radius:50%;padding:2.5px;background:conic-gradient(from 210deg,#F9A8D4,#F472B6,#FBCFE8,#F9A8D4);box-shadow:0 14px 26px -14px rgba(244,114,182,.55)}
.ai-duo .duo2 .img{width:100%;height:100%;border-radius:50%;overflow:hidden;background:#fff}
.ai-duo .duo2 .img img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block}
.ai-duo .sp{position:absolute;width:8px;height:8px;border-radius:50%}
.ai-duo .sp1{top:-2px;left:calc(50% - 36px);background:#22d3ee;box-shadow:0 0 0 4px rgba(34,211,238,.15)}
.ai-duo .sp2{bottom:2px;left:calc(50% + 4px);width:6px;height:6px;background:#f0abfc;box-shadow:0 0 0 4px rgba(240,171,252,.15)}
.ai-duo .sp3{top:16px;right:calc(50% - 44px);width:7px;height:7px;background:#fbbf24;box-shadow:0 0 0 4px rgba(251,191,36,.15)}
.ai-empty h4{font-size:1.02rem;font-weight:700;color:var(--ink);margin-top:14px}
.ai-empty p{font-size:.84rem;color:var(--ink-2);margin-top:8px;line-height:1.7;max-width:380px}
.ai-msg{display:flex;gap:10px;align-items:flex-start}
.ai-msg.user{justify-content:flex-end}
.ai-msg .bub{max-width:84%;padding:11px 15px;border-radius:14px;font-size:.88rem;line-height:1.65}
.ai-msg.user .bub{background:var(--grad);color:#fff;border-bottom-right-radius:4px}
.ai-msg.bot .bub{background:#F4F6FB;color:var(--ink);border:1px solid #ECEEF5;border-bottom-left-radius:4px}
.ai-quick{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:14px 22px;border-top:1px solid var(--line-soft);background:#fff}
.ai-quick .label{font-size:.76rem;color:var(--ink-3);flex:none}
.ai-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;border:1px solid #E4E7F5;background:#F8FAFF;color:#4F46E5;font-size:.8rem;cursor:pointer;transition:all .22s ease;font-family:var(--font-body)}
.ai-chip svg{width:13px;height:13px;stroke:#4F46E5;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:stroke .22s}
.ai-chip:hover{background:var(--grad);color:#fff;border-color:transparent;box-shadow:0 8px 20px -10px rgba(139,92,246,.6)}
.ai-chip:hover svg{stroke:#fff}
.ai-chip.chip-ghost{border-style:dashed;color:var(--ink-2);background:#fff}
.ai-chip.chip-ghost svg{stroke:var(--ink-2)}
.ai-chip.chip-ghost:hover{background:#F1F5F9;color:#0F172A;box-shadow:none}
.ai-chip.chip-ghost:hover svg{stroke:#0F172A}
.ai-inputbar{display:flex;gap:10px;padding:16px 22px;border-top:1px solid var(--line-soft);background:#fff}
.ai-inputbar input{flex:1;min-width:0;border:1px solid #E2E8F0;border-radius:13px;padding:12px 16px;font-size:.9rem;color:var(--ink);outline:none;background:#fff;font-family:var(--font-body);transition:border-color .2s,box-shadow .2s}
.ai-inputbar input::placeholder{color:#A6B0C3}
.ai-inputbar input:focus{border-color:#8B5CF6;box-shadow:0 0 0 3px rgba(139,92,246,.12)}
.ai-send{flex:none;display:inline-flex;align-items:center;gap:7px;border:none;border-radius:13px;padding:0 20px;background:var(--grad);color:#fff;font-size:.9rem;font-weight:500;cursor:pointer;font-family:var(--font-body);box-shadow:0 10px 22px -10px rgba(139,92,246,.65);transition:transform .15s,box-shadow .2s}
.ai-send:hover{transform:translateY(-1px);box-shadow:0 14px 28px -12px rgba(139,92,246,.75)}
.ai-send svg{width:16px;height:16px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.ai-foot{padding:0 22px 16px;text-align:center;font-size:.72rem;color:var(--ink-3)}
.ai-foot b{color:#4F46E5;font-weight:500}
@media(max-width:640px){
  .ai-modal{padding:14px}
  .ai-dialog{border-radius:18px;max-height:94vh}
  .ai-quick{padding:12px 16px}
  .ai-inputbar{padding:14px 16px}
  .ai-head{padding:16px 16px 14px}
}
@keyframes spin{to{transform:rotate(360deg)}}
.ai-modal *{box-sizing:border-box}
.ai-modal h3,.ai-modal h4,.ai-modal p{margin:0}
.ai-modal button{font-family:inherit}
/* 对话气泡：机器人一侧显示奇思/妙想头像与名字 */
.ai-modal #chatHistory{height:auto;border:0;margin:0;background:radial-gradient(120% 60% at 50% 0%,#FBFBFF 0%,#FFFFFF 72%);min-height:280px}
.ai-msg .who{flex:none;width:34px;height:34px;border-radius:50%;overflow:hidden;border:2px solid #fff;box-shadow:0 6px 14px -8px rgba(15,23,42,.45)}
.ai-msg .who img{width:100%;height:100%;object-fit:cover;object-position:50% 30%;display:block}
.ai-msg .who.q{border-color:#BFDBFE}.ai-msg .who.m{border-color:#FBCFE8}
.ai-msg .col{display:flex;flex-direction:column;gap:4px;max-width:84%;min-width:0}
.ai-msg.user .col{align-items:flex-end}
.ai-msg .name{font-size:.72rem;color:var(--ink-3)}
.ai-modal .ai-msg .bub{max-width:100%;border-left:0 !important}
.ai-modal .ai-msg.bot .bub.message-content{background:#F4F6FB;color:var(--ink);border:1px solid #ECEEF5 !important;border-radius:14px;border-bottom-left-radius:4px}
.ai-modal .ai-msg.user .bub.message-content{background:var(--grad);color:#fff;border:0 !important;border-radius:14px;border-bottom-right-radius:4px}
.ai-modal .bub p{margin:0 0 6px}.ai-modal .bub p:last-child{margin:0}
.ai-modal .bub.thinking{color:var(--ink-3)}
.ai-modal .bub.thinking i{display:inline-block;width:6px;height:6px;margin:0 2px;border-radius:50%;background:#A5B4FC;animation:aiDot 1s infinite}
.ai-modal .bub.thinking i:nth-child(2){animation-delay:.15s}.ai-modal .bub.thinking i:nth-child(3){animation-delay:.3s}
@keyframes aiDot{0%,100%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}
.ai-modal .ai-err .bub{background:#FEF2F2 !important;color:#B91C1C !important;border-color:#FECACA !important}
body.ai-open{overflow:hidden}
@media (prefers-reduced-motion: reduce){.ai-dialog,.ai-duo .ring::before,.ai-modal .bub.thinking i{animation:none}}
