*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:#f5f7fa;color:#1a1a2e;line-height:1.6}a{color:#4361ee;text-decoration:none}a:hover{text-decoration:underline}.navbar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.5rem;background:#1a1a2e;color:#fff;flex-wrap:wrap;gap:.5rem}.navbar-brand a{color:#fff;font-weight:700;font-size:1.1rem;display:flex;align-items:center;gap:.75rem}.navbar-brand a:hover{text-decoration:none;color:#a8dadc}.navbar-logo{height:32px;width:auto}.navbar-links{display:flex;gap:1rem}.navbar-links a{color:#a8dadc;font-size:.95rem}.navbar-links a:hover{color:#fff;text-decoration:none}.navbar-user{display:flex;align-items:center;gap:.75rem}.user-name{font-size:.9rem}.role-badge{display:inline-block;padding:.15rem .6rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.role-admin{background:#e63946;color:#fff}.role-student{background:#4361ee;color:#fff}.btn-logout{padding:.35rem .75rem;background:transparent;border:1px solid #a8dadc;color:#a8dadc;border-radius:6px;cursor:pointer;font-size:.85rem}.btn-logout:hover{background:#a8dadc;color:#1a1a2e}.main-content{max-width:1100px;margin:0 auto;padding:1.5rem}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:1rem;background:linear-gradient(135deg,#1a1a2e,#16213e)}.auth-card{background:#fff;padding:2.5rem;border-radius:12px;box-shadow:0 10px 40px #00000026;width:100%;max-width:420px}.auth-header{display:flex;flex-direction:column;align-items:center;margin-bottom:1.5rem}.auth-logo{height:90px;width:auto;margin-bottom:1.25rem}.auth-card h1{text-align:center;margin-bottom:.25rem;font-size:1.5rem}.auth-card h2{text-align:center;margin-bottom:1.5rem;font-weight:400;color:#555}.auth-link{text-align:center;margin-top:1rem;font-size:.9rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.3rem;font-weight:600;font-size:.9rem;color:#333}.form-group input,.form-group select{width:100%;padding:.6rem .75rem;border:1px solid #ddd;border-radius:6px;font-size:.95rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus{outline:none;border-color:#4361ee;box-shadow:0 0 0 3px #4361ee1a}.inline-form{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.inline-form .form-group{flex:1;min-width:180px}.btn-primary{display:inline-block;width:100%;padding:.7rem 1.25rem;background:#4361ee;color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s;text-align:center}.btn-primary:hover{background:#3a56d4;text-decoration:none;color:#fff}.btn-primary:disabled{background:#aaa;cursor:not-allowed}.btn-small{display:inline-block;padding:.3rem .75rem;background:#4361ee;color:#fff;border-radius:4px;font-size:.8rem}.btn-small:hover{background:#3a56d4;text-decoration:none;color:#fff}.card{background:#fff;padding:1.5rem;border-radius:10px;box-shadow:0 2px 8px #0000000f;margin-bottom:1.5rem}.card h2{margin-bottom:1rem;font-size:1.15rem;color:#1a1a2e}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1.25rem;margin-top:1.5rem}.dashboard-card{display:block;background:#fff;padding:1.75rem;border-radius:10px;box-shadow:0 2px 8px #0000000f;text-align:center;transition:transform .15s,box-shadow .15s;color:#1a1a2e}.dashboard-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0000001a;text-decoration:none;color:#1a1a2e}.card-icon{font-size:2.5rem;margin-bottom:.5rem}.dashboard-card h3{margin-bottom:.3rem}.dashboard-card p{font-size:.9rem;color:#666}.summary-card .attendance-percentage{font-size:2.5rem;font-weight:700;margin:.75rem 0}.attendance-stats{display:flex;gap:.75rem;justify-content:center;font-size:.85rem;margin-bottom:.5rem}.dashboard{padding:0}.dashboard h1{margin-bottom:.25rem}.welcome{color:#555;margin-bottom:1rem}.page h1{margin-bottom:1.25rem}.back-link{display:inline-block;margin-bottom:1rem;font-size:.9rem}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:.65rem .75rem;text-align:left;border-bottom:1px solid #eee;font-size:.9rem}.data-table th{background:#f8f9fa;font-weight:600;color:#333;white-space:nowrap}.data-table tbody tr:hover{background:#f8f9fa}.attendance-table input[type=radio]{width:1.1rem;height:1.1rem;cursor:pointer}.status-present{color:#2d6a4f;font-weight:600}.status-absent{color:#e63946;font-weight:600}.status-late{color:#e9c46a;font-weight:600}.status-badge{display:inline-block;padding:.2rem .65rem;border-radius:12px;font-size:.8rem;font-weight:600}.status-badge.status-present{background:#d4edda;color:#155724}.status-badge.status-absent{background:#f8d7da;color:#721c24}.status-badge.status-late{background:#fff3cd;color:#856404}.text-good{color:#2d6a4f}.text-warning{color:#e63946}.text-muted{color:#888;font-size:.85rem}.stats-row{display:flex;gap:2rem;flex-wrap:wrap}.stat{display:flex;flex-direction:column;align-items:center}.stat-value{font-size:1.75rem;font-weight:700}.stat-label{font-size:.8rem;color:#888;text-transform:uppercase}.error-message{padding:.75rem 1rem;background:#f8d7da;color:#721c24;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.success-message{padding:.75rem 1rem;background:#d4edda;color:#155724;border-radius:6px;margin-bottom:1rem;font-size:.9rem}.hint{padding:.75rem 1rem;background:#e7f3ff;color:#004085;border-left:4px solid #4361ee;border-radius:4px;margin-top:.5rem;font-size:.9rem}@media(max-width:700px){.navbar{flex-direction:column;align-items:flex-start}.inline-form{flex-direction:column}.stats-row{justify-content:center}.btn-primary{width:100%}}
