/* The framework-free boot page cannot depend on theme delivery succeeding. */

._boot_1ionb_3 {
  --dsh-boot-bg: #fff;
  --dsh-boot-label-primary: #0f1115;
  --dsh-boot-label-secondary: #61666b;
  --dsh-boot-label-tertiary: #81858c;
  --dsh-boot-border: rgb(0 0 0 / 10%);
  --dsh-boot-brand: #0f1115;

  height: 100%;
  display: grid;
  place-items: center;
  background: var(--dsw-alias-bg-base, var(--dsh-boot-bg));
}

body[data-ds-dark-theme] ._boot_1ionb_3 {
  --dsh-boot-bg: #151517;
  --dsh-boot-label-primary: #f9fafb;
  --dsh-boot-label-secondary: #cfd3d6;
  --dsh-boot-label-tertiary: #adb2b8;
  --dsh-boot-border: rgb(255 255 255 / 12%);
  --dsh-boot-brand: #f9fafb;
}

._card_1ionb_26 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

._wordmark_1ionb_33 {
  font-size: 16px;
  line-height: 24px;
  font-weight: 600;
  letter-spacing: 0.08em;
  color: var(--dsw-alias-label-primary, var(--dsh-boot-label-primary));
}

._hint_1ionb_41 {
  font-size: 12px;
  line-height: 18px;
  color: var(--dsw-alias-label-tertiary, var(--dsh-boot-label-tertiary));
}

._spinner_1ionb_47 {
  position: relative;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: 2px solid var(--dsw-alias-border-l2, var(--dsh-boot-border));
  animation: _spin_1ionb_47 0.8s linear infinite;
}

._spinner_1ionb_47::after {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  background: conic-gradient(
    var(--dsw-alias-brand-primary, var(--dsh-boot-brand)) var(--dsh-boot-arc, 72deg),
    transparent 0
  );
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 0);
  mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 0);
}

@keyframes _spin_1ionb_47 {
  to { transform: rotate(360deg); }
}

._failed_1ionb_73 {
  max-width: 480px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

._failedTitle_1ionb_80 {
  font-size: 14px;
  line-height: 22px;
  font-weight: 600;
  color: var(--dsw-alias-label-primary, var(--dsh-boot-label-primary));
}

._failedItem_1ionb_87 {
  font-family: var(
    --ds-font-family-code,
    'SF Mono',
    'JetBrains Mono',
    'Fira Code',
    Consolas,
    'Liberation Mono',
    Menlo,
    Courier,
    'PingFang SC',
    'Microsoft YaHei'
  );
  font-size: 12px;
  line-height: 18px;
  color: var(--dsw-alias-label-secondary, var(--dsh-boot-label-secondary));
  white-space: pre-wrap;
}
/* Ongoing blue has no alias token (state-business-primary is the 500 step,
 * not this 450) — component-level var pinned to the static scale instead. */
._dot_10orb_3,
._matrix_10orb_4 {
  --dsh-state-ongoing: var(--dsw-static-deepseek-450);
}

/* Solid states: same-color halo via a 0.10-opacity outer layer (::before)
 * with a 6/10-scale solid core. Layer color rides currentColor set per state. */
._dot_10orb_3 {
  position: relative;
  display: inline-block;
  flex: none;
}

._dot_10orb_3::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.1;
}

._dot_10orb_3::after {
  content: '';
  position: absolute;
  inset: 20%;
  border-radius: 50%;
  background: currentColor;
}

._dot_10orb_3[data-state='done'] {
  color: var(--dsw-alias-state-success-primary);
}

._dot_10orb_3[data-state='warning'] {
  color: var(--dsw-alias-state-warn-primary);
}

._dot_10orb_3[data-state='error'] {
  color: var(--dsw-alias-state-error-primary);
}

/* Pixel chase: each outer cell holds a discrete brightness step (flat keyframe
 * holds, no tweening — the retro feel), peaking when the chase hits it and
 * decaying over the next three cells. Phase offsets come from per-rect
 * animation-delay (index * -125ms) set inline by the component. */
._matrix_10orb_4 {
  flex: none;
  color: var(--dsh-state-ongoing);
}

._cell_10orb_54 {
  fill: currentColor;
  opacity: 0.15;
  animation: _dsh-state-dot-chase_10orb_1 1s infinite;
}

@keyframes _dsh-state-dot-chase_10orb_1 {
  0%, 12.4% { opacity: 1; }
  12.5%, 24.9% { opacity: 0.6; }
  25%, 37.4% { opacity: 0.35; }
  37.5%, 100% { opacity: 0.15; }
}
/* Shared disclosure header: [16px leading] gap 6 [title 14/24]. */

._root_9cl6j_3 {
  display: flex;
  flex-direction: column;
  width: 100%;
  min-width: 0;
}

._row_9cl6j_10 {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  height: 24px;
  min-width: 0;
}

._row_9cl6j_10[data-expandable] {
  cursor: pointer;
}

._leading_9cl6j_23 {
  position: relative;
  flex: none;
  width: 16px;
  height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-right: 6px;
  padding: 0;
  border: none;
  background: none;
  color: var(--dsw-alias-label-tertiary);
}

button._leading_9cl6j_23 {
  cursor: pointer;
}

._iconIdle_9cl6j_42 {
  display: inline-flex;
  opacity: 1;
  transition: opacity 100ms ease;
}

._chevronHover_9cl6j_48 {
  position: absolute;
  inset: 0;
  margin: auto;
  opacity: 0;
  transition: opacity 100ms ease;
}

._row_9cl6j_10:hover ._iconIdle_9cl6j_42 {
  opacity: 0;
}

._row_9cl6j_10:hover ._chevronHover_9cl6j_48 {
  opacity: 1;
}

._title_9cl6j_64 {
  flex: none;
  font-size: 14px;
  line-height: 24px;
  color: var(--dsw-alias-label-secondary);
}
/* Capsule geometry from the figma Button component (1:155 instances:
 * h36, pad 14/7, gap 4, r18; the wide New Session form is r24 at h38 —
 * owners with the wide form set their own radius/width). */
._button_kz6gm_4 {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  border: none;
  border-radius: 18px;
  cursor: pointer;
  font-size: 14px;
  line-height: 22px;
  color: var(--dsw-alias-label-primary);
  background: transparent;
  padding: 0 14px;
}

._button_kz6gm_4:disabled {
  cursor: not-allowed;
  opacity: 0.4;
}

._md_kz6gm_24 {
  height: 36px;
}

/* Compact height for dense rows; no dedicated figma node (Icon_container
 * 28x28 is the icon-only form) — geometry is ours. */
._sm_kz6gm_30 {
  height: 28px;
  font-size: 12px;
  line-height: 18px;
  padding: 0 10px;
  border-radius: 14px;
}

._primary_kz6gm_38 {
  background: var(--dsw-alias-button-primary-fill);
  color: var(--dsw-alias-label-primary-foreground);
}

._primary_kz6gm_38:hover:not(:disabled) {
  background: var(--dsw-alias-button-primary-hover);
}

._ghost_kz6gm_47:hover:not(:disabled) {
  background: var(--dsw-alias-interactive-bg-hover);
}

._ghost_kz6gm_47:active:not(:disabled) {
  background: var(--dsw-alias-interactive-bg-active);
}

/* Dialog Cancel (figma 451:18655): bordered capsule on transparent fill. */
._outline_kz6gm_56 {
  border: 1px solid var(--dsw-alias-border-l2);
  background: transparent;
}

._outline_kz6gm_56:hover:not(:disabled) {
  background: var(--dsw-alias-interactive-bg-hover);
}

._toolbar_kz6gm_65 {
  background: var(--dsw-alias-button-tool-bar-fill);
}

._toolbar_kz6gm_65:hover:not(:disabled) {
  background: var(--dsw-alias-button-tool-bar-hover);
}

