.styles-surface-A3E7H {
  /* Shared by the wizard, live canvas, and loading skeleton. Matches Flows. */
  --campaign-editor-background: oklch(
    98.23976% 0.0013208 286.376
  ); /* #F9F9FA */
}

.OmnichannelCampaignCanvas-body-cpxaL {
  background: var(--campaign-editor-background);
}

.OmnichannelCampaignCanvas-cards-voQVC {
  padding-block-start: 21px; /* 43px header + 21px gap = 64px card start. */
  min-height: 457px;
}

.OmnichannelCampaignCanvas-addPath-HJHAc {
  padding-block-start: 50px;
}

.SkipLink-skipLink-NVcZ7 {
  position: absolute !important;
  background: var(--color-background-highlighted-emphasis-base) !important;
}

  @media (prefers-reduced-motion: no-preference) {.SkipLink-skipLink-NVcZ7 {
    transition: var(--motion-property-primary) var(--motion-duration-200)
}
  }

/* visually hidden when not focused */
.SkipLink-skipLink-NVcZ7:not(:focus-visible) {
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  white-space: nowrap;
  width: 1px;
  transform: translateY(-100%);
}

.SkipLink-skipLink-NVcZ7:focus-visible {
  transform: translateY(0%);
  top: var(--unit-space-75);
  left: var(--unit-space-75);
  z-index: var(--elevation-zIndex-xxl) !important;
}

.Toaster-toastRack-_XJg5 {
  position: fixed;
  top: var(--unit-space-300);
  left: 0;
  right: 0;
  margin: 0 auto;
  width: -moz-fit-content;
  width: fit-content;
  z-index: var(--elevation-zIndex-xxl);
}

  .Toaster-toastRack-_XJg5 > div:first-child {
    margin-block-end: var(--unit-space-75);
  }

/* Feature-scoped surface treatment, shared by the page, rail and panel input.
 * These intentionally differ from the design system's global elevation tiers.
 * Motion durations stay in milliseconds for the Web Animations consumer. */
.ComposerDock-surfaceTheme-Wqhs5 {
  --composer-input-border-resting: var(--color-border-subtle-base);
  --composer-input-border-focused: var(--color-border-default-base);
  --composer-surface-shadow-resting:
    0 3px 6px -2px rgb(0 0 0 / 2%), 0 1px 1px 0 rgb(0 0 0 / 4%);
  --composer-surface-shadow-expanded:
    0 9px 48px 0 rgb(0 0 0 / 8%), 0 6px 24px 0 rgb(0 0 0 / 10%),
    0 1px 1px 0 rgb(0 0 0 / 4%);
  --composer-surface-enter-duration: 250ms;
  --composer-surface-exit-duration: 200ms;
  --composer-surface-easing: cubic-bezier(0.23, 1, 0.32, 1);
  --composer-surface-state-duration: 200ms;
  --composer-surface-state-easing: ease-in-out;
}

.ComposerDock-host-MVvFi {
  --composer-rail-height-duration: var(--composer-surface-exit-duration);
  --composer-rail-navigation-duration: 0ms;
  /* Reserve only the single-line input height; extra lines overlay the page. */
  position: relative;
  box-sizing: border-box;
  flex-shrink: 0;
  min-width: 0;
  margin-block-end: var(--unit-space-50);
  margin-inline-end: var(--unit-space-50);
  height: var(--unit-size-300);
  transition:
    height var(--composer-rail-height-duration) var(--composer-surface-easing),
    margin-block-end var(--composer-rail-height-duration)
      var(--composer-surface-easing),
    margin-inline-start var(--composer-rail-navigation-duration)
      var(--desktop-navigation-easing, ease);
  z-index: var(--elevation-zIndex-component-xs);
}

.ComposerDock-host-MVvFi[data-composer-mobile] {
  margin-inline: var(--unit-space-75);
}

/* Match the page's peek compensation without changing pinned navigation layout. */
.ComposerDock-host-MVvFi:not([data-composer-mobile]) {
  margin-inline-start: calc(-1 * var(--peek-clip-delta, 0px));
}

@media (prefers-reduced-motion: no-preference) {

[data-desktop-navigation-animate='true'] .ComposerDock-host-MVvFi {
    --composer-rail-navigation-duration: var(
      --desktop-navigation-motion-duration
    )
}
  }

.ComposerDock-host-MVvFi,
:is([data-chat-input-variant='panel'], [data-chat-input-variant='full-page']) {
  --composer-rail-shadow: var(--composer-surface-shadow-resting);
}

