/* ============================================================================
 * Mira 觅画 · 视觉演进层 (v3.1 evolution plus)
 *
 * 设计原则：保留全部结构 / IA / 中文文案 / emoji；
 * 仅靠 CSS 加视觉密度（不动 DOM、不动 JS、不动 layout）。
 *
 * 修复：
 *   - v3 角标 与 web_user_badge 撞车 → 角标移到底部，徽章在顶部
 *
 * 升级：
 *   ▸ 字体：标题思源宋体（中文衬线）+ 数字 IBM Plex Mono（编辑感）
 *   ▸ 色彩：朱砂 #C8332E 主 / 古铜金 #C8A85C 数字 / 翠墨 #1F4736 强调
 *   ▸ 装饰：SVG 噪点 grain 全屏 / hairline 1px / 章节数字角标 / 印章 stamp
 *   ▸ 微动效：链接下划线扫过 / nav 下划线浮入 / 标题入场淡入
 *   ▸ 反 generic：去紫色渐变 / 去 emoji 染色 / 去大圆角
 *
 * 一键回滚：注释 index.html 的 <link redesign-evolution.css>
 * ============================================================================ */

@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;700;900&family=IBM+Plex+Mono:wght@300;400;500;600&display=swap');

/* ============================================================================
 * 1. Token 重定义
 * ============================================================================ */
/* :root tokens deleted — see tokens.css */

/* ============================================================================
 * 2. 全屏噪点 grain（创造"印刷品"质感）
 * ============================================================================ */
body::after {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    z-index: 9998;
    mix-blend-mode: overlay;
    opacity: 0.05;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* ============================================================================
 * 3. Header / nav 升级
 * ============================================================================ */
.header {
    position: relative;
    border-bottom: 1px solid var(--hair-strong);
    background: rgba(10, 10, 15, 0.85);
    backdrop-filter: blur(24px) saturate(140%);
    -webkit-backdrop-filter: blur(24px) saturate(140%);
}

/* 顶部一束朱砂渐变光（仅 1px 高，编辑感） */
.header::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    background: linear-gradient(
        90deg,
        transparent 0%,
        var(--accent) 18%,
        var(--accent) 22%,
        var(--gold) 50%,
        var(--accent) 78%,
        var(--accent) 82%,
        transparent 100%
    );
    opacity: 0.6;
}

/* logo 字体升级思源宋体 */
.logo-text {
    font-family: var(--font-display) !important;
    font-weight: 700;
    letter-spacing: 0.04em;
    font-size: 22px;
}
.logo-text > span:first-child {
    font-style: normal;
    color: var(--accent);
    font-weight: 700;
    margin-right: 4px;
    letter-spacing: -0.02em;
}

/* logo SVG 渐变改朱砂 → 古铜金 */
.logo svg linearGradient stop[stop-color="#6c5ce7"] {
    stop-color: var(--accent) !important;
}
.logo svg linearGradient stop[stop-color="#a29bfe"] {
    stop-color: var(--gold) !important;
}

/* ============================================================================
 * 4. nav-btn 重新设计：去胶囊 → 编辑式下划线
 * ============================================================================ */
.nav-btn {
    border-radius: 0 !important;
    background: transparent !important;
    border: none !important;
    border-bottom: 2px solid transparent !important;
    color: var(--text-secondary) !important;
    padding: 10px 16px !important;
    font-family: var(--font-display);
    font-size: 15px;
    font-weight: 500;
    letter-spacing: 0.05em;
    transition: color 0.18s ease, border-color 0.18s ease;
    position: relative;
    overflow: visible;
}
.nav-btn:hover {
    color: var(--text-primary) !important;
    border-bottom-color: var(--hair-strong) !important;
}

/* nav hover 时朱砂下划线从左扫入 */
.nav-btn::after {
    content: "";
    position: absolute;
    left: 16px;
    right: 16px;
    bottom: -2px;
    height: 2px;
    background: var(--accent);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.28s cubic-bezier(0.65, 0, 0.35, 1);
}
.nav-btn:hover::after { transform: scaleX(1); }

.nav-btn.active {
    color: var(--accent) !important;
    border-bottom-color: var(--accent) !important;
    font-weight: 700;
}
.nav-btn.active::after { transform: scaleX(0); }

/* ============================================================================
 * 5. 标题 / hero 字体升级
 * ============================================================================ */
h1, h2, h3,
.gallery-header h1, .gallery-header h2,
.section-title, .stage-title {
    font-family: var(--font-display) !important;
    font-weight: 700;
    letter-spacing: -0.01em;
    line-height: 1.2;
}
h1 { font-size: 32px; }
h2 { font-size: 24px; }
h3 { font-size: 18px; }

/* 标题左侧朱砂竖线（章节感） */
h2::before {
    content: "";
    display: inline-block;
    width: 3px;
    height: 0.85em;
    background: var(--accent);
    margin-right: 12px;
    vertical-align: -0.05em;
}

/* ============================================================================
 * 6. 主按钮 / CTA — 朱砂 + 古铜金阴影
 * ============================================================================ */
.btn-primary,
button.primary,
button[type="submit"],
.btn-create {
    background: var(--accent) !important;
    color: white !important;
    border: 1px solid var(--accent) !important;
    border-radius: 2px !important;
    padding: 12px 24px;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 14px;
    letter-spacing: 0.08em;
    cursor: pointer;
    transition: all 0.16s ease;
    position: relative;
}
.btn-primary:hover,
button.primary:hover,
button[type="submit"]:hover {
    background: var(--accent-hover) !important;
    border-color: var(--accent-hover) !important;
    transform: translate(-2px, -2px);
    box-shadow: 4px 4px 0 var(--gold);
}
.btn-primary:active,
button.primary:active,
button[type="submit"]:active {
    transform: translate(0, 0);
    box-shadow: none;
}

/* ============================================================================
 * 7. 数字 / 价格 / 积分 — mono + 古铜金 + 数字下划线
 * ============================================================================ */
.credit-amount,
.price-tag,
.cost-display,
.metric-value,
[class*="credit"] strong,
[class*="balance"] strong {
    font-family: var(--font-mono);
    color: var(--gold);
    font-weight: 500;
    letter-spacing: 0.04em;
    font-feature-settings: "tnum";
    border-bottom: 1px dashed var(--gold-dim);
    padding-bottom: 1px;
}