._icon_kz6gm_73 {
  display: inline-flex;
  width: 16px;
  height: 16px;
  align-items: center;
  justify-content: center;
}
._pill_e3ygd_1 {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 24px;
  padding: 0 8px;
  border: none;
  border-radius: 12px;
  font-size: 12px;
  line-height: 18px;
  color: var(--dsw-alias-label-secondary);
  background: var(--dsw-alias-bg-layer-2);
}

._interactive_e3ygd_15 {
  cursor: pointer;
}

._interactive_e3ygd_15:hover {
  background: var(--dsw-alias-interactive-bg-hover);
}

._active_e3ygd_23 {
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-button-ghost-active-fill);
  box-shadow: inset 0 0 0 1px var(--dsw-alias-button-ghost-active-border);
}
._wrap_1ao1y_1 {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 32px;
  padding: 0 8px;
  border: 1px solid var(--dsw-alias-border-l2);
  border-radius: 8px;
  background: var(--dsw-alias-bg-layer-1);
}

._wrap_1ao1y_1:focus-within {
  border-color: var(--dsw-alias-brand-primary);
}

._icon_1ao1y_16 {
  display: inline-flex;
  width: 16px;
  height: 16px;
  align-items: center;
  justify-content: center;
  color: var(--dsw-alias-label-tertiary);
}

._input_1ao1y_25 {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: transparent;
  font-size: 14px;
  line-height: 22px;
  color: var(--dsw-alias-label-primary);
}

._input_1ao1y_25::placeholder {
  color: var(--dsw-alias-label-dimmed);
}
._root_19372_1 {
  position: relative;
  display: inline-flex;
}

/* Dropdown card (figma MenuDropdown 122:9481 / 419:16920): menu surface,
 * r12, inverted hairline border, shadow-lv3, 4px inset padding. */
._list_19372_8,
._submenu_19372_9 {
  /* min-widths below are the design's outer card widths — include the pad. */
  box-sizing: border-box;
  padding: 4px;
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1px solid var(--dsw-alias-border-inverted);
  border-radius: 12px;
  background: var(--dsw-specific-menu);
  box-shadow: var(--dsw-shadow-lv3);
  /* Elevated surface: the scrollbar thumb takes the l2 elevation tokens. The
     declaration sits on the card rather than on `.scrollable .viewport`
     because the elevation is a property of this surface, and the custom
     properties inherit down to whichever descendant actually scrolls (see
     ui-theme styles/scrollbar.css for the rebinding contract). */
  --dsh-scrollbar-thumb: var(--dsw-alias-scrollbar-bg-l2);
  --dsh-scrollbar-thumb-hover: var(--dsw-alias-scrollbar-hover-l2);
}

/* Primary card is 218 wide in the design across both hosts. */
._list_19372_8 {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  z-index: 100;
  min-width: 218px;
  max-width: 360px;
}

/* Portal mode: fixed in the viewport, coordinates supplied inline from the
 * anchor rect (side/align resolved in JS, the in-place offset rules above
 * don't apply). Portaled lists must layer above modal overlays (z 1000) —
 * an anchor inside a dialog still expects its menu on top. */
._portal_19372_43 {
  position: fixed;
  top: auto;
  left: auto;
  z-index: 1100;
}

/* Open above the anchor (empty-state workspace chip: figma 122:9481). */
._sideTop_19372_51 {
  top: auto;
  bottom: calc(100% + 4px);
}

._alignEnd_19372_56 {
  left: auto;
  right: 0;
}

/* Viewport fit: the card stops 12px short of the viewport's top/bottom edges
 * (24 = 2 × the portal MARGIN in Menu.tsx) and taller content scrolls inside
 * .viewport, so a pinned .footer stays visible. Menus with submenu rows skip
 * this class — the overflow clip would crop the side card, so they rely on
 * staying short. */
._scrollable_19372_21 {
  max-height: calc(100vh - 24px);
}

