/* ai-chat.css，内容来自ai-chat.html的<style>标签 */
body {
  background: linear-gradient(to right, #e0f7fa, #80deea);
  min-height: 100vh;
  margin: 0;
  padding: 20px;
}

.main-container {
  display: flex;
  height: calc(100vh - 40px);
  gap: 20px;
}

/* 左侧会话列表样式 */
.session-panel {
  width: 300px;
  background: white;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  transition: all 0.3s ease;
  position: relative;
}

.session-panel.collapsed {
  width: 50px;
}

/* 当面板收起时 */
.session-panel.collapsed .session-header {
  justify-content: center;
  padding: 15px 0;
}

.session-panel.collapsed .session-header h5,
.session-panel.collapsed .session-header img {
  display: none;
}

.session-panel.collapsed .session-header .toggle-btn {
  position: static;
  margin: 0;
  display: flex;
  justify-content: center;
  width: 100%;
}

.session-panel.collapsed .session-list,
.session-panel.collapsed .new-chat-btn {
  display: none;
}

.session-header {
  position: relative;
  padding: 15px;
  border-bottom: 1px solid #eee;
  display: flex;
  justify-content: space-between;
  align-items: center;
  overflow: hidden;
}

.session-header .toggle-btn {
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: #666;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.session-header .toggle-btn:hover {
  color: #333;
}

.new-chat-btn {
  margin: 15px;
  padding: 10px;
  background: #f0f2f5;
  border: none;
  border-radius: 8px;
  color: #1890ff;
  font-weight: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.3s ease;
}

.new-chat-btn:hover {
  background: #e6f7ff;
}

.new-chat-btn i {
  margin-right: 8px;
}

.session-panel.collapsed .toggle-btn {
  position: static;
  /* 恢复默认定位 */
  transform: none;
  /* 清除之前的变换 */
  margin-left: auto;
  /* 保持按钮在右侧 */
}

.session-list {
  flex: 1;
  overflow-y: auto;
  padding: 10px;
}

.session-item {
  padding: 10px;
  margin-bottom: 5px;
  border-radius: 5px;
  cursor: pointer;
  transition: all 0.2s;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.session-item:hover {
  background: #f0f2f5;
}

.session-item.active {
  background: #e6f7ff;
  border-left: 3px solid #1890ff;
}

.session-item .session-actions {
  display: none;
}

.session-item:hover .session-actions {
  display: flex;
  gap: 5px;
}

.session-item .session-actions button {
  background: none;
  border: none;
  padding: 2px 5px;
  cursor: pointer;
  color: #666;
}

.session-item .session-actions button:hover {
  color: #1890ff;
}

/* 中间数据展示区域样式 */
.data-panel {
  flex: 1;
  background: white;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.data-header {
  padding: 15px;
  border-bottom: 1px solid #eee;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}

.data-header-top-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  justify-content: space-between; /* 两端对齐 */
  width: 100%; /* 确保占据整行 */
}

/* 问卷链接简写样式 */
.survey-link-short {
  margin-left: 5px;
  font-size: 0.9em;
  color: #1890ff;
  text-decoration: none;
}

.survey-link-short:hover {
  text-decoration: underline;
}

/* 会话搜索样式 */
.session-search {
  padding: 10px;
  border-bottom: 1px solid #eee;
  display: none;
  /* 默认隐藏 */
}

.session-search input {
  width: 100%;
  padding: 8px;
  border: 1px solid #ccc;
  border-radius: 4px;
}

.excel-container {
  flex: 1;
  overflow: auto;
  padding: 15px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.upload-container {
  text-align: center;
  padding: 40px;
  background: white;
  border-radius: 16px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
  width: 90%;
  max-width: 500px;
  border: 1px solid #e8e9ea;
  transition: all 0.3s ease;
}

.upload-container:hover {
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
  transform: translateY(-2px);
}

.upload-container.dragover {
  border-color: #1890ff;
  background: #e6f7ff;
}

.hot-table {
  width: 100%;
  height: 100%;
  display: none;
}

/* 右侧聊天区域样式 */
.chat-panel {
  width: 400px;
  background: white;
  border-radius: 10px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
}

.chat-header {
  padding: 15px;
  border-bottom: 1px solid #eee;
}

.message-list {
  flex: 1;
  overflow-y: auto;
  padding: 15px;
}

.message {
  margin-bottom: 12px;
  max-width: 80%;
  padding: 8px 12px;
  border-radius: 8px;
  word-break: break-word;
  position: relative;
  font-size: 14px;
  line-height: 1.5;
}

.message.assistant {
  margin-right: auto;
  background: #f5f5f5;
  border-top-left-radius: 0;
  color: #333;
  /* 为外部导出按钮预留空间 */
  margin-right: 40px;
}

/* 数据修改动画样式 */
@keyframes cellChange {
  0% {
      background-color: #fff3cd;
      transform: scale(1);
  }
  50% {
      background-color: #ffeeba;
      transform: scale(1.05);
  }
  100% {
      background-color: transparent;
      transform: scale(1);
  }
}

.scanning {
  animation: cellChange 0.5s ease-out;
}

/* 添加修改历史标记样式 */
.cell-modified {
  position: relative;
}

.cell-modified::after {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  width: 6px;
  height: 6px;
  background-color: #1890ff;
  border-radius: 50%;
}

/* 自定义悬浮提示样式 */
.cell-tooltip {
  position: fixed;
  z-index: 10000;
  background: rgba(0, 0, 0, 0.9);
  color: white;
  border-radius: 6px;
  padding: 0;
  opacity: 0;
  transition: opacity 0.2s ease-in-out;
  pointer-events: none;
  font-size: 12px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  max-width: 300px;
}

.tooltip-content {
  padding: 8px 12px;
}

.tooltip-title {
  font-weight: bold;
  margin-bottom: 6px;
  color: #fff;
  font-size: 13px;
}

.tooltip-change {
  margin: 4px 0;
  display: flex;
  align-items: center;
  gap: 6px;
}

.tooltip-label {
  font-weight: 500;
  color: #ccc;
  min-width: 50px;
}

.tooltip-old-value {
  color: #ff7875;
  background: rgba(255, 120, 117, 0.1);
  padding: 2px 6px;
  border-radius: 3px;
  font-family: monospace;
}

.tooltip-new-value {
  color: #73d13d;
  background: rgba(115, 209, 61, 0.1);
  padding: 2px 6px;
  border-radius: 3px;
  font-family: monospace;
}

/* 添加小箭头 */
.cell-tooltip::before {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: rgba(0, 0, 0, 0.9);
}

/* 当tooltip显示在下方时的箭头 */
.cell-tooltip.bottom::before {
  top: -12px;
  border-top-color: transparent;
  border-bottom-color: rgba(0, 0, 0, 0.9);
}

.message.user {
  margin-left: auto;
  background: #e6f7ff;
  border-top-right-radius: 0;
  color: #333;
}

.message.system {
  margin: 8px auto;
  background: #fff3cd;
  color: #856404;
  text-align: center;
  max-width: 90%;
  font-size: 13px;
  padding: 6px 10px;
}

.message-content {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.explanation {
  white-space: pre-wrap;
  line-height: 1.5;
  font-size: 14px;
}

/* 调整头像大小 */
.message::before {
  width: 24px;
  height: 24px;
  font-size: 16px;
}

.message.user::before {
  right: -32px;
}

.message.assistant::before {
  left: -32px;
}

.changes {
  font-size: 0.9em;
  color: #666;
  padding: 5px;
  background: rgba(0,0,0,0.05);
  border-radius: 5px;
}

/* 工具栏样式 */
.toolbar {
  padding: 10px;
  background: #f8f9fa;
  border-bottom: 1px solid #eee;
  display: none;
  justify-content: space-between;
  align-items: center;
}

.toolbar-left {
  display: flex;
  gap: 10px;
}

.toolbar-right {
  display: flex;
  gap: 10px;
}

.toolbar button {
  height: 36px;
  padding: 0 16px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 500;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.3s ease;
}

.toolbar button i {
  font-size: 1.1em;
}

.toolbar button.btn-outline-primary {
  border: 1px solid #1890ff;
  color: #1890ff;
  background: transparent;
}

.toolbar button.btn-outline-primary:hover {
  background: #e6f7ff;
  border-color: #1890ff;
  color: #1890ff;
  transform: translateY(-1px);
}

.toolbar button.btn-primary {
  background: #1890ff;
  border: none;
  color: white;
}

.toolbar button.btn-primary:hover {
  background: #096dd9;
  transform: translateY(-1px);
}

.toolbar button.btn-sm {
  height: 28px !important;
  padding: 0 8px !important;
  font-size: 13px !important;
  border-radius: 3px !important;
  line-height: 1.2 !important;
}

/* 高亮样式优化 */
.highlight {
  background-color: #fff3cd !important;
  animation: highlight-fade 2s ease-out;
}

@keyframes highlight-fade {
  0% {
      background-color: #ffd700 !important;
  }
  100% {
      background-color: transparent;
  }
}

/* 发送按钮加载状态样式 */
.chat-input .btn-primary:disabled {
  background-color: #6c757d;
  border-color: #6c757d;
  cursor: not-allowed;
}

.chat-input .btn-primary .spinner-border {
  margin-right: 8px;
}

/* 输入框禁用状态样式 */
.chat-input textarea:disabled {
  background-color: #e9ecef;
  cursor: not-allowed;
}

/* 表格单元格过渡效果 */
.htCore td {
  transition: background-color 0.5s ease;
}

/* 表格单元格高亮效果 */
.htCore td.highlight {
  position: relative;
}

.htCore td.highlight::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(255, 215, 0, 0.2);
  pointer-events: none;
}

/* 代币显示样式 */
.token-display {
  background: #f0f2f5;
  padding: 5px 10px;
  border-radius: 15px;
  font-weight: bold;
  color: #1890ff;
  display: inline-flex;
  align-items: center;
  height: 32px;
}

/* 导出按钮样式 */
.export-btn {
  height: 32px;
  padding: 0 15px;
  display: inline-flex;
  align-items: center;
  background: #1890ff; /* 深蓝色背景 */
  color: white; /* 白色文字 */
  border: none;
  font-weight: bold;
}

.export-btn:hover {
  background: #096dd9; /* 更深的蓝色 */
  color: white;
}

/* 上传按钮样式 */
.upload-btn {
  padding: 10px 30px;
}

/* 分析结果弹窗样式 */
.analysis-modal .modal-dialog {
  max-width: 800px;
}

.analysis-result {
  max-height: 400px;
  overflow-y: auto;
}

/* 时间分类头部样式 */
.session-group-header {
  font-weight: bold;
  padding: 10px;
  margin-top: 10px;
  margin-bottom: 5px;
  background-color: #e9ecef;
  /* 一个浅灰色背景 */
  border-radius: 5px;
  color: #495057;
  /* 深灰色文字 */
  font-size: 0.9em;
}

/* 全屏预览按钮样式 */
.fullscreen-btn {
  margin-left: 10px;
  padding: 0 10px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  background: #1890ff;
  color: white;
  border: none;
  font-weight: bold;
  border-radius: 4px;
  cursor: pointer;
}

.fullscreen-btn:hover {
  background: #096dd9;
}

/* 全屏模式样式 */
.excel-container.fullscreen {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1000;
  background: white;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.excel-container.fullscreen .hot-table {
  flex: 1;
  height: auto;
}

/* 全屏模式下的控制栏 */
.fullscreen-header {
  background: #f8f9fa;
  padding: 15px 20px;
  border-bottom: 1px solid #dee2e6;
  display: flex;
  justify-content: space-between;
  align-items: center;
  display: none;
}

.excel-container.fullscreen .fullscreen-header {
  display: flex;
}

.fullscreen-title {
  font-size: 1.2em;
  font-weight: 500;
  color: #333;
}

.fullscreen-controls {
  display: flex;
  gap: 15px;
  align-items: center;
}

.fullscreen-btn {
  margin: 0;
  padding: 8px 16px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #1890ff;
  color: white;
  border: none;
  font-weight: 500;
  border-radius: 4px;
  cursor: pointer;
  transition: all 0.3s ease;
}

.fullscreen-btn:hover {
  background: #096dd9;
  transform: translateY(-1px);
}

.fullscreen-btn i {
  font-size: 1.1em;
}

.fullscreen-btn.secondary {
  background: #f0f2f5;
  color: #666;
}

.fullscreen-btn.secondary:hover {
  background: #e6e8eb;
  color: #333;
}

/* Spinner 样式 */
.spinner-border {
  display: inline-block;
  width: 1rem;
  height: 1rem;
  vertical-align: text-bottom;
  border: .25em solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  -webkit-animation: spinner-border .75s linear infinite;
  animation: spinner-border .75s linear infinite;
}

@keyframes spinner-border {
  to { transform: rotate(360deg); }
}

@-webkit-keyframes spinner-border {
  to { -webkit-transform: rotate(360deg); }
}



.chat-message.highlight {
    background: #ffe082;
}

.excel-container.preview-version {
    box-shadow: 0 0 0 4px #ffe082;
    background: #fffde7;
    position: relative;
}
.msg-time {
    font-size: 11px;
    color: #b0b0b0;
    text-align: right;
    margin-top: 2px;
    margin-bottom: 0;
    margin-right: 4px;
    letter-spacing: 0.5px;
}

.preview-tip {
    position: fixed;
    top: 70px;
    left: 50%;
    transform: translateX(-50%);
    background: #fffbe6;
    color: #333;
    padding: 14px 32px 18px 32px;
    border-radius: 14px;
    font-size: 15px;
    z-index: 9999;
    box-shadow: 0 6px 24px rgba(255,224,130,0.18);
    font-weight: 500;
    border: 1.5px solid #ffe082;
    letter-spacing: 1px;
    max-width: 96vw;
    text-align: center;
    pointer-events: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}
.preview-tip .restore-tip-btn {
    margin-top: 6px;
    background: #1890ff;
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 5px 18px;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(24,144,255,0.08);
    transition: background 0.2s, box-shadow 0.2s;
}
.preview-tip .restore-tip-btn:hover {
    background: #40a9ff;
    box-shadow: 0 4px 16px rgba(24,144,255,0.18);
}

.message.assistant .msg-time {
    text-align: left;
    margin-left: 4px;
    margin-right: 0;
}
.message.user .msg-time {
    text-align: right;
    margin-right: 4px;
    margin-left: 0;
}

/* 分析表格样式 */
.analysis-table-container {
    margin: 20px 0;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    padding: 15px;
    width: 100%;
    overflow-x: auto;
}

.analysis-table-container-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
    gap: 16px;
    padding-right: 2px;
}
.analysis-table-container-header h4 {
    margin: 0;
    font-size: 16px;
    font-weight: 600;
    color: #333;
}
.analysis-table-container-header .table-fullscreen-btn,
.analysis-table-container-header .table-download-btn {
    margin-left: 0;
}
.analysis-table-container-header .table-fullscreen-btn + .table-download-btn {
    margin-left: 8px;
}

.analysis-table-container .table {
    margin-bottom: 0;
    font-size: 14px;
    width: auto;
    white-space: nowrap;
}

.analysis-table-container .table th,
.analysis-table-container .table td {
    white-space: nowrap;
    text-align: center;
    vertical-align: middle;
    padding: 8px;
    min-width: 80px;
}

.analysis-table-container .table th {
    background-color: #f8f9fa;
    font-weight: 600;
}

.analysis-table-container .table-striped tbody tr:nth-of-type(odd) {
    background-color: rgba(0,0,0,.02);
}

.analysis-table-container .table-bordered th,
.analysis-table-container .table-bordered td {
    border: 1px solid #dee2e6;
}

/* 表格容器样式 */
.table-container {
    width: 100%;
    overflow-x: auto;
    margin-bottom: 1rem;
    padding-bottom: 6px;
}

/* 表格基本样式 */
.analysis-table {
    border-collapse: collapse;
    border-spacing: 0;
    margin-bottom: 1rem;
    table-layout: fixed;
    width: auto;
}

/* 强制所有表格相关元素不换行 */
.analysis-table,
.analysis-table th,
.analysis-table td {
    white-space: nowrap;
}

.analysis-table th,
.analysis-table td {
    padding: 8px 16px;
    border: 1px solid #ddd;
    text-align: left;
    min-width: 80px;
}

.analysis-table th {
    background-color: #f5f5f5;
    font-weight: bold;
    position: sticky;
    top: 0;
    z-index: 1;
}

/* 数字列的样式 */
.analysis-table td.number {
    text-align: right;
    font-family: monospace;
}

/* 表格hover效果 */
.analysis-table tbody tr:hover {
    background-color: #f8f9fa;
}

/* 表格标题样式 */
.table-title {
    font-size: 1.1em;
    font-weight: bold;
    margin: 1rem 0 0.5rem;
    color: #333;
    padding-left: 2px;
    white-space: nowrap;
}

/* 滚动条样式优化 */
.table-container::-webkit-scrollbar {
    height: 8px;
}

.table-container::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-radius: 4px;
}

.table-container::-webkit-scrollbar-thumb {
    background: #888;
    border-radius: 4px;
}

.table-container::-webkit-scrollbar-thumb:hover {
    background: #555;
}

/* 确保表格内容间距合适 */
.analysis-table td > div,
.analysis-table th > div {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 80px;
}

/* 表格中的图片样式 */
.analysis-table img {
    max-height: 100px;
    cursor: pointer;
    transition: transform 0.3s ease;
}

/* 图片放大弹窗样式 */
.image-modal {
    display: none;
    position: fixed;
    z-index: 1000;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.9);
}

.image-modal img {
    max-width: 90%;
    max-height: 90%;
    margin: auto;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.image-modal .close {
    position: absolute;
    top: 15px;
    right: 35px;
    color: #f1f1f1;
    font-size: 40px;
    font-weight: bold;
    cursor: pointer;
}

/* 表格hover效果 */
.analysis-table tbody tr:hover {
    background-color: #f8f9fa;
}

/* 表格响应式布局 */
@media screen and (max-width: 768px) {
    .table-container {
        margin: 0 -15px;
        padding: 0 15px;
    }
}

/* 表格全屏预览样式 */
.table-fullscreen-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.85);
    z-index: 9999;
    padding: 20px;
}

.table-fullscreen-modal.active {
    display: flex;
    flex-direction: column;
}

.table-fullscreen-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 20px;
    background: #fff;
    border-radius: 8px 8px 0 0;
}

