Ok, using the dev console, I can see what is happening in both cases:
1. the <hr> tag is inheriting the -webkit-margin-start (and -end) values of "auto", which makes them as large as possible. To override that, you can either give the <hr> a width: 100%, or turn off those webkit margins.
2. in the ui_template node, you cannot use mustache substitutions inside html attributes, so the iframe src url is not valid. You can fix that by using a regular template node to create the ui_template html source, and passing it to a ui_template node with just the default content:
<div ng-bind-html="msg.payload"></div>