/* ============================================================
   全局视觉统一层 —— 三端共用同一套 design tokens
   只覆盖 Element Plus 主色与基础组件样式，不改动任何页面布局/DOM
   ============================================================ */
:root {
  /* 主色：iOS 系统蓝（统一 square/teacher/admin/register 主色调） */
  --el-color-primary: #007AFF;
  --el-color-primary-light-3: #3395FF;
  --el-color-primary-light-5: #66B0FF;
  --el-color-primary-light-7: #99CCFF;
  --el-color-primary-light-8: #B3D9FF;
  --el-color-primary-light-9: #E6F2FF;
  --el-color-primary-dark-2: #0066CC;

  /* 风险/状态色（全端统一：高危红 / 预警橙 / 正常绿） */
  --risk-high: #FF3B30;
  --risk-mid:  #FF9500;
  --risk-low:  #34C759;

  /* 圆角 */
  --radius-card: 16px;
  --radius-btn:  10px;
  --radius-input: 10px;

  /* 阴影 */
  --shadow-card: 0 2px 12px rgba(0,0,0,0.06);
  --shadow-hover: 0 8px 24px rgba(0,0,0,0.10);
}

/* ---- Element Plus 主色按钮跟随主色 ---- */
.el-button--primary {
  --el-button-bg-color: var(--el-color-primary);
  --el-button-border-color: var(--el-color-primary);
  --el-button-hover-bg-color: var(--el-color-primary-light-3);
  --el-button-hover-border-color: var(--el-color-primary-light-3);
  --el-button-active-bg-color: var(--el-color-primary-dark-2);
  --el-button-active-border-color: var(--el-color-primary-dark-2);
  --el-button-disabled-bg-color: var(--el-color-primary-light-5);
  --el-button-disabled-border-color: var(--el-color-primary-light-5);
}
.el-link.el-link--primary { --el-link-text-color: var(--el-color-primary); }
.el-switch.is-checked .el-switch__core { background-color: var(--el-color-primary) !important; border-color: var(--el-color-primary) !important; }
.el-radio-button__original-radio:checked + .el-radio-button__inner {
  background-color: var(--el-color-primary) !important;
  border-color: var(--el-color-primary) !important;
  box-shadow: -1px 0 0 0 var(--el-color-primary) !important;
}

/* ---- 统一分页选中色 ---- */
.el-pagination.is-background .el-pager li:not(.is-disabled).is-active {
  background-color: var(--el-color-primary) !important;
}

/* ---- 统一对话框圆角 ---- */
.el-dialog { border-radius: 18px !important; overflow: hidden; }
.el-dialog__header { border-bottom: 1px solid #f0f0f0; }

/* ---- 统一表格表头 ---- */
.el-table th.el-table__cell {
  background-color: #F9F9FB !important;
  color: #8E8E93 !important;
  font-weight: 500;
}
.el-table { border-radius: 10px; overflow: hidden; }
.el-table--border { border: 1px solid #ebeef5; }

/* ---- 统一输入框圆角 ---- */
.el-input__wrapper { border-radius: var(--radius-input); }

/* ---- 滚动条美化（桌面端） ---- */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #d0d0d5; border-radius: 8px; }
::-webkit-scrollbar-thumb:hover { background: #b0b0b5; }
::-webkit-scrollbar-track { background: transparent; }

/* ---- 空状态居中 ---- */
.el-empty { padding: 32px 0; }

/* ============================================================
   视觉质感升级层（纯 CSS，不动布局/DOM）
   ============================================================ */

/* 字体平滑 + 基础过渡 */
body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* 主色按钮：渐变 + 投影 + 按压反馈 */
.el-button--primary:not(.is-plain) {
  background: linear-gradient(135deg, #007AFF 0%, #0066CC 100%) !important;
  border: none !important;
  box-shadow: 0 4px 12px rgba(0, 122, 255, 0.28) !important;
  transition: transform 0.15s ease, box-shadow 0.2s ease, background 0.2s ease !important;
}
.el-button--primary:not(.is-plain):hover {
  background: linear-gradient(135deg, #3395FF 0%, #007AFF 100%) !important;
  box-shadow: 0 6px 18px rgba(0, 122, 255, 0.38) !important;
  transform: translateY(-1px);
}
.el-button--primary:not(.is-plain):active {
  transform: translateY(0);
  box-shadow: 0 2px 6px rgba(0, 122, 255, 0.2) !important;
}
.el-button--primary.is-disabled,
.el-button--primary.is-disabled:hover {
  background: linear-gradient(135deg, #99CCFF 0%, #66B0FF 100%) !important;
  box-shadow: none !important;
  transform: none !important;
}

/* 次按钮/默认按钮也加点过渡 */
.el-button { transition: all 0.18s ease !important; }
.el-button:not(.is-disabled):hover { transform: translateY(-1px); }

/* 输入框聚焦：发光环 */
.el-input__wrapper.is-focus,
.el-textarea__inner:focus {
  box-shadow: 0 0 0 3px rgba(0, 122, 255, 0.14) !important;
}

/* 链接hover */
.el-link { transition: opacity 0.2s ease; }
.el-link:hover { opacity: 0.85; }

/* Tag 微调：圆角 + 字重 */
.el-tag { border-radius: 8px !important; font-weight: 500; }

/* 卡片通用悬浮（各页面 .card 类自动受益，不影响布局） */
.card {
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

/* 对话框淡入增强 */
.el-dialog {
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s ease;
}

/* 选中态 radio-button 已在主色变量覆盖 */

/* 风险标签：保留 Element Plus 默认的 light 样式（浅色背景+深色文字，对比度好）
   用户上一轮反馈强行纯色背景会让文字看不清，故不再覆盖背景色，仅统一圆角/字重 */

/* 防止图片溢出 */
img { max-width: 100%; }

/* ---- 管理端数据卡/面板悬浮增强（admin 的 .stat-box / .card 自动受益） ---- */
.stat-box, .data-card, .chart-panel, .urgent-panel {
  transition: transform 0.22s ease, box-shadow 0.22s ease !important;
}
.stat-box:hover, .data-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 30px rgba(0,0,0,0.10) !important;
}
.chart-panel:hover, .urgent-panel:hover {
  box-shadow: 0 10px 26px rgba(0,0,0,0.08) !important;
}

/* 侧边栏菜单项过渡 + active 左侧高亮条（admin/teacher 通用，不动布局） */
.menu-item { position: relative; transition: background 0.2s ease, color 0.2s ease, padding-left 0.2s ease; }
.menu-item.active::before {
  content: '';
  position: absolute;
  left: 0; top: 20%; bottom: 20%;
  width: 3px;
  background: #fff;
  border-radius: 0 3px 3px 0;
}

/* 表格行 hover 更柔和 */
.el-table__body tr:hover > td { background-color: #F5F7FA !important; }
.el-table__row { transition: background 0.15s ease; }

/* 分页 hover */
.el-pagination.is-background .el-pager li:hover { color: var(--el-color-primary); }