._viewport_19372_21 {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

._scrollable_19372_21 ._viewport_19372_21 {
  overflow-y: auto;
}

/* Pinned rows below the scroll region; l2 hairline (l1 is near-invisible on
 * the menu surface) mirrors the .separator spacing. */
._footer_19372_63 {
  flex: none;
  display: flex;
  flex-direction: column;
  margin-top: 4px;
  padding-top: 4px;
  border-top: 1px solid var(--dsw-alias-border-l2);
}

._itemWrap_19372_91 {
  position: relative;
}

/* Menu cell (figma .Menu_cell): min-h 40, r10, pad 10/8, 14/22 primary,
 * gap 8 between leading icon / label / trailing check. */
._item_19372_91 {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 40px;
  padding: 8px 10px;
  border: none;
  border-radius: 10px;
  background: transparent;
  cursor: pointer;
  font-size: 14px;
  line-height: 22px;
  color: var(--dsw-alias-label-primary);
  text-align: left;
}

._item_19372_91:hover:not(:disabled) {
  background: var(--dsw-alias-interactive-bg-hover);
}

._denseList_19372_118 ._item_19372_91 {
  min-height: 34px;
  padding-block: 5px;
}

._denseList_19372_118 ._label_19372_123 {
  padding-block: 4px;
}

._list_19372_8._compactList_19372_127,
._submenu_19372_9._compactList_19372_127 {
  min-width: 164px;
  padding: 2px;
  border-radius: 7px;
}

._compactList_19372_127 ._item_19372_91 {
  min-height: 26px;
  gap: 6px;
  padding: 3px 7px;
  border-radius: 5px;
  font-size: 12px;
  line-height: 18px;
}

._compactList_19372_127 ._itemIcon_19372_143 {
  width: 14px;
  height: 14px;
}

._compactList_19372_127 ._separator_19372_81 {
  margin: 2px;
}

._compactList_19372_127 ._label_19372_123 {
  padding: 4px 7px;
  font-size: 11px;
  line-height: 16px;
}

._item_19372_91:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

._itemIcon_19372_143 {
  display: inline-flex;
  flex: none;
  width: 16px;
  height: 16px;
  align-items: center;
  justify-content: center;
  color: var(--dsw-alias-label-tertiary);
}

._itemLabel_19372_173 {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._check_19372_181 {
  flex: none;
  color: var(--dsw-alias-label-primary);
}

/* Selected cell keeps the plain fill (marker is the trailing check); the
 * class remains as a hook for owner-side emphasis. */
._selected_19372_188 {
  background: transparent;
}

/* Destructive row: error text/icon, danger hover fill. */
._danger_19372_193 {
  color: var(--dsw-alias-state-error-primary);
}

._danger_19372_193 ._itemIcon_19372_143 {
  color: var(--dsw-alias-state-error-primary);
}

._danger_19372_193:hover:not(:disabled) {
  background: var(--dsw-alias-interactive-bg-hover-danger);
}

/* Heading row: non-interactive small grey text, padding aligned with items. */
._label_19372_123 {
  padding: 8px 10px;
  font-size: 12px;
  line-height: 16px;
  color: var(--dsw-alias-label-tertiary);
}

/* Separator cell (figma 122:9481): py 4 / px 2 around the hairline. */
._separator_19372_81 {
  height: 1px;
  margin: 4px 2px;
  background: var(--dsw-alias-border-l1);
}

/* Nested card to the right of the parent row (figma 419:16920).
 * Bottom-aligned with the parent menu card (grows upward): itemWrap sits in
 * .list's 4px pad, so bottom: -4px matches the list's outer bottom edge.
 * Horizontal: list pad (4px) + 6px card gap = 10px past itemWrap — plain
 * `100% + 6px` collapses to ~2px between outer card edges.
 * ::before bridges the full gap so the pointer can cross without mouseLeave. */
._submenu_19372_9 {
  position: absolute;
  top: auto;
  bottom: -4px;
  left: calc(100% + 10px);
  z-index: 101;
  min-width: 163px;
}

._submenu_19372_9::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: -10px;
  width: 10px;
}
/* Block, not inline-flex: consumers wrap full-width list rows and an
 * inline wrapper would shrink them; the card still measures this rect. */
._root_1b2ny_3 {
  position: relative;
  display: block;
}

/* Preview card (figma session hover card): 244 wide, r12, pad 12/16, the
 * menu card's elevation. Surface is #2C2C2E in both themes (figma value,
 * light/dark identical), so a component-level variable, not a theme token.
 * Hit-testable on purpose: resting the pointer on the card holds it open
 * (HoverCard's grace close), which a `pointer-events: none` card cannot do. */
._card_1b2ny_13 {
  --dsw-hovercard-bg: #2C2C2E;
  position: fixed;
  z-index: 100;
  box-sizing: border-box;
  width: 244px;
  padding: 12px 16px;
  border-radius: 12px;
  background: var(--dsw-hovercard-bg);
  box-shadow: var(--dsw-shadow-lv3);
}

._copyable_1b2ny_25 {
  cursor: pointer;
}

._copyable_1b2ny_25:focus-visible {
  outline: 2px solid var(--dsw-alias-state-business-primary);
  outline-offset: 2px;
}

._feedback_1b2ny_34 {
  display: flex;
  align-items: center;
  justify-content: center;
}

._copied_1b2ny_40 {
  color: #FFFFFF;
  font-size: 14px;
  line-height: 20px;
  text-align: center;
}

._status_1b2ny_47 {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
/* Full-viewport layer (figma Mask + Dialog 451:18655): mask + centered card. */
._root_15u5s_2 {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

/* User/spec mask: rgba(0,0,0,0.24) + blur(2px) via --dsw-alias-bg-mask-1 /
   --dsw-mask-blur (light); dark theme raises mask opacity. */
._mask_15u5s_14 {
  position: absolute;
  inset: 0;
  background: var(--dsw-alias-bg-mask-1);
  backdrop-filter: var(--dsw-mask-blur);
}

/* Dialog card: r24, shadow-lv3, layer-2 fill, inverted border, pb 24. */
._dialog_15u5s_22 {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 20px;
  width: min(380px, 100%);
  padding: 0 0 24px;
  overflow: hidden;
  border: 1px solid var(--dsw-alias-border-inverted);
  border-radius: 24px;
  background: var(--dsw-alias-bg-layer-2);
  box-shadow: var(--dsw-shadow-lv3);
}

._content_15u5s_37 {
  display: flex;
  flex-direction: column;
  width: 100%;
}

/* Header row (figma Title row): pad l24/t22/r14/b12, SPACE_BETWEEN —
 * title left, close button right. */
._header_15u5s_45 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 22px 14px 12px 24px;
}

._title_15u5s_53 {
  margin: 0;
  font-size: 16px;
  line-height: 24px;
  font-weight: 500; /* figma wt510, rendered 500 */
  color: var(--dsw-alias-label-primary);
}

._close_15u5s_61 {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: none;
  border-radius: 8px;
  background: transparent;
  cursor: pointer;
  color: var(--dsw-alias-label-secondary);
}

._close_15u5s_61:hover {
  background: var(--dsw-alias-interactive-bg-hover);
}

/* Description and body share the 332px content column (24px side pads). */
._description_15u5s_80 {
  margin: 0;
  padding: 0 24px;
  font-size: 14px;
  line-height: 22px;
  font-weight: 400;
  color: var(--dsw-alias-label-primary);
}

._body_15u5s_89 {
  display: flex;
  flex-direction: column;
  min-width: 0;
  margin-top: 20px;
  padding: 0 24px;
}

._footer_15u5s_97 {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 0 24px;
}
/* First-run stage: keep the product top bar visible, then let onboarding own
   the complete workspace instead of presenting another settings modal. */
._onboardingOverlay_1cfrq_3 {
  position: fixed;
  inset: 0;
  z-index: 1100;
}

/* Mask */
._onboardingMask_1cfrq_10 {
  position: absolute;
  left: 0px;
  right: 0px;
  top: 80px;
  bottom: 0px;
  background: rgba(0, 0, 0, 0.24);
  /* Mask-blur */
  backdrop-filter: blur(2px);
}

._onboardingStage_1cfrq_21 {
  position: absolute;
  z-index: 1;
  inset: 0;
  display: flex;
  justify-content: center;
  overflow: hidden;
  background: var(--dsw-alias-bg-layer-1);
}
._confirmation_1nu42_1 {
  width: min(440px, 100%);
  max-height: calc(100vh - 48px);
  overflow: hidden;
}

._confirmationContent_1nu42_7 {
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
}

@supports (height: 100dvh) {
  ._confirmation_1nu42_1 {
    max-height: calc(100dvh - 48px);
  }
}

._warning_1nu42_19 {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: var(--dsw-alias-label-secondary);
  font-size: 14px;
  line-height: 22px;
}

._warning_1nu42_19 p {
  margin: 0;
}

._warningIcon_1nu42_32 {
  flex: none;
  margin-top: 2px;
  color: var(--dsw-alias-state-error-primary);
}

._acknowledgement_1nu42_38 {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin-top: 20px;
  color: var(--dsw-alias-label-primary);
  font-size: 14px;
  line-height: 22px;
  cursor: pointer;
}

._acknowledgement_1nu42_38 input {
  flex: none;
  width: 16px;
  height: 16px;
  margin: 3px 0 0;
  accent-color: var(--dsw-alias-button-primary-fill);
  cursor: pointer;
}

._acknowledgement_1nu42_38 input:focus-visible {
  outline: 2px solid var(--dsw-alias-border-l4);
  outline-offset: 2px;
}

._acknowledgement_1nu42_38 input:disabled {
  cursor: default;
}

._modalAction_1nu42_67 {
  min-width: 72px;
}

._confirmAction_1nu42_71 {
  min-width: 136px;
}
._banner_ugy7y_1 {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  padding: 4px 12px;
  text-align: center;
  font-size: 12px;
  line-height: 18px;
  background: var(--dsw-alias-state-error-primary);
  color: var(--dsw-alias-label-primary-foreground);
}
/* Visual spec mirrors deepsuite @deepseek/ui Tooltip.css (size m, no arrow),
   except padding tightened 6/12 -> 3/7, type 14/22 -> 13/20, radius
   10 -> 8, a tooltip-bg plate,
   one text color across both themes (the plate stays dark in light and dark
   mode). Behavior (fixed positioning off the anchor rect) is local — the
   upstream Floating stack is intentionally not vendored. */

._bubble_owhem_8 {
  position: fixed;
  z-index: 100;
  /* Fixed-position shrink-to-fit measures only the space from `left` to the
     viewport edge, so anchors near the right edge would wrap early;
     max-content sizes by the label alone, capped at half the viewport. */
  width: max-content;
  max-width: 50vw;
  padding: 3px 7px;
  border-radius: 8px;
  background: var(--dsw-alias-tooltip-bg);
  color: var(--dsw-static-neutral-bluish-00);
  font-size: 13px;
  line-height: 20px;
  white-space: pre-line;
  /* Unbreakable tokens (URLs, paths) must not push past max-width. */
  overflow-wrap: break-word;
  pointer-events: none;
  animation: _tooltip-in_owhem_1 150ms var(--ds-ease-in-out);
}

._bubble_owhem_8[data-side='right'] {
  transform: translateY(-50%);
}

._bubble_owhem_8[data-side='bottom'] {
  transform: translateX(-50%);
}

._bubble_owhem_8[data-side='top'] {
  transform: translate(-50%, -100%);
}

@keyframes _tooltip-in_owhem_1 {
  from { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  ._bubble_owhem_8 {
    animation: none;
  }
}
/* Transient top-center banner (DeepSeek Chat toast look): contrast fill,
   inverted label, slide-in, then hold-and-fade. The fade delay/duration MUST
   agree with HOLD_MS/FADE_MS in Toast.tsx: the component unmounts at their
   sum, so a mismatched sheet either cuts the fade or leaves an invisible
   banner blocking nothing. */

._toast_fvpz7_7 {
  position: fixed;
  top: 120px;
  left: 50%;
  /* Above the 1000 the image lightbox backdrop uses: a failure reported while
     a preview is open must stay readable. */
  z-index: 1100;
  /* Purely an announcement: it must never intercept clicks — in particular
     after the CSS fade finished while a throttled background-tab timer has
     not yet unmounted the still-hit-testable fixed element. */
  pointer-events: none;
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: min(560px, calc(100vw - 48px));
  padding: 12px 16px;
  border-radius: 14px;
  background: var(--dsw-alias-button-contrast-fill);
  color: var(--dsw-alias-label-primary-inverted);
  font-size: 14px;
  line-height: 22px;
  box-shadow: var(--dsw-shadow-lv3);
  transform: translateX(-50%);
  animation:
    _dsh-toast-in_fvpz7_1 160ms ease-out,
    _dsh-toast-fade_fvpz7_1 1000ms ease 3000ms forwards;
}

._icon_fvpz7_35 {
  display: grid;
  place-items: center;
  flex: none;
  color: var(--dsw-alias-state-warn-label);
}

._text_fvpz7_42 {
  min-width: 0;
}

@keyframes _dsh-toast-in_fvpz7_1 {
  from {
    opacity: 0;
    transform: translate(-50%, -6px);
  }

  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

@keyframes _dsh-toast-fade_fvpz7_1 {
  to {
    opacity: 0;
  }
}

/* Reduced motion drops the slide-in; the delayed fade (an opacity change,
   not movement) still ends the banner before the timed unmount. */
@media (prefers-reduced-motion: reduce) {
  ._toast_fvpz7_7 {
    animation: _dsh-toast-fade_fvpz7_1 1000ms ease 3000ms forwards;
  }
}
._root_4qrvp_1 {
  --json-tree-property: #881391;
  --json-tree-string: #c41a16;
  --json-tree-number: #1c00cf;
  --json-tree-keyword: #1c00cf;
  --json-tree-punctuation: #202124;
  --json-tree-icon: #5f6368;
  --json-tree-hover: rgb(60 64 67 / 4%);

  min-width: 0;
  overflow: auto;
  position: relative;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-bg-layer-1);
  font: 12px/16px var(--ds-font-family-code);
  overscroll-behavior-x: contain;
  overscroll-behavior-y: auto;
}

body[data-ds-dark-theme] ._root_4qrvp_1 {
  --json-tree-property: #5db0d7;
  --json-tree-string: #f28b82;
  --json-tree-number: #99c8ff;
  --json-tree-keyword: #99c8ff;
  --json-tree-punctuation: #e8eaed;
  --json-tree-icon: #9aa0a6;
  --json-tree-hover: rgb(232 234 237 / 5%);
}

._container_4qrvp_30 {
  box-sizing: border-box;
  width: max-content;
  min-width: 100%;
  margin: 0;
  padding: 6px 8px 8px;
  white-space: pre;
}

._expandedTopLevel_4qrvp_39 {
  box-sizing: border-box;
  width: max-content;
  min-width: 100%;
  padding: 6px 8px 8px 14px;
}

._expandedTopLevel_4qrvp_39:has(> ._topLevelBracket_4qrvp_46[data-json-root-row]:hover),
._expandedTopLevel_4qrvp_39:has(> ._topLevelBracket_4qrvp_46[data-json-root-row][data-json-copy-active]) {
  background: var(--json-tree-hover);
}

._expandedTopLevelContainer_4qrvp_51 {
  padding: 0;
}

._row_4qrvp_55._topLevelBracket_4qrvp_46 {
  margin-left: 0;
  padding-left: 0;
}

._children_4qrvp_60 {
  margin: 0;
  padding: 0;
  list-style: none;
}

._row_4qrvp_55 {
  position: relative;
  box-sizing: border-box;
  min-width: 100%;
  min-height: 16px;
  margin: 0;
  padding: 0 0 0 10px;
  list-style: none;
}

._row_4qrvp_55:not(._topLevelBracket_4qrvp_46):hover:not(:has(._row_4qrvp_55:hover))::after,
._row_4qrvp_55:not(._topLevelBracket_4qrvp_46)[data-json-copy-active]::after,
._row_4qrvp_55:has(> ._expander_4qrvp_78:focus-visible)::after {
  position: absolute;
  z-index: 0;
  top: 0;
  right: 0;
  left: 0;
  height: 16px;
  background: var(--json-tree-hover);
  content: '';
  pointer-events: none;
}

._row_4qrvp_55 > span:not(._expander_4qrvp_78) {
  position: relative;
  z-index: 1;
}

._label_4qrvp_95 {
  margin-right: 3px;
  color: var(--json-tree-property);
  font-weight: 400;
}

._clickableLabel_4qrvp_101 {
  cursor: pointer;
}

._stringValue_4qrvp_105 {
  color: var(--json-tree-string);
}

._numberValue_4qrvp_109 {
  color: var(--json-tree-number);
}

._keywordValue_4qrvp_113 {
  color: var(--json-tree-keyword);
}

._otherValue_4qrvp_117 {
  color: var(--dsw-alias-label-secondary);
}

._punctuation_4qrvp_121 {
  color: var(--json-tree-punctuation);
}

._preview_4qrvp_125 {
  color: var(--json-tree-punctuation);
}

._previewProperty_4qrvp_129 {
  color: var(--json-tree-punctuation);
}

._previewEllipsis_4qrvp_133 {
  color: var(--dsw-alias-label-tertiary);
}

._copyAnchor_4qrvp_137 {
  position: fixed;
  z-index: 3;
  display: inline-flex;
}

._copyButton_4qrvp_143 {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 16px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 3px;
  color: var(--dsw-alias-label-secondary);
  background: var(--dsw-alias-bg-layer-1);
  box-shadow: -5px 0 5px var(--dsw-alias-bg-layer-1);
  cursor: pointer;
}

._copyButton_4qrvp_143:hover {
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-interactive-bg-hover);
}

._copyButton_4qrvp_143:focus-visible {
  outline: 1px solid var(--dsw-alias-state-business-primary);
  outline-offset: -1px;
}

._copyButton_4qrvp_143[data-state='failed'] {
  color: var(--dsw-alias-state-error-primary);
}

._expander_4qrvp_78 {
  position: absolute;
  z-index: 2;
  top: 0;
  left: 0;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  box-sizing: border-box;
  width: 8px;
  height: 16px;
  margin: 0;
  color: var(--json-tree-icon);
  cursor: pointer;
  user-select: none;
}

._expander_4qrvp_78::before {
  width: 0;
  height: 0;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 6px solid currentColor;
  content: '';
  transform: scale(0.75);
  transform-origin: 33.333% center;
}

._collapseIcon_4qrvp_202::before {
  transform: rotate(90deg) scale(0.75);
}

._expander_4qrvp_78:hover {
  color: var(--dsw-alias-label-primary);
}

._expander_4qrvp_78:focus-visible {
  outline: none;
}

._collapsedContent_4qrvp_214 {
  margin: 0 1px;
  color: var(--json-tree-punctuation);
  cursor: pointer;
}

._collapsedContent_4qrvp_214::after {
  content: '…';
}
/* Geometry mirrors CodeBlock (12px radius, code-block surface + banner rows,
   markdown code-block font) so a terminal card and a fenced code block read as
   one family. The one deliberate divergence: output keeps `white-space: pre`
   and scrolls horizontally, because folding a column-aligned command's output
   destroys its alignment. */

._block_10eou_7 {
  --dsl-terminal-radius: 12px;
  --dsl-terminal-line-height: 22px;
  /* Rebindable by consumers (CodeBlock's --dsl-code-block-content-font
     pattern): a surface wanting the smaller code size rebinds this together
     with --dsl-terminal-line-height on its own container. */
  --dsl-terminal-font: var(--dsw-font-markdown-code-block);
  /* The card's own left inset, holding the run-state dot in a column of its own
     so it never competes with the commands for horizontal space. */
  --dsl-terminal-gutter: 30px;

  position: relative;
  margin: 16px 0;
  /* The gutter is the card's OWN padding, not a margin: every consumer rewrites
     `margin` wholesale (each render site sets its own indent), which silently
     cancelled the reservation and let the dot fall outside the card into a
     container that clips it. Owning the reservation here keeps the invariant
     with the component that depends on it. */
  padding-left: var(--dsl-terminal-gutter);
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-markdown-code-block);
  border-radius: var(--dsl-terminal-radius);
  /* Clip the banner to the card's own radius: when a consumer adds a border,
     the banner's equal corner radius no longer nests inside it and leaves a
     notch at the corner. Nothing inside renders out of the box. */
  overflow: hidden;
}

/* The status pill and copy control top-align to the FIRST prompt row (their
   heights are capped to the prompt line, so on a multi-line command they sit
   with the first command instead of floating mid-banner). */
._header_10eou_38 {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  /* Pulled back across the card's gutter padding so the banner spans the FULL
     surface, then re-inset by the same amount so the prompt text and the dot
     keep their positions. The banner shares the card's own surface (no banner
     token): the l2 divider below is the section boundary. */
  margin-left: calc(-1 * var(--dsl-terminal-gutter));
  padding: 9px 14px 9px var(--dsl-terminal-gutter);
  border-top-left-radius: var(--dsl-terminal-radius);
  border-top-right-radius: var(--dsl-terminal-radius);
  /* A long multi-line command scrolls inside the banner (same cap as the
     IN/OUT card's sections) instead of pushing the output off screen. */
  max-height: 150px;
  overflow-y: auto;
}

/* Banner scrollbar floats off the card edge like the output's. */
._header_10eou_38::-webkit-scrollbar-thumb {
  border: 2px solid transparent;
  background-clip: padding-box;
  border-radius: 6px;
}

._header_10eou_38::-webkit-scrollbar-track {
  margin: 6px;
}

/* Full-width l2 hairline between the command banner and the body — the same
   divider the IN/OUT card draws between its sections. A running card is
   banner-only, so it draws none. */
._block_10eou_7:not([data-running]) ._header_10eou_38 {
  border-bottom: 1px solid var(--dsw-alias-border-l2);
}

/* One row per command line. The prompt column is the only element allowed to
   shrink; the status pill and the copy control keep their intrinsic width. */
._prompt_10eou_76 {
  display: flex;
  flex-direction: column;
  min-width: 0;
  flex: 1;
  font: var(--dsl-terminal-font);
}

._promptLine_10eou_84 {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
  line-height: var(--dsl-terminal-line-height);
}

/* Out of flow inside the card's own gutter padding, so the reservation and the
   dot move together and no consumer margin can pull them apart; the dot neither
   indents its command nor depends on the command's text metrics to line up.
   Centered against the row's line box, not the code font's baseline. */
._runState_10eou_97 {
  position: absolute;
  left: calc(-1 * var(--dsl-terminal-gutter) + 8px);
  top: 50%;
  transform: translateY(-50%);
}

/* The dot is aria-hidden; this is its text label for assistive technology. */
._runStateLabel_10eou_105 {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

._cwd_10eou_114 {
  flex: none;
  color: var(--dsw-alias-label-tertiary);
}

/* `pre`, not `nowrap`: the prompt row renders the command verbatim, and
   `nowrap` collapses the repeated spaces, tabs, and alignment of an indented
   continuation. Both hold the single row and the ellipsis. */
._command_10eou_122 {
  min-width: 0;
  color: var(--dsw-alias-label-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: pre;
}

/* Capped to the prompt's line height (Pill's own 24px height would exceed a
   smaller-font prompt row and stretch the banner). Sticky against the
   banner's own scroll so the pill and the copy control stay in reach while a
   long command scrolls underneath. */
._status_10eou_134 {
  flex: none;
  position: sticky;
  top: 0;
  height: var(--dsl-terminal-line-height);
  color: var(--dsw-alias-state-error-primary);
}

._copyButton_10eou_142 {
  flex: none;
  position: sticky;
  top: 0;
  /* Card surface, not transparent: the control is sticky over the banner's
     own scroll, so scrolled command text must not bleed through it. */
  background-color: var(--dsw-alias-markdown-code-block);
  border: none;
  padding: 0;
  margin: 0;
  color: var(--dsw-alias-label-secondary);
  cursor: pointer;
  font: var(--dsw-font-xs-13);
  line-height: var(--dsl-terminal-line-height);
}

/* Vertical scrolling lives on the OUTPUT, not the card root: a root scroller
   would run its scrollbar over the banner (and the copy control), while here
   the banner stays pinned and the bar sits inside the output's right padding.
   Unset, the max-height is none and the auto overflow never engages. */
._output_10eou_162 {
  max-height: var(--dsl-terminal-output-max-height, none);
  padding: 12px 14px 12px 0;
  font: var(--dsl-terminal-font);
  overflow-x: auto;
  overflow-y: auto;
}

/* Both output scrollbars (vertical cap, horizontal pre overflow) float 2px
   off the card edge: a transparent border clips the thumb inward so it never
   hugs the rounded corner. */
._output_10eou_162::-webkit-scrollbar-thumb {
  border: 2px solid transparent;
  background-clip: padding-box;
  border-radius: 6px;
}

/* Track end-margins keep the thumb's travel out of the card's rounded
   corners in both directions. */
._output_10eou_162::-webkit-scrollbar-track {
  margin: 6px;
}

/* No wrapping, no word-break: alignment is the payload of terminal output. */
._line_10eou_186 {
  min-height: var(--dsl-terminal-line-height);
  white-space: pre;
}

._expand_10eou_191 {
  display: block;
  width: 100%;
  padding: 0;
  border: none;
  background-color: transparent;
  color: var(--dsw-alias-label-tertiary);
  cursor: pointer;
  font: inherit;
  text-align: left;
}

._expand_10eou_191:hover {
  color: var(--dsw-alias-label-secondary);
}

._empty_10eou_207 {
  padding: 12px 14px 12px 0;
  font: var(--dsl-terminal-font);
  color: var(--dsw-alias-label-tertiary);
}
/* Geometry mirrors CodeBlock (12px radius, code-block surface + banner row,
   markdown code-block font) so a read card and a fenced code block read as one
   family. Content keeps `white-space: pre` and scrolls horizontally rather than
   folding, because a source line's indentation is part of what a reader is
   reading. */

._block_biesw_7 {
  --dsl-read-radius: 12px;
  --dsl-read-line-height: 22px;
  /* Fixed-width gutter column for the line numbers, so the content edge stays
     put down the whole window regardless of how wide the numbers grow. */
  --dsl-read-gutter: 48px;

  position: relative;
  margin: 16px 0;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-markdown-code-block);
  border-radius: var(--dsl-read-radius);
}

._banner_biesw_21 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 9px 14px;
  background: var(--dsw-alias-markdown-code-block-banner);
  border-top-left-radius: var(--dsl-read-radius);
  border-top-right-radius: var(--dsl-read-radius);
}

._label_biesw_32 {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--dsw-alias-label-primary);
  font-family: var(--ds-font-family-code);
  font-size: 12px;
  line-height: 18px;
}

