@charset "UTF-8";

/* KaTeX 数学公式块样式
   存储形态见 js/utils/katex-renderer.js：正文里只存 data-katex 源码，
   .katex-* 那一堆节点都是运行时渲染出来的。 */

/* 块级公式：独占一行、居中，长公式横向滚动而不是撑破正文 */
.kb-katex {
    display: block;
    margin: 1rem 0;
    padding: 0.25rem 0;
    overflow-x: auto;
    overflow-y: hidden;
    text-align: center;
    -webkit-overflow-scrolling: touch;
}

/* katex 自己的 display 容器已经带了上下 margin，叠加后空得离谱 */
.kb-katex .katex-display {
    margin: 0;
}

/* 行内公式跟着正文走，不改变行高 */
.kb-katex-inline {
    display: inline;
    white-space: nowrap;
}

/* 未渲染（脚本还没跑到 / 被剥离过）时不要塌成 0 宽，
   否则用户会以为公式丢了 */
.kb-katex:empty::before {
    content: '\2026';
    /* … */
    opacity: 0.45;
}

/* ---- 降级态：语法错误或 katex 未加载 ---- */

.kb-katex-error {
    text-align: left;
}

.kb-katex-error-tip {
    margin-bottom: 0.5rem;
    color: #b91c1c;
    font-size: 0.875rem;
}

[data-theme="dark"] .kb-katex-error-tip,
.theme-dark .kb-katex-error-tip {
    color: #fca5a5;
}

.kb-katex-source {
    margin: 0;
    padding: 0.75rem;
    border-radius: 6px;
    background: rgba(0, 0, 0, 0.04);
    color: inherit;
    font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
    font-size: 0.8125rem;
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: break-word;
}

[data-theme="dark"] .kb-katex-source,
.theme-dark .kb-katex-source {
    background: rgba(255, 255, 255, 0.06);
}

/* 行内的降级态只把源码摆出来，别再套一层代码块底色 */
.kb-katex-inline.kb-katex-error {
    font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
    color: #b91c1c;
}

[data-theme="dark"] .kb-katex-inline.kb-katex-error,
.theme-dark .kb-katex-inline.kb-katex-error {
    color: #fca5a5;
}

/* ---- 编辑器内：提示可双击修改源码，与流程图同一套手感 ---- */

.ql-editor .kb-katex {
    position: relative;
    padding: 0.5rem;
    border: 1px solid transparent;
    border-radius: 8px;
    cursor: pointer;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

.ql-editor .kb-katex:hover {
    border-color: #6366f1;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
}

.ql-editor .kb-katex:hover::before {
    /* 使用 Unicode 转义，避免静态服务器未声明 CSS charset 时中文提示乱码 */
    content: '\53cc\51fb\8fdb\884c\7f16\8f91';
    position: absolute;
    top: 6px;
    right: 8px;
    padding: 2px 8px;
    border-radius: 4px;
    background: #6366f1;
    color: #ffffff;
    font-size: 0.75rem;
    line-height: 1.5;
    pointer-events: none;
}

/* 降级源码要挡住 `.ai-message-content pre` 的深色代码块底色：
   那条规则只给背景不给前景，命中后就是深底压深字（同 css/mermaid.css 的处理） */
.ai-message-content .kb-katex-source,
.ai-step-content .kb-katex-source {
    background: rgba(0, 0, 0, 0.04);
    color: inherit;
}