/* ============================================================================
 * 8. 输入框 — hairline 边框 + 朱砂 focus 光
 * ============================================================================ */
input, textarea, select {
    border: 1px solid var(--hair-strong) !important;
    border-radius: 2px !important;
    background: rgba(15, 15, 22, 0.7) !important;
    transition: border-color 0.18s ease, box-shadow 0.18s ease;
}
input:focus, textarea:focus, select:focus {
    border-color: var(--accent) !important;
    outline: none !important;
    box-shadow: 0 0 0 3px var(--accent-glow) !important;
}
input::placeholder, textarea::placeholder {
    font-style: italic;
    color: var(--text-muted);
    opacity: 0.7;
}

/* ============================================================================
 * 9. 链接 hover — 下划线扫入
 * ============================================================================ */
a:not(.nav-btn):not(.btn) {
    text-decoration: none;
    color: var(--text-primary);
    background-image: linear-gradient(var(--accent), var(--accent));
    background-size: 0 1px;
    background-repeat: no-repeat;
    background-position: 0 100%;
    transition: background-size 0.32s cubic-bezier(0.65, 0, 0.35, 1);
    padding-bottom: 1px;
}
a:not(.nav-btn):not(.btn):hover {
    background-size: 100% 1px;
    color: var(--accent);
}

/* ============================================================================
 * 10. 卡片 / 主面板 — hairline 边框 + 数字角标
 * ============================================================================ */
.card,
.dialog-content,
.gallery-card,
.stage,
.panel {
    border: 1px solid var(--hair) !important;
    border-radius: 2px !important;
    box-shadow: none !important;
    position: relative;
}

/* 卡片 hover 朱砂边框 */
.gallery-card,
.card[role="button"],
.card.clickable {
    transition: border-color 0.2s ease, transform 0.2s ease;
}
.gallery-card:hover,
.card[role="button"]:hover,
.card.clickable:hover {
    border-color: var(--accent) !important;
    transform: translateY(-2px);
}

/* ============================================================================
 * 11. 全局选中 + 滚动条
 * ============================================================================ */
::selection {
    background: var(--accent);
    color: white;
}
::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}
::-webkit-scrollbar-track {
    background: var(--bg-secondary);
}
::-webkit-scrollbar-thumb {
    background: var(--hair-strong);
    border-radius: 0;
}
::-webkit-scrollbar-thumb:hover {
    background: var(--accent);
}

/* ============================================================================
 * 12. 印章 stamp — 真实 DOM 元素（mira_enhance.js inject #miraStamp）
 *     可 hover / 点击 / 章节字变化 / 呼吸动画
 * ============================================================================ */
#miraStamp {
    position: fixed;
    bottom: 24px;
    right: 24px;
    width: 56px;
    height: 56px;
    background: var(--accent);
    color: white;
    font-family: var(--font-display);
    font-weight: 900;
    font-size: 32px;
    line-height: 56px;
    text-align: center;
    border-radius: 4px;
    z-index: 999;
    cursor: pointer;
    box-shadow:
        2px 2px 0 var(--gold),
        4px 4px 0 rgba(0, 0, 0, 0.35);
    transform: rotate(-3deg);
    opacity: 0.92;
    text-shadow: 0.5px 0.5px 0 rgba(0, 0, 0, 0.2);
    transition: transform 0.25s cubic-bezier(0.65, 0, 0.35, 1),
                opacity 0.25s ease,
                box-shadow 0.2s ease;
    user-select: none;
}
#miraStamp:hover {
    transform: rotate(-1deg) scale(1.06);
    box-shadow:
        3px 3px 0 var(--gold),
        6px 6px 0 rgba(0, 0, 0, 0.4);
    opacity: 1;
}
/* P0-1：印章 hover 半透明，避免遮挡内容 */
@media (max-width: 768px) {
    #miraStamp { width: 44px; height: 44px; font-size: 24px; line-height: 44px; }
}

/* 印章呼吸（生成中触发 .breathing） */
@keyframes mira-stamp-breathe {
    0%, 100% { opacity: 0.92; transform: rotate(-3deg) scale(1); box-shadow: 2px 2px 0 var(--gold), 4px 4px 0 rgba(0,0,0,0.35); }
    50%      { opacity: 0.6;  transform: rotate(-1deg) scale(1.08); box-shadow: 4px 4px 0 var(--gold), 8px 8px 0 rgba(200,168,92,0.5); }
}
#miraStamp.breathing {
    animation: mira-stamp-breathe 1.6s ease-in-out infinite;
}

/* 印章 pulse（成功一次性弹一下） */
@keyframes mira-stamp-pulse {
    0%   { transform: rotate(-3deg) scale(1); }
    30%  { transform: rotate(0deg) scale(1.18); }
    100% { transform: rotate(-3deg) scale(1); }
}
#miraStamp.pulse {
    animation: mira-stamp-pulse 0.8s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* 印章 hover 弹卡 */
#miraStampPopover {
    position: fixed;
    bottom: 92px;
    right: 24px;
    background: rgba(15, 15, 22, 0.96);
    border: 1px solid var(--hair-strong);
    border-radius: 2px;
    padding: 16px 20px;
    min-width: 240px;
    z-index: 998;
    font-family: var(--font-mono);
    font-size: 12px;
    color: var(--text-secondary);
    letter-spacing: 0.04em;
    backdrop-filter: blur(20px);
    transform: translateY(8px);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.2s ease, opacity 0.2s ease;
    box-shadow: 4px 4px 0 var(--accent);
}
#miraStampPopover.on {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
}
#miraStampPopover .ms-pop-head {
    color: var(--gold);
    font-size: 11px;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    border-bottom: 1px solid var(--hair);
    padding-bottom: 8px;
    margin-bottom: 10px;
}
#miraStampPopover .ms-pop-row {
    display: flex;
    justify-content: space-between;
    padding: 4px 0;
}
#miraStampPopover .ms-pop-row b {
    color: var(--text-primary);
    font-weight: 500;
}
#miraStampPopover .ms-pop-row b.ms-gold {
    color: var(--gold);
    font-feature-settings: "tnum";
}
#miraStampPopover .ms-pop-foot {
    margin-top: 12px;
    padding-top: 8px;
    border-top: 1px dashed var(--hair);
    color: var(--accent);
    text-align: center;
    letter-spacing: 0.1em;
}