._action_biesw_43 {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  gap: 12px;
}

._count_biesw_50 {
  color: var(--dsw-alias-label-tertiary);
  font: var(--dsw-font-xs-13);
}

._lang_biesw_55 {
  color: var(--dsw-alias-label-tertiary);
  font-family: var(--ds-font-family-code);
  font-size: 12px;
  line-height: 18px;
}

._copyButton_biesw_62 {
  background-color: transparent;
  border: none;
  padding: 0;
  margin: 0;
  color: var(--dsw-alias-label-secondary);
  cursor: pointer;
  font: var(--dsw-font-xs-13);
}

._body_biesw_72 {
  padding: 12px 0;
  font: var(--dsw-font-markdown-code-block);
  overflow-x: auto;
  overflow-y: hidden;
}

/* One row per file line: a fixed gutter column, then the content. No wrapping —
   a source line's leading whitespace is meaningful and scrolls sideways. */
._line_biesw_81 {
  display: flex;
  min-height: var(--dsl-read-line-height);
  line-height: var(--dsl-read-line-height);
  white-space: pre;
}

._gutter_biesw_88 {
  flex: none;
  width: var(--dsl-read-gutter);
  padding-right: 14px;
  text-align: right;
  color: var(--dsw-alias-label-tertiary);
  /* The gutter is chrome, not content: keep it out of a text selection so a
     copy of the visible rows carries the source, not the line numbers. */
  user-select: none;
}

