body{overflow-x:hidden}.calendar-viewport{position:relative;overflow:hidden;border-radius:12px}.grid-view{grid-template-columns:54px repeat(7,minmax(0,1fr))}.calendar{will-change:transform;backface-visibility:hidden;transform:translateZ(0)}.grid-cell{min-height:94px}.grid-cell.period-label{min-height:94px;font-size:9px;line-height:1.35;flex-direction:column;gap:0}.grid-cell.status-holiday,.day.status-holiday{background:#fff1e8}.grid-cell.status-exam,.day.status-exam{background:#ececea}.grid-cell.status-other,.day.status-other{background:#eef4ea}.status-tag,.conflict-tag{display:block;font-size:9px;font-weight:700;margin:0 0 3px 4px}.status-tag,.status-center{color:#42604a}.status-holiday .status-tag,.status-holiday .status-center{color:#b54708}.status-exam .status-tag,.status-exam .status-center{color:#555}.status-center{display:block;text-align:center;font-size:10px;font-weight:700;margin-top:10px}.mobile-tools{display:none}.viewbar.feature-hidden{display:none}.event h3,.event p{display:block}.event .teacher,.event .room{margin-top:2px}.day-label{flex-direction:column}.day-date{margin:2px 0 0}
.next-course{color:var(--blue)!important;font-weight:650;margin-top:3px!important}.event.is-current{background:#dbeafe;border-left-color:#1d4ed8;box-shadow:0 0 0 2px #3b82f688}.event.is-current::before{content:'正在上课';display:block;color:#1d4ed8;font-size:8px;font-weight:800;margin-bottom:2px}.event.is-past{opacity:.58}.utility-dialog{padding:22px;width:min(480px,calc(100vw - 20px))}.utility-input{width:100%;margin:14px 0 10px;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink);font:inherit}.result-list{display:grid;gap:7px;max-height:55dvh;overflow:auto}.result-item{padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel);font-size:12px;line-height:1.45}.result-item strong{display:block;font-size:13px}.result-item span{color:var(--muted)}.share-dialog{text-align:center}.share-dialog .dialog-title{text-align:left}.share-dialog img{display:block;margin:15px auto 8px;border-radius:10px;background:#fff;padding:8px}.share-dialog #copyShareLink{width:100%;margin-top:7px}.change-old{text-decoration:line-through;color:var(--muted)}#changesButton{color:#b54708;border-color:#f5a524;background:#fff8e8}
.import-dialog{padding:22px}.import-dialog ol{padding-left:22px;font-size:13px;line-height:1.7}.import-dialog .hint{line-height:1.55}
.early-reminder{display:inline-block;margin:4px 0 0!important;padding:3px 7px;border-radius:6px;background:#fff1d6;color:#9a5b00!important;font-size:11px!important;font-weight:700}.early-reminder[hidden]{display:none!important}
.utility-dialog{width:100%;max-width:100%;overflow-x:hidden}.result-list{overflow-x:hidden}.course-status-bar{display:flex;align-items:center;gap:8px;min-height:25px;margin:-4px 0 7px;padding:4px 9px;border-radius:8px;background:var(--blue-soft)}.next-course{display:-webkit-box;max-width:none;margin:0!important;white-space:normal;overflow:hidden;text-overflow:ellipsis;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2}.course-status-bar .early-reminder{flex:none;margin:0!important}@media(min-width:651px){.next-course{-webkit-line-clamp:1;white-space:nowrap;flex:1}}@media(max-width:650px){.course-status-bar{align-items:flex-start;margin:0 4px 6px;padding:4px 6px;font-size:9px}.course-status-bar:has(.early-reminder:not([hidden])){display:grid}.course-status-bar .early-reminder{font-size:8px!important}}
@media(max-width:650px){.calendar-viewport{overflow:visible;border-radius:0}.calendar{border-radius:0}}
.notice-preview .course-status-bar{align-items:flex-start}.notice-preview .next-course{display:block;white-space:normal;overflow:visible;-webkit-line-clamp:unset}.notice-preview .preview-label{position:fixed;right:8px;bottom:8px;z-index:900;padding:5px 8px;border-radius:7px;background:#171717;color:#fff;font-size:10px;box-shadow:0 2px 8px #0004}
.course-status-bar{display:grid;align-items:start}.course-status-bar .early-reminder{display:block;margin:0!important;padding:0;background:transparent;color:var(--blue)!important;font-size:inherit!important;line-height:1.35}.course-status-bar .early-reminder[hidden]{display:none!important}
.compact-option{padding:12px 8px!important;border:1px solid var(--line)!important;border-radius:10px;background:var(--blue-soft)}.compact-option span{display:grid;gap:2px}.compact-option small{color:var(--muted);font-weight:400}.feature-options #advancedFeatureOptions{display:grid;gap:3px}.feature-options #advancedFeatureOptions.locked{opacity:.42;pointer-events:none}.feature-options #advancedFeatureOptions input:disabled{cursor:not-allowed}
.event.is-current,.event.language.is-current{background:#eaf8f0;border-left-color:#24966b;box-shadow:inset 0 0 0 1px #24966b3d}.event.is-current::before{color:#16724f}html[data-theme="dark"] .event.is-current,html[data-theme="dark"] .event.language.is-current{background:#173429;border-left-color:#55c995;box-shadow:inset 0 0 0 1px #55c99545}html[data-theme="dark"] .event.is-current::before{color:#7cddb0}
.event.is-past:not(.is-current),.event.language.is-past:not(.is-current){opacity:1;background:#eeeeec;border-left-color:#969b9f;box-shadow:inset 0 0 0 1px #8b90942b;color:#62676b}.event.is-past:not(.is-current) h3,.event.is-past:not(.is-current) p{color:#74797d}html[data-theme="dark"] .event.is-past:not(.is-current),html[data-theme="dark"] .event.language.is-past:not(.is-current){background:#292c2f;border-left-color:#777d82;box-shadow:inset 0 0 0 1px #a1a6aa26}html[data-theme="dark"] .event.is-past:not(.is-current) h3,html[data-theme="dark"] .event.is-past:not(.is-current) p{color:#a5aaae}
.course-status-bar{font-size:12px}@media(min-width:651px){.course-status-bar{font-size:clamp(10px,.72vw,14px)}}@media(max-width:650px){.course-status-bar{font-size:12px}}
.course-status-bar{font-size:12px}@media(min-width:651px){.course-status-bar{font-size:clamp(10px,.72vw,14px)}}@media(max-width:650px){.calendar{touch-action:auto!important}.course-status-bar{font-size:11px!important}}
.past-gray-preview .event.is-past,.past-gray-preview .event.language.is-past{opacity:1;background:#eeeeec;border-left-color:#969b9f;box-shadow:inset 0 0 0 1px #8b90942b;color:#62676b}.past-gray-preview .event.is-past h3,.past-gray-preview .event.is-past p{color:#74797d}html[data-theme="dark"].past-gray-preview .event.is-past,html[data-theme="dark"].past-gray-preview .event.language.is-past{background:#292c2f;border-left-color:#777d82;box-shadow:inset 0 0 0 1px #a1a6aa26}html[data-theme="dark"].past-gray-preview .event.is-past h3,html[data-theme="dark"].past-gray-preview .event.is-past p{color:#a5aaae}
.course-status-bar{display:grid;gap:3px;min-height:0;margin:0 0 7px;padding:0;background:transparent;border-radius:0}.course-status-bar:has(#nextCourse[hidden]):has(#earlyReminder[hidden]){display:none}.course-status-bar .next-course,.course-status-bar .early-reminder{position:relative;margin:0!important;padding:0 0 0 12px!important;background:transparent!important;color:var(--muted)!important;font-weight:500!important;line-height:1.4}.course-status-bar .next-course::before,.course-status-bar .early-reminder::before{content:'';position:absolute;left:1px;top:.48em;width:5px;height:5px;border-radius:50%;background:#7b858f}.course-status-bar .early-reminder{font-size:inherit!important}@media(max-width:650px){.course-status-bar{margin:0 5px 6px;padding:0;font-size:8px;gap:2px}.course-status-bar .next-course,.course-status-bar .early-reminder{padding-left:10px!important}.course-status-bar .next-course::before,.course-status-bar .early-reminder::before{width:4px;height:4px}}
.course-status-bar{display:grid;gap:3px;min-height:0;margin:0 0 7px;padding:0;background:transparent;border-radius:0}.course-status-bar:has(#nextCourse[hidden]):has(#earlyReminder[hidden]){display:none}.course-status-bar .next-course,.course-status-bar .early-reminder{position:relative;margin:0!important;padding:0 0 0 12px!important;background:transparent!important;color:var(--muted)!important;font-weight:500!important;line-height:1.4}.course-status-bar .next-course::before,.course-status-bar .early-reminder::before{content:'';position:absolute;left:1px;top:.48em;width:5px;height:5px;border-radius:50%;background:#7b858f}.course-status-bar .early-reminder{font-size:inherit!important}@media(max-width:650px){.course-status-bar{margin:0 5px 6px;padding:0;font-size:9px;gap:2px}.course-status-bar .next-course,.course-status-bar .early-reminder{padding-left:10px!important}.course-status-bar .next-course::before,.course-status-bar .early-reminder::before{width:4px;height:4px}}
#featureForm{width:min(430px,calc(100vw - 20px));max-height:calc(100dvh - 20px);overflow:auto;background:var(--panel);border-radius:14px}.feature-options{display:grid;gap:3px;margin:14px 0}.feature-options label{display:flex;align-items:center;justify-content:space-between;margin:0;padding:10px 2px;border-bottom:1px solid var(--line);color:var(--ink)!important;font-size:13px!important}.feature-options input[type=checkbox]{appearance:none;width:42px;height:24px;margin:0;border-radius:99px;background:#c9cdd2;position:relative;cursor:pointer;transition:.18s}.feature-options input[type=checkbox]::after{content:'';position:absolute;width:20px;height:20px;left:2px;top:2px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0004;transition:.18s}.feature-options input[type=checkbox]:checked{background:var(--blue)}.feature-options input[type=checkbox]:checked::after{transform:translateX(18px)}.feature-options .feature-time{align-items:center}.feature-options input[type=time]{padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);font:inherit}#featureSettingsButton{width:100%;margin-top:5px}
.brand{display:flex;align-items:center;min-width:0}.brand img{display:block;width:68px;height:auto;margin-right:9px;flex:none}.brand strong{white-space:nowrap}
.modal[hidden]{display:none!important}.modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:10px;background:#0007}.modal>form{width:min(430px,calc(100vw - 20px));max-height:calc(100dvh - 20px);overflow-y:auto;background:var(--panel);border-radius:14px;box-shadow:0 24px 70px #0004}
.select-trigger,.option-picker{display:none}.option-picker[hidden]{display:none!important}
#configForm label{gap:6px;margin:10px 0;color:var(--muted);font-size:11px;letter-spacing:.02em}#configForm select{appearance:auto;-webkit-appearance:menulist;width:100%;height:40px;padding:0 8px;border:1px solid #d5d9df;border-radius:9px;background:var(--panel);color:var(--ink);font-size:13px;font-weight:550;box-shadow:none;transition:none;touch-action:auto}#configForm select:focus{outline:2px solid var(--blue);outline-offset:1px;box-shadow:none}#configForm label.disabled select{cursor:not-allowed;background:#f0f1f2}#configForm .save{border-radius:10px;margin-top:10px;box-shadow:0 2px 5px #0002}
html[data-theme="dark"]{color-scheme:dark;--bg:#111315;--panel:#1b1e21;--ink:#f1f3f5;--muted:#a2a8ae;--line:#353a40;--blue:#70a5ff;--blue-soft:#17243a;--amber:#f6b94b;--amber-soft:#342915;--red:#ff786d;--red-soft:#351b1d;--holiday:#39281f}html[data-theme="dark"] body,html[data-theme="dark"] .topbar{background:var(--bg);color:var(--ink)}html[data-theme="dark"] .topbar{background:var(--panel)}html[data-theme="dark"] button,html[data-theme="dark"] select,html[data-theme="dark"] #activeConfig,html[data-theme="dark"] .grid-cell,html[data-theme="dark"] .day,html[data-theme="dark"] dialog,html[data-theme="dark"] .modal>form{background-color:var(--panel);color:var(--ink);border-color:var(--line)}html[data-theme="dark"] .primary,html[data-theme="dark"] .save{background:#e8eaed;color:#171717;border-color:#e8eaed}html[data-theme="dark"] .segmented{background:#282c30}html[data-theme="dark"] .segmented button.active{background:#3a3f45}html[data-theme="dark"] .grid-cell.status-holiday,html[data-theme="dark"] .day.status-holiday{background:#39281f}html[data-theme="dark"] .grid-cell.status-exam,html[data-theme="dark"] .day.status-exam{background:#303236}html[data-theme="dark"] .grid-cell.status-other,html[data-theme="dark"] .day.status-other{background:#243029}html[data-theme="dark"] .event{background:var(--blue-soft)}html[data-theme="dark"] .event.language{background:var(--amber-soft)}
html[data-theme="dark"] #configForm select{border-color:#41474e;background-color:#202428;box-shadow:none}html[data-theme="dark"] #configForm label.disabled select{background:#181b1e}
@media(min-width:651px){:root{--desktop-row:clamp(34px,calc((100dvh - 210px)/6),132px);--desktop-head:clamp(34px,5.2dvh,60px)}main{width:100%;max-width:1800px;padding:clamp(8px,1.6dvh,20px) clamp(20px,3vw,56px) clamp(8px,1.6dvh,22px)}.grid-view{grid-template-columns:clamp(54px,4.4vw,78px) repeat(7,minmax(0,1fr))}.grid-cell{height:var(--desktop-row);min-height:0;padding:clamp(3px,.42vw,8px)}.grid-cell.period-label{height:var(--desktop-row);min-height:0;font-size:clamp(8px,.72vw,12px)}.grid-cell.corner,.grid-cell.day-label{height:var(--desktop-head);min-height:0;font-size:clamp(10px,.82vw,14px)}.day-date{font-size:clamp(9px,.72vw,12px)}.event{padding:clamp(3px,.45vw,8px);border-radius:clamp(5px,.5vw,9px)}.event h3{font-size:clamp(9px,.82vw,15px);line-height:1.16}.event p{font-size:clamp(8px,.68vw,12.5px);line-height:1.14}.event .teacher,.event .room{margin-top:2px}.calendar-head{margin-bottom:clamp(5px,1vh,10px)}.calendar-head h1{font-size:clamp(18px,1.35vw,26px)}.calendar-head p,#activeConfig{font-size:clamp(10px,.72vw,14px)}.topbar{height:clamp(50px,6.5dvh,66px)}.topbar strong{font-size:clamp(16px,1.05vw,20px)}.brand img{width:clamp(58px,4.6vw,84px)}}
@media(min-width:651px) and (max-width:1024px){main{padding-left:10px;padding-right:10px}.grid-view{grid-template-columns:48px repeat(7,minmax(0,1fr))}.event h3{font-size:clamp(8px,1.15vw,11px)}.event p{font-size:clamp(7px,1vw,9.5px)}.grid-cell.day-label{font-size:clamp(9px,1.25vw,12px)}.topbar button,.calendar-head button{min-height:38px}.calendar-head{gap:9px}#activeConfig{white-space:nowrap}}
@media(hover:none) and (pointer:coarse){#configForm select{display:none}.select-trigger{display:block;width:100%;height:42px;text-align:left;padding:0 36px 0 11px;position:relative}.select-trigger::after{content:'⌄';position:absolute;right:12px}.select-trigger:disabled{opacity:.55}.option-picker{position:fixed;inset:0;z-index:1100;display:block;background:transparent}.picker-sheet{position:fixed;max-height:min(360px,65dvh);overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:5px;box-shadow:0 10px 28px #0004}.picker-head{display:none}.picker-options{display:grid;gap:2px;max-height:min(348px,63dvh);overflow-y:auto}.picker-options button{text-align:left;min-height:44px;padding:10px 9px;border:0;border-radius:7px;background:transparent}.picker-options button.selected{background:var(--blue-soft);color:var(--blue);font-weight:700}}
@media(max-width:650px){.calendar{touch-action:pan-y}.grid-view{grid-template-columns:27px repeat(7,minmax(0,1fr))}.grid-cell{min-height:80px}.grid-cell.period-label{min-height:80px;font-size:6px;line-height:1.2}.grid-cell.day-label{min-height:39px;font-size:8px}.day-date{display:block;font-size:7px}.status-tag,.conflict-tag{font-size:6px;margin:1px}.status-center{font-size:7px}.event{padding:3px 2px;border-radius:5px}.event h3{font-size:clamp(7.4px,2.15vw,8.8px);line-height:1.16;word-break:normal;overflow-wrap:break-word;hyphens:auto}.event.title-long h3{font-size:clamp(6.6px,1.85vw,7.6px);letter-spacing:-.015em}.event.title-very-long h3{font-size:clamp(6.2px,1.7vw,7px);letter-spacing:-.025em}.event p{display:block;font-size:clamp(6.8px,1.85vw,7.7px);line-height:1.14;word-break:normal;overflow-wrap:break-word}.event .teacher,.event .room{margin-top:2px}.desktop-week-nav{display:none!important}.calendar-head{grid-template-columns:1fr auto!important;gap:6px}.calendar-head>div:nth-child(2){min-width:0}.calendar-head>#activeConfig{grid-column:auto;width:auto;max-width:46vw;align-self:center;text-align:right;font-size:8px;padding:5px}.mobile-tools{display:flex;justify-content:center;margin:10px 0 4px}.mobile-week-nav{display:flex;justify-content:center;gap:8px}.mobile-week-nav button{width:44px;padding:7px}.topbar .actions{gap:3px}.topbar .actions button{height:30px;padding:0 7px}.brand img{width:40px;margin-right:5px}.brand span{margin-left:4px;font-size:8px}#configForm select{display:none}.select-trigger{display:block;width:100%;height:40px;text-align:left;padding:0 36px 0 11px;position:relative}.select-trigger::after{content:'⌄';position:absolute;right:12px}.select-trigger:disabled{opacity:.55}.option-picker{position:fixed;inset:0;z-index:1100;display:block;background:transparent}.picker-sheet{position:fixed;max-height:min(320px,65dvh);overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:5px;box-shadow:0 10px 28px #0004}.picker-head{display:none}.picker-options{display:grid;gap:2px;max-height:min(308px,63dvh);overflow-y:auto}.picker-options button{text-align:left;padding:10px 9px;border:0;border-radius:7px;background:transparent}.picker-options button.selected{background:var(--blue-soft);color:var(--blue);font-weight:700}}

/* 长提示最多显示三行，避免持续滚动干扰，同时控制页面高度。 */
html.full-course-name .course-status-bar .next-course,html.full-course-name .course-status-bar .early-reminder{display:-webkit-box!important;max-width:100%;white-space:normal!important;overflow:hidden!important;text-overflow:ellipsis!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:3!important;line-clamp:3}.course-status-bar .next-course[hidden],.course-status-bar .early-reminder[hidden]{display:none!important}@media(min-width:651px){html.full-course-name .course-status-bar .next-course,html.full-course-name .course-status-bar .early-reminder{-webkit-line-clamp:2!important;line-clamp:2}}

/* “展示课程全名”：仅在内容过长时单行左右缓慢往返。 */
html.full-course-name .course-status-bar .next-course,html.full-course-name .course-status-bar .early-reminder{display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:clip!important;-webkit-line-clamp:unset!important;line-clamp:unset;text-indent:0;will-change:auto}html.full-course-name .course-status-bar .notice-marquee{animation:notice-horizontal-scroll var(--marquee-duration,12s) linear infinite;will-change:text-indent}html.full-course-name .course-status-bar .notice-marquee::after{content:'　　' attr(data-marquee);white-space:nowrap}@keyframes notice-horizontal-scroll{from{text-indent:0}to{text-indent:calc(-1 * var(--marquee-distance,0px))}}@media(prefers-reduced-motion:reduce){html.full-course-name .course-status-bar .notice-marquee{animation:none;overflow-x:auto!important;scrollbar-width:thin}html.full-course-name .course-status-bar .notice-marquee::after{content:none}}
.about-button{width:30px;height:30px;padding:0!important;border-radius:50%;font-size:15px!important;line-height:1;color:var(--muted);background:color-mix(in srgb,var(--panel) 82%,transparent)}.about-button:hover{color:var(--blue);border-color:color-mix(in srgb,var(--blue) 48%,var(--line))}.about-dialog{padding:20px}.about-brand{display:flex;align-items:center;gap:12px;padding:12px 2px 15px}.about-brand img{width:74px;height:auto}.about-brand div{display:grid;gap:2px}.about-brand strong{font-size:16px}.about-brand span{font-size:11px;color:var(--muted)}.about-section{margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.about-section h3{margin:0 0 5px;font-size:11px;color:var(--muted);font-weight:650}.about-section dl{margin:0}.about-section dl>div{display:flex;justify-content:space-between;gap:16px;padding:7px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 62%,transparent);font-size:12px}.about-section dl>div:last-child{border-bottom:0}.about-section dt{flex:none}.about-section dd{margin:0;color:var(--muted);text-align:right;overflow-wrap:anywhere}.mobile-about{display:none}@media(max-width:650px){.mobile-tools{position:relative;min-height:40px;align-items:center}.mobile-about{display:block;position:absolute;right:10px;top:50%;transform:translateY(-50%);width:28px;height:28px}.about-dialog{padding:17px}.about-brand{padding-top:9px}.about-brand img{width:64px}.desktop-about{display:none}}