/* ============================================================================
 * 21. 灵感按钮 ⚡ — nav 下方右上角浮按
 * ============================================================================ */
#miraInspBtn {
    position: fixed;
    top: 60px;
    right: 14px;
    width: 36px;
    height: 36px;
    background: rgba(15, 15, 22, 0.92);
    border: 1px solid var(--gold);
    color: var(--gold);
    border-radius: 4px;
    font-size: 18px;
    line-height: 34px;
    text-align: center;
    cursor: pointer;
    z-index: 9997;
    backdrop-filter: blur(20px);
    transition: all 0.18s ease;
    user-select: none;
}
#miraInspBtn:hover {
    background: var(--gold);
    color: var(--ink, #0A0A0A);
    transform: rotate(-12deg) scale(1.1);
}

#miraInspPanel {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -45%) scale(0.96);
    background: #FAFAF7;
    color: #14131A;
    border: 1px solid #2C2C3A;
    border-radius: 2px;
    padding: 28px 32px;
    width: 460px;
    max-width: 92vw;
    z-index: 99996;
    opacity: 0;
    pointer-events: none;
    transition: transform 0.32s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.2s ease;
    box-shadow: 8px 8px 0 var(--accent), 16px 16px 60px rgba(0, 0, 0, 0.5);
    font-family: var(--font-display);
}
#miraInspPanel.on {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
    pointer-events: auto;
}
#miraInspPanel .mip-head {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.4em;
    color: #888;
    text-transform: uppercase;
    border-bottom: 1px solid rgba(0,0,0,0.1);
    padding-bottom: 10px;
    margin-bottom: 16px;
}
#miraInspPanel .mip-text {
    font-size: 22px;
    font-weight: 500;
    line-height: 1.5;
    letter-spacing: -0.005em;
    margin-bottom: 24px;
}
#miraInspPanel .mip-actions {
    display: flex;
    gap: 8px;
}
#miraInspPanel button {
    flex: 1;
    padding: 12px;
    border: 1px solid #14131A;
    background: transparent;
    color: #14131A;
    font-family: var(--font-mono);
    font-size: 12px;
    letter-spacing: 0.15em;
    cursor: pointer;
    border-radius: 2px;
    transition: all 0.15s ease;
}
#miraInspPanel button:hover {
    background: #14131A;
    color: white;
}
#miraInspPanel .mip-btn-fill {
    background: var(--accent);
    border-color: var(--accent);
    color: white;
}
#miraInspPanel .mip-btn-fill:hover {
    background: var(--accent-hover);
}

/* ============================================================================
 * 22. 快捷键弹层 (Cmd/Ctrl + /)
 * ============================================================================ */
#miraSc {
    position: fixed;
    inset: 0;
    z-index: 99995;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.18s ease;
}
#miraSc.on { pointer-events: auto; opacity: 1; }
#miraSc .msc-bg {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(8px);
}
#miraSc .msc-card {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    background: rgba(10, 10, 15, 0.96);
    border: 1px solid var(--gold);
    padding: 36px;
    width: 520px; max-width: 92vw;
    color: var(--text-primary);
    box-shadow: 8px 8px 0 var(--accent);
}
#miraSc .msc-head {
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.4em;
    color: var(--gold);
    text-transform: uppercase;
    border-bottom: 1px solid var(--hair);
    padding-bottom: 12px;
    margin-bottom: 18px;
}
#miraSc .msc-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 0;
    font-family: var(--font-display);
    font-size: 14px;
    border-bottom: 1px dashed var(--hair);
}
#miraSc .msc-row kbd {
    font-family: var(--font-mono);
    font-size: 11px;
    background: var(--bg-card, #1a1a25);
    border: 1px solid var(--hair-strong);
    padding: 4px 8px;
    border-radius: 2px;
    color: var(--gold);
    letter-spacing: 0.05em;
}
#miraSc .msc-foot {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.3em;
    color: var(--text-muted);
    text-align: center;
    margin-top: 16px;
    text-transform: uppercase;
}

/* ============================================================================
 * 23. 全局拖拽 dropzone
 * ============================================================================ */
#miraDrop {
    position: fixed;
    inset: 0;
    z-index: 99994;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.2s ease;
    background: rgba(200, 51, 46, 0.08);
    backdrop-filter: blur(4px);
    border: 4px dashed var(--accent);
    box-sizing: border-box;
}
#miraDrop.on { opacity: 1; pointer-events: auto; }
#miraDrop .md-inner {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    color: var(--accent);
    font-family: var(--font-display);
    background: rgba(15, 15, 22, 0.92);
    padding: 40px 60px;
    border: 1px solid var(--accent);
}
#miraDrop .md-icon { font-size: 48px; margin-bottom: 12px; }
#miraDrop .md-title { font-size: 28px; font-weight: 700; }
#miraDrop .md-sub {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--text-secondary);
    letter-spacing: 0.2em;
    margin-top: 8px;
    text-transform: uppercase;
}

/* ============================================================================
 * 24. 调试 console（按 ` 开关）
 * ============================================================================ */
#miraConsole {
    position: fixed;
    bottom: 24px;
    left: 24px;
    width: 480px;
    max-width: 50vw;
    height: 280px;
    background: rgba(5, 5, 8, 0.96);
    border: 1px solid var(--gold);
    color: var(--text-secondary);
    font-family: var(--font-mono);
    font-size: 11px;
    z-index: 999;
    display: none;
    flex-direction: column;
    box-shadow: 4px 4px 0 var(--accent);
}
#miraConsole.on { display: flex; }
#miraConsole .mc-head {
    padding: 8px 12px;
    border-bottom: 1px solid var(--hair-strong);
    color: var(--gold);
    font-size: 10px;
    letter-spacing: 0.3em;
    text-transform: uppercase;
}
#miraConsole .mc-body {
    flex: 1;
    overflow: auto;
    padding: 8px 12px;
    line-height: 1.6;
}
#miraConsole .mc-row { white-space: pre; }
#miraConsole .mc-info { color: var(--text-secondary); }
#miraConsole .mc-warn { color: var(--gold); }
#miraConsole .mc-error { color: var(--accent); }

