
/* ========== 聊天消息区域 ========== */
.chat-messages {
	flex: 1;
	/* min-height:0 —— flex 子项默认 min-height:auto 不肯收缩，
	   键盘弹起时会把下方输入栏顶出屏幕 */
	min-height: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	display: flex;
	flex-direction: column;
	gap: var(--space-xl);
	background: var(--color-bg-secondary);
	padding: var(--space-xl); /* 【优化】补充基础 padding，避免媒体查询二次定义 */
}

.chat-messages::-webkit-scrollbar {
	width: 6px;
}

.chat-messages::-webkit-scrollbar-track {
	background: transparent;
}

.chat-messages::-webkit-scrollbar-thumb {
	background: var(--color-border);
	border-radius: 3px;
}

/* 欢迎界面 */
.welcome-screen {
	text-align: center;
	padding: var(--space-3xl) var(--space-xl);
	animation: fadeIn var(--transition-slow) ease;
}

@keyframes fadeIn {
	from {
		opacity: 0;
		transform: translateY(10px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.welcome-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	position: relative;
	width: 200px;
	height: 200px;
}

.welcome-icon img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.welcome-icon::after {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: 50%;
	padding: 5px;
	background: conic-gradient(from 0deg, #66CCFF, #3399FF, #0033CC, #99CCFF, #66CCFF);
	-webkit-mask: radial-gradient(transparent 93%, black 93%);
	mask: radial-gradient(transparent 93%, black 93%);
	animation: rainbowSpin 4s linear infinite;
	pointer-events: none;
	z-index: 1;
}

@keyframes rainbowSpin {
	0% { transform: rotate(0deg); }
	100% { transform: rotate(360deg); }
}

.welcome-screen h2 {
	font-size: var(--font-size-2xl);
	font-weight: 700;
	margin-bottom: var(--space-md);
	color: var(--color-text-primary);
}

.welcome-screen p {
	color: var(--color-text-secondary);
	margin-bottom: var(--space-sm);
	font-size: var(--font-size-lg);
}

.welcome-screen p.welcome-note {
	font-size: var(--font-size-sm);
	color: var(--color-text-muted);
}

/* 消息气泡 */
.message {
	display: flex;
	/* 无头像，无需 gap */
	align-items: flex-start;
	max-width: 85%;
	min-width: 0;
}

/* 内层容器允许收缩，防止超宽内容（长文本/图片）撑破气泡 */
.message > div {
	min-width: 0;
	max-width: 100%;
}

@keyframes messageIn {
	from { opacity: 0; }
	to { opacity: 1; }
}

.message.user {
	align-self: flex-end;
}

.message.assistant {
	align-self: flex-start;
}

.message-content {
	padding: var(--space-lg);
	border-radius: var(--radius-lg);
	font-size: var(--font-size-lg);
	line-height: 1.85;
	/* 【优化】移除废弃的 word-wrap，只保留 overflow-wrap */
	overflow-wrap: break-word;
	letter-spacing: 0.01em;
}

.message.user .message-content {
	background: linear-gradient(135deg, #0066FF, #33CCFF);
	color: var(--color-text-inverse);
	border-bottom-right-radius: var(--radius-sm);
}

.message.assistant .message-content {
	background: var(--color-bg-primary);
	color: var(--color-text-primary);
	border-bottom-left-radius: var(--radius-sm);
}

.message-content .message-image {
	max-width: 100%;
	width: auto;
	height: auto;
	max-height: var(--qa-message-image-max);
	border-radius: var(--radius-md);
	margin-bottom: var(--space-sm);
	cursor: pointer;
	object-fit: contain;
}

/* ========== 专业排版：段落 ========== */
.message-content p {
	margin-bottom: var(--space-sm);
	text-align: justify;
}

.message-content p:last-child {
	margin-bottom: 0;
}

/* ========== 专业排版：加粗 ========== */
.message-content b,
.message-content strong {
	font-weight: 650;
	color: inherit;
}

/* ========== 专业排版：标题 H1~H4 ========== */
.message-content h1,
.message-content h2,
.message-content h3,
.message-content h4 {
	line-height: 1.4;
	margin: 18px 0 var(--space-sm);
}

.message-content h1 {
	font-size: 20px;
	font-weight: 700;
	border-bottom: 2px solid var(--color-primary-light);
	padding-bottom: var(--space-sm);
	margin-top: 24px;
}

.message-content h2 {
	font-size: 18px;
	font-weight: 650;
	padding-left: var(--space-md);
	border-left: 4px solid var(--color-primary-light);
}

.message-content h3 {
	font-size: 16px;
	font-weight: 650;
}

/* 【优化】改用 CSS 变量存储 prefix 符号，方便国际化替换 */
.message-content h3::before {
	content: attr(data-heading-prefix);
	color: var(--color-primary-light);
	margin-right: var(--space-sm);
}

/* 为 h3 设置默认前缀（通过属性或JS注入） */
.message-content h3 {
	/* 默认前缀由 HTML 内联 data-heading-prefix 属性控制，此处不设 content */
}

.message-content h4 {
	font-size: 15px;
	font-weight: 600;
	color: var(--color-text-muted);
}

/* ========== 专业排版：列表 ========== */
.message-content ul,
.message-content ol {
	padding-left: 24px;
	margin: var(--space-sm) 0;
}

.message-content ul {
	list-style: none;
}

.message-content ul li {
	position: relative;
	margin-bottom: var(--space-xs);
	padding-left: var(--space-sm);
}

.message-content ul li::before {
	content: '';
	position: absolute;
	left: -18px;
	top: 10px;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--color-primary-light);
	opacity: 0.7;
}

.message-content ol {
	list-style: decimal;
}

.message-content ol li {
	margin-bottom: 7px;
	padding-left: var(--space-xs);
}

.message-content li>ul,
.message-content li>ol {
	margin: var(--space-xs) 0;
}

/* ========== 专业排版：表格 ========== */
.message-content table {
	width: 100%;
	table-layout: fixed;
	border-collapse: collapse;
	margin: 14px 0;
	font-size: 14px;
	overflow: hidden;
	border-radius: var(--radius-md);
	box-shadow: 0 1px 3px var(--color-black-subtle);
}

.message-content th,
.message-content td {
	border: 1px solid var(--color-border);
	padding: 10px 14px;
	text-align: left;
	vertical-align: top;
	overflow-wrap: anywhere;
	word-break: break-word;
}

.message-content th {
	/* 【优化】用 rgba 替代 8位十六进制，兼容性更好 */
	background: linear-gradient(180deg, rgba(204,204,204,0.15), rgba(204,204,204,0.4));
	font-weight: 700;
	font-size: 14px;
	color: var(--color-text-primary);
	letter-spacing: 0.03em;
}

.message-content td {
	background: var(--color-bg-primary);
}

.message-content tbody tr:hover td {
	background: rgba(51, 153, 255, 0.08);
}

/* 【优化】偶数行背景用统一变量 */
.message-content tbody tr:nth-child(even) td {
	background: rgba(204, 204, 204, 0.25);
}

/* ========== 专业排版：引用块 ========== */
.message-content blockquote {
	border-left: 4px solid var(--color-primary-light);
	padding: var(--space-md) var(--space-lg);
	margin: 12px 0;
	color: var(--color-text-primary);
	background: rgba(51, 153, 255, 0.04);
	border-radius: 0 var(--radius-md) var(--radius-md) 0;
	font-style: italic;
}

/* ========== 专业排版：分隔线 ========== */
.message-content hr {
	border: none;
	height: 1px;
	background: linear-gradient(90deg, transparent, var(--color-border), transparent);
	margin: 18px 0;
}

.message-content code {
	background: var(--color-black-subtle);
	padding: 2px 7px;
	border-radius: var(--radius-sm);
	font-size: 13px;
	font-family: 'SF Mono', 'Fira Code', 'Consolas', 'Monaco', monospace;
	color: #CC3399;
}

.message.user .message-content code {
	background: rgba(255,255,255,0.2);
	color: rgba(255,255,255,0.95);
}

.message-content pre {
	background: #333333;
	color: #CCCCCC;
	padding: 14px 18px;
	border-radius: var(--radius-lg);
	margin: 12px 0;
	font-size: 13.5px;
	line-height: 1.6;
	border: 1px solid #666666;
	white-space: pre-wrap;
	word-break: break-word;
}

.message-content pre code {
	background: none;
	padding: 0;
	color: inherit;
	font-size: inherit;
}

.message-time {
	font-size: var(--font-size-xs);
	color: var(--color-text-muted);
	margin-top: var(--space-sm);
}

.message-provider {
	font-size: var(--font-size-xs);
	color: var(--color-primary-light);
	margin-top: var(--space-sm);
	opacity: 0.8;
}

/* 消息操作按钮 */
.message-actions {
	display: flex;
	gap: var(--space-sm);
	margin-top: var(--space-sm);
	flex-wrap: wrap;
}

/* 【优化】用 .hidden 统一控制 display:none，避免与 visibility:hidden 的 .invisible 混淆 */
.message-actions.hidden {
	display: none;
}

.msg-action-btn {
	display: inline-flex;
	align-items: center;
	gap: var(--space-sm);
	padding: 10px 20px;
	border-radius: var(--radius-sm);
	/* 【优化】补充基础 border 定义，消除 hover 闪烁 */
	border: 1px solid transparent;
	background: var(--color-bg-primary);
	color: var(--color-text-secondary);
	font-size: var(--font-size-md);
	cursor: pointer;
	white-space: nowrap;
	font-family: inherit;
	line-height: 1.5;
	text-align: center;
}

.msg-action-btn:hover {
	background: rgba(51, 153, 255, 0.12);
	border-color: #66CCFF;
	color: var(--color-primary-dark);
}

.msg-action-btn.teacher-btn,
.msg-action-btn.report-btn {
	color: var(--color-text-primary);
	background: var(--color-bg-primary);
}

.msg-action-btn.teacher-btn:hover,
.msg-action-btn.report-btn:hover {
	color: var(--color-text-inverse);
	background: var(--color-success);
	border-color: var(--color-success);
}

.message.user .message-time {
	text-align: right;
}


/* ========== OCR识别题目展示 ========== */
.ocr-recognized-question {
	background: rgba(51, 153, 255, 0.06);
	border-left: 3px solid var(--color-primary-light);
	padding: var(--space-md) var(--space-lg);
	margin: 0 0 12px;
	border-radius: var(--radius-md);
	font-size: var(--font-size-md);
	color: var(--color-text-primary);
	line-height: 1.6;
}

.ocr-question-label {
	font-weight: 600;
	margin-bottom: var(--space-xs);
	color: var(--color-primary-dark);
}

/* ========== 多AI气泡顶部：增强后图片 + OCR文字 ========== */
.bubble-best-badge {
	display: inline-block;
	background: #00AA55;
	color: var(--color-text-inverse);
	font-size: 12px;
	font-weight: 600;
	padding: 3px 12px;
	border-radius: var(--radius-full);
	margin: 8px 12px 0;
}

.bubble-head {
	padding: var(--space-lg);
	background: var(--color-bg-primary);
	border-radius: var(--radius-md);
	margin: 0 auto var(--space-md);
}

.bubble-head-image {
	display: block;
	max-width: 100%;
	width: auto;
	height: auto;
	max-height: var(--qa-head-image-max);
	border-radius: var(--radius-md);
	margin: 0 auto var(--space-md);
	cursor: zoom-in;
	object-fit: contain;
	box-shadow: 0 1px 4px var(--color-black-shadow);
}

.bubble-head-ocr-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-xs);
	margin-bottom: var(--space-sm);
}

.bubble-head-ocr-tabs .ocr-tab {
	font-size: 11px;
	color: var(--color-primary-dark);
	background: #E8F0FA;
	border: 1px solid #CCD9EC;
	border-radius: var(--radius-full);
	padding: 2px 10px;
	cursor: pointer;
	user-select: none;
	transition: background var(--transition-fast), color var(--transition-fast);
}

.bubble-head-ocr-tabs .ocr-tab:hover {
	background: #D8E6F8;
}

.bubble-head-ocr-tabs .ocr-tab.active {
	background: var(--color-primary-dark);
	color: var(--color-text-inverse);
	border-color: var(--color-primary-dark);
}

.bubble-head-ocr-tabs .ocr-tab-final {
	font-weight: 600;
}

.bubble-head-ocr {
	font-size: 13px;
	color: #555555;
	line-height: 1.6;
	white-space: pre-wrap;
	word-break: break-all;
	max-height: 140px;
	overflow-y: auto;
	background: var(--color-bg-primary);
	border: 1px solid var(--color-border-light);
	border-radius: var(--radius-sm);
	padding: var(--space-md);
}

.bubble-head-ocr-meta {
	font-size: 12px;
	color: var(--color-text-primary);
	padding: 10px 0;
}

.ocr-question-text {
	white-space: pre-wrap;
	word-break: break-all;
}

/* 包含OCR展示的消息内容区 */
.message-content.message-content-ocr {
	border-bottom-left-radius: var(--radius-sm);
	margin-top: 0;
}


/* ========== 消息状态提示 ========== */
.msg-status-stopped {
	color: var(--color-text-muted);
	font-size: 13px;
}

.msg-status-error {
	color: var(--color-danger);
	font-size: 13px;
}