.table-fullscreen-title {
    font-size: 18px;
    font-weight: 600;
    color: #333;
}

.table-fullscreen-actions {
    display: flex;
    gap: 10px;
}

.table-fullscreen-content {
    flex: 1;
    background: #fff;
    border-radius: 0 0 8px 8px;
    padding: 20px;
    overflow: auto;
}

.table-fullscreen-btn {
    background: none;
    border: none;
    color: #1890ff;
    cursor: pointer;
    padding: 4px 8px;
    font-size: 14px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: 8px;
}

.table-fullscreen-btn:hover {
    color: #40a9ff;
    background: rgba(24, 144, 255, 0.1);
    border-radius: 4px;
}

.table-download-btn {
    background: #1890ff;
    color: white;
    border: none;
    border-radius: 4px;
    padding: 6px 12px;
    cursor: pointer;
    font-size: 14px;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.table-download-btn:hover {
    background: #40a9ff;
}

/* 全屏模式下的表格样式 */
.table-fullscreen-content .analysis-table-container {
    margin: 0;
    box-shadow: none;
    height: 100%;
}

.table-fullscreen-content .analysis-table {
    width: 100%;
    height: 100%;
}

.table-fullscreen-content .table-container {
    margin: 0;
    height: 100%;
}

.analysis-table-container-header .icon-only {
    background: none;
    border: none;
    color: #1890ff;
    font-size: 16px;
    padding: 2px 4px;
    margin-left: 2px;
    cursor: pointer;
    line-height: 1;
    border-radius: 3px;
    transition: background 0.15s, color 0.15s;
    vertical-align: middle;
}
.analysis-table-container-header .icon-only:hover {
    background: #e6f7ff;
    color: #096dd9;
}
.analysis-table-container-header > div {
    display: flex;
    gap: 2px;
    align-items: center;
}

/* 优化分析参数弹窗为80%宽高，居中显示 */
/* 分析参数弹窗水平垂直居中，内容区高度自适应撑满 */
#analysisParamModal .modal-dialog.modal-fullscreen {
  position: fixed !important;
  left: 50% !important;
  top: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 80vw !important;
  height: 80vh !important;
  max-width: 1200px !important;
  max-height: 90vh !important;
  margin: 0 !important;
  padding: 0 !important;
  display: flex;
  flex-direction: column;
  z-index: 1055;
}
#analysisParamModal .modal-content {
  height: 100% !important;
  border-radius: 12px !important;
  display: flex !important;
  flex-direction: column !important;
  box-shadow: 0 8px 32px rgba(0,0,0,0.18);
}
#analysisParamModal .modal-body {
  flex: 1 1 0 !important;
  height: 100% !important;
  overflow-y: auto !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
  padding: 24px 32px 12px 32px !important;
}
#analysisParamForm {
  flex: 1 1 0 !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
  min-width: 0 !important;
  height: 100% !important;
}
#analysisParamModal .modal-dialog,
#analysisParamModal .modal-content,
#analysisParamModal .modal-body,
#analysisParamForm {
  height: 100%;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