:is([data-chat-input-variant='panel'], [data-chat-input-variant='full-page']) {
  --composer-input-border-resting: var(--color-border-default-base);
  --composer-input-border-focused: var(--color-border-default-focused);
}

/* Follow the input's expanded layout state, independently of focus. */
.ComposerDock-host-MVvFi:has([data-expanded]) {
  --composer-rail-shadow: var(--composer-surface-shadow-expanded);
}

.ComposerDock-host-MVvFi:empty,
.ComposerDock-host-MVvFi[data-exiting] {
  height: 0;
  margin-block-end: 0;
  --composer-rail-height-duration: var(--composer-surface-enter-duration);
}

.ComposerDock-host-MVvFi > * {
  transform-origin: 65% center;
  position: absolute;
  inset-inline: 0;
  /* Track the page edge in both directions through the rail's animated
   * height. This stays independent of the input's own multiline height. */
  inset-block-end: calc(100% - var(--unit-size-300));
  width: 100%;
  max-width: 640px;
  margin-inline: auto;
}

:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-composer-input-surface],
:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-asc='AIBorder'] {
  background-color: var(--color-surface-primary-base);
  box-shadow: var(--composer-rail-shadow);
  transition:
    background-color var(--composer-surface-state-duration)
      var(--composer-surface-state-easing),
    box-shadow var(--composer-surface-state-duration)
      var(--composer-surface-state-easing);
}

:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-composer-input-surface] {
  border: none;
}

/* Keep the masked border mounted so focus changes never affect rail height. */
:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-composer-input-surface]::before,
:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-asc='AIBorder']::before {
  content: '';
  padding: var(--unit-border-width-xs);
  background: var(--composer-input-border-resting);
  opacity: 1;
  transition: background-color var(--composer-surface-state-duration)
    var(--composer-surface-state-easing);
}

:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-asc='AIBorder'] {
  /* Paint the legacy input on the wrapper so only one background animates. */
  --color-background-input-base: transparent;
  --gradient-border-width: 0px;
}

:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-composer-input-surface]:has([contenteditable='true']:focus),
:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-asc='AIBorder']:has(
      [data-composer-input]:focus-within,
      textarea:focus
    ) {
  background-color: var(--color-surface-primary-base);
  box-shadow: var(--composer-rail-shadow);
}

:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-composer-input-surface]:has([contenteditable='true']:focus)::before,
:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-asc='AIBorder']:has(
      [data-composer-input]:focus-within,
      textarea:focus
    )::before {
  background: var(--composer-input-border-focused);
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .ComposerDock-host-MVvFi {
    transition: none;
  }
  :is(
      .ComposerDock-host-MVvFi,
      :is(
          [data-chat-input-variant='panel'],
          [data-chat-input-variant='full-page']
        )
    )
    [data-composer-input-surface],
  :is(
      .ComposerDock-host-MVvFi,
      :is(
          [data-chat-input-variant='panel'],
          [data-chat-input-variant='full-page']
        )
    )
    [data-asc='AIBorder'],
  :is(
      .ComposerDock-host-MVvFi,
      :is(
          [data-chat-input-variant='panel'],
          [data-chat-input-variant='full-page']
        )
    )
    [data-composer-input-surface]::before,
  :is(
      .ComposerDock-host-MVvFi,
      :is(
          [data-chat-input-variant='panel'],
          [data-chat-input-variant='full-page']
        )
    )
    [data-asc='AIBorder']::before {
    transition: none;
  }
}

:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-composer-control='send'] svg,
:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-composer-control='sidebar'] svg,
:is(
    .ComposerDock-host-MVvFi,
    :is(
        [data-chat-input-variant='panel'],
        [data-chat-input-variant='full-page']
      )
  )
  [data-composer-control='attach'] svg {
  width: 20px;
  height: 20px;
}

.ChatToggleButton-chatToggleButton-GfBgq {
  position: relative;
}

.ChatToggleButton-chatToggleButton-GfBgq.ChatToggleButton-hasUnread-wFOyf::after {
  content: '';
  position: absolute;
  inset-block-start: -3px;
  inset-inline-end: -3px;
  width: var(--unit-space-50);
  height: var(--unit-space-50);
  border-radius: var(--unit-border-radius-circle);
  background: var(--color-foreground-info-subtle-base);
  pointer-events: none;
}

.ChatToggleButton-navigationSlot-RPSNO {
  display: inline-grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: center;
  vertical-align: middle;
  opacity: 1;
  transition:
    grid-template-columns var(--motion-duration-400)
      var(--motion-timing-standard-ease),
    margin-inline-start var(--motion-duration-400)
      var(--motion-timing-standard-ease),
    opacity var(--motion-duration-300) var(--motion-timing-standard-out);
}