/* ============================================================================
 * 25. 卡牌动画（生成完成 wow moment）
 * ============================================================================ */
#miraCard {
    position: fixed;
    inset: 0;
    z-index: 99993;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.32s ease;
}
#miraCard.on { opacity: 1; pointer-events: auto; }
#miraCard .mcard-overlay {
    position: absolute; inset: 0;
    background: rgba(0, 0, 0, 0.72);
    backdrop-filter: blur(6px);
}
#miraCard .mcard-frame {
    position: absolute;
    top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    perspective: 1200px;
}
#miraCard .mcard-inner {
    width: 320px;
    height: 440px;
    position: relative;
    transform-style: preserve-3d;
    transition: transform 0.7s cubic-bezier(0.65, 0, 0.35, 1);
    cursor: pointer;
}
#miraCard.on .mcard-inner {
    animation: mira-card-in 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes mira-card-in {
    0%   { transform: rotateY(60deg) scale(0.6); opacity: 0; }
    100% { transform: rotateY(0deg) scale(1); opacity: 1; }
}
#miraCard .mcard-inner.flipped { transform: rotateY(180deg); }
#miraCard .mcard-face {
    position: absolute; inset: 0;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    background: #FAFAF7;
    border: 2px solid #14131A;
    color: #14131A;
    padding: 28px;
    box-shadow:
        6px 6px 0 var(--accent),
        12px 12px 0 var(--gold),
        20px 20px 60px rgba(0, 0, 0, 0.6);
    display: flex;
    flex-direction: column;
}
#miraCard .mcard-back {
    transform: rotateY(180deg);
    background: #14131A;
    color: #FAFAF7;
    border-color: var(--gold);
}
#miraCard .mcard-num {
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.4em;
    color: var(--gold-dim);
    text-transform: uppercase;
}
#miraCard .mcard-title {
    font-family: var(--font-display);
    font-size: 28px;
    font-weight: 700;
    line-height: 1.2;
    margin-top: 32px;
    flex: 1;
}
#miraCard .mcard-meta {
    font-family: var(--font-mono);
    font-size: 11px;
    color: #888;
    border-top: 1px dashed rgba(0,0,0,0.2);
    padding-top: 12px;
    letter-spacing: 0.1em;
}
#miraCard .mcard-stamp {
    position: absolute;
    bottom: 24px;
    right: 24px;
    width: 36px; height: 36px;
    background: var(--accent);
    color: white;
    text-align: center;
    line-height: 36px;
    font-family: var(--font-display);
    font-weight: 900;
    font-size: 22px;
    transform: rotate(-6deg);
}
#miraCard .mcard-flip-hint {
    font-family: var(--font-mono);
    font-size: 9px;
    color: #aaa;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    margin-top: 8px;
}
#miraCard .mcard-back-head {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.4em;
    color: var(--gold);
    text-transform: uppercase;
}
#miraCard .mcard-back-text {
    font-family: var(--font-display);
    font-size: 18px;
    line-height: 1.5;
    margin-top: 16px;
    flex: 1;
}
#miraCard .mcard-back-meta {
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--gold-dim);
    border-top: 1px dashed var(--hair);
    padding-top: 12px;
    letter-spacing: 0.1em;
}

/* ============================================================================
 * 26. 诗化加载（替换 spinner）
 * ============================================================================ */
#miraLoading {
    position: fixed;
    inset: 0;
    z-index: 99992;
    pointer-events: none;
    opacity: 0;
    background: rgba(10, 10, 15, 0.85);
    backdrop-filter: blur(8px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: opacity 0.32s ease;
}
#miraLoading.on { opacity: 1; pointer-events: auto; }
#miraLoading .ml-ring {
    width: 60px;
    height: 60px;
    border: 2px solid var(--hair);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: mira-spin 1.2s linear infinite;
    margin-bottom: 32px;
}
@keyframes mira-spin {
    to { transform: rotate(360deg); }
}
#miraLoading .ml-text {
    font-family: var(--font-display);
    font-size: 24px;
    font-weight: 500;
    color: var(--text-primary);
    letter-spacing: -0.01em;
    transition: opacity 0.4s ease;
    min-height: 32px;
}
#miraLoading .ml-sub {
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--gold);
    letter-spacing: 0.4em;
    margin-top: 12px;
    text-transform: uppercase;
}

/* ============================================================================
 * 27. P0 修复：footer 版本号在小屏隐藏（避免被印章压住）
 * ============================================================================ */
@media (max-width: 900px) {
    main::before, .main::before { display: none !important; }
    #miraInspBtn { top: auto; bottom: 92px; right: 14px; }
}

/* ============================================================================
 * 28. P0 修复：未登录 user badge 用朱砂边框（而非默认紫）
 *     已通过 web_login.js + evolution.css 覆盖（之前章节 14）
 *     这里加未登录态特化样式
 * ============================================================================ */
#webUserBadge a#webLoginLink {
    color: var(--gold) !important;
    border-bottom-color: var(--gold) !important;
}
#webUserBadge a#webLoginLink:hover {
    color: var(--accent) !important;
    border-bottom-color: var(--accent) !important;
}

/* ============================================================================
 * 13. 修 bug：v3 角标改在 footer / 印章上方，避开 user badge
 * ============================================================================ */
.header::after {
    content: "";  /* 关掉，移到下面新位置 */
}

/* 新版 mono 版本号：印章左侧（不撞 user badge） */
body > .v3-mark,
.v3-mark {
    /* 通过 ::before/::after 没法注入新元素到 body，
       但我们用纯 CSS 在 footer 区域加伪元素。
       折中：印章保留，版本号通过 web_login.js 那个 badge 旁边显示。 */
}

/* ============================================================================
 * 14. user badge 升级（覆盖 web_login.js 内联样式）
 * ============================================================================ */