._content_biesw_99 {
  color: var(--dsw-alias-label-primary);
}

._expand_biesw_103 {
  display: block;
  width: 100%;
  padding: 0 0 0 var(--dsl-read-gutter);
  border: none;
  background-color: transparent;
  color: var(--dsw-alias-label-tertiary);
  cursor: pointer;
  font: inherit;
  text-align: left;
}

._expand_biesw_103:hover {
  color: var(--dsw-alias-label-secondary);
}
/* Geometry mirrors CodeBlock/TerminalBlock (12px radius, code-block surface +
   banner row, markdown code-block font) so a diff card reads as one family with
   a fenced block and a terminal card. The deliberate divergence, shared with
   TerminalBlock: the body keeps `white-space: pre` and scrolls horizontally,
   because folding a source line destroys the indentation a diff is read by. */

._block_srovd_7 {
  --dsl-diff-radius: 12px;
  --dsl-diff-line-height: 22px;

  position: relative;
  margin: 16px 0;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-markdown-code-block);
  border-radius: var(--dsl-diff-radius);
}

/* The copy control floats in the top-right corner over the body, so the card
   has no empty banner row above its first diff line (the TUI diff card has no
   banner either — only the footer). The block is position: relative, so this
   anchors to the card. */
._copyButton_srovd_22 {
  position: absolute;
  top: 8px;
  right: 12px;
  z-index: 1;
  background-color: transparent;
  border: none;
  padding: 0;
  margin: 0;
  color: var(--dsw-alias-label-secondary);
  cursor: pointer;
  font: var(--dsw-font-xs-13);
}

