:root{--ink:#152238;--blue:#1f5eff;--line:#dfe6f0}*{box-sizing:border-box}body{color:var(--ink);background:#f4f7fb;margin:0;font-family:Arial,PingFang HK,sans-serif}.shell{min-height:100vh;padding:30px clamp(16px,5vw,70px)}header,.modes,.grid{max-width:1180px;margin:auto}header{justify-content:space-between;align-items:end;gap:18px;margin-bottom:22px;display:flex}header p{color:#64748b;letter-spacing:.08em;margin:0 0 8px;font-size:13px;font-weight:800}h1{margin:0;font-size:clamp(28px,4vw,46px)}button,.import{font:inherit;cursor:pointer}.tools{gap:8px;display:flex}.tools button,.import{border:1px solid var(--line);background:#fff;border-radius:99px;padding:10px 15px;font-weight:800}.import{color:#fff;background:#17243a}.import input{display:none}.modes{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px;display:grid}.modes button{text-align:left;background:#fff;border:2px solid #0000;border-radius:20px;grid-template-columns:auto 1fr;gap:2px 14px;padding:17px 22px;display:grid}.modes small{color:#1f5eff;background:#e8efff;border-radius:12px;grid-row:1/3;padding:12px}.modes b{font-size:25px}.modes span{color:#718096;font-size:13px}.modes button.active{background:#f5f8ff;border-color:#1f5eff}.grid{grid-template-columns:.85fr 1.15fr;gap:22px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:24px;padding:22px;box-shadow:0 18px 55px #192b4d14}.camera{text-align:center;background:#f2f7ff;border:2px dashed #b9c8de;border-radius:18px;place-items:center;height:310px;display:grid;position:relative;overflow:hidden}.camera video{object-fit:cover;width:100%;height:100%;display:none}.camera.scanning video{display:block}.camera.scanning #cameraText{display:none}.camera i{color:var(--blue);font-size:64px;font-style:normal;display:block}.camera strong,.camera span{margin-top:8px;display:block}.camera span{color:#74839a}.line{background:#f05252;width:78%;height:2px;animation:1.8s infinite scan;display:none;position:absolute}.scanning .line{display:block}@keyframes scan{0%,to{top:23%}50%{top:76%}}.primary{background:var(--blue);color:#fff;border:0;border-radius:14px;width:100%;margin:16px 0;padding:17px;font-size:18px;font-weight:800}.manual{color:#6b7a90;margin-bottom:7px;font-size:14px;display:block}.entry{gap:8px;display:flex}.entry input{border:1px solid var(--line);border-radius:12px;flex:1;min-width:0;padding:13px}.entry button{color:#214ba9;border:0;border-radius:12px;padding:0 18px;font-weight:800}.notice{border-radius:12px;margin-bottom:12px;padding:13px 15px;font-weight:800}.notice.info{color:#31558e;background:#edf3ff}.notice.ok{color:#187548;background:#e9f8ef}.notice.error{color:#aa3030;background:#fff0f0}.result{flex-direction:column;display:flex}.empty{border:1px dashed var(--line);color:#7b8799;border-radius:19px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:8px;min-height:285px;display:flex}.student{color:#fff;background:#17243a;border-radius:19px;flex:1;grid-template-columns:1fr 1fr;align-items:center;gap:20px;min-height:285px;padding:28px;display:grid;box-shadow:inset 0 0 0 4px #31c477}.student.duplicate{box-shadow:inset 0 0 0 4px #f2a51a}.student div span{color:#a9b8d0;display:block}.student div strong{color:#ffdc72;font-size:clamp(72px,10vw,128px)}.student section{border-left:1px solid #40506a;padding-left:28px}.student i,.student em{background:#2d62ff;border-radius:8px;padding:7px 12px;font-style:normal;font-weight:800;display:inline-block}.student h2{margin:18px 0 7px;font-size:clamp(30px,4vw,50px)}.student p{color:#a9b8d0}.student em{background:#195b42;margin-top:14px}.history{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.historyTitle{color:#6c7b91;justify-content:space-between;font-size:13px;display:flex}.event{border-bottom:1px solid #edf0f5;grid-template-columns:1fr auto 70px;align-items:center;gap:10px;padding:9px 2px;display:grid}.event span{color:#77869a;font-size:12px;display:block}.event em{background:#e4f7ed;border-radius:7px;padding:5px 8px;font-size:12px;font-style:normal;font-weight:800}.event time{text-align:right;color:#607086}.noHistory{text-align:center;color:#8995a6}@media (width<=760px){.shell{padding:18px 13px}header{align-items:start}.tools{flex-direction:column}.modes{gap:8px}.modes button{padding:12px;display:block}.modes small,.modes b,.modes span{display:block}.modes small{display:inline-block}.grid{grid-template-columns:1fr}.camera{height:240px}.student{min-height:230px;padding:20px}.student div strong{font-size:68px}.result{min-height:520px}}.adminLink{color:#fff;background:#17243a;border-radius:99px;padding:10px 15px;font-weight:800;text-decoration:none;display:inline-block}.cameraResult{z-index:5;color:#fff;background:#0f5132f2;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:9px;padding:18px;display:flex;position:absolute;inset:14px;box-shadow:0 12px 35px #0005}.cameraResult[hidden]{display:none}.cameraResult.duplicate{background:#805400f2}.cameraResult.error{background:#922b2bf2}.cameraResult b{font-size:clamp(25px,5vw,42px)}.cameraResult strong{font-size:clamp(20px,4vw,34px)}.cameraResult span{color:#fff;margin:0;font-weight:800}.cameraResult em{color:#ffdc72;margin-left:8px;font-size:clamp(45px,9vw,82px);font-style:normal}.cameraResult small{font-size:16px;font-weight:800}
