/**
 * AI 聊天助手 - 样式
 *
 * 路径：assets/css/ai-selector-chat.css
 * 仅在 page-ai-chat.php 模板加载（见 inc/ai-selector/ai-selector-assets.php）。
 *
 * 约定：
 *  - 类名前缀 spraydryerb2b-aisc-（遵循主题 spraydryerb2b- 前缀规范）
 *  - 颜色 / 圆角 / 阴影优先复用主题 CSS 变量，均带兜底值
 */

/* ============ 页面容器 ============ */
/*
 * PC 端采用「App 式全宽布局」：整页铺满、白色主区无边框无圆角无阴影，
 * 而不是灰底上的一张居中 900px 小卡片（那样在宽屏上显得小气）。
 * 顶部栏 / 欢迎区 / 输入卡各自限宽居中，保证大屏上内容不散。
 */
.spraydryerb2b-aisc-page {
    padding: 0;
    background: #fff;
}

/*
 * 盒模型归位：主题没有全局 box-sizing: border-box，
 * 本模块容器 + 内边距的组合会按 content-box 计算而撑破父级，
 * 因此在模块范围内统一 border-box（不污染主题其它区域）。
 */
.spraydryerb2b-aisc,
.spraydryerb2b-aisc *,
.spraydryerb2b-aisc *::before,
.spraydryerb2b-aisc *::after {
    box-sizing: border-box;
}

/* 内容限宽（大屏不散、小屏自适应） */
.spraydryerb2b-aisc {
    /*
     * 聊天区内容列宽：宽屏下铺满 1488px 反而不易读（对话/表单都拉得太长），
     * 因此内容列定死在舒适宽度并居中；页面仍是全宽白底，与其它页面的视觉基调一致。
     *   960px ≈ 一行 40~45 个汉字，输入卡 900px，接近主流 AI 对话产品的可读宽度。
     * 视口变窄时 max-width 自然不生效，靠 padding 24px 兜底。
     */
    --aisc-content: 960px;
    --aisc-composer: 900px;

    display: flex;
    /*
     * 左右两栏：左侧信息/操作栏（品牌 + 一句话描述 + 历史会话/新会话）
     * + 右侧聊天主区。顶部栏移走后聊天区多拿约 76px 高度。
     */
    flex-direction: row;
    align-items: stretch;
    width: 100%;
    /*
     * 与站点其它页面对齐：复用主题容器变量 + 同样的 24px 内边距，
     * 使左栏左边缘 = 其它页面内容左边缘（1440 视口下均为 141px）。
     * 响应式无需另写：--container 在 1520/1200/1024 断点会自动变化。
     */
    max-width: var(--container, 1488px);
    margin: 0 auto;
    padding: 0 24px;
    /* 对话态：固定高度，消息区内部滚动 */
    height: calc(100vh - 170px);
    min-height: 660px;
    background: #fff;
    border: 0;
    border-radius: 0;
    box-shadow: none;
    overflow: hidden;
}

