Skip to main content
Remark is designed to be easily themed and adjusted to fit your design system. You can change nearly every visual aspect—from font sizes and colors to component spacing and borders—using CSS custom properties and by directly targeting Shadow DOM parts.

1. CSS Custom Properties

The Q&A Activator defines many CSS variables on its host element. Overriding these variables (either locally on the activator element or globally) lets you customize the look and feel without having to dig into the component’s internals.

1.1. Font Sizes

VariableDefault ValuePurpose
--remark-font-size-xxsmall7pxExtra-extra small text size
--remark-font-size-xsmall10pxExtra small text size
--remark-font-size-small12pxSmall text size
--remark-font-size-default14pxDefault text size
--remark-font-size-medium16pxMedium text size (often for sub-headings)
--remark-font-size-large18pxLarge text size
--remark-font-size-xlarge24pxExtra large text size
--remark-font-size-h128pxHeading level 1
--remark-font-size-h224pxHeading level 2
--remark-font-size-h321pxHeading level 3
--remark-font-size-h418pxHeading level 4

1.2. Blur Effects

VariableDefault ValuePurpose
--remark-blurs-loading-container4pxBlur effect for loading state on container elements
--remark-blurs-loading-text8pxBlur effect for loading state on text elements

1.3. Line Heights & Font Families

VariableDefault ValuePurpose
--remark-line-heights-default145%Base line height for text
--remark-fonts-font-familyInter, sans-serifMain font family
--remark-fonts-font-family-headingsInter, sans-serifFont family used for headings

1.4. Component Sizes and Layout

VariableDefault ValuePurpose
--remark-sizes-input-width640pxWidth of the text input
--remark-sizes-constrained-width800pxMaximum width for constrained layouts
--remark-sizes-avatar-rotationrotate(-3deg)Applied rotation for the expert’s avatar
--remark-sizes-bottom-toggle-position0pxPosition adjustment for the bottom toggle element

1.5. Opacity

VariableDefault ValuePurpose
--remark-opacity-activator-opacity1Opacity for activator elements
--remark-opacity-loading0.4Opacity level during loading states

1.6. Colors

A large set of color variables control text, backgrounds, borders, and status indicators.
VariableDefault ValuePurpose
--remark-colors-theme-root#ff9173Base theme color
--remark-colors-content-inverted#ffffffText color for inverted (dark on light) elements
--remark-colors-content-default#000000Default text color
--remark-colors-content-subtle#484848Subtle text color
--remark-colors-content-muted#929292Muted text color
--remark-colors-content-success#007F6DColor to denote success
--remark-colors-content-error#752522Color to denote error
--remark-colors-primary-emphasis#f26747Emphasized primary action color
--remark-colors-primary-default#ff9173Primary color
--remark-colors-primary-subtle#feb497Subtle primary color
--remark-colors-bg-primary#fff3edPrimary background color
--remark-colors-bg-default#ffffffDefault background color
--remark-colors-bg-subtle#f5f5f5Subtle background color
--remark-colors-border-primary#ffd5c4Primary border color
--remark-colors-border-default#ccccccDefault border color
--remark-colors-border-table#E5E7EBBorder color used in tables
--remark-colors-border-success#B0E4DDBorder color for success states
--remark-colors-border-error#F9E3E2Border color for error states
--remark-colors-border-subtle#ebebebSubtle border color
--remark-colors-status-online#02b09bIndicator color for “online” status
--remark-colors-powered-by#ccccccColor for “powered by” or branding elements
--remark-colors-hover-overlay#cfcfcf4dColor overlay applied on hover
--remark-colors-chat-default#FFFFFFDefault background for chat bubbles
--remark-colors-chat-emphasis#ECF8F7Emphasized background for chat bubbles

1.7. Borders, Radii, and Spacing

VariableDefault ValuePurpose
Borders
--remark-borders-default1.5px solidStandard border style
Border Radii
--remark-radii-xsmall4pxExtra small border radius
--remark-radii-small8pxSmall border radius
--remark-radii-default12pxDefault border radius
--remark-radii-input12pxBorder radius for input elements
Spacing
--remark-spacing-xsmall4pxExtra small spacing
--remark-spacing-small8pxSmall spacing
--remark-spacing-default16pxDefault spacing
--remark-spacing-large24pxLarge spacing
--remark-spacing-xlarge32pxExtra large spacing
To change any of these values, simply set the variable on the component (or at a higher scope). For example:
remark-qa-activator {
  --remark-colors-primary-default: #007acc;
  --remark-font-sizes-default: 18px;
  --remark-spacing-default: 20px;
}

