:root{--bg:#0f1b2d;--fg:#f3f6fa;--muted:#9fb0c6;--ok:#1fa363;--warn:#d98c00;--bad:#c8382c;--brand:#2d6cdf}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%;color:var(--fg);background:#000;margin:0;font:16px/1.4 system-ui,-apple-system,Roboto,sans-serif;overflow:hidden}#video{object-fit:cover;width:100%;height:100%;position:fixed;inset:0;transform:scaleX(-1)}#guide{pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}#guide .oval{border:3px dashed #ffffff73;border-radius:50%;width:62vmin;height:80vmin;transition:border-color .2s}#guide.near .oval{border:3px solid #ffffffd9}#guide.good .oval{border:4px solid var(--ok)}#guide.bad .oval{border:4px solid var(--bad);box-shadow:0 0 0 9999px #c8382c1f}header,footer{z-index:2;background:linear-gradient(#0a121ed9,#0a121e8c);justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;display:flex;position:fixed;left:0;right:0}header{top:0}footer{background:linear-gradient(#0a121e8c,#0a121ee6);bottom:0}header .right{font-variant-numeric:tabular-nums;align-items:center;gap:10px;display:flex}.muted{color:var(--muted)}.small{font-size:12px}.hidden{display:none!important}.dot{background:#777;border-radius:50%;width:10px;height:10px;display:inline-block}.dot.on{background:var(--ok)}.dot.off{background:var(--bad)}.pill{background:#ffffff26;border-radius:999px;padding:2px 8px;font-size:12px}.pill.okp{background:#1fa3634d}#qcount{background:var(--warn);color:#000}.hint{text-align:center;text-shadow:0 1px 4px #000;z-index:2;padding:0 16px;font-size:20px;font-weight:600;position:fixed;bottom:74px;left:0;right:0}.result{z-index:3;text-align:center;border-radius:20px;min-width:78vw;padding:24px 20px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 10px 40px #00000080}.result.ok{background:#1fa363f2}.result.warn{color:#111;background:#d98c00f5}.result .big{font-size:64px;line-height:1}.result .name{margin-top:6px;font-size:26px;font-weight:700}.result .sub{margin-top:4px;font-size:20px}button{font:inherit;color:var(--fg);background:#ffffff29;border:0;border-radius:12px;padding:12px 18px}button.primary{background:var(--brand)}button.ghost{color:var(--muted);background:0 0}.panel{z-index:5;background:#060c16d1;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);border-radius:20px 20px 0 0;width:100%;max-width:560px;max-height:92vh;padding:20px;overflow:auto}.sheet h2{margin:0 0 8px}.sheet p{margin:6px 0 12px}.sheet input,.sheet select{width:100%;font:inherit;color:var(--fg);background:#16263d;border:1px solid #2c3d57;border-radius:10px;margin:6px 0;padding:12px}.sheet label{color:var(--muted);margin:8px 0;display:block}.sheet label.check{color:var(--fg);align-items:center;gap:10px;display:flex}.sheet label.check input{width:22px;height:22px;margin:0}.row{justify-content:flex-end;gap:10px;margin-top:12px;display:flex}.row button{flex:1}.err{color:#ff8a80;min-height:1.2em}.list{gap:6px;max-height:45vh;margin:8px 0;display:grid;overflow:auto}.item{text-align:left;justify-content:space-between;align-items:center;width:100%;display:flex}.item small{color:var(--muted);font-size:12px;display:block}button:disabled{opacity:.4}.hrv{z-index:4;background:var(--bg);justify-content:center;align-items:center;display:flex;position:fixed;inset:56px 0 0;overflow:auto}.hrbox{text-align:center;width:100%;max-width:900px;padding:24px}.hrbox h1{margin:8px 0;font-size:30px}.hrbox p{font-size:19px}.pair .qr{background:#fff;border-radius:14px;width:min(60vmin,360px);padding:10px;display:inline-block}.pair .qr svg{width:100%;height:auto;display:block}.pair .code{letter-spacing:.12em;font-variant-numeric:tabular-nums;margin:12px 0 0;font-size:48px;font-weight:800}.done .big{color:var(--ok);font-size:90px;line-height:1}.done.bad .big{color:var(--bad)}.consent{text-align:left}.ctop{justify-content:space-between;align-items:center;gap:12px;display:flex}.ctop select{font:inherit;color:var(--fg);background:#16263d;border:1px solid #2c3d57;border-radius:10px;padding:10px}.cbody{color:#111;background:#fff;border-radius:12px;max-height:42vh;padding:16px 18px;font-size:18px;line-height:1.55;overflow:auto}.sigwrap{position:relative}.sigwrap canvas{touch-action:none;background:#fff;border-radius:12px;width:100%;height:auto;display:block}.sigwrap button{color:#555;position:absolute;top:6px;right:6px}.consent .row button{padding:16px;font-size:18px}img.photo{border-radius:16px;max-width:min(80vw,480px);max-height:55vh}.keypad .dots{letter-spacing:.3em;min-height:48px;margin:8px 0 14px;font-size:34px}.keys{grid-template-columns:repeat(3,1fr);gap:12px;max-width:380px;margin:0 auto;display:grid}.keys button{padding:20px 0;font-size:30px}.card{text-align:left;background:#16263d;border-radius:20px;align-items:center;gap:24px;max-width:760px;margin:0 auto;padding:24px;display:flex}.card img,.card .nophoto{object-fit:cover;background:#24364f;border-radius:14px;place-items:center;width:180px;height:220px;font-size:80px;display:grid}.card .ok{color:var(--ok);font-size:22px;font-weight:700}
