.qrcode-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 100; } .qrcode-container { background: #fff; border-radius: 24rpx; padding: 48rpx 64rpx; display: flex; flex-direction: column; align-items: center; } .qrcode-title { font-size: 34rpx; font-weight: 600; color: #1a1a1a; margin-bottom: 32rpx; } .qrcode-canvas-wrap { position: relative; width: 400rpx; height: 400rpx; } .qrcode-canvas { width: 400rpx; height: 400rpx; } .qrcode-loading { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: center; justify-content: center; background: #fff; } .qrcode-spinner { width: 48rpx; height: 48rpx; border: 4rpx solid #e0e0e0; border-top: 4rpx solid #1890ff; border-radius: 50%; animation: qrcode-spin 0.8s linear infinite; } @keyframes qrcode-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .qrcode-id { font-size: 24rpx; color: #999; margin-top: 24rpx; word-break: break-all; text-align: center; } .qrcode-tip { font-size: 24rpx; color: #bbb; margin-top: 12rpx; }