.ChatToggleButton-navigationSlotHidden-Ialr0 {
  grid-template-columns: minmax(0, 0fr);
  margin-inline-start: calc(-1 * var(--unit-space-75));
  opacity: 0;
  pointer-events: none;
}

.ChatToggleButton-navigationSlotInner-Z29OO {
  display: inline-flex;
  align-items: center;
  gap: var(--unit-space-75);
  width: -moz-max-content;
  width: max-content;
  min-width: 0;
}

.ChatToggleButton-navigationSlotInner-Z29OO > * {
  flex: 0 0 auto;
}

.ChatToggleButton-railSlot-mPFTt {
  display: grid;
  width: 100%;
  justify-items: center;
  filter: none;
  scale: none;
  transform-origin: center;
  transition-property: opacity, filter, scale;
  transition-duration: var(--app-shell-composer-enter-duration, 250ms);
  transition-timing-function: var(
    --app-shell-composer-panel-easing,
    cubic-bezier(0.23, 1, 0.32, 1)
  );
}

/* Use the panel's exit treatment as it opens over the stationary icon. */
.ChatToggleButton-railSlotPanelOpen-uEHss {
  opacity: 0;
  filter: blur(2px);
  scale: 0.98;
  pointer-events: none;
  transition-duration: var(--app-shell-composer-exit-duration, 200ms);
}

/* Match the panel's timing while reclaiming the page header's action gap. */
.ChatToggleButton-headerSlot-xBOxh {
  --header-toggle-duration: var(--app-shell-composer-exit-duration, 200ms);
  --header-toggle-easing: var(
    --app-shell-composer-panel-easing,
    cubic-bezier(0.23, 1, 0.32, 1)
  );
  position: relative;
  z-index: 0;
  flex-shrink: 0;
  pointer-events: none;
  width: var(--unit-size-200);
  height: var(--unit-size-200);
  margin-inline-start: 0;
  transition:
    width var(--header-toggle-duration) var(--header-toggle-easing),
    margin-inline-start var(--header-toggle-duration)
      var(--header-toggle-easing);
}

.ChatToggleButton-headerSlot-xBOxh > .ChatToggleButton-navigationSlotInner-Z29OO {
  /* Only the spacer collapses. Keep the icon anchored beneath incoming actions. */
  position: absolute;
  inset-inline-end: 0;
  inset-block-start: 0;
  z-index: 0;
  pointer-events: auto;
  width: var(--unit-size-200);
  opacity: 1;
  scale: 1;
  filter: blur(0);
  transition:
    opacity var(--header-toggle-duration) var(--header-toggle-easing),
    scale var(--header-toggle-duration) var(--header-toggle-easing),
    filter var(--header-toggle-duration) var(--header-toggle-easing);
}

.ChatToggleButton-headerSlotCollapsed-LBITr {
  --header-toggle-duration: var(--app-shell-composer-enter-duration, 250ms);
  width: 0;
  margin-inline-start: calc(-1 * var(--unit-space-50));
  pointer-events: none;
}

.ChatToggleButton-headerSlotCollapsed-LBITr > .ChatToggleButton-navigationSlotInner-Z29OO {
  pointer-events: none;
  opacity: 0;
  scale: 0.98;
  filter: blur(2px);
}

@media (prefers-reduced-motion: reduce) {
  .ChatToggleButton-navigationSlot-RPSNO,
  .ChatToggleButton-headerSlot-xBOxh > .ChatToggleButton-navigationSlotInner-Z29OO {
    transition: none;
  }
}

.context-shell-RdWVZ {
  /* Gap and clip-delta jump when pin/peek bits change. The few boxes that
   * consume them (spacer, nav, header padding, page lock) interpolate their
   * used width/padding/margin. Do not @property-animate these on the shell —
   * inherited interpolated custom properties restyle the whole app every frame. */
  /* The drawer curve and press scale are component-specific motion values with
   * no exact Ascent tokens. Keep them centralized instead of approximating. */
  --desktop-navigation-easing: cubic-bezier(0.32, 0.72, 0, 1);
  --desktop-navigation-motion-duration: 250ms;
  /* Matches Component Library NavSidebar geometry. The 60px rail, 14px
   * gutter, and 6px row padding have no exact global spacing tokens; token
   * arithmetic would hide the geometry rather than make it semantic. */
  --desktop-navigation-rail-width: 60px;
  --desktop-navigation-gap: var(--desktop-navigation-width, 240px);
  --peek-clip-delta: 0px;
  --desktop-navigation-inline-gutter: 14px;
  --desktop-navigation-row-inline-padding: 6px;
  --desktop-navigation-child-label-padding: var(--unit-space-175);
  /* A 1px sibling rhythm is part of the navigation layout, not a border. */
  --desktop-navigation-item-gap: 1px;
  --desktop-navigation-press-scale: 0.985;
  --desktop-navigation-press-duration: var(--motion-duration-500);

  display: contents;
}