2. Shadow DOM Parts

Because the Q&A Activator is built using Shadow DOM, certain internal elements are exposed via the part attribute. You can style these parts with the ::part() pseudo-element from outside the shadow tree.

2.1. Available Parts

Here is a list of the key parts you can target:

Activator Parts

  • parent-container: The root container that wraps the entire Q&A Activator.
  • expert-header-container: The header section containing the expert’s avatar, name, and additional information.
  • expert-avatar-container: Container for the expert’s avatar (typically includes rotation or loading effects).
  • expert-avatar-name: The name of the expert.
  • expert-avatar-clover: The small clover icon next to the expert’s name.
  • expert-avatar-expertise: The expertise of the expert.
  • we-run-with-remark: The text “We run with Remark” in the footer.
  • online-indicator: Visual cue (a small circle) indicating the expert’s online status.
  • expert-chat-message: The container displaying the expert’s chat message or bio.
  • input-group: Groups the text input area and send button for the user’s message.
  • activator-button: Buttons used to activate questions or actions.
  • activator-button-text: The text inside the activator button.

Chat Widget Parts

Activator Components
Parts related to the floating activator and expert introduction card.
  • activator-card-parent, activator-card-close-button, activator-card-open-button
  • expert-activator-parent
  • main-activator-button-parent, main-activator-button, main-activator-button-unread-message-count-bubble, main-activator-button-unread-message-count-bubble-text, main-activator-button-activator-image
  • mobile-activator-parent, mobile-activator-close-button, mobile-activator-close-button-text, mobile-activator-open-button, mobile-activator-open-button-image, mobile-activator-unread-message-count-bubble, mobile-activator-unread-message-count-bubble-text
Chat Interface Components
Parts related to the main chat window, header, and message container.
  • app-parent
  • chat-box-parent, chat-box
  • chat-header, chat-header-avatar, chat-header-vendor-badge, chat-header-empty, chat-header-title, chat-header-subtitle, chat-header-menu-button
  • message-list-container, message-list-loading-container, message-list-scrollable-container
  • message-body
  • powered-by-remark-container, powered-by-remark-link, powered-by-remark-text
Message Components
Parts related to individual messages within the chat.
  • chat-message-container, chat-message-container-flexbox, chat-message-container-inner, chat-message-timestamp, chat-message-ai-generated-text
  • chat-event-container, chat-event-emoji, chat-event-text, chat-event-additional-info
  • og-container, og-container-inner, og-video, og-image, og-title, og-price, og-loading-container
  • nps-emoji-container, nps-emoji-button, nps-option-button
Expert Profile Components
Parts related to expert profiles, their display, and interaction.
  • expert-profile-container, expert-profile-name, expert-profile-bio, expert-profile-wide-photo, view-expert-profile-link
  • expert-profile-avatar-parent, expert-profile-avatar, expert-profile-avatar-loading
  • expert-profile-fullscreen-parent, expert-profile-fullscreen-carousel-item, expert-profile-fullscreen-carousel-item-image, expert-profile-fullscreen-carousel-item-image-loading, expert-profile-fullscreen-carousel-item-image-blurred
  • expert-matched-message-parent, expert-matched-message-summary-title, expert-matched-message-summary
  • matched-expert-pills-parent, matched-expert-pill, matched-expert-pill icon, matched-expert-pill-text
  • work-experience-label, work-experience-item, work-experience-item-title, work-experience-item-description
Introduction and Onboarding Components
Parts related to the introduction sequence and user onboarding flow.
  • introduction-message-parent, introduction-message-avatar-parent, introduction-message-name, introduction-message-vetted, introduction-message-need-help, introduction-message-chat-button, introduction-message-chat-button-text
  • PII-collection-steps-count, email-collection-input, email-collection-input-count, email-collection-input-submit, email-collection-input-skip
  • terms-of-service-text, terms-of-service-link, customer-support-link