#analysisParamForm > div,
.transfer-container {
  flex: 1 1 0;
  display: flex;
  flex-direction: row;
  gap: 24px;
  min-height: 0;
  min-width: 0;
  height: 100%;
}

.transfer-title {
  font-weight: 500;
  color: #888;
  margin-bottom: 8px;
  font-size: 15px;
}
.transfer-tip {
  margin-top: 8px;
  color: #aaa;
  font-size: 13px;
}
/* 保证下拉、输入等组件宽度自适应 */
#analysisParamModal .form-select,
#analysisParamModal .form-control {
  width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

/* Transfer美化样式 */
.transfer-list {
  min-width: 200px;
  min-height: 240px;
  background: #f7f9fa; /* 统一浅灰色 */
  border-radius: 10px;
  border: 1px solid #e5e6eb;
  padding: 12px 0;
  margin: 0;
  box-shadow: 0 2px 8px rgba(0,0,0,0.03);
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1 1 0;
  height: 100%;
  background: #f7f9fa;
  overflow: hidden;
  position: relative;
}
.transfer-list ul {
  position: relative;
  min-height: 180px;
  margin: 0;
  padding: 0;
  list-style: none;
  height: 100%;
}

.transfer-list ul::after {
  content: attr(data-empty-text);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #bbb;
  font-size: 16px;
  height: 100%;
  min-height: 180px;
  width: 100%;
  text-align: center;
  position: absolute;
  left: 0;
  top: 0;
  pointer-events: none;
  z-index: 0;
}

.transfer-list li {
  position: relative;
  z-index: 1;
  min-width: 100px;
  min-height: 32px;
  margin: 6px 10px;
  padding: 7px 14px;
  background: #fff;
  border-radius: 6px;
  font-size: 14px;
  box-shadow: 0 1px 4px rgba(24,144,255,0.04);
  display: flex;
  align-items: center;
  transition: box-shadow 0.2s, background 0.2s, color 0.2s;
  cursor: pointer;
  user-select: text;
}
.transfer-list li:hover {
  background: #e6f7ff;
  color: #1890ff;
  box-shadow: 0 2px 8px rgba(24,144,255,0.10);
}
.transfer-list li.selected, .transfer-list li.active {
  background: #1890ff;
  color: #fff;
  box-shadow: 0 2px 8px rgba(24,144,255,0.18);
  border: 2px solid #096dd9;
}
.transfer-list li .badge {
  margin-left: 8px;
  font-size: 12px;
  background: #f0f2f5;
  color: #888;
  border-radius: 4px;
  padding: 2px 6px;
}
.transfer-actions {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 16px;
}
.transfer-actions button {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  font-size: 20px;
  background: #fff;
  border: 1.5px solid #1890ff;
  color: #1890ff;
  transition: background 0.2s, color 0.2s, border 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
}
.transfer-actions button:hover {
  background: #e6f7ff;
  color: #096dd9;
  border-color: #096dd9;
}

/* 穿梭框全链路100%高度，彻底撑满弹窗 */
#analysisParamModal .modal-dialog,
#analysisParamModal .modal-content,
#analysisParamModal .modal-body,
#analysisParamForm {
  height: 100% !important;
  min-height: 0 !important;
  display: flex !important;
  flex-direction: column !important;
}
#analysisParamForm > div,
.transfer-container {
  flex: 1 1 0 !important;
  display: flex !important;
  flex-direction: row !important;
  gap: 24px !important;
  min-height: 0 !important;
  min-width: 0 !important;
  height: 90% !important;
}
.transfer-list {
  flex: 1 1 0 !important;
  height: 100% !important;
  display: flex !important;
  flex-direction: column !important;
  background: #f7f9fa !important;
  border-radius: 10px !important;
  border: 1px solid #e5e6eb !important;
  box-shadow: 0 2px 8px rgba(0,0,0,0.03) !important;
  overflow: hidden !important;
  position: relative !important;
  min-width: 200px !important;
  min-height: 240px !important;
}
.transfer-list ul {
  flex: 1 1 0 !important;
  height: 100% !important;
  min-height: 0 !important;
  overflow: auto !important;
  display: flex !important;
  flex-direction: column !important;
}

#analysisDynamicParams {
  flex: 2 1 0;
  min-width: 0;
  min-height: 0;
  height: 100%;
  display: flex;
  flex-direction: row;
  gap: 24px;
}

/* 减小穿梭框内第一个题块距离上边框的距离 */
.transfer-list ul li:first-child {
  margin-top: 2px !important;
}

/* 线性回归专用穿梭框样式 */
.transfer-right-area {
  display: flex;
  flex-direction: column;
  gap: 16px;
  flex: 1 1 0;
}
.transfer-list-y {
  min-height: 38px !important;
  max-height: 44px !important;
  height: auto !important;
  background: #f7f9fa;
  border-radius: 10px;
  border: 1.5px dashed #b2dfdb;
  position: relative;
  margin-bottom: 8px;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  padding: 0 0 0 0;
}
.transfer-list-y ul {
  min-height: 32px;
  max-height: 40px;
  padding: 0;
  margin: 0;
  list-style: none;
  width: 100%;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  overflow: hidden;
  /* 隐藏滚动条 */
  scrollbar-width: none;
}
.transfer-list-y ul::-webkit-scrollbar {
  display: none;
}
.transfer-list-y li {
  margin: 6px 10px;
  padding: 7px 14px;
  background: #fff;
  border-radius: 6px;
  font-size: 14px;
  box-shadow: 0 1px 4px rgba(24,144,255,0.04);
  display: flex;
  align-items: center;
  transition: box-shadow 0.2s, background 0.2s, color 0.2s;
  cursor: pointer;
  user-select: text;
  width: calc(100% - 20px);
  box-sizing: border-box;
}
.transfer-list-x {
  min-height: 120px;
  background: #f7f9fa;
  border-radius: 10px;
  border: 1.5px dashed #b2dfdb;
  position: relative;
}
.transfer-list-placeholder {
  position: absolute;
  left: 0; right: 0; top: 0; bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #bbb;
  font-size: 16px;
  pointer-events: none;
  z-index: 0;
}
.transfer-list-y ul,
.transfer-list-x ul {
  position: relative;
  z-index: 1;
  min-height: 40px;
  margin: 0;
  padding: 0;
  list-style: none;
  background: transparent;
}
.transfer-list-y li,
.transfer-list-x li {
  margin: 6px 10px;
  padding: 7px 14px;
  background: #fff;
  border-radius: 6px;
  font-size: 14px;
  box-shadow: 0 1px 4px rgba(24,144,255,0.04);
  display: flex;
  align-items: center;
  transition: box-shadow 0.2s, background 0.2s, color 0.2s;
  cursor: pointer;
  user-select: text;
}
.transfer-list-y li.selected, .transfer-list-x li.selected {
  background: #1890ff;
  color: #fff;
  box-shadow: 0 2px 8px rgba(24,144,255,0.18);
  border: 2px solid #096dd9;
}
/* 隐藏左右移动按钮 */
.transfer-actions { display: none !important; }

/* 方差分析(anova)界面拖拽穿梭框样式，直接复用线性回归的.transfer-list-y、.transfer-list-x等样式 */
/* 交叉分析(crossTab)界面拖拽穿梭框样式，直接复用线性回归的.transfer-list-y、.transfer-list-x等样式 */

#analysisFactors,#mediationTypeSelect,#analysisMethod,#moderationVariableType {
  max-width: none;
  width: 100%;
  display: block;
  margin-left: 0;
  margin-bottom: 8px;
}
#analysisFactors + .form-text {
  margin-top: 2px;
  color: #888;
  font-size: 13px;
}

/* 验证代币和创建会话页面样式 */
#tokenInputSection, #uploadSection {
  animation: fadeInUp 0.6s ease-out;
}

#tokenInputSection h4, #uploadSection h4 {
  color: #2c3e50;
  font-weight: 600;
  margin-bottom: 30px;
  font-size: 24px;
  letter-spacing: -0.5px;
}

#tokenInputSection .form-control, #uploadSection .form-control {
  border: 2px solid #e8e9ea;
  border-radius: 12px;
  padding: 16px 20px;
  font-size: 16px;
  transition: all 0.3s ease;
  background: #fafbfc;
  margin-bottom: 20px;
}

#tokenInputSection .form-control:focus, #uploadSection .form-control:focus {
  border-color: #007bff;
  box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.1);
  background: white;
  outline: none;
}

#tokenInputSection .form-control::placeholder, #uploadSection .form-control::placeholder {
  color: #a0a6b1;
  font-weight: 400;
}

/* Excel文件上传区域样式 */
.file-upload-area {
  border: 2px dashed #d1d5db;
  border-radius: 10px;
  padding: 20px 12px;
  text-align: center;
  background: #fafbfc;
  transition: all 0.3s ease;
  cursor: pointer;
  position: relative;
  margin-bottom: 12px;
}

.file-upload-area:hover {
  border-color: #007bff;
  background: #f0f8ff;
  transform: translateY(-2px);
}

.file-upload-area.dragover {
  border-color: #007bff;
  background: #e6f3ff;
  box-shadow: 0 8px 25px rgba(0, 123, 255, 0.15);
}

.file-upload-icon {
  font-size: 32px;
  color: #9ca3af;
  margin-bottom: 8px;
  transition: all 0.3s ease;
}

.file-upload-area:hover .file-upload-icon {
  color: #007bff;
  transform: scale(1.1);
}

.file-upload-text {
  font-size: 14px;
  font-weight: 600;
  color: #374151;
  margin-bottom: 4px;
}

