:root{--bg:#f5f6fa;--paper:#fff;--text:#253047;--muted:#768098;--line:#e9ecf3;--accent:#6172d7;--tint:#eef0fd;--shadow:0 12px 45px #283a6210;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.6 -apple-system,BlinkMacSystemFont,'Segoe UI','Microsoft YaHei',sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:var(--paper);color:var(--text);border-radius:11px;padding:9px 15px;min-height:42px;transition:background .15s}button:hover{background:var(--tint)}button:focus-visible,a:focus-visible{outline:3px solid #a4aee9;outline-offset:2px}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:white}button.ghost{background:transparent;border-color:transparent}button.danger{color:#b14b61}input,select,textarea{border:1px solid var(--line);border-radius:9px;padding:10px;background:var(--bg);color:var(--text);width:100%;min-height:44px}textarea{resize:vertical}a{color:var(--accent)}h1,h2,h3,p{margin-top:0}h1{font-size:27px;letter-spacing:-1px;margin-bottom:3px}h2{font-size:20px}h3{font-size:15px}small,.muted{color:var(--muted)}.shell{max-width:1560px;margin:auto;display:grid;grid-template-columns:210px 1fr;min-height:100vh}.sidebar{padding:32px 22px;background:var(--paper);border-right:1px solid var(--line);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;font-size:23px;font-weight:750;letter-spacing:2px;margin-bottom:45px}.brand img{width:37px;height:37px}.brand small{display:block;font-size:10px;font-weight:500;letter-spacing:2px}.nav{display:grid;gap:8px}.nav button{display:flex;align-items:center;gap:12px;border:0;background:transparent;text-align:left;font-weight:600;padding:12px 14px}.nav button.active{background:var(--tint);color:var(--accent)}.nav-icon{font-size:19px;width:23px;text-align:center}.side-bottom{margin-top:auto;font-size:12px;color:var(--muted)}.local-badge{display:flex;gap:7px;align-items:center;margin:12px 0}.dot{width:6px;height:6px;border-radius:100%;background:#56a395;display:inline-block}.main{padding:30px 34px 24px;min-width:0}.topbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:23px}.eyebrow{font-size:11px;color:var(--accent);letter-spacing:2px;font-weight:700;margin-bottom:7px}.topbar .actions{display:flex;gap:8px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.schedule-panel{overflow:hidden}.weekbar{padding:17px 20px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line)}.weekbar strong{font-size:17px}.weekbuttons{display:flex;gap:5px;align-items:center}.weekbuttons button{min-width:36px;padding:6px 10px;min-height:36px}.weekdates{font-size:12px;color:var(--muted);margin-top:3px}.table-scroll{overflow:auto}.timetable{min-width:650px;display:grid;grid-template-columns:51px repeat(7,minmax(0,1fr));grid-template-rows:64px repeat(var(--slots),62px);position:relative;padding:0 9px 10px;gap:0}.dayhead{text-align:center;padding:10px 2px;color:var(--muted);font-size:12px;border-bottom:1px solid var(--line)}.dayhead strong{display:block;font-size:16px;color:var(--text);font-weight:550}.dayhead.today strong{color:var(--accent)}.slot{font-size:11px;color:var(--muted);text-align:center;border-bottom:1px solid var(--line);padding-top:7px}.slot b{display:block;font-size:13px;color:var(--text)}.slot span{font-size:9px;display:block}.gridcell{border-bottom:1px solid var(--line);border-left:1px solid var(--line)}.course-card{z-index:1;border:0;border-left:3px solid var(--course);border-radius:7px;margin:4px 3px;padding:8px 7px;min-height:0;text-align:left;align-self:stretch;overflow:hidden;background:color-mix(in srgb,var(--course) 13%,var(--paper));color:var(--text);box-shadow:none}.course-card:hover{filter:brightness(.97)}.course-card strong{display:block;font-size:12px;line-height:1.6;margin-bottom:5px;overflow-wrap:anywhere}.course-card span{display:block;font-size:10px;opacity:.72;line-height:1.5}.course-card.overlap{outline:2px solid #c86172;outline-offset:-2px;overflow:auto}.aside{display:grid;gap:17px;align-content:start}.aside .panel{padding:22px}.next{background:linear-gradient(145deg,#6879d6,#8692de);color:white;border:0;position:relative;overflow:hidden;min-height:196px}.next:after{content:'';width:150px;height:150px;border:1px solid #ffffff25;position:absolute;border-radius:50%;right:-50px;bottom:-60px;pointer-events:none}.next .muted,.next small{color:#e2e6ff}.next h2{line-height:1.5;font-size:20px;margin:14px 0 8px}.next .pill{background:#ffffff24;color:#fff}.pill{font-size:11px;border-radius:6px;background:var(--tint);color:var(--accent);padding:3px 7px;display:inline-block}.statrow{display:flex;justify-content:space-between;align-items:center;margin:11px 0;color:var(--muted);font-size:12px}.statrow b{font-size:20px;font-weight:650;color:var(--text)}.timeline-item{padding:12px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:42px 1fr;gap:8px;font-size:12px}.timeline-item:last-child{border:0}.timeline-item time{color:var(--accent);font-size:11px}.timeline-item strong{font-size:12px}.notice{padding:12px 16px;background:var(--tint);color:var(--accent);border-radius:11px;font-size:12px;margin:0 0 17px}.notice.warning{background:#fff4df;color:#8d6527}.notice button{padding:2px 10px;min-height:30px;margin-left:8px}.page-footer{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:11px;margin:20px 0}.empty{padding:55px 25px;text-align:center;grid-column:1/-1}.empty .symbol{font-size:40px;color:var(--accent);margin:10px}.empty h2{margin:12px}.empty p{color:var(--muted)}.empty button{margin:4px}.content-panel{padding:26px;max-width:950px}.cards{display:grid;grid-template-columns:1fr 1fr;gap:17px}.import-card{border:1px solid var(--line);border-radius:14px;padding:22px;display:flex;flex-direction:column;align-items:flex-start}.import-card h3{font-size:17px;margin-bottom:9px}.import-card p{color:var(--muted);font-size:13px;flex:1}.import-card .number{font-size:11px;letter-spacing:2px;color:var(--accent);margin-bottom:16px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field.full{grid-column:1/-1}.field small{font-size:11px}.button-row{display:flex;gap:9px;flex-wrap:wrap;margin:18px 0 4px}.divider{border:0;border-top:1px solid var(--line);margin:25px 0}.list-item{padding:16px 0;border-bottom:1px solid var(--line);display:flex;gap:12px;justify-content:space-between}.list-item strong{display:block}.list-item p{font-size:12px;color:var(--muted);margin:5px 0}.settings-list{display:grid;gap:10px}.table-wrap{overflow:auto;max-height:340px}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:10px;min-width:65px}th{position:sticky;top:0;background:var(--bg)}#modal{position:fixed;inset:0;background:#17233b66;z-index:10;padding:30px 16px;overflow:auto;display:flex;align-items:flex-start;justify-content:center}#modal[hidden]{display:none}.dialog{margin:auto;background:var(--paper);border:1px solid var(--line);width:min(680px,100%);border-radius:20px;padding:25px;box-shadow:0 25px 90px #0c152744}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.dialog-head h2{margin:0}.dialog-head button{font-size:18px}.error{color:#b34259;font-size:13px;white-space:pre-wrap}.preview-info{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}#toast{position:fixed;bottom:85px;left:50%;transform:translateX(-50%);background:#29374d;color:white;padding:10px 20px;border-radius:12px;z-index:20;max-width:90%;display:none}.about-text{font-size:13px;line-height:1.9}.about-text li{margin-bottom:10px}.theme-dark{--bg:#171d29;--paper:#202838;--text:#e1e6ef;--muted:#98a5bd;--line:#303b4e;--accent:#a3b0ff;--tint:#303b59;--shadow:none;color-scheme:dark}.theme-dark button.primary{background:#6576d8;color:white}.theme-dark .notice.warning{background:#443924;color:#ead39e}@media(prefers-color-scheme:dark){body.theme-auto{--bg:#171d29;--paper:#202838;--text:#e1e6ef;--muted:#98a5bd;--line:#303b4e;--accent:#a3b0ff;--tint:#303b59;--shadow:none;color-scheme:dark}}
@supports not (background:color-mix(in srgb,red,white)){.course-card{background:var(--tint)}}
@media(min-width:1450px){.timetable{grid-template-rows:64px repeat(var(--slots),66px)}}
@media(max-width:1100px){.shell{grid-template-columns:175px 1fr}.main{padding:25px 22px}.sidebar{padding:27px 15px}.layout{grid-template-columns:1fr}.aside{grid-template-columns:1fr 1fr}.aside .today-list{display:none}.next{min-height:150px}.aside .panel{padding:18px}}
@media(max-width:650px){.shell{display:block}.sidebar{position:fixed;top:auto;bottom:0;left:0;right:0;height:auto;padding:7px 10px calc(7px + env(safe-area-inset-bottom));z-index:5;border-top:1px solid var(--line);border-right:0;background:var(--paper)}.brand,.side-bottom{display:none}.nav{display:flex;justify-content:space-around;gap:0}.nav button{display:flex;flex-direction:column;font-size:10px;gap:0;padding:3px 15px;min-height:46px}.nav-icon{font-size:20px}.main{padding:22px 12px calc(90px + env(safe-area-inset-bottom))}.topbar{margin-bottom:17px;align-items:center}.topbar h1{font-size:24px}.topbar .actions button{padding:7px 11px;font-size:12px}.topbar .actions .desktop{display:none}.eyebrow{font-size:9px;letter-spacing:1.5px}.layout{gap:14px}.aside{grid-template-columns:1fr}.aside .summary{display:none}.next{min-height:auto}.next h2{font-size:17px;margin:8px 0}.timetable{min-width:0;grid-template-columns:32px repeat(7,minmax(0,1fr));grid-template-rows:54px repeat(var(--slots),66px);padding:0 3px 8px}.slot span{font-size:8px}.course-card{margin:3px 1px;padding:6px 3px;border-left-width:2px;border-radius:5px}.course-card strong{font-size:10px;line-height:1.5;margin-bottom:3px}.course-card span{font-size:9px}.course-card .teacher{display:none}.dayhead{font-size:10px}.dayhead strong{font-size:13px}.weekbar{padding:12px}.weekbar strong{font-size:15px}.weekdates{font-size:10px}.weekbuttons button{font-size:11px;min-width:28px;padding:5px 8px}.panel{border-radius:13px}.page-footer{font-size:10px}.content-panel{padding:18px}.cards{grid-template-columns:1fr}.import-card{padding:20px}.form-grid{gap:9px}.dialog{padding:20px 16px}.notice{font-size:11px;padding:10px 12px}.list-item{align-items:flex-start}.list-item button{white-space:nowrap;padding:7px 10px}.topbar .subtitle{max-width:195px;font-size:11px}.mobile-hide{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
