*{box-sizing:border-box}body,html{margin:0;background:#111;color:#fff;font-family:Arial,sans-serif}button{font:inherit}.app{min-height:100dvh;display:flex;flex-direction:column}.top{text-align:center;padding:18px 14px 10px}.top h1{font-size:19px;margin:0 0 6px;letter-spacing:.08em}.count{font-size:34px;font-weight:800}.camera{flex:1 1;min-height:420px;display:flex;align-items:center;justify-content:center;padding:12px}.reader{width:min(100%,560px);overflow:hidden;border-radius:18px;background:#000}.start{margin:20px auto 32px;border:0;border-radius:14px;padding:16px 26px;font-weight:800;font-size:18px}.overlay{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px}.ok{background:#15803d}.bad{background:#b91c1c}.overlay h2{font-size:34px;margin:0 0 14px}.overlay .name{font-size:25px;font-weight:800}.overlay p{font-size:18px}.overlay button{margin-top:28px;padding:15px 38px;border:0;border-radius:12px;font-weight:800;font-size:20px}.offline{background:#b45309}.login{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px}.login h1{letter-spacing:.12em;font-size:23px;margin:0}.login p{opacity:.75;margin:10px 0 28px}.login form{width:min(100%,360px);display:grid;grid-gap:12px;gap:12px}.login input{width:100%;padding:16px;border-radius:12px;border:1px solid #555;background:#1d1d1d;color:#fff;text-align:center;font-size:20px}.login button{padding:16px;border:0;border-radius:12px;font-weight:800}.loginError{margin-top:16px;color:#fca5a5;font-weight:700}.dash{min-height:100dvh;background:#f5f3ed;color:#17231b;padding:28px max(18px,calc((100vw - 1000px)/2)) 60px}.dashHead{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.eyebrow{font-size:12px;letter-spacing:.22em;color:#667267;font-weight:700}.dash h1{font-family:Georgia,serif;font-size:32px;font-weight:500;margin:5px 0}.scanLink{text-decoration:none;background:#263e2d;color:white;padding:12px 16px;border-radius:12px;font-weight:700}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.stats div{background:white;border:1px solid #e2dfd5;border-radius:16px;padding:18px}.stats span{display:block;font-size:12px;color:#727970;text-transform:uppercase;letter-spacing:.08em}.stats strong{display:block;font-family:Georgia,serif;font-size:34px;margin-top:7px}.stats .green strong{color:#287a48}.progress{height:8px;background:#dedbd1;border-radius:20px;overflow:hidden;margin:15px 0 24px}.progress i{display:block;height:100%;background:#3d7650;transition:width .3s}.controls{display:flex;gap:12px;justify-content:space-between;margin-bottom:14px}.controls input{flex:1 1;min-width:0;border:1px solid #d7d3c8;background:white;padding:13px 15px;border-radius:12px;outline:none}.filters{display:flex;gap:6px}.filters button{border:1px solid #d7d3c8;background:#fff;padding:10px 13px;border-radius:10px}.filters .active{background:#263e2d;color:#fff;border-color:#263e2d}.guestList{background:white;border:1px solid #e2dfd5;border-radius:16px;overflow:hidden}.guest{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px 16px;border-bottom:1px solid #eeeae1}.guest:last-child{border:0}.guest strong{display:block;font-size:16px}.guest span{display:block;font-size:12px;margin-top:4px}.time{color:#287a48}.waiting{color:#8b8b83}.guest button{border:0;border-radius:9px;padding:9px 12px;font-size:12px;font-weight:700}.manual{background:#e0efe4;color:#205c36}.undo{background:#f4e5e2;color:#8a332a}.empty{text-align:center;padding:30px;color:#777}@media(max-width:700px){.dash{padding-top:20px}.dashHead{align-items:flex-start}.dash h1{font-size:25px}.scanLink{font-size:12px}.stats{grid-template-columns:1fr 1fr}.stats strong{font-size:28px}.controls{display:block}.controls input{width:100%;margin-bottom:10px}.filters{overflow:auto}.filters button{white-space:nowrap}.guest{padding:13px}.guest button{max-width:110px}.guest strong{font-size:15px}}