I built one of these - a sort of widget that inherited page styles. I would highly recommend not using an iframe and using a javascript application mounted into a given div container.
Why?
The advantages are great. Firstly, you have the ability to use the page styles if you so choose. You can namespace the css you want to remain no matter what and leave things like fonts, text colours, a tag colours, etc to inherit from the page. Then the widget/calculator/chatbox looks way more like it's part of the actual page by adapting to the styles of the page which is the intention.
I used SVG graphics for icons and other simple images because it's possible to also change their colours dynamically, letting me easily adapt to a dark page and a light page with no issues.
Being embedded on the page also allows your embeddor "host site" to interact with your embed a bit. You could expose methods to trigger things in your widget with just simple javascript.
Let me know if you want more details!
I've used Mixpanel. It works decently enough, and you can run raw queries written as pseudo map-reduce functions on the dataset yourself if you want. It also has a free tier which is nice.