._body_srovd_36 {
  padding: 12px 14px;
  font: var(--dsw-font-markdown-code-block);
  overflow-x: auto;
  overflow-y: hidden;
}

/* No wrapping, no word-break: a diff is read by its indentation. */
._line_srovd_44 {
  min-height: var(--dsl-diff-line-height);
  white-space: pre;
}

/* A file header: the path in the primary tone, set apart by weight. The copy
   button floats over this first row's top-right corner, so reserve space at the
   line's end for it — a long path scrolls under the button otherwise, and the
   button's hit area would eat clicks on the path's tail. */
._path_srovd_53 {
  color: var(--dsw-alias-label-primary);
  font-weight: 600;
  padding-right: 56px;
}

/* A same-file second hunk's separator (a scattered edit), in the dim tone. */
._gap_srovd_60 {
  color: var(--dsw-alias-label-tertiary);
}

/* The diff's own meaning-carrying colors: removed on the error token, added on
   the success token. A `- `/`+ ` prefix is drawn here so a copied line and the
   shown line agree, and so the sign reads without relying on color alone. */
._del_srovd_67::before {
  content: '- ';
  color: var(--dsw-alias-state-error-primary);
}

._del_srovd_67 {
  color: var(--dsw-alias-state-error-primary);
}

._add_srovd_76::before {
  content: '+ ';
  color: var(--dsw-alias-state-success-primary);
}

._add_srovd_76 {
  color: var(--dsw-alias-state-success-primary);
}

._expand_srovd_85 {
  display: block;
  width: 100%;
  padding: 0;
  border: none;
  background-color: transparent;
  color: var(--dsw-alias-label-tertiary);
  cursor: pointer;
  font: inherit;
  text-align: left;
}

._expand_srovd_85:hover {
  color: var(--dsw-alias-label-secondary);
}

/* The change summary, dim under the body: `└ +A -R · N file(s)`, the same
   footer the TUI transcript's diff card draws. */
._footer_srovd_103 {
  padding: 0 14px 12px;
  font: var(--dsw-font-markdown-code-block);
  color: var(--dsw-alias-label-tertiary);
}
/* Geometry mirrors CodeBlock and TerminalBlock (12px radius, code-block
   surface + banner row, markdown code-block font) so a search card reads as one
   family with them. The deliberate divergence they share: the result rows keep
   `white-space: pre` and scroll horizontally, because folding a long match line
   or path destroys the alignment a reader scans by. */

._block_s66q0_7 {
  --dsl-search-radius: 12px;
  --dsl-search-line-height: 22px;

  position: relative;
  margin: 16px 0;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-markdown-code-block);
  border-radius: var(--dsl-search-radius);
}

/* The banner: result summary on the left, the copy control holding its
   intrinsic width on the right. */
._header_s66q0_20 {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 9px 14px;
  background: var(--dsw-alias-markdown-code-block-banner);
  border-top-left-radius: var(--dsl-search-radius);
  border-top-right-radius: var(--dsl-search-radius);
}

._summary_s66q0_30 {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font: var(--dsw-font-xs-13);
  color: var(--dsw-alias-label-secondary);
}

._copyButton_s66q0_40 {
  flex: none;
  background-color: transparent;
  border: none;
  padding: 0;
  margin: 0;
  color: var(--dsw-alias-label-secondary);
  cursor: pointer;
  font: var(--dsw-font-xs-13);
}

._body_s66q0_51 {
  padding: 8px 14px 12px 0;
  font: var(--dsw-font-markdown-code-block);
  overflow-x: auto;
  overflow-y: hidden;
}

/* No wrapping: a match line or a path keeps its content on one row and scrolls
   sideways instead of folding. */
._line_s66q0_60 {
  min-height: var(--dsl-search-line-height);
  padding-left: 14px;
  white-space: pre;
}

/* The 1-based line number ahead of a grep match line, dimmed so the match text
   stays the salient content. */
._lineNumber_s66q0_68 {
  color: var(--dsw-alias-label-tertiary);
}

/* A file group's header: a bold path label plus its match count, the whole row
   the collapse control. */
._fileHeader_s66q0_74 {
  display: flex;
  align-items: baseline;
  gap: 8px;
  width: 100%;
  min-height: var(--dsl-search-line-height);
  padding: 0 14px;
  border: none;
  background-color: transparent;
  cursor: pointer;
  font: inherit;
  text-align: left;
}

._filePath_s66q0_88 {
  min-width: 0;
  font-weight: 600;
  color: var(--dsw-alias-label-primary);
  white-space: pre;
}

._fileCount_s66q0_95 {
  flex: none;
  color: var(--dsw-alias-label-tertiary);
}

._expand_s66q0_100 {
  display: block;
  width: 100%;
  padding: 0 14px;
  border: none;
  background-color: transparent;
  color: var(--dsw-alias-label-tertiary);
  cursor: pointer;
  font: inherit;
  text-align: left;
}

._expand_s66q0_100:hover {
  color: var(--dsw-alias-label-secondary);
}

._empty_s66q0_116 {
  padding: 12px 14px;
  font: var(--dsw-font-markdown-code-block);
  color: var(--dsw-alias-label-tertiary);
}
/* Visual baseline: deepsuite `@deepseek/md` code-block.css. Highlight colors
   stay on the existing shiki `--shiki-*` sheet (not Prism highlight.css). */

