The deflector renders into your page rather than an iframe. That is deliberate — it inherits your layout, your fonts cascade into the inline strip, and there is no frame to size — but it means the modal either matches the page around it or reads as a second product bolted on. Everything below is stored on the deflector, so a portal that changed theme is fixed by editing a field rather than redeploying the page. An attribute on the embed still wins for that one page.

Colour

The accent carries the sparkle, the primary button, the citation numbers and the tinted surfaces. A text colour set here applies to both schemes — it is one value, not a light one and a dark one.

Dark mode

colorScheme is light, dark, or auto for the visitor’s OS preference. colorSchemeSelector is for a portal with its own switch: give it the selector that means “this page is dark” — html.dark, [data-theme="dark"] — and it wins over colorScheme and is re-checked as the page changes, so the modal follows the switch mid-session rather than only at load.
The default is light, not auto. A modal that flipped to dark on a light support portal because the visitor’s OS happened to be dark looks broken, so the OS preference is followed only when it is asked for by name.
Every colour in the deflector’s stylesheet reads from a token that the dark palette reassigns, so one class flips the whole surface — including the shared markdown rules the answer body is rendered with. There is no half-dark state to fall into.

Typography

Four steps, and every size in the modal is one of them. There is no fifth knob because there is no fifth size to set — a control that styles nothing is worse than a control that is missing. The inline strip inside your form inherits your page’s font family by default and only takes fontFamily if you set one — inheriting the form’s own type is what stops the strip reading as a third-party graft.

Sharing the widget’s theme

If the same script tag also arms the Ask AI widget, the deflector falls back to the widget’s own attributes rather than making you say everything twice: The data-deflect- prefixed form is how a support portal that differs from the docs site says so.

What is not configurable

Padding, borders, radii and margins are not exposed. They are the difference between a modal that reads as a considered surface and one assembled from twelve numbers a support engineer guessed at eighteen months ago, and every knob is one more thing to document, migrate and answer questions about. If the modal genuinely cannot sit inside your portal as it is, tell us what it collides with — that is a fix, not a setting.

Values are validated

A value is written to a CSS custom property with setProperty, which cannot be escaped out of the way a string concatenated into a stylesheet can — the browser simply drops one it cannot parse. On top of that, url(, comments, semicolons and braces are rejected when the deflector is saved, and values are capped at 200 characters. So a typo is a value that does nothing, never a broken portal.