*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#fff7e8;--panel:#ffffffd9;--text:#2b1d3a;--sub:#5f4f73;
  --c1:#58ccff;--c2:#ffd166;--c3:#7ae582;--c4:#ff8fab;--c5:#9b8cff;
  --line:#e8dff5;--radius:18px;--base-font:18px;
}
body{
  font-family:"Microsoft YaHei","PingFang SC",sans-serif;
  font-size:var(--base-font,18px);
  color:var(--text);line-height:1.9;min-height:100vh;
  background:
    radial-gradient(circle at 10% 10%, #fff 0, #fff0 35%),
    radial-gradient(circle at 90% 20%, #ffe9b8 0, #fff0 30%),
    linear-gradient(160deg,#fff8e9,#f4f8ff 45%,#f6fff2);
}
.page-wrapper{max-width:1500px;margin:0 auto;padding:24px 18px 48px}
.site-header{
  position:sticky;top:0;z-index:99;
  display:flex;align-items:center;gap:12px;padding:12px 24px;
  background:linear-gradient(120deg,#5f27cd,#00d2d3,#54a0ff);
  color:#fff;box-shadow:0 8px 20px #00000022
}
.logo-icon{font-size:30px}
.site-title{font-size:24px;font-weight:800;letter-spacing:2px}
.brand-link{display:inline-flex;align-items:center;color:inherit;text-decoration:none}
.brand-link:hover{opacity:1;color:#ffb347;transform:translateY(-1px)}
.brand-link:hover .site-title,.brand-link:hover .logo-icon{color:#ffb347;text-shadow:0 2px 8px rgba(255,160,50,.45)}
.header-subtitle{margin-left:auto;font-size:15px;opacity:.95}
.release-chip{margin-left:10px;font-size:13px;background:#ffffff22;border:1px solid #ffffff55;border-radius:999px;padding:2px 9px}
.hero{
  background:var(--panel);border:2px solid var(--line);border-radius:28px;
  padding:42px 20px;text-align:center;box-shadow:0 10px 30px #46366a1a;margin-bottom:22px
}
.hero-home-badge{
  display:inline-block;padding:6px 14px;border-radius:999px;
  background:linear-gradient(90deg,#ffd166,#ff8fab);color:#512a68;font-weight:700;font-size:13px;margin-bottom:14px
}
.hero-icon{font-size:62px;display:block;margin-bottom:8px;animation:float 2.8s ease-in-out infinite}
@keyframes float{50%{transform:translateY(-8px)}}
.hero h1{font-size:42px;line-height:1.2;color:#4b2e83;margin-bottom:12px}
.hero p{font-size:18px;color:var(--sub);max-width:760px;margin:0 auto}
.hero-home-actions{margin-top:18px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.cta-btn{padding:10px 18px;border-radius:999px;font-weight:700;text-decoration:none;transition:.18s}
.cta-primary{background:#5f27cd;color:#fff}
.cta-primary:hover{background:#ffa500;color:#fff;box-shadow:0 4px 14px rgba(255,165,0,.45);transform:translateY(-2px)}
.cta-secondary{background:#fff;border:2px solid #5f27cd;color:#5f27cd}
.cta-secondary:hover{background:#ffa500;border-color:#ffa500;color:#fff;box-shadow:0 4px 14px rgba(255,165,0,.35);transform:translateY(-2px)}
.fun-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0 0 24px}
.fun-item{background:#fff;border:2px solid var(--line);border-radius:14px;padding:14px;text-align:center}
.fun-icon{font-size:28px;display:block;margin-bottom:6px}
.section-heading{margin-bottom:12px}
.section-heading h2{font-size:30px;color:#4b2e83}
.section-heading p{font-size:17px;color:var(--sub)}
.chapter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.chapter-card{
  display:flex;flex-direction:column;gap:7px;align-items:center;text-align:center;
  border-radius:16px;padding:20px 10px;border:2px solid #ffffff99;background:#fff;
  text-decoration:none;color:var(--text);transition:.2s
}
.chapter-card:hover{transform:translateY(-6px) scale(1.02)}
.chapter-card.c1{background:linear-gradient(140deg,#e6f8ff,#c8edff)}
.chapter-card.c2{background:linear-gradient(140deg,#fff7dd,#ffe7a0)}
.chapter-card.c3{background:linear-gradient(140deg,#ebffed,#c8f7ce)}
.chapter-card.c4{background:linear-gradient(140deg,#ffeaf2,#ffc5d8)}
.chapter-card.c5{background:linear-gradient(140deg,#efeaff,#d7ccff)}
.chapter-card.c6{background:linear-gradient(140deg,#e8f1ff,#c8dcff)}
.card-icon{font-size:40px}.card-title{font-size:18px;font-weight:800;color:#3a2a57}.card-range{font-size:14px;color:#5d4f73}.card-desc{font-size:14px;color:#5f4f73}
.nav-header,.lesson-page,.lesson-card,.knowledge-card,.exercise-block,.answer-block,.table-wrapper{border-radius:14px}
.lesson-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.lesson-card{background:#fff;border:2px solid var(--line);padding:14px 8px;text-decoration:none;color:var(--text);text-align:center;transition:.2s;display:flex;flex-direction:column;align-items:center;gap:4px}
.lesson-card:hover{transform:translateY(-4px);box-shadow:0 8px 18px #3f2b5f20}
.lesson-num{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;margin:0 auto 8px;font-weight:800;font-size:17px;background:linear-gradient(135deg,#5f27cd,#54a0ff)}
.lesson-title{font-size:14px;color:#4e4166;font-weight:700;line-height:1.45}
.site-footer{text-align:center;padding:24px;color:#6d6090}
#back-to-top{position:fixed;right:24px;bottom:24px;min-width:46px;height:46px;padding:0 10px;border:none;border-radius:999px;background:#5f27cd;color:#fff;font-size:14px;font-weight:700;display:none;cursor:pointer;box-shadow:0 8px 16px rgba(33,33,78,.25);transition:.2s}
#back-to-top.visible{display:block}
.quick-nav-float{position:fixed;right:24px;bottom:84px;display:flex;flex-direction:column;gap:8px;z-index:1000}
.quick-nav-btn{border:none;border-radius:999px;padding:9px 12px;font-size:13px;font-weight:700;color:#fff;cursor:pointer;box-shadow:0 7px 14px rgba(33,33,78,.25)}
.quick-nav-btn.home{background:linear-gradient(135deg,#5f27cd,#7f5af0)}
.quick-nav-btn.catalog{background:linear-gradient(135deg,#2e86de,#20c997)}
/* 新增：章节页工具条 */
.chapter-tools{
  margin:0 0 14px;padding:12px;border:2px solid var(--line);border-radius:12px;background:#fff;
  display:flex;gap:10px;align-items:center;flex-wrap:wrap
}
.chapter-tools input{
  flex:1;min-width:220px;border:2px solid var(--line);border-radius:999px;padding:9px 14px;outline:none;font-size:15px
}
.progress-pill{
  font-size:15px;padding:6px 11px;border-radius:999px;background:#f4efff;color:#4b2e83;font-weight:700
}
.lesson-card.done{border-color:#7ae582;background:#f1fff3}
.lesson-card.done .lesson-num{background:linear-gradient(135deg,#2cb67d,#7ae582)}

/* 二阶段：任务卡 + 难度星级 + 护眼模式 */
.daily-mission{margin-bottom:22px}
.mission-card{background:linear-gradient(145deg,#ffffff,#f4edff);border:2px solid #dfd2fb;border-radius:16px;padding:12px 14px}
.mission-item{display:flex;align-items:center;gap:8px;padding:7px 2px;color:#463d67;font-size:14px}
.mission-item input{width:16px;height:16px;accent-color:#6f42c1}
.mission-progress{margin-top:8px;display:inline-block;background:#eee6ff;color:#5a2ca5;border-radius:999px;padding:4px 10px;font-weight:700;font-size:13px}
.streak-badge{display:inline-block;margin-top:8px;margin-left:8px;background:#fff3d6;color:#8a5a00;border:1px solid #ffd666;border-radius:999px;padding:4px 10px;font-weight:700;font-size:13px}
.card-difficulty{font-size:11px;font-weight:700;color:#805300;background:#fff7dd;border:1px solid #ffd666;border-radius:999px;padding:2px 8px}
.lesson-difficulty{font-size:11px;font-weight:700;color:#7a5600;background:#fff6d9;border:1px solid #ffd666;border-radius:999px;padding:1px 8px;margin-top:2px}
.complete-toggle{margin-top:4px;border:1px solid #bfe3bf;background:#f4fff4;color:#2f8f2f;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:700;cursor:pointer}
.lesson-card.done .complete-toggle{background:#2f8f2f;color:#fff;border-color:#2f8f2f}
.chapter-tools .tool-btn{border:2px solid #d7e8ff;background:#f7fbff;color:#2459a5;border-radius:999px;padding:6px 11px;font-size:12px;font-weight:700;cursor:pointer}
.chapter-tools .tool-btn.active{background:#2459a5;color:#fff;border-color:#2459a5}
.side-float-panel{
  position:fixed;right:16px;bottom:24px;top:auto;transform:none;
  z-index:9999;display:flex;flex-direction:column;align-items:flex-end;gap:8px;
  transition:none;
}
.side-float-btns{
  display:flex;flex-direction:column;gap:6px;
  background:transparent;border:none;
  border-radius:0;padding:0;
  box-shadow:none;
  transform:none;
  transition:none;
  pointer-events:auto;
  backdrop-filter:none;
  order:2;opacity:1;
}
.side-float-tab{
  display:none;
}
/* 悬浮菜单按钮样式 */
.side-float-btns button{
  border:1px solid #e5e7eb;border-radius:10px;padding:9px 14px;
  font-size:13px;font-weight:600;cursor:pointer;
  white-space:nowrap;transition:.15s;
  color:#374151;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.1);
  text-align:left;line-height:1.4;
}
.side-float-btns button:hover{background:#4f46e5;color:#fff;border-color:#4f46e5;transform:translateX(-4px);box-shadow:0 4px 12px rgba(79,70,229,.3)}
.sfb-home{background:#fff}
.sfb-catalog{background:#fff}
.sfb-prev{background:#fff}
.sfb-next{background:#fff}
.sfb-eye{background:linear-gradient(135deg,#f59e0b,#d97706)!important;color:#fff!important;border-color:#f59e0b!important}
.sfb-focus{background:linear-gradient(135deg,#8b5cf6,#7c3aed)!important;color:#fff!important;border-color:#8b5cf6!important}
.sfb-top{background:linear-gradient(135deg,#10b981,#059669)!important;color:#fff!important;border-color:#10b981!important}
.sfb-dark{background:linear-gradient(135deg,#475569,#334155)!important;color:#fff!important;border-color:#475569!important}
/* 字体调节按钮 */
.sfb-font-wrap{display:flex;gap:6px;justify-content:flex-end}
.sfb-font{background:#fff!important;color:#374151!important;border:1px solid #e5e7eb!important;border-radius:8px!important;padding:6px 10px!important;font-size:14px!important;font-weight:700!important;cursor:pointer!important;transition:.15s!important;min-width:36px!important;width:36px!important;text-align:center!important;line-height:1!important}
.sfb-font:hover{background:#4f46e5!important;color:#fff!important;border-color:#4f46e5!important}
/* 悬浮菜单默认展开，无需hover */
body.eye-mode .side-float-btns{background:transparent;border-color:transparent}
body.eye-mode .side-float-tab{display:none}
.eye-toggle-btn,.focus-toggle-btn{display:none!important}
.quick-nav-float{display:none!important}
.eye-toggle-btn{bottom:24px}
.focus-toggle-btn{bottom:68px;background:linear-gradient(135deg,#ff7a45,#faad14)}
body.eye-mode{background:linear-gradient(160deg,#f0ede0,#f5f2e5 45%,#eaefd8);color:#2a2a1a}
body.eye-mode .lesson-page{border-color:#d8d1b5;background:#faf8f0}
body.eye-mode .lesson-header{background:linear-gradient(135deg,#8c9b3d,#6f8d45)}
body.eye-mode .lesson-body{background:#faf8f0}
body.eye-mode .section-block h2{color:#56651f;border-left-color:#7c8d2c}
body.eye-mode .section-block h3{color:#3d5016;border-left-color:#9ab84a}
body.eye-mode .section-block p,.section-block li{color:#2e2e1c}
body.eye-mode .fun-item,.eye-mode .mission-card,.eye-mode .recommend-card,.eye-mode .overview-card{background:#f2efdf;border-color:#cfc9a8}
body.eye-mode .hero{background:#f2efdf;border-color:#cfc9a8}
body.eye-mode .knowledge-card{background:#eef5e0;border-color:#b5cf8a}
body.eye-mode .answer-toggle-btn{background:#f0ead0;color:#5a4200;border-color:#d6c170}
body.eye-mode .answer-content{background:#faf7ea;border-color:#d6c170}
body.eye-mode code{background:#e8e4d0;border-color:#c8c0a0;color:#7a2020;font-family:"JetBrains Mono","Fira Code",Consolas,monospace}
body.eye-mode .code-block-wrapper{box-shadow:0 3px 12px rgba(30,40,10,.25)}
body.eye-mode .code-block-header{background:#2a3520;color:#b8ccb0}
body.eye-mode .code-block-header .lang-label{color:#a7f3b4}
body.eye-mode pre{background:linear-gradient(180deg,#1a2418,#1e2a1e)}
body.eye-mode pre code{color:#d8f0cf;background:none;border:none;font-family:"JetBrains Mono","Fira Code",Consolas,monospace}
body.eye-mode .kw{color:#c9a0f5;font-weight:700}
body.eye-mode .ty{color:#7dd8f8;font-weight:700}
body.eye-mode .st{color:#f5c97a}
body.eye-mode .cm{color:#a9c89f;font-style:normal;font-weight:650;letter-spacing:.01em}
body.eye-mode .pp{color:#85d8e8}
body.eye-mode .table-wrapper{border-color:#b8c7aa;background:#eef3e4}
body.eye-mode th{background:#6f8d45;color:#f0f8e8}
body.eye-mode table{border-color:#b8c7aa;background:#f4f8ed}
body.eye-mode td{color:#314226;border-bottom-color:#d7e2c8;border-right-color:#dfe8d1}
body.eye-mode tr:nth-child(odd) td{background:#f2f8ea}
body.eye-mode tr:nth-child(even) td{background:#e8f3de}
body.eye-mode tr:hover td{background:#dceeca}
body.eye-mode #back-to-top{background:#6f8d45}
body.eye-mode .eye-toggle-btn{background:linear-gradient(135deg,#6f8d45,#9ab84a)}
body.eye-mode .site-header{background:linear-gradient(120deg,#3d5a1a,#5a7a28,#7a9a38)}
body.focus-mode .site-header, body.focus-mode .site-footer, body.focus-mode .lesson-nav{display:none}
body.focus-mode .page-wrapper{padding-top:8px}
body.focus-mode .lesson-page{box-shadow:none}
.chapter-tools .danger-btn{border:2px solid #ffd0d0;background:#fff6f6;color:#c43838;border-radius:999px;padding:6px 11px;font-size:12px;font-weight:700;cursor:pointer}
.chapter-tools .export-btn{border:2px solid #d7e8ff;background:#eef6ff;color:#2459a5;border-radius:999px;padding:6px 11px;font-size:12px;font-weight:700;cursor:pointer}
.smart-tools{margin:0 0 24px}
.recommend-card{background:linear-gradient(140deg,#fff,#eef7ff);border:2px solid #d5e8ff;border-radius:16px;padding:14px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:space-between}
.recommend-title{font-size:15px;font-weight:700;color:#2d4f7c}
.learning-overview{margin:0 0 24px}
.overview-card{background:linear-gradient(145deg,#fff,#f4f9ff);border:2px solid #d5e8ff;border-radius:16px;padding:12px 14px}
.overview-row{display:grid;grid-template-columns:130px 1fr 48px;align-items:center;gap:10px;padding:6px 0;font-size:13px;color:#35527a}
.overview-bar{height:10px;background:#e9f2ff;border-radius:999px;overflow:hidden}
.overview-bar i{display:block;height:100%;background:linear-gradient(90deg,#54a0ff,#2ed573);border-radius:999px}
.overview-actions{margin-top:8px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.overview-btns{display:flex;gap:8px;flex-wrap:wrap}
.overall-progress{font-size:13px;font-weight:700;color:#2459a5;background:#ecf4ff;border-radius:999px;padding:5px 10px}
.achievement-grid{margin-top:10px;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.achievement-badge{font-size:12px;border:1px solid #d7e8ff;background:#f7fbff;color:#7a8ba4;border-radius:999px;padding:6px 8px;text-align:center;font-weight:700}
.achievement-badge.unlocked{color:#2459a5;background:#eaf4ff;border-color:#8ec5ff;box-shadow:0 2px 8px #90c2ff55}
.parent-panel{margin-top:10px;background:#fffbe8;border:2px solid #ffe58f;border-radius:12px;padding:10px 12px}
.parent-panel h3{font-size:14px;color:#7c5e00;margin-bottom:4px}
.parent-panel p{font-size:13px;color:#6f5a1d;line-height:1.75}
@media (max-width:980px){.chapter-grid,.lesson-grid{grid-template-columns:repeat(3,1fr)}.fun-strip{grid-template-columns:repeat(2,1fr)}.achievement-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.chapter-grid,.lesson-grid{grid-template-columns:repeat(2,1fr)}.hero h1{font-size:30px}.site-title{font-size:20px}.header-subtitle{display:none}}
/* 课程页兼容样式（修复课文区域样式缺失） */
a{color:#2459a5;text-decoration:none;transition:.18s}
a:hover{color:#12407f}
.site-header .breadcrumb{font-size:13px;opacity:.9}
.site-header .breadcrumb a{color:#fff;opacity:.95}
.site-header .breadcrumb span{margin:0 5px}

.nav-header{display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,#eaf4ff,#eefdf4);border:2px solid #beddff;padding:16px 20px;margin-bottom:16px}
.nav-header .nav-icon{font-size:40px}
.nav-header .nav-info h2{font-size:28px;color:#2459a5}
.nav-header .nav-info p{font-size:16px;color:#5a6f8b}

.lesson-page{background:#fff;border:2px solid #dbe9ff;overflow:hidden;box-shadow:0 4px 16px rgba(22,62,120,.12)}
.lesson-header{background:linear-gradient(135deg,#4e7bff,#43c6ac);color:#fff;padding:24px 28px;position:relative;overflow:hidden}
.lesson-header::after{content:attr(data-icon);position:absolute;right:18px;top:50%;transform:translateY(-50%);font-size:64px;opacity:.16}
.lesson-badge{display:inline-block;background:rgba(255,255,255,.2);padding:2px 12px;border-radius:999px;font-size:12px;margin-bottom:8px}
.lesson-header h1{font-size:30px;margin-bottom:4px}
.lesson-meta{font-size:15px;opacity:.95}
.lesson-body{padding:26px 30px}

.section-block{margin-bottom:24px}
.section-block h2{font-size:24px;color:#2459a5;border-left:4px solid #4e7bff;padding-left:10px;margin-bottom:12px}
.section-block h3{font-size:20px;color:#24364f;border-left:3px solid #7adf8b;padding-left:8px;margin:14px 0 8px}
.section-block p{font-size:17px;margin-bottom:10px;line-height:1.9}
.section-block ul,.section-block ol{padding-left:22px;margin-bottom:10px}
.section-block li{margin-bottom:5px}

code{font-family:"JetBrains Mono","Fira Code",Consolas,Menlo,Monaco,"Courier New",monospace;background:#f1f8ff;border:1px solid #d7e9ff;color:#8a2b4c;padding:2px 7px;border-radius:4px;font-size:16px}
.code-block-wrapper{margin:12px 0;border-radius:12px;overflow:hidden;box-shadow:0 3px 10px rgba(0,0,0,.12)}
.code-block-header{background:#2d3748;color:#a0aec0;font-size:13px;padding:8px 12px;display:flex;align-items:center;justify-content:space-between;font-family:"JetBrains Mono","Fira Code",Consolas,Menlo,Monaco,"Courier New",monospace}
.code-block-header .lang-label{color:#79e2a5;font-weight:700;font-size:13px}
.copy-btn{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);color:#e2e8f0;border-radius:8px;padding:5px 11px;font-size:12px;cursor:pointer}
.copy-btn:hover{background:rgba(255,255,255,.2)}
.copy-btn.copied{color:#79e2a5;border-color:#79e2a5}
pre{margin:0;background:linear-gradient(180deg,#0f172a,#111827);overflow-x:auto;padding:16px 18px;line-height:1.6}
pre code{background:none;border:none;color:#e5e7eb;padding:0;font-size:16px;white-space:pre;font-family:"JetBrains Mono","Fira Code",Consolas,Menlo,Monaco,"Courier New",monospace}
.kw{color:#c792ea;font-weight:700}.ty{color:#4fc1ff;font-weight:700}.cm{color:#9fb3c8;font-style:normal;font-weight:650;letter-spacing:.01em}.st{color:#ecc48d}.pp{color:#89ddff;font-weight:600}

/* == 图片自适应 == */
.img-wrapper{text-align:center;margin:14px 0}
.img-wrapper img{max-width:100%;width:auto;height:auto;display:block;margin:0 auto;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.10)}
.img-caption{font-size:13px;color:#5a6f8b;margin-top:6px;font-style:italic}

/* == 题目选项竖排 == */
.quiz-options-vertical{display:flex;flex-direction:column;gap:6px;margin:8px 0 10px}
.quiz-option-block{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1.5px solid #d0e6ff;border-radius:10px;cursor:pointer;background:#f7fbff;transition:.15s;font-size:15px;line-height:1.6}
.quiz-option-block.quiz-correct{background:#e8f5e9;border-color:#43a047;color:#1b5e20;font-weight:600}
.quiz-option-block.quiz-wrong{background:#ffebee;border-color:#e53935;color:#b71c1c;font-weight:600}
.quiz-option-block.quiz-highlight{background:#fff8e1;border-color:#ffa000}
.quiz-result-badge{margin:10px 0 6px;padding:6px 14px;border-radius:8px;font-size:.9rem;font-weight:700;display:inline-block}
.quiz-badge-correct{background:#e8f5e9;color:#2e7d32;border:1.5px solid #a5d6a7}
.quiz-badge-wrong{background:#ffebee;color:#c62828;border:1.5px solid #ef9a9a}
.quiz-option-block.quiz-correct{border-color:#43a047!important;background:#e8f5e9!important;color:#1b5e20!important;font-weight:600}
.quiz-option-block.quiz-wrong{border-color:#e53935!important;background:#ffebee!important;color:#b71c1c!important;font-weight:600}
.quiz-option-block.quiz-correct::after{content:' ✓';color:#43a047;font-weight:700;margin-left:4px}
.quiz-option-block.quiz-wrong::after{content:' ✗';color:#e53935;font-weight:700;margin-left:4px}
.quiz-result-badge{display:inline-block;margin:8px 0 4px;padding:4px 14px;border-radius:20px;font-size:13px;font-weight:700;letter-spacing:.02em}
.quiz-badge-correct{background:#e8f5e9;color:#2e7d32;border:1.5px solid #a5d6a7}
.quiz-badge-wrong{background:#ffebee;color:#c62828;border:1.5px solid #ef9a9a}
.quiz-option-block:hover{background:#eef6ff;border-color:#7ab8ff}
.quiz-option-block input{flex-shrink:0;width:16px;height:16px;accent-color:#2459a5;cursor:pointer}
.quiz-option-block.correct{background:#f0fff4;border-color:#52c41a;color:#237804}
.quiz-option-block.wrong{background:#fff1f0;border-color:#ff4d4f;color:#cf1322}
..quiz-expl{display:block;margin-top:8px;padding:8px 12px;background:#fffde7;border-left:3px solid #f9a825;border-radius:0 6px 6px 0;color:#5d4037;font-size:.88rem;line-height:1.6}

body.dark-mode .quiz-option-block{background:#1e293b;border-color:#334155;color:#e2e8f0}
body.dark-mode .quiz-option-block:hover{background:#263348;border-color:#4f7ab8}
body.dark-mode .quiz-option-block.correct{background:#14532d;border-color:#22c55e;color:#86efac}
body.dark-mode .quiz-option-block.wrong{background:#450a0a;border-color:#ef4444;color:#fca5a5}
body.eye-mode .quiz-option-block{background:#f2f5e8;border-color:#b8c7aa}
body.eye-mode .quiz-option-block:hover{background:#e8edda;border-color:#7a9a40}

.answer-block{margin:12px 0;border:2px solid #ffd666;border-radius:12px;overflow:hidden}
.answer-toggle-btn{width:100%;border:none;background:#fff8dd;color:#7c5e00;padding:10px 14px;text-align:left;font-size:14px;font-weight:700;cursor:pointer}
.answer-toggle-btn:hover{background:#ffeaa7}
.answer-content{background:#fffdf0;border-top:1px solid #ffd666;padding:14px 16px;font-size:14px;line-height:1.85}

.knowledge-card{background:#eef6ff;border:2px solid #beddff;border-radius:12px;padding:14px 16px;margin:12px 0}
.knowledge-card.green{background:#f0fff1;border-color:#9ee6a7}
.knowledge-card.yellow{background:#fff9e5;border-color:#ffe58f}

.table-wrapper{overflow-x:auto;border:2px solid #dbe9ff;border-radius:12px;margin:12px 0}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px;border:1px solid #cfe3ff;border-radius:12px;overflow:hidden;background:#fff}
/* 顶部导航栏滚动隐藏 */
.site-header{transition:transform .3s ease,box-shadow .3s ease}
.site-header.header-hidden{transform:translateY(-100%);box-shadow:none}

th{background:#d8ecff;color:#1e3d6e;padding:10px 12px;font-weight:700;text-align:center;letter-spacing:.3px}
td{padding:10px 12px;border-bottom:1px solid #e4efff;border-right:1px solid #edf4ff;text-align:center;color:#2c3f5c}
tr td:last-child, tr th:last-child{border-right:none}
tr:nth-child(odd) td{background:#f9fcff}
tr:nth-child(even) td{background:#f2f8ff}
tr:hover td{background:#eaf4ff}
.table-wrapper{overflow-x:auto;border:2px solid #d7e8ff;border-radius:14px;margin:14px 0;box-shadow:0 4px 12px rgba(44,86,153,.08)}

.exercise-block{background:#f1fff2;border:2px solid #9ee6a7;border-radius:12px;padding:14px 16px;margin:12px 0}
.exercise-block .ex-title{font-size:15px;font-weight:700;color:#237804;margin-bottom:8px}
.exercise-block .ex-io{background:rgba(255,255,255,.7);padding:8px 12px;border-radius:8px;margin:6px 0}

.lesson-nav{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:26px}
.lesson-nav a{background:#fff;border:2px solid #dbe9ff;border-radius:12px;padding:8px 16px;font-size:14px;color:#2459a5;font-weight:700}
.lesson-nav a:hover{background:#eef6ff}

.tag{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:700;margin-right:4px}
.tag-blue{background:#eef6ff;color:#2459a5;border:1px solid #beddff}
.tag-green{background:#f0fff1;color:#237804;border:1px solid #9ee6a7}
.tag-yellow{background:#fff9e5;color:#a06a00;border:1px solid #ffe58f}
.io-label{display:inline-block;font-weight:800;border-radius:6px;padding:1px 8px;margin-right:4px;font-size:14px;letter-spacing:.5px}
.io-in{background:#e6f4ff;color:#0958d9;border:1.5px solid #91caff}
.io-out{background:#f6ffed;color:#389e0d;border:1.5px solid #95de64}
.io-sample-in{background:#fff7e6;color:#d46b08;border:1.5px solid #ffd591}
.io-sample-out{background:#fff0f6;color:#c41d7f;border:1.5px solid #ffadd2}
body.eye-mode .io-in{background:#d6efd6;color:#1a5e1a;border-color:#8ec68e}
body.eye-mode .io-out{background:#e8f5d0;color:#2a5a10;border-color:#a8d87a}
body.eye-mode .io-sample-in{background:#f0ead0;color:#6b4200;border-color:#c8a84a}
body.eye-mode .io-sample-out{background:#e8ead8;color:#3a4210;border-color:#a8aa78}

.tip-block{display:flex;gap:8px;background:#eef6ff;border-left:4px solid #4e7bff;padding:10px 12px;border-radius:0 8px 8px 0;margin:10px 0}
.divider{border:none;border-top:2px dashed #dbe9ff;margin:20px 0}

@media print{
  body{background:#fff!important}
  .site-header,.fun-strip,.daily-mission,.smart-tools,#chapter-map,#back-to-top,.eye-toggle-btn,.focus-toggle-btn,.overview-btns,.update-toast{display:none!important}
  .learning-overview,.overview-card{border:none;box-shadow:none}
  .page-wrapper{padding:0}
  .achievement-badge{color:#000;border-color:#999;background:#fff}
  .parent-panel{display:block!important}
}

.update-toast{position:fixed;right:20px;top:72px;max-width:320px;background:#fff;border:2px solid #d8e8ff;border-radius:12px;padding:12px 14px;box-shadow:0 8px 20px rgba(28,61,107,.18);z-index:1200}
.update-toast-title{font-size:14px;font-weight:700;color:#2459a5;margin-bottom:6px}
.update-toast ul{padding-left:18px;margin-bottom:8px}
.update-toast li{font-size:12px;color:#385a86;line-height:1.7}
.update-toast button{border:1px solid #b7d4ff;background:#eef6ff;color:#2459a5;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer}


/* == 阅读进度条 == */
#reading-progress{position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,#5f27cd,#00d2d3,#ffd166);z-index:9999;transition:width .1s linear}

/* == 代码块行号 == */
pre.has-line-nums{display:flex;overflow-x:auto}
.line-nums{user-select:none;text-align:right;padding:16px 10px;color:#4a5568;font-size:16px;line-height:1.6;border-right:1px solid #374151;min-width:36px;font-family:"JetBrains Mono",Consolas,monospace;flex-shrink:0;counter-reset:none}
.line-nums span{display:block;line-height:1.6;min-height:1.6em}
pre.has-line-nums code{padding:16px 18px;line-height:1.6;flex:1;overflow-x:visible}

/* == 长代码块折叠 == */
.code-foldable.code-folded pre{max-height:200px;overflow:hidden;mask-image:linear-gradient(to bottom,#000 60%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 60%,transparent 100%)}
.code-fold-btn{display:block;width:100%;background:#2d3748;color:#a0aec0;border:none;border-top:1px solid #4a5568;padding:7px;font-size:12px;cursor:pointer;text-align:center}
.code-fold-btn:hover{background:#374151;color:#e2e8f0}

/* == 学习进度条 == */
.progress-bar-wrap{display:flex;align-items:center;gap:12px;margin-bottom:14px;padding:10px 14px;background:#f0f7ff;border-radius:12px;border:1.5px solid #d0e6ff}
.progress-bar-track{flex:1;height:10px;background:#dde8f8;border-radius:999px;overflow:hidden}
.progress-bar-fill{height:100%;background:linear-gradient(90deg,#5f27cd,#00d2d3);border-radius:999px;transition:width .6s ease}
.progress-label{font-size:13px;font-weight:700;color:#2459a5;white-space:nowrap}
.lesson-card.lesson-done{border-color:#22c55e!important;background:linear-gradient(135deg,#f0fdf4,#dcfce7)!important}
.lesson-card.lesson-done .lesson-num::after{content:" v";color:#16a34a;font-size:11px}

/* == 搜索框 == */
.search-wrap{position:relative;max-width:480px;margin:14px auto 0}
#course-search{width:100%;padding:11px 18px;border-radius:999px;border:2px solid #d0e6ff;font-size:15px;outline:none;background:#fff;box-shadow:0 2px 10px #5f27cd11;transition:.2s}
#course-search:focus{border-color:#5f27cd;box-shadow:0 2px 16px #5f27cd22}
.search-results{display:none;position:absolute;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1.5px solid #d0e6ff;border-radius:14px;box-shadow:0 8px 24px #00000018;z-index:200;overflow:hidden}
.search-item{display:block;padding:10px 16px;text-decoration:none;color:#2b1d3a;font-size:14px;border-bottom:1px solid #f0f0f0;transition:.15s}
.search-item:hover{background:#f5f0ff;color:#5f27cd}
.search-empty{padding:12px 16px;color:#999;font-size:13px}

/* == 首页已学统计 == */
.fun-done{font-size:12px;color:#5f27cd;font-weight:700;margin-top:4px}

/* == 键盘快捷键提示 == */
#kbd-tip{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(20px);background:#2b1d3aee;color:#fff;padding:8px 18px;border-radius:999px;font-size:13px;opacity:0;pointer-events:none;transition:.3s;z-index:9000;white-space:nowrap}
#kbd-tip.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* == 字体大小按钮 == */
.sfb-font-wrap{display:flex;gap:4px}
.sfb-font{flex:1;border:none;border-radius:8px;padding:7px 10px;font-size:14px;font-weight:800;cursor:pointer;color:#fff;transition:.18s}
.sfb-font-dec{background:linear-gradient(135deg,#6366f1,#818cf8)}
.sfb-font-inc{background:linear-gradient(135deg,#ec4899,#f472b6)}
.sfb-font:hover{filter:brightness(1.12);transform:translateX(-3px)}
.sfb-dark{background:linear-gradient(135deg,#1e293b,#334155)}

/* == 深色主题 == */
body.dark-mode{background:#0f172a;color:#e2e8f0}
body.dark-mode .site-header{background:linear-gradient(120deg,#1e1b4b,#0f172a,#1e3a5f)}
body.dark-mode .hero,body.dark-mode .fun-item,body.dark-mode .chapter-card,body.dark-mode .lesson-card,body.dark-mode .knowledge-card,body.dark-mode .lesson-page,body.dark-mode .lesson-body{background:#1e293b!important;border-color:#334155!important;color:#e2e8f0!important}
body.dark-mode h1,body.dark-mode h2,body.dark-mode h3{color:#c4b5fd!important}
body.dark-mode p,body.dark-mode li{color:#94a3b8!important}
body.dark-mode pre{background:linear-gradient(180deg,#0a0f1a,#0d1117)!important}
body.dark-mode pre code{color:#c9d1d9!important}
body.dark-mode code{background:#1e293b!important;border-color:#334155!important;color:#f472b6!important}
body.dark-mode .code-block-header{background:#161b22!important}
body.dark-mode th{background:#1e3a5f!important;color:#e2e8f0!important}
body.dark-mode td{color:#94a3b8!important;background:#1e293b!important}
body.dark-mode .site-footer{background:#0f172a!important;color:#475569!important}
body.dark-mode .search-results,body.dark-mode #course-search{background:#1e293b!important;border-color:#334155!important;color:#e2e8f0!important}
body.dark-mode .progress-bar-wrap{background:#1e293b!important;border-color:#334155!important}
body.dark-mode .section-block{background:#1e293b!important;border-color:#334155!important}
body.dark-mode .answer-content{background:#0f172a!important;border-color:#334155!important}
body.dark-mode table{background:#1e293b!important;border-color:#334155!important}

/* == CSS 变量字体大小 (via JS) == */

/* == 移动端工具面板底部弹出 == */
@media(max-width:768px){
  .side-float-panel.mobile-panel{right:auto;left:0;top:auto;bottom:0;transform:none;flex-direction:column-reverse;width:100%}
  .side-float-panel.mobile-panel .side-float-tab{writing-mode:horizontal-tb;border-radius:8px 8px 0 0;padding:8px 18px;width:100%;text-align:center;letter-spacing:2px}
  .side-float-panel.mobile-panel .side-float-btns{transform:translateY(100%);flex-direction:row;flex-wrap:wrap;width:100%;border-radius:12px 12px 0 0;border-right:2px solid #d7e3ff;border-bottom:none;justify-content:center}
  .side-float-panel.mobile-panel:hover .side-float-btns,.side-float-panel.mobile-panel:focus-within .side-float-btns{transform:translateY(0)}
}

/* == 难度标签 == */
.diff-easy,.diff-mid,.diff-hard{display:inline-block;font-size:11px;font-weight:700;border-radius:6px;padding:1px 6px;margin-left:4px;white-space:nowrap;vertical-align:middle}
.diff-easy{background:#dcfce7;color:#16a34a;border:1px solid #86efac}
.diff-mid{background:#fef9c3;color:#b45309;border:1px solid #fde047}
.diff-hard{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5}
body.dark-mode .diff-easy{background:#14532d;color:#86efac;border-color:#16a34a}
body.dark-mode .diff-mid{background:#422006;color:#fde047;border-color:#b45309}
body.dark-mode .diff-hard{background:#450a0a;color:#fca5a5;border-color:#dc2626}

/* == 深色主题补充 == */
body.dark-mode .mission-card{background:#1e293b!important;border-color:#334155!important}
body.dark-mode .overview-card{background:#1e293b!important;border-color:#334155!important}
body.dark-mode .recommend-card{background:#1e293b!important;border-color:#334155!important}
body.dark-mode .streak-badge{background:#1e293b!important;border-color:#334155!important;color:#fbbf24!important}
body.dark-mode .mission-progress{background:#1e293b!important;color:#a5b4fc!important}
body.dark-mode .nav-header{background:#1e293b!important;border-color:#334155!important}
body.dark-mode .breadcrumb a{color:#94a3b8!important}
body.dark-mode .hero-home-badge{background:linear-gradient(90deg,#7c3aed,#6d28d9)!important;color:#e9d5ff!important}
body.dark-mode .lesson-header{background:linear-gradient(135deg,#1e1b4b,#1e3a5f)!important}
body.dark-mode .lesson-badge{background:#1e3a5f!important;color:#93c5fd!important}
body.dark-mode .lesson-meta{color:#64748b!important}
body.dark-mode .progress-bar-fill{background:linear-gradient(90deg,#7c3aed,#06b6d4)!important}
body.dark-mode .progress-label{color:#a5b4fc!important}
body.dark-mode .lesson-nav a{background:#1e293b!important;border-color:#334155!important;color:#94a3b8!important}
body.dark-mode .lesson-nav a:hover{background:#334155!important;color:#e2e8f0!important}
body.dark-mode .chapter-tools{background:#1e293b!important;border-color:#334155!important}
body.dark-mode .chapter-tools input{background:#0f172a!important;border-color:#334155!important;color:#e2e8f0!important}
body.dark-mode .overview-row{color:#94a3b8!important}
body.dark-mode .overview-bar{background:#334155!important}
body.dark-mode .achievement-badge{background:#1e293b!important;border-color:#334155!important;color:#94a3b8!important}
body.dark-mode .achievement-badge.unlocked{background:linear-gradient(135deg,#422006,#1e3a5f)!important;color:#fbbf24!important}
body.dark-mode .parent-panel{background:#0f172a!important;border-color:#334155!important}
body.dark-mode .search-wrap #course-search{background:#1e293b!important;color:#e2e8f0!important}
body.dark-mode .diff-easy{background:#14532d!important;color:#86efac!important}
body.dark-mode .diff-mid{background:#422006!important;color:#fde047!important}
body.dark-mode .diff-hard{background:#450a0a!important;color:#fca5a5!important}
body.dark-mode .io-in{background:#1e3a5f!important;color:#93c5fd!important;border-color:#1d4ed8!important}
body.dark-mode .io-out{background:#14532d!important;color:#86efac!important;border-color:#15803d!important}
body.dark-mode .io-sample-in{background:#422006!important;color:#fcd34d!important;border-color:#b45309!important}
body.dark-mode .io-sample-out{background:#4a044e!important;color:#f0abfc!important;border-color:#a21caf!important}
body.dark-mode .side-float-btns{background:#1e293bee!important;border-color:#334155!important}
body.dark-mode .knowledge-card{background:#1e293b!important;border-color:#334155!important}
body.dark-mode .tip-block{background:#1e3a5f!important;border-color:#1d4ed8!important}
body.dark-mode .site-footer{background:#0a0f1a!important;border-top:1px solid #1e293b!important}

/* == 字体大小提示浮层 == */
#font-size-tip{position:fixed;bottom:140px;right:80px;background:#2b1d3aee;color:#fff;padding:7px 16px;border-radius:999px;font-size:14px;font-weight:700;opacity:0;pointer-events:none;transition:.3s;z-index:9001;white-space:nowrap}
#font-size-tip.show{opacity:1}

/* == 全局字体继承 == */
body{font-size:var(--base-font,16px)}
p,li,td,th,label,span:not(.logo-icon):not(.fun-icon):not(.hero-icon):not(.lesson-num):not(.diff-easy):not(.diff-mid):not(.diff-hard):not(.io-label),.mission-item,.overview-row,.recommend-title,.breadcrumb,.lesson-nav a,.answer-content,.chapter-tools,.search-item,.progress-label,.fun-done,.streak-badge,.mission-progress{font-size:inherit}
h1{font-size:2em}
h2{font-size:1.45em}
h3{font-size:1.18em}

/* == 栏目标题标签 == */
.section-tag{
  display:flex;align-items:center;
  margin:28px 0 16px;
  border-radius:12px;
  overflow:hidden;
  font-family:'Microsoft YaHei','PingFang SC',sans-serif;
}
.section-tag-inner{
  display:inline-flex;align-items:center;gap:8px;
  padding:10px 22px;
  font-size:1.15em;
  font-weight:900;
  letter-spacing:.06em;
  border-radius:12px;
  width:100%;
  box-shadow:0 4px 16px rgba(0,0,0,.10);
}
.section-tag-01 .section-tag-inner{
  background:linear-gradient(120deg,#1a73e8,#0ea5e9);
  color:#fff;
  border-left:6px solid #0c4fa8;
}
.section-tag-02 .section-tag-inner{
  background:linear-gradient(120deg,#16a34a,#22c55e);
  color:#fff;
  border-left:6px solid #0e6630;
}
.section-tag-03 .section-tag-inner{
  background:linear-gradient(120deg,#d97706,#f59e0b);
  color:#fff;
  border-left:6px solid #92400e;
}
.section-tag-04 .section-tag-inner{
  background:linear-gradient(120deg,#7c3aed,#a855f7);
  color:#fff;
  border-left:6px solid #5b21b6;
}
.section-extra{
  font-size:.85em;font-weight:600;opacity:.88;margin-left:8px;
}
body.dark-mode .section-tag-01 .section-tag-inner{background:linear-gradient(120deg,#1e3a5f,#1d4ed8)}
body.dark-mode .section-tag-02 .section-tag-inner{background:linear-gradient(120deg,#14532d,#15803d)}
body.dark-mode .section-tag-03 .section-tag-inner{background:linear-gradient(120deg,#78350f,#b45309)}
body.eye-mode .section-tag-01 .section-tag-inner{background:linear-gradient(120deg,#3d5a1a,#4a7a22)}
body.eye-mode .section-tag-02 .section-tag-inner{background:linear-gradient(120deg,#1a4a3a,#1d6b4f)}
body.eye-mode .section-tag-03 .section-tag-inner{background:linear-gradient(120deg,#5a3a00,#8a5a00)}

body.dark-mode .section-tag-04 .section-tag-inner{background:linear-gradient(120deg,#312e81,#6d28d9)}
body.eye-mode .section-tag-04 .section-tag-inner{background:linear-gradient(120deg,#4c1d95,#6d28d9)}

/* == 04 词海拾贝：书页装饰 == */
.section-tag-04 .section-tag-inner{position:relative;overflow:hidden;padding-left:28px}
.section-tag-04 .section-tag-inner::before{content:"";position:absolute;left:10px;top:8px;bottom:8px;width:7px;border-radius:3px;background:linear-gradient(180deg,#ede9fe,#c4b5fd);box-shadow:inset 0 0 0 1px #7c3aed99}
.section-tag-04 .section-tag-inner::after{content:"";position:absolute;left:20px;top:8px;bottom:8px;width:2px;border-radius:2px;background:#ffffff55}
body.dark-mode .section-tag-04 .section-tag-inner::before{background:linear-gradient(180deg,#c4b5fd,#8b5cf6);box-shadow:inset 0 0 0 1px #a78bfa88}
body.eye-mode .section-tag-04 .section-tag-inner::before{background:linear-gradient(180deg,#ddd6fe,#a78bfa);box-shadow:inset 0 0 0 1px #8b5cf699}

/* 代码注释可读性增强 */
body.dark-mode .cm{color:#aab7c7;font-style:normal;font-weight:650;letter-spacing:.01em}

/* 教案区块 */
.teaching-plan-block{margin-top:18px;border:2px solid #cfdcff;background:linear-gradient(160deg,#f7faff,#eef4ff);padding:14px 16px;border-radius:14px}
.teaching-plan-block h2{border-left-color:#5b7fff;color:#2f4f93}
.teaching-plan-content p{line-height:1.95;margin-bottom:10px}
body.dark-mode .teaching-plan-block{background:#1b2436;border-color:#334155}
body.eye-mode .teaching-plan-block{background:#f1f4e7;border-color:#b8c7aa}

/* 教案时间标签 */
.time-chip{display:inline-block;padding:1px 8px;margin:0 2px;border-radius:999px;font-size:.86em;font-weight:800;line-height:1.4;background:linear-gradient(135deg,#fff0cc,#ffd666);color:#7a4a00;border:1px solid #f3c24f;vertical-align:baseline}
body.dark-mode .time-chip{background:linear-gradient(135deg,#422006,#6b3f0d);color:#ffd666;border-color:#b45309}
body.eye-mode .time-chip{background:linear-gradient(135deg,#efe4bf,#e5cf8a);color:#5f4700;border-color:#c6a553}

/* 教案融入讲义的分段提示卡 */
.plan-inline-card{margin:10px 0 16px;padding:12px 14px;border-radius:12px;border:2px solid #d6e3ff;background:linear-gradient(160deg,#f8fbff,#eef4ff)}
.plan-inline-title{font-weight:900;font-size:1.02em;color:#315aa8;margin-bottom:8px}
.plan-inline-body h3{font-size:1.03em;color:#2f4f93;border-left:3px solid #7ea0ff;padding-left:8px;margin:10px 0 6px}
.plan-inline-body p,.plan-inline-body li{font-size:.95em;line-height:1.85}
body.dark-mode .plan-inline-card{background:#1b2436;border-color:#334155}
body.eye-mode .plan-inline-card{background:#f1f4e7;border-color:#b8c7aa}

/* 右侧教学节奏条 */
.plan-timeline{position:fixed;right:12px;top:120px;z-index:80;width:260px;max-height:70vh;overflow:auto;padding:10px 10px 8px;border:2px solid #d7e3ff;border-radius:14px;background:rgba(248,252,255,.94);backdrop-filter:blur(8px);box-shadow:0 10px 26px rgba(60,90,170,.14)}
.plan-timeline-title{font-weight:900;font-size:14px;color:#2f4f93;margin-bottom:8px}
.plan-timeline ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.plan-timeline a{display:flex;align-items:flex-start;gap:8px;text-decoration:none;color:#29427e;font-weight:700;padding:6px 8px;border-radius:10px}
.plan-timeline a:hover,.plan-timeline a.active{background:#e8f0ff}
.pt-dot{flex:0 0 10px;height:10px;border-radius:50%;background:#6f91ff;margin-top:5px}
.pt-text{font-size:12px;line-height:1.5}
@media (max-width:1280px){.plan-timeline{display:none}}
body.dark-mode .plan-timeline{background:rgba(17,24,39,.92);border-color:#334155;box-shadow:0 10px 26px rgba(0,0,0,.35)}
body.dark-mode .plan-timeline-title{color:#c8d6ff}
body.dark-mode .plan-timeline a{color:#cbd5e1}
body.dark-mode .plan-timeline a:hover,body.dark-mode .plan-timeline a.active{background:#24324a}

/* 节奏条折叠开关 */
.plan-timeline.collapsed{transform:translateX(118%);opacity:0;pointer-events:none}
.plan-timeline{transition:transform .25s ease,opacity .25s ease}
.plan-timeline-toggle{position:fixed;right:12px;top:84px;z-index:81;border:1px solid #9fb7ff;background:#eef4ff;color:#244488;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:800;cursor:pointer;box-shadow:0 6px 16px rgba(50,80,160,.18)}
.plan-timeline-toggle:hover{background:#dde9ff}
@media (max-width:1280px){.plan-timeline-toggle{display:none}}
body.dark-mode .plan-timeline-toggle{background:#1f2937;color:#dbeafe;border-color:#334155;box-shadow:0 6px 16px rgba(0,0,0,.35)}
body.dark-mode .plan-timeline-toggle:hover{background:#243244}

/* 节奏条增强：老师/学生视图、开课模式、计时器 */
.plan-timeline-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.plan-timeline-actions{display:flex;gap:6px}
.plan-timeline-actions button{border:1px solid #bcd0ff;background:#f1f6ff;color:#244a8f;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800;cursor:pointer}
.pt-timer-ctl{display:flex;align-items:center;gap:6px;margin:5px 0 0 18px}
.pt-timer{font-size:11px;font-weight:800;color:#365cab;background:#eef4ff;border:1px solid #ccdcff;border-radius:999px;padding:1px 7px}
.pt-start{border:1px solid #98b7ff;background:#dfeaff;color:#22417f;border-radius:8px;padding:2px 7px;font-size:11px;font-weight:800;cursor:pointer}
.plan-timeline li.running .pt-timer{color:#0f766e;background:#dff7f4;border-color:#7ad6cb}
.plan-timeline li.timeout .pt-timer{color:#9f1239;background:#ffe4ed;border-color:#f9a8c0}
.student-view .plan-inline-card,.student-view .plan-timeline{display:none!important}
body.class-mode .plan-inline-card{box-shadow:0 8px 20px rgba(52,84,165,.16);border-width:3px}
body.class-mode .section-block{border-width:3px}
body.class-mode .site-header{display:none}
body.dark-mode .plan-timeline-actions button{background:#243244;color:#dbeafe;border-color:#334155}
body.dark-mode .pt-timer{background:#243244;color:#dbeafe;border-color:#334155}
body.dark-mode .pt-start{background:#1f2e44;color:#dbeafe;border-color:#3a4f72}

/* 阶段完成与自动跳转 */
.pt-done-ctl{margin:4px 0 0 18px}
.pt-done-btn{border:1px solid #a6c3ff;background:#eef4ff;color:#204284;border-radius:8px;padding:2px 7px;font-size:11px;font-weight:800;cursor:pointer}
.plan-timeline li.done .pt-dot{background:#22c55e}
.plan-timeline li.done .pt-text{text-decoration:line-through;opacity:.72}
.plan-timeline li.done .pt-done-btn{background:#dcfce7;border-color:#86efac;color:#166534}
body.dark-mode .pt-done-btn{background:#1f2e44;color:#dbeafe;border-color:#3a4f72}
body.dark-mode .plan-timeline li.done .pt-done-btn{background:#134e4a;border-color:#0f766e;color:#bbf7d0}

/* 节奏条重置按钮 */
.pt-reset-btn{background:#fff1f2!important;border-color:#fecdd3!important;color:#9f1239!important}
.pt-reset-btn:hover{background:#ffe4e6!important}
body.dark-mode .pt-reset-btn{background:#3f1d2e!important;border-color:#7f1d1d!important;color:#fecdd3!important}

/* ===== 布局优化：工具栏左侧贴边 + 节奏条美化 ===== */
.side-float-panel{left:0;right:auto;transform:translateY(-50%);}
.side-float-btns{order:1;border-left:none;border-right:none;box-shadow:4px 0 18px rgba(42,28,88,.15);transform:translateX(-100%);}
.side-float-tab{order:2;border-radius:0 8px 8px 0;box-shadow:3px 0 10px rgba(42,28,88,.25);}
.side-float-panel:hover .side-float-btns,.side-float-panel:focus-within .side-float-btns{transform:translateX(0);}
.plan-timeline{right:18px;top:132px;width:318px;max-height:76vh;padding:14px 12px 12px;border-radius:18px;border:1px solid #cfe0ff;background:linear-gradient(165deg,rgba(251,253,255,.96),rgba(238,245,255,.94));box-shadow:0 18px 34px rgba(56,89,165,.18);}
.plan-timeline-title{font-size:15px;letter-spacing:.2px;color:#27498e;}
.plan-timeline-actions{gap:5px;flex-wrap:wrap;justify-content:flex-end;}
.plan-timeline-actions button{padding:4px 9px;border-radius:999px;font-size:10px;line-height:1.2;}
.plan-timeline ul{gap:10px;}
.plan-timeline li{background:#ffffffd9;border:1px solid #d8e6ff;border-radius:12px;padding:8px 8px 7px;box-shadow:0 2px 8px rgba(87,120,185,.08);}
.plan-timeline li.running{border-color:#8fded4;background:#ecfffb;}
.plan-timeline li.timeout{border-color:#f7a9bf;background:#fff3f7;}
.plan-timeline li.done{border-color:#86efac;background:#f0fdf4;}
.plan-timeline a{padding:3px 4px;gap:9px;}
.pt-dot{width:9px;height:9px;margin-top:6px;}
.pt-text{font-size:12px;line-height:1.55;font-weight:800;}
.pt-done-ctl,.pt-timer-ctl{margin:6px 0 0 18px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.pt-done-btn,.pt-start{padding:3px 8px;font-size:10px;border-radius:8px;}
.pt-timer{font-size:10px;padding:2px 7px;}
.plan-timeline-toggle{right:18px;top:90px;padding:6px 12px;border-radius:999px;font-size:11px;}
.plan-timeline::-webkit-scrollbar{width:8px;}
.plan-timeline::-webkit-scrollbar-thumb{background:#bfd2ff;border-radius:999px;}
body.dark-mode .plan-timeline{background:linear-gradient(165deg,rgba(20,29,46,.95),rgba(16,23,38,.93));border-color:#334155;box-shadow:0 18px 34px rgba(0,0,0,.4);}
body.dark-mode .plan-timeline li{background:#1c2638;border-color:#334155;box-shadow:none;}
body.dark-mode .plan-timeline li.running{background:#112a2d;border-color:#256e67;}
body.dark-mode .plan-timeline li.timeout{background:#3a1f30;border-color:#7f1d3b;}
body.dark-mode .plan-timeline li.done{background:#123026;border-color:#166534;}
body.dark-mode .plan-timeline-toggle{background:#1b2536;border-color:#334155;color:#dbeafe;}

/* ===== 修复：工具按钮改为右下角（返回顶部上方） ===== */
.side-float-panel{left:auto!important;right:24px!important;top:auto!important;bottom:88px!important;transform:none!important;z-index:1001;}
.side-float-tab{display:none!important;}
.side-float-btns{order:1!important;transform:none!important;pointer-events:auto!important;border:1px solid #d7e3ff!important;border-radius:14px!important;padding:8px 8px!important;gap:6px!important;background:#ffffffeb!important;box-shadow:0 10px 24px rgba(42,28,88,.18)!important;max-width:170px;}
.side-float-btns button{font-size:12px!important;padding:7px 10px!important;border-radius:9px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
@media (max-width:980px){.side-float-panel{right:12px!important;bottom:76px!important}.side-float-btns{max-width:156px}}
/* ===== legacy cspjs 页面主题兼容 ===== */
body.legacy-cspjs-page{padding-top:0!important}
body.legacy-cspjs-page .wrap{max-width:1500px;margin:0 auto;padding:14px 12px 30px}
body.legacy-cspjs-page #body,
body.legacy-cspjs-page #main.ui.main.container{width:100%!important;max-width:100%!important;margin:0!important;padding:0!important}
body.legacy-cspjs-page .row_detail,
body.legacy-cspjs-page .col-xs-9.row_detail{width:100%!important;float:none!important}
body.legacy-cspjs-page .div_box_w,
body.legacy-cspjs-page .padding{background:#ffffffd8;border:2px solid var(--line);border-radius:16px;box-shadow:0 8px 24px rgba(43,29,58,.12);padding:16px 18px!important;margin-bottom:16px}
body.legacy-cspjs-page .head_box_text_w h1{font-size:2rem;color:#4b2e83;margin:0 0 10px}
body.legacy-cspjs-page .am-panel{border:2px solid #e5ddf7;border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 6px 18px rgba(43,29,58,.08)}
body.legacy-cspjs-page .am-panel-hd{background:linear-gradient(120deg,#5f27cd,#54a0ff)!important;color:#fff;border:none;padding:11px 14px}
body.legacy-cspjs-page .am-panel-title{font-size:1rem;font-weight:800;letter-spacing:.02em;color:#fff}
body.legacy-cspjs-page .am-panel-bd{padding:14px 16px}
body.legacy-cspjs-page .div_choice_title p{font-size:1.02rem;line-height:1.85;color:#2b1d3a;margin-bottom:8px}
body.legacy-cspjs-page .p_queid{display:inline-flex;align-items:center;gap:6px;background:#f3ebff;border:1px solid #d8c7ff;color:#512a68;border-radius:999px;padding:1px 10px;font-weight:700;font-size:.9rem;margin-bottom:6px}
body.legacy-cspjs-page .am-btn-group-stacked .option_bt,
body.legacy-cspjs-page .am-btn-group-group .option_bt,
body.legacy-cspjs-page .div_choice_blank .form-group{display:block}
body.legacy-cspjs-page .option_bt,
body.legacy-cspjs-page .label_option{width:100%!important;display:block!important;text-align:left!important}
body.legacy-cspjs-page .label_option{background:#f9f5ff;border:1px solid #e5d8ff;border-radius:10px;padding:10px 12px;color:#2b1d3a;margin:6px 0;transition:.18s}
body.legacy-cspjs-page .label_option:hover{background:#f1e8ff;border-color:#cdb4ff}
body.legacy-cspjs-page .input_RadioCheckbox_choice{margin-right:8px}
body.legacy-cspjs-page .pre_option{display:inline!important;white-space:pre-wrap;background:none;border:none;padding:0;margin:0;font-size:1rem;color:inherit;font-family:inherit}
body.legacy-cspjs-page .div_points_que{margin-top:8px;padding-top:8px;border-top:1px dashed #e4daf7}
body.legacy-cspjs-page .show_answer{background:#fff3e0;border:1px solid #ffd8a8;color:#9a4700;border-radius:999px;padding:4px 12px;font-weight:700}
body.legacy-cspjs-page .show_answer:hover{background:#ffe5bf}
body.legacy-cspjs-page .div_trueanswer{margin-top:8px;background:#f4fff4;border:1px solid #b7efc3;color:#1b5e20;border-radius:10px;padding:9px 12px;font-weight:700}
body.legacy-cspjs-page #doc-dropdown-js .am-dropdown-content{margin-top:8px;padding:12px;background:#fffbe8;border:1px solid #ffe8a3;border-radius:10px;color:#5a4200;line-height:1.85}
body.legacy-cspjs-page .am-pagination{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0 0 10px}
body.legacy-cspjs-page .am-pagination li{float:none!important}
body.legacy-cspjs-page .am-pagination a{display:inline-block;border:1px solid #d7c7ff;background:#fff;border-radius:999px;padding:6px 12px;color:#4b2e83;font-weight:700}
body.legacy-cspjs-page .am-pagination a:hover{background:#f1e8ff;border-color:#bda0ff}
body.legacy-cspjs-page .text-center{font-size:.92rem;color:#6d6090;padding:18px 0 6px}
body.legacy-cspjs-page .text-center a{color:#5f27cd}
body.legacy-cspjs-page .code-block-wrapper{margin:12px 0;border-radius:12px;overflow:hidden;box-shadow:0 3px 10px rgba(0,0,0,.12)}
body.legacy-cspjs-page .code-block-header{background:#2d3748;color:#a0aec0;font-size:13px;padding:8px 12px;display:flex;align-items:center;justify-content:space-between}
body.legacy-cspjs-page .code-block-header .lang-label{color:#79e2a5;font-weight:700;font-size:13px}
body.legacy-cspjs-page .copy-btn{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);color:#e2e8f0;border-radius:8px;padding:5px 11px;font-size:12px;cursor:pointer}
body.legacy-cspjs-page .copy-btn:hover{background:rgba(255,255,255,.2)}
body.legacy-cspjs-page pre{margin:0;background:linear-gradient(180deg,#0f172a,#111827);overflow-x:auto;padding:16px 18px;line-height:1.6}
body.legacy-cspjs-page pre code{background:none;border:none;color:#e5e7eb;padding:0;font-size:16px;white-space:pre;font-family:"JetBrains Mono","Fira Code",Consolas,Menlo,Monaco,"Courier New",monospace}
body.legacy-cspjs-page .code-block-wrapper{margin:12px 0;border-radius:12px;overflow:hidden;box-shadow:0 3px 10px rgba(0,0,0,.12)}
body.legacy-cspjs-page .code-block-header{background:#2d3748;color:#a0aec0;font-size:13px;padding:8px 12px;display:flex;align-items:center;justify-content:space-between}
body.legacy-cspjs-page .code-block-header .lang-label{color:#79e2a5;font-weight:700;font-size:13px}
body.legacy-cspjs-page .copy-btn{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);color:#e2e8f0;border-radius:8px;padding:5px 11px;font-size:12px;cursor:pointer}
body.legacy-cspjs-page .copy-btn:hover{background:rgba(255,255,255,.2)}
body.legacy-cspjs-page pre{margin:0;background:linear-gradient(180deg,#0f172a,#111827);overflow-x:auto;padding:16px 18px;line-height:1.6}
body.legacy-cspjs-page pre code{background:none;border:none;color:#e5e7eb;padding:0;font-size:16px;white-space:pre;font-family:"JetBrains Mono","Fira Code",Consolas,Menlo,Monaco,"Courier New",monospace}
body.legacy-cspjs-page .code-block-wrapper{margin:12px 0;border-radius:12px;overflow:hidden;box-shadow:0 3px 10px rgba(0,0,0,.12)}
body.legacy-cspjs-page .code-block-header{background:#2d3748;color:#a0aec0;font-size:13px;padding:8px 12px;display:flex;align-items:center;justify-content:space-between}
body.legacy-cspjs-page .code-block-header .lang-label{color:#79e2a5;font-weight:700;font-size:13px}
body.legacy-cspjs-page .copy-btn{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.24);color:#e2e8f0;border-radius:8px;padding:5px 11px;font-size:12px;cursor:pointer}
body.legacy-cspjs-page .copy-btn:hover{background:rgba(255,255,255,.2)}
body.legacy-cspjs-page pre{margin:0;background:linear-gradient(180deg,#0f172a,#111827);overflow-x:auto;padding:16px 18px;line-height:1.6}
body.legacy-cspjs-page pre code{background:none;border:none;color:#e5e7eb;padding:0;font-size:16px;white-space:pre;font-family:"JetBrains Mono","Fira Code",Consolas,Menlo,Monaco,"Courier New",monospace}
@media (max-width:768px){body.legacy-cspjs-page .wrap{padding:10px 8px 24px}body.legacy-cspjs-page .padding,body.legacy-cspjs-page .div_box_w{padding:12px 12px!important}body.legacy-cspjs-page .head_box_text_w h1{font-size:1.45rem}}


/* 低分辨率仍显示节奏条（修复看不到问题） */
@media (max-width:1280px){.lesson-page .plan-timeline{display:block!important}.lesson-page .plan-timeline-toggle{display:inline-block!important}}

/* 工具按钮仅在悬停返回顶部按钮时显示 */
.side-float-panel{opacity:0;pointer-events:none;transform:translateY(8px)!important;transition:opacity .2s ease, transform .2s ease}
#back-to-top.visible:hover ~ .side-float-panel,#back-to-top.visible:focus-visible ~ .side-float-panel,.side-float-panel:hover,.side-float-panel:focus-within{opacity:1;pointer-events:auto;transform:translateY(0)!important}


/* ===== 增强层（并入 style.css） ===== */
/* ===== 增强版样式表 ===== */
/* 导入原始样式 */

/* ===== 1. 字体系统升级 ===== */

:root {
  --font-display: 'Poppins', 'Microsoft YaHei', sans-serif;
  --font-body: 'Microsoft YaHei', 'PingFang SC', sans-serif;
  --primary: #6d28d9;
  --secondary: #0ea5e9;
  --accent: #f59e0b;
}

body {
  font-family: var(--font-body);
  background:
    radial-gradient(circle at top left, rgba(255,255,255,.95) 0, rgba(255,255,255,0) 22%),
    radial-gradient(circle at 85% 12%, rgba(255,230,163,.55) 0, rgba(255,230,163,0) 20%),
    linear-gradient(180deg,#fff8e9 0%,#f7fbff 42%,#f1fbff 100%);
}

.page-wrapper.home-page {
  position: relative;
  padding-top: 30px;
  padding-bottom: 16px;
}

.home-feature-strip {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin: 0 0 28px;
}

.home-feature-card {
  background: rgba(255,255,255,.84);
  border: 1px solid rgba(187,222,251,.92);
  border-radius: 22px;
  padding: 18px 16px;
  text-align: center;
  box-shadow: 0 12px 28px rgba(36,89,165,.08);
  backdrop-filter: blur(8px);
  transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}

.home-feature-card:hover {
  transform: translateY(-4px);
  border-color: rgba(21,101,192,.55);
  box-shadow: 0 18px 34px rgba(36,89,165,.13);
}

.home-feature-card span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  margin-bottom: 8px;
  border-radius: 16px;
  background: linear-gradient(135deg, #e3f2fd, #fff7e1);
  font-size: 28px;
}

.home-feature-card strong {
  display: block;
  color: #1565c0;
  font-size: 16px;
  font-weight: 900;
  margin-bottom: 4px;
}

.home-feature-card p {
  margin: 0;
  color: #546e7a;
  font-size: 13px;
  line-height: 1.7;
}

.site-header {
  min-height: 64px;
}

.site-footer {
  position: relative;
  z-index: 1;
  margin-top: 8px;
  background: linear-gradient(180deg, rgba(255,255,255,0), rgba(227,242,253,.86));
  border-top: 1px solid rgba(187,222,251,.75);
}

.site-footer p {
  margin: 0;
  color: #516579;
  font-weight: 700;
}

.page-wrapper.home-page::before {
  content: '';
  position: absolute;
  inset: 0 8px auto;
  height: 220px;
  border-radius: 32px;
  background: linear-gradient(135deg, rgba(95,39,205,.08), rgba(84,160,255,.05) 45%, rgba(255,209,102,.14));
  filter: blur(2px);
  pointer-events: none;
}

.home-stack-section {
  position: relative;
  margin-bottom: 28px !important;
}

.home-stack-section > * {
  position: relative;
  z-index: 1;
}

.chapter-map,
.cert-section,
.global-search-section {
  background: rgba(255,255,255,.72);
  border: 1px solid rgba(216,230,255,.95);
  border-radius: 28px;
  padding: 26px 22px;
  box-shadow: 0 14px 34px rgba(36,89,165,.08);
  backdrop-filter: blur(10px);
}

.chapter-map {
  background: linear-gradient(180deg, rgba(255,255,255,.82), rgba(245,249,255,.9));
}

.map-section-title {
  gap: 14px;
  margin: 0 0 20px;
}

.map-section-title h2 {
  font-size: 24px;
}

.map-section-badge {
  padding: 6px 14px;
  box-shadow: 0 6px 18px rgba(21,101,192,.08);
}

.map-section-line {
  height: 3px;
  background: linear-gradient(90deg, #90caf9, rgba(255,255,255,0));
}

.cert-grid {
  gap: 18px;
  margin-bottom: 0;
}

.cert-card {
  border: 1px solid rgba(187,222,251,.95);
  border-radius: 22px;
  padding: 20px 22px;
  box-shadow: 0 8px 20px rgba(21,101,192,.06);
}

.cert-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 18px 36px rgba(21,101,192,.14);
}

.cert-title {
  margin-bottom: 6px;
}

.cert-desc {
  color: #425466;
}

.fun-zone-section {
  overflow: hidden;
  background:
    radial-gradient(circle at top right, rgba(124,58,237,.16), transparent 34%),
    radial-gradient(circle at bottom left, rgba(34,211,238,.13), transparent 30%),
    linear-gradient(135deg, rgba(255,255,255,.9), rgba(244,249,255,.98));
  border: 1px solid rgba(186,195,255,.9);
  box-shadow: 0 18px 42px rgba(88,70,190,.12);
}

.fun-zone-section::before {
  content: '';
  position: absolute;
  inset: -40px auto auto -50px;
  width: 180px;
  height: 180px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.95), rgba(255,255,255,0) 70%);
  pointer-events: none;
}

.fun-zone-title h2 {
  color: #5130a6;
}

.fun-zone-title .map-section-badge {
  background: linear-gradient(90deg, #ede9fe, #ecfeff);
  border-color: #c4b5fd;
  color: #5b34b5;
}

.fun-zone-title .map-section-line {
  background: linear-gradient(90deg, rgba(124,58,237,.42), rgba(34,211,238,.12), rgba(255,255,255,0));
}

.fun-zone-grid {
  position: relative;
}

.fun-zone-card {
  min-height: 168px;
  border: none;
  background: rgba(255,255,255,.88);
}

.fun-zone-card .cert-icon {
  font-size: 50px;
  filter: drop-shadow(0 8px 18px rgba(74,85,104,.15));
}

.fun-zone-card .cert-title {
  font-size: 18px;
}

.fun-zone-card .cert-range {
  font-size: 13px;
}

.global-search-section {
  background: linear-gradient(180deg, rgba(255,255,255,.88), rgba(240,248,255,.95));
}

.global-search-section .section-heading {
  text-align: center;
  margin-bottom: 18px;
}

.global-search-section .section-heading p {
  font-size: 15px;
}

.global-search-wrap {
  max-width: 720px;
}

#global-search-input {
  padding: 16px 20px;
  border-radius: 16px;
  border: 1.5px solid rgba(144,202,249,.9);
  box-shadow: 0 10px 24px rgba(21,101,192,.08);
}

#global-search-input:focus {
  transform: translateY(-1px);
}

h1, h2, h3, h4, h5, h6, .site-title, .hero h1, .section-heading h2 {
  font-family: var(--font-display);
  letter-spacing: -0.02em;
}

/* ===== 2. 英雄区动画背景 ===== */
@keyframes float-slow {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  50% { transform: translateY(-20px) rotate(5deg); }
}

@keyframes float-medium {
  0%, 100% { transform: translateY(0px) rotate(0deg); }
  50% { transform: translateY(-15px) rotate(-3deg); }
}

@keyframes pulse-glow {
  0%, 100% { opacity: 0.3; }
  50% { opacity: 0.8; }
}

@keyframes slide-in-up {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slide-in-down {
  from {
    opacity: 0;
    transform: translateY(-30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(135deg, #6d28d9 0%, #7c3aed 50%, #0ea5e9 100%);
  border: none;
  color: #fff;
  animation: slide-in-down 0.8s ease-out;
}

.hero::before {
  content: '';
  position: absolute;
  top: -50%;
  right: -10%;
  width: 500px;
  height: 500px;
  background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
  border-radius: 50%;
  animation: float-slow 8s ease-in-out infinite;
  pointer-events: none;
}

.hero::after {
  content: '';
  position: absolute;
  bottom: -30%;
  left: -5%;
  width: 400px;
  height: 400px;
  background: radial-gradient(circle, rgba(255,255,255,0.08) 0%, transparent 70%);
  border-radius: 50%;
  animation: float-medium 10s ease-in-out infinite;
  pointer-events: none;
}

.hero-icon {
  animation: float 3s ease-in-out infinite;
  filter: drop-shadow(0 8px 16px rgba(0,0,0,0.2));
}

.hero h1 {
  color: #fff;
  font-size: 3.2rem;
  font-weight: 800;
  line-height: 1.1;
  margin-bottom: 16px;
  animation: slide-in-up 0.8s ease-out 0.2s both;
  text-shadow: 0 4px 12px rgba(0,0,0,0.2);
}

.hero p {
  color: rgba(255,255,255,0.95);
  font-size: 1.1rem;
  animation: slide-in-up 0.8s ease-out 0.4s both;
}

.hero-home-badge {
  background: rgba(255,255,255,0.2);
  border: 1px solid rgba(255,255,255,0.4);
  color: #fff;
  animation: slide-in-up 0.8s ease-out 0.1s both;
  backdrop-filter: blur(10px);
}

.ci-hero {
  background: linear-gradient(135deg, #7b1fa2 0%, #9c27b0 50%, #6d28d9 100%);
  border: none;
  color: #fff;
  animation: slide-in-down 0.8s ease-out;
}

.ci-hero::before {
  content: '';
  position: absolute;
  top: -50%;
  right: -10%;
  width: 500px;
  height: 500px;
  background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
  border-radius: 50%;
  animation: float-slow 8s ease-in-out infinite;
  pointer-events: none;
}

/* ===== 3. 卡片深度感与3D效果 ===== */
.chapter-card, .lesson-card, .ci-card {
  position: relative;
  transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
  border: 2px solid rgba(255,255,255,0.6);
}

.chapter-card:hover, .lesson-card:hover, .ci-card:hover {
  transform: translateY(-8px) scale(1.02);
  box-shadow: 0 20px 40px rgba(109, 40, 217, 0.2);
  border-color: rgba(109, 40, 217, 0.3);
}

.chapter-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.5) 0%, transparent 100%);
  border-radius: 16px;
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}

.chapter-card:hover::before {
  opacity: 1;
}

/* ===== 4. 颜色系统优化 ===== */
.site-header {
  background: linear-gradient(120deg, #6d28d9 0%, #0ea5e9 50%, #f59e0b 100%);
  box-shadow: 0 8px 32px rgba(109, 40, 217, 0.15);
}

.chapter-card.c1 {
  background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  border-color: #0ea5e9;
}

.chapter-card.c2 {
  background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
  border-color: #f59e0b;
}

.chapter-card.c3 {
  background: linear-gradient(135deg, #dcfce7 0%, #bbf7d0 100%);
  border-color: #10b981;
}

.chapter-card.c4 {
  background: linear-gradient(135deg, #fce7f3 0%, #fbcfe8 100%);
  border-color: #ec4899;
}

.chapter-card.c5 {
  background: linear-gradient(135deg, #ede9fe 0%, #ddd6fe 100%);
  border-color: #8b5cf6;
}

.chapter-card.c6 {
  background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  border-color: #3b82f6;
}

/* ===== 5. 交互动画增强 ===== */
@keyframes shimmer {
  0% { background-position: -1000px 0; }
  100% { background-position: 1000px 0; }
}

@keyframes bounce-in {
  0% { transform: scale(0.8); opacity: 0; }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); opacity: 1; }
}

.lesson-card {
  animation: bounce-in 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.lesson-card:nth-child(1) { animation-delay: 0.05s; }
.lesson-card:nth-child(2) { animation-delay: 0.1s; }
.lesson-card:nth-child(3) { animation-delay: 0.15s; }
.lesson-card:nth-child(4) { animation-delay: 0.2s; }
.lesson-card:nth-child(5) { animation-delay: 0.25s; }

.progress-bar-fill {
  animation: shimmer 2s infinite;
  background: linear-gradient(90deg, #6d28d9, #0ea5e9, #f59e0b, #6d28d9);
  background-size: 200% 100%;
}

/* ===== 6. 首页布局优化 - 不对称网格 ===== */
.chapter-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  animation: slide-in-up 0.8s ease-out 0.3s both;
}

.chapter-card:nth-child(1) {
  grid-column: span 1;
  animation-delay: 0.35s;
}

.chapter-card:nth-child(2) {
  grid-column: span 1;
  animation-delay: 0.4s;
}

.chapter-card:nth-child(3) {
  grid-column: span 1;
  animation-delay: 0.45s;
}

/* ===== 7. 深色模式优化 ===== */
body.dark-mode {
  background: linear-gradient(160deg, #0a0e27 0%, #0f1729 45%, #0a1a2e 100%);
}

body.dark-mode .hero {
  background: linear-gradient(135deg, #4c1d95 0%, #5b21b6 50%, #0c4a6e 100%);
}

body.dark-mode .chapter-card,
body.dark-mode .lesson-card {
  background: #1a1f3a;
  border-color: #334155;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}

body.dark-mode .chapter-card:hover,
body.dark-mode .lesson-card:hover {
  box-shadow: 0 20px 40px rgba(109, 40, 217, 0.3);
  border-color: #7c3aed;
}

body.dark-mode .chapter-card.c1 {
  background: linear-gradient(135deg, #0c2d4a 0%, #0f3a5f 100%);
  border-color: #0ea5e9;
}

body.dark-mode .chapter-card.c2 {
  background: linear-gradient(135deg, #3a2a0a 0%, #4a3a1a 100%);
  border-color: #f59e0b;
}

body.dark-mode .chapter-card.c3 {
  background: linear-gradient(135deg, #0a3a1a 0%, #1a4a2a 100%);
  border-color: #10b981;
}

body.dark-mode .chapter-card.c4 {
  background: linear-gradient(135deg, #3a1a2a 0%, #4a2a3a 100%);
  border-color: #ec4899;
}

body.dark-mode .chapter-card.c5 {
  background: linear-gradient(135deg, #2a1a4a 0%, #3a2a5a 100%);
  border-color: #8b5cf6;
}

body.dark-mode .chapter-card.c6 {
  background: linear-gradient(135deg, #0c2d4a 0%, #0f3a5f 100%);
  border-color: #3b82f6;
}

/* ===== 8. 微交互细节 ===== */
@keyframes celebrate {
  0% { transform: scale(1) rotate(0deg); }
  50% { transform: scale(1.2) rotate(10deg); }
  100% { transform: scale(1) rotate(0deg); }
}

.lesson-card.done {
  animation: celebrate 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.lesson-num {
  transition: all 0.3s ease;
  box-shadow: 0 4px 12px rgba(109, 40, 217, 0.2);
}

.lesson-card:hover .lesson-num {
  transform: scale(1.1);
  box-shadow: 0 8px 20px rgba(109, 40, 217, 0.4);
}

/* 搜索框增强 */
#ci-search, #course-search {
  transition: all 0.3s ease;
  box-shadow: 0 4px 12px rgba(109, 40, 217, 0.1);
}

#ci-search:focus, #course-search:focus {
  box-shadow: 0 8px 24px rgba(109, 40, 217, 0.25);
  transform: translateY(-2px);
}

/* 难度标签悬停效果 */
.ci-diff, .diff-easy, .diff-mid, .diff-hard {
  transition: all 0.2s ease;
  cursor: default;
}

.ci-card:hover .ci-diff,
.lesson-card:hover .lesson-difficulty {
  transform: scale(1.1);
  filter: brightness(1.2);
}

/* 进度条脉冲 */
@keyframes pulse-progress {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

.ci-prog-fill, .progress-bar-fill {
  animation: pulse-progress 2s ease-in-out infinite;
}

/* 页面加载渐入 */
.page-wrapper {
  animation: slide-in-up 0.8s ease-out;
}

.section-heading {
  animation: slide-in-up 0.8s ease-out 0.2s both;
}

/* 卡片网格渐入 */
.ci-grid {
  animation: slide-in-up 0.8s ease-out 0.3s both;
}

.ci-card {
  animation: bounce-in 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.ci-card:nth-child(1) { animation-delay: 0.35s; }
.ci-card:nth-child(2) { animation-delay: 0.4s; }
.ci-card:nth-child(3) { animation-delay: 0.45s; }
.ci-card:nth-child(4) { animation-delay: 0.5s; }
.ci-card:nth-child(5) { animation-delay: 0.55s; }
.ci-card:nth-child(6) { animation-delay: 0.6s; }

/* 返回顶部按钮增强 */
#back-to-top {
  background: linear-gradient(135deg, #6d28d9, #0ea5e9);
  box-shadow: 0 8px 24px rgba(109, 40, 217, 0.3);
  transition: all 0.3s ease;
}

#back-to-top:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(109, 40, 217, 0.4);
}

/* 响应式优化 */
@media (max-width: 768px) {
  .hero h1 {
    font-size: 2rem;
  }
  
  .chapter-grid {
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  }
}

/* 响应式优化补充 */
@media (max-width: 768px) {
  .chapter-map,
  .cert-section,
  .global-search-section {
    border-radius: 22px;
    padding: 20px 16px;
  }

  .page-wrapper.home-page {
    padding-top: 18px;
  }

  .page-wrapper.home-page::before {
    inset: 0 0 auto;
    height: 180px;
    border-radius: 24px;
  }

  .map-section-title {
    flex-wrap: wrap;
    gap: 10px;
  }

  .map-section-title h2 {
    font-size: 22px;
    white-space: normal;
  }

  .map-section-line {
    min-width: 100%;
  }

  .fun-zone-card {
    min-height: auto;
  }

  .fun-zone-card .cert-icon {
    font-size: 44px;
  }
}

@media (max-width: 768px) {
  .site-header {
    min-height: auto;
    padding: 10px 14px;
    flex-wrap: wrap;
    gap: 8px 10px;
  }

  .site-header .header-subtitle {
    display: block;
    order: 3;
    width: 100%;
    margin-left: 0;
    font-size: 12px;
    opacity: .9;
  }

  .release-chip {
    margin-left: auto;
    font-size: 12px;
  }

  .home-feature-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }

  .home-feature-card {
    padding: 15px 12px;
    border-radius: 18px;
  }

  .home-feature-card span {
    width: 42px;
    height: 42px;
    font-size: 24px;
  }

  .site-footer {
    padding: 20px 14px 84px;
    font-size: 13px;
  }
}

@media (max-width: 520px) {
  .home-feature-strip {
    grid-template-columns: 1fr;
  }

  .home-hero {
    padding: 38px 18px 34px;
    border-radius: 22px;
  }

  .home-hero-actions {
    flex-direction: column;
  }

  .home-hero-actions a {
    width: 100%;
  }
}

/* 平滑滚动 */
html {
  scroll-behavior: smooth;
}

/* 焦点状态增强 */
button:focus-visible, a:focus-visible, input:focus-visible {
  outline: 2px solid #6d28d9;
  outline-offset: 2px;
}

/* 禁用动画的用户偏好 */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ===== 首页组件基础层（并入 style.css） ===== */
/* home-extra.css - ???? */
.home-hero{
  background:linear-gradient(135deg,#e3f2fd 0%,#e8f5e9 100%);
  border-radius:28px;
  padding:56px 40px 48px;
  text-align:center;
  color:#1a237e;
  margin-bottom:28px;
  position:relative;
  overflow:hidden;
  box-shadow:0 12px 48px rgba(21,101,192,.15);
  border:2px solid #90caf9;
}
.home-hero::before{
  content:'';
  position:absolute;
  inset:0;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Ccircle cx='1' cy='1' r='1.5' fill='%231565c0' fill-opacity='.04'/%3E%3C/svg%3E");
  pointer-events:none;
}
.hero-stars{
  font-size:28px;
  margin-bottom:12px;
  animation:twinkle 2s ease-in-out infinite;
}
.hero-stars-bottom{
  font-size:24px;
  margin-top:16px;
  animation:twinkle 2.5s ease-in-out infinite;
}
@keyframes twinkle{0%,100%{opacity:0.6}50%{opacity:1}}
.home-hero-badge{
  display:inline-block;
  background:linear-gradient(90deg,#ff6d00,#ffca28);
  border:none;
  border-radius:999px;
  padding:7px 20px;
  font-size:14px;
  font-weight:800;
  margin-bottom:18px;
  color:#fff;
  box-shadow:0 4px 12px rgba(255,109,0,.3);
}
.home-hero h1{
  font-size:48px;
  font-weight:900;
  color:#1565c0!important;
  -webkit-text-fill-color:#1565c0!important;
  background:none!important;
  margin-bottom:14px;
  text-shadow:0 2px 4px rgba(0,0,0,.05);
  line-height:1.2;
  letter-spacing:1px;
}
.home-hero p{
  font-size:18px;
  color:#37474f!important;
  margin:0 auto 28px;
  line-height:1.8;
  max-width:600px;
}
.home-hero-actions{
  display:flex;
  gap:16px;
  justify-content:center;
  flex-wrap:wrap;
}
.home-hero-icon{
  font-size:72px;
  display:block;
  margin-bottom:12px;
  animation:float 3s ease-in-out infinite;
}
@keyframes float{50%{transform:translateY(-10px)}}
.btn-large{
  font-size:17px!important;
  padding:15px 36px!important;
  border-radius:999px!important;
  font-weight:800!important;
  transition:.25s!important;
  box-shadow:0 6px 20px rgba(0,0,0,.12)!important;
}
.btn-orange{
  background:linear-gradient(135deg,#ff6d00,#ffca28);
  color:#fff;
  font-weight:800;
  font-size:16px;
  padding:13px 30px;
  border-radius:999px;
  text-decoration:none;
  box-shadow:0 6px 20px rgba(255,109,0,.45);
  transition:.2s;
  display:inline-block;
}
.btn-orange:hover{
  transform:translateY(-3px) scale(1.05);
  color:#fff!important;
  box-shadow:0 8px 28px rgba(255,109,0,.55);
}
.btn-white{
  background:#fff;
  border:2px solid #1565c0;
  color:#1565c0;
  font-weight:800;
  font-size:16px;
  padding:13px 30px;
  border-radius:999px;
  text-decoration:none;
  transition:.2s;
  display:inline-block;
}
.btn-white:hover{
  background:#e3f2fd;
  transform:translateY(-3px);
  color:#1565c0!important;
  box-shadow:0 6px 20px rgba(21,101,192,.2);
}
.map-section-title{
  display:flex;
  align-items:center;
  gap:12px;
  margin:0 0 18px;
}
.map-section-title h2{
  font-size:22px;
  font-weight:800;
  color:#1565c0;
  margin:0;
  white-space:nowrap;
}
.map-section-badge{
  font-size:12px;
  font-weight:700;
  padding:4px 12px;
  border-radius:999px;
  background:#e3f2fd;
  color:#1565c0;
  border:1px solid #90caf9;
  white-space:nowrap;
}
.map-section-line{
  flex:1;
  height:2px;
  background:linear-gradient(90deg,#90caf9,transparent);
  border-radius:999px;
}
.cert-grid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:16px;
  margin-bottom:28px;
}
.cert-card{
  display:flex;
  align-items:center;
  gap:16px;
  background:#fff;
  border:2px solid #bbdefb;
  border-radius:18px;
  padding:18px 20px;
  text-decoration:none;
  color:#1a237e;
  transition:.25s;
  position:relative;
  overflow:hidden;
}
.cert-card::before{
  content:'';
  position:absolute;
  top:0;
  left:0;
  width:5px;
  height:100%;
}
.cc-rumen::before{background:linear-gradient(180deg,#ff6d00,#ffca28);}
.cc-lianxi::before{background:linear-gradient(180deg,#ff8f00,#ffeb3b);}
.cc-jichu::before{background:linear-gradient(180deg,#00897b,#26a69a);}
.cc-gesp::before{background:linear-gradient(180deg,#1565c0,#0288d1);}
.cc-noip::before{background:linear-gradient(180deg,#ea580c,#fb923c);}
.cc-cspj::before{background:linear-gradient(180deg,#c62828,#ef5350);}
.cc-cspjs::before{background:linear-gradient(180deg,#6a1b9a,#ab47bc);}
.cc-dp::before{background:linear-gradient(180deg,#1565c0,#42a5f5);}
.cc-suanfa::before{background:linear-gradient(180deg,#0891b2,#22d3ee);}
.cc-data::before{background:linear-gradient(180deg,#0f766e,#34d399);}
.cc-diyi::before{background:linear-gradient(180deg,#2563eb,#60a5fa);}
.cc-xunlian1::before{background:linear-gradient(180deg,#7c3aed,#a78bfa);}
.cc-xunlian2::before{background:linear-gradient(180deg,#be185d,#f472b6);}
.cc-aoshu1::before{background:linear-gradient(180deg,#ff7a18,#ffb347);}
.cc-aoshu2::before{background:linear-gradient(180deg,#0f4c81,#2cb1bc);}
.cc-dongfang1::before{background:linear-gradient(180deg,#0d47a1,#42a5f5);}
.cc-dongfang2::before{background:linear-gradient(180deg,#01579b,#26c6da);}
.cc-game::before{background:linear-gradient(180deg,#7c3aed,#22d3ee);}
.cc-scratch::before{background:linear-gradient(180deg,#f97316,#facc15);}
.cc-ketang::before{background:linear-gradient(180deg,#f59e0b,#ec4899);}
.cc-ketang:hover{border-color:#ec4899;box-shadow:0 12px 32px rgba(236,72,153,.22);}
.cert-card:hover{
  transform:translateY(-4px);
  box-shadow:0 12px 32px rgba(21,101,192,.18);
  border-color:#1565c0;
}
.cert-icon{
  font-size:44px;
  flex-shrink:0;
}
.cert-info{
  flex:1;
  min-width:0;
}
.cert-title{
  font-size:16px;
  font-weight:800;
  color:#1565c0;
  margin-bottom:4px;
}
.cert-range{
  font-size:12px;
  color:#546e7a;
  margin-bottom:5px;
}
.cert-desc{
  font-size:13px;
  color:#37474f;
  line-height:1.5;
}
.cert-tag{
  display:inline-block;
  font-size:11px;
  font-weight:700;
  padding:3px 9px;
  border-radius:999px;
  margin-top:5px;
}
.cc-rumen .cert-tag{background:#fff8e1;color:#e65100;border:1px solid #ffd54f;}
.cc-lianxi .cert-tag{background:#fff3e0;color:#ef6c00;border:1px solid #ffcc80;}
.cc-jichu .cert-tag{background:#e8f5e9;color:#2e7d32;border:1px solid #81c784;}
.cc-gesp .cert-tag{background:#e3f2fd;color:#1565c0;border:1px solid #90caf9;}
.cc-noip .cert-tag{background:#fff4e5;color:#c2410c;border:1px solid #fdba74;}
.cc-cspj .cert-tag{background:#ffebee;color:#c62828;border:1px solid #ef9a9a;}
.cc-cspjs .cert-tag{background:#f3e8ff;color:#7e22ce;border:1px solid #d8b4fe;}
.cc-dp .cert-tag{background:#e3f2fd;color:#1565c0;border:1px solid #90caf9;}
.cc-suanfa .cert-tag{background:#ecfeff;color:#0f766e;border:1px solid #67e8f9;}
.cc-data .cert-tag{background:#ecfdf5;color:#047857;border:1px solid #86efac;}
.cc-diyi .cert-tag{background:#eff6ff;color:#1d4ed8;border:1px solid #93c5fd;}
.cc-xunlian1 .cert-tag{background:#f5f3ff;color:#6d28d9;border:1px solid #c4b5fd;}
.cc-xunlian2 .cert-tag{background:#fdf2f8;color:#be185d;border:1px solid #f9a8d4;}
.cc-aoshu1 .cert-tag{background:#fff7ed;color:#c2410c;border:1px solid #fdba74;}
.cc-aoshu2 .cert-tag{background:#ecfeff;color:#155e75;border:1px solid #67e8f9;}
.cc-dongfang1 .cert-tag{background:#e3f2fd;color:#0d47a1;border:1px solid #90caf9;}
.cc-dongfang2 .cert-tag{background:#e0f7fa;color:#006064;border:1px solid #4dd0e1;}
.cc-game .cert-tag{background:#f3e8ff;color:#7c3aed;border:1px solid #c4b5fd;}
.cc-scratch .cert-tag{background:#fff7ed;color:#ea580c;border:1px solid #fdba74;}
.cc-ketang .cert-tag{background:#fff1f2;color:#be185d;border:1px solid #f9a8d4;}
.home-bottom-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px;
  margin-bottom:28px;
  align-items:stretch;
}
.home-bottom-grid > section{
  display:flex;
  flex-direction:column;
}
.home-bottom-grid .mission-card{
  flex:1;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  box-sizing:border-box;
}
.home-bottom-grid .recommend-card{
  flex:1;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  text-align:center;
  box-sizing:border-box;
  gap:18px;
}
.home-bottom-grid .recommend-card .recommend-title{
  text-align:center;
  width:100%;
}
@media(max-width:700px){
  .feat-strip{grid-template-columns:repeat(2,1fr);}
  .cert-grid{grid-template-columns:1fr;}
  .home-bottom-grid{grid-template-columns:1fr;}
  .home-hero h1{font-size:32px;}
  .home-hero p{font-size:16px;}
  .home-hero-icon{font-size:56px;}
}
.home-bottom-grid .recommend-card .cta-btn{align-self:center;}

/* ????????? */
.streak-calendar-section{width:100%;box-sizing:border-box;margin-bottom:24px;}
.streak-calendar-section .streak-calendar-wrap{border-radius:16px;}

/* ?????????????????????????? */
.learning-overview{margin-bottom:28px;}
.learning-overview .section-heading{margin-bottom:16px;}
.learning-overview .section-heading h2{font-size:22px;font-weight:800;color:#1565c0;margin:0;}
.learning-overview .section-heading p{font-size:14px;color:#546e7a;margin:4px 0 0;}
.overview-card{background:#fff;border:2px solid #bbdefb;border-radius:18px;padding:20px;box-shadow:0 4px 16px rgba(21,101,192,.08);}
.overview-row{display:grid;grid-template-columns:140px 1fr 50px;align-items:center;gap:12px;padding:10px 0;font-size:14px;color:#35527a;border-bottom:1px solid #f0f0f0;}
.overview-row:last-child{border-bottom:none;}
.overview-bar{height:12px;background:#e9f2ff;border-radius:999px;overflow:hidden;}
.overview-bar i{display:block;height:100%;background:linear-gradient(90deg,#54a0ff,#2ed573);border-radius:999px;}
.overview-divider{font-size:13px;font-weight:700;color:#546e7a;padding:12px 0 8px;border-top:2px dashed #e0e0e0;margin-top:8px;}
.overview-actions{margin-top:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.overall-progress{font-size:14px;font-weight:700;color:#2459a5;background:#ecf4ff;border-radius:999px;padding:6px 12px;}
.overview-btns{display:flex;gap:10px;flex-wrap:wrap;}
.achievement-grid{margin-top:16px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.achievement-badge{font-size:12px;border:1px solid #d7e8ff;background:#f7fbff;color:#7a8ba4;border-radius:999px;padding:8px 10px;text-align:center;font-weight:700;transition:.2s;}
.achievement-badge.unlocked{color:#2459a5;background:#eaf4ff;border-color:#8ec5ff;box-shadow:0 2px 8px #90c2ff55;}
.parent-panel{margin-top:16px;background:#fffbe8;border:2px solid #ffe58f;border-radius:12px;padding:12px 14px;}
.parent-panel h3{font-size:14px;color:#7c5e00;margin-bottom:6px;font-weight:800;}
.parent-panel p{font-size:13px;color:#6f5a1d;line-height:1.6;margin:0;}
.streak-calendar-section{margin-bottom:28px;}
.streak-calendar-section .section-heading{margin-bottom:16px;}
.streak-calendar-section .section-heading h2{font-size:22px;font-weight:800;color:#1565c0;margin:0;}
.streak-calendar-section .section-heading p{font-size:14px;color:#546e7a;margin:4px 0 0;}
.streak-calendar-wrap{background:#fff;border:2px solid #bbdefb;border-radius:18px;padding:20px;box-shadow:0 4px 16px rgba(21,101,192,.08);}
.streak-calendar-title{font-size:16px;font-weight:800;color:#1565c0;margin-bottom:14px;}
.streak-cal-grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:16px;
  margin-bottom:14px;
}
.sc-month-block{
  background:#f0f7ff;
  border-radius:14px;
  padding:12px 10px 10px;
  border:1.5px solid #bfdbfe;
}
.sc-month-label{
  font-size:13px;
  font-weight:800;
  color:#1565c0;
  margin-bottom:8px;
  text-align:center;
  letter-spacing:.3px;
}
.sc-month-grid{
  display:grid;
  grid-template-columns:repeat(7,1fr);
  gap:3px;
}
.sc-wh{
  font-size:10px;
  font-weight:700;
  color:#64748b;
  text-align:center;
  padding:2px 0 4px;
  line-height:1;
}
.sc-empty{width:100%;aspect-ratio:1;}
.sc-day{
  width:100%;
  aspect-ratio:1;
  border-radius:4px;
  background:#dbeafe;
  cursor:pointer;
  transition:transform .15s,box-shadow .15s;
  position:relative;
  min-width:0;
}
.sc-day[data-level="0"]{background:#dbeafe;}
.sc-day[data-level="1"]{background:#93c5fd;}
.sc-day[data-level="2"]{background:#3b82f6;}
.sc-day[data-level="3"]{background:#1d4ed8;}
.sc-day[data-level="4"]{background:#1e3a8a;box-shadow:0 0 6px rgba(30,58,138,.5);}
.sc-day.sc-today{outline:2px solid #f59e0b;outline-offset:1px;}
.sc-day.sc-future{background:#f1f5f9;cursor:default;opacity:.5;}
.sc-day:not(.sc-future):hover{transform:scale(1.3);z-index:10;box-shadow:0 2px 8px rgba(30,64,175,.35);}
.sc-legend{display:flex;align-items:center;gap:6px;font-size:12px;color:#546e7a;}
.sc-legend-box{width:12px;height:12px;border-radius:2px;display:inline-block;}
@media(max-width:700px){.streak-cal-grid{grid-template-columns:repeat(2,1fr);gap:10px;}}
@media(max-width:420px){.streak-cal-grid{grid-template-columns:1fr 1fr;gap:8px;}.sc-month-block{padding:8px 6px;}}
.global-search-section{margin-bottom:28px;}
.global-search-section .section-heading{margin-bottom:16px;}
.global-search-section .section-heading h2{font-size:22px;font-weight:800;color:#1565c0;margin:0;}
.global-search-section .section-heading p{font-size:14px;color:#546e7a;margin:4px 0 0;}
.global-search-wrap{position:relative;max-width:640px;margin:0 auto;}
#global-search-input{width:100%;box-sizing:border-box;padding:14px 18px;border:2px solid #bbdefb;border-radius:12px;font-size:15px;outline:none;background:#fff;box-shadow:0 2px 10px rgba(21,101,192,.08);transition:.2s;}
#global-search-input:focus{border-color:#1565c0;box-shadow:0 2px 16px rgba(21,101,192,.15);}
.home-zhenti-section{
  position:relative;
  padding:22px 22px 24px;
  border:2px solid #8db8ff;
  border-radius:30px;
  background:
    radial-gradient(circle at 10% 12%,rgba(255,255,255,.95),rgba(255,255,255,0) 22%),
    radial-gradient(circle at 88% 14%,rgba(255,215,120,.38),rgba(255,215,120,0) 22%),
    linear-gradient(135deg,#eaf4ff 0%,#f7fbff 48%,#eefcf8 100%);
  box-shadow:0 18px 42px rgba(36,89,165,.12);
  overflow:hidden;
}
.home-zhenti-section::before{
  content:'';
  position:absolute;
  right:-36px;
  top:-44px;
  width:160px;
  height:160px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(78,123,255,.16),rgba(78,123,255,0) 72%);
  pointer-events:none;
}
.home-zhenti-title h2{color:#123a7d;}
.home-zhenti-badge{
  background:linear-gradient(135deg,#ffcc54,#ff8a00);
  border:none;
  color:#fff;
  box-shadow:0 8px 18px rgba(255,138,0,.22);
}
.home-zhenti-intro{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  padding:18px 20px;
  margin-bottom:16px;
  border:2px solid #dbe9ff;
  border-radius:22px;
  background:linear-gradient(135deg,#f7fbff 0%,#eef6ff 58%,#f9fffb 100%);
  box-shadow:0 8px 20px rgba(21,101,192,.08);
}
.home-zhenti-copy{display:flex;flex-direction:column;gap:8px;max-width:760px;}
.home-zhenti-kicker{
  display:inline-flex;
  align-self:flex-start;
  padding:6px 12px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  color:#2459a5;
  background:#ffffff;
  border:1px solid #cfe3ff;
}
.home-zhenti-copy p{
  margin:0;
  font-size:14px;
  line-height:1.85;
  color:#4d607a;
}
.home-zhenti-entry{
  flex-shrink:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:12px 18px;
  border-radius:999px;
  text-decoration:none;
  color:#fff;
  font-size:14px;
  font-weight:800;
  background:linear-gradient(135deg,#2459a5,#4e7bff);
  box-shadow:0 10px 22px rgba(36,89,165,.18);
  transition:.22s;
}
.home-zhenti-entry:hover{transform:translateY(-2px);color:#fff;box-shadow:0 14px 28px rgba(36,89,165,.24);}
.home-zhenti-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
}
.home-zhenti-card{
  display:flex;
  flex-direction:column;
  gap:10px;
  min-height:170px;
  padding:18px;
  border-radius:22px;
  text-decoration:none;
  border:2px solid #dbe9ff;
  background:linear-gradient(180deg,#fff,#f8fbff);
  color:#223550;
  box-shadow:0 8px 18px rgba(36,89,165,.08);
  transition:.22s;
}
.home-zhenti-card[data-tone="warm"]{background:linear-gradient(180deg,#fffdf6,#fff8e8);}
.home-zhenti-card[data-tone="mint"]{background:linear-gradient(180deg,#fbfffd,#f1fff8);}
.home-zhenti-card[data-tone="violet"]{background:linear-gradient(180deg,#fcfbff,#f4f2ff);}
.home-zhenti-card:hover{transform:translateY(-4px);border-color:#7cb0ff;box-shadow:0 14px 28px rgba(36,89,165,.14);}
.home-zhenti-level{font-size:22px;font-weight:900;color:#173d82;}
.home-zhenti-count{
  align-self:flex-start;
  padding:5px 10px;
  border-radius:999px;
  font-size:12px;
  font-weight:800;
  background:#dbeafe;
  color:#1d4ed8;
}
.home-zhenti-desc{font-size:13px;line-height:1.8;color:#52627a;}
@media(max-width:980px){
  .home-zhenti-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:700px){
  .home-zhenti-intro{flex-direction:column;align-items:flex-start;}
}
@media(max-width:640px){
  .home-zhenti-grid{grid-template-columns:1fr;}
  .home-zhenti-card{min-height:auto;}
}
.global-search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;background:#fff;border:1.5px solid #bbdefb;border-radius:12px;box-shadow:0 8px 28px rgba(21,101,192,.12);z-index:200;overflow:hidden;max-height:360px;overflow-y:auto;}
.gs-item{display:flex;align-items:center;gap:10px;padding:12px 16px;text-decoration:none;color:#2b1d3a;border-bottom:1px solid #f5f5f5;transition:.13s;}
.gs-item:last-child{border-bottom:none;}
.gs-item:hover{background:#f0fafa;color:#1565c0;}
.gs-tag{flex-shrink:0;font-size:11px;font-weight:700;padding:3px 8px;border-radius:8px;background:#e0f2f1;color:#00695c;letter-spacing:.04em;}
.gs-title{font-size:14px;font-weight:500;}
.gs-empty{padding:16px;text-align:center;color:#90a4ae;font-size:14px;}

/* ???????????????? */
.learning-overview{margin-bottom:28px;}
.learning-overview .section-heading{margin-bottom:16px;}
.overview-card{background:#fff;border:2px solid #bbdefb;border-radius:18px;padding:20px;box-shadow:0 4px 16px rgba(21,101,192,.08);}
.streak-calendar-section{margin-bottom:28px;}
.streak-calendar-wrap{background:#fff;border:2px solid #bbdefb;border-radius:18px;padding:20px;box-shadow:0 4px 16px rgba(21,101,192,.08);}
.global-search-section{margin-bottom:28px;}
.global-search-wrap{position:relative;max-width:640px;margin:0 auto;}
#global-search-input{width:100%;box-sizing:border-box;padding:14px 18px;border:2px solid #bbdefb;border-radius:12px;font-size:15px;outline:none;background:#fff;box-shadow:0 2px 10px rgba(21,101,192,.08);transition:.2s;}
#global-search-input:focus{border-color:#1565c0;box-shadow:0 2px 16px rgba(21,101,192,.15);}

/* ===== ?????? ===== */
.ring-overview-grid{
  display:grid;
  grid-template-columns:repeat(6,1fr);
  gap:12px;
  margin-bottom:16px;
}
.ring-overview-item{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:6px;
}
.ring-svg-wrap{
  position:relative;
  width:72px;
  height:72px;
  display:flex;
  align-items:center;
  justify-content:center;
}
.ring-svg-wrap svg{
  position:absolute;
  top:0;left:0;
}
.ring-bg{
  fill:none;
  stroke:#e3f2fd;
  stroke-width:7;
}
.ring-fill{
  fill:none;
  stroke-width:7;
  stroke-linecap:round;
  transition:stroke-dashoffset 1s cubic-bezier(.4,0,.2,1);
}
.ring-label{
  position:relative;
  z-index:1;
  font-size:13px;
  font-weight:800;
  color:#1565c0;
  line-height:1;
  pointer-events:none;
}
.ring-name{
  font-size:12px;
  font-weight:700;
  color:#546e7a;
  text-align:center;
  line-height:1.3;
}
@media(max-width:700px){
  .ring-overview-grid{grid-template-columns:repeat(3,1fr);gap:8px;}
  .ring-svg-wrap{width:60px;height:60px;}
  .ring-svg-wrap svg{width:60px;height:60px;}
}

/* ===== ?????? ===== */
.streak-cal-grid{
  display:flex;
  flex-direction:row;
  gap:3px;
  flex-wrap:nowrap;
  overflow-x:auto;
  padding-bottom:4px;
  margin-bottom:12px;
  align-items:flex-start;
}
.sc-week{
  display:flex;
  flex-direction:column;
  gap:3px;
  flex-shrink:0;
}
.sc-day{
  position:relative;
  width:14px;
  height:14px;
  border-radius:3px;
  background:#e3f2fd;
  cursor:pointer;
  transition:transform .15s;
  flex-shrink:0;
}
.sc-day[data-level="0"]{background:#e3f2fd;}
.sc-day[data-level="1"]{background:#90caf9;}
.sc-day[data-level="2"]{background:#42a5f5;}
.sc-day[data-level="3"]{background:#1e88e5;}
.sc-day[data-level="4"]{background:#1565c0;}
.sc-day:hover{transform:scale(1.5);z-index:10;}
.sc-day-tooltip{
  display:none;
  position:absolute;
  bottom:calc(100% + 5px);
  left:50%;
  transform:translateX(-50%);
  background:#1a237e;
  color:#fff;
  font-size:11px;
  white-space:nowrap;
  padding:3px 7px;
  border-radius:6px;
  pointer-events:none;
  z-index:20;
  box-shadow:0 2px 8px rgba(0,0,0,.2);
}
.sc-day:hover .sc-day-tooltip{display:block;}

/* ===== ???????? ===== */
#mobile-tab-bar{
  display:none;
  position:fixed;
  bottom:0;
  left:0;
  right:0;
  z-index:1000;
  background:#fff;
  border-top:1.5px solid #bbdefb;
  box-shadow:0 -4px 16px rgba(21,101,192,.12);
  padding:0;
  margin:0;
}
@media(max-width:768px){
  #mobile-tab-bar{
    display:flex;
    align-items:stretch;
  }
  .page-wrapper{
    padding-bottom:72px !important;
  }
}
.mtb-item{
  flex:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  padding:8px 4px 10px;
  text-decoration:none;
  color:#546e7a;
  font-size:11px;
  font-weight:700;
  transition:.15s;
  min-width:0;
  -webkit-tap-highlight-color:transparent;
}
.mtb-item.active{
  color:#1565c0;
}
.mtb-item:hover{
  color:#1565c0;
  background:#f0f8ff;
}
.mtb-icon{
  font-size:20px;
  line-height:1;
  display:block;
}

/* ===== ?? & ???? ===== */
@keyframes flipReveal{
  from{opacity:0;transform:rotateY(40deg) scale(.96);}
  to{opacity:1;transform:rotateY(0) scale(1);}
}
.flip-reveal{
  animation:flipReveal .4s cubic-bezier(.4,0,.2,1);
}
@keyframes checkedPop{
  0%{transform:scale(1);}
  40%{transform:scale(1.07);}
  100%{transform:scale(1);}
}
.checked-pop{
  animation:checkedPop .35s ease;
}

/* ===== ???? & ?????? ???? ===== */
.cc-suanfa{border-left:4px solid #22c55e;}
.cc-suanfa:hover{border-color:#16a34a;box-shadow:0 6px 20px rgba(34,197,94,.2);}
.cc-suanfa .cert-icon{background:linear-gradient(135deg,#22c55e,#16a34a);}
.cc-suanfa .cert-tag{background:#f0fdf4;color:#15803d;border:1px solid #86efac;}

.cc-data{border-left:4px solid #7c3aed;}
.cc-data:hover{border-color:#5b21b6;box-shadow:0 6px 20px rgba(124,58,237,.2);}
.cc-data .cert-icon{background:linear-gradient(135deg,#7c3aed,#a855f7);}
.cc-data .cert-tag{background:#f5f3ff;color:#5b21b6;border:1px solid #c4b5fd;}

/* ===== 算法专项 & 数据结构专项 卡片样式 ===== */
.cc-suanfa{border-left:4px solid #22c55e;}
.cc-suanfa:hover{border-color:#16a34a;box-shadow:0 6px 20px rgba(34,197,94,.2);}
.cc-suanfa .cert-icon{background:linear-gradient(135deg,#22c55e,#16a34a);}
.cc-suanfa .cert-tag{background:#f0fdf4;color:#15803d;border:1px solid #86efac;}

.cc-data{border-left:4px solid #7c3aed;}
.cc-data:hover{border-color:#5b21b6;box-shadow:0 6px 20px rgba(124,58,237,.2);}
.cc-data .cert-icon{background:linear-gradient(135deg,#7c3aed,#a855f7);}
.cc-data .cert-tag{background:#f5f3ff;color:#5b21b6;border:1px solid #c4b5fd;}


/* ============================================================
   v7 视觉刷新层（全站统一设计系统）
   品牌：信奥小屋 · 青少年 C++ 编程学习
   主色：#4F46E5 靛蓝 | 强调：#F97316 竞赛橙 | 成功：#10B981
   说明：本层追加于 style.css 末尾，作为全站唯一视觉来源。
   ============================================================ */
:root{
  --brand:#4F46E5; --brand-deep:#3730A3; --brand-2:#3B82F6; --brand-3:#0EA5E9;
  --accent:#F97316; --accent-2:#FBBF24; --green:#10B981; --green-2:#34D399;
  --v-text:#1E293B; --v-muted:#64748B;
  --v-bg:#F8FAFF; --v-card:#FFFFFF; --v-line:#E2E8F0;
  --v-radius:16px; --v-shadow:0 10px 30px rgba(79,70,229,.08);
  --v-shadow-lg:0 18px 44px rgba(79,70,229,.14);
}

/* ========== 1. 全局基调 ========== */
body{
  background:
    radial-gradient(circle at 12% 8%, #fff 0, #fff0 30%),
    radial-gradient(circle at 88% 0%, #e6eeff 0, #fff0 24%),
    radial-gradient(circle at 50% 100%, #e9f8f1 0, #fff0 30%),
    linear-gradient(180deg,#f7f9ff 0%,#fbfcff 45%,#f4f8ff 100%);
}
.page-wrapper{max-width:1160px}

/* ========== 2. 顶栏（品牌 + 主导航） ========== */
.site-header{
  background:linear-gradient(120deg,#4338CA 0%,#4F46E5 34%,#3B82F6 74%,#0EA5E9 100%);
  box-shadow:0 10px 28px rgba(67,56,202,.22);
  min-height:64px;
}
.brand-link:hover .site-title,.brand-link:hover .logo-icon{color:#FFF3D6!important;text-shadow:0 2px 10px rgba(255,180,80,.5)}
.site-title{letter-spacing:3px}
.header-subtitle{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);padding:3px 12px;border-radius:999px;font-size:13px}
.release-chip{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.4)}
.logo-img{width:40px;height:40px;border-radius:12px;display:block;object-fit:cover;box-shadow:0 4px 12px rgba(0,0,0,.18);transition:transform .2s}
.logo-link:hover .logo-img{transform:scale(1.06) rotate(-3deg)}

/* 主导航 */
.site-header .site-nav{display:flex;align-items:center;gap:4px;margin-left:10px}
.site-header .site-nav a{color:#fff;font-size:14px;font-weight:700;padding:6px 13px;border-radius:999px;opacity:.9;transition:.18s;white-space:nowrap;text-decoration:none}
.site-header .site-nav a:hover{background:rgba(255,255,255,.16);opacity:1}
.site-header .site-nav a.active{background:rgba(255,255,255,.22);opacity:1}
.site-header .breadcrumb{margin-left:auto;font-size:13px}
.site-header .breadcrumb a{color:#fff!important;opacity:.95;text-decoration:none}
.site-header .breadcrumb a:hover{text-decoration:underline}

/* ========== 3. 首页 Hero ========== */
.home-hero{
  background:
    radial-gradient(circle at 12% 18%, rgba(255,255,255,.95), rgba(255,255,255,0) 26%),
    radial-gradient(circle at 88% 12%, rgba(255,209,102,.45), rgba(255,209,102,0) 22%),
    radial-gradient(circle at 78% 82%, rgba(52,211,153,.22), rgba(52,211,153,0) 26%),
    linear-gradient(135deg,#E8EEFF 0%,#F4F1FF 46%,#EAF7F3 100%);
  border:2px solid #D8E0F8;
  border-radius:32px;
  box-shadow:0 24px 60px rgba(79,70,229,.14);
  padding:60px 44px 52px;
}
.home-hero::before{
  background-image:radial-gradient(circle at 1px 1px, #4F46E5 1.5px, transparent 0);
  background-size:46px 46px;
  opacity:.5;
}
.home-hero h1{color:#312E81!important;-webkit-text-fill-color:#312E81!important}
.home-hero p{color:#475569!important}
.home-hero-badge{
  background:linear-gradient(90deg,#F97316,#FBBF24);
  box-shadow:0 6px 18px rgba(249,115,22,.35);
}
.btn-orange{background:linear-gradient(135deg,#F97316,#FB923C);box-shadow:0 8px 22px rgba(249,115,22,.4)}
.btn-orange:hover{box-shadow:0 12px 30px rgba(249,115,22,.55)}
.btn-white{border-color:#4F46E5;color:#4338CA}
.btn-white:hover{background:#EEF0FF;box-shadow:0 8px 24px rgba(79,70,229,.2);color:#3730A3}
.home-hero-stats{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:22px}
.hhs-item{display:flex;flex-direction:column;align-items:center;min-width:104px;padding:12px 18px;background:rgba(255,255,255,.86);border:1px solid #E3E8FB;border-radius:18px;box-shadow:0 8px 20px rgba(79,70,229,.08)}
.hhs-item strong{font-size:24px;font-weight:900;color:#4338CA}
.hhs-item span{font-size:12px;color:#64748B;font-weight:700;margin-top:2px}

/* 新手引导条 */
.home-starter{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:28px}
.starter-card{display:flex;align-items:center;gap:14px;background:rgba(255,255,255,.9);border:1px solid #E3E8FB;border-radius:20px;padding:16px 18px;box-shadow:0 10px 26px rgba(79,70,229,.07);text-decoration:none;color:#1E293B;transition:.22s}
.starter-card:hover{transform:translateY(-4px);box-shadow:0 16px 34px rgba(79,70,229,.13);border-color:#C7D2FE}
.starter-num{flex:0 0 46px;height:46px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:900;color:#fff;background:linear-gradient(135deg,#4F46E5,#0EA5E9)}
.starter-num.s2{background:linear-gradient(135deg,#F97316,#FBBF24)}
.starter-num.s3{background:linear-gradient(135deg,#10B981,#34D399)}
.starter-body strong{display:block;font-size:16px;color:#1E293B;margin-bottom:2px}
.starter-body span{font-size:12.5px;color:#64748B;line-height:1.5}

/* ========== 4. 分区标题 ========== */
.map-section-title h2{color:#312E81}
.map-section-badge{background:#EEF0FF;color:#4338CA;border-color:#C7D2FE}
.map-section-line{background:linear-gradient(90deg,#C7D2FE,transparent)}

/* ========== 5. 学习路径（阶梯） ========== */
.path-stair{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;position:relative;padding-top:8px}
.path-step{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;background:#fff;border:2px solid #E3E8FB;border-radius:18px;padding:18px 12px 16px;text-decoration:none;color:#1E293B;box-shadow:0 8px 20px rgba(79,70,229,.06);transition:.22s;overflow:hidden}
.path-step:hover{transform:translateY(-6px);box-shadow:0 18px 36px rgba(79,70,229,.14);border-color:#A5B4FC}
.path-step .ps-level{position:absolute;top:8px;right:10px;font-size:11px;font-weight:900;color:#A5B4FC}
.path-step .ps-emoji{font-size:34px;margin-bottom:8px}
.path-step .ps-name{font-size:16px;font-weight:900;color:#312E81;margin-bottom:2px}
.path-step .ps-range{font-size:12px;color:#64748B;margin-bottom:6px}
.path-step .ps-diff{font-size:11px;font-weight:800;padding:2px 10px;border-radius:999px}
.path-step.p1{background:linear-gradient(180deg,#EFF6FF,#DBEAFE)}
.path-step.p2{background:linear-gradient(180deg,#FEF9C3,#FDE68A)}
.path-step.p3{background:linear-gradient(180deg,#DCFCE7,#BBF7D0)}
.path-step.p4{background:linear-gradient(180deg,#FCE7F3,#FBCFE8)}
.path-step.p5{background:linear-gradient(180deg,#EDE9FE,#DDD6FE)}
.path-step.p6{background:linear-gradient(180deg,#E0F2FE,#BAE6FD)}
.path-step.p1 .ps-diff{background:#BFDBFE;color:#1D4ED8}
.path-step.p2 .ps-diff{background:#FDE68A;color:#B45309}
.path-step.p3 .ps-diff{background:#BBF7D0;color:#15803D}
.path-step.p4 .ps-diff{background:#FBCFE8;color:#BE185D}
.path-step.p5 .ps-diff{background:#DDD6FE;color:#6D28D9}
.path-step.p6 .ps-diff{background:#BAE6FD;color:#0369A1}
.path-step::after{content:'→';position:absolute;right:-12px;top:50%;transform:translateY(-50%);font-size:18px;font-weight:900;color:#C7D2FE;z-index:2;pointer-events:none}
.path-step:last-child::after{content:''}

/* ========== 6. 通用卡片（认证/竞赛/趣味） ========== */
.chapter-map,.cert-section,.global-search-section{
  background:rgba(255,255,255,.86);
  border:1px solid #E3E8FB;
  border-radius:28px;
  padding:28px 24px;
  box-shadow:0 14px 36px rgba(79,70,229,.07);
  backdrop-filter:blur(8px);
}
.cert-card{border:1px solid #E3E8FB;border-radius:20px;box-shadow:0 8px 22px rgba(79,70,229,.06)}
.cert-card:hover{border-color:#A5B4FC;box-shadow:0 18px 38px rgba(79,70,229,.14)}
.cert-title{color:#312E81}
.chapter-card{border-radius:18px}
.chapter-card.c1{background:linear-gradient(140deg,#EAF4FF,#CFE4FF);border-color:#93C5FD}
.chapter-card.c2{background:linear-gradient(140deg,#FFF8E1,#FFE9A8);border-color:#FCD34D}
.chapter-card.c3{background:linear-gradient(140deg,#E8FBEF,#C0F2D0);border-color:#86EFAC}
.chapter-card.c4{background:linear-gradient(140deg,#FDEBF3,#FAC6DA);border-color:#F9A8D4}
.chapter-card.c5{background:linear-gradient(140deg,#EFEBFF,#D9CCFF);border-color:#C4B5FD}
.chapter-card.c6{background:linear-gradient(140deg,#E8F2FF,#C8E0FF);border-color:#93C5FD}

/* ========== 7. 真题卡 ========== */
.home-zhenti-card{border-radius:20px}
.home-zhenti-level{color:#312E81}
.home-zhenti-entry{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border-radius:999px;background:linear-gradient(135deg,#4F46E5,#3B82F6);color:#fff;font-weight:800;font-size:13.5px;text-decoration:none;box-shadow:0 8px 20px rgba(79,70,229,.28);transition:.2s}
.home-zhenti-entry:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(79,70,229,.38);color:#fff}

/* ========== 8. 认证专区 Tab 分组 ========== */
.cert-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.cert-tab-btn{border:1.5px solid #E0E4F5;background:#fff;color:#64748B;border-radius:999px;padding:8px 16px;font-size:13.5px;font-weight:800;cursor:pointer;transition:.18s}
.cert-tab-btn:hover{border-color:#A5B4FC;color:#4338CA}
.cert-tab-btn.active{background:linear-gradient(135deg,#4F46E5,#3B82F6);color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(79,70,229,.25)}
.cert-tab-pane{display:none}
.cert-tab-pane.active{display:block;animation:slide-in-up .4s ease}

/* ========== 9. 课程内页 & 内容组件微调 ========== */
.nav-header{border-radius:20px;border-color:#DCE6F8;background:linear-gradient(120deg,#EEF3FF,#EFFBF5)}
.nav-header .nav-info h2{color:#312E81}
.lesson-page{border-color:#DCE6F8;border-radius:20px;box-shadow:0 8px 26px rgba(79,70,229,.08)}
.lesson-header{background:linear-gradient(135deg,#4F46E5 0%,#3B82F6 60%,#0EA5E9 100%)}
.section-block h2{color:#3730A3;border-left-color:#4F46E5}
.section-block h3{color:#334155;border-left-color:#34D399}
th{background:linear-gradient(120deg,#EEF2FF,#DBEAFE);color:#312E81}
.progress-bar-fill{background:linear-gradient(90deg,#4F46E5,#0EA5E9,#34D399)}
.lesson-num{background:linear-gradient(135deg,#4F46E5,#3B82F6)}
#back-to-top{background:linear-gradient(135deg,#4F46E5,#0EA5E9)}
#back-to-top:hover{box-shadow:0 10px 26px rgba(79,70,229,.4)}
.sfb-home,.quick-nav-btn.home{background:linear-gradient(135deg,#4F46E5,#7C6CF5)}
.sfb-catalog,.quick-nav-btn.catalog{background:linear-gradient(135deg,#3B82F6,#0EA5E9)}
.lesson-card:hover{border-color:#A5B4FC;box-shadow:0 10px 22px rgba(79,70,229,.12)}

/* 本课目录（script 生成） */
.lesson-toc{background:#fff;border:1.5px solid #E0E4F5;border-radius:16px;padding:14px 16px;margin-bottom:20px;box-shadow:0 6px 18px rgba(79,70,229,.06)}
.lesson-toc-title{font-size:14px;font-weight:900;color:#312E81;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.lesson-toc a{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:8px;color:#475569;font-size:13px;font-weight:700;text-decoration:none;transition:.14s}
.lesson-toc a:hover{background:#EEF0FF;color:#4338CA}
.lesson-toc a .toc-no{flex:0 0 20px;height:20px;border-radius:6px;background:#EEF0FF;color:#4F46E5;font-size:11px;display:flex;align-items:center;justify-content:center;font-weight:800}

/* ========== 10. 页脚 ========== */
.site-footer{background:linear-gradient(180deg,transparent,rgba(224,231,255,.9));border-top:1px solid #E3E8FB}
.site-footer p{color:#475569}

/* ========== 11. 移动端底部 Tab（原 home-extra 内迁） ========== */
#mobile-tab-bar{display:none;position:fixed;bottom:0;left:0;right:0;z-index:1000;background:rgba(255,255,255,.97);border-top:1.5px solid #E0E4F5;box-shadow:0 -6px 20px rgba(79,70,229,.12);padding:0;margin:0}
#mobile-tab-bar .mtb-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:8px 4px 9px;font-size:11px;font-weight:700;color:#64748B;text-decoration:none;transition:.15s}
#mobile-tab-bar .mtb-item .mtb-icon{font-size:20px}
#mobile-tab-bar .mtb-item.active{color:#4338CA}
#mobile-tab-bar .mtb-item:hover{background:#EEF0FF}
@media(max-width:768px){
  #mobile-tab-bar{display:flex;align-items:stretch}
  .page-wrapper{padding-bottom:76px!important}
}

/* ========== 12. 深色模式适配 ========== */
body.dark-mode .site-header{background:linear-gradient(120deg,#1E1B4B,#312E81,#1E3A5F)}
body.dark-mode .home-hero{background:linear-gradient(135deg,#171540,#1E1B4B 45%,#0F172A);border-color:#312E81}
body.dark-mode .home-hero h1{color:#E0E7FF!important;-webkit-text-fill-color:#E0E7FF!important}
body.dark-mode .home-hero p{color:#94A3B8!important}
body.dark-mode .cert-tab-btn{background:#1E293B;border-color:#334155;color:#94A3B8}
body.dark-mode .cert-tab-btn:hover{border-color:#6366F1;color:#C7D2FE}
body.dark-mode .cert-tab-btn.active{background:linear-gradient(135deg,#4F46E5,#3B82F6);color:#fff}
body.dark-mode .path-step{background:#1E293B;border-color:#334155}
body.dark-mode .path-step .ps-name{color:#C7D2FE}
body.dark-mode .starter-card{background:#1E293B;border-color:#334155;color:#E2E8F0}
body.dark-mode .starter-body strong{color:#E2E8F0}
body.dark-mode .starter-body span{color:#94A3B8}
body.dark-mode .lesson-toc{background:#1E293B;border-color:#334155}
body.dark-mode .lesson-toc-title{color:#C7D2FE}
body.dark-mode .lesson-toc a{color:#94A3B8}
body.dark-mode .lesson-toc a:hover{background:#312E81;color:#E0E7FF}
body.dark-mode .home-zhenti-entry{background:linear-gradient(135deg,#6366F1,#3B82F6)}

/* ========== 13. 响应式 ========== */
@media (max-width:980px){
  .home-starter{grid-template-columns:1fr}
  .path-stair{grid-template-columns:repeat(3,1fr)}
  .path-step::after{content:''}
}
@media (max-width:768px){
  .site-header .site-nav{display:none}
  .home-hero{padding:40px 22px 38px;border-radius:24px}
  .home-hero h1{font-size:30px}
  .home-hero-stats{gap:8px}
  .hhs-item{min-width:84px;padding:10px 12px}
  .hhs-item strong{font-size:19px}
}
@media (max-width:560px){
  .path-stair{grid-template-columns:repeat(2,1fr)}
}

/* 无面包屑页：导航靠右 */
.site-header .site-nav:last-child{margin-left:auto}
