:root{font-family:system-ui,sans-serif;color:#172033;background:#f3f5f8}body{margin:0}header{background:#14213d;color:white;padding:18px 5%;display:flex;justify-content:space-between;align-items:center}header h1{margin:0;font-size:1.3rem}nav{display:flex;gap:14px;align-items:center}nav a{color:white;text-decoration:none}nav form{margin:0}main{max-width:1100px;margin:28px auto;padding:0 20px}article,table,.login{background:white;border-radius:12px;box-shadow:0 3px 15px #0001;padding:22px;margin:18px 0}.meta{font-weight:700;margin-bottom:12px}.student{border-left:4px solid #8ca0c5;padding:10px 14px;margin-bottom:14px;background:#f8f9fb}textarea,input{box-sizing:border-box;width:100%;padding:12px;border:1px solid #bdc5d2;border-radius:7px;font:inherit}label{display:block;margin:14px 0}button,.button{border:0;border-radius:7px;padding:10px 14px;background:#1d5fd1;color:white;font-weight:700;cursor:pointer;text-decoration:none;display:inline-block}.secondary{background:#5d6677}.danger{background:#a33131}.buttons,.actions{display:flex;gap:10px;margin-top:12px}.actions form{margin:0}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #e4e7ec}td form{display:inline}small{display:block;color:#677085}.login{max-width:420px;margin:10vh auto}.error{color:#a33131}@media(max-width:700px){header{display:block}nav{margin-top:12px;flex-wrap:wrap}.buttons{flex-wrap:wrap}table{font-size:.9rem}}
.status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}.status-card{background:white;border-radius:12px;box-shadow:0 3px 15px #0001;padding:18px;display:flex;flex-direction:column;gap:8px}.status{font-weight:700}.status.good{color:#237a3b}.status.warning{color:#996800}.status.danger,.status.expired,.status.missing{color:#a33131}.notice{padding:13px 16px;border-radius:8px;margin:14px 0;background:#eef3fb}.notice.good{background:#e8f6ec;color:#205f31}.notice.warning{background:#fff4d8}.notice.danger,.notice.expired,.notice.missing{background:#fdeaea;color:#8d2929}.notice a{font-weight:700}.token-summary{margin:12px 0}@media(max-width:800px){.status-grid{grid-template-columns:1fr}}
