/* ===== 全局基础 ===== */
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  font-family: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", sans-serif;
  background: #FAF6F0;
  color: #3D2B1F;
  overflow-x: hidden;
  font-size: 15px;
}

/* ===== 顶部导航 ===== */
.navbar {
  position: fixed; top: 0; left: 0; right: 0; z-index: 100;
  background: rgba(250,246,240,0.95);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid #E8DDD0;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 40px; height: 60px;
}
.navbar .nav-links {
  position: absolute; left: 50%; transform: translateX(-50%);
  display: flex; gap: 6px;
}
.nav-brand {
  display: flex; align-items: center; gap: 12px;
  font-size: 15px; font-weight: 700; color: #5B3A29;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
}
.nav-brand .icon {
  width: 32px; height: 32px; border-radius: 8px;
  background: linear-gradient(135deg, #C4956A, #8B5E3C);
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 16px; font-weight: 900;
}
.nav-brand .fosu-logo {
  height: 38px; width: auto; display: block;
}
.nav-brand .nav-brand-divider {
  width: 1px; height: 24px; background: #C4956A; opacity: 0.45;
  margin: 0 2px;
}
.nav-links { display: flex; gap: 6px; }
.nav-links a {
  text-decoration: none; color: #6B5344; font-size: 15px;
  padding: 6px 14px; border-radius: 20px;
  transition: all 0.2s;
}
.nav-links a:hover, .nav-links a.active {
  background: #C4956A; color: #fff;
}
.nav-user {
  display: flex; align-items: center; gap: 10px;
  font-size: 15px; color: #8B7355;
}
.nav-avatar {
  width: 30px; height: 30px; border-radius: 50%;
  background: #E8DDD0; display: flex; align-items: center; justify-content: center;
  font-size: 14px;
}

/* ===== 页面容器 ===== */
.page { display: none; }
.page.active { display: block; }
.page-mentor.active { display: block; }

/* ===== 通用Toast ===== */
#toast {
  display: none; position: fixed; top: 70px; left: 50%; transform: translateX(-50%);
  background: #3D2B1F; color: #fff; padding: 10px 24px; border-radius: 12px;
  font-size: 15px; z-index: 9999; box-shadow: 0 4px 20px rgba(0,0,0,0.15);
}