#webUserBadge {
    background: rgba(15, 15, 22, 0.92) !important;
    border: 1px solid var(--hair-strong) !important;
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-radius: 2px !important;
    padding: 7px 14px !important;
    font-family: var(--font-mono) !important;
    font-size: 12px !important;
    color: var(--text-secondary) !important;
    letter-spacing: 0.06em;
    /* 还原右上角原位（z-index 高于 nav 飘在最上层） */
    top: 14px !important;
    right: 20px !important;
    z-index: 9999 !important;
    line-height: 1.4 !important;
    /* 防换行 */
    white-space: nowrap !important;
}
#webUserBadge b {
    color: var(--gold) !important;
    font-weight: 600;
    font-feature-settings: "tnum";
}
#webUserBadge a {
    color: var(--text-muted) !important;
    background: none !important;
    border-bottom: 1px solid transparent !important;
    padding-bottom: 1px;
    margin-left: 4px;
    transition: color 0.16s ease, border-color 0.16s ease;
}
#webUserBadge a:hover {
    color: var(--accent) !important;
    border-bottom-color: var(--accent) !important;
}

/* ============================================================================
 * 15. 登录浮层（web_login.js 内的 #webLoginModal）— 编辑感升级
 * ============================================================================ */
#webLoginModal > div {
    background: #FAFAF7 !important;
    border-radius: 2px !important;
    border: 1px solid #2C2C3A !important;
    box-shadow:
        8px 8px 0 var(--accent),
        16px 16px 60px rgba(0, 0, 0, 0.5) !important;
    padding: 36px !important;
    font-family: var(--font-display) !important;
    color: #14131A !important;
    position: relative;
}
#webLoginModal > div::before {
    content: "MIRA · 觅画 · CH 00";
    position: absolute;
    top: 12px;
    left: 36px;
    right: 36px;
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.4em;
    color: #888;
    text-transform: uppercase;
    border-bottom: 1px solid rgba(0,0,0,0.1);
    padding-bottom: 8px;
}
#webLoginModal h2 {
    font-family: var(--font-display) !important;
    font-weight: 700 !important;
    color: #14131A !important;
    font-size: 28px !important;
    letter-spacing: -0.01em;
    margin-top: 24px !important;
}
#webLoginModal h2::before { content: "" !important; }

#webLoginName {
    font-family: var(--font-display) !important;
    font-size: 18px !important;
    background: transparent !important;
    border: none !important;
    border-bottom: 2px solid #14131A !important;
    border-radius: 0 !important;
    padding: 12px 0 !important;
    color: #14131A !important;
}
#webLoginName:focus {
    border-bottom-color: var(--accent) !important;
    box-shadow: none !important;
}

#webLoginSubmit {
    background: var(--accent) !important;
    border: 1px solid var(--accent) !important;
    border-radius: 2px !important;
    color: white !important;
    font-family: var(--font-display) !important;
    font-weight: 500 !important;
    letter-spacing: 0.15em !important;
    text-transform: uppercase;
    padding: 14px !important;
}
#webLoginSubmit:hover {
    background: var(--accent-hover) !important;
    transform: translate(-2px, -2px);
    box-shadow: 4px 4px 0 var(--gold);
}

/* ============================================================================
 * 16. 入场淡入（首屏一次，所有 view 容器）
 * ============================================================================ */
@keyframes mira-fade-up {
    from { opacity: 0; transform: translateY(12px); }
    to { opacity: 1; transform: translateY(0); }
}
.gallery-view, .kb-view, .asset-view, .constraints-view,
.pro-view, .distribute-view, .create-view, .ad-view, .pet-view,
.remix-view {
    animation: mira-fade-up 0.5s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

/* ============================================================================
 * 17. 工具角标（"VOL.03 · CH·00"）— 印章左侧，固定底部
 * ============================================================================ */
@keyframes blink-dot {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 1; }
}

/* 通过 main 标签 ::before 注入版本号（避开 user badge） */
main::before,
.main::before {
    content: "VOL · 03 / Edition · 04 · 觅画工坊";
    position: fixed;
    bottom: 30px;
    right: 96px;
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.35em;
    color: var(--text-muted);
    text-transform: uppercase;
    z-index: 998;
    pointer-events: none;
    opacity: 0.75;
}

/* ============================================================================
 * 18. tab 横向滚动条美化（11 tab 在窄屏会溢出）
 * ============================================================================ */
.header-nav::-webkit-scrollbar { height: 4px; }
.header-nav::-webkit-scrollbar-thumb { background: var(--accent); }

/* ============================================================================
 * 19. focus-visible 全局（可访问性）
 * ============================================================================ */
*:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* ============================================================================
 * 20. 减弱原 header backdrop 上的渐变（避免跟印章 / nav 冲突）
 * ============================================================================ */
body::before { background: none; } /* 让印章覆盖原 body::before 渐变光 */
/* 注：印章 ::before 已经定义在 body 上，会覆盖原 style.css 的 body::before */

/* ============================================================================
 * 22. tab 内部 — panel-left / panel-right 章节式分隔
 *     朱砂左竖线（同 section-title 一致），右侧栏暗一档
 * ============================================================================ */
.panel-left,
.panel-right {
    border: 1px solid var(--hair) !important;
    border-radius: 2px !important;
    background: rgba(15, 15, 22, 0.55) !important;
    box-shadow: none !important;
    position: relative;
}
.panel-left {
    border-left: 3px solid var(--accent) !important;
}
.panel-right {
    background: rgba(15, 15, 22, 0.32) !important;
}

/* ============================================================================
 * 23. panel-header — 章节标题（思源宋体）+ mono 副标
 * ============================================================================ */
.panel-header {
    border-bottom: 1px solid var(--hair) !important;
    padding-bottom: 14px !important;
    margin-bottom: 18px !important;
    position: relative;
}
.panel-header::before {
    content: "CH · " counter(panel-ch, decimal-leading-zero);
    position: absolute;
    top: -2px;
    right: 0;
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.3em;
    color: var(--gold-dim);
    text-transform: uppercase;
    opacity: 0.65;
}
body { counter-reset: panel-ch; }
.panel-header { counter-increment: panel-ch; }

