@font-face{font-family:Karla;src:url(karla-400.ttf)}@font-face{font-family:Poppins;src:url(poppins-600.ttf);font-weight:600}*{box-sizing:border-box}body{margin:0;background:#faf9f5;color:#20231c;font-family:Karla,Arial,sans-serif}.demo{text-align:center;background:#22271f;color:#e8d59f;font-size:11px;padding:10px}header{max-width:1180px;margin:auto;display:flex;align-items:center;gap:22px;padding:24px}header img{width:95px}header>span{font-size:11px;letter-spacing:2px}header button{margin-left:auto}main{max-width:1132px;margin:auto;padding:16px 24px}button,select,input{font:inherit}button{cursor:pointer;border:1px solid #dddcd2;background:white;padding:12px 18px;border-radius:9px;color:inherit}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible{outline:3px solid #ac8d43;outline-offset:3px}.hero{background:#161914;color:#fff;border-radius:18px;padding:40px;display:grid;grid-template-columns:1.4fr 1fr;gap:32px;align-items:center}.hero small{font-size:10px;letter-spacing:2px;color:#dcc795}h1,h2,h3{font-family:Poppins,Arial,sans-serif;font-weight:600}h1{font-size:42px;letter-spacing:-1.5px;margin:14px 0}p{line-height:1.6;color:#797d71}.hero p{color:#b9beb0;font-size:15px}.pass{border:1px solid #555b48;border-radius:12px;padding:24px;display:flex;flex-direction:column;gap:12px}.pass strong{font-size:24px}.pass span,.pass b{font-size:13px;font-weight:400}.pass b{color:#ddcd9d}nav{display:flex;gap:10px;padding:26px 0;border-bottom:1px solid #e4e2d9;margin-bottom:28px}nav button{border:0;background:transparent}.active,.primary{background:#e8d4a0!important;color:#28291f}h2{font-size:24px;margin:0 0 8px}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.heading p{margin:0;font-size:13px}.card{background:white;border:1px solid #e5e3da;border-radius:12px;padding:22px;margin:12px 0}.course{display:grid;grid-template-columns:70px 1fr auto;gap:20px;align-items:center}.date{color:#6d765e;font-size:12px;display:flex;flex-direction:column;gap:5px}.date strong{font-size:24px}.course h3{font-size:16px;margin:0 0 8px}.course p{margin:0;font-size:13px}.tag{font-size:11px;background:#eef1e7;color:#5f6d4d;padding:6px 10px;border-radius:5px;display:inline-block}.muted{color:#7c8171;font-size:12px}.notice{padding:17px 20px;background:#f0ecdF;border-radius:10px;font-size:13px;line-height:1.6;margin:20px 0}.filters{display:flex;gap:16px;align-items:end;flex-wrap:wrap}.filters label{flex:1;min-width:180px}label{font-size:12px;display:block}select,input{display:block;border:1px solid #deded5;border-radius:8px;padding:12px;margin-top:8px;width:100%;background:#fff;color:#24271f}.price{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.price b{font-size:20px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.data{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:20px 0}.data small{display:block;color:#818675;margin-bottom:8px}.data strong{font-size:14px;overflow-wrap:anywhere}.actions{display:flex;justify-content:flex-end;gap:12px;margin-top:22px}.due{display:flex;justify-content:space-between;padding:16px 0;border-bottom:1px solid #eee}footer{padding:35px 0;text-align:center;color:#7a7e72;font-size:12px}dialog{border:1px solid #ddd;border-radius:16px;padding:28px;width:min(480px,calc(100vw - 24px));max-height:90dvh;overflow:auto}dialog::backdrop{background:#10160d80}dialog h2{font-size:22px}dialog .top{display:flex;justify-content:space-between;align-items:start;gap:20px}.success{color:#526b38}#status{font-size:13px} .preview-controls{margin:18px 0;color:#777;font-size:12px}.preview-controls summary{cursor:pointer}.preview-controls select{max-width:350px}
@media(max-width:650px){header{padding:18px;gap:12px}header img{width:70px}header>span{display:none}main{padding:10px 16px}.hero{padding:24px;grid-template-columns:1fr;gap:18px}h1{font-size:31px}.pass{padding:18px}.pass strong{font-size:20px}nav{gap:5px}nav button{flex:1;padding:12px 5px}.heading{align-items:start;flex-wrap:wrap}.course{grid-template-columns:50px 1fr;gap:14px;padding:18px}.course>.price,.course>button,.course>.tag{grid-column:2;justify-self:start}.price{align-items:flex-start;flex-direction:row;align-items:center;flex-wrap:wrap}.grid{grid-template-columns:1fr}.data{gap:18px}input,select{font-size:16px}.actions{flex-wrap:wrap}.actions button{flex:1}.filters label{min-width:140px}}

.timetable-scroll{overflow:auto;max-height:640px;border:1px solid #e1e1d6;border-radius:12px;background:#fff;margin:20px 0;overscroll-behavior:contain}.timetable{min-width:1380px;display:grid;grid-template-columns:60px repeat(7,minmax(180px,1fr));align-items:stretch}.time-corner,.day-head{position:sticky;top:0;z-index:2;background:#f0efe7;padding:14px;text-align:center;border-right:1px solid #e1e1d6;font-size:12px}.day-head strong{display:block;margin-top:5px}.hour{position:sticky;left:0;z-index:1;background:#f7f7f1;padding:15px 8px;font-size:11px;border-top:1px solid #e9e8e1}.time-corner{left:0;z-index:3}.time-slot{min-height:112px;padding:6px;border-top:1px solid #e9e8e1;border-right:1px solid #e9e8e1}.time-course{width:100%;display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:6px;padding:12px;background:#edf1e7;border:1px solid #ced7bc;border-left:3px solid #71875b;border-radius:7px;font-size:11px}.time-course.waterloo{background:#eaf0f7;border-color:#bdcce0;border-left-color:#6285af}.time-course strong{font-size:14px}.time-course em{font-style:normal;font-weight:bold}.time-course:disabled{opacity:.8}.list-alternative{margin:24px 0}.list-alternative summary{cursor:pointer;font-size:13px;font-weight:bold;padding:12px 0}@media(max-width:650px){.timetable-scroll{max-height:65dvh}.timetable{min-width:1230px;grid-template-columns:50px repeat(7,minmax(168px,1fr))}.day-head{padding:12px 8px}}
[hidden]{display:none!important}#access,#verify,#reset,#profile,#change-email{max-width:640px;margin:24px auto;padding:28px;background:white;border:1px solid #e6e1d8;border-radius:16px}form{display:grid;gap:18px}label{display:grid;gap:8px;text-align:left}input{width:100%;min-width:0;border:1px solid #dcd7cc;border-radius:8px;padding:13px;background:#fff;color:#20231c}#access nav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px}main>h1,main>#status{text-align:center}#status{min-height:48px;max-width:650px;margin:12px auto}form>button:not([type=button]){background:#1b1d18;color:white}input:focus-visible{outline:3px solid #ac8d43;outline-offset:2px}@media(max-width:600px){main{padding:12px}main>h1{font-size:30px}#access,#verify,#reset,#profile,#change-email{padding:20px}header{padding:18px;gap:12px}}