._block_178r4_4 {
  --dsl-code-block-banner-background-color: var(--dsw-alias-markdown-code-block-banner);
  --dsl-code-block-border-radius: 12px;
  --dsl-code-block-banner-font: var(--dsw-font-xs-13);
  --dsl-code-block-content-font: var(--dsw-font-markdown-code-block);

  position: relative;
  margin: 16px 0;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-markdown-code-block);
  border-radius: var(--dsl-code-block-border-radius);
}

._block_178r4_4:not(:last-child) {
  margin-bottom: 11px;
}

._bannerWrap_178r4_21 {
  position: sticky;
  top: 0;
  z-index: 6;
  background-color: var(--dsw-alias-bg-base);
  border-top-left-radius: var(--dsl-code-block-border-radius);
  border-top-right-radius: var(--dsl-code-block-border-radius);
}

._banner_178r4_21 {
  background: var(--dsl-code-block-banner-background-color);
  padding: 9px 14px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  font: var(--dsl-code-block-banner-font);
  border-top-left-radius: var(--dsl-code-block-border-radius);
  border-top-right-radius: var(--dsl-code-block-border-radius);
}

._infostring_178r4_42 {
  color: var(--dsw-alias-label-primary);
  font-family: var(--ds-font-family-code);
  font-size: 12px;
  line-height: 18px;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

._action_178r4_53 {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}

._copyButton_178r4_59 {
  background-color: rgb(255 255 255 / 0);
  border: none;
  padding: 0;
  margin: 0;
  color: inherit;
  cursor: pointer;
  font: inherit;
}

._block_178r4_4 :where(pre) {
  font: var(--dsl-code-block-content-font);
  padding: 16px;
  margin: 0 !important;
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: break-all;
  background: var(--dsw-alias-markdown-code-block);
  /* Bottom radii live on <pre>: overflow:hidden on .block would kill the
     sticky banner, and this opaque fill otherwise squares off the wrapper. */
  border-bottom-left-radius: var(--dsl-code-block-border-radius);
  border-bottom-right-radius: var(--dsl-code-block-border-radius);
}

/* Shiki inlines its theme background var; route it to the repo token. */
._block_178r4_4 :where(pre._shiki_178r4_84) {
  background: var(--dsw-alias-markdown-code-block) !important;
}

._block_178r4_4 :where(pre) code {
  font: inherit;
  background: none;
  padding: 0;
}

._plain_178r4_94 {
  color: var(--dsw-alias-label-primary);
}
/* Visual baseline: deepsuite `@deepseek/md` markdown.css, adapted to CSS
   Modules. Cite pills, header anchors, and thinking-small variants are
   intentionally absent (no matching DOM). Token names match that sheet. */

._markdown_1nba0_5 {
  min-width: 0;
  overflow-wrap: anywhere;
  font: var(--dsw-font-markdown-base);
  color: var(--dsw-alias-label-primary);
}

._markdown_1nba0_5 strong {
  font-weight: 600;
}

._markdown_1nba0_5 h1 {
  font: var(--dsw-font-markdown-h1);
  margin: 32px 0 16px;
}

._markdown_1nba0_5 h2 {
  font: var(--dsw-font-markdown-h2);
  margin: 32px 0 16px;
}

._markdown_1nba0_5 h3 {
  font: var(--dsw-font-markdown-h3);
  margin: 32px 0 16px;
}

._markdown_1nba0_5 h4 {
  font: var(--dsw-font-markdown-h4);
  margin: 16px 0;
}

._markdown_1nba0_5 :where(h5, h6) {
  font: var(--dsw-font-markdown-base-strong);
  margin: 16px 0;
}

._markdown_1nba0_5 :where(h1, h2, h3, h4, h5, h6) strong {
  font-weight: inherit;
}

._markdown_1nba0_5 p {
  margin: 16px 0;
}

/* Tighten h4–h6 against a following list (design: 8px gap). */
._markdown_1nba0_5 :where(h4, h5, h6) + :where(ul, ol) {
  margin-top: 8px;
}

._markdown_1nba0_5 :where(h4, h5, h6):has(+ :where(ul, ol)) {
  margin-bottom: 8px;
}

._markdown_1nba0_5 a {
  /* deepsuite markdown.css uses brand-text (blue in newDesign); this sheet
     keeps design-platform brand-text as near-black, so links use the blue
     business-primary alias instead. */
  color: var(--dsw-alias-state-business-primary);
  transition: box-shadow var(--ds-transition-duration) var(--ds-ease-in-out);
  position: relative;
  text-decoration: none;
  /* Transparent hit-area padding; literal zero-alpha only (no painted color). */
  border-left: 3px solid rgb(255 255 255 / 0);
  border-right: 3px solid rgb(255 255 255 / 0);
  border-top: 2px solid rgb(255 255 255 / 0);
  border-bottom: 2px solid rgb(255 255 255 / 0);
  margin-left: -3px;
  margin-right: -3px;
}

._markdown_1nba0_5 a:hover,
._markdown_1nba0_5 a:focus {
  outline: none;
  text-decoration: underline var(--dsw-alias-state-business-primary);
}

._markdown_1nba0_5 a:focus-visible {
  box-shadow: 0 0 0 2px var(--dsw-alias-state-business-primary);
}

._markdown_1nba0_5 :where(ul, ol) {
  margin: 16px 0;
  padding-left: 18px;
}

._markdown_1nba0_5 li:not(:first-child) {
  margin-top: 6px;
}

._markdown_1nba0_5 li > :where(ul, ol) {
  margin-top: 4px;
}

._markdown_1nba0_5 li::marker {
  line-height: 28px;
  color: var(--dsw-alias-label-secondary);
}

/* Nested ol under ul/ol: markers inside (models sometimes emit this shape). */
._markdown_1nba0_5 :where(ul, ol) ol {
  list-style-position: inside;
  padding-left: 0;
}

._markdown_1nba0_5 :where(ul, ol) ol li p {
  display: inline;
}

._markdown_1nba0_5 li > p {
  margin: 8px 0;
}

._markdown_1nba0_5 li > *:first-child {
  margin-top: 0;
}

/* Keep list-nested code-block vertical margins (design: +4px vs other last children). */
._markdown_1nba0_5 li > *:last-child:not(.md-code-block) {
  margin-bottom: 0;
}

._markdown_1nba0_5 hr {
  display: block;
  border: none;
  height: 1px;
  margin: 32px 0;
  background: var(--dsw-alias-border-l2);
}

._markdown_1nba0_5 blockquote {
  border-left: 2px solid var(--dsw-alias-label-caption);
  margin: 16px 0 0;
  padding-left: 14px;
}

._markdown_1nba0_5 pre {
  margin: 16px 0;
  font-family: var(--ds-font-family-code);
  overflow: auto;
}

._markdown_1nba0_5 :not(pre) > code {
  display: inline-flex;
  align-items: center;
  box-sizing: border-box;
  font: var(--dsw-font-markdown-code);
  font-family: var(--ds-font-family-code);
  font-size: 0.875em !important;
  background-color: var(--dsw-alias-markdown-inline-code);
  border-radius: 6px;
  padding: 0 5px;
}

._markdown_1nba0_5 :where(h1, h2, h3, h4, h5, h6) code {
  font: inherit;
  font-family: var(--ds-font-family-code);
}

._markdown_1nba0_5 .katex-display {
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
}

._markdown_1nba0_5 input[type='checkbox'] {
  margin: 0 8px 0 0;
  accent-color: var(--dsw-alias-label-secondary);
}

._tableScroll_1nba0_174 {
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-x: contain;
}

._tableScroll_1nba0_174 table {
  border-collapse: collapse;
  width: max-content;
  max-width: max-content;
}

._tableScroll_1nba0_174 th {
  text-align: start;
  padding: 10px 16px;
  border-bottom: 1px solid var(--dsw-alias-border-l3);
  border-top: none;
  font: var(--dsw-font-markdown-table-head);
  max-width: 320px;
  max-width: min(30vw, 320px);
  min-width: 100px;
}

._tableScroll_1nba0_174 td {
  padding: 10px 16px;
  border-bottom: 1px solid var(--dsw-alias-border-l2);
  font: var(--dsw-font-markdown-table);
  max-width: 320px;
  max-width: min(30vw, 320px);
  min-width: 100px;
}

._tableScroll_1nba0_174 th:first-child,
._tableScroll_1nba0_174 td:first-child {
  padding-left: 0;
}

._tableScroll_1nba0_174 td:last-child {
  padding-right: 0;
}

._tableScroll_1nba0_174 table code {
  font-size: 13px;
}

._markdown_1nba0_5 > *:first-child,
._markdown_1nba0_5 p:first-child {
  margin-top: 0 !important;
}

._markdown_1nba0_5 > *:last-child,
._markdown_1nba0_5 p:last-child {
  margin-bottom: 0 !important;
}

._imageAlt_1nba0_229 {
  color: var(--dsw-alias-label-tertiary);
  font-style: italic;
}

._image_1nba0_229 {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  margin: 0;
  border-radius: 8px;
  background: var(--dsw-alias-bg-base);
  object-fit: contain;
}

/* Inline file mention: the same link language this sheet gives anchors (and
   thereby URL-promoted inline code) — link-blue at rest, underline only on
   hover/focus. An underline at rest reads badly inside the code chip, where
   it collides with monospace descenders and the pill background. */
._fileMention_1nba0_249 {
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  color: var(--dsw-alias-state-business-primary);
  text-decoration: none;
  cursor: pointer;
}

._fileMention_1nba0_249:hover,
._fileMention_1nba0_249:focus {
  outline: none;
  text-decoration: underline var(--dsw-alias-state-business-primary);
  text-underline-offset: 3px;
}
@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.47"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
/* Geometry mirrors CodeBlock/TerminalBlock (12px radius, code-block surface,
   16px vertical margin) so a web card, a terminal card, and a fenced code block
   read as one family. A source list is prose, not aligned output, so each row
   wraps horizontally rather than scrolling sideways like a terminal card; the
   list as a whole scrolls vertically within a capped height (see .sources). */

._block_d4nqi_7 {
  --dsl-web-radius: 12px;

  margin: 16px 0;
  padding: 12px 14px;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-markdown-code-block);
  border-radius: var(--dsl-web-radius);
}