/* ===== 通用Footer ===== */
.spa-footer {
  text-align: center; font-size: 15px; color: #B8A08A;
  padding: 20px 40px 40px;
}
.spa-footer-divider { height: 1px; background: #EDE3D6; margin-bottom: 20px; }

/* ===== 通用悬浮AI ===== */
.ai-float {
  position: fixed; bottom: 28px; right: 28px; z-index: 200;
  cursor: pointer; transition: transform 0.3s;
}
.ai-float:hover { transform: scale(1.08); }
.ai-float-img {
  width: 80px; height: 80px;
  filter: drop-shadow(0 4px 12px rgba(0,0,0,0.25));
}

/* ===== 通用AI对话模态框 ===== */
/* ===== AI对话模态框 - 大对话框风格（参考设计图） ===== */
.modal-overlay {
  display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.4); z-index: 300;
  align-items: center; justify-content: center;
}
.modal-overlay.show { display: flex; }
.modal-box {
  background: #FFFEFB; border-radius: 20px; padding: 0;
  max-width: 580px; width: 94%; max-height: 88vh;
  box-shadow: 0 20px 60px rgba(40,20,5,0.22), 0 0 0 1px rgba(200,180,155,0.15);
  display: flex; flex-direction: column; overflow: hidden;
}
.modal-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 22px; background: #F8F4EE;
  border-bottom: none; flex-shrink: 0;
}
.modal-header-left { display: flex; align-items: center; gap: 12px; }
.modal-header-avatar {
  width: 40px; height: 40px; border-radius: 12px;
  object-fit: cover; border: none;
  background: #E8DDD0;
}
.modal-header-info h3 { font-size: 15px; font-weight: 700; color: #1A1A1A; margin: 0; }
.modal-header-info p { font-size: 15px; color: #999; margin-top: 1px; }
.modal-online-badge {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 14px; color: #52c41a; font-weight: 500; margin-top: 2px;
}
.modal-online-dot {
  width: 6px; height: 6px; border-radius: 50%; background: #52c41a;
  display: inline-block; animation: pulse-dot 1.5s infinite;
}
@keyframes pulse-dot {
  0%, 100% { opacity: 1; } 50% { opacity: 0.4; }
}
.modal-header-actions { display: flex; gap: 8px; }
.modal-header-actions button {
  width: 32px; height: 32px; border-radius: 8px;
  background: #EDE5DA; border: none; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.2s; padding: 0;
}
.modal-header-actions button:hover { background: #DED3C4; }
.modal-header-actions button svg { width: 16px; height: 16px; fill: #8B7355; }

.modal-body {
  padding: 32px 28px 24px; flex: 1; overflow-y: auto;
  display: flex; flex-direction: column; align-items: center;
  background: #FFFEFB;
}
.modal-ai-avatar {
  width: 88px; height: 88px; border-radius: 50%;
  object-fit: cover; margin-bottom: 16px;
  border: 3px solid #F0E8DD; box-shadow: 0 6px 24px rgba(0,0,0,0.08);
}
.modal-greeting { font-size: 20px; font-weight: 700; color: #1A1A1A; margin-bottom: 8px; }
.modal-desc {
  font-size: 15px; color: #888; line-height: 1.9; text-align: center;
  max-width: 400px; margin-bottom: 26px;
}
.modal-questions { width: 100%; display: flex; flex-direction: column; gap: 10px; }
.modal-q-btn {
  display: flex; align-items: center; gap: 12px;
  background: #F9F4ED; border: 1px solid #EDE3D6;
  padding: 13px 18px; border-radius: 12px; cursor: pointer;
  transition: all 0.2s; width: 100%; text-align: left;
}
.modal-q-btn:hover { background: #F2EBE0; border-color: #D4B896; transform: translateY(-1px); }
.modal-q-icon { font-size: 18px; flex-shrink: 0; width: 24px; text-align: center; }
.modal-q-text { font-size: 15px; color: #3D2B1F; line-height: 1.5; }

.modal-footer {
  padding: 16px 22px 20px; background: #FFFEFB;
  border-top: none; flex-shrink: 0;
}
.modal-input-row {
  display: flex; align-items: center; gap: 8px;
  background: #F5EDE3; border-radius: 14px; padding: 8px 8px 8px 18px;
}
.modal-input {
  flex: 1; border: none; background: transparent;
  font-size: 15px; outline: none; color: #3D2B1F;
  padding: 6px 0;
}
.modal-input::placeholder { color: #B8A08A; }
.modal-input-actions { display: flex; gap: 6px; align-items: center; }
.modal-act-btn {
  background: #FDE8E0; border: none; border-radius: 8px;
  padding: 6px 12px; font-size: 15px; color: #C47A5A;
  cursor: pointer; transition: all 0.2s; white-space: nowrap;
  font-weight: 500;
}
.modal-act-btn:hover { background: #F8D8CC; }
.modal-send-btn {
  background: #A07850; border: none; border-radius: 10px;
  width: 36px; height: 36px; cursor: pointer; transition: background 0.2s;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.modal-send-btn:hover { background: #8A6642; }
.modal-send-btn svg { width: 18px; height: 18px; fill: #fff; }

/* ============================================ */
/* ===== 首页样式 ===== */
/* ============================================ */

  * { margin: 0; padding: 0; box-sizing: border-box; }
  /* duplicate body rule - already defined globally */

  /* ===== Hero Banner ===== */
  .hero {
    margin-top: 60px;
    background: linear-gradient(135deg, #F5E6D3 0%, #E8D5C0 50%, #DCC4A8 100%);
    padding: 60px 40px 50px;
    position: relative; overflow: hidden;
  }
  .hero::before {
    content: ''; position: absolute; top: -50px; right: -50px;
    width: 300px; height: 300px; border-radius: 50%;
    background: rgba(196,149,106,0.15);
  }
  .hero::after {
    content: ''; position: absolute; bottom: -80px; left: -30px;
    width: 200px; height: 200px; border-radius: 50%;
    background: rgba(139,94,60,0.08);
  }
  .hero-content { max-width: 1100px; margin: 0 auto; position: relative; z-index: 1; }
  .hero h1 {
    font-size: 28px; font-weight: 800; color: #3D2B1F;
    margin-bottom: 12px; line-height: 1.4;
  }
  .hero h1 span { color: #8B5E3C; }
  .hero p {
    font-size: 14px; color: #6B5344; line-height: 1.8;
    max-width: 700px; margin-bottom: 24px;
  }
  .hero-tags { display: flex; gap: 10px; flex-wrap: wrap; }
  .hero-tag {
    background: rgba(255,255,255,0.6); border: 1px solid #D4B896;
    padding: 6px 16px; border-radius: 20px; font-size: 14px; color: #5B3A29;
    cursor: pointer; transition: all 0.2s;
  }
  .hero-tag:hover { background: #C4956A; color: #fff; border-color: #C4956A; }

  /* ===== 五大中心入口 ===== */
  .centers {
    max-width: 1100px; margin: -30px auto 0; padding: 0 40px;
    position: relative; z-index: 10;
  }
  .centers-grid {
    display: grid; grid-template-columns: repeat(5, 1fr); gap: 16px;
  }
  .center-card {
    background: #fff; border-radius: 16px;
    padding: 24px 18px; text-align: center;
    box-shadow: 0 4px 20px rgba(93,60,35,0.08);
    border: 1px solid #EDE3D6;
    cursor: pointer; transition: all 0.3s;
    position: relative; overflow: hidden;
  }
  .center-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 8px 30px rgba(93,60,35,0.15);
  }
  .center-card::after {
    content: ''; position: absolute; bottom: 0; left: 0; right: 0;
    height: 3px; border-radius: 0 0 16px 16px;
  }
  .center-card:nth-child(1)::after { background: #C4956A; }
  .center-card:nth-child(2)::after { background: #7BA7BC; }
  .center-card:nth-child(3)::after { background: #8B6B4A; }
  .center-card:nth-child(4)::after { background: #6B8E6B; }
  .center-card:nth-child(5)::after { background: #B8706A; }
  .center-icon {
    width: 52px; height: 52px; border-radius: 14px;
    margin: 0 auto 14px; display: flex;
    align-items: center; justify-content: center;
    font-size: 24px;
  }
  .center-card:nth-child(1) .center-icon { background: #F5E6D3; }
  .center-card:nth-child(2) .center-icon { background: #DAE8EF; }
  .center-card:nth-child(3) .center-icon { background: #EDE3D6; }
  .center-card:nth-child(4) .center-icon { background: #DAE5DA; }
  .center-card:nth-child(5) .center-icon { background: #F0DAD7; }
  .center-card h3 {
    font-size: 14px; font-weight: 700; color: #3D2B1F; margin-bottom: 6px;
  }
  .center-card p {
    font-size: 15px; color: #8B7355; line-height: 1.5;
  }
  .center-arrow {
    margin-top: 10px; font-size: 15px; color: #C4956A;
    opacity: 0; transition: opacity 0.2s;
  }
  .center-card:hover .center-arrow { opacity: 1; }

  /* ===== 主体内容区 ===== */
  

  /* 左栏 */
  .left-col { display: flex; flex-direction: column; gap: 24px; }

  /* 精神浸润 排版 */
  

  .section-card {
    background: #fff; border-radius: 16px; padding: 24px;
    box-shadow: 0 2px 12px rgba(93,60,35,0.06);
    border: 1px solid #EDE3D6;
  }
  .section-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 18px;
  }
  .section-title {
    font-size: 15px; font-weight: 700; color: #3D2B1F;
    display: flex; align-items: center; gap: 8px;
  }
  .section-title .dot {
    width: 6px; height: 6px; border-radius: 50%; background: #C4956A;
  }
  .section-more {
    font-size: 15px; color: #C4956A; cursor: pointer;
    text-decoration: none;
  }
  .section-more:hover { text-decoration: underline; }

  /* 子栏目列表 */
  
  
  
  
  
  
  
  
  
  

  /* 右栏 */
  .right-col { display: flex; flex-direction: column; gap: 24px; }

  /* 师说新语 AI */
  
  
  
  
  
  
  

  
  
  
  
  
  
  
  
  

  /* 赛事动态 */
  
  
  
  
  
  
  
  

  /* ===== 实践成长中心 - 全宽 ===== */
  
  
  
  
  
  
  
  
  
  
  
  
  

  /* ===== 佛山市教师发展联盟 ===== */
  
  
  
  
  
  
  
  

  /* ===== 底部 ===== */
  .footer {
    max-width: 1100px; margin: 40px auto 0; padding: 0 40px 40px;
    text-align: center; font-size: 15px; color: #B8A08A;
  }
  .footer-divider {
    height: 1px; background: #EDE3D6; margin-bottom: 20px;
  }

  /* ===== AI 悬浮按钮 ===== */
  /* uses global ai-float style */
  }
  .ai-float-label {
    position: fixed; bottom: 30px; right: 94px; z-index: 200;
    background: #fff; padding: 6px 14px; border-radius: 8px;
    font-size: 14px; color: #5B3A29;
    box-shadow: 0 2px 12px rgba(0,0,0,0.1);
    opacity: 0; transition: opacity 0.3s; pointer-events: none;
  }
  .ai-float:hover + .ai-float-label { opacity: 1; }

  /* 模态框样式使用全局定义 */

/* ============================================ */
/* ===== 精神浸润中心样式 ===== */
/* ============================================ */

* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  font-family: "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", sans-serif;
  background: #FAF6F0; color: #3D2B1F; overflow-x: hidden;
}

/* ===== Hero Banner ===== */
.hero {
  margin-top: 56px;
  background: linear-gradient(135deg, #F5E6D3 0%, #EDE3D6 50%, #DCC4A8 100%);
  padding: 48px 40px 42px; position: relative; overflow: hidden;
}
.hero::before {
  content: ''; position: absolute; top: -60px; right: -40px;
  width: 260px; height: 260px; border-radius: 50%;
  background: rgba(196,149,106,0.12);
}
.hero::after {
  content: ''; position: absolute; bottom: -50px; left: 20%;
  width: 180px; height: 180px; border-radius: 50%;
  background: rgba(139,94,60,0.06);
}
.hero-inner { max-width: 1100px; margin: 0 auto; position: relative; z-index: 1; }
.hero-badge {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(255,255,255,0.6); padding: 4px 14px;
  border-radius: 16px; font-size: 15px; color: #8B5E3C;
  border: 1px solid rgba(212,184,150,0.5); margin-bottom: 14px;
}
.hero h1 { font-size: 26px; font-weight: 800; color: #3D2B1F; margin-bottom: 10px; }
.hero h1 span { color: #8B5E3C; }
.hero p { font-size: 15px; color: #6B5344; line-height: 1.8; max-width: 680px; }
.hero-stats {
  display: flex; gap: 28px; margin-top: 20px;
}
.hero-stat {
  display: flex; align-items: center; gap: 8px;
}
.hero-stat-icon {
  width: 40px; height: 40px; border-radius: 12px;
  background: rgba(255,255,255,0.5); display: flex;
  align-items: center; justify-content: center; font-size: 20px;
}
.hero-stat-num { font-size: 18px; font-weight: 800; color: #3D2B1F; }
.hero-stat-label { font-size: 14px; color: #8B7355; }

/* ===== 主内容区 ===== */
.main { max-width: 1100px; margin: 0 auto; padding: 32px 40px 40px; }

/* 三大模块横排 */
.trio { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-bottom: 32px; }
.trio-card {
  background: #fff; border-radius: 18px; overflow: hidden;
  box-shadow: 0 4px 20px rgba(93,60,35,0.08); border: 1px solid #EDE3D6;
  cursor: pointer; transition: all 0.3s;
}
.trio-card:hover { transform: translateY(-4px); box-shadow: 0 8px 32px rgba(93,60,35,0.14); }
.trio-card-top {
  padding: 22px 22px 0; display: flex; align-items: flex-start; gap: 14px;
}
.trio-icon {
  width: 48px; height: 48px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 24px; flex-shrink: 0;
}
.trio-card:nth-child(1) .trio-icon { background: #F5E6D3; }
.trio-card:nth-child(2) .trio-icon { background: #DAE8EF; }
.trio-card:nth-child(3) .trio-icon { background: #DAE5DA; }
.trio-card-top h3 { font-size: 16px; font-weight: 700; color: #3D2B1F; margin-bottom: 3px; }
.trio-card-top p { font-size: 15px; color: #8B7355; line-height: 1.5; }
.trio-card-body { padding: 16px 22px 22px; word-break: keep-all; overflow-wrap: break-word; }
.trio-list { list-style: none; }
.trio-list li {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 8px 0; border-bottom: 1px solid #F5EDE3;
  word-break: keep-all; overflow-wrap: break-word; line-height: 1.7;
  font-size: 15px; color: #3D2B1F; line-height: 1.6;
}
.trio-list li:last-child { border-bottom: none; }
.trio-list .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: #C4956A; flex-shrink: 0; margin-top: 6px;
}
.trio-card:nth-child(2) .trio-list .dot { background: #7BA7BC; }
.trio-card:nth-child(3) .trio-list .dot { background: #6B8E6B; }
.trio-arrow {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 15px; color: #C4956A; margin-top: 10px;
  font-weight: 600; cursor: pointer;
}
.trio-arrow:hover { color: #8B5E3C; }

/* ===== VR专题展馆 ===== */
.section-card {
  background: #fff; border-radius: 16px; padding: 24px;
  box-shadow: 0 2px 12px rgba(93,60,35,0.06); border: 1px solid #EDE3D6;
  margin-bottom: 24px;
}
.section-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 18px;
}
.section-title {
  font-size: 15px; font-weight: 700; color: #3D2B1F;
  display: flex; align-items: center; gap: 8px;
}
.section-title .dot { width: 6px; height: 6px; border-radius: 50%; background: #C4956A; }
.section-more { font-size: 15px; color: #C4956A; cursor: pointer; }
.section-more:hover { text-decoration: underline; }

/* VR展馆卡片 */
.vr-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.vr-card {
  border-radius: 16px; overflow: hidden;
  border: 1px solid #EDE3D6; cursor: pointer; transition: all 0.3s;
}
.vr-card:hover { border-color: #C4956A; transform: translateY(-2px); box-shadow: 0 4px 16px rgba(196,149,106,0.12); }
.vr-card-banner {
  height: 120px; display: flex; align-items: center; justify-content: center;
  position: relative; overflow: hidden;
}
.vr-card:nth-child(1) .vr-card-banner { background: linear-gradient(135deg, #F5E6D3, #E8D5C0); }
.vr-card:nth-child(2) .vr-card-banner { background: linear-gradient(135deg, #DAE8EF, #C8DAE6); }
.vr-card:nth-child(3) .vr-card-banner { background: linear-gradient(135deg, #DAE5DA, #C8D8C8); }
.vr-banner-icon { font-size: 42px; position: relative; z-index: 1; }
.vr-banner-pattern {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  opacity: 0.15;
}
.vr-card:nth-child(1) .vr-banner-pattern { background: repeating-linear-gradient(45deg, transparent, transparent 10px, #8B5E3C 10px, #8B5E3C 11px); }
.vr-card:nth-child(2) .vr-banner-pattern { background: repeating-linear-gradient(-45deg, transparent, transparent 10px, #4A7A8F 10px, #4A7A8F 11px); }
.vr-card:nth-child(3) .vr-banner-pattern { background: repeating-linear-gradient(45deg, transparent, transparent 10px, #4A7A4A 10px, #4A7A4A 11px); }
.vr-badge {
  position: absolute; top: 10px; left: 10px;
  background: rgba(255,255,255,0.85); backdrop-filter: blur(4px);
  padding: 3px 10px; border-radius: 8px; font-size: 9px;
  font-weight: 600; color: #5B3A29;
}
.vr-card-body { padding: 16px; }
.vr-card-body h4 { font-size: 14px; font-weight: 700; color: #3D2B1F; margin-bottom: 6px; }
.vr-card-body p { font-size: 15px; color: #8B7355; line-height: 1.6; margin-bottom: 10px; }
.vr-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.vr-tag {
  font-size: 9px; padding: 3px 10px; border-radius: 10px;
  background: #FAF6F0; border: 1px solid #EDE3D6; color: #5B3A29;
}
.vr-enter {
  display: inline-flex; align-items: center; gap: 4px;
  margin-top: 10px; padding: 6px 16px; border-radius: 16px;
  background: #C4956A; color: #fff; font-size: 15px; font-weight: 600;
  border: none; cursor: pointer; transition: all 0.2s;
}
.vr-enter:hover { background: #8B5E3C; }


/* ===== 读经典·做明师 ===== */
.reading-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.reading-flow {
  padding: 20px; border-radius: 14px;
  border: 1px solid #EDE3D6; background: #FAF6F0;
}
.reading-flow-title { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 14px; text-align: center; }
.reading-steps { display: flex; flex-direction: column; gap: 8px; }
.reading-step {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; border-radius: 10px;
  background: #fff; border: 1px solid #EDE3D6;
  cursor: pointer; transition: all 0.2s;
}
.reading-step:hover { border-color: #C4956A; }
.reading-step.active { border-color: #C4956A; background: #FDF9F5; }
.reading-step.done { border-color: #6B8E6B; background: #F8FBF8; }
.reading-step-num {
  width: 24px; height: 24px; border-radius: 50%;
  background: #C4956A; color: #fff; font-size: 15px;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; flex-shrink: 0;
}
.reading-step.done .reading-step-num { background: #6B8E6B; }
.reading-step-name { font-size: 14px; font-weight: 600; color: #3D2B1F; }
.reading-step-desc { font-size: 9px; color: #8B7355; }

.reading-books {
  padding: 20px; border-radius: 14px;
  border: 1px solid #EDE3D6; overflow: hidden;
}
.reading-books-title { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 14px; }
.book-scroll-wrapper {
  position: relative; overflow: hidden;
  padding: 20px 0;
}
.book-scroll-track {
  display: flex; gap: 20px;
  animation: bookScroll 30s linear infinite;
  width: max-content;
}
.book-scroll-track:hover { animation-play-state: paused; }
@keyframes bookScroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.book-shelf-item {
  flex-shrink: 0; cursor: pointer;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  position: relative;
}
.book-shelf-item:hover {
  transform: scale(1.18) translateY(-8px);
  z-index: 10;
}
.book-shelf-item:hover .book-shelf-name { opacity: 1; }
.book-shelf-cover {
  width: 100px; height: 140px; border-radius: 6px;
  box-shadow: 0 4px 16px rgba(93,60,35,0.18), 2px 2px 6px rgba(0,0,0,0.08);
  object-fit: cover; display: block;
  transition: box-shadow 0.3s ease;
}
.book-shelf-item:hover .book-shelf-cover {
  box-shadow: 0 8px 28px rgba(93,60,35,0.28), 3px 3px 10px rgba(0,0,0,0.12);
}
.book-shelf-name {
  text-align: center; font-size: 15px; font-weight: 600;
  color: #3D2B1F; margin-top: 8px; line-height: 1.3;
  max-width: 100px; opacity: 0.85;
  transition: opacity 0.3s;
}
.book-shelf-author {
  text-align: center; font-size: 9px; color: #8B7355;
  margin-top: 2px; max-width: 100px;
}



/* ===== 专家讲堂 ===== */
.lecture-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 16px; }
.lecture-featured {
  border-radius: 14px; overflow: hidden; position: relative;
  height: 220px; cursor: pointer;
}
.lecture-featured-bg {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: linear-gradient(135deg, #5B3A29, #3D2B1F);
}
.lecture-featured-content {
  position: relative; z-index: 1; padding: 24px;
  height: 100%; display: flex; flex-direction: column; justify-content: flex-end;
}
.lecture-live-badge {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(184,112,106,0.8); padding: 3px 10px;
  border-radius: 8px; font-size: 9px; color: #fff; font-weight: 600;
  margin-bottom: 10px; width: fit-content;
}
.lecture-live-badge @keyframes blink { 0%,100%{opacity:1} 50%{opacity:0.3} }
.lecture-featured-content h3 { font-size: 17px; font-weight: 700; color: #fff; margin-bottom: 4px; }
.lecture-featured-content p { font-size: 15px; color: #B8A08A; }
.lecture-featured-btn {
  margin-top: 12px; padding: 7px 18px; border-radius: 16px;
  background: #C4956A; color: #fff; border: none; font-size: 15px;
  font-weight: 600; cursor: pointer; width: fit-content;
}
.lecture-featured-btn:hover { background: #D4A57A; }

.lecture-list { display: flex; flex-direction: column; gap: 8px; }
.lecture-item {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; border-radius: 10px;
  border: 1px solid #EDE3D6; cursor: pointer; transition: all 0.2s;
}
.lecture-item:hover { border-color: #C4956A; background: #FDF9F5; }
.lecture-item-av {
  width: 34px; height: 34px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; flex-shrink: 0;
}
.lecture-item:nth-child(1) .lecture-item-av { background: #F5E6D3; }
.lecture-item:nth-child(2) .lecture-item-av { background: #DAE8EF; }
.lecture-item:nth-child(3) .lecture-item-av { background: #DAE5DA; }
.lecture-item:nth-child(4) .lecture-item-av { background: #EDE3D6; }
.lecture-item-info { flex: 1; }
.lecture-item-title { font-size: 15px; font-weight: 600; color: #3D2B1F; }
.lecture-item-meta { font-size: 9px; color: #8B7355; margin-top: 1px; }
.lecture-item-tag {
  font-size: 8px; padding: 2px 6px; border-radius: 6px;
  background: #DAE5DA; color: #4A7A4A; flex-shrink: 0;
}
.lecture-item-tag.new { background: #F0DAD7; color: #8B5E3C; }

/* ===== 底部 ===== */
.footer {
  max-width: 1100px; margin: 0 auto; padding: 0 40px 36px;
  text-align: center; font-size: 14px; color: #B8A08A;
}
.footer-divider { height: 1px; background: #EDE3D6; margin-bottom: 18px; }

/* ===== 悬浮AI ===== */
/* uses global ai-float style */

/* Toast */
#toast {
  display: none; position: fixed; top: 70px; left: 50%; transform: translateX(-50%);
  background: #3D2B1F; color: #fff; padding: 10px 24px; border-radius: 12px;
  font-size: 15px; z-index: 9999; box-shadow: 0 4px 20px rgba(0,0,0,0.15);
}

/* ============================================ */
/* ===== 名师领航中心样式 ===== */
/* ============================================ */

  * { margin: 0; padding: 0; box-sizing: border-box; }
  /* mentor body flex - neutralized in SPA context */
  body.spa-mentor-override {
    display: flex; height: 100vh;
  }

  /* ===== 左侧导航栏 ===== */
  .sidebar {
    width: 80px; background: linear-gradient(180deg, #5B3A29, #3D2B1F);
    display: flex; flex-direction: column; align-items: center;
    padding: 20px 0; gap: 6px; flex-shrink: 0;
    position: relative; overflow: hidden;
  }
  .sidebar::before {
    content: ''; position: absolute; bottom: -30px; left: -30px;
    width: 120px; height: 120px; border-radius: 50%;
    background: rgba(196,149,106,0.08);
  }
  
  
  
  
  
  
  
  
  
  

  /* ===== 右侧主区域 ===== */
  .main-area {
    flex: 1; display: flex; flex-direction: column;
    overflow-y: auto; overflow-x: hidden;
  }

  /* ===== 顶部栏 ===== */
  .topbar {
    height: 56px; background: rgba(250,246,240,0.95);
    backdrop-filter: blur(10px);
    border-bottom: 1px solid #E8DDD0;
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 32px; flex-shrink: 0;
  }
  .topbar-left { display: flex; align-items: center; gap: 12px; }
  .topbar-title { font-size: 15px; font-weight: 700; color: #5B3A29; }
  .topbar-sub { font-size: 14px; color: #8B7355; }
  .topbar-right { display: flex; align-items: center; gap: 12px; }
  .topbar-btn {
    padding: 6px 16px; border-radius: 18px; font-size: 15px;
    cursor: pointer; border: none; transition: all 0.2s;
    font-weight: 600;
  }
  .topbar-btn.primary { background: #C4956A; color: #fff; }
  .topbar-btn.primary:hover { background: #8B5E3C; }
  .topbar-btn.ghost { background: rgba(196,149,106,0.1); color: #8B5E3C; }
  .topbar-btn.ghost:hover { background: rgba(196,149,106,0.2); }
  .topbar-user {
    display: flex; align-items: center; gap: 8px;
    font-size: 14px; color: #8B7355;
  }
  .topbar-user-avatar {
    width: 28px; height: 28px; border-radius: 50%;
    background: #E8DDD0; display: flex; align-items: center;
    justify-content: center; font-size: 14px;
  }

  /* ===== 内容区 ===== */
  .content {
    flex: 1; padding: 24px 32px;
    display: grid; grid-template-columns: 1fr 360px; gap: 24px;
  }

  /* ===== 左列 - AI对话区 ===== */
  .left-col { display: flex; flex-direction: column; gap: 20px; }

  /* AI 对话卡片 */
  .ai-chat-card {
    background: #fff; border-radius: 20px;
    box-shadow: 0 4px 20px rgba(93,60,35,0.08);
    border: 1px solid #EDE3D6;
    overflow: hidden; position: relative;
  }
  .ai-chat-header {
    padding: 20px 24px; display: flex; align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid #F5EDE3;
  }
  .ai-chat-header-left { display: flex; align-items: center; gap: 14px; }
  .ai-robot-avatar {
    width: 52px; height: 52px; border-radius: 16px;
    overflow: hidden; background: linear-gradient(135deg, #E8F0F8, #D0E4F0);
    display: flex; align-items: center; justify-content: center;
    position: relative;
  }
  .ai-robot-avatar img {
    width: 100%; height: 100%; object-fit: cover;
  }
  .ai-robot-avatar .online-dot {
    position: absolute; bottom: 2px; right: 2px;
    width: 10px; height: 10px; border-radius: 50%;
    background: #6B8E6B; border: 2px solid #fff;
  }
  .ai-chat-header-info h3 {
    font-size: 16px; font-weight: 700; color: #3D2B1F;
  }
  .ai-chat-header-info p { font-size: 15px; color: #8B7355; margin-top: 2px; }
  .ai-chat-badge {
    display: inline-flex; align-items: center; gap: 4px;
    background: rgba(107,142,107,0.1); padding: 3px 10px;
    border-radius: 10px; font-size: 14px; color: #6B8E6B;
    font-weight: 600; margin-top: 4px;
  }
  .ai-chat-actions { display: flex; gap: 8px; }
  .ai-action-btn {
    width: 32px; height: 32px; border-radius: 10px;
    background: #FAF6F0; border: 1px solid #EDE3D6;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px; cursor: pointer; transition: all 0.2s;
  }
  .ai-action-btn:hover { border-color: #C4956A; background: #F5E6D3; }

  /* 对话区域 */
  .ai-chat-body { padding: 20px 24px; min-height: 240px; }
  .chat-welcome {
    display: flex; flex-direction: column; align-items: center;
    padding: 20px 0; gap: 16px;
  }
  .chat-welcome-avatar {
    width: 80px; height: 80px; border-radius: 24px;
    overflow: hidden; background: linear-gradient(135deg, #E8F0F8, #D0E4F0);
    box-shadow: 0 4px 16px rgba(93,60,35,0.1);
  }
  .chat-welcome-avatar img { width: 100%; height: 100%; object-fit: cover; }
  .chat-welcome h4 {
    font-size: 16px; font-weight: 700; color: #3D2B1F;
  }
  .chat-welcome p { font-size: 14px; color: #8B7355; text-align: center; line-height: 1.7; max-width: 400px; }

  /* 对话气泡 */
  .chat-messages { display: flex; flex-direction: column; gap: 16px; }
  .chat-msg { display: flex; gap: 10px; }
  .chat-msg.ai { flex-direction: row; }
  .chat-msg.user { flex-direction: row-reverse; }
  .msg-avatar {
    width: 32px; height: 32px; border-radius: 10px;
    flex-shrink: 0; overflow: hidden;
  }
  .msg-avatar img { width: 100%; height: 100%; object-fit: cover; }
  .msg-avatar.user-av {
    background: #C4956A; display: flex; align-items: center;
    justify-content: center; font-size: 14px;
  }
  .msg-bubble {
    max-width: 380px; padding: 12px 16px; border-radius: 14px;
    font-size: 15px; line-height: 1.7;
  }
  .chat-msg.ai .msg-bubble {
    background: #FAF6F0; border: 1px solid #EDE3D6;
    color: #3D2B1F; border-top-left-radius: 4px;
  }
  .chat-msg.user .msg-bubble {
    background: linear-gradient(135deg, #C4956A, #8B5E3C);
    color: #fff; border-top-right-radius: 4px;
  }

  /* 输入区域 */
  .ai-chat-input {
    padding: 16px 24px; border-top: 1px solid #F5EDE3;
  }
  .input-row {
    display: flex; align-items: center; gap: 10px;
    background: #FAF6F0; border: 1px solid #EDE3D6;
    border-radius: 16px; padding: 4px 6px 4px 18px;
    transition: border-color 0.2s;
  }
  .input-row:focus-within { border-color: #C4956A; }
  .input-row input {
    flex: 1; border: none; background: transparent;
    font-size: 15px; outline: none; color: #3D2B1F;
    padding: 10px 0;
  }
  .input-row input::placeholder { color: #B8A08A; }
  .input-tools { display: flex; gap: 4px; }
  .input-tool-btn {
    padding: 6px 12px; border-radius: 10px; font-size: 15px;
    background: #fff; border: 1px solid #EDE3D6; color: #8B7355;
    cursor: pointer; transition: all 0.2s; white-space: nowrap;
  }
  .input-tool-btn:hover { border-color: #C4956A; color: #8B5E3C; }
  .send-btn {
    width: 40px; height: 40px; border-radius: 12px;
    background: linear-gradient(135deg, #C4956A, #8B5E3C);
    border: none; color: #fff; font-size: 16px;
    cursor: pointer; display: flex; align-items: center;
    justify-content: center; transition: all 0.2s;
    flex-shrink: 0;
  }
  .send-btn:hover { transform: scale(1.05); }

  /* 热门问题 */
  .hot-questions {
    padding: 0 24px 16px;
  }
  .hot-q-grid {
    display: flex; flex-wrap: wrap; gap: 8px;
  }
  .hot-q-tag {
    padding: 6px 14px; border-radius: 18px; font-size: 15px;
    background: #FAF6F0; border: 1px solid #EDE3D6;
    color: #5B3A29; cursor: pointer; transition: all 0.2s;
    display: flex; align-items: center; gap: 5px;
  }
  .hot-q-tag:hover { border-color: #C4956A; background: #F5E6D3; }
  .hot-q-tag .q-icon { font-size: 14px; }

  /* ===== 四师协同 ===== */
    .section-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 16px;
  }
  .section-title {
    font-size: 15px; font-weight: 700; color: #3D2B1F;
    display: flex; align-items: center; gap: 8px;
  }
  .section-title .dot { width: 6px; height: 6px; border-radius: 50%; background: #C4956A; }
  .section-more { font-size: 15px; color: #C4956A; cursor: pointer; text-decoration: none; }
  .section-more:hover { text-decoration: underline; }

        .mentor-item   .mentor-item:nth-child(1)   .mentor-item:nth-child(2)   .mentor-item:nth-child(3)   .mentor-item:nth-child(4)   .mentor-item   .mentor-item   .mentor-item 
  /* ===== 名师工作室 ===== */
  .studios-card {
    background: #fff; border-radius: 16px;
    box-shadow: 0 2px 12px rgba(93,60,35,0.06);
    border: 1px solid #EDE3D6; padding: 20px 24px;
  }
  .studios-grid {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;
  }
  .studio-item {
    padding: 16px; border-radius: 14px;
    border: 1px solid #EDE3D6; cursor: pointer;
    transition: all 0.25s; position: relative;
  }
  .studio-item:hover {
    border-color: #C4956A; background: #FDF9F5;
  }
  .studio-top { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
  .studio-avatar {
    width: 40px; height: 40px; border-radius: 12px;
    overflow: hidden; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 20px;
  }
  .studio-item:nth-child(1) .studio-avatar { background: #F5E6D3; }
  .studio-item:nth-child(2) .studio-avatar { background: #DAE8EF; }
  .studio-item:nth-child(3) .studio-avatar { background: #DAE5DA; }
  .studio-item:nth-child(4) .studio-avatar { background: #F0DAD7; }
  .studio-item:nth-child(5) .studio-avatar { background: #EDE3D6; }
  .studio-item:nth-child(6) .studio-avatar { background: #E8F0F8; }
  .studio-name { font-size: 15px; font-weight: 700; color: #3D2B1F; }
  .studio-field { font-size: 14px; color: #8B7355; margin-top: 1px; }
  .studio-desc { font-size: 15px; color: #6B5344; line-height: 1.5; margin-bottom: 8px; }
  .studio-footer { display: flex; align-items: center; justify-content: space-between; }
  .studio-tag {
    font-size: 9px; padding: 2px 8px; border-radius: 8px;
    background: #FAF6F0; color: #8B5E3C; border: 1px solid #EDE3D6;
  }
  .studio-members { font-size: 14px; color: #B8A08A; }
  .studio-badge {
    position: absolute; top: 10px; right: 10px;
    width: 18px; height: 18px; border-radius: 50%;
    background: #C4956A; color: #fff; font-size: 9px;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700;
  }

  /* ===== 右列 ===== */
  .right-col { display: flex; flex-direction: column; gap: 20px; }

  /* 名师推荐 */
  .teachers-card {
    background: #fff; border-radius: 16px;
    box-shadow: 0 2px 12px rgba(93,60,35,0.06);
    border: 1px solid #EDE3D6; padding: 20px;
  }
  .teacher-list { display: flex; flex-direction: column; gap: 10px; }
  .teacher-item {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 14px; border-radius: 12px;
    border: 1px solid transparent; cursor: pointer;
    transition: all 0.2s;
  }
  .teacher-item:hover {
    background: #FAF6F0; border-color: #EDE3D6;
  }
  .teacher-avatar {
    width: 44px; height: 44px; border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    font-size: 22px; flex-shrink: 0;
  }
  .teacher-item:nth-child(1) .teacher-avatar { background: #F5E6D3; }
  .teacher-item:nth-child(2) .teacher-avatar { background: #DAE8EF; }
  .teacher-item:nth-child(3) .teacher-avatar { background: #DAE5DA; }
  .teacher-item:nth-child(4) .teacher-avatar { background: #F0DAD7; }
  .teacher-item:nth-child(5) .teacher-avatar { background: #EDE3D6; }
  .teacher-item:nth-child(6) .teacher-avatar { background: #E8F0F8; }
  .teacher-info { flex: 1; }
  .teacher-name { font-size: 15px; font-weight: 700; color: #3D2B1F; }
  .teacher-bio { font-size: 14px; color: #8B7355; margin-top: 2px; line-height: 1.4; }
  .teacher-online {
    width: 8px; height: 8px; border-radius: 50%;
    flex-shrink: 0;
  }
  .teacher-online.on { background: #6B8E6B; }
  .teacher-online.off { background: #D4B896; }

        .live-item:last-child { margin-bottom: 0; }
            .live-badge   @keyframes blink { 0%,100%{opacity:1} 50%{opacity:0.3} }
            .live-btn.enter:hover { background: #8B5E3C; }
    .live-btn.reserve:hover { border-color: #C4956A; }
    .live-btn.watch:hover { background: #DAE5DA; }

  /* 精品资源 */
  .resources-card {
    background: #fff; border-radius: 16px;
    box-shadow: 0 2px 12px rgba(93,60,35,0.06);
    border: 1px solid #EDE3D6; padding: 20px;
  }
  .resource-item {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 0; border-bottom: 1px solid #F5EDE3;
    cursor: pointer;
  }
  .resource-item:last-child { border-bottom: none; }
  .resource-icon {
    width: 36px; height: 36px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 18px; flex-shrink: 0;
  }
  .resource-item:nth-child(1) .resource-icon { background: #F5E6D3; }
  .resource-item:nth-child(2) .resource-icon { background: #DAE8EF; }
  .resource-item:nth-child(3) .resource-icon { background: #DAE5DA; }
  .resource-item:nth-child(4) .resource-icon { background: #F0DAD7; }
  .resource-info { flex: 1; }
  .resource-name { font-size: 14px; font-weight: 600; color: #3D2B1F; }
  .resource-meta { font-size: 14px; color: #B8A08A; margin-top: 2px; }

  /* ai-float uses global style */

  /* ===== Toast ===== */
  #toast {
    display: none; position: fixed; top: 70px; left: 50%; transform: translateX(-50%);
    background: #3D2B1F; color: #fff; padding: 10px 24px; border-radius: 12px;
    font-size: 15px; z-index: 400; box-shadow: 0 4px 20px rgba(0,0,0,0.15);
  }

/* ============================================ */
/* ===== 闯关成长路径样式 ===== */
/* ============================================ */

  * { margin: 0; padding: 0; box-sizing: border-box; }
  /* duplicate body rule - already defined globally */

  /* ===== 用户状态栏 ===== */
  .status-bar {
    margin-top: 60px;
    background: linear-gradient(135deg, #5B3A29, #3D2B1F);
    padding: 28px 40px;
    position: relative; overflow: hidden;
  }
  .status-bar::before {
    content: ''; position: absolute; top: -40px; right: -40px;
    width: 200px; height: 200px; border-radius: 50%;
    background: rgba(196,149,106,0.12);
  }
  .status-bar::after {
    content: ''; position: absolute; bottom: -60px; left: 40%;
    width: 160px; height: 160px; border-radius: 50%;
    background: rgba(196,149,106,0.06);
  }
  .status-content {
    max-width: 1100px; margin: 0 auto;
    display: flex; align-items: center; justify-content: space-between;
    position: relative; z-index: 1;
  }
  .status-left { display: flex; align-items: center; gap: 20px; }
  .status-avatar {
    width: 56px; height: 56px; border-radius: 50%;
    background: linear-gradient(135deg, #C4956A, #D4A57A);
    display: flex; align-items: center; justify-content: center;
    font-size: 28px;
    border: 3px solid rgba(255,255,255,0.3);
  }
  .status-info h2 {
    font-size: 18px; font-weight: 700; color: #fff; margin-bottom: 4px;
  }
  .status-info p { font-size: 14px; color: #B8A08A; }
  .status-level {
    display: inline-flex; align-items: center; gap: 6px;
    background: rgba(196,149,106,0.3); padding: 3px 12px;
    border-radius: 14px; font-size: 15px; color: #D4B896;
    margin-top: 6px;
  }
  .status-level .lv-icon { font-size: 14px; }
  .status-right { display: flex; gap: 32px; }
  .stat-item { text-align: center; }
  .stat-num {
    font-size: 24px; font-weight: 800; color: #C4956A;
  }
  .stat-label { font-size: 15px; color: #8B7355; margin-top: 2px; }

  /* ===== 教育家精神根基 ===== */
  .spirit-base {
    max-width: 1100px; margin: 0 auto; padding: 28px 40px 0;
  }
  .spirit-bar {
    background: #fff; border-radius: 16px; padding: 20px 28px;
    box-shadow: 0 2px 12px rgba(93,60,35,0.06);
    border: 1px solid #EDE3D6;
  }
  .spirit-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 14px;
  }
  .spirit-title {
    font-size: 14px; font-weight: 700; color: #3D2B1F;
    display: flex; align-items: center; gap: 8px;
  }
  .spirit-title .dot { width: 6px; height: 6px; border-radius: 50%; background: #8B5E3C; }
  .spirit-hint { font-size: 15px; color: #B8A08A; }
  .spirit-grid {
    display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px;
  }
  .spirit-item {
    text-align: center; padding: 14px 8px; border-radius: 12px;
    background: #FAF6F0; border: 1px solid #EDE3D6;
    cursor: pointer; transition: all 0.3s;
    position: relative;
  }
  .spirit-item:hover { border-color: #C4956A; transform: translateY(-2px); }
  .spirit-item.completed { border-color: #6B8E6B; background: #EFF5EF; }
  .spirit-item.completed::after {
    content: '✓'; position: absolute; top: 6px; right: 8px;
    font-size: 14px; color: #6B8E6B; font-weight: 700;
  }
  .spirit-emoji { font-size: 22px; margin-bottom: 6px; }
  .spirit-text { font-size: 15px; font-weight: 700; color: #3D2B1F; line-height: 1.4; }
  .spirit-sub { font-size: 9px; color: #8B7355; margin-top: 3px; }

  /* ===== 闯关路径 ===== */
  .quest-path {
    max-width: 1100px; margin: 0 auto; padding: 28px 40px;
  }
  .path-header {
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 20px;
  }
  .path-title {
    font-size: 18px; font-weight: 800; color: #3D2B1F;
  }
  .path-title span { color: #8B5E3C; }
  .path-subtitle { font-size: 14px; color: #8B7355; }

  /* 关卡连接线 */
  .stages-container {
    position: relative;
  }
  .stages-container::before {
    content: ''; position: absolute;
    top: 80px; left: 80px; right: 80px;
    height: 4px; border-radius: 2px;
    background: linear-gradient(90deg, #D4B896, #C4956A, #8B5E3C, #5B3A29);
    z-index: 0;
  }
  .stages-container::after {
    content: ''; position: absolute;
    top: 80px; left: 80px;
    width: 0; height: 4px; border-radius: 2px;
    background: #6B8E6B;
    z-index: 1;
    transition: width 0.5s ease;
  }

  /* 四个关卡 */
  .stages-row {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;
    position: relative; z-index: 2;
  }
  .stage-node {
    text-align: center; cursor: pointer;
    transition: all 0.3s;
  }
  .stage-node:hover { transform: translateY(-4px); }
  .node-circle {
    width: 64px; height: 64px; border-radius: 50%;
    margin: 0 auto 14px; display: flex;
    align-items: center; justify-content: center;
    font-size: 28px; position: relative;
    border: 4px solid #EDE3D6;
    background: #fff;
    transition: all 0.3s;
  }
  .stage-node.active .node-circle {
    border-color: #C4956A;
    box-shadow: 0 0 0 6px rgba(196,149,106,0.2);
    animation: pulse 2s infinite;
  }
  .stage-node.cleared .node-circle {
    border-color: #6B8E6B;
    background: #EFF5EF;
  }
  .stage-node.locked .node-circle {
    border-color: #EDE3D6;
    background: #F5EDE3;
    opacity: 0.6;
  }
  .node-circle .lock { font-size: 20px; }
  .stage-node.cleared .node-circle .lock { display: none; }
  .stage-node.active .node-circle .lock { display: none; }
  .node-check {
    position: absolute; bottom: -2px; right: -2px;
    width: 20px; height: 20px; border-radius: 50%;
    background: #6B8E6B; color: #fff; font-size: 15px;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700;
  }
  .stage-node:not(.cleared) .node-check { display: none; }
  .node-label { font-size: 15px; font-weight: 800; color: #3D2B1F; margin-bottom: 2px; }
  .stage-node.locked .node-label { color: #B8A08A; }
  .node-desc { font-size: 15px; color: #8B7355; margin-bottom: 6px; }
  .node-badges { display: flex; gap: 4px; justify-content: center; flex-wrap: wrap; }
  .badge {
    font-size: 9px; padding: 2px 8px; border-radius: 10px;
    font-weight: 600;
  }
  .badge.brown { background: #F5E6D3; color: #8B5E3C; }
  .badge.green { background: #DAE5DA; color: #4A7A4A; }
  .badge.blue { background: #DAE8EF; color: #4A7A8F; }
  .badge.rose { background: #F0DAD7; color: #8B5E3C; }

  @keyframes pulse {
    0%, 100% { box-shadow: 0 0 0 6px rgba(196,149,106,0.2); }
    50% { box-shadow: 0 0 0 12px rgba(196,149,106,0.1); }
  }

  /* ===== 关卡详情面板 ===== */
  .quest-detail {
    max-width: 1100px; margin: 0 auto; padding: 0 40px 40px;
    display: none;
  }
  .quest-detail.show { display: block; }

  .detail-card {
    background: #fff; border-radius: 20px;
    box-shadow: 0 4px 24px rgba(93,60,35,0.08);
    border: 1px solid #EDE3D6;
    overflow: hidden;
  }
  .detail-top {
    padding: 28px 32px;
    display: flex; align-items: center; justify-content: space-between;
    border-bottom: 1px solid #F5EDE3;
  }
  .detail-top-left { display: flex; align-items: center; gap: 16px; }
  .detail-icon {
    width: 52px; height: 52px; border-radius: 14px;
    display: flex; align-items: center; justify-content: center;
    font-size: 26px;
  }
  .detail-icon.lv1 { background: #F5E6D3; }
  .detail-icon.lv2 { background: #DAE8EF; }
  .detail-icon.lv3 { background: #EDE3D6; }
  .detail-icon.lv4 { background: #F0DAD7; }
  .detail-top-info h3 { font-size: 20px; font-weight: 800; color: #3D2B1F; }
  .detail-top-info p { font-size: 14px; color: #8B7355; margin-top: 2px; }
  .detail-top-right { text-align: right; }
  .detail-progress-ring {
    width: 64px; height: 64px; position: relative;
  }
  .detail-progress-ring svg { transform: rotate(-90deg); }
  .detail-progress-ring .ring-text {
    position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%);
    font-size: 14px; font-weight: 800; color: #3D2B1F;
  }

  /* 任务列表 */
  .detail-body { padding: 28px 32px; }
  .task-group-title {
    font-size: 14px; font-weight: 700; color: #8B7355;
    margin-bottom: 12px; text-transform: uppercase;
    letter-spacing: 1px;
  }
  .task-group-title .emoji { margin-right: 4px; }

  .task-item {
    display: flex; align-items: center; gap: 14px;
    padding: 16px 18px; border-radius: 14px;
    margin-bottom: 10px; cursor: pointer;
    border: 1px solid #EDE3D6;
    transition: all 0.25s;
    position: relative;
  }
  .task-item:hover { border-color: #C4956A; background: #FDF9F5; }
  .task-item.done { border-color: #C8DCC8; background: #F8FBF8; }
  .task-item.current {
    border-color: #C4956A; background: #FDF9F5;
    box-shadow: 0 2px 12px rgba(196,149,106,0.15);
  }
  .task-item.locked { opacity: 0.5; cursor: not-allowed; }

  .task-check {
    width: 28px; height: 28px; border-radius: 50%;
    border: 2px solid #D4B896; display: flex;
    align-items: center; justify-content: center;
    font-size: 15px; flex-shrink: 0;
    transition: all 0.2s;
  }
  .task-item.done .task-check {
    border-color: #6B8E6B; background: #6B8E6B; color: #fff;
  }
  .task-item.current .task-check {
    border-color: #C4956A; background: #F5E6D3; color: #8B5E3C;
  }
  .task-item.locked .task-check {
    border-color: #E0D5C8; background: #F5EDE3; color: #B8A08A;
  }

  .task-info { flex: 1; }
  .task-name { font-size: 14px; font-weight: 600; color: #3D2B1F; margin-bottom: 3px; }
  .task-desc { font-size: 15px; color: #8B7355; line-height: 1.5; }
  .task-item.locked .task-name { color: #B8A08A; }

  .task-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
  .task-pts {
    font-size: 14px; font-weight: 700; color: #C4956A;
    display: flex; align-items: center; gap: 3px;
  }
  .task-tag {
    font-size: 9px; padding: 2px 8px; border-radius: 8px;
    font-weight: 600;
  }
  .task-tag.required { background: #F0DAD7; color: #8B5E3C; }
  .task-tag.optional { background: #DAE8EF; color: #4A7A8F; }
  .task-tag.bonus { background: #DAE5DA; color: #4A7A4A; }

  /* 精神浸润任务 */
  .spirit-task {
    display: flex; align-items: center; gap: 14px;
    padding: 14px 18px; border-radius: 14px;
    margin-bottom: 10px; cursor: pointer;
    background: #FAF6F0; border: 1px solid #EDE3D6;
    transition: all 0.25s;
  }
  .spirit-task:hover { border-color: #8B5E3C; }
  .spirit-task.done { background: #EFF5EF; border-color: #C8DCC8; }
  .spirit-task-icon {
    width: 36px; height: 36px; border-radius: 10px;
    background: #EDE3D6; display: flex;
    align-items: center; justify-content: center;
    font-size: 18px; flex-shrink: 0;
  }
  .spirit-task-info { flex: 1; }
  .spirit-task-name { font-size: 15px; font-weight: 600; color: #3D2B1F; }
  .spirit-task-desc { font-size: 15px; color: #8B7355; margin-top: 1px; }
  .spirit-task-check {
    font-size: 14px; color: #B8A08A;
  }
  .spirit-task.done .spirit-task-check { color: #6B8E6B; }

  /* 能力徽章展示 */
  .badge-showcase {
    display: flex; gap: 12px; margin-top: 20px;
    padding: 18px 20px; border-radius: 14px;
    background: linear-gradient(135deg, #FAF6F0, #F5EDE3);
    border: 1px dashed #D4B896;
  }
  .badge-item {
    display: flex; align-items: center; gap: 8px;
    padding: 8px 14px; border-radius: 12px;
    background: #fff; border: 1px solid #EDE3D6;
  }
  .badge-item.earned { border-color: #6B8E6B; background: #EFF5EF; }
  .badge-item.locked { opacity: 0.5; }
  .badge-emoji { font-size: 20px; }
  .badge-label { font-size: 15px; font-weight: 600; color: #3D2B1F; }
  .badge-status { font-size: 9px; color: #8B7355; }

  /* ===== 成长证书区 ===== */
  .cert-section {
    max-width: 1100px; margin: 0 auto 40px; padding: 0 40px;
  }
  .cert-card {
    background: linear-gradient(135deg, #F5E6D3, #E8D5C0);
    border-radius: 16px; padding: 28px 32px;
    display: flex; align-items: center; justify-content: space-between;
    border: 1px solid #D4B896;
  }
  .cert-left { display: flex; align-items: center; gap: 16px; }
  .cert-icon {
    width: 52px; height: 52px; border-radius: 50%;
    background: rgba(255,255,255,0.6);
    display: flex; align-items: center; justify-content: center;
    font-size: 26px;
  }
  .cert-text h4 { font-size: 15px; font-weight: 700; color: #3D2B1F; }
  .cert-text p { font-size: 15px; color: #6B5344; margin-top: 2px; }
  .cert-btn {
    background: #8B5E3C; color: #fff; border: none;
    padding: 10px 24px; border-radius: 20px; font-size: 15px;
    font-weight: 600; cursor: pointer; transition: all 0.2s;
  }
  .cert-btn:hover { background: #5B3A29; }

  /* ===== 底部 ===== */
  .footer {
    max-width: 1100px; margin: 0 auto; padding: 0 40px 40px;
    text-align: center; font-size: 15px; color: #B8A08A;
  }
  .footer-divider { height: 1px; background: #EDE3D6; margin-bottom: 20px; }

  /* ===== Toast ===== */
  #toast {
    display: none; position: fixed; top: 80px; left: 50%; transform: translateX(-50%);
    background: #3D2B1F; color: #fff; padding: 10px 24px; border-radius: 12px;
    font-size: 15px; z-index: 400; box-shadow: 0 4px 20px rgba(0,0,0,0.15);
  }

  /* ===== 任务详情弹窗 ===== */
  .task-modal {
    display: none; position: fixed; top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.4); z-index: 300;
    align-items: center; justify-content: center;
  }
  .task-modal.show { display: flex; }
  .task-modal-box {
    background: #fff; border-radius: 20px; padding: 32px;
    max-width: 520px; width: 90%;
    box-shadow: 0 20px 60px rgba(0,0,0,0.15);
  }
  .task-modal-header {
    display: flex; align-items: flex-start; justify-content: space-between;
    margin-bottom: 20px;
  }
  .task-modal-header h3 { font-size: 18px; font-weight: 700; color: #3D2B1F; }
  .task-modal-close {
    width: 32px; height: 32px; border-radius: 50%;
    background: #F5EDE3; border: none; cursor: pointer;
    font-size: 16px; color: #8B7355;
    display: flex; align-items: center; justify-content: center;
  }
  .task-modal-body p { font-size: 15px; color: #6B5344; line-height: 1.8; margin-bottom: 14px; }
  .task-modal-steps { list-style: none; margin-bottom: 18px; }
  .task-modal-steps li {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 14px; border-radius: 10px;
    margin-bottom: 6px; background: #FAF6F0;
    font-size: 14px; color: #3D2B1F;
  }
  .task-modal-steps li .step-num {
    width: 22px; height: 22px; border-radius: 50%;
    background: #C4956A; color: #fff; font-size: 14px;
    display: flex; align-items: center; justify-content: center;
    font-weight: 700; flex-shrink: 0;
  }
  .task-modal-btn {
    background: #C4956A; color: #fff; border: none;
    padding: 10px 28px; border-radius: 20px; font-size: 14px;
    font-weight: 600; cursor: pointer; transition: all 0.2s;
    width: 100%;
  }
  .task-modal-btn:hover { background: #8B5E3C; }

/* ===== 名师领航页面在SPA中的布局修正 ===== */
#page-mentor {
  padding-top: 60px;
  min-height: 100vh;
}
#page-mentor .main-area {
  flex: 1;
  min-height: calc(100vh - 56px);
}
/* ===== 各页面顶部间距 ===== */
#page-home .hero { margin-top: 60px; }
#page-spirit .hero { margin-top: 60px; }
#page-spirit .main { padding-top: 92px; }
#page-quest .status-bar { margin-top: 60px; }

/* ===== 竞赛创新中心 ===== */
.compete-hero {
  margin-top: 60px;
  background: linear-gradient(135deg, #F5E6D3 0%, #EDE3D6 40%, #E8D5C0 100%);
  padding: 56px 40px 40px; position: relative; overflow: hidden;
}
.compete-hero::before {
  content: ''; position: absolute; top: -50px; right: -30px;
  width: 280px; height: 280px; border-radius: 50%;
  background: rgba(196,149,106,0.1);
}
.compete-hero::after {
  content: ''; position: absolute; bottom: -60px; left: 20%;
  width: 160px; height: 160px; border-radius: 50%;
  background: rgba(139,94,60,0.06);
}
.compete-hero-inner { max-width: 1100px; margin: 0 auto; position: relative; z-index: 1; }
.compete-hero .badge {
  display: inline-block; background: rgba(255,255,255,0.65); border: 1px solid #D4B896;
  padding: 5px 16px; border-radius: 20px; font-size: 14px; color: #5B3A29; margin-bottom: 16px;
}
.compete-hero h1 { font-size: 26px; font-weight: 800; color: #3D2B1F; margin-bottom: 10px; line-height: 1.4; }
.compete-hero h1 span { color: #8B5E3C; }
.compete-hero p { font-size: 14px; color: #6B5344; line-height: 1.8; max-width: 700px; }
.compete-hero-stats {
  display: flex; gap: 32px; margin-top: 24px;
}
.compete-hero-stat { text-align: center; }
.compete-hero-stat .num { font-size: 28px; font-weight: 800; color: #C4956A; }
.compete-hero-stat .label { font-size: 14px; color: #8B7355; margin-top: 2px; }

.compete-main { max-width: 1100px; margin: 0 auto; padding: 32px 40px 40px; }

.compete-section-title {
  display: flex; align-items: center; gap: 10px;
  font-size: 18px; font-weight: 700; color: #3D2B1F; margin-bottom: 20px;
}
.compete-section-title .icon { font-size: 22px; }
.compete-section-title .line { flex: 1; height: 1px; background: #EDE3D6; }



/* Four functions */
.compete-funcs {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 36px;
}
.compete-func-card {
  background: #fff; border-radius: 14px; padding: 24px 16px; text-align: center;
  box-shadow: 0 4px 16px rgba(93,60,35,0.06); border: 1px solid #EDE3D6;
  transition: all 0.3s; cursor: pointer;
}
.compete-func-card:hover { transform: translateY(-3px); box-shadow: 0 8px 28px rgba(93,60,35,0.1); }
.compete-func-card .func-icon {
  width: 52px; height: 52px; border-radius: 14px; margin: 0 auto 12px;
  display: flex; align-items: center; justify-content: center; font-size: 24px;
}
.compete-func-card .func-icon.c1 { background: linear-gradient(135deg, #F5E6D3, #E8D5C0); }
.compete-func-card .func-icon.c2 { background: linear-gradient(135deg, #E0D4C4, #D4C4B0); }
.compete-func-card .func-icon.c3 { background: linear-gradient(135deg, #C4956A, #B8834E); color: #fff; }
.compete-func-card .func-icon.c4 { background: linear-gradient(135deg, #8B5E3C, #6B4426); color: #fff; }
.compete-func-card h4 { font-size: 14px; font-weight: 700; color: #3D2B1F; margin-bottom: 10px; }
.compete-func-card ul { list-style: none; text-align: left; }
.compete-func-card ul li {
  font-size: 14px; color: #6B5344; padding: 3px 0; display: flex; align-items: center; gap: 6px;
}
.compete-func-card ul li::before { content: '✓'; color: #C4956A; font-weight: 700; font-size: 15px; }

/* Event list */
.compete-events {
  background: #fff; border-radius: 16px; padding: 28px;
  box-shadow: 0 4px 20px rgba(93,60,35,0.06); border: 1px solid #EDE3D6;
  margin-bottom: 36px;
}
.event-list { display: flex; flex-direction: column; gap: 12px; }
.event-item {
  display: flex; align-items: center; gap: 16px; padding: 16px 20px;
  background: #FAF6F0; border-radius: 12px; border: 1px solid #EDE3D6;
  transition: all 0.2s; cursor: pointer;
}
.event-item:hover { border-color: #C4956A; transform: translateX(4px); }
.event-item .event-badge {
  padding: 4px 12px; border-radius: 8px; font-size: 15px; font-weight: 600;
  color: #fff; white-space: nowrap;
}
.event-item .event-badge.provincial { background: #8B5E3C; }
.event-item .event-badge.national { background: #B83A3A; }
.event-item .event-badge.school { background: #C4956A; }
.event-item .event-badge.tech { background: #4A7C8B; }
.event-item .event-info { flex: 1; }
.event-item .event-info h4 { font-size: 14px; font-weight: 600; color: #3D2B1F; margin-bottom: 4px; }
.event-item .event-info p { font-size: 14px; color: #8B7355; }
.event-item .event-meta { text-align: right; white-space: nowrap; }
.event-item .event-meta .date { font-size: 14px; color: #8B7355; }
.event-item .event-meta .status {
  font-size: 15px; font-weight: 600; margin-top: 4px;
  padding: 2px 10px; border-radius: 10px; display: inline-block;
}
.event-item .event-meta .status.open { background: #E8F5E9; color: #2E7D32; }
.event-item .event-meta .status.upcoming { background: #FFF3E0; color: #E65100; }
.event-item .event-meta .status.closed { background: #F5F5F5; color: #9E9E9E; }

/* Award showcase */
.compete-showcase {
  background: #fff; border-radius: 16px; padding: 28px;
  box-shadow: 0 4px 20px rgba(93,60,35,0.06); border: 1px solid #EDE3D6;
}
.showcase-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 16px;
}
.showcase-card {
  background: #FAF6F0; border-radius: 12px; padding: 20px;
  border: 1px solid #EDE3D6; text-align: center; transition: all 0.2s;
}
.showcase-card:hover { border-color: #C4956A; transform: translateY(-2px); }
.showcase-card .medal { font-size: 28px; margin-bottom: 8px; }
.showcase-card h4 { font-size: 15px; font-weight: 600; color: #3D2B1F; margin-bottom: 6px; line-height: 1.4; }
.showcase-card .author { font-size: 14px; color: #C4956A; margin-bottom: 4px; }
.showcase-card .award { font-size: 15px; color: #8B7355; }

/* ===== 首页关于区域 ===== */
.home-about {
  max-width: 1100px;
  margin: 0 auto;
  padding: 40px 20px 30px;
}
.about-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-bottom: 36px;
}
.about-card {
  background: #EDE3D6;
  border-radius: 16px;
  padding: 28px 24px;
  text-align: center;
  transition: transform 0.2s;
}
.about-card:hover {
  transform: translateY(-3px);
}
.about-icon {
  font-size: 36px;
  margin-bottom: 12px;
}
.about-card h3 {
  color: #3D2B1F;
  font-size: 18px;
  margin: 0 0 10px;
}
.about-card p {
  color: #6B5344;
  font-size: 14px;
  line-height: 1.6;
  margin: 0;
}
.home-alliance {
  background: #EDE3D6;
  border-radius: 16px;
  padding: 24px 28px;
  text-align: center;
}
.alliance-header h3 {
  color: #3D2B1F;
  font-size: 18px;
  margin: 0 0 6px;
}
.alliance-header p {
  color: #8B7355;
  font-size: 14px;
  margin: 0 0 16px;
}
.home-alliance-members {
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}
.home-chip {
  background: #FAF6F0;
  color: #5D4037;
  padding: 6px 18px;
  border-radius: 20px;
  font-size: 14px;
  border: 1px solid #D4C4B0;
}




  /* ===== 首页底部Footer ===== */
  .home-footer {
    background: #3D2B1F;
    padding: 16px 32px;
    margin-top: 0;
    color: rgba(255,255,255,0.6);
    font-size: 14px;
    line-height: 1.8;
  }
  .footer-inner {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 24px;
  }
  .footer-left {
    display: flex;
    gap: 24px;
    flex-wrap: wrap;
    align-items: center;
  }
  .footer-campus-item {
    white-space: nowrap;
  }
  .footer-campus-item .campus-name {
    color: rgba(255,255,255,0.85);
    font-weight: 600;
    font-size: 14px;
  }
  .footer-campus-item .campus-addr {
    font-size: 15px;
    color: rgba(255,255,255,0.45);
    margin-left: 4px;
  }
  .footer-right {
    text-align: right;
    font-size: 15px;
    color: rgba(255,255,255,0.35);
    line-height: 1.8;
    white-space: nowrap;
  }
  .footer-right a {
    color: rgba(255,255,255,0.5);
    text-decoration: none;
    margin: 0 4px;
  }
  .footer-right a:hover {
    color: rgba(255,255,255,0.8);
  }

  /* ===== 联盟学校Logo墙 ===== */
  .home-school-wall {
    background: #EDE3D6;
    border-radius: 16px;
    padding: 28px 32px;
    text-align: center;
    margin-top: 20px;
  }
  .school-wall-header {
    margin-bottom: 20px;
  }
  .school-wall-header h3 {
    color: #3D2B1F;
    font-size: 18px;
    margin: 0 0 6px;
  }
  .school-wall-header p {
    color: #8B7355;
    font-size: 15px;
    margin: 0;
  }
  .school-logo-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 14px;
    padding: 0 10px;
  }
  .school-logo-item {
    background: #FAF6F0;
    border: 1px solid #D4C4B0;
    border-radius: 12px;
    padding: 16px 10px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    transition: transform 0.2s, box-shadow 0.2s;
  }
  .school-logo-item:hover {
    transform: translateY(-3px);
    box-shadow: 0 4px 16px rgba(139,115,85,0.15);
  }
  .school-logo-icon {
    width: 48px; height: 48px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 22px;
    color: #fff;
    font-weight: 700;
  }
  .school-logo-name {
    font-size: 14px;
    color: #5D4037;
    line-height: 1.3;
    text-align: center;
  }

  /* ===== 实践项目广场 ===== */
  .practice-plaza {
    padding: 32px 40px;
  }
  .practice-section-title {
    display: flex; align-items: center; gap: 10px;
    margin-bottom: 24px;
  }
  .practice-section-title .icon {
    font-size: 22px;
  }
  .practice-section-title h3 {
    font-size: 18px; font-weight: 800; color: #3D2B1F;
  }
  .practice-section-title .line {
    flex: 1; height: 1px; background: linear-gradient(90deg, #EDE3D6, transparent);
  }

  

  .project-grid {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px;
    margin-bottom: 12px;
  }
  .project-card {
    background: #fff; border-radius: 16px; padding: 20px 22px;
    border: 1px solid #EDE3D6; cursor: pointer;
    transition: all 0.25s; position: relative; overflow: hidden;
  }
  .project-card:hover {
    border-color: #C4956A; transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(196,149,106,0.15);
  }
  .project-card-full {
    grid-column: 1 / -1;
    padding: 24px 28px;
    border-color: #D4B896;
    background: linear-gradient(135deg, #FDF9F5, #FAF6F0);
  }
  .project-card-full:hover {
    border-color: #C4956A;
    box-shadow: 0 6px 24px rgba(196,149,106,0.2);
  }
  .project-card-full .card-tag {
    font-size: 15px; padding: 4px 14px;
  }
  .project-card-full h4 {
    font-size: 16px; margin-bottom: 8px;
  }
  .project-card-full p {
    font-size: 15px;
  }
  .project-card .card-tag {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 3px 10px; border-radius: 10px; font-size: 14px;
    font-weight: 700; margin-bottom: 12px;
  }
  .project-card .card-tag.required { background: #F0DAD7; color: #B8706A; }
  .project-card .card-tag.optional { background: #DAE8EF; color: #4A7A8F; }
  .project-card .card-tag.theme { background: #DAE5DA; color: #4A7A4A; }
  .project-card .card-tag.creative { background: #E8E0F0; color: #6A5A8F; }
  .project-card h4 {
    font-size: 14px; font-weight: 700; color: #3D2B1F; margin-bottom: 6px;
  }
  .project-card p {
    font-size: 14px; color: #8B7355; line-height: 1.6;
  }
  .project-card .card-footer {
    display: flex; align-items: center; justify-content: space-between;
    margin-top: 14px; padding-top: 12px; border-top: 1px solid #F5EDE3;
  }
  .project-card .card-meta {
    font-size: 14px; color: #B8A08A;
  }
  .project-card .card-btn {
    padding: 4px 14px; border-radius: 12px; font-size: 14px;
    font-weight: 600; border: 1px solid #C4956A; color: #C4956A;
    background: transparent; cursor: pointer; transition: all 0.2s;
  }
  .project-card .card-btn:hover {
    background: #C4956A; color: #fff;
  }

  /* ===== 实践基地风采 ===== */
  .practice-bases {
    padding: 32px 40px;
  }
  .base-tabs {
    display: flex; gap: 8px; margin-bottom: 20px;
  }
  .base-tab {
    padding: 7px 18px; border-radius: 18px; font-size: 14px;
    font-weight: 600; border: 1px solid #EDE3D6; background: #fff;
    color: #8B7355; cursor: pointer; transition: all 0.2s;
  }
  .base-tab:hover { border-color: #C4956A; color: #8B5E3C; }
  .base-tab.active {
    background: #C4956A; color: #fff; border-color: #C4956A;
  }
  .base-grid {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
  }
  .base-card {
    background: #fff; border-radius: 16px; overflow: hidden;
    border: 1px solid #EDE3D6; cursor: pointer;
    transition: all 0.25s;
  }
  .base-card:hover {
    border-color: #C4956A; transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(196,149,106,0.12);
  }
  .base-card .base-img {
    height: 120px; display: flex; align-items: center; justify-content: center;
    font-size: 36px; position: relative;
  }
  .base-card:nth-child(1) .base-img { background: linear-gradient(135deg, #F5E6D3, #EDE3D6); }
  .base-card:nth-child(2) .base-img { background: linear-gradient(135deg, #DAE8EF, #C8DEE8); }
  .base-card:nth-child(3) .base-img { background: linear-gradient(135deg, #DAE5DA, #C8DCC8); }
  .base-card:nth-child(4) .base-img { background: linear-gradient(135deg, #F0DAD7, #E8CCC8); }
  .base-card:nth-child(5) .base-img { background: linear-gradient(135deg, #E8E0F0, #D8D0E8); }
  .base-card:nth-child(6) .base-img { background: linear-gradient(135deg, #E8F0F8, #D0E4F0); }
  .base-card .base-img .base-type-badge {
    position: absolute; top: 10px; right: 10px;
    padding: 2px 8px; border-radius: 8px; font-size: 9px;
    font-weight: 700; background: rgba(255,255,255,0.85);
  }
  .base-card .base-body { padding: 16px; }
  .base-card .base-name {
    font-size: 14px; font-weight: 700; color: #3D2B1F; margin-bottom: 4px;
  }
  .base-card .base-loc {
    font-size: 15px; color: #8B7355; margin-bottom: 8px;
    display: flex; align-items: center; gap: 4px;
  }
  .base-card .base-tags {
    display: flex; gap: 6px; flex-wrap: wrap;
  }
  .base-card .base-tag {
    font-size: 9px; padding: 2px 8px; border-radius: 8px;
    background: #FAF6F0; color: #8B5E3C; border: 1px solid #EDE3D6;
  }

  /* ===== 实践成果展示 ===== */
  .practice-achievements {
    padding: 32px 40px 48px;
  }
  .achievement-grid {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px;
  }
  .achievement-card {
    background: #fff; border-radius: 16px; overflow: hidden;
    border: 1px solid #EDE3D6; cursor: pointer;
    transition: all 0.25s;
  }
  .achievement-card:hover {
    border-color: #C4956A; transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(196,149,106,0.12);
  }
  .achievement-card .ach-img {
    height: 90px; display: flex; align-items: center; justify-content: center;
    font-size: 40px; position: relative;
  }
  .achievement-card:nth-child(1) .ach-img { background: linear-gradient(135deg, #F5E6D3, #E8DDD0); }
  .achievement-card:nth-child(2) .ach-img { background: linear-gradient(135deg, #E8F0F8, #D0E4F0); }
  .achievement-card:nth-child(3) .ach-img { background: linear-gradient(135deg, #DAE5DA, #C8DCC8); }
  .achievement-card:nth-child(4) .ach-img { background: linear-gradient(135deg, #E8E0F0, #D8D0E8); }
  .achievement-card:nth-child(5) .ach-img { background: linear-gradient(135deg, #F0DAD7, #E8CCC8); }
  .achievement-card:nth-child(6) .ach-img { background: linear-gradient(135deg, #DAE8EF, #C8DEE8); }
  .achievement-card:nth-child(7) .ach-img { background: linear-gradient(135deg, #F5E6D3, #EDE3D6); }
  .achievement-card:nth-child(8) .ach-img { background: linear-gradient(135deg, #DAE5DA, #C8DCC8); }
  .achievement-card .ach-type {
    position: absolute; top: 8px; left: 8px;
    padding: 2px 8px; border-radius: 8px; font-size: 9px;
    font-weight: 700; background: rgba(255,255,255,0.9); color: #5B3A29;
  }
  .achievement-card .ach-award {
    position: absolute; top: 8px; right: 8px;
    padding: 2px 8px; border-radius: 8px; font-size: 9px;
    font-weight: 700;
  }
  .achievement-card .ach-award.gold { background: #F5E6D3; color: #8B5E3C; }
  .achievement-card .ach-award.silver { background: #E8E0F0; color: #6A5A8F; }
  .achievement-card .ach-award.excellent { background: #DAE5DA; color: #4A7A4A; }
  .achievement-card .ach-body { padding: 10px 12px; }
  .achievement-card .ach-title {
    font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 4px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .achievement-card .ach-author {
    font-size: 15px; color: #8B7355; margin-bottom: 6px;
  }
  .achievement-card .ach-meta {
    display: flex; align-items: center; justify-content: space-between;
    font-size: 14px; color: #B8A08A;
  }

  /* ===== 竞赛创新 Banner ===== */
  .compete-banner {
    position: relative;
    margin: 0;
    min-height: 380px; height: auto;
    overflow: hidden;
    display: flex; align-items: center;
  }
  .compete-banner-bg {
    position: absolute; inset: 0;
    background: linear-gradient(135deg, #2C1810 0%, #5B3A29 30%, #8B5E3C 60%, #C4956A 85%, #D4A57A 100%);
    z-index: 0;
  }
  .compete-banner-bg::before {
    content: ''; position: absolute; inset: 0;
    background: 
      radial-gradient(ellipse 600px 300px at 80% 30%, rgba(196,149,106,0.3), transparent),
      radial-gradient(ellipse 400px 400px at 20% 80%, rgba(91,58,41,0.4), transparent),
      radial-gradient(ellipse 200px 200px at 60% 60%, rgba(212,165,122,0.15), transparent);
  }
  .compete-banner-bg::after {
    content: ''; position: absolute; inset: 0;
    background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.03'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
  }
  /* Decorative geometric shapes */
  .banner-deco-1 {
    position: absolute; top: -60px; right: -40px;
    width: 260px; height: 260px; border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.08);
    z-index: 1;
  }
  .banner-deco-2 {
    position: absolute; bottom: -80px; right: 80px;
    width: 200px; height: 200px; border-radius: 50%;
    background: rgba(196,149,106,0.1);
    z-index: 1;
  }
  .banner-deco-3 {
    position: absolute; top: 20px; left: 40%;
    width: 80px; height: 80px; border-radius: 16px;
    border: 1px solid rgba(255,255,255,0.06);
    transform: rotate(45deg);
    z-index: 1;
  }
  /* Trophy icon */
  .banner-trophy {
    position: absolute; right: 80px; top: 50%; transform: translateY(-50%);
    font-size: 140px; z-index: 1;
    filter: drop-shadow(0 8px 32px rgba(0,0,0,0.3));
    opacity: 0.15;
  }
  .compete-banner-content {
    position: relative; z-index: 2;
    padding: 0 60px;
    width: 100%;
    display: flex; align-items: center; justify-content: center; gap: 80px;
  }
  .banner-left { max-width: 580px; }
  .banner-status {
    display: inline-flex; align-items: center; gap: 8px;
    background: rgba(255,255,255,0.15); padding: 5px 16px;
    border-radius: 20px; font-size: 14px; color: #fff;
    font-weight: 600; margin-bottom: 18px;
    backdrop-filter: blur(8px);
    border: 1px solid rgba(255,255,255,0.1);
  }
  .banner-status .pulse {
    width: 8px; height: 8px; border-radius: 50%;
    background: #6BFF6B; animation: blink 1.2s infinite;
  }
  .banner-event-name {
    font-size: 26px; font-weight: 900; color: #fff;
    margin-bottom: 10px; line-height: 1.4;
    text-shadow: 0 2px 12px rgba(0,0,0,0.2);
  }
  .banner-event-name .highlight {
    color: #FFD700;
    text-shadow: 0 0 20px rgba(255,215,0,0.4);
  }
  .banner-subtitle {
    font-size: 15px; color: rgba(255,255,255,0.85);
    margin-bottom: 20px; line-height: 1.6;
  }
  .banner-meta-row {
    display: flex; align-items: center; gap: 24px; margin-bottom: 24px;
  }
  .banner-meta-item {
    display: flex; align-items: center; gap: 6px;
    font-size: 15px; color: rgba(255,255,255,0.7);
  }
  .banner-meta-item .meta-icon {
    width: 28px; height: 28px; border-radius: 8px;
    background: rgba(255,255,255,0.1);
    display: flex; align-items: center; justify-content: center;
    font-size: 14px;
  }
  .banner-actions { display: flex; gap: 14px; }
  .banner-btn {
    padding: 14px 32px; border-radius: 14px; font-size: 15px;
    font-weight: 700; border: none; cursor: pointer;
    transition: all 0.3s; text-decoration: none;
    letter-spacing: 1px;
  }
  .banner-btn.primary {
    background: linear-gradient(135deg, #FFD700, #FFA500);
    color: #3D2B1F;
    box-shadow: 0 4px 20px rgba(255,165,0,0.4);
  }
  .banner-btn.primary:hover {
    transform: translateY(-3px) scale(1.02);
    box-shadow: 0 8px 30px rgba(255,165,0,0.5);
  }
  .banner-btn.ghost {
    background: rgba(255,255,255,0.1); color: #fff;
    border: 1px solid rgba(255,255,255,0.25);
    backdrop-filter: blur(8px);
  }
  .banner-btn.ghost:hover {
    background: rgba(255,255,255,0.2);
    transform: translateY(-2px);
  }
  /* Right side stats */
  .banner-right-stats {
    display: flex; flex-direction: column; gap: 14px;
    min-width: 200px;
    margin-top: 40px;
  }
  .banner-stat-card {
    background: rgba(255,255,255,0.1);
    backdrop-filter: blur(8px);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 14px; padding: 14px 20px;
    text-align: center;
  }
  .banner-stat-card .stat-num {
    font-size: 28px; font-weight: 900; color: #FFD700;
    text-shadow: 0 0 16px rgba(255,215,0,0.3);
  }
  .banner-stat-card .stat-label {
    font-size: 15px; color: rgba(255,255,255,0.7); margin-top: 2px;
  }

/* ============================================ */
/* ===== 新首页样式 (nh- 前缀) ===== */
/* ============================================ */

/* Hero区 */
.nh-hero {
  margin-top: 60px;
  background:
    linear-gradient(135deg, rgba(60,40,25,0.10) 0%, rgba(80,55,35,0.06) 50%, rgba(60,40,25,0.12) 100%),
    url('./banner.jpg') center center / cover no-repeat;
  padding: 110px 40px 90px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.nh-hero::before {
  content: '';
  position: absolute;
  top: -60px;
  right: -80px;
  width: 300px;
  height: 300px;
  background: radial-gradient(circle, rgba(255,225,180,0.18) 0%, transparent 70%);
  border-radius: 50%;
}
.nh-hero::after {
  content: '';
  position: absolute;
  bottom: -40px;
  left: -60px;
  width: 240px;
  height: 240px;
  background: radial-gradient(circle, rgba(255,225,180,0.14) 0%, transparent 70%);
  border-radius: 50%;
}
.nh-hero-content {
  max-width: 900px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
}
.nh-hero-title {
  font-size: 40px;
  font-weight: 700;
  color: #FFF6E8;
  margin-bottom: 18px;
  letter-spacing: 3px;
  text-shadow: 0 2px 12px rgba(0,0,0,0.55), 0 1px 3px rgba(0,0,0,0.6);
}
.nh-hero-subtitle {
  font-size: 50px;
  font-weight: 800;
  color: #FFFFFF;
  margin-bottom: 44px;
  letter-spacing: 4px;
  text-shadow: 0 2px 16px rgba(0,0,0,0.6), 0 1px 4px rgba(0,0,0,0.7);
  line-height: 1.3;
}
.nh-hero-stats {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0;
  margin-bottom: 40px;
}
.nh-hero-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 0 36px;
}
.nh-hero-stat + .nh-hero-stat {
  border-left: 1px solid rgba(255,255,255,0.32);
}
.nh-hero-stat-num {
  font-size: 32px;
  font-weight: 800;
  color: #FFD79A;
  line-height: 1.2;
  text-shadow: 0 2px 10px rgba(0,0,0,0.5);
}
.nh-hero-stat-label {
  font-size: 15px;
  color: #FFF1DC;
  font-weight: 500;
  letter-spacing: 1px;
  text-shadow: 0 1px 6px rgba(0,0,0,0.55);
}
.nh-hero-btns {
  display: flex;
  justify-content: center;
  gap: 16px;
}
.nh-btn-primary {
  background: #C4956A;
  color: #fff;
  border: none;
  padding: 12px 32px;
  border-radius: 25px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s;
}
.nh-btn-primary:hover {
  background: #B8855A;
  transform: translateY(-2px);
  box-shadow: 0 4px 15px rgba(196,149,106,0.3);
}
.nh-btn-secondary {
  background: rgba(255,255,255,0.12);
  color: #FFF6E8;
  border: 2px solid rgba(255,246,232,0.85);
  padding: 10px 32px;
  border-radius: 25px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.3s;
  backdrop-filter: blur(4px);
}
.nh-btn-secondary:hover {
  background: #C4956A;
  color: #fff;
  border-color: #C4956A;
}

/* 通用板块样式 */
.nh-section {
  max-width: 1200px;
  margin: 0 auto;
  padding: 28px 40px;
}
.nh-section-alt {
  background: linear-gradient(180deg, #F0E6D8 0%, #FAF6F0 100%);
}
.nh-section-header {
  text-align: center;
  margin-bottom: 20px;
}
.nh-section-title {
  font-size: 28px;
  font-weight: 700;
  color: #3D2B1F;
  margin-bottom: 8px;
}
.nh-section-subtitle {
  font-size: 14px;
  color: #8B7355;
}

/* ===== 三习渐进板块 ===== */
.nh-sanxi {
  background: transparent;
  padding: 40px 40px 64px;
  position: relative;
  overflow: hidden;
}
.nh-sanxi::before {
  display: none;
}
.nh-sanxi::after {
  display: none;
}
.nh-sanxi-inner {
  max-width: 1160px;
  margin: 0 auto;
  position: relative;
  z-index: 1;
  text-align: center;
}
.nh-sanxi-badge {
  display: inline-block;
  background: rgba(196,149,106,0.12);
  border: 1px solid #C4956A;
  color: #8B6B3D;
  font-size: 14px;
  font-weight: 600;
  padding: 4px 16px;
  border-radius: 20px;
  margin-bottom: 12px;
  letter-spacing: 2px;
}
.nh-sanxi-title {
  font-size: 36px;
  font-weight: 800;
  color: #3D2B1F;
  margin-bottom: 6px;
  letter-spacing: 2px;
}
.nh-sanxi-title span {
  background: linear-gradient(135deg, #C4956A, #E8C89E);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.nh-sanxi-subtitle {
  font-size: 15px;
  color: #8B7355;
  margin-bottom: 48px;
  letter-spacing: 1px;
}
.nh-sanxi-stages {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  position: relative;
}
.nh-sanxi-stage {
  background: linear-gradient(135deg, #A0724E, #8B5E3C);
  border: 1px solid rgba(160,114,78,0.3);
  border-radius: 16px;
  padding: 28px 22px 24px;
  position: relative;
  transition: all 0.3s;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.nh-sanxi-stage:hover {
  background: linear-gradient(135deg, #6B4530, #5A3D28);
  border-color: rgba(196,149,106,0.6);
  transform: translateY(-4px);
}
.nh-sanxi-stage-num {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  font-weight: 800;
  margin-bottom: 16px;
}
.nh-sanxi-stage.s1 .nh-sanxi-stage-num { background: linear-gradient(135deg,#E8A87C,#D4805A); color:#fff; }
.nh-sanxi-stage.s2 .nh-sanxi-stage-num { background: linear-gradient(135deg,#7BC47F,#4AA54F); color:#fff; }
.nh-sanxi-stage.s3 .nh-sanxi-stage-num { background: linear-gradient(135deg,#5B9BD5,#3578B9); color:#fff; }
.nh-sanxi-stage.s4 .nh-sanxi-stage-num { background: linear-gradient(135deg,#9B7DC8,#7B5CA8); color:#fff; }
.nh-sanxi-stage-label {
  font-size: 16px;
  font-weight: 700;
  color: #fff;
  margin-bottom: 4px;
  letter-spacing: 2px;
}
.nh-sanxi-stage-name {
  font-size: 22px;
  font-weight: 800;
  color: #fff;
  margin-bottom: 6px;
}
.nh-sanxi-stage.s1 .nh-sanxi-stage-name { color: #E8A87C; }
.nh-sanxi-stage.s2 .nh-sanxi-stage-name { color: #7BC47F; }
.nh-sanxi-stage.s3 .nh-sanxi-stage-name { color: #5B9BD5; }
.nh-sanxi-stage.s4 .nh-sanxi-stage-name { color: #9B7DC8; }
.nh-sanxi-stage-desc {
  font-size: 15px;
  color: rgba(255,255,255,0.65);
  margin-bottom: 18px;
  line-height: 1.6;
}
.nh-sanxi-projects {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.nh-sanxi-proj {
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(255,255,255,0.08);
  border-radius: 8px;
  padding: 8px 12px;
  transition: background 0.2s;
}
.nh-sanxi-proj:hover {
  background: rgba(255,255,255,0.16);
}
.nh-sanxi-proj-icon {
  font-size: 16px;
  flex-shrink: 0;
}
.nh-sanxi-proj-name {
  font-size: 14px;
  color: rgba(255,255,255,0.85);
  line-height: 1.4;
}
/* Connecting arrows between stages */
@media (min-width: 1024px) {
  .nh-sanxi-stages {
    gap: 0;
  }
  .nh-sanxi-stage {
    margin: 0 10px;
  }
  }
.nh-sanxi-bottom {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 40px;
  margin-top: 40px;
  padding-top: 28px;
  border-top: 1px solid #EDE3D6;
}
.nh-sanxi-stat {
  text-align: center;
}
.nh-sanxi-stat-num {
  font-size: 28px;
  font-weight: 800;
  color: #C4956A;
}
.nh-sanxi-stat-label {
  font-size: 14px;
  color: #8B7355;
  margin-top: 2px;
}


/* 3x2 图标卡片网格 */
.nh-grid-3x2 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}
.nh-card {
  background: #fff;
  border-radius: 16px;
  padding: 28px 20px;
  text-align: center;
  box-shadow: 0 4px 20px rgba(93,60,35,0.08);
  border: 1px solid #EDE3D6;
  cursor: pointer;
  transition: all 0.3s;
}
.nh-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 30px rgba(93,60,35,0.12);
}
.nh-card-icon {
  font-size: 48px;
  margin-bottom: 12px;
}
.nh-card h3 {
  font-size: 16px;
  font-weight: 700;
  color: #3D2B1F;
  margin-bottom: 6px;
}
.nh-card p {
  font-size: 14px;
  color: #8B7355;
}

  font-size: 16px;
}

/* 师说智能体对话框 */
.nh-ai-dialog { max-width: 880px; margin: 0 auto; background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(93,72,50,0.10); overflow: hidden; }
.nh-ai-dialog-input-wrap { padding: 24px 24px 0; }
.nh-ai-dialog-main-input { width: 100%; box-sizing: border-box; padding: 18px 20px; font-size: 15px; color: #3D2B1F; background: #FAF6F0; border: 2px solid #EDE3D6; border-radius: 14px; outline: none; transition: border-color 0.2s; }
.nh-ai-dialog-main-input:focus { border-color: #C4956A; background: #fff; }
.nh-ai-dialog-main-input::placeholder { color: #C4B8A8; }
.nh-ai-dialog-bar { display: flex; align-items: center; gap: 8px; padding: 10px 0 14px; }
.nh-ai-dialog-tag { padding: 5px 12px; border-radius: 14px; font-size: 14px; border: 1px solid #EDE3D6; background: #FAF6F0; color: #8B7355; cursor: pointer; transition: all 0.15s; white-space: nowrap; }
.nh-ai-dialog-tag:hover { background: #EDE3D6; color: #5D4037; }
.nh-ai-dialog-send { width: 36px; height: 36px; border-radius: 50%; border: none; background: linear-gradient(135deg, #C4956A, #A0724E); color: #fff; font-size: 16px; cursor: pointer; display: flex; align-items: center; justify-content: center; margin-left: auto; transition: all 0.15s; }
.nh-ai-dialog-send:hover { background: linear-gradient(135deg, #A0724E, #8B5E3C); transform: scale(1.05); }
.nh-ai-dialog-suggest { padding: 0 24px 24px; border-top: 1px solid #F0E6D8; }
.nh-ai-dialog-suggest-head { display: flex; align-items: center; gap: 6px; padding: 14px 0 10px; font-size: 15px; color: #8B7355; font-weight: 600; }
.nh-ai-dialog-questions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.nh-ai-dialog-q { display: flex; align-items: center; gap: 6px; padding: 12px 16px; background: #FAF6F0; border: 1px solid #EDE3D6; border-radius: 10px; font-size: 15px; color: #5D4037; cursor: pointer; transition: all 0.15s; }
.nh-ai-dialog-q:hover { background: #EDE3D6; border-color: #C4956A; color: #3D2B1F; }
.nh-ai-dialog-q-icon { font-size: 14px; flex-shrink: 0; }

.nh-ai-dialog-avatar-wrap { text-align: center; padding: 12px 0 6px; }
.nh-ai-dialog-avatar-circle { display: inline-block; width: 64px; height: 64px; border-radius: 50%; background: #fff; box-shadow: 0 2px 12px rgba(93,72,50,0.12); padding: 6px; }
.nh-ai-dialog-avatar-circle img { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }


/* 三习渐进卡片 */
.nh-three-cards {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
}
.nh-three-card {
  background: #fff;
  border-radius: 16px;
  padding: 32px 28px;
  text-align: center;
  box-shadow: 0 4px 20px rgba(93,60,35,0.08);
  border: 1px solid #EDE3D6;
  cursor: pointer;
  transition: all 0.3s;
  min-width: 200px;
}
.nh-three-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 30px rgba(93,60,35,0.12);
}
.nh-three-card-1 { border-top: 4px solid #C4956A; }
.nh-three-card-2 { border-top: 4px solid #7BA7BC; }
.nh-three-card-3 { border-top: 4px solid #6B8E6B; }
.nh-three-icon {
  font-size: 40px;
  margin-bottom: 12px;
}
.nh-three-card h3 {
  font-size: 18px;
  font-weight: 700;
  color: #3D2B1F;
  margin-bottom: 4px;
}
.nh-three-stage {
  font-size: 14px;
  color: #C4956A;
  font-weight: 600;
  margin-bottom: 8px;
}
.nh-three-desc {
  font-size: 14px;
  color: #6B5344;
  margin-bottom: 12px;
}
.nh-three-link {
  font-size: 14px;
  color: #C4956A;
  font-weight: 600;
}
.nh-three-arrow {
  font-size: 24px;
  color: #C4956A;
  font-weight: 700;
}

/* 数字地图布局 */
/* AI数字地图 Tab */
.nh-map-tabs {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-bottom: 32px;
}
.nh-map-tab {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 22px;
  border-radius: 24px;
  border: 1.5px solid #D4C4B0;
  background: #fff;
  color: #5D4037;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.3s;
}
.nh-map-tab:hover {
  border-color: #C4956A;
  background: #FAF6F0;
}
.nh-map-tab.active {
  background: linear-gradient(135deg, #C4956A, #A0724E);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 4px 12px rgba(196,149,106,0.3);
}
.nh-map-tab-icon { font-size: 16px; }
.nh-map-panels { position: relative; min-height: 380px; }
.nh-map-panel { display: none; }
.nh-map-panel.active { display: block; }

/* Tab0: AI数字地图内容 */
.nh-map-layout {
  display: flex;
  gap: 32px;
  align-items: stretch;
}
.nh-map-visual { flex: 1.2; }
.nh-mini-map {
  background: #EDE3D6;
  border-radius: 16px;
  padding: 20px;
  min-height: 260px;
  position: relative;
}
.nh-map-title {
  text-align: center;
  font-size: 15px;
  font-weight: 700;
  color: #3D2B1F;
  margin-bottom: 20px;
  letter-spacing: 2px;
}
.nh-map-districts { position: relative; height: 200px; }
.nh-district {
  position: absolute;
  background: #fff;
  padding: 8px 16px;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
  color: #3D2B1F;
  box-shadow: 0 2px 10px rgba(0,0,0,0.08);
  cursor: pointer;
  transition: all 0.2s;
}
.nh-district:hover {
  background: #C4956A;
  color: #fff;
  transform: scale(1.05);
}
.nh-map-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
}
.nh-map-info h3 {
  font-size: 20px;
  font-weight: 700;
  color: #3D2B1F;
  margin: 0;
}
.nh-map-info > p {
  font-size: 14px;
  color: #8B7355;
  line-height: 1.7;
  margin: 0;
}
.nh-map-checklist {
  display: flex;
  gap: 16px;
  margin: 4px 0;
}
.nh-map-check {
  font-size: 14px;
  color: #5D4037;
  font-weight: 500;
}
.nh-map-stats-row {
  display: flex;
  gap: 12px;
  margin: 8px 0;
}
.nh-map-stat-badge {
  padding: 6px 14px;
  background: #FAF6F0;
  border: 1px solid #EDE3D6;
  border-radius: 16px;
  font-size: 15px;
  color: #5D4037;
}
.nh-map-explore-btn {
  display: inline-block;
  padding: 10px 28px;
  background: linear-gradient(135deg, #C4956A, #A0724E);
  color: #fff;
  border: none;
  border-radius: 24px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.3s;
  width: fit-content;
}
.nh-map-explore-btn:hover {
  background: linear-gradient(135deg, #A0724E, #8B5E3C);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(196,149,106,0.3);
}

/* Tab1: 主题课程卡片 */
.nh-course-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}
.nh-course-card {
  position: relative;
  border-radius: 16px;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.3s;
  background: #fff;
  border: 1px solid #EDE3D6;
}
.nh-course-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(93,60,35,0.12);
}
.nh-course-card-bg { height: 100px; position: relative; }
.nh-course-bg1 { background: linear-gradient(135deg, #E8D5C4, #D4B896); }
.nh-course-bg2 { background: linear-gradient(135deg, #C9B8A8, #A68B6B); }
.nh-course-bg3 { background: linear-gradient(135deg, #D4C4B0, #B8A08A); }
.nh-course-bg4 { background: linear-gradient(135deg, #BFA88E, #8B7355); }
.nh-course-card-content { padding: 16px; }
.nh-course-card-content h4 {
  font-size: 16px;
  font-weight: 700;
  color: #3D2B1F;
  margin: 0 0 6px;
}
.nh-course-card-content p {
  font-size: 15px;
  color: #8B7355;
  line-height: 1.6;
  margin: 0 0 8px;
}
.nh-course-card-tag {
  display: inline-block;
  padding: 3px 10px;
  background: #FAF6F0;
  border: 1px solid #EDE3D6;
  border-radius: 10px;
  font-size: 14px;
  color: #C4956A;
}
.nh-course-card-btn {
  display: block;
  width: calc(100% - 32px);
  margin: 0 16px 16px;
  padding: 8px 0;
  background: #FAF6F0;
  border: 1px solid #EDE3D6;
  border-radius: 8px;
  font-size: 15px;
  color: #5D4037;
  cursor: pointer;
  transition: all 0.3s;
}
.nh-course-card-btn:hover {
  background: #C4956A;
  color: #fff;
  border-color: #C4956A;
}

/* Tab2: 虚拟仿真资源 */
.nh-vr-layout {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 20px;
}
.nh-vr-sidebar {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.nh-vr-side-item {
  padding: 12px 16px;
  border-radius: 10px;
  font-size: 14px;
  color: #8B7355;
  cursor: pointer;
  transition: all 0.3s;
  border: 1px solid transparent;
}
.nh-vr-side-item:hover {
  background: #FAF6F0;
  color: #5D4037;
}
.nh-vr-side-item.active {
  background: linear-gradient(135deg, #C4956A, #A0724E);
  color: #fff;
  border-color: transparent;
}
.nh-vr-content {}
.nh-vr-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.nh-vr-card {
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.3s;
  border: 1px solid #EDE3D6;
}
.nh-vr-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(93,60,35,0.1);
}
.nh-vr-thumb {
  height: 110px;
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  padding: 8px;
}
.nh-vr-thumb1 { background: linear-gradient(135deg, #F0E6D8, #E0D0BC); }
.nh-vr-thumb2 { background: linear-gradient(135deg, #E8DDD0, #D4C4B0); }
.nh-vr-thumb3 { background: linear-gradient(135deg, #DED0C0, #C8B8A4); }
.nh-vr-thumb4 { background: linear-gradient(135deg, #E4D8CA, #D0C0AC); }
.nh-vr-thumb5 { background: linear-gradient(135deg, #D8CCBE, #C4B49E); }
.nh-vr-thumb6 { background: linear-gradient(135deg, #E0D4C6, #CCC0AE); }
.nh-vr-360 {
  background: rgba(196,149,106,0.9);
  color: #fff;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 15px;
  font-weight: 600;
}
.nh-vr-card p {
  padding: 10px 12px 4px;
  font-size: 15px;
  font-weight: 600;
  color: #3D2B1F;
  margin: 0;
  text-align: center;
}
.nh-vr-card .nh-vr-desc {
  padding: 0 12px 10px;
  font-size: 15px;
  color: #8B7355;
  margin: 0;
  text-align: center;
  line-height: 1.4;
}

/* 数据概览 */
.nh-data-overview {
  background: #3D2B1F;
  padding: 50px 40px;
}
.nh-data-grid {
  max-width: 1000px;
  margin: 0 auto;
  display: flex;
  justify-content: space-around;
  text-align: center;
}
.nh-data-item {
  color: #fff;
}
.nh-data-num {
  font-size: 36px;
  font-weight: 800;
  color: #C4956A;
  margin-bottom: 8px;
}
.nh-data-label {
  font-size: 14px;
  color: rgba(255,255,255,0.8);
}

/* 响应式 */
@media (max-width: 768px) {
  .nh-grid-3x2 {
    grid-template-columns: repeat(2, 1fr);
  }
  .nh-three-cards {
    flex-direction: column;
  }
  .nh-three-arrow {
    transform: rotate(90deg);
  }
  .nh-map-layout {
    flex-direction: column;
  }
  .nh-news-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ============================================ */
/* ===== 三习渐进 - 横向流程线设计 (v56) ===== */
.nh-flow {
  position: relative;
  max-width: 1100px;
  margin: 36px auto 0;
  padding: 56px 20px 32px;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 8px;
}
.nh-flow-curve {
  position: absolute;
  top: 92px;
  left: 4%;
  right: 4%;
  height: 90px;
  z-index: 0;
  pointer-events: none;
  overflow: visible;
}
.nh-flow-curve path {
  filter: drop-shadow(0 2px 4px rgba(139,94,60,0.15));
}

.nh-flow-node {
  position: relative;
  z-index: 2;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 0 6px;
}
.nh-flow-grade {
  display: inline-block;
  font-size: 15px;
  font-weight: 700;
  padding: 4px 16px;
  border-radius: 14px;
  margin-bottom: 14px;
  color: #fff;
  letter-spacing: 1px;
  box-shadow: 0 3px 8px rgba(0,0,0,0.12);
}
.nh-flow .n1 .nh-flow-grade { background: linear-gradient(135deg,#F4A878,#E8956C); }
.nh-flow .n2 .nh-flow-grade { background: linear-gradient(135deg,#7BC178,#5BA85A); }
.nh-flow .n3 .nh-flow-grade { background: linear-gradient(135deg,#6BB1ED,#4A90D9); }
.nh-flow .n4 .nh-flow-grade { background: linear-gradient(135deg,#B591D9,#9B6FC9); }

.nh-flow-circle {
  width: 68px; height: 68px;
  border-radius: 50%;
  background: #fff;
  border: 2.5px solid;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 6px 18px rgba(139,94,60,0.16);
  margin-bottom: 14px;
  transition: all 0.3s ease;
  cursor: default;
  position: relative;
}
.nh-flow-circle::after {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  border: 1px dashed rgba(139,94,60,0.25);
  opacity: 0;
  transition: all 0.3s ease;
}
.nh-flow-circle:hover {
  transform: translateY(-4px) scale(1.06);
  box-shadow: 0 10px 26px rgba(139,94,60,0.24);
}
.nh-flow-circle:hover::after { opacity: 1; transform: scale(1.08); }
.nh-flow .n1 .nh-flow-circle { border-color: #E8956C; }
.nh-flow .n2 .nh-flow-circle { border-color: #5BA85A; }
.nh-flow .n3 .nh-flow-circle { border-color: #4A90D9; }
.nh-flow .n4 .nh-flow-circle { border-color: #9B6FC9; }

.nh-flow-circle-icon { font-size: 30px; line-height: 1; }

.nh-flow-name {
  font-size: 22px;
  font-weight: 800;
  margin-bottom: 6px;
}
.nh-flow .n1 .nh-flow-name { color: #E8956C; }
.nh-flow .n2 .nh-flow-name { color: #5BA85A; }
.nh-flow .n3 .nh-flow-name { color: #4A90D9; }
.nh-flow .n4 .nh-flow-name { color: #9B6FC9; }

.nh-flow-tag {
  font-size: 14px;
  font-weight: 600;
  color: #8B6B3D;
  background: rgba(196,149,106,0.12);
  padding: 3px 12px;
  border-radius: 10px;
  display: inline-block;
  margin-bottom: 10px;
}
.nh-flow-desc {
  font-size: 15px;
  line-height: 1.7;
  color: #6B5344;
  max-width: 220px;
}
.nh-flow-desc span { white-space: nowrap; display: inline-block; }

/* 底部优势特征 chips */
.nh-flow-features {
  display: flex;
  justify-content: center;
  gap: 20px;
  margin-top: 8px;
  padding: 14px 20px;
  flex-wrap: wrap;
}
.nh-flow-feature {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 15px;
  font-weight: 600;
  color: #5B3A29;
  background: #fff;
  padding: 8px 18px;
  border-radius: 22px;
  box-shadow: 0 2px 8px rgba(139,94,60,0.12);
  border: 1px solid rgba(196,149,106,0.25);
}
.nh-flow-feature-icon { font-size: 16px; }

/* 响应式 */
@media (max-width: 900px) {
  .nh-flow {
    flex-direction: column;
    padding: 24px 16px;
    gap: 16px;
  }
  .nh-flow-curve { display: none; }
  .nh-flow-node { margin-bottom: 8px; }
  .nh-flow-desc { max-width: 280px; }
  .nh-flow-features { gap: 10px; }
  .nh-flow-feature { font-size: 14px; padding: 6px 12px; }
}

/* ===== 教育名家主题页面样式 (em- 前缀) ===== */
/* ============================================ */

.page#page-edumaster {
  min-height: 100vh; padding-top: 0; background: #FAF6F0;
}

/* ===== 顶部Banner 升级 ===== */
.em-banner {
  position: relative; height: 360px; overflow: hidden;
  background: linear-gradient(135deg, #3D2B1F 0%, #5C3D2E 25%, #7B5240 50%, #A07850 75%, #C4956A 100%);
  display: flex; align-items: center; justify-content: center;
}
.em-banner-pattern {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  opacity: 0.06;
  background-image: 
    repeating-linear-gradient(45deg, transparent, transparent 30px, rgba(255,255,255,0.3) 30px, rgba(255,255,255,0.3) 31px),
    repeating-linear-gradient(-45deg, transparent, transparent 30px, rgba(255,255,255,0.2) 30px, rgba(255,255,255,0.2) 31px);
}
.em-banner::before {
  content: ''; position: absolute; top: -80px; right: -60px;
  width: 300px; height: 300px; border-radius: 50%;
  background: radial-gradient(circle, rgba(196,149,106,0.18) 0%, transparent 70%);
  z-index: 0;
}
.em-banner::after {
  content: ''; position: absolute; bottom: -100px; left: -80px;
  width: 350px; height: 350px; border-radius: 50%;
  background: radial-gradient(circle, rgba(196,149,106,0.14) 0%, transparent 70%);
  z-index: 0;
}
/* 浮动光点 */
.em-banner-dots {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 0; overflow: hidden;
}
.em-dot {
  position: absolute; width: 4px; height: 4px; border-radius: 50%;
  background: rgba(255,255,255,0.4);
  animation: em-float 6s ease-in-out infinite;
}
.em-dot:nth-child(1) { top: 20%; left: 10%; animation-delay: 0s; }
.em-dot:nth-child(2) { top: 60%; left: 25%; animation-delay: 1s; width: 3px; height: 3px; }
.em-dot:nth-child(3) { top: 30%; left: 50%; animation-delay: 2s; }
.em-dot:nth-child(4) { top: 70%; left: 70%; animation-delay: 3s; width: 5px; height: 5px; }
.em-dot:nth-child(5) { top: 15%; left: 85%; animation-delay: 4s; }
.em-dot:nth-child(6) { top: 50%; left: 40%; animation-delay: 1.5s; width: 3px; height: 3px; }
.em-dot:nth-child(7) { top: 80%; left: 55%; animation-delay: 2.5s; }
.em-dot:nth-child(8) { top: 40%; left: 90%; animation-delay: 0.5s; width: 5px; height: 5px; }
@keyframes em-float {
  0%, 100% { transform: translateY(0); opacity: 0.3; }
  50% { transform: translateY(-20px); opacity: 0.8; }
}
/* 底部波浪 */
.em-banner-wave {
  position: absolute; bottom: -1px; left: 0; right: 0; z-index: 2;
}
.em-banner-wave svg { display: block; width: 100%; height: 40px; }
.em-banner-content {
  position: relative; z-index: 1; text-align: center; color: #fff; padding: 0 20px;
}
.em-banner-content h1 { 
  font-size: 36px; font-weight: 800; margin-bottom: 12px; letter-spacing: 4px; 
  text-shadow: 0 2px 12px rgba(0,0,0,0.3);
  animation: em-title-in 1s ease-out;
}
@keyframes em-title-in {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}
.em-banner-subtitle {
  font-size: 15px; opacity: 0.9; line-height: 1.8; max-width: 640px; margin: 0 auto;
  animation: em-title-in 1s ease-out 0.2s both;
}
.em-banner-stats {
  display: flex; gap: 32px; justify-content: center; margin-top: 22px;
  animation: em-title-in 1s ease-out 0.4s both;
}
.em-banner-stat { text-align: center; padding: 8px 0; }
.em-banner-stat .num { font-size: 26px; font-weight: 800; display: block; }
.em-banner-stat .label { font-size: 15px; opacity: 0.75; margin-top: 2px; display: block; }
.em-banner-stat + .em-banner-stat { border-left: 1px solid rgba(255,255,255,0.2); padding-left: 32px; }
/* 开始学习按钮 */
.em-banner-cta {
  margin-top: 22px; animation: em-title-in 1s ease-out 0.6s both;
}
.em-banner-cta button {
  background: rgba(255,255,255,0.2); backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.4); border-radius: 24px;
  padding: 10px 32px; color: #fff; font-size: 14px; font-weight: 600;
  cursor: pointer; transition: all 0.3s; letter-spacing: 1px;
}
.em-banner-cta button:hover { background: rgba(255,255,255,0.35); transform: translateY(-2px); }

/* 返回按钮 */
.em-back {
  position: absolute; top: 20px; left: 20px; z-index: 3;
  background: rgba(255,255,255,0.15); backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,0.25); border-radius: 10px;
  padding: 8px 16px; color: #fff; font-size: 15px; cursor: pointer;
  transition: all 0.2s; display: flex; align-items: center; gap: 6px;
}
.em-back:hover { background: rgba(255,255,255,0.3); }

/* ===== 课程简介区 升级 ===== */
.em-intro {
  max-width: 960px; margin: -50px auto 0; position: relative; z-index: 3;
  background: #fff; border-radius: 20px; padding: 36px 40px;
  box-shadow: 0 12px 48px rgba(60,30,10,0.12); border: 1px solid rgba(237,227,214,0.6);
}
.em-intro::before {
  content: ''; position: absolute; left: 0; top: 20px; bottom: 20px; width: 4px;
  background: linear-gradient(180deg, #C4956A, #A07850); border-radius: 0 4px 4px 0;
}
.em-intro h2 {
  font-size: 20px; font-weight: 700; color: #3D2B1F; margin-bottom: 14px;
  display: flex; align-items: center; gap: 10px;
}
.em-intro h2 .icon { font-size: 22px; }
.em-intro p { font-size: 14px; color: #6B5344; line-height: 2; }

/* ===== 通用板块标题 升级 ===== */
.em-section-header {
  text-align: center; margin-bottom: 28px; position: relative; padding: 24px 0;
}
.em-section-header h2 {
  font-size: 22px; font-weight: 700; color: #3D2B1F;
  position: relative; display: inline-block; padding: 0 20px; z-index: 1;
}
.em-section-header h2::before,
.em-section-header h2::after {
  content: ''; position: absolute; top: 50%; width: 40px; height: 1px;
  background: linear-gradient(90deg, transparent, #C4956A);
}
.em-section-header h2::before { right: 100%; }
.em-section-header h2::after { left: 100%; background: linear-gradient(90deg, #C4956A, transparent); }
.em-section-header .em-section-sub {
  font-size: 15px; color: #8B7355; margin-top: 6px; font-weight: 400;
}

/* ===== 实验过程步骤条 升级 ===== */
.em-process {
  max-width: 960px; margin: 40px auto 0; padding: 0 20px;
}
.em-steps {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 0; position: relative;
}
.em-steps::before {
  content: ''; position: absolute; top: 32px; left: 10%; right: 10%;
  height: 3px; background: linear-gradient(90deg, #C4956A 0%, #A07850 50%, #8B5E3C 100%);
  border-radius: 2px; z-index: 0;
}
.em-step {
  background: #fff; border-radius: 16px; padding: 20px 12px 18px; text-align: center;
  border: 2px solid #EDE3D6; transition: all 0.4s; cursor: pointer;
  position: relative; z-index: 1; margin: 0 8px;
}
.em-step:hover { 
  transform: translateY(-6px); 
  box-shadow: 0 12px 32px rgba(60,30,10,0.12); 
  border-color: #C4956A; 
  background: linear-gradient(180deg, #FFFCF8, #fff);
}
.em-step-num {
  width: 40px; height: 40px; border-radius: 50%; margin: 0 auto 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 700; color: #fff;
  background: linear-gradient(135deg, #C4956A, #8B5E3C);
  box-shadow: 0 4px 12px rgba(160,120,80,0.3);
  transition: all 0.3s;
}
.em-step:hover .em-step-num { transform: scale(1.15); box-shadow: 0 6px 20px rgba(160,120,80,0.4); }
.em-step-icon { font-size: 30px; margin-bottom: 8px; }
.em-step h4 { font-size: 14px; font-weight: 700; color: #3D2B1F; margin-bottom: 6px; }
.em-step p { font-size: 15px; color: #8B7355; line-height: 1.5; }
.em-step-tag {
  display: inline-block; margin-top: 8px; padding: 3px 12px;
  background: linear-gradient(135deg, #F5EDE3, #EDE3D6); border-radius: 10px; 
  font-size: 14px; color: #A07850; font-weight: 600;
}

/* ===== 教育名家人物卡片 升级 ===== */
.em-masters {
  max-width: 960px; margin: 40px auto 0; padding: 0 20px;
}
.em-masters-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;
}
.em-master-card {
  background: #fff; border-radius: 18px; overflow: hidden;
  border: 1px solid #EDE3D6; transition: all 0.4s; cursor: pointer;
  position: relative;
}
.em-master-card:hover { 
  transform: translateY(-6px) scale(1.02); 
  box-shadow: 0 16px 40px rgba(60,30,10,0.12); 
  border-color: #C4956A; 
}
.em-master-header {
  height: 120px; position: relative; display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.em-master-header .em-master-avatar {
  font-size: 56px; position: relative; z-index: 1;
  filter: drop-shadow(0 2px 8px rgba(0,0,0,0.15));
  transition: all 0.4s;
}
.em-master-card:hover .em-master-avatar { transform: scale(1.1); }
.em-master-header::after {
  content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 30px;
  background: linear-gradient(transparent, rgba(0,0,0,0.08));
}
.em-master-body { padding: 18px 20px 22px; text-align: center; }
.em-master-body h4 { font-size: 17px; font-weight: 700; color: #3D2B1F; margin-bottom: 4px; }
.em-master-body .em-master-era { font-size: 15px; color: #C4956A; margin-bottom: 10px; font-weight: 500; }
.em-master-body .em-master-quote {
  font-size: 14px; color: #6B5344; line-height: 1.8; font-style: italic;
  padding: 10px 14px; background: #FAF6F0; border-radius: 10px; margin-bottom: 12px;
  border-left: 3px solid #C4956A;
}
.em-master-body .em-master-tags { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; }
.em-master-tag {
  padding: 3px 10px; border-radius: 8px; font-size: 14px; font-weight: 500;
  background: #F5EDE3; color: #A07850; transition: all 0.2s;
}
.em-master-card:hover .em-master-tag { background: #EDE3D6; }
.em-master-bg1 { background: linear-gradient(135deg, #E8D5C0 0%, #D4B896 60%, #C9A87A 100%); }
.em-master-bg2 { background: linear-gradient(135deg, #C4956A 0%, #B8834E 60%, #A07540 100%); }
.em-master-bg3 { background: linear-gradient(135deg, #8B5E3C 0%, #6B4426 60%, #5A3820 100%); }
.em-master-bg4 { background: linear-gradient(135deg, #A07850 0%, #8B6840 60%, #7A5830 100%); }
.em-master-bg5 { background: linear-gradient(135deg, #D4A57A 0%, #C4956A 60%, #B08558 100%); }
.em-master-bg6 { background: linear-gradient(135deg, #6B4426 0%, #4A2E18 60%, #3A2210 100%); }

/* ===== 打卡闯关区 升级 ===== */
.em-activities {
  max-width: 960px; margin: 40px auto 0; padding: 0 20px;
}
.em-act-grid {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px;
}
.em-act-card {
  background: #fff; border-radius: 16px; padding: 22px 14px; text-align: center;
  border: 1px solid #EDE3D6; transition: all 0.3s; cursor: pointer;
  position: relative; overflow: hidden;
}
.em-act-card::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, #C4956A, #A07850); opacity: 0;
  transition: opacity 0.3s;
}
.em-act-card:hover { 
  transform: translateY(-4px); 
  box-shadow: 0 8px 24px rgba(60,30,10,0.1); 
  border-color: #C4956A; 
}
.em-act-card:hover::before { opacity: 1; }
.em-act-icon { font-size: 36px; margin-bottom: 10px; transition: transform 0.3s; }
.em-act-card:hover .em-act-icon { transform: scale(1.15); }
.em-act-card h4 { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 4px; }
.em-act-card p { font-size: 15px; color: #8B7355; line-height: 1.5; }

/* ===== 知识学习区 升级 ===== */
.em-knowledge {
  max-width: 960px; margin: 40px auto 0; padding: 0 20px;
}
.em-know-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;
}
.em-know-card {
  background: #fff; border-radius: 16px; overflow: hidden;
  border: 1px solid #EDE3D6; transition: all 0.4s; cursor: pointer;
}
.em-know-card:hover { 
  transform: translateY(-5px); 
  box-shadow: 0 12px 32px rgba(60,30,10,0.1); 
  border-color: #C4956A; 
}
.em-know-thumb {
  height: 140px; display: flex; align-items: center; justify-content: center;
  font-size: 52px; position: relative;
  transition: all 0.4s;
}
.em-know-card:hover .em-know-thumb { filter: brightness(1.05); }
.em-know-thumb .em-know-label {
  position: absolute; top: 12px; right: 12px;
  background: rgba(255,255,255,0.95); border-radius: 8px;
  padding: 3px 10px; font-size: 14px; color: #A07850; font-weight: 700;
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.em-know-body { padding: 16px 18px 20px; }
.em-know-body h4 { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 8px; }
.em-know-body p { font-size: 14px; color: #8B7355; line-height: 1.7; }

/* ===== 下载专区 升级 ===== */
.em-downloads {
  max-width: 960px; margin: 40px auto 50px; padding: 0 20px;
}
.em-dl-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
}
.em-dl-card {
  background: #fff; border-radius: 14px; padding: 24px 20px; text-align: center;
  border: 1px solid #EDE3D6; transition: all 0.3s; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; gap: 10px;
}
.em-dl-card:hover { 
  border-color: #C4956A; 
  box-shadow: 0 6px 20px rgba(60,30,10,0.08); 
  transform: translateY(-2px);
}
.em-dl-icon { font-size: 32px; transition: transform 0.3s; }
.em-dl-card:hover .em-dl-icon { transform: scale(1.1); }
.em-dl-card h4 { font-size: 14px; font-weight: 600; color: #3D2B1F; }
.em-dl-btn {
  padding: 8px 20px; background: linear-gradient(135deg, #F5EDE3, #EDE3D6); 
  border: 1px solid #EDE3D6;
  border-radius: 10px; font-size: 14px; color: #A07850; cursor: pointer; 
  transition: all 0.3s; font-weight: 600;
}
.em-dl-btn:hover { background: linear-gradient(135deg, #EDE3D6, #DDD0C0); transform: translateY(-1px); }

/* ===== 滚动渐显动画 ===== */
.em-fade-done {
  opacity: 1; transform: translateY(0);
  transition: opacity 0.7s ease-out, transform 0.7s ease-out;
}

/* ============================================ */

/* ===== 教师内部页面样式 (tch- 前缀) ===== */
.page#page-teacher {
  background: #FAF6F0;
  min-height: 100vh;
  padding-top: 0;
}
.tch-header {
  background: linear-gradient(135deg, #3D2B1F, #5B3A29);
  padding: 20px 32px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: sticky;
  top: 0;
  z-index: 100;
}
.tch-header-left {
  display: flex;
  align-items: center;
  gap: 12px;
}
.tch-avatar {
  width: 42px; height: 42px;
  border-radius: 50%;
  background: #C4956A;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  font-weight: 700;
}
.tch-info h2 {
  font-size: 18px;
  font-weight: 700;
  color: #fff;
  margin: 0;
}
.tch-info p {
  font-size: 14px;
  color: #D4B896;
  margin: 2px 0 0;
}
.tch-header-right {
  display: flex;
  align-items: center;
  gap: 12px;
}
.tch-role-switch {
  display: flex;
  background: rgba(255,255,255,0.12);
  border-radius: 20px;
  overflow: hidden;
}
.tch-role-btn {
  padding: 6px 16px;
  font-size: 14px;
  color: rgba(255,255,255,0.7);
  cursor: pointer;
  border: none;
  background: transparent;
  border-radius: 20px;
  transition: all 0.2s;
  white-space: nowrap;
}
.tch-role-btn.active {
  background: #C4956A;
  color: #fff;
}
.tch-back {
  padding: 8px 16px;
  border-radius: 8px;
  background: rgba(255,255,255,0.1);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.2);
  cursor: pointer;
  font-size: 15px;
  transition: all 0.2s;
}
.tch-back:hover {
  background: rgba(255,255,255,0.2);
}

/* 教师导航Tab */
.tch-nav {
  display: flex;
  background: #fff;
  border-bottom: 1px solid #EDE3D6;
  padding: 0 32px;
  position: sticky;
  top: 82px;
  z-index: 99;
}
.tch-nav-item {
  padding: 14px 24px;
  font-size: 14px;
  font-weight: 600;
  color: #8B7355;
  cursor: pointer;
  border-bottom: 3px solid transparent;
  transition: all 0.2s;
}
.tch-nav-item:hover {
  color: #3D2B1F;
}
.tch-nav-item.active {
  color: #3D2B1F;
  border-bottom-color: #C4956A;
}
.tch-sidebar-item {
  padding: 12px 16px;
  font-size: 15px;
  font-weight: 500;
  color: #8B7355;
  cursor: pointer;
  transition: all 0.2s;
  border-left: 3px solid transparent;
}
.tch-sidebar-item:hover {
  color: #3D2B1F;
  background: #FAF6F0;
}
.tch-sidebar-item.active {
  color: #C4956A;
  background: #FDF5EE;
  border-left-color: #C4956A;
  font-weight: 600;
}
.tch-year-tab {
  padding: 6px 14px;
  font-size: 14px;
  font-weight: 500;
  color: #8B7355;
  cursor: pointer;
  border-radius: 8px;
  border: 1px solid #EDE3D6;
  background: #fff;
  transition: all 0.2s;
}
.tch-year-tab:hover {
  color: #3D2B1F;
  border-color: #C4956A;
}
.tch-year-tab.active {
  color: #fff;
  background: #C4956A;
  border-color: #C4956A;
  font-weight: 600;
}
.tch-project-card.tch-yr-hidden {
  display: none;
}

/* 教师内容区 */
.tch-content {
  max-width: 1100px;
  margin: 0 auto;
  padding: 24px 32px 40px;
}

/* AI工作台 */
.tch-ai-hero {
  text-align: center;
  padding: 40px 20px;
  background: #fff;
  border-radius: 16px;
  border: 1px solid #EDE3D6;
  margin-bottom: 24px;
}
.tch-ai-icon {
  font-size: 56px;
  margin-bottom: 16px;
}
.tch-ai-hero h3 {
  font-size: 24px;
  font-weight: 800;
  color: #C4956A;
  margin-bottom: 4px;
}
.tch-ai-hero h4 {
  font-size: 14px;
  color: #5B3A29;
  margin-bottom: 8px;
}
.tch-ai-hero p {
  font-size: 15px;
  color: #8B7355;
  max-width: 500px;
  margin: 0 auto 20px;
  line-height: 1.6;
}
.tch-ai-input-wrap {
  max-width: 560px;
  margin: 0 auto;
  display: flex;
  gap: 8px;
}
.tch-ai-input {
  flex: 1;
  padding: 12px 16px;
  border: 1px solid #EDE3D6;
  border-radius: 12px;
  font-size: 14px;
  background: #FAF6F0;
  outline: none;
}
.tch-ai-input:focus {
  border-color: #C4956A;
}
.tch-ai-send {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: #C4956A;
  color: #fff;
  border: none;
  font-size: 18px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s;
}
.tch-ai-send:hover {
  background: #8B5E3C;
}
.tch-ai-skills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-top: 16px;
}
.tch-ai-skill {
  padding: 6px 14px;
  border-radius: 16px;
  background: #FAF6F0;
  border: 1px solid #EDE3D6;
  font-size: 14px;
  color: #5B3A29;
  cursor: pointer;
  transition: all 0.2s;
}
.tch-ai-skill:hover {
  border-color: #C4956A;
  background: #FDF9F5;
}

/* 实践项目卡片 */
.tch-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}
.tch-section-header h3 {
  font-size: 16px;
  font-weight: 700;
  color: #3D2B1F;
}
.tch-btn {
  padding: 8px 20px;
  border-radius: 8px;
  font-size: 15px;
  font-weight: 600;
  cursor: pointer;
  border: none;
  transition: all 0.2s;
}
.tch-btn-primary {
  background: #C4956A;
  color: #fff;
}
.tch-btn-primary:hover {
  background: #8B5E3C;
}
.tch-btn-outline {
  background: transparent;
  color: #C4956A;
  border: 1px solid #C4956A;
}
.tch-project-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-bottom: 24px;
}
.tch-project-card {
  background: #fff;
  border-radius: 12px;
  border: 1px solid #EDE3D6;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.2s;
}
.tch-project-card:hover {
  border-color: #C4956A;
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(196,149,106,0.12);
}
.tch-project-banner {
  height: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 36px;
  position: relative;
}
.tch-project-badge {
  position: absolute;
  top: 8px;
  left: 8px;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 600;
}
.tch-badge-active {
  background: #E8F5E9;
  color: #2E7D32;
}
.tch-vr-step { display:flex;align-items:center;padding:8px 10px;border-radius:8px;cursor:pointer;font-size: 15px;color:#5B3A29;margin-bottom:4px;transition:all .2s; }
.tch-vr-step:hover { background:#F5F0EA; }
.tch-vr-step.active { background:#F5E6D3;color:#3D2B1F;font-weight:600; }
.tch-badge-ai {
  position: absolute;
  top: 8px;
  right: 8px;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 9px;
  font-weight: 600;
  background: #FFF3E0;
  color: #E65100;
}
.tch-project-body {
  padding: 12px;
}
.tch-project-body h4 {
  font-size: 15px;
  font-weight: 700;
  color: #3D2B1F;
  margin-bottom: 6px;
}
.tch-project-stats {
  display: flex;
  gap: 12px;
  font-size: 15px;
  color: #8B7355;
  margin-bottom: 4px;
}
.tch-project-time {
  font-size: 14px;
  color: #B0A08A;
}

/* 项目详情弹窗 */
.tch-detail-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.4);
  z-index: 200;
  align-items: center;
  justify-content: center;
}
.tch-detail-overlay.show {
  display: flex;
}
.tch-detail-modal {
  background: #FAF6F0;
  border-radius: 16px;
  width: 90%;
  max-width: 1000px;
  max-height: 85vh;
  display: flex;
  overflow: hidden;
}
.tch-detail-sidebar {
  width: 200px;
  background: #fff;
  border-right: 1px solid #EDE3D6;
  padding: 20px 0;
  flex-shrink: 0;
}
.tch-detail-sidebar-item {
  padding: 12px 20px;
  font-size: 15px;
  color: #8B7355;
  cursor: pointer;
  transition: all 0.2s;
}
.tch-detail-sidebar-item:hover {
  background: #FAF6F0;
  color: #3D2B1F;
}
.tch-detail-sidebar-item.active {
  background: #FDF5EE;
  color: #C4956A;
  font-weight: 600;
  border-right: 3px solid #C4956A;
}
.tch-detail-main {
  flex: 1;
  padding: 20px 24px;
  overflow-y: auto;
}
.tch-detail-top {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid #EDE3D6;
  margin-bottom: 16px;
}
.tch-detail-cover {
  width: 80px; height: 60px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  flex-shrink: 0;
}
.tch-detail-info h4 {
  font-size: 15px;
  font-weight: 700;
  color: #3D2B1F;
  margin-bottom: 4px;
}
.tch-detail-info p {
  font-size: 14px;
  color: #8B7355;
}
.tch-detail-stats {
  margin-left: auto;
  display: flex;
  gap: 16px;
  text-align: center;
}
.tch-detail-stat-num {
  font-size: 20px;
  font-weight: 800;
  color: #C4956A;
}
.tch-detail-stat-label {
  font-size: 14px;
  color: #8B7355;
}
.tch-detail-close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 32px; height: 32px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid #EDE3D6;
  cursor: pointer;
  font-size: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 10px;
}
.tch-table-wrap {
  overflow-x: auto;
}
.tch-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}
.tch-table th {
  background: #FAF6F0;
  padding: 10px 12px;
  text-align: left;
  font-weight: 600;
  color: #5B3A29;
  border-bottom: 2px solid #EDE3D6;
}
.tch-table td {
  padding: 10px 12px;
  border-bottom: 1px solid #F0E8DC;
  color: #3D2B1F;
}
.tch-table tr:hover td {
  background: #FDF9F5;
}
.tch-progress-bar {
  width: 80px;
  height: 6px;
  background: #EDE3D6;
  border-radius: 3px;
  overflow: hidden;
  display: inline-block;
  vertical-align: middle;
  margin-right: 6px;
}
.tch-progress-fill {
  height: 100%;
  border-radius: 3px;
  background: #C4956A;
}
.tch-link {
  color: #C4956A;
  cursor: pointer;
  font-weight: 600;
}
.tch-link:hover {
  text-decoration: underline;
}

/* 消息中心 */
.tch-msg-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.tch-msg-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: #fff;
  border-radius: 10px;
  border: 1px solid #EDE3D6;
  cursor: pointer;
  transition: all 0.2s;
}
.tch-msg-item:hover {
  border-color: #C4956A;
}
.tch-msg-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #C4956A;
  flex-shrink: 0;
}
.tch-msg-dot.read {
  background: #EDE3D6;
}
.tch-msg-content h4 {
  font-size: 15px;
  font-weight: 600;
  color: #3D2B1F;
  margin-bottom: 2px;
}
.tch-msg-content p {
  font-size: 15px;
  color: #8B7355;
}
.tch-msg-time {
  margin-left: auto;
  font-size: 14px;
  color: #B0A08A;
  flex-shrink: 0;
}

/* 教学统计卡 */
.tch-stat-cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-bottom: 24px;
}
.tch-stat-card {
  background: #fff;
  border-radius: 12px;
  border: 1px solid #EDE3D6;
  padding: 20px;
  text-align: center;
}
.tch-stat-card .tch-stat-num {
  font-size: 28px;
  font-weight: 800;
  color: #C4956A;
  margin-bottom: 4px;
}
.tch-stat-card .tch-stat-label {
  font-size: 14px;
  color: #8B7355;
}

@media (max-width: 768px) {
  .tch-project-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .tch-stat-cards {
    grid-template-columns: repeat(2, 1fr);
  }
  .tch-detail-modal {
    flex-direction: column;
  }
  .tch-detail-sidebar {
    width: 100%;
    border-right: none;
    border-bottom: 1px solid #EDE3D6;
    display: flex;
    padding: 0;
  }
  .tch-detail-sidebar-item {
    padding: 10px 16px;
    border-right: 3px solid transparent;
  }
  .tch-detail-sidebar-item.active {
    border-right: none;
    border-bottom: 3px solid #C4956A;
  }
}


/* ===== 模块框架管理样式 ===== */
.tch-view-toggle{display:flex;gap:0;margin-bottom:16px;background:#EDE3D6;border-radius:10px;overflow:hidden;}
.tch-toggle-btn{flex:1;padding:10px 0;text-align:center;font-size:14px;font-weight:600;color:#8B7355;cursor:pointer;transition:all .2s;border:none;background:none;}
.tch-toggle-btn:hover{background:#E0D5C5;}
.tch-toggle-btn.active{background:#C4956A;color:#fff;}
.mod-card{background:#fff;border-radius:12px;border:1px solid #EDE3D6;padding:20px;cursor:pointer;transition:all .2s;position:relative;}
.mod-card:hover{box-shadow:0 4px 16px rgba(0,0,0,0.08);transform:translateY(-2px);}
.mod-card-icon{font-size:28px;margin-bottom:8px;}
.mod-card-name{font-size:15px;font-weight:700;color:#3D2B1F;margin-bottom:4px;}
.mod-card-desc{font-size: 14px;color:#8B7355;margin-bottom:10px;line-height:1.5;}
.mod-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.mod-grade-badge{font-size: 15px;padding:2px 8px;border-radius:10px;font-weight:600;}
.mod-count-badge{font-size: 15px;color:#8B7355;}
.mod-pub-badge{font-size: 15px;padding:2px 8px;border-radius:10px;font-weight:600;}
.mod-pub-yes{background:#E8F5E9;color:#2E7D32;}
.mod-pub-no{background:#FFF3E0;color:#E65100;}
.mod-card-actions{display:flex;gap:8px;margin-top:12px;border-top:1px solid #F5EDE3;padding-top:12px;}
.mod-card-actions button{flex:1;padding:6px 0;border:1px solid #EDE3D6;border-radius:6px;font-size: 14px;cursor:pointer;background:#fff;color:#3D2B1F;transition:all .15s;}
.mod-card-actions button:hover{background:#F5EDE3;}
.mod-card-actions .mod-btn-del{color:#D32F2F;border-color:#FFCDD2;}
.mod-card-actions .mod-btn-del:hover{background:#FFEBEE;}
.mod-card-actions .mod-btn-pub{background:#C4956A;color:#fff;border-color:#C4956A;}
.mod-card-actions .mod-btn-pub:hover{background:#B8845A;}
.mod-detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #EDE3D6;}
.mod-detail-title{font-size:18px;font-weight:700;color:#3D2B1F;display:flex;align-items:center;gap:8px;}
.mod-form-group{margin-bottom:16px;}
.mod-form-label{font-size: 15px;font-weight:600;color:#3D2B1F;margin-bottom:6px;display:block;}
.mod-form-input{width:100%;padding:8px 12px;border:1px solid #EDE3D6;border-radius:8px;font-size: 15px;background:#fff;color:#3D2B1F;box-sizing:border-box;}
.mod-form-input:focus{outline:none;border-color:#C4956A;}
.mod-form-select{padding:8px 12px;border:1px solid #EDE3D6;border-radius:8px;font-size: 15px;background:#fff;color:#3D2B1F;cursor:pointer;}
.mod-project-list{display:flex;flex-direction:column;gap:8px;}
.mod-project-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#FAF6F0;border-radius:8px;border:1px solid #EDE3D6;transition:all .15s;}
.mod-project-item:hover{border-color:#C4956A;}
.mod-proj-num{width:22px;height:22px;border-radius:50%;background:#C4956A;color:#fff;font-size: 15px;display:flex;align-items:center;justify-content:center;font-weight:600;flex-shrink:0;}
.mod-proj-name{flex:1;font-size: 15px;color:#3D2B1F;font-weight:500;}
.mod-proj-year{font-size: 14px;padding:1px 6px;border-radius:8px;font-weight:600;flex-shrink:0;}
.mod-proj-drag{cursor:grab;color:#C4956A;font-size:14px;flex-shrink:0;padding:0 4px;}
.mod-proj-remove{width:24px;height:24px;border-radius:6px;border:1px solid #FFCDD2;background:#fff;color:#D32F2F;cursor:pointer;font-size: 14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;}
.mod-proj-remove:hover{background:#FFEBEE;}
.mod-add-proj-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px;border:2px dashed #EDE3D6;border-radius:8px;color:#8B7355;font-size: 15px;cursor:pointer;transition:all .15s;background:transparent;}
.mod-add-proj-btn:hover{border-color:#C4956A;color:#C4956A;background:#FFF8F0;}
.mod-create-card{background:#FAF6F0;border-radius:12px;border:2px dashed #EDE3D6;padding:20px;cursor:pointer;transition:all .2s;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:180px;}
.mod-create-card:hover{border-color:#C4956A;background:#FFF8F0;}
.mod-create-icon{font-size:32px;margin-bottom:8px;}
.mod-create-text{font-size:14px;color:#8B7355;font-weight:600;}
/* 学生端模块展示 */
.stu-module-header h3{font-size:16px;color:#3D2B1F;font-weight:700;}
.stu-module-card:hover{box-shadow:0 2px 12px rgba(0,0,0,0.06);}
.stu-module-expand:hover{text-decoration:underline;}
.stu-module-projects.show{display:block;}
.stu-module-proj-item:last-child{border-bottom:none;}
/* 项目选择弹窗 */
.mod-proj-picker{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10002;background:rgba(0,0,0,0.5);display:flex;align-items:center;justify-content:center;}
.mod-proj-picker-inner{background:#fff;border-radius:14px;width:520px;max-height:70vh;overflow-y:auto;padding:20px;}
.mod-proj-picker-title{font-size:16px;font-weight:700;color:#3D2B1F;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;}
.mod-proj-picker-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid #EDE3D6;border-radius:8px;margin-bottom:6px;cursor:pointer;transition:all .15s;}
.mod-proj-picker-item:hover{background:#FAF6F0;border-color:#C4956A;}
.mod-proj-picker-item.disabled{opacity:0.4;cursor:not-allowed;background:#F5F5F5;}
.picker-icon{font-size:18px;flex-shrink:0;}
.picker-name{flex:1;font-size: 15px;color:#3D2B1F;font-weight:500;}
.picker-year{font-size: 14px;padding:1px 6px;border-radius:8px;font-weight:600;flex-shrink:0;}
.picker-status{font-size: 15px;color:#C4956A;font-weight:600;flex-shrink:0;}
.picker-status.added{color:#2E7D32;}

/* ===== 学生内部页面样式 (stu- 前缀) ===== */
/* ============================================ */


/* ===== 管理员页面 ===== */
.page#page-admin { background: #f0f2f5; min-height: 100vh; }
.adm-layout { display: flex; min-height: 100vh; }
.adm-sidebar { width: 220px; background: #fff; border-right: 1px solid #e8e8e8; flex-shrink: 0; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.adm-sidebar-logo { padding: 18px 16px; border-bottom: 1px solid #e8e8e8; }
.adm-sidebar-logo h2 { font-size: 15px; color: #3D2B1F; margin: 0; }
.adm-sidebar-logo p { font-size: 15px; color: #999; margin: 4px 0 0; }
.adm-nav-group { border-bottom: 1px solid #f0f0f0; }
.adm-nav-title { padding: 12px 16px; font-size: 15px; font-weight: 600; color: #333; cursor: pointer; display: flex; align-items: center; justify-content: space-between; user-select: none; }
.adm-nav-title:hover { background: #f5f5f5; }
.adm-nav-title .arrow { font-size: 14px; transition: transform 0.2s; }
.adm-nav-title.open .arrow { transform: rotate(90deg); }
.adm-nav-items { display: none; }
.adm-nav-items.show { display: block; }
.adm-nav-item { padding: 9px 16px 9px 36px; font-size: 15px; color: #666; cursor: pointer; transition: all 0.15s; }
.adm-nav-item:hover { background: #e6f7ff; color: #1890ff; }
.adm-nav-item.active { background: #e6f7ff; color: #1890ff; font-weight: 500; border-right: 2px solid #1890ff; }
.adm-main { flex: 1; min-width: 0; }
.adm-topbar { height: 52px; background: #3D2B1F; border-bottom: 1px solid #e8e8e8; display: flex; align-items: center; justify-content: space-between; padding: 0 24px; position: sticky; top: 0; z-index: 100; }
.adm-topbar-left { display: flex; align-items: center; gap: 12px; }
.adm-breadcrumb { font-size: 15px; color: rgba(255,255,255,0.7); }
.adm-breadcrumb span { color: #fff; }
.adm-topbar-right { display: flex; align-items: center; gap: 12px; }
.adm-topbar-msg { font-size: 15px; color: rgba(255,255,255,0.7); cursor: pointer; }
.adm-topbar-user { display: flex; align-items: center; gap: 8px; font-size: 15px; color: #fff; cursor: pointer; }
.adm-topbar-user .badge { background: #1890ff; color: #fff; font-size: 14px; padding: 1px 6px; border-radius: 8px; }
.adm-content { padding: 20px 24px; }
.adm-section { display: none; }
.adm-section.active { display: block; }
.adm-filter { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }
.adm-filter select, .adm-filter input { padding: 6px 10px; border: 1px solid #d9d9d9; border-radius: 4px; font-size: 15px; outline: none; }
.adm-filter select:focus, .adm-filter input:focus { border-color: #1890ff; }
.adm-btn { padding: 6px 16px; border: none; border-radius: 4px; font-size: 15px; cursor: pointer; transition: opacity 0.2s; }
.adm-btn:hover { opacity: 0.85; }
.adm-btn-primary { background: #1890ff; color: #fff; }
.adm-btn-default { background: #fff; color: #333; border: 1px solid #d9d9d9; }
.adm-btn-danger { background: #ff4d4f; color: #fff; }
.adm-btn-link { background: none; color: #1890ff; padding: 2px 6px; }
.adm-tabs { display: flex; border-bottom: 1px solid #e8e8e8; margin-bottom: 16px; }
.adm-tab { padding: 8px 20px; font-size: 15px; color: #666; cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.15s; }
.adm-tab:hover { color: #1890ff; }
.adm-tab.active { color: #1890ff; border-bottom-color: #1890ff; font-weight: 500; }
.adm-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.05); }
.adm-table th { background: #fafafa; padding: 10px 12px; font-size: 14px; color: #666; font-weight: 600; text-align: left; border-bottom: 1px solid #e8e8e8; white-space: nowrap; }
.adm-table td { padding: 10px 12px; font-size: 15px; color: #333; border-bottom: 1px solid #f0f0f0; }
.adm-table tr:hover td { background: #f5f7fa; }
.adm-table .status { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 15px; }
.adm-status-active { background: #f6ffed; color: #52c41a; }
.adm-status-draft { background: #fff7e6; color: #faad14; }
.adm-status-closed { background: #f5f5f5; color: #999; }
.adm-card { background: #fff; border-radius: 8px; padding: 16px 20px; margin-bottom: 16px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); }
.adm-card-title { font-size: 15px; font-weight: 600; color: #333; margin-bottom: 12px; }
.adm-college-item { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: #fafafa; border-radius: 6px; margin-bottom: 8px; }
.adm-college-name { font-size: 14px; font-weight: 500; color: #333; }
.adm-college-actions { display: flex; gap: 8px; }
.adm-style-options { display: flex; gap: 16px; margin-bottom: 24px; }
.adm-style-opt { width: 120px; height: 80px; border: 2px solid #e8e8e8; border-radius: 8px; cursor: pointer; transition: border-color 0.2s; position: relative; display: flex; align-items: center; justify-content: center; }
.adm-style-opt.selected { border-color: #1890ff; }
.adm-style-opt .check { position: absolute; top: 4px; right: 4px; width: 18px; height: 18px; background: #1890ff; border-radius: 50%; color: #fff; font-size: 15px; display: flex; align-items: center; justify-content: center; }
.adm-color-options { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 24px; }
.adm-color-opt { width: 36px; height: 36px; border-radius: 50%; cursor: pointer; border: 2px solid transparent; transition: all 0.2s; position: relative; }
.adm-color-opt.selected { border-color: #333; transform: scale(1.1); }
.adm-color-opt .check { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); color: #fff; font-size: 14px; font-weight: 700; }
.adm-map-sidebar { width: 200px; background: #fff; border-right: 1px solid #e8e8e8; padding: 12px; flex-shrink: 0; max-height: 500px; overflow-y: auto; }
.adm-map-year { font-size: 15px; font-weight: 600; color: #333; padding: 6px 8px; cursor: pointer; }
.adm-map-region { font-size: 14px; color: #666; padding: 4px 8px 4px 20px; cursor: pointer; }
.adm-map-region:hover { color: #1890ff; }
.adm-form-item { display: flex; align-items: flex-start; margin-bottom: 20px; }
.adm-form-label { width: 140px; font-size: 15px; color: #333; padding-top: 6px; flex-shrink: 0; }
.adm-form-body { flex: 1; }
.adm-upload-box { width: 120px; height: 80px; border: 1px dashed #d9d9d9; border-radius: 4px; display: flex; align-items: center; justify-content: center; cursor: pointer; color: #999; font-size: 28px; background: #fafafa; }
.adm-upload-box:hover { border-color: #1890ff; color: #1890ff; }
.adm-form-hint { font-size: 15px; color: #999; margin-top: 4px; }
.adm-radio { display: inline-flex; align-items: center; gap: 4px; margin-right: 16px; font-size: 15px; color: #333; cursor: pointer; }
.adm-radio input { accent-color: #1890ff; }
.adm-switch { display: inline-block; width: 36px; height: 20px; border-radius: 10px; background: #d9d9d9; position: relative; cursor: pointer; transition: background 0.2s; }
.adm-switch.on { background: #1890ff; }
.adm-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; transition: left 0.2s; }
.adm-switch.on::after { left: 18px; }

.page#page-student {
  min-height: 100vh;
  background: #FAF6F0;
}
.stu-header {
  background: linear-gradient(135deg, #C4956A, #8B5E3C);
  padding: 20px 40px;
  display: flex; justify-content: space-between; align-items: center;
}
.stu-header-left { display: flex; align-items: center; gap: 14px; }
.stu-avatar {
  width: 42px; height: 42px; border-radius: 50%;
  background: rgba(255,255,255,0.25); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; font-weight: 700;
}
.stu-info h2 { color: #fff; font-size: 17px; font-weight: 700; margin-bottom: 2px; }
.stu-info p { color: rgba(255,255,255,0.75); font-size: 14px; }
.stu-back {
  background: rgba(255,255,255,0.2); color: #fff;
  border: 1px solid rgba(255,255,255,0.4);
  padding: 8px 20px; border-radius: 20px; cursor: pointer;
  font-size: 15px; transition: all 0.3s;
}
.stu-back:hover { background: rgba(255,255,255,0.35); }

.stu-stats-bar {
  background: #fff; border-bottom: 1px solid #EDE3D6;
  padding: 18px 40px; display: flex; justify-content: center; gap: 48px;
}
.stu-stat-item { text-align: center; }
.stu-stat-num { font-size: 24px; font-weight: 800; color: #3D2B1F; }
.stu-stat-num span { font-size: 14px; font-weight: 600; }
.stu-stat-label { font-size: 14px; color: #8B7355; margin-top: 2px; }

.stu-timeline-section { max-width: 1100px; margin: 0 auto; padding: 32px 40px 0; }
.stu-timeline-title { text-align: center; margin-bottom: 28px; }
.stu-timeline-title h3 { font-size: 20px; font-weight: 800; color: #3D2B1F; margin-bottom: 6px; }
.stu-timeline-title p { font-size: 15px; color: #8B7355; }

.stu-year-row { margin-bottom: 28px; }
.stu-year-row:last-child { margin-bottom: 0; }
.stu-year-header {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 14px; padding-bottom: 10px; border-bottom: 2px solid #EDE3D6;
}
.stu-year-dot {
  width: 36px; height: 36px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 800; color: #fff; flex-shrink: 0;
}
.stu-year-dot.stu-dot-done { background: linear-gradient(135deg, #66BB6A, #43A047); }
.stu-year-dot.stu-dot-current { background: linear-gradient(135deg, #C4956A, #8B5E3C); box-shadow: 0 0 0 4px rgba(196,149,106,0.25); }
.stu-year-dot.stu-dot-locked { background: #BDBDBD; }
.stu-year-info h4 { font-size: 16px; font-weight: 700; color: #3D2B1F; margin-bottom: 2px; }
.stu-year-info p { font-size: 14px; color: #8B7355; }
.stu-year-badge { margin-left: auto; padding: 4px 14px; border-radius: 12px; font-size: 14px; font-weight: 600; }
.stu-badge-done { background: #E8F5E9; color: #2E7D32; }
.stu-badge-current { background: #FFF3E0; color: #E65100; }
.stu-badge-locked { background: #F5F5F5; color: #9E9E9E; }

.stu-proj-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.stu-proj-card {
  background: #fff; border-radius: 12px; overflow: hidden;
  transition: all 0.25s; cursor: pointer; border: 1px solid #EDE3D6; position: relative;
  display: flex; flex-direction: column;
}
.stu-proj-card:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(139,94,60,0.12); border-color: #C4956A; }

.stu-proj-status-tag {
  display: inline-block; font-size: 14px; padding: 1px 8px;
  border-radius: 8px; font-weight: 600; margin-left: 6px;
  vertical-align: middle; flex-shrink: 0;
}
.stu-status-done { background: #E8F5E9; color: #2E7D32; }
.stu-status-current { background: #FFF3E0; color: #E65100; }
.stu-status-locked { background: #F5F5F5; color: #757575; }

.stu-proj-card.stu-card-done { opacity: 0.92; }


.stu-proj-card.stu-card-locked { opacity: 0.88; }


.stu-proj-banner {
  padding: 8px 12px; min-height: 32px;
  display: flex; align-items: center; gap: 8px; position: relative;
}
.stu-proj-icon { font-size: 22px; flex-shrink: 0; }
.stu-proj-type {
  font-size: 14px; padding: 2px 8px; border-radius: 8px;
  background: rgba(255,255,255,0.25); color: #fff; font-weight: 600; margin-left: auto;
  text-shadow: 0 1px 2px rgba(0,0,0,0.3);
}
.stu-proj-body { padding: 6px 12px 0; flex: 1; display: flex; flex-direction: column; }
.stu-proj-name { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 3px; line-height: 1.3; }
.stu-proj-status { display: flex; align-items: center; gap: 6px; margin-bottom: 2px; }
.stu-proj-progress { flex: 1; height: 4px; background: #EDE3D6; border-radius: 2px; overflow: hidden; }
.stu-proj-progress-bar { height: 100%; border-radius: 2px; transition: width 0.3s; }
.stu-proj-progress-bar.stu-bar-done { background: #43A047; }
.stu-proj-progress-bar.stu-bar-current { background: #C4956A; }
.stu-proj-progress-bar.stu-bar-locked { background: #BDBDBD; }
.stu-proj-pct { font-size: 15px; color: #8B7355; font-weight: 600; white-space: nowrap; }

.stu-proj-actions { margin-top: auto; display: flex; gap: 6px; }
.stu-btn-submit {
  flex: 1; padding: 5px 0; border-radius: 8px; font-size: 15px;
  font-weight: 600; border: none; cursor: pointer; transition: all 0.2s; text-align: center;
}
.stu-btn-submit.stu-btn-can-submit { background: #C4956A; color: #fff; }
.stu-btn-submit.stu-btn-can-submit:hover { background: #8B5E3C; }
.stu-btn-submit.stu-btn-can-preview { background: #EDE3D6; color: #8B7355; }
.stu-btn-submit.stu-btn-can-preview:hover { background: #E0D5C5; }
.stu-btn-submit.stu-btn-submitted { background: #E8F5E9; color: #2E7D32; cursor: default; }
.stu-btn-submit.stu-btn-preview-locked { background: #F5F5F5; color: #9E9E9E; cursor: pointer; }
.stu-btn-submit.stu-btn-preview-locked:hover { background: #EEEEEE; }

.stu-portfolio-section { max-width: 1100px; margin: 0 auto; padding: 28px 40px 0; }
.stu-portfolio-card {
  background: linear-gradient(135deg, #8B5E3C, #6D4C2A);
  border-radius: 16px; padding: 28px 32px;
  display: flex; align-items: center; gap: 24px; color: #fff;
}
.stu-portfolio-icon { font-size: 48px; flex-shrink: 0; }
.stu-portfolio-info h4 { font-size: 18px; font-weight: 700; margin-bottom: 6px; }
.stu-portfolio-info p { font-size: 15px; color: rgba(255,255,255,0.75); margin-bottom: 10px; }
.stu-portfolio-progress { display: flex; align-items: center; gap: 10px; }
.stu-portfolio-bar { width: 160px; height: 6px; background: rgba(255,255,255,0.2); border-radius: 3px; overflow: hidden; }
.stu-portfolio-bar-fill { height: 100%; background: #C4956A; border-radius: 3px; }
.stu-portfolio-pct { font-size: 15px; font-weight: 600; }

.stu-timeline-page{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:500;background:#FAF6F0;overflow-y:auto;}
.stu-timeline-page.active{display:block;}
.stu-tl-header{background:linear-gradient(135deg,#8B5E3C,#6D4C2A);padding:16px 20px;display:flex;align-items:center;justify-content:space-between;color:#fff;position:sticky;top:0;z-index:10;}
.stu-tl-header h3{font-size:18px;font-weight:700;margin:0;}
.stu-tl-back{background:rgba(255,255,255,0.2);border:none;color:#fff;padding:6px 14px;border-radius:8px;font-size: 14px;cursor:pointer;}
.stu-tl-back:hover{background:rgba(255,255,255,0.3);}
.stu-tl-body{max-width:960px;margin:0 auto;padding:24px 20px 60px;}
.stu-tl-year{margin-bottom:28px;position:relative;}
.stu-tl-year:last-child{margin-bottom:0;}
.stu-tl-year-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
.stu-tl-year-badge{padding:5px 14px;border-radius:20px;font-size: 15px;font-weight:700;color:#fff;white-space:nowrap;}
.stu-tl-year-title{font-size:15px;font-weight:700;color:#3D2B1F;}
.stu-tl-year-sub{font-size: 15px;color:#8B7355;margin-left:4px;}
.stu-tl-year-status{font-size: 15px;padding:2px 8px;border-radius:8px;font-weight:600;margin-left:auto;}
.stu-tl-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-left:24px;padding-left:20px;border-left:3px solid #EDE3D6;}
.stu-tl-card{background:#fff;border-radius:10px;padding:14px 16px;border:1px solid #EDE3D6;display:flex;align-items:flex-start;gap:10px;transition:box-shadow 0.2s;}
.stu-tl-card:hover{box-shadow:0 3px 12px rgba(93,60,35,0.1);}
.stu-tl-card-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;margin-top:1px;}
.stu-tl-card-info{flex:1;min-width:0;}
.stu-tl-card-name{font-size: 14px;font-weight:600;color:#3D2B1F;margin-bottom:3px;line-height:1.4;}
.stu-tl-card-meta{font-size: 14px;color:#8B7355;}
.stu-tl-card-status{font-size: 14px;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;margin-left:auto;flex-shrink:0;align-self:center;}
.stu-tl-summary{margin-top:24px;padding:20px 24px;background:linear-gradient(135deg,#FAF6F0,#F5E6D3);border-radius:14px;border:1px solid #EDE3D6;}
.stu-tl-summary-title{font-size:14px;font-weight:700;color:#3D2B1F;margin-bottom:12px;}
.stu-tl-summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;}
.stu-tl-summary-item{text-align:center;}
.stu-tl-summary-num{font-size:20px;font-weight:700;color:#C4956A;}
.stu-tl-summary-label{font-size: 14px;color:#8B7355;margin-top:2px;}
.stu-footer { max-width: 1100px; margin: 0 auto; padding: 32px 40px 40px; text-align: center; }
.stu-footer p { font-size: 14px; color: #8B7355; }

/* ===== 子课程展开区域 ===== */
.stu-sub-toggle {
  display: flex; align-items: center; justify-content: center; gap: 4px;
  margin-top: 8px; padding: 6px 0; cursor: pointer;
  font-size: 15px; color: #8B7355; transition: color 0.2s;
  border-top: 1px dashed #E8DDD0;
}
.stu-sub-toggle:hover { color: #C4956A; }
.stu-sub-arrow { transition: transform 0.25s; display: inline-block; font-size: 14px; }
.stu-sub-toggle.open .stu-sub-arrow { transform: rotate(180deg); }
.stu-sub-list {
  max-height: 0; overflow: hidden; transition: max-height 0.35s ease;
}
.stu-sub-list.open { max-height: 600px; }
.stu-sub-table {
  width: 100%; border-collapse: collapse; font-size: 15px; margin-top: 6px;
}
.stu-sub-table th {
  text-align: left; padding: 5px 8px; font-weight: 600; color: #8B7355;
  border-bottom: 1px solid #EDE3D6; font-size: 14px; background: #FAF6F0;
}
.stu-sub-table td {
  padding: 5px 8px; border-bottom: 1px solid #F5EFE7; color: #3D2B1F;
}
.stu-sub-table tr:last-child td { border-bottom: none; }
.stu-sub-status {
  display: inline-block; padding: 1px 6px; border-radius: 8px; font-size: 14px; font-weight: 600;
}
.stu-sub-status-done { background: #E8F5E9; color: #2E7D32; }
.stu-sub-status-current { background: #FFF3E0; color: #E65100; }
.stu-sub-status-locked { background: #F5F5F5; color: #9E9E9E; }
.stu-sub-grade-done { font-weight: 700; color: #2E7D32; }
.stu-sub-grade-current { color: #999; }

/* ===== 学生端研学项目页面 ===== */
.stu-vr-page { display:none; min-height:100vh; background:#FAF6F0; color:#3D2B1F; position:fixed; top:0; left:0; right:0; bottom:0; z-index:500; overflow-y:auto; }
.stu-vr-page.active { display:block; }
.stu-vr-header { display:flex; align-items:center; justify-content:space-between; padding:12px 20px; background:rgba(0,0,0,0.4); backdrop-filter:blur(10px); position:sticky; top:0; z-index:10; flex-wrap:wrap; gap:8px; }
.stu-vr-header-left { display:flex; align-items:center; gap:10px; }
.stu-vr-back { background:rgba(255,255,255,0.15); border:none; color:#fff; padding:6px 12px; border-radius:8px; font-size: 15px; cursor:pointer; transition:background 0.2s; }
.stu-vr-back:hover { background:rgba(255,255,255,0.25); }
.stu-vr-title { font-size:15px; font-weight:700; }
.stu-vr-info-box { display:flex; align-items:center; gap:12px; background:rgba(255,255,255,0.1); border-radius:8px; padding:6px 12px; flex-wrap:wrap; }
.stu-vr-info-item { font-size: 15px; color:rgba(255,255,255,0.7); white-space:nowrap; }
.stu-vr-info-item span { color:#FFD54F; font-weight:700; }
.stu-vr-req-btn { background:linear-gradient(135deg,#C62828,#E53935); border:none; color:#fff; padding:7px 14px; border-radius:8px; font-size: 14px; font-weight:600; cursor:pointer; }

.stu-vr-body { max-width:960px; margin:0 auto; padding:20px 16px 80px; }
.stu-vr-section-title { font-size:16px; font-weight:700; margin-bottom:14px; padding-left:4px; color:rgba(255,255,255,0.85); }
.stu-vr-map-btn { position:fixed; right:16px; bottom:90px; background:linear-gradient(180deg,#C62828,#B71C1C); color:#fff; border:none; padding:10px 7px; border-radius:10px; font-size: 14px; font-weight:600; cursor:pointer; writing-mode:vertical-rl; letter-spacing:2px; box-shadow:0 4px 16px rgba(0,0,0,0.4); z-index:20; }


.stu-vr-base-card { background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.1); border-radius:12px; overflow:hidden; margin-bottom:16px; transition:transform 0.2s,box-shadow 0.2s; cursor:pointer; }
.stu-vr-base-card:hover { transform:translateY(-2px); box-shadow:0 6px 20px rgba(0,0,0,0.3); }
.stu-vr-base-top { display:flex; gap:14px; padding:16px; }
.stu-vr-base-thumb { width:140px; height:95px; border-radius:8px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:36px; }
.stu-vr-base-info { flex:1; min-width:0; }
.stu-vr-base-name { font-size:15px; font-weight:700; color:#fff; margin-bottom:4px; }
.stu-vr-base-tags { display:flex; gap:4px; margin-bottom:6px; flex-wrap:wrap; }
.stu-vr-base-tag { font-size: 14px; padding:2px 6px; border-radius:3px; background:rgba(198,40,40,0.3); color:#FFCDD2; }
.stu-vr-base-addr { font-size: 15px; color:rgba(255,255,255,0.5); margin-bottom:4px; }
.stu-vr-base-addr::before { content:'📍 '; }
.stu-vr-base-desc { font-size: 14px; color:rgba(255,255,255,0.65); line-height:1.6; display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.stu-vr-base-bottom { display:flex; align-items:center; justify-content:space-between; padding:10px 16px; border-top:1px solid rgba(255,255,255,0.06); }
.stu-vr-base-value { font-size: 15px; color:rgba(255,255,255,0.5); max-width:60%; }
.stu-vr-base-value span { color:#FFD54F; }
.stu-vr-enter-btn { background:linear-gradient(135deg,#C62828,#E53935); border:none; color:#fff; padding:5px 14px; border-radius:6px; font-size: 15px; font-weight:600; cursor:pointer; }

/* ===== 基地详情页 ===== */
.stu-vr-detail { display:none; min-height:100vh; background:#FAF6F0; color:#3D2B1F; position:fixed; top:0; left:0; right:0; bottom:0; z-index:600; overflow-y:auto; }
.stu-vr-detail.active { display:block; }
.stu-vr-detail-header { background:linear-gradient(135deg,#C62828,#B71C1C); padding:14px 20px; display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; z-index:10; }
.stu-vr-detail-header h3 { color:#fff; font-size:15px; font-weight:700; }
.stu-vr-detail-close { background:rgba(255,255,255,0.2); border:none; color:#fff; width:32px; height:32px; border-radius:8px; cursor:pointer; font-size:16px; }

.stu-vr-detail-hero { display:flex; gap:20px; padding:24px; max-width:960px; margin:0 auto; background:#fff; border-bottom:1px solid #EDE3D6; }
.stu-vr-detail-photo { width:260px; height:175px; border-radius:10px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:60px; background:linear-gradient(135deg,#5D4037,#8D6E63); }
.stu-vr-detail-meta { flex:1; }
.stu-vr-detail-meta h2 { font-size:20px; font-weight:700; color:#3D2B1F; margin-bottom:10px; }
.stu-vr-detail-field { font-size: 15px; color:#6B5344; line-height:2; }
.stu-vr-detail-field strong { color:#3D2B1F; }

.stu-vr-detail-body { max-width:960px; margin:0 auto; padding:24px 20px; display:flex; gap:20px; }
.stu-vr-detail-left { flex:1; min-width:0; }
.stu-vr-detail-right { width:260px; flex-shrink:0; }

.stu-vr-res-tabs { display:flex; gap:0; margin-bottom:16px; border-bottom:2px solid #EDE3D6; }
.stu-vr-res-tab { padding:8px 14px; font-size: 14px; color:#8B7355; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-2px; transition:all 0.2s; }
.stu-vr-res-tab.active { color:#C62828; border-bottom-color:#C62828; font-weight:600; }

.stu-vr-res-item { display:flex; align-items:center; gap:12px; padding:12px 14px; background:#fff; border:1px solid #EDE3D6; border-radius:10px; margin-bottom:8px; transition:box-shadow 0.2s; }
.stu-vr-res-item:hover { box-shadow:0 2px 8px rgba(0,0,0,0.06); }
.stu-vr-res-icon { width:40px; height:40px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:20px; flex-shrink:0; }
.stu-vr-res-icon.vr { background:#FFF3E0; }
.stu-vr-res-icon.video { background:#E3F2FD; }
.stu-vr-res-icon.doc { background:#F3E5F5; }
.stu-vr-res-info { flex:1; min-width:0; }
.stu-vr-res-name { font-size: 15px; font-weight:600; color:#3D2B1F; }
.stu-vr-res-meta { font-size: 15px; color:#8B7355; margin-top:2px; }
.stu-vr-res-status { font-size: 15px; padding:3px 8px; border-radius:4px; font-weight:600; }
.stu-vr-res-done { background:#E8F5E9; color:#2E7D32; }
.stu-vr-res-undone { background:#FFF3E0; color:#E65100; }

.stu-vr-ai-card { background:#fff; border:1px solid #EDE3D6; border-radius:12px; padding:16px; }
.stu-vr-ai-title { font-size:14px; font-weight:700; color:#3D2B1F; margin-bottom:12px; display:flex; justify-content:space-between; align-items:center; }
.stu-vr-ai-refresh { font-size: 14px; color:#C4956A; cursor:pointer; background:none; border:none; font-weight:500; }
.stu-vr-ai-item { display:flex; gap:10px; margin-bottom:12px; cursor:pointer; }
.stu-vr-ai-item:last-child { margin-bottom:0; }
.stu-vr-ai-thumb { width:56px; height:42px; border-radius:6px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:18px; background:linear-gradient(135deg,#5D4037,#8D6E63); }
.stu-vr-ai-name { font-size: 14px; color:#3D2B1F; line-height:1.5; font-weight:500; }

/* ===== 研学要求弹窗 ===== */
.stu-vr-req-overlay { display:none; position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,0.6); backdrop-filter:blur(4px); z-index:10000; align-items:center; justify-content:center; }
.stu-vr-req-overlay.active { display:flex; }
.stu-vr-req-dialog { background:#fff; border-radius:16px; width:90%; max-width:460px; overflow:hidden; box-shadow:0 20px 60px rgba(0,0,0,0.4); animation:stuVrIn 0.25s ease; }
@keyframes stuVrIn { from{opacity:0;transform:scale(0.92)translateY(16px)} to{opacity:1;transform:scale(1)translateY(0)} }
.stu-vr-req-close { float:right; width:30px; height:30px; border-radius:6px; background:#F5F0EA; border:none; cursor:pointer; font-size:14px; color:#8B7355; display:flex; align-items:center; justify-content:center; margin:14px 14px 0 0; }
.stu-vr-req-body { padding:16px 24px 24px; }
.stu-vr-req-section { margin-bottom:16px; }
.stu-vr-req-section h4 { font-size:14px; font-weight:700; color:#3D2B1F; margin-bottom:8px; }
.stu-vr-req-section p { font-size: 14px; color:#5B3A29; line-height:1.8; }
.stu-vr-req-rules { background:#FDF8F3; border-radius:8px; padding:14px; }
.stu-vr-req-rules h4 { font-size:14px; font-weight:700; color:#3D2B1F; margin-bottom:8px; }
.stu-vr-req-rules ol { padding-left:18px; margin:0; }
.stu-vr-req-rules li { font-size: 15px; color:#5B3A29; line-height:2; }
.stu-vr-req-start { width:100%; padding:12px; border:none; border-radius:10px; background:linear-gradient(135deg,#C62828,#E53935); color:#fff; font-size:14px; font-weight:700; cursor:pointer; margin-top:6px; }
.stu-vr-req-start:hover { box-shadow:0 4px 16px rgba(198,40,40,0.4); }
.stu-submit-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.45);z-index:100000;display:flex;align-items:center;justify-content:center;}
.stu-submit-dialog{background:#fff;border-radius:14px;padding:28px 32px;width:420px;max-width:90vw;box-shadow:0 12px 40px rgba(0,0,0,0.2);animation:stuVrFadeIn .25s ease;}
.stu-submit-title{font-size:18px;font-weight:700;color:#3D2B1F;margin-bottom:4px;}
.stu-submit-proj{font-size: 15px;color:#8D6E63;margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid #EDE3D6;}
.stu-submit-field{margin-bottom:14px;}
.stu-submit-field label{display:block;font-size: 15px;font-weight:600;color:#5D4037;margin-bottom:5px;}
.stu-submit-field input,.stu-submit-field textarea{width:100%;padding:9px 12px;border:1.5px solid #EDE3D6;border-radius:8px;font-size:14px;color:#3D2B1F;outline:none;transition:border-color .2s;box-sizing:border-box;}
.stu-submit-field input:focus,.stu-submit-field textarea:focus{border-color:#C4956A;}
.stu-submit-field textarea{resize:vertical;min-height:80px;}
.stu-submit-upload{border:2px dashed #EDE3D6;border-radius:8px;padding:18px;text-align:center;color:#8D6E63;font-size: 15px;cursor:pointer;transition:border-color .2s;}
.stu-submit-upload:hover{border-color:#C4956A;color:#C4956A;}
.stu-submit-btns{display:flex;gap:12px;justify-content:flex-end;margin-top:20px;}
.stu-submit-cancel{padding:9px 22px;border:1.5px solid #EDE3D6;border-radius:8px;background:#fff;color:#5D4037;font-size:14px;cursor:pointer;transition:all .2s;}
.stu-submit-cancel:hover{background:#F5F0EB;}
.stu-submit-ok{padding:9px 22px;border:none;border-radius:8px;background:linear-gradient(135deg,#C4956A,#A67B5B);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;}
.stu-submit-ok:hover{background:linear-gradient(135deg,#A67B5B,#8D6E63);}




.stu-submit-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.45);z-index:100000;display:flex;align-items:center;justify-content:center;}
.stu-submit-dialog{background:#fff;border-radius:14px;padding:28px 32px;width:420px;max-width:90vw;box-shadow:0 12px 40px rgba(0,0,0,0.2);animation:stuVrFadeIn .25s ease;}
.stu-submit-title{font-size:18px;font-weight:700;color:#3D2B1F;margin-bottom:4px;}
.stu-submit-proj{font-size: 15px;color:#8D6E63;margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid #EDE3D6;}
.stu-submit-field{margin-bottom:14px;}
.stu-submit-field label{display:block;font-size: 15px;font-weight:600;color:#5D4037;margin-bottom:5px;}
.stu-submit-field input,.stu-submit-field textarea{width:100%;padding:9px 12px;border:1.5px solid #EDE3D6;border-radius:8px;font-size:14px;color:#3D2B1F;outline:none;transition:border-color .2s;box-sizing:border-box;}
.stu-submit-field input:focus,.stu-submit-field textarea:focus{border-color:#C4956A;}
.stu-submit-field textarea{resize:vertical;min-height:80px;}
.stu-submit-upload{border:2px dashed #EDE3D6;border-radius:8px;padding:18px;text-align:center;color:#8D6E63;font-size: 15px;cursor:pointer;transition:border-color .2s;}
.stu-submit-upload:hover{border-color:#C4956A;color:#C4956A;}
.stu-submit-btns{display:flex;gap:12px;justify-content:flex-end;margin-top:20px;}
.stu-submit-cancel{padding:9px 22px;border:1.5px solid #EDE3D6;border-radius:8px;background:#fff;color:#5D4037;font-size:14px;cursor:pointer;transition:all .2s;}
.stu-submit-cancel:hover{background:#F5F0EB;}
.stu-submit-ok{padding:9px 22px;border:none;border-radius:8px;background:linear-gradient(135deg,#C4956A,#A67B5B);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;}
.stu-submit-ok:hover{background:linear-gradient(135deg,#A67B5B,#8D6E63);}

/* === 研学项目介绍区 === */
.stu-vr-intro{background:linear-gradient(135deg,#8B1A1A,#C62828,#B71C1C);border-radius:14px;padding:28px 30px;margin-bottom:20px;box-shadow:0 4px 16px rgba(0,0,0,0.15);}
.stu-vr-intro-name{font-size:22px;font-weight:700;color:#FFFFFF;margin-bottom:10px;}
.stu-vr-intro-desc{font-size: 15px;color:rgba(255,255,255,0.85);line-height:1.9;margin-bottom:16px;}
.stu-vr-intro-stats{display:flex;gap:16px;flex-wrap:wrap;}
.stu-vr-stat{background:rgba(255,255,255,0.15);border-radius:10px;padding:12px 18px;flex:1;min-width:100px;text-align:center;backdrop-filter:blur(4px);}
.stu-vr-stat-num{font-size:24px;font-weight:700;color:#FFFFFF;}
.stu-vr-stat-label{font-size: 15px;color:rgba(255,255,255,0.7);margin-top:3px;}
.stu-vr-bases-wrap{background:linear-gradient(180deg,#2d1515,#1a0a0a);border-radius:14px;padding:20px 24px;margin-top:4px;}
.stu-vr-intro-divider{height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.3),transparent);margin:20px 0;}

/* === 学生端通用项目详情页 === */
.stu-proj-page{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:500;background:#FAF6F0;overflow-y:auto;}
.stu-proj-page.active{display:block;}
.stu-proj-header{padding:16px 20px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#8B1A1A,#C62828);color:#fff;position:sticky;top:0;z-index:10;}
.stu-proj-header h3{font-size:18px;font-weight:700;margin:0;}
.stu-proj-header-btns{display:flex;gap:8px;}
.stu-proj-header-btn{background:rgba(255,255,255,0.2);border:none;color:#fff;padding:6px 14px;border-radius:8px;font-size: 14px;cursor:pointer;}
.stu-proj-header-btn:hover{background:rgba(255,255,255,0.3);}
.stu-proj-body{max-width:960px;margin:0 auto;padding:20px 16px 80px;}
/* 项目概览卡 */
.stu-proj-overview{background:linear-gradient(135deg,#8B1A1A,#C62828,#B71C1C);border-radius:14px;padding:24px 28px;margin-bottom:20px;color:#fff;}
.stu-proj-ov-name{font-size:20px;font-weight:700;margin-bottom:6px;}
.stu-proj-ov-meta{display:flex;gap:12px;margin-bottom:14px;font-size: 14px;opacity:0.8;flex-wrap:wrap;}
.stu-proj-ov-meta span{background:rgba(255,255,255,0.15);padding:3px 10px;border-radius:6px;}
.stu-proj-ov-desc{font-size: 15px;line-height:1.8;opacity:0.9;margin-bottom:16px;}
.stu-proj-ov-stats{display:flex;gap:12px;flex-wrap:wrap;}
.stu-proj-ov-stat{background:rgba(255,255,255,0.12);border-radius:10px;padding:10px 16px;flex:1;min-width:90px;text-align:center;backdrop-filter:blur(4px);}
.stu-proj-ov-stat-num{font-size:22px;font-weight:700;}
.stu-proj-ov-stat-label{font-size: 15px;opacity:0.7;margin-top:2px;}
/* 状态徽章 */
.stu-proj-badge{display:inline-block;padding:3px 10px;border-radius:6px;font-size: 15px;font-weight:600;}
.stu-proj-badge-done{background:#E8F5E9;color:#2E7D32;}
.stu-proj-badge-current{background:#FFF3E0;color:#E65100;}
.stu-proj-badge-locked{background:#ECEFF1;color:#607D8B;}
/* 内容区块 */
.stu-proj-section{background:#fff;border-radius:12px;padding:20px 24px;margin-bottom:16px;box-shadow:0 1px 6px rgba(0,0,0,0.05);}
.stu-proj-section-title{font-size:15px;font-weight:700;color:#3D2B1F;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid #EDE3D6;}
/* 学习内容列表 */
.stu-proj-res-list{display:flex;flex-direction:column;gap:10px;}
.stu-proj-res-item{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:8px;background:#FAF6F0;transition:background .2s;}
.stu-proj-res-item:hover{background:#F0E8DD;}
.stu-proj-res-icon{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;}
.stu-proj-res-icon.video{background:#FFF3E0;}
.stu-proj-res-icon.doc{background:#E8F5E9;}
.stu-proj-res-icon.vr{background:#FCE4EC;}
.stu-proj-res-icon.img{background:#E3F2FD;}
.stu-proj-res-info{flex:1;min-width:0;}
.stu-proj-res-name{font-size: 15px;font-weight:600;color:#3D2B1F;}
.stu-proj-res-meta{font-size: 15px;color:#8D6E63;margin-top:2px;}
.stu-proj-res-status{font-size: 15px;font-weight:600;padding:3px 8px;border-radius:4px;flex-shrink:0;}
.stu-proj-res-done{background:#E8F5E9;color:#2E7D32;}
.stu-proj-res-doing{background:#FFF3E0;color:#E65100;}
.stu-proj-res-todo{background:#ECEFF1;color:#607D8B;}
/* 提交记录 */
.stu-proj-submit-item{padding:14px;border-radius:8px;background:#FAF6F0;margin-bottom:10px;}
.stu-proj-submit-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;}
.stu-proj-submit-title{font-size: 15px;font-weight:600;color:#3D2B1F;}
.stu-proj-submit-time{font-size: 15px;color:#8D6E63;}
.stu-proj-submit-body{font-size: 14px;color:#5D4037;line-height:1.7;margin-bottom:8px;}
.stu-proj-submit-score{display:flex;align-items:center;gap:8px;}
.stu-proj-score-val{font-size:18px;font-weight:700;color:#C62828;}
.stu-proj-score-label{font-size: 15px;color:#8D6E63;}
.stu-proj-submit-actions{display:flex;gap:8px;margin-top:8px;}
.stu-proj-btn-sm{padding:5px 12px;border-radius:6px;border:1px solid #EDE3D6;background:#fff;color:#5D4037;font-size: 15px;cursor:pointer;transition:all .2s;}
.stu-proj-btn-sm:hover{background:#F5F0EB;border-color:#C4956A;}
/* 底部操作栏 */
.stu-proj-actions-bar{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid #EDE3D6;padding:12px 20px;display:flex;justify-content:center;gap:12px;z-index:10;}
.stu-proj-action-btn{padding:10px 28px;border-radius:10px;border:none;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;}
.stu-proj-btn-primary{background:linear-gradient(135deg,#C62828,#E53935);color:#fff;}
.stu-proj-btn-primary:hover{box-shadow:0 4px 12px rgba(198,40,40,0.3);}
.stu-proj-btn-secondary{background:#fff;color:#5D4037;border:1.5px solid #EDE3D6;}
.stu-proj-btn-secondary:hover{background:#F5F0EB;}
/* 进度条 */
.stu-proj-progress-wrap{margin:12px 0;}
.stu-proj-progress-bar{height:8px;background:#EDE3D6;border-radius:4px;overflow:hidden;}
.stu-proj-progress-fill{height:100%;border-radius:4px;transition:width .3s;}
.stu-proj-progress-fill.done{background:linear-gradient(90deg,#2E7D32,#43A047);}
.stu-proj-progress-fill.current{background:linear-gradient(90deg,#E65100,#FF8F00);}

/* ===== v46: 阶段式学习流程 ===== */
.stu-stage-bar{display:flex;gap:0;margin-bottom:20px;background:#fff;border-radius:12px;padding:16px 12px;box-shadow:0 1px 6px rgba(0,0,0,0.05);}
.stu-stage-item{flex:1;text-align:center;position:relative;cursor:pointer;padding:8px 4px;transition:all .2s;}
.stu-stage-item:not(:last-child)::after{content:'';position:absolute;top:22px;right:-4px;width:8px;height:2px;background:#EDE3D6;z-index:1;}
.stu-stage-item.stu-stage-done:not(:last-child)::after{background:#43A047;}
.stu-stage-item.stu-stage-active:not(:last-child)::after{background:#C4956A;}
.stu-stage-num{width:28px;height:28px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size: 14px;font-weight:700;margin-bottom:4px;transition:all .2s;}
.stu-stage-item.stu-stage-done .stu-stage-num{background:#43A047;color:#fff;}
.stu-stage-item.stu-stage-active .stu-stage-num{background:#C4956A;color:#fff;}
.stu-stage-item.stu-stage-locked .stu-stage-num{background:#E0E0E0;color:#9E9E9E;}
.stu-stage-label{font-size: 15px;color:#8D6E63;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80px;margin:0 auto;}
.stu-stage-item.stu-stage-active .stu-stage-label{color:#C4956A;font-weight:600;}
.stu-stage-item.stu-stage-done .stu-stage-label{color:#43A047;font-weight:600;}
.stu-stage-item.stu-stage-locked .stu-stage-label{color:#BDBDBD;}
.stu-stage-content{display:none;}
.stu-stage-content.active{display:block;}
.stu-course-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.stu-course-card{background:#FAF6F0;border-radius:10px;overflow:hidden;transition:all .2s;cursor:pointer;border:1.5px solid transparent;}
.stu-course-card:hover{border-color:#C4956A;box-shadow:0 2px 8px rgba(196,149,106,0.15);}
.stu-course-thumb{height:80px;display:flex;align-items:center;justify-content:center;font-size:28px;position:relative;}
.stu-course-thumb.video-thumb{background:linear-gradient(135deg,#5D4037,#8D6E63);}
.stu-course-thumb.doc-thumb{background:linear-gradient(135deg,#2E7D32,#43A047);}
.stu-course-thumb.vr-thumb{background:linear-gradient(135deg,#1565C0,#42A5F5);}
.stu-course-thumb.exam-thumb{background:linear-gradient(135deg,#E65100,#FF8F00);}
.stu-course-thumb.discuss-thumb{background:linear-gradient(135deg,#6A1B9A,#AB47BC);}
.stu-course-thumb.create-thumb{background:linear-gradient(135deg,#C62828,#E53935);}
.stu-course-thumb.checkin-thumb{background:linear-gradient(135deg,#00695C,#26A69A);}
.stu-course-badge{position:absolute;top:6px;right:6px;font-size: 14px;padding:2px 6px;border-radius:4px;font-weight:600;}
.stu-course-badge.done{background:#43A047;color:#fff;}
.stu-course-badge.doing{background:#FF8F00;color:#fff;}
.stu-course-badge.todo{background:rgba(255,255,255,0.6);color:#666;}
.stu-course-info{padding:10px 12px;}
.stu-course-name{font-size: 15px;font-weight:600;color:#3D2B1F;line-height:1.4;margin-bottom:4px;}
.stu-course-meta{font-size: 15px;color:#8D6E63;}
.stu-res-table{width:100%;border-collapse:collapse;font-size: 14px;}
.stu-res-table th{background:#FAF6F0;padding:10px 12px;text-align:left;color:#5D4037;font-weight:600;border-bottom:2px solid #EDE3D6;}
.stu-res-table td{padding:10px 12px;border-bottom:1px solid #F5F0EB;color:#3D2B1F;}
.stu-res-table tr:hover td{background:#FAF6F0;}
.stu-vr-card{background:linear-gradient(135deg,#1565C0,#42A5F5);border-radius:12px;padding:20px;color:#fff;margin-bottom:12px;cursor:pointer;transition:all .2s;}
.stu-vr-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(21,101,192,0.3);}
.stu-vr-card-icon{font-size:32px;margin-bottom:8px;}
.stu-vr-card-name{font-size:16px;font-weight:700;margin-bottom:4px;}
.stu-vr-card-desc{font-size: 14px;opacity:0.85;line-height:1.6;}
.stu-checkin-card{background:#fff;border-radius:12px;padding:16px 20px;margin-bottom:12px;border:1.5px solid #EDE3D6;}
.stu-checkin-card:hover{border-color:#C4956A;}
.stu-checkin-title{font-size:14px;font-weight:600;color:#3D2B1F;margin-bottom:8px;}
.stu-checkin-info{font-size: 14px;color:#8D6E63;line-height:1.8;}
.stu-discuss-card{background:#FAF6F0;border-radius:12px;padding:16px 20px;margin-bottom:12px;}
.stu-discuss-topic{font-size:14px;font-weight:600;color:#3D2B1F;margin-bottom:8px;line-height:1.5;}
.stu-discuss-meta{font-size: 15px;color:#8D6E63;margin-bottom:10px;}
.stu-discuss-input{width:100%;border:1.5px solid #EDE3D6;border-radius:8px;padding:10px 14px;font-size: 15px;resize:none;min-height:60px;outline:none;font-family:inherit;}
.stu-discuss-input:focus{border-color:#C4956A;}
.stu-discuss-btn{margin-top:8px;padding:8px 20px;border-radius:8px;border:none;background:#C4956A;color:#fff;font-size: 14px;font-weight:600;cursor:pointer;}
.stu-create-area{background:#FAF6F0;border-radius:12px;padding:20px;margin-bottom:12px;}
.stu-create-title{font-size:14px;font-weight:600;color:#3D2B1F;margin-bottom:6px;}
.stu-create-desc{font-size: 14px;color:#8D6E63;margin-bottom:12px;line-height:1.6;}
.stu-create-editor{width:100%;min-height:120px;border:1.5px solid #EDE3D6;border-radius:8px;padding:12px;font-size: 15px;resize:vertical;outline:none;font-family:inherit;background:#fff;line-height:1.8;}
.stu-create-editor:focus{border-color:#C4956A;}
.stu-create-actions{display:flex;gap:10px;margin-top:10px;}
.stu-feedback-box{background:#FFF8E1;border-radius:10px;padding:14px 18px;margin-top:12px;border-left:4px solid #FF8F00;}
.stu-feedback-label{font-size: 14px;font-weight:600;color:#E65100;margin-bottom:4px;}
.stu-feedback-text{font-size: 14px;color:#5D4037;line-height:1.7;}
.stu-feedback-score{display:inline-block;background:#C62828;color:#fff;font-size:14px;font-weight:700;padding:4px 12px;border-radius:6px;margin-top:8px;}


/* 教育家精神六维卡片 */
.spirit-hex-wrap { display: flex; flex-direction: column; align-items: center; padding: 40px 20px 20px; position: relative; }
.spirit-hex-container { position: relative; width: 540px; height: 480px; margin: 0 auto 24px; }
.spirit-hex-svg { width: 100%; height: 100%; }
.spirit-hex-center { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); text-align: center; pointer-events: none; }
.spirit-hex-center-title { font-size: 22px; font-weight: 700; color: #3D2B1F; line-height: 1.4; }
.spirit-hex-center-sub { font-size: 15px; color: #8B7355; margin-top: 6px; letter-spacing: 2px; }
.spirit-hex-edge { cursor: pointer; transition: all 0.25s; }
.spirit-hex-edge:hover { filter: brightness(1.15); }
.spirit-hex-edge.active { filter: brightness(1.2); }
.spirit-hex-label { position: absolute; font-size: 15px; font-weight: 700; color: #fff; padding: 6px 14px; border-radius: 14px; white-space: nowrap; cursor: pointer; transition: all 0.3s; box-shadow: 0 2px 10px rgba(0,0,0,0.18); text-align: center; line-height: 1.3; letter-spacing: 1px; }
.spirit-hex-label:hover { transform: scale(1.06); box-shadow: 0 4px 18px rgba(0,0,0,0.25); }
.spirit-hex-label.active-label { box-shadow: 0 4px 20px rgba(0,0,0,0.35); transform: scale(1.08); }
.spirit-expand-area { display: none; width: 100%; max-width: 960px; margin: 0 auto; animation: spiritFadeIn 0.35s ease; }
.spirit-expand-area.show { display: block; }
/* ===== AI 精神浸润改造 CSS ===== */
.ai-spirit-hint { background: linear-gradient(135deg, #FFFCF6 0%, #FFF7E8 100%); border: 1px dashed #D8B26A; border-radius: 10px; padding: 10px 18px; text-align: center; margin-top: 16px; display: flex; align-items: center; justify-content: center; gap: 8px; }
.ai-spirit-hint-icon { font-size: 16px; }
.ai-spirit-hint-title { font-size: 15px; font-weight: 600; color: #8B5A2B; }
.ai-spirit-hint-desc { font-size: 14px; color: #8B7355; line-height: 1.7; max-width: 520px; margin: 0 auto; }
.ai-spirit-progress { display: flex; align-items: center; justify-content: center; gap: 0; margin: 32px 0 24px; padding: 18px 24px; background: #fff; border-radius: 16px; box-shadow: 0 2px 12px rgba(93,60,35,0.06); border: 1px solid #EDE3D6; }
.ai-spirit-step { display: flex; align-items: center; gap: 10px; font-size: 15px; color: #B0A090; font-weight: 500; transition: all 0.3s ease; }
.ai-spirit-step-dot { width: 22px; height: 22px; border-radius: 50%; background: #E8DCC8; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 700; flex-shrink: 0; transition: all 0.3s ease; }
.ai-spirit-step.active { color: #C0392B; font-weight: 700; }
.ai-spirit-step.active .ai-spirit-step-dot { background: #C0392B; box-shadow: 0 0 0 4px rgba(192,57,43,0.18); animation: aiSpiritPulse 1.2s infinite; }
.ai-spirit-step.done { color: #27AE60; }
.ai-spirit-step.done .ai-spirit-step-dot { background: #27AE60; }
@keyframes aiSpiritPulse { 0%,100%{box-shadow:0 0 0 4px rgba(192,57,43,0.18);} 50%{box-shadow:0 0 0 8px rgba(192,57,43,0.06);} }
.ai-spirit-line { width: 56px; height: 2px; background: #E8DCC8; margin: 0 12px; transition: background 0.3s ease; }
.ai-spirit-line.done { background: #27AE60; }
.ai-spirit-answer { background: linear-gradient(135deg, #FEF7E8 0%, #FDEBE4 100%); border: 1px solid #F0D9B8; border-radius: 18px; padding: 26px 30px; margin-bottom: 24px; box-shadow: 0 4px 18px rgba(192,57,43,0.06); animation: aiSpiritFadeIn 0.45s ease; }
@keyframes aiSpiritFadeIn { from{opacity:0;transform:translateY(8px);} to{opacity:1;transform:translateY(0);} }
.ai-spirit-answer-title { display: flex; align-items: center; gap: 8px; font-size: 17px; font-weight: 700; background: linear-gradient(90deg, #C0392B, #E67E22); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; margin-bottom: 14px; }
.ai-spirit-answer-lead { font-size: 14px; color: #5D3C23; line-height: 1.85; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px dashed rgba(192,57,43,0.18); }
.ai-spirit-section { margin-top: 16px; }
.ai-spirit-section h4 { font-size: 15px; font-weight: 700; color: #8B3A1F; margin: 0 0 10px; display: flex; align-items: center; gap: 8px; }
.ai-spirit-section h4 .num { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: rgba(192,57,43,0.1); color: #C0392B; font-size: 14px; font-weight: 700; flex-shrink: 0; }
.ai-spirit-section .sub-block { font-size: 14px; color: #5D3C23; line-height: 1.85; padding-left: 30px; margin-bottom: 8px; }
.ai-spirit-section .sub-block .anchor { color: #C0392B; font-weight: 600; }
.ai-spirit-res-head { display: flex; align-items: center; justify-content: space-between; margin: 28px 0 14px; padding: 0 4px; }
.ai-spirit-res-title { font-size: 15px; font-weight: 700; color: #3D2B1F; display: flex; align-items: center; gap: 8px; }
.ai-spirit-res-count { font-size: 14px; color: #8B7355; }
.ai-spirit-res-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.ai-spirit-res-card { background: #fff; border-radius: 14px; padding: 16px 14px; border: 1px solid #EDE3D6; cursor: pointer; transition: all 0.25s ease; position: relative; overflow: hidden; }
.ai-spirit-res-card:hover { transform: translateY(-3px); box-shadow: 0 8px 22px rgba(93,60,35,0.12); border-color: transparent; }
.ai-spirit-res-card .rc-tag { position: absolute; top: 0; right: 0; padding: 3px 10px 3px 12px; font-size: 14px; color: #fff; font-weight: 600; border-radius: 0 14px 0 10px; }
.ai-spirit-res-card .rc-icon { font-size: 24px; margin-bottom: 8px; }
.ai-spirit-res-card .rc-title { font-size: 15px; font-weight: 700; color: #3D2B1F; line-height: 1.4; margin-bottom: 6px; min-height: 36px; }
.ai-spirit-res-card .rc-meta { font-size: 15px; color: #8B7355; display: flex; align-items: center; gap: 6px; }
.ai-spirit-res-card .rc-meta .rc-dot { width: 3px; height: 3px; border-radius: 50%; background: #C4956A; }
@media (max-width: 980px) { .ai-spirit-res-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 720px) { .ai-spirit-res-grid { grid-template-columns: repeat(2, 1fr); } .ai-spirit-progress { flex-wrap: wrap; gap: 8px; } .ai-spirit-line { width: 24px; margin: 0 4px; } }

.spirit-all-header { text-align: center; font-size: 18px; font-weight: 700; color: #3D2B1F; margin-bottom: 24px; padding: 16px 0; border-bottom: 1px solid #EDE3D6; }
.spirit-all-icon { font-size: 20px; }
.spirit-all-grid { display: flex; flex-direction: column; gap: 20px; }
.spirit-all-dim { background: #fff; border-radius: 16px; padding: 20px; box-shadow: 0 2px 12px rgba(93,60,35,0.06); border: 1px solid #EDE3D6; }
.spirit-all-dim-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px dashed #EDE3D6; cursor: pointer; }
.spirit-all-dim-head:hover { opacity: 0.75; }
.spirit-all-dim-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
.spirit-all-dim-name { font-size: 16px; font-weight: 700; }
.spirit-all-dim-sub { font-size: 14px; color: #8B7355; margin-left: auto; }
.spirit-all-educators-row { display: flex; gap: 12px; }
.spirit-all-ecard { flex: 1; background: #FAF6F0; border-radius: 12px; padding: 14px 16px; cursor: pointer; transition: all 0.25s; border: 1px solid transparent; min-width: 0; }
.spirit-all-ecard:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(93,60,35,0.1); border-color: #C4956A; }
.spirit-all-ecard-badge { display: inline-block; font-size: 15px; font-weight: 700; padding: 2px 8px; border-radius: 6px; margin-bottom: 6px; }
.spirit-all-ecard-badge.ancient { background: #FFF3E0; color: #8B4513; }
.spirit-all-ecard-badge.modern { background: #E3F2FD; color: #1565C0; }
.spirit-all-ecard-badge.local { background: #E8F5E9; color: #2E7D32; }
.spirit-all-ecard-name { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 4px; }
.spirit-all-ecard-desc { font-size: 14px; color: #5D4037; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.spirit-all-ecard-enter { display: inline-block; margin-top: 8px; font-size: 15px; font-weight: 600; }
@keyframes spiritFadeIn { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }
.spirit-expand-header { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; padding: 16px 20px; background: #fff; border-radius: 16px; box-shadow: 0 2px 12px rgba(93,60,35,0.08); }
.spirit-expand-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.spirit-expand-title { font-size: 17px; font-weight: 700; color: #3D2B1F; }
.spirit-expand-sub { font-size: 14px; color: #8B7355; margin-left: auto; }
.spirit-expand-close { width: 28px; height: 28px; border-radius: 50%; border: none; background: #F0EBE3; color: #8B7355; font-size: 16px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.2s; flex-shrink: 0; }
.spirit-expand-close:hover { background: #E0D6C8; color: #3D2B1F; }
.spirit-educators { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
.spirit-educator-group { flex: 1; min-width: 240px; max-width: 280px; }
.spirit-educator-group-title { font-size: 14px; font-weight: 700; margin-bottom: 10px; padding: 4px 10px; border-radius: 8px; display: inline-block; }
.spirit-educator-group-title.ancient { background: #FFF3E0; color: #8B4513; }
.spirit-educator-group-title.modern { background: #E3F2FD; color: #1565C0; }
.spirit-educator-group-title.local { background: #E8F5E9; color: #2E7D32; }
.spirit-ecard { background: #fff; border-radius: 14px; border: 1px solid #EDE3D6; padding: 16px; cursor: pointer; transition: all 0.25s; box-shadow: 0 2px 10px rgba(93,60,35,0.06); margin-bottom: 10px; }
.spirit-ecard:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(93,60,35,0.12); }
.spirit-ecard-name { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 4px; }
.spirit-ecard-desc { font-size: 14px; color: #5D4037; line-height: 1.6; }
.spirit-ecard-enter { display: inline-block; margin-top: 8px; font-size: 15px; color: #C4956A; font-weight: 600; }
.spirit-course-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.45); z-index: 9999; animation: spiritFadeIn 0.25s; }
.spirit-course-overlay.show { display: flex; align-items: flex-start; justify-content: center; padding: 40px 20px; overflow-y: auto; }
.spirit-course-page { background: #FAF6F0; border-radius: 20px; width: 100%; max-width: 860px; box-shadow: 0 12px 48px rgba(0,0,0,0.2); overflow: hidden; position: relative; }
.spirit-course-banner { padding: 36px 32px 28px; color: #fff; position: relative; }
.spirit-course-banner::after { content:''; position:absolute; top:0; left:0; right:0; bottom:0; background:linear-gradient(135deg,rgba(0,0,0,0.08),rgba(0,0,0,0.02)); pointer-events:none; }
.spirit-course-back { position: absolute; top: 16px; left: 20px; background: rgba(255,255,255,0.2); border: none; color: #fff; padding: 6px 14px; border-radius: 10px; font-size: 15px; cursor: pointer; z-index: 1; transition: background 0.2s; }
.spirit-course-back:hover { background: rgba(255,255,255,0.35); }
.spirit-course-btitle { font-size: 26px; font-weight: 700; margin-bottom: 8px; position: relative; z-index: 1; text-shadow: 0 1px 4px rgba(0,0,0,0.15); }
.spirit-course-bquote { font-size: 14px; opacity: 0.92; position: relative; z-index: 1; line-height: 1.6; }
.spirit-course-bstats { display: flex; gap: 24px; margin-top: 16px; position: relative; z-index: 1; }
.spirit-course-bstat span { display: block; }
.spirit-course-bstat .n { font-size: 20px; font-weight: 700; }
.spirit-course-bstat .l { font-size: 15px; opacity: 0.85; }
.spirit-course-body { padding: 28px 32px 36px; }
.spirit-course-section { margin-bottom: 24px; }
.spirit-course-section h3 { font-size: 16px; font-weight: 700; color: #3D2B1F; margin-bottom: 10px; padding-left: 10px; border-left: 3px solid #C4956A; }
.spirit-course-section p { font-size: 15px; color: #5D4037; line-height: 1.8; }
.spirit-course-modules { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px,1fr)); gap: 12px; }
.spirit-course-mod { background: #fff; border-radius: 12px; padding: 14px 16px; border: 1px solid #EDE3D6; }
.spirit-course-mod-icon { font-size: 22px; margin-bottom: 6px; }
.spirit-course-mod-name { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 3px; }
.spirit-course-mod-desc { font-size: 15px; color: #8B7355; line-height: 1.5; }
.spirit-course-tags { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.spirit-course-tag { padding: 3px 10px; border-radius: 8px; font-size: 15px; font-weight: 600; background: #EDE3D6; color: #5D4037; }
.spirit-course-relate { display: flex; gap: 10px; flex-wrap: wrap; }
.spirit-course-relate-card { flex: 1; min-width: 120px; background: #fff; border-radius: 10px; padding: 12px; border: 1px solid #EDE3D6; cursor: pointer; transition: all 0.2s; text-align: center; }
.spirit-course-relate-card:hover { transform: translateY(-2px); box-shadow: 0 4px 14px rgba(93,60,35,0.1); }
.spirit-course-relate-card .rc-icon { font-size: 20px; margin-bottom: 4px; }
.spirit-course-relate-card .rc-name { font-size: 14px; font-weight: 600; color: #3D2B1F; }
.spirit-course-relate-card .rc-era { font-size: 14px; color: #8B7355; }
.spirit-course-res-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px,1fr)); gap: 12px; }
.spirit-course-res { display: flex; align-items: flex-start; gap: 12px; background: #fff; border-radius: 12px; padding: 14px 16px; border: 1px solid #EDE3D6; transition: all 0.2s; }
.spirit-course-res:hover { box-shadow: 0 4px 14px rgba(93,60,35,0.1); }
.spirit-course-res-icon { font-size: 28px; flex-shrink: 0; width: 36px; text-align: center; }
.spirit-course-res-info { flex: 1; min-width: 0; }
.spirit-course-res-name { font-size: 15px; font-weight: 700; color: #3D2B1F; margin-bottom: 3px; }
.spirit-course-res-desc { font-size: 15px; color: #8B7355; line-height: 1.5; }
.spirit-course-res-tag { display: inline-block; font-size: 14px; font-weight: 600; padding: 1px 6px; border-radius: 4px; margin-top: 4px; background: #FFF3E0; color: #8B4513; }
/* 数字资源库分类卡片 */
.reslib-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; max-width: 1080px; margin: 0 auto; }
.reslib-category { background: #fff; border-radius: 14px; padding: 18px 20px; border: 1px solid #EDE3D6; box-shadow: 0 2px 8px rgba(93,60,35,0.05); }
.reslib-cat-head { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px dashed #EDE3D6; }
.reslib-cat-icon { font-size: 22px; }
.reslib-cat-title { font-size: 15px; font-weight: 700; color: #3D2B1F; line-height: 1.3; }
.reslib-cat-count { font-size: 15px; color: #8B7355; margin-left: auto; background: #F5EDE0; padding: 2px 8px; border-radius: 8px; }
.reslib-items { display: flex; flex-direction: column; gap: 6px; }
.reslib-item { display: flex; align-items: center; justify-content: space-between; padding: 6px 10px; border-radius: 8px; background: #FAF6F0; transition: background 0.2s; }
.reslib-item:hover { background: #F0EBE3; }
.reslib-item-name { font-size: 15px; color: #3D2B1F; }
.reslib-item-dur { font-size: 15px; color: #8B7355; flex-shrink: 0; margin-left: 8px; }
.reslib-item-desc { font-size: 14px; color: #5D4037; line-height: 1.6; padding: 8px 10px; background: #FAF6F0; border-radius: 8px; margin-top: 4px; }
@media (max-width:900px) { .reslib-grid { grid-template-columns: repeat(2,1fr); } } @media (max-width:480px) { .reslib-grid { grid-template-columns: 1fr; } }

/* 教师端批阅页 */
.tch-grade-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:600;background:#FAF6F0;display:none;flex-direction:column;}
.tch-grade-header{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:linear-gradient(135deg,#8B5E3C,#A0724E);color:#fff;flex-shrink:0;}
.tch-grade-header h3{font-size:16px;font-weight:600;margin:0;}
.tch-grade-close{background:none;border:none;color:#fff;font-size:22px;cursor:pointer;padding:4px 8px;border-radius:6px;}
.tch-grade-close:hover{background:rgba(255,255,255,0.2);}
.tch-grade-body{display:flex;flex:1;overflow:hidden;}
.tch-grade-left{width:240px;flex-shrink:0;border-right:1px solid #EDE3D6;display:flex;flex-direction:column;background:#fff;}
.tch-grade-class-sel{padding:12px;border-bottom:1px solid #EDE3D6;}
.tch-grade-class-sel select{width:100%;padding:7px 10px;border:1px solid #EDE3D6;border-radius:8px;font-size: 14px;color:#3D2B1F;background:#FAF6F0;cursor:pointer;}
.tch-grade-stu-list{flex:1;overflow-y:auto;padding:6px 0;}
.tch-grade-stu-item{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;border-left:3px solid transparent;transition:all .15s;}
.tch-grade-stu-item:hover{background:#FAF6F0;}
.tch-grade-stu-item.active{background:#F5E6D3;border-left-color:#C4956A;}
.tch-grade-stu-avatar{width:32px;height:32px;border-radius:50%;background:#EDE3D6;display:flex;align-items:center;justify-content:center;font-size: 14px;color:#8B7355;flex-shrink:0;font-weight:600;}
.tch-grade-stu-info{flex:1;min-width:0;}
.tch-grade-stu-name{font-size: 15px;color:#3D2B1F;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tch-grade-stu-id{font-size: 14px;color:#8B7355;}
.tch-grade-stu-score{font-size: 14px;font-weight:700;flex-shrink:0;}
.tch-grade-stu-score.graded{color:#2E7D32;}
.tch-grade-stu-score.ungraded{color:#E65100;}
.tch-grade-stu-score.nosubmit{color:#9E9E9E;}
.tch-grade-center{flex:1;overflow-y:auto;padding:20px 24px;min-width:0;}
.tch-grade-right{width:280px;flex-shrink:0;border-left:1px solid #EDE3D6;background:#fff;padding:20px;display:flex;flex-direction:column;}
.tch-grade-status{display:flex;align-items:center;gap:8px;margin-bottom:16px;}
.tch-grade-status-badge{padding:4px 12px;border-radius:16px;font-size: 14px;font-weight:600;}
.tch-grade-status-badge.graded{background:#E8F5E9;color:#2E7D32;}
.tch-grade-status-badge.ungraded{background:#FFF3E0;color:#E65100;}
.tch-grade-status-badge.nosubmit{background:#F5F5F5;color:#9E9E9E;}
.tch-grade-score-section{margin-bottom:16px;}
.tch-grade-score-label{font-size: 15px;color:#8B7355;margin-bottom:4px;}
.tch-grade-score-value{font-size:42px;font-weight:700;color:#C4956A;letter-spacing:1px;line-height:1.1;}
.tch-grade-score-max{font-size: 15px;color:#8B7355;}
.tch-grade-comment{margin-bottom:16px;flex:1;display:flex;flex-direction:column;}
.tch-grade-comment label{font-size: 14px;color:#3D2B1F;font-weight:600;margin-bottom:6px;}
.tch-grade-comment textarea{flex:1;min-height:120px;border:1px solid #EDE3D6;border-radius:10px;padding:10px;font-size: 14px;color:#3D2B1F;resize:none;background:#FAF6F0;font-family:inherit;}
.tch-grade-comment textarea:focus{outline:none;border-color:#C4956A;}
.tch-grade-actions{display:flex;flex-direction:column;gap:8px;}
.tch-grade-btn{padding:10px 16px;border-radius:10px;font-size: 15px;font-weight:600;border:none;cursor:pointer;text-align:center;transition:all .15s;}
.tch-grade-btn-primary{background:#C4956A;color:#fff;}
.tch-grade-btn-primary:hover{background:#A0724E;}
.tch-grade-btn-outline{background:#fff;color:#C4956A;border:1px solid #C4956A;}
.tch-grade-btn-outline:hover{background:#FAF6F0;}
.tch-grade-btn-next{background:#EDE3D6;color:#3D2B1F;}
.tch-grade-btn-next:hover{background:#E0D5C5;}
/* 中间内容区通用 */
.tch-gc-tabs{display:flex;gap:0;margin-bottom:16px;border-bottom:2px solid #EDE3D6;}
.tch-gc-tab{padding:8px 18px;font-size: 15px;color:#8B7355;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s;}
.tch-gc-tab:hover{color:#3D2B1F;}
.tch-gc-tab.active{color:#C4956A;border-bottom-color:#C4956A;font-weight:600;}
.tch-gc-stages{display:flex;gap:0;margin-bottom:16px;}
.tch-gc-stage{padding:6px 14px;font-size: 14px;color:#8B7355;cursor:pointer;border-radius:8px 8px 0 0;background:#F5F0E8;transition:all .15s;}
.tch-gc-stage:hover{background:#EDE3D6;}
.tch-gc-stage.active{background:#C4956A;color:#fff;font-weight:600;}
.tch-gc-module{background:#fff;border:1px solid #EDE3D6;border-radius:10px;padding:14px 16px;margin-bottom:10px;}
.tch-gc-module-title{font-size: 15px;font-weight:600;color:#3D2B1F;margin-bottom:8px;display:flex;align-items:center;gap:6px;}
.tch-gc-module-content{font-size: 14px;color:#5D4E37;line-height:1.7;}
.tch-gc-table{width:100%;border-collapse:collapse;font-size: 14px;margin-bottom:16px;}
.tch-gc-table th{background:#F5F0E8;color:#3D2B1F;padding:8px 10px;text-align:left;font-weight:600;border-bottom:2px solid #EDE3D6;}
.tch-gc-table td{padding:8px 10px;border-bottom:1px solid #F5F0E8;color:#3D2B1F;vertical-align:top;}
.tch-gc-table tr:hover td{background:#FAF6F0;}
.tch-gc-timeline{position:relative;padding-left:24px;margin-top:12px;}
.tch-gc-timeline::before{content:'';position:absolute;left:8px;top:0;bottom:0;width:2px;background:#EDE3D6;}
.tch-gc-timeline-item{position:relative;margin-bottom:16px;padding:10px 14px;background:#fff;border:1px solid #EDE3D6;border-radius:10px;}
.tch-gc-timeline-item::before{content:'';position:absolute;left:-20px;top:14px;width:10px;height:10px;border-radius:50%;background:#C4956A;border:2px solid #fff;box-shadow:0 0 0 2px #C4956A;}
.tch-gc-tl-time{font-size: 14px;color:#8B7355;margin-bottom:4px;}
.tch-gc-tl-text{font-size: 14px;color:#3D2B1F;}
.tch-gc-checkin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-top:12px;}
.tch-gc-checkin-card{background:#fff;border:1px solid #EDE3D6;border-radius:10px;overflow:hidden;}
.tch-gc-checkin-img{width:100%;height:120px;background:#F5F0E8;display:flex;align-items:center;justify-content:center;font-size:28px;color:#C4956A;}
.tch-gc-checkin-info{padding:8px 10px;font-size: 15px;color:#5D4E37;}
.tch-gc-checkin-date{font-weight:600;color:#3D2B1F;}
.tch-gc-work-preview{background:#fff;border:1px solid #EDE3D6;border-radius:12px;overflow:hidden;margin-bottom:16px;}
.tch-gc-work-img{width:100%;height:220px;background:linear-gradient(135deg,#EDE3D6,#F5F0E8);display:flex;align-items:center;justify-content:center;font-size:48px;position:relative;}
.tch-gc-work-fullscreen{position:absolute;top:10px;right:10px;background:rgba(196,149,106,0.9);color:#fff;border:none;padding:5px 12px;border-radius:6px;font-size: 15px;cursor:pointer;}
.tch-gc-work-info{padding:14px 16px;}
.tch-gc-work-name{font-size:14px;font-weight:600;color:#3D2B1F;margin-bottom:4px;}
.tch-gc-work-meta{font-size: 15px;color:#8B7355;}
.tch-gc-file-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#FAF6F0;border:1px solid #EDE3D6;border-radius:8px;margin-bottom:6px;}
.tch-gc-file-icon{font-size:18px;}
.tch-gc-file-name{flex:1;font-size: 14px;color:#3D2B1F;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tch-gc-file-size{font-size: 15px;color:#8B7355;flex-shrink:0;}
.tch-gc-file-dl{font-size: 14px;color:#C4956A;cursor:pointer;font-weight:600;flex-shrink:0;}
.tch-gc-process-filters{display:flex;gap:6px;margin-bottom:12px;align-items:center;}
.tch-gc-filter-btn{padding:4px 14px;border-radius:12px;font-size: 15px;cursor:pointer;border:1px solid #EDE3D6;background:#FAF6F0;color:#5B3A29;transition:all .15s;}
.tch-gc-filter-btn.active{background:#C4956A;color:#fff;border-color:#C4956A;}
.tch-gc-filter-btn:hover{background:#EDE3D6;}
.tch-gc-search-bar{display:flex;gap:0;margin-top:8px;margin-bottom:14px;}
.tch-gc-search-input{flex:1;padding:6px 12px;border:1px solid #EDE3D6;border-radius:6px 0 0 6px;font-size: 14px;outline:none;color:#3D2B1F;}
.tch-gc-search-input:focus{border-color:#C4956A;}
.tch-gc-search-btn{padding:6px 16px;background:#C4956A;color:#fff;border:none;border-radius:0 6px 6px 0;font-size: 14px;cursor:pointer;font-weight:600;}
.tch-gc-search-btn:hover{background:#B07D50;}
.tch-gc-traj-item{display:flex;gap:10px;padding:8px 12px;border-bottom:1px solid #F5F0E8;font-size: 14px;align-items:flex-start;}
.tch-gc-traj-item:last-child{border-bottom:none;}
.tch-gc-traj-time{color:#8B7355;font-size: 14px;white-space:nowrap;min-width:120px;flex-shrink:0;}
.tch-gc-traj-role{font-size: 14px;padding:1px 6px;border-radius:4px;white-space:nowrap;flex-shrink:0;}
.tch-gc-traj-role.stu{background:#E3F2FD;color:#1565C0;}
.tch-gc-traj-role.tch{background:#FFF3E0;color:#E65100;}
.tch-gc-traj-text{color:#3D2B1F;line-height:1.5;}
.tch-gc-empty{text-align:center;padding:40px;color:#9E9E9E;font-size: 15px;}
.tch-gc-pagi{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:10px;padding-top:8px;border-top:1px solid #EDE3D6;}
.tch-gc-pagi button{padding:4px 10px;border:1px solid #EDE3D6;border-radius:6px;font-size: 15px;cursor:pointer;background:#fff;color:#3D2B1F;}
.tch-gc-pagi button:disabled{opacity:.4;cursor:default;}
.tch-gc-pagi span{font-size: 15px;color:#8B7355;}
/* v54 新增 AI 智能审核功能样式 */
.tch-gc-file-ai{font-size: 14px;color:#FF6B35;cursor:pointer;font-weight:600;flex-shrink:0;display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:5px;transition:all .15s;}
.tch-gc-file-ai:hover{background:rgba(255,107,53,.08);}
.tch-gc-plagiarism-bar{display:flex;align-items:center;gap:10px;padding:9px 14px;background:linear-gradient(90deg,#FFF3E8,#FFE8D8);border:1px solid #FFD4B5;border-radius:10px;margin-bottom:12px;}
.tch-gc-plagiarism-warn{font-size: 14px;color:#C4520E;flex:1;font-weight:600;}
.tch-gc-plagiarism-warn .icon{margin-right:4px;}
.tch-gc-ai-analyze-btn{padding:6px 16px;background:linear-gradient(135deg,#FF8A50,#FF6B35);color:#fff;border:none;border-radius:8px;font-size: 14px;font-weight:600;cursor:pointer;flex-shrink:0;box-shadow:0 1px 3px rgba(255,107,53,.3);}
.tch-gc-ai-analyze-btn:hover{filter:brightness(1.05);}
.tch-grade-excellent{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid #EDE3D6;margin-top:8px;}
.tch-grade-excellent-label{font-size: 14px;color:#3D2B1F;font-weight:600;}
.tch-grade-toggle{position:relative;width:36px;height:20px;background:#E0D5C5;border-radius:10px;cursor:pointer;transition:all .2s;flex-shrink:0;}
.tch-grade-toggle.on{background:#C4956A;}
.tch-grade-toggle::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:all .2s;box-shadow:0 1px 2px rgba(0,0,0,.15);}
.tch-grade-toggle.on::after{left:18px;}
.tch-grade-ai-review{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-top:1px solid #EDE3D6;}
.tch-grade-ai-review-label{font-size: 14px;color:#FF6B35;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:3px;}
.tch-grade-ai-review-label:hover{color:#E04E1E;}
.tch-grade-ai-health{font-size: 14px;color:#FF6B35;text-decoration:underline;cursor:pointer;font-weight:600;}

/* ===== AI实践教学数字地图 独立体验页 ===== */
/* 激活时隐藏全局 footer 并锁定 body，实现一屏铺满无滚动条 */
body:has(#page-aimap.active){ overflow:hidden; }
body:has(#page-aimap.active) .spa-footer{ display:none; }
.aimap-wrap{
  max-width:none;margin:0;padding:84px 20px 18px;
  height:100vh;box-sizing:border-box;
  display:flex;flex-direction:column;overflow:hidden;
}
.aimap-topbar{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:24px;flex-wrap:wrap;margin-bottom:14px;flex:none;
}
.aimap-main{
  display:grid;grid-template-columns:240px 1fr 320px;gap:16px;align-items:stretch;
  flex:1;min-height:0;
}
.aimap-topbar{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:24px;flex-wrap:wrap;margin-bottom:18px;
}
.aimap-page-title{
  font-size:26px;font-weight:800;color:#3D2B1F;margin:0;letter-spacing:1px;
}
.aimap-page-sub{
  font-size:14px;color:#8B7355;margin:6px 0 0;
}

/* 左：佛山市 + 分类侧栏 */
.aimap-sidebar{
  background:#fff;border:1px solid #EDE3D6;border-radius:18px;
  padding:16px 14px;display:flex;flex-direction:column;gap:12px;
  min-height:0;overflow:hidden;
}
.aimap-region{flex-shrink:0;}
.aimap-sidebar-scroll{
  flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  display:flex;flex-direction:column;gap:12px;padding-right:4px;
}
.aimap-sidebar-scroll::-webkit-scrollbar{width:5px;}
.aimap-sidebar-scroll::-webkit-scrollbar-thumb{background:#D4C4B0;border-radius:6px;}
.aimap-sidebar-scroll::-webkit-scrollbar-track{background:transparent;}
.aimap-region{
  background:linear-gradient(135deg,#C4956A,#A0724E);border-radius:14px;
  padding:16px 14px;color:#fff;text-align:center;
  box-shadow:0 6px 16px rgba(196,149,106,.28);
}
.aimap-region-flag{font-size:26px;line-height:1;}
.aimap-region-name{font-size:20px;font-weight:800;letter-spacing:2px;margin:6px 0 2px;}
.aimap-region-sub{font-size: 15px;opacity:.9;}
.aimap-side-label{
  font-size: 14px;font-weight:700;color:#8B5E3C;letter-spacing:1px;padding:0 4px;
}
.aimap-cat-list{display:flex;flex-direction:column;gap:8px;}
.aimap-ftab.aimap-cat{
  display:flex;align-items:center;gap:10px;width:100%;
  padding:10px 12px;border-radius:12px;text-align:left;
  border:1.5px solid #EDE3D6;background:#fff;color:#5D4037;
  font-size: 15px;font-weight:500;cursor:pointer;transition:all .2s;
}
.aimap-ftab.aimap-cat:hover{border-color:#C4956A;background:#FAF6F0;}
.aimap-ftab.aimap-cat.active{
  background:linear-gradient(135deg,#C4956A,#A0724E);color:#fff;
  border-color:transparent;box-shadow:0 4px 12px rgba(196,149,106,.3);
}
.aimap-cat-icon{
  width:28px;height:28px;border-radius:8px;background:#F5EBDE;
  display:flex;align-items:center;justify-content:center;font-size:15px;flex:none;
}
.aimap-ftab.aimap-cat.active .aimap-cat-icon{background:rgba(255,255,255,.22);}
.aimap-cat-icon.c-red{background:#FCE7DF;}
.aimap-cat-icon.c-heritage{background:#F0E2D3;}
.aimap-cat-icon.c-tech{background:#D9EAF0;}
.aimap-cat-icon.c-rural{background:#E4ECD9;}
.aimap-cat-icon.c-ethic{background:#F5E6D3;}
.aimap-cat-name{flex:1;}
.aimap-cat-num{
  font-size: 15px;font-weight:700;background:rgba(196,149,106,.14);
  color:#8B5E3C;padding:1px 8px;border-radius:10px;flex:none;
}
.aimap-ftab.aimap-cat.active .aimap-cat-num{background:rgba(255,255,255,.25);color:#fff;}
.aimap-legend-h{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  background:#fff;border:1px solid #EDE3D6;border-radius:12px;
  padding:8px 16px;flex:none;
}
.aimap-legend-label{font-size: 14px;font-weight:700;color:#8B5E3C;margin-right:4px;}
.aimap-leg-item{font-size: 14px;color:#5D4037;display:inline-flex;align-items:center;gap:5px;}

/* 中：智能检索 + 地图 */
.aimap-search-bar{
  position:relative;display:flex;align-items:center;gap:10px;
  background:#fff;border:1.5px solid #D4C4B0;border-radius:26px;
  padding:6px 6px 6px 44px;box-shadow:0 4px 14px rgba(196,149,106,.1);
  transition:border-color .2s,box-shadow .2s;
}
.aimap-search-bar:focus-within{border-color:#C4956A;box-shadow:0 0 0 3px rgba(196,149,106,.15);}
.aimap-search-bar .aimap-search-icon{position:absolute;left:16px;font-size:15px;opacity:.6;}
.aimap-search-input{
  flex:1;min-width:0;height:38px;border:none;outline:none;background:transparent;
  font-size:14px;color:#3D2B1F;
}
.aimap-search-input::placeholder{color:#B9A48A;}
.aimap-search-ai{
  flex:none;padding:8px 18px;border-radius:22px;border:none;
  background:linear-gradient(135deg,#C4956A,#A0724E);color:#fff;
  font-size: 15px;font-weight:600;cursor:pointer;transition:all .25s;
}
.aimap-search-ai:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(196,149,106,.35);}

.aimap-center{display:flex;flex-direction:column;gap:14px;min-width:0;min-height:0;}
.aimap-map{
  background:#fff;border:1px solid #EDE3D6;border-radius:18px;
  padding:18px;display:flex;flex-direction:column;flex:1;
}
.aimap-map-title{
  text-align:center;font-size:14px;font-weight:700;color:#3D2B1F;
  letter-spacing:1px;margin-bottom:12px;
}
.aimap-map-canvas{
  position:relative;flex:1;min-height:0;border-radius:14px;
  background:#EDE3D6;
  overflow:hidden;border:1px solid #E3D2BA;
}
/* 高德地图挂载容器 */
.aimap-amap-mount{position:absolute;inset:0;border-radius:14px;overflow:hidden;}
.aimap-amap-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  background:rgba(255,255,255,.94);border:1px solid #E3D2BA;color:#8A6A3B;
  padding:10px 18px;border-radius:10px;font-size: 15px;z-index:5;text-align:center;}
/* 自定义基地标记 */
.amap-base-pin{display:flex;flex-direction:column;align-items:center;cursor:pointer;}
.amap-base-pin-emoji{width:34px;height:34px;border-radius:50%;
  background:#fff;border:2px solid #C4956A;box-shadow:0 3px 8px rgba(0,0,0,.18);
  display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;
  transition:transform .18s ease,box-shadow .18s ease;}
.amap-base-pin-name{margin-top:4px;font-size: 15px;font-weight:600;color:#3D2B1F;
  background:rgba(255,255,255,.94);padding:1px 7px;border-radius:9px;white-space:nowrap;
  border:1px solid rgba(196,149,106,.4);box-shadow:0 2px 6px rgba(0,0,0,.1);}
.amap-base-pin.active .amap-base-pin-emoji{transform:scale(1.28);box-shadow:0 6px 16px rgba(0,0,0,.28);}
.amap-base-pin.active .amap-base-pin-name{background:#fff;font-weight:700;}
/* 五区底块 */
.aimap-zone{
  position:absolute;display:flex;align-items:center;justify-content:center;
  font-size: 15px;font-weight:700;color:#fff;border-radius:14px;
  letter-spacing:2px;opacity:.85;
}
.aimap-zone-chancheng{top:14%;left:30%;width:120px;height:80px;background:linear-gradient(135deg,#C4956A,#A0724E);}
.aimap-zone-nanhai{top:22%;left:48%;width:160px;height:120px;background:linear-gradient(135deg,#8B7355,#5D4037);}
.aimap-zone-shunde{top:50%;left:20%;width:150px;height:120px;background:linear-gradient(135deg,#A0724E,#8B5E3C);}
.aimap-zone-gaoming{top:62%;left:40%;width:120px;height:90px;background:linear-gradient(135deg,#B89070,#8B7355);}
.aimap-zone-sanshui{top:34%;left:66%;width:120px;height:90px;background:linear-gradient(135deg,#C9A989,#A0724E);}

/* pin 点 */
.aimap-pin{
  position:absolute;transform:translate(-50%,-50%);cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:2px;
  transition:transform .2s;z-index:2;
}
.aimap-pin-dot{
  width:34px;height:34px;border-radius:50%;
  background:#fff;border:2px solid #C4956A;
  display:flex;align-items:center;justify-content:center;font-size:16px;
  box-shadow:0 3px 10px rgba(0,0,0,.18);line-height:1;
}
.aimap-pin-label{
  font-size: 15px;font-weight:600;color:#3D2B1F;background:rgba(255,255,255,.9);
  padding:1px 6px;border-radius:6px;white-space:nowrap;
  box-shadow:0 1px 4px rgba(0,0,0,.08);
}
.aimap-pin:hover{transform:translate(-50%,-50%) scale(1.12);z-index:5;}
.aimap-pin.active .aimap-pin-dot{
  background:linear-gradient(135deg,#C4956A,#A0724E);color:#fff;
  border-color:#8B5E3C;box-shadow:0 0 0 5px rgba(196,149,106,.25),0 4px 14px rgba(0,0,0,.25);
}
.aimap-pin.dim{opacity:.25;}

.aimap-legend{
  display:flex;gap:14px;flex-wrap:wrap;justify-content:center;
  margin-top:14px;font-size: 14px;color:#5D4037;
}
.aimap-legend span{display:inline-flex;align-items:center;gap:5px;}
.aimap-leg-dot{width:10px;height:10px;border-radius:50%;display:inline-block;}
.aimap-leg-dot.c-red{background:#E04E1E;}
.aimap-leg-dot.c-heritage{background:#8B5E3C;}
.aimap-leg-dot.c-tech{background:#2F7A8C;}
.aimap-leg-dot.c-rural{background:#6B8E4E;}
.aimap-leg-dot.c-ethic{background:#C4956A;}

/* 右侧列表 */
.aimap-list{
  background:#fff;border:1px solid #EDE3D6;border-radius:18px;
  padding:14px;display:flex;flex-direction:column;gap:8px;
  max-height:100%;overflow:hidden;min-height:0;
}
.aimap-list-head{flex-shrink:0;}
.aimap-list-scroll{
  flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  display:flex;flex-direction:column;gap:8px;padding-right:4px;
}
.aimap-list-scroll::-webkit-scrollbar{width:5px;}
.aimap-list-scroll::-webkit-scrollbar-thumb{background:#D4C4B0;border-radius:6px;}
.aimap-list-scroll::-webkit-scrollbar-track{background:transparent;}
.aimap-list-head{
  display:flex;justify-content:space-between;align-items:center;
  font-size: 15px;font-weight:700;color:#3D2B1F;padding:4px 4px 8px;
  border-bottom:1px solid #EDE3D6;
}
.aimap-list-count{font-size: 14px;color:#8B7355;font-weight:500;}

.aimap-card{
  display:flex;gap:12px;padding:12px;border-radius:12px;
  border:1px solid #EDE3D6;background:#fff;cursor:pointer;transition:all .2s;
}
.aimap-card:hover{border-color:#C4956A;background:#FAF6F0;transform:translateX(2px);}
.aimap-card.active{border-color:#C4956A;background:#FAF6F0;box-shadow:0 4px 12px rgba(196,149,106,.18);}
.aimap-card.dim{opacity:.35;}
.aimap-card-icon{
  flex:none;width:42px;height:42px;border-radius:12px;
  display:flex;align-items:center;justify-content:center;font-size:20px;
}
.aimap-card-icon.c-red{background:#FCE7DF;}
.aimap-card-icon.c-heritage{background:#F0E2D3;}
.aimap-card-icon.c-tech{background:#D9EAF0;}
.aimap-card-icon.c-rural{background:#E4ECD9;}
.aimap-card-icon.c-ethic{background:#F5E6D3;}
.aimap-card-body{flex:1;min-width:0;}
.aimap-card-title{font-size:14px;font-weight:700;color:#3D2B1F;margin-bottom:4px;}
.aimap-card-tags{display:flex;gap:6px;margin-bottom:4px;}
.aimap-tag{
  font-size: 15px;color:#8B5E3C;background:#F5EBDE;border:1px solid #EDE3D6;
  padding:1px 8px;border-radius:10px;
}
.aimap-card-meta{font-size: 15px;color:#8B7355;line-height:1.5;}
.aimap-card-link{margin-top:4px;font-size: 15px;}
.aimap-card-link a{color:#C4956A;text-decoration:none;font-weight:600;padding:2px 8px;border-radius:6px;background:rgba(196,149,106,0.1);transition:all 0.2s;}
.aimap-card-link a:hover{background:#C4956A;color:#fff;}

.aimap-empty{
  text-align:center;color:#8B7355;font-size: 15px;padding:30px 0;
}

/* 底部统计条 */
.aimap-stats{
  display:flex;align-items:center;gap:28px;flex-wrap:wrap;
  margin-top:14px;padding:14px 24px;border-radius:16px;
  background:linear-gradient(135deg,#FAF6F0,#F0E2D3);
  border:1px solid #EDE3D6;flex:none;
}
.aimap-stat{display:flex;flex-direction:column;}
.aimap-stat b{font-size:22px;color:#8B5E3C;font-weight:800;}
.aimap-stat span{font-size: 14px;color:#8B7355;}
.aimap-stat-btn{
  margin-left:auto;padding:10px 20px;border-radius:24px;border:none;
  background:linear-gradient(135deg,#C4956A,#A0724E);color:#fff;
  font-size: 15px;font-weight:600;cursor:pointer;transition:all .25s;
}
.aimap-stat-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(196,149,106,.35);}

@media (max-width:980px){
  .aimap-main{grid-template-columns:1fr;}
  .aimap-list{max-height:none;}
  .aimap-sidebar{order:-1;}
}


