.qr-scan-overlay{position:fixed;inset:0;z-index:1000;background:#000}.qr-scan-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.qr-scan-mask{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.qr-scan-frame{position:relative;width:min(72vw,280px);height:min(72vw,280px);box-shadow:0 0 0 9999px rgba(0,0,0,.55)}.qr-scan-corner{position:absolute;width:22px;height:22px;border:3px solid #fff}.qr-scan-corner--tl{top:-1px;left:-1px;border-right:none;border-bottom:none}.qr-scan-corner--tr{top:-1px;right:-1px;border-left:none;border-bottom:none}.qr-scan-corner--bl{bottom:-1px;left:-1px;border-right:none;border-top:none}.qr-scan-corner--br{bottom:-1px;right:-1px;border-left:none;border-top:none}.qr-scan-toolbar{top:0;display:flex;align-items:center;padding:max(env(safe-area-inset-top),12px) 12px 12px}.qr-scan-hint,.qr-scan-toolbar{position:absolute;left:0;right:0;z-index:2}.qr-scan-hint{bottom:calc(max(env(safe-area-inset-bottom), 16px) + 40px);text-align:center;color:rgba(255,255,255,.9);font-size:15px;line-height:1.5;padding:0 24px}.qr-scan-error{position:absolute;left:16px;right:16px;bottom:max(env(safe-area-inset-bottom),16px);z-index:2}.qr-scan-cta{height:52px!important;font-size:16px!important;font-weight:500}.qr-upload-zone{border:2px dashed #d9d9d9;border-radius:10px;padding:28px 16px;text-align:center;cursor:pointer;transition:border-color .2s,background .2s;background:#fafafa}.qr-upload-zone:hover:not(.qr-upload-zone--disabled){border-color:#1677ff;background:rgba(22,119,255,.04)}.qr-upload-zone--dragover{border-color:#1677ff;background:rgba(22,119,255,.08)}.qr-upload-zone--disabled{cursor:not-allowed;opacity:.55}.qr-upload-zone__icon{font-size:32px;color:#1677ff;margin-bottom:8px}.qr-upload-zone__title{font-size:15px;font-weight:500;color:rgba(0,0,0,.88);margin-bottom:4px}.qr-upload-zone__hint{font-size:13px;color:rgba(0,0,0,.45)}.qr-alloc-overlay{position:fixed;inset:0;z-index:2000;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,.72)}.qr-alloc-overlay__text{margin-top:20px;color:rgba(255,255,255,.92);font-size:17px;line-height:1.5}.qr-alloc-overlay__rescan{margin-top:24px}.user-page-header{text-align:center}.user-status-bar{display:flex;flex-direction:column;gap:4px;margin-top:12px;font-size:13px;color:rgba(0,0,0,.55)}.user-scan-card{box-shadow:0 2px 8px rgba(0,0,0,.06);border-radius:12px}.user-success-card{border-color:#b7eb8f;background:linear-gradient(180deg,#f6ffed,#fff)}