.file-upload-hint {
  font-size: 12px;
  color: #6b7280;
  margin-bottom: 8px;
}

.file-upload-formats {
  font-size: 10px;
  color: #9ca3af;
  background: #f3f4f6;
  padding: 4px 8px;
  border-radius: 12px;
  display: inline-block;
}

.file-input-hidden {
  position: absolute;
  opacity: 0;
  width: 100%;
  height: 100%;
  cursor: pointer;
}

/* 文件信息显示区域 */
.file-info-card {
  background: white;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 20px;
  margin-bottom: 20px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
  display: none;
}

.file-info-card.show {
  display: block;
  animation: fadeInUp 0.4s ease-out;
}

.file-info-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}

.file-info-title {
  font-size: 16px;
  font-weight: 600;
  color: #1f2937;
  display: flex;
  align-items: center;
  gap: 8px;
}

.file-info-title i {
  color: #10b981;
  font-size: 18px;
}

.file-remove-btn {
  background: #fee2e2;
  color: #dc2626;
  border: none;
  border-radius: 8px;
  padding: 6px 12px;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.file-remove-btn:hover {
  background: #fecaca;
  transform: scale(1.05);
}

.file-info-details {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
}

.file-info-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.file-info-label {
  font-size: 12px;
  color: #6b7280;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.file-info-value {
  font-size: 14px;
  color: #1f2937;
  font-weight: 500;
}

/* 现代化按钮样式 */
.btn-modern {
  background: #007bff;
  color: white;
  border: none;
  border-radius: 10px;
  padding: 12px 24px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s ease;
  position: relative;
  overflow: hidden;
  min-width: 120px;
  letter-spacing: 0.5px;
}

.btn-modern:hover {
  background: #0056b3;
  transform: translateY(-2px);
  box-shadow: 0 8px 25px rgba(0, 123, 255, 0.3);
}

.btn-modern:active {
  transform: translateY(0);
  box-shadow: 0 4px 15px rgba(0, 123, 255, 0.2);
}

/* 加载状态按钮 */
.btn-modern.loading {
  pointer-events: none;
  opacity: 0.8;
}

.btn-modern.loading::after {
  content: '';
  position: absolute;
  width: 20px;
  height: 20px;
  top: 50%;
  left: 50%;
  margin-left: -10px;
  margin-top: -10px;
  border: 2px solid transparent;
  border-top: 2px solid white;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

/* 淡入向上动画 */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInScale {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

/* 应用动画 */
.auth-section {
  animation: fadeInUp 0.6s ease-out;
}

.upload-section {
  animation: fadeInUp 0.6s ease-out 0.1s both;
}

/* 按钮禁用状态 */
.btn-modern:disabled {
  opacity: 0.6;
  cursor: not-allowed;
  pointer-events: none;
}

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

/* 成功状态动画 */
.btn-modern.success {
  background: #28a745 !important;
}

.btn-modern.success::after {
  content: '✓';
  position: absolute;
  font-size: 18px;
  animation: none;
  border: none;
  width: auto;
  height: auto;
}

/* 错误状态动画 */
.btn-modern.error {
  background: #dc3545 !important;
  animation: shake 0.5s ease-in-out;
}

@keyframes shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-5px); }
  75% { transform: translateX(5px); }
}

/* 全局加载状态样式 */
.global-loading-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  display: none;
  justify-content: center;
  align-items: center;
  z-index: 10000;
  backdrop-filter: blur(3px);
}

.global-loading-overlay.show {
  display: flex;
}

.global-loading-container {
  background: white;
  border-radius: 16px;
  padding: 40px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
  text-align: center;
  animation: fadeInScale 0.3s ease-out;
  min-width: 200px;
}

.global-loading-spinner {
  width: 50px;
  height: 50px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid #007bff;
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin: 0 auto 20px;
}

.global-loading-text {
  font-size: 18px;
  font-weight: 500;
  color: #333;
  margin-bottom: 8px;
}

.global-loading-subtext {
  font-size: 14px;
  color: #666;
  margin: 0;
}

/* 旧的响应式样式已移动到新的布局规则中 */

/* 优化token-display在所有屏幕下的表现 */
.token-display {
  flex-shrink: 0;
  margin: 4px 0;
  min-width: 180px;
  word-break: break-all;
  white-space: normal;
  display: inline-block;
}

/* 保证本会话消费卡片内的“26 代币”不换行 */
.token-info-card .nowrap {
  white-space: nowrap;
}

/* 顶部卡片区域布局 - 响应式设计 */
.data-header-top-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}

/* 左侧区域 - 包含历史版本组件 */
.data-header-left {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

/* 历史版本控制组件样式 */
.version-control {
  display: flex;
  gap: 8px;
  align-items: center;
  max-width: 400px;
  flex-shrink: 0;
}

/* 右侧区域 - 包含所有卡片 */
.data-header-top-row > .top-cards-right {
  display: flex;
  gap: 6px;
  align-items: stretch;
  flex-wrap: wrap;
  justify-content: space-between; /* 改为两端对齐 */
  flex: 1 1 auto;
}

/* 模拟数据卡片容器 - 靠左显示 */
.simulation-card-container {
  display: flex;
  gap: 4px;
  align-items: stretch;
  overflow-x: auto;
  scrollbar-width: thin;
  scrollbar-color: #cbd5e0 #f7fafc;
  flex: 0 0 auto; /* 不伸缩，保持原始大小 */
  order: 1; /* 确保在左侧 */
}

/* token信息卡片容器 - 靠右显示，始终保持在一行 */
.token-info-cards-group {
  display: flex;
  gap: 4px;
  flex-shrink: 0; /* 防止被压缩 */
  white-space: nowrap; /* 防止换行 */
  order: 2; /* 确保在右侧 */
  margin-left: auto; /* 推到右侧 */
}

/* 退出登录按钮 - 放在最右侧，确保始终可见 */
#logoutBtnHeader {
  order: 3; /* 确保在最右侧 */
  flex-shrink: 0;
  margin-left: 8px;
  white-space: nowrap; /* 防止文字换行 */
  min-width: fit-content; /* 确保按钮有足够宽度 */
}

/* 退出登录按钮样式 - 与token卡片风格保持一致 */
/* 使用ID选择器确保优先级，覆盖动态创建的按钮样式 */
#logoutBtnHeader {
  /* 基础样式 - 模仿token卡片的设计 */
  background: #fafbfc !important;
  border: 1px solid #e1e5e9 !important;
  border-radius: 6px !important;
  box-shadow: 0 1px 3px rgba(0,0,0,0.04) !important;

  /* 尺寸和布局 - 与token卡片高度保持一致 */
  width: 36px !important;
  min-width: 36px !important;
  max-width: 36px !important;
  padding: 4px 8px !important; /* 与token卡片相同的padding */
  height: auto !important; /* 让高度自适应，与token卡片保持一致 */

  /* 内容居中 */
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;

  /* 文字和图标 */
  font-size: 14px !important;
  color: #666 !important;
  text-decoration: none !important;

  /* 动画效果 */
  transition: all 0.2s ease !important;

  /* 隐藏文字，只显示图标 */
  text-indent: -9999px !important;
  overflow: hidden !important;
  position: relative !important;
}

#logoutBtnHeader:hover {
  background: #f0f2f5 !important;
  border-color: #dc3545 !important;
  color: #dc3545 !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 2px 6px rgba(220, 53, 69, 0.15) !important;
}

#logoutBtnHeader:active {
  transform: translateY(0) !important;
  box-shadow: 0 1px 3px rgba(0,0,0,0.04) !important;
}

/* 图标样式 */
#logoutBtnHeader i {
  position: absolute !important;
  text-indent: 0 !important;
  left: 50% !important;
  top: 50% !important;
  transform: translate(-50%, -50%) !important;
  font-size: 14px !important;
}

/* 兼容性样式 - 如果按钮没有图标，添加一个退出符号 */
#logoutBtnHeader:not(:has(i)):before {
  content: "↗" !important;
  position: absolute !important;
  left: 50% !important;
  top: 50% !important;
  transform: translate(-50%, -50%) rotate(45deg) !important;
  font-size: 16px !important;
  font-weight: bold !important;
  text-indent: 0 !important;
}

/* 大屏幕 - 历史版本和token卡片在同一行 */
@media (min-width: 1200px) {
  .data-header-top-row {
    flex-wrap: nowrap;
  }

  .data-header-top-row > .top-cards-right {
    flex-wrap: nowrap;
  }
}

/* 中等屏幕 - 历史版本和token卡片可能换行，但token卡片保持一行 */
@media (max-width: 1199px) and (min-width: 901px) {
  .data-header-top-row > .top-cards-right {
    flex-wrap: wrap;
  }

  /* 确保token卡片组始终在一行 */
  .token-info-cards-group {
    flex-wrap: nowrap;
    min-width: fit-content;
  }

}

/* 小屏幕 - 垂直布局但token卡片仍保持一行 */
@media (max-width: 900px) {
  .data-header-top-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }

  .data-header-top-row > .top-cards-right {
    width: 100%;
    flex-direction: row; /* 保持水平排列 */
    align-items: center;
    gap: 8px;
    justify-content: space-between; /* 两端对齐 */
  }

  /* token卡片组在小屏幕上仍保持水平排列并靠右 */
  .token-info-cards-group {
    flex-direction: row; /* 强制保持水平排列 */
    gap: 2px;
    overflow-x: auto; /* 如果空间不够则允许滚动 */
    margin-left: auto; /* 确保靠右 */
  }

  /* 退出登录按钮在小屏幕下的特殊处理 */
  #logoutBtnHeader {
    order: 4; /* 确保在最后 */
    flex-shrink: 0;
    margin-left: 4px;
    width: 32px !important;
    min-width: 32px !important;
    max-width: 32px !important;
    padding: 3px 5px !important; /* 与小屏幕下token卡片相同的padding */
  }

  #logoutBtnHeader i {
    font-size: 12px !important;
  }

  #logoutBtnHeader:not(:has(i)):before {
    font-size: 14px !important;
  }

  /* 模拟数据卡片在小屏幕上靠左显示 */
  .simulation-card-container {
    flex: 0 0 auto;
    justify-content: flex-start;
    order: 1;
  }

  /* 工具栏按钮样式 */
  .toolbar-right button,
  .toolbar-left button {
    font-size: 13px;
    padding: 0 8px;
    height: 28px;
  }

  /* token显示样式 */
  .token-display {
    font-size: 13px;
    min-width: 0;
    width: 100%;
    margin: 2px 0;
    word-break: break-all;
    white-space: normal;
    display: block;
  }
}

