:root{--paper:#fff;--mist:#F2F6FC;--navy:#182D49;--blue:#2768CB;--green:#21816E;--gray:#758294;--line:#DDE5F0;--soft-blue:#E8F0FF;--soft-green:#E8F4F0;--red:#AC473E;--body:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;--display:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;--mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace;--timeline-height:660px;--hour-height:44px}
*{box-sizing:border-box}html{background:var(--mist);color:var(--navy);scroll-behavior:smooth}body{margin:0;font-family:var(--body);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button,a,input{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,.week-scroll:focus-visible{outline:3px solid #2768CB;outline-offset:4px}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--display);letter-spacing:-.04em}h2{font-size:23px;line-height:1.4}h3{font-size:18px}button{color:inherit}button[hidden],[hidden]{display:none!important}.muted{color:var(--gray)}.mono{font-family:var(--mono);letter-spacing:-.035em}.eyebrow{color:var(--gray);font-size:11px;font-weight:600;letter-spacing:.12em;margin-bottom:7px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link{position:fixed;z-index:20;top:8px;left:8px;padding:10px 16px;background:var(--navy);color:#fff;transform:translateY(-160%);border-radius:8px}.skip-link:focus{transform:translateY(0)}
.site-header{max-width:1344px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:26px 48px 22px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:11px;font-size:17px;font-weight:650;letter-spacing:-.03em}.brand-mark{display:grid;place-items:center;background:var(--navy);color:#fff;border-radius:13px 13px 13px 3px;width:38px;height:38px;font-size:21px;font-weight:500}.brand-subtitle{display:block;color:var(--gray);font-size:10px;letter-spacing:.16em;font-weight:400;margin-top:-1px}.page-shell{max-width:1344px;margin:0 auto;padding:38px 48px 0}.button{border:1px solid var(--line);border-radius:9px;padding:11px 17px;background:var(--paper);font-weight:550;font-size:13px;line-height:1.4;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px;transition:background .16s,border-color .16s}.button:hover{background:var(--mist);border-color:#BCCCE0}.button-primary{background:var(--blue);border-color:var(--blue);color:#fff}.button-primary:hover{background:#205CAF;border-color:#205CAF}.button-quiet{background:transparent;border-color:transparent;color:var(--gray)}.button-quiet:hover{background:#E8EEF8;border-color:transparent;color:var(--navy)}.button-small{min-height:38px;padding:9px 13px;font-size:12px}.icon-button{border:1px solid var(--line);background:var(--paper);width:40px;height:40px;border-radius:9px;display:grid;place-items:center;line-height:1;font-size:20px;flex-shrink:0}.icon-button:hover{background:var(--mist)}.loading-view{min-height:55vh;display:flex;gap:12px;align-items:center;justify-content:center;color:var(--gray)}.loading-dot{width:8px;height:8px;border-radius:50%;background:var(--blue);animation:breathe 1.4s ease-in-out infinite}@keyframes breathe{50%{opacity:.3}}
.login-layout{min-height:70vh;display:grid;grid-template-columns:1fr 390px;gap:9%;align-items:center;max-width:1000px;margin:auto}.login-intro h1{font-size:clamp(44px,5vw,64px);font-weight:650;line-height:1.2;letter-spacing:-.065em;margin:20px 0}.login-intro>p:last-of-type{color:var(--gray);font-size:15px}.login-note{display:flex;align-items:center;gap:14px;color:var(--gray);font-size:12px;line-height:1.9;margin-top:40px}.note-line{height:41px;width:6px;border-radius:2px;background:linear-gradient(to bottom,var(--blue) 70%,var(--line) 70%)}.login-card{background:var(--paper);padding:32px;border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 50px -35px #182D4945}.login-card h2{font-size:22px;margin-bottom:8px}.login-card>.muted{font-size:13px;margin-bottom:26px}.login-card label,.dialog-form>label,.time-fields label,#move-fields>label{display:block;font-size:12px;font-weight:550;margin-bottom:7px}input:not([type=radio]){width:100%;min-width:0;border:1px solid #CDD8E7;border-radius:8px;padding:11px 12px;background:#fff;color:var(--navy);min-height:46px;font-size:16px;line-height:1.4}input:focus{border-color:var(--blue)}input::placeholder{color:#A0AABA}.login-card .button-primary{width:100%;margin-top:20px;justify-content:space-between;padding:13px 16px}.login-footnote{text-align:center;color:var(--gray);font-size:11px;margin-top:17px}
.overview{display:grid;grid-template-columns:.9fr 1.2fr;align-items:center;gap:48px;margin-bottom:34px}.overview-heading h1{font-size:clamp(30px,3.2vw,42px);font-weight:650;line-height:1.25;margin-bottom:13px;letter-spacing:-.06em}.overview-heading>.muted{font-size:12px;max-width:290px;line-height:1.9}.status-panel{background:var(--paper);border:1px solid var(--line);border-radius:15px;padding:21px 24px 15px}.status-heading{display:flex;align-items:center;gap:9px}.status-heading h2{font-size:16px;letter-spacing:-.025em}.status-dot{display:block;width:7px;height:7px;border-radius:50%;background:var(--gray);box-shadow:0 0 0 4px var(--mist);flex-shrink:0}.status-dot.active{background:var(--green);box-shadow:0 0 0 4px var(--soft-green)}.status-dot.warning{background:var(--red);box-shadow:0 0 0 4px #FBEFEA}.health-label{font-size:10px;background:#FFF2E4;color:#986322;padding:2px 6px;border-radius:4px;margin-left:auto}.status-detail{color:var(--gray);font-size:11px;margin:7px 0 16px;padding-left:16px;line-height:1.8}.status-facts{display:grid;grid-template-columns:1fr 1fr;margin:0;gap:15px}.status-facts>div+div{border-left:1px solid var(--line);padding-left:20px}.status-facts dt{color:var(--gray);font-size:10px;margin-bottom:4px}.status-facts dd{margin:0;font-size:12px;font-weight:550;line-height:1.8;overflow-wrap:anywhere}.status-facts .fact-meta{font-family:var(--mono);font-size:10px;font-weight:400;color:var(--gray);margin-top:2px;letter-spacing:-.03em}.status-footnote{color:var(--gray);font-size:10px;margin-top:15px;padding-top:11px;border-top:1px solid var(--mist)}.page-alert{background:#FFF0ED;border:1px solid #EBD4CE;color:#923E34;border-radius:10px;padding:13px 16px;display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px;margin-bottom:22px}.page-alert .button{flex-shrink:0}
.schedule-section{background:var(--paper);border:1px solid var(--line);border-radius:18px;overflow:hidden}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:26px 28px 19px}.section-heading .eyebrow{margin-bottom:4px}.section-heading h2{font-size:22px}.week-toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 28px 18px;gap:12px}.week-controls{display:flex;align-items:center;gap:15px}.week-label{text-align:center;min-width:164px;display:flex;align-items:baseline;gap:11px;justify-content:center}.week-label strong{font-size:13px;font-weight:600;white-space:nowrap}.week-label>span{font-size:10px;color:var(--gray);white-space:nowrap}.schedule-legend{display:flex;gap:17px;align-items:center;padding:13px 28px;border-top:1px solid var(--line);font-size:10px;color:var(--gray)}.schedule-legend>span{display:inline-flex;align-items:center;gap:6px}.schedule-legend i{width:11px;height:11px;border-radius:2px;display:inline-block}.legend-course{background:#C2D6F7;border-left:2px solid var(--blue)}.legend-window{background:#E8F0FF;border:1px dashed #AFC9F1}.schedule-legend .schedule-hint{margin-left:auto}.schedule-hint>span{font-size:16px;margin-left:3px}.week-scroll{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-color:#B6C6DB transparent;scrollbar-width:thin;border-top:1px solid var(--line);background:#fff}.week-grid{display:grid;grid-template-columns:48px repeat(7,minmax(140px,1fr));min-width:1050px;padding-bottom:8px}.time-column{position:sticky;left:0;z-index:3;background:#fff}.time-column .axis-top{height:70px;border-bottom:1px solid var(--line)}.time-axis{position:relative;height:var(--timeline-height);font-family:var(--mono);font-size:9px;color:#8A98AC}.time-tick{position:absolute;left:8px;transform:translateY(-50%);background:#fff;padding:0 2px}.time-tick:first-child{transform:translateY(1px)}.day-column{min-width:0;border-left:1px solid var(--line);position:relative}.day-head{height:70px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:#fff;border:0;border-bottom:1px solid var(--line);width:100%;font-size:10px;color:var(--gray);transition:background .16s}.day-head strong{font-family:var(--mono);font-size:17px;font-weight:500;color:var(--navy);line-height:1.2}.day-head.selected{background:var(--soft-blue);color:var(--blue)}.day-head.selected strong{color:var(--blue)}.day-head.is-today strong{background:var(--blue);color:#fff;border-radius:50%;width:28px;height:28px;display:grid;place-items:center;font-size:15px;margin-top:-3px}.day-head .day-tag{font-size:9px;background:#F4EDEA;color:#A1654A;padding:0 4px;border-radius:3px}.day-timeline{height:var(--timeline-height);position:relative;background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hour-height) - 1px),#EFF2F7 calc(var(--hour-height) - 1px),#EFF2F7 var(--hour-height))}.day-column.is-disabled .day-timeline{background-color:#F7F8FA}.day-column.is-weekend:not(:has(.course-block)) .day-timeline{background-color:#FAFBFD}.monitor-band{position:absolute;left:2px;right:2px;min-height:2px;background:var(--soft-blue);border-top:1px dashed #ADC8F0;border-bottom:1px dashed #ADC8F0;pointer-events:none}.course-block{position:absolute;left:8px;right:8px;width:calc(100% - 16px);text-align:left;background:#DCE9FC;border:0;border-left:3px solid var(--blue);border-radius:5px;padding:6px 7px;overflow:hidden;color:var(--navy);z-index:1;min-height:27px;transition:background .15s,box-shadow .15s}.course-block:hover{background:#CDDFF9;box-shadow:0 2px 8px #2768CB22}.course-block.extra{background:#E0F1EB;border-left-color:var(--green)}.course-block.extra:hover{background:#CFEADF}.course-block .course-time{font-family:var(--mono);font-size:9px;line-height:1.3;white-space:nowrap;color:#456385;display:block;margin-bottom:3px;letter-spacing:-.04em}.course-block .course-name{font-size:11px;line-height:1.5;font-weight:550;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.course-block.extra .course-time{color:var(--green)}.empty-day{position:absolute;top:44%;left:0;right:0;text-align:center;color:#A6B0BE;font-size:10px;letter-spacing:.1em;pointer-events:none}.now-line{position:absolute;height:1px;background:#21816E;left:0;right:0;z-index:2;pointer-events:none}.now-line::before{content:"";position:absolute;left:-3px;top:-3px;width:7px;height:7px;border-radius:50%;background:var(--green)}.day-detail{padding:21px 28px 20px;border-top:1px solid var(--line);background:#FBFCFE}.day-detail-top{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.day-detail .eyebrow{font-size:10px;margin-bottom:2px}.day-detail h3{font-size:16px;letter-spacing:-.02em}.selected-windows{display:flex;flex-wrap:wrap;gap:9px}.window-chip{border:1px solid #D3E2F8;border-radius:7px;background:var(--soft-blue);padding:7px 11px;display:flex;align-items:center;gap:10px;max-width:100%}.window-chip strong{font-family:var(--mono);font-size:11px;font-weight:500;white-space:nowrap;color:var(--blue)}.window-chip span{font-size:10px;color:#617A9D;overflow-wrap:anywhere}.empty-windows{font-size:12px;color:var(--gray)}.boundary-note{font-size:10px;color:var(--gray);margin-top:12px}
.lower-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:24px;margin-top:24px}.adjustments-section,.activity-section{border:1px solid var(--line);border-radius:15px;background:var(--paper);padding:0 24px 16px}.section-heading-small{padding:22px 0 8px}.section-heading-small h2{font-size:19px}.count-badge{font-family:var(--mono);font-size:11px;display:grid;place-items:center;min-width:25px;height:25px;background:var(--mist);border-radius:8px;color:var(--gray)}.section-description{font-size:11px;color:var(--gray);margin-bottom:17px;line-height:1.9}.adjustment-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-top:1px solid #EDF1F7}.adjustment-main{display:flex;align-items:flex-start;gap:10px;min-width:0}.adjustment-tag{font-size:9px;padding:2px 5px;border-radius:4px;background:#F4EDEA;color:#A1654A;white-space:nowrap;margin-top:2px}.adjustment-tag.extra{background:var(--soft-green);color:var(--green)}.adjustment-tag.day{background:var(--mist);color:var(--gray)}.adjustment-title{font-size:12px;font-weight:550;overflow-wrap:anywhere}.adjustment-meta{font-family:var(--mono);font-size:10px;color:var(--gray);margin-top:3px}.text-button{padding:7px 0 7px 10px;min-height:36px;background:none;border:0;font-size:11px;color:var(--blue);white-space:nowrap}.text-button:hover{text-decoration:underline}.empty-state{min-height:90px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;border-top:1px solid #EDF1F7;color:var(--gray);font-size:12px}.empty-state p+p{font-size:10px;margin-top:5px}.activity-row{border-top:1px solid #EDF1F7;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 0}.activity-title{font-size:12px;font-weight:550;overflow-wrap:anywhere}.activity-meta{font-family:var(--mono);font-size:10px;color:var(--gray);margin-top:4px}.activity-result{font-size:10px;white-space:nowrap;color:var(--gray);background:var(--mist);border-radius:4px;padding:2px 6px}.activity-result.success{color:var(--green);background:var(--soft-green)}.activity-result.failed{color:var(--red);background:#FBEFEA}.monitor-settings{display:flex;gap:14px;flex-wrap:wrap;margin-top:15px;padding-top:12px;border-top:1px solid #EDF1F7;color:var(--gray);font-size:10px}.monitor-settings span::before{content:"";width:4px;height:4px;border-radius:50%;background:#A8B7C9;display:inline-block;vertical-align:middle;margin-right:5px}.page-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:23px 0 30px;color:var(--gray);font-size:10px}
dialog{padding:0;border:1px solid var(--line);border-radius:18px;background:#fff;color:var(--navy);width:min(450px,calc(100% - 32px));max-height:calc(100dvh - 40px);box-shadow:0 20px 80px #182D4933;overflow-y:auto}dialog::backdrop{background:#182D4970;backdrop-filter:blur(3px)}.dialog-form{padding:27px}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:15px}.dialog-heading h2{font-size:23px}.dialog-heading .eyebrow{font-size:10px}.dialog-close{border-color:transparent;background:var(--mist);font-size:24px;width:34px;height:34px}.dialog-description{font-size:12px;color:var(--gray);line-height:1.9;margin-bottom:23px;overflow-wrap:anywhere}.segmented-field{border:0;margin:0 0 22px;padding:4px;display:grid;grid-template-columns:1fr 1fr;gap:4px;background:var(--mist);border-radius:9px}.segmented-field label{position:relative;min-width:0}.segmented-field input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.segmented-field span{display:block;text-align:center;padding:9px 8px;border:1px solid transparent;border-radius:7px;color:var(--gray);font-size:12px}.segmented-field input:checked+span{background:#fff;border-color:var(--line);color:var(--navy);box-shadow:0 2px 4px #182D4906}.segmented-field input:focus-visible+span{outline:3px solid var(--blue);outline-offset:2px}.dialog-form input:not([type=radio]){margin-bottom:18px}.time-fields{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field-note{color:var(--gray);font-size:11px;line-height:1.9}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:27px;padding-top:21px;border-top:1px solid var(--line)}.form-error{font-size:12px;line-height:1.8;color:var(--red);background:#FFF2EF;border-radius:7px;padding:9px 11px;margin-top:13px;overflow-wrap:anywhere}.conflict-reload{margin-top:10px;color:var(--blue)}.toast{position:fixed;left:50%;bottom:max(26px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:10;background:var(--navy);border:1px solid #FFF2;color:#fff;max-width:calc(100vw - 36px);padding:11px 20px;border-radius:10px;box-shadow:0 5px 25px #182D4926;font-size:12px;text-align:center}
.schedule-sync{margin:0 28px 16px;font-size:10px;color:var(--gray);padding:8px 11px;background:var(--mist);border-radius:6px;line-height:1.9}.schedule-sync::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;margin-right:7px;background:#98ABC4;vertical-align:middle}.schedule-sync.loaded{color:var(--green);background:var(--soft-green)}.schedule-sync.loaded::before{background:var(--green)}.schedule-sync.warning{color:var(--red);background:#FFF2EF}.schedule-sync.warning::before{background:var(--red)}
.course-block.overlapping{padding-left:4px;padding-right:4px}.course-block.overlapping .course-time{font-size:8px}.course-block.overlapping .course-name{font-size:10px;-webkit-line-clamp:3}
@media(min-width:1500px){.page-shell{padding-top:46px}.overview{margin-bottom:40px}.week-grid{grid-template-columns:48px repeat(7,minmax(148px,1fr))}}
@media(max-width:1100px){.site-header{padding-left:28px;padding-right:28px}.page-shell{padding-left:28px;padding-right:28px}.overview{gap:30px;grid-template-columns:.8fr 1.2fr}.status-panel{padding-left:20px;padding-right:20px}.lower-grid{gap:18px}.week-label{flex-direction:column;gap:1px;min-width:140px}.week-controls{gap:10px}}
@media(max-width:760px){.site-header{padding:19px 20px 17px}.brand{font-size:16px;gap:9px}.brand-mark{width:34px;height:34px;font-size:19px;border-radius:11px 11px 11px 3px}.brand-subtitle{font-size:9px}.page-shell{padding:27px 18px 0}.overview{display:block;margin-bottom:24px}.overview-heading{margin-bottom:22px}.overview-heading h1{font-size:31px;margin-bottom:8px}.overview-heading>.muted{max-width:none;font-size:11px}.overview-heading .eyebrow{font-size:10px;margin-bottom:6px}.status-panel{padding:18px 18px 13px;border-radius:13px}.status-heading h2{font-size:15px}.status-detail{margin-bottom:13px}.status-facts{gap:12px}.status-facts>div+div{padding-left:15px}.status-facts dd{font-size:11px}.status-facts .fact-meta{font-size:9px}.status-footnote{font-size:9px;margin-top:11px;padding-top:9px}.schedule-section{border-radius:14px}.section-heading{padding:20px 17px 17px}.section-heading h2{font-size:20px}.section-heading .eyebrow{font-size:10px}.section-heading>.button-small{font-size:11px;padding:9px 11px}.week-toolbar{padding:0 17px 15px}.week-label{min-width:106px;gap:2px}.week-label strong{font-size:12px}.week-label>span{font-size:9px}.week-controls{gap:7px}.week-controls .icon-button{width:33px;height:36px;font-size:16px}.week-toolbar>.button{font-size:10px;padding:8px 4px;min-height:36px}.schedule-legend{padding:11px 17px;gap:13px;font-size:9px}.schedule-legend .schedule-hint{font-size:9px;gap:2px}.schedule-hint>span{display:none}.week-grid{grid-template-columns:39px repeat(7,190px);min-width:1369px}.time-tick{left:5px;font-size:8px}.time-column .axis-top,.day-head{height:65px}.day-head{font-size:10px}.day-head strong{font-size:17px}.course-block .course-time{font-size:10px}.course-block .course-name{font-size:12px;-webkit-line-clamp:2}.course-block{left:9px;right:9px;width:calc(100% - 18px);padding:6px 8px}.day-detail{padding:18px 17px}.day-detail h3{font-size:15px}.day-detail .button-small{font-size:10px;padding:8px 10px;min-height:36px}.window-chip{width:100%;gap:12px;padding:7px 10px}.window-chip strong{font-size:10px}.window-chip span{font-size:9px}.boundary-note{font-size:9px;line-height:1.9}.lower-grid{display:block;margin-top:18px}.adjustments-section,.activity-section{padding:0 18px 15px;margin-bottom:18px;border-radius:13px}.section-heading-small{padding:19px 0 9px}.section-heading-small h2{font-size:18px}.section-description{font-size:10px;margin-bottom:12px}.adjustment-title,.activity-title{font-size:11px}.adjustment-meta,.activity-meta{font-size:9px}.adjustment-row{gap:8px}.adjustment-main{gap:8px}.page-footer{padding-top:2px;padding-bottom:max(25px,env(safe-area-inset-bottom));font-size:8px;gap:8px;align-items:flex-start}.page-footer>span:last-child{text-align:right;max-width:62%}.page-alert{align-items:flex-start;gap:10px;padding:12px;font-size:11px}.page-alert .button{font-size:10px;padding:8px;min-height:34px}.login-layout{display:block;min-height:0;max-width:430px;padding-top:20px}.login-intro .eyebrow{font-size:10px}.login-intro h1{font-size:44px;margin:16px 0}.login-intro>p:last-of-type{font-size:12px}.login-note{display:none}.login-card{padding:25px;margin-top:30px;border-radius:15px}.login-card h2{font-size:21px}.login-card>.muted{font-size:12px;margin-bottom:23px}.dialog-form{padding:23px}.dialog-heading h2{font-size:21px}.dialog-actions .button{font-size:12px}.toast{bottom:max(20px,env(safe-area-inset-bottom));font-size:11px;min-width:180px}}
@media(max-width:760px){.schedule-sync{margin:0 17px 14px;font-size:9px;padding:8px 10px}}
@media(max-width:760px){.status-detail{font-size:12px}.status-facts dd{font-size:12px}.status-facts .fact-meta{font-size:10px}.status-facts dt{font-size:11px}.window-chip strong{font-size:11px}.window-chip span{font-size:11px}.boundary-note,.section-description{font-size:11px}.activity-title,.adjustment-title{font-size:12px}.activity-meta,.adjustment-meta{font-size:10px}.activity-result{font-size:11px}.text-button{font-size:12px}.schedule-sync{font-size:10px}.page-footer{font-size:9px}}
@media(max-width:360px){.page-shell{padding-left:12px;padding-right:12px}.site-header{padding-left:15px;padding-right:15px}.week-controls{gap:4px}.week-label{min-width:98px}.schedule-legend{gap:8px;padding-left:14px;padding-right:14px}.schedule-legend .schedule-hint{font-size:8px}.status-panel{padding-left:14px;padding-right:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
