*{box-sizing:border-box}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;margin:0;background:#f4f5f7;color:#222}
nav{display:flex;gap:1rem;align-items:center;background:#1f3b5a;padding:.6rem 1rem}nav a{color:#fff;text-decoration:none;font-weight:600}
nav .right{margin-left:auto;color:#cfd8e3;display:flex;gap:.5rem;align-items:center}
main{max-width:1000px;margin:auto;padding:1rem}
.card{background:#fff;padding:1rem;border-radius:8px;margin:1rem 0;box-shadow:0 1px 3px #0002}.narrow{max-width:360px}
label{display:block;margin:.4rem 0;font-weight:600}label.inline{font-weight:normal}
.row{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}
input,select,button{font-size:1rem;padding:.45rem;border:1px solid #bbb;border-radius:6px}
button{background:#e8e8e8;cursor:pointer}.primary{background:#1f6feb;color:#fff;border:0}.danger{background:#c62828;color:#fff;border:0}
select#event{font-size:1.2rem;min-width:320px}
input.scan{width:100%;font-size:2rem;padding:.6rem;margin:1rem 0}
.status{font-size:2.6rem;font-weight:800;text-align:center;padding:2rem 1rem;border-radius:12px;color:#fff;min-height:9rem}
.status.idle{background:#ddd;color:#555}.status.ok{background:#1b8a2f}.status.duplicate{background:#e68a00}.status.notfound,.status.error{background:#c62828}
.count{font-size:1.6rem;text-align:center;margin:1rem;font-weight:700}
.hint{color:#666;text-align:center}#reader{max-width:420px;margin:auto}
table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:.4rem;border-bottom:1px solid #ddd;text-align:left}
td input{width:100%}.nowrap{white-space:nowrap}
.flash{padding:.6rem 1rem;border-radius:6px;margin:.5rem 0}.flash.ok{background:#dff3e3}.flash.error{background:#fde0e0}
.tabs a{margin-right:1rem;padding:.3rem .6rem;border-radius:6px;background:#fff;text-decoration:none}.tabs a.on{background:#1f3b5a;color:#fff}
.status.notonlist{background:#c62828;outline:6px dashed #fff;outline-offset:-16px}
td.warn{color:#b35c00;font-weight:700}
.checklist{max-height:480px;overflow:auto;border:1px solid #ddd;border-radius:6px}
.inline-form{display:inline}a.btn{padding:.45rem .6rem;background:#e8e8e8;border-radius:6px;text-decoration:none;color:#222}
.tabs a{display:inline-block;margin-bottom:.3rem}th a{color:inherit}
.selall{margin:.4rem 0}.selall input{transform:scale(1.3);margin-right:.4rem}

/* student search autocomplete */
.ac-wrap { position: relative; }
.ac-list { position: absolute; left: 0; right: 0; top: 100%; z-index: 20; margin: 2px 0 0; padding: 0; list-style: none;
  background: #fff; border: 1px solid #bbb; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,.15); max-height: 22em; overflow-y: auto; }
.ac-list li { padding: .5em .75em; cursor: pointer; display: flex; justify-content: space-between; gap: 1em; color: #222; }
.ac-list li.active, .ac-list li:hover { background: #dbeafe; }
.ac-list li small { color: #555; white-space: nowrap; }
.ac-list li.empty { color: #777; cursor: default; }
a.button{display:inline-block;padding:.5rem .9rem;border-radius:6px;text-decoration:none}

/* v3.4 branding + login */
.nav-logo{background:#fff;border-radius:6px;padding:2px 6px;display:inline-flex}.nav-logo img{height:28px;display:block}
.login-head{text-align:center;margin:1rem 0 .5rem}.login-logo{max-width:280px;width:70%;height:auto}
.button.big{display:block;text-align:center;font-size:1.1rem;padding:.75rem}
.local-login summary{cursor:pointer;background:#e8e8e8;color:#222;list-style:none;text-align:center}
.local-login summary::-webkit-details-marker{display:none}.local-login[open] summary{margin-bottom:.6rem}
.muted{color:#666}
