:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#18202a;background:#f5f7fb;color-scheme:light}
:root.dark{color:#eef2f7;background:#0d1117;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:inherit}.app{width:min(1180px,100%);margin:auto;padding:28px 18px 40px}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:26px}.eyebrow{font-size:11px;letter-spacing:.16em;color:#7a8491;margin:0 0 7px}.topbar h1{font-size:32px;line-height:1.1;margin:0}.muted{color:#7a8491;margin:8px 0 0;font-size:14px}.icon-btn,.toolbar button{border:1px solid #dfe4eb;background:#fff;color:inherit;border-radius:12px;cursor:pointer}.dark .icon-btn,.dark .toolbar button{background:#161b22;border-color:#30363d}.icon-btn{width:42px;height:42px;font-size:18px}.toolbar{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:16px}.toolbar button{width:42px;height:42px;font-size:25px}.week-info{text-align:center;min-width:150px}.week-info strong{display:block;font-size:18px}.week-info span{display:block;color:#7a8491;font-size:12px;margin-top:3px}.weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:8px}.dayhead{padding:9px 4px;text-align:center;color:#6e7781;font-size:12px}.dayhead.today{color:#111;font-weight:700}.dark .dayhead.today{color:#fff}.schedule{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.day{min-height:420px;background:#fff;border:1px solid #e3e7ed;border-radius:16px;padding:8px}.dark .day{background:#11161d;border-color:#262d36}.day.today{outline:2px solid #111;outline-offset:-2px}.dark .day.today{outline-color:#e6edf3}.course{width:100%;border:0;border-radius:12px;padding:12px;margin-bottom:8px;text-align:left;background:#edf2ff;color:inherit;cursor:pointer}.dark .course{background:#1c2635}.course .name{font-weight:700;font-size:14px;line-height:1.35}.course .meta{font-size:11px;color:#687383;margin-top:6px;line-height:1.45}.dark .course .meta{color:#9da7b3}.empty{color:#a0a8b2;text-align:center;font-size:12px;padding:30px 4px}footer{text-align:center;color:#89919c;font-size:11px;margin-top:18px}
@media(max-width:760px){.app{padding:20px 10px 30px}.weekdays,.schedule{grid-template-columns:repeat(7,120px)}.weekdays,.schedule{width:max-content}.day{min-height:430px}.app{overflow-x:auto}}