.panel-title {
    font-family: var(--font-display) !important;
    font-weight: 600 !important;
    font-size: 22px !important;
    letter-spacing: -0.01em !important;
    color: var(--text-primary) !important;
    line-height: 1.3 !important;
    margin: 0 0 6px 0 !important;
}
.panel-subtitle {
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    letter-spacing: 0.18em !important;
    color: var(--text-muted) !important;
    text-transform: none !important;
    line-height: 1.6 !important;
}

/* ============================================================================
 * 24. input-group / input-label / badge — 表单标签升级
 * ============================================================================ */
.input-group {
    margin-bottom: 18px;
    position: relative;
}
.input-group + .input-group::before {
    content: "";
    display: block;
    height: 1px;
    background: var(--hair);
    margin: -10px 0 18px 0;
    opacity: 0.55;
}

.input-label {
    font-family: var(--font-mono) !important;
    font-size: 10px !important;
    letter-spacing: 0.28em !important;
    text-transform: uppercase !important;
    color: var(--gold) !important;
    margin-bottom: 8px !important;
    display: flex;
    align-items: center;
    gap: 8px;
}

.input-label .badge,
.badge {
    background: transparent !important;
    border: 1px solid var(--accent) !important;
    color: var(--accent) !important;
    border-radius: 1px !important;
    padding: 1px 6px !important;
    font-family: var(--font-mono) !important;
    font-size: 9px !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase !important;
    line-height: 1.4 !important;
}

/* 主输入框 — story-input 等大型 textarea */
.story-input,
textarea.story-input {
    font-family: var(--font-display) !important;
    font-size: 16px !important;
    line-height: 1.7 !important;
    padding: 14px 16px !important;
    min-height: 120px !important;
    color: var(--text-primary) !important;
}
.story-input::placeholder {
    font-style: italic;
    color: var(--text-muted);
}

/* ============================================================================
 * 25. settings-grid / setting-item — 设置网格
 * ============================================================================ */
.settings-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px 14px;
}
.setting-item {
    position: relative;
}
.setting-item label,
.setting-item > label:first-child {
    font-family: var(--font-mono) !important;
    font-size: 9px !important;
    letter-spacing: 0.24em !important;
    text-transform: uppercase !important;
    color: var(--text-muted) !important;
    display: block !important;
    margin-bottom: 5px !important;
}
.setting-item select,
.setting-item input[type="text"] {
    width: 100%;
    padding: 8px 10px !important;
    font-size: 13px !important;
    font-family: var(--font-display) !important;
}

/* checkbox / radio 行内 label（音频 / 固定镜头 / 水印）*/
.setting-item input[type="checkbox"] + span,
label > input[type="checkbox"] {
    accent-color: var(--accent);
}

/* ============================================================================
 * 26. generate-section / btn-generate — 主 CTA 大按钮
 *     朱砂背景 + 古铜金阴影 + hover 偏移（同 btn-primary 节奏）
 * ============================================================================ */
