:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#172033;background:#eef3f8}*{box-sizing:border-box}body{margin:0;background:#eef3f8}.shell{max-width:1100px;margin:auto;padding:18px}.brand{display:flex;align-items:center;gap:12px;margin:4px 0 18px}.brand img{width:58px;height:58px;border-radius:14px}.brand h1{margin:0;color:#0f3f67;font-size:24px}.brand p{margin:2px 0;color:#637083}.card{background:white;border:1px solid #dbe4ee;border-radius:16px;padding:16px;box-shadow:0 5px 18px rgba(15,63,103,.06);margin-bottom:14px}.hidden{display:none!important}label{display:block;font-weight:700;font-size:13px;color:#334155;margin:10px 0}input,select,button{font:inherit}input,select{width:100%;margin-top:6px;padding:12px;border:1px solid #cbd5e1;border-radius:10px;background:white}button{border:1px solid #c7d2df;background:#f8fafc;padding:11px 14px;border-radius:10px;font-weight:700;cursor:pointer}.primary{background:#155e9b;color:white;border-color:#155e9b}.ghost{background:white}.status{font-size:13px;color:#64748b}.topline{display:flex;justify-content:space-between;align-items:center}.topline small{display:block;color:#64748b;margin-top:3px}.controls{display:grid;grid-template-columns:minmax(180px,1fr) auto auto;gap:14px;align-items:end}.weeknav{display:flex;gap:6px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.banner{background:#fff7d6;border:1px solid #f2d36d;color:#6e5500;border-radius:12px;padding:12px 14px;margin-bottom:14px}.attendance-wrap{overflow:auto;padding:8px}.attendance-table{min-width:760px}.grid{display:grid;grid-template-columns:minmax(190px,2fr) repeat(7,minmax(74px,1fr));border-top:1px solid #dbe4ee;border-left:1px solid #dbe4ee}.cell{min-height:54px;padding:8px;border-right:1px solid #dbe4ee;border-bottom:1px solid #dbe4ee;display:flex;align-items:center;justify-content:center}.head{background:#f4f7fa;font-weight:800;text-align:center}.student{justify-content:flex-start;font-weight:700}.check{width:28px;height:28px;accent-color:#155e9b}.empty{padding:28px;text-align:center;color:#64748b}@media(max-width:720px){.shell{padding:12px}.controls{grid-template-columns:1fr}.weeknav{justify-content:space-between}.actions button{flex:1 1 45%}.brand h1{font-size:21px}}
