/* 课程复习中心 — 门户首页样式 */
:root{
  --bg:#f8f9fc;--bg2:#fff;--text:#1a1a2e;--text2:#555;
  --accent:#4361ee;--accent2:#3a0ca3;
  --green:#06d6a0;--warm:#fb5607;--hot:#ef476f;
  --border:#e6e8f0;--radius:14px;
  --shadow:0 2px 8px rgba(20,20,60,.06);
  --shadow-lg:0 8px 24px rgba(20,20,60,.12);
  --font:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:var(--font);color:var(--text);background:var(--bg);line-height:1.7;min-height:100vh}

.hub{max-width:1080px;margin:0 auto;padding:48px 24px 64px}

/* hero */
.hub-hero{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border-radius:20px;padding:52px 44px;margin-bottom:48px;box-shadow:var(--shadow-lg)}
.hub-tag{display:inline-block;background:rgba(255,255,255,.16);padding:5px 16px;border-radius:20px;font-size:12px;letter-spacing:1px;margin-bottom:18px}
.hub-title{font-size:2.6rem;font-weight:800;line-height:1.15;margin-bottom:14px}
.hub-sub{font-size:15px;opacity:.88;max-width:620px;line-height:1.7}
.hub-stats{display:flex;gap:40px;margin-top:32px;flex-wrap:wrap}
.hub-stat{display:flex;flex-direction:column}
.hub-stat b{font-size:1.9rem;font-weight:800;line-height:1}
.hub-stat span{font-size:12px;opacity:.8;margin-top:4px}

/* section */
.hub-section{margin-bottom:40px}
.hub-section-title{font-size:1.25rem;font-weight:700;color:var(--accent2);margin-bottom:20px;padding-left:14px;border-left:4px solid var(--accent)}

/* card grid */
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}

.course-card{display:flex;flex-direction:column;background:var(--bg2);border:1.5px solid var(--border);border-radius:var(--radius);padding:24px;text-decoration:none;color:inherit;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s,border-color .18s;position:relative;overflow:hidden}
.course-card::before{content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:var(--accent)}
.course-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--accent)}

.card-icon{width:52px;height:52px;border-radius:14px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;margin-bottom:16px;letter-spacing:.5px}
.card-body{flex:1}
.card-body h3{font-size:1.15rem;font-weight:700;margin-bottom:4px}
.card-meta{font-size:12px;color:var(--accent);font-weight:600;margin-bottom:10px}
.card-desc{font-size:13.5px;color:var(--text2);line-height:1.6}
.card-go{margin-top:16px;align-self:flex-start;font-size:13px;font-weight:600;color:var(--accent);transition:transform .18s}
.course-card:hover .card-go{transform:translateX(4px)}

/* per-course accents */
.c-compile::before{background:var(--accent)}   .c-compile .card-icon{background:var(--accent)}   .c-compile .card-meta,.c-compile .card-go{color:var(--accent)}
.c-os::before{background:var(--green)}          .c-os .card-icon{background:var(--green)}          .c-os .card-meta,.c-os .card-go{color:var(--green)}
.c-cv::before{background:var(--warm)}           .c-cv .card-icon{background:var(--warm)}           .c-cv .card-meta,.c-cv .card-go{color:var(--warm)}
.c-eai::before{background:var(--hot)}           .c-eai .card-icon{background:var(--hot)}           .c-eai .card-meta,.c-eai .card-go{color:var(--hot)}
.c-lsdl::before{background:var(--accent2)}      .c-lsdl .card-icon{background:var(--accent2)}      .c-lsdl .card-meta,.c-lsdl .card-go{color:var(--accent2)}
.c-prose::before{background:#9d2933}            .c-prose .card-icon{background:#9d2933}            .c-prose .card-meta,.c-prose .card-go{color:#9d2933}
.c-phil::before{background:#7c3aed}             .c-phil .card-icon{background:#7c3aed}             .c-phil .card-meta,.c-phil .card-go{color:#7c3aed}
.c-pdc::before{background:#0891b2}              .c-pdc .card-icon{background:#0891b2}              .c-pdc .card-meta,.c-pdc .card-go{color:#0891b2}
.c-pdc:hover{border-color:#0891b2}
.c-prose:hover{border-color:#9d2933}
.c-phil:hover{border-color:#7c3aed}
.c-os:hover{border-color:var(--green)}
.c-cv:hover{border-color:var(--warm)}
.c-eai:hover{border-color:var(--hot)}
.c-lsdl:hover{border-color:var(--accent2)}

/* footer */
.hub-footer{margin-top:48px;text-align:center;color:var(--text2);font-size:13px}

@media(max-width:600px){
  .hub{padding:28px 16px 48px}
  .hub-hero{padding:36px 24px}
  .hub-title{font-size:2rem}
  .card-grid{grid-template-columns:1fr}
}