Loading and Status Indicators
Parts related to loading states, waiting indicators, and status displays.
  • loading-messages-spin, loading-messages-spin-svg
  • waiting-for-pairing-container, waiting-for-pairing-ai-overlay, waiting-for-pairing-ai-overlay-title, waiting-for-pairing-ai-overlay-message, waiting-for-pairing-ripple, waiting-for-pairing-brand-logo, waiting-for-pairing-expert
  • typing-indicator-container, typing-indicator-dot
  • online-indicator
  • ai-persona-indicator-container, ai-persona-indicator-persona-chatting-with, ai-persona-indicator-beta-badge, ai-persona-indicator-menu-button
Recommendation Components
Parts related to product recommendations and recommendation carousels.
  • recommendation-parent, recommendation-inner
  • recommendation-carousel-container, recommendation-carousel-item, recommendation-carousel-item-image
  • recommendation-image-container, recommendation-image
  • recommendation-link, recommendation-price
  • recommendation-variant, recommendation-variant-separator
  • recommendation-loading, recommendation-loading-container, recommendation-loading-title, recommendation-loading-price
Icons
Parts related to icons used in the chat widget.
  • close icon, wave icon, sparkles icon, transparent-speech-bubble icon,
  • vertical-ellipsis icon, vetted-expert icon
UI Building Blocks
Common UI elements used throughout the application for consistent styling.
  • avatar-container, avatar-image, avatar-initials-container, avatar-initials-text
  • slide-button
  • tooltip-container
  • wave-divider
  • ai-chat-transfer-inline-message
  • chat-divider

2.2. Targeting Parts in Your CSS

To override the default styling for any of these parts, use the ::part() selector. For example:
/* Adjust padding on the main container */
remark-qa-activator::part(parent-container) {
  padding: 12px 24px !important;
}

/* Hide the expert header */
remark-qa-activator::part(expert-header-container) {
  display: none !important;
}

/* Style the expert chat message container */
remark-qa-activator::part(expert-chat-message) {
  background-color: var(--remark-colors-bg-primary) !important;
  padding: var(--remark-spacing-default);
}
You can also dynamically control these styles through inline template strings (if using a framework) as in:
remark-qa-activator::part(expert-header-container) {
  display: ${showHeader ? "flex" : "none"} !important;
}

3. Putting It All Together: A Full Example

Below is an example of how you might override both the CSS variables and part styles in your project:
/* Global theme overrides for the Q&A Activator */
remark-qa-activator {
  /* Change the primary colors */
  --remark-colors-primary-default: #007acc;
  --remark-colors-primary-emphasis: #005a9c;

  /* Adjust text sizes */
  --remark-font-sizes-default: 18px;
  --remark-font-sizes-large: 20px;

  /* Modify spacing */
  --remark-spacing-default: 20px;
}

/* Style individual parts via the ::part() selector */
remark-qa-activator::part(parent-container) {
  padding: 16px 32px !important;
  background-color: var(--remark-colors-bg-default);
}

remark-qa-activator::part(expert-header-container) {
  display: flex !important;
  align-items: center;
  gap: var(--remark-spacing-small);
}

remark-qa-activator::part(expert-chat-message) {
  border: var(--remark-borders-default) solid var(
      --remark-colors-border-default
    );
  border-radius: var(--remark-radii-default);
  background-color: var(--remark-colors-bg-primary);
  padding: var(--remark-spacing-default);
}

remark-qa-activator::part(activator-button) {
  background-color: var(--remark-colors-primary-default);
  color: var(--remark-colors-content-inverted);
  border-radius: var(--remark-radii-small);
  padding: var(--remark-spacing-small) var(--remark-spacing-default);
  transition: background-color 0.22s;
}

remark-qa-activator::part(activator-button):hover {
  background-color: var(--remark-colors-primary-emphasis);
}

4. Best Practices

  • Use Variables First: Because most styling is based on CSS custom properties, try to override the variables on the remark-qa-activator element first. This maintains consistency and leverages the built-in theming.
  • Minimize !important: Although the examples above use !important to ensure your styles take precedence, use this sparingly and only when necessary.
  • Test Responsiveness: Some parts of the activator (like button layout or input widths) may be responsive. Check your overrides on multiple screen sizes.
  • Dynamic Styling: If your application logic needs to show or hide parts (for example, toggling the expert header), consider using inline styles or CSS classes in combination with the ::part() selectors.
By following this guide, you’ll be able to seamlessly integrate and customize Remark’s Q&A Activator to match your website’s design and user experience requirements. Happy styling!