.tai-campus,.tai-topic-material{--tai-purple:#8B5CF6;--tai-yellow:#FFFF44;--tai-teal:#2EC4B6;--tai-pink:#FF7AA2;--tai-ink:#242238;--tai-muted:#77758a;color:var(--tai-ink);font-family:inherit}
.tai-campus{max-width:1160px;margin:32px auto;padding:0 18px}
.tai-hero{background:linear-gradient(125deg,#f4efff 0%,#fbfaff 58%,#eafffb 100%);border:1px solid #e8e0ff;border-radius:24px;padding:clamp(24px,5vw,48px);margin-bottom:28px}
.tai-eyebrow{font:700 11px/1.4 "DM Mono",monospace;letter-spacing:1.6px;color:#7650d8;margin-bottom:12px}
.tai-hero h2{font-size:clamp(28px,4vw,42px);line-height:1.12;margin:0 0 12px;color:#252139}
.tai-hero>p{color:#69677a;margin:0;max-width:620px}
.tai-login-note{font-size:14px;margin-top:16px!important}
.tai-campus a{color:#6842ca}
.tai-toolbar{display:flex;gap:16px;align-items:center;justify-content:space-between;margin:22px 0;color:var(--tai-muted);font-size:13px}
.tai-search{max-width:360px;width:100%;border:1px solid #e5e1ef!important;border-radius:12px!important;padding:12px 15px!important;background:#fff!important}
.tai-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.tai-card{border:1px solid #e9e6f0;border-radius:18px;padding:22px;background:#fff;display:flex;flex-direction:column;min-height:225px;box-shadow:0 5px 20px rgba(38,28,75,.035)}
.tai-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.tai-number{font:700 10px "DM Mono",monospace;letter-spacing:1px;color:#7650d8;background:#f2edff;border-radius:6px;padding:6px 9px}
.tai-done{font-size:11px;color:#16877e;background:#e8faf7;padding:5px 8px;border-radius:20px}
.tai-card h3{font-size:19px;line-height:1.3;margin:17px 0 8px}
.tai-card h3 a{text-decoration:none;color:#28243b}
.tai-card h3 a:hover{color:#7650d8}
.tai-card p{font-size:13px;color:var(--tai-muted);line-height:1.55;margin:0 0 12px}
.tai-tags{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 12px}.tai-tags span{font-size:11px;background:#f5f4f8;border-radius:20px;padding:4px 8px;color:#666}
.tai-card-actions{display:flex;align-items:center;gap:14px;margin-top:auto;padding-top:18px}
.tai-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:10px;padding:11px 16px;font-size:13px;font-weight:700;text-decoration:none;cursor:pointer}
.tai-button-primary{background:#8B5CF6;color:#fff!important}.tai-button-primary:hover{background:#7444df;color:#fff}
.tai-button-done{background:#e5f8f5;color:#137e74!important}
.tai-text-link{font-size:12px;text-decoration:none}
.tai-empty{border:1px dashed #d9d2e8;border-radius:16px;padding:28px;text-align:center;grid-column:1/-1;color:#777}
.tai-progress{max-width:460px;margin-top:22px}.tai-progress-label{display:flex;justify-content:space-between;font-size:12px;color:#625e75;margin-bottom:8px}.tai-progress-track{height:9px;border-radius:20px;background:#e5def4;overflow:hidden}.tai-progress-track span{display:block;height:100%;background:linear-gradient(90deg,#8B5CF6,#2EC4B6);border-radius:20px}
.tai-topic-material{border:1px solid #e8e2f3;border-radius:18px;padding:24px;margin:30px 0;background:#fcfbff}
.tai-topic-material h2{font-size:24px;margin:0 0 18px}
.tai-resource{display:flex;align-items:center;gap:13px;padding:13px 15px;margin:9px 0;background:#fff;border:1px solid #eeeaf5;border-radius:12px;text-decoration:none!important;color:#28243b!important}
.tai-resource-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#f1ebff;color:#7951db;font:700 11px "DM Mono",monospace}
.tai-resource span:nth-child(2){display:flex;flex-direction:column;gap:3px;flex:1}.tai-resource strong{font-size:13px}.tai-resource small{font-size:11px;color:#888}
.tai-resource>b{color:#8B5CF6}.tai-topic-material .tai-mark-done{margin-top:16px}.tai-feedback{font-size:13px;color:#16877e}
@media(max-width:850px){.tai-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.tai-grid{grid-template-columns:1fr}.tai-toolbar{align-items:stretch;flex-direction:column}.tai-search{max-width:none}.tai-hero{border-radius:18px}.tai-card{min-height:0}}