.generate-section {
    border-top: 1px solid var(--hair);
    margin-top: 20px;
    padding-top: 18px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    position: relative;
}
.generate-section::before {
    content: "GENERATE";
    position: absolute;
    top: -6px;
    left: 0;
    background: var(--bg-primary, #0F0F16);
    padding: 0 8px 0 0;
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.4em;
    color: var(--gold-dim);
}

.btn-generate {
    flex: 1;
    min-width: 140px;
    background: var(--accent) !important;
    color: white !important;
    border: 1px solid var(--accent) !important;
    border-radius: 2px !important;
    padding: 14px 22px !important;
    font-family: var(--font-display) !important;
    font-weight: 500 !important;
    font-size: 15px !important;
    letter-spacing: 0.06em !important;
    cursor: pointer;
    transition: all 0.18s ease;
    box-shadow: 3px 3px 0 var(--gold-dim);
    position: relative;
}
.btn-generate:hover:not(:disabled) {
    background: var(--accent-hover) !important;
    transform: translate(-2px, -2px);
    box-shadow: 5px 5px 0 var(--gold);
}
.btn-generate:active {
    transform: translate(0, 0);
    box-shadow: 1px 1px 0 var(--gold-dim);
}
.btn-generate:disabled {
    opacity: 0.4;
    cursor: not-allowed;
    background: var(--text-muted) !important;
    border-color: var(--text-muted) !important;
    box-shadow: none;
}

.btn-generate.btn-auto {
    background: transparent !important;
    color: var(--gold) !important;
    border: 1px solid var(--gold) !important;
    box-shadow: 3px 3px 0 var(--accent-glow);
}
.btn-generate.btn-auto:hover:not(:disabled) {
    background: var(--gold) !important;
    color: var(--ink, #0A0A0A) !important;
    box-shadow: 5px 5px 0 var(--accent);
}

.btn-generate.btn-stop {
    background: transparent !important;
    color: var(--accent) !important;
    border: 1px solid var(--accent) !important;
    box-shadow: none;
}

/* ============================================================================
 * 27. 内部卡片 — pro-card / dist-card / settings-section
 *     一律 hairline + 数字角标 + 朱砂左线
 * ============================================================================ */
.pro-card,
.dist-card,
.settings-section,
.kb-dialog-card,
.asset-dialog-card {
    border: 1px solid var(--hair) !important;
    border-radius: 2px !important;
    background: rgba(15, 15, 22, 0.55) !important;
    box-shadow: none !important;
    padding: 18px 20px !important;
    margin-bottom: 14px !important;
    position: relative;
}
.pro-card { border-left: 2px solid var(--gold) !important; }
.settings-section { border-left: 2px solid var(--accent) !important; }

.pro-card-title,
.dist-card-title,
.settings-section-title {
    font-family: var(--font-display) !important;
    font-weight: 600 !important;
    font-size: 16px !important;
    color: var(--text-primary) !important;
    margin: 0 0 4px 0 !important;
    letter-spacing: -0.005em !important;
    display: flex;
    align-items: center;
    gap: 10px;
}
.settings-section-desc {
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    letter-spacing: 0.12em !important;
    color: var(--text-muted) !important;
    margin: 0 0 12px 0 !important;
    line-height: 1.6 !important;
}

/* 子按钮 / 链接 风格 */
.btn-secondary {
    background: transparent !important;
    border: 1px solid var(--hair-strong) !important;
    color: var(--text-secondary) !important;
    border-radius: 2px !important;
    padding: 9px 16px !important;
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    letter-spacing: 0.14em !important;
    cursor: pointer;
    transition: all 0.16s ease;
}
.btn-secondary:hover:not(:disabled) {
    border-color: var(--accent) !important;
    color: var(--accent) !important;
    background: var(--accent-glow) !important;
}
.btn-secondary:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.btn-link {
    background: transparent !important;
    border: none !important;
    color: var(--gold) !important;
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    letter-spacing: 0.14em !important;
    cursor: pointer;
    padding: 4px 6px !important;
    border-bottom: 1px solid transparent !important;
    transition: border-color 0.18s ease, color 0.18s ease;
}
.btn-link:hover {
    border-bottom-color: var(--gold) !important;
    color: var(--accent) !important;
}

.btn-large {
    padding: 16px 28px !important;
    font-size: 15px !important;
}
.btn-sm {
    padding: 4px 10px !important;
    font-size: 10px !important;
    letter-spacing: 0.12em !important;
}

/* ============================================================================
 * 28. 空状态 — 章节引语风格（思源宋体 italic）
 *     gallery-empty / asset-empty / kb-empty
 * ============================================================================ */
.gallery-empty,
.asset-empty,
.kb-empty,
.empty-state,
[class$="-empty"] {
    font-family: var(--font-display) !important;
    font-style: italic !important;
    font-size: 17px !important;
    color: var(--text-muted) !important;
    text-align: center !important;
    padding: 60px 24px !important;
    line-height: 1.7 !important;
    border: 1px dashed var(--hair) !important;
    border-radius: 2px !important;
    background: transparent !important;
    position: relative;
    letter-spacing: 0.005em;
}
.gallery-empty::before,
.asset-empty::before,
.kb-empty::before,
.empty-state::before,
[class$="-empty"]::before {
    content: "—— 空 ——";
    display: block;
    font-family: var(--font-mono);
    font-style: normal;
    font-size: 10px;
    letter-spacing: 0.4em;
    color: var(--gold-dim);
    margin-bottom: 14px;
    opacity: 0.55;
}

/* ============================================================================
 * 29. 日志面板 — 终端感（mono + 暗背景 + 朱砂时间戳）
 * ============================================================================ */
.log-panel,
#logPanel,
#adLogPanel {
    border: 1px solid var(--hair) !important;
    border-left: 3px solid var(--gold-dim) !important;
    background: rgba(8, 8, 12, 0.85) !important;
    border-radius: 2px !important;
    padding: 12px 14px !important;
    font-family: var(--font-mono) !important;
    font-size: 11px !important;
    line-height: 1.7 !important;
    color: var(--text-secondary) !important;
    max-height: 320px;
    overflow-y: auto;
    position: relative;
}
.log-panel::before,
#logPanel::before,
#adLogPanel::before {
    content: "LOG · STREAM";
    position: absolute;
    top: -7px;
    left: 12px;
    background: var(--bg-primary, #0F0F16);
    padding: 0 6px;
    font-size: 9px;
    letter-spacing: 0.3em;
    color: var(--gold);
}
.log-panel .log-time,
.log-panel time {
    color: var(--accent);
    margin-right: 6px;
}

/* ============================================================================
 * 30. details / summary — 折叠区（视频参数）
 * ============================================================================ */
details.input-group {
    border: 1px solid var(--hair);
    border-radius: 2px;
    padding: 10px 14px !important;
    background: rgba(15, 15, 22, 0.4);
}
details.input-group[open] {
    border-color: var(--gold-dim);
}
details.input-group > summary {
    list-style: none;
    cursor: pointer;
    font-family: var(--font-mono);
    font-size: 11px !important;
    letter-spacing: 0.16em;
    color: var(--gold) !important;
    padding: 4px 0 !important;
    display: flex;
    align-items: center;
    gap: 6px;
}
details.input-group > summary::-webkit-details-marker { display: none; }
details.input-group > summary::before {
    content: "▸";
    color: var(--accent);
    transition: transform 0.18s ease;
    display: inline-block;
}
details.input-group[open] > summary::before {
    transform: rotate(90deg);
}

/* ============================================================================
 * 31. 章节小元素 — chip / pill / hint
 * ============================================================================ */
.pro-model-hint,
.hint-text,
.help-text {
    font-family: var(--font-mono) !important;
    font-size: 10px !important;
    letter-spacing: 0.1em !important;
    color: var(--text-muted) !important;
    line-height: 1.7 !important;
    padding: 4px 0 !important;
}

/* generate-section 后面的"消耗 1 积分"等提示 */
.cost-hint,
.credit-hint {
    font-family: var(--font-mono) !important;
    font-size: 10px !important;
    letter-spacing: 0.16em !important;
    color: var(--gold) !important;
    text-transform: uppercase;
    margin-top: 8px;
    text-align: center;
    width: 100%;
}

/* ============================================================================
 * 32. gallery-card 卡牌 — 古铜金号码 + 标题宋体
 * ============================================================================ */
.gallery-card {
    counter-increment: gallery-num;
    overflow: hidden;
}
body { counter-reset: gallery-num; }
.gallery-card::after {
    content: "№ " counter(gallery-num, decimal-leading-zero);
    position: absolute;
    top: 8px;
    right: 10px;
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.2em;
    color: var(--gold);
    background: rgba(15, 15, 22, 0.85);
    padding: 2px 6px;
    border-radius: 1px;
    z-index: 2;
}

/* ============================================================================
 * 33. 创作日志侧栏 #miraSideLog — P1-3 配套
 *     右侧抽屉，记录 prompt / 生成 / 失败 历史
 * ============================================================================ */
#miraSideLogToggle {
    position: fixed;
    top: 50%;
    right: 0;
    transform: translateY(-50%);
    width: 32px;
    height: 96px;
    background: rgba(15, 15, 22, 0.92);
    border: 1px solid var(--hair-strong);
    border-right: none;
    border-radius: 4px 0 0 4px;
    color: var(--gold);
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.3em;
    writing-mode: vertical-rl;
    text-orientation: mixed;
    cursor: pointer;
    z-index: 9996;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease;
    user-select: none;
    backdrop-filter: blur(20px);
}
#miraSideLogToggle:hover {
    background: var(--accent);
    color: white;
    border-color: var(--accent);
}
#miraSideLogToggle.on {
    background: var(--accent);
    color: white;
}

