.qrcode-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(44, 62, 80, 0.4); display: flex; align-items: center; justify-content: center; z-index: 100; } .qrcode-container { background: #ffffff; border-radius: 32rpx; padding: 48rpx 64rpx; display: flex; flex-direction: column; align-items: center; box-shadow: 0 16rpx 48rpx rgba(91, 155, 213, 0.2); } .qrcode-title { font-size: 34rpx; font-weight: 600; color: #2c3e50; margin-bottom: 32rpx; letter-spacing: 4rpx; } .qrcode-canvas-wrap { position: relative; width: 400rpx; height: 400rpx; border: 1rpx solid #e8eef5; border-radius: 16rpx; overflow: hidden; } .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: #ffffff; } .qrcode-spinner { width: 48rpx; height: 48rpx; border: 4rpx solid #dbeafe; border-top: 4rpx solid #5b9bd5; 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: 22rpx; color: #7f8fa6; margin-top: 24rpx; word-break: break-all; text-align: center; letter-spacing: 1rpx; } .qrcode-tip { font-size: 22rpx; color: #b8c9db; margin-top: 12rpx; letter-spacing: 1rpx; }