/* ================================================================
 * AI宠物 PetAgent · 样式
 * 不依赖任何主题：颜色走 var(--st-primary, 默认靛蓝) 兜底，
 * 主题有设计令牌就自动跟随，没有也一样好看。
 * ================================================================ */
#pet-agent-root{
    position:fixed; left:50vw; bottom:0; z-index:99999;
    transform:translateX(-50%);
    width:max-content;   /* 贴近右边缘时收缩适配宽度会趋近 0，主题的 img{max-width:100%} 会把帧图压扁 */
    -webkit-user-select:none; user-select:none;
    touch-action:none;
    filter:none; pointer-events:none;
}
#pet-agent-root *{box-sizing:border-box; margin:0; padding:0}
#pet-agent-root .pa-hit{pointer-events:auto; cursor:grab; position:relative; display:block}
#pet-agent-root.pa-grabbing .pa-hit{cursor:grabbing}

/* 宠物本体（帧图统一朝右；朝左时镜像） */
.pa-stage{position:relative; transform-origin:bottom center}
.pa-face{transform:scaleX(var(--pa-face,1)); transform-origin:bottom center; transition:transform .12s}
.pa-anim{transform-origin:bottom center; animation:pa-breathe 4s ease-in-out infinite}
.pa-sprite{
    display:block; height:var(--pa-h,220px); width:auto;
    max-width:none; max-height:none;   /* 屏蔽主题全局 img 尺寸限制，保住等比 */
    -webkit-user-drag:none; user-drag:none; pointer-events:none;
    filter:drop-shadow(0 10px 16px rgba(40,40,80,.30));
    image-rendering:auto;
}
.pa-shadow{
    position:absolute; left:50%; bottom:-6px; width:46%; height:16px;
    transform:translateX(-50%) scaleX(var(--pa-shsc,1));
    background:radial-gradient(closest-side, rgba(50,45,90,.32), transparent 72%);
    border-radius:50%; filter:blur(2px); opacity:var(--pa-shop,.55);
}

/* ---- 帧不足时的 CSS 降级动画（对整个 stage 施加） ---- */
@keyframes pa-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.pa-loco-walk .pa-anim{animation:pa-walkbob .44s ease-in-out infinite}
.pa-loco-run  .pa-anim{animation:pa-walkbob .29s ease-in-out infinite}
@keyframes pa-walkbob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}
.pa-g-point .pa-anim{animation:pa-glean .8s ease forwards}
@keyframes pa-glean{to{transform:rotate(-9deg) translateY(-2px)}}
.pa-g-bow .pa-anim{animation:pa-gbow 1.1s ease}
@keyframes pa-gbow{0%,100%{transform:none}35%,70%{transform:translateY(6px) rotate(8deg) scaleY(.92)}}
.pa-g-cheer .pa-anim{animation:pa-gcheer .75s cubic-bezier(.3,1.5,.5,1)}
@keyframes pa-gcheer{0%{transform:none}45%{transform:translateY(-42px)}100%{transform:none}}
.pa-g-surprised .pa-anim{animation:pa-gsurp .6s cubic-bezier(.3,1.5,.5,1)}
@keyframes pa-gsurp{0%{transform:none}35%{transform:translateY(-14px) rotate(-5deg)}100%{transform:none}}
.pa-g-shy .pa-anim{animation:pa-gshy 1s ease}
@keyframes pa-gshy{0%,100%{transform:none}40%,70%{transform:translateY(4px) scale(.93)}}
.pa-g-dizzy .pa-anim{animation:pa-gdizzy 1.2s ease-in-out}
@keyframes pa-gdizzy{0%,100%{transform:none}25%{transform:rotate(8deg)}55%{transform:rotate(-8deg)}80%{transform:rotate(5deg)}}
.pa-g-nod .pa-anim{animation:pa-gnod .6s ease}
@keyframes pa-gnod{0%,100%{transform:none}50%{transform:translateY(3px) rotate(3deg)}}
.pa-g-hop .pa-anim{animation:pa-ghop .5s ease}
@keyframes pa-ghop{0%,100%{transform:none}45%{transform:translateY(-26px)}}
.pa-g-spin .pa-anim{animation:pa-gspin .9s ease-in-out}
@keyframes pa-gspin{to{transform:rotateY(360deg)}}
.pa-sleeping .pa-anim{animation:pa-breathe 5.4s ease-in-out infinite}
/* 微动作：站立时偶尔的重心小晃动 */
.pa-fidget .pa-anim{animation:pa-fidget 1.7s ease-in-out}
@keyframes pa-fidget{0%,100%{transform:none}30%{transform:rotate(1.1deg) translateX(1px)}70%{transform:rotate(-.9deg) translateX(-1px)}}
/* VRM 模式：真3D转身取代画布镜像 */
.pa-vrm .pa-face{transform:none}
/* Live2D 模式：模型自带呼吸/物理摆动，关闭 CSS 呼吸；画布带投影 */
.pa-live2d .pa-anim{animation:none}
.pa-live2d .pa-stage canvas{display:block; max-width:none; filter:drop-shadow(0 10px 16px rgba(40,40,80,.30))}
.pa-sleeping .pa-sprite{filter:drop-shadow(0 10px 16px rgba(40,40,80,.30)) saturate(.82) brightness(.95)}