/* 极窄屏幕下的特殊处理 - 确保退出登录按钮始终可见 */
@media (max-width: 600px) {
  .data-header-top-row > .top-cards-right {
    flex-wrap: wrap;
    gap: 4px;
  }

  /* 在极窄屏幕下，如果空间不够，让退出登录按钮换行显示 */
  #logoutBtnHeader {
    order: 5;
    flex: 0 0 auto;
    margin: 4px 0 0 0; /* 上边距，左边距为0 */
    align-self: flex-end; /* 靠右对齐 */
    width: 28px !important;
    min-width: 28px !important;
    max-width: 28px !important;
    padding: 3px 5px !important; /* 与极窄屏幕下token卡片相同的padding */
  }

  #logoutBtnHeader i {
    font-size: 11px !important;
  }

  #logoutBtnHeader:not(:has(i)):before {
    font-size: 12px !important;
  }

  /* 确保token卡片组在极窄屏幕下仍然紧凑 */
  .token-info-cards-group {
    gap: 1px;
    flex: 1 1 auto;
    min-width: 0;
  }

}

/* 隐藏数据调整中的"定义维度之间关系"组件 */
#dimensionRelationshipAccordion {
  display: none !important;
}

/* 会话类型选择器样式 */
.session-type-selector {
  background: #f8f9fa;
  border-radius: 8px;
  padding: 16px;
  border: 1px solid #e9ecef;
}

.session-type-selector .form-check {
  margin-bottom: 12px;
  padding: 12px;
  border-radius: 6px;
  border: 1px solid #dee2e6;
  background: white;
  transition: all 0.2s ease;
}

.session-type-selector .form-check:hover {
  border-color: #007bff;
  box-shadow: 0 2px 4px rgba(0,123,255,0.1);
}

.session-type-selector .form-check:last-child {
  margin-bottom: 0;
}

.session-type-selector .form-check-input:checked + .form-check-label {
  color: #007bff;
}

.session-type-selector .form-check-input:checked ~ * {
  border-color: #007bff;
}

.session-type-selector .form-check-label {
  cursor: pointer;
  width: 100%;
  margin-bottom: 0;
}

.session-type-selector .form-check-label strong {
  display: block;
  margin-bottom: 4px;
}

.session-type-selector .form-check-label small {
  font-size: 0.875rem;
  line-height: 1.3;
}

/* 模拟数据卡片容器额外样式 - 基础样式已在上面定义 */

/* 自定义滚动条样式 */
.simulation-card-container::-webkit-scrollbar {
  height: 6px;
}

.simulation-card-container::-webkit-scrollbar-track {
  background: #f7fafc;
  border-radius: 3px;
}

.simulation-card-container::-webkit-scrollbar-thumb {
  background: #cbd5e0;
  border-radius: 3px;
}

.simulation-card-container::-webkit-scrollbar-thumb:hover {
  background: #a0aec0;
}

/* 模拟数据卡片样式 */
.simulation-card {
  cursor: pointer;
  transition: all 0.2s ease;
  border: 2px solid transparent;
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #f8f9ff 0%, #ffffff 100%);
}

