:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#18365d;background:#f4f7fc;font-size:16px;line-height:1.5;--blue:#1256b5;--border:#dce5f1}*{box-sizing:border-box}body{margin:0}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}header{min-height:86px;background:linear-gradient(115deg,#173c71,#1757a6);color:white;display:flex;align-items:center;padding:14px 28px;gap:18px}header img{height:56px;width:56px;object-fit:contain;background:#fff;border-radius:50%}header strong{font-size:20px;letter-spacing:-.4px}header small{display:block;color:#d2e2fa;font-size:12px;margin-top:3px}header .account{margin-left:auto;color:white;font-size:14px;text-align:right}header form{margin:0}.ghost{background:transparent;border-color:#ffffff60;padding:8px 12px}aside{width:254px;position:absolute;top:86px;bottom:0;min-height:calc(100vh - 86px);padding:28px 12px;background:#f8faff;border-right:1px solid var(--border)}.eyebrow{font-size:12px;font-weight:700;letter-spacing:1.4px;color:#6a80a0}aside>.eyebrow{display:block;margin:0 14px 18px;font-size:11px}aside a{display:flex;gap:12px;align-items:center;color:#26476f;padding:14px;border-radius:6px;margin:3px 0;font-size:14px;font-weight:500}aside a span{font-size:24px;width:26px;line-height:1}aside a.active{background:#e4edff;color:#0659c9;border-right:3px solid #1764c8}.divider{border-top:1px solid var(--border);margin:24px 14px}.sidebar-foot{font-size:12px;color:#8191a6;padding:30px 14px}main{margin-left:254px;padding:34px;max-width:1800px}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px}h1{font-size:28px;line-height:1.25;margin:8px 0;font-weight:700;letter-spacing:-.7px}h2{font-size:19px;margin:20px 0 14px}.card{background:white;border:1px solid var(--border);border-radius:9px;padding:26px;margin-bottom:24px;box-shadow:0 2px 5px #25436503}p{font-size:14px;color:#637993}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:0 0 26px}.stats>div{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px;border-top:3px solid #acc9f0}.stats strong{display:block;font-size:30px;color:#153e78;margin-top:6px}.stats small{font-size:13px;color:#627794}.filters{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}.grow{flex:1;min-width:200px}label{display:block;font-size:14px;font-weight:500;color:#405b7e}input,select,textarea{display:block;width:100%;margin-top:7px;padding:11px 12px;border:1px solid #ccd9ea;border-radius:5px;font:inherit;color:#203e66;background:#fff;min-height:44px}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #89b6f1;outline-offset:1px}button,.button{display:inline-block;cursor:pointer;border:1px solid var(--blue);border-radius:5px;padding:11px 18px;background:var(--blue);color:#fff;font:inherit;font-size:14px;font-weight:600;text-align:center;min-height:44px}.button:hover{text-decoration:none;background:#0a479b}.secondary{color:#23518c;background:#f5f8fd;border-color:#d7e2f0}.secondary:hover{color:#18365d;background:#e6eef9}button:hover{filter:brightness(.95)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}th{background:#eef4fc;color:#254774;font-size:12px;padding:15px 14px;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:18px 14px;border-bottom:1px solid #eaf0f7;vertical-align:middle}td small{display:block;font-size:12px;color:#7b8ba1;margin-top:5px}td b{font-weight:600}tbody tr:nth-child(even){background:#fbfcfe}.badge{display:inline-block;border-radius:5px;padding:5px 9px;background:#fff2cf;color:#9a6912;font-size:12px;font-weight:600;white-space:nowrap}.badge.good{background:#dcf5e9;color:#08744a}.badge.bad{background:#ffe3e5;color:#b02b3b}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:24px;color:#6d819d}.muted{font-size:12px;color:#8191a6}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.full{grid-column:1/-1}.form-footer{border-top:1px solid var(--border);padding-top:22px;margin-top:26px;display:flex;justify-content:flex-end;gap:24px;align-items:center}.identity{background:#f0f5fc;padding:14px;margin-top:0;margin-bottom:25px}.session-row{padding:22px;background:#f6f9fe;border:1px solid var(--border);border-radius:6px;margin:16px 0}.session-row .form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.session-row button{margin-top:14px}.check{display:flex;align-items:center;gap:12px}.check input{width:20px;min-height:20px}.notice{padding:15px 20px;background:#e5f3ed;color:#236448;border-radius:6px;margin-bottom:22px;font-size:14px}.error{background:#fff0ee;color:#ab3d32}.demo{font-size:11px;color:#815e19;background:#fff5dc;padding:8px 14px;border-radius:5px;margin-bottom:20px;letter-spacing:.8px}.details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.details dt{font-size:12px;color:#7b8da4}.details dd{margin:5px 0 0;font-size:15px;white-space:pre-wrap;overflow-wrap:anywhere}.activity{border-left:3px solid #b9d2f5;padding:8px 18px;margin:14px 0;font-size:14px}.activity small{display:block;color:#7b8da4}.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin:25px 0}.report-note{background:#f1f6fd;padding:20px;border-radius:6px}.bar-row{display:flex;gap:15px;align-items:center;font-size:14px;margin:12px 0}.bar-row span{flex:1}.bar-row meter{width:35%;height:14px}.empty{text-align:center;padding:50px;color:#7b8da4}.login{margin:50px auto;max-width:510px;padding:0 16px}.login .card{padding:34px}.login label{margin:18px 0}.login button{width:100%;margin:8px 0 20px}.login small{font-size:12px;color:#75849a}fieldset{border:1px solid var(--border);border-radius:6px;padding:20px}legend{font-weight:600;font-size:14px}[hidden]{display:none!important}form>button{margin-top:18px}.filters>button,header form>button{margin-top:0}.card>form>label{margin:16px 0}.report-note small{font-size:12px}
@media(max-width:1050px){aside{width:210px}main{margin-left:210px;padding:22px}header strong{font-size:17px}.stats{gap:10px}.stats>div{padding:14px}.filters label{flex:1}.session-row .form-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){header{padding:12px;flex-wrap:wrap;gap:10px}header img{height:44px;width:44px}header>div{flex:1}header strong{font-size:15px}header .account{margin-left:54px}aside{position:static;width:auto;min-height:0;display:flex;overflow:auto;padding:8px;border-bottom:1px solid var(--border)}aside a{white-space:nowrap;padding:10px;font-size:13px}aside .eyebrow,.divider,.sidebar-foot{display:none}main{margin:0;padding:18px}.stats{grid-template-columns:repeat(2,1fr)}.heading{align-items:flex-start}h1{font-size:23px}.card{padding:18px}.form-grid,.details,.report-grid,.session-row .form-grid{grid-template-columns:1fr}.filters{gap:10px}.filters label{min-width:130px}.heading .button{white-space:nowrap;padding:10px;font-size:12px}.login{margin:28px auto}.pagination{gap:12px}}
.service-links{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.service-links a{flex:1;min-width:180px}
.board{text-align:center;min-height:70vh}.board:fullscreen{background:white;padding:40px}.board img{width:min(360px,90%);height:auto}.scan{max-width:540px;margin:20px auto;text-align:center}.scan button{width:100%;font-size:20px}details{margin:20px 0}summary{cursor:pointer;font-weight:600}

.minimal-main{max-width:100%;margin:0;padding:2rem}.minimal-main .board{border:0;box-shadow:none;text-align:center}.consult-grid th{background:#b5dfa1;color:#173d26}.class-heading,.class-grid .break{background:#f5ccac}.class-grid{min-width:1300px}.class-grid td{vertical-align:top}

/* Phone registration and official account screens. */
.mobile-menu{display:none}main,.card,.form-grid>*{min-width:0}.table-wrap{max-width:100%;overscroll-behavior-x:contain}.check input{flex-shrink:0}input[type=file]{max-width:100%}a,p,.identity{overflow-wrap:anywhere}
@media(max-width:760px){
 header>div{min-width:0}header .account{margin-left:0}header strong{display:block;overflow-wrap:anywhere}
 .mobile-menu{display:block;margin:12px 16px;width:calc(100% - 32px)}
 #main-navigation{display:none;flex-direction:column;overflow:visible;padding:8px 16px}
 #main-navigation.mobile-open{display:flex}#main-navigation a{white-space:normal;min-height:44px}
 main{padding:14px}.card{padding:16px}.heading{flex-wrap:wrap;gap:12px}.heading .button{white-space:normal}
 input,select,textarea{font-size:16px;max-width:100%}.form-grid,.session-row .form-grid{gap:16px}
 fieldset{min-width:0;padding:12px}legend{max-width:100%;white-space:normal}.session-row{padding:12px}
 .form-footer{flex-wrap:wrap;gap:12px}.form-footer button{flex:1}.filters>label,.filters>.grow{min-width:0;flex:1 1 100%}
 .pagination{flex-wrap:wrap}.pagination a{display:inline-block;padding:10px}.service-links a{min-width:0;flex:1 1 100%}
 .minimal-main{padding:12px}.login .card{padding:20px}.table-wrap table{min-width:600px}.class-grid{min-width:1300px}
 .check{align-items:flex-start}.check input{margin-top:2px}button,.button{touch-action:manipulation}
}
@media(max-width:760px){header{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center}header>div{grid-column:2}header .account{grid-column:1/-1;text-align:left;padding-top:8px;border-top:1px solid #ffffff30}header form{grid-column:1/-1}header form button{width:100%}header strong{overflow-wrap:normal}}

.attendance-staff-choice{width:22px;min-height:22px;margin:0}.bulk-attendance{margin:20px 0;padding:16px;background:#f0f5fc;border-radius:6px}button:disabled{opacity:.55;cursor:not-allowed}
