Files
AIEC-new/AIEC-server/css/style.css
2025-10-17 09:31:28 +08:00

2159 lines
42 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ===== 云大阁网站样式表 ===== */
/* 重置默认样式消除浏览器默认margin和padding */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* ===== Deep Research 控制面板样式 ===== */
/* 开关切换样式 */
.toggle-switch input:checked + .toggle-slider {
background: #4CAF50 !important;
}
.toggle-switch input:checked + .toggle-slider span {
transform: translateX(20px);
}
.toggle-slider span {
transition: transform 0.3s ease;
}
/* 控制面板动画 */
.deep-research-controls {
animation: slideInUp 0.4s ease-out;
}
@keyframes slideInUp {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* 思考过程显示样式 */
.thinking-process {
background: rgba(255, 248, 220, 0.8);
border-left: 4px solid #ffa500;
padding: 12px 16px;
margin: 8px 0;
border-radius: 6px;
font-style: italic;
color: #8b4513;
backdrop-filter: blur(5px);
}
.thinking-process .thinking-label {
font-weight: bold;
color: #ff8c00;
font-size: 0.85rem;
margin-bottom: 4px;
}
.thinking-process .thinking-content {
line-height: 1.4;
font-size: 0.9rem;
}
/* ===== 侧边栏样式 - 复刻duijie.html ===== */
/* 左侧栏容器 */
.sidebar {
position: fixed;
top: 0;
left: 0;
bottom: 0;
width: 260px;
background: #f8f9fa;
border-right: 1px solid #e0e0e0;
transition: width 0.3s ease;
overflow: hidden; /* 保持duijie.html原有设置 */
z-index: 1000;
}
.sidebar.collapsed {
width: 70px;
}
/* 主体内容区域 */
.main-content {
margin-left: 260px;
transition: margin-left 0.3s ease;
flex: 1;
}
.sidebar.collapsed + .main-content {
margin-left: 70px;
}
/* 侧边菜单内容 */
.sidebar-content {
padding: 8px;
display: flex;
flex-direction: column;
height: 100%;
padding-top: 6px;
}
/* 底部菜单项容器 */
.sidebar-bottom-items {
margin-top: auto;
padding-top: 16px;
padding-bottom: 20px;
}
.menu-item {
padding: 10px 8px;
margin-bottom: 8px;
border-radius: 8px;
cursor: pointer;
transition: background 0.2s;
white-space: nowrap;
overflow: hidden;
display: flex;
align-items: center;
}
/* 新对话图标与logo的间距 */
#newChatBtn {
margin-top: 15px;
}
/* 新对话云朵图标样式 */
.cloud-icon-container {
position: relative;
width: 30px;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.cloud-main {
position: relative;
width: 20px;
height: 14px;
}
.cloud-circle {
position: absolute;
border-radius: 50%;
background: linear-gradient(135deg, #81d4fa 0%, #4fc3f7 100%);
}
.cloud-circle-1 {
width: 6px;
height: 6px;
top: 4px;
left: 2px;
}
.cloud-circle-2 {
width: 8px;
height: 8px;
top: 2px;
left: 6px;
}
.cloud-circle-3 {
width: 7px;
height: 7px;
top: 3px;
left: 11px;
}
.cloud-circle-4 {
width: 5px;
height: 5px;
top: 5px;
left: 15px;
}
.cloud-base {
position: absolute;
bottom: 2px;
left: 1px;
width: 18px;
height: 6px;
background: linear-gradient(135deg, #81d4fa 0%, #4fc3f7 100%);
border-radius: 3px;
}
.cloud-plus {
position: absolute;
top: -2px;
right: -2px;
width: 12px;
height: 12px;
background: linear-gradient(135deg, #29b6f6 0%, #0288d1 100%);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 8px;
font-weight: bold;
color: white;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.menu-item:hover {
background: #e6f0ff;
}
.menu-icon {
display: flex;
width: 30px;
height: 30px;
text-align: center;
margin-right: 8px;
font-size: 1.5em;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
/* Logo图标特殊处理 - 保持相同的容器尺寸但图片更大 */
#logoMenuItem .menu-icon {
width: 30px;
height: 30px;
}
#logoMenuItem .menu-icon img {
width: 40px !important;
height: 40px !important;
}
/* Logo图标向上调整 */
#logoMenuItem {
margin-top: -10px;
}
/* 菜单文字样式 - 与欢迎模块字体一致 */
.menu-text {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
font-weight: normal;
font-size: 0.875rem;
color: #1f2937;
line-height: 1.25rem;
}
/* 折叠时隐藏文字 */
.sidebar.collapsed .menu-text {
display: none;
}
/* 历史对话区域样式 */
.chat-history-section {
margin-top: 16px;
flex: 1;
overflow-y: auto;
}
.chat-history-title {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
font-size: 0.75rem;
font-weight: 500;
color: #9ca3af;
margin-bottom: 8px;
padding: 0 8px;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.chat-history-list {
display: flex;
flex-direction: column;
gap: 2px;
}
.chat-history-item {
padding: 8px 12px;
border-radius: 6px;
cursor: pointer;
transition: background-color 0.2s ease;
position: relative;
}
.chat-history-item:hover {
background-color: #f3f4f6;
}
.chat-title {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
font-size: 0.875rem;
font-weight: normal;
color: #374151;
line-height: 1.2;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.chat-time {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
font-size: 0.75rem;
font-weight: normal;
color: #9ca3af;
line-height: 1;
}
/* 折叠时隐藏历史对话区域 */
.sidebar.collapsed .chat-history-section {
display: none;
}
/* ===== 工具提示样式 - 参考yundage-keyong1 ===== */
.tooltip-wrapper {
position: relative;
display: inline-block;
cursor: pointer;
}
.tooltip-text {
visibility: hidden;
opacity: 0;
position: absolute;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
background-color: #333;
color: #fff;
text-align: center;
padding: 6px 10px;
border-radius: 6px;
white-space: nowrap;
font-size: 13px;
transition: opacity 0.3s;
z-index: 99999; /* 最高层级 */
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); /* 添加阴影确保可见性 */
border: 1px solid rgba(255, 255, 255, 0.1); /* 添加边框 */
}
.tooltip-wrapper:hover .tooltip-text {
visibility: visible;
opacity: 1;
}
/* 折叠状态下tooltip由JavaScript动态定位 */
.sidebar.collapsed .tooltip-wrapper .tooltip-text {
position: fixed !important; /* 强制使用fixed定位脱离父容器层级 */
z-index: 99999 !important; /* 强制最高层级 */
}
/* 响应式处理 - 移动端 */
@media (max-width: 768px) {
.sidebar {
transform: translateX(-100%);
width: 260px;
}
.sidebar.show {
transform: translateX(0);
}
.main-content {
margin-left: 0;
}
.sidebar.collapsed + .main-content {
margin-left: 0;
}
}
/* 确保背景不会干扰侧边栏 */
.background-container {
z-index: 1 !important;
}
.animated-gradient {
z-index: 1 !important;
}
.backdrop-overlay {
z-index: 2 !important;
}
/* ===== DeepSeek风格样式 ===== */
/* DeepSeek欢迎区域 */
.deepseek-welcome-section {
animation: fadeInUp 0.8s ease-out 0.3s both;
}
/* DeepSeek输入区域 */
.deepseek-input-section {
animation: fadeInUp 0.8s ease-out 0.5s both;
}
/* 保持原有的文字样式,只调整动画时间 */
.deepseek-welcome-section .cloud-logo {
animation: logo-spin 20s linear infinite;
}
/* Apple风格的对话输入框样式 */
.deepseek-input-section .input-area {
background: rgba(255, 255, 255, 0.85);
backdrop-filter: blur(25px) saturate(1.2);
border-radius: 24px;
padding: 2rem;
box-shadow:
0 20px 40px rgba(0, 0, 0, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.8);
border: 1px solid rgba(255, 255, 255, 0.3);
position: relative;
overflow: hidden;
transition: all 0.3s ease;
z-index: 10; /* 确保输入区域在上层 */
}
.deepseek-input-section .input-area::before {
content: '';
position: absolute;
inset: 0;
background:
radial-gradient(circle at 20% 30%, rgba(255, 255, 255, 0.1) 0%, transparent 50%),
radial-gradient(circle at 80% 70%, rgba(255, 255, 255, 0.05) 0%, transparent 50%);
pointer-events: none;
}
.deepseek-input-section .input-area:hover {
box-shadow:
0 20px 40px rgba(0, 0, 0, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.8);
border-color: rgba(255, 255, 255, 0.3);
}
.deepseek-input-section .input-area:focus-within {
border-color: rgba(255, 255, 255, 0.6);
box-shadow:
0 4px 12px rgba(0, 0, 0, 0.05),
0 0 0 3px rgba(255, 255, 255, 0.2);
}
html, body {
height: 100%;
margin: 0;
padding: 0;
}
/* 导航栏特色样式 - 基于/test/css/导航栏1.css的动画效果 */
.nav-link {
position: relative;
text-transform: uppercase;
font-weight: 800;
font-size: 14px;
letter-spacing: 0.5px;
color: #374151; /* text-gray-700 */
text-decoration: none;
padding: 8px 0;
transition: color 0.2s ease-in-out;
}
.nav-link:hover {
color: #2563eb; /* hover:text-blue-600 */
}
/* 导航链接下划线动画效果 */
.nav-link::before {
content: '';
display: block;
height: 3px;
background-color: #2563eb;
position: absolute;
top: -8px;
width: 0%;
transition: all ease-in-out 250ms;
}
.nav-link:hover::before {
width: 100%;
}
/* ===== 侧边栏样式 ===== */
/* 侧边栏显示状态 */
.sidebar.show {
transform: translateX(0);
}
/* 侧边栏默认展开状态(仅桌面端) */
@media (min-width: 769px) {
.sidebar {
transform: translateX(0);
}
}
/* 侧边栏隐藏状态 */
.sidebar.hidden {
transform: translateX(-100%);
}
/* 侧边栏遮罩层 */
.sidebar-overlay.show {
display: block;
opacity: 1;
}
/* 侧边栏内容区域调整 */
.sidebar .p-4 {
padding-top: 1rem;
}
/* 主内容区域在侧边栏打开时的偏移 */
.main-content.sidebar-open {
margin-left: 256px;
}
/* 主内容区域在侧边栏完全隐藏时的偏移 */
.main-content.sidebar-collapsed {
margin-left: 48px;
}
/* 确保主内容区域不被侧边栏遮挡 */
.main-content {
position: relative;
z-index: 10;
margin-left: 0;
transition: margin-left 0.3s ease;
}
/* 桌面端侧边栏展开时的默认状态 */
@media (min-width: 769px) {
.main-content {
margin-left: 256px;
}
/* 侧边栏隐藏时只显示图标栏 */
.main-content.sidebar-closed {
margin-left: 48px;
}
/* 侧边栏完全隐藏时 */
.main-content.sidebar-fully-hidden {
margin-left: 0;
}
}
/* 折叠图标栏样式 */
#collapsedSidebar {
transition: all 0.3s ease;
}
#collapsedSidebar.show {
display: flex !important;
}
/* 侧边栏完全隐藏状态 */
.sidebar.fully-hidden {
transform: translateX(-100%);
}
/* 桌面端折叠图标栏默认显示 */
@media (min-width: 769px) {
#collapsedSidebar {
display: flex !important;
}
/* 当主侧边栏显示时隐藏折叠栏 */
#collapsedSidebar.hide {
display: none !important;
}
}
/* 聊天项样式 - ChatGPT风格 */
.chat-item {
transition: all 0.15s ease;
border-radius: 8px;
}
.chat-item:hover {
background-color: #ffffff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.chat-item.active {
background-color: #ffffff;
border-left: 3px solid #2563eb;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* 侧边栏滚动区域优化 */
.sidebar .overflow-y-auto {
scrollbar-width: thin;
scrollbar-color: #d1d5db #f9fafb;
}
.sidebar .overflow-y-auto::-webkit-scrollbar {
width: 3px;
}
.sidebar .overflow-y-auto::-webkit-scrollbar-track {
background: transparent;
}
.sidebar .overflow-y-auto::-webkit-scrollbar-thumb {
background: #d1d5db;
border-radius: 2px;
}
.sidebar .overflow-y-auto::-webkit-scrollbar-thumb:hover {
background: #9ca3af;
}
/* ===== 聊天区域样式 ===== */
/* 聊天消息样式 */
.chat-messages {
scrollbar-width: thin;
scrollbar-color: #cbd5e1 #f1f5f9;
}
.chat-messages::-webkit-scrollbar {
width: 6px;
}
.chat-messages::-webkit-scrollbar-track {
background: #f1f5f9;
border-radius: 3px;
}
.chat-messages::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 3px;
}
.chat-messages::-webkit-scrollbar-thumb:hover {
background: #94a3b8;
}
/* 用户消息样式 - Gemini风格 */
.user-message {
word-wrap: break-word;
backdrop-filter: blur(10px);
max-width: 80%;
background: rgba(37, 99, 235, 0.1);
border: 1px solid rgba(37, 99, 235, 0.2);
border-radius: 18px 18px 4px 18px;
margin-left: auto;
}
/* AI消息样式 - Gemini风格 */
.ai-message {
word-wrap: break-word;
backdrop-filter: blur(10px);
max-width: 80%;
background: rgba(255, 255, 255, 0.8);
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 18px 18px 18px 4px;
margin-right: auto;
}
/* 消息时间戳样式 */
.message-item .text-xs {
font-size: 0.75rem;
color: rgba(0, 0, 0, 0.5);
margin-top: 0.25rem;
}
/* 用户消息时间戳右对齐 */
.message-item .text-right {
text-align: right !important;
}
/* AI消息时间戳左对齐 */
.message-item .text-left {
text-align: left !important;
}
/* 消息头像样式 */
.message-avatar {
width: 32px;
height: 32px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: 600;
}
/* Apple风格的输入框样式 */
.input-wrapper:focus-within {
border-color: rgba(255, 255, 255, 0.6) !important;
box-shadow:
0 4px 12px rgba(0, 0, 0, 0.05),
0 0 0 3px rgba(255, 255, 255, 0.2) !important;
}
.chat-textarea::placeholder {
color: rgba(0, 0, 0, 0.5);
}
.send-button:hover:not(:disabled) {
background: rgba(255, 255, 255, 0.8) !important;
transform: scale(1.05);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.send-button:disabled {
cursor: not-allowed;
opacity: 0.5;
}
/* Gemini风格按钮效果 */
.gemini-btn {
position: relative;
overflow: hidden;
}
.gemini-btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
transition: left 0.5s;
}
.gemini-btn:hover::before {
left: 100%;
}
/* 聊天区域整体样式 - 无滚动条全屏布局 */
.chat-section {
height: 100vh;
position: relative;
overflow: hidden;
}
/* 主内容区域无滚动布局 */
.main-content {
height: 100vh;
overflow: hidden;
position: relative;
}
/* 响应式调整 - 新的布局适应 */
@media (max-height: 700px) {
.ai-welcome-section {
margin-bottom: 1rem;
}
.ai-welcome-section .mb-4 {
margin-bottom: 0.75rem;
}
#chatMessages {
max-height: 25vh !important;
min-height: 150px !important;
}
.text-3d-container {
margin: 20px 0 !important;
}
}
@media (max-height: 600px) {
.ai-welcome-section {
margin-bottom: 0.5rem;
}
.ai-welcome-section h2 {
font-size: 1.25rem;
margin-bottom: 0.5rem;
}
#chatMessages {
max-height: 20vh !important;
min-height: 120px !important;
}
.input-area {
margin-bottom: 0.5rem;
}
.text-3d-container {
margin: 10px 0 !important;
}
}
/* ===== 简化背景样式 - 调试版本 ===== */
/* Chroma Hero 主容器 - 简化版 */
.chroma-hero {
display: flex;
overflow: clip;
position: relative;
background: #f8f8f8; /* 静态背景 */
}
/* 移除所有背景动画和复杂效果 */
/* 聊天消息容器优化 - Gemini风格 */
.chat-messages {
transition: all 0.3s ease;
overflow: visible !important; /* 移除内部滚动条 */
}
/* ===== 聊天字体大小调整 ===== */
.user-message,
.ai-message {
font-size: 18px !important;
line-height: 1.6 !important;
}
#chatMessages .user-message p,
#chatMessages .ai-message p,
#chatMessages .user-message div,
#chatMessages .ai-message div {
font-size: 18px !important;
}
.ai-message pre,
.user-message pre,
.ai-message code,
.user-message code {
font-size: 15px !important;
}
.ai-message h1 { font-size: 26px !important; }
.ai-message h2 { font-size: 24px !important; }
.ai-message h3 { font-size: 22px !important; }
.ai-message h4 { font-size: 20px !important; }
.ai-message h5 { font-size: 18px !important; }
.ai-message h6 { font-size: 18px !important; }
.ai-message ul li,
.ai-message ol li,
.user-message ul li,
.user-message ol li {
font-size: 18px !important;
line-height: 1.6 !important;
}
/* 消息动画效果 */
.message-item {
animation: slideIn 0.5s ease-out;
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* 消息打字效果 */
.typing-indicator {
display: flex;
align-items: center;
gap: 4px;
padding: 12px 16px;
}
.typing-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: #94a3b8;
animation: typing 1.4s infinite ease-in-out;
}
.typing-dot:nth-child(1) { animation-delay: -0.32s; }
.typing-dot:nth-child(2) { animation-delay: -0.16s; }
.typing-dot:nth-child(3) { animation-delay: 0s; }
@keyframes typing {
0%, 80%, 100% {
transform: scale(0.8);
opacity: 0.5;
}
40% {
transform: scale(1);
opacity: 1;
}
}
/* 深度检索按钮样式 - 优先级提升 */
.deep-search-btn {
position: relative;
transition: all 0.3s ease;
}
.deep-search-btn.active {
background-color: #dbeafe !important;
border-color: #3b82f6 !important;
color: #1d4ed8 !important;
}
.deep-search-btn.active::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(45deg, rgba(59, 130, 246, 0.1), rgba(59, 130, 246, 0.2));
border-radius: inherit;
animation: pulse 2s infinite;
}
/* 确保新增的功能按钮不影响原有的深度检索按钮 */
.function-btn:not(.deep-search-btn) {
/* 新增功能按钮的样式 */
}
.function-btn.deep-search-btn {
/* 保持原有深度检索按钮样式 */
background-color: transparent;
border: 1px solid #e5e7eb;
}
@keyframes pulse {
0%, 100% {
opacity: 0.7;
}
50% {
opacity: 1;
}
}
/* ===== 增强型对话框样式 - duihuakuang技术集成 ===== */
/* AI Logo动画 */
@keyframes logo-spin {
0% {
transform: rotate(0deg) scale(1);
}
100% {
transform: rotate(360deg) scale(1);
}
}
@keyframes gradient-shift {
0% {
transform: rotate(0deg) scale(1);
}
100% {
transform: rotate(360deg) scale(1);
}
}
.animate-logo-spin {
animation: logo-spin 20s linear infinite;
transform-origin: center;
}
.animate-gradient-shift {
animation: gradient-shift 8s linear infinite;
transform-origin: center;
}
/* 欢迎区域样式 */
.ai-welcome-section {
opacity: 0;
animation: fadeInUp 0.8s ease-out 0.3s forwards;
}
/* 增强型输入区域 */
.enhanced-input-area {
transition: all 0.3s ease;
}
.enhanced-input-area:hover {
box-shadow: 0 12px 30px rgba(59, 130, 246, 0.15);
}
/* 功能按钮样式 */
.function-btn {
transition: all 0.2s ease;
}
.function-btn.active {
background-color: #dbeafe;
border-color: #3b82f6;
color: #1d4ed8;
}
.function-btn.active i,
.function-btn.active svg {
color: #3b82f6;
}
/* 发送按钮状态 - 保持原有Gemini样式 */
.send-btn.active {
background: linear-gradient(to right, #2563eb, #1d4ed8) !important;
color: white !important;
cursor: pointer !important;
}
.send-btn.active:hover {
background: linear-gradient(to right, #1d4ed8, #1e40af) !important;
}
/* 确保原有的gemini-btn样式正常工作 */
.gemini-btn {
position: relative;
overflow: hidden;
}
.gemini-btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
transition: left 0.5s;
}
.gemini-btn:hover::before {
left: 100%;
}
/* 文件上传动画 */
.upload-btn {
transition: all 0.2s ease;
}
.upload-loading .upload-icon {
animation: uploadPulse 1.5s ease-in-out infinite;
}
@keyframes uploadPulse {
0%, 100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.5;
transform: scale(1.1);
}
}
/* 上传文件显示 */
.uploaded-files-container.show {
display: block !important;
}
.uploaded-file-item {
display: flex;
align-items: center;
gap: 8px;
background-color: #f9fafb;
padding: 4px 8px;
border-radius: 6px;
border: 1px solid #e5e7eb;
font-size: 12px;
color: #374151;
}
.uploaded-file-item .remove-file {
color: #9ca3af;
cursor: pointer;
transition: color 0.2s;
}
.uploaded-file-item .remove-file:hover {
color: #ef4444;
}
/* 动画淡入效果 */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in {
animation: fadeInUp 0.6s ease-out forwards;
}
/* 响应式调整 */
@media (max-width: 768px) {
.function-controls {
flex-direction: column;
gap: 12px;
align-items: stretch;
}
.function-controls > div {
justify-content: center;
}
.enhanced-input-area {
margin: 0 -1rem;
border-radius: 16px;
}
}
/* ===== 新闻跑马灯样式 ===== */
.ticker-container {
white-space: nowrap;
position: relative;
}
.ticker-content {
display: inline-flex;
animation: marquee 60s linear infinite;
gap: 4rem;
}
.ticker-item {
flex-shrink: 0;
color: #1e40af;
font-weight: 500;
font-size: 12px;
padding: 0 1.5rem;
}
.ticker-item.text-xs {
font-size: 11px;
padding: 0 1rem;
}
@keyframes marquee {
0% {
transform: translateX(100%);
}
100% {
transform: translateX(-100%);
}
}
/* 暂停跑马灯动画在hover时 */
.ticker-container:hover .ticker-content {
animation-play-state: paused;
}
/* ===== 3D新闻跑马灯增强样式 ===== */
:root {
--ticker-rotate-x: 0deg;
--ticker-rotate-y: 0deg;
--ticker-translate-z: 0px;
}
.ticker-3d-container {
height: 120px; /* 精简高度,保持翻转效果 */
perspective: 1500px;
position: relative;
overflow: hidden; /* 防止内容溢出 */
background: transparent;
margin: 4px 8px;
z-index: 1; /* 设置较低的z-index */
/* padding通过内联样式控制为30px 0 */
}
.ticker-parallax-scene {
position: relative;
width: 100%;
height: 100%;
transform: rotateX(var(--ticker-rotate-x)) rotateY(var(--ticker-rotate-y)) translateZ(var(--ticker-translate-z));
transform-style: preserve-3d;
transition: transform 0.1s cubic-bezier(0.1, 0.7, 0.1, 1);
will-change: transform;
}
/* 3D新闻轮播容器 */
.ticker-carousel {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
transform-style: preserve-3d;
display: flex;
align-items: center;
justify-content: center;
gap: 80px;
/* 确保翻转时不被裁剪 */
overflow: visible;
}
/* 翻转卡片容器样式 */
.ticker-flip-card {
position: relative;
width: 240px; /* 增加宽度到240px */
height: 100px; /* 保持高度100px */
cursor: pointer;
perspective: 1000px;
transform-style: preserve-3d;
/* 确保翻转时卡片不被裁剪 */
overflow: visible;
z-index: 5; /* 降低z-index */
}
/* 卡片内部容器 */
.flip-card-inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
transition: transform 0.3s ease-out;
transform-style: preserve-3d;
}
/* 移除悬停翻转,改为鼠标跟随 */
/* 卡片正反面共同样式 */
.flip-card-front, .flip-card-back {
position: absolute;
width: 100%;
height: 100%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
border-radius: 12px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 0;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
background: transparent;
border: none;
}
/* 卡片正面 */
.flip-card-front {
/* 移除背景和边框,让图片直接显示 */
}
/* 卡片背面 */
.flip-card-back {
color: #1e40af;
transform: rotateY(180deg);
/* 移除背景和边框,让图片直接显示 */
}
/* 新闻图片基础样式 - 具体尺寸由image-size-fix.css控制 */
.news-image {
object-fit: cover;
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
/* 背面内容样式 */
.back-content {
text-align: center;
}
.back-content p {
margin: 4px 0;
font-size: 14px;
font-weight: 600;
}
.back-content .back-desc {
font-size: 11px;
font-weight: 400;
opacity: 0.9;
}
/* 移除浮动动画,专注于翻转效果 */
/* 卡片悬停增强效果 */
.ticker-flip-card:hover {
z-index: 10;
}
.ticker-flip-card:hover .flip-card-front {
box-shadow: 0 8px 25px rgba(37, 99, 235, 0.2);
}
.ticker-flip-card:hover .flip-card-back {
box-shadow: 0 8px 25px rgba(29, 78, 216, 0.4);
}
/* 脉冲光圈效果 */
.ticker-pulse-ring {
position: absolute;
border: 1px solid rgba(37, 99, 235, 0.3);
border-radius: 50%;
animation: tickerPulse 4s ease-in-out infinite;
pointer-events: none;
}
@keyframes tickerPulse {
0% {
transform: scale(0.3) translate(-50%, -50%);
opacity: 1;
border-width: 2px;
}
50% {
transform: scale(1) translate(-50%, -50%);
opacity: 0.5;
border-width: 1px;
}
100% {
transform: scale(1.5) translate(-50%, -50%);
opacity: 0;
border-width: 1px;
}
}
/* 新闻轮播动画 */
.ticker-carousel.rotating .ticker-news-item {
animation: newsRotate 15s linear infinite;
}
@keyframes newsRotate {
0% {
transform: translateX(100px) translateZ(var(--item-z, 0px));
}
100% {
transform: translateX(-100px) translateZ(var(--item-z, 0px));
}
}
/* 响应式调整 */
@media (max-width: 768px) {
.ticker-3d-container {
height: 100px;
margin: 4px 8px;
}
.ticker-carousel {
gap: 30px;
}
.ticker-flip-card {
width: 120px;
height: 70px;
}
.card-icon {
font-size: 20px;
}
.news-content {
font-size: 11px;
}
.back-content p {
font-size: 12px;
}
.back-content .back-desc {
font-size: 10px;
}
}
/* ===== 功能按钮样式 ===== */
.feature-btn {
text-decoration: none;
transition: all 0.3s ease;
border: none;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.feature-btn:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.feature-btn:active {
transform: translateY(0);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
/* 移动端功能按钮适配 */
@media (max-width: 640px) {
.feature-btn {
width: calc(50% - 0.5rem);
justify-content: center;
}
}
/* ===== 用户头像按钮样式 ===== */
.user-avatar {
cursor: pointer;
}
.user-avatar:hover {
transform: scale(1.05);
}
/* 用户下拉菜单样式 */
.user-dropdown {
animation: fadeIn 0.15s ease-out;
min-width: 160px;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* ===== 响应式设计 ===== */
/* 移动端样式调整 */
@media (max-width: 768px) {
/* 移动端隐藏导航栏 */
.nav-container {
display: none;
}
/* 移动端侧边栏全屏,默认隐藏 */
.sidebar {
width: 100vw;
transform: translateX(-100%);
}
/* 移动端侧边栏显示时 */
.sidebar.show {
transform: translateX(0);
z-index: 45;
}
/* 移动端主内容不偏移 */
.main-content.sidebar-open {
margin-left: 0;
}
/* 移动端主内容默认无偏移 */
.main-content {
margin-left: 0 !important;
}
/* 移动端聊天消息适配 */
.user-message,
.ai-message {
max-width: 85%;
}
/* 移动端输入区域调整 */
.input-area .flex {
flex-direction: column;
gap: 0.75rem;
}
.input-area .flex > div:last-child {
flex-direction: row;
justify-content: space-between;
}
/* 移动端功能按钮调整 */
.feature-btn {
width: calc(50% - 0.5rem);
text-align: center;
}
/* 移动端跑马灯速度调整 */
.ticker-content {
animation-duration: 40s;
}
}
@media (max-width: 640px) {
/* 小屏幕下的进一步调整 */
.container {
padding-left: 1rem;
padding-right: 1rem;
}
/* 聊天消息更紧凑 */
.chat-messages {
height: 300px;
padding: 0.75rem;
}
.user-message,
.ai-message {
max-width: 90%;
padding: 0.75rem;
font-size: 14px;
}
/* 输入框调整 */
.input-area textarea {
rows: 2;
min-height: 60px;
}
/* 侧边栏按钮调整 */
#toggleSidebar {
padding: 0.5rem;
}
}
/* ===== 无滚动条全屏展示 ===== */
html, body {
height: 100vh;
overflow-x: hidden; /* 只禁止水平滚动 */
overflow-y: auto; /* 允许垂直滚动确保3D元素可见 */
scroll-behavior: smooth;
}
/* ===== 文字轮播样式增强参考ziti.html ===== */
/* 3D容器样式 */
.text-3d-container {
transition: transform 0.3s ease;
}
/* 静态文字样式 - Apple风格 */
.main-text-static {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
font-weight: 300;
color: rgba(55, 65, 81, 0.9);
letter-spacing: -0.02em;
background: linear-gradient(135deg, #374151, #6B7280);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-shadow: none;
}
/* 轮播文字主体样式 - Apple风格 */
.rotating-word-3d {
display: inline-block !important;
position: relative !important;
z-index: 30 !important;
min-width: 80px !important;
text-align: center !important;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
font-weight: 300;
color: rgba(55, 65, 81, 0.9);
letter-spacing: -0.02em;
background: linear-gradient(135deg, #374151, #6B7280);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-shadow: none;
animation: none;
transition: all 0.3s ease;
overflow: visible !important;
padding: 10px 0 !important;
line-height: 1.5 !important;
min-height: 1.5em !important;
}
/* 移除分隔线样式 */
.text-divider {
display: none;
}
/* 移除倒影 */
.text-reflection {
display: none;
}
/* 静态文字倒影 */
.reflection-static {
color: transparent;
background: linear-gradient(
to bottom,
rgba(44, 62, 80, 0.4) 0%,
rgba(44, 62, 80, 0.25) 30%,
rgba(44, 62, 80, 0.1) 60%,
transparent 100%
);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
/* 轮播文字倒影 */
.rotating-word-reflection {
display: inline-block !important;
min-width: 60px !important;
text-align: center !important;
font-weight: 900 !important;
color: transparent;
background: linear-gradient(
to bottom,
rgba(30, 64, 175, 0.4) 0%,
rgba(30, 64, 175, 0.25) 30%,
rgba(30, 64, 175, 0.1) 60%,
transparent 100%
);
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
overflow: visible !important;
}
/* 移除文字发光动画 */
@keyframes textGlow {
/* 已移除 */
}
/* 鼠标悬停效果 */
.text-3d-container:hover .rotating-word-3d {
transform: translateY(-2px);
text-shadow:
3px 3px 8px rgba(0, 0, 0, 0.4),
0 0 25px rgba(30, 64, 175, 0.6);
}
.text-3d-container:hover .rotating-word-reflection {
opacity: 0.8;
transform: translateY(2px);
}
/* 波纹效果关键帧 */
@keyframes ripple {
to {
transform: scale(2);
opacity: 0;
}
}
/* 响应式设计 */
@media (max-width: 768px) {
.rotating-word-3d, .rotating-word-reflection {
font-size: 0.9em;
}
}
/* 兼容原有的ID选择器 */
#rotating-word {
/* 保持兼容性,但样式由类选择器控制 */
}
/* 确保文字轮播容器不裁剪内容 */
.text-3d-container,
.welcome-message,
.deepseek-welcome-section {
overflow: visible !important;
width: 100% !important;
max-width: none !important;
height: auto !important;
min-height: auto !important;
}
/* 确保欢迎文字的h2标签不裁剪内容 */
.text-3d-container h2 {
overflow: visible !important;
white-space: nowrap;
width: auto !important;
max-width: none !important;
padding: 10px 0 0 0 !important;
margin: 0 !important;
display: inline-block !important;
text-align: center !important;
line-height: 1.3 !important;
min-height: auto !important;
height: auto !important;
}
/* 确保容器有足够空间 */
.container {
overflow: visible !important;
}
/* 确保主要内容区域不裁剪 */
.main-content,
.chat-section {
overflow: visible !important;
}
/* ===== 自定义滚动条样式 ===== */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
background: #f1f5f9;
}
::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #94a3b8;
}
/* ===== 加载动画 ===== */
.loading-spinner {
border: 3px solid #f3f3f3;
border-top: 3px solid #2563eb;
border-radius: 50%;
width: 30px;
height: 30px;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* ===== 工具提示样式 - 参考xuanting.html ===== */
.tooltip-wrapper {
position: relative;
display: inline-block;
cursor: pointer;
}
.tooltip-text {
visibility: hidden;
opacity: 0;
position: absolute;
bottom: 125%;
left: 50%;
transform: translateX(-50%);
background-color: #333;
color: #fff;
text-align: center;
padding: 6px 10px;
border-radius: 6px;
white-space: nowrap;
font-size: 13px;
transition: opacity 0.3s;
z-index: 999;
}
.tooltip-wrapper:hover .tooltip-text {
visibility: visible;
opacity: 1;
}
/* 折叠栏tooltip右侧显示 */
#collapsedSidebar .tooltip-wrapper .tooltip-text {
bottom: 50%;
left: 125%;
transform: translateY(50%);
}
/* 折叠栏按钮悬停增强效果 */
#collapsedSidebar button:hover {
background-color: rgba(229, 231, 235, 0.8);
transform: scale(1.05);
}
#collapsedSidebar button img {
transition: all 0.2s ease;
}
#collapsedSidebar button:hover img {
transform: scale(1.1);
filter: brightness(1.1);
}
/* 新建对话按钮特殊悬停效果 */
#newChatCollapsed:hover .cloud-plus-icon-small {
transform: scale(1.1);
transition: transform 0.2s ease;
}
#newChatCollapsed:hover .cloud-plus-icon-small svg {
color: #3b82f6 !important;
}
#newChatCollapsed:hover .cloud-plus-icon-small .bg-blue-500 {
background-color: #1d4ed8 !important;
}
/* ===== 页面过渡效果 ===== */
.page-transition {
opacity: 0;
transform: translateY(20px);
transition: all 0.5s ease-out;
}
.page-transition.loaded {
opacity: 1;
transform: translateY(0);
}
/* ===== 输入框样式 ===== */
.form-input {
border: 2px solid #e5e7eb;
border-radius: 8px;
padding: 12px 16px;
transition: all 0.3s ease;
}
.form-input:focus {
outline: none;
border-color: #2563eb;
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}
/* ===== 卡片阴影变化 ===== */
.card-shadow {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
transition: box-shadow 0.3s ease;
}
.card-shadow:hover {
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
}
/* ===== 文字选择样式 ===== */
::selection {
background-color: #dbeafe;
color: #1e40af;
}
/* ===== 聊天输入框自适应高度 ===== */
.auto-resize {
transition: height 0.2s ease;
}
/* ===== 侧边栏滚动区域样式 ===== */
.sidebar .overflow-y-auto {
scrollbar-width: thin;
scrollbar-color: #cbd5e1 #f8fafc;
}
.sidebar .overflow-y-auto::-webkit-scrollbar {
width: 4px;
}
.sidebar .overflow-y-auto::-webkit-scrollbar-track {
background: #f8fafc;
border-radius: 2px;
}
.sidebar .overflow-y-auto::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 2px;
}
.sidebar .overflow-y-auto::-webkit-scrollbar-thumb:hover {
background: #94a3b8;
}
/* ===== 特殊状态样式 ===== */
/* ===== 键盘导航支持 ===== */
.keyboard-navigation *:focus {
outline: 2px solid #2563eb;
outline-offset: 2px;
}
/* ===== 打印样式 ===== */
@media print {
.no-print,
.sidebar,
.sidebar-overlay,
#toggleSidebar,
.input-area,
.ticker-section {
display: none !important;
}
body {
font-size: 12pt;
line-height: 1.5;
}
.main-content {
margin-left: 0 !important;
padding-top: 0 !important;
}
h1, h2, h3 {
page-break-after: avoid;
}
.chat-messages {
height: auto !important;
overflow: visible !important;
page-break-inside: avoid;
}
}
/* ===== 无障碍访问增强 ===== */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
.ticker-content {
animation: none;
position: static;
}
}
/* ===== Markdown内容样式 ===== */
.markdown-content {
line-height: 1.6;
word-break: break-word;
}
.markdown-content h1 {
font-size: 1.75rem;
font-weight: 700;
margin: 1rem 0 0.75rem 0;
color: #1a202c;
}
.markdown-content h2 {
font-size: 1.5rem;
font-weight: 600;
margin: 0.875rem 0 0.625rem 0;
color: #2d3748;
}
.markdown-content h3 {
font-size: 1.25rem;
font-weight: 600;
margin: 0.75rem 0 0.5rem 0;
color: #2d3748;
}
.markdown-content h4,
.markdown-content h5,
.markdown-content h6 {
font-weight: 600;
margin: 0.5rem 0 0.375rem 0;
color: #4a5568;
}
.markdown-content p {
margin: 0.5rem 0;
}
.markdown-content code {
background-color: rgba(229, 231, 235, 0.5);
color: #e53e3e;
padding: 0.125rem 0.25rem;
border-radius: 0.25rem;
font-size: 0.875rem;
font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
}
.markdown-content pre {
background-color: #1e293b;
color: #e2e8f0;
padding: 1rem;
border-radius: 0.5rem;
overflow-x: auto;
margin: 0.75rem 0;
}
.markdown-content pre code {
background-color: transparent;
color: inherit;
padding: 0;
}
.markdown-content blockquote {
border-left: 4px solid #cbd5e0;
padding-left: 1rem;
margin: 0.75rem 0;
color: #4a5568;
font-style: italic;
}
.markdown-content ul,
.markdown-content ol {
margin: 0.5rem 0;
padding-left: 1.5rem;
}
.markdown-content ul li,
.markdown-content ol li {
margin: 0.25rem 0;
}
.markdown-content table {
border-collapse: collapse;
width: 100%;
margin: 0.75rem 0;
overflow-x: auto;
display: block;
}
.markdown-content th,
.markdown-content td {
border: 1px solid #e2e8f0;
padding: 0.5rem 0.75rem;
text-align: left;
}
.markdown-content th {
background-color: #f7fafc;
font-weight: 600;
}
.markdown-content tr:hover {
background-color: #f9fafb;
}
.markdown-content a {
color: #3182ce;
text-decoration: underline;
}
.markdown-content a:hover {
color: #2c5282;
}
.markdown-content img {
max-width: 100%;
height: auto;
border-radius: 0.5rem;
margin: 0.75rem 0;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.markdown-content hr {
border: 0;
height: 1px;
background: #e2e8f0;
margin: 1rem 0;
}
/* 代码块复制按钮 */
.code-block-wrapper {
position: relative;
margin: 0.75rem 0;
}
.code-header {
background-color: #334155;
color: #e2e8f0;
padding: 0.5rem 1rem;
border-radius: 0.5rem 0.5rem 0 0;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 0.875rem;
}
.copy-code-btn {
background-color: transparent;
border: 1px solid #64748b;
color: #cbd5e1;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
cursor: pointer;
transition: all 0.2s;
font-size: 0.75rem;
}
.copy-code-btn:hover {
background-color: #475569;
color: #f1f5f9;
border-color: #94a3b8;
}
.code-block-wrapper pre {
margin: 0;
border-radius: 0 0 0.5rem 0.5rem;
}
/* 内联代码样式优化 */
.inline-code {
font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
font-size: 0.875em;
}
/* 列表样式优化 */
.markdown-content ul {
list-style-type: disc;
}
.markdown-content ul ul {
list-style-type: circle;
}
.markdown-content ul ul ul {
list-style-type: square;
}
.markdown-content ol {
list-style-type: decimal;
}
.markdown-content ol ol {
list-style-type: lower-alpha;
}
.markdown-content ol ol ol {
list-style-type: lower-roman;
}
/* 语法高亮主题 */
.markdown-content .language-javascript,
.markdown-content .language-js {
color: #f7df1e;
}
.markdown-content .language-python,
.markdown-content .language-py {
color: #3776ab;
}
.markdown-content .language-html {
color: #e34c26;
}
.markdown-content .language-css {
color: #1572b6;
}
/* 响应式Markdown内容 */
@media (max-width: 768px) {
.markdown-content h1 {
font-size: 1.5rem;
}
.markdown-content h2 {
font-size: 1.25rem;
}
.markdown-content h3 {
font-size: 1.125rem;
}
.markdown-content pre {
padding: 0.75rem;
font-size: 0.875rem;
}
.code-header {
padding: 0.375rem 0.75rem;
font-size: 0.75rem;
}
}