/* The provider answer reads as body prose above the citation list; its own
   MarkdownText margins are trimmed so the list sits tight under it. */
._answer_d4nqi_19 {
  margin-bottom: 8px;
}

._answer_d4nqi_19 > div > :first-child {
  margin-top: 0;
}

._answer_d4nqi_19 > div > :last-child {
  margin-bottom: 0;
}

/* The citation list: ordered so each source reads as a numbered reference. The
   whole list — the sources the tool returned, matching what the model saw —
   renders here; a max-height caps the card so a long list scrolls in place
   rather than growing the card unbounded. The height is a design constant of the
   card's geometry, not a deployment choice, so it lives here rather than a plugin
   config field.

   `overflow-y` makes this a scroll container, which also clips inline-start
   overflow: a marker wider than `padding-left` loses its leading digits with no
   way to scroll them back. Markers are right-aligned to the content edge, so the
   padding must fit the widest one the list can produce. `searchMaxResults` is an
   unbounded positive integer, so the padding is sized in `em` — against this
   element's own font, the one a marker inherits — to hold a three-digit marker
   (`999. ` measures 2.35em in the app font stack) plus the gap the one-digit
   case already had. */
._sources_d4nqi_5 {
  margin: 0;
  padding-left: 2.5em;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: 320px;
  overflow-y: auto;
}

._source_d4nqi_5 {
  min-width: 0;
}

._sourceLink_d4nqi_60 {
  color: var(--dsw-alias-state-business-primary);
  font-size: 14px;
  line-height: 20px;
  word-break: break-word;
}

._sourceLink_d4nqi_60:hover {
  text-decoration: underline;
}

._snippet_d4nqi_71 {
  margin-top: 2px;
  color: var(--dsw-alias-label-secondary);
  font-size: 13px;
  line-height: 19px;
  word-break: break-word;
}

._published_d4nqi_79 {
  margin-top: 2px;
  color: var(--dsw-alias-label-tertiary);
  font: var(--dsw-font-xs-13);
}

._truncated_d4nqi_85 {
  margin-top: 8px;
  color: var(--dsw-alias-label-tertiary);
  font: var(--dsw-font-xs-13);
}

._empty_d4nqi_91 {
  color: var(--dsw-alias-label-secondary);
  font: var(--dsw-font-xs-13);
}

/* The fetch card is a compact summary: the URL over a status/truncation row. */
._fetch_d4nqi_97 {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

._fetchUrl_d4nqi_103 {
  color: var(--dsw-alias-state-business-primary);
  font-family: var(--ds-font-family-code);
  font-size: 13px;
  line-height: 19px;
  word-break: break-all;
}

._fetchUrl_d4nqi_103:hover {
  text-decoration: underline;
}

._fetchMeta_d4nqi_115 {
  display: flex;
  align-items: baseline;
  gap: 12px;
}

._status_d4nqi_121 {
  color: var(--dsw-alias-label-secondary);
  font: var(--dsw-font-xs-13);
}

/* The fetch card's truncation note sits inline beside the status, so it drops
   the search card's top margin. */
._fetch_d4nqi_97 ._truncated_d4nqi_85 {
  margin-top: 0;
}
._root_1ye18_1 {
  margin: 4px 0;
}

._toggle_1ye18_5 {
  font-size: 12px;
  line-height: 18px;
  color: var(--dsw-alias-label-secondary);
  padding: 2px 6px;
  border: none;
  background: transparent;
  cursor: pointer;
  border-radius: 6px;
}

._toggle_1ye18_5:hover {
  background: var(--dsw-alias-interactive-bg-hover);
}

._body_1ye18_20 {
  margin: 4px 0 0;
  padding: 8px;
  max-height: 200px;
  overflow: auto;
  background: var(--dsw-alias-markdown-code-block);
  border: 1px solid var(--dsw-alias-border-l1);
  border-radius: 6px;
  font-family: var(--ds-font-family-code);
  font-size: 11px;
  line-height: 16px;
  color: var(--dsw-alias-label-primary);
}
._text_1pfhk_1 {
  white-space: pre-wrap;
  word-break: break-word;
  /* Font metrics inherit from the consumer's container (bubble 16/24,
     assistant flow 16/28) — a generic text primitive must not pin its own
     size, or every consumer's line grid breaks (44px bubble spec regression). */
  font-size: inherit;
  line-height: inherit;
}
/* Shell-owned mount defaults. Theme tokens arrive with the ui-theme client
 * plugin before the loader roster activates. */

html,
body,
#root {
  height: 100%;
  margin: 0;
}

body {
  font-family: var(
    --dsw-font-family,
    -apple-system,
    BlinkMacSystemFont,
    'Segoe UI',
    'PingFang SC',
    'Hiragino Sans GB',
    'Microsoft YaHei',
    'Helvetica Neue',
    Helvetica,
    Arial,
    sans-serif
  );
  /* Grayscale antialiasing over subpixel rendering: WebKit/Blink and the
     Firefox macOS equivalent; other engines ignore both lines. */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: var(--dsw-alias-label-primary, #0f1115);
  background: var(--dsw-alias-bg-base, #fff);
}

/* Form controls don't inherit the body font (UA sheets pin their families —
   Chrome buttons fall back to Arial, textareas to monospace), so the app
   stack is re-applied to them explicitly, as upstream's global reset does. */
button,
input,
select,
textarea {
  font-family: inherit;
}
