/* =========================================
   暗金魔法阵主题聊天框 (Dark Gold & Magic Circle)
   ========================================= */

/* 1. 统一重置：消除原生边框干扰 */
.group.is-user > div:first-child, 
.group.is-assistant > div:first-child {
    border: none !important;
}

/* 2. 用户输入气泡：暖暗金黑渐变与浮雕发光 */
.group.is-user > div:first-child {
    background: linear-gradient(135deg, #221c12 0%, #2d2417 100%) !important;
    border: 1px solid #8b7332 !important;
    box-shadow: 0 4px 15px rgba(212, 175, 55, 0.15) !important;
}

/* 3. AI输出气泡：深渊黑金渐变，更具沉稳感 */
.group.is-assistant > div:first-child {
    background: linear-gradient(135deg, #14110b 0%, #1e180f 100%) !important;
    border: 1px solid #6b5825 !important;
    box-shadow: 0 4px 15px rgba(212, 175, 55, 0.08) !important;
}

/* 3.1 关键新增：当气泡内部正在显示加载动画时，隐藏气泡自身的背景/边框/阴影 */
.group.is-assistant > div:first-child:has(.flex.gap-2.w-full.h-full.items-center.justify-center) {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}

/* 4. 绝对可读性保障：强制正文使用暖白/浅金色调 */
.rili-markdown-renderer, 
.rili-markdown-renderer * {
    color: #fbf6ec !important;
    text-shadow: none !important; 
}

/* 5. 底部附加元素与操作按钮：暗金透亮化适配 */
.text-xs.font-mono.text-muted-foreground {
    color: rgba(212, 175, 55, 0.7) !important; 
}
.bg-muted.rounded.flex button svg.lucide {
    stroke: rgba(212, 175, 55, 0.8) !important; 
}

/* =========================================
   加载动画重构：CSS驱动自旋转的高对比度大号魔法阵（放大一倍）
   ========================================= */

/* 解除容器自身的尺寸限制，允许内部图案溢出显示 */
.flex.gap-2.w-full.h-full.items-center.justify-center {
    min-width: 180px !important;
    min-height: 180px !important;
    overflow: visible !important;
    background: transparent !important;
}

/* 强制隐藏原生的三个跳动加载点 */
.flex.gap-2.w-full.h-full.items-center.justify-center > span {
    display: none !important;
}

/* 静态魔法阵图案，由外部CSS动画驱动旋转，尺寸放大一倍：80px -> 160px */
.flex.gap-2.w-full.h-full.items-center.justify-center::before {
    content: "" !important;
    display: block !important;
    width: 160px !important;
    height: 160px !important;
    min-width: 160px !important;
    min-height: 160px !important;
    flex-shrink: 0 !important;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20100%20100'%3E%3Ccircle%20cx='50'%20cy='50'%20r='45'%20fill='none'%20stroke='%23ffe135'%20stroke-width='3'/%3E%3Ccircle%20cx='50'%20cy='50'%20r='38'%20fill='none'%20stroke='%23ffe135'%20stroke-width='2'%20stroke-dasharray='5%205'/%3E%3Cpolygon%20points='50,10%2084,70%2016,70'%20fill='none'%20stroke='%23ffe135'%20stroke-width='2.5'/%3E%3Cpolygon%20points='50,90%2084,30%2016,30'%20fill='none'%20stroke='%23ffe135'%20stroke-width='2.5'/%3E%3Ccircle%20cx='50'%20cy='50'%20r='13'%20fill='none'%20stroke='%23ffe135'%20stroke-width='2.5'/%3E%3Ccircle%20cx='50'%20cy='50'%20r='5'%20fill='%23ffe135'/%3E%3C/svg%3E") !important;
    background-size: contain !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    opacity: 1 !important;
    filter: drop-shadow(0 0 4px rgba(255, 225, 53, 0.9)) drop-shadow(0 0 10px rgba(255, 200, 0, 0.5)) !important;
    animation: kiro-magic-spin 4s linear infinite !important;
}

/* 定义旋转关键帧 */
@keyframes kiro-magic-spin {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* =========================================
   契约状态栏折叠组件 · 暗金魔法阵风格增强
   ========================================= */
/* 隐藏浏览器默认三角，改用自定义 ▸ 箭头 */
.rili-markdown-renderer details > summary::-webkit-details-marker,
.rili-markdown-renderer details summary::-webkit-details-marker { display: none !important; }
.rili-markdown-renderer details > summary { user-select: none; }

/* 自定义展开箭头：展开时旋转 90 度 */
.rili-markdown-renderer details > summary::before {
    content: "▸" !important;
    display: inline-block;
    margin-right: 8px;
    color: inherit;
    opacity: .85;
    transition: transform .25s ease;
}
.rili-markdown-renderer details[open] > summary::before {
    transform: rotate(90deg);
}

/* hover 微光：金色提亮 */
.rili-markdown-renderer details > summary:hover {
    filter: brightness(1.18);
}

/* 状态栏内容区文字适配：继承米白暖色 */
.rili-markdown-renderer details > div {
    color: #ece4cf !important;
}

/* =========================================
   正文专属排版 · 契约之界叙事手札
   （仅作用于 AI 以 <div class="story-body"> 包裹的正文；
    思维链、折叠状态栏、记忆区、行动选项均不受影响）
   ========================================= */

/* =========================================
   正文结构模板（AI 输出正文须遵循此结构）
   =========================================
   模板：
   <div>
   <p>{正文第1段——首次提及重要角色/事件/概念用 <abbr class="wave" title="{该词的简要说明20-50字}">{关键词}</abbr> 标注。同一词后续不再加 wave。每段用独立 p 标签包裹。}</p>
   <p>{正文第2段}</p>
   <p>{正文第3段}</p>
   <p>{禁止出现任何裸数值、系统术语（除非包在 wave 的 title 里）。正文本身保持文学性和沉浸感。}</p>
   </div>
   样式对应：正文容器 .story-body、段落 .story-body p、数值标注 abbr.wave。
   ========================================= */

/* 正文段落：独立 p 包裹，段距由样式控制，首行缩进两字 */
.rili-markdown-renderer .story-body p {
    margin: 0 0 0.55em !important;
    text-indent: 2em !important;
    line-height: 1.9 !important;
}
/* 正文首段首字强调（模板结构下的起笔美感） */
.rili-markdown-renderer .story-body > p:first-of-type::first-letter {
    color: #d4af37 !important;
    font-size: 1.25em !important;
    font-weight: 700 !important;
}

.rili-markdown-renderer .story-body {
    font-family: "LXGW WenKai", "KaiTi", "楷体", "STKaiti", "Songti SC", "STSong", "Noto Serif SC", "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif CN", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", serif !important;
    font-size: 1.08em !important;
    line-height: 1.9 !important;
    letter-spacing: 0.03em !important;
    color: #f3ecd9 !important;
    text-shadow: 0 0 1px rgba(212, 175, 55, 0.16), 0 0 10px rgba(212, 175, 55, 0.05) !important;
    text-align: justify !important;
    padding: 0.5em 0.2em 0.6em 0.9em;
    border-left: 2px solid rgba(201, 162, 75, 0.38);
    background: linear-gradient(90deg, rgba(201, 162, 75, 0.05), rgba(201, 162, 75, 0) 22%);
    border-radius: 0 8px 8px 0;
    max-height: min(60vh, 540px) !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
    scrollbar-width: thin !important;
    scrollbar-color: rgba(201,162,75,.55) rgba(201,162,75,.08) !important;
}
.rili-markdown-renderer .story-body::-webkit-scrollbar { width: 8px !important; }
.rili-markdown-renderer .story-body::-webkit-scrollbar-track { background: rgba(201,162,75,.06) !important; border-radius: 4px !important; }
.rili-markdown-renderer .story-body::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #8a6a24, #c9a24b) !important; border-radius: 4px !important; border: 1px solid rgba(8,5,15,.5) !important; }
.rili-markdown-renderer .story-body::-webkit-scrollbar-thumb:hover { background: #e8cf8e !important; }
.rili-markdown-renderer .story-body::-webkit-scrollbar-corner { background: transparent !important; }
.rili-markdown-renderer .story-body p {
    margin: 0 0 0.55em !important;
    text-indent: 2em !important;
}
.rili-markdown-renderer .story-body strong {
    color: #e8cf8e !important;
    font-weight: 700 !important;
    text-shadow: 0 0 6px rgba(232, 207, 142, 0.35) !important;
}
.rili-markdown-renderer .story-body em {
    color: #d9c9a0 !important;
}
.rili-markdown-renderer .story-body::first-letter {
    color: #d4af37 !important;
    font-size: 1.25em !important;
    font-weight: 700 !important;
}

/* =========================================
   顶部状态信息条 · 暗金醒目双行排版（每条回复最顶部）
   ========================================= */
.rili-markdown-renderer .top-status-bar {
    margin: 0 0 14px !important;
    padding: 10px 14px !important;
    background: linear-gradient(135deg, rgba(138,92,19,.32), rgba(201,162,75,.14) 50%, rgba(138,92,19,.32)) !important;
    border: 1px solid rgba(212,175,55,.5) !important;
    border-radius: 8px !important;
    box-shadow: 0 3px 14px rgba(212,175,55,.14), inset 0 0 22px rgba(212,175,55,.07) !important;
    font-size: 1em !important;
    line-height: 1.7 !important;
}
.rili-markdown-renderer .top-status-bar .tsb-title-row {
    display: flex !important;
    align-items: baseline !important;
    gap: 10px !important;
    padding-bottom: 7px !important;
    border-bottom: 1px dashed rgba(201,162,75,.35) !important;
}
.rili-markdown-renderer .top-status-bar .tsb-title {
    font-size: 1.2em !important;
    font-weight: 800 !important;
    color: #f2dc92 !important;
    letter-spacing: .18em !important;
    white-space: nowrap !important;
    text-shadow: 0 0 10px rgba(212,175,55,.6), 0 0 24px rgba(212,175,55,.25) !important;
}
.rili-markdown-renderer .top-status-bar .tsb-slogan {
    font-size: .92em !important;
    color: rgba(232,207,142,.8) !important;
    letter-spacing: .12em !important;
    white-space: nowrap !important;
}
.rili-markdown-renderer .top-status-bar .tsb-info-row {
    padding-top: 7px !important;
    font-size: 1.02em !important;
    letter-spacing: .05em !important;
}
.rili-markdown-renderer .top-status-bar .tsb-info {
    color: #ece4cf !important;
}

/* =========================================
   对白染色：正常对话（暖金）+ 露骨对话（蜜桃粉）
   ========================================= */
.rili-markdown-renderer .story-body .dlg {
    color: #e8cf8e !important;
    font-weight: 600 !important;
    text-shadow: 0 0 6px rgba(232, 207, 142, 0.25) !important;
}
.rili-markdown-renderer .story-body .dlg-hot {
    color: #ff8fb3 !important;
    font-weight: 600 !important;
    text-shadow: 0 0 8px rgba(255, 143, 179, 0.35) !important;
}
/* 无前缀兜底（不依赖平台容器类名） */
.story-body .dlg {
    color: #e8cf8e !important;
    font-weight: 600 !important;
    text-shadow: 0 0 6px rgba(232, 207, 142, 0.25) !important;
}
.story-body .dlg-hot {
    color: #ff8fb3 !important;
    font-weight: 600 !important;
    text-shadow: 0 0 8px rgba(255, 143, 179, 0.35) !important;
}
/* 无前缀滚动兜底（不依赖平台容器类名） */
.story-body {
    max-height: min(60vh, 540px) !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
    scrollbar-width: thin !important;
    scrollbar-color: rgba(201,162,75,.55) rgba(201,162,75,.08) !important;
}
.story-body::-webkit-scrollbar { width: 8px !important; }
.story-body::-webkit-scrollbar-track { background: rgba(201,162,75,.06) !important; border-radius: 4px !important; }
.story-body::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #8a6a24, #c9a24b) !important; border-radius: 4px !important; border: 1px solid rgba(8,5,15,.5) !important; }
.story-body::-webkit-scrollbar-thumb:hover { background: #e8cf8e !important; }
.story-body::-webkit-scrollbar-corner { background: transparent !important; }

/* =========================================
   正文滚动容器 · 长剧情区内滑动（适配多屏）
   ========================================= */
.rili-markdown-renderer .story-body {
    max-height: min(60vh, 540px) !important;
    overflow-y: auto !important;
    overflow-x: clip !important;
    overflow-clip-margin: 160px !important;
    scrollbar-gutter: stable !important;
    overscroll-behavior: contain !important;
    scrollbar-width: thin !important;
    scrollbar-color: #c9a24b rgba(201,162,75,.08) !important;
}
.rili-markdown-renderer .story-body::-webkit-scrollbar {
    width: 8px !important;
    height: 5px !important;
}
.rili-markdown-renderer .story-body::-webkit-scrollbar-track {
    background: rgba(201,162,75,.06) !important;
    border-radius: 4px !important;
}
.rili-markdown-renderer .story-body::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, #8a5c13, #c9a24b) !important;
    border-radius: 4px !important;
    border: 1px solid rgba(20,17,11,.6) !important;
}
.rili-markdown-renderer .story-body::-webkit-scrollbar-thumb:horizontal {
    background: linear-gradient(90deg, #8a5c13 0%, #c9a24b 100%) !important;
    border-radius: 3px !important;
}
.rili-markdown-renderer .story-body::-webkit-scrollbar-thumb:hover {
    background: #e8cf8e !important;
}

/* =========================================
   行动选项折叠组件 · 暗金可点击选项
   ========================================= */
.rili-markdown-renderer .act-opt {
    display: block;
    cursor: pointer;
    color: #e8cf8e;
    padding: 4px 10px;
    margin: 2px 0;
    border-left: 2px solid rgba(201,162,75,.4);
    border-radius: 0 6px 6px 0;
    background: rgba(201,162,75,.05);
    transition: background .15s, color .15s;
    text-decoration: none;
}
.rili-markdown-renderer .act-opt:hover {
    background: rgba(201,162,75,.14);
    color: #f7e6b5;
}

/* =========================================
   卡片式组件样式 (Card Components)
   ========================================= */

/* NPC卡片 / 契约卡片 容器 */
.npc-card, .pact-card {
    position: relative;
}

/* 契约印章（红底白字） */
.rili-markdown-renderer .seal-pact {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 28px;
    height: 28px;
    border-radius: 4px;
    background: linear-gradient(135deg, #cf1b4b 0%, #8a0d2e 100%);
    color: #fff;
    font-size: 14px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 2px 6px rgba(207,27,75,.4);
    border: 1px solid rgba(255,255,255,.15);
    transform: rotate(-8deg);
    z-index: 2;
}

/* 魂脉印章（金底黑字） */
.rili-markdown-renderer .seal-soul {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 28px;
    height: 28px;
    border-radius: 4px;
    background: linear-gradient(135deg, #c9a24b 0%, #8a5c13 100%);
    color: #1c1305;
    font-size: 14px;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 2px 6px rgba(201,162,75,.4);
    border: 1px solid rgba(255,255,255,.15);
    transform: rotate(-8deg);
    z-index: 2;
}

/* 轮播指示点 */
.rili-markdown-renderer .npc-dots,
.rili-markdown-renderer .pact-dots {
    text-align: center;
    padding: 6px 0 10px;
    color: rgba(201,162,75,.4);
    font-size: .6em;
    letter-spacing: 4px;
}

/* =========================================
   入场动画 · 契约之界开场（仅开局第一轮）
   ========================================= */
.rili-markdown-renderer .intro-anim {
    text-align: center !important;
    padding: 26px 12px 22px !important;
    margin: 0 0 8px !important;
    border: 1px solid rgba(201,162,75,.28) !important;
    border-radius: 12px !important;
    background: radial-gradient(ellipse at center, rgba(201,162,75,.12) 0%, rgba(20,17,11,.35) 55%, transparent 75%) !important;
    animation: ia-whole 3.6s ease forwards !important;
    overflow: hidden !important;
}
@keyframes ia-whole {
    0%   { opacity: 0; }
    8%   { opacity: 1; }
    76%  { opacity: 1; }
    100% { opacity: 0; padding: 0; margin: 0; border-width: 0; }
}
.rili-markdown-renderer .intro-anim .ia-magic {
    position: relative !important;
    width: 132px !important;
    height: 132px !important;
    margin: 0 auto 16px !important;
}
.rili-markdown-renderer .intro-anim .ia-ring {
    position: absolute !important;
    top: 50% !important;
    left: 50% !important;
    border-radius: 50% !important;
    transform: translate(-50%, -50%) !important;
}
.rili-markdown-renderer .intro-anim .ia-r1 {
    width: 132px !important; height: 132px !important;
    border: 2px solid rgba(212,175,55,.65) !important;
    border-top-color: transparent !important;
    animation: ia-spin 3.2s linear infinite !important;
}
.rili-markdown-renderer .intro-anim .ia-r2 {
    width: 102px !important; height: 102px !important;
    border: 2px dashed rgba(201,162,75,.5) !important;
    animation: ia-spin 2.4s linear infinite reverse !important;
}
.rili-markdown-renderer .intro-anim .ia-r3 {
    width: 72px !important; height: 72px !important;
    border: 1px solid rgba(232,207,142,.75) !important;
    box-shadow: 0 0 18px rgba(212,175,55,.45), inset 0 0 14px rgba(212,175,55,.3) !important;
    animation: ia-pulse 1.8s ease-in-out infinite !important;
}
.rili-markdown-renderer .intro-anim .ia-core {
    position: absolute !important;
    top: 50% !important; left: 50% !important;
    transform: translate(-50%, -50%) !important;
    font-size: 30px !important;
    color: #f2dc92 !important;
    text-shadow: 0 0 14px rgba(212,175,55,.9), 0 0 30px rgba(212,175,55,.4) !important;
}
.rili-markdown-renderer .intro-anim .ia-title {
    font-size: 1.9em !important;
    font-weight: 800 !important;
    letter-spacing: .3em !important;
    color: #f2dc92 !important;
    text-shadow: 0 0 12px rgba(212,175,55,.75), 0 0 34px rgba(212,175,55,.35) !important;
    animation: ia-fade-up 1.1s ease .25s both !important;
    margin-bottom: 8px !important;
}
.rili-markdown-renderer .intro-anim .ia-sub {
    font-size: .92em !important;
    letter-spacing: .18em !important;
    color: rgba(232,207,142,.85) !important;
    animation: ia-fade-up 1.1s ease .7s both !important;
}
@keyframes ia-spin { from { transform: translate(-50%,-50%) rotate(0deg); } to { transform: translate(-50%,-50%) rotate(360deg); } }
@keyframes ia-pulse {
    0%, 100% { transform: translate(-50%,-50%) scale(1); opacity: .75; }
    50%      { transform: translate(-50%,-50%) scale(1.12); opacity: 1; }
}
@keyframes ia-fade-up {
    from { opacity: 0; transform: translateY(14px); }
    to   { opacity: 1; transform: none; }
}

/* =========================================
   入场动画 · 精致化增强（不影响 AI 输出结构）
   ========================================= */
.rili-markdown-renderer .intro-anim {
    background: radial-gradient(ellipse at center, rgba(201,162,75,.13) 0%, rgba(20,17,11,.4) 52%, transparent 76%) !important;
}
.rili-markdown-renderer .intro-anim .ia-title { position: relative !important; }
.rili-markdown-renderer .intro-anim .ia-title::after {
    content: "" !important;
    position: absolute !important;
    top: 0; left: -40%;
    width: 32% !important; height: 100% !important;
    background: linear-gradient(100deg, transparent, rgba(255,244,214,.5), transparent) !important;
    transform: skewX(-18deg) !important;
    animation: ia-sweep 1.3s ease 1.4s both !important;
}
.rili-markdown-renderer .intro-anim .ia-sub::before { content: "✦ " !important; color: rgba(212,175,55,.85) !important; }
.rili-markdown-renderer .intro-anim .ia-sub::after { content: " ✦" !important; color: rgba(212,175,55,.85) !important; }
@keyframes ia-sweep { from { left: -40%; } to { left: 110%; } }
/* =========================================
   状态栏美化增强 · 暗金华丽版（覆盖旧样式）
   ========================================= */
/* --- 顶部状态信息条 · 三卡片网格 --- */
.rili-markdown-renderer .top-status-bar {
    margin: 0 0 16px !important;
    padding: 14px 18px 12px !important;
    background: linear-gradient(135deg, rgba(138,92,19,.42), rgba(201,162,75,.16) 50%, rgba(138,92,19,.42)) !important;
    border: 1px solid rgba(212,175,55,.65) !important;
    border-radius: 12px !important;
    box-shadow: 0 4px 22px rgba(212,175,55,.2), inset 0 0 32px rgba(212,175,55,.09) !important;
    font-size: 1.15em !important;
    line-height: 1.75 !important;
}
.rili-markdown-renderer .top-status-bar .tsb-title-row {
    justify-content: center !important;
    gap: 14px !important;
    padding-bottom: 10px !important;
    border-bottom: 1px dashed rgba(201,162,75,.45) !important;
    margin-bottom: 10px !important;
}
.rili-markdown-renderer .top-status-bar .tsb-title {
    font-size: 1.5em !important;
    letter-spacing: .32em !important;
    text-shadow: 0 0 12px rgba(212,175,55,.75), 0 0 32px rgba(212,175,55,.35) !important;
}
.rili-markdown-renderer .top-status-bar .tsb-slogan {
    font-size: 1em !important;
    color: rgba(232,207,142,.9) !important;
}
.rili-markdown-renderer .top-status-bar .tsb-grid {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
}
.rili-markdown-renderer .top-status-bar .tsb-cell {
    flex: 1 1 0 !important;
    min-width: 130px !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    padding: 9px 13px !important;
    background: linear-gradient(135deg, rgba(20,17,11,.6), rgba(201,162,75,.1)) !important;
    border: 1px solid rgba(212,175,55,.4) !important;
    border-radius: 9px !important;
    box-shadow: inset 0 0 14px rgba(212,175,55,.06) !important;
}
.rili-markdown-renderer .top-status-bar .tsb-cell.tsb-wide {
    flex-basis: 100% !important;
}
.rili-markdown-renderer .top-status-bar .tsb-k {
    font-size: .9em !important;
    font-weight: 800 !important;
    color: #f2dc92 !important;
    letter-spacing: .12em !important;
    padding: 2px 9px !important;
    background: rgba(138,92,19,.45) !important;
    border: 1px solid rgba(212,175,55,.3) !important;
    border-radius: 5px !important;
    white-space: nowrap !important;
}
.rili-markdown-renderer .top-status-bar .tsb-v {
    font-size: 1.05em !important;
    font-weight: 600 !important;
    color: #fbf6ec !important;
    text-shadow: 0 0 8px rgba(212,175,55,.18) !important;
}

/* --- 折叠状态栏 · 字体放大 + summary 质感 --- */
.rili-markdown-renderer details {
    font-size: 1.05em !important;
}
.rili-markdown-renderer details > summary {
    font-size: 1.1em !important;
    font-weight: 700 !important;
    letter-spacing: .1em !important;
    padding: 12px 16px !important;
    border-radius: 8px !important;
    box-shadow: 0 2px 12px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,244,214,.18) !important;
    transition: filter .2s ease, transform .2s ease !important;
}
.rili-markdown-renderer details > summary:hover {
    filter: brightness(1.25) !important;
    transform: translateY(-1px) !important;
}
.rili-markdown-renderer details details > summary {
    background: linear-gradient(90deg, rgba(201,162,75,.18), rgba(201,162,75,.03)) !important;
    border-radius: 6px !important;
    box-shadow: none !important;
}
.rili-markdown-renderer details > div {
    font-size: 1.04em !important;
    line-height: 2 !important;
    letter-spacing: .02em !important;
    color: #ece4cf !important;
}

/* --- 玩家/契约/NPC 字段双列网格 --- */
.rili-markdown-renderer .ps-grid,
.rili-markdown-renderer .pc-grid {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 7px 16px !important;
    padding: 12px 14px !important;
}
@media (max-width: 640px) {
    .rili-markdown-renderer .ps-grid,
    .rili-markdown-renderer .pc-grid {
        grid-template-columns: 1fr !important;
    }
}
.rili-markdown-renderer .ps-item {
    display: flex !important;
    align-items: baseline !important;
    gap: 8px !important;
    padding: 4px 8px !important;
    background: rgba(201,162,75,.05) !important;
    border-left: 2px solid rgba(201,162,75,.45) !important;
    border-radius: 0 5px 5px 0 !important;
}
.rili-markdown-renderer .ps-wide {
    grid-column: 1 / -1 !important;
}
.rili-markdown-renderer .ps-k {
    flex: 0 0 auto !important;
    min-width: 5.2em !important;
    font-weight: 800 !important;
    color: #e8cf8e !important;
    letter-spacing: .06em !important;
    text-shadow: 0 0 6px rgba(212,175,55,.25) !important;
}
.rili-markdown-renderer .ps-v {
    font-weight: 500 !important;
    color: #fbf6ec !important;
}

/* --- 契约/NPC 卡片质感 --- */
.rili-markdown-renderer .pact-card,
.rili-markdown-renderer .npc-card {
    box-shadow: 0 3px 14px rgba(0,0,0,.35) !important;
}
/* --- 字段横向排列（.pc-rows / .pf） --- */
.rili-markdown-renderer .pc-rows {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: baseline !important;
    gap: 6px 16px !important;
    padding: 12px 14px !important;
    font-size: 1.04em !important;
    line-height: 1.95 !important;
    color: #ece4cf !important;
}
.rili-markdown-renderer .pc-rows .pf {
    display: inline-block !important;
    padding: 3px 11px !important;
    background: rgba(201,162,75,.06) !important;
    border-left: 2px solid rgba(201,162,75,.42) !important;
    border-radius: 0 5px 5px 0 !important;
    color: #ece4cf !important;
    text-shadow: none !important;
}
.rili-markdown-renderer .pc-rows .pf-full {
    flex-basis: 100% !important;
    background: rgba(201,162,75,.09) !important;
    border-left: 2px solid rgba(232,207,142,.55) !important;
}
.rili-markdown-renderer .pc-rows .bio {
    background: rgba(138,92,19,.1) !important;
    border-left: 2px solid rgba(232,207,142,.6) !important;
    color: #f3ecd9 !important;
    letter-spacing: .02em !important;
}

/* --- 状态栏 SVG 图标（彩色线性风格） --- */
.rili-markdown-renderer .ico {
    display: inline-block !important;
    width: 1.18em !important;
    height: 1.18em !important;
    margin-right: 6px !important;
    vertical-align: -0.18em !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    background-size: contain !important;
    flex: none !important;
    filter: drop-shadow(0 0 4px currentColor) !important;
}
.rili-markdown-renderer .ico-pact { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23f2dc92%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M10%2013a5%205%200%200%200%207.54.54l3-3a5%205%200%200%200-7.07-7.07l-1.72%201.71%27%2F%3E%3Cpath%20d%3D%27M14%2011a5%205%200%200%200-7.54-.54l-3%203a5%205%200%200%200%207.07%207.07l1.71-1.71%27%2F%3E%3C%2Fsvg%3E") !important; color: #f2dc92; }
.rili-markdown-renderer .ico-user { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%237fd8c9%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M20%2021v-2a4%204%200%200%200-4-4H8a4%204%200%200%200-4%204v2%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%277%27%20r%3D%274%27%2F%3E%3C%2Fsvg%3E") !important; color: #7fd8c9; }
.rili-markdown-renderer .ico-pact-obj { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23ff7d9e%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M10%2013a5%205%200%200%200%207.54.54l3-3a5%205%200%200%200-7.07-7.07l-1.72%201.71%27%2F%3E%3Cpath%20d%3D%27M14%2011a5%205%200%200%200-7.54-.54l-3%203a5%205%200%200%200%207.07%207.07l1.71-1.71%27%2F%3E%3C%2Fsvg%3E") !important; color: #ff7d9e; }
.rili-markdown-renderer .ico-brain { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23c99bff%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M9.5%202A2.5%202.5%200%200%200%207%204.5v.55A3%203%200%200%200%206%208a3%203%200%200%200-1%205.83V15a4%204%200%200%200%204%204h.5A2.5%202.5%200%200%200%2012%2021.5a2.5%202.5%200%200%200%202.5-2.5H15a4%204%200%200%200%204-4v-1.17A3%203%200%200%200%2018%208a3%203%200%200%200-1-3V4.5A2.5%202.5%200%200%200%2014.5%202C13.03%202%2012%203.03%2012%204.5S10.97%207%209.5%207z%27%2F%3E%3C%2Fsvg%3E") !important; color: #c99bff; }
.rili-markdown-renderer .ico-pin { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23ffc94d%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2017v5%27%2F%3E%3Cpath%20d%3D%27M9%2010.76a2%202%200%200%201-1.11%201.79l-1.78.9A2%202%200%200%200%205%2015.24V16a1%201%200%200%200%201%201h12a1%201%200%200%200%201-1v-.76a2%202%200%200%200-1.11-1.79l-1.78-.9A2%202%200%200%201%2015%2010.76V6h1a2%202%200%200%200%200-4H8a2%202%200%200%200%200%204h1z%27%2F%3E%3C%2Fsvg%3E") !important; color: #ffc94d; }
.rili-markdown-renderer .ico-book { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23a98bff%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M4%2019.5v-15A2.5%202.5%200%200%201%206.5%202H20v20H6.5a2.5%202.5%200%200%201%200-5H20%27%2F%3E%3C%2Fsvg%3E") !important; color: #a98bff; }
.rili-markdown-renderer .ico-lock { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23ff8fa3%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20width%3D%2718%27%20height%3D%2711%27%20x%3D%273%27%20y%3D%2711%27%20rx%3D%272%27%20ry%3D%272%27%2F%3E%3Cpath%20d%3D%27M7%2011V7a5%205%200%200%201%2010%200v4%27%2F%3E%3C%2Fsvg%3E") !important; color: #ff8fa3; }
.rili-markdown-renderer .ico-lockmark { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23ff5f7a%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20width%3D%2718%27%20height%3D%2711%27%20x%3D%273%27%20y%3D%2711%27%20rx%3D%272%27%20ry%3D%272%27%2F%3E%3Cpath%20d%3D%27M7%2011V7a5%205%200%200%201%2010%200v4%27%2F%3E%3C%2Fsvg%3E") !important; color: #ff5f7a; }

/* =========================================
   记忆区 · 每条记忆方框 + 序号方框
   ========================================= */
.rili-markdown-renderer .mem-item {
    display: flex !important;
    align-items: stretch !important;
    gap: 8px !important;
    margin: 8px 0 !important;
}
.rili-markdown-renderer .mem-idx {
    flex: 0 0 auto !important;
    width: 2.1em !important;
    min-height: 2.1em !important;
    border-radius: 7px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #fff !important;
    font-weight: 800 !important;
    font-size: 1em !important;
    letter-spacing: 0 !important;
    text-shadow: 0 1px 2px rgba(0,0,0,.4) !important;
    box-shadow: 0 2px 6px rgba(0,0,0,.35) !important;
}
.rili-markdown-renderer .mem-card {
    flex: 1 !important;
    border-radius: 8px !important;
    padding: 8px 12px !important;
    background: rgba(20,17,11,.45) !important;
    color: #ece4cf !important;
    font-size: .95em !important;
    line-height: 1.9 !important;
    letter-spacing: .02em !important;
    box-shadow: inset 0 0 12px rgba(201,162,75,.04) !important;
}

/* =========================================
   契约对象卡片 · 按契约类型美化（SVG 图标）
   ========================================= */
.rili-markdown-renderer .pact-card .pt-ico {
    display: inline-block !important;
    width: 1.05em !important;
    height: 1.05em !important;
    margin-right: 4px !important;
    vertical-align: -0.15em !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    background-size: contain !important;
}

/* sym */
.rili-markdown-renderer .pact-card.pt-sym { border-color: #4ecdc488 !important; background: linear-gradient(160deg, #4ecdc41a 0%, rgba(20,17,11,.55) 100%) !important; box-shadow: 0 3px 16px #4ecdc422 !important; }
.rili-markdown-renderer .pact-card.pt-sym .seal-pact { background: linear-gradient(135deg, #4ecdc4cc, #4ecdc4) !important; box-shadow: 0 2px 8px #4ecdc455 !important; }
.rili-markdown-renderer .pact-card.pt-sym .pt-ico { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%234ecdc4%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%279%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%274%27%2F%3E%3C%2Fsvg%3E") !important; }

/* guard */
.rili-markdown-renderer .pact-card.pt-guard { border-color: #5b9dff88 !important; background: linear-gradient(160deg, #5b9dff1a 0%, rgba(20,17,11,.55) 100%) !important; box-shadow: 0 3px 16px #5b9dff22 !important; }
.rili-markdown-renderer .pact-card.pt-guard .seal-pact { background: linear-gradient(135deg, #5b9dffcc, #5b9dff) !important; box-shadow: 0 2px 8px #5b9dff55 !important; }
.rili-markdown-renderer .pact-card.pt-guard .pt-ico { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%235b9dff%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2022s8-4%208-10V5l-8-3-8%203v7c0%206%208%2010%208%2010z%27%2F%3E%3C%2Fsvg%3E") !important; }

/* life */
.rili-markdown-renderer .pact-card.pt-life { border-color: #6ee7a088 !important; background: linear-gradient(160deg, #6ee7a01a 0%, rgba(20,17,11,.55) 100%) !important; box-shadow: 0 3px 16px #6ee7a022 !important; }
.rili-markdown-renderer .pact-card.pt-life .seal-pact { background: linear-gradient(135deg, #6ee7a0cc, #6ee7a0) !important; box-shadow: 0 2px 8px #6ee7a055 !important; }
.rili-markdown-renderer .pact-card.pt-life .pt-ico { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%236ee7a0%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M20.84%204.61a5.5%205.5%200%200%200-7.78%200L12%205.67l-1.06-1.06a5.5%205.5%200%200%200-7.78%207.78l1.06%201.06L12%2021.23l7.78-7.78%201.06-1.06a5.5%205.5%200%200%200%200-7.78z%27%2F%3E%3C%2Fsvg%3E") !important; }

/* sense */
.rili-markdown-renderer .pact-card.pt-sense { border-color: #c99bff88 !important; background: linear-gradient(160deg, #c99bff1a 0%, rgba(20,17,11,.55) 100%) !important; box-shadow: 0 3px 16px #c99bff22 !important; }
.rili-markdown-renderer .pact-card.pt-sense .seal-pact { background: linear-gradient(135deg, #c99bffcc, #c99bff) !important; box-shadow: 0 2px 8px #c99bff55 !important; }
.rili-markdown-renderer .pact-card.pt-sense .pt-ico { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23c99bff%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M1%2012s4-8%2011-8%2011%208%2011%208-4%208-11%208-11-8-11-8z%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%273%27%2F%3E%3C%2Fsvg%3E") !important; }

/* rule */
.rili-markdown-renderer .pact-card.pt-rule { border-color: #ff4d6d88 !important; background: linear-gradient(160deg, #ff4d6d1a 0%, rgba(20,17,11,.55) 100%) !important; box-shadow: 0 3px 16px #ff4d6d22 !important; }
.rili-markdown-renderer .pact-card.pt-rule .seal-pact { background: linear-gradient(135deg, #ff4d6dcc, #ff4d6d) !important; box-shadow: 0 2px 8px #ff4d6d55 !important; }
.rili-markdown-renderer .pact-card.pt-rule .pt-ico { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23ff4d6d%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M2%204l3%2012h14l3-12-6%207-4-7-4%207-6-7zm3%2016h14%27%2F%3E%3C%2Fsvg%3E") !important; }

/* carnal */
.rili-markdown-renderer .pact-card.pt-carnal { border-color: #ff8fb388 !important; background: linear-gradient(160deg, #ff8fb31a 0%, rgba(20,17,11,.55) 100%) !important; box-shadow: 0 3px 16px #ff8fb322 !important; }
.rili-markdown-renderer .pact-card.pt-carnal .seal-pact { background: linear-gradient(135deg, #ff8fb3cc, #ff8fb3) !important; box-shadow: 0 2px 8px #ff8fb355 !important; }
.rili-markdown-renderer .pact-card.pt-carnal .pt-ico { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23ff8fb3%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M8.5%2014.5A2.5%202.5%200%200%200%2011%2012c0-1.38-.5-2-1-3-1.07-2.14-.22-4.05%202-6%20.5%202.5%202%204.9%204%206.5%202%201.6%203%203.5%203%205.5a7%207%200%201%201-14%200c0-1.15.43-2.29%201-3a2.5%202.5%200%200%200%202.5%202.5z%27%2F%3E%3C%2Fsvg%3E") !important; }

/* soul */
.rili-markdown-renderer .pact-card.pt-soul { border-color: #b39dff88 !important; background: linear-gradient(160deg, #b39dff1a 0%, rgba(20,17,11,.55) 100%) !important; box-shadow: 0 3px 16px #b39dff22 !important; }
.rili-markdown-renderer .pact-card.pt-soul .seal-pact { background: linear-gradient(135deg, #b39dffcc, #b39dff) !important; box-shadow: 0 2px 8px #b39dff55 !important; }
.rili-markdown-renderer .pact-card.pt-soul .pt-ico { background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27%23b39dff%27%20stroke-width%3D%271.8%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%202l2.4%207.2H22l-6%204.4%202.3%207.4-6.3-4.6-6.3%204.6L8%2013.6l-6-4.4h7.6z%27%2F%3E%3C%2Fsvg%3E") !important; }

/* =========================================
   聊天界面 · 顶部栏 & 输入框美化 v2（暗金魔法阵豪华版 · 无伪元素）
   ========================================= */
/* --- 顶部栏：魔法阵纹理 + 底部流光（多层背景） --- */
header {
    position: relative !important;
    border-bottom: none !important;
    background-image:
        linear-gradient(180deg, transparent calc(100% - 2px), rgba(232,207,142,.5) calc(100% - 2px), rgba(212,175,55,.85) 100%),
        url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27160%27%20height%3D%27160%27%20viewBox%3D%270%200%20160%20160%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27%2523d4af37%27%20stroke-width%3D%271%27%20stroke-opacity%3D%270.12%27%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%2766%27%2F%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%2752%27%20stroke-dasharray%3D%273%207%27%2F%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%2738%27%2F%3E%3Cpath%20d%3D%27M80%2014%20L114%2096%20L46%2096%20Z%27%2F%3E%3Cpath%20d%3D%27M80%2080%20L80%2030%27%2F%3E%3Cpath%20d%3D%27M80%2080%20L130%2080%27%2F%3E%3Cpath%20d%3D%27M80%2080%20L80%20130%27%2F%3E%3Cpath%20d%3D%27M80%2080%20L30%2080%27%2F%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%278%27%2F%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%272%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),
        linear-gradient(135deg, rgba(16,13,8,.98) 0%, rgba(58,44,20,.92) 55%, rgba(20,17,11,.98) 100%) !important;
    background-size: 100% 100%, 180px, 100% 100% !important;
    background-repeat: no-repeat, repeat, no-repeat !important;
    box-shadow: 0 3px 24px rgba(212,175,55,.16), 0 1px 10px rgba(212,175,55,.35) !important;
    backdrop-filter: blur(14px) !important;
}
header button,
header a {
    color: rgba(232,207,142,.88) !important;
    transition: color .2s ease, filter .2s ease, text-shadow .2s ease !important;
}
header button:hover,
header a:hover {
    color: #f7e6b5 !important;
    filter: brightness(1.2) !important;
    text-shadow: 0 0 10px rgba(212,175,55,.6) !important;
}

/* --- 输入表单：双色渐变金边 --- */
form:has(textarea) {
    position: relative !important;
    border: 1px solid transparent !important;
    background:
        linear-gradient(135deg, rgba(16,13,8,.95) 0%, rgba(52,40,18,.88) 100%) padding-box,
        linear-gradient(135deg, rgba(212,175,55,.7) 0%, rgba(212,175,55,.18) 35%, rgba(138,92,19,.55) 70%, rgba(212,175,55,.7) 100%) border-box !important;
    border-radius: 14px !important;
    box-shadow: 0 8px 32px rgba(212,175,55,.14), inset 0 0 30px rgba(212,175,55,.05) !important;
    transition: box-shadow .3s ease !important;
}
/* 聚焦金色脉冲光环 */
form:has(textarea):focus-within {
    animation: chat-gold-pulse 2.4s ease-in-out infinite !important;
}
@keyframes chat-gold-pulse {
    0%, 100% { box-shadow: 0 0 0 1px rgba(212,175,55,.35), 0 0 18px rgba(212,175,55,.2), inset 0 0 30px rgba(212,175,55,.05) !important; }
    50% { box-shadow: 0 0 0 1px rgba(232,207,142,.6), 0 0 38px rgba(212,175,55,.45), inset 0 0 38px rgba(212,175,55,.1) !important; }
}

/* textarea 容器：金色侧边强调 + 内侧微光 */
form:has(textarea) .group\/input-group {
    background: linear-gradient(135deg, rgba(138,92,19,.2) 0%, rgba(201,162,75,.06) 100%) !important;
    border-color: rgba(212,175,55,.5) !important;
    border-left: 3px solid rgba(232,207,142,.65) !important;
    border-radius: 10px !important;
    box-shadow: inset 0 0 22px rgba(212,175,55,.08) !important;
}
form:has(textarea) textarea {
    font-size: 1.05em !important;
    line-height: 1.85 !important;
    color: #f6efdc !important;
    letter-spacing: .02em !important;
    caret-color: #f2dc92 !important;
}
form:has(textarea) textarea::placeholder {
    color: rgba(232,207,142,.45) !important;
    letter-spacing: .08em !important;
}

/* 快捷行：底部金色虚线分隔 */
form:has(textarea) [class*="order-first"] {
    border-bottom: 1px dashed rgba(212,175,55,.22) !important;
}
form:has(textarea) [class*="order-first"] button,
form:has(textarea) [class*="order-last"] button {
    color: rgba(232,207,142,.82) !important;
    border-radius: 6px !important;
    transition: all .18s ease !important;
}
form:has(textarea) [class*="order-first"] button:hover,
form:has(textarea) [class*="order-last"] button:hover {
    color: #f7e6b5 !important;
    background: rgba(201,162,75,.18) !important;
    box-shadow: 0 0 12px rgba(212,175,55,.22) !important;
}

/* 发送按钮：金色渐变 + 辉光 + 图标旋转 */
form:has(textarea) button[class*="bg-primary"] {
    background: linear-gradient(135deg, #8a5c13 0%, #c9a24b 45%, #f2dc92 100%) !important;
    color: #1c1305 !important;
    border: 1px solid rgba(255,244,214,.45) !important;
    box-shadow: 0 3px 14px rgba(212,175,55,.5), inset 0 1px 0 rgba(255,244,214,.4) !important;
    transition: all .25s ease !important;
}
form:has(textarea) button[class*="bg-primary"]:hover {
    filter: brightness(1.18) !important;
    box-shadow: 0 4px 22px rgba(232,207,142,.65), inset 0 1px 0 rgba(255,244,214,.5) !important;
    transform: translateY(-1px) !important;
}
form:has(textarea) button[class*="bg-primary"] svg {
    transition: transform .35s ease !important;
}
form:has(textarea) button[class*="bg-primary"]:hover svg {
    transform: rotate(180deg) scale(1.1) !important;
}

/* 模型/回复模式文字金色 */
form:has(textarea) [class*="order-last"] [class*="font-medium"] {
    color: rgba(232,207,142,.92) !important;
    text-shadow: 0 0 8px rgba(212,175,55,.3) !important;
}

/* =========================================
   聊天消息区 · 气泡增强 & 操作按钮（v3）
   ========================================= */
/* AI 气泡：左侧金色符文边 + 魔法阵纹理 + 渐变描边 */
.group.is-assistant > div:first-child {
    border-left: 3px solid rgba(232,207,142,.55) !important;
    border-top: 1px solid rgba(212,175,55,.35) !important;
    border-right: 1px solid rgba(107,88,37,.6) !important;
    border-bottom: 1px solid rgba(107,88,37,.6) !important;
    border-radius: 4px 14px 14px 14px !important;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27160%27%20height%3D%27160%27%20viewBox%3D%270%200%20160%20160%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27%2523d4af37%27%20stroke-width%3D%271%27%20stroke-opacity%3D%270.1%27%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%2766%27%2F%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%2752%27%20stroke-dasharray%3D%273%207%27%2F%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%2738%27%2F%3E%3Cpath%20d%3D%27M80%2014%20L114%2096%20L46%2096%20Z%27%2F%3E%3Cpath%20d%3D%27M80%2080%20L80%2030%27%2F%3E%3Cpath%20d%3D%27M80%2080%20L130%2080%27%2F%3E%3Cpath%20d%3D%27M80%2080%20L80%20130%27%2F%3E%3Cpath%20d%3D%27M80%2080%20L30%2080%27%2F%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%278%27%2F%3E%3Ccircle%20cx%3D%2780%27%20cy%3D%2780%27%20r%3D%272%27%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"), linear-gradient(135deg, #14110b 0%, #1e180f 100%) !important;
    background-size: 220px, 100% 100% !important;
    background-repeat: repeat, no-repeat !important;
    box-shadow: 0 4px 20px rgba(212,175,55,.1), inset 0 0 26px rgba(212,175,55,.05) !important;
    position: relative !important;
}
/* 用户气泡：右侧金色点缀 + 渐变描边 */
.group.is-user > div:first-child {
    border-right: 3px solid rgba(232,207,142,.5) !important;
    border-top: 1px solid rgba(212,175,55,.3) !important;
    border-left: 1px solid rgba(139,115,50,.55) !important;
    border-bottom: 1px solid rgba(139,115,50,.55) !important;
    border-radius: 14px 4px 14px 14px !important;
    box-shadow: 0 4px 18px rgba(212,175,55,.12), inset 0 0 22px rgba(212,175,55,.05) !important;
}
/* 气泡正文颜色 */
.group.is-assistant > div:first-child,
.group.is-user > div:first-child {
    color: #f3ecd9 !important;
}
/* 消息操作按钮（复制/重新生成/分支等）：金色 */
.group.is-assistant [class*="text-muted-foreground"],
.group.is-user [class*="text-muted-foreground"] {
    color: rgba(232,207,142,.55) !important;
    transition: all .18s ease !important;
}
.group.is-assistant [class*="text-muted-foreground"]:hover,
.group.is-user [class*="text-muted-foreground"]:hover {
    color: #f2dc92 !important;
    filter: drop-shadow(0 0 6px rgba(212,175,55,.55)) !important;
}
/* 消息操作按钮 svg 图标描边 */
.group.is-assistant button svg,
.group.is-user button svg {
    stroke: rgba(232,207,142,.7) !important;
}
/* 消息列表滚动条：金色 */
[class*="scroll-mt"] {
    scrollbar-width: thin !important;
    scrollbar-color: rgba(201,162,75,.5) rgba(201,162,75,.06) !important;
}
[class*="scroll-mt"]::-webkit-scrollbar { width: 8px !important; }
[class*="scroll-mt"]::-webkit-scrollbar-track { background: rgba(201,162,75,.05) !important; }
[class*="scroll-mt"]::-webkit-scrollbar-thumb {
    background: linear-gradient(180deg, #8a5c13, #c9a24b) !important;
    border-radius: 4px !important;
    border: 1px solid rgba(20,17,11,.5) !important;
}
[class*="scroll-mt"]::-webkit-scrollbar-thumb:hover { background: #e8cf8e !important; }
/* 顶部栏按钮图标：金色描边 */
header button svg {
    stroke: rgba(232,207,142,.75) !important;
    transition: stroke .2s ease, filter .2s ease !important;
}
header button:hover svg {
    stroke: #f2dc92 !important;
    filter: drop-shadow(0 0 4px rgba(212,175,55,.6)) !important;
}

/* =========================================
   势力声望栏
   ========================================= */
.rep-panel .rep-row {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 7px 4px !important;
    border-bottom: 1px dashed rgba(201,162,75,.15) !important;
}
.rep-panel .rep-row:last-child { border-bottom: none !important; }
.rep-panel .rep-name {
    flex: 0 0 118px !important;
    font-size: .9em !important;
    color: #e8cf8e !important;
    font-weight: 600 !important;
    letter-spacing: .04em !important;
    white-space: nowrap !important;
}
.rep-panel .rep-lv {
    flex: 0 0 auto !important;
    min-width: 88px !important;
    text-align: center !important;
    font-size: .82em !important;
    font-weight: 800 !important;
    border: 1px solid !important;
    border-radius: 6px !important;
    padding: 2px 8px !important;
    letter-spacing: .03em !important;
    white-space: nowrap !important;
}
.rep-panel .rep-fx {
    flex: 1 !important;
    font-size: .78em !important;
    color: rgba(236,228,207,.7) !important;
    line-height: 1.5 !important;
}
/* =========================================
   技能栏位（玩家/已契约对象/NPC 通用）
   ========================================= */
.skill-item {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    padding: 3px 8px !important;
    margin: 3px 0 !important;
    background: linear-gradient(90deg, rgba(212,175,55,.08) 0%, rgba(212,175,55,0) 65%) !important;
    border: 1px solid rgba(212,175,55,.18) !important;
    border-radius: 6px !important;
}
.skill-item .sk-name {
    flex: 0 0 auto !important;
    min-width: 76px !important;
    color: #e8cf8e !important;
    font-weight: 700 !important;
    letter-spacing: .05em !important;
    white-space: nowrap !important;
}
.skill-item .sk-lv {
    flex: 0 0 auto !important;
    color: #1c1305 !important;
    background: linear-gradient(135deg,#8a5c13 0%,#c9a24b 45%,#e8cf8e 100%) !important;
    border-radius: 4px !important;
    padding: 0 7px !important;
    font-size: .82em !important;
    font-weight: 800 !important;
    letter-spacing: .04em !important;
    white-space: nowrap !important;
}
.skill-item .sk-bar {
    flex: 1 !important;
    height: 5px !important;
    min-width: 40px !important;
    background: rgba(236,228,207,.12) !important;
    border-radius: 3px !important;
    overflow: hidden !important;
}
.skill-item .sk-bar i {
    display: block !important;
    height: 100% !important;
    background: linear-gradient(90deg,#8a5c13 0%,#c9a24b 60%,#e8cf8e 100%) !important;
    border-radius: 3px !important;
}
.skill-item .sk-num {
    flex: 0 0 auto !important;
    color: rgba(236,228,207,.85) !important;
    font-size: .78em !important;
    font-weight: 600 !important;
    font-variant-numeric: tabular-nums !important;
    white-space: nowrap !important;
}
.skill-item .sk-type {
    flex: 0 0 auto !important;
    color: rgba(201,162,75,.75) !important;
    font-size: .7em !important;
    border: 1px solid rgba(201,162,75,.3) !important;
    border-radius: 4px !important;
    padding: 0 4px !important;
    white-space: nowrap !important;
}

/* 阶数配色：进度条与徽章随阶数变色 */
.skill-item.lv-入门 .sk-bar i { background: linear-gradient(90deg,#1b5e20 0%,#4caf50 60%,#81c784 100%) !important; }
.skill-item.lv-熟练 .sk-bar i { background: linear-gradient(90deg,#0d47a1 0%,#42a5f5 60%,#90caf9 100%) !important; }
.skill-item.lv-精通 .sk-bar i { background: linear-gradient(90deg,#4a148c 0%,#ab47bc 60%,#ce93d8 100%) !important; }
.skill-item.lv-大师 .sk-bar i { background: linear-gradient(90deg,#bf360c 0%,#ff9800 60%,#ffcc80 100%) !important; }
.skill-item.lv-圆满 .sk-bar i { background: linear-gradient(90deg,#8a5c13 0%,#ffd700 60%,#fff3b0 100%) !important; }
.skill-item.lv-入门 .sk-lv { color: #fff !important; background: linear-gradient(135deg,#1b5e20 0%,#43a047 100%) !important; }
.skill-item.lv-熟练 .sk-lv { color: #fff !important; background: linear-gradient(135deg,#0d47a1 0%,#1e88e5 100%) !important; }
.skill-item.lv-精通 .sk-lv { color: #fff !important; background: linear-gradient(135deg,#4a148c 0%,#8e24aa 100%) !important; }
.skill-item.lv-大师 .sk-lv { color: #fff !important; background: linear-gradient(135deg,#bf360c 0%,#fb8c00 100%) !important; }
.skill-item.lv-圆满 .sk-lv { color: #1c1305 !important; background: linear-gradient(135deg,#8a5c13 0%,#c9a24b 45%,#ffd700 100%) !important; }

.skill-item .sk-pow {
    flex: 0 0 auto !important;
    color: #ffd75e !important;
    font-size: .78em !important;
    font-weight: 800 !important;
    border: 1px solid rgba(255,215,94,.45) !important;
    border-radius: 4px !important;
    padding: 0 5px !important;
    white-space: nowrap !important;
    background: rgba(255,215,94,.06) !important;
}

/* 技能分组标题（战斗金/生活绿/色情粉） */
.skill-group {
    display: flex !important;
    align-items: center !important;
    margin: 5px 0 2px !important;
    padding: 2px 8px !important;
    border-radius: 3px !important;
}
.skill-group .sg-title {
    font-size: .85em !important;
    font-weight: 800 !important;
    letter-spacing: .08em !important;
}
.skill-group .sg-num {
    margin-left: 8px !important;
    color: #1c1305 !important;
    background: rgba(212,175,55,.85) !important;
    border-radius: 8px !important;
    padding: 0 6px !important;
    font-size: .72em !important;
    font-weight: 800 !important;
}
.skill-group.sg-battle { border-left: 3px solid #c9a24b !important; background: linear-gradient(90deg, rgba(212,175,55,.14) 0%, rgba(212,175,55,0) 65%) !important; }
.skill-group.sg-battle .sg-title { color: #e8cf8e !important; }
.skill-group.sg-life { border-left: 3px solid #66bb6a !important; background: linear-gradient(90deg, rgba(102,187,106,.14) 0%, rgba(102,187,106,0) 65%) !important; }
.skill-group.sg-life .sg-title { color: #a5d6a7 !important; }
.skill-group.sg-erotic { border-left: 3px solid #ff8fa3 !important; background: linear-gradient(90deg, rgba(255,143,163,.14) 0%, rgba(255,143,163,0) 65%) !important; }
.skill-group.sg-erotic .sg-title { color: #ff9db5 !important; }

/* =========================================
   响应式字体适配 + 层级字号
   （正文 1.08em 基准；状态栏/记忆区比正文小一号）
   ========================================= */
/* 基准：状态栏与记忆区比正文小一号 */
.rili-markdown-renderer .pc-rows {
    font-size: 0.92em !important;
}
.rili-markdown-renderer .mem-card {
    font-size: 0.92em !important;
}
.rili-markdown-renderer .mem-idx {
    font-size: 0.9em !important;
}
/* 手机端（窄屏）：整体缩小约 10%，避免偏大 */
@media (max-width: 640px) {
    .rili-markdown-renderer .story-body {
        font-size: 0.97em !important;
    }
    .rili-markdown-renderer .pc-rows {
        font-size: 0.85em !important;
    }
    .rili-markdown-renderer .mem-card {
        font-size: 0.85em !important;
    }
    .rili-markdown-renderer .mem-idx {
        font-size: 0.82em !important;
    }
}
/* 电脑端（宽屏）：整体放大约 7%，避免偏小 */
@media (min-width: 1280px) {
    .rili-markdown-renderer .story-body {
        font-size: 1.16em !important;
    }
    .rili-markdown-renderer .pc-rows {
        font-size: 0.98em !important;
    }
    .rili-markdown-renderer .mem-card {
        font-size: 0.98em !important;
    }
    .rili-markdown-renderer .mem-idx {
        font-size: 0.95em !important;
    }
}

/* =========================================
   横向滑动滑条（栏位信息过长可横滑查看）
   ========================================= */
/* 栏位容器：允许横向滚动，防内容被裁切遮挡 */
.rili-markdown-renderer .pc-rows,
.rili-markdown-renderer .pact-card,
.rili-markdown-renderer .npc-card,
.rili-markdown-renderer .mem-card,
.rili-markdown-renderer .rep-panel,
.rili-markdown-renderer .top-status-bar .tsb-grid {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior-x: contain !important;
    scrollbar-width: thin !important;
    scrollbar-color: rgba(201,162,75,.5) rgba(201,162,75,.08) !important;
}
/* 手机端：长内容行不压缩，触发横向滑动查看 */
@media (max-width: 768px) {
    /* 移动端：长内容自然折行（2-3 行），不再强制单行横滑 */
    .rili-markdown-renderer .pc-rows .pf,
    .rili-markdown-renderer .pc-rows .pf-full,
    .rili-markdown-renderer .pc-rows .pf.bio,
    .rili-markdown-renderer .rep-row,
    .rili-markdown-renderer .rep-fx,
    .rili-markdown-renderer .mem-card {
        min-width: 0 !important;
        max-width: 100% !important;
        white-space: normal !important;
        word-break: break-word !important;
        overflow-wrap: anywhere !important;
        flex-wrap: wrap !important;
    }
    /* 技能行：允许内部徽章换行 */
    .rili-markdown-renderer .skill-item {
        flex-wrap: wrap !important;
        min-width: 0 !important;
        max-width: 100% !important;
    }
    .rili-markdown-renderer .skill-item .sk-name {
        word-break: break-all !important;
    }
    
/* ===== 记忆区表格化 ===== */
.mem-tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.82rem;
  line-height: 1.6;
  margin: 0;
}
.mem-tbl thead th {
  padding: 6px 10px;
  text-align: left;
  font-weight: 600;
  font-size: 0.75rem;
  letter-spacing: 0.04em;
  border-bottom: 2px solid rgba(201,162,75,.35);
  white-space: nowrap;
}
/* 短期记忆表格 - 金色系 */
.mem-short thead th {
  color: #e8cf8e;
  background: rgba(201,162,75,.08);
}
.mem-short tbody td {
  border-bottom: 1px solid rgba(201,162,75,.15);
  padding: 5px 10px;
  color: #d4c8b0;
  vertical-align: top;
}
.mem-short tbody tr:hover td {
  background: rgba(201,162,75,.06);
}
/* 长期记忆表格 - 紫色系 */
.mem-long thead th {
  color: #c99bff;
  background: rgba(122,74,191,.08);
}
.mem-long tbody td {
  border-bottom: 1px solid rgba(122,74,191,.18);
  padding: 5px 10px;
  color: #d4c8b0;
  vertical-align: top;
}
.mem-long tbody tr:hover td {
  background: rgba(122,74,191,.06);
}
/* 永久记忆表格 - 深红系 */
.mem-perm thead th {
  color: #ff9db5;
  background: rgba(207,27,75,.08);
}
.mem-perm tbody td {
  border-bottom: 1px solid rgba(207,27,75,.2);
  padding: 5px 10px;
  color: #d4c8b0;
  vertical-align: top;
}
.mem-perm tbody tr:hover td {
  background: rgba(207,27,75,.06);
}
/* 表格列宽 */
.mem-tbl th:first-child,
.mem-tbl td:first-child {
  width: 2.5em;
  text-align: center;
  font-weight: 700;
  color: #c9a24b;
}
.mem-long th:first-child,
.mem-long td:first-child {
  color: #c99bff;
}
.mem-perm th:first-child,
.mem-perm td:first-child {
  color: #ff9db5;
}
.mem-tbl th:nth-child(2),
.mem-tbl td:nth-child(2) {
  width: 20%;
  white-space: nowrap;
}
.mem-tbl th:nth-child(3),
.mem-tbl td:nth-child(3) {
  width: 22%;
}
.mem-tbl th:nth-child(4),
.mem-tbl td:nth-child(4) {
  width: auto;
}
/* 移动端表格水平滚动 */
@media (max-width: 768px) {
  .mem-tbl {
    font-size: 0.72rem;
    min-width: 500px;
  }
  .mem-tbl thead th,
  .mem-tbl tbody td {
    padding: 4px 6px;
  }
}

/* 移动端关闭栏位横向滚动（折行后不再需要横滑） */
    .rili-markdown-renderer .pc-rows,
    .rili-markdown-renderer .pact-card,
    .rili-markdown-renderer .npc-card,
    .rili-markdown-renderer .mem-card,
    .rili-markdown-renderer .rep-panel {
        overflow-x: hidden !important;
    }
}
/* 横向滚动条外观（暗金主题） */
.rili-markdown-renderer .pc-rows::-webkit-scrollbar,
.rili-markdown-renderer .pact-card::-webkit-scrollbar,
.rili-markdown-renderer .npc-card::-webkit-scrollbar,
.rili-markdown-renderer .mem-card::-webkit-scrollbar,
.rili-markdown-renderer .rep-panel::-webkit-scrollbar,
.rili-markdown-renderer .top-status-bar .tsb-grid::-webkit-scrollbar {
    height: 5px !important;
}
.rili-markdown-renderer .pc-rows::-webkit-scrollbar-thumb,
.rili-markdown-renderer .pact-card::-webkit-scrollbar-thumb,
.rili-markdown-renderer .npc-card::-webkit-scrollbar-thumb,
.rili-markdown-renderer .mem-card::-webkit-scrollbar-thumb,
.rili-markdown-renderer .rep-panel::-webkit-scrollbar-thumb,
.rili-markdown-renderer .top-status-bar .tsb-grid::-webkit-scrollbar-thumb {
    background: linear-gradient(90deg, #8a5c13 0%, #c9a24b 100%) !important;
    border-radius: 3px !important;
}
.rili-markdown-renderer .pc-rows::-webkit-scrollbar-track,
.rili-markdown-renderer .pact-card::-webkit-scrollbar-track,
.rili-markdown-renderer .npc-card::-webkit-scrollbar-track,
.rili-markdown-renderer .mem-card::-webkit-scrollbar-track,
.rili-markdown-renderer .rep-panel::-webkit-scrollbar-track,
.rili-markdown-renderer .top-status-bar .tsb-grid::-webkit-scrollbar-track {
    background: rgba(201,162,75,.08) !important;
    border-radius: 3px !important;
}

.skill-item .sk-talent {
    flex: 0 0 auto !important;
    color: #b39ddb !important;
    font-size: .7em !important;
    font-weight: 600 !important;
    border: 1px solid rgba(179,157,219,.4) !important;
    border-radius: 4px !important;
    padding: 0 4px !important;
    background: rgba(179,157,219,.06) !important;
    white-space: nowrap !important;
}

/* 三类技能行配色：战斗金 / 生活绿 / 色情粉 */
.skill-item.battle {
    background: linear-gradient(90deg, rgba(212,175,55,.10) 0%, rgba(212,175,55,0) 65%) !important;
    border-color: rgba(212,175,55,.28) !important;
}
.skill-item.battle .sk-name { color: #e8cf8e !important; }
.skill-item.life {
    background: linear-gradient(90deg, rgba(102,187,106,.10) 0%, rgba(102,187,106,0) 65%) !important;
    border-color: rgba(102,187,106,.28) !important;
}
.skill-item.life .sk-name { color: #a5d6a7 !important; }
.skill-item.erotic {
    background: linear-gradient(90deg, rgba(255,143,163,.10) 0%, rgba(255,143,163,0) 65%) !important;
    border-color: rgba(255,143,163,.28) !important;
}
.skill-item.erotic .sk-name { color: #ff9db5 !important; }

/* wave 数值标注（span 版本：兼容平台过滤自定义标签） */
.rili-markdown-renderer span.wave {
    text-decoration: underline !important;
    text-decoration-color: rgba(212, 175, 55, .72) !important;
    text-decoration-thickness: 1.5px !important;
    text-underline-offset: 3px !important;
    text-decoration-skip-ink: auto !important;
    cursor: help !important;
    color: #e8cf8e !important;
    font-weight: 600 !important;
}
.rili-markdown-renderer span.wave:hover {
    text-decoration-color: #ffd75e !important;
    text-decoration-thickness: 2.5px !important;
}
/* 技能类别颜色 */
.rili-markdown-renderer span.wave.sk-w-battle {
    color: #e8cf8e !important;
    text-decoration-color: rgba(212, 175, 55, .78) !important;
}
.rili-markdown-renderer span.wave.sk-w-life {
    color: #a5d6a7 !important;
    text-decoration-color: rgba(102, 187, 106, .78) !important;
}
.rili-markdown-renderer span.wave.sk-w-erotic {
    color: #ff9db5 !important;
    text-decoration-color: rgba(255, 143, 163, .78) !important;
}
.rili-markdown-renderer span.wave.sk-w-battle:hover {
    text-decoration-color: #ffd75e !important;
}
.rili-markdown-renderer span.wave.sk-w-life:hover {
    text-decoration-color: #81c784 !important;
}
.rili-markdown-renderer span.wave.sk-w-erotic:hover {
    text-decoration-color: #ff8fa3 !important;
}

/* wave 数值标注（abbr 语义标签：悬停原生提示） */
.rili-markdown-renderer abbr.wave {
    text-decoration: underline !important;
    text-decoration-color: rgba(212, 175, 55, .72) !important;
    text-decoration-thickness: 1.5px !important;
    text-underline-offset: 3px !important;
    text-decoration-skip-ink: auto !important;
    cursor: help !important;
    color: #e8cf8e !important;
    font-weight: 600 !important;
}
.rili-markdown-renderer abbr.wave:hover {
    text-decoration-color: #ffd75e !important;
    text-decoration-thickness: 2.5px !important;
}
.rili-markdown-renderer abbr.wave.sk-w-battle {
    color: #e8cf8e !important;
    text-decoration-color: rgba(212, 175, 55, .78) !important;
}
.rili-markdown-renderer abbr.wave.sk-w-life {
    color: #a5d6a7 !important;
    text-decoration-color: rgba(102, 187, 106, .78) !important;
}
.rili-markdown-renderer abbr.wave.sk-w-erotic {
    color: #ff9db5 !important;
    text-decoration-color: rgba(255, 143, 163, .78) !important;
}
.rili-markdown-renderer abbr.wave.sk-w-battle:hover {
    text-decoration-color: #ffd75e !important;
}
.rili-markdown-renderer abbr.wave.sk-w-life:hover {
    text-decoration-color: #81c784 !important;
}
.rili-markdown-renderer abbr.wave.sk-w-erotic:hover {
    text-decoration-color: #ff8fa3 !important;
}

/* wave 悬停提示：游戏式浮动提示框（暗金渐变 + 描边 + 辉光 + 箭头） */
.rili-markdown-renderer abbr.wave {
    position: relative;
}
.rili-markdown-renderer abbr.wave:hover::after {
    content: attr(data-info);
    position: absolute;
    left: 0;
    bottom: calc(100% + 10px);
    z-index: 999;
    width: max-content;
    max-width: 280px;
    padding: 10px 14px;
    background: linear-gradient(160deg, #1e180f 0%, #14110b 100%);
    color: #ece4cf;
    font-size: 13px;
    line-height: 1.6;
    text-align: left;
    border: 1px solid rgba(212, 175, 55, .6);
    border-radius: 8px;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .68), 0 0 14px rgba(212, 175, 55, .22);
    white-space: normal;
    pointer-events: none;
}
.rili-markdown-renderer abbr.wave:hover::before {
    content: '';
    position: absolute;
    left: 14px;
    bottom: calc(100% + 4px);
    z-index: 1000;
    border: 6px solid transparent;
    border-top-color: rgba(212, 175, 55, .9);
    pointer-events: none;
}
/* 兜底：AI 若误用 title 属性（无 data-info），也能读取显示 */
.rili-markdown-renderer abbr.wave:not([data-info]):hover::after {
    content: attr(title);
}

/* 类别变色：提示框边框与箭头随技能类别 */
.rili-markdown-renderer abbr.wave.sk-w-battle:hover::after {
    border-color: rgba(212, 175, 55, .85) !important;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .68), 0 0 18px rgba(212, 175, 55, .38) !important;
}
.rili-markdown-renderer abbr.wave.sk-w-battle:hover::before {
    border-top-color: rgba(212, 175, 55, .95) !important;
}
.rili-markdown-renderer abbr.wave.sk-w-life:hover::after {
    border-color: rgba(102, 187, 106, .85) !important;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .68), 0 0 18px rgba(102, 187, 106, .38) !important;
}
.rili-markdown-renderer abbr.wave.sk-w-life:hover::before {
    border-top-color: rgba(129, 199, 132, .95) !important;
}
.rili-markdown-renderer abbr.wave.sk-w-erotic:hover::after {
    border-color: rgba(255, 143, 163, .85) !important;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .68), 0 0 18px rgba(255, 143, 163, .38) !important;
}
.rili-markdown-renderer abbr.wave.sk-w-erotic:hover::before {
    border-top-color: rgba(255, 143, 163, .95) !important;
}

/* ===== 技能名悬停提示：状态栏技能效果/数值悬浮窗（复用 wave 暗金浮动窗样式） ===== */
.skill-item .sk-name[data-info] {
    position: relative !important;
    cursor: help !important;
    border-bottom: 1px dashed rgba(212, 175, 55, .45) !important;
}
.skill-item .sk-name[data-info]:hover::after {
    content: attr(data-info);
    position: absolute;
    left: 0;
    bottom: calc(100% + 10px);
    z-index: 999;
    width: max-content;
    max-width: 300px;
    padding: 10px 14px;
    background: linear-gradient(160deg, #1e180f 0%, #14110b 100%);
    color: #ece4cf;
    font-size: 13px;
    line-height: 1.6;
    text-align: left;
    border: 1px solid rgba(212, 175, 55, .6);
    border-radius: 8px;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .68), 0 0 14px rgba(212, 175, 55, .22);
    white-space: normal;
    pointer-events: none;
}
.skill-item .sk-name[data-info]:hover::before {
    content: '';
    position: absolute;
    left: 14px;
    bottom: calc(100% + 4px);
    z-index: 1000;
    border: 6px solid transparent;
    border-top-color: rgba(212, 175, 55, .9);
    pointer-events: none;
}
/* 类别变色：提示框边框与箭头随技能类别 */
.skill-item.battle .sk-name[data-info]:hover::after { border-color: rgba(212, 175, 55, .85) !important; box-shadow: 0 6px 24px rgba(0,0,0,.68), 0 0 18px rgba(212,175,55,.38) !important; }
.skill-item.battle .sk-name[data-info]:hover::before { border-top-color: rgba(212, 175, 55, .95) !important; }
.skill-item.life .sk-name[data-info]:hover::after { border-color: rgba(102, 187, 106, .85) !important; box-shadow: 0 6px 24px rgba(0,0,0,.68), 0 0 18px rgba(102,187,106,.38) !important; }
.skill-item.life .sk-name[data-info]:hover::before { border-top-color: rgba(129, 199, 132, .95) !important; }
.skill-item.erotic .sk-name[data-info]:hover::after { border-color: rgba(255, 143, 163, .85) !important; box-shadow: 0 6px 24px rgba(0,0,0,.68), 0 0 18px rgba(255,143,163,.38) !important; }
.skill-item.erotic .sk-name[data-info]:hover::before { border-top-color: rgba(255, 143, 163, .95) !important; }

/* =========================================
   魔法阵输出按钮（替换原发送按钮）
   ========================================= */
/* 1. 发送按钮本体：透明圆形容器，容纳魔法阵 */
form:has(textarea) button[class*="bg-primary"] {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    width: 40px !important;
    height: 40px !important;
    min-width: 40px !important;
    min-height: 40px !important;
    border-radius: 50% !important;
    position: relative !important;
    padding: 0 !important;
    margin: 0 2px !important;
    overflow: visible !important;
}

/* 2. 隐藏原发送图标 */
form:has(textarea) button[class*="bg-primary"] svg {
    display: none !important;
}

/* 3. 魔法阵图案（默认静止） */
form:has(textarea) button[class*="bg-primary"]::before {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20100%20100'%3E%3Ccircle%20cx='50'%20cy='50'%20r='45'%20fill='none'%20stroke='%23ffe135'%20stroke-width='3'/%3E%3Ccircle%20cx='50'%20cy='50'%20r='38'%20fill='none'%20stroke='%23ffe135'%20stroke-width='2'%20stroke-dasharray='5%205'/%3E%3Cpolygon%20points='50,10%2084,70%2016,70'%20fill='none'%20stroke='%23ffe135'%20stroke-width='2.5'/%3E%3Cpolygon%20points='50,90%2084,30%2016,30'%20fill='none'%20stroke='%23ffe135'%20stroke-width='2.5'/%3E%3Ccircle%20cx='50'%20cy='50'%20r='13'%20fill='none'%20stroke='%23ffe135'%20stroke-width='2.5'/%3E%3Ccircle%20cx='50'%20cy='50'%20r='5'%20fill='%23ffe135'/%3E%3C/svg%3E") !important;
    background-size: contain !important;
    background-position: center !important;
    background-repeat: no-repeat !important;
    filter: drop-shadow(0 0 4px rgba(255,225,53,.85)) drop-shadow(0 0 12px rgba(212,175,55,.35)) !important;
    transition: transform .3s ease, filter .3s ease !important;
    animation: none !important;
}

/* 4. 悬停：魔法阵放大 + 辉光增强（仍静止） */
form:has(textarea) button[class*="bg-primary"]:hover::before {
    transform: scale(1.14) !important;
    filter: drop-shadow(0 0 6px rgba(255,225,53,1)) drop-shadow(0 0 18px rgba(212,175,55,.55)) !important;
}

/* 5. 加载中：魔法阵旋转
   检测方式（任一命中即视为加载态）：
   - textarea 被禁用  form:has(textarea:disabled)
   - 按钮被禁用      button[class*="bg-primary"]:disabled
   - 按钮图标变为停止（lucide-square / octagon-x / 停止生成 aria-label） */
form:has(textarea:disabled) button[class*="bg-primary"]::before,
form:has(textarea) button[class*="bg-primary"]:disabled::before,
form:has(textarea) button[class*="bg-primary"]:has(svg.lucide-square)::before,
form:has(textarea) button[class*="bg-primary"]:has(svg.lucide-octagon-x)::before,
form:has(textarea) button[class*="bg-primary"][aria-label*="停止"]::before,
form:has(textarea) button[class*="bg-primary"][aria-label*="stop"]::before {
    animation: kiro-magic-spin 2.4s linear infinite !important;
    transition: none !important;
}

/* 6. 隐藏原加载/停止按钮（加载时平台可能出现的独立停止按钮，保留发送魔法阵本体） */
form:has(textarea) button:has(svg.lucide-square):not([class*="bg-primary"]),
form:has(textarea) button:has(svg.lucide-octagon-x):not([class*="bg-primary"]),
form:has(textarea) button[aria-label*="停止"]:not([class*="bg-primary"]),
form:has(textarea) button[aria-label*="stop"]:not([class*="bg-primary"]) {
    display: none !important;
}

/* =========================================
   wave 元素选择器兜底（AI 常输出 <wave data-info>，平台未过滤该标签）
   与 abbr.wave / span.wave 并存，三种形式均生效
   ========================================= */
.rili-markdown-renderer wave[data-info] {
    position: relative !important;
    text-decoration: underline !important;
    text-decoration-color: rgba(212, 175, 55, .72) !important;
    text-decoration-thickness: 1.5px !important;
    text-underline-offset: 3px !important;
    text-decoration-skip-ink: auto !important;
    cursor: help !important;
    color: #e8cf8e !important;
    font-weight: 600 !important;
}
.rili-markdown-renderer wave[data-info]:hover {
    text-decoration-color: #ffd75e !important;
    text-decoration-thickness: 2.5px !important;
}
.rili-markdown-renderer wave[data-info]:hover::after {
    content: attr(data-info);
    position: absolute;
    left: 0;
    bottom: calc(100% + 10px);
    z-index: 999;
    width: max-content;
    max-width: 280px;
    padding: 10px 14px;
    background: linear-gradient(160deg, #1e180f 0%, #14110b 100%);
    color: #ece4cf;
    font-size: 13px;
    line-height: 1.6;
    text-align: left;
    border: 1px solid rgba(212, 175, 55, .6);
    border-radius: 8px;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .68), 0 0 14px rgba(212, 175, 55, .22);
    white-space: normal;
    pointer-events: none;
}
.rili-markdown-renderer wave[data-info]:hover::before {
    content: '';
    position: absolute;
    left: 14px;
    bottom: calc(100% + 4px);
    z-index: 1000;
    border: 6px solid transparent;
    border-top-color: rgba(212, 175, 55, .9);
    pointer-events: none;
}
/* wave 三色类别 */
.rili-markdown-renderer wave.sk-w-battle { color: #e8cf8e !important; text-decoration-color: rgba(212, 175, 55, .78) !important; }
.rili-markdown-renderer wave.sk-w-life { color: #a5d6a7 !important; text-decoration-color: rgba(102, 187, 106, .78) !important; }
.rili-markdown-renderer wave.sk-w-erotic { color: #ff9db5 !important; text-decoration-color: rgba(255, 143, 163, .78) !important; }
.rili-markdown-renderer wave.sk-w-battle:hover { text-decoration-color: #ffd75e !important; }
.rili-markdown-renderer wave.sk-w-life:hover { text-decoration-color: #81c784 !important; }
.rili-markdown-renderer wave.sk-w-erotic:hover { text-decoration-color: #ff8fa3 !important; }
.rili-markdown-renderer wave.sk-w-battle:hover::after { border-color: rgba(212, 175, 55, .85) !important; box-shadow: 0 6px 24px rgba(0,0,0,.68), 0 0 18px rgba(212,175,55,.38) !important; }
.rili-markdown-renderer wave.sk-w-battle:hover::before { border-top-color: rgba(212, 175, 55, .95) !important; }
.rili-markdown-renderer wave.sk-w-life:hover::after { border-color: rgba(102, 187, 106, .85) !important; box-shadow: 0 6px 24px rgba(0,0,0,.68), 0 0 18px rgba(102,187,106,.38) !important; }
.rili-markdown-renderer wave.sk-w-life:hover::before { border-top-color: rgba(129, 199, 132, .95) !important; }
.rili-markdown-renderer wave.sk-w-erotic:hover::after { border-color: rgba(255, 143, 163, .85) !important; box-shadow: 0 6px 24px rgba(0,0,0,.68), 0 0 18px rgba(255,143,163,.38) !important; }
.rili-markdown-renderer wave.sk-w-erotic:hover::before { border-top-color: rgba(255, 143, 163, .95) !important; }

/* ===== 天赋栏位：金色锁定配色（与其他状态字段一致） ===== */
.rili-markdown-renderer .pc-rows .pf.talent-slot {
    background: rgba(201,162,75,.09) !important;
    border-left: 2px solid rgba(232,207,142,.55) !important;
    border-radius: 0 5px 5px 0 !important;
    box-shadow: none !important;
}
.rili-markdown-renderer .pc-rows .pf.talent-slot .talent-lock {
    display: inline-block !important;
    width: 16px !important;
    height: 16px !important;
    margin-right: 5px !important;
    vertical-align: -3px !important;
    background-image: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23e8cf8e'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='3'%20y='11'%20width='18'%20height='11'%20rx='2'%20ry='2'/%3E%3Cpath%20d='M7%2011V7a5%205%200%200%201%2010%200v4'/%3E%3C/svg%3E") !important;
    background-size: contain !important;
    background-repeat: no-repeat !important;
    background-position: center !important;
    filter: none !important;
}
.rili-markdown-renderer .pc-rows .pf.talent-slot .talent-list {
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: baseline !important;
    gap: 6px 14px !important;
    width: 100% !important;
    margin-top: 4px !important;
}
.rili-markdown-renderer .pc-rows .pf.talent-slot .talent-item {
    display: inline-block !important;
    white-space: nowrap !important;
    line-height: 1.7 !important;
    color: #e8cf8e !important;
}