.simulation-card:hover {
  box-shadow: 0 4px 12px rgba(0,123,255,0.15);
  border-color: #007bff;
  background: linear-gradient(135deg, #f0f4ff 0%, #ffffff 100%);
}

.simulation-card:active {
  transform: translateY(0);
}

/* 模拟数据卡片标题文字样式 */
.simulation-card .token-info-title {
  color: #2c3e50 !important;
  font-weight: 600 !important;
  font-size: 12px !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.simulation-card:hover .token-info-title {
  color: #1a252f !important;
}

/* 模拟数据卡片描述文字样式 */
.simulation-card-desc {
  color: #5a6c7d !important;
  font-size: 10px !important;
  font-weight: 500 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.simulation-card:hover .simulation-card-desc {
  color: #495057 !important;
}

/* 模拟数据卡片图标颜色 */
.simulation-card .token-info-icon {
  font-size: 16px;
  display: inline-block;
  width: 20px;
  height: 20px;
  text-align: center;
  line-height: 20px;
}

/* 模拟数据卡片内部文字容器 */
.simulation-card .token-info-main {
  flex: 1;
  min-width: 0;
  overflow: hidden;
}

/* 各按钮图标颜色 */
.simulation-card.generate-card .token-info-icon {
  color: #007bff;
}

.simulation-card.history-card .token-info-icon {
  color: #6f42c1;
}

/* 充值代币卡片特殊样式 */
.simulation-card.recharge-card {
  background: linear-gradient(135deg, #f0fff4 0%, #ffffff 100%);
}

.simulation-card.recharge-card:hover {
  background: linear-gradient(135deg, #e8f5e8 0%, #ffffff 100%);
  border-color: #28a745;
}

.simulation-card.recharge-card .token-info-icon {
  color: #28a745;
}

/* EXCEL回填卡片特殊样式 */
.simulation-card.excel-card {
  background: linear-gradient(135deg, #fff8f0 0%, #ffffff 100%);
}

.simulation-card.excel-card:hover {
  background: linear-gradient(135deg, #ffeee0 0%, #ffffff 100%);
  border-color: #fd7e14;
}

.simulation-card.excel-card .token-info-icon {
  color: #fd7e14;
}

/* 必看教程卡片特殊样式 */
.simulation-card.tutorial-card {
  background: linear-gradient(135deg, #f0f8ff 0%, #ffffff 100%);
}

.simulation-card.tutorial-card:hover {
  background: linear-gradient(135deg, #e6f3ff 0%, #ffffff 100%);
  border-color: #17a2b8;
}

.simulation-card.tutorial-card .token-info-icon {
  color: #17a2b8;
}



/* 响应式设计 */
@media (max-width: 900px) {
  .simulation-card-container {
    /* 保持水平布局，允许横向滚动 */
    flex-direction: row;
    gap: 8px;
    padding-bottom: 8px; /* 为滚动条留出空间 */
  }

  /* 确保卡片在小屏幕上有最小宽度，不会被压缩 */
  .simulation-card {
    min-width: 110px;
    flex-shrink: 0;
  }
}

/* 聊天确认选项样式 */
.chat-options {
  padding: 8px 12px;
  background: #f8f9fa;
  border-radius: 8px;
  border: 1px solid #e9ecef;
}

.chat-options .form-check {
  margin-bottom: 0;
}

.chat-options .form-check-label {
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 6px;
}

.chat-options .form-check-label small {
  color: #6c757d;
  font-size: 13px;
  line-height: 1.4;
}

.chat-options .form-check-input {
  margin-top: 0;
  margin-right: 8px;
}

.chat-options .form-check-input:checked {
  background-color: #28a745;
  border-color: #28a745;
}

.chat-options .bi-info-circle {
  color: #17a2b8;
  font-size: 14px;
}

/* 代币充值按钮样式 */
.btn-success.btn-sm {
  background: linear-gradient(135deg, #28a745 0%, #20c997 100%);
  border: none;
  border-radius: 6px;
  font-weight: 500;
  transition: all 0.2s ease;
  box-shadow: 0 2px 4px rgba(40, 167, 69, 0.2);
}

.btn-success.btn-sm:hover {
  background: linear-gradient(135deg, #218838 0%, #1ea085 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 8px rgba(40, 167, 69, 0.3);
}

.btn-success.btn-sm:active {
  transform: translateY(0);
}

.btn-success.btn-sm .bi-credit-card {
  margin-right: 4px;
}

/* 卡片式信息块样式（更小更紧凑版） */
.token-info-card {
  background: #fafbfc;
  border-radius: 6px;
  box-shadow: 0 1px 3px rgba(0,0,0,0.04);
  padding: 4px 8px;
  display: flex;
  align-items: center;
  gap: 4px;
  margin-bottom: 4px;
  min-width: 95px;
  font-size: 11px;
  white-space: nowrap;
}
.token-info-icon {
  font-size: 14px;
  color: #1890ff;
  margin-right: 2px;
  flex-shrink: 0;
}
.token-info-main {
  display: flex;
  flex-direction: column;
  gap: 0px;
  flex: 1;
  min-width: 0;
}
.token-info-title {
  font-size: 10px;
  color: #888;
  font-weight: 500;
  margin-bottom: 0;
  line-height: 1.0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.token-info-value {
  font-size: 12px;
  color: #1890ff;
  font-weight: bold;
  line-height: 1.0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.token-info-value-green {
  color: #219653;
}
.token-info-value-black {
  color: #222;
}
.token-info-link {
  font-size: 13px;
  color: #1890ff;
  word-break: break-all;
  background: #f5f7fa;
  border-radius: 5px;
  padding: 2px 6px;
  margin-top: 2px;
  display: inline-block;
  text-decoration: none;
  transition: text-decoration 0.2s;
}
.token-info-link:hover {
  text-decoration: underline;
}
@media (max-width: 900px) {
  .token-info-card {
    padding: 3px 5px;
    min-width: 70px;
    gap: 2px;
    margin-bottom: 3px;
    border-radius: 5px;
  }
  .token-info-icon {
    font-size: 12px;
    margin-right: 1px;
  }
  .token-info-value {
    font-size: 10px;
  }
  .token-info-title {
    font-size: 9px;
  }
  .token-info-link {
    font-size: 9px;
    padding: 1px 2px;
  }
}

/* 顶部信息栏响应式美化 */
.top-info-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  align-items: center;
  margin-bottom: 8px;
  padding: 8px 0 0 0;
}
.token-info-group {
  display: flex;
  align-items: center;
  background: #f0f2f5;
  border-radius: 8px;
  padding: 4px 12px;
  font-size: 15px;
  margin: 0;
  min-width: 120px;
  white-space: nowrap;
}
.token-label {
  color: #1890ff;
  font-weight: bold;
  margin-right: 4px;
}
.token-value {
  color: #333;
  font-weight: bold;
  word-break: break-all;
}
@media (max-width: 900px) {
  .top-info-bar {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 4px 0 0 0;
  }
  .token-info-group {
    width: 100%;
    font-size: 13px;
    min-width: 0;
    margin: 0;
    padding: 4px 8px;
    border-radius: 6px;
  }
}

/* toolbar-left卡片横向排列，尽量一行展示 */
.toolbar-left {
  display: flex;
  gap: 12px;
  align-items: stretch;
  flex-wrap: nowrap;
  overflow: auto;
}
.toolbar-left > div {
  display: flex;
  gap: 8px;
  align-items: center;
}
@media (max-width: 700px) {
  .toolbar-left {
    flex-wrap: wrap;
    gap: 8px;
  }
  .toolbar-left > div {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
}

/* 自定义开关样式 */
.custom-switch-container {
  display: inline-block;
  position: relative;
}

.custom-switch-input {
  display: none;
}

.custom-switch-label {
  display: inline-block;
  width: 64px;
  height: 26px;
  background-color: #6c757d;
  border-radius: 13px;
  position: relative;
  cursor: pointer;
  transition: background-color 0.3s ease;
  overflow: hidden;
}

.custom-switch-input:checked + .custom-switch-label {
  background-color: #007bff;
}

.switch-text-positive,
.switch-text-negative {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  font-size: 13px;
  font-weight: 500;
  color: white;
  transition: opacity 0.3s ease;
  z-index: 1;
  white-space: nowrap;
}

.switch-text-positive {
  left: 10px;
  opacity: 0;
}

.switch-text-negative {
  right: 8px;
  opacity: 1;
}

.custom-switch-input:checked + .custom-switch-label .switch-text-positive {
  opacity: 1;
}

.custom-switch-input:checked + .custom-switch-label .switch-text-negative {
  opacity: 0;
}

.switch-slider {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 22px;
  height: 22px;
  background-color: white;
  border-radius: 50%;
  transition: transform 0.3s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
  z-index: 2;
}

.custom-switch-input:checked + .custom-switch-label .switch-slider {
  transform: translateX(38px);
}

/* 题目选择容器样式 */
.question-selector-container {
  max-height: 200px;
  overflow-y: auto;
  overflow-x: hidden;
}

/* 自定义滚动条样式 */
.question-selector-container::-webkit-scrollbar {
  width: 6px;
}

.question-selector-container::-webkit-scrollbar-track {
  background: #f1f1f1;
  border-radius: 3px;
}

.question-selector-container::-webkit-scrollbar-thumb {
  background: #c1c1c1;
  border-radius: 3px;
}

.question-selector-container::-webkit-scrollbar-thumb:hover {
  background: #a8a8a8;
}

/* 导出配置按钮样式 */
/* 基础导出配置按钮样式 */
.export-config-btn {
  position: absolute;
  background: rgba(0, 123, 255, 0.1);
  color: #007bff;
  border: 1px solid rgba(0, 123, 255, 0.2);
  border-radius: 4px;
  width: 24px;
  height: 24px;
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s ease;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}

/* system角色：按钮在消息内部右上角 */
.export-config-btn-inside {
  top: 8px;
  right: 8px;
}

/* assistant角色：按钮在聊天框外右上角的右边 */
.export-config-btn-outside {
  top: 8px;
  right: -32px;
}

.export-config-btn:hover {
  background: rgba(0, 123, 255, 0.2);
  color: #0056b3;
  transform: scale(1.1);
  border-color: rgba(0, 123, 255, 0.4);
}

.export-config-btn:active {
  transform: scale(0.95);
  background: rgba(0, 123, 255, 0.2);
}

.export-config-btn i {
  font-size: 14px;
  font-weight: normal;
  line-height: 1;
}

/* 确保消息容器有相对定位以便按钮绝对定位 */
.message.assistant {
  position: relative;
}

/* 调试：确保按钮可见 */
.export-config-btn {
  min-width: 24px !important;
  min-height: 24px !important;
}

/* 确保按钮始终可见 */
.message.assistant .export-config-btn {
  opacity: 1;
  transition: all 0.2s ease;
}

/* 响应式设计 - 在小屏幕上调整按钮大小 */
@media (max-width: 768px) {
  .export-config-btn {
    width: 20px;
    height: 20px;
    font-size: 12px;
  }

  .export-config-btn-inside {
    top: 6px;
    right: 6px;
  }

  .export-config-btn-outside {
    top: 6px;
    right: -28px;
  }

  .export-config-btn i {
    font-size: 12px;
  }

  /* 移动端调整assistant消息的右边距 */
  .message.assistant {
    margin-right: 35px;
  }
}

/* ========== 生成模拟数据配置弹框响应式优化 ========== */
/* 针对窄屏幕优化模态框显示 */
@media (max-width: 1200px) {
  /* 在中等屏幕上使用modal-lg而不是modal-xl */
  #simulationDataModal .modal-dialog {
    max-width: 90vw !important;
    margin: 1rem auto !important;
  }
}

@media (max-width: 768px) {
  /* 移动端优化 */
  #simulationDataModal .modal-dialog {
    max-width: 95vw !important;
    margin: 0.5rem auto !important;
    height: calc(100vh - 1rem) !important;
  }

  #simulationDataModal .modal-content {
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
  }

  #simulationDataModal .modal-body {
    flex: 1 !important;
    overflow-y: auto !important;
    padding: 1rem !important;
  }

  /* 移动端卡片间距优化 */
  #simulationDataModal .card {
    margin-bottom: 1rem !important;
  }

  #simulationDataModal .card-body {
    padding: 0.75rem !important;
  }

  /* 移动端按钮组优化 */
  #simulationDataModal .modal-footer {
    padding: 0.75rem !important;
    flex-wrap: wrap !important;
    gap: 0.5rem !important;
  }

  #simulationDataModal .modal-footer .btn {
    font-size: 0.875rem !important;
    padding: 0.5rem 0.75rem !important;
  }

  /* 移动端表单行优化 */
  #simulationDataModal .row {
    margin: 0 !important;
  }

  #simulationDataModal .col-md-6,
  #simulationDataModal .col-md-4,
  #simulationDataModal .col-md-3 {
    padding: 0 0.5rem !important;
    margin-bottom: 1rem !important;
  }
}

@media (max-width: 576px) {
  /* 超小屏幕优化 */
  #simulationDataModal .modal-dialog {
    max-width: 100vw !important;
    margin: 0 !important;
    height: 100vh !important;
  }

  #simulationDataModal .modal-content {
    border-radius: 0 !important;
    border: none !important;
  }

  #simulationDataModal .modal-header {
    padding: 0.75rem 1rem !important;
  }

  #simulationDataModal .modal-title {
    font-size: 1.1rem !important;
  }

  #simulationDataModal .modal-body {
    padding: 0.75rem !important;
  }

  #simulationDataModal .card-header h6 {
    font-size: 0.9rem !important;
  }

  /* 超小屏幕按钮优化 */
  #simulationDataModal .modal-footer {
    padding: 0.5rem !important;
  }

  #simulationDataModal .modal-footer .btn {
    font-size: 0.8rem !important;
    padding: 0.4rem 0.6rem !important;
    flex: 1 !important;
    min-width: 0 !important;
  }

  #simulationDataModal .modal-footer .text-muted {
    width: 100% !important;
    text-align: center !important;
    margin-bottom: 0.5rem !important;
    font-size: 0.75rem !important;
  }
}

/* 修复下拉框选项列表边框缺失问题 - 强制覆盖Bootstrap样式 */
/* 针对所有下拉框的通用样式 */
select,
select.form-select,
.form-select {
  border: 2px solid #e8e9ea !important;
  border-right: 2px solid #e8e9ea !important;
  border-left: 2px solid #e8e9ea !important;
  border-top: 2px solid #e8e9ea !important;
  border-bottom: 2px solid #e8e9ea !important;
  border-radius: 8px !important;
  background-color: #ffffff !important;
  box-sizing: border-box !important;
  outline: none !important;
  width: 100% !important;
}

/* 分析参数弹窗中的下拉框特殊样式 - 统一为自定义下拉框样式 */
#analysisParamModal select,
#analysisParamModal .form-select,
#analysisMethod,
#analysisFactors,
#mediationTypeSelect,
#moderationVariableType
 {
  width: 100% !important;
  padding: 12px 50px 12px 16px !important; /* 增加右侧padding为箭头留更多空间 */
  border: 2px solid #e8e9ea !important;
  border-radius: 8px !important;
  background-color: #ffffff !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  color: #333 !important;
  cursor: pointer !important;
  transition: all 0.3s ease !important;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02) !important;
  outline: none !important;
  display: flex !important;
  align-items: center !important;
  min-height: 44px !important;
  box-sizing: border-box !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
  /* 添加下拉箭头 */
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
  background-repeat: no-repeat !important;
  background-position: right 16px center !important;
  background-size: 16px 16px !important;
}



/* 分析参数弹窗中下拉框的悬停状态 */
#analysisParamModal select:hover,
#analysisParamModal .form-select:hover,
#analysisMethod:hover,
#analysisFactors:hover,
#mediationTypeSelect:hover,
#moderationVariableType:hover {
  border-color: #40a9ff !important;
  background-color: #fafbfc !important;
}

/* 分析参数弹窗中下拉框的聚焦状态 */
#analysisParamModal select:focus,
#analysisParamModal .form-select:focus,
#analysisMethod:focus,
#analysisFactors:focus,
#mediationTypeSelect:focus,
#moderationVariableType:focus {
  border-color: #1890ff !important;
  box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.1) !important;
  background-color: #fafbfc !important;
}



/* 下拉框悬停状态 */
#analysisParamModal select:hover,
#analysisParamModal .form-select:hover,
#analysisMethod:hover,
#analysisFactors:hover,
#mediationTypeSelect:hover,
select:hover,
.form-select:hover {
  border: 2px solid #40a9ff !important;
  border-right: 2px solid #40a9ff !important;
  border-left: 2px solid #40a9ff !important;
  border-top: 2px solid #40a9ff !important;
  border-bottom: 2px solid #40a9ff !important;
  background-color: #fafbfc !important;
}

/* 强制修复下拉框选项列表的边框 - 针对不同浏览器 */
/* Chrome/Safari */
select::-webkit-scrollbar {
  width: 8px;
}

select::-webkit-scrollbar-track {
  background: #f1f1f1;
  border-radius: 4px;
}

select::-webkit-scrollbar-thumb {
  background: #c1c1c1;
  border-radius: 4px;
}

