@font-face{font-family:Ysabeau Infant;font-style:normal;font-weight:500 800;font-display:swap;src:url(/fonts/ysabeau-infant-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Ysabeau Infant;font-style:normal;font-weight:500 800;font-display:swap;src:url(/fonts/ysabeau-infant-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Ysabeau Infant,system-ui,sans-serif;color:#2b241f;background:linear-gradient(145deg,#fce5cd,#faeadb 48%,#f7efe4)}*{box-sizing:border-box}html,body,#root{max-width:100%;overflow-x:hidden}body{margin:0;min-height:100vh;background:inherit}button,select{font:inherit}.page{width:min(1320px,calc(100% - 32px));margin:auto;padding:26px 0 44px}.center{display:grid;min-height:100vh;place-items:center}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.topbar>div{min-width:0}.eyebrow{margin:0;color:#765e56;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:0}h1{margin:3px 0;font-size:30px}h2{margin:0 0 10px;font-size:18px}.sectiontitle{margin-top:20px}p{margin:0;color:#6c5a52}.toolbar,.panel{border:1px solid rgba(43,36,31,.13);border-radius:8px;background:#ffffffb8;box-shadow:0 12px 30px #50281e14}.toolbar{padding:12px;margin-bottom:10px}.toolbar label{display:grid;min-width:0;gap:5px;max-width:620px;color:#705e56;font-size:12px;font-weight:800;text-transform:uppercase}select{width:100%;min-width:0;max-width:100%;min-height:40px;border:1px solid rgba(43,36,31,.18);border-radius:8px;background:#fff;padding:8px 11px;color:#2b241f}.tabs{display:flex;max-width:100%;gap:6px;overflow-x:auto;padding:2px 0 10px}.tabs button,button{border:1px solid rgba(43,36,31,.14);border-radius:8px;background:#ffffffd1;padding:8px 12px;color:#2b241f;font-weight:750;white-space:nowrap;cursor:pointer}.tabs button.active{background:linear-gradient(180deg,#d86b8d,#e2b15f);color:#fff;border-color:transparent}.secondary{background:#ffffffa6}.panel{padding:14px;overflow:hidden}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.metrics div{border-left:4px solid #4f91bb;border-radius:6px;background:#fff9f4;padding:12px}.metrics div:nth-child(2){border-left-color:#5b9b72}.metrics div:nth-child(3){border-left-color:#c8913d}.metrics div:nth-child(4){border-left-color:#c55d65}.metrics strong{display:block;color:#74465c;font-size:26px;line-height:1}.metrics span{display:block;margin-top:6px;color:#69544b;font-size:13px;font-weight:700}.tablewrap{width:100%;max-width:100%;overflow:auto;border:1px solid rgba(43,36,31,.1);border-radius:6px}table{width:100%;min-width:760px;border-collapse:collapse;background:#ffffff8a}th,td{padding:8px 9px;border-bottom:1px solid rgba(43,36,31,.09);text-align:left;vertical-align:top}th{background:#f8e9e8;color:#5b4542;font-size:12px;text-transform:uppercase}td{font-size:14px}.empty{text-align:center;color:#77655e;padding:24px}.notice{padding:10px 12px;margin-bottom:10px;border-radius:7px}.error{background:#f7dede;color:#8e3e44}@media(max-width:720px){.page{width:100%;padding:14px 10px 30px}.topbar{align-items:center;flex-wrap:wrap}h1{font-size:25px}.toolbar{max-width:100%}.panel{padding:8px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.tabs{margin-right:-10px}.tablewrap{border-radius:4px}th,td{padding:7px;font-size:13px}}.center{padding:16px}.loginpanel{width:min(440px,100%);border:1px solid rgba(43,36,31,.13);border-radius:8px;background:#fffc;box-shadow:0 12px 30px #50281e14;padding:24px}.loginpanel p{line-height:1.45}.primarylink,.signout{display:inline-flex;align-items:center;justify-content:center;margin-top:18px;border:1px solid transparent;border-radius:8px;background:#a84868;padding:9px 16px;color:#fff;font:inherit;font-weight:800;text-decoration:none;cursor:pointer}.signout{margin-top:0}.signout:disabled{cursor:wait;opacity:.65}.loginpanel .signout{margin-top:18px}.loginerror{color:#8e3e44}.account{display:flex;align-items:center;justify-content:flex-end;gap:12px;min-width:0}.account strong{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:720px){.topbar{align-items:flex-start}.account{width:100%;justify-content:space-between}.account strong{max-width:calc(100vw - 140px)}}.toolbar{position:relative;z-index:40;display:flex;align-items:flex-end;justify-content:flex-start;gap:10px;overflow:visible}.filterfield{display:grid;gap:4px;min-width:0;color:#705e56;font-size:12px;font-weight:800;text-transform:uppercase}.coursefilter{width:min(620px,100%)}.weekfilter{width:min(220px,100%)}.singledrop{position:relative;min-width:0}.dropbutton{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:40px;border:1px solid rgba(43,36,31,.18);border-radius:8px;background:linear-gradient(180deg,#fffffffa,#ffffffe0);box-shadow:inset 0 1px #ffffffb3,0 8px 18px #50281e0d;padding:8px 11px;color:#2b241f;font-weight:600;text-align:left;text-transform:none}.dropbutton span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropbutton b{margin-left:10px;color:#765e56;font-size:13px}.singledrop.open .dropbutton{border-color:#d86b8d94;box-shadow:0 0 0 4px #d86b8d1f}.dropmenu{position:absolute;z-index:240;top:calc(100% + 6px);left:0;right:0;display:grid;gap:3px;max-height:300px;overflow:auto;border:1px solid rgba(43,36,31,.14);border-radius:8px;background:#fffffffc;box-shadow:0 18px 48px #40231c2e;padding:6px}.dropoption{width:100%;border:0;border-radius:6px;background:transparent;box-shadow:none;padding:7px 8px;color:#2b241f;font-size:13px;font-weight:600;line-height:1.35;text-align:left;text-transform:none;white-space:normal}.dropoption:hover,.dropoption.active{background:#ffcad47a}.dropoption.active{color:#a84868;font-weight:800}.thbutton{display:flex;align-items:center;justify-content:center;gap:5px;width:100%;min-height:34px;border:0;border-radius:5px;background:transparent;box-shadow:none;padding:4px;color:inherit;font-size:12px;font-weight:800;line-height:1.15;text-align:center;text-transform:uppercase;white-space:normal}.thbutton:hover{background:#d86b8d1f;color:#984b61}.thbutton b{min-width:12px;color:#9a6c79;font-size:11px}th[aria-sort=ascending] .thbutton,th[aria-sort=descending] .thbutton{color:#984b61}.statusbadge{display:inline-flex;align-items:center;justify-content:center;max-width:190px;border:1px solid transparent;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:800;line-height:1.25;text-align:center;white-space:normal}.status-success{border-color:#4c845b3d;background:#daeaddeb;color:#3f674b}.status-warning{border-color:#ac7e2b40;background:#f6e8c5eb;color:#795827}.status-danger{border-color:#a8494c3d;background:#f1d7d5f0;color:#8b3e39}.status-info{border-color:#41779738;background:#dae9f2f0;color:#3d667e}.status-neutral{border-color:#534b4629;background:#e7e4e1eb;color:#615751}tr.row-warning td{background:#fff7e1b3}tr.row-danger td{background:#fce8ebc2}tr.row-warning td:first-child{box-shadow:inset 4px 0 #d7a94e}tr.row-danger td:first-child{box-shadow:inset 4px 0 #c45f67}.metrics .metric-warning{background:#fff5dc}.metrics .metric-warning strong{color:#966b2e}.loading{padding:22px;text-align:center}td{line-height:1.35}td .statusbadge{vertical-align:middle}@media(max-width:720px){.toolbar{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch}.coursefilter,.weekfilter{width:100%}.dropmenu{max-width:calc(100vw - 36px)}.statusbadge{max-width:150px}.thbutton{min-height:30px;padding:3px;font-size:11px}}
