@charset "UTF-8";
:root{--paper:#f5f4ef;--white:#fffefa;--ink:#26392f;--muted:#788078;--line:#dedfd5;--green:#355b43;--lime:#e5ebc7;--serif:"Noto Serif SC","Songti SC","SimSun",serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Segoe UI","Microsoft YaHei",system-ui,sans-serif;font-size:14px}button,select,input{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.35;cursor:default}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #9da969;outline-offset:4px}button{color:inherit}button,a,select{ -webkit-tap-highlight-color:transparent}button:hover:not(:disabled),a:hover{filter:brightness(.94)}.topbar{height:94px;max-width:1440px;margin:auto;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-size:23px;font-weight:650;letter-spacing:2px}.brand-icon{display:grid;place-items:center;width:40px;height:44px;background:var(--green);color:#fff;border-radius:5px 5px 15px 5px;font-family:var(--serif);font-size:25px;font-weight:400}.brand small{display:block;font-size:8px;letter-spacing:2px;margin-top:3px;color:var(--muted)}.term-label{color:var(--muted);font-size:12px;display:flex;align-items:center;gap:13px}i:not(.dot):not(.legend-swatch){display:inline-block;width:3px;height:3px;background:#8e9884;border-radius:100%;margin:0 7px}.top-link{font-size:13px}.top-link span{margin-left:13px}main{max-width:1320px;margin:auto;padding:0 4%}.intro{display:flex;align-items:center;justify-content:space-between;padding:56px 0 43px}.eyebrow{font-size:10px;letter-spacing:2.5px;color:#78816b;margin:0 0 13px;font-weight:600}h1{font-family:var(--serif);font-size:44px;letter-spacing:2px;font-weight:500;margin:0 0 17px;line-height:1.4}.intro-copy{line-height:1.9;color:#758073;font-size:14px;margin:0}.mobile-br{display:none}.semester-stamp{border:1px solid #c6cdbb;border-radius:50%;width:155px;height:155px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:9px;transform:rotate(7deg);color:var(--green);position:relative}.semester-stamp:after{content:"";position:absolute;inset:6px;border:1px solid #d7dccd;border-radius:50%}.semester-stamp span{font-size:12px;letter-spacing:2px}.semester-stamp strong{font-family:var(--serif);font-size:25px;letter-spacing:4px;font-weight:400}.semester-stamp small{font-size:10px;letter-spacing:2px}.tabs{display:flex;gap:35px;border-bottom:1px solid var(--line);margin-bottom:32px}.tabs a{padding:17px 0;color:var(--muted);font-size:14px;border-bottom:2px solid transparent;margin-bottom:-1px}.tabs a.active{color:var(--green);border-color:var(--green);font-weight:600}.panel[hidden]{display:none}.section-top{display:flex;justify-content:space-between;align-items:center;margin:0 0 26px;gap:20px}h2{font-family:var(--serif);font-size:28px;font-weight:500;margin:0;letter-spacing:1px}.section-top .eyebrow{font-size:9px;margin-bottom:9px}.person-switch{padding:4px;border:1px solid var(--line);border-radius:8px;display:flex;background:#eeeee6}.person-switch button{border:0;background:transparent;padding:10px 22px;color:var(--muted);border-radius:5px;font-size:13px}.person-switch button.active{background:var(--white);color:var(--ink);box-shadow:0 1px 4px #25342812}.schedule-toolbar{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:17px}.week-control{display:flex;gap:8px;align-items:center}.square{width:34px;height:34px;border:1px solid var(--line);background:var(--white);border-radius:5px}.week-picker select{border:0;background:transparent;color:var(--ink);font-weight:600;font-size:16px;padding:5px 4px;cursor:pointer}.text-button{border:0;background:transparent;font-size:12px;color:var(--muted);margin-left:8px}.week-meta{font-size:12px;color:var(--muted);display:flex;gap:18px;align-items:center}.week-meta strong{font-weight:500;color:var(--green)}.week-notes{font-size:12px;line-height:1.8;color:#6a735a}.week-notes:not(:empty){padding:11px 15px;background:#eaeddc;border:1px solid #dbe0c9;border-radius:5px;margin-bottom:16px}.course-grid{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--white)}.timetable{width:100%;table-layout:fixed;border-collapse:collapse}.timetable th{height:64px;font-weight:400;font-size:12px;color:var(--muted);background:#f0f1e9}.timetable th:first-child{width:82px;font-size:11px}.timetable th small{display:block;font-size:11px;margin-top:5px}.timetable td,.timetable th{border-right:1px solid #e5e6dd;border-bottom:1px solid #e5e6dd}.timetable th:last-child,.timetable td:last-child{border-right:0}.timetable tr:last-child td,.timetable tr:last-child th{border-bottom:0}.timetable tbody th{height:128px;background:#fbfbf6;font-size:12px}.timetable tbody th span{display:block;font-size:10px;margin-top:7px;color:#92988b}.timetable td{vertical-align:top;padding:5px;height:128px}.course{display:block;width:100%;height:100%;min-height:116px;text-align:left;border:0;border-left:3px solid var(--course-accent,#8f9f76);background:var(--course-bg,#e9eedf);border-radius:5px;padding:10px 8px;color:#354534;transition:transform .15s}.course:hover{transform:translateY(-2px)}.course strong{font-size:12px;line-height:1.65;font-weight:600;display:block;overflow-wrap:anywhere}.course .room{font-size:10px;line-height:1.6;display:block;margin-top:9px;color:#65725d}.course .teacher{font-size:10px;display:block;margin-top:4px;color:#7c8774}.course .holiday-tag{display:block;font-size:9px;margin-top:6px;color:#946928}.today-head{box-shadow:inset 0 3px var(--green);color:var(--green)!important}.empty-cell{display:grid;place-items:center;height:100%;color:#e1e3d8;font-size:13px}.schedule-bottom{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:11px;gap:15px;padding:17px 2px}.schedule-bottom a{color:var(--green)}.dot{display:inline-block;background:#8a9b67;width:5px;height:5px;border-radius:50%;margin-right:6px}.gentle-note{font-size:12px;color:#7c8276;line-height:1.95;background:#eceee3;border-left:2px solid #b6c19d;padding:15px 18px;margin:18px 0 0}.gentle-note strong{color:#5a6850;font-weight:500}.section-desc{font-size:12px;color:var(--muted);margin:12px 0 0;line-height:1.8}.pill{border:1px solid #d4dac7;color:#788467;font-size:11px;padding:8px 13px;border-radius:30px;white-space:nowrap}.legend{display:flex;gap:20px;font-size:11px;color:var(--muted);margin-bottom:22px}.legend-swatch{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px}.vacation{background:#e8e5b2}.weekend{background:#eceee6}.milestone{background:#b3c19b}.month-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.month-card{border:1px solid var(--line);border-radius:9px;background:var(--white);padding:19px 15px}.month-card h3{font-size:17px;font-weight:500;margin:0 0 17px}.month-card h3 small{color:var(--muted);font-size:11px;font-weight:400;margin-left:10px}.month-table{border-collapse:collapse;width:100%;table-layout:fixed;text-align:center;font-size:12px}.month-table th{font-size:10px;font-weight:400;color:var(--muted);height:28px}.month-table td{height:35px;border:3px solid var(--white);border-radius:6px;position:relative}.month-table .weekno{font-size:9px;color:#8c9580;width:28px}.month-table td.is-weekend{background:#eef0e8}.month-table td.is-vacation{background:#e8e5b2}.month-table td.is-milestone:after{content:"";position:absolute;bottom:1px;left:calc(50% - 2px);width:4px;height:4px;border-radius:50%;background:#6a8152}.month-table td.is-today{outline:1px solid var(--green);outline-offset:-2px;font-weight:700}.table-card{background:var(--white);border:1px solid var(--line);border-radius:9px;margin-top:25px;overflow:hidden}.table-card h3{font-family:var(--serif);font-size:21px;font-weight:500;padding:23px 25px 0;margin:0 0 20px}.table-scroll{overflow-x:auto}.notes-table,.time-table{width:100%;border-collapse:collapse;text-align:left;font-size:13px;line-height:1.8}.notes-table th,.time-table th{color:var(--muted);font-size:11px;font-weight:400;background:#f0f1e9;padding:12px 24px}.notes-table td,.time-table td{padding:13px 24px;border-top:1px solid #e8e9e1}.notes-table td:first-child{width:190px;color:#61724f;white-space:nowrap;font-size:12px}.source-note{font-size:11px;line-height:1.9;color:#858a80;margin-top:18px}.time-overview{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.time-overview>div{padding:23px 25px;background:#e9edde;border-radius:8px}.time-overview span{font-size:12px;color:#78866b;display:block;margin-bottom:11px}.time-overview strong{font-size:22px;font-weight:500;letter-spacing:1px}.time-table .break-row td{padding:8px 24px;background:#f4f5ee;color:#859076;font-size:11px;text-align:center}.time-table .part{color:#6e7f5c}.older-times{margin-top:24px;font-size:12px;color:var(--muted);line-height:1.9}.older-times summary{cursor:pointer}.subscription-cards{display:grid;grid-template-columns:1fr 1fr;gap:22px}.subscription-card{background:var(--white);border:1px solid var(--line);border-radius:10px;padding:28px;position:relative;overflow:hidden}.subscription-card:before{content:"";position:absolute;right:-32px;top:-35px;border:1px solid #e8ebdf;width:160px;height:160px;border-radius:100%;pointer-events:none}.subscription-card .card-num{font-size:10px;letter-spacing:2px;color:#99a289}.subscription-card h3{font-size:28px;font-family:var(--serif);font-weight:500;margin:16px 0 10px}.subscription-card p{font-size:12px;color:var(--muted);line-height:1.8}.url-field{display:flex;margin:22px 0 17px;border:1px solid var(--line);border-radius:5px;padding:12px;background:#f5f6ef}.url-field input{width:100%;border:0;background:transparent;color:#76836a;font-size:11px;outline:0;text-overflow:ellipsis}.card-actions{display:flex;gap:10px}.primary-button,.secondary-button{border-radius:5px;padding:11px 20px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:16px;border:1px solid var(--green)}.primary-button{background:var(--green);color:#fff}.secondary-button{background:transparent;color:var(--green);border-color:var(--line)}.old-link{margin:17px 0 0!important;font-size:10px!important}.old-link a{text-decoration:underline;text-underline-offset:3px}.how-to{margin:38px 0 28px}.how-to h3{font-family:var(--serif);font-size:23px;font-weight:500;margin:0 0 25px}.guide-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px}.guide-number{font-size:10px;letter-spacing:1px;color:#8b9679}.guide-grid h4{font-weight:500;font-size:15px;margin:11px 0}.guide-grid p{font-size:12px;line-height:1.9;color:var(--muted);margin:0}.guide-grid p a{text-decoration:underline}.mobile-courses{display:none}footer{display:flex;justify-content:space-between;gap:20px;padding:30px 0;margin-top:46px;border-top:1px solid var(--line);font-size:10px;color:#92998a;line-height:1.8}.footer-divider{margin:0 9px;color:#c3c9b7}dialog{border:1px solid var(--line);border-radius:14px;padding:35px;max-width:460px;width:calc(100% - 32px);color:var(--ink);background:var(--white);box-shadow:0 25px 80px #25342825}dialog::backdrop{background:#26372b66;backdrop-filter:blur(3px)}dialog h2{font-size:24px;line-height:1.7;padding-right:12px}.dialog-close{position:absolute;right:13px;top:10px;background:transparent;border:0;font-size:27px;color:var(--muted)}dialog dl{margin:24px 0;display:grid;grid-template-columns:65px 1fr;gap:15px;font-size:13px;line-height:1.8}dialog dt{color:var(--muted)}dialog dd{margin:0;overflow-wrap:anywhere}.toast{position:fixed;bottom:32px;left:50%;transform:translate(-50%,20px);padding:13px 23px;background:var(--ink);color:#fff;font-size:12px;border-radius:7px;opacity:0;pointer-events:none;transition:.2s;z-index:99;max-width:90vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%,0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1450px){main{padding:0 28px}.topbar{padding:0 7%}}
@media(max-width:1000px){.month-grid{grid-template-columns:repeat(2,1fr)}.course-grid{overflow-x:auto}.timetable{min-width:880px}.time-overview strong{font-size:19px}.term-label{display:none}}
@media(max-width:640px){.topbar{height:77px;padding:0 22px}.brand{font-size:20px;gap:9px}.brand-icon{width:34px;height:39px;font-size:22px}.brand small{font-size:7px;letter-spacing:1.5px}.top-link{font-size:12px}main{padding:0 20px}.intro{padding:35px 0 27px}.intro .eyebrow{font-size:8px;letter-spacing:1.6px}h1{font-size:30px;letter-spacing:1px;margin-bottom:12px}.intro-copy{font-size:12px}.mobile-br{display:initial}.semester-stamp{width:88px;height:88px;gap:6px;flex-shrink:0;margin-left:7px}.semester-stamp span{font-size:7px;letter-spacing:1px}.semester-stamp strong{font-size:15px;letter-spacing:1px}.semester-stamp small{font-size:6px;letter-spacing:1px}.tabs{gap:0;justify-content:space-between;margin-bottom:27px}.tabs a{font-size:12px;padding:14px 0}.section-top{gap:12px;margin-bottom:22px}h2{font-size:24px}.section-top .eyebrow{font-size:7px;letter-spacing:1.4px}.person-switch button{padding:8px 12px;font-size:11px}.schedule-toolbar{display:block}.week-meta{margin-top:16px;justify-content:space-between}.week-picker select{font-size:15px}.text-button{font-size:11px}.course-grid{display:none}.mobile-courses{display:block}.day-group{margin:21px 0}.day-heading{font-size:12px;display:flex;justify-content:space-between;color:#7b866f;align-items:center;margin:0 0 10px}.day-heading span{font-size:10px;color:#929b87}.day-heading.is-today{color:var(--green);font-weight:700}.mobile-course{display:grid;grid-template-columns:53px 1fr;gap:12px;margin:8px 0}.mobile-course .clock{padding-top:9px;font-size:11px;line-height:1.7;color:#60714f}.mobile-course .clock small{display:block;color:#9aa28e;font-size:10px}.mobile-course .course{min-height:0;padding:12px 15px;border-left-width:3px}.mobile-course .course strong{font-size:13px}.mobile-course .course .room{margin-top:5px;font-size:11px}.mobile-course .course .teacher{display:none}.day-empty{font-size:11px;color:#a1a795;border-bottom:1px dashed var(--line);padding:6px 0 13px}.schedule-bottom{font-size:10px;align-items:start}.schedule-bottom>span{max-width:185px;line-height:1.8}.schedule-bottom a{white-space:nowrap}.gentle-note{font-size:11px;padding:13px 14px;line-height:1.9}.month-grid{grid-template-columns:1fr}.month-card{padding:21px}.month-table td{height:39px}.pill{font-size:9px;padding:6px 9px}.section-desc{font-size:11px;margin-top:8px}.legend{font-size:10px;gap:15px}.notes-table th,.notes-table td,.time-table td,.time-table th{padding:11px 13px;font-size:11px}.notes-table td:first-child{width:100px;font-size:10px;white-space:normal}.table-card h3{padding-left:15px;font-size:20px}.time-overview{gap:7px}.time-overview>div{padding:14px 9px}.time-overview span{font-size:10px;margin-bottom:8px}.time-overview strong{font-size:11px;letter-spacing:0;white-space:nowrap}.time-table{min-width:340px}.time-table th{font-size:10px}.subscription-cards{grid-template-columns:1fr;gap:17px}.subscription-card{padding:24px}.subscription-card h3{font-size:26px}.guide-grid{grid-template-columns:1fr;gap:24px}.guide-grid p{font-size:12px}.how-to{margin-top:30px}footer{display:block;margin-top:32px;padding-top:22px;font-size:9px}footer>span{display:block;margin-bottom:7px}dialog{padding:29px 23px}dialog h2{font-size:22px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