/* 强制所有select元素都有边框 - 最高优先级 */
select,
select[multiple],
select[size],
.form-select,
select.form-select {
  border: 2px solid #e8e9ea !important;
  border-right: 2px solid #e8e9ea !important;
  border-left: 2px solid #e8e9ea !important;
  border-top: 2px solid #e8e9ea !important;
  border-bottom: 2px solid #e8e9ea !important;
  border-radius: 8px !important;
  background: #ffffff !important;
  box-sizing: border-box !important;
  width: 100% !important;
}

/* 高级设置选项卡启用状态样式 */
.accordion-button.accordion-enabled {
  background-color: #e6f7ff !important;
  color: #1890ff !important;
  border-left: 4px solid #1890ff !important;
  font-weight: 600 !important;
}

.accordion-button.accordion-enabled:hover {
  background-color: #d6f3ff !important;
  color: #096dd9 !important;
}

.accordion-button.accordion-enabled:focus {
  background-color: #e6f7ff !important;
  color: #1890ff !important;
  box-shadow: 0 0 0 0.25rem rgba(24, 144, 255, 0.25) !important;
}

/* 确保启用状态的选项卡图标也变色 */
.accordion-button.accordion-enabled i {
  color: #1890ff !important;
}



/* 针对Firefox的特殊处理 */
@-moz-document url-prefix() {
  select {
    border: 2px solid #e8e9ea !important;
    border-radius: 8px !important;
    background: #ffffff !important;
    box-sizing: border-box !important;
  }
}

/* ========== 数据分析参数设置布局 ========== */

/* 主容器布局 */
.analysis-params-container {
  display: flex !important;
  flex-direction: row !important;
  gap: 24px !important;
  height: 100% !important;
  min-height: 0 !important;
  min-width: 0 !important;
  flex: 1 1 0 !important;
}

/* 左侧分析类型区域 - 占1/4空间 */
.analysis-type-section {
  flex: 0 0 25% !important;
  min-width: 200px !important;
  max-width: 300px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
}

.analysis-type-section .form-label {
  font-weight: 600 !important;
  color: #2c3e50 !important;
  margin-bottom: 8px !important;
  font-size: 15px !important;
}

.analysis-type-section .form-select {
  height: auto !important;
  min-height: 44px !important;
}

/* ========== 自定义下拉组件样式 ========== */
/* 自定义下拉组件容器 */
.custom-select-container {
  position: relative;
  width: 100%;
  display: inline-block;
}

/* 自定义下拉框主体 */
.custom-select {
  width: 100%;
  padding: 12px 50px 12px 16px; /* 增加右侧padding为箭头留更多空间 */
  border: 2px solid #e8e9ea;
  border-radius: 8px;
  background-color: #ffffff;
  font-size: 14px;
  font-weight: 500;
  color: #333;
  cursor: pointer;
  user-select: none;
  transition: all 0.3s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02);
  position: relative;
  display: flex;
  align-items: center;
  min-height: 44px;
  box-sizing: border-box;
  /* 确保没有额外的背景图像 */
  background-image: none !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
}

/* 下拉箭头 */
.custom-select::after {
  content: '';
  width: 16px;
  height: 16px;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  transition: transform 0.3s ease;
  flex-shrink: 0;
  position: absolute;
  right: 16px; /* 箭头距离右边16px */
  top: 50%;
  transform: translateY(-50%);
}

/* 悬停和聚焦状态 */
.custom-select:hover,
.custom-select:focus {
  border-color: #40a9ff;
  background-color: #fafbfc;
  outline: none;
}

.custom-select:focus {
  border-color: #1890ff;
  box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.1);
}

/* 展开状态的箭头 */
.custom-select.open::after {
  transform: translateY(-50%) rotate(180deg);
}

/* 下拉选项列表 */
.custom-select-options {
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%; /* 设置选项列表宽度与下拉框一样宽 */
  /* 移除 max-height 和 overflow-y，让所有选项完整展示 */
  background: #ffffff;
  border: 2px solid #e8e9ea;
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  z-index: 1000;
  display: none;
  margin-top: 4px;
}

/* 显示选项列表 */
.custom-select-options.show {
  display: block;
}

/* 选项项目 */
.custom-select-option {
  padding: 10px 16px;
  cursor: pointer;
  transition: background-color 0.2s ease;
  font-size: 14px;
  color: #333;
  border-bottom: 1px solid #f0f0f0;
}

.custom-select-option:last-child {
  border-bottom: none;
}

.custom-select-option:hover {
  background-color: #f5f5f5;
}

.custom-select-option.selected {
  background-color: #e6f7ff;
  color: #1890ff;
  font-weight: 500;
}

/* ========== 生成模拟数据配置弹框下拉框样式 - 复用自定义下拉组件样式 ========== */
/* 让生成模拟数据配置弹框的select元素使用与自定义下拉组件完全相同的样式 */
#simulationDataModal select,
#simulationDataModal .form-select,
#scaleLevel,
.dimension-type,
.categorical-question-type,
.path-type,
.moderation-variable,
.moderated-path,
.moderation-direction,
.correlation-var1,
.correlation-var2,
.correlation-direction,
.path-source,
.path-target {
  /* 复用自定义下拉组件的所有样式属性 */
  width: 100% !important;
  padding: 12px 50px 12px 16px !important; /* 增加右侧padding为箭头留更多空间 */
  border: 2px solid #e8e9ea !important;
  border-radius: 8px !important;
  background-color: #ffffff !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  color: #333 !important;
  cursor: pointer !important;
  user-select: none !important;
  transition: all 0.3s ease !important;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02) !important;
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  min-height: 44px !important;
  box-sizing: border-box !important;
  outline: none !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
  /* 复用自定义下拉组件的箭头样式 */
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
  background-repeat: no-repeat !important;
  background-position: right 16px center !important;
  background-size: 16px 16px !important;
}

/* 复用自定义下拉组件的悬停和聚焦状态 */
#simulationDataModal select:hover,
#simulationDataModal .form-select:hover,
#scaleLevel:hover,
.dimension-type:hover,
.categorical-question-type:hover,
.path-type:hover,
.moderation-variable:hover,
.moderated-path:hover,
.moderation-direction:hover,
.correlation-var1:hover,
.correlation-var2:hover,
.correlation-direction:hover,
.path-source:hover,
.path-target:hover {
  border-color: #40a9ff !important;
  background-color: #fafbfc !important;
  outline: none !important;
}

#simulationDataModal select:focus,
#simulationDataModal .form-select:focus,
#scaleLevel:focus,
.dimension-type:focus,
.categorical-question-type:focus,
.path-type:focus,
.moderation-variable:focus,
.moderated-path:focus,
.moderation-direction:focus,
.correlation-var1:focus,
.correlation-var2:focus,
.correlation-direction:focus,
.path-source:focus,
.path-target:focus {
  border-color: #1890ff !important;
  box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.1) !important;
  background-color: #fafbfc !important;
  outline: none !important;
}

/* 滚动条样式已移除，因为选项列表现在完整展示所有选项 */

/* 中间变量设置区域 - 占1/2空间 */
.analysis-variables-section {
  flex: 1 1 50% !important;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
}

.analysis-variables-section #analysisDynamicParams {
  flex: 1 1 0 !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  padding-right: 8px !important;
}

/* 右侧额外参数区域 - 占1/4空间 */
.analysis-extra-section {
  flex: 0 0 25% !important;
  min-width: 200px !important;
  max-width: 300px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
}

.analysis-extra-section .form-label {
  font-weight: 600 !important;
  color: #2c3e50 !important;
  margin-bottom: 8px !important;
  font-size: 15px !important;
}

/* 额外参数容器样式 */
.analysis-extra-params {
  display: flex !important;
  flex-direction: column !important;
  gap: 16px !important;
}

.analysis-extra-params .mb-3 {
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
}

.analysis-extra-params .form-select {
  width: 100% !important;
  max-width: none !important;
}

.analysis-extra-params .mb-3 {
  margin-bottom: 16px !important;
}

.analysis-extra-params label {
  display: block !important;
  margin-bottom: 6px !important;
  font-weight: 600 !important;
  color: #2c3e50 !important;
}

.analysis-extra-params .form-text {
  font-size: 12px !important;
  color: #6c757d !important;
  margin-top: 4px !important;
}

/* 响应式布局调整 */
@media (max-width: 1200px) {
  .analysis-params-container {
    gap: 16px !important;
  }

  .analysis-type-section,
  .analysis-extra-section {
    min-width: 180px !important;
    max-width: 250px !important;
  }
}

@media (max-width: 992px) {
  .analysis-params-container {
    flex-direction: column !important;
    gap: 20px !important;
  }

  .analysis-type-section,
  .analysis-variables-section,
  .analysis-extra-section {
    min-width: 0 !important;
    max-width: none !important;
  }

  .analysis-variables-section #analysisDynamicParams {
    max-height: 400px !important;
  }
}

/* ========== 最终强制性下拉框边框修复 ========== */
/* 这个规则放在最后，确保覆盖所有其他样式 */
select,
.form-select,
select.form-select,
.analysis-extra-section select,
#analysisParamModal select,
#adjustmentParamModal select,
#versionSelect {
  /* 注意：#analysisType 已移除，因为它现在是自定义组件 */
  border: 2px solid #e8e9ea !important;
  border-right: 2px solid #e8e9ea !important;
  border-left: 2px solid #e8e9ea !important;
  border-top: 2px solid #e8e9ea !important;
  border-bottom: 2px solid #e8e9ea !important;
  border-radius: 8px !important;
  background-color: #ffffff !important;
  box-sizing: border-box !important;
  outline: none !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
  appearance: none !important;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
  background-position: right 12px center !important;
  background-repeat: no-repeat !important;
  background-size: 16px !important;
  padding-right: 40px !important;
}

/* 确保聚焦和悬停状态也有完整边框和下拉箭头 */
select:focus,
.form-select:focus,
select:hover,
.form-select:hover,
#versionSelect:focus,
#versionSelect:hover {
  /* 注意：#analysisType 已移除，因为它现在是自定义组件 */
  border: 2px solid #1890ff !important;
  border-right: 2px solid #1890ff !important;
  border-left: 2px solid #1890ff !important;
  border-top: 2px solid #1890ff !important;
  border-bottom: 2px solid #1890ff !important;
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%231890ff' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e") !important;
  background-position: right 12px center !important;
  background-repeat: no-repeat !important;
  background-size: 16px !important;
}