.context-shell-RdWVZ[data-desktop-navigation-open='false']:not(
    [data-desktop-navigation-preview='true']
  ) {
  --desktop-navigation-gap: var(--desktop-navigation-rail-width);
}

.context-shell-RdWVZ[data-desktop-navigation-open='false'][data-desktop-navigation-preview='true'] {
  --peek-clip-delta: calc(
    var(--desktop-navigation-width, 240px) -
      var(--desktop-navigation-rail-width)
  );
}

.AppShell-siteWithNavigation-NR9Q9 {
  --color-surface-app-background: #efeff0;
}

/* Keep navigation states distinct against this shell's darker background. */
.AppShell-siteWithNavigation-NR9Q9 #app-shell-desktop-sidebar {
  --color-surface-secondary-selected: #e7e7e8;
  --color-background-secondary-focused: #e1e1e2;
}

.AppShell-siteBodyWithNavigation-CYQ_m {
  background-color: var(--color-surface-app-background);
}

.AppShell-siteMainWithComposerPanel-uJuVB {
  flex-basis: 0;
  min-width: 0;
}

/* Keep overflow visible so the sidebar header can cover the page header,
 * but min-height: 0 so the body still shrinks and the page card can scroll.
 * ID beats Site.module `.base .siteBody { overflow: hidden }`. */
#AppShell-SiteBody.AppShell-siteBodyWithNavigation-CYQ_m:not(
    .AppShell-siteBodyMobileResponsive-GhHcA
  ) {
  overflow: visible;
  min-height: 0;
}

.AppShell-siteMainWithNavigation-mSG7o {
  position: relative;
  flex-basis: 0;
  min-width: 0;
  min-height: 0;
  background-color: var(--color-surface-primary-base);
  border-radius: var(--unit-border-radius-xl);
  border: var(--unit-border-width-xs) var(--unit-border-style-solid)
    var(--color-border-subtle-base);
  box-shadow: var(--composer-surface-shadow-resting);
  margin-block: var(--unit-space-50);
  margin-inline-end: var(--unit-space-50);
}

/* Beat Site.module `.base .siteMain { overflow: auto }` so peek clips.
 * Scroll lives on the Page-shaped lock below (Site already lets `.Page`
 * shrink; Page.base’s overflow:hidden is overridden here). */
#AppShell-SiteBody.AppShell-siteBodyWithNavigation-CYQ_m .AppShell-siteMainWithNavigation-mSG7o {
  overflow: hidden;
}

#AppShell-SiteBody.AppShell-siteBodyWithNavigation-CYQ_m
  .AppShell-siteMainWithNavigation-mSG7o
  > .AppShell-pageLock-kb9P6 {
  overflow: auto;
}

.AppShell-siteMainWithNavigation-mSG7o::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  /* ::before sits on the padding box, inside the card border. Inherit
   * would reuse the outer radius on a smaller box and read as a second curve. */
  border-radius: calc(
    var(--unit-border-radius-xl) - var(--unit-border-width-xs)
  );
  pointer-events: none;
  box-shadow: var(--elevation-shadow-inset-200);
  opacity: 0;
}

@media (prefers-reduced-motion: no-preference) {

[data-desktop-navigation-animate='true']
  .AppShell-siteMainWithNavigation-mSG7o::before {
    transition: opacity var(--desktop-navigation-motion-duration)
      var(--desktop-navigation-easing)
}
  }

[data-desktop-navigation-open='false'][data-desktop-navigation-preview='true']
  .AppShell-siteMainWithNavigation-mSG7o::before {
  opacity: 1;
}

.AppShell-pageLock-kb9P6 {
  /* Keep page layers below the sibling peek-shadow overlay. */
  isolation: isolate;
  min-width: 0;
  min-height: 0;
  width: calc(100% + var(--peek-clip-delta, 0px));
  margin-inline-start: calc(-1 * var(--peek-clip-delta, 0px));
}

