* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

:root {
  --primary: #4f46e5;
  --primary-light: #818cf8;
  --primary-dark: #3730a3;
  --secondary: #06b6d4;
  --success: #10b981;
  --warning: #f59e0b;
  --danger: #ef4444;
  --bg: #f8fafc;
  --card-bg: #ffffff;
  --text: #1e293b;
  --text-light: #475569;
  --text-muted: #596282;
  --border: #e2e8f0;
  --shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03);
  --shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
  --radius: 12px;
  --radius-lg: 16px;
}

html {
  overflow-x: hidden;
  max-width: 100%;
}
body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
  background: var(--bg);
  color: var(--text);
  line-height: 1.6;
  min-height: 100vh;
  overflow-x: hidden;
}

/* ===========================
   🧪 探究学堂 · 现代科技感升级（v41 · 2026 Liquid Glass）
   理念：宇宙星云背景 + 液态玻璃卡片 + 3D伪深度 + 渐变发光
   兼容 prefers-reduced-motion
   =========================== */

/* 1. 宇宙星云背景：多层径向渐变叠出"星空-地球-日出"，柔和不暗 */
body {
  background:
    radial-gradient(1200px 800px at 10% -10%, rgba(59,130,246,.18), transparent 60%),
    radial-gradient(1000px 700px at 110% 10%, rgba(139,92,246,.16), transparent 60%),
    radial-gradient(900px 700px at 50% 120%, rgba(14,165,233,.12), transparent 60%),
    radial-gradient(circle at 20% 30%, rgba(99,102,241,.12) 0, transparent 2px),
    linear-gradient(180deg, #fafbff 0%, #f5f7ff 30%, #eef2ff 60%, #f8fbff 100%);
  position: relative;
}
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:-1;opacity:.35;
  background-image:
    radial-gradient(1px 1px at 12% 18%, rgba(99,102,241,.7), transparent 60%),
    radial-gradient(1px 1px at 78% 22%, rgba(14,165,233,.6), transparent 60%),
    radial-gradient(1.5px 1.5px at 30% 72%, rgba(245,158,11,.55), transparent 60%),
    radial-gradient(1px 1px at 62% 82%, rgba(139,92,246,.55), transparent 60%),
    radial-gradient(1.2px 1.2px at 85% 50%, rgba(59,130,246,.5), transparent 60%),
    radial-gradient(1px 1px at 50% 40%, rgba(16,185,129,.45), transparent 60%),
    radial-gradient(1px 1px at 8% 90%, rgba(236,72,153,.45), transparent 60%);
}

/* 2. Liquid Glass 液态玻璃通用类 */
.liquid-glass {
  background: rgba(255,255,255,.52);
  backdrop-filter: blur(22px) saturate(180%);
  -webkit-backdrop-filter: blur(22px) saturate(180%);
  border: 1px solid rgba(255,255,255,.65);
  box-shadow:
    0 1px 0 rgba(255,255,255,.8) inset,
    0 -1px 0 rgba(255,255,255,.15) inset,
    0 10px 30px rgba(10, 15, 60, 0.08);
}

/* 3. Header 玻璃态重绘（v94：毛玻璃白底导航；吸顶由本块提供，勿删 position/z-index） */
.header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255,255,255,.55) !important;
  backdrop-filter: blur(24px) saturate(180%);
  -webkit-backdrop-filter: blur(24px) saturate(180%);
  border-bottom: 1px solid rgba(255,255,255,.6);
  box-shadow: 0 8px 28px rgba(15, 23, 80, 0.07) !important;
  color: #0b1030 !important;
}
.header .logo-text h1 {
  background: linear-gradient(90deg,#1e293b,#4338ca,#0369a1);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.header .logo-text span { color: #596282 !important; opacity:1 !important; }
.logo-icon {
  background: linear-gradient(135deg, #6366f1, #8b5cf6, #3b82f6) !important;
  color: #fff;
  box-shadow: 0 10px 22px rgba(99,102,241,.35);
}
.nav{
  background: rgba(255,255,255,.55) !important;
  border: 1px solid rgba(255,255,255,.7);
  box-shadow: 0 4px 18px rgba(15, 23, 80, 0.05);
}
.nav-btn{ color: #3d4557 !important; }
.nav-btn:hover{ background: rgba(99,102,241,.09) !important; color:#4338ca !important; }
.nav-btn.active{
  background: linear-gradient(135deg,#6366f1,#8b5cf6,#3b82f6) !important;
  color:#fff !important;
  box-shadow: 0 8px 22px rgba(99,102,241,.32) !important;
}
.nav-tree.has-active .nav-tree-trigger{
  background: rgba(99,102,241,.09) !important;
  color:#4338ca !important;
}
.user-info{
  background: rgba(255,255,255,.55) !important;
  border: 1px solid rgba(255,255,255,.7);
  color: #0b1030;
}
.user-name{ color:#2b3450 !important; }
.nav-tree-menu{
  background: rgba(255,255,255,.85) !important;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(255,255,255,.75);
  box-shadow: 0 16px 44px rgba(15, 23, 80, 0.15) !important;
}

/* 4. 页面标题字渐变 */
.section-title, .page-title h2, .hero h2, .academic-head h2, .quality-head h2, .team-head h2 {
  letter-spacing: -0.02em !important;
}
.page-title h2, .academic-head h2, .quality-head h2, .team-head h2 {
  background: linear-gradient(90deg,#0b1030 0%,#4338ca 45%,#0369a1 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent !important;
}

/* 5. Hero 升级：蓝紫宇宙渐变 + 星光点 + 插画玻璃外框 */
.hero {
  background:
    radial-gradient(600px 400px at 120% -20%, rgba(245,158,11,.35), transparent 55%),
    radial-gradient(600px 400px at -20% 120%, rgba(34,197,94,.28), transparent 60%),
    linear-gradient(130deg, #0b1447 0%, #1e3a8a 35%, #4f46e5 65%, #0ea5e9 100%) !important;
  border-radius: 20px !important;
  box-shadow: 0 30px 60px -30px rgba(30,58,138,.5);
  padding: 72px 60px 68px !important;
  position: relative;
  overflow: hidden;
}
.hero::before{
  content:'';position:absolute;inset:0;pointer-events:none;opacity:.55;
  background-image:
    radial-gradient(1.5px 1.5px at 20% 30%, #fff, transparent 60%),
    radial-gradient(1px 1px at 70% 20%, #fde68a, transparent 60%),
    radial-gradient(1.5px 1.5px at 40% 80%, #a5f3fc, transparent 60%),
    radial-gradient(1px 1px at 85% 70%, #c4b5fd, transparent 60%),
    radial-gradient(2px 2px at 15% 75%, #fff, transparent 60%),
    radial-gradient(1px 1px at 58% 48%, #fff, transparent 60%);
}
.hero::after{
  content:'';position:absolute;left:-150px;bottom:-150px;width:380px;height:380px;
  border-radius:50%;pointer-events:none;opacity:.3;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.6), transparent 55%);
  filter: blur(10px);
}
.hero h2{ font-size: 44px !important; line-height:1.15 !important; font-weight:850 !important; letter-spacing:-.03em !important; }
.hero h2 em { font-style: italic; color: #fde68a !important; }
.hero h2 em::after { background: linear-gradient(90deg,#f59e0b,#ef4444) !important; opacity:.55 !important; bottom:3px !important; }
.hero p{ font-size:16.5px !important; opacity:.94 !important; line-height:1.85 !important; }
/* Hero 印章改琥珀发光浮雕 */
.hero-seal span{
  background: linear-gradient(135deg,#f59e0b,#ef4444) !important;
  box-shadow: 0 14px 28px -10px rgba(239,68,68,.65), 0 0 0 3px rgba(253,230,138,.4) inset !important;
  border-radius: 4px 40px 6px 6px !important;
}
.hero-visual .hero-seal span{ border-radius: 3px 32px 5px 5px !important; }
.hero-illustration{
  border: 4px solid rgba(255,255,255,.38) !important;
  box-shadow: 0 36px 80px -26px rgba(0,0,0,.62), 0 0 0 1px rgba(255,255,255,.1) inset !important;
  border-radius: 10px 50px 18px 18px !important;
  backdrop-filter: blur(6px);
}
.hero-band{
  border-left-width: 4px !important;
  background: rgba(255,255,255,.6) !important;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(255,255,255,.7) !important;
  box-shadow: 0 12px 30px rgba(15,23,80,.08) !important;
}
.hero-stat .number{
  background: linear-gradient(135deg,#4338ca,#0ea5e9);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* 6. 主按钮：渐变+发光 */
.btn-primary{
  background: linear-gradient(135deg,#6366f1 0%,#8b5cf6 55%,#3b82f6 100%) !important;
  border-radius: 14px !important;
  padding: 12px 22px !important;
  box-shadow: 0 10px 26px rgba(99,102,241,.32) !important;
  color: #fff !important;
  font-weight:600 !important;
  position: relative; overflow: hidden;
}
.btn-primary::before{
  content:'';position:absolute;inset:0;border-radius:inherit;
  background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.35) 50%, rgba(255,255,255,0) 70%);
  transform: translateX(-120%);
  transition: transform .6s ease;
}
.btn-primary:hover::before{ transform: translateX(120%); }
.btn-primary:hover{
  transform: translateY(-2px) scale(1.02) !important;
  box-shadow: 0 18px 34px rgba(99,102,241,.42), 0 0 0 1px rgba(255,255,255,.3) inset !important;
}
.btn-secondary{ background: rgba(255,255,255,.65) !important; border:1px solid rgba(99,102,241,.15); backdrop-filter: blur(12px); border-radius: 14px !important;}
.btn-secondary:hover{ background: rgba(255,255,255,.9) !important; transform: translateY(-1px);}
.btn-ghost{
  background: rgba(255,255,255,.72) !important;
  color: #4338ca !important;
  border: 1.5px solid rgba(99,102,241,.4) !important;
  backdrop-filter: blur(10px);
  border-radius: 14px !important;
}
.btn-ghost:hover{ background: #fff !important; color:#312e81 !important; border-color:#6366f1 !important; }

/* 7. 六大主题卡片 3D 伪深度 */
.themes-grid { gap: 28px !important; }
.theme-card{
  background: rgba(255,255,255,.75) !important;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.8);
  border-radius: 20px !important;
  box-shadow: 0 16px 38px rgba(15, 23, 80, 0.09) !important;
  transition: transform .4s cubic-bezier(.22,1,.36,1), box-shadow .4s ease !important;
  transform-style: preserve-3d;
  position: relative;
}
.theme-card::after{
  content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s;
  background: linear-gradient(140deg, rgba(255,255,255,.45) 0%, rgba(255,255,255,0) 40%);
}
.theme-card:hover{
  transform: perspective(1000px) translateY(-10px) rotateX(4deg) rotateY(-3deg) !important;
  box-shadow: 0 32px 60px rgba(30, 58, 138, 0.18) !important;
}
.theme-card:hover::after{ opacity:1; }
.theme-card-header::before{ opacity:.25 !important; }

/* 8. 通用卡片升级（数据卡片 / 学术 / 品质 / 团队 / 游戏 / 页面容器） */
.stat-card, .academic-stage, .quality-card, .team-cat, .game-tier,
.dev-section, .career-overview > div, .career-jobs > div, .career-links > div, .career-adv,
.editor-tabs, .empty-state, .workspace-section, .task-card, .checkin-form, .checkin-card,
.section, .modal-panel, .ai-panel, .nav-toggle, .pomodoro-float, .eye-care-float,
.read-btn, .dev-stat, .fun-card, .resource-card, .task-bar, .ai-msg {
  border-radius: 20px !important;
}
.stat-card, .academic-stage, .quality-card, .team-cat, .game-tier,
.dev-section, .empty-state, .task-card, .checkin-form, .checkin-card,
.editor-tabs, .resource-card, .fun-card {
  background: rgba(255,255,255,.65) !important;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  border: 1px solid rgba(255,255,255,.75) !important;
  box-shadow: 0 14px 34px rgba(15, 23, 80, 0.08) !important;
  transition: transform .35s ease, box-shadow .35s ease !important;
}
.quality-card:hover, .team-cat:hover, .game-tier:hover, .resource-card:hover, .fun-card:hover, .task-card:hover, .checkin-card:hover {
  transform: translateY(-4px) !important;
  box-shadow: 0 22px 46px rgba(30, 58, 138, 0.14) !important;
}
.page-title {
  background: rgba(255,255,255,.55) !important;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(255,255,255,.7);
  border-radius: 20px;
  padding: 20px 24px;
  box-shadow: 0 10px 28px rgba(15, 23, 80, 0.06);
}

/* 9. 印章统一发光（眉题小圆点） */
.eyebrow-dot{
  background: linear-gradient(135deg,#6366f1,#8b5cf6,#f59e0b) !important;
  box-shadow: 0 0 0 3px rgba(245,158,11,.12), 0 3px 8px rgba(99,102,241,.28);
  border-radius: 3px !important;
}
.section-title::before{
  background: linear-gradient(180deg,#6366f1,#8b5cf6,#f59e0b) !important;
  box-shadow: 0 0 10px rgba(99,102,241,.4);
}

/* 10. Footer 玻璃升级 */
.site-footer{
  background:
    radial-gradient(700px 300px at 50% -60%, rgba(99,102,241,.35), transparent 70%),
    linear-gradient(180deg,#0b1230 0%, #111a45 100%) !important;
  border-top: 1px solid rgba(255,255,255,.12) !important;
  box-shadow: 0 -14px 40px -10px rgba(30, 58, 138, .35);
}
.footer-logo {
  background: linear-gradient(90deg,#fff,#c7d2fe);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* 11. 尊重减少动效偏好 */
@media (prefers-reduced-motion: reduce) {
  .theme-card:hover, .quality-card:hover, .team-cat:hover, .game-tier:hover,
  .task-card:hover, .checkin-card:hover, .resource-card:hover, .fun-card:hover,
  .btn-primary:hover {
    transform: none !important;
  }
  .btn-primary::before { display: none; }
  body::before, .hero::before, .hero::after { opacity: .15 !important; }
}

/* 12. 移动端微调：玻璃背景保持不影响触控 */
@media (max-width: 640px) {
  .hero { padding: 44px 24px 48px !important; border-radius: 18px !important; }
  .hero h2 { font-size: 30px !important; }
  .hero-seal { display:none; }
  .hero-visual { display:none; }
}


#app {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

/* 旧版紫色渐变 .header 已随 v94 玻璃态重绘移除（吸顶/层级已并入上方「3. Header 玻璃态重绘」） */

.header-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 16px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}

.logo {
  display: flex;
  align-items: center;
  gap: 12px;
}

.logo-icon {
  width: 48px;
  height: 48px;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
  backdrop-filter: blur(10px);
}

.logo-text h1 {
  font-size: 20px;
  font-weight: 700;
  letter-spacing: 1px;
}

.logo-text span {
  font-size: 12px;
  opacity: 0.85;
}

.nav {
  display: flex;
  gap: 8px;
  background: rgba(255, 255, 255, 0.15);
  padding: 6px;
  border-radius: 10px;
  backdrop-filter: blur(10px);
}

/* 汉堡菜单（桌面端隐藏，移动端作为按钮+抽屉出现） */
.nav-toggle { display: none; }
.nav-overlay { display: none; }

.nav-btn {
  background: transparent;
  border: none;
  color: rgba(255, 255, 255, 0.8);
  padding: 10px 20px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  transition: all 0.3s ease;
}

.nav-btn:hover {
  background: rgba(255, 255, 255, 0.15);
  color: white;
}

.nav-btn.active {
  background: white;
  color: var(--primary);
  box-shadow: var(--shadow);
}

/* ===== 树状导航（下拉子菜单） ===== */
.nav-tree { position: relative; }
.nav-tree-trigger { display: flex; align-items: center; gap: 4px; }
.nav-caret { font-size: 12px; transition: transform 0.2s ease; }
.nav-tree.open .nav-caret { transform: rotate(180deg); }
.nav-tree-menu {
  display: none;
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  min-width: 180px;
  background: white;
  border-radius: 12px;
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.15);
  padding: 6px;
  z-index: 200;
  gap: 2px;
  flex-direction: column;
}
.nav-tree.open .nav-tree-menu { display: flex; }
.nav-tree-item {
  background: transparent;
  border: none;
  color: var(--text);
  padding: 10px 16px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  text-align: left;
  transition: all 0.2s ease;
  white-space: nowrap;
  min-height: 42px;
}
.nav-tree-item:hover { background: var(--bg-hover, #f0f7ff); color: var(--primary); }
.nav-tree-item.active { background: var(--primary); color: white; }
/* 树状触发器：当子菜单中有激活项时，触发器也高亮 */
.nav-tree.has-active .nav-tree-trigger { background: rgba(255, 255, 255, 0.22); color: white; }

.user-info {
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(255, 255, 255, 0.15);
  padding: 8px 14px;
  border-radius: 30px;
  backdrop-filter: blur(10px);
}

.user-avatar {
  width: 36px;
  height: 36px;
  background: white;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
}

.user-name {
  font-size: 14px;
  font-weight: 500;
}

.user-edit-btn {
  background: transparent;
  border: none;
  color: #3d4557;
  cursor: pointer;
  font-size: 14px;
  padding: 2px 4px;
}
.user-edit-btn:hover {
  color: #4338ca;
  background: rgba(99,102,241,.09);
  border-radius: 8px;
}

/* Main */
.main {
  flex: 1;
  max-width: 1280px;
  width: 100%;
  margin: 0 auto;
  padding: 32px 24px;
}

/* Page Title */
.page-title {
  margin-bottom: 32px;
}

.page-title h2 {
  font-size: 28px;
  font-weight: 700;
  margin-bottom: 8px;
}

.page-title p {
  color: var(--text-light);
  font-size: 15px;
}

/* Editorial eyebrow system */
.eyebrow {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-light);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.eyebrow-dot {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  background: var(--primary);
  display: inline-block;
}

.section-heading { display: flex; flex-direction: column; }
.section-heading .eyebrow { margin-bottom: 4px; }

/* Hero — thesis-first, signature seal */
.hero {
  position: relative;
  overflow: hidden;
  padding: 64px 56px 56px;
  border-radius: 4px 4px 24px 4px;
  margin-bottom: 20px;
  background:
    linear-gradient(120deg, var(--primary-dark) 0%, var(--primary) 46%, var(--primary-light) 100%);
  color: #ffffff;
}
.hero h2 {
  font-size: 40px;
  line-height: 1.2;
  letter-spacing: -0.01em;
  font-weight: 800;
  margin-bottom: 20px;
}
.hero h2 em {
  font-style: italic;
  color: #ffffff;
  position: relative;
}
.hero h2 em::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 2px;
  height: 6px;
  background: var(--warning);
  border-radius: 3px;
  opacity: 0.85;
  z-index: -1;
}
.hero p {
  font-size: 16px;
  max-width: 520px;
  line-height: 1.75;
  opacity: 0.9;
  margin-bottom: 28px;
}
.hero-cta { display: flex; gap: 12px; flex-wrap: wrap; }

.hero-eyebrow {
  color: currentColor;
  opacity: 0.85;
}
.hero-eyebrow .eyebrow-dot { background: currentColor; }

/* Signature: the「探」seal */
.hero-seal {
  position: absolute;
  right: 40px;
  bottom: 36px;
  width: 96px;
  height: 96px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.hero-seal span {
  font-size: 44px;
  font-weight: 800;
  color: #ffffff;
  width: 88px;
  height: 88px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--danger);
  border-radius: 4px 40px 6px 6px;
  box-shadow: 0 12px 24px -8px rgba(239, 68, 68, 0.55);
  transform: rotate(-4deg);
  transition: transform 0.3s ease;
}
.hero-seal:hover span { transform: rotate(0deg) scale(1.05); }

/* Hero visual: 六大主题「探究」AI 插画（带签名印章，窄屏隐藏） */
.hero-visual {
  position: absolute;
  right: 44px;
  top: 50%;
  transform: translateY(-50%);
  width: min(40vw, 396px);
  z-index: 1;
}
.hero-illustration {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: 6px 46px 12px 12px;
  border: 3px solid rgba(255, 255, 255, .28);
  box-shadow: 0 28px 56px -20px rgba(0, 0, 0, .5);
}
.hero-visual .hero-seal {
  position: absolute;
  left: -20px;
  bottom: -16px;
  right: auto;
  top: auto;
  width: 78px;
  height: 78px;
  margin: 0;
  background: rgba(255, 255, 255, 0.12);
  border-radius: 4px 30px 8px 8px;
  backdrop-filter: blur(2px);
}
.hero-visual .hero-seal span {
  width: 68px;
  height: 68px;
  font-size: 34px;
  border-radius: 3px 32px 5px 5px;
  box-shadow: 0 12px 24px -8px rgba(239, 68, 68, .55);
}

/* Stats band — quiet, separated from thesis */
.hero-band {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  background: #ffffff;
  border: 1px solid var(--border);
  border-left: 4px solid var(--primary);
  border-radius: 4px 4px 12px 12px;
  padding: 18px 28px;
  margin-bottom: 48px;
  box-shadow: var(--shadow);
}
.hero-stat {
  flex: 1 1 120px;
  text-align: center;
  border-right: 1px solid var(--border);
}
.hero-stat:last-child { border-right: none; }
.hero-stat .number {
  font-size: 30px;
  font-weight: 800;
  color: var(--primary);
  letter-spacing: -0.02em;
}
.hero-stat .label {
  font-size: 13px;
  color: var(--text-light);
  margin-top: 2px;
}

/* Signature cut-corner on section titles */
.section-title {
  font-size: 26px;
  font-weight: 800;
  letter-spacing: -0.01em;
  position: relative;
  padding-left: 18px;
}
.section-title::before {
  content: '';
  position: absolute;
  left: 0;
  top: 6px;
  bottom: 6px;
  width: 5px;
  background: var(--primary);
  border-radius: 2px;
}

/* Section */
.section {
  margin-bottom: 48px;
}

.section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
}

.section-link {
  color: var(--primary);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
}

.section-link:hover {
  text-decoration: underline;
}

/* Theme Cards Grid */
.themes-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
  gap: 24px;
}

.theme-card {
  background: var(--card-bg);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  cursor: pointer;
  position: relative;
}

.theme-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--shadow-lg);
}

/* 主题卡片插图 */
.theme-card-image {
  width: 100%;
  height: 180px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.theme-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
}
.theme-card:hover .theme-card-image img {
  transform: scale(1.05);
}

.theme-card-header {
  padding: 32px 28px 24px;
  position: relative;
  overflow: hidden;
}

.theme-card-header::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.3) 0%, rgba(255,255,255,0) 100%);
}

.theme-icon {
  font-size: 48px;
  margin-bottom: 12px;
  position: relative;
  z-index: 1;
}

.theme-card-header h3 {
  font-size: 22px;
  font-weight: 700;
  color: white;
  position: relative;
  z-index: 1;
}

.theme-card-header .theme-subtitle {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.9);
  margin-top: 4px;
  position: relative;
  z-index: 1;
}

.theme-card-body {
  padding: 24px 28px;
}

.theme-motto {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px;
  margin-bottom: 10px;
  padding: 6px 0 6px 12px;
  border-left: 3px solid var(--primary-light);
  background: #f8fafc;
  border-radius: 2px 8px 8px 2px;
}
.theme-motto q {
  font-size: 14px;
  font-weight: 600;
  color: var(--primary-dark);
  quotes: '「' '」';
}
.theme-motto-src {
  font-size: 12px;
  color: var(--text-muted);
  font-style: normal;
}
.theme-desc {
  color: var(--text-light);
  font-size: 14px;
  margin-bottom: 16px;
  line-height: 1.7;
}

.theme-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
}

.theme-tag {
  background: #f1f5f9;
  color: var(--text-light);
  padding: 6px 12px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 500;
}

.theme-card-footer {
  padding: 16px 28px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.theme-stats {
  display: flex;
  gap: 16px;
}

.theme-stat {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--text-light);
}

.theme-stat .icon {
  font-size: 16px;
}

.theme-action {
  background: var(--primary);
  color: white;
  border: none;
  padding: 8px 16px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
}

.theme-action:hover {
  background: var(--primary-dark);
  transform: scale(1.05);
}

/* Theme Colors */
.theme-life .theme-card-header { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); }
.theme-eco .theme-card-header { background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%); }
.theme-earth .theme-card-header { background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); }
.theme-aero .theme-card-header { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); }
.theme-ind .theme-card-header { background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%); }
.theme-ai .theme-card-header { background: linear-gradient(135deg, #06b6d4 0%, #0891b2 100%); }

/* Task Cards */
.tasks-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.task-card {
  background: var(--card-bg);
  border-radius: var(--radius);
  padding: 24px;
  box-shadow: var(--shadow);
  display: flex;
  gap: 20px;
  transition: all 0.3s ease;
  border-left: 4px solid var(--primary);
}

.task-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateX(4px);
}

.task-card-header {
  flex: 1;
}

.task-title {
  font-size: 18px;
  font-weight: 600;
  margin-bottom: 8px;
}

.task-meta {
  display: flex;
  gap: 16px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}

.task-meta-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--text-light);
}

.task-desc {
  color: var(--text-light);
  font-size: 14px;
  margin-bottom: 16px;
  line-height: 1.6;
}

.task-progress {
  margin-bottom: 16px;
}

.progress-bar {
  height: 8px;
  background: #e2e8f0;
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 6px;
}

.progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--primary) 0%, var(--secondary) 100%);
  border-radius: 4px;
  transition: width 0.3s ease;
}

.progress-text {
  font-size: 12px;
  color: var(--text-light);
}

.task-actions {
  display: flex;
  gap: 12px;
  align-items: center;
}

.btn {
  padding: 10px 20px;
  border: none;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.btn-primary {
  background: var(--primary);
  color: white;
}

.btn-primary:hover {
  background: var(--primary-dark);
  transform: translateY(-1px);
}

.btn-secondary {
  background: #f1f5f9;
  color: var(--text);
}

.btn-secondary:hover {
  background: #e2e8f0;
}

.btn-success {
  background: var(--success);
  color: white;
}

.btn-success:hover {
  background: #059669;
}

.btn-outline {
  background: transparent;
  border: 2px solid var(--border);
  color: var(--text);
}

.btn-outline:hover {
  border-color: var(--primary);
  color: var(--primary);
}

.btn-light {
  background: #ffffff;
  color: var(--text);
  font-weight: 600;
}
.btn-light:hover {
  background: #f1f5f9;
  transform: translateY(-1px);
}
.btn-ghost {
  background: rgba(255,255,255,.72);
  color: #4338ca;
  border: 1.5px solid rgba(99,102,241,.4);
}
.btn-ghost:hover {
  background: #fff;
  border-color: #6366f1;
  color: #312e81;
}
/* v71：hero 深蓝渐变区恢复白字玻璃幽灵钮（btn-ghost 默认已改浅底深字） */
.hero .btn-ghost {
  background: rgba(255,255,255,.15) !important;
  color: rgba(255,255,255,.95) !important;
  border-color: rgba(255,255,255,.5) !important;
}
.hero .btn-ghost:hover {
  background: rgba(255,255,255,.28) !important;
  color: #fff !important;
  border-color: #fff !important;
}

.task-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 500;
}

.status-pending {
  background: #fef3c7;
  color: #92400e;
}

.status-in-progress {
  background: #dbeafe;
  color: #1e40af;
}

.status-completed {
  background: #d1fae5;
  color: #065f46;
}

.status-overdue {
  background: #fee2e2;
  color: #991b1b;
}

/* Check-in */
.checkin-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
  margin-bottom: 32px;
}

.stat-card {
  background: var(--card-bg);
  border-radius: var(--radius);
  padding: 24px;
  box-shadow: var(--shadow);
  text-align: center;
}

.stat-card .stat-icon {
  font-size: 32px;
  margin-bottom: 12px;
}

.stat-card .stat-number {
  font-size: 36px;
  font-weight: 800;
  color: var(--primary);
}

.stat-card .stat-label {
  font-size: 14px;
  color: var(--text-light);
}

.checkin-form {
  background: var(--card-bg);
  border-radius: var(--radius);
  padding: 32px;
  box-shadow: var(--shadow);
  margin-bottom: 32px;
}

.checkin-form h3 {
  margin-bottom: 24px;
  font-size: 20px;
}

.form-group {
  margin-bottom: 20px;
}

.form-label {
  display: block;
  font-size: 14px;
  font-weight: 500;
  margin-bottom: 8px;
  color: var(--text);
}

.form-control {
  width: 100%;
  padding: 12px 16px;
  border: 2px solid var(--border);
  border-radius: 10px;
  font-size: 14px;
  transition: border-color 0.2s ease;
  background: white;
  font-family: inherit;
}

.form-control:focus {
  outline: none;
  border-color: var(--primary);
}

.form-hint {
  display: block;
  font-size: 12px;
  line-height: 1.6;
  color: var(--text-light);
  margin-top: 6px;
}

/* v62：按钮样式的「文字链接」。用于登录↔注册↔开发者 切换，避免 <a href="#"> 导致地址栏跳到 # 真的发生跳转 */
.link-button {
  display: inline;
  padding: 0;
  margin: 0;
  border: 0;
  background: transparent;
  color: var(--primary);
  text-decoration: underline;
  cursor: pointer;
  font: inherit;
  line-height: inherit;
  border-radius: 0;
  box-shadow: none;
}
.link-button:hover { color: var(--primary-dark); text-decoration: underline; filter: none; }
.link-button:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; border-radius: 2px; }
.link-button:active { filter: brightness(.92); }


textarea.form-control {
  min-height: 120px;
  resize: vertical;
}

.checkin-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.checkin-item {
  background: var(--card-bg);
  border-radius: var(--radius);
  padding: 20px;
  box-shadow: var(--shadow);
  display: flex;
  gap: 16px;
}

.checkin-avatar {
  width: 48px;
  height: 48px;
  background: linear-gradient(135deg, var(--primary-light) 0%, var(--primary) 100%);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-weight: 600;
  flex-shrink: 0;
}

.checkin-content {
  flex: 1;
}

.checkin-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 8px;
}

.checkin-user {
  font-weight: 600;
  font-size: 15px;
}

.checkin-time {
  font-size: 12px;
  color: var(--text-muted);
}

.checkin-theme {
  background: #eef2ff;
  color: var(--primary);
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 12px;
  font-weight: 500;
}

.checkin-text {
  color: var(--text);
  font-size: 14px;
  line-height: 1.7;
  margin-bottom: 12px;
}

.checkin-actions {
  display: flex;
  gap: 16px;
}

.checkin-action {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--text-light);
  cursor: pointer;
  transition: color 0.2s ease;
  background: none;
  border: none;
}

.checkin-action:hover {
  color: var(--primary);
}

.checkin-action.liked {
  color: var(--danger);
}

