Custom CSS

The Custom CSS field is appended after Minaya's own styles, so your rules win without needing !important. The widget renders in a shadow root, so nothing here leaks into your page — and your page's CSS cannot accidentally restyle the widget.

Spacing from the edge

Position is driven by two custom properties. Set them on .aicb-root and both the launcher and the panel follow:

.aicb-root {
  --aicb-offset-side: 40px;
  --aicb-offset-bottom: 32px;
}

Defaults are 20px each. These apply to desktop only — the mobile breakpoints set their own tighter values, so a large desktop offset cannot push the widget off a phone screen.

Colour variables

Every colour the widget paints is a CSS custom property, so you can override one without restating the rule it belongs to. These are the same variables the dashboard colour pickers write.

VariableApplies to
--aicb-primaryHeader bar, visitor bubbles, send button, launcher
--aicb-header-textAssistant name and icons on the header
--aicb-bot-bubbleBackground of assistant replies
--aicb-bot-textText inside assistant replies
--aicb-user-textText in the visitor’s own messages
--aicb-surfacePanel and composer background
--aicb-panelMessage area background
--aicb-textPlaceholder and other chrome text
--aicb-borderPanel border and composer divider
--aicb-inputComposer input background
/* Override just the two you care about. */
.aicb-root {
  --aicb-bot-bubble: #EEF2FF;
  --aicb-bot-text: #1E1B4B;
}

A colour set here overrides the dashboard value for whichever palette is showing. In most cases you should not need to — set the colours in Widget appearance and Minaya picks the right palette for you. Reach for CSS when you want something the pickers do not cover, such as a gradient:

.aicb-header {
  background: linear-gradient(135deg, #14B8A6, #0EA5E9);
}

Minaya resolves light or dark in JavaScript rather than leaving it to a media query, so it can follow your site’s own theme toggle and not just the operating system. That means a @media (prefers-color-scheme: dark) block in your custom CSS will not track your site’s toggle — scope dark overrides to your own selector instead, or set the colours per palette in the dashboard. See Matching the page’s theme.

Class reference

ClassElement
.aicb-rootOutermost container. Set custom properties here.
.aicb-launcherThe floating button.
.aicb-panelThe chat window.
.aicb-panel.aicb-openThe panel while open.
.aicb-headerHeader bar.
.aicb-header-titleAssistant name in the header.
.aicb-logo / .aicb-logo-markCustom logo image / default mark.
.aicb-messagesScrolling message area.
.aicb-bubbleAny message bubble.
.aicb-bubble-assistantAssistant replies.
.aicb-bubble-userVisitor messages.
.aicb-bubble-errorError messages.
.aicb-typing / .aicb-typing-dotTyping indicator and its dots.
.aicb-footerInput row.
.aicb-inputText input.
.aicb-counter / .aicb-counter-maxCharacter counter, and at the limit.
.aicb-sendSend button.
.aicb-feedback / .aicb-feedback-btnThumbs up/down row and buttons.
.aicb-linkLinks inside replies.
.aicb-list / .aicb-para / .aicb-codeRich text in replies.

Examples

Square, flat panel

.aicb-panel {
  border-radius: 4px;
  box-shadow: none;
  border: 1px solid #d4d4d8;
}

Larger panel on desktop

@media (min-width: 900px) {
  .aicb-panel { width: 400px; height: 560px; }
}

Square launcher

.aicb-launcher {
  border-radius: 12px;
  width: 52px;
  height: 52px;
}

Restyle links in replies

.aicb-link {
  color: #7c3aed;
  text-decoration-thickness: 2px;
}

Hide the feedback buttons

.aicb-feedback { display: none; }

Preview accuracy

The dashboard preview mirrors the main elements — panel, header, messages, bubbles, footer, input, send, plus the launcher and greeting bubble and the pre-chat form — using the same class names, so most rules show up there.

It is an approximation rather than the real widget: it is plain DOM, not a shadow root, and omits the typing indicator and feedback buttons. Positioning offsets will not visibly move it either, since the preview sits inside a fixed box rather than a viewport — and for the same reason the launcher is drawn opposite the panel rather than beneath it.

Test placement changes on a real page. See Install the widget.

A caution

Custom CSS is applied verbatim and is not validated. A malformed rule can break the widget's layout for every visitor, so make one change at a time and check the result on a real page.