@media (prefers-reduced-motion: no-preference) {

[data-desktop-navigation-animate='true'] .AppShell-pageLock-kb9P6 {
    transition:
      width var(--desktop-navigation-motion-duration)
        var(--desktop-navigation-easing),
      margin-inline-start var(--desktop-navigation-motion-duration)
        var(--desktop-navigation-easing)
}
  }

.AppShell-siteBodyMobileResponsive-GhHcA {
  position: relative;
}

.AppShell-accountStatusNotice-IqFRm {
  flex: 0 0 auto;
  min-width: 0;
  background-color: var(--color-surface-primary-base);
  border-block-end: var(--unit-border-width-xs) var(--unit-border-style-solid)
    var(--color-border-subtle-base);
}

/* With the sidebar hidden on the mobile shell, give the content card
   symmetric edge spacing (desktop relies on the sidebar for the left gap). */
.AppShell-siteBodyMobileResponsive-GhHcA .AppShell-siteMainWithNavigation-mSG7o {
  margin-inline: var(--unit-space-75);
}

/* Carries inert/aria-hidden without generating a layout box. */
.AppShell-layoutlessWrapper-wtJpy {
  display: contents;
}

.AppShell-mobileNavOverlay-Qy8CI {
  position: absolute;
  inset: 0;
  z-index: var(--elevation-zIndex-lg);
  background-color: var(--color-surface-app-background);
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.AppShell-mobileNavActions-tN1Sa {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--unit-space-50);
  padding: var(--unit-space-75);
}

.AppShell-mobileNavBody-yg5sY {
  flex: 1 1 auto;
  min-height: 0;
}

/* Closed-but-mounted: hidden from layout, paint, and the accessibility tree. */
.AppShell-mobileNavOverlayClosed-Ob4xo {
  display: none;
}

/* Box API does not support single-side border; keep block-end border only here */
.AppShell-headerFallbackBorder-O1XOK {
  border-block-end: var(--unit-border-width-xs) var(--unit-border-style-solid)
    var(--color-border-subtle-base);
}

.AppShell-composerPanelRail-AEPyT {
  box-sizing: border-box;
  flex: 0 0 auto;
  margin-inline-start: auto;
  position: relative;
  width: 0;
  min-width: 0;
  overflow: hidden;
  transition: width var(--composer-surface-exit-duration)
    var(--composer-surface-easing);
}

.AppShell-composerPanelRail-AEPyT.AppShell-composerPanelExpanded-gBD7G {
  width: calc(
    var(--app-shell-composer-panel-width, 400px) + var(--unit-space-50)
  );
  transition-duration: var(--composer-surface-enter-duration);
}

.AppShell-composerPanelRail-AEPyT.AppShell-composerPanelResizing-fkr3x {
  transition-duration: 0s;
}

.AppShell-composerPanelSurface-qBvi2 {
  position: absolute;
  box-sizing: border-box;
  inset-block-start: var(--unit-space-50);
  inset-block-end: var(--unit-space-50);
  inset-inline-end: var(--unit-space-50);
  width: var(--app-shell-composer-panel-width, 400px);
  min-width: 0;
  overflow: hidden;
  isolation: isolate;
  background: var(--color-background-input-base);
  border: var(--unit-border-width-xs) var(--unit-border-style-solid)
    var(--color-border-subtle-base);
  border-radius: var(--unit-border-radius-xl);
  opacity: 0;
  filter: blur(2px);
  scale: 0.98;
  transform-origin: 65% center;
  pointer-events: none;
  transition:
    opacity var(--composer-surface-exit-duration) var(--composer-surface-easing),
    filter var(--composer-surface-exit-duration) var(--composer-surface-easing),
    scale var(--composer-surface-exit-duration) var(--composer-surface-easing);
}

.AppShell-composerPanelSurface-qBvi2.AppShell-composerPanelVisible-fPuFQ {
  opacity: 1;
  filter: none;
  scale: 1;
  pointer-events: auto;
  transform: translateZ(0);
  contain: layout paint;
  transition-duration: var(--composer-surface-enter-duration);
}

.AppShell-composerPanelSurface-qBvi2.AppShell-composerPanelResizing-fkr3x {
  transition-duration: 0s;
}

.AppShell-composerPanelContent-tBK9s {
  position: absolute;
  inset: 0;
  display: flex;
  min-width: 0;
  min-height: 0;
}

.AppShell-composerRegion-sluYv {
  display: flex;
  position: relative;
  flex: 0 0 auto;
  min-width: 0;
}

@media (prefers-reduced-motion: reduce) {
  .AppShell-composerPanelRail-AEPyT,
  .AppShell-composerPanelSurface-qBvi2 {
    transition: none;
  }
}

