Three native widgets, styled in the panel you already use. Drop the form in the page, hide it behind a button, or lay your forms out as cards — and set every colour, radius and hover state without writing a line of CSS.
Worum geht es?
QueryCue renders every form inside a shadow root. That is why your theme’s CSS can’t reach in and break it, and why it looks the same on a client’s site as it did on yours. The usual price for that isolation is that you can’t style it either — most encapsulated widgets are a black box.
We took the other route. The form reads its look from a handful of CSS variables (--qcf-primary, --qcf-card-bg, --qcf-radius and friends), and CSS variables pass straight through the shadow boundary. The Elementor widgets set those variables on the host element. So the panel controls the form — colours, input styling, font size, spacing — while the form itself stays sealed.
Set the defaults once under QueryCue → Design; every widget starts from them. Override them per placement when a single landing page wants a different look. The hover shade of your primary colour is derived automatically, so you don’t have to pick it.
Available on every connection, free edition included. Combining them with AND, OR and NOT — including nested groups, so you can express A and (B or C) — is a Pro feature.
The form, in the flow of the page. Pick it from a dropdown, then set alignment, max width, background, padding, border, shadow and radius — plus the form’s own colours, input styling, font and spacing. Everything responsive.
A button that slides a panel in from the left or right. Style the button (normal and hover), the panel, the overlay colour and blur, the close button. Full-screen on mobile if you want it.
Your forms as cards that lead to their own pages. Grid or slider — switchable per breakpoint, so it’s a three-column grid on desktop and a swipeable slider on the phone. One to six columns, arrows, dots, hover lift.
An off-canvas form that nobody opens is dead weight on the page. Ours isn’t loaded: the embed is marked data-qcf-defer, the renderer skips it at boot, and the form is mounted the first time the drawer actually opens.
And when it opens, it behaves like a dialog should: Escape closes it, a click on the overlay closes it, the page behind stops scrolling, focus moves into the panel and returns to the button afterwards — and Tab is trapped inside, including the fields inside the shadow root (a focus trap that doesn’t know about shadow DOM leaves the visitor stuck on the close button; ours descends into it). prefers-reduced-motion is respected.
You don’t even need our button: give any existing Elementor button the link #beratung, or your own CSS class, and it opens the drawer.
You shouldn’t have to leave the builder, learn a second design panel, or open a custom-CSS box just to make a form match the page it sits on.
Colours, borders, shadows, radius, padding, alignment — with Elementor’s own responsive switch for desktop, tablet and mobile, and Normal/Hover tabs on buttons and cards.
The off-canvas button and the card buttons use Elementor’s icon picker — the same icons as the rest of your site, no separate icon set to learn.
The cards widget hands responsive control to Elementor’s breakpoints. If you moved the tablet breakpoint, the cards move with it.
The widgets hook into Elementor if it’s there and stay out of the way if it isn’t. QueryCue never requires a page builder — shortcode and Gutenberg block do the same job.
The off-canvas is our own implementation, not a wrapper around a popup builder. It works on free Elementor, and it’s one dialog — not a second popup system to maintain.
Put three off-canvas widgets on a page and the drawer’s CSS and JS are still output exactly once. No duplicate scripts, no widget tax.
Embed anywhere covers the other routes — shortcode and Gutenberg block, no builder required. Design & branding is where the defaults every widget starts from are set. The visual flow builder is where the form itself is drawn — the widget only decides where it appears.
Three widgets, every control where an Elementor user expects it.