/* ============================================================
 * ai_core.css — AI 公共样式 (2026-09-16)
 *   统一: 弹窗(.ai-modal) / 加载(.ai-loading) / 错误(.ai-err) /
 *         密钥弹窗(.ai-keymask) / 正文链接(.tdx-stock-link) / 表格(.ai-tb) / 标签(.ai-chip)
 *   改这一个文件 → 全站 10 个页面同时生效
 *   全部用 --xxx 变量并带兜底色值: 深色主题页面也不会出现黑底黑字
 * ============================================================ */

/* ---------- 通用变量兜底 (页面未定义时用这套) ---------- */
:root {
    --ai-bg: var(--bg-card, #ffffff);
    --ai-bd: var(--border, #d0d7de);
    --ai-tx: var(--text-primary, #1f2328);
    --ai-tx2: var(--text-secondary, #57606a);
    --ai-dim: var(--text-muted, #8b949e);
    --ai-up: var(--up, #cf222e);
    --ai-down: var(--down, #1a7f37);
    --ai-acc: var(--accent, #0969da);
    --ai-gold: var(--gold, #9a6700);
    --ai-orange: var(--orange, #bc4c00);
}

/* ---------- AI 弹窗 (AIModal) ---------- */
.ai-modal-mask {
    position: fixed; left: 0; top: 0; right: 0; bottom: 0; width: 100%; height: 100%;
    background: rgba(31, 35, 40, .45); z-index: 2147483500; display: block;
    overflow-y: auto; box-sizing: border-box; padding: 6vh 12px;
}
.ai-modal {
    margin: 0 auto; background: var(--ai-bg); color: var(--ai-tx);
    border: 1px solid var(--ai-bd); border-radius: 10px; box-shadow: 0 18px 50px rgba(0, 0, 0, .3);
    display: flex; flex-direction: column; max-height: 86vh; box-sizing: border-box;
}
.ai-modal-hd {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    padding: 11px 14px; border-bottom: 1px solid var(--ai-bd);
}
.ai-modal-t { font-size: 14px; font-weight: bold; color: var(--ai-tx); }
.ai-modal-sub { font-size: 11.5px; color: var(--ai-tx2); }
.ai-modal-x {
    margin-left: auto; cursor: pointer; color: var(--ai-dim); font-size: 16px;
    line-height: 1; padding: 2px 6px; border-radius: 4px;
}
.ai-modal-x:hover { background: var(--bg-hover, #f3f4f6); color: var(--ai-up); }
.ai-modal-bd { padding: 12px 14px; overflow: auto; flex: 1 1 auto; font-size: 12.5px; line-height: 1.75; }
.ai-modal-ft {
    padding: 8px 14px; border-top: 1px solid var(--ai-bd); display: flex;
    gap: 8px; justify-content: flex-end; flex-wrap: wrap;
}

/* ---------- 加载 / 错误 ---------- */
.ai-loading { text-align: center; padding: 34px 10px; color: var(--ai-tx2); }
.ai-loading-t { margin-top: 12px; font-size: 13px; }
.ai-loading-s { margin-top: 6px; font-size: 11px; color: var(--ai-dim); }
.ai-spin {
    display: inline-block; width: 22px; height: 22px; border-radius: 50%;
    border: 2.5px solid rgba(120, 140, 160, .28); border-top-color: var(--ai-acc);
    animation: ai-spin .8s linear infinite; vertical-align: middle;
}
@keyframes ai-spin { to { transform: rotate(360deg); } }
.ai-err {
    padding: 10px 12px; border: 1px solid var(--ai-up); border-left-width: 4px;
    border-radius: 6px; background: rgba(207, 34, 46, .07); color: var(--ai-tx);
    font-size: 12.5px; line-height: 1.75; word-break: break-all;
}
.ai-note { font-size: 11.5px; color: var(--ai-tx2); line-height: 1.85; }

/* ---------- 密钥弹窗 (页面没有自带时由 ai_core.js 创建) ---------- */
.ai-keymask {
    position: fixed; left: 0; top: 0; right: 0; bottom: 0; width: 100%; height: 100%;
    background: rgba(31, 35, 40, .45); z-index: 2147483550; box-sizing: border-box;
    padding: 8vh 12px; overflow-y: auto;
}
.ai-keybox {
    margin: 0 auto; max-width: 520px; background: var(--ai-bg); color: var(--ai-tx);
    border: 1px solid var(--ai-bd); border-radius: 10px; box-shadow: 0 18px 50px rgba(0, 0, 0, .3);
}
.ai-keyhd {
    padding: 12px 14px; font-size: 14px; font-weight: bold;
    border-bottom: 1px solid var(--ai-bd); display: flex; align-items: center;
}
.ai-keyx { margin-left: auto; cursor: pointer; color: var(--ai-dim); font-size: 15px; }
.ai-keyx:hover { color: var(--ai-up); }
.ai-keybd { padding: 12px 14px; }
.ai-keytip {
    font-size: 11.5px; color: var(--ai-tx2); line-height: 1.8; background: var(--bg-hover, #f6f8fa);
    border: 1px dashed var(--ai-bd); border-radius: 6px; padding: 8px 10px; margin-bottom: 10px;
}
.ai-keytip code { color: var(--ai-acc); }
.ai-keylb { display: block; font-size: 11.5px; color: var(--ai-tx2); margin: 8px 0 4px; }
.ai-keyreq { color: var(--ai-up); font-size: 10.5px; margin-left: 4px; }
.ai-keyinput {
    width: 100%; box-sizing: border-box; padding: 8px 10px; font-size: 12.5px;
    border: 1px solid var(--ai-bd); border-radius: 6px; background: var(--bg-input, #fff); color: var(--ai-tx);
}
.ai-keyinput:focus { outline: none; border-color: var(--ai-acc); }
.ai-keyft { padding: 8px 14px 14px; display: flex; gap: 8px; justify-content: flex-end; }
.ai-keybtn {
    padding: 6px 16px; font-size: 12.5px; cursor: pointer; border-radius: 6px;
    border: 1px solid var(--ai-bd); background: var(--ai-bg); color: var(--ai-tx);
}
.ai-keybtn:hover { border-color: var(--ai-acc); color: var(--ai-acc); }
.ai-keybtn.primary { background: var(--ai-acc); border-color: var(--ai-acc); color: #fff; font-weight: bold; }
.ai-keybtn.primary:hover { filter: brightness(1.08); color: #fff; }

/* ---------- 正文里的个股/板块链接 (与首页同款) ---------- */
.tdx-stock-link {
    color: var(--ai-up); cursor: pointer; text-decoration: underline;
    text-decoration-style: dotted; text-underline-offset: 3px;
}
.tdx-stock-link:hover { color: #ff6b6b; text-decoration-style: solid; }

/* ---------- 通用 AI 小标签 / 说明 ---------- */
.ai-chip {
    display: inline-block; border-radius: 10px; padding: 1px 8px; font-size: 11px;
    border: 1px solid var(--ai-bd); background: var(--ai-bg); color: var(--ai-tx2); margin-right: 6px;
}
.ai-tag {
    display: inline-block; border-radius: 4px; padding: 0 5px; font-size: 11px;
    line-height: 16px; border: 1px solid transparent; margin-left: 3px;
}
.ai-tag.s2 { border-color: var(--ai-gold); color: var(--ai-gold); font-weight: bold; }
.ai-tag.yby { border-color: var(--ai-orange); color: var(--ai-orange); font-weight: bold; }
.ai-tag.buy { border-color: var(--ai-up); color: var(--ai-up); }
.ai-up { color: var(--ai-up); }
.ai-down { color: var(--ai-down); }
