*{box-sizing:border-box}
:root{--green:#50c878;--green-d:#2f9e5c;--ink:#1b2a21;--sub:#5a6b62;--line:#dfeae4;--bg:#f7faf8;--card:#fff;--code:#f1f6f3}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",-apple-system,sans-serif;line-height:1.85;font-size:16px}
a{color:var(--green-d);text-decoration:none}
a:hover{text-decoration:underline}
.layout{display:flex;max-width:1360px;margin:0 auto;align-items:flex-start}
.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;width:270px;flex:0 0 270px;background:#fff;border-right:1px solid var(--line);padding:18px 0 40px}
.sidebar .brand{padding:0 18px 14px;border-bottom:1px solid var(--line);margin-bottom:10px}
.sidebar .brand b{display:block;font-size:15px;color:var(--ink)}
.sidebar .brand span{font-size:12px;color:var(--sub)}
.sidebar details{border-bottom:1px solid #f0f5f2}
.sidebar summary{cursor:pointer;padding:9px 18px;font-weight:700;font-size:14px;color:var(--ink);list-style:none;display:flex;justify-content:space-between;align-items:center}
.sidebar summary::-webkit-details-marker{display:none}
.sidebar summary::after{content:"▾";color:var(--sub);font-size:11px}
.sidebar details[open] summary::after{content:"▴"}
.sidebar summary:hover{background:#f2f8f5}
.ch-title{padding:6px 18px 2px;font-size:12.5px;color:var(--green-d);font-weight:700}
.sidebar a.les{display:block;padding:5px 18px 5px 28px;font-size:13.5px;color:var(--sub);border-left:3px solid transparent}
.sidebar a.les:hover{background:#f2f8f5;color:var(--green-d)}
.sidebar a.les.on{background:#eaf6ef;color:var(--green-d);font-weight:700;border-left-color:var(--green)}
.sidebar a.les.top{padding-left:18px;font-weight:700;color:var(--green-d);background:#f4faf7;border-bottom:1px solid var(--line);border-left:3px solid var(--green)}
.main{flex:1 1 auto;min-width:0;padding:34px 46px 80px}
.crumb{font-size:13px;color:var(--sub);margin-bottom:8px}
.crumb a{color:var(--sub)}
article h1{font-size:28px;margin:0 0 6px;color:var(--ink)}
.meta{font-size:13px;color:var(--sub);margin-bottom:22px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.meta em{font-style:normal;background:#eaf6ef;color:var(--green-d);padding:2px 8px;border-radius:4px;margin-right:8px}
article h2{font-size:21px;margin:32px 0 10px;color:var(--green-d);border-left:4px solid var(--green);padding-left:10px}
article h3{font-size:17px;margin:24px 0 8px;color:#2f6b4f}
article p{margin:0 0 12px;text-indent:2em}
.page-mark{text-align:right;font-size:11px;color:#a8b5ae;margin:18px 0 6px;border-top:1px dashed var(--line);padding-top:6px}
figure{margin:18px auto;text-align:center}
figure a{display:inline-block;max-width:100%;line-height:0}
figure img{max-width:100%;height:auto;border-radius:10px;background:#fff;transition:box-shadow .15s}
figure a:hover img{box-shadow:0 4px 18px rgba(27,42,33,.14)}
a.zoom{cursor:zoom-in}
.f-strip img,.f-full img{border:1px solid var(--line);box-shadow:0 2px 10px rgba(27,42,33,.05)}
.f-med img{max-width:min(100%,640px);border:1px solid var(--line)}
.f-small img{max-width:min(100%,420px);border:1px solid var(--line)}
.f-tall img{max-height:560px;width:auto;max-width:100%;border:1px solid var(--line)}
.img-row{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;align-items:center;margin:18px 0;padding:14px;background:#fff;border:1px solid var(--line);border-radius:12px}
.img-row figure{margin:0;flex:0 1 auto;min-width:0}
.img-row figure img{max-height:280px;width:auto;max-width:100%;border:1px solid var(--line)}
.ic{height:1.9em;width:auto;vertical-align:-.45em;margin-right:.45em;border-radius:6px}
p.has-ic{text-indent:0;font-weight:700}
h3 .ic{height:1.6em;vertical-align:-.35em}
.slide{position:relative;width:100%;aspect-ratio:16/9;container-type:inline-size;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:20px 0;box-shadow:0 2px 10px rgba(27,42,33,.06)}
.slide .sh{position:absolute;border-radius:.5cqw}
.slide .tx{position:absolute;display:flex;padding:.3cqw .5cqw;line-height:1.35;word-break:break-word;font-size:1.6cqw}
.slide .tx span{font-size:calc(1em * var(--sc,1))}
.slide .tx .in{width:100%}
.slide .pl{white-space:pre-wrap}
.slide a.pic{position:absolute;display:flex;align-items:center;justify-content:center}
.slide a.pic img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.slide .sno{position:absolute;right:.8%;bottom:1.5%;font-size:1.05cqw;color:#8a9a92;background:rgba(255,255,255,.72);padding:0 .6cqw;border-radius:.5cqw;z-index:5;line-height:1.6}
.slides-nav{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 18px;padding:12px 14px;background:#fff;border:1px solid var(--line);border-radius:10px}
.slides-nav b{width:100%;font-size:12.5px;color:var(--sub);font-weight:700;margin-bottom:4px}
.slides-nav a{min-width:26px;text-align:center;font-size:12.5px;padding:3px 6px;border-radius:6px;background:#f2f8f5;color:var(--green-d);font-weight:600}
.slides-nav a:hover{background:var(--green);color:#fff;text-decoration:none}
.notice{background:#fff8e6;border:1px solid #f0d9a0;border-radius:10px;padding:12px 16px;font-size:13.5px;color:#7a5c1e;margin:0 0 18px}
.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.course-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 15px;transition:border-color .15s,box-shadow .15s}
.course-card:hover{border-color:var(--green);box-shadow:0 3px 14px rgba(80,200,120,.18);text-decoration:none}
.course-card .no{font-size:11.5px;color:var(--sub);letter-spacing:.5px}
.course-card b{display:block;font-size:15px;color:var(--ink);margin:2px 0 6px}
.course-card span{font-size:12px;color:var(--sub)}
.pager{display:flex;justify-content:space-between;gap:12px;margin-top:44px;padding-top:20px;border-top:1px solid var(--line)}
.pager a{flex:1 1 0;background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 16px;font-size:14px;color:var(--ink)}
.pager a:hover{border-color:var(--green);background:#f4faf7;text-decoration:none}
.pager a.next{text-align:right}
.pager span{display:block;font-size:12px;color:var(--sub);margin-bottom:3px}
.hero{background:linear-gradient(135deg,#50c878,#2f9e5c);color:#fff;border-radius:16px;padding:40px 44px;margin-bottom:30px}
.hero h1{margin:0 0 8px;font-size:32px}
.hero p{margin:0;opacity:.95;font-size:15px}
.stats{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:28px}
.stat{background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 22px}
.stat b{display:block;font-size:24px;color:var(--green-d)}
.stat span{font-size:12px;color:var(--sub)}
.part-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin-bottom:18px}
/* ---- 统一课表 / 交叉链接 ---- */
.xref{background:#fff;border:1px solid var(--line);border-left:4px solid var(--green);border-radius:10px;padding:12px 16px;margin:0 0 20px}
.xref h4{margin:0 0 4px;font-size:14px;color:var(--green-d)}
.xref .hint{font-size:12px;color:var(--sub);margin:0 0 9px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips a{background:#f2f8f5;border:1px solid var(--line);border-radius:20px;padding:4px 13px;font-size:13px;color:var(--green-d);line-height:1.6}
.chips a:hover{background:var(--green);color:#fff;border-color:var(--green);text-decoration:none}
.chips a.pj{background:#eef4ff;border-color:#d8e4fb;color:#2f5ba8}
.chips a.pj:hover{background:#2f5ba8;color:#fff;border-color:#2f5ba8}
.tabs{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 16px}
.tabs a{background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 18px;font-size:14px;font-weight:700;color:var(--green-d)}
.tabs a:hover{background:#eaf6ef;text-decoration:none}
.sec-title{font-size:20px;color:var(--green-d);margin:34px 0 12px;padding-top:22px;border-top:2px solid var(--line)}
.unit{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px 18px;margin-bottom:12px}
.unit .uh{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pid{background:var(--green);color:#fff;border-radius:8px;padding:2px 10px;font-size:12.5px;font-weight:700;letter-spacing:.5px}
.unit h4{margin:0;font-size:17px}
.unit h4 a{color:var(--ink)}
.unit .desc{font-size:13px;color:var(--sub);margin:6px 0 10px}
.unit .mods{margin-bottom:8px}
.tag{display:inline-block;background:#eaf6ef;color:var(--green-d);border-radius:6px;padding:1px 9px;font-size:12px;margin-right:6px}
.unit .row{display:flex;gap:8px;align-items:baseline;margin-top:6px}
.unit .row b{font-size:12.5px;color:var(--sub);font-weight:700;white-space:nowrap}
.lsn-list{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-bottom:10px}
.lsn-list .ln{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding:6px 0;border-bottom:1px dashed #eef3f0}
.lsn-list .ln:last-child{border-bottom:none}
.lsn-list .ln .nm{font-size:14.5px;min-width:180px}
.lsn-list .ln .nm a{color:var(--ink)}
.lsn-list .ln .nm a:hover{color:var(--green-d)}
.ch-block{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin-bottom:12px}
.ch-block h4{margin:0 0 2px;font-size:16px;color:var(--green-d)}
.ch-block .h{font-size:12px;color:var(--sub);margin-bottom:8px}
.part-card h3{margin:0 0 4px;font-size:19px;color:var(--green-d)}
.part-card .d{font-size:13px;color:var(--sub);margin-bottom:12px}
.ch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.ch-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.ch-box h4{margin:0 0 2px;font-size:15px}
.ch-box .h{font-size:12px;color:var(--sub);margin-bottom:8px}
.ch-box ol{margin:0;padding-left:18px}
.ch-box li{font-size:13.5px;margin:2px 0}
footer{margin-top:50px;text-align:center;color:var(--sub);font-size:12px}
@media(max-width:900px){.layout{display:block}.sidebar{position:static;width:auto;height:auto;border-right:none;border-bottom:1px solid var(--line)}.main{padding:20px 18px 60px}article p{text-indent:2em}}