#miraSideLog {
    position: fixed;
    top: 0;
    right: -380px;
    width: 360px;
    max-width: 88vw;
    height: 100vh;
    background: rgba(10, 10, 16, 0.97);
    border-left: 1px solid var(--hair-strong);
    box-shadow: -8px 0 40px rgba(0, 0, 0, 0.6);
    z-index: 9995;
    transition: right 0.32s cubic-bezier(0.65, 0, 0.35, 1);
    display: flex;
    flex-direction: column;
    backdrop-filter: blur(24px);
}
#miraSideLog.on {
    right: 0;
}
#miraSideLog .msl-head {
    padding: 18px 20px 14px 20px;
    border-bottom: 1px solid var(--hair);
    display: flex;
    align-items: center;
    justify-content: space-between;
}
#miraSideLog .msl-title {
    font-family: var(--font-display);
    font-size: 17px;
    font-weight: 600;
    color: var(--text-primary);
    letter-spacing: -0.005em;
}
#miraSideLog .msl-sub {
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.3em;
    color: var(--gold);
    text-transform: uppercase;
    margin-top: 4px;
}
#miraSideLog .msl-clear {
    background: transparent;
    border: 1px solid var(--hair-strong);
    color: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.16em;
    padding: 5px 10px;
    cursor: pointer;
    border-radius: 2px;
    transition: all 0.18s ease;
}
#miraSideLog .msl-clear:hover {
    border-color: var(--accent);
    color: var(--accent);
}

#miraSideLog .msl-body {
    flex: 1;
    overflow-y: auto;
    padding: 14px 18px;
}
#miraSideLog .msl-empty {
    font-family: var(--font-display);
    font-style: italic;
    color: var(--text-muted);
    text-align: center;
    padding: 60px 12px;
    font-size: 14px;
    line-height: 1.7;
}
#miraSideLog .msl-empty::before {
    content: "—— 空 ——";
    display: block;
    font-family: var(--font-mono);
    font-style: normal;
    font-size: 10px;
    letter-spacing: 0.4em;
    color: var(--gold-dim);
    margin-bottom: 12px;
}

#miraSideLog .msl-entry {
    border-left: 2px solid var(--hair-strong);
    padding: 10px 0 10px 12px;
    margin-bottom: 12px;
    font-size: 12px;
    line-height: 1.6;
    transition: border-color 0.18s ease;
}
#miraSideLog .msl-entry:hover {
    border-left-color: var(--accent);
}
#miraSideLog .msl-entry.ok    { border-left-color: var(--gold); }
#miraSideLog .msl-entry.fail  { border-left-color: var(--accent); }

#miraSideLog .msl-meta {
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.18em;
    color: var(--text-muted);
    text-transform: uppercase;
    margin-bottom: 4px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}
#miraSideLog .msl-meta .msl-tab {
    color: var(--gold);
}
#miraSideLog .msl-meta .msl-status {
    font-weight: 600;
}
#miraSideLog .msl-entry.ok   .msl-meta .msl-status { color: var(--gold); }
#miraSideLog .msl-entry.fail .msl-meta .msl-status { color: var(--accent); }

#miraSideLog .msl-text {
    font-family: var(--font-display);
    color: var(--text-primary);
    font-size: 13px;
    line-height: 1.55;
    word-break: break-word;
    max-height: 4.5em;
    overflow: hidden;
    position: relative;
}
#miraSideLog .msl-text.expand {
    max-height: none;
}
#miraSideLog .msl-text:not(.expand)::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 1.4em;
    background: linear-gradient(to bottom, transparent, rgba(10,10,16,0.97));
    pointer-events: none;
}

#miraSideLog .msl-foot {
    padding: 10px 18px;
    border-top: 1px solid var(--hair);
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.28em;
    color: var(--text-muted);
    text-align: center;
    text-transform: uppercase;
}

/* 抽屉打开时印章 / 灵感按钮往左让 */
body.msl-open #miraStamp,
body.msl-open #miraStampPopover,
body.msl-open #miraInspBtn { right: calc(360px + 24px); }
@media (max-width: 768px) {
    body.msl-open #miraStamp,
    body.msl-open #miraStampPopover,
    body.msl-open #miraInspBtn { right: 24px; opacity: 0.4; }
}

/* ============================================================================
 * 34. 微调 — 大型按钮组（pro 段操作行 / 资产对话）
 *     按钮换行时不挤压
 * ============================================================================ */
.pro-card .pro-card-title button,
.dist-card .dist-card-title button { font-size: 11px !important; }

/* asset-dialog-card / kb-dialog-card 内的按钮组 */
.asset-dialog-card > div:last-child,
.kb-dialog-card > div:last-child {
    border-top: 1px solid var(--hair);
    padding-top: 14px;
    margin-top: 14px;
    display: flex;
    gap: 10px;
    justify-content: flex-end;
}

/* ============================================================================
 * 35. 灵感按钮（contextual chip 版，取代之前的右上角浮动 ⚡）
 * ============================================================================ */
/* 防御：万一还有别的代码创建浮动按钮，强制隐藏 */
#miraInspBtn { display: none !important; }

/* 注入到 .input-label 旁边的灵感 chip */
.insp-chip {
    margin-left: auto;
    background: transparent;
    border: 1px solid var(--gold-dim);
    color: var(--gold);
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.16em;
    text-transform: none;
    padding: 3px 10px;
    border-radius: 999px;
    cursor: pointer;
    transition: all 0.16s ease;
    line-height: 1.4;
    white-space: nowrap;
}
.insp-chip:hover {
    border-color: var(--accent);
    color: white;
    background: var(--accent);
    transform: translate(-1px, -1px);
    box-shadow: 2px 2px 0 var(--gold-dim);
}
.insp-chip:active {
    transform: translate(0, 0);
    box-shadow: none;
}