/* 聊天主区：承载 hero / 消息列表 / 输入卡（内容列仍按 --aisc-content 居中限宽） */
.spraydryerb2b-aisc-main {
    flex: 1;
    min-width: 0;
    /*
     * 关键：min-height: 0
     * flex 子项默认 min-height: auto，会被内容顶高 —— 消息一多主区就撑破容器，
     * 消息区因此永远不触发内部滚动，底部（输入卡 + 最后几条消息）被容器
     * overflow:hidden 裁掉，页面也不可滚 → 手机端「聊完滑不动」。
     */
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/*
 * 欢迎态（无消息）
 *
 * 高度策略：容器 height:auto + min-height（撑满一屏的观感），
 * 欢迎区用 flex: 1 0 auto ——
 *   · 有富余高度时伸展并让内容垂直居中，输入卡自然贴底；
 *   · 内容高于可用空间时「绝不压缩」，由页面滚动，绝不被裁切。
 * （反例：写死 height + overflow:hidden 会把输入卡裁掉；
 *   写 overflow-y:auto 则会把数据卡从中间截断，观感更像坏了。）
 */
.spraydryerb2b-aisc.is-welcome {
    height: auto;
    min-height: calc(100vh - 200px);
}

/* 欢迎态隐藏空消息区，让欢迎区占据剩余空间并垂直居中，输入卡贴底 */
.spraydryerb2b-aisc.is-welcome .spraydryerb2b-aisc-messages {
    display: none;
}

.spraydryerb2b-aisc.is-welcome .spraydryerb2b-aisc-hero {
    flex: 1 0 auto;
    overflow: visible;
    display: flex;
    justify-content: center;
}

/*
 * 矮窗口紧凑化：把欢迎区整体压小，保证「Logo + 招呼语 + 数据卡 + 输入卡」
 * 在 700~760px 高的屏幕上仍能一屏放下。
 */
/*
 * 矮窗口紧凑化规则已移至文件末尾（必须排在基础样式之后才生效：
 * 同权重选择器下 CSS 后写的赢，原先写在前面被基础样式整段覆盖，等于没生效）。
 */

/* ============ 左侧信息 / 操作栏 ============ */
.spraydryerb2b-aisc-side {
    flex: 0 0 252px;
    width: 252px;
    display: flex;
    flex-direction: column;
    gap: 18px;
    padding: 22px 18px;
    background: linear-gradient(180deg, #fbfcff 0%, #f5f7fc 100%);
    border-right: 1px solid var(--gray-100, #f3f4f6);
}

.spraydryerb2b-aisc-side-brand {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.spraydryerb2b-aisc-side-logo {
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: linear-gradient(135deg, #6366f1 0%, #a855f7 45%, #ec4899 75%, #f59e0b 100%);
    box-shadow: 0 6px 16px rgba(168, 85, 247, .28);
}

.spraydryerb2b-aisc-side-logo span {
    font-size: 1.0625rem;
    font-weight: 800;
    letter-spacing: -1px;
    color: #fff;
}

.spraydryerb2b-aisc-side-heading {
    min-width: 0;
}

/* 侧栏内标题/副标题：字号收紧，避免在窄栏里折成多行 */
.spraydryerb2b-aisc-side .spraydryerb2b-aisc-title {
    font-size: 1rem;
    line-height: 1.45;
}

.spraydryerb2b-aisc-side .spraydryerb2b-aisc-subtitle {
    margin-top: 6px;
    font-size: .75rem;
    line-height: 1.65;
}

.spraydryerb2b-aisc-side-actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* 侧栏按钮：撑满整行 */
.spraydryerb2b-aisc-side-actions .spraydryerb2b-aisc-new-btn,
.spraydryerb2b-aisc-side-actions .spraydryerb2b-aisc-ghost-btn {
    width: 100%;
    justify-content: center;
    padding: 9px 12px;
    font-size: .8125rem;
}

.spraydryerb2b-aisc-side-actions .spraydryerb2b-aisc-new-btn {
    color: #fff;
    background: linear-gradient(135deg, #2563eb 0%, #6366f1 100%);
    border-color: transparent;
    border-radius: 10px;
    box-shadow: 0 3px 10px rgba(37, 99, 235, .24);
    transition: transform .15s ease, box-shadow .15s ease;
}

.spraydryerb2b-aisc-side-actions .spraydryerb2b-aisc-new-btn:hover {
    color: #fff;
    border-color: transparent;
    transform: translateY(-1px);
    box-shadow: 0 5px 14px rgba(37, 99, 235, .3);
}

/* 侧栏内的历史面板：由浮层下拉改为就地展开 */
.spraydryerb2b-aisc-side .spraydryerb2b-aisc-history {
    width: 100%;
}

.spraydryerb2b-aisc-side .spraydryerb2b-aisc-history-panel {
    position: static;
    top: auto;
    right: auto;
    width: 100%;
    max-width: 100%;
    max-height: 260px;
    margin-top: 8px;
    border-radius: 10px;
    box-shadow: none;
}

/* 侧栏底部说明：贴底 */
.spraydryerb2b-aisc-side-foot {
    margin: auto 0 0;
    font-size: .75rem;
    line-height: 1.7;
    color: var(--gray-400, #9ca3af);
}

.spraydryerb2b-aisc-title {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--dark, #111827);
}

.spraydryerb2b-aisc-subtitle {
    margin: 4px 0 0;
    font-size: .8125rem;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-new-btn {
    flex: 0 0 auto;
    padding: 6px 14px;
    font-size: .8125rem;
    color: var(--gray-500, #6b7280);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 6px;
    cursor: pointer;
}

.spraydryerb2b-aisc-new-btn:hover {
    color: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
}

/* ============ 消息列表 ============ */
.spraydryerb2b-aisc-messages {
    flex: 1;
    width: 100%;
    /*
     * 铺满聊天主区：左边缘贴左栏、右边缘对齐页面内容右边。
     * 左右留 20px 呼吸位 —— 气泡若完全贴着左栏分隔线（0 留白）显得太挤，
     * 这里给气泡区一个内缩，输入卡仍保持贴齐左栏与页面右边缘。
     */
    max-width: none;
    margin: 0;
    /* min-height: 0 同上：不设的话消息区会被内容顶高，内部滚动永远不生效 */
    min-height: 0;
    overflow-y: auto;
    /* iOS 惯性滚动 + 阻止滚动链（滚到底不要带着整页一起滚） */
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    padding: 22px 20px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    background: #fff;
}

/* 输入卡与状态条固定自身高度，不参与拉伸/压缩（避免被压扁或挤出容器） */
.spraydryerb2b-aisc-composer,
.spraydryerb2b-aisc-status {
    flex: 0 0 auto;
}

.spraydryerb2b-aisc-msg {
    display: flex;
}

.spraydryerb2b-aisc-msg.is-user {
    justify-content: flex-end;
}

.spraydryerb2b-aisc-msg.is-ai {
    justify-content: flex-start;
}

.spraydryerb2b-aisc-bubble {
    max-width: 78%;
    padding: 10px 14px;
    border-radius: 10px;
    font-size: .9375rem;
    line-height: 1.75;
    white-space: pre-wrap;
    word-break: break-word;
}

.spraydryerb2b-aisc-msg.is-user .spraydryerb2b-aisc-bubble {
    background: var(--primary, #2563eb);
    color: #fff;
    border-bottom-right-radius: 2px;
}

.spraydryerb2b-aisc-msg.is-ai .spraydryerb2b-aisc-bubble {
    background: var(--gray-100, #f3f4f6);
    color: var(--dark, #111827);
    border-bottom-left-radius: 2px;
}

/* 打字指示 */
.spraydryerb2b-aisc-msg.is-typing .spraydryerb2b-aisc-bubble {
    display: flex;
    align-items: center;
    gap: 4px;
    min-height: 22px;
}

.spraydryerb2b-aisc-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--gray-400, #9ca3af);
    animation: spraydryerb2b-aisc-blink 1.2s infinite ease-in-out;
}

.spraydryerb2b-aisc-dot:nth-child(2) {
    animation-delay: .2s;
}

.spraydryerb2b-aisc-dot:nth-child(3) {
    animation-delay: .4s;
}

@keyframes spraydryerb2b-aisc-blink {
    0%, 80%, 100% { opacity: .3; transform: translateY(0); }
    40%           { opacity: 1;  transform: translateY(-3px); }
}

/* ============ 状态提示 ============ */
.spraydryerb2b-aisc-status {
    margin: 0;
    padding: 8px 20px;
    font-size: .8125rem;
    color: var(--danger, #ef4444);
    background: #fef2f2;
    border-top: 1px solid #fecaca;
}

/* ============ 输入区（卡片式） ============ */
.spraydryerb2b-aisc-composer {
    /*
     * 输入卡铺满聊天主区：
     *   左边缘 = 左栏右边缘（贴齐）
     *   右边缘 = 页面内容右边缘（与其它页面对齐）
     *
     * 美化：渐变描边（padding-box / border-box 双层背景）+ 柔和投影 + 18px 大圆角，
     * 比单纯 1px 灰边更有质感，同时不引入图片资源。
     */
    position: relative;
    margin: 0 0 14px;
    width: 100%;
    max-width: none;
    background:
        linear-gradient(180deg, #ffffff 0%, #fdfdff 100%) padding-box,
        linear-gradient(135deg, #dbe4fb 0%, #e9e6fb 50%, #dff0ff 100%) border-box;
    border: 1px solid transparent;
    border-radius: 18px;
    box-shadow: 0 10px 30px rgba(31, 45, 80, .08), 0 1px 2px rgba(31, 45, 80, .04);
    overflow: hidden;
    transition: box-shadow .22s ease, background .22s ease;
}

/* 顶部一小段渐变细线：给输入卡一个视觉锚点（不抢焦点） */
.spraydryerb2b-aisc-composer::before {
    content: '';
    position: absolute;
    top: 0;
    left: 22px;
    right: 22px;
    height: 2px;
    border-radius: 0 0 3px 3px;
    background: linear-gradient(90deg, #6366f1 0%, #a855f7 40%, #ec4899 70%, #f59e0b 100%);
    opacity: .5;
    pointer-events: none;
}

/* 聚焦：描边与光晕转为蓝色系 */
.spraydryerb2b-aisc-composer:focus-within {
    background:
        linear-gradient(180deg, #ffffff 0%, #fbfdff 100%) padding-box,
        linear-gradient(135deg, #93b4fb 0%, #b79cf7 55%, #8ecbff 100%) border-box;
    box-shadow: 0 12px 34px rgba(37, 99, 235, .16), 0 0 0 4px rgba(37, 99, 235, .06);
}

/* 拖拽图片到输入卡时的提示态 */
.spraydryerb2b-aisc-composer.is-dragover {
    background:
        linear-gradient(180deg, #ffffff 0%, #f5f9ff 100%) padding-box,
        linear-gradient(135deg, #2563eb 0%, #7c3aed 100%) border-box;
    box-shadow: 0 0 0 4px var(--primary-light, #eff6ff);
}

.spraydryerb2b-aisc-composer-head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px 0;
}

.spraydryerb2b-aisc-composer-badge {
    flex: 0 0 26px;
    width: 26px;
    height: 26px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .8125rem;
    font-weight: 700;
    color: #fff;
    background: linear-gradient(135deg, #6366f1 0%, #a855f7 50%, #ec4899 100%);
    border-radius: 8px;
    box-shadow: 0 3px 9px rgba(168, 85, 247, .26);
}

.spraydryerb2b-aisc-composer-cap {
    display: flex;
    flex-direction: row;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 2px 8px;
    min-width: 0;
}

.spraydryerb2b-aisc-composer-cap strong {
    font-size: .875rem;
    color: var(--dark, #111827);
}

/* 副标题做成同行弱化文本：整体高度从 ~50px 收到 ~20px */
.spraydryerb2b-aisc-composer-cap em {
    font-style: normal;
    font-size: .75rem;
    color: var(--gray-400, #9ca3af);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/*
 * 输入字段：真正带圆角的输入框
 * 此前 textarea 是无边框、无底、无圆角的透明块（计算值 border-radius: 0），
 * 视觉上"输入框没有圆角"。现在用外层 wrap 做浅底 + 圆角 + 聚焦描边。
 */
.spraydryerb2b-aisc-input-wrap {
    margin: 8px 14px 0;
    background: #f7f9fc;
    border: 1px solid #eaeff7;
    border-radius: 12px;
    transition: background .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.spraydryerb2b-aisc-input-wrap:focus-within {
    background: #fff;
    border-color: var(--primary, #2563eb);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .08);
}

.spraydryerb2b-aisc-input {
    display: block;
    width: 100%;
    min-height: 40px;
    max-height: 140px;
    padding: 9px 13px;
    font-size: .9375rem;
    line-height: 1.6;
    color: var(--dark, #111827);
    background: transparent;
    border: none;
    border-radius: 12px;
    resize: none;
    overflow-y: auto;
    caret-color: var(--primary, #2563eb);
}

.spraydryerb2b-aisc-input::placeholder {
    color: #a7aeba;
}

.spraydryerb2b-aisc-input:focus {
    outline: none;
}

.spraydryerb2b-aisc-composer-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 4px 14px 12px;
}

.spraydryerb2b-aisc-tip-inline {
    font-size: .75rem;
    color: var(--gray-400, #9ca3af);
}

/* ---- 上传图片识别 ---- */
.spraydryerb2b-aisc-upload-btn {
    flex: 0 0 auto;
    margin-left: auto; /* 推到输入卡右上角 */
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    font-size: .8125rem;
    color: var(--gray-600, #4b5563);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 10px;
    cursor: pointer;
    transition: all .15s ease;
}

.spraydryerb2b-aisc-upload-btn:hover {
    color: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
    background: var(--primary-light, #eff6ff);
}

.spraydryerb2b-aisc-upload-btn:disabled {
    opacity: .5;
    cursor: not-allowed;
}

/* 已选图片预览 */
.spraydryerb2b-aisc-preview {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 12px 22px 0;
    padding: 10px;
    background: var(--gray-50, #f9fafb);
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 12px;
}

.spraydryerb2b-aisc-preview[hidden] {
    display: none;
}

.spraydryerb2b-aisc-preview-img {
    flex: 0 0 56px;
    width: 56px;
    height: 56px;
    object-fit: cover;
    border-radius: 8px;
    background: var(--gray-100, #f3f4f6);
}

.spraydryerb2b-aisc-preview-meta {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.spraydryerb2b-aisc-preview-name {
    font-size: .8125rem;
    color: var(--dark, #111827);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.spraydryerb2b-aisc-preview-meta em {
    font-style: normal;
    font-size: .75rem;
    color: var(--gray-400, #9ca3af);
}

.spraydryerb2b-aisc-preview-remove {
    flex: 0 0 26px;
    width: 26px;
    height: 26px;
    font-size: 16px;
    line-height: 1;
    color: var(--gray-500, #6b7280);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 50%;
    cursor: pointer;
}

.spraydryerb2b-aisc-preview-remove:hover {
    color: #ef4444;
    border-color: #ef4444;
}

/* 用户消息里的图片缩略 */
.spraydryerb2b-aisc-bubble-img {
    display: block;
    max-width: 220px;
    max-height: 220px;
    margin-bottom: 6px;
    border-radius: 8px;
}

.spraydryerb2b-aisc-send {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 18px 8px 20px;
    font-size: .9375rem;
    font-weight: 600;
    letter-spacing: .5px;
    color: #fff;
    background: linear-gradient(135deg, #2563eb 0%, #6366f1 100%);
    border: none;
    border-radius: 12px;
    box-shadow: 0 3px 10px rgba(37, 99, 235, .3);
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease, opacity .15s ease;
}

/* 图标在悬停时轻微右上飘动，呼应"发送" */
.spraydryerb2b-aisc-send-icon {
    flex: 0 0 auto;
    transition: transform .18s ease;
}

.spraydryerb2b-aisc-send:hover .spraydryerb2b-aisc-send-icon {
    transform: translate(2px, -2px);
}

.spraydryerb2b-aisc-send:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(37, 99, 235, .38);
}

.spraydryerb2b-aisc-send:active {
    transform: translateY(0);
    box-shadow: 0 2px 6px rgba(37, 99, 235, .3);
}

.spraydryerb2b-aisc-send:disabled {
    opacity: .6;
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
}

/* ============ 推荐产品卡（PC 一排 4 张，自动降列） ============ */
.spraydryerb2b-aisc-bubble.is-products {
    max-width: 100%;
    padding: 14px;
}

.spraydryerb2b-aisc-rc-head {
    margin-bottom: 12px;
    font-size: .9375rem;
    font-weight: 600;
    color: var(--dark, #111827);
}

/*
 * 商品卡网格：PC 一排 4 款，随宽度自动降列
 *   基 础（真 PC）：4 列 · 卡片约 216px（配套下方紧凑化规则）
 *   ≤1200px（容器收窄到 1100）：3 列
 *   ≤991px：2 列
 *   ≤768px：1 列（见文件末尾响应式段）
 * 数量由后台「AI智能选型 → 设置 → 推荐商品卡数量」控制（默认 8 = 两排）。
 */
.spraydryerb2b-aisc-rc-list {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

@media (max-width: 1200px) {
    .spraydryerb2b-aisc-rc-list {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 991px) {
    .spraydryerb2b-aisc-rc-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/*
 * 4 列紧凑化：216px 宽的卡片里字号/内边距按比例收回，
 * 保证「图 + 标题 + 供应商 + 匹配度 + 参数 + 操作」不拥挤。
 * 只在真 PC 宽度生效，平板/手机的观感不受影响。
 */
@media (min-width: 1201px) {
    .spraydryerb2b-aisc-rc-main {
        gap: 6px;
        padding: 10px;
    }

    .spraydryerb2b-aisc-rc-title {
        font-size: .875rem;
        line-height: 1.4;
    }

    .spraydryerb2b-aisc-rc-supplier {
        font-size: .6875rem;
    }

    .spraydryerb2b-aisc-rc-score {
        font-size: 1.125rem;
    }

    .spraydryerb2b-aisc-rc-chip,
    .spraydryerb2b-aisc-rc-tag {
        padding: 1px 6px;
        font-size: .6875rem;
    }

    .spraydryerb2b-aisc-rc-adv {
        font-size: .6875rem;
    }

    .spraydryerb2b-aisc-rc-btn {
        padding: 7px 8px;
        font-size: .75rem;
    }
}

.spraydryerb2b-aisc-rc-card {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 12px;
    overflow: hidden;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.spraydryerb2b-aisc-rc-card:hover {
    border-color: var(--primary, #2563eb);
    box-shadow: 0 8px 22px rgba(37, 99, 235, .12);
    transform: translateY(-2px);
}

/* 图片置顶（16:10） */
.spraydryerb2b-aisc-rc-media {
    display: block;
    position: relative;
    padding-top: 62%;
    background: var(--gray-100, #f3f4f6);
}

.spraydryerb2b-aisc-rc-media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.spraydryerb2b-aisc-rc-media.is-empty span {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .8125rem;
    color: var(--gray-400, #9ca3af);
}

.spraydryerb2b-aisc-rc-main {
    display: flex;
    flex-direction: column;
    gap: 7px;
    flex: 1;
    padding: 12px;
}

.spraydryerb2b-aisc-rc-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: .9375rem;
    font-weight: 600;
    line-height: 1.45;
    color: var(--dark, #111827);
    text-decoration: none;
}

.spraydryerb2b-aisc-rc-title:hover {
    color: var(--primary, #2563eb);
}

/* 供应商行：名称 + 已认证 + 地区 */
.spraydryerb2b-aisc-rc-supplier {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    font-size: .75rem;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-rc-supplier-name {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--gray-600, #4b5563);
}

.spraydryerb2b-aisc-rc-verified {
    padding: 0 6px;
    font-size: .6875rem;
    color: #0f7b52;
    background: #e7f8f1;
    border-radius: 3px;
}

.spraydryerb2b-aisc-rc-location::before {
    content: '·';
    margin-right: 4px;
}

/* 匹配度 */
.spraydryerb2b-aisc-rc-score-row {
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.spraydryerb2b-aisc-rc-score {
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1;
    color: var(--primary, #2563eb);
}

.spraydryerb2b-aisc-rc-score-label {
    font-size: .75rem;
    color: var(--gray-400, #9ca3af);
}

.spraydryerb2b-aisc-rc-meta,
.spraydryerb2b-aisc-rc-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.spraydryerb2b-aisc-rc-chip {
    padding: 1px 7px;
    font-size: .75rem;
    color: var(--gray-500, #6b7280);
    background: var(--gray-50, #f9fafb);
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 4px;
}

.spraydryerb2b-aisc-rc-tag {
    padding: 1px 7px;
    font-size: .75rem;
    color: var(--success, #10b981);
    background: #ecfdf5;
    border-radius: 4px;
}

.spraydryerb2b-aisc-rc-adv {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0;
    font-size: .75rem;
    line-height: 1.6;
    color: var(--gray-500, #6b7280);
}

/* 卡片操作：贴底对齐 */
.spraydryerb2b-aisc-rc-actions {
    display: flex;
    gap: 8px;
    margin-top: auto;
    padding-top: 4px;
}

.spraydryerb2b-aisc-rc-btn {
    flex: 1;
    padding: 8px 10px;
    font-size: .8125rem;
    text-align: center;
    text-decoration: none;
    color: var(--gray-600, #4b5563);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 8px;
    cursor: pointer;
    transition: all .15s ease;
}

.spraydryerb2b-aisc-rc-btn:hover {
    color: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
}

.spraydryerb2b-aisc-rc-btn.is-primary {
    color: #fff;
    background: linear-gradient(135deg, #2563eb 0%, #6366f1 100%);
    border-color: transparent;
    box-shadow: 0 3px 10px rgba(37, 99, 235, .25);
}

.spraydryerb2b-aisc-rc-btn.is-primary:hover {
    color: #fff;
}

/* ============ 供应商卡 ============ */
/*
 * 独立网格（不复用 .rc-list）：供应商卡信息量更大（logo/主营/理由/电话/按钮），
 * 一排 2 家更易读。数量由后台「推荐供应商卡数量」控制（默认 4 = 两排）。
 */
.spraydryerb2b-aisc-sc-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.spraydryerb2b-aisc-sc-card {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px;
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 12px;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.spraydryerb2b-aisc-sc-card:hover {
    border-color: var(--primary, #2563eb);
    box-shadow: 0 8px 22px rgba(37, 99, 235, .12);
    transform: translateY(-2px);
}

.spraydryerb2b-aisc-sc-head {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* logo：正方形容器 + contain（不裁切供应商标识） */
.spraydryerb2b-aisc-sc-logo {
    flex: 0 0 52px;
    width: 52px;
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    background: var(--gray-50, #f9fafb);
    border: 1px solid var(--gray-100, #f3f4f6);
    border-radius: 10px;
}

.spraydryerb2b-aisc-sc-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.spraydryerb2b-aisc-sc-logo.is-empty span {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--gray-400, #9ca3af);
}

.spraydryerb2b-aisc-sc-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.spraydryerb2b-aisc-sc-name-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.spraydryerb2b-aisc-sc-name {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: .9375rem;
    font-weight: 600;
    color: var(--dark, #111827);
    text-decoration: none;
}

.spraydryerb2b-aisc-sc-name:hover {
    color: var(--primary, #2563eb);
}

.spraydryerb2b-aisc-sc-sub {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    font-size: .75rem;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-sc-row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.spraydryerb2b-aisc-sc-label {
    flex: 0 0 60px;
    font-style: normal;
    font-size: .75rem;
    line-height: 2.1;
    color: var(--gray-400, #9ca3af);
}

.spraydryerb2b-aisc-sc-reason {
    margin: 0;
    font-size: .8125rem;
    line-height: 1.7;
    color: var(--gray-600, #4b5563);
}

.spraydryerb2b-aisc-sc-phone {
    font-size: .875rem;
    font-weight: 600;
    line-height: 1.9;
    color: var(--primary, #2563eb);
    text-decoration: none;
}

.spraydryerb2b-aisc-sc-nophone {
    font-size: .8125rem;
    line-height: 1.9;
    color: var(--gray-400, #9ca3af);
}

/* ===============================================================
 * 站外参考卡片（联网搜索兜底）
 * 仅在站内无匹配时出现：虚线边框区分、标注来源平台、显示摘要，
 * 并在联系方式位置给出备注（联系时请说明来自lab干燥网！）
 * =============================================================== */
.spraydryerb2b-aisc-rc-card.is-external,
.spraydryerb2b-aisc-sc-card.is-external {
    border-style: dashed;
    border-color: var(--gray-300, #d1d5db);
}

.spraydryerb2b-aisc-rc-source {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    background: #f8fafc;
    border-bottom: 1px dashed var(--gray-200, #e5e7eb);
}

.spraydryerb2b-aisc-rc-source-tag {
    flex: 0 0 auto;
    padding: 1px 7px;
    font-size: .6875rem;
    font-weight: 600;
    color: #b45309;
    background: #fef3c7;
    border-radius: 4px;
    white-space: nowrap;
}

.spraydryerb2b-aisc-rc-source-name {
    font-size: .75rem;
    font-weight: 600;
    color: var(--gray-600, #4b5563);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.spraydryerb2b-aisc-rc-snippet {
    display: -webkit-box;
    margin: 0 0 8px;
    font-size: .8125rem;
    line-height: 1.6;
    color: var(--gray-600, #4b5563);
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.spraydryerb2b-aisc-rc-contact {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 8px;
    margin-top: 4px;
    padding: 8px 10px;
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 8px;
}

.spraydryerb2b-aisc-rc-contact-label {
    font-size: .75rem;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-rc-contact-link {
    font-size: .8125rem;
    font-weight: 600;
    color: var(--primary, #2563eb);
    text-decoration: none;
}

.spraydryerb2b-aisc-rc-contact-link:hover {
    text-decoration: underline;
}

.spraydryerb2b-aisc-rc-note {
    display: block;
    width: 100%;
    font-size: .75rem;
    font-weight: 600;
    line-height: 1.5;
    color: #b45309;
}

/* 站外卡片的联系电话：可直接点击拨打 */
.spraydryerb2b-aisc-rc-contact-phone {
    font-size: .875rem;
    font-weight: 700;
    color: var(--primary, #2563eb);
    text-decoration: none;
    white-space: nowrap;
}

.spraydryerb2b-aisc-rc-contact-phone:hover {
    text-decoration: underline;
}

/*
 * 电话来源说明：站外号码来自平台公开页面/搜索摘要，
 * 可能是平台客服热线或同页面其他商家的号码，必须提示用户自行核实。
 */
.spraydryerb2b-aisc-rc-phone-hint {
    font-size: .6875rem;
    line-height: 1.5;
    color: var(--gray-500, #6b7280);
}

/* 已展示电话时，「前往该平台查看」降级为次要入口 */
.spraydryerb2b-aisc-rc-contact-link.is-minor,
.spraydryerb2b-aisc-sc-phone.is-minor {
    font-size: .75rem;
    font-weight: 500;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-rc-contact-link.is-minor:hover,
.spraydryerb2b-aisc-sc-phone.is-minor:hover {
    color: var(--primary, #2563eb);
}

/* 站外卡没有图片时的占位块（用平台名，避免破图/空白） */
.spraydryerb2b-aisc-rc-card.is-external .spraydryerb2b-aisc-rc-media.is-empty {
    background: #f8fafc;
    border-bottom: 1px dashed var(--gray-200, #e5e7eb);
}

.spraydryerb2b-aisc-rc-card.is-external .spraydryerb2b-aisc-rc-media.is-empty span {
    font-weight: 600;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-rc-notice {
    margin: -4px 0 12px;
    padding: 8px 12px;
    font-size: .8125rem;
    line-height: 1.6;
    color: #92400e;
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 8px;
}

/* 结果区常驻留资 CTA */
.spraydryerb2b-aisc-quote-cta {
    display: block;
    width: 100%;
    margin-top: 14px;
    padding: 13px 18px;
    font-size: .9375rem;
    font-weight: 600;
    color: #fff;
    background: linear-gradient(135deg, #2563eb 0%, #6366f1 100%);
    border: none;
    border-radius: 12px;
    box-shadow: 0 6px 18px rgba(37, 99, 235, .28);
    cursor: pointer;
    transition: transform .15s ease, box-shadow .15s ease;
}

.spraydryerb2b-aisc-quote-cta:hover {
    transform: translateY(-1px);
    box-shadow: 0 8px 22px rgba(37, 99, 235, .34);
}

.spraydryerb2b-aisc-quote-note {
    margin: 8px 0 0;
    font-size: .75rem;
    text-align: center;
    color: var(--gray-400, #9ca3af);
}

/* ============ 欢迎区 ============ */
.spraydryerb2b-aisc-hero {
    display: flex;
    flex-direction: column;
    align-items: center;
    /* 关键：不参与 flex 压缩，避免被压扁后文字互相重叠 */
    flex: 0 0 auto;
    width: 100%;
    max-width: var(--aisc-content, 1488px);
    margin: 0 auto;
    padding: 40px 24px 24px;
    text-align: center;
}

.spraydryerb2b-aisc-hero[hidden] {
    display: none;
}

.spraydryerb2b-aisc-hero-logo {
    width: 84px;
    height: 84px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 24px;
    background: linear-gradient(135deg, #6366f1 0%, #a855f7 45%, #ec4899 75%, #f59e0b 100%);
    box-shadow: 0 12px 32px rgba(168, 85, 247, .3);
}

.spraydryerb2b-aisc-hero-logo span {
    font-size: 2.5rem;
    font-weight: 800;
    letter-spacing: -2px;
    color: #fff;
    text-shadow: 0 2px 6px rgba(0, 0, 0, .15);
}

.spraydryerb2b-aisc-hero-greet {
    margin: 22px 0 0;
    max-width: 860px;
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.3;
    color: var(--dark, #111827);
}

.spraydryerb2b-aisc-hero-sub {
    margin: 12px 0 0;
    max-width: 760px;
    font-size: 1rem;
    line-height: 1.75;
    color: var(--gray-500, #6b7280);
}

/* ---- 渐变描边数据卡 ---- */
.spraydryerb2b-aisc-hero-cards {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 20px;
    margin-top: 26px;
}

.spraydryerb2b-aisc-hcard {
    position: relative;
    width: 250px;
    padding: 18px 20px 14px;
    text-align: center;
    background: #fff;
    border-radius: 14px;
}

/* 渐变描边：外层伪元素画渐变，内层留 1.5px 透出 */
.spraydryerb2b-aisc-hcard::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 14px;
    padding: 1.5px;
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask-composite: exclude;
    pointer-events: none;
}

.spraydryerb2b-aisc-hcard.is-green::before {
    background: linear-gradient(135deg, #10b981, #34d399);
}

.spraydryerb2b-aisc-hcard.is-blue::before {
    background: linear-gradient(135deg, #3b82f6, #60a5fa);
}

.spraydryerb2b-aisc-hcard.is-green {
    box-shadow: 0 6px 20px rgba(16, 185, 129, .12);
}

.spraydryerb2b-aisc-hcard.is-blue {
    box-shadow: 0 6px 20px rgba(59, 130, 246, .12);
}

.spraydryerb2b-aisc-hcard-title {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--dark, #111827);
}

.spraydryerb2b-aisc-hcard-num {
    margin: 10px 0 0;
    font-size: 2.25rem;
    font-weight: 700;
    line-height: 1.15;
}

.spraydryerb2b-aisc-hcard.is-green .spraydryerb2b-aisc-hcard-num {
    color: #10b981;
}

.spraydryerb2b-aisc-hcard.is-blue .spraydryerb2b-aisc-hcard-num {
    color: #3b82f6;
}

.spraydryerb2b-aisc-hcard-sub {
    margin: 8px 0 0;
    font-size: .8125rem;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-hcard-foot {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--gray-100, #f3f4f6);
}

.spraydryerb2b-aisc-hcard-link {
    padding: 0;
    font-size: .875rem;
    font-weight: 600;
    color: var(--primary, #2563eb);
    background: none;
    border: none;
    cursor: pointer;
}

.spraydryerb2b-aisc-hcard-link:hover {
    text-decoration: underline;
}

/* ---- 数据卡：悬停 / 键盘聚焦高亮（整卡可点，见 chat-window.php 的 data-role） ---- */
.spraydryerb2b-aisc-hcard {
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease;
}

.spraydryerb2b-aisc-hcard::before {
    transition: padding .18s ease;
}

/* 悬停：抬升 + 彩色投影加深 + 描边加粗 */
.spraydryerb2b-aisc-hcard:hover {
    transform: translateY(-3px);
    background: #fff;
}

.spraydryerb2b-aisc-hcard.is-green:hover {
    box-shadow: 0 14px 30px rgba(16, 185, 129, .24);
}

.spraydryerb2b-aisc-hcard.is-blue:hover {
    box-shadow: 0 14px 30px rgba(59, 130, 246, .24);
}

.spraydryerb2b-aisc-hcard:hover::before {
    padding: 2.5px;
}

/* 标题跟随卡片主题色高亮 */
.spraydryerb2b-aisc-hcard.is-green:hover .spraydryerb2b-aisc-hcard-title,
.spraydryerb2b-aisc-hcard.is-green:focus-within .spraydryerb2b-aisc-hcard-title {
    color: #059669;
}

.spraydryerb2b-aisc-hcard.is-blue:hover .spraydryerb2b-aisc-hcard-title,
.spraydryerb2b-aisc-hcard.is-blue:focus-within .spraydryerb2b-aisc-hcard-title {
    color: #2563eb;
}

/* 数字轻微放大 */
.spraydryerb2b-aisc-hcard:hover .spraydryerb2b-aisc-hcard-num,
.spraydryerb2b-aisc-hcard:focus-within .spraydryerb2b-aisc-hcard-num {
    transform: scale(1.07);
}

/* 底部按钮更醒目 */
.spraydryerb2b-aisc-hcard:hover .spraydryerb2b-aisc-hcard-link,
.spraydryerb2b-aisc-hcard:focus-within .spraydryerb2b-aisc-hcard-link {
    text-decoration: underline;
}

/* 键盘 Tab 到卡内按钮时，整卡也给出同样的高亮反馈 */
.spraydryerb2b-aisc-hcard:focus-within {
    transform: translateY(-3px);
    box-shadow: 0 14px 30px rgba(37, 99, 235, .2);
}

.spraydryerb2b-aisc-hcard:focus-within::before {
    padding: 2.5px;
}

/* ---- 热门需求示例 ---- */
.spraydryerb2b-aisc-hero-chips {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px;
    margin: 24px 0 0;
    max-width: 820px;
}

.spraydryerb2b-aisc-chip {
    padding: 8px 16px;
    font-size: .875rem;
    color: var(--gray-600, #4b5563);
    background: var(--gray-50, #f9fafb);
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 999px;
    cursor: pointer;
    transition: all .15s ease;
}

.spraydryerb2b-aisc-chip:hover {
    color: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
    background: var(--primary-light, #eff6ff);
}

/* ============ 顶栏操作区 ============ */
.spraydryerb2b-aisc-header-actions {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 10px;
}

.spraydryerb2b-aisc-ghost-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 14px;
    font-size: .8125rem;
    color: var(--gray-600, #4b5563);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 8px;
    cursor: pointer;
    transition: all .15s ease;
}

.spraydryerb2b-aisc-ghost-btn:hover,
.spraydryerb2b-aisc-ghost-btn[aria-expanded="true"] {
    color: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
}

/* ---- 历史会话下拉 ---- */
.spraydryerb2b-aisc-history {
    position: relative;
}

.spraydryerb2b-aisc-history-panel {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 20;
    width: 300px;
    max-width: calc(100vw - 48px);
    max-height: 340px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 12px;
    box-shadow: 0 12px 32px rgba(31, 45, 80, .16);
}

.spraydryerb2b-aisc-history-panel[hidden] {
    display: none;
}

.spraydryerb2b-aisc-history-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 12px 14px;
    border-bottom: 1px solid var(--gray-100, #f3f4f6);
}

.spraydryerb2b-aisc-history-head strong {
    font-size: .875rem;
    color: var(--dark, #111827);
}

.spraydryerb2b-aisc-history-clear {
    padding: 0;
    font-size: .75rem;
    color: var(--gray-400, #9ca3af);
    background: none;
    border: none;
    cursor: pointer;
}

.spraydryerb2b-aisc-history-clear:hover {
    color: #ef4444;
}

.spraydryerb2b-aisc-history-list {
    margin: 0;
    padding: 6px;
    list-style: none;
}

.spraydryerb2b-aisc-history-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 10px;
    border-radius: 8px;
    cursor: pointer;
    transition: background .15s ease;
}

.spraydryerb2b-aisc-history-item:hover {
    background: var(--gray-50, #f9fafb);
}

.spraydryerb2b-aisc-history-item.is-active {
    background: var(--primary-light, #eff6ff);
}

.spraydryerb2b-aisc-history-title {
    flex: 1;
    min-width: 0;
    font-size: .8125rem;
    color: var(--dark, #111827);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.spraydryerb2b-aisc-history-time {
    flex: 0 0 auto;
    font-size: .6875rem;
    font-style: normal;
    color: var(--gray-400, #9ca3af);
}

.spraydryerb2b-aisc-history-empty {
    padding: 16px;
    text-align: center;
    font-size: .8125rem;
    color: var(--gray-400, #9ca3af);
}

/* ============ 消息：气泡 + 复制 ============ */
.spraydryerb2b-aisc-msg-inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    max-width: 78%;
    min-width: 0;
}

.spraydryerb2b-aisc-msg-inner .spraydryerb2b-aisc-bubble {
    max-width: 100%;
}

.spraydryerb2b-aisc-copy {
    padding: 0 4px;
    font-size: .75rem;
    color: var(--gray-400, #9ca3af);
    background: none;
    border: none;
    cursor: pointer;
    opacity: 0;
    transition: opacity .15s ease, color .15s ease;
}

.spraydryerb2b-aisc-msg:hover .spraydryerb2b-aisc-copy {
    opacity: 1;
}

.spraydryerb2b-aisc-copy:hover {
    color: var(--primary, #2563eb);
}

/* 上传按钮：功能未开放（升级中）态 */
.spraydryerb2b-aisc-upload-btn.is-upgrading {
    color: var(--gray-400, #9ca3af);
    background: var(--gray-50, #f9fafb);
    border-style: dashed;
}

/* ============ 专业模式标识 ============ */
.spraydryerb2b-aisc-pro-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 2px 8px;
    font-size: .6875rem;
    font-weight: 600;
    vertical-align: middle;
    color: #fff;
    background: linear-gradient(135deg, #6366f1 0%, #a855f7 100%);
    border-radius: 999px;
}

/* ============ 登录门禁（会员专属） ============ */
.spraydryerb2b-aisc-gate {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow-y: auto;
    padding: 48px 24px;
    background: linear-gradient(180deg, #f8fafc 0%, #eef2f9 100%);
}

.spraydryerb2b-aisc-gate-card {
    width: 100%;
    max-width: 540px;
    padding: 34px 32px;
    text-align: center;
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 16px;
    box-shadow: 0 12px 36px rgba(31, 45, 80, .1);
}

.spraydryerb2b-aisc-gate-logo {
    width: 72px;
    height: 72px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 22px;
    background: linear-gradient(135deg, #6366f1 0%, #a855f7 45%, #ec4899 75%, #f59e0b 100%);
    box-shadow: 0 10px 26px rgba(168, 85, 247, .3);
}

.spraydryerb2b-aisc-gate-logo span {
    font-size: 2rem;
    font-weight: 800;
    letter-spacing: -1px;
    color: #fff;
}

.spraydryerb2b-aisc-gate-title {
    margin: 20px 0 0;
    font-size: 1.375rem;
    font-weight: 700;
    color: var(--dark, #111827);
}

.spraydryerb2b-aisc-gate-sub {
    margin: 10px 0 0;
    font-size: .9375rem;
    line-height: 1.75;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-gate-list {
    margin: 18px 0 0;
    padding: 0;
    list-style: none;
    text-align: left;
}

.spraydryerb2b-aisc-gate-list li {
    position: relative;
    padding: 6px 0 6px 22px;
    font-size: .875rem;
    color: var(--gray-600, #4b5563);
}

.spraydryerb2b-aisc-gate-list li::before {
    content: '✓';
    position: absolute;
    left: 0;
    font-weight: 700;
    color: #10b981;
}

.spraydryerb2b-aisc-gate-actions {
    display: flex;
    gap: 12px;
    margin-top: 24px;
}

.spraydryerb2b-aisc-gate-btn {
    flex: 1;
    padding: 12px 18px;
    font-size: .9375rem;
    font-weight: 600;
    text-align: center;
    text-decoration: none;
    color: var(--gray-700, #374151);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 10px;
    transition: all .15s ease;
}

.spraydryerb2b-aisc-gate-btn:hover {
    border-color: var(--primary, #2563eb);
    color: var(--primary, #2563eb);
}

.spraydryerb2b-aisc-gate-btn.is-primary {
    color: #fff;
    background: linear-gradient(135deg, #2563eb 0%, #6366f1 100%);
    border-color: transparent;
    box-shadow: 0 6px 18px rgba(37, 99, 235, .28);
}

.spraydryerb2b-aisc-gate-btn.is-primary:hover {
    color: #fff;
}

.spraydryerb2b-aisc-gate-tip {
    margin: 14px 0 0;
    font-size: .75rem;
    color: var(--gray-400, #9ca3af);
}

/* ============ 留资询盘弹窗 ============ */
.spraydryerb2b-aisc-lead-modal {
    position: fixed;
    inset: 0;
    z-index: 100000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
}

.spraydryerb2b-aisc-lead-modal[hidden] {
    display: none;
}

.spraydryerb2b-aisc-lead-mask {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, .45);
}

.spraydryerb2b-aisc-lead-box {
    position: relative;
    width: 100%;
    max-width: 580px;
    max-height: calc(100vh - 40px);
    overflow-y: auto;
    padding: 26px 26px 20px;
    background: #fff;
    border-radius: 16px;
    box-shadow: 0 20px 50px rgba(15, 23, 42, .28);
}

.spraydryerb2b-aisc-lead-close {
    position: absolute;
    top: 12px;
    right: 14px;
    width: 28px;
    height: 28px;
    font-size: 18px;
    line-height: 1;
    color: var(--gray-400, #9ca3af);
    background: none;
    border: none;
    cursor: pointer;
}

.spraydryerb2b-aisc-lead-close:hover {
    color: #ef4444;
}

.spraydryerb2b-aisc-lead-title {
    margin: 0;
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--dark, #111827);
}

.spraydryerb2b-aisc-lead-hint {
    margin: 8px 0 0;
    font-size: .8125rem;
    line-height: 1.7;
    color: var(--gray-500, #6b7280);
}

.spraydryerb2b-aisc-lead-product {
    margin: 12px 0 0;
    padding: 8px 12px;
    font-size: .8125rem;
    color: var(--primary, #2563eb);
    background: var(--primary-light, #eff6ff);
    border-radius: 8px;
}

.spraydryerb2b-aisc-lead-product[hidden] {
    display: none;
}

.spraydryerb2b-aisc-lead-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 16px;
}

.spraydryerb2b-aisc-lead-grid label {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.spraydryerb2b-aisc-lead-grid label.is-wide {
    grid-column: 1 / -1;
}

.spraydryerb2b-aisc-lead-grid span {
    font-size: .8125rem;
    color: var(--gray-600, #4b5563);
}

.spraydryerb2b-aisc-lead-grid span i {
    font-style: normal;
    color: #ef4444;
}

.spraydryerb2b-aisc-lead-grid input,
.spraydryerb2b-aisc-lead-grid textarea {
    width: 100%;
    padding: 10px 12px;
    font-size: .9375rem;
    color: var(--dark, #111827);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 8px;
    resize: vertical;
}

.spraydryerb2b-aisc-lead-grid input:focus,
.spraydryerb2b-aisc-lead-grid textarea:focus {
    border-color: var(--primary, #2563eb);
    outline: none;
    box-shadow: 0 0 0 3px var(--primary-light, #eff6ff);
}

/* ---- 询盘表单图形验证码（复用主题算式验证码图） ---- */
.spraydryerb2b-aisc-lead-field {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.spraydryerb2b-aisc-lead-field.is-wide {
    grid-column: 1 / -1;
}

.spraydryerb2b-aisc-lead-field > span {
    font-size: .8125rem;
    color: var(--gray-600, #4b5563);
}

.spraydryerb2b-aisc-lead-field > span i {
    font-style: normal;
    color: #ef4444;
}

.spraydryerb2b-aisc-captcha {
    display: flex;
    align-items: center;
    /*
     * 允许换行：手机上（内容宽约 300px）验证码图 ~150px + 刷新按钮 34px
     * 已经占掉大半，输入框若固定 140px 就会把刷新按钮挤出容器被裁掉。
     * 改为弹性宽度 + 可换行后，窄屏最差情况是换到第二行，不会再溢出。
     */
    flex-wrap: wrap;
    gap: 10px;
}

.spraydryerb2b-aisc-captcha input[type="text"] {
    flex: 1 1 96px;
    width: auto;
    min-width: 0;
    max-width: 150px;
    padding: 9px 12px;
    font-size: .9375rem;
    text-align: center;
    letter-spacing: 3px;
    color: var(--dark, #111827);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 8px;
}

.spraydryerb2b-aisc-captcha input[type="text"]:focus {
    border-color: var(--primary, #2563eb);
    outline: none;
    box-shadow: 0 0 0 3px var(--primary-light, #eff6ff);
}

.spraydryerb2b-aisc-captcha-img {
    flex: 0 1 auto;
    height: 40px;
    width: auto;
    max-width: 100%;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 8px;
    cursor: pointer;
}

.spraydryerb2b-aisc-captcha-refresh {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    font-size: 1rem;
    line-height: 1;
    color: var(--gray-500, #6b7280);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 8px;
    cursor: pointer;
    transition: all .15s ease;
}

.spraydryerb2b-aisc-captcha-refresh:hover {
    color: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
}

.spraydryerb2b-aisc-lead-error {
    margin: 12px 0 0;
    padding: 8px 12px;
    font-size: .8125rem;
    color: #b91c1c;
    background: #fef2f2;
    border-radius: 8px;
}

.spraydryerb2b-aisc-lead-error[hidden] {
    display: none;
}

.spraydryerb2b-aisc-lead-foot {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 18px;
}

.spraydryerb2b-aisc-lead-btn {
    padding: 10px 22px;
    font-size: .9375rem;
    color: var(--gray-600, #4b5563);
    background: #fff;
    border: 1px solid var(--border, var(--gray-200, #e5e7eb));
    border-radius: 10px;
    cursor: pointer;
}

.spraydryerb2b-aisc-lead-btn.is-primary {
    color: #fff;
    background: linear-gradient(135deg, #2563eb 0%, #6366f1 100%);
    border-color: transparent;
    box-shadow: 0 4px 14px rgba(37, 99, 235, .28);
}

.spraydryerb2b-aisc-lead-btn:disabled {
    opacity: .6;
    cursor: not-allowed;
}

.spraydryerb2b-aisc-lead-privacy {
    margin: 12px 0 0;
    font-size: .75rem;
    text-align: center;
    color: var(--gray-400, #9ca3af);
}

.spraydryerb2b-aisc-lead-ok {
    padding: 26px 10px 10px;
    text-align: center;
}

.spraydryerb2b-aisc-lead-ok[hidden] {
    display: none;
}

.spraydryerb2b-aisc-lead-ok-icon {
    width: 52px;
    height: 52px;
    margin: 0 auto 14px;
    font-size: 26px;
    line-height: 52px;
    color: #fff;
    background: #10b981;
    border-radius: 50%;
}

.spraydryerb2b-aisc-lead-ok p {
    margin: 0;
    font-size: .9375rem;
    line-height: 1.7;
    color: var(--gray-600, #4b5563);
}

/* ============ 响应式 ============ */
@media (max-width: 768px) {
    .spraydryerb2b-aisc-page {
        padding: 0;
    }

    .spraydryerb2b-aisc-bubble.is-products {
        max-width: 96%;
    }

    .spraydryerb2b-aisc-rc-card {
        flex-direction: column;
    }

    /*
     * 注意：这里原来写的是 height: 140px（早期「图在左」横排布局的残留），
     * 而基础样式用的是 padding-top: 62% 的等比高度 —— 两者叠加会让图片区
     * 变成「140px + 62% 宽度」，手机上高得离谱。统一回等比高度。
     */
    .spraydryerb2b-aisc-rc-media {
        flex: 0 0 auto;
        width: 100%;
        height: auto;
        padding-top: 62%;
    }

    .spraydryerb2b-aisc {
        /* dvh = 动态视口高度：手机地址栏收起/展开时不会算错高度
           （只用 100vh 时容器常比可视区高，输入卡会被推到地址栏下面） */
        height: calc(100vh - 130px);
        height: calc(100dvh - 130px);
        min-height: 340px;
        /* 窄屏：左右栏改回上下，左栏折叠为顶部一条 */
        flex-direction: column;
        /* 窄屏恢复满宽（顶部条与聊天区都满铺，不再留 24px 内边距） */
        padding: 0;
    }

    /* 左侧栏 → 顶部横向紧凑条（窄屏竖向空间宝贵，不能占高度） */
    .spraydryerb2b-aisc-side {
        flex: 0 0 auto;
        width: 100%;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        gap: 10px;
        padding: 10px 12px;
        border-right: 0;
        border-bottom: 1px solid var(--gray-100, #f3f4f6);
    }

    .spraydryerb2b-aisc-side-logo {
        flex: 0 0 32px;
        width: 32px;
        height: 32px;
        border-radius: 9px;
    }

    .spraydryerb2b-aisc-side-logo span {
        font-size: .875rem;
    }

    /* 移动端隐藏标题/副标题/脚注，只留操作按钮，把高度让给聊天区 */
    .spraydryerb2b-aisc-side .spraydryerb2b-aisc-title,
    .spraydryerb2b-aisc-side .spraydryerb2b-aisc-subtitle,
    .spraydryerb2b-aisc-side-foot {
        display: none;
    }

    .spraydryerb2b-aisc-side-actions {
        flex: 0 0 auto;
        flex-direction: row;
        gap: 8px;
    }

    .spraydryerb2b-aisc-side-actions .spraydryerb2b-aisc-new-btn,
    .spraydryerb2b-aisc-side-actions .spraydryerb2b-aisc-ghost-btn {
        width: auto;
        padding: 7px 12px;
    }

    /* 移动端历史面板回到浮层，展开时不撑高顶栏 */
    .spraydryerb2b-aisc-side .spraydryerb2b-aisc-history {
        position: relative;
    }

    .spraydryerb2b-aisc-side .spraydryerb2b-aisc-history-panel {
        position: absolute;
        top: calc(100% + 8px);
        right: 0;
        width: 280px;
        max-width: calc(100vw - 32px);
        margin-top: 0;
        box-shadow: 0 12px 32px rgba(31, 45, 80, .16);
    }

    /* 欢迎态自适应高度（移动端页面本身就会滚动） */
    .spraydryerb2b-aisc.is-welcome {
        height: auto;
        min-height: calc(100vh - 150px);
        min-height: calc(100dvh - 150px);
    }

    /* 欢迎区移动端（整体压紧，保证输入卡在首屏可见） */
    .spraydryerb2b-aisc-hero {
        padding: 14px 14px 4px;
    }

    .spraydryerb2b-aisc-hero-logo {
        width: 54px;
        height: 54px;
        border-radius: 15px;
    }

    .spraydryerb2b-aisc-hero-logo span {
        font-size: 1.5rem;
    }

    .spraydryerb2b-aisc-hero-greet {
        margin-top: 12px;
        font-size: 1.125rem;
    }

    .spraydryerb2b-aisc-hero-cards {
        gap: 10px;
        margin-top: 12px;
    }

    .spraydryerb2b-aisc-hcard {
        width: calc(50% - 5px);
        min-width: 150px;
        padding: 12px 12px 10px;
    }

    .spraydryerb2b-aisc-hcard-num {
        font-size: 1.5rem;
    }

    .spraydryerb2b-aisc-hero-sub {
        font-size: .875rem;
    }

    .spraydryerb2b-aisc-hcard-title {
        font-size: .875rem;
    }

    .spraydryerb2b-aisc-hcard-sub {
        font-size: .6875rem;
    }

    .spraydryerb2b-aisc-hcard-foot {
        margin-top: 10px;
        padding-top: 10px;
    }

    .spraydryerb2b-aisc-hcard-link {
        font-size: .75rem;
    }

    /* 移动端示例：保留前 2 条做引导，其余隐藏，避免占掉输入区空间 */
    .spraydryerb2b-aisc-hero-chips {
        gap: 8px;
        margin-top: 10px;
    }

    .spraydryerb2b-aisc-chip {
        padding: 6px 12px;
        font-size: .75rem;
    }

    .spraydryerb2b-aisc-chip:nth-child(n+3) {
        display: none;
    }

    /* 卡片式输入区移动端（PC 已放大到 960px/24px 内边距，这里收回紧凑值） */
    .spraydryerb2b-aisc-composer {
        width: calc(100% - 16px);
        /* PC 端 margin 改为 0（贴齐左栏），移动端需自行居中 */
        margin: 0 auto 14px;
        border-radius: 12px;
    }

    /* 移动端满铺，气泡需要一点左右留白（PC 端为 0 以对齐左右边缘） */
    .spraydryerb2b-aisc-messages {
        padding: 16px 12px;
    }

    /*
     * 手机端输入卡整体压扁（此前 head 80px + 输入 69px + foot 62px ≈ 212px，
     * 占掉大半屏）。关键动作：副标题在手机上隐藏（它是 head 撑高的主因）、
     * 徽章缩小、输入区与底部操作行收紧。
     */
    .spraydryerb2b-aisc-composer-head {
        gap: 8px;
        padding: 8px 12px 0;
    }

    .spraydryerb2b-aisc-composer-badge {
        flex: 0 0 24px;
        width: 24px;
        height: 24px;
        font-size: .75rem;
        border-radius: 7px;
    }

    /* 副标题在手机上会折成两三行把输入卡顶高，直接隐藏 */
    .spraydryerb2b-aisc-composer-cap em {
        display: none;
    }

    .spraydryerb2b-aisc-composer-cap strong {
        font-size: .8125rem;
    }

    .spraydryerb2b-aisc-input-wrap {
        margin: 6px 10px 0;
        border-radius: 10px;
    }

    .spraydryerb2b-aisc-input {
        min-height: 36px;
        max-height: 120px;
        padding: 8px 11px;
        font-size: .9375rem;
    }

    .spraydryerb2b-aisc-composer-foot {
        padding: 4px 10px 10px;
    }

    .spraydryerb2b-aisc-send {
        padding: 8px 18px;
        font-size: .875rem;
    }

    /* 上传图片移动端：按钮只留图标，预览条更紧凑 */
    .spraydryerb2b-aisc-upload-btn {
        gap: 0;
        padding: 7px 10px;
    }

    .spraydryerb2b-aisc-upload-btn span {
        display: none;
    }

    .spraydryerb2b-aisc-preview {
        gap: 10px;
        margin: 10px 14px 0;
        padding: 8px;
    }

    .spraydryerb2b-aisc-preview-img {
        flex: 0 0 44px;
        width: 44px;
        height: 44px;
    }

    .spraydryerb2b-aisc-preview-meta em {
        display: none;
    }

    .spraydryerb2b-aisc-tip-inline {
        display: none;
    }

    .spraydryerb2b-aisc-composer-foot {
        justify-content: flex-end;
        /* 与上方基础收紧值保持一致（此处曾是 6px 14px 12px，会覆盖上面的紧凑值把输入卡顶高） */
        padding: 2px 8px 8px 12px;
    }

    /* 手机端验证码：输入框与图片按比例缩小，保证「输入 + 图 + ↻」稳在一行内 */
    .spraydryerb2b-aisc-captcha {
        gap: 8px;
    }

    .spraydryerb2b-aisc-captcha input[type="text"] {
        flex: 1 1 84px;
        max-width: 108px;
        padding: 8px 10px;
        font-size: .875rem;
        letter-spacing: 2px;
    }

    .spraydryerb2b-aisc-captcha-img {
        height: 36px;
    }

    .spraydryerb2b-aisc-captcha-refresh {
        width: 32px;
        height: 32px;
        font-size: .9375rem;
    }

    .spraydryerb2b-aisc-header {
        padding: 14px 16px 12px;
    }

    .spraydryerb2b-aisc-title {
        font-size: 1.0625rem;
    }

    .spraydryerb2b-aisc-messages {
        padding: 14px;
    }

    .spraydryerb2b-aisc-bubble {
        max-width: 88%;
    }

    .spraydryerb2b-aisc-msg-inner {
        max-width: 88%;
    }

    /* 触屏没有 hover：复制按钮常显 */
    .spraydryerb2b-aisc-copy {
        opacity: 1;
    }

    /* 商品卡：窄屏单列（两列在手机上每张只有 ~160px，读不清） */
    .spraydryerb2b-aisc-rc-list,
    .spraydryerb2b-aisc-sc-list {
        grid-template-columns: 1fr;
    }

    /* 登录门禁：卡片内边距收紧 */
    .spraydryerb2b-aisc-gate {
        padding: 24px 16px;
    }

    .spraydryerb2b-aisc-gate-card {
        padding: 26px 20px;
    }

    .spraydryerb2b-aisc-gate-actions {
        flex-direction: column;
    }

    /* 留资弹窗：单列表单 */
    .spraydryerb2b-aisc-lead-modal {
        padding: 12px;
    }

    .spraydryerb2b-aisc-lead-box {
        padding: 22px 18px 16px;
    }

    .spraydryerb2b-aisc-lead-grid {
        grid-template-columns: 1fr;
    }

    /* 顶栏按钮移动端紧凑 */
    .spraydryerb2b-aisc-header-actions {
        gap: 6px;
    }

    .spraydryerb2b-aisc-ghost-btn,
    .spraydryerb2b-aisc-new-btn {
        padding: 6px 10px;
        font-size: .75rem;
    }

    .spraydryerb2b-aisc-ghost-btn svg {
        display: none;
    }

    /* 注意：此处原有 .spraydryerb2b-aisc-composer { padding: 10px 14px } 属旧横排布局残留，
       改卡片式后必须在移动端移除该内边距，否则会撑破容器（已删除）。 */

    .spraydryerb2b-aisc-send {
        padding: 10px 22px;
        font-size: .9375rem;
    }
}

/*
 * ============ 矮窗口紧凑化（必须放在最后） ============
 * 视口高度 ≤ 900px 且是桌面宽度时，把欢迎区整体收一档，
 * 保证「主题头部 + 标题栏 + 欢迎区 + 输入卡」在 768~900px 高的屏幕上
 * 仍能一屏放下，输入卡不用滚动就能点到。
 */
@media (max-height: 900px) and (min-width: 769px) {
    .spraydryerb2b-aisc-hero {
        padding: 24px 24px 12px;
    }

    .spraydryerb2b-aisc-hero-logo {
        width: 70px;
        height: 70px;
        border-radius: 20px;
    }

    .spraydryerb2b-aisc-hero-logo span {
        font-size: 1.875rem;
    }

    .spraydryerb2b-aisc-hero-greet {
        margin-top: 18px;
        font-size: 1.5rem;
    }

    .spraydryerb2b-aisc-hero-sub {
        margin-top: 10px;
        font-size: .9375rem;
    }

    .spraydryerb2b-aisc-hero-cards {
        gap: 18px;
        margin-top: 20px;
    }

    .spraydryerb2b-aisc-hcard {
        width: 230px;
        padding: 14px 18px 12px;
    }

    .spraydryerb2b-aisc-hcard-num {
        margin-top: 8px;
        font-size: 1.875rem;
    }

    .spraydryerb2b-aisc-hero-chips {
        margin-top: 18px;
    }

    .spraydryerb2b-aisc-composer {
        margin-bottom: 18px;
    }
}
