*{margin:0;padding:0;box-sizing:border-box}body{font-family:Space Mono,monospace;background:#000;min-height:100vh;color:#fff;overflow:hidden;position:relative}.password-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000f2;display:flex;justify-content:center;align-items:center;z-index:1000}.password-container{background:#111;padding:40px;border-radius:10px;border:2px solid #333;text-align:center;max-width:300px;width:90%}.password-container h2{margin:0 0 20px;color:#fff;font-size:24px}#password-input{width:100%;padding:12px;font-size:18px;font-family:Space Mono,monospace;background:#222;border:1px solid #555;border-radius:5px;color:#fff;margin-bottom:15px;text-align:center}#password-input:focus{outline:none;border-color:#fff}#password-submit{background:#fff;color:#000;border:none;padding:12px 30px;font-size:16px;font-family:Space Mono,monospace;font-weight:700;border-radius:5px;cursor:pointer;width:100%}#password-submit:hover{background:#f0f0f0}.password-error{color:#f44;margin-top:15px;font-size:14px}.camera-container{position:absolute;top:0;left:0;width:100vw;height:100vh;background:#000;z-index:1}#video{width:100%;height:100%;object-fit:cover;display:block}.camera-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000000e6;z-index:50}.scan-button{position:fixed;bottom:0;left:0;width:100vw;height:124px;background:#fff;border:none;border-top:2px solid #000;color:#000;font-family:Space Mono,monospace;font-size:20px;font-weight:700;text-transform:uppercase;letter-spacing:2px;cursor:pointer;z-index:25;transition:all .3s ease}.scan-button:hover{background:#f0f0f0}.scan-button:active{background:#e0e0e0}.scan-button.disabled,.scan-button:disabled{background:#ccc;color:#888;cursor:not-allowed;opacity:.7}.scan-button.disabled:hover,.scan-button:disabled:hover{background:#ccc;transform:none}#button-text{display:block;text-align:center;line-height:124px}.scan-result{position:fixed;top:0;left:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;z-index:16}.scan-result.valid{background:#22c55e}.scan-result.invalid{background:#ef4444}.scan-result.pending{background:#475569}.result-content{text-align:center;color:#fff;padding-top:80px;align-self:flex-start;width:100%}.person-id-display{font-size:20px;font-weight:700;font-family:Space Mono,monospace;margin-bottom:30px;opacity:.8}.person-name-display{font-size:32px;font-weight:700;font-family:Space Mono,monospace;line-height:1.3}.attendance-counter{position:fixed;bottom:124px;left:0;right:0;width:100vw;background:#000;text-align:center;z-index:15;padding:10px 0}.attendance-number{font-size:20px;font-weight:700;font-family:Space Mono,monospace;color:#fff}body.scanning .camera-container{z-index:5}body.scanning .scan-button{background:#ff6b6b;border-top-color:#f44;color:#fff}body.scanning .scan-button:hover{background:#ff5252}@keyframes scanningPulse{0%{opacity:.7}50%{opacity:1}to{opacity:.7}}body.scanning #camera-status{animation:scanningPulse 1.5s infinite ease-in-out;background:#ff6b6bcc!important;font-weight:700}body.scanning:after{content:"";position:fixed;top:calc(50% - 62px);left:50%;transform:translate(-50%,-50%);width:70vw;height:70vw;max-width:300px;max-height:300px;border:2px dashed rgba(255,255,255,.8);border-radius:20px;z-index:6;box-shadow:0 0 0 2000px #0000004d;pointer-events:none}.action-buttons{position:fixed;bottom:0;left:0;width:100vw;display:flex;flex-direction:column;z-index:20}.action-button{width:100vw;height:124px;font-size:20px;font-family:Space Mono,monospace;font-weight:700;text-transform:uppercase;letter-spacing:2px;border:none;cursor:pointer;transition:all .3s ease;line-height:124px;text-align:center}.action-button.confirm{background:#22c55e;color:#fff;border-top:2px solid #16a34a}.action-button.confirm:hover{background:#16a34a}.action-button.confirm:active{background:#15803d}.action-button.reject{background:#ef4444;color:#fff;border-top:2px solid #dc2626}.action-button.reject:hover{background:#dc2626}.action-button.reject:active{background:#b91c1c}.action-button:disabled{opacity:.5;cursor:not-allowed}body.confirming .scan-button{display:none}body.confirming .attendance-counter{display:none!important}
