:root{font-family:Inter,"Microsoft YaHei",sans-serif;color:#272334;background:#f6f5fa;font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:#7041cf;text-decoration:none}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:10px;padding:10px 16px;background:#eee9f8;color:#613bb1}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #aa8ae7;outline-offset:3px}.primary{color:white;background:#7846d7}.quiet{background:transparent}h1{font-size:30px;margin:10px 0 14px}h2{font-size:20px}h3{font-size:17px}p{line-height:1.7}.muted,.footnote{color:#777080}.eyebrow{letter-spacing:2px;font-size:12px;color:#8e76b7;margin-top:28px}.brand-mark{display:grid;place-items:center;width:50px;height:50px;border-radius:15px;color:white;font-weight:700;background:#7846d7;font-size:24px}.small{width:34px;height:34px;font-size:18px;border-radius:10px}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(ellipse at 20% 15%,#ebe1ff,transparent 50%),#f6f5fa;padding:24px}.login-card{width:420px;max-width:100%;padding:42px;background:white;border-radius:24px;box-shadow:0 20px 70px #4b326211}label{display:block;font-size:14px;margin:18px 0}input:not([type=checkbox]){display:block;width:100%;border:1px solid #d9d5e2;background:white;border-radius:10px;padding:12px;margin-top:9px;color:#272334}.login-card button{width:100%;padding:13px}.footnote{font-size:12px;margin:26px 0 0}.message{color:#b12f4a;font-size:14px;min-height:20px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 4vw;background:#fff;border-bottom:1px solid #eae6f1;gap:20px}.brand{display:flex;align-items:center;gap:12px;font-weight:bold;font-size:18px;color:#32273e}.topbar nav{display:flex;align-items:center;gap:22px;font-size:14px}.workspace{max-width:1280px;margin:0 auto;padding:25px 32px 70px}.hero{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:10px 0 25px}.stats{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin:25px 0 36px}.stat,.card,.panel{border:1px solid #ece7f2;background:white;border-radius:16px;padding:23px}.stat strong{display:block;font-size:30px;font-weight:650;color:#6541a4;margin-bottom:10px}.stat span{color:#797282;font-size:13px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.card{display:flex;flex-direction:column;gap:12px;min-width:0}.card h3{margin:2px 0}.card p{margin:0;font-size:13px}.card .primary{align-self:flex-start;margin-top:auto;display:inline-block;font-size:13px}.tag{font-size:11px;color:#8d72b0;letter-spacing:1px}.progress{height:6px;background:#eeebf5;border-radius:6px;overflow:hidden}.progress span{height:100%;display:block;background:#8d60db}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.badge-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}.badge{text-align:center}.badge img{height:94px;width:94px;object-fit:contain}.badge.locked img{filter:grayscale(1);opacity:.35}.badge p{font-size:12px;color:#837989;min-height:40px}.badge strong{font-size:12px;color:#774eb4}.admin-layout{display:grid;grid-template-columns:1fr 1.5fr;gap:24px;align-items:start}.course-choices{display:grid;grid-template-columns:1fr 1fr;gap:5px;max-height:420px;overflow:auto;border:1px solid #ece7f2;padding:10px;border-radius:12px}.course-choices label{display:flex;align-items:center;gap:8px;margin:5px 0;font-size:12px}.course-choices input{accent-color:#7846d7}.user-card{padding:18px 0;border-bottom:1px solid #ece7f2}.user-card:last-child{border:0}.user-card p{margin:7px 0;font-size:13px}.user-card button{font-size:12px}.empty{padding:50px;text-align:center;color:#817788}.actions{display:flex;gap:10px;margin-top:18px}.detail-list{font-size:13px;line-height:2;color:#706575}.pill{display:inline-block;border-radius:20px;background:#f0eafa;color:#7d57b4;padding:3px 9px;font-size:12px}.inactive{color:#ab3d51}.subtitle{font-size:14px;color:#83758f}.warning{color:#a56d22!important}details summary{cursor:pointer;font-size:12px;color:#785f94}@media(max-width:850px){.grid{grid-template-columns:repeat(2,1fr)}.badge-grid{grid-template-columns:repeat(3,1fr)}.stats{grid-template-columns:repeat(3,1fr)}.admin-layout{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}.topbar nav{flex-wrap:wrap;gap:15px}.workspace{padding:18px}.hero{align-items:flex-start}}@media(max-width:520px){.grid,.badge-grid{grid-template-columns:1fr 1fr}.card{padding:16px}.stats{grid-template-columns:1fr 1fr}.stat{padding:16px}.stat strong{font-size:25px}.login-card{padding:28px}.hero{display:block}.course-choices{grid-template-columns:1fr}}

.topbar{height:70px;background:linear-gradient(100deg,#7739e7,#a64cfa);color:#fff;border:0}.topbar a,.topbar .quiet{color:#fff}.topbar .brand-mark{display:none}.topbar .brand{font-size:22px}.workspace{max-width:1300px}.panel{border-radius:10px}

/* Account entry uses the same palette, header and card shape as the course site. */
.login-page{display:block;place-items:normal;min-height:100vh;padding:0;background:#f1f1f1;color:#4a536a;font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif}
.login-header,.login-main{width:100%}
.login-header{height:70px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(100deg,#7739e7,#a64cfa);box-shadow:0 2px 8px #0000001a;color:#fff}
.login-brand{display:flex;align-items:center;gap:18px;color:#fff;font-size:20px;font-weight:500}
.login-brand img{display:block;object-fit:contain}
.login-header-note{font-size:16px;opacity:.8}
.login-main{min-height:calc(100vh - 70px);display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:56px 24px 88px}
.login-card{width:min(440px,100%);min-width:0;padding:42px 44px 34px;border:1px solid #e7e7ed;border-radius:10px;box-shadow:0 8px 30px #4a536a08}
.login-card h1{font-size:28px;font-weight:500;text-align:center;margin:0 0 12px}
.login-card .muted{color:#8c95a6;text-align:center;font-size:14px;margin:0 0 32px}
.login-card label{color:#4a536a;margin:20px 0 9px;font-size:14px}
.login-card input:not([type=checkbox]){height:46px;margin:0;padding:0 14px;border:1px solid #dce0e7;border-radius:6px;color:#4a536a;font-size:15px}
.login-card input::placeholder{color:#abb2c1}
.login-card input:focus{border-color:#9b4cff;outline:0;box-shadow:0 0 0 3px #9b4cff18}
.login-card .message{min-height:22px;margin:12px 0;color:#b12f4a;line-height:1.5}
.login-card .primary{height:46px;padding:0;border-radius:24px;background:linear-gradient(100deg,#8033e7,#aa4bff);font-size:16px}
.login-card .primary:hover{filter:brightness(1.04)}
.login-card .footnote{margin:24px 0 0;text-align:center;color:#9199a9;font-size:12px}
@media(max-width:520px){.login-header{height:60px;padding:0 20px}.login-brand{gap:12px;font-size:18px}.login-brand img{width:36px;height:36px}.login-header-note{font-size:14px}.login-main{min-height:calc(100vh - 60px);padding:32px 20px}.login-card{padding:32px 24px}.login-card h1{font-size:25px}}