/* ========== 分析参数弹窗底部按钮样式 ========== */
/* 重置按钮样式 */
#resetAnalysisBtn {
  border: 2px solid #dc3545 !important;
  color: #dc3545 !important;
  background-color: transparent !important;
  font-weight: 500 !important;
  transition: all 0.3s ease !important;
}

#resetAnalysisBtn:hover {
  background-color: #dc3545 !important;
  color: #ffffff !important;
  border-color: #dc3545 !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 8px rgba(220, 53, 69, 0.3) !important;
}

#resetAnalysisBtn:active {
  transform: translateY(0) !important;
  box-shadow: 0 2px 4px rgba(220, 53, 69, 0.2) !important;
}

/* 确保弹窗底部按钮区域的布局 */
#analysisParamModal .modal-footer {
  padding: 16px 24px !important;
  border-top: 1px solid #e9ecef !important;
  background-color: #f8f9fa !important;
}

#analysisParamModal .modal-footer .d-flex {
  align-items: center !important;
}

/* 统一按钮高度和样式 */
#analysisParamModal .modal-footer .btn {
  height: 40px !important;
  padding: 8px 20px !important;
  font-weight: 500 !important;
  border-radius: 6px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  transition: all 0.3s ease !important;
}

/* ========== 调整参数容器基础样式 ========== */
.adjustment-params-container,
.adjustment-dimensions-container {
  min-height: 500px;
  border: 1px solid #dee2e6;
  border-radius: 8px;
  padding: 20px;
  display: flex;
  flex-direction: column;
}

.adjustment-params-container {
  background-color: #f8f9fa;
}

.adjustment-dimensions-container {
  background-color: #ffffff;
}

/* ========== 全局参数设置区域优化样式 ========== */
.adjustment-params-container .card {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  border: 1px solid #e3e6f0;
  border-radius: 0.5rem;
}

.adjustment-params-container .card-body {
  background-color: #ffffff;
}

.adjustment-params-container .form-control-lg {
  padding: 0.75rem 1rem;
  font-size: 1rem;
  border-radius: 0.375rem;
}

.adjustment-params-container .accordion-button {
  font-weight: 500;
  background-color: #f8f9fc;
  border: none;
  padding: 1rem 1.25rem;
}

.adjustment-params-container .accordion-button:not(.collapsed) {
  background-color: #e3e6f0;
  color: #5a5c69;
  box-shadow: none;
}

.adjustment-params-container .accordion-button:focus {
  box-shadow: 0 0 0 0.2rem rgba(78, 115, 223, 0.25);
}

.adjustment-params-container .accordion-body {
  background-color: #ffffff;
  padding: 1.25rem;
}

.adjustment-params-container .form-check-label.fw-semibold {
  color: #5a5c69;
  font-size: 0.95rem;
}

.adjustment-params-container .btn-sm {
  padding: 0.375rem 0.75rem;
  font-size: 0.875rem;
  border-radius: 0.25rem;
}

.adjustment-params-container .form-label.fw-semibold {
  color: #5a5c69;
  font-size: 0.95rem;
  margin-bottom: 0.5rem;
}

.adjustment-params-container .text-muted.fw-medium {
  font-weight: 500;
  color: #6c757d !important;
}

/* 画布相关样式已删除 */

/* 变量类型设置样式 */
.variable-type-settings {
  background-color: #f8f9fa;
  border-radius: 8px;
  padding: 15px;
  border: 1px solid #dee2e6;
  position: relative;
  z-index: 10;
}

/* 变量类型设置样式 */
.variable-type-settings {
  background-color: #f8f9fa;
  border-radius: 8px;
  padding: 20px;
  border: 1px solid #dee2e6;
  position: relative;
}

.effect-direction-switch {
  transform: scale(1.2);
}

.effect-direction-switch:checked {
  background-color: #28a745;
  border-color: #28a745;
}

.effect-direction-switch:not(:checked) {
  background-color: #dc3545;
  border-color: #dc3545;
}

/* 画布相关样式已删除 */

/* 不同类型连接线的样式 */
.connection-line[data-connection-type="direct"] {
  background-color: #007bff !important;
}

.connection-line[data-connection-type="mediated"] {
  background-color: #ffc107 !important;
  border-style: dashed;
}

.connection-line[data-connection-type="moderated"] {
  background-color: #dc3545 !important;
  border-style: dotted;
}

/* 画布工具栏 */
.canvas-toolbar {
  position: absolute;
  top: 10px;
  right: 10px;
  background: white;
  border: 1px solid #dee2e6;
  border-radius: 8px;
  padding: 8px;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.canvas-toolbar button {
  margin: 0 2px;
}

/* 连接编辑器样式 */
.target-variable-card {
  transition: all 0.2s ease;
  border: 2px solid transparent;
}

.target-variable-card:hover {
  border-color: #007bff;
  box-shadow: 0 2px 8px rgba(0, 123, 255, 0.2);
}

/* 差异顺序拖拽样式 - 简单清晰设计 */
.drag-sort-item {
  background: #ffffff;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  padding: 12px 16px;
  margin: 6px 0;
  cursor: grab;
  user-select: none;
  position: relative;
  transition: all 0.2s ease;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.drag-sort-item:hover {
  border-color: #3b82f6;
  box-shadow: 0 2px 8px rgba(59, 130, 246, 0.15);
  transform: translateY(-1px);
}

.drag-sort-item:active {
  cursor: grabbing;
}

/* 拖拽中的样式 */
.drag-sort-item.dragging {
  opacity: 0.8;
  transform: scale(1.02);
  box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
  z-index: 1000;
  border-color: #3b82f6;
  background: #f8fafc;
}

/* 拖拽目标区域样式 */
.drag-sort-item.drag-over {
  border-color: #10b981;
  background: #f0fdf4;
  box-shadow: 0 0 0 2px rgba(16, 185, 129, 0.2);
}

/* 拖拽指示线 */
.drag-sort-item.drag-above::before {
  content: '';
  position: absolute;
  top: -3px;
  left: 0;
  right: 0;
  height: 2px;
  background: #3b82f6;
  border-radius: 1px;
}

.drag-sort-item.drag-below::after {
  content: '';
  position: absolute;
  bottom: -3px;
  left: 0;
  right: 0;
  height: 2px;
  background: #3b82f6;
  border-radius: 1px;
}

/* 简化的占位符样式 */
.drag-placeholder {
  height: 50px;
  margin: 6px 0;
  border: 2px dashed #9ca3af;
  border-radius: 8px;
  background: #f9fafb;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s ease;
}

.drag-placeholder.active {
  border-color: #3b82f6;
  background: #eff6ff;
}

.placeholder-content {
  color: #6b7280;
  font-size: 13px;
  font-weight: 500;
}

.drag-placeholder.active .placeholder-content {
  color: #3b82f6;
}

/* 删除按钮对齐优化 */
.btn-outline-danger {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* 删除按钮容器对齐 */
.mt-4 {
  margin-top: 1.5rem !important;
}

/* 针对表单行中的删除按钮进行特殊对齐 */
.row .col-md-2 .mt-4,
.row .col-md-3 .mt-4 {
  margin-top: 2.1rem !important; /* 与表单标签高度对齐 */
}

/* 确保删除按钮与输入框高度一致 */
.card-body .row .btn-outline-danger {
  height: 38px !important;
  line-height: 1.2 !important;
}

/* 子维度删除按钮对齐 */
.sub-dimension-item .btn-outline-danger {
  margin-top: 0 !important;
  align-self: flex-end !important;
}

/* 定类题目选项删除按钮对齐 */
.categorical-option .btn-outline-danger {
  margin-top: 0 !important;
  height: 38px !important;
}

.target-variable-card .form-check-input:checked + .form-check-label {
  background-color: rgba(0, 123, 255, 0.1);
  border-radius: 4px;
}

.variable-type-indicator {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  display: inline-block;
}

.variable-type-indicator.variable-dependent {
  background-color: #1976d2;
}

.variable-type-indicator.variable-independent {
  background-color: #388e3c;
}

.variable-type-indicator.variable-mediator {
  background-color: #f57c00;
}

.variable-type-indicator.variable-moderator {
  background-color: #7b1fa2;
}

/* 变量类型单选按钮样式 */
.variable-type-radio-group {
  margin-bottom: 1rem;
}

.variable-type-btn {
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid;
  transition: all 0.2s ease;
  position: relative;
  font-weight: 600;
  font-size: 0.9rem;
}

.variable-type-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* 选中状态样式 */
.btn-check:checked + .btn-outline-primary {
  background-color: #1976d2;
  border-color: #1976d2;
  color: white;
}

.btn-check:checked + .btn-outline-success {
  background-color: #388e3c;
  border-color: #388e3c;
  color: white;
}

.btn-check:checked + .btn-outline-warning {
  background-color: #f57c00;
  border-color: #f57c00;
  color: white;
}

.btn-check:checked + .btn-outline-secondary {
  background-color: #7b1fa2;
  border-color: #7b1fa2;
  color: white;
}

/* 图标相关样式已移除 */

/* 会话列表动态加载相关样式 */
.session-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 20px;
  color: #666;
  font-size: 14px;
  text-align: center;
}

.loading-spinner {
  width: 20px;
  height: 20px;
  border: 2px solid #f3f3f3;
  border-top: 2px solid #007bff;
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin-bottom: 10px;
}



.session-no-more {
  padding: 15px;
  text-align: center;
  color: #6c757d;
  font-size: 13px;
}

/* 消息列表加载相关样式 */
.message-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 30px 20px;
  color: #666;
  font-size: 14px;
  text-align: center;
}

.message-loading .loading-spinner {
  width: 24px;
  height: 24px;
  border: 2px solid #f3f3f3;
  border-top: 2px solid #007bff;
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin-bottom: 12px;
}

.loading-more-messages {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 15px 20px;
  color: #666;
  font-size: 13px;
  text-align: center;
  border-bottom: 1px solid #eee;
}

.loading-more-messages .loading-spinner {
  width: 18px;
  height: 18px;
  border: 2px solid #f3f3f3;
  border-top: 2px solid #007bff;
  border-radius: 50%;
  animation: spin 1s linear infinite;
  margin-bottom: 8px;
}

.message-no-more {
  padding: 15px 20px;
  text-align: center;
  color: #6c757d;
  font-size: 13px;
  border-bottom: 1px solid #eee;
}