/* 交流打卡：照片上传预览 */
.checkin-upload-preview {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 12px;
}
.upload-thumb {
  position: relative;
  width: 84px;
  height: 84px;
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
}
.upload-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.upload-thumb-remove {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: none;
  background: rgba(239, 68, 68, .9);
  color: #fff;
  font-size: 12px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 交流打卡：打卡内照片 */
.checkin-photos {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-bottom: 12px;
}
.checkin-photos img {
  width: 100%;
  height: 130px;
  object-fit: cover;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  cursor: zoom-in;
  transition: transform 0.2s ease;
}
.checkin-photos img:hover {
  transform: scale(1.02);
}

/* 作品秀画廊 */
.gallery-section {
  margin: 26px 0 8px;
}
.photo-gallery {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}
.gallery-item {
  margin: 0;
  background: var(--card-bg);
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
}
.gallery-item img {
  width: 100%;
  height: 170px;
  object-fit: cover;
  display: block;
  cursor: zoom-in;
  transition: transform 0.25s ease;
}
.gallery-item:hover img {
  transform: scale(1.03);
}
.gallery-item figcaption {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 10px;
  font-size: 12px;
}
.gallery-user {
  font-weight: 600;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.gallery-theme {
  color: var(--text-light);
  flex-shrink: 0;
}
.gallery-empty {
  grid-column: 1 / -1;
  background: var(--card-bg);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  padding: 28px;
  text-align: center;
  color: var(--text-light);
  font-size: 14px;
}

/* 作品照片灯箱 */
.lightbox-img {
  width: 100%;
  max-height: 62vh;
  object-fit: contain;
  border-radius: var(--radius);
}

@media (max-width: 900px) {
  .checkin-photos { grid-template-columns: repeat(2, 1fr); }
  .photo-gallery { grid-template-columns: repeat(2, 1fr); }
}

/* 自主成长：强身健体 + 如何改变自己 */
.growth-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
}
.growth-card {
  background: var(--card-bg);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  box-shadow: var(--shadow);
  padding: 26px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.growth-head {
  display: flex;
  align-items: center;
  gap: 16px;
}
.growth-icon {
  width: 58px;
  height: 58px;
  border-radius: 4px 24px 6px 6px;
  background: color-mix(in srgb, var(--g) 16%, transparent);
  border: 1px solid color-mix(in srgb, var(--g) 40%, transparent);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
  flex-shrink: 0;
}
.growth-head h3 { font-size: 22px; font-weight: 800; }
.growth-en { font-size: 12px; color: var(--text-light); letter-spacing: 0.5px; text-transform: uppercase; margin-top: 2px; }
.growth-desc { font-size: 14px; line-height: 1.7; color: var(--text); }
.growth-desc, .growth-block:first-of-type { margin-top: 0; }
.growth-block {
  border-top: 1px solid var(--border);
  padding-top: 16px;
}
.growth-block-title {
  font-size: 13px;
  font-weight: 700;
  color: var(--primary-dark);
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.growth-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.growth-list li {
  position: relative;
  padding-left: 16px;
  font-size: 13px;
  line-height: 1.6;
  color: var(--text);
}
.growth-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 9px;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: var(--primary);
  opacity: 0.6;
}
.growth-steps {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 9px;
  counter-reset: gstep;
}
.growth-steps li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  font-size: 13px;
  line-height: 1.55;
  color: var(--text);
}
.growth-step-n {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: 1px;
}
.growth-q {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.growth-q span {
  font-size: 13px;
  color: var(--text);
  padding: 8px 12px;
  background: var(--bg);
  border-radius: var(--radius);
  border-left: 3px solid var(--primary);
}
.growth-en-block {
  background: linear-gradient(120deg, rgba(6, 182, 212, .07), transparent);
  border-radius: var(--radius);
  padding: 16px;
  border-top: none;
}
.growth-words {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}
.growth-words span {
  font-size: 12px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 4px 10px;
  color: var(--text);
}
.growth-sentence {
  font-size: 14px;
  font-style: italic;
  color: var(--primary-dark);
  margin-bottom: 6px;
}
.growth-challenge { font-size: 13px; color: var(--text-light); }
.growth-cta {
  margin-top: auto;
  display: flex;
  align-items: center;
  gap: 12px;
  padding-top: 4px;
}
.growth-note {
  font-size: 12px;
  color: var(--text-muted);
  line-height: 1.4;
}
@media (max-width: 900px) {
  .growth-grid { grid-template-columns: 1fr; }
}

/* 首页自主成长横幅 */
.growth-banner {
  display: flex;
  align-items: center;
  gap: 18px;
  margin: 8px 0 24px;
  padding: 22px 26px;
  background: linear-gradient(120deg, #ecfdf5 0%, #ecfdf3 55%, #fffbeb 100%);
  border: 1px solid #b7f0d7;
  border-radius: var(--radius-lg);
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.growth-banner:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}
.growth-banner-icon {
  font-size: 34px;
  flex-shrink: 0;
}
.growth-banner-body { flex: 1; min-width: 0; }
.growth-banner-body h3 { font-size: 20px; font-weight: 800; margin: 6px 0 4px; }
.growth-banner-body p { font-size: 14px; color: var(--text-light); line-height: 1.6; }
.growth-banner-arrow {
  font-size: 14px;
  font-weight: 700;
  color: var(--success);
  white-space: nowrap;
}
@media (max-width: 640px) {
  .growth-banner { flex-wrap: wrap; }
  .growth-banner-arrow { width: 100%; }
}
.admin-form {
  background: var(--card-bg);
  border-radius: var(--radius);
  padding: 32px;
  box-shadow: var(--shadow);
}

.admin-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 32px;
  background: var(--bg);
  padding: 6px;
  border-radius: 10px;
}

.admin-tab {
  flex: 1;
  padding: 12px 24px;
  border: none;
  background: transparent;
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 500;
  color: var(--text-light);
  transition: all 0.2s ease;
}

.admin-tab.active {
  background: white;
  color: var(--primary);
  box-shadow: var(--shadow);
}

.admin-panel {
  display: none;
}

.admin-panel.active {
  display: block;
}

/* Modal */
.modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  padding: 20px;
  backdrop-filter: blur(4px);
}

.modal {
  background: white;
  border-radius: var(--radius-lg);
  max-width: 600px;
  width: 100%;
  max-height: 85vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}

.modal-header {
  padding: 24px;
  border-bottom: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.modal-header h3 {
  font-size: 20px;
  font-weight: 600;
}

.modal-close {
  background: transparent;
  border: none;
  font-size: 20px;
  cursor: pointer;
  color: var(--text-light);
  padding: 4px 8px;
  border-radius: 6px;
  transition: all 0.2s ease;
}

.modal-close:hover {
  background: var(--bg);
}

.modal-body {
  padding: 24px;
  overflow-y: auto;
  flex: 1;
}

.modal-footer {
  padding: 24px;
  border-top: 1px solid var(--border);
  display: flex;
  gap: 12px;
  justify-content: flex-end;
}

/* Toast */
.toast {
  position: fixed;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--text);
  color: white;
  padding: 14px 28px;
  border-radius: 10px;
  font-size: 14px;
  z-index: 2000;
  box-shadow: var(--shadow-lg);
  animation: slideUp 0.3s ease;
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateX(-50%) translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
}

/* Empty State */
.empty-state {
  text-align: center;
  padding: 60px 20px;
  color: var(--text-light);
}

.empty-state .empty-icon {
  font-size: 64px;
  margin-bottom: 16px;
}

.empty-state h3 {
  font-size: 18px;
  color: var(--text);
  margin-bottom: 8px;
}

.empty-state p {
  font-size: 14px;
}

/* Theme Detail */
.theme-detail-header {
  background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
  color: white;
  padding: 48px 32px;
  border-radius: var(--radius-lg);
  margin-bottom: 32px;
  display: flex;
  align-items: center;
  gap: 32px;
}
.theme-detail-header-content { flex: 1; min-width: 0; }
.theme-detail-hero-img {
  flex-shrink: 0;
  width: 280px;
  height: 210px;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}
.theme-detail-hero-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
@media (max-width: 768px) {
  .theme-detail-header { flex-direction: column; text-align: center; padding: 32px 20px; }
  .theme-detail-hero-img { width: 100%; height: 180px; }
}

.theme-detail-icon {
  font-size: 64px;
  margin-bottom: 16px;
}

.theme-detail-title {
  font-size: 32px;
  font-weight: 800;
  margin-bottom: 12px;
}

.theme-detail-subtitle {
  font-size: 16px;
  opacity: 0.9;
}

.theme-detail-motto {
  margin-top: 14px;
  padding: 8px 0 8px 14px;
  border-left: 3px solid rgba(255, 255, 255, 0.85);
  background: rgba(255, 255, 255, 0.14);
  border-radius: 2px 10px 10px 2px;
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px;
  backdrop-filter: blur(6px);
}
.theme-detail-motto q {
  font-size: 18px;
  font-weight: 700;
  color: #fff;
  quotes: '「' '」';
  letter-spacing: 1px;
}
.theme-detail-motto .theme-motto-src {
  color: rgba(255, 255, 255, 0.85);
  font-size: 12px;
}

.theme-detail-section {
  background: var(--card-bg);
  border-radius: var(--radius);
  padding: 28px;
  margin-bottom: 24px;
  box-shadow: var(--shadow);
}

.theme-detail-section h3 {
  font-size: 18px;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  gap: 10px;
}

/* 朗读按钮：主题介绍「🔊 朗读」/ 英语角「🔊 跟读」 */
.read-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--primary, #3b82f6);
  background: transparent;
  color: var(--primary, #3b82f6);
  border-radius: 20px;
  padding: 3px 12px;
  font-size: 12px;
  line-height: 1.6;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, transform 0.1s;
}
.read-btn:hover { background: var(--primary, #3b82f6); color: #fff; }
.read-btn:active { transform: scale(0.95); }
.read-btn-sm { padding: 1px 10px; font-size: 12px; }

/* ===== 录音打卡 & 音频可视化 ===== */
.rec-btn {
  display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid #ef4444; background: #fff; color: #ef4444;
  border-radius: 20px; padding: 6px 14px; font-size: 13px; cursor: pointer;
  transition: all 0.2s; line-height: 1.4;
}
.rec-btn:hover { background: #fef2f2; }
.rec-btn:active { transform: scale(0.96); }
.rec-btn.recording { background: #ef4444; color: #fff; animation: recPulse 1.2s infinite; }
@keyframes recPulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(239,68,68,0.5); }
  50% { box-shadow: 0 0 0 8px rgba(239,68,68,0); }
}
@media (prefers-reduced-motion: reduce) {
  .rec-btn.recording { animation: none; }
}
.rec-panel {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 10px 12px; background: #f8fafc; border-radius: 10px; margin-top: 8px;
}
.rec-timer {
  font-variant-numeric: tabular-nums; font-weight: 600; color: #ef4444; min-width: 42px;
}
.rec-meter {
  flex: 1; min-width: 120px; height: 24px; background: #e2e8f0; border-radius: 12px;
  overflow: hidden; position: relative;
}
.rec-meter-fill {
  height: 100%; background: linear-gradient(90deg, #22c55e 0%, #eab308 60%, #ef4444 100%);
  border-radius: 12px; transition: width 0.08s; width: 0%;
}
.rec-preview {
  display: flex; align-items: center; gap: 10px; padding: 10px 12px;
  background: #eff6ff; border-radius: 10px; margin-top: 8px;
}
.rec-preview audio { height: 32px; flex: 1; }
.rec-del { background: transparent; border: none; color: #ef4444; cursor: pointer; font-size: 16px; padding: 4px 8px; }

/* ===== 打卡项内嵌语音条 ===== */
.voice-msg {
  display: flex; align-items: center; gap: 8px; margin: 8px 0;
  padding: 8px 12px; background: linear-gradient(135deg, #eff6ff, #dbeafe);
  border-radius: 20px; max-width: 280px; cursor: pointer; user-select: none;
  transition: transform 0.1s;
}
.voice-msg:active { transform: scale(0.98); }
.voice-play { width: 28px; height: 28px; border-radius: 50%; background: #3b82f6; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; flex-shrink: 0; }
.voice-waves { flex: 1; display: flex; align-items: center; gap: 2px; height: 24px; }
.voice-wave { width: 2px; background: #3b82f6; border-radius: 1px; transition: height 0.15s; }
.voice-dur { font-size: 12px; color: #64748b; font-variant-numeric: tabular-nums; }

/* ===== 自定义视频播放器 ===== */
.video-player {
  position: relative; background: #000; border-radius: 12px; overflow: hidden;
  box-shadow: 0 4px 20px rgba(0,0,0,0.12); margin: 12px 0;
}
.video-player video { width: 100%; display: block; background: #000; }
.vp-controls {
  position: absolute; bottom: 0; left: 0; right: 0; padding: 8px 12px;
  background: linear-gradient(transparent, rgba(0,0,0,0.7));
  display: flex; align-items: center; gap: 8px; color: #fff;
  opacity: 0; transition: opacity 0.25s;
}
.video-player:hover .vp-controls, .video-player.paused .vp-controls { opacity: 1; }
.vp-btn { background: transparent; border: none; color: #fff; cursor: pointer; padding: 4px 6px; font-size: 16px; line-height: 1; }
.vp-btn:hover { color: #93c5fd; }
.vp-seek { flex: 1; height: 4px; -webkit-appearance: none; appearance: none; background: rgba(255,255,255,0.3); border-radius: 2px; outline: none; cursor: pointer; }
.vp-seek::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 12px; height: 12px; border-radius: 50%; background: #3b82f6; cursor: pointer; }
.vp-seek::-moz-range-thumb { width: 12px; height: 12px; border-radius: 50%; background: #3b82f6; cursor: pointer; border: none; }
.vp-time { font-size: 12px; font-variant-numeric: tabular-nums; min-width: 80px; text-align: center; }
.vp-rate { background: rgba(255,255,255,0.15); color: #fff; border: none; border-radius: 4px; padding: 2px 6px; font-size: 12px; cursor: pointer; }
.vp-rate option { color: #000; }
.video-hint { font-size: 12px; color: var(--text-light); margin-top: 6px; }

/* ===== 微课（v58） ===== */
.microcourse-list { display: flex; flex-direction: column; gap: 18px; margin-top: 6px; }
.mc-card {
  background: var(--bg, #fff); border: 1px solid var(--border, #e5e7eb);
  border-radius: 14px; padding: 14px; box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.mc-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.mc-card-title { font-size: 16px; font-weight: 700; color: var(--primary-dark, #3730a3); line-height: 1.4; }
.mc-card-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 5px; }
.mc-uploader { font-size: 12px; color: var(--text-light); display: inline-flex; align-items: center; gap: 6px; }
.mc-title-badge {
  font-style: normal; font-size: 12px; font-weight: 600;
  background: linear-gradient(135deg, #c7d2fe, #e0e7ff); color: #3730a3;
  border: 1px solid #a5b4fc; border-radius: 10px; padding: 1px 8px; line-height: 1.6;
}
.mc-uploader-bio { font-size: 12px; color: var(--text-light); line-height: 1.6; margin: 8px 0 2px; background: #f8fafc; border-radius: 8px; padding: 6px 10px; }
.mc-card-dur { font-size: 12px; color: var(--text-light); }
.mc-card-desc { font-size: 13px; color: var(--text-light); line-height: 1.7; margin: 8px 0 4px; }
.mc-del {
  background: transparent; border: 1px solid #fca5a5; color: #dc2626;
  border-radius: 8px; width: 32px; height: 32px; cursor: pointer; flex: none; font-size: 15px;
}
.mc-del:hover { background: #fef2f2; }
.mc-loading, .mc-empty {
  background: var(--bg, #f8fafc); border: 1px dashed var(--border, #d1d5db);
  border-radius: 12px; padding: 20px; text-align: center; color: var(--text-light); font-size: 14px;
}
/* 教师上传表单 */
.mc-upload-card {
  background: linear-gradient(135deg, #eef2ff 0%, #f8fafc 100%);
  border: 1px solid var(--primary-light, #818cf8); border-left: 4px solid var(--primary, #4f46e5);
  border-radius: 12px; padding: 14px 16px; margin-bottom: 16px;
}
.mc-upload-card h4 { margin: 0 0 12px; font-size: 15px; color: var(--primary-dark, #3730a3); }
.mc-field { display: block; margin-bottom: 10px; }
.mc-field span { display: block; font-size: 12px; font-weight: 600; color: var(--text-light); margin-bottom: 4px; }
.mc-field input[type=text], .mc-field input[type=file], .mc-field textarea {
  width: 100%; box-sizing: border-box; border: 1px solid var(--border, #d1d5db);
  border-radius: 8px; padding: 9px 10px; font-size: 14px; background: #fff;
}
.mc-field input:focus, .mc-field textarea:focus { outline: none; border-color: var(--primary, #4f46e5); }
.mc-submit-row { display: flex; align-items: center; gap: 12px; }
.mc-progress { font-size: 13px; color: var(--primary-dark, #3730a3); font-weight: 600; }

@media (max-width: 600px) {
  .mc-card { padding: 10px; }
  .mc-upload-card { padding: 12px; }
}

/* ===== 英语跟读打分（简易） ===== */
.speak-score {
  display: inline-flex; align-items: center; gap: 6px; margin-left: 8px;
  padding: 2px 10px; border-radius: 12px; font-size: 12px; font-weight: 600;
}
.speak-score.good { background: #dcfce7; color: #16a34a; }
.speak-score.ok { background: #fef3c7; color: #ca8a04; }
.speak-score.bad { background: #fee2e2; color: #dc2626; }

.subtopic-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
}

.subtopic-item {
  background: #f8fafc;
  border-radius: 10px;
  padding: 20px;
  transition: all 0.3s ease;
}

.subtopic-item:hover {
  background: #eef2ff;
  transform: translateY(-2px);
}

.subtopic-item h4 {
  font-size: 16px;
  margin-bottom: 8px;
  color: var(--primary);
}

.subtopic-item p {
  font-size: 13px;
  color: var(--text-light);
  line-height: 1.6;
}

/* Filter */
.filter-bar {
  display: flex;
  gap: 12px;
  margin-bottom: 24px;
  flex-wrap: wrap;
  align-items: center;
}

.filter-btn {
  padding: 8px 16px;
  border: 2px solid var(--border);
  background: white;
  border-radius: 20px;
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s ease;
}

.filter-btn:hover,
.filter-btn.active {
  border-color: var(--primary);
  background: var(--primary);
  color: white;
}

.search-box {
  flex: 1;
  min-width: 200px;
  position: relative;
}

.search-box input {
  width: 100%;
  padding: 10px 16px 10px 44px;
  border: 2px solid var(--border);
  border-radius: 24px;
  font-size: 14px;
}

.search-box input:focus {
  outline: none;
  border-color: var(--primary);
}

.search-box::before {
  content: '🔍';
  position: absolute;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 14px;
}

/* Completion Flow */
.flow-steps {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 32px;
  padding: 24px 0;
}

.flow-step {
  flex: 1;
  text-align: center;
  position: relative;
}

.flow-step-icon {
  width: 48px;
  height: 48px;
  background: #e2e8f0;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  margin: 0 auto 8px;
  transition: all 0.3s ease;
}

.flow-step.active .flow-step-icon {
  background: var(--primary);
  color: white;
  transform: scale(1.1);
}

.flow-step.completed .flow-step-icon {
  background: var(--success);
  color: white;
}

.flow-step-label {
  font-size: 13px;
  color: var(--text-light);
}

.flow-step.active .flow-step-label {
  color: var(--primary);
  font-weight: 600;
}

.flow-connector {
  flex: 0 0 40px;
  height: 2px;
  background: #e2e8f0;
  margin: 0 4px;
  margin-bottom: 30px;
}

.flow-connector.completed {
  background: var(--success);
}

/* Responsive */
@media (max-width: 1024px) {
  .hero-visual { display: none; }

  .header-inner {
    flex-wrap: wrap;
    gap: 12px;
  }
  
  .nav {
    order: 3;
    width: 100%;
    justify-content: center;
  }
  
  .hero {
    padding: 32px 24px;
  }
  
  .hero h2 {
    font-size: 28px;
  }
}

@media (max-width: 640px) {
  .main {
    padding: 20px 16px;
  }
  
  .nav {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  
  .nav-btn {
    padding: 8px 14px;
    font-size: 13px;
    white-space: nowrap;
  }
  
  .hero-stats {
    flex-wrap: wrap;
    gap: 16px;
  }
  
  .themes-grid {
    grid-template-columns: 1fr;
  }
  
  .flow-steps {
    flex-wrap: wrap;
    gap: 12px;
  }
  
  .flow-connector {
    display: none;
  }
  
  .stat-card {
    padding: 20px 16px;
  }
}

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

.fade-in {
  animation: fadeIn 0.4s ease;
}

@keyframes pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
}

.pulse {
  animation: pulse 2s infinite;
}

/* ===== 学习资源页 ===== */
.res-banner {
  display: flex;
  align-items: center;
  gap: 16px;
  background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);
  color: white;
  border-radius: var(--radius);
  padding: 24px 28px;
  margin-bottom: 24px;
  box-shadow: var(--shadow);
}

.res-banner-icon {
  width: 56px;
  height: 56px;
  background: rgba(255, 255, 255, 0.2);
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 30px;
  flex-shrink: 0;
}

.res-banner h3 {
  font-size: 18px;
  margin-bottom: 4px;
}

.res-banner p {
  font-size: 14px;
  opacity: 0.9;
}

.res-theme-tabs {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px;
  margin-bottom: 24px;
}

.res-tab {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 16px 12px;
  background: white;
  border: 2px solid var(--border);
  border-radius: 14px;
  cursor: pointer;
  transition: all 0.25s ease;
}

.res-tab:hover {
  transform: translateY(-3px);
  border-color: var(--tc, var(--primary));
  box-shadow: var(--shadow-lg);
}

.res-tab.active {
  border-color: var(--tc, var(--primary));
  background: linear-gradient(135deg, var(--tc, var(--primary)), var(--tc, var(--primary))dd);
}

.res-tab-icon {
  font-size: 28px;
}

.res-tab-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}

.res-tab.active .res-tab-name {
  color: white;
}

.res-main {
  background: white;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  overflow: hidden;
}

.res-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  padding: 28px 32px;
  border-bottom: 4px solid var(--primary);
  flex-wrap: wrap;
}

.res-title {
  display: flex;
  align-items: center;
  gap: 16px;
}

.res-title-icon {
  width: 56px;
  height: 56px;
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 30px;
  background: #f1f5f9;
  flex-shrink: 0;
}

.res-title h3 {
  font-size: 20px;
  margin-bottom: 4px;
}

.res-title p {
  font-size: 14px;
  color: var(--text-light);
}

.res-head-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.res-section {
  padding: 28px 32px;
  border-top: 1px solid var(--border);
}

.res-section:first-of-type {
  border-top: none;
}

.res-section-title {
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.res-sites {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}

.res-site-card {
  display: block;
  background: #f8fafc;
  border: 2px solid var(--border);
  border-radius: 14px;
  padding: 20px;
  text-decoration: none;
  color: inherit;
  transition: all 0.25s ease;
  position: relative;
}

.res-site-card:hover {
  border-color: var(--primary);
  background: #eef2ff;
  transform: translateY(-3px);
  box-shadow: var(--shadow-lg);
}

.res-site-tag {
  display: inline-block;
  background: #e0e7ff;
  color: var(--primary);
  font-size: 12px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 12px;
  margin-bottom: 12px;
}

.res-site-card h5 {
  font-size: 16px;
  margin-bottom: 6px;
  color: var(--text);
}

.res-site-card p {
  font-size: 13px;
  color: var(--text-light);
  line-height: 1.6;
  margin-bottom: 12px;
}

.res-site-go {
  font-size: 13px;
  font-weight: 600;
  color: var(--primary);
}

/* v74 站点「探究路径」指引条：进链接后怎么用 + 六步法锚点 */
.res-site-guide {
  margin-top: 10px;
  padding: 9px 11px;
  border-radius: 10px;
  background: linear-gradient(160deg, #eef2ff, #f8fafc);
  border: 1px solid #e0e7ff;
  font-size: 12px;
  line-height: 1.7;
  color: var(--text-light);
  text-align: left;
}
.res-site-guide b {
  color: var(--primary-dark);
}

.res-do-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
}

.res-do-item,
.res-question {
  background: #f8fafc;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 18px;
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.res-do-item p,
.res-question p {
  font-size: 14px;
  color: var(--text);
  line-height: 1.7;
  flex: 1;
}

.res-do-num {
  width: 28px;
  height: 28px;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  color: white;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 14px;
}

.res-questions {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 16px;
}

.res-q-icon {
  font-size: 14px;
  font-weight: 700;
  color: var(--warning);
}

.btn-sm {
  padding: 6px 12px;
  font-size: 12px;
  border-radius: 8px;
  align-self: flex-start;
}

@media (max-width: 640px) {
  .res-head {
    flex-direction: column;
    align-items: flex-start;
  }
  .res-head-actions {
    width: 100%;
  }
  .res-theme-tabs {
    grid-template-columns: repeat(3, 1fr);
  }
  .res-section {
    padding: 20px;
  }
}

/* ===== 六步探究路线图 ===== */
.phase-roadmap {
  background: #f8fafc;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 12px 14px;
  margin: 12px 0;
}
.phase-road-label {
  font-size: 12px;
  color: var(--text-light);
  font-weight: 600;
  margin-bottom: 10px;
}
.phase-steps {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.phase-step {
  flex: 1 1 75px;
  min-width: 64px;
  text-align: center;
  padding: 8px 4px;
  border-radius: 10px;
  background: #eef2f7;
  border: 2px solid transparent;
  transition: all 0.25s ease;
}
.phase-step-icon { font-size: 20px; }
.phase-step-en {
  font-size: 12px;
  font-weight: 700;
  color: var(--text-light);
  margin: 2px 0;
  letter-spacing: 0.3px;
}
.phase-step-cn {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
}
.phase-step.done {
  background: linear-gradient(135deg, var(--success), #34d399);
  border-color: var(--success);
}
.phase-step.done .phase-step-cn,
.phase-step.done .phase-step-en { color: #fff; }
.phase-step.current {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.15);
  transform: translateY(-2px);
}
.phase-step.current .phase-step-icon { animation: pulse 1.5s infinite; }
.phase-steps-large .phase-step { padding: 14px 6px; }
.phase-steps-large .phase-step-icon { font-size: 26px; }

/* ===== 主题英语角 ===== */
.en-corner {
  background: #f0f9ff;
  border: 1px solid #bae6fd;
  border-radius: 12px;
  padding: 12px 16px;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.en-corner-label {
  font-size: 12px;
  font-weight: 700;
  color: #0369a1;
  background: #e0f2fe;
  padding: 4px 10px;
  border-radius: 12px;
}
.en-corner-words {
  font-size: 14px;
  color: #0c4a6e;
  font-weight: 600;
}
.en-corner-words b {
  color: #0369a1;
  background: #e0f2fe;
  padding: 2px 8px;
  border-radius: 8px;
}
.en-corner-sentence {
  font-size: 13px;
  color: #6b7280;
  font-style: italic;
  margin-left: auto;
}

/* ===== 主题·数据分析（六步法第4步） ===== */
.analysis-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 16px;
  box-shadow: var(--shadow-sm);
}
.analysis-chart-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.analysis-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
}
.analysis-unit {
  font-size: 12px;
  color: var(--text-light);
}
.analysis-chart {
  position: relative;
  width: 100%;
  height: 240px;
  margin-bottom: 12px;
}
.analysis-goal {
  font-size: 13px;
  color: var(--text);
  line-height: 1.7;
  padding: 10px 12px;
  background: var(--bg);
  border-radius: 10px;
  margin-bottom: 8px;
}
.analysis-goal span,
.analysis-insight span {
  font-weight: 700;
}
.analysis-insight {
  font-size: 14px;
  color: var(--text);
  line-height: 1.8;
  padding: 10px 12px;
  background: var(--bg);
  border-radius: 10px;
  margin-bottom: 8px;
}
.analysis-source {
  font-size: 12px;
  color: var(--text-light);
}

/* 主题·数据分析：今日真实打卡状态徽标 */
.analysis-live-badge {
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: #0b7a5b;
  background: #eafaf3;
  border: 1px solid #b7ecd9;
  border-radius: 999px;
  padding: 6px 12px;
  margin-bottom: 10px;
  max-width: 100%;
  line-height: 1.5;
}

/* 共享交流：积分可视化横向条形图 */
.points-viz {
  width: 100%;
  height: 280px;
  margin-bottom: 16px;
  padding: 8px 0;
  background: var(--card-bg);
  border-radius: var(--radius);
}
.points-viz canvas {
  display: block;
  width: 100%;
  height: 100%;
}

/* ===== 趣味学习园地 ===== */
.fun-banner {
  background: linear-gradient(135deg, #f59e0b 0%, #ef4444 100%);
  border-radius: var(--radius-lg);
  padding: 32px;
  color: white;
  margin-bottom: 24px;
  box-shadow: var(--shadow);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.fun-banner-badge {
  width: 64px;
  height: 64px;
  background: rgba(255,255,255,0.25);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 36px;
  margin: 0 auto 14px;
  animation: pulse 2s infinite;
}
.fun-banner h3 { font-size: 22px; margin-bottom: 6px; }
.fun-banner p { font-size: 14px; opacity: 0.95; margin-bottom: 20px; }
.fun-banner .btn-lg { font-size: 17px; padding: 14px 34px; }
.fun-quiz-box { margin-top: 22px; max-width: 560px; margin-left: auto; margin-right: auto; }
.fun-quiz-card {
  background: rgba(255,255,255,0.98);
  color: var(--text);
  border-radius: 14px;
  padding: 20px 24px;
  text-align: left;
  box-shadow: 0 10px 30px rgba(0,0,0,0.2);
}
.fun-quiz-head {
  font-size: 16px;
  font-weight: 700;
  color: #ef4444;
  margin-bottom: 10px;
}
.fun-quiz-q {
  font-size: 16px;
  font-weight: 600;
  line-height: 1.7;
  margin-bottom: 8px;
}
.fun-quiz-hint { font-size: 13px; color: #f59e0b; margin-bottom: 14px; }
.fun-quiz-actions { display: flex; gap: 10px; margin-bottom: 10px; }
.fun-quiz-answer {
  background: #ecfdf5;
  color: #047857;
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 12px;
  min-height: 18px;
}
.resident-section {
  background: white;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  padding: 24px 28px;
  margin-bottom: 20px;
}

/* ===== 登录 / 注册 ===== */
#authOverlay { display: none; align-items: center; justify-content: center; }
#authOverlay[style*="flex"], .modal-overlay#authOverlay { align-items: center; justify-content: center; }
.auth-modal { max-width: 400px; width: 100%; }
.user-role {
  font-size: 12px;
  color: rgba(255,255,255,0.85);
  background: rgba(255,255,255,0.2);
  padding: 2px 8px;
  border-radius: 10px;
  margin-left: 2px;
}
.auth-switch { text-align: center; margin-top: 14px; font-size: 14px; color: var(--text-light); }
.auth-switch a { color: var(--primary); text-decoration: none; font-weight: 600; }
.role-select { display: flex; gap: 10px; }
.role-btn {
  flex: 1;
  padding: 12px 0;
  border: 2px solid var(--border);
  background: #fff;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s ease;
}
.role-btn.active {
  border-color: var(--primary);
  background: #eef2ff;
  color: var(--primary);
}

/* ===== 我的空间 ===== */
.workspace-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
}
@media (max-width: 860px) { .workspace-grid { grid-template-columns: 1fr; } }
.workspace-pane {
  background: #fff;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.workspace-pane-head { padding: 22px 24px; color: #fff; display: flex; gap: 14px; align-items: center; }
.pane-peer { background: linear-gradient(120deg, #7c3aed 0%, #6d28d9 100%); }
.pane-teacher { background: linear-gradient(120deg, #0ea5e9 0%, #0369a1 100%); }
.workspace-pane-icon { font-size: 34px; }
.workspace-pane-title { font-size: 20px; font-weight: 800; }
.workspace-pane-sub { font-size: 13px; opacity: 0.9; margin-top: 2px; }
.workspace-pane-body { padding: 20px 24px 24px; flex: 1; display: flex; flex-direction: column; gap: 14px; }
.workspace-counts { display: flex; gap: 12px; }
.workspace-count {
  flex: 1;
  background: #f8fafc;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px;
  text-align: center;
  font-size: 12px;
  color: var(--text-light);
}
.workspace-count span { display: block; font-size: 24px; font-weight: 800; color: var(--text); margin-bottom: 2px; }
.peer-list { display: flex; flex-direction: column; gap: 10px; flex: 1; }
.peer-mini {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
}
.peer-mini-avatar { font-size: 24px; }
.peer-mini-body { flex: 1; min-width: 0; }
.peer-mini-name { font-size: 14px; font-weight: 600; }
.peer-mini-desc { font-size: 12px; color: var(--text-light); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.peer-mini-score { font-size: 14px; text-align: right; }
.empty-mini { color: var(--text-muted); font-size: 13px; padding: 8px 4px; }

/* ===== 互评 / 老师处理卡片 ===== */
.peer-card { border-left: 4px solid var(--border); }
.peer-badge {
  font-size: 12px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 8px;
  background: #f1f5f9;
  color: var(--text-light);
}
.peer-badge.mine { background: #eef2ff; color: var(--primary); }
.peer-score-row { display: flex; align-items: center; gap: 8px; margin: 8px 0; flex-wrap: wrap; }
.stars { letter-spacing: 1px; }
.stars-empty { color: var(--text-muted); }
.peer-reviews { display: flex; flex-direction: column; gap: 6px; margin: 10px 0; }
.peer-review {
  background: #f8fafc;
  border-radius: 8px;
  padding: 6px 10px;
  font-size: 13px;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.peer-review-avatar { font-size: 16px; }
.peer-review-name { font-weight: 600; color: var(--text); font-size: 12px; }
.peer-review-msg { color: var(--text-light); flex-basis: 100%; margin-left: 22px; }
.peer-actions { display: flex; align-items: center; gap: 14px; margin-top: 6px; flex-wrap: wrap; }
.peer-hint { font-size: 13px; color: var(--text-muted); }
.btn-sm { padding: 6px 14px; font-size: 13px; border-radius: 8px; }
.grade-form {
  margin-top: 10px;
  padding-top: 12px;
  border-top: 1px dashed var(--border);
}
.grade-done-badge {
  background: #ecfdf5;
  border: 1px solid #d1fae5;
  color: var(--success);
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 14px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 8px;
}
.grade-done-comment { font-size: 13px; color: #059669; font-weight: 500; }
#grade-todo, #grade-done { display: none; }
#grade-todo.active, #grade-done.active { display: block; }

/* ===== 开发者后台 · 账号管理 ===== */
.auth-sep { margin: 0 8px; color: var(--text-muted); }
.auth-dev-tip {
  background: #fff7ed;
  border: 1px solid #fed7aa;
  color: #9a3412;
  font-size: 13px;
  padding: 10px 12px;
  border-radius: 8px;
  margin-bottom: 16px;
  line-height: 1.5;
}
.dev-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-bottom: 24px;
}
.dev-section {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  margin-bottom: 20px;
  box-shadow: var(--shadow);
}
.dev-section-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 700;
  margin-bottom: 14px;
  color: var(--text);
}
.dev-list { display: flex; flex-direction: column; gap: 10px; }
.dev-account-row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-left: 4px solid var(--primary);
  border-radius: 10px;
  background: #fff;
}
.dev-account-row.dev-teacher { border-left-color: #8b5cf6; }
.dev-account-row.dev-student { border-left-color: #06b6d4; }
.dev-account-row.dev-mine { border-left-color: #f59e0b; background: #fffbeb; }
.dev-acc-icon {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: #f1f5f9;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  flex-shrink: 0;
}
.dev-acc-main { flex: 1; min-width: 0; }
.dev-acc-name { font-weight: 600; font-size: 15px; display: flex; align-items: center; gap: 8px; }
.dev-acc-sub { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.dev-acc-meta { font-size: 13px; color: var(--text-light); white-space: nowrap; }
.dev-role-tag {
  font-size: 12px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 20px;
  display: inline-block;
}
.dev-role-tag.student { background: #cffafe; color: #0e7490; }
.dev-role-tag.teacher { background: #ede9fe; color: #6d28d9; }
.dev-role-tag.dev { background: #fef3c7; color: #b45309; }
@media (max-width: 640px) {
  .dev-stats { grid-template-columns: 1fr; }
  .dev-acc-meta { display: none; }
  .dev-account-row { flex-wrap: wrap; }
}

/* ============================================================
   视觉动效系统（方法论落地：缓动 / 按压 / 焦点 / 揭示 / 计数 / 减动效）
   ============================================================ */
:root {
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
  --ease-motion:   cubic-bezier(0.22, 1, 0.36, 1);
  --dur: 0.45s;
}

/* 统一运动时基：交互元素走同一节奏 */
.btn, .nav-btn, .theme-card, .res-tab, .res-site-card, .filter-btn, .role-btn,
.flow-step, .subtopic-item, .task-card, .checkin-item, .dev-account-row {
  transition-duration: var(--dur);
}

/* 按压反馈（挤压拉伸 / 预备动作） */
.btn:active              { transform: scale(0.96) !important; }
.nav-btn:active          { transform: scale(0.95); }
.theme-card:active       { transform: translateY(-2px) scale(0.985); }
.res-tab:active          { transform: translateY(0) scale(0.97); }
.filter-btn:active       { transform: scale(0.96); }
.role-btn:active         { transform: scale(0.96); }

/* 键盘可达性：可见焦点（质量底线） */
a:focus-visible, button:focus-visible, input:focus-visible,
textarea:focus-visible, select:focus-visible {
  outline: 3px solid var(--primary);
  outline-offset: 2px;
  border-radius: 6px;
}
.header .nav-btn:focus-visible,
.hero .btn:focus-visible,
.res-banner .btn:focus-visible,
.fun-banner .btn:focus-visible { outline-color: #ffffff; }

/* 数字等宽，避免递增时进位抖动 */
.number, .stat-number, .dev-acc-meta, .workspace-count span { font-variant-numeric: tabular-nums; }

/* ===== 滚动揭示（Scroll Reveal） ===== */
/* v72 真机保底：部分手机内核（微信 X5 等）IntersectionObserver 可能不回调，
   元素会永远停在 opacity:0 造成「首页主题卡片空白」。给揭示元素加 CSS 兜底动画：
   IO 正常时 JS 提前加 .is-visible（动画终点与类切换一致，无视觉跳变）；
   IO 失效时动画在延迟后自动显现——内容永远可见，绝不空白。 */
@keyframes revealFallback {
  /* 只写 to 帧：延迟期间元素显示底层样式（JS 提前揭示立即生效），
     动画仅在 IO 失效时于延迟后兜底播放到可见态 */
  to { opacity: 1; transform: none; }
}
.reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .7s var(--ease-out-expo), transform .7s var(--ease-out-expo);
  will-change: opacity, transform;
  animation: revealFallback .7s calc(1.8s + var(--d, 0ms)) both;
}
.reveal.is-visible { opacity: 1; transform: none; }

/* 子项交错入视口（配合 JS 注入 --d 延时） */
.reveal-children > * {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .6s var(--ease-motion), transform .6s var(--ease-motion);
  transition-delay: var(--d, 0ms);
  animation: revealFallback .6s calc(1.8s + var(--d, 0ms)) both;
}
.reveal-children.is-visible > * { opacity: 1; transform: none; }

/* 计数数字 */
.count-up { font-variant-numeric: tabular-nums; }

/* 首屏标志物：印章轻呼吸（减动效时关闭） */
@keyframes sealBreathe {
  0%, 100% { transform: rotate(-4deg) scale(1); }
  50%      { transform: rotate(-4deg) scale(1.045); }
}
@media (prefers-reduced-motion: no-preference) {
  .hero-seal span { animation: sealBreathe 3.4s ease-in-out infinite; }
}
.hero-seal:hover span { animation: none; }

/* 尊重系统减少动效偏好 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .001ms !important;
  }
  .reveal, .reveal-children > * { opacity: 1 !important; transform: none !important; }
}

/* ===== 校园共享交流页 ===== */
.shared-updated { display:block; font-size:12px; color:var(--text-light); margin: 4px 0 14px; }
.shared-stats { display:grid; grid-template-columns: repeat(auto-fit, minmax(140px,1fr)); gap:14px; margin-bottom:20px; }
.shared-grid { display:grid; grid-template-columns: 1fr 1fr; gap:20px; align-items:start; }
.shared-col { min-width: 0; }
.shared-item { display:flex; gap:12px; padding:14px; border-radius:14px; background:var(--card-bg); border:1px solid var(--border); margin-bottom:12px; }
.shared-avatar { width:42px; height:42px; flex-shrink:0; border-radius:12px; background:var(--bg); display:flex; align-items:center; justify-content:center; font-size:22px; }
.shared-main { min-width:0; }
.shared-head { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.shared-name { font-weight:700; font-size:14px; }
.shared-theme { font-size:12px; background:var(--bg); color:var(--primary); border-radius:20px; padding:2px 8px; }
.shared-content { font-size:13px; color:var(--text); line-height:1.7; margin:0 0 8px; }
.shared-meta { display:flex; gap:12px; font-size:12px; color:var(--text-light); align-items:center; }
.shared-score { color:var(--success); font-weight:600; }
.score-row { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:10px; margin-bottom:6px; background:var(--card-bg); border:1px solid var(--border); }
.score-rank { width:22px; height:22px; flex-shrink:0; border-radius:6px; background:var(--bg); color:var(--text-light); font-size:12px; font-weight:800; display:flex; align-items:center; justify-content:center; }
.score-rank.top { background:var(--primary); color:#fff; }
.score-avatar { font-size:18px; }
.score-name { flex:1; font-size:13px; font-weight:600; }
.score-pts { font-size:13px; color:var(--text-light); }
.score-pts b { color:var(--primary); font-size:15px; }
@media (max-width: 640px) {
  .shared-grid { grid-template-columns: 1fr; }
}

/* ===== 番茄时钟浮窗 ===== */
.pomodoro-widget {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 1500;
  width: 190px;
  background: var(--card-bg);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  border: 1px solid var(--border);
  padding: 14px;
  font-family: inherit;
}
.pomodoro-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.pomodoro-title { font-size: 13px; font-weight: 700; }
.pomo-min {
  margin-left: auto;
  width: 24px;
  height: 24px;
  flex-shrink: 0;
  border: none;
  border-radius: 50%;
  background: var(--bg);
  color: var(--text-light);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  transition: all 0.2s ease;
  -webkit-tap-highlight-color: transparent;
  min-height: 24px;
}
.pomo-min:hover { background: var(--border); color: var(--text); }
.pomo-min:active { transform: scale(0.92); }
/* 收起状态：隐藏整体浮窗 */
.pomodoro-widget.min { display: none; }
/* 收起后的浮标——醒目胶囊形，带标签+弹跳呼吸动画，z-index 1700 保证永远在 AI 面板之上不被盖住 */
.pomo-fab {
  position: fixed;
  right: 20px;
  bottom: 80px; /* 上移避免与 footer/AI 按钮挤在一起 */
  z-index: 1700; /* 关键：高于 .ai-panel 的 1600，永远不被盖住 */
  height: 52px; /* 稍微加大一点更醒目，方便触控 */
  border: 3px solid rgba(255,255,255,0.75); /* 加一层白边进一步醒目 */
  border-radius: 30px;
  background: linear-gradient(135deg, #ef4444, #f97316);
  box-shadow: 0 4px 24px rgba(239, 68, 68, 0.55), 0 2px 10px rgba(0, 0, 0, 0.2);
  color: white;
  font-size: 13.5px;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  display: none;
  align-items: center;
  gap: 8px;
  padding: 0 20px 0 14px;
  transition: transform 0.2s ease, box-shadow 0.2s ease, right 0.3s ease, bottom 0.3s ease;
  -webkit-tap-highlight-color: transparent;
  animation: pomoBouncePulse 2.2s ease-in-out infinite;
}
.pomo-fab-icon { font-size: 24px; line-height: 1; filter: drop-shadow(0 1px 2px rgba(0,0,0,0.2)); }
.pomo-fab-label { white-space: nowrap; text-shadow: 0 1px 2px rgba(0,0,0,0.18); }
.pomo-fab.show { display: inline-flex; }
.pomo-fab:hover {
  transform: scale(1.06) translateY(-2px);
  box-shadow: 0 10px 34px rgba(239, 68, 68, 0.6), 0 3px 14px rgba(0, 0, 0, 0.25);
}
.pomo-fab:active { transform: scale(0.95); }
/* 组合动画：脉冲光晕 + 轻微上下弹跳，孩子一眼就能看到 */
@keyframes pomoBouncePulse {
  0%, 100% {
    box-shadow: 0 4px 24px rgba(239, 68, 68, 0.55), 0 2px 10px rgba(0, 0, 0, 0.2);
    transform: translateY(0);
  }
  50% {
    box-shadow: 0 8px 36px rgba(239, 68, 68, 0.75), 0 3px 14px rgba(0, 0, 0, 0.22);
    transform: translateY(-6px);
  }
}
/* 浮标 tooltip 小气泡——悬停告诉孩子双击页脚也能找回 */
.pomo-fab::after {
  content: attr(title);
  position: absolute;
  right: 100%;
  top: 50%;
  transform: translateY(-50%) translateX(-10px);
  background: rgba(15, 23, 42, 0.92);
  color: #fff;
  padding: 6px 10px;
  border-radius: 8px;
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
.pomo-fab:hover::after {
  opacity: 1;
  transform: translateY(-50%) translateX(-6px);
}
@media (prefers-reduced-motion: reduce) {
  .pomo-fab { animation: none; }
  .pomo-fab:hover { transform: scale(1.05); }
}

/* ===== AI 助手悬浮聊天面板 ===== */
.ai-panel {
  position: fixed;
  right: 20px;
  bottom: 20px;
  width: 380px;
  max-width: calc(100vw - 40px);
  max-height: 560px;
  z-index: 1600;
  background: var(--card-bg, #fff);
  border-radius: 18px;
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08);
  border: 1px solid var(--border, #e5e7eb);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: aiPanelIn 0.3s cubic-bezier(0.22, 0.61, 0.36, 1);
}
@keyframes aiPanelIn {
  from { opacity: 0; transform: translateY(20px) scale(0.95); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.ai-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  background: linear-gradient(135deg, var(--primary, #2563eb), var(--primary-dark, #1d4ed8));
  color: white;
  cursor: grab;
  user-select: none;
}
.ai-panel-header:active { cursor: grabbing; }
.ai-panel-title { display: flex; align-items: center; gap: 10px; }
.ai-panel-avatar { font-size: 28px; }
.ai-panel-status { font-size: 12px; opacity: 0.85; display: block; margin-top: 2px; }
.ai-panel-actions { display: flex; gap: 6px; }
.ai-panel-btn {
  width: 32px; height: 32px;
  border: none; border-radius: 8px;
  background: rgba(255, 255, 255, 0.2);
  color: white; cursor: pointer; font-size: 14px;
  transition: background 0.2s ease;
  display: flex; align-items: center; justify-content: center;
}
.ai-panel-btn:hover { background: rgba(255, 255, 255, 0.35); }
.ai-panel-body {
  flex: 1; overflow-y: auto;
  padding: 16px;
  display: flex; flex-direction: column; gap: 12px;
  background: var(--bg, #f8fafc);
  min-height: 240px;
}
.ai-msg {
  max-width: 85%;
  padding: 10px 14px;
  border-radius: 14px;
  font-size: 14px;
  line-height: 1.6;
  word-break: break-word;
  white-space: pre-line;
}
.ai-msg-bot {
  background: white;
  border: 1px solid var(--border, #e5e7eb);
  align-self: flex-start;
  border-bottom-left-radius: 4px;
}
.ai-msg-user {
  background: var(--primary, #2563eb);
  color: white;
  align-self: flex-end;
  border-bottom-right-radius: 4px;
}
.ai-msg-nav {
  display: inline-block;
  margin-top: 8px;
  padding: 6px 14px;
  border-radius: 8px;
  background: rgba(37, 99, 235, 0.1);
  color: var(--primary, #2563eb);
  font-size: 13px;
  cursor: pointer;
  border: 1px solid rgba(37, 99, 235, 0.2);
  transition: all 0.2s ease;
}
.ai-msg-nav:hover { background: var(--primary, #2563eb); color: white; }
.ai-quick-asks { display: flex; flex-wrap: wrap; gap: 8px; }
.ai-quick-btn {
  padding: 7px 14px;
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 20px;
  background: white;
  color: var(--text, #1e293b);
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s ease;
  min-height: 36px;
}
.ai-quick-btn:hover { border-color: var(--primary, #2563eb); color: var(--primary, #2563eb); }
.ai-panel-input {
  display: flex; gap: 8px;
  padding: 12px;
  border-top: 1px solid var(--border, #e5e7eb);
  background: white;
}
.ai-panel-input input {
  flex: 1;
  border: 1px solid var(--border, #e5e7eb);
  border-radius: 10px;
  padding: 10px 14px;
  font-size: 14px;
  outline: none;
  transition: border-color 0.2s ease;
  min-height: 42px;
}
.ai-panel-input input:focus { border-color: var(--primary, #2563eb); }
.ai-send-btn {
  padding: 0 18px;
  border: none;
  border-radius: 10px;
  background: var(--primary, #2563eb);
  color: white;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s ease;
  min-height: 42px;
}
.ai-send-btn:hover { background: var(--primary-dark, #1d4ed8); }
.ai-fab {
  position: fixed;
  right: 20px;
  bottom: 78px;
  z-index: 1600;
  width: 56px;
  height: 56px;
  border: none;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--primary, #2563eb), var(--primary-dark, #1d4ed8));
  box-shadow: 0 4px 20px rgba(37, 99, 235, 0.4), 0 2px 8px rgba(0, 0, 0, 0.12);
  color: white;
  font-size: 26px;
  cursor: pointer;
  display: none;
  align-items: center;
  justify-content: center;
  transition: transform 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.ai-fab.show { display: inline-flex; }
.ai-fab:hover { transform: scale(1.08); }
.ai-fab:active { transform: scale(0.94); }
.ai-fab-badge {
  position: absolute;
  top: -4px; right: -4px;
  background: #ef4444;
  color: white;
  font-size: 12px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 10px;
  line-height: 1;
}

/* 移动端 AI 面板适配 */
@media (max-width: 480px) {
  .ai-panel {
    right: 8px; left: 8px; bottom: 8px;
    width: auto; max-width: none;
    max-height: 70vh;
  }
  .ai-fab { right: 16px; bottom: 72px; }
  .pomo-fab { right: 16px; bottom: 16px; }
}

/* 移动端抽屉内树状导航：展开为分组列表，不做下拉 */
@media (max-width: 900px) {
  .nav-tree { width: 100%; }
  .nav-tree-trigger { width: 100%; justify-content: space-between; padding: 12px 16px; }
  .nav-tree-menu {
    position: static;
    box-shadow: none;
    background: rgba(255, 255, 255, 0.08);
    border-radius: 0;
    padding: 4px 0 4px 12px;
    display: flex;
  }
  .nav-tree-item {
    width: 100%;
    color: rgba(255, 255, 255, 0.85);
    padding: 10px 16px;
  }
  .nav-tree-item:hover { background: rgba(255, 255, 255, 0.1); color: white; }
  .nav-tree-item.active { background: rgba(255, 255, 255, 0.15); color: white; }
  .nav-caret { transition: transform 0.2s ease; }
  .nav-tree:not(.open) .nav-tree-menu { display: none; }
}
.pomodoro-mode {
  font-size: 12px;
  padding: 2px 8px;
  border-radius: 20px;
  background: #ecfdf5;
  color: var(--success);
}
.pomodoro-mode.paused { background: #fef3c7; color: var(--warning); }
.pomodoro-mode.done { background: #fef2f2; color: var(--danger); }
.pomodoro-body { text-align: center; position: relative; margin-bottom: 10px; }
.pomodoro-ring {
  width: 130px;
  height: 130px;
  transform: rotate(-90deg);
}
.pomo-track {
  fill: none;
  stroke: var(--border);
  stroke-width: 6;
}
.pomo-progress {
  fill: none;
  stroke: var(--primary);
  stroke-width: 6;
  stroke-linecap: round;
  transition: stroke-dashoffset 0.5s linear;
}
.pomodoro-time {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 26px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  letter-spacing: 1px;
}
.pomodoro-label { font-size: 12px; color: var(--text-light); margin-top: 6px; }
.pomodoro-actions { display: flex; gap: 8px; }
.pomo-btn {
  flex: 1;
  border: none;
  border-radius: 8px;
  padding: 8px 0;
  font-size: 13px;
  cursor: pointer;
  transition: all 0.2s ease;
}
.pomo-btn:active { transform: scale(0.96); }
.pomo-start { background: var(--primary); color: #fff; }
.pomo-start:hover { background: var(--primary-dark); }
.pomo-reset { background: var(--bg); color: var(--text); border: 1px solid var(--border); }
.pomo-reset:hover { background: var(--border); }

/* ===== 视力调整提示 ===== */
.eye-rest {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity 0.25s ease;
}
.eye-rest.show { display: flex; opacity: 1; }
.eye-rest-card {
  background: #fff;
  border-radius: 20px;
  padding: 36px 44px;
  text-align: center;
  box-shadow: 0 30px 60px -12px rgba(0,0,0,0.4);
  animation: eyePop 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}
.eye-icon { font-size: 64px; margin-bottom: 12px; }
.eye-rest-card h3 { font-size: 24px; margin-bottom: 10px; color: var(--primary-dark); }
.eye-rest-card p { color: var(--text-light); font-size: 15px; line-height: 1.8; max-width: 360px; }
@keyframes eyePop {
  0% { transform: scale(0.7); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}

/* ===== AI 客服入口 ===== */
#aiHelpBtn { background: rgba(255,255,255,0.15); color: #fff; }
#aiHelpBtn:hover { background: rgba(255,255,255,0.28); color: #fff; }

.ai-help-card {
  max-width: 620px;
  text-align: left;
  line-height: 1.8;
}
.ai-help-card .ai-avatar { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.ai-help-card .ai-avatar .ai-logo {
  width: 56px; height: 56px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 30px; background: linear-gradient(135deg, var(--primary), var(--secondary));
}
.ai-help-card .ai-avatar h3 { font-size: 18px; margin: 0; }
.ai-help-card .ai-avatar span { font-size: 13px; color: var(--text-muted); }
.ai-help-card .ai-intro { background: var(--bg); border-radius: 12px; padding: 16px 20px; margin-bottom: 16px; }
.ai-help-card .ai-q { font-weight: 700; color: var(--primary); margin: 14px 0 6px; }
.ai-help-card .ai-a { color: var(--text-light); font-size: 14px; }
.ai-help-card .ai-links { margin-top: 8px; }
.ai-help-card .ai-links a {
  display: inline-block; margin: 4px 8px 4px 0; padding: 6px 14px;
  background: var(--primary); color: #fff; border-radius: 20px;
  font-size: 13px; text-decoration: none; transition: all 0.2s ease;
}
.ai-help-card .ai-links a:hover { background: var(--primary-dark); transform: translateY(-1px); }

@media (max-width: 640px) {
  .pomodoro-widget { width: 150px; padding: 10px; right: 12px; bottom: 12px; }
  .pomodoro-ring { width: 104px; height: 104px; }
  .pomodoro-time { font-size: 20px; }
  .pomodoro-label { font-size: 12px; }
}

/* ============================================================
   现代平台特性（外网技法落地 v11）
   ① 页面视图过渡 · ② 顶部阅读进度条 · ③ 按钮涟漪微交互
   ============================================================ */

/* ① 页面切换过渡：View Transitions API（渐进增强，不支持时自动跳过） */
@supports (view-transition-name: root) {
  ::view-transition-old(root) { animation: vt-fade 160ms ease-out both; }
  ::view-transition-new(root) { animation: vt-rise-in 300ms var(--ease-motion) both; }
  @keyframes vt-fade { to { opacity: 0; } }
  @keyframes vt-rise-in { from { opacity: 0; transform: translateY(10px); } }
}
@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }
}

/* ② 顶部阅读进度条（随滚动推进，现代阅读动效） */
.scroll-progress {
  position: fixed;
  top: 0; left: 0;
  height: 3px;
  width: 0%;
  background: linear-gradient(90deg, var(--secondary), var(--primary));
  z-index: 1600;
  border-radius: 0 2px 2px 0;
  pointer-events: none;
  will-change: width;
}

/* ③ 按钮涟漪微交互（配合 app.js pointerdown 注入 .ripple） */
.btn, .nav-btn { position: relative; overflow: hidden; }
.ripple {
  position: absolute;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.5);
  transform: scale(0);
  animation: ripple-in 0.55s var(--ease-out-expo) forwards;
  pointer-events: none;
}
@keyframes ripple-in {
  to { transform: scale(2.6); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .ripple { display: none; } }

/* ===== 移动端抽屉导航（汉堡菜单）与整体窄屏适配 ===== */
@media (max-width: 900px) {
  /* 汉堡按钮 */
  .nav-toggle {
    display: inline-flex;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    width: 48px;
    height: 48px;
    padding: 12px;
    background: rgba(255, 255, 255, 0.15);
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 10px;
    cursor: pointer;
    flex-shrink: 0;
    -webkit-tap-highlight-color: transparent;
  }
  .nav-toggle span {
    display: block;
    height: 2.5px;
    width: 100%;
    background: #fff;
    border-radius: 2px;
    transition: transform 0.3s ease, opacity 0.3s ease;
  }
  .nav-toggle.open span:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
  .nav-toggle.open span:nth-child(2) { opacity: 0; }
  .nav-toggle.open span:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }

  /* 遮罩层 */
  .nav-overlay {
    display: block;
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.45);
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s ease, visibility 0.3s ease;
    z-index: 90;
  }
  .nav-overlay.open { opacity: 1; visibility: visible; }

  /* 导航变为右侧抽屉 */
  .nav {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: min(78vw, 320px);
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
    padding: 96px 16px 24px;
    border-radius: 18px 0 0 18px;
    background: linear-gradient(180deg, var(--primary), var(--primary-dark));
    box-shadow: -8px 0 30px rgba(0, 0, 0, 0.22);
    overflow-y: auto;
    justify-content: flex-start;
    -webkit-overflow-scrolling: touch;
    transform: translateX(100%);
    transition: transform 0.32s cubic-bezier(0.22, 0.61, 0.36, 1);
    z-index: 100;
  }
  .nav.open { transform: translateX(0); }

  .nav-btn {
    width: 100%;
    min-height: 48px;
    padding: 12px 16px;
    font-size: 15px;
    text-align: left;
  }
  body.nav-lock { overflow: hidden; }

  /* 触控目标统一 ≥48px */
  .nav-toggle,
  .user-edit-btn,
  .user-info,
  .theme-card,
  .res-tab,
  .filter-btn,
  .role-btn,
  .tab-btn,
  .btn,
  .task-card { min-height: 48px; }
}

@media (max-width: 640px) {
  /* 顶栏空间收紧：窄屏下藏用户名文字 */
  .user-name { display: none; }
  .header-inner { padding: 12px 14px; gap: 10px; }
  .logo-text h1 { font-size: 17px; }
  .logo-text span { display: none; }
  .logo-icon { width: 42px; height: 42px; }

  /* 网格统一单列 */
  .checkin-photos, .photo-gallery { grid-template-columns: 1fr; }
  .res-sites, .res-grid, .res-list { grid-template-columns: 1fr; }
  .dev-grid { grid-template-columns: 1fr; }
  .tasks-list, .theme-detail-section { grid-template-columns: 1fr; }

  /* 卡片细节适配 */
  .growth-head { flex-wrap: wrap; }
  .hero h2 { font-size: 24px; }
  .page-title h2 { font-size: 22px; }
  .stat-card, .theme-card, .growth-card, .task-card { padding: 18px 16px; }
  .flow-steps, .workspace-summary { gap: 8px; }
}

/* ===== 生涯测评页（逻辑思维小测 + 职业兴趣导航） ===== */
.career-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 20px;
}
.career-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 24px;
  box-shadow: var(--shadow);
}
.career-card-top { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.career-icon {
  flex-shrink: 0;
  width: 48px; height: 48px;
  border-radius: 12px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 26px;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  color: #fff;
}
.career-card h3 { font-size: 19px; margin: 0; color: var(--text); }
.career-desc { color: var(--text-light); line-height: 1.7; margin-bottom: 16px; font-size: 14px; }

/* 答题区 */
.career-box { margin-top: 18px; }
.career-q-head { font-size: 13px; font-weight: 700; color: var(--primary); margin-bottom: 10px; }
.career-q-title { font-size: 16px; font-weight: 600; line-height: 1.6; margin-bottom: 14px; }
.career-options { display: grid; gap: 10px; }
.career-opt {
  width: 100%;
  text-align: left;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 14px;
  line-height: 1.5;
  color: var(--text);
  cursor: pointer;
  transition: all 0.2s ease;
}
.career-opt:hover { border-color: var(--primary); background: #eef2ff; transform: translateY(-1px); }
.career-opt:active { transform: scale(0.98); }

.career-feedback {
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 14px;
  line-height: 1.7;
  margin-top: 8px;
}
.career-feedback.good { background: #eafaf3; color: #0b7a5b; border: 1px solid #b7ecd9; }
.career-feedback.bad { background: #fff4e6; color: #9a4a00; border: 1px solid #f7d9a8; }
.career-feedback.note { background: var(--bg); color: var(--text-light); border: 1px dashed var(--border); }

/* 结果 */
.career-result { animation: fadeIn 0.4s ease both; }
.career-result-band {
  font-size: 16px; font-weight: 800;
  color: var(--primary-dark);
  background: #eef2ff;
  border: 1px solid #d6defc;
  border-radius: 12px;
  padding: 14px 18px;
  margin-bottom: 14px;
}
.career-type-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 10px; }
.career-type-chip {
  display: flex; gap: 10px; align-items: flex-start;
  background: #f8fafc; border: 1px solid var(--border);
  border-radius: 12px; padding: 12px 14px;
}
.career-type-chip .career-icon { width: 40px; height: 40px; font-size: 22px; }
.career-type-chip b { font-size: 14px; }
.career-type-chip p { font-size: 12.5px; color: var(--text-light); line-height: 1.5; margin-top: 4px; }
.career-result p { color: var(--text); line-height: 1.8; margin: 10px 0; }

.career-note {
  background: var(--card-bg);
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  padding: 16px 20px;
  color: var(--text-light);
  font-size: 14px;
  line-height: 1.8;
}
.career-note span { color: var(--primary); font-weight: 700; }

/* 兴趣类型总览 */
.career-overview {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.career-type-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.career-type-head { display: flex; align-items: center; gap: 10px; font-size: 15px; color: var(--text); }
.career-type-head .career-icon { width: 40px; height: 40px; font-size: 22px; }
.career-type-desc { color: var(--text-light); font-size: 13.5px; line-height: 1.7; flex: 1; }
.career-type-meta { color: var(--text-muted); font-size: 12px; line-height: 1.6; }
.career-type-card .btn { align-self: flex-start; }

/* 职业小百科 */
.career-jobs {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}
.career-job-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px;
  box-shadow: var(--shadow);
  display: flex;
  gap: 14px;
  align-items: flex-start;
}
.career-job-icon {
  flex-shrink: 0;
  width: 48px; height: 48px;
  border-radius: 12px;
  background: var(--bg);
  border: 1px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: 26px;
}
.career-job-body { flex: 1; min-width: 0; }
.career-job-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.career-job-head b { font-size: 15px; color: var(--text); }
.career-job-type {
  font-size: 12px;
  color: var(--primary);
  background: #eef2ff;
  padding: 3px 8px;
  border-radius: 20px;
}
.career-job-body p { color: var(--text-light); font-size: 13.5px; line-height: 1.7; margin: 8px 0; }
.career-job-link { color: var(--primary); font-size: 13px; cursor: pointer; text-decoration: none; }
.career-job-link:hover { text-decoration: underline; }

/* 权威链接 */
.career-links {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
}
.career-link {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px 18px;
  text-decoration: none;
  box-shadow: var(--shadow);
  transition: all 0.2s ease;
}
.career-link:hover { border-color: var(--primary); transform: translateY(-2px); }
.career-link-icon {
  flex-shrink: 0;
  width: 44px; height: 44px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px;
}
.career-link b { display: block; font-size: 15px; color: var(--text); }
.career-link p { margin: 2px 0 0; font-size: 12.5px; color: var(--text-light); line-height: 1.5; }
.career-link-arrow { margin-left: auto; color: var(--text-muted); font-size: 16px; }

@media (max-width: 900px) {
  .career-grid, .career-type-row { grid-template-columns: 1fr; }
  .career-opt { min-height: 48px; font-size: 15px; }
  .career-overview, .career-jobs, .career-links { grid-template-columns: 1fr; }
}

/* ===== 站内合规信息·页脚（上线合规清单 v23） ===== */
.site-footer {
  background: #0f172a;
  color: #cbd5e1;
  border-top: 3px solid var(--primary);
  padding: 28px 0 32px;
  margin-top: 40px;
}
.footer-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 24px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 28px;
}
.footer-brand {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.footer-logo {
  font-size: 17px;
  font-weight: 700;
  color: #fff;
}
.footer-slogan {
  font-size: 12px;
  color: #94a3b8;
}
.footer-links {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.footer-link {
  background: transparent;
  border: none;
  color: #cbd5e1;
  font-size: 13px;
  cursor: pointer;
  padding: 8px 6px;
  border-radius: 6px;
  transition: color 0.2s ease;
}
.footer-link:hover { color: #fff; text-decoration: underline; }
.footer-link:focus-visible { outline: 2px solid var(--primary-light); outline-offset: 2px; }
.footer-sep { color: #475569; }
.footer-legal {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  font-size: 12px;
  color: #94a3b8;
  width: 100%;
  padding-top: 12px;
  border-top: 1px solid #1e293b;
}
.footer-icp, .footer-gongan { font-variant-numeric: tabular-nums; }

/* 条款文档弹窗排版 */
.legal-doc p {
  color: var(--text-light);
  line-height: 1.8;
  margin-bottom: 10px;
}
.legal-doc h4 {
  font-size: 15px;
  color: var(--primary-dark);
  margin: 16px 0 8px;
  padding-left: 10px;
  border-left: 3px solid var(--primary-light);
}

@media (max-width: 640px) {
  .footer-inner { flex-direction: column; align-items: flex-start; gap: 12px; }
  .footer-link { padding: 8px 4px; }
}

/* ===== v35 新增：引导问题卡片 ===== */
.hook-question-card {
  background: linear-gradient(135deg, #fef3c7 0%, #fffbeb 100%);
  border-radius: 14px;
}
.hook-question {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  background: white;
  border-radius: 10px;
  padding: 16px 18px;
  border-left: 5px solid #f59e0b;
  box-shadow: 0 2px 8px rgba(245, 158, 11, 0.1);
}
.hook-q-icon { font-size: 32px; line-height: 1; flex-shrink: 0; }
.hook-question p {
  font-size: 17px;
  font-weight: 600;
  color: #92400e;
  line-height: 1.7;
  margin: 0;
}

/* ===== v35 新增：家庭小实验卡片 ===== */
.home-experiments {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.exp-card {
  background: #f8fafc;
  border-radius: 12px;
  border: 2px solid #e2e8f0;
  overflow: hidden;
  transition: all 0.3s ease;
}
.exp-card[open] {
  border-color: var(--exp-color, var(--primary));
  background: white;
  box-shadow: 0 4px 16px rgba(0,0,0,0.08);
}
.exp-card summary {
  list-style: none;
  cursor: pointer;
  padding: 16px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  user-select: none;
}
.exp-card summary::-webkit-details-marker { display: none; }
.exp-card summary::after {
  content: '▼';
  font-size: 12px;
  color: var(--text-light);
  transition: transform 0.3s ease;
}
.exp-card[open] summary::after { transform: rotate(180deg); }
.exp-header {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.exp-title { font-size: 16px; font-weight: 600; color: var(--text); }
.exp-time {
  font-size: 13px;
  color: var(--text-light);
  background: #e2e8f0;
  padding: 3px 10px;
  border-radius: 12px;
}
.exp-body {
  padding: 0 20px 20px;
  border-top: 1px solid #e2e8f0;
}
.exp-materials, .exp-steps, .exp-science { margin-top: 16px; }
.exp-materials h4, .exp-steps h4, .exp-science h4 {
  font-size: 14px;
  color: var(--text);
  margin-bottom: 10px;
}
.exp-materials-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.exp-mat-tag {
  background: #eef2ff;
  color: #4338ca;
  padding: 5px 12px;
  border-radius: 16px;
  font-size: 13px;
}
.exp-steps ol {
  padding-left: 20px;
  color: var(--text-light);
  line-height: 1.9;
  font-size: 14px;
}
.exp-steps li { margin-bottom: 6px; }
.exp-science {
  background: #f0fdf4;
  padding: 14px 16px;
  border-radius: 8px;
}
.exp-science p {
  font-size: 14px;
  color: #166534;
  line-height: 1.8;
  margin: 0;
}

/* ===== v35 新增：职业小卡片 ===== */
.career-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 14px;
}
.career-mini-card {
  background: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);
  border: 2px solid #e2e8f0;
  border-radius: 12px;
  padding: 18px 14px;
  text-align: center;
  transition: all 0.3s ease;
}
.career-mini-card:hover {
  transform: translateY(-4px);
  border-color: var(--primary-light);
  box-shadow: 0 8px 20px rgba(99, 102, 241, 0.15);
}
.career-mini-icon {
  font-size: 36px;
  margin-bottom: 8px;
}
.career-mini-name {
  font-weight: 600;
  font-size: 14px;
  color: var(--text);
  margin-bottom: 4px;
}
.career-mini-desc {
  font-size: 12px;
  color: var(--text-light);
  line-height: 1.5;
}

/* ===== v35 新增：成就徽章展示 ===== */
.badges-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 14px;
}
.badge-item {
  text-align: center;
  padding: 14px 8px;
  border-radius: 12px;
  background: #f8fafc;
  border: 2px solid #e2e8f0;
  transition: all 0.3s ease;
}
.badge-item.earned {
  background: linear-gradient(145deg, #fef3c7 0%, #fffbeb 100%);
  border-color: #fbbf24;
  box-shadow: 0 3px 10px rgba(251, 191, 36, 0.25);
}
.badge-item.locked {
  opacity: 0.5;
  filter: grayscale(0.8);
}
.badge-icon {
  font-size: 36px;
  margin-bottom: 6px;
}
.badge-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 2px;
}
.badge-desc {
  font-size: 12px;
  color: var(--text-light);
  line-height: 1.4;
}
.badge-points {
  font-size: 12px;
  color: #b45309;
  font-weight: 600;
  margin-top: 4px;
}

/* ===== v35 新增：学习进度条 ===== */
.progress-overview {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
  margin-bottom: 20px;
}
.progress-card {
  background: white;
  border-radius: 12px;
  padding: 16px;
  border: 1px solid #e2e8f0;
}
.progress-card-label {
  font-size: 13px;
  color: var(--text-light);
  margin-bottom: 8px;
}
.progress-card-value {
  font-size: 28px;
  font-weight: 700;
  color: var(--primary);
}
.progress-bar-container {
  height: 8px;
  background: #e2e8f0;
  border-radius: 4px;
  overflow: hidden;
  margin-top: 8px;
}
.progress-bar-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--primary-light), var(--primary));
  border-radius: 4px;
  transition: width 0.6s ease;
}

@media (max-width: 640px) {
  .career-cards { grid-template-columns: repeat(2, 1fr); }
  .badges-grid { grid-template-columns: repeat(3, 1fr); }
  .exp-header { flex-direction: column; align-items: flex-start; gap: 6px; }
}

/* ===== v36 新增：音视频剪辑工作台 ===== */
.editor-tabs {
  display: flex;
  gap: 10px;
  margin-bottom: 20px;
}
.editor-tab {
  padding: 10px 22px;
  border-radius: 10px;
  border: 2px solid #e2e8f0;
  background: white;
  font-size: 15px;
  font-weight: 600;
  color: var(--text-light);
  cursor: pointer;
  transition: all 0.3s ease;
}
.editor-tab.active {
  background: var(--primary);
  border-color: var(--primary);
  color: #fff;
}
.editor-panel { margin-top: 4px; }
.editor-upload {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin: 16px 0;
}
.ed-file {
  display: none;
}
.editor-fname {
  font-size: 13px;
  color: var(--text-light);
  max-width: 280px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ed-empty {
  text-align: center;
  padding: 44px 20px;
  color: var(--text-light);
  border: 2px dashed #cbd5e1;
  border-radius: 12px;
  font-size: 14px;
}
.ed-wave {
  width: 100%;
  border-radius: 10px;
  margin: 4px 0 16px;
  background: #eef2ff;
}
.ed-range-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 14px 0;
}
.ed-range-row label {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
}
.ed-range-row input[type="range"] {
  flex: 1;
  min-width: 120px;
}
.ed-time {
  font-size: 13px;
  font-weight: 600;
  color: var(--primary);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.ed-params {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin: 16px 0;
}
.ed-param {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ed-param span {
  font-size: 13px;
  color: var(--text);
}
.ed-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 16px;
}
.ed-vp { max-width: 560px; margin-bottom: 16px; }
.ed-vp video { width: 100%; border-radius: 10px; display: block; }
.ed-vcanvas { display: none; }
.ed-note {
  margin-top: 12px;
  font-size: 13px;
  color: var(--text-light);
  line-height: 1.6;
}
@media (max-width: 640px) {
  .ed-params { grid-template-columns: 1fr; }
  .editor-tabs { flex-wrap: wrap; }
}




/* === 九年学业导航（1-9 年级各科内容与方法，v37） === */
.academic-page{width:100%;margin-top:8px}
.academic-head{margin-bottom:20px}
.academic-head h2{font-size:26px;margin:6px 0 8px;line-height:1.3;padding-left:14px;border-left:5px solid #6366f1}
.academic-head p{color:#5b6478;max-width:780px;font-size:14px;line-height:1.7}
.academic-stages{display:flex;flex-direction:column;gap:22px}
.academic-stage{background:#fff;border:1px solid #e7eaf3;border-radius:14px;padding:20px;position:relative;overflow:hidden}
.academic-stage::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--sc,#6366f1)}
.academic-stage-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px;flex-wrap:wrap}
.academic-badge{color:#fff;font-weight:700;padding:8px 14px;border-radius:10px;font-size:15px;white-space:nowrap}
.academic-stage-head h3{font-size:21px;margin:0 0 2px}
.academic-en{color:#596282;font-size:13px;letter-spacing:.3px}
.academic-note{color:#5b6478;font-size:14px;margin:6px 0 0;line-height:1.6}
.academic-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.academic-card{background:#f7f9ff;border:1px solid #edf0fa;border-radius:12px;padding:14px}
.academic-card-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.academic-sub-icon{width:42px;height:42px;display:flex;align-items:center;justify-content:center;font-size:22px;background:#fff;border-radius:12px;box-shadow:0 2px 6px rgba(60,70,120,.08);flex:none}
.academic-card-head h4{margin:0;font-size:16px}
.academic-sub-en{color:#596282;font-size:12px;margin-top:1px}
.academic-content,.academic-method{font-size:13.5px;line-height:1.6;color:#3d4557;margin:5px 0}
.academic-content b,.academic-method b{color:var(--sc,#6366f1);font-weight:700;margin-right:4px}
.academic-methods{margin-top:26px}
.academic-methods .eyebrow,.academic-bridge .eyebrow{margin-bottom:12px}
.method-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.method-card{background:#fff;border:1px solid #e7eaf3;border-radius:12px;padding:14px;display:flex;gap:12px;align-items:flex-start}
.method-icon{font-size:24px;flex:none}
.method-card h4{margin:0 0 4px;font-size:15px}
.method-card p{margin:0;font-size:13px;color:#5b6478;line-height:1.5}
.academic-bridge{margin-top:22px;background:linear-gradient(135deg,#eef2ff,#f7f3ff);border:1px solid #e0e7ff;border-radius:14px;padding:18px 20px}
.academic-bridge p{color:#3d4557;font-size:14px;line-height:1.7;margin:0 0 12px}
.academic-en-words{display:flex;flex-wrap:wrap;gap:8px}
.academic-en-words span{background:#fff;border:1px solid #e3e8fb;color:#4a5480;font-size:13px;padding:5px 11px;border-radius:16px}
/* ===== 综合素质拓展（基础/进阶/创新分级） ===== */
.quality-page{width:100%;margin-top:32px}
.quality-head h2{border-left-color:#8b5cf6}
.quality-levels{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:18px}
.quality-level{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #e7eaf3;border-radius:12px;padding:10px 16px;border-left:4px solid var(--ql,#22c55e)}
.quality-level-icon{font-size:22px}
.quality-level h4{margin:0;font-size:15px;color:#232a3b}
.quality-level p{margin:1px 0 0;color:#5b6478;font-size:12.5px}
.quality-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.quality-card{background:#fff;border:1px solid #e7eaf3;border-radius:14px;padding:18px;border-top:4px solid var(--qd,#3b82f6)}
.quality-card-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.quality-card-icon{width:46px;height:46px;display:flex;align-items:center;justify-content:center;font-size:24px;background:#fff;border-radius:12px;box-shadow:0 2px 6px rgba(60,70,120,.08);border:1px solid #eef0f9;flex:none}
.quality-card-head h3{margin:0;font-size:18px}
.quality-card-en{color:#596282;font-size:12px;letter-spacing:.3px}
.quality-tiers{display:flex;flex-direction:column;gap:10px}
.quality-tier{background:#f7f9ff;border:1px solid #edf0fa;border-radius:10px;padding:10px 12px}
.quality-tier-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.quality-tier-badge{color:#fff;font-weight:700;font-size:12px;padding:3px 9px;border-radius:14px;background:var(--ql,#22c55e);white-space:nowrap}
.quality-task{font-size:13px;line-height:1.55;color:#3d4557;margin:4px 0}
.quality-words{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.quality-words span{background:#fff;border:1px solid #e6eafa;color:#5a6380;font-size:12px;padding:2px 8px;border-radius:12px}
.quality-motto{margin-top:12px;font-size:13px;color:#5b6478;line-height:1.6;background:#fcfaff;border:1px dashed #e6dcfb;border-radius:10px;padding:9px 12px}
.quality-motto .eyebrow-dot{top:50%;margin-top:-3px}
.quality-tip{margin-top:22px}
.quality-tip p{margin-bottom:12px}
/* ===== 体育类团队拓展游戏（无器材） ===== */
.team-page{width:100%;margin-top:32px}
.team-head h2{border-left-color:#f59e0b}
.team-cats{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.team-cat{background:#fff;border:1px solid #e7eaf3;border-radius:14px;padding:18px;border-top:4px solid var(--tc,#3b82f6)}
.team-cat-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.team-cat-icon{width:46px;height:46px;display:flex;align-items:center;justify-content:center;font-size:24px;background:#fff;border-radius:12px;box-shadow:0 2px 6px rgba(60,70,120,.08);border:1px solid #eef0f9;flex:none}
.team-cat-head h3{margin:0;font-size:18px}
.team-cat-en{color:#596282;font-size:12px;letter-spacing:.3px}
.team-list{display:flex;flex-direction:column;gap:10px}
.team-item{background:#f7f9ff;border:1px solid #edf0fa;border-radius:10px;padding:11px 13px}
.team-item-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.team-item-head h4{margin:0;font-size:15px;color:#232a3b}
.team-item-en{color:#596282;font-size:12px}
.team-tags{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.team-tags span{background:#fff;border:1px solid #e6eafa;color:#5a6380;font-size:12px;padding:2px 8px;border-radius:12px;white-space:nowrap}
.team-how{font-size:13px;line-height:1.6;color:#3d4557;margin:4px 0}
.team-safe{font-size:12.5px;line-height:1.55;color:#c2410c;background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;padding:6px 9px;margin:6px 0 0}
.team-tips{margin-top:22px;background:#fff;border:1px solid #e7eaf3;border-radius:14px;padding:16px 20px}
.team-tips-list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:7px}
.team-tips-list li{color:#3d4557;font-size:14px;line-height:1.6}
@media(max-width:640px){
  .team-cats{grid-template-columns:1fr}
  .team-cat{padding:14px}
}
/* ===== 交流社区·团队拓展游戏按器材索引 ===== */
.community-games{margin:8px 0 28px}
.community-games-head{margin-bottom:16px}
.community-games-head h3{color:#232a3b;margin:0 0 4px;font-size:20px}
.community-games-head p{color:#5b6478;font-size:13.5px;line-height:1.7;margin:0}
.game-tools{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.game-tier{background:#fff;border:1px solid #e7eaf3;border-radius:14px;padding:16px;border-top:4px solid var(--gt,#22c55e)}
.game-tier-head{display:flex;align-items:center;gap:11px;margin-bottom:12px}
.game-tier-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:23px;background:#fff;border-radius:12px;box-shadow:0 2px 6px rgba(60,70,120,.08);border:1px solid #eef0f9;flex:none}
.game-tier-tit h4{margin:0;font-size:16px}
.game-tier-tit span{color:#596282;font-size:12px;line-height:1.4;display:block}
.game-tier-items{display:flex;flex-direction:column;gap:9px}
.game-tier-item{background:#f7f9ff;border:1px solid #edf0fa;border-radius:10px;padding:9px 11px}
.game-tier-item-head{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}
.game-tier-item-head strong{font-size:14px;color:#232a3b}
.game-tier-item-head em{color:#596282;font-size:12px;font-style:normal}
.game-tier-tags{display:flex;flex-wrap:wrap;gap:5px;margin:5px 0}
.game-tier-tags span{background:#fff;border:1px solid #e6eafa;color:#5a6380;font-size:12px;padding:1px 7px;border-radius:11px;white-space:nowrap}
.game-tier-how{font-size:12.5px;line-height:1.55;color:#3d4557;margin:3px 0}
.game-tier-safe{font-size:12px;line-height:1.5;color:#c2410c;background:#fff7ed;border:1px solid #fed7aa;border-radius:7px;padding:4px 8px;margin:5px 0 0}
.game-tools-note{margin-top:16px;background:#f0f7ff;border:1px solid #cfe4fb;color:#1f5594;border-radius:12px;padding:12px 15px;font-size:13.5px;line-height:1.7}
@media(max-width:900px){
  .game-tools{grid-template-columns:1fr}
}
@media(max-width:640px){
  .game-tier{padding:13px}
}
@media(max-width:640px){
  .quality-grid{grid-template-columns:1fr}
  .quality-level{width:100%}
  .quality-card{padding:14px}
}
@media(max-width:640px){
  .academic-grid{grid-template-columns:1fr}
  .academic-stage{padding:16px}
  .academic-head h2{font-size:22px}
}
/* ==========================================================================
   v42 PATCH APPEND
   1) P1-6 prefers-reduced-motion 动画降级
   2) P1-1 任务卡三层锚定结构（anchor-blocks + 五色交付标记）
   3) P1-2 学生仪表盘（liquid-glass 卡片 + 图表容器 + 词云/漏斗）
   ========================================================================== */

/* --- 1. P1-6 减少动效：覆盖所有关键帧/过渡/视差 --- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .reveal, .reveal-children { opacity: 1 !important; transform: none !important; }
  .count-up, .num-roll { transition: none !important; }
  .floating, .float-slow, .float-fast { animation: none !important; transform: none !important; }
  .aurora { display: none !important; }
  .card-3d:hover { transform: none !important; }
  .gradient-border::after { animation: none !important; }
  .hero-gradient { animation: none !important; }
}

/* --- 2. P1-1 三层锚定任务卡结构 --- */
.anchor-blocks { display: flex; flex-direction: column; gap: 14px; margin: 14px 0 4px; }
.anchor-block {
  border-radius: 12px; padding: 13px 14px; background: #ffffff;
  border: 1px solid #eef0f9; box-shadow: 0 1px 3px rgba(30, 41, 59, 0.04);
}
.anchor-block.ab-role { background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%); border-color: #bae6fd; }
.anchor-block.ab-modules { background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%); border-color: #fed7aa; }
.anchor-block.ab-delivery { background: linear-gradient(135deg, #f0fdf4 0%, #dcfce7 100%); border-color: #bbf7d0; }
.anchor-head { display: flex; align-items: center; gap: 9px; margin-bottom: 8px; }
.anchor-chip {
  display: inline-flex; align-items: center; gap: 5px;
  background: #fff; border: 1px solid #e6eaff; color: #4b5563;
  padding: 2px 10px; border-radius: 999px; font-size: 12px; font-weight: 600;
  box-shadow: 0 1px 2px rgba(0,0,0,0.04);
}
.anchor-chip.ac-role { background: #ffffff; color: #0369a1; border-color: #bae6fd; }
.anchor-chip.ac-modules { background: #ffffff; color: #c2410c; border-color: #fed7aa; }
.anchor-chip.ac-delivery { background: #ffffff; color: #15803d; border-color: #bbf7d0; }
.anchor-title { font-size: 13.5px; color: #1e293b; font-weight: 600; margin: 0; }
.anchor-body { font-size: 13px; line-height: 1.65; color: #475569; }
.anchor-body p { margin: 3px 0; }

/* 模块拆解 L1/L2/L3 层级缩进 */
.mod-list { margin: 4px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 7px; }
.mod-item { padding: 8px 10px; border-radius: 9px; background: #ffffff; border: 1px solid #f1f5f9; }
.mod-head { display: flex; align-items: baseline; gap: 7px; flex-wrap: wrap; }
.mod-lvl { font-size: 12px; font-weight: 700; letter-spacing: 0.4px; color: #fff;
  padding: 1px 7px; border-radius: 6px; text-transform: uppercase; }
.mod-lvl.l1 { background: #dc2626; }
.mod-lvl.l2 { background: #ea580c; }
.mod-lvl.l3 { background: #0284c7; }
.mod-name { font-size: 13.5px; font-weight: 600; color: #0f172a; }
.mod-desc { font-size: 12.5px; color: #64748b; margin: 4px 0 0 0; line-height: 1.6; padding-left: 2px; }

/* 交付规范 - 五色标记（红/橙/蓝/绿/灰） */
.deliv-specs { display: flex; flex-wrap: wrap; gap: 9px; }
.deliv-tag {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 7px 12px; border-radius: 10px;
  font-size: 12.5px; font-weight: 500; line-height: 1.4;
  border: 1px solid transparent; background: #fff;
}
.deliv-tag .dt-dot { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.deliv-tag.dt-red { border-color: #fecaca; background: #fef2f2; color: #991b1b; }
.deliv-tag.dt-red .dt-dot { background: #ef4444; }
.deliv-tag.dt-orange { border-color: #fed7aa; background: #fff7ed; color: #9a3412; }
.deliv-tag.dt-orange .dt-dot { background: #f97316; }
.deliv-tag.dt-blue { border-color: #bae6fd; background: #f0f9ff; color: #075985; }
.deliv-tag.dt-blue .dt-dot { background: #0ea5e9; }
.deliv-tag.dt-green { border-color: #bbf7d0; background: #f0fdf4; color: #166534; }
.deliv-tag.dt-green .dt-dot { background: #22c55e; }
.deliv-tag.dt-gray { border-color: #e2e8f0; background: #f8fafc; color: #475569; }
.deliv-tag.dt-gray .dt-dot { background: #94a3b8; }

/* --- 3. P1-2 学生仪表盘 --- */
.dash-wrap { padding: 24px 6px 40px; display: flex; flex-direction: column; gap: 22px; }
.dash-hero {
  background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #ec4899 100%);
  border-radius: 22px; padding: 24px 26px; color: #fff; position: relative; overflow: hidden;
  box-shadow: 0 18px 40px -18px rgba(99, 102, 241, 0.55);
}
.dash-hero::before, .dash-hero::after {
  content: ""; position: absolute; border-radius: 50%; filter: blur(40px); opacity: 0.45;
}
.dash-hero::before { width: 220px; height: 220px; background: #fff; top: -80px; right: -40px; }
.dash-hero::after { width: 140px; height: 140px; background: #fef3c7; bottom: -50px; left: 30px; }
.dash-hero-body { position: relative; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.dash-hero h2 { font-size: 26px; font-weight: 700; margin: 0 0 6px; }
.dash-hero p { margin: 0; opacity: 0.92; font-size: 14.5px; line-height: 1.6; max-width: 540px; }
.dash-hero-meta { display: flex; gap: 14px; flex-wrap: wrap; font-size: 12.5px; margin-top: 10px; opacity: 0.9; }
.dash-hero-meta span { background: rgba(255,255,255,0.18); backdrop-filter: blur(4px);
  padding: 4px 10px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.25); }
.dash-hero-avatar {
  width: 78px; height: 78px; border-radius: 22px;
  background: rgba(255,255,255,0.22); backdrop-filter: blur(6px);
  border: 2px solid rgba(255,255,255,0.35); display: flex; align-items: center; justify-content: center;
  font-size: 34px; flex: none;
}

/* 6 个数据统计卡：liquid glass 风格 */
.dash-stats { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; }
@media (max-width: 1100px) { .dash-stats { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) { .dash-stats { grid-template-columns: repeat(2, 1fr); } }
.dash-stat {
  position: relative; overflow: hidden; border-radius: 18px; padding: 16px 17px;
  background: rgba(255,255,255,0.75); backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,0.8); box-shadow: 0 10px 30px -14px rgba(15,23,42,0.18);
  transition: transform 0.25s ease;
}
.dash-stat:hover { transform: translateY(-3px); }
.ds-icon {
  width: 40px; height: 40px; border-radius: 12px; display: flex; align-items: center; justify-content: center;
  font-size: 20px; margin-bottom: 10px;
}
.ds-icon.dsi-1 { background: linear-gradient(135deg,#fef3c7,#fde68a); color: #b45309; }
.ds-icon.dsi-2 { background: linear-gradient(135deg,#dbeafe,#bfdbfe); color: #1d4ed8; }
.ds-icon.dsi-3 { background: linear-gradient(135deg,#dcfce7,#bbf7d0); color: #15803d; }
.ds-icon.dsi-4 { background: linear-gradient(135deg,#fce7f3,#fbcfe8); color: #be185d; }
.ds-icon.dsi-5 { background: linear-gradient(135deg,#ede9fe,#ddd6fe); color: #6d28d9; }
.ds-icon.dsi-6 { background: linear-gradient(135deg,#cffafe,#a5f3fc); color: #0e7490; }
.ds-label { font-size: 12.5px; color: #64748b; font-weight: 500; }
.ds-value { font-size: 25px; font-weight: 700; color: #0f172a; line-height: 1.2; margin: 3px 0 2px; }
.ds-trend { font-size: 12px; display: inline-flex; align-items: center; gap: 3px; }
.ds-trend.up { color: #16a34a; }
.ds-trend.down { color: #dc2626; }
.ds-trend.flat { color: #64748b; }

/* 图表 + 洞察 2 列布局 */
.dash-grid { display: grid; grid-template-columns: 1.15fr 1fr; gap: 18px; }
@media (max-width: 900px) { .dash-grid { grid-template-columns: 1fr; } }

.dash-card {
  background: #ffffff; border-radius: 20px; padding: 20px 22px;
  border: 1px solid #f1f5f9; box-shadow: 0 8px 24px -16px rgba(15,23,42,0.18);
}
.dash-card-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 12px; gap: 10px; flex-wrap: wrap; }
.dash-card-head h3 { margin: 0; font-size: 16.5px; color: #0f172a; font-weight: 700; }
.dash-card-head h3 .sub { font-size: 12.5px; color:#596282; font-weight: 500; margin-left: 8px; }
.dch-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.dch-btn {
  font-size: 12px; padding: 4px 10px; border-radius: 999px; border: 1px solid #e2e8f0;
  background: #f8fafc; color: #475569; cursor: pointer; transition: all 0.2s;
}
.dch-btn:hover { background: #eff6ff; border-color: #bfdbfe; color: #1d4ed8; }
.dch-btn.active { background: #4f46e5; color: #fff; border-color: #4f46e5; }

.chart-box { position: relative; width: 100%; height: 260px; }

/* 六步法漏斗 */
.funnel { display: flex; flex-direction: column; gap: 8px; }
.funnel-step {
  display: grid; grid-template-columns: 70px 1fr auto; gap: 12px; align-items: center;
  padding: 9px 12px; border-radius: 11px; background: #f8fafc; border: 1px solid #f1f5f9;
  transition: background 0.2s;
}
.funnel-step:hover { background: #eff6ff; }
.fs-n { font-size: 12px; font-weight: 700; color: #fff; background: #4f46e5;
  padding: 3px 8px; border-radius: 7px; text-align: center; }
.fs-name { font-size: 13.5px; color: #0f172a; font-weight: 600; }
.fs-desc { font-size: 12px; color:#596282; display: block; margin-top: 2px; font-weight: 500; }
.fs-bar-outer { height: 9px; border-radius: 999px; background: #e5e7eb; overflow: hidden; margin-top: 6px; }
.fs-bar { height: 100%; border-radius: 999px; background: linear-gradient(90deg,#4f46e5,#8b5cf6); width: 0; transition: width 1s ease; }
.fs-meta { text-align: right; flex: none; }
.fs-count { font-size: 15px; font-weight: 700; color: #0f172a; line-height: 1; }
.fs-rate { font-size: 12px; color: #16a34a; margin-top: 3px; }

/* 兴趣词云 */
.wc { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 6px 2px 0; }
.wc span {
  padding: 6px 14px; border-radius: 999px; font-weight: 600;
  background: linear-gradient(135deg, var(--c1), var(--c2)); color: #fff;
  box-shadow: 0 4px 12px -6px rgba(0,0,0,0.25);
  transition: transform 0.2s; cursor: default;
}
.wc span:hover { transform: scale(1.06) rotate(-1deg); }
.wc span.wc-1 { font-size: 25px; --c1:#ef4444; --c2:#f97316; }
.wc span.wc-2 { font-size: 22px; --c1:#8b5cf6; --c2:#6366f1; }
.wc span.wc-3 { font-size: 19px; --c1:#06b6d4; --c2:#0ea5e9; }
.wc span.wc-4 { font-size: 16px; --c1:#10b981; --c2:#06b6d4; }
.wc span.wc-5 { font-size: 14px; --c1:#64748b; --c2:#475569; }

/* 洞察 + 建议 卡 */
.ins-list { display: flex; flex-direction: column; gap: 11px; }
.ins-item {
  display: grid; grid-template-columns: 34px 1fr; gap: 12px; align-items: flex-start;
  padding: 12px 14px; border-radius: 13px; background: #ffffff; border: 1px solid #f1f5f9;
}
.ins-ic {
  width: 34px; height: 34px; border-radius: 10px; display: flex; align-items: center; justify-content: center;
  font-size: 17px; flex: none;
}
.ins-ic.good { background: #dcfce7; color: #16a34a; }
.ins-ic.warn { background: #fef3c7; color: #b45309; }
.ins-ic.tip { background: #dbeafe; color: #1d4ed8; }
.ins-b h4 { margin: 0 0 3px; font-size: 14px; color: #0f172a; font-weight: 700; }
.ins-b p { margin: 0; font-size: 12.5px; line-height: 1.7; color: #475569; }
.ins-b p em { color: #4f46e5; font-weight: 600; font-style: normal; }

.act-list { display: flex; flex-direction: column; gap: 10px; }
.act-item {
  display: flex; gap: 12px; align-items: flex-start; padding: 11px 13px;
  border-radius: 12px; border: 1px dashed #e2e8f0; background: #fafbff;
  transition: all 0.2s;
}
.act-item:hover { background: #fff; border-style: solid; border-color: #c7d2fe; transform: translateX(3px); }
.ai-icn {
  width: 34px; height: 34px; border-radius: 10px; background: #eef2ff; color: #4f46e5;
  display: flex; align-items: center; justify-content: center; font-size: 17px; flex: none;
}
.ai-b { flex: 1; }
.ai-b h5 { margin: 0 0 2px; font-size: 13.5px; color: #0f172a; font-weight: 700; }
.ai-b p { margin: 0; font-size: 12px; color: #64748b; line-height: 1.6; }
.ai-go {
  padding: 6px 12px; border-radius: 999px; background: #4f46e5; color: #fff;
  font-size: 12px; font-weight: 600; border: none; cursor: pointer; flex: none;
  box-shadow: 0 4px 10px -6px rgba(79,70,229,0.7); transition: transform 0.15s;
}
.ai-go:hover { transform: scale(1.05); }

@media(max-width:640px){
  .dash-wrap { padding: 14px 2px 28px; gap: 16px; }
  .dash-hero { padding: 18px 18px; border-radius: 16px; }
  .dash-hero h2 { font-size: 20px; }
  .dash-card { padding: 16px; border-radius: 16px; }
  .chart-box { height: 220px; }
  .ds-value { font-size: 20px; }
  .funnel-step { grid-template-columns: 56px 1fr; row-gap: 6px; }
  .fs-meta { grid-column: 2; text-align: left; }
}

/* v42 PATCH · P1-1 COMPAT：兼容 renderTaskCard 当前实际输出的旧类名（anchor-title / layer-row / delivery-grid 等） */
.anchor-block .anchor-title {
  display:flex;align-items:center;gap:8px;font-size:13.5px;color:#0f172a;font-weight:700;margin:0 0 8px;
}
.anchor-block .anchor-ico { font-size:16px; flex:none; }
.anchor-block .anchor-en { margin-left:auto; font-size:12px; color:#596282; font-weight:500; letter-spacing:0.2px; }
.anchor-role-text { padding:10px 12px; background:#fff; border:1px dashed #bae6fd; border-radius:10px; font-size:13px; line-height:1.7; color:#0f172a; }

.layer-row { margin:9px 0 0; }
.layer-tag {
  display:inline-block; padding:2px 9px; border-radius:7px; color:#fff; font-size:12px; font-weight:700; letter-spacing:0.3px; margin-bottom:7px;
}
.layer-tag.L1 { background:#dc2626; }
.layer-tag.L2 { background:#ea580c; }
.layer-tag.L3 { background:#0284c7; }
.layer-list { margin:0; padding-left:18px; font-size:12.5px; line-height:1.75; color:#334155; }
.layer-list li { margin:2px 0; }
.layer-list b { color:#0f172a; }

.layer-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-top:4px; }
@media(max-width:640px){ .layer-grid { grid-template-columns:1fr; } }
.layer-cell { background:#fff; border:1px solid #f1f5f9; border-radius:9px; padding:8px 10px; }
.layer-cell-head { font-size:12.5px; color:#0f172a; font-weight:600; margin-bottom:3px; }
.layer-cell-head em { color:#596282; font-style:normal; font-weight:500; font-size:12px; margin-left:4px; letter-spacing:0.3px; }
.layer-cell-body { font-size:12px; line-height:1.65; color:#475569; }

.l3-group { display:flex; flex-direction:column; gap:8px; }
.l3-item { background:#fff; border:1px solid #f1f5f9; border-radius:9px; padding:8px 10px; font-size:12px; line-height:1.65; color:#334155; }
.l3-item.en-gold { background:linear-gradient(135deg,#fffbeb,#fef3c7); border-color:#fde68a; color:#92400e; }
.l3-item ul { margin:4px 0 0; padding-left:18px; }
.l3-k { font-weight:700; color:#0f172a; }

.delivery-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:9px; margin-top:4px; }
@media(max-width:640px){ .delivery-grid { grid-template-columns:1fr; } }
.delivery-tag {
  padding:10px 12px; border-radius:11px; border:1px solid transparent; background:#fff;
  font-size:12px; line-height:1.65; color:#334155;
}
.delivery-tag ul, .delivery-tag ol { margin:5px 0 0; padding-left:18px; }
.delivery-tag li { margin:2px 0; }
.delivery-tag b { font-size:12.5px; }
.delivery-tag.delivery-red { border-color:#fecaca; background:#fef2f2; color:#991b1b; }
.delivery-tag.delivery-red b { color:#b91c1c; }
.delivery-tag.delivery-orange { border-color:#fed7aa; background:#fff7ed; color:#9a3412; }
.delivery-tag.delivery-orange b { color:#c2410c; }
.delivery-tag.delivery-blue { border-color:#bae6fd; background:#f0f9ff; color:#075985; }
.delivery-tag.delivery-blue b { color:#0369a1; }
.delivery-tag.delivery-green { border-color:#bbf7d0; background:#f0fdf4; color:#166534; }
.delivery-tag.delivery-green b { color:#15803d; }
.delivery-tag.delivery-gray { border-color:#e2e8f0; background:#f8fafc; color:#475569; }
.delivery-tag.delivery-gray b { color:#334155; }

/* v42 PATCH · P0-1 账号列表脱敏元信息行（手机/邮箱/班级） */
.dev-acc-pii {
  margin-top: 4px; font-size: 12px; color:#596282; line-height: 1.6;
}
.dev-acc-pii:empty { display: none; }


/* ==========================================================================
   v42 PATCH APPEND · DASHBOARD CORRECT CLASS NAMES (dash-stat-card / dash-panel / dash-funnel / dash-wordcloud)
   说明：之前的 patch 使用了错误的类名（.dash-stat/.dash-card/.funnel-step/.wc），此补丁为代码实际输出的类补上 liquid-glass 风格。
   ========================================================================== */

/* ---------- 统计 6 卡 ---------- */
.dash-stats {
  display: grid; grid-template-columns: repeat(6, minmax(0,1fr)); gap: 13px;
  margin: 0 0 18px;
}
@media (max-width: 1100px){ .dash-stats { grid-template-columns: repeat(3,1fr); } }
@media (max-width: 640px){ .dash-stats { grid-template-columns: repeat(2,1fr); gap:10px; } }
.dash-stat-card {
  position: relative; overflow: hidden;
  background: rgba(255,255,255,0.75); backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,0.85);
  border-radius: 18px; padding: 15px 16px 14px;
  box-shadow: 0 10px 30px -16px rgba(15,23,42,0.20);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.dash-stat-card:hover { transform: translateY(-3px); box-shadow: 0 16px 36px -14px rgba(79,70,229,0.25); }
.dash-stat-card::before {
  content:""; position:absolute; top:-40%; right:-30%; width:130px; height:130px; border-radius:50%;
  background: linear-gradient(135deg, rgba(99,102,241,0.10), rgba(236,72,153,0.08));
  filter: blur(20px); pointer-events:none;
}
.ds-ico {
  width: 40px; height: 40px; border-radius: 12px;
  display:flex; align-items:center; justify-content:center; font-size: 20px;
  background: linear-gradient(135deg,#eef2ff,#ede9fe); color: #4f46e5;
  margin-bottom: 10px; position: relative; z-index: 1;
}
.dash-stat-card:nth-child(2) .ds-ico { background: linear-gradient(135deg,#dbeafe,#cffafe); color:#0369a1; }
.dash-stat-card:nth-child(3) .ds-ico { background: linear-gradient(135deg,#dcfce7,#bbf7d0); color:#15803d; }
.dash-stat-card:nth-child(4) .ds-ico { background: linear-gradient(135deg,#fce7f3,#fbcfe8); color:#be185d; }
.dash-stat-card:nth-child(5) .ds-ico { background: linear-gradient(135deg,#fef3c7,#fde68a); color:#b45309; }
.dash-stat-card:nth-child(6) .ds-ico { background: linear-gradient(135deg,#cffafe,#a5f3fc); color:#0e7490; }
.ds-label { font-size: 12.5px; color:#64748b; font-weight: 500; position: relative; z-index:1; }
.ds-value {
  font-size: 26px; font-weight: 800; color: #0f172a; line-height: 1.2;
  margin: 4px 0 3px; position: relative; z-index:1;
  letter-spacing: -0.3px;
}
.ds-foot { font-size: 12px; color:#596282; font-weight:500; position: relative; z-index:1; }

/* ---------- 2 列图表 Grid ---------- */
.dash-grid { display:grid; grid-template-columns: 1.15fr 1fr; gap: 18px; }
@media (max-width: 900px){ .dash-grid { grid-template-columns: 1fr; } }
.dash-panel {
  background: #fff; border: 1px solid #f1f5f9; border-radius: 20px; padding: 18px 20px;
  box-shadow: 0 8px 24px -16px rgba(15,23,42,0.18);
}
.dash-panel-head {
  display:flex; align-items:center; gap:11px; margin-bottom: 12px;
}
.dash-icon {
  width: 36px; height: 36px; border-radius: 10px;
  display:flex; align-items:center; justify-content:center; font-size:17px;
  background: linear-gradient(135deg,#eef2ff,#e0e7ff); color:#4338ca;
  flex: none;
}
.dash-panel-title { font-size: 15px; font-weight: 700; color: #0f172a; margin:0; }
.dash-panel-sub { font-size: 12px; color:#596282; margin-top: 1px; line-height: 1.4; }

.dash-canvas { width: 100% !important; height: 240px !important; display:block; }
.dash-note {
  margin-top: 10px; font-size: 12px; color:#596282; line-height: 1.55;
  padding: 7px 10px; border-radius: 9px; background: #f8fafc; border: 1px solid #f1f5f9;
}

/* ---------- 漏斗 ---------- */
.dash-funnel { display: flex; flex-direction: column; gap: 8px; }
.dash-funnel-row {
  display:grid; grid-template-columns: 120px 1fr auto; gap: 10px; align-items: center;
  padding: 8px 10px; border-radius: 11px; background: #f8fafc; border: 1px solid #f1f5f9;
  transition: background 0.2s;
}
.dash-funnel-row:hover { background: #eff6ff; }
.df-step { display:flex; align-items:center; gap:8px; }
.df-ico {
  width: 32px; height:32px; border-radius: 9px;
  background: linear-gradient(135deg,#eef2ff,#e0e7ff); color:#4f46e5;
  display:flex; align-items:center; justify-content:center; font-size:16px; flex:none;
}
.df-cn { font-size: 13px; font-weight: 600; color: #0f172a; }
.df-en { font-size: 12px; color:#596282; letter-spacing:0.3px; }
.df-bar { height: 11px; border-radius: 999px; background: #e5e7eb; overflow: hidden; }
.df-bar-fill { height: 100%; border-radius: 999px; transition: width 1s ease; }
.df-val { font-size: 12.5px; color: #0f172a; text-align: right; flex: none; white-space: nowrap; }
.df-val b { font-weight: 700; font-size: 14px; }
.df-drop { color: #dc2626; font-size: 12px; margin-left: 3px; font-weight: 600; }
@media(max-width:640px){
  .dash-funnel-row { grid-template-columns: 120px 1fr; row-gap: 6px; }
  .df-val { grid-column: 2; text-align: left; }
}

/* ---------- 词云 ---------- */
.dash-wordcloud {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: flex-start;
  min-height: 220px; padding: 12px 4px 4px;
  align-content: flex-start;
}
.dwc-word {
  display: inline-block;
  padding: 5px 12px; border-radius: 999px;
  background: #fff; border: 1px solid #eef2ff;
  line-height: 1.35; transition: transform 0.2s ease, box-shadow 0.2s ease;
  cursor: default; user-select: none;
  box-shadow: 0 2px 6px rgba(15, 23, 42, 0.04);
}
.dwc-word:hover { transform: translateY(-2px) rotate(-1deg); box-shadow: 0 8px 16px -10px rgba(79,70,229,0.35); border-color: #c7d2fe; }
.empty-mini {
  text-align: center; padding: 20px 8px; color:#596282; font-size: 13px;
  width: 100%;
}

/* ---------- 数据洞察卡 ---------- */
.dash-insights {
  display: flex; flex-direction: column; gap: 11px;
}
.dash-insight-card {
  display: grid; grid-template-columns: 36px 1fr; gap: 12px; align-items: start;
  padding: 12px 14px; border-radius: 13px;
  background: #fff; border: 1px solid #f1f5f9;
  transition: background 0.2s, transform 0.2s;
}
.dash-insight-card:hover { background: #fafbff; transform: translateX(3px); border-color: #c7d2fe; }
.di-ico {
  width: 36px; height: 36px; border-radius: 10px;
  background: linear-gradient(135deg,#dbeafe,#bfdbfe); color: #1d4ed8;
  display:flex; align-items:center; justify-content:center; font-size: 17px;
}
.dash-insight-card:nth-child(2) .di-ico { background: linear-gradient(135deg,#fef3c7,#fde68a); color:#b45309; }
.dash-insight-card:nth-child(3) .di-ico { background: linear-gradient(135deg,#dcfce7,#bbf7d0); color:#15803d; }
.di-title { font-size: 13.5px; font-weight: 700; color: #0f172a; margin: 0 0 3px; }
.di-desc { font-size: 12.5px; line-height: 1.7; color: #475569; margin: 0; }

/* ===== v43 PATCH · 番茄时钟升级：4档时长 + 收起永不丢失 ===== */
/* --- 4 档时长选择条 --- */
.pomo-duration {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
  margin: 12px 0 10px;
}
.pomo-dur-btn {
  border: 1.5px solid var(--border, #e5e7eb);
  background: #fff;
  color: var(--text, #0f172a);
  font-size: 12px;
  font-weight: 600;
  padding: 6px 4px;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.2s ease;
  -webkit-tap-highlight-color: transparent;
  min-height: 32px;
  line-height: 1.2;
}
.pomo-dur-btn:hover {
  border-color: #fca5a5;
  background: #fef2f2;
  transform: translateY(-1px);
}
.pomo-dur-btn:active { transform: scale(0.94); }
.pomo-dur-btn.active {
  background: linear-gradient(135deg, #ef4444, #f97316);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 3px 10px rgba(239, 68, 68, 0.3);
}
/* --- 页脚双击可找回番茄钟：加一个非常淡的视觉暗示（hover时出现）--- */
footer {
  position: relative;
}
footer::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: 2px;
  box-shadow: inset 0 0 0 0 transparent;
  transition: box-shadow 0.3s ease;
}
footer:hover::before {
  box-shadow: inset 0 0 0 1px rgba(239, 68, 68, 0.18);
}
/* 页脚中央番茄标志：居中醒目、番茄红渐变 + 轻微浮动，一眼找准番茄时钟 */
.footer-pomo {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 4px auto 2px;
  padding: 9px 20px;
  border: none;
  border-radius: 30px;
  background: linear-gradient(135deg, #ef4444, #f97316);
  color: #fff;
  font-size: 13.5px;
  font-weight: 700;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(239, 68, 68, 0.3);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  -webkit-tap-highlight-color: transparent;
  animation: footerPomoFloat 3s ease-in-out infinite;
  line-height: 1;
}
.fp-icon { font-size: 20px; filter: drop-shadow(0 1px 1px rgba(0,0,0,0.15)); }
.fp-text { white-space: nowrap; }
.footer-pomo:hover {
  transform: translateY(-2px) scale(1.04);
  box-shadow: 0 8px 24px rgba(239, 68, 68, 0.42);
}
.footer-pomo:active { transform: scale(0.96); }
@keyframes footerPomoFloat {
  0%, 100% { transform: translateY(0); box-shadow: 0 4px 16px rgba(239,68,68,0.3); }
  50% { transform: translateY(-3px); box-shadow: 0 8px 22px rgba(239,68,68,0.42); }
}
@media (prefers-reduced-motion: reduce) {
  .footer-pomo { animation: none; }
  .footer-pomo:hover { transform: scale(1.04); }
}
/* 窄屏：页脚番茄按钮字号略调 */
@media (max-width: 640px) {
  .footer-pomo { padding: 8px 14px; font-size: 12.5px; }
  .fp-icon { font-size: 18px; }
}
/* --- 手机窄屏适配：番茄浮窗宽度自适应、浮标靠边、底栏避免遮挡 --- */
@media (max-width: 640px) {
  .pomodoro-widget {
    width: calc(100vw - 24px);
    right: 12px;
    bottom: 12px;
    left: 12px;
    padding: 12px;
  }
  .pomo-fab {
    right: 12px;
    bottom: 84px; /* 手机上再抬高一点，防止被底部系统手势条/固定按钮盖住 */
    height: 48px;
    font-size: 12.5px;
    padding: 0 16px 0 12px;
    border-width: 2.5px;
  }
  .pomo-fab-icon { font-size: 22px; }
  /* 窄屏时长按钮字号略缩 */
  .pomo-dur-btn { font-size: 12px; padding: 6px 2px; }
  /* 窄屏收起tooltip放上方，避免超出屏幕 */
  .pomo-fab::after {
    right: auto;
    left: 50%;
    top: auto;
    bottom: 100%;
    transform: translateX(-50%) translateY(-8px);
  }
  .pomo-fab:hover::after {
    transform: translateX(-50%) translateY(-4px);
  }
}

/* ==========================================================================
   v45 ADD · 成果主页（可分享给家人）+ 关于我们（网站介绍）
   与应用 v45 新增的两个页面配套；沿用全站 Liquid Glass 设计语言。
   ========================================================================== */

/* ---------- 成果主页：头部 ---------- */
.ach-hero {
  position: relative; overflow: hidden;
  display: flex; align-items: center; gap: 20px;
  padding: 26px 28px; border-radius: 20px;
  background: linear-gradient(135deg, rgba(79,70,229,.10), rgba(236,72,153,.08)), rgba(255,255,255,.62);
  backdrop-filter: blur(20px) saturate(170%);
  -webkit-backdrop-filter: blur(20px) saturate(170%);
  border: 1px solid rgba(255,255,255,.7);
  box-shadow: 0 14px 38px -18px rgba(79,70,229,.35);
}
.ach-hero-glow {
  position:absolute; top:-70%; right:-15%; width:260px; height:260px; border-radius:50%;
  background: radial-gradient(circle, rgba(139,92,246,.22), transparent 65%);
  pointer-events:none; filter: blur(10px);
}
.ach-avatar {
  width: 78px; height: 78px; flex: none; border-radius: 22px;
  display:flex; align-items:center; justify-content:center; font-size: 40px;
  background: linear-gradient(135deg,#eef2ff,#ede9fe);
  border: 1px solid rgba(255,255,255,.8);
  box-shadow: 0 8px 20px -10px rgba(79,70,229,.5);
}
.ach-hero-info { position: relative; z-index:1; }
.ach-hero-info h3 { font-size: 24px; font-weight: 800; color: #0f172a; margin: 4px 0 4px; }
.ach-hero-info p { font-size: 14px; color: #475569; margin:0; }
.ach-hero-info p strong { color: #4f46e5; }
.ach-hero-seal {
  margin-left: auto; flex: none;
  display:flex; align-items:center; justify-content:center;
  width: 62px; height: 62px; border-radius: 6px 42px 6px 6px;
  background: linear-gradient(135deg,#f59e0b,#f97316); color:#fff;
  box-shadow: 0 8px 24px -10px rgba(245,158,11,.6);
}
.ach-hero-seal span { font-size: 34px; font-weight: 900; font-family: 'STKaiti','KaiTi',serif; }

/* ---------- 成果主页：数据总览 ---------- */
.ach-stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; margin: 18px 0; }
@media (max-width: 900px){ .ach-stats { grid-template-columns: repeat(2,1fr); } }
.ach-stat-card {
  position:relative; overflow:hidden;
  background: rgba(255,255,255,.72); backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,.8); border-radius: 16px;
  padding: 15px 16px 13px; box-shadow: 0 10px 26px -16px rgba(15,23,42,.18);
  transition: transform .25s ease, box-shadow .25s ease;
}
.ach-stat-card:hover { transform: translateY(-3px); box-shadow: 0 14px 30px -14px rgba(79,70,229,.28); }
.ach-stat-icon {
  width: 36px; height: 36px; border-radius: 11px;
  display:flex; align-items:center; justify-content:center; font-size:18px;
  background: linear-gradient(135deg,#eef2ff,#e0e7ff); color:#4338ca;
}
.ach-stat-card:nth-child(2) .ach-stat-icon { background:linear-gradient(135deg,#dcfce7,#bbf7d0); color:#15803d; }
.ach-stat-card:nth-child(3) .ach-stat-icon { background:linear-gradient(135deg,#dbeafe,#cffafe); color:#0369a1; }
.ach-stat-card:nth-child(4) .ach-stat-icon { background:linear-gradient(135deg,#fef3c7,#fde68a); color:#b45309; }
.ach-stat-num { font-size: 26px; font-weight: 800; color:#0f172a; line-height:1.2; margin: 7px 0 2px; letter-spacing:-.3px; }
.ach-stat-label { font-size: 12.5px; color:#64748b; font-weight:500; }

/* ---------- 成果主页：区块通用 ---------- */
.ach-section {
  background: rgba(255,255,255,.66); backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.75);
  border-radius: 20px; padding: 22px 24px; margin: 18px 0;
  box-shadow: 0 12px 32px -20px rgba(15,23,42,.20);
}
.ach-section-head { margin: 0 0 16px; }
.ach-section-head h3 { font-size: 19px; font-weight: 800; color:#0f172a; margin: 4px 0 4px; }
.ach-section-head p { font-size: 13px; color:#64748b; margin:0; }

/* 主题足迹 */
.ach-themes { display:flex; flex-direction:column; gap: 13px; }
.ach-theme-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; gap:10px; }
.ach-theme-name { font-size: 14.5px; font-weight: 700; color:#0f172a; }
.ach-theme-count { font-size: 12px; color:#64748b; }
.ach-theme-bar { height: 11px; border-radius: 999px; background: #eceff5; overflow:hidden; }
.ach-theme-fill { height:100%; border-radius:999px; transition: width 1s cubic-bezier(.2,.7,.3,1); }

/* 作品秀 */
.ach-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
@media (max-width: 900px){ .ach-gallery { grid-template-columns: repeat(2,1fr); } }
@media (max-width: 520px){ .ach-gallery { grid-template-columns: 1fr; } .ach-gallery .gallery-item img{height:200px;} }
.ach-gallery .gallery-empty { grid-column: 1 / -1; }

/* 里程碑 */
.ach-milestones { display:flex; flex-direction:column; gap: 11px; }
.ach-milestone {
  display:flex; gap: 13px; align-items: flex-start;
  padding: 12px 13px; border-radius: 13px;
  background: #fff; border: 1px solid #f1f5f9;
  opacity:0; transform: translateY(16px);
  animation: achRise .5s ease forwards; animation-delay: var(--d, 0ms);
}
.ach-milestone-icon {
  width: 38px; height:38px; flex:none; border-radius:11px;
  display:flex; align-items:center; justify-content:center; font-size:19px;
  background: linear-gradient(135deg,#eef2ff,#e0e7ff);
}
.ach-milestone-title { font-size: 14px; font-weight: 700; color:#0f172a; }
.ach-milestone-text { font-size: 13px; color:#475569; margin: 2px 0; line-height:1.55; }
.ach-milestone-time { font-size: 12px; color:#596282; }
@keyframes achRise { to { opacity:1; transform:none; } }

/* 分享 CTA */
.ach-share {
  text-align:center; margin: 20px 0 6px; padding: 30px 24px; border-radius: 20px;
  background: linear-gradient(135deg, rgba(79,70,229,.10), rgba(6,182,212,.08)), rgba(255,255,255,.6);
  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.7); box-shadow: 0 14px 34px -20px rgba(79,70,229,.35);
}
.ach-share h3 { font-size: 21px; font-weight: 800; color:#0f172a; margin: 6px 0 8px; }
.ach-share p { max-width: 620px; margin: 0 auto 16px; font-size: 13.5px; color:#475569; line-height:1.8; }
.ach-share-actions { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
/* 分享链接只读视图提示条 */
.ach-share-note {
  display:flex; align-items:center; gap:10px; margin: 0 0 18px; padding: 12px 16px;
  border-radius: 14px; font-size: 13px; color:#475569; line-height:1.7;
  background: linear-gradient(135deg, rgba(245,158,11,.10), rgba(79,70,229,.08)), rgba(255,255,255,.6);
  border: 1px solid rgba(245,158,11,.25); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
}
.ach-share-note span { font-size: 18px; }

/* 成果主页：访客门与预览 */
.achievements-gate { margin-top: 18px; }
.achievements-sample {
  margin-top: 16px; text-align:center; padding: 26px 20px; border-radius: 18px;
  background: rgba(255,255,255,.66); border:1px dashed #c7d2fe;
}
.achievements-sample h3 { font-size:18px; color:#0f172a; margin:6px 0 8px; }
.achievements-sample p { color:#64748b; font-size:13.5px; margin-bottom:14px; }

/* ---------- 关于我们：网站介绍 ---------- */
.intro-hero {
  position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding: 34px 30px; border-radius: 20px;
  background: linear-gradient(135deg, rgba(79,70,229,.10), rgba(139,92,246,.10)), rgba(255,255,255,.62);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(255,255,255,.7);
  box-shadow: 0 14px 38px -18px rgba(79,70,229,.35);
}
.intro-hero-glow { position:absolute; top:-70%; left:-10%; width:280px; height:280px; border-radius:50%;
  background: radial-gradient(circle, rgba(6,182,212,.20), transparent 65%); pointer-events:none; filter: blur(10px); }
.intro-hero-left { position: relative; z-index:1; max-width: 640px; }
.intro-hero-left h3 { font-size: 30px; line-height: 1.3; font-weight: 800; color:#0f172a; margin: 8px 0 12px; }
.intro-hero-left h3 em { font-style: normal; color:transparent; background: linear-gradient(90deg,#4f46e5,#06b6d4); -webkit-background-clip:text; background-clip:text; }
.intro-hero-left p { font-size: 14.5px; color:#475569; line-height:1.9; margin-bottom:18px; }
.intro-hero-seal {
  flex:none; display:flex; align-items:center; justify-content:center;
  width: 90px; height: 90px; border-radius: 8px 62px 8px 8px;
  background: linear-gradient(135deg,#f59e0b,#f97316); color:#fff;
  box-shadow: 0 12px 30px -12px rgba(245,158,11,.6);
}
.intro-hero-seal span { font-size: 50px; font-weight:900; font-family:'STKaiti','KaiTi',serif; }
@media (max-width: 640px){ .intro-hero{ flex-direction:column; text-align:center; } .intro-hero-seal{ display:none; } }

.intro-section {
  background: rgba(255,255,255,.66); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.75); border-radius: 20px;
  padding: 22px 24px; margin: 18px 0; box-shadow: 0 12px 32px -20px rgba(15,23,42,.20);
}

/* 六大主题卡 */
.intro-themes { display:grid; grid-template-columns: repeat(3,1fr); gap: 14px; }
@media (max-width: 900px){ .intro-themes{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 520px){ .intro-themes{ grid-template-columns: 1fr; } }
.intro-theme {
  display:flex; align-items:center; gap: 12px; padding: 13px 14px;
  background: #fff; border: 1px solid #f1f5f9; border-radius: 14px;
  border-left: 4px solid var(--sub); transition: transform .2s, box-shadow .2s;
}
.intro-theme:hover { transform: translateY(-2px); box-shadow: 0 10px 22px -14px rgba(15,23,42,.22); }
.intro-theme-icon { font-size: 24px; flex:none; }
.intro-theme h4 { font-size: 14.5px; font-weight:700; color:#0f172a; }
.intro-theme p { font-size: 12px; color:#64748b; margin:0; }

/* 六步探究法 */
.intro-steps { display:grid; grid-template-columns: repeat(3,1fr); gap: 14px; }
@media (max-width: 900px){ .intro-steps{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 520px){ .intro-steps{ grid-template-columns: 1fr; } }
.intro-step {
  display:flex; gap: 12px; align-items: flex-start; padding: 15px 14px;
  background: #fff; border: 1px solid #f1f5f9; border-radius: 14px;
}
.intro-step-no {
  flex:none; font-size: 13px; font-weight: 800; color:#fff;
  background: linear-gradient(135deg,#4f46e5,#8b5cf6);
  padding: 3px 9px; border-radius: 8px;
}
.intro-step b { font-size: 14.5px; color:#0f172a; }
.intro-step p { font-size: 12.5px; color:#64748b; margin: 3px 0 0; line-height:1.6; }

/* 面向人群 */
.intro-audience { display:grid; grid-template-columns: repeat(3,1fr); gap:14px; }
@media (max-width: 700px){ .intro-audience{ grid-template-columns: 1fr; } }
.intro-aud {
  text-align:center; padding: 20px 14px; background:#fff;
  border:1px solid #f1f5f9; border-radius:16px;
}
.intro-aud-icon { font-size: 30px; }
.intro-aud h4 { font-size: 15px; font-weight:700; color:#0f172a; margin:8px 0 5px; }
.intro-aud p { font-size: 12.5px; color:#64748b; margin:0; }

/* 三分钟上手：家长/孩子/老师 引导卡（v65） */
.guide-common { margin-bottom: 16px; }
.guide-common .intro-step { background:#f8fafc; border-color:#eef2f7; }
.guide-roles { display:grid; grid-template-columns: repeat(3,1fr); gap:14px; }
@media (max-width: 900px){ .guide-roles{ grid-template-columns: 1fr; } }
.guide-role-card {
  display:flex; flex-direction:column; gap:12px; padding:16px;
  background:#fff; border:1px solid #eef2f7; border-top:4px solid var(--rc);
  border-radius:16px; box-shadow: 0 8px 20px -18px rgba(15,23,42,.25);
}
.guide-role-head { display:flex; gap:12px; align-items:center; }
.guide-role-icon {
  font-size:26px; width:52px; height:52px; flex:none;
  display:flex; align-items:center; justify-content:center;
  background:#f1f5f9; border-radius:14px;
  background: linear-gradient(135deg, color-mix(in srgb, var(--rc) 14%, #fff), color-mix(in srgb, var(--rc) 6%, #fff));
}
.guide-role-title { font-size:16px; font-weight:800; color:#0f172a; }
.guide-role-sub { font-size:12px; color:#64748b; margin-top:2px; line-height:1.5; }
.guide-role-label { font-size:12.5px; font-weight:800; color:var(--rc); margin-bottom:6px; }
.guide-role-list ul, .guide-role-list ol { margin:0; padding-left:18px; }
.guide-role-list li { font-size:12.5px; color:#475569; line-height:1.7; margin-bottom:5px; }
.guide-role-steps, .guide-role-list ul { flex:1; }

/* 平台亮点 */
.intro-features { display:grid; grid-template-columns: repeat(4,1fr); gap: 12px; }
@media (max-width: 1000px){ .intro-features{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 520px){ .intro-features{ grid-template-columns: 1fr; } }
.intro-feature { padding: 13px 14px; background:#fff; border:1px solid #f1f5f9; border-radius:13px; }
.intro-feature b { font-size: 14px; color:#0f172a; }
.intro-feature p { font-size: 12.5px; color:#64748b; margin:4px 0 0; line-height:1.6; }

/* 主办与合规 */
.intro-about {
  text-align:center; padding: 28px 24px; border-radius: 20px;
  background: linear-gradient(135deg, rgba(245,158,11,.10), rgba(239,68,68,.07)), rgba(255,255,255,.6);
  border: 1px solid rgba(255,255,255,.7);
}
.intro-about h3 { font-size:19px; font-weight:800; color:#0f172a; margin:8px 0 10px; }
.intro-about p { max-width:660px; margin:0 auto 16px; font-size:13.5px; color:#475569; line-height:1.9; }

/* 动效偏好：减少动效 */
@media (prefers-reduced-motion: reduce){
  .ach-milestone { animation: none; opacity:1; transform:none; }
  .ach-theme-fill { transition: none; }
  .ach-stat-card, .intro-theme { transition: none; }
}


/* ===== v47 学习跟进方法 + 精细化管理流程方案 ===== */
.followup-methods .method-grid { grid-template-columns: repeat(auto-fill,minmax(230px,1fr)); }
.followup-tag { font-style:normal; font-size:12px; font-weight:600; color:#b45309; background:#fef3c7; border-radius:999px; padding:2px 8px; margin-left:4px; vertical-align:middle; }
.followup-en { color:#596282; font-weight:500; font-size:12px; }
.followup-when { margin-top:6px; font-size:12px; color:#6366f1; font-weight:600; }
.mgmt-step { transition: transform .2s ease, box-shadow .2s ease; }
.mgmt-step:hover { transform: translateY(-2px); box-shadow:0 6px 18px rgba(15,23,42,.08); }
@media (max-width:640px){ .mgmt-step{ flex-direction:column; gap:8px; } }
@media (prefers-reduced-motion: reduce){ .mgmt-step{ transition:none; } .mgmt-step:hover{ transform:none; box-shadow:none; } }


/* ==========================================================================
   v49 ADD · 四维科学素养面板（深空科技感）+ 任务卡学段标签 + 触控目标兜底
   依《义务教育科学课程标准（2022年版）》核心素养四维：科学观念/科学思维/探究实践/态度责任
   ========================================================================== */

/* ---------- 四维素养面板：深空底座 ---------- */
.lit-panel {
  position: relative; overflow: hidden;
  margin-top: 24px; border-radius: 22px; padding: 24px 26px 18px;
  background:
    radial-gradient(1100px 420px at 88% -60%, rgba(56,189,248,.16), transparent 60%),
    radial-gradient(900px 380px at -12% 130%, rgba(129,140,248,.18), transparent 60%),
    linear-gradient(160deg, #0b1224 0%, #0e1730 55%, #0a1120 100%);
  border: 1px solid rgba(94,234,212,.22);
  box-shadow: 0 20px 55px -24px rgba(2,8,23,.6), inset 0 1px 0 rgba(255,255,255,.06);
  color: #e2e8f0;
}
/* 科技网格纹理（顶部径向淡出） */
.lit-panel::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(148,163,184,.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(148,163,184,.055) 1px, transparent 1px);
  background-size: 34px 34px;
  -webkit-mask-image: radial-gradient(85% 72% at 50% 18%, #000 25%, transparent 100%);
  mask-image: radial-gradient(85% 72% at 50% 18%, #000 25%, transparent 100%);
}
/* 顶部霓虹光线 */
.lit-panel::after {
  content: ''; position: absolute; top: 0; left: 8%; right: 8%; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(56,189,248,.75), rgba(129,140,248,.75), transparent);
  pointer-events: none;
}
.lit-panel > * { position: relative; z-index: 1; }

.lit-head { display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap; }
.lit-eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12px; font-weight: 700; letter-spacing: .14em;
  color: #5eead4; text-transform: uppercase;
  font-family: Consolas, 'Courier New', monospace;
  margin-bottom: 8px;
}
.lit-pulse {
  width: 7px; height: 7px; border-radius: 50%; background: #5eead4;
  box-shadow: 0 0 0 0 rgba(94,234,212,.55);
  animation: litPulse 2s ease-out infinite;
}
@keyframes litPulse {
  0%   { box-shadow: 0 0 0 0 rgba(94,234,212,.55); }
  70%  { box-shadow: 0 0 0 9px rgba(94,234,212,0); }
  100% { box-shadow: 0 0 0 0 rgba(94,234,212,0); }
}
.lit-head-text h3 { margin: 0 0 6px; font-size: 20px; font-weight: 800; color: #f1f5f9; letter-spacing: .2px; }
.lit-head-text p { margin: 0; font-size: 13px; color:#596282; line-height: 1.7; max-width: 560px; }

/* 综合素养总分环 */
.lit-total {
  flex: none; width: 108px; height: 108px; border-radius: 50%;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: radial-gradient(circle at 50% 35%, rgba(255,255,255,.06), rgba(15,23,42,.5));
  border: 2px solid rgba(94,234,212,.4);
  box-shadow: 0 0 26px rgba(34,211,238,.16), inset 0 0 18px rgba(34,211,238,.06);
}
.lit-total-num { font-size: 30px; font-weight: 800; line-height: 1; font-family: Consolas, 'Courier New', monospace; }
.lit-total-num small { font-size: 14px; font-weight: 700; margin-left: 1px; }
.lit-total-label { margin-top: 5px; font-size: 12px; color:#596282; letter-spacing: .08em; }

/* 四张素养卡 */
.lit-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 18px; }
@media (max-width: 980px){ .lit-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px){ .lit-grid { grid-template-columns: 1fr; } }
.lit-card {
  border-radius: 16px; padding: 15px 16px 13px;
  background: rgba(15,23,42,.46);
  border: 1px solid rgba(148,163,184,.18);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.lit-card:hover { transform: translateY(-3px); border-color: rgba(94,234,212,.45); box-shadow: 0 14px 34px -18px rgba(34,211,238,.35); }
.lit-card-top { display: flex; align-items: flex-start; gap: 11px; }
.lit-ico {
  flex: none; width: 40px; height: 40px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.lit-names { min-width: 0; flex: 1; }
.lit-cn { font-size: 15.5px; font-weight: 800; color: #f1f5f9; line-height: 1.3; }
.lit-en { font-size: 12px; font-weight: 600; color: #64748b; letter-spacing: .1em; margin-left: 5px; text-transform: uppercase; font-family: Consolas, 'Courier New', monospace; }
.lit-plain { margin-top: 4px; font-size: 12px; color:#596282; line-height: 1.55; }
.lit-pct { flex: none; font-size: 22px; font-weight: 800; font-family: Consolas, 'Courier New', monospace; line-height: 1.15; }
.lit-pct small { font-size: 12px; font-weight: 700; }

/* 霓虹进度条 + 流光扫过 */
.lit-bar-track { height: 10px; border-radius: 99px; background: rgba(148,163,184,.16); overflow: hidden; margin-top: 12px; }
.lit-bar-fill { position: relative; height: 100%; border-radius: 99px; transition: width .9s cubic-bezier(.2,.7,.3,1); }
.lit-bar-fill::after {
  content: ''; position: absolute; inset: 0; transform: translateX(-100%);
  background: linear-gradient(105deg, transparent 32%, rgba(255,255,255,.4) 50%, transparent 68%);
  animation: litSweep 2.8s ease-in-out infinite;
}
@keyframes litSweep { 55%, 100% { transform: translateX(100%); } }

.lit-card-foot { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-top: 9px; flex-wrap: wrap; }
.lit-steps { font-size: 12px; color:#596282; line-height: 1.5; }
.lit-count { flex: none; font-size: 12px; font-weight: 700; color: #cbd5e1; font-family: Consolas, 'Courier New', monospace; background: rgba(148,163,184,.14); border-radius: 99px; padding: 2px 9px; }

/* 底部建议条 */
.lit-tip {
  display: flex; align-items: center; gap: 10px;
  margin-top: 16px; padding: 11px 15px; border-radius: 13px;
  font-size: 13px; color: #cbd5e1; line-height: 1.65;
  background: linear-gradient(90deg, rgba(34,211,238,.10), rgba(129,140,248,.10));
  border: 1px solid rgba(94,234,212,.22);
}
.lit-tip-ico { flex: none; font-size: 17px; filter: drop-shadow(0 0 6px rgba(94,234,212,.5)); }

@media (prefers-reduced-motion: reduce) {
  .lit-bar-fill::after { animation: none; }
  .lit-pulse { animation: none; box-shadow: none; }
  .lit-bar-fill { transition: none; }
  .lit-card, .lit-card:hover { transform: none; transition: none; }
}

/* ---------- 任务卡 · 学段适配标签（2022课标学段） ---------- */
.stage-tag {
  display: inline-flex; align-items: center; gap: 4px;
  margin-bottom: 9px; padding: 3px 10px;
  font-size: 12px; font-weight: 700; border-radius: 99px;
  letter-spacing: .02em; cursor: help; white-space: nowrap;
}

/* ---------- 触控目标兜底：粗指针设备最小 44px（WCAG 2.2 / 移动端可用性） ---------- */
@media (pointer: coarse) {
  .btn, .nav-btn, .nav-tree-item, .nav-tree-trigger, .user-edit-btn,
  .form-control, .pomo-dur-btn, .checkin-tab, .admin-tab,
  .modal-footer .btn, .act-btn, .lit-card { min-height: 44px; }
}

/* ===================
   🎓 竞赛与升学页（v50 · 2026-08-27）
   白名单竞赛 + 升学通道 + 分学段建议
   =================== */
.competition-page { color: var(--text); }

.ladder-notice {
  display: flex; align-items: flex-start; gap: 10px;
  margin: 0 0 22px; padding: 13px 16px; border-radius: 13px;
  font-size: 13px; line-height: 1.7; color: #6b4a12;
  background: linear-gradient(90deg, rgba(245,158,11,.14), rgba(245,158,11,.05));
  border: 1px solid rgba(245,158,11,.35);
}
.ladder-notice b { color: #92400e; }

.ladder-lead { font-size: 15px; line-height: 1.85; color: var(--text-light); margin-bottom: 20px; }
.ladder-lead b, .ladder-lead em { color: var(--primary-dark); }

/* 奥赛卡片网格 */
.olympiad-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 16px;
}
.olympiad-card {
  position: relative; overflow: hidden;
  padding: 20px 18px 18px; border-radius: var(--radius-lg);
  background: var(--card-bg);
  border: 1px solid rgba(226,232,240,.9);
  box-shadow: var(--shadow);
  transition: transform .25s ease, box-shadow .25s ease;
  animation: fadeUp .5s ease both;
}
.olympiad-card::before {
  content: ''; position: absolute; inset: 0 auto 0 0; width: 4px;
  background: linear-gradient(180deg, var(--primary-light), var(--secondary));
}
.olympiad-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.olympiad-icon { font-size: 30px; }
.olympiad-en { font-family: Consolas, 'Courier New', monospace; font-size: 12px; letter-spacing: .06em; color: var(--text-muted); text-transform: uppercase; }
.olympiad-card h4 { margin: 6px 0 8px; font-size: 17px; color: var(--text); }
.olympiad-org, .olympiad-level { font-size: 12px; color: var(--text-light); line-height: 1.6; }
.olympiad-org { color: var(--primary); font-weight: 600; }
.olympiad-card p { font-size: 13px; color: var(--text-light); line-height: 1.65; margin-top: 8px; }

@keyframes fadeUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }

/* 白名单其它项目 chips */
.ladder-sublist { margin-top: 20px; padding: 16px 18px; border-radius: var(--radius); background: rgba(99,102,241,.06); border: 1px solid rgba(99,102,241,.14); }
.ladder-sublist-head { font-size: 13px; font-weight: 700; color: var(--primary-dark); margin-bottom: 10px; }
.ladder-sublist-items { display: flex; flex-wrap: wrap; gap: 8px; }
.ladder-sublist-items span {
  font-size: 12px; padding: 4px 11px; border-radius: 99px;
  background: rgba(255,255,255,.7); border: 1px solid var(--border); color: var(--text-light);
}

/* 一句话看懂 */
.ladder-tip {
  padding: 16px 18px; border-radius: var(--radius);
  background: linear-gradient(90deg, rgba(79,70,229,.08), rgba(6,182,212,.08));
  border: 1px solid rgba(79,70,229,.16); margin-bottom: 18px;
}
.ladder-tip-title { font-size: 14px; font-weight: 700; color: var(--primary-dark); margin-bottom: 6px; }
.ladder-tip p { font-size: 14px; line-height: 1.75; color: var(--text); }
.ladder-tip em { color: var(--primary-dark); font-style: normal; font-weight: 600; }

/* 分学段建议 */
.stage-list { display: flex; flex-direction: column; gap: 12px; }
.stage-row {
  display: grid; grid-template-columns: 150px 1fr auto; gap: 16px;
  align-items: center; padding: 15px 17px; border-radius: var(--radius);
  background: var(--card-bg); border: 1px solid var(--border); box-shadow: var(--shadow);
  animation: fadeUp .5s ease both;
}
.stage-grade {
  font-weight: 800; font-size: 14px; color: #fff; text-align: center;
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  border-radius: 10px; padding: 8px 6px;
}
.stage-main { min-width: 0; }
.stage-title { font-weight: 700; font-size: 15px; color: var(--text); }
.stage-do { font-size: 13px; color: var(--text-light); line-height: 1.6; margin-top: 3px; }
.stage-value { font-size: 12.5px; color: var(--success); font-weight: 600; white-space: nowrap; }

/* 升学通道卡片 */
.route-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.route-card {
  padding: 18px; border-radius: var(--radius-lg);
  background: var(--card-bg); border: 1px solid var(--border); box-shadow: var(--shadow);
  transition: transform .25s ease, box-shadow .25s ease;
  animation: fadeUp .5s ease both;
}
.route-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.route-head { font-size: 17px; color: var(--text); margin-bottom: 11px; }
.route-row { font-size: 13px; line-height: 1.65; color: var(--text-light); margin-bottom: 6px; }
.route-k { font-weight: 700; color: var(--text); margin-right: 4px; }
.route-note {
  margin-top: 9px; padding: 8px 11px; border-radius: 9px;
  font-size: 12.5px; color: var(--primary-dark); background: rgba(99,102,241,.07);
  border-left: 3px solid var(--primary);
}

/* 结尾寄语 */
.ladder-outro {
  margin-top: 8px; padding: 22px 22px 20px; border-radius: var(--radius-lg);
  text-align: center;
  background: linear-gradient(135deg, rgba(79,70,229,.10), rgba(6,182,212,.12));
  border: 1px solid rgba(79,70,229,.18);
}
.ladder-outro-title { font-size: 16px; font-weight: 800; color: var(--primary-dark); margin-bottom: 8px; }
.ladder-outro p { font-size: 14px; line-height: 1.8; color: var(--text); max-width: 640px; margin: 0 auto; }

@media (max-width: 720px) {
  .stage-row { grid-template-columns: 1fr; gap: 8px; text-align: left; }
  .stage-grade { text-align: left; padding: 6px 12px; }
  .stage-value { white-space: normal; }
}

/* ===== v55 国潮健康营（生命健康主题 · 中医药/长高/武术） ===== */
.culture-camp-sub { font-size: 13px; font-weight: normal; color: var(--text-light); margin-left: 8px; }
.culture-camp-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 14px; }
.culture-module {
  border: 1px solid var(--border); border-radius: var(--radius);
  background: var(--card-bg); overflow: hidden; box-shadow: var(--shadow);
  border-top: 3px solid var(--mod-color, var(--primary));
}
.culture-module summary {
  display: flex; align-items: center; gap: 10px; padding: 14px 16px;
  cursor: pointer; list-style: none; user-select: none;
}
.culture-module summary::-webkit-details-marker { display: none; }
.culture-module summary::after { content: '▾'; margin-left: auto; color: var(--text-muted); transition: transform .2s; }
.culture-module[open] summary::after { transform: rotate(180deg); }
.culture-module-icon {
  width: 40px; height: 40px; border-radius: 10px; flex: 0 0 40px;
  display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.culture-module-name { font-weight: 700; font-size: 15px; color: var(--text); }
.culture-module-en { font-size: 12px; color: var(--text-muted); letter-spacing: .5px; display: block; }
.culture-module-body { padding: 0 16px 16px; border-top: 1px dashed var(--border); }
.culture-module-intro { font-size: 13.5px; color: var(--text-light); line-height: 1.8; padding: 12px 0; }
.culture-module-actions .culture-module-label { font-size: 12px; font-weight: 700; color: var(--text); }
.culture-module-actions ul { margin: 8px 0 12px; padding-left: 18px; }
.culture-module-actions li { font-size: 13px; color: var(--text-light); line-height: 1.9; }
.culture-module-knowledge {
  background: #fffbeb; border-left: 3px solid var(--warning); border-radius: 8px;
  padding: 10px 12px; font-size: 12.5px; color: #92400e; line-height: 1.7; margin-bottom: 12px;
}
.culture-module-knowledge span { font-weight: 700; margin-right: 6px; }

/* ===== v55 成长工具箱 ===== */
.toolkit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 18px; }
.toolkit-card {
  background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius-lg);
  padding: 20px; box-shadow: var(--shadow);
}
.toolkit-card h3 { font-size: 17px; color: var(--text); display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.toolkit-card-sub { font-size: 12px; font-weight: normal; color: var(--text-muted); }
.toolkit-inline { display: flex; gap: 8px; flex-wrap: wrap; align-items: stretch; }
.toolkit-inline .form-control { min-width: 0; }
.toolkit-list { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.toolkit-empty {
  padding: 22px 14px; text-align: center; color: var(--text-muted); font-size: 13px;
  background: var(--bg); border: 1px dashed var(--border); border-radius: var(--radius); line-height: 1.8;
}
.tk-note {
  display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px;
  background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius);
}
.tk-note-done { opacity: .6; }
.tk-note-check { background: none; border: none; cursor: pointer; font-size: 16px; padding: 2px; }
.tk-note-body { flex: 1; min-width: 0; }
.tk-note-text { font-size: 13.5px; color: var(--text); line-height: 1.6; word-break: break-word; }
.tk-note-done .tk-note-text { text-decoration: line-through; color: var(--text-muted); }
.tk-note-meta { display: flex; gap: 8px; margin-top: 6px; align-items: center; }
.tk-note-theme { font-size: 12px; padding: 2px 8px; border-radius: 999px; background: var(--bg); color: var(--text-light); }
.tk-note-time { font-size: 12px; color: var(--text-muted); }
.tk-note-del { background: none; border: none; cursor: pointer; opacity: .5; font-size: 13px; }
.tk-note-del:hover { opacity: 1; }
.toolkit-chart-wrap { position: relative; height: 240px; margin: 14px 0; }
.toolkit-chart { width: 100% !important; height: 240px !important; display: block; }
.toolkit-metric-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin: 6px 0 12px; }
.toolkit-metric-tab {
  display: flex; align-items: center; gap: 6px; padding: 6px 12px;
  border: 1px solid var(--border); border-radius: 999px; background: var(--card-bg);
  cursor: pointer; font-size: 12.5px; color: var(--text-light); transition: all .15s;
}
.toolkit-metric-tab b { color: var(--text); font-size: 12.5px; }
.toolkit-metric-tab i { font-style: normal; font-size: 12px; color: var(--text-muted); }
.toolkit-metric-tab.active { border-color: var(--tab-color, var(--primary)); background: color-mix(in srgb, var(--tab-color, var(--primary)) 12%, white); }
.toolkit-metric-add { border-style: dashed; }
.toolkit-records { display: flex; flex-direction: column; gap: 6px; max-height: 300px; overflow-y: auto; }
.toolkit-record-row {
  display: grid; grid-template-columns: 86px 1fr auto 28px; gap: 8px; align-items: center;
  padding: 7px 10px; background: var(--bg); border-radius: 8px; font-size: 12.5px;
}
.tk-rec-metric { color: var(--text-light); }
.tk-rec-value { font-weight: 700; color: var(--text); }
.tk-rec-value em { font-style: normal; font-weight: normal; font-size: 12px; color: var(--text-muted); }
.tk-rec-date { color: var(--text-muted); font-size: 12px; }
.tk-rec-del { background: none; border: none; cursor: pointer; color: var(--text-muted); font-size: 12px; }
.tk-rec-del:hover { color: var(--danger); }
.toolkit-more { font-size: 12px; color: var(--text-muted); margin-top: 8px; text-align: center; }
.toolkit-organize { margin-top: 18px; }
.toolkit-ai-note { font-size: 12px; color: var(--text-muted); margin-top: 10px; line-height: 1.7; }
.tk-organize-block { margin-top: 16px; }
.tk-organize-block h4 { font-size: 14px; color: var(--text); margin-bottom: 10px; }
.tk-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius); }
.tk-table { width: 100%; border-collapse: collapse; font-size: 12.5px; background: var(--card-bg); }
.tk-table th { background: var(--bg); color: var(--text-light); font-weight: 600; text-align: left; padding: 8px 12px; white-space: nowrap; }
.tk-table td { padding: 8px 12px; border-top: 1px solid var(--border); color: var(--text); }
.tk-table .tk-cell-text { color: var(--text-light); }
.tk-up { color: var(--danger); font-weight: 700; }   /* 涨/长高用红（中式习惯） */
.tk-down { color: var(--success); font-weight: 700; }
.tk-kwbar { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; align-items: center; font-size: 12px; color: var(--text-light); }
.tk-kwbar b { background: var(--bg); border: 1px solid var(--border); border-radius: 999px; padding: 2px 10px; font-weight: 500; }
.tk-kwbar i { font-style: normal; color: var(--primary); font-size: 12px; margin-left: 3px; }
.tk-organize-hint { font-size: 12px; color: var(--text-muted); margin-top: 8px; line-height: 1.7; }

@media (max-width: 900px) {
  .toolkit-grid { grid-template-columns: 1fr; }
  .toolkit-record-row { grid-template-columns: 76px 1fr auto 24px; }
}
@media (max-width: 480px) {
  .culture-camp-grid { grid-template-columns: 1fr; }
  .toolkit-card { padding: 14px; }
  .toolkit-inline .form-control { flex: 1 1 100% !important; }
  .toolkit-inline .btn { flex: 1 1 100%; }
}

/* ===== v56 国潮健康营 · 权威学习链接 ===== */
.culture-module-links { margin-top: 14px; }
.culture-module-links .culture-module-label { display: block; margin-bottom: 8px; }
.culture-link-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.culture-link-list a {
  display: flex; align-items: center; gap: 10px; padding: 9px 11px;
  border: 1px solid var(--border); border-radius: 8px; background: var(--bg);
  text-decoration: none; transition: background .15s, border-color .15s, transform .15s;
}
.culture-link-list a:hover, .culture-link-list a:focus-visible {
  background: color-mix(in srgb, var(--mod-color, var(--primary)) 10%, white);
  border-color: var(--mod-color, var(--primary)); transform: translateY(-1px);
}
.culture-link-icon { font-size: 16px; flex: 0 0 auto; line-height: 1; }
.culture-link-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.culture-link-name { font-size: 12.5px; font-weight: 600; color: var(--text); }
.culture-link-desc { font-style: normal; font-size: 12px; color: var(--text-muted); line-height: 1.5; }
.culture-link-go { font-size: 12px; color: var(--text-muted); flex: 0 0 auto; }

/* ===== v56 工具箱数据备份区 ===== */
.toolkit-backup {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--border);
}
.toolkit-backup-hint { font-size: 12px; color: var(--text-muted); line-height: 1.6; flex: 1 1 100%; }
.toolkit-warn {
  margin-top: 10px; padding: 8px 11px; border-radius: 8px; font-size: 12px; line-height: 1.6;
  background: #fffbeb; border-left: 3px solid var(--warning); color: #92400e;
}

/* ===== v57 微课占位卡 ===== */
.lesson-placeholder {
  display: flex; gap: 14px; align-items: flex-start;
  border: 1px dashed var(--border); border-radius: var(--radius-lg);
  background: var(--bg); padding: 18px;
}
.lp-icon { font-size: 30px; line-height: 1; flex: 0 0 auto; }
.lp-body h4 { font-size: 15px; color: var(--text); margin-bottom: 6px; }
.lp-body p { font-size: 13px; color: var(--text-light); line-height: 1.8; }
.lp-tip { margin-top: 8px; padding: 8px 11px; background: #eff6ff; border-left: 3px solid var(--primary); border-radius: 8px; color: #1e40af !important; font-size: 12.5px !important; }

/* ===== v57 大概念（主题详情卡）===== */
.big-idea-card { border-top: 3px solid var(--primary); }
.big-idea-chips { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px; }
.big-idea-chip {
  display: flex; gap: 10px; padding: 12px 14px; border-radius: var(--radius);
  background: var(--bg); border: 1px solid var(--border); border-left: 3px solid var(--bi-color, var(--primary));
}
.big-idea-icon { font-size: 20px; line-height: 1.4; flex: 0 0 auto; }
.big-idea-text b { display: block; font-size: 13.5px; color: var(--bi-color, var(--primary)); }
.big-idea-text b em { font-style: normal; font-weight: normal; font-size: 12px; color: var(--text-muted); margin-left: 8px; }
.big-idea-text p { font-size: 12.5px; color: var(--text-light); line-height: 1.7; margin-top: 4px; }
.big-idea-link {
  display: flex; gap: 10px; margin-top: 14px; padding: 12px 14px;
  background: linear-gradient(135deg, rgba(99,102,241,.08), rgba(16,185,129,.06));
  border: 1px dashed var(--border); border-radius: var(--radius);
}
.big-idea-link-icon { font-size: 18px; flex: 0 0 auto; }
.big-idea-link-text p { font-size: 13px; color: var(--text); line-height: 1.8; }
.big-idea-link-text p em { font-style: normal; color: var(--primary); font-weight: 700; }
.big-idea-link-text .btn { margin-top: 8px; }

/* ===== v57 大概念（首页导览条）===== */
.big-idea-band {
  margin: 26px 0; padding: 24px; border-radius: var(--radius-lg);
  background: linear-gradient(135deg, rgba(99,102,241,.07), rgba(16,185,129,.05) 55%, rgba(245,158,11,.06));
  border: 1px solid var(--border);
}
.big-idea-band-head h3 { font-size: 19px; color: var(--text); margin-top: 6px; }
.big-idea-band-head p { font-size: 13.5px; color: var(--text-light); line-height: 1.9; margin-top: 8px; max-width: 720px; }
.big-idea-band-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-top: 16px; }
.big-idea-band-item {
  padding: 14px; border-radius: var(--radius); background: var(--card-bg);
  border: 1px solid var(--border); border-top: 3px solid var(--bi-color, var(--primary));
  box-shadow: var(--shadow);
}
.big-idea-band-item .big-idea-icon { font-size: 22px; }
.big-idea-band-item b { display: block; font-size: 14px; color: var(--text); margin-top: 6px; }
.big-idea-band-item p { font-size: 12px; color: var(--text-light); line-height: 1.7; margin-top: 5px; }

/* ===== v57 问题银行提示 ===== */
.hook-q-hint { font-size: 12px; color: var(--text-muted); margin-top: 8px; line-height: 1.7; }

/* ===== v58 老师布置的任务 + 批改通知铃 ===== */
.bell-btn { position: relative; border: none; background: transparent; font-size: 20px;
  cursor: pointer; padding: 6px; line-height: 1; color: inherit; border-radius: 8px; }
.bell-btn:hover { background: var(--border); }
.bell-badge { position: absolute; top: -2px; right: -4px; min-width: 16px; height: 16px;
  padding: 0 4px; border-radius: 9px; background: #ef4444; color: #fff;
  font-size: 12px; font-weight: 700; line-height: 16px; text-align: center; }

.teacher-task-cards { position: relative; }
.teacher-task-cards .task-title { font-size: 16px; margin: 4px 0 6px; color: var(--text); }
.teacher-task-cards .task-desc { font-size: 13px; color: var(--text-light); line-height: 1.7; margin: 0 0 8px; }
.tt-meta-row { display: flex; gap: 12px; flex-wrap: wrap; align-items: center;
  font-size: 12px; color: var(--text-muted); margin-bottom: 10px; }
.tt-actions { display: flex; gap: 10px; margin-top: 10px; }
.tt-meta { font-size: 13px; color: var(--text-light); margin-top: 6px; }
.tt-done { font-size: 14px; color: #059669; font-weight: 600; margin-top: 6px; }
.tt-progress { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.tt-progress-track { flex: 1; height: 8px; border-radius: 4px; background: var(--border); overflow: hidden; }
.tt-progress-fill { height: 100%; background: linear-gradient(90deg, #3b82f6, #22d3ee); border-radius: 4px;
  transition: width .3s ease; }
.tt-progress-label { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
.tt-phases { display: flex; gap: 6px; margin-top: 10px; }
.tt-phase { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; background: var(--card-bg); border: 1px solid var(--border); font-size: 15px;
  opacity: .45; filter: grayscale(.6); }
.tt-phase.done { opacity: 1; filter: none; background: #ecfdf5; border-color: #34d399; }
.tt-phase.cur { opacity: 1; filter: none; border-color: #3b82f6;
  box-shadow: 0 0 0 3px rgba(59,130,246,.15); }

.notify-list { display: flex; flex-direction: column; gap: 10px; max-height: 340px; overflow: auto; }
.notify-row { padding: 10px 12px; border-radius: var(--radius, 12px);
  background: var(--card-bg); border: 1px solid var(--border); }
.notify-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 14px; }
.notify-body { font-size: 13px; color: var(--text-light); margin-top: 6px; line-height: 1.7; word-break: break-word; }

@media (max-width: 480px) {
  .tt-phases { gap: 4px; }
  .tt-phase { width: 28px; height: 28px; font-size: 13px; }
}

@media (max-width: 900px) {
  .big-idea-chips { grid-template-columns: 1fr; }
  .big-idea-band-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .lesson-placeholder { flex-direction: column; }
  .big-idea-band { padding: 16px; }
  .big-idea-band-grid { grid-template-columns: 1fr; }
}

/* ===== v60 班级日志（老师专属）===== */
.clg-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin: 16px 0 22px; }
.clg-stat {
  background: linear-gradient(135deg, #fff, #f8fafc);
  border: 1px solid var(--border); border-radius: var(--radius-lg);
  padding: 18px; text-align: center; box-shadow: var(--shadow);
}
.clg-stat-num { display: block; font-size: 28px; font-weight: 700; color: var(--primary); line-height: 1.2; }
.clg-stat-label { display: block; font-size: 13px; color: var(--text-light); margin-top: 4px; }
.clg-refresh-bar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.clg-fetched-at { font-size: 12.5px; color: var(--text-muted); }
.clg-grid { display: grid; grid-template-columns: 1fr; gap: 18px; }
.clg-card {
  background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius-lg);
  padding: 20px; box-shadow: var(--shadow);
}
.clg-card-head { display: flex; align-items: center; gap: 12px; padding-bottom: 14px; border-bottom: 1px dashed var(--border); }
.clg-avatar {
  width: 44px; height: 44px; border-radius: 50%; background: var(--bg);
  display: flex; align-items: center; justify-content: center; font-size: 24px; flex: 0 0 auto;
}
.clg-meta { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.clg-name { font-size: 16px; font-weight: 600; color: var(--text); }
.clg-sub { font-size: 12px; color: var(--text-muted); }
.clg-points { font-size: 14px; color: var(--primary); font-weight: 600; white-space: nowrap; }
.clg-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 14px 0; }
.clg-metric { text-align: center; padding: 10px 4px; background: var(--bg); border-radius: var(--radius); }
.clg-metric-num { display: block; font-size: 18px; font-weight: 700; color: var(--text); }
.clg-metric-l { display: block; font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.clg-progress {
  position: relative; height: 18px; border-radius: 9px; background: var(--bg);
  overflow: hidden; margin-bottom: 14px;
}
.clg-progress-fill { position: absolute; left: 0; top: 0; bottom: 0; background: linear-gradient(90deg, var(--primary), #10b981); transition: width .3s; }
.clg-progress span { position: absolute; left: 0; right: 0; top: 50%; transform: translateY(-50%); text-align: center; font-size: 12px; color: var(--text); line-height: 1; }
.clg-recent, .clg-note { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border); }
.clg-section-title { font-size: 13.5px; color: var(--text); font-weight: 600; margin-bottom: 8px; }
.clg-note-time { font-weight: normal; color: var(--text-muted); font-size: 12px; }
.clg-recent-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px dotted var(--border); font-size: 13px; }
.clg-recent-row:last-child { border-bottom: none; }
.clg-recent-content { flex: 1; min-width: 0; color: var(--text-light); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.clg-tag { padding: 2px 8px; border-radius: 10px; font-size: 12px; flex: 0 0 auto; }
.clg-tag-ok { background: #dcfce7; color: #166534; }
.clg-tag-wait { background: #fef3c7; color: #b45309; }
.clg-empty-line { font-size: 12.5px; color: var(--text-muted); padding: 6px 0; }
.clg-note-input { width: 100%; resize: vertical; min-height: 64px; font-size: 13px; }
.clg-note-actions { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; }
.clg-note-hint { font-size: 12px; color: var(--text-muted); }
.empty-tip { padding: 36px 24px; text-align: center; background: var(--bg); border-radius: var(--radius-lg); color: var(--text-light); font-size: 14px; border: 1px dashed var(--border); }
@media (max-width: 700px) {
  .clg-summary { grid-template-columns: 1fr; }
  .clg-metrics { grid-template-columns: repeat(2, 1fr); }
  .clg-card-head { flex-wrap: wrap; }
  .clg-points { width: 100%; text-align: right; }
}

/* ===== v66 国家免费好物 · 指明道路（学习资源页专区） ===== */
.se-guide { margin: 18px 0 26px; padding: 20px; background: linear-gradient(135deg, #fff7ed 0%, #eff6ff 100%); border: 1px solid #fde68a; border-radius: var(--radius-lg); }
.se-guide-head { display: flex; justify-content: space-between; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.se-guide-title { display: flex; align-items: flex-start; gap: 12px; min-width: 260px; }
.se-guide-flag { font-size: 30px; line-height: 1; }
.se-guide-title h3 { margin: 0 0 4px; font-size: 18px; color: #92400e; }
.se-guide-title p { margin: 0; font-size: 13px; color: var(--text-muted); max-width: 560px; }
.se-cta { white-space: nowrap; }
.se-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 16px; }
.se-step { background: rgba(255,255,255,.75); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; }
.se-step-icon { font-size: 24px; margin-bottom: 6px; }
.se-step h5 { margin: 0 0 6px; font-size: 14px; color: var(--text); }
.se-step p { margin: 0; font-size: 12.5px; line-height: 1.7; color: var(--text-muted); }
.se-sections { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 12px; margin-bottom: 16px; }
.se-section-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; text-decoration: none; color: inherit; transition: transform .18s ease, box-shadow .18s ease; }
.se-section-card:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(15,23,42,.10); }
.se-section-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.se-section-icon { font-size: 22px; }
.se-section-tag { font-size: 12px; padding: 2px 8px; border-radius: 999px; background: #fee2e2; color: #b91c1c; font-weight: 600; }
.se-section-card h5 { margin: 0 0 6px; font-size: 14.5px; color: var(--text); }
.se-section-card p { margin: 0 0 10px; font-size: 12.5px; line-height: 1.65; color: var(--text-muted); flex: 1; }
.se-section-go { font-size: 12.5px; font-weight: 700; color: #2563eb; }
.se-tips { background: rgba(255,255,255,.75); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; margin-bottom: 10px; }
.se-tips h5 { margin: 0 0 10px; font-size: 14px; color: var(--text); }
.se-tips ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 18px; }
.se-tips li { font-size: 12.5px; line-height: 1.7; color: var(--text-muted); display: flex; gap: 8px; align-items: baseline; }
.se-tips li b { flex-shrink: 0; color: var(--text); font-size: 12.5px; }
.se-tips li span { flex: 1; }
.se-note { margin: 0; font-size: 12px; color: var(--text-light); line-height: 1.7; }
@media (max-width: 760px) {
  .se-guide { padding: 16px; }
  .se-guide-head { flex-direction: column; align-items: stretch; }
  .se-cta { text-align: center; }
  .se-steps { grid-template-columns: 1fr; }
  .se-tips ul { grid-template-columns: 1fr; }
}

/* ===== v66.5 学习资源页 · 云端研学入口行 ===== */
.se-study-entry { font-size: 13px; padding: 10px 14px; margin-bottom: 10px; background: #fffbeb; border: 1px dashed #fcd34d; border-radius: var(--radius); }
.se-study-entry a { color: #b45309; font-weight: 700; text-decoration: none; }
.se-study-entry a:hover { text-decoration: underline; }

/* ===== v67 云端研学页 ===== */
.st-banner { display: flex; gap: 14px; align-items: flex-start; margin: 0 0 22px; padding: 20px; background: linear-gradient(135deg, #ecfeff 0%, #f0f9ff 100%); border: 1px solid #a5f3fc; border-radius: var(--radius-lg); }
.st-banner-icon { font-size: 34px; line-height: 1; }
.st-banner-body { flex: 1; min-width: 240px; }
.st-banner-body h3 { margin: 0 0 8px; font-size: 17px; color: #155e75; }
.st-banner-body p { margin: 0 0 12px; font-size: 13px; line-height: 1.8; color: var(--text-muted); }
.st-banner-body p b { color: #0e7490; }
.st-banner-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.st-cat { margin-bottom: 24px; }
.st-cat-title { display: flex; align-items: baseline; gap: 8px; margin: 0 0 12px; font-size: 16px; color: var(--text); }
.st-cat-title span { font-size: 20px; }
.st-cat-title small { font-size: 12px; font-weight: 400; color: var(--text-light); }
.st-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }
.st-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); padding: 14px; transition: transform .18s ease, box-shadow .18s ease; }
.st-card:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(15,23,42,.10); }
.st-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 6px; }
.st-card-head h5 { margin: 0; font-size: 14.5px; line-height: 1.5; color: var(--text); }
.st-place { flex-shrink: 0; font-size: 12px; color: var(--text-light); white-space: nowrap; }
.st-brief { margin: 0 0 6px; font-size: 12.5px; line-height: 1.65; color: var(--text-muted); }
.st-ask { margin: 0 0 10px; font-size: 12.5px; line-height: 1.65; color: #b45309; background: #fffbeb; border-radius: 8px; padding: 6px 9px; }
.st-card-actions { margin-top: auto; display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; }
.st-link { font-size: 12.5px; color: #2563eb; text-decoration: none; font-weight: 600; }
.st-link:hover { text-decoration: underline; }
@media (max-width: 700px) {
  .st-banner { flex-direction: column; }
  .st-grid { grid-template-columns: 1fr; }
}

/* ===== 营养餐计划（v69）：四季食养 · 时令蔬果 · 酸甜辣口味调节 ===== */
.nutrition-page { margin-top: 28px; padding-top: 24px; border-top: 2px dashed var(--border); }
.nutrition-head { --nsc: #10b981; }
.nutrition-head h2 { color: var(--text); }
.nutrition-controls { display: flex; flex-direction: column; gap: 12px; margin: 18px 0; align-items: flex-start; }
.n-ctrl { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.n-ctrl-label { font-size: 12px; font-weight: 800; color: var(--text-light); letter-spacing: .4px; min-width: 86px; }
.n-tabs { display: flex; flex-wrap: wrap; gap: 8px; }
.nutrition-tab { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 2px; border: 1px solid var(--border); background: #fff; border-radius: 12px; padding: 8px 14px; cursor: pointer; font-size: 13.5px; font-weight: 800; color: var(--text); transition: all .18s ease; }
.nutrition-tab small { font-size: 12px; font-weight: 500; color: var(--text-light); }
.nutrition-tab:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(15,23,42,.08); }
.nutrition-tab.on { background: var(--nsc); border-color: var(--nsc); color: #fff; box-shadow: 0 8px 20px rgba(15,23,42,.14); }
.nutrition-tab.on small { color: rgba(255,255,255,.85); }
.n-tastes { display: flex; flex-wrap: wrap; gap: 8px; }
.nutrition-taste { border: 1px solid var(--border); background: #fff; border-radius: 999px; padding: 7px 15px; cursor: pointer; font-size: 13px; font-weight: 700; color: var(--text); transition: all .18s ease; }
.nutrition-taste:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgba(15,23,42,.08); }
.nutrition-taste.on { background: #1e293b; border-color: #1e293b; color: #fff; }
.nutrition-taste-tip { width: 100%; max-width: 860px; background: #f8fafc; border-left: 4px solid #10b981; border-radius: 10px; padding: 10px 14px; font-size: 12.5px; line-height: 1.7; color: var(--text-muted); }
.nutrition-taste-tip b { color: var(--text); margin-right: 6px; }
.n-season-banner { display: flex; gap: 16px; align-items: flex-start; background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); border: 1px solid var(--border); border-left: 6px solid var(--nsc); border-radius: 16px; padding: 18px 20px; margin-bottom: 20px; }
.n-season-icon { font-size: 42px; line-height: 1; }
.n-season-body { flex: 1; min-width: 0; }
.n-season-title { font-size: 17px; font-weight: 900; color: var(--text); margin-bottom: 6px; }
.n-season-foods, .n-season-soup, .n-season-routine { margin: 4px 0; font-size: 13px; line-height: 1.7; color: var(--text-muted); }
.n-season-foods b, .n-season-soup b, .n-season-routine b { color: var(--text); }
.n-block-title { display: flex; align-items: center; gap: 8px; margin: 18px 0 12px; font-size: 15px; font-weight: 800; color: var(--text); }
.n-months-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.n-month { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; box-shadow: 0 2px 10px rgba(15,23,42,.04); transition: transform .18s ease, box-shadow .18s ease; }
.n-month:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(15,23,42,.10); }
.n-month h5 { margin: 0 0 6px; font-size: 14px; font-weight: 800; color: var(--nsc, #10b981); }
.n-month p { margin: 0; font-size: 12.5px; line-height: 1.75; color: var(--text-muted); }
.n-weektable { border: 1px solid var(--border); border-radius: 14px; overflow: hidden; background: #fff; }
.n-weekhead, .n-weekrow { display: grid; grid-template-columns: 64px 1fr 1fr 1fr 1fr; gap: 0; }
.n-weekhead { background: #f1f5f9; font-weight: 800; font-size: 12px; color: var(--text); }
.n-weekhead .n-day, .n-weekhead .n-cell { padding: 10px 12px; border-bottom: 1px solid var(--border); }
.n-weekhead .n-day { color: var(--text-light); }
.n-weekrow { border-top: 1px solid var(--border); }
.n-weekrow:nth-child(odd) { background: #fbfcfe; }
.n-weekrow .n-day { font-weight: 800; font-size: 12.5px; color: var(--text); display: flex; align-items: center; justify-content: center; background: #f8fafc; padding: 10px 6px; border-right: 1px solid var(--border); }
.n-weekrow .n-cell { padding: 9px 12px; font-size: 12px; line-height: 1.65; color: var(--text-muted); border-right: 1px solid var(--border); min-width: 0; }
.n-weekrow .n-cell:last-child { border-right: none; position: relative; }
.n-weekrow .n-cell b { color: var(--text); font-size: 12px; margin-right: 5px; }
.n-tag { display: inline-block; margin-top: 4px; font-size: 12px; font-weight: 700; color: #fff; background: var(--nsc, #10b981); border-radius: 999px; padding: 2px 8px; margin-left: 6px; }
.n-weeknote { margin-top: 10px; font-size: 12px; color: var(--text-light); line-height: 1.7; }
.n-today-card { background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%); border: 1px solid var(--border); border-left: 6px solid var(--nsc); border-radius: 16px; padding: 18px 20px; }
.n-today-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 10px; }
.n-today-head span { font-size: 16px; font-weight: 900; color: var(--text); }
.n-today-head em { font-style: normal; font-size: 12px; font-weight: 700; color: var(--nsc, #10b981); background: rgba(15,23,42,.05); border-radius: 999px; padding: 3px 10px; }
.n-today-meals p { margin: 6px 0; font-size: 13px; line-height: 1.7; color: var(--text-muted); }
.n-today-meals b { color: var(--text); font-size: 12px; display: inline-block; min-width: 44px; }
.n-today-points { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border); display: flex; flex-direction: column; gap: 6px; }
.n-today-points b { font-size: 12.5px; color: var(--text); margin-bottom: 2px; }
.n-today-points span { font-size: 12px; color: var(--text-muted); padding-left: 12px; position: relative; }
.n-today-points span::before { content: "✦"; position: absolute; left: 0; color: var(--nsc, #10b981); }
.n-today-en { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 8px; }
.n-today-en span { font-size: 12px; font-weight: 700; color: #2563eb; background: #eff6ff; border-radius: 999px; padding: 4px 11px; }
.nutrition-disclaimer { margin-top: 16px; font-size: 12px; line-height: 1.7; color: var(--text-light); background: #fffbeb; border: 1px solid #fde68a; border-radius: 10px; padding: 10px 14px; }
@media (max-width: 880px) {
  .n-weekhead, .n-weekrow { grid-template-columns: 52px 1fr 1fr; }
  .n-weekhead .n-cell:nth-child(4), .n-weekrow .n-cell:nth-child(4) { display: none; }
}
@media (max-width: 560px) {
  .n-weekhead, .n-weekrow { grid-template-columns: 46px 1fr; }
  .n-weekhead .n-cell:nth-child(3), .n-weekrow .n-cell:nth-child(3),
  .n-weekhead .n-cell:nth-child(4), .n-weekrow .n-cell:nth-child(4),
  .n-weekhead .n-cell:nth-child(5), .n-weekrow .n-cell:nth-child(5) { display: none; }
  .n-season-banner { flex-direction: column; gap: 8px; }
  .nutrition-tab { padding: 7px 11px; font-size: 12.5px; }
  .n-month { padding: 11px 13px; }
}

/* ============================================================
   v73 · 关于我们 ——「教育公平」区块样式
   内容源：D:\output\探究学堂-教育公平报告.html（本页为精华版）
   配色沿用站点主色（--primary 靛蓝），红/绿仅作语义强调
   ============================================================ */

/* 四段因果链 */
.eq-chain { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-top:8px; }
@media (max-width:900px){ .eq-chain{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .eq-chain{ grid-template-columns:1fr; } }
.eq-chain-item{
  position:relative; padding:16px 15px; border-radius:14px;
  background:#fff; border:1px solid #eef2f7;
  box-shadow:0 6px 18px -12px rgba(15,23,42,.16);
}
.eq-chain-item::after{
  content:"\2192"; position:absolute; right:-13px; top:50%; transform:translateY(-50%);
  color:#94a3b8; font-size:15px; font-weight:700;
}
.eq-chain-item:last-child::after{ display:none; }
@media (max-width:900px){ .eq-chain-item::after{ display:none; } }
.eq-chain-no{
  display:inline-grid; place-items:center; width:26px; height:26px; border-radius:50%;
  background:var(--primary); color:#fff; font-size:12px; font-weight:800; margin-bottom:9px;
}
.eq-chain-item b{ display:block; font-size:14.5px; font-weight:800; color:#0f172a; margin-bottom:5px; }
.eq-chain-item p{ font-size:12.5px; line-height:1.7; color:var(--text-light); margin:0; }
/* 第二段（痛点）与第四段（免费）做语义强调 */
.eq-chain-item.eq-chain-gap{ border-color:#fbd5d5; background:linear-gradient(160deg,#fff7f6,#fff); }
.eq-chain-item.eq-chain-gap .eq-chain-no{ background:#dc2626; }
.eq-chain-item.eq-chain-end{ border-color:#cdeada; background:linear-gradient(160deg,#f4fdf8,#fff); }
.eq-chain-item.eq-chain-end .eq-chain-no{ background:var(--success); }

/* 国家数字 */
.eq-stats{ display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin-top:20px; }
@media (max-width:900px){ .eq-stats{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:520px){ .eq-stats{ grid-template-columns:repeat(2,1fr); } }
.eq-stat{
  text-align:center; padding:15px 10px; border-radius:13px;
  background:linear-gradient(160deg,#eef2ff,#f8fafc); border:1px solid #e0e7ff;
}
.eq-stat b{
  display:block; font-size:23px; font-weight:800; color:var(--primary-dark);
  line-height:1.2; letter-spacing:-.01em;
}
.eq-stat b small{ font-size:.48em; font-weight:700; margin-left:2px; }
.eq-stat span{ display:block; font-size:12px; color:var(--text-light); margin-top:7px; line-height:1.55; }

/* 官方引语 */
.eq-quote{
  margin:20px 0 0; padding:18px 20px; border-left:3px solid var(--primary);
  background:linear-gradient(120deg,#f8fafc,#fff); border-radius:0 13px 13px 0;
}
.eq-quote p{ font-size:13.5px; line-height:1.95; color:var(--text); margin:0; }
.eq-quote p b{ color:var(--primary-dark); }
.eq-quote cite{ display:block; font-style:normal; font-size:12px; color:var(--text-muted); margin-top:11px; }

/* 最后一公里：两栏对比 */
.eq-vs{ display:grid; grid-template-columns:1fr 54px 1fr; gap:0; align-items:stretch; margin-top:20px; }
@media (max-width:760px){ .eq-vs{ grid-template-columns:1fr; gap:12px; } }
.eq-vs-card{ padding:17px 18px; border-radius:14px; }
.eq-vs-ok{ background:linear-gradient(160deg,#f0fdf5,#fff); border:1px solid #cdeada; }
.eq-vs-no{ background:linear-gradient(160deg,#fff6f5,#fff); border:1px solid #f6d5d1; }
.eq-vs-tag{
  display:inline-block; font-size:12px; font-weight:800; letter-spacing:.04em;
  padding:3px 10px; border-radius:100px; margin-bottom:11px;
}
.eq-vs-ok .eq-vs-tag{ background:#d6f5e5; color:#0b7a4b; }
.eq-vs-no .eq-vs-tag{ background:#fbdcd8; color:#b0271f; }
.eq-vs-card > b{ display:block; font-size:14px; font-weight:800; color:#0f172a; margin-bottom:9px; }
.eq-vs-card ul{ list-style:none; margin:0; padding:0; }
.eq-vs-card li{ position:relative; font-size:12.5px; line-height:1.85; color:var(--text-light); padding-left:15px; }
.eq-vs-card li::before{
  content:""; position:absolute; left:2px; top:.72em; width:5px; height:5px;
  border-radius:50%; background:currentColor; opacity:.4;
}
.eq-vs-mid{ display:grid; place-items:center; font-weight:800; font-size:14px; color:#94a3b8; letter-spacing:.05em; }
@media (max-width:760px){ .eq-vs-mid{ height:24px; } }

/* 我们的答案：三个数字 */
.eq-answer{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:20px; }
@media (max-width:760px){ .eq-answer{ grid-template-columns:1fr; } }
.eq-answer-item{
  display:flex; align-items:center; gap:14px; padding:16px 17px;
  background:#fff; border:1px solid #eef2f7; border-radius:14px;
}
.eq-answer-item b{
  flex:0 0 auto; min-width:56px; text-align:center; font-size:26px; font-weight:800;
  color:var(--primary); line-height:1.1; letter-spacing:-.02em;
}
.eq-answer-item b small{ font-size:.42em; font-weight:700; margin-left:2px; }
.eq-answer-item span{ font-size:12.5px; line-height:1.75; color:var(--text-light); }

/* 为什么是现在 */
.eq-now{
  margin-top:20px; padding:17px 19px; border-radius:14px;
  background:linear-gradient(120deg,#fffbeb,#fff); border:1px solid #fde9c8;
}
.eq-now-tag{
  display:inline-block; font-size:12px; font-weight:800; letter-spacing:.06em;
  color:#92400e; background:#fde9c8; padding:3px 10px; border-radius:100px; margin-bottom:10px;
}
.eq-now p{ font-size:13.5px; line-height:1.95; color:var(--text); margin:0; }
.eq-now p b{ color:#92400e; }

/* 永久免费承诺 */
.eq-free{
  margin-top:20px; padding:19px 20px; border-radius:14px;
  background:linear-gradient(120deg,#f0f5ff,#f8fafc); border:1px solid #dbe4f7;
  display:flex; gap:15px; align-items:flex-start;
}
@media (max-width:520px){ .eq-free{ flex-direction:column; gap:11px; } }
.eq-free-badge{
  flex:0 0 auto; display:inline-block; font-size:12.5px; font-weight:800; letter-spacing:.05em;
  color:#fff; background:var(--primary); padding:6px 14px; border-radius:100px; white-space:nowrap;
}
.eq-free p{ font-size:13.5px; line-height:1.95; color:var(--text); margin:0; }
.eq-free p b{ color:var(--primary-dark); }

/* ============================================================
   v80 · 竞赛与升学：奥数/物理/化学 免费自学指路
   每科 = 赛程 + 学段阶梯 + 学习路径 + 免费资源 + 适配信号
   ============================================================ */
.oly-free-banner{
  margin: 0 0 20px; padding: 14px 16px; border-radius: var(--radius);
  background: linear-gradient(160deg, #eef2ff, #f8fafc);
  border: 1px solid #e0e7ff; border-left: 4px solid var(--primary);
  font-size: 13.5px; line-height: 1.85; color: var(--text-light); text-align: left;
}
.oly-free-banner b{ color: var(--primary-dark); }

.oly-subject{
  margin-bottom: 26px; padding: 20px 20px 18px; border-radius: var(--radius-lg);
  background: var(--card-bg); border: 1px solid var(--border); box-shadow: var(--shadow);
  text-align: left; overflow: hidden;
}
.oly-head{ display: flex; align-items: center; gap: 14px; padding-bottom: 14px; border-bottom: 1px dashed var(--border); }
.oly-head-icon{
  flex: 0 0 auto; width: 52px; height: 52px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center; font-size: 26px;
  background: linear-gradient(135deg, #6366f1, #818cf8); box-shadow: 0 6px 14px rgba(79,70,229,.22);
}
.oly-subject[data-sub="physics"] .oly-head-icon{ background: linear-gradient(135deg, #0891b2, #22d3ee); box-shadow: 0 6px 14px rgba(6,182,212,.22); }
.oly-subject[data-sub="chemistry"] .oly-head-icon{ background: linear-gradient(135deg, #059669, #34d399); box-shadow: 0 6px 14px rgba(16,185,129,.22); }
.oly-head-main{ flex: 1; min-width: 0; }
.oly-head-main h4{ font-size: 18px; color: var(--text); margin: 0 0 4px; }
.oly-head-org{ font-size: 12.5px; color: var(--text-muted); }
.oly-head-org a{ color: var(--primary); text-decoration: none; font-weight: 600; }
.oly-head-org a:hover{ text-decoration: underline; }

.oly-race{ margin-top: 14px; padding: 13px 14px; border-radius: var(--radius); background: #f8fafc; border: 1px solid var(--border); }
.oly-race-title{ font-size: 13.5px; font-weight: 700; color: var(--primary-dark); margin-bottom: 10px; }
.oly-race-chain{ display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.oly-race-node{
  font-size: 12px; line-height: 1.5; color: var(--text); background: #fff;
  border: 1px solid #e0e7ff; border-radius: 8px; padding: 5px 9px; max-width: 100%;
}
.oly-race-arrow{ color: var(--primary-light); font-weight: 700; font-size: 13px; }
.oly-race-note{ margin-top: 10px; font-size: 12.5px; line-height: 1.8; color: var(--text-light); }

.oly-two{ display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 16px; }
.oly-col-title{ font-size: 13.5px; font-weight: 700; color: var(--primary-dark); margin-bottom: 9px; }
.oly-ladder-row{ display: flex; gap: 9px; padding: 7px 0; border-bottom: 1px dashed #eef2f7; }
.oly-ladder-row:last-child{ border-bottom: none; }
.oly-ladder-g{
  flex: 0 0 auto; font-size: 12px; font-weight: 700; color: #fff; background: var(--primary);
  border-radius: 100px; padding: 3px 10px; height: fit-content; white-space: nowrap;
}
.oly-ladder-d{ font-size: 12.5px; line-height: 1.75; color: var(--text-light); }
.oly-path-row{
  font-size: 12.5px; line-height: 1.8; color: var(--text-light);
  padding: 7px 11px; margin-bottom: 7px; border-radius: 9px; background: #f8fafc; border: 1px solid var(--border);
}

.oly-res-grid{ display: grid; grid-template-columns: repeat(auto-fill, minmax(268px, 1fr)); gap: 12px; }
.oly-res-card{
  padding: 13px 14px; border-radius: var(--radius); background: #fff;
  border: 1px solid var(--border); transition: transform .25s ease, box-shadow .25s ease;
}
.oly-res-card:hover{ transform: translateY(-3px); box-shadow: var(--shadow); border-color: #c7d2fe; }
.oly-res-top{ display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.oly-res-top a{ font-size: 13.5px; font-weight: 700; color: var(--primary-dark); text-decoration: none; }
.oly-res-top a:hover{ text-decoration: underline; }
.oly-res-tag{
  flex: 0 0 auto; font-size: 12px; font-weight: 700; color: var(--primary);
  background: #eef2ff; border-radius: 100px; padding: 2px 8px; white-space: nowrap;
}
.oly-res-desc{ font-size: 12px; line-height: 1.7; color: var(--text-muted); margin-bottom: 8px; }
.oly-res-guide{
  padding: 9px 11px; border-radius: 10px; font-size: 12px; line-height: 1.75;
  color: var(--text-light); background: linear-gradient(160deg, #eef2ff, #f8fafc); border: 1px solid #e0e7ff;
}
.oly-res-guide b{ color: var(--primary-dark); }

.oly-check{
  margin-top: 15px; padding: 12px 14px; border-radius: var(--radius);
  background: #ecfdf5; border: 1px solid #a7f3d0;
  font-size: 12.5px; line-height: 1.85; color: #065f46;
}
.oly-check b{ color: #047857; }

.find-list{ display: flex; flex-direction: column; gap: 11px; }
.find-step{
  display: flex; gap: 13px; align-items: flex-start; padding: 14px 16px; border-radius: var(--radius);
  background: var(--card-bg); border: 1px solid var(--border); box-shadow: var(--shadow); text-align: left;
}
.find-n{
  flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 800; color: #fff; background: var(--primary);
}
.find-main{ flex: 1; min-width: 0; }
.find-t{ font-size: 14.5px; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.find-d{ font-size: 13px; line-height: 1.8; color: var(--text-light); }

@media (max-width: 768px){
  .oly-two{ grid-template-columns: 1fr; }
  .oly-subject{ padding: 16px 14px 14px; }
  .oly-head-icon{ width: 44px; height: 44px; font-size: 22px; }
  .oly-head-main h4{ font-size: 16.5px; }
  .oly-res-grid{ grid-template-columns: 1fr; }
  .oly-race-node{ font-size: 12px; }
}

/* ===== v81 · 「AI 怎么用」AI 素养自学 + AI 助手合规增强（身份披露/情绪引导/休息提醒） ===== */
.ai-lit-grid{ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.ai-lit-card{ display: flex; flex-direction: column; gap: 2px; }
.ai-lit-card[data-stage="know"]{ border-top: 3px solid #6366f1; }
.ai-lit-card[data-stage="use"]{ border-top: 3px solid #0d9488; }
.ai-lit-card[data-stage="create"]{ border-top: 3px solid #16a34a; }
.ai-lit-lead{ display: block; flex: 1 1 100%; margin-top: 2px; font-size: 12px; font-weight: 400; color: var(--text-muted); }
.ai-lit-item{ padding: 10px 0 2px; border-top: 1px dashed var(--border); }
.ai-lit-item-head{ display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 4px; flex-wrap: wrap; }
.ai-lit-item-head a{ font-size: 13.5px; font-weight: 700; color: var(--primary-dark); text-decoration: none; }
.ai-lit-item-head a:hover{ text-decoration: underline; }
.ai-lit-name{ font-size: 13.5px; font-weight: 700; color: var(--text); }

/* ===== v82 · 教师用具箱（探究学堂自研模板卡，可复制可打印） ===== */
.tkit-banner{
  padding:13px 16px; border-radius:var(--radius); margin-bottom:6px;
  background:linear-gradient(160deg,#eef2ff,#f8fafc); border:1px solid #c7d2fe;
  font-size:13px; line-height:1.85; color:var(--text-light);
}
.tkit-banner b{ color:var(--primary-dark); }
.tkit-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:14px; }
.tkit-card{
  display:flex; flex-direction:column; padding:16px 18px; border-radius:var(--radius);
  background:#fff; border:1px solid var(--border); transition:transform .25s ease, box-shadow .25s ease;
}
.tkit-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow); border-color:#c7d2fe; }
.tkit-top{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; flex-wrap:wrap; }
.tkit-top b{ font-size:15px; color:var(--text); }
.tkit-tag{
  flex:0 0 auto; font-size:12px; font-weight:700; color:var(--primary);
  background:#eef2ff; border-radius:100px; padding:2px 8px; white-space:nowrap;
}
.tkit-use{ font-size:12.5px; line-height:1.8; color:var(--text-muted); margin-bottom:10px; }
.tkit-points{ display:flex; flex-direction:column; gap:5px; margin-bottom:10px; }
.tkit-point{ display:flex; gap:8px; align-items:flex-start; font-size:12px; line-height:1.7; }
.tkit-pk{
  flex:0 0 auto; min-width:76px; font-weight:700; color:var(--primary-dark);
  background:#f8fafc; border:1px solid #e2e8f0; border-radius:6px; padding:1px 6px; text-align:center;
}
.tkit-pv{ flex:1; min-width:0; color:var(--text-light); }
.tkit-tip{
  padding:9px 11px; border-radius:10px; font-size:12px; line-height:1.75; margin-bottom:12px;
  color:var(--text-light); background:linear-gradient(160deg,#f0fdfa,#f8fafc); border:1px solid #ccfbf1;
}
.tkit-tip b{ color:#0f766e; }
.tkit-copy{
  margin-top:auto; align-self:flex-start; cursor:pointer;
  padding:7px 14px; border-radius:100px; border:1px solid var(--primary);
  background:var(--primary); color:#fff; font-size:12.5px; font-weight:700;
  transition:background .2s ease, transform .2s ease;
}
.tkit-copy:hover{ background:var(--primary-dark); transform:translateY(-1px); }
@media (max-width:768px){
  .tkit-grid{ grid-template-columns:1fr; }
  .tkit-pk{ min-width:64px; }
}
@media print{
  .tkit-copy{ display:none; }
  .tkit-card{ border-color:#cbd5e1; box-shadow:none; break-inside:avoid; }
}

/* ===== v85（2026-09-11 初始设备）：移动端可读性与点击热区 + 大字模式 ===== */

/* ---- 大字模式：一键放大全站（祖辈陪读 / 视力不便 / 低龄用户）----
   说明：全站字号以 px 硬编码为主，故用 zoom 统一缩放最稳妥；
   Chrome / Edge / Safari 全支持，Firefox 126+ 亦支持，不支持者自动退化为常规字号。 */
body.dazi{ zoom: 1.15; }
@media print{ body.dazi{ zoom: 1; } }

/* ---- 点击热区：移动端不小于 44px（WCAG 2.5.5 与主流平台设计指引通行值）---- */
@media (max-width: 768px){
  .nav-btn,
  .nav-tree-item,
  .nav-tree-trigger,
  .theme-action,
  .btn,
  .tkit-copy,
  .ai-quick-btn,
  .ai-send-btn,
  .read-btn-sm,
  .footer-link,
  .footer-pomo{
    min-height: 44px;
  }
  /* 页脚法律条款链接：撑开热区，避免家长在手机上点不中 */
  .footer-link{
    display: inline-flex; align-items: center; padding: 10px 6px;
  }
  /* 首页主行动按钮：字号与内边距同步放大，避免"点不中" */
  .theme-action{
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 15px; padding: 11px 20px;
  }
  .nav-tree-item{ font-size: 14px; }
  /* 移动端正文字号 14px、行距 1.85，适合小学生在手机上长时间阅读 */
  .view p, .view li{ font-size: 14px; line-height: 1.85; }
  /* 触控反馈更明显 */
  .nav-btn:active,
  .nav-tree-item:active,
  .theme-action:active,
  .tkit-copy:active,
  .ai-quick-btn:active{ opacity: .82; }
}

/* ---- 大字模式下的导航适配（菜单项略放大，避免与放大后的正文失衡）---- */
body.dazi .nav-tree-item{ font-size: 15px; }
body.dazi .nav-btn{ font-size: 16px; }

/* ===== v86（2026-09-11 初始设备）：科技教育专区导览 ===== */
.te-guide{
  margin: 22px 0 30px; padding: 22px 24px; border-radius: 16px;
  background: linear-gradient(160deg,#f0f9ff,#f8fafc); border: 1px solid #bae6fd;
}
.te-head{
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin-bottom: 18px;
}
.te-head h3{ font-size: 19px; color: #0c4a6e; margin-bottom: 6px; }
.te-head p{ font-size: 14px; color: var(--text-light); line-height: 1.75; max-width: 640px; }
.te-cta{ white-space: nowrap; }
.te-grid{
  display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px;
}
.te-card{
  background: #fff; border: 1px solid #e0f2fe; border-radius: 12px;
  padding: 16px 18px; display: flex; flex-direction: column;
}
.te-card-top{ display: flex; align-items: center; gap: 8px; font-size: 16px; color: #0c4a6e; margin-bottom: 4px; }
.te-icon{ font-size: 20px; }
.te-sub{ font-size: 12.5px; color: #0284c7; font-weight: 600; margin-bottom: 10px; }
.te-list{ list-style: none; padding: 0; margin: 0 0 12px; }
.te-list li{
  font-size: 13.5px; color: var(--text); line-height: 1.7;
  padding-left: 16px; position: relative;
}
.te-list li::before{ content: "·"; position: absolute; left: 4px; color: #38bdf8; font-weight: 700; }
.te-how{
  margin-top: auto; font-size: 12.5px; color: #075985;
  background: #f0f9ff; border-radius: 8px; padding: 9px 11px; line-height: 1.7;
}
@media (max-width: 768px){
  .te-guide{ padding: 18px 16px; }
  .te-grid{ grid-template-columns: 1fr; }
  .te-head{ flex-direction: column; }
}
@media print{
  .te-card{ break-inside: avoid; }
}

/* ===== v87（2026-09-11 初始设备）：家长专区 ===== */
.pz-promise{
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px; margin: 20px 0 28px;
}
.pz-promise-item{
  background: linear-gradient(160deg, #f0fdf4, #f8fafc); border: 1px solid #bbf7d0;
  border-radius: 14px; padding: 18px 20px; display: flex; flex-direction: column; gap: 6px;
}
.pz-promise-icon{ font-size: 24px; }
.pz-promise-item b{ font-size: 16px; color: #065f46; }
.pz-promise-item span{ font-size: 13.5px; color: var(--text-light); line-height: 1.75; }

.pz-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px; }
.pz-card{ background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 18px 20px; }
.pz-card-icon{ font-size: 24px; margin-bottom: 6px; }
.pz-card b{ font-size: 15.5px; display: block; margin-bottom: 6px; }
.pz-card p{ font-size: 13.5px; color: var(--text-light); line-height: 1.8; }

.pz-steps{ display: flex; flex-direction: column; gap: 12px; }
.pz-step{
  display: flex; gap: 16px; align-items: flex-start; background: #fff;
  border: 1px solid #e5e7eb; border-radius: 12px; padding: 16px 20px;
}
.pz-step-n{
  flex: none; width: 34px; height: 34px; border-radius: 50%;
  background: var(--primary); color: #fff; font-size: 16px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}
.pz-step b{ font-size: 15.5px; display: block; margin-bottom: 4px; }
.pz-step p{ font-size: 13.5px; color: var(--text-light); line-height: 1.75; }

.pz-cta{
  margin-top: 16px; padding: 14px 18px; border-radius: 12px;
  background: #fffbeb; border: 1px dashed #fcd34d;
  font-size: 14px; color: #92400e; line-height: 1.8;
}
.pz-cta a{ color: #b45309; font-weight: 700; text-decoration: underline; }

.pz-faq{ display: flex; flex-direction: column; gap: 10px; }
.pz-faq-item{ background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 16px 20px; }
.pz-faq-q{ font-size: 15px; font-weight: 600; display: flex; gap: 10px; align-items: flex-start; margin-bottom: 8px; }
.pz-faq-n{
  flex: none; width: 22px; height: 22px; border-radius: 6px;
  background: #eef2ff; color: var(--primary); font-size: 12.5px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}
.pz-faq-a{ font-size: 13.5px; color: var(--text-light); line-height: 1.85; padding-left: 32px; }

.pz-note{
  margin-top: 26px; padding: 20px 24px; border-radius: 14px;
  background: linear-gradient(160deg, #eef2ff, #f8fafc); border: 1px solid #c7d2fe;
  font-size: 14.5px; line-height: 1.9; color: #312e81;
}
@media (max-width: 768px){
  .pz-promise, .pz-grid{ grid-template-columns: 1fr; }
  .pz-faq-a{ padding-left: 0; }
  .pz-step{ gap: 12px; padding: 14px 16px; }
}
@media print{
  .pz-card, .pz-faq-item, .pz-step{ break-inside: avoid; }
}

/* ===== v88（2026-09-11 初始设备）：站内搜索 + 护眼打卡表 ===== */

/* ---- 站内搜索浮层 ---- */
.ss-modal{
  position: fixed; inset: 0; z-index: 9999; display: none;
  align-items: flex-start; justify-content: center;
  background: rgba(15, 23, 42, .45); padding: 8vh 16px 16px;
}
.ss-panel{
  width: 100%; max-width: 620px; background: #fff; border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, .28); overflow: hidden;
  display: flex; flex-direction: column; max-height: 74vh;
}
.ss-head{ display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-bottom: 1px solid #eef2f7; }
.ss-head-icon{ font-size: 18px; }
.ss-input{
  flex: 1; border: none; outline: none; background: transparent;
  font-size: 16px; color: var(--text); font-family: inherit;
}
.ss-close{
  flex: none; width: 32px; height: 32px; border: none; border-radius: 8px;
  background: #f1f5f9; color: #64748b; cursor: pointer; font-size: 14px;
}
.ss-close:hover{ background: #e2e8f0; }
.ss-list{ overflow-y: auto; padding: 8px; }
.ss-item{
  width: 100%; display: flex; align-items: center; gap: 12px; text-align: left;
  padding: 12px 14px; border: none; background: transparent; border-radius: 10px;
  cursor: pointer; font-family: inherit;
}
.ss-item:hover{ background: #f0f9ff; }
.ss-icon{ font-size: 20px; flex: none; }
.ss-text{ flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ss-text b{ font-size: 14.5px; color: var(--text); }
.ss-text i{ font-style: normal; font-size: 12.5px; color: var(--text-light); }
.ss-go{ flex: none; color: #94a3b8; font-size: 15px; }
.ss-empty{ padding: 28px 16px; text-align: center; color: var(--text-light); font-size: 14px; line-height: 2; }
.ss-empty span{ font-size: 12.5px; color: #94a3b8; }
/* v93：搜索结果分组（相关页面 / 具体内容）+ 内容类型标签 */
.ss-group-title{
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 12px 4px; font-size: 12px; font-weight: 700;
  color: #64748b; letter-spacing: .4px;
}
.ss-group-title .ss-count{ font-weight: 500; color: #94a3b8; font-size: 11.5px; }
.ss-kind{
  flex: none; font-size: 11px; color: #0891b2; background: #ecfeff;
  border: 1px solid #cffafe; border-radius: 999px; padding: 2px 8px;
  margin-right: 6px; white-space: nowrap;
}
.ss-hintline{ padding: 12px 14px 8px; font-size: 12px; color: #94a3b8; line-height: 1.7; }
/* v93：搜索结果跳转后，把命中的卡片高亮 2.6 秒，便于一眼找到 */
.search-hit{ animation: searchHit 2.6s ease; }
@keyframes searchHit{
  0%, 55%{ box-shadow: 0 0 0 3px rgba(14,165,233,.6); }
  100%{ box-shadow: none; }
}
.ss-foot{ padding: 10px 16px; border-top: 1px solid #eef2f7; font-size: 12px; color: #94a3b8; text-align: center; }

/* ---- 护眼打卡表 ---- */
.ec-rules{ display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; margin: 20px 0 26px; }
.ec-rule{ background: #fff; border: 1px solid #e5e7eb; border-radius: 12px; padding: 16px 18px; }
.ec-rule-icon{ font-size: 22px; margin-bottom: 6px; }
.ec-rule b{ font-size: 15px; display: block; margin-bottom: 5px; }
.ec-rule p{ font-size: 13px; color: var(--text-light); line-height: 1.75; }

.ec-board{ background: #fff; border: 1px solid #e5e7eb; border-radius: 16px; padding: 22px 24px; }
.ec-board-head{ display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 18px; }
.ec-board-head h3{ font-size: 18px; margin-bottom: 6px; }
.ec-actions{ display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.ec-dl-hint{ font-size: 12.5px; color: var(--text-light); margin-top: 10px; }
.ec-dl-hint a{ color: var(--primary); font-weight: 600; text-decoration: underline; }
.ec-fields{ font-size: 13.5px; color: var(--text-light); }
.ec-week{ margin-bottom: 16px; }
.ec-week-head{ display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.ec-week-head b{ font-size: 14.5px; color: var(--primary); }
.ec-week-head span{ font-size: 12.5px; color: var(--text-light); }
.ec-grid{ display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.ec-cell{
  border: 1.5px solid #a7f3d0; border-radius: 10px; padding: 8px 6px; background: #f0fdf4;
  display: flex; flex-direction: column; gap: 8px; min-height: 76px;
}
.ec-day{ font-size: 12.5px; font-weight: 700; color: #047857; }
.ec-checks{ display: flex; flex-direction: column; gap: 2px; }
/* v92：打卡项由静态 span 改为可点击按钮（原来只能打印出来用手勾） */
.ec-chk{
  display: flex; align-items: center; gap: 5px; width: 100%;
  background: none; border: none; padding: 3px 2px; margin: 0;
  font-family: inherit; font-size: 12px; color: #065f46;
  cursor: pointer; text-align: left; border-radius: 5px;
  transition: background .15s;
}
.ec-chk:hover{ background: rgba(5,150,105,.08); }
.ec-chk:active{ transform: scale(.97); }
.ec-chk-box{
  width: 12px; height: 12px; flex-shrink: 0; position: relative;
  border: 1.5px solid #34d399; border-radius: 3px; transition: all .15s;
}
.ec-chk.on .ec-chk-box{ background: #059669; border-color: #059669; }
.ec-chk.on .ec-chk-box::after{
  content: '✓'; position: absolute; left: 1px; top: -4px;
  color: #fff; font-size: 11px; font-weight: 700; line-height: 1;
}
.ec-chk.on .ec-chk-lb{ color: #047857; font-weight: 700; }
.ec-cell.done{ background: #dcfce7; border-color: #4ade80; }
/* v92：在线打卡进度区 */
.ec-progress{
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 12px;
  padding: 12px 16px; margin-bottom: 16px;
}
.ec-progress-text{ display: flex; flex-direction: column; gap: 1px; }
.ec-progress-text b{ font-size: 14px; color: #065f46; font-weight: 600; }
.ec-progress-text b span{ font-size: 19px; font-weight: 800; }
.ec-progress-sub{ font-size: 12px; color: #64748b; }
.ec-bar{ flex: 1; min-width: 110px; height: 8px; background: #dcfce7; border-radius: 999px; overflow: hidden; }
.ec-bar i{
  display: block; height: 100%; width: 0; border-radius: 999px;
  background: linear-gradient(90deg, #34d399, #059669); transition: width .35s ease;
}
.ec-reset{
  background: none; border: 1px solid #cbd5e1; color: #64748b;
  font-size: 12.5px; padding: 6px 12px; border-radius: 8px;
  cursor: pointer; font-family: inherit; transition: all .15s;
}
.ec-reset:hover{ border-color: #94a3b8; color: #475569; }
.ec-done-tip{ font-size: 13px; color: #059669; font-weight: 600; text-align: center; margin: -6px 0 12px; }
.ec-done-tip:empty{ display: none; }
/* v99：连续打卡（借鉴 Duolingo streak——损失厌恶驱动每日回访） */
.ec-streak{
  color: #ea580c; font-size: 13px; font-weight: 700;
  background: #fff7ed; border: 1px solid #fed7aa; border-radius: 999px;
  padding: 2px 9px; margin-left: 8px; white-space: nowrap; vertical-align: 2px;
}
/* v100：探究科技树 */
.tr-board{ background: #fff; border: 1px solid #e5e7eb; border-radius: 16px; padding: 22px 24px; }
.tr-top{ display: flex; gap: 26px; align-items: center; flex-wrap: wrap; }
.tr-tree{ flex: none; width: 300px; max-width: 100%; }
.tr-stat{ flex: 1; min-width: 230px; }
.tr-stat h3{ font-size: 21px; margin-bottom: 4px; }
.tr-stage-n{ font-size: 13px; color: #94a3b8; font-weight: 500; margin-left: 6px; }
.tr-total{ font-size: 14px; color: #475569; margin-bottom: 8px; }
.tr-total b{ font-size: 23px; color: #059669; }
.tr-bar{ height: 10px; background: #e2e8f0; border-radius: 99px; overflow: hidden; }
.tr-bar i{ display: block; height: 100%; background: linear-gradient(90deg,#34d399,#059669); border-radius: 99px; transition: width .4s ease; }
.tr-next{ font-size: 13.5px; color: #64748b; margin: 8px 0 10px; }
.tr-stat-rows{ display: flex; gap: 8px; flex-wrap: wrap; }
.tr-stat-rows span{ background: #f1f5f9; border-radius: 8px; padding: 4px 10px; font-size: 12.5px; color: #475569; }
.tr-h4{ font-size: 15.5px; color: #0f172a; margin: 22px 0 10px; }
.tr-branch{ margin-bottom: 14px; }
.tr-branch-head{ display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 4px; }
.tr-branch-name{ font-weight: 700; font-size: 14px; color: #334155; }
.tr-branch-lv{ font-size: 12px; font-weight: 700; color: #059669; }
.tr-branch-sub{ font-size: 12px; color: #94a3b8; margin-top: 4px; }
.tr-note{ font-size: 12.5px; color: #94a3b8; margin-top: 10px; }
.tr-ledger{ background: #f8fafc; border: 1px solid #eef2f7; border-radius: 12px; padding: 8px 14px; }
.tr-ledger-row{ display: flex; align-items: center; gap: 10px; padding: 7px 2px; border-bottom: 1px dashed #eef2f7; }
.tr-ledger-row:last-child{ border-bottom: none; }
.tr-ledger-icon{ flex: none; }
.tr-ledger-txt{ flex: 1; font-size: 13.5px; color: #334155; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tr-ledger-amt{ flex: none; font-weight: 700; color: #059669; font-size: 13px; }
@media (max-width: 768px){
  .tr-top{ flex-direction: column; }
  .tr-tree{ width: 220px; margin: 0 auto; }
  .tr-stat{ width: 100%; }
}
.ec-tips{
  margin-top: 6px; padding: 14px 16px; border-radius: 12px;
  background: #fffbeb; border: 1px dashed #fcd34d;
  font-size: 13.5px; color: #92400e; line-height: 1.85;
}
.ec-guide{
  margin-top: 24px; padding: 20px 22px; border-radius: 14px;
  background: linear-gradient(160deg, #f0f9ff, #f8fafc); border: 1px solid #bae6fd;
}
.ec-guide h3{ font-size: 16px; color: #0c4a6e; margin-bottom: 8px; }
.ec-guide p{ font-size: 13.5px; color: var(--text-light); line-height: 1.85; margin-bottom: 12px; }
.ec-note{ font-size: 12px !important; color: #94a3b8 !important; margin-top: 12px; margin-bottom: 0 !important; }

@media (max-width: 768px){
  /* v92：小屏改 4 列 —— 7 列时每格仅约 42px，「户外」会被挤成竖排；4 列后每格约 85px，标签完整可读 */
  /* v108（2026-10-13 体检修复）：4 列在 390px 下仍偏窄（每格约 85px，可读文字宽约 51px），
     「户外 2 小时」「睡前 1 小时不看屏幕」等长文案折行、格高被撑到 >22px（21/63 格）。
     移动端改 3 列：每格约 112px，长文案可单行放下；打印仍走桌面 7 列，不受影响。 */
  .ec-grid{ grid-template-columns: repeat(3, 1fr); gap: 6px; }
  .ec-cell{ min-height: 64px; padding: 8px 6px; }
  .ec-chk{ min-height: 32px; font-size: 12px; } /* 手指好点，且不低于全站 12px 字号基线 */
  .ec-board{ padding: 18px 16px; }
  .ec-progress{ padding: 10px 12px; gap: 10px; }
  .ss-panel{ max-height: 80vh; }
}
.ach-print-tip{ margin-top: 12px; font-size: 12.5px; color: var(--text-light); line-height: 1.8; }

@media print{
  .ec-print, .ec-dl-hint, .ss-modal, .nav, .nav-toggle, .ach-share-actions,
  .ai-fab, .pomodoro-fab, .scroll-progress{ display: none !important; }
  .ec-board, .ach-card, .ach-section{ border: none; }
  .ec-week, .ach-milestone{ break-inside: avoid; }
  .ec-cell{ background: #fff; }
  /* v92：打印时隐藏进度条与提示，但保留已打的勾（黑白打印也看得清） */
  .ec-done-tip{ display: none !important; }
  .ec-chk{ font-size: 11px !important; color: #000 !important; padding: 1px 0 !important; }
  .ec-chk-box{ border-color: #555 !important; }
  .ec-chk.on .ec-chk-box{ background: #333 !important; border-color: #333 !important; }
  .ec-chk.on .ec-chk-lb{ color: #000 !important; }
  .ec-cell.done{ background: #fff !important; border-color: #4ade80 !important; }
}

/* ====================== v105 AI 实战模块（AI 侦探 + AI 公约）====================== */
/* 主题色沿用六大主题之「人工智能」青色 #06b6d4；触控目标 ≥48px；打印仅在使用公约页生效 */

.ai-detect-rules, .ai-pact-lead{
  max-width: 760px; margin: 0 auto 20px; background: rgba(255,255,255,.72);
  border: 1px solid rgba(6,182,212,.25); border-radius: 16px; padding: 18px 22px;
  backdrop-filter: blur(10px); box-shadow: 0 6px 24px rgba(6,182,212,.08);
}
.ai-detect-rule-row, .ai-pact-lead-row{ display: flex; gap: 12px; align-items: flex-start; padding: 7px 0; }
.ai-detect-rule-row span, .ai-pact-lead-row span{ font-size: 20px; line-height: 1.5; flex: none; }
.ai-detect-rule-row p, .ai-pact-lead-row p{ font-size: 14px; color: var(--text-light); line-height: 1.8; }

.ai-detect-arena{ max-width: 760px; margin: 0 auto 20px; }
.ai-detect-welcome{
  text-align: center; background: linear-gradient(135deg, rgba(6,182,212,.12), rgba(59,130,246,.10));
  border: 1px solid rgba(6,182,212,.3); border-radius: 20px; padding: 36px 24px;
}
.ai-detect-badge{ width: 72px; height: 72px; margin: 0 auto 12px; display: flex; align-items: center; justify-content: center;
  font-size: 40px; background: rgba(255,255,255,.85); border-radius: 50%; box-shadow: 0 8px 24px rgba(6,182,212,.25); }
.ai-detect-welcome h3{ font-size: 20px; margin-bottom: 8px; }
.ai-detect-welcome p{ color: var(--text-light); font-size: 14px; margin-bottom: 18px; }

.ai-detect-progress{ height: 8px; background: rgba(6,182,212,.14); border-radius: 999px; overflow: hidden; margin-bottom: 12px; }
.ai-detect-progress-bar{ height: 100%; background: linear-gradient(90deg,#06b6d4,#3b82f6); border-radius: 999px; transition: width .35s ease; }
.ai-detect-meta{ display: flex; justify-content: space-between; font-size: 13px; color: var(--text-light); margin-bottom: 12px; }
.ai-detect-topic{ display: inline-block; font-size: 12.5px; font-weight: 700; color: #0e7490;
  background: rgba(6,182,212,.12); border: 1px solid rgba(6,182,212,.3); padding: 4px 14px; border-radius: 999px; margin-bottom: 12px; }
.ai-detect-content{
  font-size: 16.5px; line-height: 1.9; color: #0f172a; background: rgba(255,255,255,.85);
  border: 1.5px solid rgba(6,182,212,.35); border-radius: 16px; padding: 22px 24px; margin-bottom: 18px;
  box-shadow: 0 8px 28px rgba(6,182,212,.10);
}
.ai-detect-actions{ display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }
.ai-detect-actions .btn{ min-height: 48px; }

.ai-detect-verdict{ margin-top: 16px; }
.ai-detect-verdict-card{ border-radius: 16px; padding: 18px 20px; animation: aiPop .3s ease; }
.ai-detect-verdict-card.is-ok{ background: rgba(34,197,94,.10); border: 1.5px solid rgba(34,197,94,.45); }
.ai-detect-verdict-card.is-no{ background: rgba(245,158,11,.10); border: 1.5px solid rgba(245,158,11,.45); }
.ai-detect-verdict-head{ font-weight: 800; font-size: 15.5px; margin-bottom: 8px; }
.is-ok .ai-detect-verdict-head{ color: #15803d; }
.is-no .ai-detect-verdict-head{ color: #b45309; }
.ai-detect-clue{ font-size: 14px; color: var(--text-light); line-height: 1.8; margin-bottom: 8px; }
.ai-detect-en-tip{ font-size: 12.5px; color: #0e7490; margin-bottom: 14px; }
@keyframes aiPop{ from{ opacity: 0; transform: translateY(8px);} to{ opacity: 1; transform: none; } }

.ai-detect-result{ text-align: center; background: linear-gradient(135deg, rgba(255,255,255,.9), rgba(236,254,255,.9));
  border: 1.5px solid rgba(6,182,212,.35); border-radius: 20px; padding: 30px 24px; }
.ai-detect-result.is-pass{ border-color: rgba(34,197,94,.5); }
.ai-detect-result.is-try{ border-color: rgba(245,158,11,.5); }
.ai-detect-result-badge{ font-size: 44px; margin-bottom: 6px; }
.ai-detect-result h3{ font-size: 20px; margin-bottom: 6px; }
.ai-detect-score{ font-size: 15px; color: var(--text-light); margin-bottom: 10px; }
.ai-detect-score b{ font-size: 26px; color: #0891b2; }
.ai-detect-review{ text-align: left; background: rgba(255,255,255,.8); border: 1px solid var(--border); border-radius: 12px; padding: 14px 18px; margin: 14px 0; }
.ai-detect-review h4{ font-size: 14px; margin-bottom: 8px; color: #0e7490; }
.ai-detect-review li{ font-size: 13.5px; color: var(--text-light); line-height: 1.8; margin: 5px 0 5px 4px; }
.ai-detect-result .ai-detect-actions{ margin-top: 12px; }

.ai-detect-english{
  max-width: 760px; margin: 0 auto; background: rgba(255,255,255,.72);
  border: 1px dashed rgba(6,182,212,.4); border-radius: 16px; padding: 18px 22px;
}
.ai-detect-english h4{ font-size: 15px; margin-bottom: 10px; }
.ai-detect-en-words{ display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.ai-en-chip{ font-size: 12.5px; font-weight: 600; color: #0e7490; background: rgba(6,182,212,.10);
  border: 1px solid rgba(6,182,212,.28); padding: 5px 12px; border-radius: 999px; }
.ai-detect-en-line{ font-size: 13.5px; color: var(--text-light); }

/* AI 实战入口卡（主题详情页 + 趣味园地共用） */
.ai-lab-cards{ display: grid; grid-template-columns: 1fr 1fr; gap: 16px; max-width: 860px; margin-left: auto; margin-right: auto; }
.ai-lab-card{
  background: linear-gradient(150deg, rgba(6,182,212,.10), rgba(255,255,255,.85));
  border: 1.5px solid rgba(6,182,212,.3); border-radius: 18px; padding: 20px;
  box-shadow: 0 8px 26px rgba(6,182,212,.10); text-align: center;
}
.ai-lab-card-icon{ font-size: 34px; margin-bottom: 8px; }
.ai-lab-card h4{ font-size: 16px; margin-bottom: 6px; }
.ai-lab-card p{ font-size: 13px; color: var(--text-light); margin-bottom: 14px; line-height: 1.7; }
.ai-lab-card-page{ min-height: 190px; display: flex; flex-direction: column; justify-content: center; align-items: center; }
.ai-lab-badge{ display: inline-block; font-size: 11px; font-weight: 800; color: #fff; background: linear-gradient(135deg,#f43f5e,#f59e0b);
  padding: 2px 10px; border-radius: 999px; vertical-align: 3px; margin-left: 6px; }
@media (max-width: 640px){ .ai-lab-cards{ grid-template-columns: 1fr; } }

/* AI 公约表单 */
.ai-pact-form{ max-width: 760px; margin: 0 auto 20px; }
.ai-pact-group{ background: rgba(255,255,255,.78); border: 1px solid var(--border); border-radius: 16px; padding: 16px 18px; margin-bottom: 14px; backdrop-filter: blur(8px); }
.ai-pact-group-head{ display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.ai-pact-group-icon{ font-size: 22px; flex: none; }
.ai-pact-group-head h4{ font-size: 15.5px; }
.ai-pact-group-en{ font-size: 12px; color: #0e7490; }
.ai-pact-options{ display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
@media (max-width: 640px){ .ai-pact-options{ grid-template-columns: 1fr; } }
.ai-pact-option{
  display: flex; align-items: center; gap: 10px; padding: 11px 14px; min-height: 48px;
  background: rgba(248,250,252,.9); border: 1.5px solid var(--border); border-radius: 12px;
  cursor: pointer; transition: border-color .2s, background .2s; font-size: 13.5px; color: #1e293b;
}
.ai-pact-option:hover{ border-color: rgba(6,182,212,.55); }
.ai-pact-option:has(input:checked){ background: rgba(6,182,212,.08); border-color: #06b6d4; }
.ai-pact-option input{ width: 18px; height: 18px; accent-color: #06b6d4; flex: none; cursor: pointer; }
.ai-pact-actions{ display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 18px; }

/* 公约卡 */
.ai-pact-result{ max-width: 760px; margin: 0 auto 20px; }
.ai-pact-card{
  background: linear-gradient(160deg, #f0fdff 0%, #ffffff 55%, #ecfeff 100%);
  border: 2px solid rgba(6,182,212,.45); border-radius: 20px; padding: 26px 28px;
  box-shadow: 0 12px 36px rgba(6,182,212,.14); animation: aiPop .35s ease;
}
.ai-pact-card-head{ display: flex; align-items: center; gap: 14px; border-bottom: 2px dashed rgba(6,182,212,.35); padding-bottom: 14px; margin-bottom: 14px; }
.ai-pact-seal{
  width: 52px; height: 52px; flex: none; display: flex; align-items: center; justify-content: center;
  font-size: 26px; font-weight: 900; color: #fff; background: linear-gradient(135deg,#06b6d4,#0e7490);
  border-radius: 12px; box-shadow: 0 0 0 3px rgba(6,182,212,.22), 0 6px 18px rgba(6,182,212,.35);
}
.ai-pact-card-head h3{ font-size: 19px; }
.ai-pact-card-en{ font-size: 12px; color: #0e7490; }
.ai-pact-card-group{ margin-bottom: 12px; }
.ai-pact-card-group-title{ font-weight: 700; font-size: 14.5px; color: #0f172a; margin-bottom: 6px; }
.ai-pact-card-group li{ font-size: 13.5px; color: #334155; line-height: 1.9; margin-left: 22px; }
.ai-pact-card-foot{ display: flex; justify-content: space-between; border-top: 2px dashed rgba(6,182,212,.35); padding-top: 12px; margin-top: 6px; font-size: 13px; color: var(--text-light); flex-wrap: wrap; gap: 8px; }
.ai-pact-print-row{ display: flex; gap: 12px; justify-content: center; margin-top: 14px; flex-wrap: wrap; }

@media (prefers-reduced-motion: reduce){
  .ai-detect-verdict-card, .ai-pact-card{ animation: none; }
  .ai-detect-progress-bar{ transition: none; }
}

/* v105 公约打印：仅在 body.ai-pact-printing（由 App.aiPactPrint 挂类）时生效，
   避免与 v92 护眼打卡表的全局打印规则互相干扰 */
@media print{
  .ai-pact-print-row{ display: none !important; }
  body.ai-pact-printing *{ visibility: hidden !important; }
  body.ai-pact-printing #aiPactCard, body.ai-pact-printing #aiPactCard *{ visibility: visible !important; }
  body.ai-pact-printing #aiPactCard{ position: absolute; left: 0; top: 0; width: 100%; box-shadow: none; }
}

/* ===== v107 · 生涯测评重构：量表式作答 + 结果可视化 + 综合报告 =====
   原实现是「6 题六选一」，每型满分 1 分、结果必然并列，方法上不成立；
   现为 36 题（职业兴趣）+ 24 题（多元智能）三级独立评分。样式沿用既有 career-* 视觉语言。 */

/* 卡片右上角的「主测评 / 辅助视角」角标 */
.career-badge{
  margin-left: auto; flex: none; white-space: nowrap;
  font-size: 11.5px; font-weight: 700; padding: 4px 10px; border-radius: 999px;
  background: linear-gradient(135deg, var(--primary), var(--secondary)); color: #fff;
}
.career-badge.alt{ background: linear-gradient(135deg, #0ea5e9, #06b6d4); }

/* 卡片内的小字说明（合规提示、方法论说明、温馨提示都用它） */
.career-mini-note{ font-size: 12.5px; color: var(--text-muted); line-height: 1.75; margin-top: 12px; }
.career-mini-note b{ color: var(--text-light); }
.career-howto{ margin: 0 0 4px; padding-left: 20px; }
.career-howto li{ font-size: 13px; color: var(--text-light); line-height: 1.8; margin-bottom: 6px; }
.career-howto b{ color: var(--text); }

/* 作答进度条 */
.career-progress{ margin-bottom: 14px; }
.career-progress-track{
  height: 8px; background: var(--bg); border: 1px solid var(--border);
  border-radius: 999px; overflow: hidden;
}
.career-progress-track i{
  display: block; height: 100%; width: 0;
  background: linear-gradient(90deg, var(--primary), var(--secondary));
  transition: width .25s ease;
}
.career-progress-text{ font-size: 12px; color: var(--text-muted); margin-top: 6px; }

/* 题目行 + 三级评分按钮 */
.career-items{ display: grid; gap: 10px; }
.career-item{
  border: 1px solid var(--border); border-radius: var(--radius);
  padding: 12px; background: var(--card-bg);
  transition: border-color .2s ease, background .2s ease;
}
.career-item.done{ border-color: rgba(79,70,229,.35); background: rgba(79,70,229,.035); }
.career-item-text{
  display: flex; gap: 8px; align-items: flex-start;
  font-size: 14px; color: var(--text); line-height: 1.65; margin-bottom: 10px;
}
.career-item-no{
  flex: none; width: 20px; height: 20px; border-radius: 6px;
  background: var(--bg); border: 1px solid var(--border);
  color: var(--text-muted); font-size: 11.5px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center;
}
.career-item.done .career-item-no{ background: var(--primary); border-color: var(--primary); color: #fff; }
.career-likert{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.career-likert-btn{
  display: flex; align-items: center; justify-content: center; gap: 5px;
  padding: 9px 4px; font-size: 13px; font-weight: 600; font-family: inherit;
  color: var(--text-light); background: var(--bg);
  border: 1px solid var(--border); border-radius: 10px; cursor: pointer;
  transition: all .16s ease;
}
.career-likert-btn span{ font-size: 15px; }
.career-likert-btn:hover{ border-color: var(--primary); color: var(--primary); }
.career-likert-btn.on{
  background: linear-gradient(135deg, var(--primary), var(--secondary));
  border-color: transparent; color: #fff;
  box-shadow: 0 4px 12px rgba(79,70,229,.28);
}
.career-likert-btn:focus-visible{ outline: 3px solid rgba(79,70,229,.35); outline-offset: 2px; }
.career-nav{ display: flex; justify-content: space-between; gap: 10px; margin-top: 14px; }
.career-nav .btn[disabled]{ opacity: .45; cursor: not-allowed; }

/* 结果条形图：六型 / 八维 / 学科兴趣共用 */
.career-bars{ display: grid; gap: 8px; margin: 12px 0; }
.career-bar{ display: grid; grid-template-columns: 116px 1fr 52px; align-items: center; gap: 10px; }
.career-bar-name{
  font-size: 12.5px; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.career-bar-track{
  height: 10px; background: var(--bg); border: 1px solid var(--border);
  border-radius: 999px; overflow: hidden;
}
.career-bar-track i{ display: block; height: 100%; border-radius: 999px; transition: width .4s ease; }
.career-bar-val{
  font-size: 11.5px; color: var(--text-muted); text-align: right;
  font-variant-numeric: tabular-nums;
}

.career-result-sub{ font-size: 13.5px; color: var(--text-light); line-height: 1.75; margin: 8px 0 4px; }
.career-result-actions{
  display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 14px;
}

/* 综合报告（两项测评都做完才出现） */
.career-report{ margin-bottom: 20px; }
.career-report:empty{ display: none; }
.career-report-card{
  background: var(--card-bg); border: 1px solid var(--border);
  border-radius: var(--radius-lg); padding: 24px; box-shadow: var(--shadow);
}
.career-report-head{
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 14px; flex-wrap: wrap; margin-bottom: 8px;
}
.career-report-actions{ display: flex; gap: 8px; flex-wrap: wrap; }
.career-report-block{ border-top: 1px dashed var(--border); padding-top: 16px; margin-top: 16px; }
.career-report-title{ font-size: 16px; margin: 0 0 10px; color: var(--text); }
.career-report-title b{ color: var(--primary); letter-spacing: 1px; }

/* 理想反观镜：兴趣 × 能力 的交叉检验 */
.career-mirror{
  background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 14px 16px;
}
.career-mirror.ok{ border-left: 4px solid #10b981; }
.career-mirror.gap{ border-left: 4px solid #f59e0b; }
.career-mirror p{ font-size: 13.5px; color: var(--text); line-height: 1.8; margin: 0 0 6px; }
.career-mirror-verdict{ margin-bottom: 0 !important; color: var(--text-light) !important; }

@media (max-width: 900px){
  .career-bar{ grid-template-columns: 96px 1fr 48px; gap: 8px; }
}
@media (max-width: 560px){
  .career-card{ padding: 18px; }
  .career-report-card{ padding: 18px; }
  .career-bar{ grid-template-columns: 82px 1fr 44px; gap: 7px; }
  .career-bar-name{ font-size: 12px; }
  .career-likert{ gap: 6px; }
  .career-likert-btn{ font-size: 12px; padding: 8px 2px; gap: 3px; }
  .career-likert-btn span{ font-size: 13.5px; }
  .career-report-head{ flex-direction: column; }
}
@media (prefers-reduced-motion: reduce){
  .career-progress-track i, .career-bar-track i{ transition: none; }
}

/* 生涯报告打印：只在 body.career-printing（由 App.careerPrint 挂类）时生效，
   与 v105 公约打印、v92 护眼表的全局打印规则互不干扰 */
@media print{
  body.career-printing *{ visibility: hidden !important; }
  body.career-printing #career-report, body.career-printing #career-report *{ visibility: visible !important; }
  body.career-printing #career-report{ position: absolute; left: 0; top: 0; width: 100%; margin: 0; }
  body.career-printing .career-report-actions{ display: none !important; }
}