/* ---- 举牌白板文字（几何由 JS 按 skin.json 的 edge.sign 标定写入）
       白板原画是纯白的，白底页面上会隐形：叠加层自带描边+底色+投影，兼当放大版板面 ---- */
.pa-sign{
    position:absolute; z-index:2; display:none;
    align-items:center; justify-content:center; text-align:center;
    padding:2% 3%;
    color:#33304a; font-weight:800; line-height:1.3; letter-spacing:.5px;
    font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
    background:#fffdf6;
    border:2px solid #4a4458; border-radius:7px;
    box-shadow:0 4px 14px rgba(40,40,80,.28), inset 0 0 0 3px rgba(74,68,88,.06);
    overflow:hidden; overflow-wrap:break-word; word-break:break-all;
    transform:rotate(-.6deg);
}
.pa-signing .pa-sign{display:flex; animation:pa-sign-pop .3s cubic-bezier(.3,1.5,.5,1)}
@keyframes pa-sign-pop{0%{opacity:0; transform:rotate(-.6deg) scale(.7) translateY(8px)}100%{opacity:1; transform:rotate(-.6deg)}}
/* ---- 悬空序列（攀爬/悬挂/坐弹窗/下落）：贴地阴影与呼吸位移都不合时宜 ---- */
.pa-air .pa-shadow{opacity:0 !important}
.pa-air .pa-anim{animation:none}
/* ================================================================
 * 液态玻璃气泡（Liquid Glass）
 * 高模糊玻璃 + 边缘镜面高光描边 + 玻璃圆点尾巴 + 弹性入场
 * ================================================================ */
.pa-bubble{
    position:absolute; left:50%;
    bottom:calc(100% + 12px - var(--pa-headroom, 0px));   /* 贴着视觉头顶，而不是画布顶 */
    transform:translateX(calc(-50% + var(--pa-bub-dx, 0px))) translateY(10px) scale(.88);
    transform-origin:50% 100%;
    width:max-content;   /* 摆脱人物盒子的收缩宽度限制 */
    min-width:54px; max-width:min(258px, calc(100vw - 28px)); padding:11px 16px 12px;
    border-radius:21px;
    font:600 13.5px/1.6 -apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
    letter-spacing:.2px;
    text-align:left; white-space:pre-wrap; word-break:break-word;
    color:var(--st-text, #1d1f31);
    background:
        linear-gradient(180deg, rgba(255,255,255,.42), rgba(255,255,255,.08) 45%, rgba(255,255,255,0) 68%),
        var(--pa-glass, rgba(255,255,255,.58));
    -webkit-backdrop-filter:blur(36px) saturate(1.9); backdrop-filter:blur(36px) saturate(1.9);
    box-shadow:
        0 8px 24px rgba(30,35,90,.09),
        0 2px 6px rgba(30,35,90,.05),
        inset 0 1px 0 rgba(255,255,255,.68),
        inset 0 -1px 0 rgba(120,130,190,.07);
    opacity:0; visibility:hidden;
    transition:opacity .2s ease, transform .2s ease, visibility 0s .2s;
    pointer-events:none;
}
/* 玻璃边缘高光描边（顶部受光、底部回光） */
.pa-bubble::before{
    content:""; position:absolute; inset:0; border-radius:inherit; padding:1px;
    background:linear-gradient(155deg, rgba(255,255,255,.9), rgba(255,255,255,.25) 34%, rgba(150,160,215,.12) 60%, rgba(255,255,255,.45));
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite:xor; mask-composite:exclude;
    pointer-events:none;
}
/* 玻璃圆点尾巴（避免拼接缝，比三角更液态；气泡贴边内收时反向补偿，始终对准头顶） */
.pa-bubble::after{
    content:""; position:absolute; left:calc(50% - var(--pa-bub-dx, 0px)); top:100%;
    transform:translateX(-50%) translateY(4px);
    width:10px; height:10px; border-radius:50%;
    background:var(--pa-glass, rgba(255,255,255,.58));
    -webkit-backdrop-filter:blur(18px) saturate(1.8); backdrop-filter:blur(18px) saturate(1.8);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.7), 0 2px 6px rgba(30,35,90,.07);
}
.pa-bubble.pa-show{
    opacity:1; visibility:visible;
    transform:translateX(calc(-50% + var(--pa-bub-dx, 0px))) translateY(0) scale(1);
    transition:opacity .26s ease, transform .5s cubic-bezier(.32,1.5,.48,1), visibility 0s;
}
/* 贴近视口顶部时（悬挂等），气泡翻到人物脚下 */
.pa-high .pa-bubble{
    bottom:auto; top:calc(100% + 14px);
    transform-origin:50% 0;
    transform:translateX(calc(-50% + var(--pa-bub-dx, 0px))) translateY(-10px) scale(.88);
}
.pa-high .pa-bubble.pa-show{transform:translateX(calc(-50% + var(--pa-bub-dx, 0px))) translateY(0) scale(1)}
.pa-high .pa-bubble::after{top:auto; bottom:100%; transform:translateX(-50%) translateY(-4px)}

