/* Academic visual system, aligned with Weiyi Shang and SENSE Lab. */
:root{--bg:#fff;--paper:#fff;--ink:#181818;--muted:#686868;--line:#e3e3e3;--green:#202020;--soft:#f5f5f5;--amber:#f6f6f6;--panel:#fafafa}
body{font:16px/1.75 -apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--ink)}
body.dark{--bg:#151515;--paper:#1b1b1b;--ink:#f2f2f2;--muted:#b5b5b5;--line:#383838;--green:#ededed;--soft:#252525;--amber:#262626;--panel:#202020}
a{color:var(--ink);text-underline-offset:4px}button,.button{font-size:14px;border-radius:6px;padding:11px 19px;transition:background .15s,border-color .15s}button:hover,.button:hover{background:var(--soft);border-color:var(--ink)}.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.primary:hover{background:var(--muted);color:var(--bg)}:focus-visible{outline:2px solid #4878ad!important;outline-offset:4px}
.site-header{border-bottom:1px solid var(--line);background:var(--paper)}.header-inner{max-width:1060px;margin:auto;min-height:76px;display:flex;justify-content:space-between;align-items:center;gap:28px;padding:16px 28px}.wordmark{display:flex;align-items:baseline;gap:12px;white-space:nowrap;text-decoration:none;letter-spacing:-.04em;font-size:24px}.wordmark span{font-size:13px;letter-spacing:0;color:var(--muted)}.top-links{display:flex;gap:26px;overflow:visible;max-height:none}.top-links a{display:inline;padding:0;margin:0;min-width:0;font-size:14px;white-space:nowrap;color:var(--muted)}.top-links a:hover{color:var(--ink)}
.course-toolbar{max-width:1004px;margin:auto;display:flex;align-items:center;gap:22px;padding:14px 0;border-bottom:1px solid var(--line);position:relative;font-size:12px;color:var(--muted)}.course-toolbar #progress{margin-left:auto}.course-toolbar button{padding:4px 9px;font-size:12px;border:0;color:var(--muted)}.course-menu{padding:0}.course-menu summary{font-size:13px;font-weight:500}.course-menu[open] #nav{position:absolute;top:52px;left:0;right:0;background:var(--paper);border:1px solid var(--line);box-shadow:0 12px 30px #0000000d;border-radius:8px;padding:16px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;max-height:65vh;overflow:auto;z-index:10}.course-menu #nav a{min-width:0;font-size:13px;padding:10px}.course-menu #nav a.active{background:var(--soft);color:var(--ink)}
main{max-width:1060px;margin:0 auto;padding:58px 28px 90px;min-height:70vh}h1,h2,h3{letter-spacing:-.035em;color:var(--ink)}h1{font-size:clamp(34px,4.5vw,52px);font-weight:700;line-height:1.14;max-width:920px;margin:16px 0 24px}h2{font-size:28px;font-weight:650}h3{font-weight:650}.kicker{color:var(--muted);font-size:11px;letter-spacing:1.8px}.lead{font-size:20px;line-height:1.65;color:var(--muted)}.course-hero{max-width:830px;padding:10px 0 15px}.course-hero h1{font-size:clamp(40px,5vw,62px);letter-spacing:-.05em;margin:20px 0}.course-hero .lead{color:var(--ink);font-size:22px;margin-bottom:12px}.hero-description{max-width:660px;color:var(--muted);font-size:16px}.instructor{font-size:14px;color:var(--muted)}.instructor a{font-weight:600}.home-stats{margin:20px 0 54px;padding:23px 0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.home-stats b{font-size:28px;line-height:1.3;letter-spacing:-.04em}.home-stats span{font-size:12px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.section-heading h2{margin:7px 0 12px}.section-heading>a{font-size:13px;color:var(--muted)}.controls:has(#filter){justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:22px;margin:14px 0 24px}.controls #filter{width:310px;padding:10px 13px;font-size:14px}.controls:has(#filter) label{font-size:14px;color:var(--muted)}
.grid{gap:20px}.card{padding:25px 27px;border-radius:8px;transition:border-color .15s,box-shadow .15s}.card:hover{border-color:#999;box-shadow:0 4px 16px #00000006}.card .num{font:500 10px/1.6 system-ui;color:var(--muted);text-transform:uppercase;letter-spacing:.7px}.card h3{font-size:21px;line-height:1.3;margin:12px 0}.card p{font-size:14px;line-height:1.7}.card .schedule-date{font-size:12px;margin-bottom:12px;color:var(--muted)}.badge{font-weight:500;color:var(--muted);background:var(--soft);margin-top:16px;font-size:10px}.schedule-date{color:var(--muted)}.note,.prediction{background:var(--soft);border-radius:6px}.prediction{border-left:3px solid var(--ink)}.lecture-links,.dark .lecture-links{background:var(--panel);border-color:var(--line);border-radius:8px;color:var(--ink)}.lecture-extension{border-color:var(--line)}.flow{background:#252525;color:#fff}.flow small{color:#ccc}.node{border-color:#777}.hero h1 em{font-family:inherit;font-style:normal;font-weight:700;color:var(--ink)}video{background:#202020;border-radius:7px}.chaptertext{max-width:800px}.chaptertext p{line-height:1.9}.chaptertitle{font-size:clamp(30px,4vw,46px)}.source-note{font-size:12px;line-height:1.8}.site-footer{max-width:1004px;margin:0 auto;padding:26px 0 34px;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:15px;font-size:12px;color:var(--muted)}.site-footer a{color:var(--muted)}.teaching-schedule{margin:0}.lab{overflow-x:auto}.status{overflow-wrap:anywhere}.lab table{min-width:480px}
@media(max-width:1080px){.course-toolbar,.site-footer{margin-left:28px;margin-right:28px}.top-links{gap:18px}}
@media(max-width:760px){.header-inner{align-items:flex-start;flex-direction:column;gap:14px;padding:20px 22px}.top-links{flex-wrap:wrap;gap:10px 22px}.top-links a{font-size:13px}.course-toolbar{margin:0 22px;gap:12px;flex-wrap:wrap}.course-toolbar #progress{font-size:10px}.course-menu[open] #nav{grid-template-columns:1fr;top:100%;max-height:65vh}.course-menu #nav a{margin:0}.course-toolbar button{font-size:10px}main{padding:35px 22px 60px}.course-hero{padding:0}.course-hero .lead{font-size:19px}.home-stats{grid-template-columns:1fr 1fr;gap:22px;margin-bottom:36px}.section-heading{align-items:flex-start;flex-direction:column;gap:0}.controls:has(#filter){align-items:stretch;flex-direction:column;gap:8px}.controls #filter{width:100%}.grid,.unit-grid,.videolist{grid-template-columns:1fr}.card{padding:22px}.site-footer{margin:0 22px;flex-direction:column;gap:6px}.chaptertext figure{margin:20px 0}.unit-actions{gap:8px}.unit-actions .button{font-size:13px}.workergrid{grid-template-columns:1fr}.lab{padding:16px}}
@media print{.site-header,.course-toolbar,.site-footer{display:none}main{padding:0;max-width:none}.card{box-shadow:none}}

.lesson-illustration{margin:32px 0}.lesson-illustration img{width:100%;height:auto;border:1px solid var(--line);border-radius:8px}.lesson-illustration figcaption{font-size:13px;color:var(--muted);margin-top:8px}

.video-chapters{font-size:13px;margin:10px 0 20px}.video-chapters button{display:block;text-align:left;font-size:12px;width:100%;margin:7px 0;padding:8px 12px}.video-chapters summary{font-size:13px}
.lesson-links{margin:24px 0;padding:20px;border:1px solid var(--line,#d4d4d4);border-radius:8px}.lesson-links h2{margin-top:0}.lesson-links li{margin:12px 0}.lesson-links li span{display:block;font-size:.9rem;color:var(--muted,#666)}.lesson-links video{display:block;width:100%;max-width:900px;margin:16px 0}.lesson-links .button{margin:8px 8px 0 0}.video-chapter-row{margin:10px 0}.video-chapter-row a{display:inline-block;margin:4px 0;font-size:.9rem}.video-chapters h3{font-size:1rem;margin:10px 0}