/* ---- 粒子特效 ---- */
.pa-fx{position:absolute; left:50%; bottom:30%; width:0; height:0; pointer-events:none}
.pa-p{
    position:absolute; left:0; bottom:0; font-size:19px; will-change:transform,opacity;
    animation:pa-pfloat 1.15s ease-out forwards;
}
@keyframes pa-pfloat{
    0%{transform:translate(-50%,0) scale(.4); opacity:0}
    16%{opacity:1}
    100%{transform:translate(calc(-50% + var(--pa-dx,0px)), var(--pa-dy,-80px)) scale(var(--pa-ps,1)); opacity:0}
}

/* ---- 指向箭头 ---- */
.pa-pointer{
    position:fixed; z-index:99998; font-size:26px; pointer-events:none;
    color:var(--st-primary, #6d78c9);
    filter:drop-shadow(0 2px 5px rgba(0,0,0,.28));
    opacity:0; transition:opacity .2s;
    animation:pa-pbounce .8s ease-in-out infinite;
}
.pa-pointer.pa-show{opacity:1}
@keyframes pa-pbounce{0%,100%{transform:translate(-50%,-50%)}50%{transform:translate(-50%,-62%)}}
.pa-halo{
    position:fixed; z-index:99997; border:2px dashed var(--st-primary, #6d78c9); border-radius:10px;
    pointer-events:none; opacity:0; transition:opacity .25s;
    box-shadow:0 0 0 4px rgba(109,120,201,.16);
}
.pa-halo.pa-show{opacity:1; animation:pa-halop 1.4s ease-in-out infinite}
@keyframes pa-halop{0%,100%{box-shadow:0 0 0 4px rgba(109,120,201,.16)}50%{box-shadow:0 0 0 10px transparent}}

/* ---- 头旁聊天挂件按钮（液态玻璃小圆钮；面板开启时退场） ---- */
.pa-chat-fab{
    position:absolute; right:6px; top:calc(4% + var(--pa-headroom, 0px)); z-index:2;
    width:30px; height:30px; padding:0; display:grid; place-items:center;
    border:none; border-radius:50%; cursor:pointer;
    color:var(--st-primary, #6d78c9);
    background:
        linear-gradient(180deg, rgba(255,255,255,.55), rgba(255,255,255,.04) 58%),
        var(--pa-glass, rgba(255,255,255,.5));
    -webkit-backdrop-filter:blur(28px) saturate(2); backdrop-filter:blur(28px) saturate(2);
    box-shadow:
        0 6px 16px rgba(32,42,100,.2),
        0 1.5px 5px rgba(32,42,100,.12),
        inset 0 1px 0 rgba(255,255,255,.85),
        inset 0 0 0 1px rgba(255,255,255,.34);
    animation:pa-fab-bob 3.4s ease-in-out infinite;
    transition:transform .24s cubic-bezier(.34,1.5,.5,1), box-shadow .24s, opacity .2s;
}
.pa-chat-fab svg{display:block; width:13px; height:13px}
.pa-chat-fab:hover{
    transform:translateY(-2px) scale(1.12);
    box-shadow:0 10px 24px rgba(32,42,100,.3), inset 0 1px 0 rgba(255,255,255,.9), inset 0 0 0 1px rgba(255,255,255,.42);
}
.pa-chat-fab:active{transform:scale(.88); transition-duration:.08s}
.pa-chat-fab.pa-gone{opacity:0; transform:scale(.4); pointer-events:none}
@keyframes pa-fab-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}

/* ================================================================
 * AI 聊天面板 · 液态玻璃（macOS/iOS 26 风格）
 * 悬浮玻璃大圆角卡片 + 镜面描边 + 分层光影 + 弹性弹出
 * ================================================================ */
.pa-chat{
    position:fixed; left:0; bottom:0; z-index:100000;
    width:min(358px, calc(100vw - 24px));
    display:none; flex-direction:column; overflow:hidden;
    border-radius:28px; border:none;
    background:
        linear-gradient(180deg, rgba(255,255,255,.4), rgba(255,255,255,.1) 24%, rgba(255,255,255,0) 48%),
        var(--pa-glass-strong, rgba(255,255,255,.44));
    -webkit-backdrop-filter:blur(58px) saturate(2.1); backdrop-filter:blur(58px) saturate(2.1);
    box-shadow:
        0 32px 90px rgba(24,28,76,.26),
        0 8px 24px rgba(24,28,76,.11),
        inset 0 1px 0 rgba(255,255,255,.75);
    font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
    transform-origin:bottom left;
}
.pa-chat.pa-chat--left{transform-origin:bottom right}
.pa-chat.pa-open{display:flex; animation:pa-chat-pop .52s cubic-bezier(.3,1.4,.42,1)}
@keyframes pa-chat-pop{
    0%{opacity:0; transform:translateY(24px) scale(.9)}
    55%{opacity:1}
    100%{opacity:1; transform:none}
}
/* 玻璃边缘镜面描边 */
.pa-chat::before{
    content:""; position:absolute; inset:0; border-radius:inherit; padding:1.2px; z-index:3;
    background:linear-gradient(160deg, rgba(255,255,255,.95), rgba(255,255,255,.3) 28%, rgba(150,160,215,.14) 58%, rgba(255,255,255,.5) 92%);
    -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
    -webkit-mask-composite:xor; mask-composite:exclude;
    pointer-events:none;
}
/* 角落柔光反射：液态玻璃的“透镜感” */
.pa-chat::after{
    content:""; position:absolute; inset:0; border-radius:inherit; z-index:0; pointer-events:none;
    background:
        radial-gradient(120% 70% at 12% -8%, rgba(255,255,255,.5), rgba(255,255,255,0) 46%),
        radial-gradient(80% 50% at 108% 112%, rgba(255,255,255,.22), rgba(255,255,255,0) 42%);
}
.pa-chat-head, .pa-chat-list, .pa-chat-form{position:relative; z-index:1}

.pa-chat-head{
    display:flex; align-items:center; gap:11px; padding:14px 13px 12px 16px;
    border-bottom:1px solid rgba(150,160,215,.15);
}
.pa-chat-ava{
    width:40px; height:40px; border-radius:50%; overflow:hidden; flex:0 0 40px;
    background:linear-gradient(180deg, #eef0fb, #dfe3f6);
    box-shadow:
        0 0 0 2px rgba(255,255,255,.85),
        0 0 0 3.5px rgba(120,140,220,.28),
        0 6px 16px rgba(50,60,130,.24);
}
.pa-chat-ava img{width:100%; height:200%; object-fit:cover; object-position:top center; display:block}
.pa-chat-who{display:grid; line-height:1.3; min-width:0}
.pa-chat-who strong{font-size:15px; font-weight:800; color:var(--st-text, #1d1f31); letter-spacing:.2px}
.pa-chat-who small{display:flex; align-items:center; gap:5px; font-size:11.5px; font-weight:500; color:var(--st-text-muted, #878da9)}
.pa-dot{width:6px; height:6px; border-radius:50%; background:#34c77b; box-shadow:0 0 0 2.5px rgba(52,199,123,.18), 0 0 7px rgba(52,199,123,.8); animation:pa-dot-breathe 2.6s ease-in-out infinite}
@keyframes pa-dot-breathe{0%,100%{opacity:1}50%{opacity:.5}}
.pa-chat-tools{margin-left:auto; display:flex; gap:5px}
.pa-chat-tool{
    width:31px; height:31px; display:grid; place-items:center; padding:0;
    border:0; border-radius:50%; background:transparent; cursor:pointer;
    color:var(--st-text-muted, #8b90ab);
    transition:background .18s, color .18s, box-shadow .18s, transform .15s cubic-bezier(.34,1.5,.5,1);
}
.pa-chat-tool:hover{
    color:var(--st-primary, #6d78c9);
    background:rgba(255,255,255,.6);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.7), inset 0 1px 0 rgba(255,255,255,.9), 0 3px 9px rgba(40,50,115,.14);
}
.pa-chat-tool:active{transform:scale(.88)}
/* 清空按钮的二次确认态 */
.pa-chat-tool.pa-armed{
    color:#e5484d; background:rgba(229,72,77,.13);
    box-shadow:inset 0 0 0 1px rgba(229,72,77,.25);
    animation:pa-arm-shake .32s ease;
}
@keyframes pa-arm-shake{20%{transform:translateX(-2px) rotate(-4deg)}60%{transform:translateX(2px) rotate(4deg)}}

.pa-chat-list{
    flex:1; min-height:132px; max-height:min(52vh, 430px); overflow-y:auto;
    padding:14px 14px 10px; display:flex; flex-direction:column; gap:9px;
    overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:rgba(120,130,185,.35) transparent;
}
.pa-chat-list::-webkit-scrollbar{width:3px}
.pa-chat-list::-webkit-scrollbar-thumb{background:rgba(120,130,185,.32); border-radius:4px}
.pa-msg{
    max-width:82%; padding:10px 14px; border-radius:20px; position:relative;
    font-size:14px; line-height:1.66; letter-spacing:.15px;
    white-space:pre-wrap; word-break:break-word;
    animation:pa-msg-in .4s cubic-bezier(.32,1.45,.5,1) both;
}
@keyframes pa-msg-in{0%{opacity:0; transform:translateY(10px) scale(.96)}100%{opacity:1; transform:none}}
/* 看板娘：内嵌玻璃气泡 */
.pa-msg-bot{
    align-self:flex-start; color:var(--st-text, #22243a);
    border-bottom-left-radius:8px;
    background:
        linear-gradient(180deg, rgba(255,255,255,.55), rgba(255,255,255,.08) 62%),
        rgba(255,255,255,.5);
    -webkit-backdrop-filter:blur(18px) saturate(1.6); backdrop-filter:blur(18px) saturate(1.6);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,.85),
        inset 0 0 0 1px rgba(255,255,255,.35),
        0 3px 10px rgba(40,50,115,.08);
}
/* 用户：主题色高光玻璃 */
.pa-msg-me{
    align-self:flex-end; color:#fff;
    border-bottom-right-radius:8px;
    background:
        linear-gradient(180deg, rgba(255,255,255,.3), rgba(255,255,255,0) 55%),
        linear-gradient(165deg, var(--st-primary, #7b86d6), var(--st-primary-hover, #5f6bc2));
    box-shadow:
        0 8px 20px rgba(80,100,210,.32),
        inset 0 1px 0 rgba(255,255,255,.45),
        inset 0 0 0 1px rgba(255,255,255,.12);
    text-shadow:0 1px 1px rgba(20,30,80,.1);
}
.pa-msg-sys{
    align-self:center; color:var(--st-text-muted, #8f94b3);
    font-size:11.5px; padding:4px 12px; border-radius:999px;
    background:rgba(140,150,200,.12);
    box-shadow:inset 0 0 0 1px rgba(140,150,200,.15);
}

/* 一体式输入胶囊：输入框与发送键融合在同一片玻璃里 */
.pa-chat-form{
    display:flex; gap:6px; align-items:center;
    margin:8px 12px 14px; padding:4px 4px 4px 12px;
    border-radius:999px;
    background:
        linear-gradient(180deg, rgba(255,255,255,.42), rgba(255,255,255,.05) 62%),
        rgba(255,255,255,.4);
    -webkit-backdrop-filter:blur(18px) saturate(1.6); backdrop-filter:blur(18px) saturate(1.6);
    box-shadow:
        inset 0 0 0 1px rgba(160,170,215,.26),
        inset 0 1px 0 rgba(255,255,255,.7),
        0 4px 14px rgba(30,40,95,.09);
    transition:box-shadow .22s ease;
}
.pa-chat-form:focus-within{
    box-shadow:
        inset 0 0 0 1.5px var(--st-primary, #6d78c9),
        0 0 0 4px rgba(109,125,215,.14),
        0 4px 14px rgba(30,40,95,.08);
}
.pa-chat-input{
    flex:1; min-width:0; height:38px; padding:0 6px; font:500 14px/1.4 inherit;
    letter-spacing:.15px;
    color:var(--st-text, #22243a);
    background:transparent; border:none; outline:none; box-shadow:none;
}
.pa-chat-input::placeholder{color:var(--st-text-muted, #9aa0bd)}
.pa-chat-send{
    flex:0 0 auto; width:36px; height:36px; display:grid; place-items:center; padding:0;
    border:0; border-radius:50%; cursor:pointer; color:#fff;
    background:
        linear-gradient(180deg, rgba(255,255,255,.34), rgba(255,255,255,0) 55%),
        linear-gradient(165deg, var(--st-primary, #7b86d6), var(--st-primary-hover, #5f6bc2));
    box-shadow:
        0 5px 14px rgba(80,100,210,.4),
        inset 0 1px 0 rgba(255,255,255,.55),
        inset 0 0 0 1px rgba(255,255,255,.14);
    transition:transform .22s cubic-bezier(.34,1.5,.5,1), box-shadow .22s, opacity .25s, filter .25s;
}
.pa-chat-send svg{display:block; margin-left:1px; width:14px; height:14px}
.pa-chat-send:hover{transform:scale(1.08); box-shadow:0 8px 20px rgba(80,100,210,.48), inset 0 1px 0 rgba(255,255,255,.6), inset 0 0 0 1px rgba(255,255,255,.16)}
.pa-chat-send:active{transform:scale(.88); transition-duration:.08s}
.pa-chat-send:disabled{opacity:.45; cursor:default; transform:none; filter:saturate(.4)}
/* 输入为空时发送键静默降饱和（可点但示意无内容） */
.pa-chat-send.pa-empty{opacity:.55; filter:saturate(.25); transform:none; box-shadow:0 3px 10px rgba(60,70,140,.18), inset 0 1px 0 rgba(255,255,255,.4)}
/* ---- 消息 Markdown：代码块(带复制)/行内码/链接/列表 ---- */
.pa-msg .pa-code{
    display:block; position:relative; margin:7px 0 4px; padding:9px 12px; padding-right:60px;
    border-radius:12px;
    background:rgba(38,42,66,.92); color:#e9edff;
    font:500 12.5px/1.65 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.08), 0 2px 8px rgba(30,35,90,.14);
}
.pa-msg .pa-code code{display:block; white-space:pre-wrap; word-break:break-all; background:none; color:inherit; font:inherit}
.pa-copy{
    position:absolute; top:6px; right:6px;
    padding:4.5px 11px; border:none; border-radius:999px; cursor:pointer;
    font:600 11px/1 "PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
    color:#dfe4ff;
    background:rgba(255,255,255,.14);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);
    transition:background .15s, transform .15s, color .15s;
}
.pa-copy:hover{background:rgba(255,255,255,.25)}
.pa-copy:active{transform:scale(.92)}
.pa-copy.pa-copied{color:#8ff0b4; background:rgba(70,200,120,.18)}
.pa-msg .pa-ic{
    padding:1.5px 7px; border-radius:7px; margin:0 1px;
    background:rgba(120,130,190,.16);
    font:600 12.5px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    word-break:break-all;
}
.pa-msg-me .pa-ic{background:rgba(255,255,255,.22)}
.pa-msg .pa-li{margin-right:6px; color:var(--st-primary, #6d78c9); font-weight:800}
.pa-msg-me .pa-li{color:#fff}
.pa-msg a.pa-link{color:var(--st-primary, #5f6bc2); text-decoration:underline; text-underline-offset:2.5px; word-break:break-all}
.pa-msg-me a.pa-link{color:#fff}
:root[data-theme="dark"] .pa-msg .pa-code{background:rgba(14,16,28,.88)}
:root[data-theme="dark"] .pa-msg .pa-ic{background:rgba(255,255,255,.12)}

/* ---- 聊天内动作卡片：确认 / 支付列表 / 登录 / 验证码 ---- */
.pa-card{max-width:92%; width:min(302px, 100%); padding:12px 14px 12px}
.pa-card-title{font-weight:800; font-size:13.5px; margin-bottom:6px; color:var(--st-text, #1d1f31)}
.pa-card-text{font-size:12.5px; line-height:1.62; color:var(--st-text-muted, #6f7590); margin-bottom:8px; white-space:pre-wrap}
.pa-card-row{display:flex; gap:8px; justify-content:flex-end; margin-top:6px}
.pa-card-btn{
    padding:8px 17px; border:none; border-radius:999px; cursor:pointer;
    font:600 12.5px/1 inherit; color:var(--st-text, #2a2d3d); letter-spacing:.3px;
    background:rgba(140,150,200,.14);
    box-shadow:inset 0 0 0 1px rgba(140,150,200,.18);
    transition:transform .18s cubic-bezier(.34,1.5,.5,1), filter .18s, box-shadow .18s;
}
.pa-card-btn:hover{filter:brightness(1.04); transform:translateY(-1px)}
.pa-card-btn:active{transform:scale(.94)}
.pa-card-btn:disabled{opacity:.5; cursor:default; transform:none}
.pa-card-primary{
    color:#fff;
    background:
        linear-gradient(180deg, rgba(255,255,255,.3), rgba(255,255,255,0) 55%),
        linear-gradient(165deg, var(--st-primary, #7b86d6), var(--st-primary-hover, #5f6bc2));
    box-shadow:0 5px 14px rgba(80,100,210,.35), inset 0 1px 0 rgba(255,255,255,.45);
}
.pa-card-pays{display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:4px 0 2px}
.pa-card-pay{
    display:flex; align-items:center; justify-content:center; gap:6px;
    padding:10px; border:none; border-radius:13px; cursor:pointer;
    font:600 12.5px/1 inherit; color:var(--st-text, #2a2d3d);
    background:rgba(255,255,255,.55);
    box-shadow:inset 0 0 0 1px rgba(150,160,215,.25), inset 0 1px 0 rgba(255,255,255,.7), 0 2px 8px rgba(40,50,115,.08);
    transition:transform .18s cubic-bezier(.34,1.5,.5,1), box-shadow .18s;
}
.pa-card-pay:hover{transform:translateY(-1.5px); box-shadow:inset 0 0 0 1.5px var(--st-primary, #6d78c9), 0 6px 14px rgba(40,50,115,.14)}
.pa-card-pay:active{transform:scale(.96)}
.pa-card-pay img{width:18px; height:18px; object-fit:contain}
.pa-card-captcha{display:flex; gap:8px; align-items:center; margin:6px 0 2px}
.pa-card-capimg{height:38px; min-width:96px; border-radius:9px; cursor:pointer; background:#fff; box-shadow:inset 0 0 0 1px rgba(150,160,215,.3)}
.pa-card-input{
    flex:1; min-width:0; height:36px; padding:0 13px; border:none; outline:none; border-radius:999px;
    font:500 13px/1 inherit; color:var(--st-text, #22243a);
    background:rgba(255,255,255,.55);
    box-shadow:inset 0 0 0 1px rgba(150,160,215,.3);
    transition:box-shadow .2s;
}
.pa-card-input:focus{box-shadow:inset 0 0 0 1.5px var(--st-primary, #6d78c9)}
.pa-card-note{margin-top:8px; font-size:11.5px; line-height:1.5; color:var(--st-text-muted, #8f94b3)}
.pa-card-done .pa-card-row, .pa-card-done .pa-card-pays, .pa-card-done .pa-card-captcha{display:none}
:root[data-theme="dark"] .pa-card-title{color:#eef0fb}
:root[data-theme="dark"] .pa-card-btn{color:#eef0fb; background:rgba(255,255,255,.1); box-shadow:inset 0 0 0 1px rgba(255,255,255,.12)}
:root[data-theme="dark"] .pa-card-pay{color:#eef0fb; background:rgba(64,68,96,.5); box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
:root[data-theme="dark"] .pa-card-input{color:#eef0fb; background:rgba(20,22,34,.5); box-shadow:inset 0 0 0 1px rgba(255,255,255,.13)}

.pa-typing{display:inline-flex; gap:4.5px; align-items:center; padding:5px 2px}
.pa-typing i{width:6.5px; height:6.5px; border-radius:50%; background:var(--st-primary, #6d78c9); opacity:.4; animation:pa-ty 1.15s ease-in-out infinite}
.pa-typing i:nth-child(2){animation-delay:.18s}
.pa-typing i:nth-child(3){animation-delay:.36s}
@keyframes pa-ty{0%,100%{opacity:.3; transform:translateY(0)}50%{opacity:1; transform:translateY(-3.5px)}}

/* ---- 手机端：悬浮底部面板 ---- */
@media (max-width:560px){
    .pa-chat{
        left:10px !important; right:10px !important;
        bottom:calc(10px + env(safe-area-inset-bottom, 0px)) !important;
        width:auto; border-radius:26px; transform-origin:bottom center;
    }
    .pa-chat-list{max-height:46vh}
    .pa-bubble{max-width:198px; font-size:12.5px; padding:9px 13px 10px}
}

/* ---- 深色主题跟随（站点主题令牌存在时自动生效） ---- */
:root[data-theme="dark"] .pa-bubble,
:root[data-theme="dark"] .pa-chat,
:root[data-theme="dark"] .pa-chat-fab{
    --pa-glass:rgba(42,45,64,.55); --pa-glass-strong:rgba(31,33,49,.6);
    color:#eef0fb;
}
:root[data-theme="dark"] .pa-bubble{
    background:
        linear-gradient(180deg, rgba(255,255,255,.1), rgba(255,255,255,.02) 45%, rgba(255,255,255,0) 68%),
        var(--pa-glass);
    box-shadow:0 18px 44px rgba(0,0,6,.45), 0 3px 10px rgba(0,0,6,.3), inset 0 1px 0 rgba(255,255,255,.16), inset 0 -1px 0 rgba(0,0,0,.2);
}
:root[data-theme="dark"] .pa-bubble::before{
    background:linear-gradient(155deg, rgba(255,255,255,.38), rgba(255,255,255,.1) 34%, rgba(255,255,255,.03) 60%, rgba(255,255,255,.16));
}
:root[data-theme="dark"] .pa-bubble::after{box-shadow:inset 0 1px 0 rgba(255,255,255,.16), 0 4px 10px rgba(0,0,6,.3)}
:root[data-theme="dark"] .pa-chat{
    background:
        linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.03) 24%, rgba(255,255,255,0) 48%),
        var(--pa-glass-strong);
    box-shadow:0 32px 90px rgba(0,0,8,.55), 0 8px 24px rgba(0,0,8,.35), inset 0 1px 0 rgba(255,255,255,.14);
}
:root[data-theme="dark"] .pa-chat::before{
    background:linear-gradient(160deg, rgba(255,255,255,.35), rgba(255,255,255,.1) 28%, rgba(255,255,255,.03) 58%, rgba(255,255,255,.14) 92%);
}
:root[data-theme="dark"] .pa-chat-fab{
    background:
        linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,0) 55%),
        var(--pa-glass);
    box-shadow:0 8px 22px rgba(0,0,8,.5), inset 0 1px 0 rgba(255,255,255,.2), inset 0 0 0 1px rgba(255,255,255,.1);
}
:root[data-theme="dark"] .pa-chat-head,
:root[data-theme="dark"] .pa-chat-form{border-color:rgba(255,255,255,.09)}
:root[data-theme="dark"] .pa-chat-who strong{color:#eef0fb}
:root[data-theme="dark"] .pa-chat-tool:hover{background:rgba(255,255,255,.1); box-shadow:inset 0 0 0 1px rgba(255,255,255,.14), 0 3px 9px rgba(0,0,8,.3)}
:root[data-theme="dark"] .pa-msg-bot{
    color:#eef0fb;
    background:
        linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.02) 62%),
        rgba(64,68,96,.5);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.14), inset 0 0 0 1px rgba(255,255,255,.08), 0 3px 10px rgba(0,0,8,.25);
}
:root[data-theme="dark"] .pa-msg-sys{background:rgba(255,255,255,.07); box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
:root[data-theme="dark"] .pa-chat::after{
    background:
        radial-gradient(120% 70% at 12% -8%, rgba(255,255,255,.13), rgba(255,255,255,0) 46%),
        radial-gradient(80% 50% at 108% 112%, rgba(255,255,255,.05), rgba(255,255,255,0) 42%);
}
:root[data-theme="dark"] .pa-chat-form{
    background:
        linear-gradient(180deg, rgba(255,255,255,.09), rgba(255,255,255,0) 62%),
        rgba(18,20,32,.5);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.12), inset 0 1px 0 rgba(255,255,255,.1), 0 4px 14px rgba(0,0,8,.3);
}
:root[data-theme="dark"] .pa-chat-form:focus-within{
    box-shadow:inset 0 0 0 1.5px var(--st-primary, #7d88dd), 0 0 0 4px rgba(120,135,230,.16), 0 4px 14px rgba(0,0,8,.25);
}
:root[data-theme="dark"] .pa-chat-input{color:#eef0fb; background:transparent; box-shadow:none}
:root[data-theme="dark"] .pa-sign{background:#f5f2e8; border-color:#2e2a3a}

/* ---- 无障碍：减少动态 ---- */
@media (prefers-reduced-motion:reduce){
    .pa-anim, .pa-pointer, .pa-halo, .pa-chat-fab, .pa-dot{animation:none !important}
    .pa-bubble, .pa-chat-fab, .pa-chat-send, .pa-chat-tool{transition:none}
    .pa-chat.pa-open{animation:none}
    .pa-msg{animation:none}
}
