.ot-mul-button {
  position: relative;
}
.ot-mul-button.more-button .tea-btn {
  padding-right: 28px !important;
}
.ot-mul-button .ot-mul-dropdown {
  position: absolute !important;
  right: 8px;
  top: 50%;
  transform: translate(0, -50%);
  cursor: pointer;
}
.ot-mul-button .ot-mul-dropdown svg {
  transition: transform 0.3s;
}
.ot-mul-button .ot-mul-dropdown:hover svg,
.ot-mul-button .ot-mul-dropdown.active svg {
  transform: rotate(180deg);
}
/*# sourceMappingURL=style.css.map */
.ot-refresh-button button {
  padding: 0 6px !important;
}
.ot-refresh-button .ot-refresh-button-icon.active {
  animation-name: refresh;
  animation-duration: 0.5s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
}
@keyframes refresh {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}
/*# sourceMappingURL=refreshButtonStyle.css.map */
.ot-status-empty {
  display: flex !important;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  font-size: 12px;
}
.ot-status-empty .ot-status-empty-title {
  font-size: 1.17em;
  font-weight: 500;
  line-height: 22px;
  color: #000000;
}
.ot-status-empty .ot-status-empty-desc {
  font-weight: 400;
  line-height: 22px;
  color: #0000008C;
  margin-top: 5px;
}
.ot-status-empty .ot-status-empty-op {
  display: flex;
  gap: 5px;
  margin-top: 10px;
}
.ot-empty-icon-command {
  width: 64px;
  height: 64px;
}
.ot-empty-icon-command #ot-empty-icon-command-path {
  fill: #D7DCE3;
}
.ot-empty-icon-command #ot-empty-icon-command-react {
  fill: #A2ADBB;
}
.ot-status-empty-bottom {
  display: flex;
  justify-content: center;
  align-items: center;
  color: #00000066;
  padding: 16px 0;
}
.ot-status-empty-bottom .ot-status-empty-line {
  flex: 1;
  border-top: 1px dashed #D6DBE3;
}
.ot-status-empty-bottom .ot-status-empty-bottom-icon {
  display: flex;
  align-items: center;
  margin-left: 16px;
}
.ot-status-empty-bottom .ot-status-empty-bottom-icon svg {
  font-size: 20px;
  color: var(--ot-icon-color-1);
}
.ot-status-empty-bottom .ot-status-empty-bottom-desc {
  margin-right: 16px;
  font-weight: 400;
  font-size: 12px;
  line-height: 20px;
  color: var(--ot-font-color-secondary);
}
.ot-status-empty-bottom .ot-status-empty-bottom-icon + .ot-status-empty-bottom-desc {
  margin-left: 4px;
}
[theme="dark"] .ot-status-empty .ot-status-empty-title {
  color: #FFFFFFE5;
}
[theme="dark"] .ot-status-empty .ot-status-empty-desc {
  color: #FFFFFF8C;
}
[theme="dark"] .ot-empty-icon-command #ot-empty-icon-command-path {
  fill: #9A9A9A;
}
[theme="dark"] .ot-empty-icon-command #ot-empty-icon-command-react {
  fill: #4B4B4B;
}
[theme="dark"] .ot-status-empty-line {
  border-top-color: #4B4B4B;
}
/*# sourceMappingURL=style.css.map */
.ot-loading-skeleton {
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
  box-sizing: border-box;
}
.ot-loading-skeleton .ot-loading-skeleton__row {
  display: flex;
  align-items: center;
}
.ot-loading-skeleton .ot-loading-skeleton__row + .ot-loading-skeleton__row {
  margin-top: 12px;
}
.ot-loading-skeleton .ot-loading-skeleton__col {
  background: linear-gradient(90deg, #E3E6EB 0%, #F1F2F5 19.41%, #E3E6EB 34.02%, #E3E6EB 56.99%, #F1F2F5 75.95%, #E3E6EB 87.33%);
  height: 12px;
  position: relative;
  overflow: hidden;
  border-radius: 1px;
}
.ot-loading-skeleton .ot-loading-skeleton__col:after {
  content: " ";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  top: 0;
  background: var(--ot-background-color-skeleton-1);
}
/*# sourceMappingURL=style.css.map */
#ot-auto-complate.ot-auto-complate.value .ot-dialog-create-connect__auto-complete {
  padding-left: 8px !important;
}
#ot-auto-complate.ot-auto-complate.value .ot-dialog-create-connect__auto-complete:has(+img) {
  padding-left: 32px !important;
}
#ot-auto-complate.ot-auto-complate.value.lh .ot-dialog-create-connect__auto-complete {
  padding-left: 32px !important;
}
#ot-auto-complate.ot-auto-complate .ot-auto-complate-bubble__content .ot-auto-complate-bubble-status .ot-auto-complate-list {
  max-height: 150px;
}
.ot-auto-complate-bubble .tea-bubble .tea-bubble__inner .ot-auto-complate-bubble__content .ot-auto-complate-list li:not(:has(img)) {
  padding-left: 12px !important;
}
/*# sourceMappingURL=style.css.map */
.orcaterm-nps-service-score {
  width: 100%;
}
.orcaterm-nps-service-score__numbers {
  font-size: 0;
  text-align: center;
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}
.orcaterm-nps-service-score__numbers > span {
  width: 24px;
  height: 24px;
  display: inline-block;
  vertical-align: middle;
  font-size: 12px;
  font-weight: 700;
  box-sizing: border-box;
  text-align: center;
  line-height: 24px;
  color: var(--ot-font-color-primary);
  cursor: pointer;
  border-radius: 50%;
  background: var(--ot-footer-background-color);
}
.orcaterm-nps-service-score__numbers > span.is-actived {
  background-color: var(--ot-selected-background-color-1);
  color: rgba(var(--cp-color-white-rgb), 0.9);
}
.orcaterm-nps-service-score__numbers > span:hover {
  background: var(--ot-icon-hover-background-1);
}
.orcaterm-nps-service-score__tips {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
  margin-top: 10px;
  color: #888;
  font-size: 12px;
  font-weight: 400;
  line-height: 18px;
}
/*# sourceMappingURL=npsScore.css.map */
[theme=dark] .monaco-placeholder {
  color: rgba(255, 255, 255, 0.65);
}
[theme=dark] .script-arg {
  background-color: #143a4b;
}
[theme=dark] .script-arg-active {
  background-color: #356992;
}
[theme=light] .tea-btn.command-library-btn:hover:before {
  background-color: var(--ot-icon-hover-background-9) !important;
}
[theme=light] .tea-btn.orcaterm-multiple-servers__header-clear-btn:hover:before {
  background-color: var(--ot-icon-hover-background-9) !important;
}
.command-import-dialog .instance-id-label p {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.command-dialog input:-webkit-autofill {
  -webkit-text-fill-color: var(--ot-font-color-primary);
}
.command-dialog input:autofill {
  -webkit-text-fill-color: var(--ot-font-color-primary);
}
.command-input {
  position: relative;
  padding: 0;
  width: 100%;
}
.monaco-placeholder {
  position: absolute;
  display: none;
  white-space: pre-wrap;
  top: 2px;
  left: 0;
  font-size: 12px;
  font-family: Consolas, 'Courier New', monospace;
  pointer-events: none;
  user-select: none;
  line-height: 18px;
  color: rgba(0, 0, 0, 0.6);
}
.command-detail-content .detail-content .content-item .highlight {
  display: inline-block;
  line-height: 16px;
  opacity: 0.5;
}
.command-detail-content .detail-content .content-item .highlight.active {
  opacity: 1;
}
.script-arg {
  background-color: #c6ecfd;
}
.script-arg-active {
  background-color: #a0d4fc;
}
.orcaterm-right-command .body {
  position: relative;
  max-height: 256px;
  overflow: hidden;
}
.command-library-oper .tea-form--search .tea-input.tea-input--search {
  padding-right: 24px !important;
}
.orcaterm-script-args-table .tea-table__box tr:hover {
  background-color: unset !important;
}
.orcaterm-script-args-table .tea-table__box td span {
  line-height: 30px;
}
.ot-icon-script-list .ot-icon-script-list-path {
  fill: white;
  fill-opacity: 0.55;
}
[theme=light] .ot-icon-script-list .ot-icon-script-list-path {
  fill: black;
  fill-opacity: 0.6;
}
.orcaterm-multiple-servers-drawer__footer .orcaterm-multiple-servers-drawer__footer-overtime {
  left: 8px !important;
}
.orcaterm-multiple-servers__header-clear-btn.tea-btn {
  transition: unset !important;
}
.orcaterm-confirm-modal--warning .tea-dialog__messagetitle {
  line-height: 20px;
}
.orcaterm-confirm-modal--warning .tea-dialog__messagetext {
  color: var(--ot-font-color-secondary) !important;
  margin-top: 10px !important;
}
.orcaterm-confirm-modal--warning .tea-icon-warning {
  width: 20px !important;
  height: 20px !important;
}
.orcaterm-import-script-list .tea-table__tr--blank-new td {
  overflow: unset !important;
}
ul.command-list li.command-item .command-info .name {
  flex: unset !important;
}
ul.command-list li.command-item .command-info .remark {
  flex-shrink: 0;
}
ul.command-list li.command-item .command-info .remark-box {
  color: var(--ot-font-color-placeholder);
  display: inline-flex;
}
.orcaterm-command-bubble .command-list,
.orcaterm-right-command .command-list {
  scroll-behavior: smooth;
}
.orcaterm-command-bubble .command-list .command-item.active,
.orcaterm-right-command .command-list .command-item.active {
  border-radius: 4px;
  background-color: var(--ot-background-color-25);
}
.orcaterm-command-bubble .command-list .command-item.is-disabled,
.orcaterm-right-command .command-list .command-item.is-disabled {
  cursor: not-allowed;
  opacity: 0.5;
}
/*# sourceMappingURL=style.css.map */
/* 拖拽线 */
.ot-resize-container {
  --line-size: 2px;
  --hover-line-scale: 2;
  display: flex;
  position: relative;
  box-sizing: border-box;
}
.ot-resize-container.horizontal {
  height: 100%;
  max-width: 100%;
}
.ot-resize-container.horizontal .ot-resize-line {
  cursor: col-resize;
  width: var(--line-size);
  height: 100%;
}
.ot-resize-container.horizontal .ot-resize-line:hover {
  transform: scaleX(var(--hover-line-scale));
}
.ot-resize-container.vertical {
  width: 100%;
  flex-direction: column;
  max-height: 100%;
}
.ot-resize-container.vertical .ot-resize-line {
  cursor: row-resize;
  height: var(--line-size);
  width: 100%;
}
.ot-resize-container.vertical .ot-resize-line:hover {
  transform: scaleY(var(--hover-line-scale));
}
.ot-resize-container .ot-resize-target {
  position: relative;
  flex-shrink: 1;
  max-height: 100%;
}
.ot-resize-container .ot-resize-line {
  display: none;
  position: relative;
  cursor: ew-resize;
  user-select: none;
  background-color: var(--ot-background-color-3);
  flex-shrink: 0;
  transition: transform 0.3s ease-in;
}
.ot-resize-container .ot-resize-line:hover {
  background-color: var(--ot-font-color-1);
}
.ot-resize-container .ot-resize-line.visible {
  display: block;
}
/*# sourceMappingURL=style.css.map */
/* ══════════════════════════════════════════════════════════════════════════
   tmux「新增会话」内联输入行（`.np-tmux-create`）。

   形态（按交互稿）：**只有一个输入框**，没有确认 / 取消按钮 ——
   回车或失焦即提交、失焦且为空即取消、回车且为空则输入框标红（见组件 doc）。

   样式的**唯一来源**为文件管理器「修改文件名」的行内编辑：
     - DOM 结构：client/packages/orcaterm/components/file/EditFileName.tsx
     - 声明原文：@tencent/tea-style-sftp-sdk/index.css

   为什么不能直接复用 FM 的类名：FM 的声明**全部**被祖先链
   `.sftp-ui-table.tea-table .tea-table__body .sftp-ui-table__name-col.is-edit`
   限定（见 index.css 原文），tmux 列表不在该 DOM 链下 → 挂
   `.sftp-ui-table__operation-edit` / `-btns` / `-edit-btn-item` 拿不到任何声明。
   故按原文把输入框那几条声明**搬**成 tmux 自有类名（映射见下），并放在本组件同目录下
   由组件自己 import —— 三处调用方（连接管理器 hover 操作条 / 常驻面板 / desktop header
   ∨ 浮层本地 tmux 区块）跨包跨 chunk，只有随组件走才能保证三处都命中同一份样式。

   类名映射（FM 原文 → 本组）：
     .sftp-ui-table__operation-edit .tea-input → .np-tmux-create__input
   FM 的 `-btns` / `-edit-btn-item`（确认 / 取消两个图标钮）**已按交互稿去掉**，
   故不再映射。

   **有意不搬**（FM 那条是表格行内的 absolute 浮层，tmux 列表是流式布局）：
     - `position:absolute; left:0; top:calc(50% - 15px); z-index:1` → 正常文档流
     - `.tea-input { width:200px }` → 宽度自适应（width:100%）
   色彩 token（--ot-top-background-color-1 / --ot-background-color-2 /
   --ot-background-color-3）逐字保留；聚焦蓝框 / 错误红框为交互稿新增（本特性色值：
   错误红 #e5455b 与 tmuxSessions.less 同源）。
   ══════════════════════════════════════════════════════════════════════════ */
.np-tmux-create {
  display: flex;
  flex-direction: column;
  gap: 2px;
  /* Figma：输入框宽度与 tmux 会话行对齐（左 36 缩进、右 8，即 .np-srow 的内距） */
  padding: 2px 8px 4px 36px;
  /* FM 原文：`.tea-input{width:200px;background-color:var(--ot-top-background-color-1)!important}`
     宽度改自适应：width:100% + min-width:0，覆盖 tea 默认宽度。
     背景色保留 !important（与 FM 同因）：tea 自有 `.tea-input` / `.tea-input.solid` 与
     主题注入规则的背景声明同/更高特异性，不加会被压过。
     tea `Input` 的 className 与 `tea-input` 落在**同一个** <input> 元素上。 */
  /* 提交在飞：输入框降透明度（替代原两个按钮的 disabled 视觉反馈） */
  /* 校验失败 / 提交失败文案行（FM 无此元素——FM 走 drawerMessage 浮层提示；
     tmux 列表贴近输入框，沿用「输入行下方一行错误」的行内提示语义，
     色值沿用本特性既有错误红 #e5455b，见 tmuxSessions.less） */
}
.np-tmux-create__input {
  /* tea 自带 `.tea-input` 的 width:200px / height:30px / padding / font-size，以及主题
       运行时注入的规则，都是同/更高特异性 → 普通声明会被静默压过（实测：宽度停在 200px、
       字号停在 12px，撑不满列表行）。故这几条统一 !important（与本块 background-color 同因）。 */
  width: 100% !important;
  min-width: 0;
  height: 26px !important;
  padding: 0 6px !important;
  border-radius: 3px !important;
  font-size: 13px !important;
  background-color: var(--ot-top-background-color-1) !important;
  /* FM 原文：`.…:hover{background-color:var(--ot-background-color-2)!important;border-color:var(--ot-background-color-3)}` */
  /* 聚焦蓝框沿用 tea 自带 `.tea-input:focus`（与本仓其它输入框同款，不再覆盖）。 */
  /* 回车且为空 / 校验失败：红框（交互稿：回车时为空用红框表示错误）。
       选择器写成 `.…__input.is-error` + `:focus`（特异性 (0,3,0)）+ !important ——
       只写 `.…__input.is-error`（(0,2,0)）会与 tea 的聚焦态规则打平，
       实测「空 Enter」后仍是蓝框（输入框此时仍在焦点中）。 */
}
.np-tmux-create__input:hover {
  background-color: var(--ot-background-color-2) !important;
  border-color: var(--ot-background-color-3);
}
.np-tmux-create__input.is-error,
.np-tmux-create__input.is-error:focus {
  border-color: #e5455b !important;
}
.np-tmux-create.is-submitting .np-tmux-create__input {
  opacity: 0.65;
}
.np-tmux-create__error {
  padding-left: 2px;
  font-size: 11px;
  line-height: 1.5;
  color: #e5455b;
}
/*# sourceMappingURL=tmuxCreateSessionInline.css.map */
.tmux-session-menu-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.tmux-session-menu-item svg {
  flex-shrink: 0;
}
/* ══════════════════════════════════════════════════════════════════════════
   tmux 展开区根容器（唯一一套实现）：
   - .tmux-session-panel：常驻管理面板（TmuxSessionPanel；老入口「会话恢复」程序化
     展开亦走它）
   - .tmux-hover-entry：hover「打开托管」操作条（TmuxHoverEntry）
   两条链路的内部 DOM（表头 / 会话行 / 乐观行 / 空态 / 状态条）由 tmuxSessions.tsx 的
   共享 helper 唯一产出；元素同时携带 np-*（canonical，样式唯一来源＝下方共享块）与
   tmux-session-panel__*（e2e / 单测定位别名，不带样式）两套类名——历史上两套标记各自
   演化出两种视觉（用户反馈 bug），勿再拆成两套。
   ══════════════════════════════════════════════════════════════════════════ */
.tmux-session-panel,
.tmux-hover-entry {
  margin: 0;
  padding: 6px;
  border-radius: 4px;
}
.tmux-session-panel::before,
.tmux-hover-entry::before {
  content: '';
  display: block;
  height: 1px;
  /* ⚠️ 不能用 var(--OT-Color-Border-Gray-Primary)：暗色档它 = --cp-color-grey-17
       = #2c2c2c，而 tmux 展开时连接项卡片化背景 --OT-Color-Base-Fill-Primary-Hover
       暗色档同样是 #2c2c2c —— 分隔线与卡片底完全同色、必然不可见（用户反馈，
       2026-09-23 曾按「与 .np-sep 同源」改成该 token 后复发）。改用中灰半透明：
       明暗两档卡片底（#f1f2f5 / #2c2c2c）上都呈可见浅灰线（同 .lv-spin 边框做法）。 */
  background: rgba(128, 128, 128, 0.35);
  margin: 0 0 6px 18px;
}
/* 收起态（面板 is-collapsed / hover is-folded，均打在根节点）：只收列表体、表头保留。
   status / list 兜底 display:none（面板收起态**仍挂载**列表体，有意不用渲染门）；
   `.np-tmux-create`（内联新建输入行）**必须**用 CSS 而非渲染门：组件卸载会丢用户
   已输入未提交的会话名。 */
.tmux-session-panel.is-collapsed .tmux-session-panel__status,
.tmux-hover-entry.is-folded .tmux-session-panel__status,
.tmux-session-panel.is-collapsed .tmux-session-panel__list,
.tmux-hover-entry.is-folded .tmux-session-panel__list,
.tmux-session-panel.is-collapsed .np-tmux-create,
.tmux-hover-entry.is-folded .np-tmux-create {
  display: none;
}
/* 收起态 chevron：由「∨」转成「＞」（点它展开）。
   同时归零展开态的 top:-1px 上移校正 —— 折叠态尖朝右、笔画垂直对称天然居中。 */
.tmux-session-panel.is-collapsed .np-tmux-head-chevron,
.tmux-hover-entry.is-folded .np-tmux-head-chevron {
  top: 0;
  transform: rotate(-45deg);
}
/* ── 状态条（loading / empty / installing / installed / 版本过低 / 获取失败）──
   先定义（后被 .np-tmux-empty 覆盖 padding）：空态元素另携带 .np-tmux-empty。 */
.tmux-hover-entry,
.tmux-session-panel {
  /* 引导卡片警示色（.tmux-guide 的 ⚠ 前景） */
  --tmux-warn: #e5a84b;
  /* loading 态：spinner 与连接配置图标左对齐（缩进 18，同「＋ 打开托管」行），
     文案「加载中」。`v2-strip is-loading` 是 JSX 上的 e2e 标记类，此处复用为变体钩子 */
  /* 状态条内 CSS 转圈：白色（交互稿 loading 态。tea Loading 的配色样式运行时注入、
     无法染白，故不用）；复用文件末尾 tmux-hover-entry-spin 动画 */
  /* 版本过低 / 获取失败提示条内的「重试」 */
}
.tmux-hover-entry .tmux-session-panel__status,
.tmux-session-panel .tmux-session-panel__status {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 28px;
  /* 文案与 title/列表项左缘对齐（同 36 缩进） */
  padding: 2px 8px 2px 36px;
}
.tmux-hover-entry .tmux-session-panel__status.v2-strip.is-loading,
.tmux-session-panel .tmux-session-panel__status.v2-strip.is-loading {
  padding: 2px 8px 2px 18px;
}
.tmux-hover-entry .tmux-spin,
.tmux-session-panel .tmux-spin {
  display: inline-block;
  flex-shrink: 0;
  width: 12px;
  height: 12px;
  border: 1.4px solid rgba(255, 255, 255, 0.3);
  border-top-color: #fff;
  border-radius: 50%;
  animation: tmux-hover-entry-spin 0.7s linear infinite;
}
.tmux-hover-entry .tmux-session-panel__status-text,
.tmux-session-panel .tmux-session-panel__status-text {
  font-size: 12px;
  color: var(--ot-font-color-secondary);
}
.tmux-hover-entry .tmux-session-panel__status-text--error,
.tmux-session-panel .tmux-session-panel__status-text--error {
  color: #e5455b;
}
.tmux-hover-entry .tmux-session-panel__status-text--warn,
.tmux-session-panel .tmux-session-panel__status-text--warn {
  color: var(--tmux-warn);
}
.tmux-hover-entry .tmux-session-panel__retry,
.tmux-session-panel .tmux-session-panel__retry {
  margin-left: auto;
  flex-shrink: 0;
  padding: 0 4px;
  border: none;
  background: transparent;
  font-size: 12px;
  color: #006eff;
  cursor: pointer;
}
.tmux-hover-entry .tmux-session-panel__retry:hover,
.tmux-session-panel .tmux-session-panel__retry:hover {
  text-decoration: underline;
}
/* ══════════════════════════════════════════════════════════════════════════
   共享列表样式（canonical np-*，视觉 = 用户确认的第一种样式）：样式唯一来源，
   两条链路（.tmux-hover-entry / .tmux-session-panel）同一份。表头 / 会话行 /
   「＋ 打开托管」行 / 空态 / 乐观行 / 删除 / 编辑规则逐字对齐交互稿，勿在单条
   链路里覆写。色彩：语义前景 token（--ot-font-color-*）+ 警示琥珀 #e5a84b /
   错误红 #e5455b；「＋ 打开托管」行主色 #339CFF。
   ══════════════════════════════════════════════════════════════════════════ */
.tmux-hover-entry,
.tmux-session-panel {
  /* 列表头部（标题 · 数量 + chevron + ＋）：交互稿「托管会话 · N ∨」。
     点表头（非＋区域）收起 / 再展开列表体 → 收起后**表头保留**（只收掉列表体，不再换成
     `.np-tmux-reopen` 那一行「＋ 打开托管」）；收起态类名 `is-folded` 打在**根节点**
     （见文件开头 `.tmux-hover-entry.is-folded .np-tmux-create` 与同处的 chevron 旋转规则）。 */
  /* 会话行（名称 + 状态 + 删除）：Figma 会话行 padding 4px 8px 4px 36px / h32 / radius 4 */
  /* 空态文案（empty：0 会话）——与常驻面板空态「暂无托管会话」逐字同款。
     历史：这里原先渲染「＋ 打开托管」行（empty → 常驻面板入口），用户反馈
     「删掉最后一个会话后列表里冒出『打开托管』按钮」（读起来像托管还没打开）→ 改为直白文案；
     该文案现在只属于 idle（未探测的入口行，类名 .np-srow--open）。 */
  /* 「＋ 打开托管」行（idle 首次入口 / 引导卡片被 ✕ 关掉后的重开行，同一份共享渲染
     TmuxOpenRow）：元素同时携带 .np-srow/.np-srow--open（行布局与 --open 缩进）与本类
     （button 原生样式复位，enabled/disabled 两态都在这里收口）。 */
  /* 乐观行「创建中」（用户确认后立即插入，真实行到达即去重移除）：与 .np-srow 同款排布，
     但**不可点击**（cursor: default、无 hover 高亮——会话尚不存在，点进去无意义）且
     **无删除钮**（.np-del 不渲染）。类名与 .np-srow 有意不共用：既有 e2e 以
     `.np-srow:not(.np-srow--open)` 判 ready 态并按计数断言（NS-04 / waitForHoverSettled），
     共用会在创建在飞窗口内污染这些判据。 */
  /* 删除按钮：交互稿 .np-del */
}
.tmux-hover-entry .np-tmux-head,
.tmux-session-panel .np-tmux-head {
  display: flex;
  align-items: center;
  /* 本仓无全局 border-box（各处均局部声明，见 style/*.less）→ 显式声明，
       否则 min-height 会加在内容区上（真机实测 32 + 上下 padding 12 = 44） */
  box-sizing: border-box;
  gap: 8px;
  min-height: 32px;
  /* 左缩进与 IP 文字对齐：IP.x（相对 item）= inner 左距 20 + 图标 16 + 间距 8 = 44，
       故 4（卡片）+ 6（tmux 区）+ 34 = 44（Figma：title 与 IP 同一起点） */
  padding: 6px 8px 6px 34px;
  border-radius: 4px;
  /* 文字与 chevron（border 用 currentColor）同色：对齐连接配置 ip 行的次级文字色 */
  color: var(--OT-Color-Base-Text-Secondary);
  cursor: pointer;
  user-select: none;
  /* 展开（列表可见）指向下；折叠指向右（旋转规则在根节点层级，见文件开头）。
       位置在数量右侧（交互稿「托管会话 · N ∨」，DOM 顺序 title → count → chevron）。 */
  /* 注：折叠态 chevron 旋转规则写在**根节点**层级（`.tmux-hover-entry.is-folded
       .np-tmux-head-chevron`，见文件开头），不能写在这里——`is-folded` 打在根节点上，
       在此嵌套层用 `&.is-folded &-chevron` 会编译成要求再嵌一层 .tmux-hover-entry 的死选择器。
       （历史坑备忘：嵌套里必须写完整类名 `.np-tmux-head-chevron`，用 `&-chevron` 会拼成
       不存在的类；F1p5c「选择器嵌套注意编译后形态」同型坑，改后须用项目 lessc 验产物。） */
}
.tmux-hover-entry .np-tmux-head-chevron,
.tmux-session-panel .np-tmux-head-chevron {
  display: inline-block;
  flex-shrink: 0;
  /* 垂直校正只作用于展开态（尖朝下）：chevron 由「5×5 内容盒 + 右/下边框」
         旋转 45° 得到，flex 只居中盒子几何中心，而展开态可见笔画重心偏下（尖端在
         下部）→ 视觉偏低，需上移 -1px。折叠态（尖朝右）笔画垂直对称、天然居中，
         top 归零（见文件开头 .is-collapsed/.is-folded 的旋转规则处）。
         用 position:relative + top 而非 translate：不与两态 transform 耦合。
         （口径与 header 浮层侧 App.less .nth-arrow 同款同步。） */
  position: relative;
  top: -1px;
  width: 5px;
  height: 5px;
  border-right: 1.4px solid currentColor;
  border-bottom: 1.4px solid currentColor;
  transform: rotate(45deg);
  transition: transform 0.15s ease;
}
.tmux-hover-entry .np-tmux-head-title,
.tmux-session-panel .np-tmux-head-title {
  /* 不伸缩：数量须紧跟在 title 右侧（与常驻面板 __head-toggle 内的形态一致）。
         旧 flex:1 会把 title 撑满整行、把 count 推到 header 最右（用户反馈 bug）。
         剩余空间由 ＋ 按钮的 margin-left:auto 吃掉，＋ 仍靠右。 */
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tmux-hover-entry .np-tmux-head-count,
.tmux-session-panel .np-tmux-head-count {
  /* 数量独立节点紧跟 title：不伸缩，不做占位。
         交互稿「托管会话 · N ∨」：title 与数量之间以「·」分隔（数量未知时本节点
         不渲染，点号随之消失） */
  flex-shrink: 0;
  font-size: 12px;
}
.tmux-hover-entry .np-tmux-head-count::before,
.tmux-session-panel .np-tmux-head-count::before {
  content: '·';
  margin-right: 6px;
}
.tmux-hover-entry .np-tmux-head-add,
.tmux-session-panel .np-tmux-head-add {
  display: flex;
  align-items: center;
  justify-content: center;
  /* 吃掉 title/count 之后的剩余空间，使 ＋ 靠右（title 已不再 flex:1 占位） */
  margin-left: auto;
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  padding: 0;
  border: none;
  border-radius: 4px;
  background: transparent;
  /* Figma 标题行「＋」20×20 —— 次级前景 token（原硬编码 rgba(255,255,255,.64)，
         白色主题下不可见；口径与 header 浮层侧 App.less .nth-new 同步） */
  color: var(--ot-font-color-secondary);
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
}
.tmux-hover-entry .np-tmux-head-add:hover,
.tmux-session-panel .np-tmux-head-add:hover {
  /* 与删除/编辑钮 hover 高亮色统一 */
  background: var(--ot-top-background-color-1);
}
.tmux-hover-entry .np-srow,
.tmux-session-panel .np-srow {
  display: flex;
  align-items: center;
  box-sizing: border-box;
  gap: 8px;
  min-height: 28px;
  padding: 4px 8px 4px 36px;
  border-radius: 4px;
  font-size: 12px;
  color: var(--ot-font-color-primary);
  cursor: pointer;
  /* 「打开托管」按钮：Figma「打开托管」行 —— 主色 #339CFF，缩进/内距按设计稿单独覆盖
       （设计稿该行为 padding 2px 4px 2px 18px，与会话行的 4px 8px 4px 36px 不同）。
       hover 无背景高亮（设计稿该行无 hover 底色）。
       disabled 态（非自动登录连接无已登录终端）见下方 .np-tmux-reopen.is-disabled ——
       该行同时携带 .np-tmux-reopen，由它统一负责按钮复位与 disabled。 */
}
.tmux-hover-entry .np-srow:hover,
.tmux-session-panel .np-srow:hover {
  background: var(--ot-top-background-color-1);
}
.tmux-hover-entry .np-srow .nm,
.tmux-session-panel .np-srow .nm {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tmux-hover-entry .np-srow .st,
.tmux-session-panel .np-srow .st {
  margin-left: auto;
  flex-shrink: 0;
  font-size: 10px;
  color: var(--ot-font-color-secondary);
}
.tmux-hover-entry .np-srow .plus,
.tmux-session-panel .np-srow .plus {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 12px;
  line-height: 1;
  /* Figma 入口图标 ICON/Add 16×16（原为文本「＋」） */
}
.tmux-hover-entry .np-srow .plus svg,
.tmux-session-panel .np-srow .plus svg {
  width: 16px;
  height: 16px;
}
.tmux-hover-entry .np-srow--open,
.tmux-session-panel .np-srow--open {
  min-height: 0;
  padding: 2px 4px 2px 18px;
  color: #339cff;
  /* hover 无背景高亮 —— 必须显式 transparent：删掉本规则会落到全局
         button:hover（实测 #383838）上，出现灰色高亮 */
}
.tmux-hover-entry .np-srow--open:hover,
.tmux-session-panel .np-srow--open:hover {
  background: transparent;
}
.tmux-hover-entry .np-tmux-empty,
.tmux-session-panel .np-tmux-empty {
  /* 左缩进与标题行一致（卡片 4 + tmux 区 6 + 34 = 44，对齐 IP/title 起点） */
  padding: 4px 8px 4px 34px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--ot-font-color-secondary);
}
.tmux-hover-entry .np-tmux-reopen,
.tmux-session-panel .np-tmux-reopen {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 2px 4px 2px 18px;
  border: none;
  border-radius: 4px;
  background: transparent;
  font: inherit;
  font-size: 12px;
  text-align: left;
  /* Figma「打开托管」行主色 #339CFF（原 #82bcff 为旧交互稿）；hover 无背景高亮
       （显式 transparent 压全局 button:hover 的 #383838） */
  color: #339cff;
  cursor: pointer;
}
.tmux-hover-entry .np-tmux-reopen:hover,
.tmux-session-panel .np-tmux-reopen:hover {
  background: transparent;
}
.tmux-hover-entry .np-tmux-reopen.is-disabled,
.tmux-session-panel .np-tmux-reopen.is-disabled {
  /* Figma Disable 态：品牌蓝 36% 不透明度（实测 #264C70 = #339CFF @ .36 on #1F1F1F） */
  color: rgba(51, 156, 255, 0.36);
  cursor: not-allowed;
}
.tmux-hover-entry .np-tmux-reopen.is-disabled:hover,
.tmux-session-panel .np-tmux-reopen.is-disabled:hover {
  background: transparent;
}
.tmux-hover-entry .np-tmux-reopen .plus,
.tmux-session-panel .np-tmux-reopen .plus {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  font-size: 12px;
  line-height: 1;
  /* Figma 入口图标 ICON/Add 16×16（原为文本「＋」） */
}
.tmux-hover-entry .np-tmux-reopen .plus svg,
.tmux-session-panel .np-tmux-reopen .plus svg {
  width: 16px;
  height: 16px;
}
.tmux-hover-entry .np-tmux-pending-row,
.tmux-session-panel .np-tmux-pending-row {
  display: flex;
  align-items: center;
  box-sizing: border-box;
  gap: 8px;
  min-height: 32px;
  padding: 4px 8px 4px 36px;
  border-radius: 4px;
  font-size: 12px;
  color: var(--ot-font-color-primary);
  cursor: default;
}
.tmux-hover-entry .np-tmux-pending-row .nm,
.tmux-session-panel .np-tmux-pending-row .nm {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  opacity: 0.75;
}
.tmux-hover-entry .np-tmux-pending-row .st,
.tmux-session-panel .np-tmux-pending-row .st {
  margin-left: auto;
  flex-shrink: 0;
  font-size: 10px;
  color: var(--ot-font-color-secondary);
}
.tmux-hover-entry .np-edit,
.tmux-session-panel .np-edit {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  min-width: 20px;
  padding: 0;
  border: none;
  border-radius: 4px;
  background: transparent;
  color: var(--ot-font-color-secondary);
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
  /* 收紧与删除钮的间隔：gap 8px - 4px = 4px */
  margin-left: -4px;
}
.tmux-hover-entry .np-edit svg,
.tmux-session-panel .np-edit svg {
  width: 12px;
  height: 12px;
  flex-shrink: 0;
}
.tmux-hover-entry .np-edit:hover,
.tmux-session-panel .np-edit:hover {
  background: var(--ot-top-background-color-1);
  color: var(--ot-font-color-primary);
}
.tmux-hover-entry .np-del,
.tmux-session-panel .np-del {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  min-width: 20px;
  padding: 0;
  border: none;
  border-radius: 4px;
  background: transparent;
  color: var(--ot-font-color-secondary);
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
  /* 删除钮右移 2px（与名称拉开），与编辑钮间隔由 8px→4px */
  margin-left: 2px;
}
.tmux-hover-entry .np-del svg,
.tmux-session-panel .np-del svg {
  width: 12px;
  height: 12px;
  flex-shrink: 0;
}
.tmux-hover-entry .np-del:hover,
.tmux-session-panel .np-del:hover {
  /* hover 背景统一高亮（与编辑钮同色），不再用红色底；文字保留警示红语义 */
  background: var(--ot-top-background-color-1);
  color: #e5455b;
}
/* ══════════════════════════════════════════════════════════════════════════
   未安装 tmux 安装引导卡片（对齐交互稿版本二 `.tmux-guide`）。

   两套链路（TmuxHoverEntry / TmuxSessionPanel）共用同一份 DOM（TmuxNotInstalledGuide）。
   类名只在本特性内使用（全仓检索仅本组件 + e2e spec），顶层定义不污染其它模块。
   色彩：`--tmux-warn` 语义变量已随上方共享块在两个根容器档位定义（.tmux-guide 均在
   根容器内部渲染）。
   ══════════════════════════════════════════════════════════════════════════ */
/* 旧交互稿 `.v2-strip` 提示条样式已并入共享块 `.tmux-session-panel__status`；
   `v2-strip`（is-loading / warn / is-error）仅作为 e2e 状态标记类保留在 JSX 上（无样式）。 */
/* 未安装 tmux 引导卡片：交互稿 `.tmux-guide` + `.tg-head` / `.tg-x` / `.tg-body` /
   `.tg-actions`。内层类名逐字对齐 draft（原自造 `__head`/`__warn`/`__x`/`__body`/
   `__actions` 已弃）。
   注：`.tg-x` ✕ 关闭钮 = 关掉卡片（组件侧置 guideDismissed）→ 改出「＋ 打开托管」行，
   点那行重新探测（未安装则卡片回来）——故不是「关掉即无再入口」。 */
.tmux-guide {
  margin-top: 4px;
  padding: 10px 11px;
  border-radius: 8px;
  background: rgba(229, 168, 75, 0.07);
  border: 1px solid rgba(229, 168, 75, 0.3);
  /* ✕ 关闭钮（右上角）：margin-left:auto 推到行尾 */
}
.tmux-guide .tg-head {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--ot-font-color-primary);
}
.tmux-guide .tg-head .w {
  display: inline-flex;
  color: var(--tmux-warn);
}
.tmux-guide .tg-x {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  margin-left: auto;
  padding: 0;
  border: none;
  border-radius: 4px;
  background: transparent;
  color: var(--ot-font-color-secondary);
  cursor: pointer;
  flex-shrink: 0;
}
.tmux-guide .tg-x:hover {
  /* 主题 token（原 rgba(255,255,255,.08) 按暗底设计，亮色主题下不可见） */
  background: var(--ot-top-background-color-1);
  color: var(--ot-font-color-primary);
}
.tmux-guide .tg-body {
  margin-top: 5px;
  font-size: 12px;
  line-height: 1.6;
  color: var(--ot-font-color-secondary);
  /* Figma：「未安装 Tmux」加粗、主色白（其余文字保持次级色） */
}
.tmux-guide .tg-body .tg-em {
  font-weight: 600;
  color: var(--ot-font-color-primary);
}
.tmux-guide .tg-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 9px;
}
/* 引导卡片按钮：交互稿 `.tg-btn` / `.tg-btn.primary`（draft 用裸修饰类 primary） */
.tg-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  flex: 1 1 0;
  gap: 5px;
  min-height: 26px;
  padding: 3px 12px;
  border: none;
  border-radius: 8px;
  /* 次级按钮：主题 token 实底 + 主文字色（原「半透明白底 + 白字」按暗色卡片底设计，
     白色主题下白字不可见，用户反馈）；口径与 .np-edit/.np-del 的一致 */
  background: var(--ot-top-background-color-1);
  font-size: 12px;
  color: var(--ot-font-color-primary);
  cursor: pointer;
  /* 主按钮：Figma 实心 #1784EB（稿件全局变量 fill_b8681d79），白字 */
  /* loading 态：另一按钮 loading 时本按钮 disabled */
  /* loading 态按钮自身的样式不变，spinner 通过 .tg-spin 展示 */
}
.tg-btn:hover {
  background: var(--ot-background-color-2);
}
.tg-btn.primary {
  background: #1784eb;
  color: #fff;
}
.tg-btn.primary:hover {
  background: #3d97f3;
}
.tg-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.tg-btn:disabled:hover {
  background: var(--ot-top-background-color-1);
  /* 与常态同底（随主题） */
}
.tg-btn:disabled.primary:hover {
  background: #1784eb;
}
.tg-btn.is-loading {
  cursor: default;
  opacity: 1;
}
/* 引导卡片按钮内 spinner（与状态条内 Loading 同风格，尺寸缩小适配按钮） */
.tg-spin {
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 1.5px solid currentColor;
  border-top-color: transparent;
  border-radius: 50%;
  animation: tmux-hover-entry-spin 0.6s linear infinite;
  flex-shrink: 0;
}
/* 安装失败错误信息：红色字体展示在 body 下方 */
.tg-error {
  margin-top: 5px;
  font-size: 12px;
  line-height: 1.5;
  color: #e5455b;
  word-break: break-word;
}
@keyframes tmux-hover-entry-spin {
  to {
    transform: rotate(360deg);
  }
}
/* ══════════════════════════════════════════════════════════════════════════
   连接项底边 2px 边距（用户反馈：相邻配置项在 hover / 常驻卡片化态要有区分，
   否则两张卡片紧贴分不出边界）。base 的 height transition 不受 margin 影响。
   ══════════════════════════════════════════════════════════════════════════ */
.orcaterm-connect-configure-body .mine-server-list .mine-server-item {
  margin-bottom: 2px;
}
/* ══════════════════════════════════════════════════════════════════════════
   Figma 卡片化：tmux 区展开（hover 挂载 .tmux-hover-entry / 常驻 .tmux-session-panel）
   时，连接项整体成为一张圆角卡片，内含连接信息（两行）+ 分隔线 + tmux 区；原 hover
   底色（打在 __inner 上）退场。
   hover 背景与不支持 tmux 的连接（RDP 等，hover 高亮打在 __inner =
   var(--OT-Color-Base-Fill-Primary-Hover)）统一（用户反馈：两者 hover 底色不一致，
   以 RDP 原有为准）→ 卡片背景用同一 token，不再硬编码 #1F1F1F。
   :has() 需 Chrome 105+（web / 桌面端 Chromium 均满足）；
   .is-tmux-pinned 作为不支持 :has 环境的兜底（常驻态必带该 class）。
   ══════════════════════════════════════════════════════════════════════════ */
.orcaterm-connect-configure-body .mine-server-list .mine-server-item:has(> .tmux-hover-entry),
.orcaterm-connect-configure-body .mine-server-list .mine-server-item:has(> .tmux-session-panel),
.orcaterm-connect-configure-body .mine-server-list .mine-server-item.is-tmux-pinned {
  background: var(--OT-Color-Base-Fill-Primary-Hover);
  border-radius: 4px;
  /* 左右留白与普通 hover 高亮对齐（用户反馈：卡片化后贴边）。base 里 hover 高亮打在
     __inner 上，被 item 自身 `padding: 0 4px`（tea 包 node_modules，不可改）内缩出左右
     各 4px 留白；卡片背景打在 item 本身会连 padding box 一起涂满 → 贴边。此处用
     `margin: 0 4px` 等量替换 item 的水平 padding（padding 归零）——内容绝对位置不变
     （44px 缩进口径等全部成立），仅卡片盒左右各内缩 4px；width:auto 抵消 base 的
     width:100%（否则 + 8px margin 溢出）。注意 margin-bottom 2px 在下方通用规则，
     此处 margin 复写会丢掉它 → 显式补回。 */
  margin: 0 4px 2px;
  padding: 0;
  width: auto;
  /* 原 hover 底色在 __inner（来自运行时注入的高特异选择器）——卡片化后由整卡
     承担，内层退场。背景透明无布局副作用，作用面仅 tmux 展开态，!important 安全。 */
}
.orcaterm-connect-configure-body .mine-server-list .mine-server-item:has(> .tmux-hover-entry) > .mine-server-item__inner,
.orcaterm-connect-configure-body .mine-server-list .mine-server-item:has(> .tmux-session-panel) > .mine-server-item__inner,
.orcaterm-connect-configure-body .mine-server-list .mine-server-item.is-tmux-pinned > .mine-server-item__inner {
  background: transparent !important;
}
/* ══════════════════════════════════════════════════════════════════════════
   老入口（会话恢复）跳转高亮 + tip：跳转展开消费完成后点亮对应连接项（黄色描边 +
   右侧迁移提示），点击页面任意处消失（index.tsx 全局 click 监听置 spotlightId）。
   描边用 outline：不占布局，避免 1px 边框挤压内容导致行高抖动；Chrome 跟随圆角。
   ══════════════════════════════════════════════════════════════════════════ */
.mine-server-item.is-tmux-spotlight {
  position: relative;
  outline: 1px solid #ffdd99;
  outline-offset: -1px;
  /* 闪烁 3 次后长亮（用户要求）：keyframes 在 50% 处把描边打透明再回来，
     跑 3 轮后动画结束，回落到基础实色描边 → 长亮。keyframes 全局同名，
     与 App.less 的 `.np-tmux-block.is-tmux-spotlight` 共用同一份定义。 */
  animation: tmux-spotlight-blink 0.45s ease-in-out 3;
}
@keyframes tmux-spotlight-blink {
  0%,
  100% {
    outline-color: #ffdd99;
  }
  50% {
    outline-color: transparent;
  }
}
.tmux-spotlight-tip {
  position: absolute;
  left: calc(100% + 8px);
  top: 56px;
  width: 300px;
  padding: 8px 12px;
  box-sizing: border-box;
  background: #1f1f1f;
  border: 1px solid #4b4b4b;
  border-radius: 4px;
  box-shadow: 0 4px 16px 2px rgba(0, 0, 0, 0.08);
  font-size: 12px;
  line-height: 20px;
  color: rgba(255, 255, 255, 0.92);
  z-index: 10;
  pointer-events: none;
  /* 左缘向左小箭头（指向左侧高亮卡片；border-bottom+left 的 BL 角经 rotate(45deg) 转到左侧） */
}
.tmux-spotlight-tip::before {
  content: '';
  position: absolute;
  left: -4.5px;
  top: 50%;
  margin-top: -4px;
  width: 8px;
  height: 8px;
  background: #1f1f1f;
  border-bottom: 1px solid #4b4b4b;
  border-left: 1px solid #4b4b4b;
  transform: rotate(45deg);
}
/* 变体：tip 位于浮层**左侧**、箭头朝右指向浮层内高亮区块（desktop 本地 tmux 入口链路，
   见 ToolBoxButton.tsx 的 LocalTmuxMigrateTip）。箭头翻到右缘：border-top+right 的
   TR 角经 rotate(45deg) 转到右侧。宽度须与组件内 TIP_WIDTH 常量一致。 */
.tmux-spotlight-tip--right {
  width: 232px;
  /* 终端区/tea 浮层均为高 z-index fixed/absolute 层，tip 须压过页面所有业务层 */
  z-index: 9999;
}
.tmux-spotlight-tip--right::before {
  left: auto;
  right: -4.5px;
  border-bottom: none;
  border-left: none;
  border-top: 1px solid #4b4b4b;
  border-right: 1px solid #4b4b4b;
}
/* ══════════════════════════════════════════════════════════════════════════
   R3：连接项信息随常驻。

   本连接的 tmux 列表处于常驻状态时（hover 列表展开被钉住 / 常驻管理面板展开），
   连接项上的 `ip | 连接协议名`（.mine-server-item__footer）也常驻显示，不随鼠标
   移出而隐藏；非常驻时恢复 base 样式的「hover / is-actived 才显示」。

   base 规则来自第三方包 @tencent/tea-style-orcaterm（node_modules，不可改）：
     .orcaterm-connect-configure-body .mine-server-list .mine-server-item .mine-server-item__footer { opacity: 0 }
     …:hover .…__footer, ….is-actived .…__footer { opacity: 1 }
   base 把 footer（ip|协议名）/ __text（ping 延迟）/ .tea-btn.more-btn（更多）当**同一个
   hover 显隐组**处理（同一条选择器列表），故此处整组覆盖——只覆盖一半会出现「信息行亮了、
   旁边两处还是暗的」半亮破图。特异性 (0,7,0) > base (0,4,0)，无需 !important。
   注意：less 嵌套 `&-suffix` 会编译成死选择器，此处一律写完整类名（选择器仍是普通
   后代选择器，.orcaterm-connect-configure-body 为祖先容器类，非本组件局部）。 */
.orcaterm-connect-configure-body .mine-server-list .mine-server-item.is-tmux-pinned .mine-server-item__inner .mine-server-item__bd .mine-server-item__footer,
.orcaterm-connect-configure-body .mine-server-list .mine-server-item.is-tmux-pinned .mine-server-item__inner .mine-server-item__text,
.orcaterm-connect-configure-body .mine-server-list .mine-server-item.is-tmux-pinned .mine-server-item__inner .tea-btn.more-btn {
  opacity: 1;
}
/*# sourceMappingURL=tmuxSessions.css.map */
/**
 * 连接配置列表「更多」下拉菜单（boxClassName="mine-server-item__dropdown-box"）。
 *
 * 背景：tea 的 List type="option" 对每一项都有
 *   `.tea-list--option > li { white-space: nowrap; overflow: hidden; text-overflow: ellipsis }`
 * 一旦容器宽度装不下文案就会被截断。这个菜单原来的宽度下限只有 108px，
 * 减去容器 padding(4×2) 与 li padding(12×2) 后内容区仅 ≈76px，而
 * 「添加到 AI 对话」约 82px，于是被截成「添加到 AI …」。
 *
 * 修法：宽度改由内容决定，并保留一个观感下限与一个兜底上限。
 *   width: max-content → 后续再加更长的菜单项也不会被截断
 *   min-width          → 短菜单（如仅「登录 / 删除」）不至于窄得不像下拉
 *   max-width          → 异常长文案仍走 ellipsis，避免菜单宽到离谱
 *
 * 选择器带 .tea-dropdown-box 是为了压过同名的既有规则（该下拉通过 portal
 * 渲染到 #tea-overlay-root，无法用祖先选择器限定作用域），!important 则保证
 * 不受样式打包顺序影响。
 */
.tea-dropdown-box.mine-server-item__dropdown-box {
  min-width: 128px !important;
}
/*# sourceMappingURL=index.css.map */
.ot-login-loading-more {
  position: absolute;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  bottom: -30px;
  height: 30px;
  transition: bottom 0.3s linear;
}
.ot-login-loading-more.loading {
  bottom: 0;
}
/*# sourceMappingURL=style.css.map */
@keyframes ot-pane-zoom-enter {
  from {
    opacity: 0;
    transform: scale(0.96);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes ot-pane-zoom-exit {
  from {
    opacity: 1;
    transform: scale(1);
  }
  to {
    opacity: 0;
    transform: scale(0.6);
  }
}
@keyframes ot-pane-backdrop-exit {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
:root {
  --ot-split-pane-min-width: 100px;
  --ot-split-pane-min-height: 50px;
  --ot-split-pane-header-height: 26px;
  --ot-pane-zoom-inset: 20px;
  --ot-pane-bg: #000000;
  --ot-pane-box-bg: #141414;
  --ot-pane-border-active-color: #06A8FF;
  --ot-pane-border-color: rgba(255, 255, 255, 0.2);
}
[theme=light],
[theme=light] :root {
  --ot-pane-bg: #ffffff;
  --ot-pane-box-bg: #f1f2f5;
  --ot-pane-border-color: rgba(0, 0, 0, 0.08);
}
.orcaterm-split-view-container {
  height: 100%;
  position: relative;
  width: 100%;
  white-space: nowrap;
  overflow: hidden;
}
.orcaterm-split-view {
  min-width: var(--ot-split-pane-min-width);
  min-height: var(--ot-split-pane-min-height);
  display: flex;
  flex-direction: column;
  box-sizing: border-box;
}
.orcaterm-split-view.is-agent-mode {
  --ot-pane-border-active-color: #847DFD;
}
.orcaterm-split-view__header {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: var(--ot-split-pane-header-height, 32px);
  padding: 4px 12px 0 12px;
  cursor: default;
  overflow: hidden;
  box-sizing: border-box;
}
.orcaterm-split-view__header-drag-handle {
  display: flex;
  align-items: center;
  flex: 1 1 auto;
  min-width: 0;
  height: 100%;
  cursor: grab;
}
.orcaterm-split-view__header-drag-handle:active {
  cursor: grabbing;
}
.orcaterm-split-view__header:active .orcaterm-split-view__header-drag-handle {
  cursor: grabbing;
}
.orcaterm-split-view__header-text {
  color: var(--ot-font-color-secondary);
  font-size: 12px;
  font-weight: 400;
  line-height: var(--ot-split-pane-header-height, 32px);
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.orcaterm-split-view__header-text .ruyi-icon {
  color: var(--ot-font-color-secondary);
  flex-shrink: 0;
}
.orcaterm-split-view__header-oper {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: default;
  transition: opacity 0.3s ease-in-out;
  color: var(--ot-font-color-primary);
  height: 100%;
}
.orcaterm-split-view__header-oper .ruyi-icon,
.orcaterm-split-view__header-oper svg {
  color: inherit;
  fill: currentColor;
  width: 14px;
  height: 14px;
}
.orcaterm-split-view__header-oper .orcaterm-header__item {
  width: 20px;
  height: 20px;
  min-width: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ot-font-color-primary);
  border-radius: 4px;
  cursor: pointer;
}
.orcaterm-split-view__header-oper .orcaterm-header__item:hover {
  background-color: var(--ot-top-background-color-1);
}
.orcaterm-split-view__header-oper .orcaterm-header__item .ruyi-icon,
.orcaterm-split-view__header-oper .orcaterm-header__item svg {
  color: inherit;
  fill: currentColor;
  width: 14px;
  height: 14px;
  flex-shrink: 0;
}
.orcaterm-split-view__header-oper .orcaterm-header__item.is-disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.orcaterm-split-view__header-oper .orcaterm-header__item.is-disabled:hover {
  background-color: transparent;
}
.orcaterm-split-view__header-oper .tea-btn.tea-btn--icon.icon-btn.no-border {
  width: 20px;
  height: 20px;
  min-width: 20px;
  padding: 0 !important;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ot-font-color-primary);
  border-radius: 4px;
}
.orcaterm-split-view__header-oper .tea-btn.tea-btn--icon.icon-btn.no-border:hover {
  background-color: var(--ot-top-background-color-1);
}
.orcaterm-split-view__header-oper .tea-btn.tea-btn--icon.icon-btn.no-border .ruyi-icon,
.orcaterm-split-view__header-oper .tea-btn.tea-btn--icon.icon-btn.no-border svg {
  width: 14px;
  height: 14px;
}
.orcaterm-split-view__header-divider {
  width: 1px;
  height: 16px;
  background: var(--OT-Color-Base-Border-Secondary, #383838);
  flex-shrink: 0;
}
.orcaterm-split-view__header--overlay {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 5;
  border-bottom: none;
  background-color: transparent;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease-in-out;
}
.orcaterm-split-view:hover > .orcaterm-split-view__header--overlay,
.orcaterm-pane-fullscreen-overlay:hover > .orcaterm-split-view__header--overlay,
.orcaterm-split-view__header--overlay:focus-within {
  opacity: 1;
}
.orcaterm-split-view:hover > .orcaterm-split-view__header--overlay .orcaterm-split-view__header-text,
.orcaterm-pane-fullscreen-overlay:hover > .orcaterm-split-view__header--overlay .orcaterm-split-view__header-text,
.orcaterm-split-view__header--overlay:focus-within .orcaterm-split-view__header-text {
  background-color: rgba(30, 30, 30, 0.85);
  border-radius: 3px;
  padding: 0 4px;
}
.orcaterm-split-view:hover > .orcaterm-split-view__header--overlay .orcaterm-split-view__header-oper,
.orcaterm-pane-fullscreen-overlay:hover > .orcaterm-split-view__header--overlay .orcaterm-split-view__header-oper,
.orcaterm-split-view__header--overlay:focus-within .orcaterm-split-view__header-oper,
.orcaterm-split-view:hover > .orcaterm-split-view__header--overlay .orcaterm-split-view__header-drag-handle,
.orcaterm-pane-fullscreen-overlay:hover > .orcaterm-split-view__header--overlay .orcaterm-split-view__header-drag-handle,
.orcaterm-split-view__header--overlay:focus-within .orcaterm-split-view__header-drag-handle {
  pointer-events: auto;
}
.orcaterm-split-view.leaf {
  border: 1px solid var(--ot-pane-border-color);
  background-color: var(--ot-pane-item-bg, var(--ot-pane-bg));
  border-radius: 6px;
}
.orcaterm-split-view.is-selected.leaf {
  border: 1px solid var(--ot-pane-border-active-color, #06A8FF);
  border-radius: 6px;
}
.orcaterm-split-view.is-selected .orcaterm-split-view__header-oper {
  opacity: 1;
}
.orcaterm-split-view.is-selected .orcaterm-split-view__header-text .ruyi-icon {
  color: var(--ot-font-color-1);
}
.orcaterm-split-view.drag-source {
  opacity: 0.5;
}
.orcaterm-split-view.drag-source .orcaterm-split-view__header {
  cursor: grabbing;
}
.orcaterm-split-view.is-fullscreen .orcaterm-split-view__header,
.orcaterm-split-view.is-fullscreen .orcaterm-split-view__header:active {
  cursor: default;
}
.orcaterm-drop-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 100;
}
.orcaterm-drop-overlay .orcaterm-drop-indicator {
  position: absolute;
  background: rgba(0, 120, 212, 0.15);
  border: 2px solid rgba(0, 120, 212, 0.6);
  border-radius: 4px;
  transition: all 0.15s ease;
}
.orcaterm-drop-overlay.left .orcaterm-drop-indicator {
  inset: 4px 50% 4px 4px;
}
.orcaterm-drop-overlay.right .orcaterm-drop-indicator {
  inset: 4px 4px 4px 50%;
}
.orcaterm-drop-overlay.top .orcaterm-drop-indicator {
  inset: 4px 4px 50% 4px;
}
.orcaterm-drop-overlay.bottom .orcaterm-drop-indicator {
  inset: 50% 4px 4px 4px;
}
.orcaterm-drop-overlay.invalid .orcaterm-drop-indicator {
  background: rgba(227, 77, 89, 0.15);
  border-color: rgba(227, 77, 89, 0.6);
}
.orcaterm-pane-drop-zone {
  position: absolute;
  top: var(--ot-split-pane-header-height, 20px);
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 50;
  pointer-events: none;
}
body.orcaterm-pane-dragging .orcaterm-pane-drop-zone {
  pointer-events: auto;
}
body.orcaterm-pane-dragging.orcaterm-pane-dragging--tmux .orcaterm-pane-drop-zone--shadow {
  z-index: 49;
}
.orcaterm-drag-image {
  position: fixed;
  top: -1000px;
  left: -1000px;
  background: rgba(0, 120, 212, 0.9);
  color: white;
  padding: 6px 12px;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 500;
  white-space: nowrap;
  pointer-events: none;
  z-index: 10000;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(255, 255, 255, 0.3);
  max-width: 200px;
  overflow: hidden;
  text-overflow: ellipsis;
}
:root .orcaterm-split-view.is-selected .orcaterm-split-view__header-oper .tea-btn.tea-btn--icon.icon-btn.no-border:hover,
[theme='dark'] .orcaterm-split-view.is-selected .orcaterm-split-view__header-oper .tea-btn.tea-btn--icon.icon-btn.no-border:hover {
  background: #283D6B;
}
[theme='light'] .orcaterm-split-view.is-selected .orcaterm-split-view__header-oper .tea-btn.tea-btn--icon.icon-btn.no-border:hover {
  background: #B8CCFA;
}
.orcaterm-pane-header__more-dropdown .tea-dropdown__inner {
  padding: 4px;
}
.orcaterm-pane-header__more-list {
  display: flex;
  flex-direction: column;
  min-width: 120px;
  gap: 2px;
}
.orcaterm-pane-header__more-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 4px;
  cursor: pointer;
  color: var(--ot-font-color-primary);
}
.orcaterm-pane-header__more-item:hover {
  background-color: var(--ot-top-background-color-1);
}
.orcaterm-pane-header__more-item .orcaterm-header__item {
  width: 100%;
  height: auto;
  min-width: auto;
  display: flex;
  align-items: center;
  position: relative;
}
.orcaterm-pane-header__more-item .orcaterm-header__item:hover {
  background-color: transparent;
}
.orcaterm-pane-header__more-item .orcaterm-header__item.is-disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.orcaterm-pane-header__more-item .orcaterm-header__item-inner {
  width: 100%;
}
.orcaterm-pane-header__more-item .orcaterm-header__item.tmux {
  width: 100%;
  justify-content: space-between;
}
.orcaterm-pane-header__more-item .orcaterm-header__item .esc-tmux-session {
  display: flex;
  flex-direction: column;
  align-items: center;
  cursor: pointer;
  color: var(--ot-font-color-primary);
  font-size: 10px;
  font-weight: 600;
  line-height: 10px;
  gap: 2px;
  padding: 2px 4px;
}
.orcaterm-pane-header__more-item .orcaterm-header__item .esc-tmux-session:hover {
  border-radius: 4px;
  background-color: var(--OT-Color-Fill-Gray-Tertiary-Hover);
}
.orcaterm-pane-header__more-item .orcaterm-header__item .esc-tmux-session .label {
  color: var(--ot-font-color-secondary);
  font-size: 7px;
  font-weight: 500;
  line-height: 7px;
}
.orcaterm-pane-header__more-item .ruyi-icon,
.orcaterm-pane-header__more-item svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}
.orcaterm-pane-header__more-item.is-disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}
.orcaterm-keep-session-bubble__guide-bar {
  --guide-brand: #82bcff;
  --guide-brand-border: rgba(130, 188, 255, 0.42);
  --guide-brand-border-hover: rgba(130, 188, 255, 0.7);
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin: 0 calc(-1 * var(--guide-bar-inset-x, 0px)) 0;
  padding: 11px 16px 12px;
  background: rgba(71, 129, 254, 0.09);
  border-top: 1px solid rgba(71, 129, 254, 0.22);
}
#tea-overlay-root .orcaterm-keep-session-bubble.list .tea-bubble .tea-bubble__inner {
  --guide-bar-inset-x: 0px;
  padding-left: var(--guide-bar-inset-x);
  padding-right: var(--guide-bar-inset-x);
  padding-bottom: 0;
  border-bottom-width: 0;
}
[theme='dark'] #tea-overlay-root .orcaterm-keep-session-bubble.list .tea-bubble .tea-bubble__inner,
[theme-mode='dark'] #tea-overlay-root .orcaterm-keep-session-bubble.list .tea-bubble .tea-bubble__inner {
  --guide-bar-inset-x: 12px;
}
[theme='light'] .orcaterm-keep-session-bubble__guide-bar {
  --guide-brand: #006eff;
  --guide-brand-border: rgba(0, 110, 255, 0.42);
  --guide-brand-border-hover: rgba(0, 110, 255, 0.7);
}
.orcaterm-keep-session-bubble__guide-icon {
  display: inline-flex;
  flex-shrink: 0;
  margin-top: 2px;
  color: var(--guide-brand);
}
.orcaterm-keep-session-bubble__guide-icon svg {
  width: 13px;
  height: 13px;
}
.orcaterm-keep-session-bubble__guide-text {
  flex: 1;
  font-size: 11.5px;
  color: var(--ot-font-color-secondary);
  line-height: 1.65;
}
.orcaterm-keep-session-bubble__guide-text b {
  color: var(--ot-font-color-primary);
  font-weight: 600;
}
.orcaterm-keep-session-bubble__guide-btns {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  align-self: center;
}
.orcaterm-keep-session-bubble__guide-btn {
  font-size: 11.5px;
  padding: 5px 11px;
  border-radius: 5px;
  border: 1px solid transparent;
  background: transparent;
  cursor: pointer;
  white-space: nowrap;
  line-height: 1.4;
  font-family: inherit;
}
.orcaterm-keep-session-bubble__guide-btn--go {
  color: var(--guide-brand);
  border-color: var(--guide-brand-border);
}
.orcaterm-keep-session-bubble__guide-btn--go:hover {
  background: rgba(71, 129, 254, 0.14);
  border-color: var(--guide-brand-border-hover);
}
.orcaterm-pane-header__more-loading {
  display: inline-flex;
  align-items: center;
  margin-left: auto;
  font-size: 14px;
  color: var(--ot-font-color-secondary);
}
.orcaterm-pane-header__more-label {
  font-size: 12px;
  line-height: 1;
  color: var(--ot-font-color-primary);
  white-space: nowrap;
}
.orcaterm-pane-header__more-item--text {
  position: relative;
}
.orcaterm-pane-header__more-item--text .orcaterm-pane-header__more-tool {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  opacity: 0;
}
.orcaterm-pane-header__more-item--text .orcaterm-pane-header__more-tool * {
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  display: flex !important;
  align-items: center;
  justify-content: flex-start;
}
.orcaterm-pane-header__more-item--text .orcaterm-pane-header__more-label {
  position: relative;
  z-index: 1;
  flex: 1;
  pointer-events: none;
}
.orcaterm-pane-header__more-divider {
  height: 1px;
  margin: 4px 0;
  background-color: var(--OT-Color-Base-Border-Secondary, #383838);
}
.ot-pane-split--key {
  width: 100%;
  justify-content: space-between;
}
.orcaterm__main {
  --splitter-width: 2px;
}
.orcaterm__main .orcaterm-pane-container {
  flex: 1;
  min-height: 0;
  min-width: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
}
.orcaterm__main .orcaterm__body {
  padding: 2px;
  box-sizing: border-box;
  background-color: var(--ot-pane-box-bg);
}
.orcaterm__main .orcaterm__body > .orcaterm-split-view-container {
  background-color: inherit;
  overflow: hidden;
  min-width: 0;
  min-height: 0;
}
.orcaterm__main .orcaterm__body > .orcaterm-split-view.leaf {
  width: 100%;
  height: 100%;
  position: relative;
}
.orcaterm__main .orcaterm__body .orcaterm-pane-fullscreen-overlay {
  position: absolute;
  top: var(--ot-pane-zoom-inset, 20px);
  right: var(--ot-pane-zoom-inset, 20px);
  bottom: var(--ot-pane-zoom-inset, 20px);
  left: var(--ot-pane-zoom-inset, 20px);
  z-index: 10;
  display: none;
  flex-direction: column;
  border-radius: 6px;
  overflow: hidden;
  background-color: var(--ot-pane-item-bg, var(--ot-pane-bg));
  outline: 2px solid var(--ot-pane-border-active-color, #1784EB);
  outline-offset: 0;
  animation: ot-pane-zoom-enter 0.22s cubic-bezier(0.32, 0.72, 0.3, 1) both;
  transform-origin: center center;
}
.orcaterm__main .orcaterm__body .orcaterm-pane-fullscreen-overlay:not(:empty) {
  display: flex;
}
.orcaterm__main .orcaterm__body .orcaterm-pane-fullscreen-overlay.is-exiting {
  display: flex;
  animation: ot-pane-zoom-exit 0.18s cubic-bezier(0.32, 0.72, 0.3, 1) both;
}
.orcaterm__main .orcaterm__body .orcaterm-pane-fullscreen-overlay.is-agent-mode {
  --ot-pane-border-active-color: #847DFD;
}
.orcaterm__main .orcaterm__body .orcaterm-pane-fullscreen-overlay__backdrop {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 9;
  pointer-events: none;
  background: rgba(0, 0, 0, 0.2);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
}
.orcaterm__main .orcaterm__body .orcaterm-pane-fullscreen-overlay__backdrop.is-exiting {
  animation: ot-pane-backdrop-exit 0.18s ease-out both;
}
.orcaterm__main .orcaterm-split-view-container {
  display: flex;
  background-color: inherit;
  position: relative;
  overflow: visible;
}
.orcaterm__main .orcaterm-split-view-container.vertical {
  flex-direction: column;
}
.orcaterm__main .orcaterm-split-view-container.vertical > .orcaterm-split-view-splitter {
  height: var(--splitter-width);
  cursor: row-resize;
  margin: 1px 0;
}
.orcaterm__main .orcaterm-split-view-container.vertical > .orcaterm-split-view-splitter:hover {
  transform: scaleY(1.5);
  z-index: 1000;
}
.orcaterm__main .orcaterm-split-view-container.vertical > .orcaterm-split-view {
  min-height: var(--ot-split-pane-min-height);
  width: 100%;
  box-sizing: border-box;
  flex: 0 1 0;
}
.orcaterm__main .orcaterm-split-view-container.vertical > .orcaterm-split-view:not(.leaf) {
  min-height: min-content;
}
.orcaterm__main .orcaterm-split-view-container.horizontal {
  flex-direction: row;
  justify-content: space-between;
}
.orcaterm__main .orcaterm-split-view-container.horizontal > .orcaterm-split-view-splitter {
  width: var(--splitter-width);
  cursor: col-resize;
  margin: 0 1px;
}
.orcaterm__main .orcaterm-split-view-container.horizontal > .orcaterm-split-view-splitter:hover {
  transform: scaleX(1.5);
}
.orcaterm__main .orcaterm-split-view-container.horizontal > .orcaterm-split-view {
  min-width: var(--ot-split-pane-min-width);
  height: 100%;
  flex: 0 1 0;
}
.orcaterm__main .orcaterm-split-view-container.horizontal > .orcaterm-split-view:not(.leaf) {
  min-width: min-content;
}
.orcaterm__main .orcaterm-split-view-container .orcaterm-split-view {
  position: relative;
  flex-grow: 1;
  overflow: hidden;
}
.orcaterm__main .orcaterm-split-view-container .orcaterm-split-view:not(.leaf) {
  overflow: visible;
}
.orcaterm__main .orcaterm-split-view-container .orcaterm-split-view.leaf {
  contain: size;
}
.orcaterm__main .orcaterm-split-view-container .orcaterm-split-view.is-hidden {
  pointer-events: none;
}
.orcaterm__main .orcaterm-split-view-container .orcaterm-split-view-splitter {
  flex-shrink: 0;
  background-color: var(--ot-pane-box-bg);
  z-index: 4;
}
.orcaterm__main .orcaterm-split-view-container .orcaterm-split-view-splitter:hover {
  background-color: var(--ot-font-color-1);
}
.orcaterm__main .orcaterm-split-view-container .orcaterm-split-view__header {
  z-index: 4;
}
.orcaterm-cooperation-entry {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  flex-shrink: 0;
  color: var(--ot-font-color-primary);
  box-sizing: border-box;
}
.orcaterm-cooperation-entry--hidden {
  display: none;
}
.orcaterm-cooperation-entry--disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.orcaterm-cooperation-entry--loading {
  display: inline-flex;
  align-items: center;
  padding: 0 4px;
}
.orcaterm-cooperation-entry__icon {
  color: inherit;
  fill: currentColor;
  transition: color 0.2s ease-in-out;
  flex-shrink: 0;
}
.orcaterm-cooperation-entry__icon.is-active {
  color: #32b25d;
}
.orcaterm-cooperation-entry__icon.is-disabled {
  color: var(--ot-font-color-secondary);
}
.orcaterm-cooperation-entry__icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 4px;
  cursor: pointer;
  color: inherit;
}
.orcaterm-cooperation-entry__icon-btn:hover {
  background-color: var(--ot-top-background-color-1);
}
.orcaterm-cooperation-entry__icon-btn.is-disabled {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}
.orcaterm-cooperation-entry__label-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 18px;
  padding: 2px 4px;
  border-radius: 4px;
  cursor: pointer;
  color: inherit;
  background-color: transparent;
  transition: background-color 0.15s ease-in-out, color 0.15s ease-in-out;
  user-select: none;
  white-space: nowrap;
}
.orcaterm-cooperation-entry__label-btn.has-btn-text {
  border-radius: 12px;
  padding: 2px 8px;
}
.orcaterm-cooperation-entry__label-btn:hover {
  background-color: var(--ot-top-background-color-1);
}
.orcaterm-cooperation-entry__label-btn.is-active.has-btn-text {
  background-color: var(--ot-top-background-color-1);
}
.orcaterm-cooperation-entry__label-btn.is-disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.orcaterm-cooperation-entry__label-btn.is-static {
  cursor: default;
  pointer-events: none;
}
.orcaterm-cooperation-entry__label-btn.is-static:hover {
  background-color: transparent;
}
.orcaterm-cooperation-entry__action-btn {
  display: inline-flex !important;
  align-items: center;
  gap: 4px;
  height: 100% !important;
  line-height: 100% !important;
  padding: 2px 8px !important;
  border-radius: 12px !important;
  font-size: 12px !important;
  background: var(--OT-color-gray-opacity-16, rgba(255, 255, 255, 0.16));
}
.orcaterm-cooperation-entry__label {
  font-size: 12px;
  line-height: 16px;
  color: inherit;
  white-space: nowrap;
}
.orcaterm-cooperation-entry__pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  height: 22px;
  padding: 0 8px;
  border-radius: 12px;
  background-color: var(--ot-top-background-color-1);
  box-sizing: border-box;
}
.orcaterm-cooperation-entry__pill-main {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 100%;
  cursor: pointer;
  color: inherit;
  user-select: none;
  white-space: nowrap;
}
.orcaterm-cooperation-entry__pill-main.is-disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.orcaterm-cooperation-entry__pill-divider {
  width: 1px;
  height: 14px;
  flex-shrink: 0;
  background-color: var(--ot-font-color-secondary);
  opacity: 0.4;
}
.orcaterm-cooperation-entry__avatars {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  height: 100%;
}
.orcaterm-cooperation-entry__avatars .orcaterm__cooperation-item {
  border-radius: 50%;
  overflow: hidden;
  height: 20px;
  width: 20px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}
.orcaterm-cooperation-entry__avatars .orcaterm__cooperation-item.is-current::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  border: 1px dashed #32b25d;
  border-radius: 100%;
  cursor: pointer;
}
.orcaterm-cooperation-entry__avatars .orcaterm__cooperation-item-inner {
  width: calc(100% - 3px);
  height: calc(100% - 3px);
}
.orcaterm-cooperation-entry__avatars .orcaterm__cooperation-item img {
  width: 100%;
  height: 100%;
}
.orcaterm-cooperation-entry__countdown {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-size: 12px;
  line-height: 16px;
  color: var(--ot-font-color-primary);
}
.orcaterm-cooperation-entry__footer {
  display: flex;
  flex-direction: column;
  padding: 0 !important;
}
.orcaterm-cooperation-entry__footer .tea-btn {
  box-sizing: content-box;
  border-radius: 0 !important;
  padding: 4px 0 !important;
}
.orcaterm-cooperation-entry__split-line {
  height: 1px;
  width: 100%;
  background-color: var(--OT-Color-Base-Border-Primary, #2C2C2C);
}
.orcaterm-cooperation-entry__stop-btn.tea-btn {
  color: var(--OT-Color-Accent-Text-Error-Default, #FF5E4F) !important;
  font-weight: 500;
  line-height: 20px;
  display: flex !important;
  align-items: center;
  justify-content: center;
  gap: 4px;
  background-color: transparent;
  border-radius: 0 0 4px 4px !important;
}
.orcaterm-cooperation-entry__stop-btn.tea-btn:hover {
  background-color: rgba(229, 79, 64, 0.16) !important;
}
.orcaterm-cooperation-entry__stop-btn.tea-btn .ruyi-icon {
  color: inherit;
}
/* ── T2.6：tmux pane 终端渲染单元 ────────────────────────────────
   TmuxPaneItem 只做「数据管道 + 终端渲染」，不含 pane 外壳
   （header / leaf 包裹 / drop-zone 归统一 PaneSurface，方案 §5 硬边界）。
   0920 二次/三次修正历史：留白曾从对称（×2）改为左侧单边（×1，为让 xterm
   滚动条贴 pane 右缘、对齐普通会话 .block-container 的左单边 padding）；
   2026-09-23 按用户反馈**恢复左右对称**（`padding: 0 12px`）——右侧内容贴边
   缺少呼吸感，用户要求与左侧一致。取舍：xterm 自身滚动条随之内缩 12px，
   不再贴 pane 右缘（用户知情接受）。
   同步改动（宽度轴闭合换算统一用 TMUX_PANE_H_PADDING_TOTAL_PX = 2×PADDING，
   见 gridMetrics.ts 头注）：树侧 useTmuxPaneTree.sizeWithStructuralInset、
   网格根 PaneTreeView.gridRootStyleFor（maxWidth 加回）、client size 换算
   tmuxClientSize.hPaddingInsetFor——四处同源闭合，因此这里的 padding 不会
   导致内容被裁切（xterm canvas 仍精确渲染 tmux 报告的 cols×charW，只是
   叶子盒子本身比这个尺寸大出 24px，多出的部分正是这里声明的左右 padding）。
   box-sizing: border-box 让 width:100%/height:100%（本元素与其唯一子节点
   container，TmuxPaneItem.tsx 内 JS 创建）在有 padding 时仍精确铺满内容区，
   不溢出。 */
.orcaterm-tmux-pane {
  position: relative;
  width: 100%;
  height: 100%;
}
.orcaterm-tmux-pane .orcaterm-tmux-pane-body {
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  padding: 0 12px;
  /* xterm 容器（TmuxPaneItem 内 JS 创建的唯一子节点）：宽度 = 内容盒宽 + 右
       padding（12px），伸进右侧留白区 —— xterm 6 滚动条是 overlay 悬浮条
       （.xterm-scrollable-element > .scrollbar，绝对定位、不占布局，shell.less
       已把 3px 薄条样式落到本子树），贴容器右缘 = pane 右缘；canvas
       （cols×charW = 盒宽 - 2×PADDING，宽度轴闭合换算保证）仍距右缘 12px
       （内容右留白，与左对称）——「内容留白 + 滚动条贴边」两全。
       ⚠️ 依赖 canvas 宽度严格 = cols×charW：宽度轴四处闭合换算（见上方头注）
       必须与 TOTAL 同源，否则 canvas 会溢出内容盒、内容重新贴边。body 背景已
       同步终端主题色（TmuxPaneItem.applyTerminalTheme），canvas 与滚动条之间
       的空隙无色差。 */
}
.orcaterm-tmux-pane .orcaterm-tmux-pane-body > .orcaterm-tmux-term-host {
  width: calc(100% + 12px);
  height: 100%;
}
/* ── T2.8：tmux 宿主渲染（方案 §6.3/§6.10-12）───────────────────
   tmuxHost 的 content = 影子 slot，与其 tmux 子树（PaneTreeContainer，
   content 的流内兄弟）同区叠加：
   - stage：绝对定位铺满宿主区域、与子树区域重合（F1p5d 起 tmuxHost
     headerMode='none' 无 host header 需让位，top:0 贴边；此前 top:26px 给
     已移除的 host block header 让位，导致 shadow 量尺矮 26px、tmux xterm
     底部留 26px 空白带）；pointer-events:none（交互穿透到 tmux pane 的
     xterm），z-index 低于全屏 overlay(z-index:10) 与 drop-zone(50)。
     TmuxSessionController（TermItem 内渲染）经 .lh-terminal-box 铺满 shadow，
     其浮层（prefix hint / toast / 状态栏 / 对话框）即锚定在本层、随 stage 可见。
   - shadow：inset:0 铺满 stage，visibility:hidden 隐藏宿主终端但保留布局盒
     （tmux client 尺寸量尺，§3.4-2）；pointer-events:none。子元素可经
     visibility:visible 覆盖继承（TmuxSessionController 浮层即此机制）。 */
.orcaterm-tmux-host__stage {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 5;
  pointer-events: none;
}
.orcaterm-tmux-host__shadow {
  position: absolute;
  inset: 0;
  visibility: hidden;
  pointer-events: none;
}
/* tmuxHost headerMode='none'（F1p5d）：其直接子容器（PaneTreeContainer）铺满宿主
   区域（无 host header 占据空间）。stage 是 renderContent 输出、位于容器之前的
   直接兄弟，用相邻兄弟选择器作用域化。 */
.orcaterm-tmux-host__stage + .orcaterm-split-view-container {
  flex: 1;
  min-height: 0;
  min-width: 0;
  height: auto;
}
.ot-terminal-shell .xterm .xterm-scrollable-element > .scrollbar,
.orcaterm-tmux-pane .xterm .xterm-scrollable-element > .scrollbar {
  width: 3px !important;
}
.ot-terminal-shell .xterm .xterm-scrollable-element > .scrollbar > .slider,
.orcaterm-tmux-pane .xterm .xterm-scrollable-element > .scrollbar > .slider {
  width: 3px !important;
  border-radius: 3px;
  /* 添加圆角 */
  background-color: var(--scroll-bar-color) !important;
  border: none;
  background-clip: unset;
}
.ot-terminal-shell .xterm .xterm-scrollable-element > .scrollbar:hover,
.orcaterm-tmux-pane .xterm .xterm-scrollable-element > .scrollbar:hover {
  width: 6px !important;
}
.ot-terminal-shell .xterm .xterm-scrollable-element > .xterm-scrollbar,
.orcaterm-tmux-pane .xterm .xterm-scrollable-element > .xterm-scrollbar {
  width: 3px !important;
}
.ot-terminal-shell .xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-slider,
.orcaterm-tmux-pane .xterm .xterm-scrollable-element > .xterm-scrollbar > .xterm-slider {
  width: 3px !important;
  border-radius: 3px;
  /* 添加圆角 */
  background-color: var(--scroll-bar-color) !important;
  border: none;
  background-clip: unset;
}
.ot-terminal-shell .xterm .xterm-scrollable-element > .xterm-scrollbar:hover,
.orcaterm-tmux-pane .xterm .xterm-scrollable-element > .xterm-scrollbar:hover {
  width: 6px !important;
}
.ot-terminal-shell .xterm-viewport,
.orcaterm-tmux-pane .xterm-viewport {
  scrollbar-width: none;
}
.ot-terminal-shell .xterm-viewport::-webkit-scrollbar,
.orcaterm-tmux-pane .xterm-viewport::-webkit-scrollbar {
  width: 0;
  height: 0;
  background: transparent;
  display: none;
}
.orcaterm-header__add-bubble-shells {
  padding-top: 4px;
}
.orcaterm-header__add-bubble-shells__title {
  padding: 4px 8px;
  font-size: 12px;
  line-height: 20px;
  color: var(--ot-font-color-placeholder);
}
.orcaterm-header__add-bubble-shells__list {
  margin: 0;
  padding: 0;
  list-style: none;
  max-height: 220px;
  overflow-y: auto;
}
.orcaterm-header__add-bubble-shells__list > li {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 30px;
  padding: 0 10px;
  border-radius: 4px;
  cursor: pointer;
  font-size: 12px;
  line-height: 30px;
  white-space: nowrap;
  color: var(--ot-font-color-primary);
  transition: background-color 0.15s ease;
}
.orcaterm-header__add-bubble-shells__list > li:hover {
  background-color: var(--ot-active-background-color);
}
.orcaterm-header__add-bubble-shells__list > li > svg {
  flex-shrink: 0;
  color: var(--ot-font-color-secondary);
}
.orcaterm-header__add-bubble-shells__list > li .shell-name {
  flex: 0 1 auto !important;
  max-width: 40%;
  overflow: hidden;
  text-overflow: ellipsis;
  font-weight: 500;
}
.orcaterm-header__add-bubble-shells__list > li .shell-path {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;
  font-size: 11px;
  color: var(--ot-font-color-secondary);
}
.orcaterm-header__add-bubble-shells__list > li .shell-badge {
  flex: 0 1 auto !important;
  padding: 0 4px;
  border-radius: 2px;
  font-size: 10px;
  line-height: 16px;
  color: var(--ot-font-color-secondary);
  background-color: var(--ot-color-gray-opacity-12);
}
.orcaterm__main {
  position: relative;
}
.orcaterm__main .ot-default-page {
  opacity: 0;
  display: none;
  flex: 1;
  transition: all 0.3s ease-in-out;
}
.orcaterm__main .ot-default-page.active {
  display: block;
  opacity: 1;
}
.orcaterm__main .ot-tab-page-list {
  position: relative;
  width: 100%;
  flex: 1;
  overflow: hidden;
  background-color: var(--ot-editor-background-color);
}
.orcaterm__main .ot-tab-page-item {
  opacity: 0;
  z-index: 1;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.orcaterm__main .ot-tab-page-item.active {
  opacity: 1;
  z-index: 10;
}
.orcaterm__main .ot-tab-page-item .ot-login-loading {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}
.orcaterm__main .ot-terminal-shell {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.orcaterm__main .ot-terminal-shell > div {
  min-width: 200px;
}
.orcaterm__main .ot-terminal-shell.is-fullscreen {
  border-radius: 6px;
  overflow: hidden;
}
.orcaterm__main .orcaterm__screen {
  min-height: 200px;
}
.orcaterm__main .orcaterm__body {
  display: flex;
  height: 100%;
  width: 100%;
  overflow-x: auto;
  position: relative;
}
.orcaterm__main .ot-resize-fold {
  position: absolute;
  bottom: 0;
  left: 0;
  z-index: 10;
  height: 8px;
  width: 100%;
  cursor: pointer;
  background-color: var(--ot-top-background-color-1);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: height 0.4s cubic-bezier(0.38, 0, 0.24, 1);
}
.orcaterm__main .ot-resize-fold .unfold-btn {
  display: none;
  align-items: center;
  background-color: transparent;
  color: var(--ot-font-color-primary);
  font-size: 12px;
  font-weight: 400;
  line-height: 20px;
  gap: 4px;
  padding: 0px !important;
}
.orcaterm__main .ot-resize-fold .unfold-btn .arrow-new-icon {
  width: 15px;
  height: 15px;
  background-repeat: no-repeat;
  background-size: cover;
  animation: 0.4s steps(2) 0s 1 normal forwards running arrowAni;
  background-image: url(https://cloudcache.tencent-cloud.com/qcloud/ui/static/other_external_resource/a4f65cbf-afff-47bb-b0d2-b1456bc1bb26.png);
}
.orcaterm__main .ot-resize-fold:hover {
  height: 32px;
  border-top: 2px solid var(--ot-font-color-1);
}
.orcaterm__main .ot-resize-fold:hover .unfold-btn {
  display: inline-flex;
}
.orcaterm__main .sftp-ui-table.tea-table {
  overflow: hidden;
}
.orcaterm__main .sftp-ui-table.tea-table .tea-table__header {
  overflow: hidden;
}
.orcaterm__main .orcaterm-sub-header .orcaterm-header__item {
  margin-right: unset;
}
.orcaterm__main .orcaterm-sub-header .orcaterm-header__item-network {
  margin: 0;
  padding: 0;
}
[theme="light"] .ot-resize-fold .unfold-btn .arrow-new-icon {
  background-image: url(https://cloudcache.tencent-cloud.com/qcloud/ui/static/other_external_resource/39f29d0c-11c9-4795-875c-92a74c0f6a7d.png);
}
.sftp-ui-btn-groups__left {
  width: 100%;
  overflow-x: auto;
}
.sftp-ui-btn-groups__left button {
  flex-shrink: 0;
}
.orcaterm-main-container__right {
  position: relative;
}
.ot-file-manager-pane__editor-side .sftp-ui-edit-content__inner {
  height: 100%;
}
.ot-bubble-cooperation.collaborator .tea-bubble {
  min-width: unset !important;
  max-width: unset !important;
}
.ot-bubble-cooperation .tea-bubble__inner {
  border-radius: 8px !important;
  box-sizing: content-box;
  max-width: 320px;
  width: 320px;
}
.ot-bubble-cooperation__header {
  padding: 12px 12px 4px 12px !important;
  border-bottom: none !important;
}
.ot-bubble-cooperation .ot-bubble-cooperation__list {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ot-bubble-cooperation .ot-bubble-cooperation__list .ot-bubble-cooperation__item {
  padding: 4px 8px !important;
}
.ot-bubble-cooperation .ot-bubble-cooperation__list .ot-bubble-cooperation__item-left .user-avatar {
  width: 32px !important;
  height: 32px !important;
}
.ot-bubble-cooperation .ot-bubble-cooperation__list .ot-bubble-cooperation__item-left .user-avatar-content .user-name {
  line-height: 20px !important;
}
.ot-bubble-cooperation .ot-bubble-cooperation__list .ot-bubble-cooperation__item-left .user-avatar-content .user-id {
  line-height: 18px !important;
}
/*# sourceMappingURL=layout.css.map */
.orcaterm-footer-form-bubble .ot-footer-form-item {
  display: flex;
  align-items: center;
  gap: 2px;
}
.orcaterm-footer-form-bubble.tea-bubble.max-width {
  max-width: 185px !important;
}
/*# sourceMappingURL=style.css.map */
.ot-conversation-member {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  line-height: 24px;
}
.ot-conversation-member .ot-conversation-member-id {
  color: var(--ot-font-color-secondary, #8a8f99);
}
.ot-expanded-loading,
.ot-expanded-empty {
  display: flex;
  justify-content: center;
  padding: 16px 0;
}
[theme=dark] .ot-expanded-loading,
[theme=dark] .ot-expanded-empty {
  background-color: #2b2b2b;
}
.recorder-table__content-wrapper .tr__detailrow > td {
  padding: 0px !important;
}
.recorder-table__content-wrapper .auth-login-expand-table,
.recorder-table__content-wrapper .conversation-expand-table {
  padding: 0 40px;
  border: unset !important;
}
.recorder-table__content-wrapper .auth-login-expand-table .tea-table__body,
.recorder-table__content-wrapper .conversation-expand-table .tea-table__body {
  border: unset;
}
.recorder-table__content-wrapper .share-members-table {
  padding: 0 40px;
  border: unset !important;
}
/*# sourceMappingURL=index.css.map */
/**
 * DownloadClientPopoverContent 样式 — "客户端 + 小程序"推广 popover 内容。
 *
 * 2026-08-14 改造：原顶栏 banner 自写 portal popover 改用 Bubble 承载浮层后，
 * portal 定位 / .show 动画 / .dl-pop-arrow 由 Bubble 接管；同时按需求去掉
 * popover 外层装饰框（背景/边框/阴影/padding/圆角），列内容直接浮在背景上。
 *
 * .dl-pop 保留作为列内样式的作用域根（主题 CSS 变量 + 列内样式选择器锚点），
 * 但不带视觉装饰。light/dark 主题通过 body class 切换 CSS 变量值。
 */
.dl-pop {
  --dl-pop-text: rgba(255, 255, 255, 0.92);
  --dl-pop-text-secondary: rgba(255, 255, 255, 0.64);
  --dl-pop-border: rgba(255, 255, 255, 0.05);
  color: var(--dl-pop-text);
}
.dl-pop-cols {
  display: flex;
  gap: 16px;
  align-items: stretch;
}
.dl-pop-dive {
  display: block;
  width: 1px;
  height: auto;
  background-color: var(--dl-pop-border);
}
.dl-pop-col {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  text-align: center;
  padding: 12px;
  gap: 4px;
}
.dl-pop-col-title {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  margin: 0;
  font-size: 14px;
  line-height: 20px;
  font-weight: 500;
  color: var(--dl-pop-text);
  white-space: nowrap;
}
.dl-pop-col-ic {
  flex: none;
  color: rgba(255, 255, 255, 0.8);
}
.dl-pop-col-desc {
  margin: 6px 0 4px;
  font-size: 12px;
  line-height: 18px;
  color: var(--dl-pop-text-secondary);
  white-space: nowrap;
}
.dl-pop-col-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  width: 100%;
  margin-top: 6px;
}
.dl-pop-appicon {
  display: block;
  width: 48px;
  height: 48px;
  margin: auto;
  line-height: 0;
  text-align: center;
}
.dl-pop-appicon img {
  display: block;
  width: 48px;
  height: 48px;
  object-fit: contain;
}
.dl-pop-appicon .dl-pop-appicon-dark-img {
  display: block;
}
.dl-pop-appicon .dl-pop-appicon-light-img {
  display: none;
}
.dl-pop-qr {
  display: inline-block;
  padding: 10px;
  background: #ffffff;
  border-radius: 4px;
  line-height: 0;
  margin-top: 0;
}
.dl-pop-qr img,
.dl-pop-qr svg {
  display: block;
  width: 100px;
  height: 100px;
  object-fit: contain;
}
.dl-pop-primary {
  display: block;
  width: 120px;
  height: 30px;
  margin: 0 auto;
  background: var(--color-primary-5, #3d7bff);
  border: 1px solid var(--color-primary-5, #3d7bff);
  border-radius: 4px;
  color: #ffffff;
  font-size: 12px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.dl-pop-primary:hover {
  background: var(--color-primary-6, #2f6bf2);
  border-color: var(--color-primary-6, #2f6bf2);
}
.dl-pop-primary:focus-visible {
  outline: 2px solid #5596ff;
  outline-offset: 1px;
}
/* light 主题覆盖 */
.light-theme .dl-pop {
  --dl-pop-text: rgba(0, 0, 0, 0.9);
  --dl-pop-text-secondary: rgba(0, 0, 0, 0.64);
  --dl-pop-border: rgba(0, 0, 0, 0.05);
}
.light-theme .dl-pop .dl-pop-col-ic {
  color: rgba(0, 0, 0, 0.7);
}
.light-theme .dl-pop .dl-pop-appicon .dl-pop-appicon-dark-img {
  display: none;
}
.light-theme .dl-pop .dl-pop-appicon .dl-pop-appicon-light-img {
  display: block;
}
/*# sourceMappingURL=DownloadClientPopoverContent.css.map */
/**
 * DownloadEntry 样式 — 左侧导航"客户端/小程序"常驻入口。
 *
 * 复用全局 .orcaterm__aside-item / .orcaterm__aside-item-inner 范式（与
 * Menu / Plugin / Collaboration 等一级导航项一致）。icon 颜色继承父级
 * --OT-Color-Text-Gray-Secondary 主题变量（对齐其他 aside icon 的 .ruyi-icon
 * 范式），暗/亮主题自动切换。
 *
 * 下载 popover 用 tea-component Bubble 承载，需覆盖其默认外框样式
 * （tea.css 里 .tea-bubble 有 max-width:300px、.tea-bubble__inner 有白底
 * 阴影 + ::before/::after 箭头），实现"列内容裸露在背景上"的需求。
 */
.download-entry__icon {
  display: block;
  width: 20px;
  height: 20px;
}
/* ----- 覆盖 Bubble 默认外框/阴影/箭头/宽度限制 ----- */
.download-entry__bubble .tea-bubble {
  max-width: 430px;
  display: block;
}
.download-entry__bubble .tea-bubble__inner {
  padding: 8px 24px;
  min-width: 0;
}
.download-entry__bubble .tea-bubble__inner::before,
.download-entry__bubble .tea-bubble__inner::after {
  display: none;
}
/*# sourceMappingURL=DownloadEntry.css.map */
.tea-bubble.ot-custom-avatar-bubble {
  width: unset !important;
}
.tea-bubble.ot-custom-avatar-bubble .ot-custom-avatar-bubble__content {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
}
.orcaterm-user-account-bubble__center.disable-interaction {
  cursor: default;
}
/*# sourceMappingURL=style.css.map */
[theme=dark] .sftp-ui-edit-content.ot-file-manager-editor {
  --ot-file-editor-background-color: #141414;
}
[theme=light] .sftp-ui-edit-content.ot-file-manager-editor {
  --ot-file-editor-background-color: #F1F2F5;
}
.sftp-ui-edit-content.ot-file-manager-editor.visible {
  height: 100%;
}
.sftp-ui-edit-content.ot-file-manager-editor .sftp-ui-edit-terminal {
  min-height: unset;
}
.sftp-ui-edit-content.ot-file-manager-editor .ot-binary-file-tip.binary-file {
  background-color: var(--ot-file-editor-background-color);
}
.sftp-ui-edit-content.ot-file-manager-editor .ot-binary-file-tip.binary-file .ot-binary-file-tip-icon {
  display: flex;
  justify-content: center;
}
.sftp-ui-edit-content.ot-file-manager-editor .ot-file-loading {
  display: flex;
  justify-content: center;
}
.sftp-ui-edit-content.ot-file-manager-editor .ot-file-loading .loading-file {
  display: flex;
  gap: 2px;
  align-items: center;
}
.sftp-ui-edit-content.ot-file-manager-editor .ot-file-error-container {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100%;
  background-color: var(--ot-file-editor-background-color);
}
.sftp-ui-edit-content.ot-file-manager-editor .loadfile-error.editor-file-error {
  background-color: var(--ot-file-editor-background-color);
}
/*# sourceMappingURL=File.css.map */
[theme='dark'] .orcaterm-mode-switcher {
  --ot-mode-switcher-bg: #141414;
  --ot-mode-switcher-border: #2c2c2c;
  --ot-mode-switcher-active-bg: #1f1f1f;
  --ot-mode-switcher-shell-border: #06a8ff;
  --ot-mode-switcher-agent-border: #847dfd;
  --ot-mode-switcher-agent-icon: #8870ff;
  --ot-mode-switcher-text-active: rgba(255, 255, 255, 0.92);
  --ot-mode-switcher-text-idle: rgba(255, 255, 255, 0.64);
}
[theme='light'] .orcaterm-mode-switcher {
  --ot-mode-switcher-bg: #ffffff;
  --ot-mode-switcher-border: #f1f2f5;
  --ot-mode-switcher-active-bg: #ffffff;
  --ot-mode-switcher-shell-border: #06a8ff;
  --ot-mode-switcher-agent-border: #847dfd;
  --ot-mode-switcher-agent-icon: #5e47d1;
  --ot-mode-switcher-text-active: rgba(0, 0, 0, 0.92);
  --ot-mode-switcher-text-idle: rgba(0, 0, 0, 0.64);
}
.orcaterm-mode-switcher {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  box-sizing: border-box;
  height: 20px;
  margin-left: 12px;
  padding: 0;
  border: 0.6px solid var(--ot-mode-switcher-border);
  border-radius: 12px;
}
.orcaterm-mode-switcher__tab {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  box-sizing: border-box;
  height: 20px;
  min-width: 0;
  overflow: visible;
  padding: 0 8px;
  color: var(--ot-mode-switcher-text-idle);
  background: transparent;
  border: 0.8px solid transparent;
  border-radius: 12px;
  outline: none;
  cursor: pointer;
  appearance: none;
}
.orcaterm-mode-switcher__tab.is-shell {
  --ot-mode-switcher-active-border: var(--ot-mode-switcher-shell-border);
}
.orcaterm-mode-switcher__tab.is-agent {
  --ot-mode-switcher-active-border: var(--ot-mode-switcher-agent-border);
}
.orcaterm-mode-switcher__tab.is-disabled {
  opacity: 0.48;
}
.orcaterm-mode-switcher__tab.is-active {
  color: var(--ot-mode-switcher-text-active);
  background: var(--ot-mode-switcher-active-bg);
  border-color: var(--ot-mode-switcher-active-border);
}
.orcaterm-mode-switcher__tab.is-active::before,
.orcaterm-mode-switcher__tab.is-active::after {
  position: absolute;
  inset: -0.8px;
  border: 1px solid var(--ot-mode-switcher-active-border);
  border-radius: 12px;
  content: '';
  pointer-events: none;
}
.orcaterm-mode-switcher__tab.is-active::before {
  filter: blur(2px);
}
.orcaterm-mode-switcher__tab.is-active::after {
  opacity: 0.64;
  filter: blur(4px);
}
.orcaterm-mode-switcher__icon {
  display: inline-flex;
  flex: none;
  width: 14px;
  height: 14px;
}
.orcaterm-mode-switcher__icon > svg {
  display: block;
  width: 14px;
  height: 14px;
}
.orcaterm-mode-switcher__agent-icon {
  color: var(--ot-mode-switcher-agent-icon);
}
.orcaterm-mode-switcher__text {
  font-family: 'SF Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12px;
  font-weight: 500;
  line-height: 20px;
  letter-spacing: 0;
  white-space: nowrap;
}
/*# sourceMappingURL=ModeSwitcher.css.map */
/**
 * TmuxSessionController 样式（B/components/terminal/TmuxSplitView/styles.less 的
 * controller 层移植，T2.8）。
 *
 * 与 B 的差异：
 *  - 根类 orcaterm-tmux-session 不再承载 pane 树（统一 PaneSurface/PaneTreeView
 *    渲染），改为透明覆盖层：pointer-events:none（交互穿透到 tmux pane 的
 *    xterm），visibility:visible 穿透宿主影子 slot（.orcaterm-tmux-host__shadow）
 *    的 visibility:hidden 继承链（方案 §6.10-12 stage 层，浮层可见性锚点）。
 *  - __panes/__window-layer 等旧渲染层样式不移植（渲染归统一树）。
 *  - __statusbar 由 flex 布局占位改为绝对定位悬浮（stage 为 overlay 锚定，不占
 *    布局空间）；F1-fix 起顶部 window 条（__window-tabs）整体移除，statusbar
 *    承载 session 徽标（当前 window 徽标已移除）。
 *  - 交互浮层（statusbar / 命令框 / 对话框）显式恢复 pointer-events:auto——
 *    根层已 none，子层必须自行恢复。
 *  - tmux-overlay / tmux-dialog / tmux-cmd-prompt 类名与 B 保持一致（组件原样
 *    迁移），z-index 序列沿用 B（命令框 20 < 对话框 25）。
 */
.orcaterm-tmux-session {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  visibility: visible;
  font-family: 'SF Mono', Menlo, monospace;
  /* prefix(Ctrl+B) 已激活：边框高亮提示用户等待下一个命令键 */
  /*
   * 底部 session 徽标（仿 tmux TUI status line 位置）：session 名主文字色，双击 /
   * hover 编辑图标重命名。统一树下为悬浮层（不占布局空间）。
   */
  /*
   * 底部 session 徽标（仿 tmux TUI status line 位置）：session 名主文字色，双击 /
   * hover 编辑图标重命名。统一树下为悬浮层（不占布局空间）。
   *
   * 高度契约（勿动）：底栏总高 = border-top(1px) + padding(3px×2) + 内容 20px = 27px
   * = TMUX_STATUSBAR_HEIGHT_PX（gridMetrics.ts，参与 client size 高度扣减）。原内容
   * 20px 由 `__exit-btn`（height:20px）撑起；按钮删除后改由 `__session-badge` 的
   * `min-height:20px` 承担（该值 = 原按钮高度，故底栏几何与改动前逐像素一致）。
   * 删/改这个 20px 会让底栏从 27px 塌到约 21px，与 gridMetrics 的扣减失配。
   */
  /*
   * session 徽标（交互稿 .tmux-bar .tb-info 的对应物）。现为底栏唯一内容。
   *
   *  - `min-height: 20px`：**高度契约承重项**——原由 `__exit-btn`（height:20px）撑起
   *    底栏 27px 总高，按钮删除后必须由徽标顶上同值，否则底栏塌到约 21px（详见
   *    `__statusbar` 注释）。
   *  - `flex: 0 1 auto` + `min-width: 0`（BUG-EXIT-ALIGN 遗留语义）：徽标可收缩，
   *    窄 tmux host pane / 长 session 名下不撑破底栏（配名称省略号吃溢出）。原用途是
   *    「把自由空间让给右侧 `__exit-btn` 的 margin-left:auto」，按钮已删但仍保留
   *    收缩语义——底栏恒 27px 高、内容单行不溢出。
   */
  /* window 操作成功提示（prefix+n/p/L/0-9/c 等），短暂展示后自动消失 */
}
.orcaterm-tmux-session--prefix-armed {
  box-shadow: inset 0 0 0 2px #4ec9b0;
}
.orcaterm-tmux-session__prefix-hint {
  position: absolute;
  top: 6px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  padding: 2px 10px;
  background: #4ec9b0;
  color: #1e1e1e;
  border-radius: 3px;
  font-size: 11px;
  font-weight: 600;
  pointer-events: none;
  user-select: none;
}
.orcaterm-tmux-session__statusbar {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 3px 10px;
  background: var(--ot-editor-background-color);
  border-top: 1px solid var(--ot-background-color-46);
  font-size: 12px;
  user-select: none;
  /*
     * overflow:hidden（原 auto）：底栏内容按设计恒不滚动，且底栏总高是硬契约
     * （TMUX_STATUSBAR_HEIGHT_PX=27px，见 gridMetrics.ts）。原 auto 下一旦内容溢出
     * （窄 pane / 长 session 名）会出现横向滚动条，把 27px 顶到约 42px
     * （headless Chromium 实测 27→44px），破坏高度契约；hidden 保证底栏高度恒定 27px。
     */
  overflow: hidden;
  white-space: nowrap;
  pointer-events: auto;
}
.orcaterm-tmux-session__session-badge {
  flex: 0 1 auto;
  min-width: 0;
  min-height: 20px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--ot-font-color-primary);
  font-weight: 700;
  letter-spacing: 0.3px;
}
.orcaterm-tmux-session__session-badge .orcaterm-tmux-session__session-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: pointer;
}
.orcaterm-tmux-session__session-badge .orcaterm-tmux-session__session-edit-icon {
  flex: 0 0 auto;
  width: 13px;
  height: 13px;
  color: var(--ot-font-color-secondary);
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.12s ease;
}
.orcaterm-tmux-session__session-badge .orcaterm-tmux-session__session-edit-icon:hover {
  color: var(--ot-font-color-primary);
}
.orcaterm-tmux-session__session-badge:hover .orcaterm-tmux-session__session-edit-icon {
  opacity: 1;
}
.orcaterm-tmux-session__session-input {
  width: 120px;
  padding: 1px 4px;
  background: var(--ot-top-background-color-1);
  border: 1px solid var(--ot-radio-background-color);
  border-radius: 2px;
  color: var(--ot-font-color-primary);
  font-size: 12px;
  font-family: inherit;
  outline: none;
}
.orcaterm-tmux-session__session-input:focus {
  border-color: #006eff;
}
.orcaterm-tmux-session__toast {
  position: absolute;
  top: 6px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10;
  padding: 3px 12px;
  background: #264f78;
  color: #fff;
  border-radius: 3px;
  font-size: 11px;
  pointer-events: none;
  user-select: none;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
/* tmux 命令提示符浮层（prefix+:）——贴着底部状态栏上方 */
.tmux-cmd-prompt__overlay {
  position: absolute;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding-bottom: 32px;
  /* 贴着 statusbar 上方 */
  background: rgba(0, 0, 0, 0.15);
  pointer-events: auto;
}
.tmux-cmd-prompt {
  display: flex;
  flex-direction: column;
  width: min(560px, 80%);
  background: #252526;
  border: 1px solid #4ec9b0;
  border-radius: 4px;
  box-shadow: 0 -4px 24px rgba(0, 0, 0, 0.4);
  overflow: hidden;
  /* 响应上拉：放在 input 上方 */
}
.tmux-cmd-prompt__response {
  padding: 8px 12px;
  max-height: 160px;
  overflow-y: auto;
  background: #1e1e1e;
  border-bottom: 1px solid #3c3c3c;
  color: #b5cea8;
  font-family: 'SF Mono', Menlo, monospace;
  font-size: 12px;
  line-height: 1.45;
  white-space: pre-wrap;
  word-break: break-all;
}
.tmux-cmd-prompt__response--error {
  color: #f48771;
  border-bottom-color: #5a1d1d;
}
.tmux-cmd-prompt__row {
  display: flex;
  align-items: center;
}
.tmux-cmd-prompt__prefix {
  flex: 0 0 auto;
  padding: 0 8px;
  color: #4ec9b0;
  font-family: 'SF Mono', Menlo, monospace;
  font-size: 14px;
  font-weight: 700;
}
.tmux-cmd-prompt__input {
  flex: 1;
  min-width: 0;
  padding: 8px 10px 8px 0;
  background: transparent;
  border: none;
  outline: none;
  color: #d4d4d4;
  font-family: 'SF Mono', Menlo, monospace;
  font-size: 13px;
}
.tmux-cmd-prompt__input::placeholder {
  color: #6a6a6a;
}
/* prefix 快捷键浮层（rename-window / kill-window / help / window-list / session-list） */
.tmux-overlay {
  position: absolute;
  inset: 0;
  z-index: 25;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.35);
  pointer-events: auto;
}
.tmux-dialog {
  width: min(420px, 80%);
  background: #252526;
  border: 1px solid #4ec9b0;
  border-radius: 4px;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
  overflow: hidden;
  font-family: 'SF Mono', Menlo, monospace;
}
.tmux-dialog__title {
  padding: 8px 12px;
  color: #4ec9b0;
  font-size: 13px;
  font-weight: 700;
  border-bottom: 1px solid #3c3c3c;
}
.tmux-dialog__desc {
  padding: 8px 12px;
  color: #b5b5b5;
  font-size: 12px;
}
.tmux-dialog__input {
  width: calc(100% - 24px);
  margin: 10px 12px;
  padding: 6px 8px;
  background: #1e1e1e;
  border: 1px solid #4ec9b0;
  border-radius: 2px;
  color: #d4d4d4;
  font-size: 13px;
  font-family: inherit;
  outline: none;
}
.tmux-dialog__input:focus {
  border-color: #6ce0c4;
}
.tmux-dialog__actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 8px 12px;
  border-top: 1px solid #3c3c3c;
}
.tmux-dialog__btn {
  padding: 4px 14px;
  background: #3c3c3c;
  border: 1px solid #555;
  border-radius: 3px;
  color: #d4d4d4;
  font-size: 12px;
  font-family: inherit;
  cursor: pointer;
}
.tmux-dialog__btn:hover {
  background: #4a4a4a;
}
.tmux-dialog__btn--primary {
  background: #2d6a5f;
  border-color: #4ec9b0;
  color: #fff;
}
.tmux-dialog__btn--primary:hover {
  background: #357d70;
}
.tmux-dialog__btn--danger {
  background: #5a1d1d;
  border-color: #f48771;
  color: #fff;
}
.tmux-dialog__btn--danger:hover {
  background: #6f2424;
}
.tmux-dialog--help {
  width: min(520px, 85%);
}
.tmux-dialog__help-list {
  max-height: 320px;
  overflow-y: auto;
  padding: 6px 12px;
}
.tmux-dialog__help-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 3px 0;
  font-size: 12px;
}
.tmux-dialog__help-key {
  flex: 0 0 90px;
  color: #4ec9b0;
  font-weight: 600;
}
.tmux-dialog__help-desc {
  color: #b5b5b5;
}
.tmux-dialog--list {
  width: min(360px, 75%);
}
.tmux-dialog__list {
  max-height: 280px;
  overflow-y: auto;
  padding: 4px 0;
}
.tmux-dialog__list-empty {
  padding: 12px;
  color: #6a6a6a;
  font-size: 12px;
  text-align: center;
}
.tmux-dialog__list-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 12px;
  cursor: pointer;
  font-size: 12px;
  color: #d4d4d4;
}
.tmux-dialog__list-item:hover {
  background: #2d2d2d;
}
.tmux-dialog__list-item--active {
  background: #2d6a5f;
  color: #fff;
}
.tmux-dialog__list-idx {
  flex: 0 0 24px;
  color: #888;
}
.tmux-dialog__list-name {
  flex: 1;
}
.tmux-dialog__list-mark {
  color: #4ec9b0;
}
/*# sourceMappingURL=styles.css.map */
.lh-terminal-box {
  position: relative;
}
.orcaterm-agent-approval {
  position: absolute;
  z-index: 12;
  right: 16px;
  bottom: 16px;
  left: 16px;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  box-sizing: border-box;
  min-height: 68px;
  padding: 12px 14px;
  border: 1px solid var(--ot-border-background);
  border-radius: 10px;
  color: var(--ot-font-color-primary);
  background: var(--ot-top-background-color-2);
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
}
.orcaterm-agent-approval__content {
  min-width: 0;
  flex: 1 1 240px;
}
.orcaterm-agent-approval__provider {
  color: var(--ot-font-color-secondary);
  font-size: 11px;
  line-height: 16px;
}
.orcaterm-agent-approval__title {
  overflow: hidden;
  margin-top: 1px;
  font-size: 13px;
  font-weight: 600;
  line-height: 20px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.orcaterm-agent-approval__preview {
  overflow: hidden;
  margin-top: 2px;
  color: var(--ot-font-color-secondary);
  font-family: Menlo, Monaco, Consolas, monospace;
  font-size: 11px;
  line-height: 16px;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.orcaterm-agent-approval__error {
  margin-top: 2px;
  color: var(--OT-Color-Accent-Text-Error-Default, #e54f40);
  font-size: 11px;
  line-height: 16px;
}
.orcaterm-agent-approval__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
  flex: 0 1 auto;
}
.orcaterm-agent-approval__action {
  min-width: 64px;
  height: 30px;
  padding: 0 12px;
  border: 1px solid transparent;
  border-radius: 6px;
  color: var(--ot-font-color-primary);
  background: var(--ot-background-color-12);
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}
.orcaterm-agent-approval__action.is-warning {
  border-color: rgba(217, 140, 38, 0.6);
  color: #fff;
  background: #d98c26;
}
.orcaterm-agent-approval__action.is-primary {
  color: #151515;
  background: #f1ead9;
}
.orcaterm-agent-approval__action.is-destructive {
  color: var(--OT-Color-Accent-Text-Error-Default, #e54f40);
}
.orcaterm-agent-approval__action:focus-visible {
  outline: 2px solid var(--ot-font-color-1);
  outline-offset: 2px;
}
.orcaterm-agent-approval__action:disabled {
  opacity: 0.52;
  cursor: wait;
}
@media (max-width: 720px) {
  .orcaterm-agent-approval {
    align-items: stretch;
    flex-direction: column;
    gap: 10px;
  }
  .orcaterm-agent-approval__actions {
    width: 100%;
  }
  .orcaterm-agent-approval__action {
    min-width: 0;
    flex: 1;
  }
}
/*# sourceMappingURL=AgentApprovalBar.css.map */
[theme='dark'] .ot-failure-hint {
  --ot-failure-hint-text: #ffffff;
}
[theme='light'] .ot-failure-hint {
  --ot-failure-hint-text: #4b4b4b;
}
.ot-failure-hint {
  --ot-failure-hint-ai-start: #847dfd;
  --ot-failure-hint-ai-end: #feaecb;
  display: flex;
  align-items: center;
  gap: 8px;
  box-sizing: border-box;
  width: 100%;
  margin: 0;
  padding: 0 0 0 12px;
  background: transparent;
  border-left: 2px solid var(--ot-color-gray-opacity-12);
  user-select: none;
  white-space: nowrap;
  transition: opacity 0.6s ease;
}
.ot-failure-hint__info {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.ot-failure-hint__star {
  position: relative;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  flex: none;
  width: 14px;
  height: 14px;
}
.ot-failure-hint__star > svg {
  width: 14px;
  height: 14px;
}
.ot-failure-hint__gradient-start {
  stop-color: var(--ot-failure-hint-ai-start);
}
.ot-failure-hint__gradient-end {
  stop-color: var(--ot-failure-hint-ai-end);
}
.ot-failure-hint__message {
  color: var(--ot-failure-hint-text);
  font-family: inherit;
  font-size: 12px;
  line-height: 18px;
}
.ot-failure-hint__ai-text {
  font-family: inherit;
}
.ot-failure-hint__actions {
  display: inline-flex;
  align-items: center;
  flex: none;
  gap: 6px;
}
.ot-failure-hint__divider {
  display: block;
  flex: none;
  width: 1px;
  height: 12px;
  background: var(--ot-color-gray-opacity-12);
}
.ot-failure-hint__close {
  box-sizing: border-box;
  height: 18px;
  padding: 0 4px;
  color: var(--ot-failure-hint-text);
  background: transparent;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  appearance: none;
  opacity: 0.55;
  font-family: inherit;
  font-size: 12px;
  line-height: 18px;
  transition: opacity 0.12s;
}
.ot-failure-hint__close:hover {
  opacity: 0.9;
}
.ot-failure-hint__cta {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  box-sizing: border-box;
  height: 18px;
  padding: 0 6px;
  color: var(--ot-failure-hint-ai-start);
  background: transparent;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  appearance: none;
}
.ot-failure-hint__cta:disabled {
  opacity: 0.48;
  cursor: default;
}
.ot-failure-hint__cta-text {
  position: relative;
  z-index: 1;
  display: inline-block;
  color: var(--ot-failure-hint-ai-start);
  background: linear-gradient(90deg, var(--ot-failure-hint-ai-start) 35.621%, var(--ot-failure-hint-ai-end) 100%);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  font-size: 12px;
  font-weight: 400;
  line-height: 18px;
}
.ot-failure-hint__cta-ai {
  font-family: inherit;
}
.ot-failure-hint__cta-label {
  font-family: inherit;
}
.ot-failure-hint.is-dimmed .ot-failure-hint__info,
.ot-failure-hint.is-dimmed .ot-failure-hint__divider {
  opacity: 0.3;
}
.ot-failure-hint.is-dimmed .ot-failure-hint__cta {
  opacity: 0.3;
  transition: opacity 0.6s ease;
}
.ot-failure-hint.is-dimmed .ot-failure-hint__cta:hover:not(:disabled) {
  opacity: 1;
  transition: opacity 0.12s ease;
}
.ot-failure-hint.is-dimmed .ot-failure-hint__close {
  opacity: 0.3;
  transition: opacity 0.6s ease;
}
.ot-failure-hint.is-dimmed .ot-failure-hint__close:hover {
  opacity: 0.9;
  transition: opacity 0.12s ease;
}
/*# sourceMappingURL=FailureHint.css.map */
[theme=dark] {
  --ot-inline-overlay-text: rgba(220, 220, 220, 0.95);
  --ot-inline-overlay-bg: #1e1e1e;
  --ot-inline-overlay-loading-muted: rgba(255, 255, 255, 0.22);
  --ot-inline-overlay-loading-primary: rgba(255, 255, 255, 0.83);
  --ot-inline-overlay-abort: #ff5e4f;
  --ot-inline-overlay-confirm-bg: #000000;
  --ot-inline-overlay-confirm-header-bg: rgba(255, 255, 255, 0.08);
  --ot-inline-overlay-confirm-border: rgba(255, 255, 255, 0.12);
  --ot-inline-overlay-confirm-secondary-bg: rgba(255, 255, 255, 0.12);
  --ot-inline-overlay-confirm-secondary-text: rgba(255, 255, 255, 0.92);
  --ot-inline-overlay-confirm-shortcut: rgba(255, 255, 255, 0.36);
  --ot-inline-overlay-confirm-primary-shortcut: #a6a6a6;
  --ot-inline-overlay-confirm-primary-bg: #ffffff;
  --ot-inline-overlay-confirm-primary-text: #000000;
  --ot-inline-overlay-confirm-prompt: #c5c5c5;
  --ot-inline-overlay-command-text: #95eff1;
  --ot-inline-overlay-command-name: #82bcff;
  --ot-inline-overlay-confirm-success: #3cc76a;
  --ot-inline-overlay-confirm-error: #ff5e4f;
  --ot-inline-overlay-confirm-focus: #339cff;
  --ot-inline-overlay-footer-divider: rgba(255, 255, 255, 0.16);
  --ot-inline-overlay-scrollbar-thumb: rgba(255, 255, 255, 0.15);
  --ot-inline-overlay-code-bg: rgba(60, 60, 60, 0.55);
  --ot-inline-overlay-code-border: rgba(120, 200, 255, 0.25);
  --ot-inline-overlay-code-text: rgba(245, 245, 245, 0.95);
  --ot-inline-overlay-run-text: #1e1e1e;
  --ot-inline-overlay-run-bg: rgba(120, 200, 255, 0.85);
  --ot-inline-overlay-run-bg-hover: #96d7ff;
}
[theme=light] {
  --ot-inline-overlay-text: rgba(0, 0, 0, 0.85);
  --ot-inline-overlay-bg: #ffffff;
  --ot-inline-overlay-loading-muted: rgba(0, 0, 0, 0.22);
  --ot-inline-overlay-loading-primary: rgba(0, 0, 0, 0.83);
  --ot-inline-overlay-abort: #e54537;
  --ot-inline-overlay-confirm-bg: #ffffff;
  --ot-inline-overlay-confirm-header-bg: rgba(0, 0, 0, 0.08);
  --ot-inline-overlay-confirm-border: rgba(0, 0, 0, 0.12);
  --ot-inline-overlay-confirm-secondary-bg: rgba(0, 0, 0, 0.12);
  --ot-inline-overlay-confirm-secondary-text: rgba(0, 0, 0, 0.92);
  --ot-inline-overlay-confirm-shortcut: rgba(0, 0, 0, 0.36);
  --ot-inline-overlay-confirm-primary-shortcut: rgba(255, 255, 255, 0.55);
  --ot-inline-overlay-confirm-primary-bg: #000000;
  --ot-inline-overlay-confirm-primary-text: #ffffff;
  --ot-inline-overlay-confirm-prompt: #000000;
  --ot-inline-overlay-command-text: #249bb2;
  --ot-inline-overlay-command-name: #3d67cc;
  --ot-inline-overlay-confirm-success: #038f32;
  --ot-inline-overlay-confirm-error: #db4739;
  --ot-inline-overlay-confirm-focus: #0f8fff;
  --ot-inline-overlay-footer-divider: rgba(0, 0, 0, 0.16);
  --ot-inline-overlay-scrollbar-thumb: rgba(0, 0, 0, 0.15);
  --ot-inline-overlay-code-bg: rgba(0, 0, 0, 0.05);
  --ot-inline-overlay-code-border: rgba(0, 110, 255, 0.25);
  --ot-inline-overlay-code-text: #24292e;
  --ot-inline-overlay-run-text: #ffffff;
  --ot-inline-overlay-run-bg: rgba(0, 110, 255, 0.85);
  --ot-inline-overlay-run-bg-hover: #006eff;
}
[theme=light] .ot-inline-overlay-thinking-dot__outer,
[theme=light] .ot-inline-overlay-thinking-dot__inner {
  filter: invert(1);
}
.ot-inline-overlay-root {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 5;
  overflow: hidden;
  pointer-events: none;
}
.ot-inline-overlay-streaming {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  box-sizing: border-box;
  color: var(--ot-inline-overlay-text);
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
  overflow: hidden;
  pointer-events: auto;
  -webkit-user-select: text;
  user-select: text;
}
.ot-inline-overlay-failure-host {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  box-sizing: border-box;
  font-family: inherit;
  font-size: inherit;
  line-height: 1;
  margin: 0;
  overflow: visible;
  padding: 0;
  pointer-events: auto;
  user-select: none;
  display: flex;
  align-items: center;
}
.ot-inline-overlay-shell {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  margin-top: 5px;
}
.ot-inline-overlay-shell.is-finalized {
  height: calc(100% - 5px);
}
.ot-inline-overlay-shell.is-canceled {
  margin-top: 0;
}
.ot-inline-overlay-shell.is-canceled.is-finalized {
  height: 100%;
}
.ot-inline-overlay-shell.is-canceled > .ot-inline-overlay-spacer {
  display: none;
}
.ot-inline-overlay-shell.is-canceled .ot-inline-overlay-content.is-response {
  min-height: 20px;
}
.ot-inline-overlay-spacer {
  height: 5px;
}
.ot-inline-overlay-loading {
  display: flex;
  flex: none;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.ot-inline-overlay-loading > :first-child {
  width: 16px;
  height: 16px;
  flex: none;
}
.ot-inline-overlay-thinking-dot {
  position: relative;
  display: block;
  transform-origin: center;
  animation: ot-inline-overlay-thinking-breathe 1.6s ease-in-out infinite;
}
.ot-inline-overlay-thinking-dot__outer,
.ot-inline-overlay-thinking-dot__inner {
  position: absolute;
  display: block;
}
.ot-inline-overlay-thinking-dot__outer {
  top: 1px;
  left: 1px;
  width: 14px;
  height: 14px;
}
.ot-inline-overlay-thinking-dot__inner {
  top: 5px;
  left: 5px;
  width: 6px;
  height: 6px;
}
.ot-inline-overlay-line.ot-inline-overlay-loading-line {
  box-sizing: border-box;
  justify-content: flex-start;
  gap: 12px;
  min-height: 20px;
  padding: 0;
  padding-left: 12px;
  border-left: 2px solid var(--ot-color-gray-opacity-12);
  line-height: 20px;
  text-indent: 0;
}
.ot-inline-overlay-loading-divider {
  display: block;
  flex: none;
  width: 1px;
  height: 16px;
  background: var(--ot-color-gray-opacity-12);
}
.ot-inline-overlay-loading-text {
  color: transparent;
  font-family: inherit;
  font-size: 12px;
  font-weight: 400;
  white-space: nowrap;
  background: linear-gradient(90deg, var(--ot-inline-overlay-loading-muted) 0%, var(--ot-inline-overlay-loading-primary) 35.577%, var(--ot-inline-overlay-loading-muted) 100%);
  background-size: 200% 100%;
  background-position: 100% 0;
  background-clip: text;
  -webkit-background-clip: text;
  animation: ot-inline-overlay-loading-shimmer 1.6s linear infinite;
}
.ot-inline-overlay-loading-ai {
  font-family: inherit;
}
@keyframes ot-inline-overlay-loading-shimmer {
  from {
    background-position: 100% 0;
  }
  to {
    background-position: -100% 0;
  }
}
@keyframes ot-inline-overlay-thinking-breathe {
  0%,
  100% {
    opacity: 0.45;
    transform: scale(0.88);
  }
  50% {
    opacity: 1;
    transform: scale(1);
  }
}
.ot-inline-overlay-abort {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  color: var(--ot-inline-overlay-abort);
  font-family: inherit;
  font-size: 12px;
  line-height: 20px;
  white-space: nowrap;
  cursor: pointer;
}
.ot-inline-overlay-loading-abort {
  flex: none;
}
.ot-inline-overlay-scroller {
  flex: 1;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 0 4px 4px 0;
  line-height: 22px;
  text-indent: 5px;
}
.ot-inline-overlay-scroller::-webkit-scrollbar {
  width: 3px;
}
.ot-inline-overlay-scroller::-webkit-scrollbar-thumb {
  background-color: var(--scroll-bar-color);
  border: none;
  border-radius: 3px;
}
.ot-inline-overlay-scroller::-webkit-scrollbar-track {
  background: transparent;
}
.ot-inline-overlay-content {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.ot-inline-overlay-content.is-response {
  min-height: 45px;
  border-left: 2px solid var(--ot-color-gray-opacity-12);
  padding-left: 12px;
}
.ot-inline-overlay-content .chat-streaming-markdown.ot-inline-overlay-markdown {
  padding-block: 0;
  padding: 0;
}
.ot-inline-overlay-line {
  white-space: pre-wrap;
  word-break: break-word;
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.ot-inline-overlay-markdown {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  padding: 0 10px;
  text-indent: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.ot-inline-overlay-markdown .code-block-skeleton {
  display: none;
}
.ot-inline-overlay-confirm {
  width: 100%;
  box-sizing: border-box;
  margin: 0;
  overflow: hidden;
  padding: 0;
  border: 1px solid var(--ot-inline-overlay-confirm-border);
  border-radius: 6px;
  font-size: 12px;
  text-indent: 0;
  outline: none;
}
.ot-inline-overlay-confirm.is-editing {
  border-color: var(--ot-inline-overlay-confirm-focus);
}
.ot-inline-overlay-confirm-command {
  display: flex;
  align-items: baseline;
  width: 100%;
  max-height: 240px;
  box-sizing: border-box;
  overflow: auto;
  padding: 8px 12px;
  color: var(--ot-inline-overlay-command-text);
  font-family: inherit;
  font-size: 12px;
  line-height: 20px;
  white-space: pre-wrap;
  word-break: break-all;
}
.ot-inline-overlay-confirm-header {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  box-sizing: border-box;
  padding: 6px 6px 6px 12px;
  background: var(--ot-inline-overlay-confirm-header-bg);
}
.ot-inline-overlay-confirm-header.is-executed {
  padding: 0 0 0 12px;
}
.ot-inline-overlay-confirm-title {
  flex: 1;
  min-width: 0;
  padding: 0;
  color: var(--ot-inline-overlay-confirm-secondary-text);
  font-family: inherit;
  font-size: 12px;
  line-height: 24px;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.ot-inline-overlay-confirm-layout {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  width: 100%;
}
.ot-inline-overlay-answer {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  width: 100%;
  box-sizing: border-box;
  min-width: 0;
  color: var(--ot-inline-overlay-confirm-prompt);
  line-height: 24px;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  padding-top: 8px;
}
.ot-inline-overlay-answer .ot-inline-overlay-markdown {
  flex: 1;
  min-width: 0;
  padding: 0;
}
.ot-inline-overlay-answer-star {
  display: inline-flex;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
  margin-top: 5px;
}
.ot-inline-overlay-answer-star svg {
  width: 14px;
  height: 14px;
}
.ot-inline-overlay-confirm-prompt {
  flex: none;
  color: var(--ot-inline-overlay-confirm-prompt);
}
.ot-inline-overlay-confirm-value {
  min-width: 0;
}
.ot-inline-overlay-confirm-name {
  color: var(--ot-inline-overlay-command-name);
}
.ot-inline-overlay-confirm-input {
  flex: 1;
  width: 100%;
  height: 20px;
  min-width: 0;
  box-sizing: border-box;
  margin: 0;
  padding: 0 !important;
  color: var(--ot-inline-overlay-command-text);
  background: transparent !important;
  border: 0 !important;
  border-radius: 0;
  box-shadow: none !important;
  caret-color: var(--ot-inline-overlay-confirm-focus);
  outline: none !important;
  appearance: none;
  font: inherit;
  line-height: 20px;
  vertical-align: top;
}
.ot-inline-overlay-confirm-input:hover,
.ot-inline-overlay-confirm-input:focus {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  outline: none !important;
}
.ot-inline-overlay-confirm-actions {
  display: flex;
  flex: none;
  gap: 8px;
  flex-wrap: nowrap;
  align-items: center;
  box-sizing: border-box;
  min-height: 24px;
  overflow: visible;
  padding: 0;
}
.ot-inline-overlay-confirm-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  box-sizing: border-box;
  overflow: hidden;
  padding: 2px 8px;
  color: var(--ot-inline-overlay-confirm-secondary-text);
  background: var(--ot-inline-overlay-confirm-secondary-bg);
  border: 0;
  border-radius: 4px;
  appearance: none;
  cursor: pointer;
  font-family: inherit;
  font-size: 12px;
  line-height: 20px;
  white-space: nowrap;
}
.ot-inline-overlay-confirm-button:disabled {
  opacity: 0.4;
  cursor: default;
}
.ot-inline-overlay-confirm-button.is-primary {
  color: var(--ot-inline-overlay-confirm-primary-text);
  background: var(--ot-inline-overlay-confirm-primary-bg);
  font-weight: 500;
}
.ot-inline-overlay-confirm-button.is-primary .ot-inline-overlay-confirm-shortcut {
  color: var(--ot-inline-overlay-confirm-primary-shortcut);
}
.ot-inline-overlay-confirm-shortcut {
  color: var(--ot-inline-overlay-confirm-shortcut);
  font-family: inherit;
  font-weight: 400;
}
.ot-inline-overlay-confirm-state,
.ot-inline-overlay-new-session-status {
  font-size: 12px;
  line-height: 20px;
}
.ot-inline-overlay-confirm-state {
  display: flex;
  flex: 1;
  align-items: center;
  gap: 8px;
  min-width: 0;
  padding: 2px 0;
  line-height: 24px;
}
.ot-inline-overlay-confirm-state.is-success {
  color: var(--ot-inline-overlay-confirm-success);
}
.ot-inline-overlay-confirm-state.is-error {
  color: var(--ot-inline-overlay-confirm-error);
}
.ot-inline-overlay-confirm-state-icon {
  display: block;
  flex: none;
  width: 16px;
  height: 16px;
}
.ot-inline-overlay-new-session-status {
  color: var(--ot-inline-overlay-confirm-secondary-text);
}
.ot-inline-overlay-feedback {
  display: flex;
}
.ot-inline-overlay-feedback button {
  padding: 8px !important;
}
.ot-inline-overlay-feedback .chat-action {
  border: none;
}
.ot-inline-overlay-feedback .chat-action > span {
  display: none;
}
.ot-inline-overlay-footer-divider {
  flex: none;
  width: 1px;
  height: 16px;
  margin: 0 4px;
  background: var(--ot-inline-overlay-footer-divider);
}
.ot-inline-overlay-new-session-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  box-sizing: border-box;
  min-width: 0;
  height: 24px;
  padding: 2px 8px;
  color: var(--ot-inline-overlay-confirm-secondary-text);
  background: transparent;
  border: 0;
  border-radius: 4px;
  appearance: none;
  cursor: pointer;
  font-family: inherit;
  font-size: 12px;
  line-height: 20px;
  white-space: nowrap;
}
.ot-inline-overlay-new-session-button:hover {
  background: var(--ot-inline-overlay-confirm-secondary-bg);
}
.ot-inline-overlay-canceled {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 20px;
  color: var(--ot-inline-overlay-confirm-error);
}
/** 回答完成后的操作栏：点赞/踩 + 新建会话 */
.overlay-footer {
  display: flex;
  align-items: center;
  gap: 4px;
  box-sizing: border-box;
  width: 100%;
  margin-top: 5px;
  margin-bottom: 0;
  padding-bottom: 5px;
}
.ot-inline-overlay-code {
  position: relative;
  margin: 6px 0;
  padding: 8px 36px 8px 10px;
  background: var(--ot-inline-overlay-code-bg);
  border: 1px solid var(--ot-inline-overlay-code-border);
  border-radius: 4px;
}
.ot-inline-overlay-code-body {
  margin: 0;
  white-space: pre;
  color: var(--ot-inline-overlay-code-text);
  font-family: inherit;
  font-size: 12px;
  line-height: 1.45;
  overflow-x: auto;
}
.ot-inline-overlay-run {
  position: absolute;
  top: 6px;
  right: 6px;
  width: 22px;
  height: 22px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  color: var(--ot-inline-overlay-run-text);
  background: var(--ot-inline-overlay-run-bg);
  border: none;
  border-radius: 50%;
  cursor: pointer;
  transition: background 0.12s, transform 0.08s;
}
.ot-inline-overlay-run:hover {
  background: var(--ot-inline-overlay-run-bg-hover);
  transform: scale(1.08);
}
.ot-inline-overlay-run:active {
  transform: scale(0.95);
}
.ot-inline-overlay-root .ot-inline-overlay-shell .ot-inline-overlay-markdown ol,
.ot-inline-overlay-root .ot-inline-overlay-shell .ot-inline-overlay-markdown ul {
  margin-top: 0;
  padding-inline-start: 25px;
}
.ot-inline-overlay-root .ot-inline-overlay-shell .chat-streaming-markdown p,
.ot-inline-overlay-root .ot-inline-overlay-shell .chat-streaming-markdown ul li,
.ot-inline-overlay-root .ot-inline-overlay-shell .chat-streaming-markdown .chat-ui-md-table-wrap,
.ot-inline-overlay-root .ot-inline-overlay-shell .chat-streaming-markdown ol li {
  margin-top: 0;
}
.ot-inline-overlay-root .ot-inline-overlay-shell .chat-streaming-markdown table th {
  padding: 3px 6px;
}
.ot-inline-overlay-shell .chat-streaming-markdown,
.ot-inline-overlay-shell .chat-streaming-markdown *,
.ot-inline-overlay-shell button,
.ot-inline-overlay-shell input {
  font-family: inherit;
}
/*# sourceMappingURL=inline-overlay.css.map */
[theme='dark'] {
  --ot-ps1-placeholder-text: rgba(255, 255, 255, 0.36);
}
[theme='light'] {
  --ot-ps1-placeholder-text: rgba(0, 0, 0, 0.36);
}
.ot-ps1-placeholder {
  display: inline-flex;
  align-items: center;
  height: 100%;
  pointer-events: auto;
  user-select: none;
  font-family: 'PingFang SC', sans-serif;
  font-size: 12px;
  font-weight: 400;
  line-height: 24px;
  color: var(--ot-ps1-placeholder-text, rgba(255, 255, 255, 0.36));
  white-space: nowrap;
}
.ot-ps1-placeholder__mono {
  font-family: 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
}
.ot-ps1-placeholder__mono {
  font-weight: 500;
}
.ot-ps1-placeholder__shortcut {
  display: inline-flex;
  align-items: center;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  cursor: pointer;
}
.ot-ps1-placeholder__shortcut.is-agent {
  color: #339cff;
}
.ot-ps1-placeholder__shortcut.is-shell {
  color: #8870ff;
}
.ot-ps1-placeholder__shortcut-key {
  display: inline-block;
}
.ot-ps1-placeholder__shortcut-key + .ot-ps1-placeholder__shortcut-key {
  margin-left: 2px;
}
/* 字母/数字键走等宽字体族：这类字体的 I 带上下横杠、1 带底座，可明显区分 I 与 1 */
.ot-ps1-placeholder__shortcut-key--literal {
  font-family: 'SF Mono', SFMono-Regular, Menlo, Consolas, monospace;
  font-weight: 500;
}
/*# sourceMappingURL=ps1-placeholder.css.map */
.sftp-row-context-menu {
  padding: 4px;
  min-width: 108px;
  border: 1px solid var(--OT-Color-Border-Gray-Secondary);
  background-color: var(--OT-Color-Fill-Gray-Page-Primary);
  border-radius: 4px;
  box-shadow: 0 8px 12px -8px rgba(0, 0, 0, 0.06), 0 4px 24px -4px rgba(0, 0, 0, 0.12);
  overflow: hidden;
}
.sftp-row-context-menu ul.tea-list--option {
  max-height: 600px;
}
.sftp-row-context-menu ul.tea-list--option li {
  padding: 6px 12px;
  line-height: 20px;
  color: var(--OT-Color-Text-Gray-Primary);
  cursor: pointer;
  white-space: nowrap;
}
.sftp-row-context-menu ul.tea-list--option li:hover {
  background-color: var(--OT-Color-Fill-Gray-Primary-Selected);
}
.sftp-ui-table.tea-table .table-header-search.is-selected .tea-form--search {
  top: -2px !important;
}
.ot-file-manager-pane .sftp-ui .sftp-ui-table.tea-table .tea-table__body tr.normal:hover td .sftp-ui-table__operation {
  display: flex;
  left: 100%;
  right: unset;
  height: 30px;
  top: calc(50% - 15px);
  align-items: center;
  z-index: 1;
  background-color: var(--ot-background-color-8);
}
.ot-file-manager-pane .sftp-ui .sftp-ui-table.tea-table.one-col .tea-table__body tr.normal:hover td .sftp-ui-table__operation {
  transform: translate(-100%, 0);
}
.ot-file-manager-pane .sftp-ui .sftp-ui-table.tea-table.one-col .tea-table__body tr.normal:hover td .sftp-ui-table__operation-item:not(.is-more) {
  display: none;
}
.ot-file-manager-pane .orcaterm-command-library.sftp-panel .command-library-header {
  cursor: grab;
}
/*# sourceMappingURL=FileList.css.map */
.ot-file-view {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  --bd-tabs-height-default: 30px;
}
.ot-file-view .bd-tea-tabs__tabpanel {
  height: calc(100% - var(--bd-tabs-height-default));
  padding: 4px;
}
.ot-file-view .sftp-ui-edit-terminal {
  margin-top: 0;
  padding: 10px;
  height: calc(100% - 20px);
  box-sizing: border-box;
}
.ot-file-view .ot-file-markdown-preview {
  position: relative;
  height: 100%;
  overflow: hidden;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-toolbar {
  position: absolute;
  top: 0px;
  right: 12px;
  z-index: 10;
  display: flex;
  gap: 8px;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-toolbar .tea-btn {
  padding: 0 12px!important;
  height: 24px;
  line-height: 24px;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body {
  height: 100%;
  overflow: auto;
  padding: 16px 24px;
  background: transparent;
  box-sizing: border-box;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ul {
  list-style-type: disc;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ol {
  list-style-type: decimal;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ul ul {
  list-style-type: circle;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ul ul ul {
  list-style-type: square;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ol ol,
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ul ol {
  list-style-type: lower-roman;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ul ul ol,
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ul ol ol,
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ol ul ol,
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-body .wmde-markdown ol ol ol {
  list-style-type: lower-alpha;
}
.ot-file-view .ot-file-markdown-preview .ot-file-markdown-editor {
  height: 100%;
  overflow: hidden;
}
/*# sourceMappingURL=style.css.map */
.ot-file-manager-pane {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
  background: var(--ot-editor-background-color, #fff);
  overflow: hidden;
}
.ot-file-manager-pane .sftp-panel.ot-file-manager {
  display: flex;
  flex-direction: column;
}
.ot-file-manager-pane__header {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  min-width: 0;
  gap: 8px;
}
.ot-file-manager-pane__header > .text {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ot-file-manager-pane__header .btn-groups {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
}
.ot-file-manager-pane__header .btn-groups > * {
  flex-shrink: 0;
}
.ot-file-manager-pane__header .btn-groups-line {
  flex: 0 0 auto;
  width: 1px;
  height: 16px;
  background-color: var(--OT-Color-Border-Gray-Secondary, #383838);
}
.ot-file-manager-pane__header .ot-file-manager-pane__close-btn,
.ot-file-manager-pane__header .ot-file-manager-pane__zoom-btn {
  flex: 0 0 auto;
}
.ot-file-manager-pane__body {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.ot-file-manager-pane.is-wide .ot-file-manager-pane__body {
  flex-direction: row;
}
.ot-file-manager-pane__body > .sftp-ui {
  flex: 1 1 100%;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}
.ot-file-manager-pane.has-open-files .ot-file-manager-pane__body > .sftp-ui {
  flex: 0 0 var(--list-size, 260px);
}
.ot-file-manager-pane__loading {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  color: var(--ot-text-color-secondary, #888);
}
.ot-file-manager-pane__resizer {
  flex-shrink: 0;
  z-index: 3;
  background: var(--ot-background-color-3, #e5e5e5);
  transition: background 0.2s;
  width: 100%;
  height: 2px;
  cursor: row-resize;
}
.ot-file-manager-pane__resizer:hover {
  background: var(--ot-font-color-1, #006eff);
  transform: scaleX(2);
}
.ot-file-manager-pane__resizer.is-wide {
  width: 2px;
  height: 100%;
  cursor: col-resize;
}
.ot-file-manager-pane__editor-side {
  flex: 1 1 0;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  background: var(--ot-editor-background-color, #fff);
}
.ot-file-manager-pane__editor-side .binary-file {
  background-color: var(--ot-file-editor-background-color);
}
.ot-file-manager-pane__editor-side .ot-file-loading {
  display: flex;
  justify-content: center;
}
.ot-file-manager-pane__editor-side .ot-file-loading .loading-file {
  display: flex;
  gap: 2px;
  align-items: center;
}
.ot-file-manager-pane__editor-side .ot-file-error-container {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  height: 100%;
  background-color: var(--ot-file-editor-background-color);
}
.ot-file-manager-pane__editor-side .loadfile-error.editor-file-error {
  background-color: var(--ot-file-editor-background-color);
}
/*# sourceMappingURL=FileManagerPane.css.map */
.orcaterm-command-library.sftp-panel.ot-file-manager {
  transition: none;
  width: 100%;
  box-sizing: border-box;
  border-right: none;
}
.orcaterm-command-library.sftp-panel.ot-file-manager .orcaterm-command-library-inner {
  width: 100%;
  min-width: 280px;
  max-width: 680px;
  box-sizing: border-box;
}
.orcaterm-command-library.sftp-panel.visible.win-panel {
  width: unset !important;
}
.orcaterm-command-library.sftp-panel.visible.win-panel .orcaterm-command-library-inner {
  width: unset !important;
}
/*# sourceMappingURL=FileList.css.map */
.ot-feature-guide-card {
  --ot-feature-guide-badge-gradient: linear-gradient(90deg, #06a8ff 64%, #0ae0a3 100%);
  position: relative;
  width: 348px;
  overflow: hidden;
  /* 进场动画：挂载时整体自右侧滑入（分镜：无卡帧 → 卡片入位右下角） */
  animation: ot-feature-guide-enter 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) both;
  /* 卡片内容（文字/页码等）不允许被选中 */
  user-select: none;
  background: var(--color-gray-950);
  border: 1px solid var(--color-gray-opacity-8);
  border-radius: 8px;
  box-shadow: 0 4px 24px -4px var(--Color-Other-Shadow-2), 0 8px 12px -8px var(--Color-Other-Shadow-1);
  /* 悬浮形态：固定在视口右下角（设计稿：距右 8px、距底 40px） */
  /* 出场：与进场镜像，向右滑出（点击关闭后播放，结束后触发 onClose） */
  /* 切换动效容器：封面(160) + 信息区(120)。
     overflow 裁剪平移与滚动溢出（平移量 = 卡宽 + 80px 间距，分镜实测 428px） */
  /* 封面层：随卡片水平平移交换 */
  /* 文字层：不随卡横滑，标题/描述级联滚动（间隔 100ms）；
     徽标不参与过渡动画，瞬时切换（所有页共用同一徽标） */
  /* 关闭按钮（设计导出的 Button_ICON PNG：24px 浅色圆盘 + 白色 X，圆盘背景即按钮本体） */
  /* notice 变体：切换为橘色渐变 */
  /* 图标与文字共用同一渐变：渐变作背景，mask 挖出图标形状 */
  /* 操作区（设计：flex gap-12 items-end，内距 上8/下16/左右16；
     pager 占满剩余空间把两个按钮推到右侧相邻排列） */
  /* 当前页码：切换时上滚入场（key 重挂载触发） */
  /* 主按钮（立即体验）——与文档链接按钮平分剩余行宽（各一半，自适应） */
  /* 文档链接按钮：与主按钮平分剩余行宽（各一半，自适应），
     色值取设计变量 Color/Base/Fill/Tertiary/{Default,Hover} */
}
.ot-feature-guide-card--floating {
  position: fixed;
  right: 8px;
  bottom: 40px;
  z-index: 1000;
}
.ot-feature-guide-card--closing {
  animation: ot-feature-guide-exit 0.4s cubic-bezier(0.25, 0.1, 0.25, 1) both;
  pointer-events: none;
}
.ot-feature-guide-card__body {
  position: relative;
  height: 280px;
  overflow: hidden;
}
.ot-feature-guide-card__cover-layer {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 160px;
}
.ot-feature-guide-card__cover-layer--enter-next {
  animation: ot-feature-guide-in-next 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) both;
}
.ot-feature-guide-card__cover-layer--exit-next {
  animation: ot-feature-guide-out-next 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) both;
}
.ot-feature-guide-card__cover-layer--enter-prev {
  animation: ot-feature-guide-in-prev 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) both;
}
.ot-feature-guide-card__cover-layer--exit-prev {
  animation: ot-feature-guide-out-prev 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) both;
}
.ot-feature-guide-card__info-layer {
  position: absolute;
  top: 160px;
  left: 0;
  width: 100%;
  height: 120px;
}
.ot-feature-guide-card__info-layer--enter .ot-feature-guide-card__title {
  animation: ot-feature-guide-text-in 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) 0.1s both;
}
.ot-feature-guide-card__info-layer--enter .ot-feature-guide-card__desc {
  animation: ot-feature-guide-text-in 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) 0.2s both;
}
.ot-feature-guide-card__info-layer--exit .ot-feature-guide-card__title {
  animation: ot-feature-guide-text-out 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) 0.1s both;
}
.ot-feature-guide-card__info-layer--exit .ot-feature-guide-card__desc {
  animation: ot-feature-guide-text-out 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) 0.2s both;
}
.ot-feature-guide-card__cover {
  position: relative;
  height: 160px;
  overflow: hidden;
}
.ot-feature-guide-card__cover-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.ot-feature-guide-card__logo {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 162px;
  height: 28px;
  transform: translate(-50%, -50%);
}
.ot-feature-guide-card__close {
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  /* 盖在 __body 定位图层之上（DOM 顺序在 body 之前，需显式提升层级） */
  z-index: 1;
  top: 8px;
  right: 8px;
  width: 24px;
  height: 24px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.15s ease, transform 0.15s ease;
}
.ot-feature-guide-card__close img {
  display: block;
  width: 100%;
  height: 100%;
}
.ot-feature-guide-card__close:hover {
  transform: scale(1.08);
}
.ot-feature-guide-card:hover .ot-feature-guide-card__close {
  opacity: 1;
}
.ot-feature-guide-card__info {
  padding: 16px 16px 8px;
}
.ot-feature-guide-card__badge {
  display: flex;
  align-items: center;
  gap: 4px;
  height: 20px;
}
.ot-feature-guide-card__badge--notice {
  --ot-feature-guide-badge-gradient: linear-gradient(90deg, #ff9233 36%, #ff5e4f 80%);
}
.ot-feature-guide-card__badge-text {
  font-size: 12px;
  font-weight: 500;
  line-height: 20px;
  color: transparent;
  background-image: var(--ot-feature-guide-badge-gradient);
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
.ot-feature-guide-card__badge-icon {
  width: 12px;
  height: 12px;
  background-image: var(--ot-feature-guide-badge-gradient);
}
.ot-feature-guide-card__badge-icon--feature {
  -webkit-mask: url(https://cloudcache.tencent-cloud.com/qcloud/orcaterm/images/badge-star.5d65696c.svg) center / contain no-repeat;
  mask: url(https://cloudcache.tencent-cloud.com/qcloud/orcaterm/images/badge-star.5d65696c.svg) center / contain no-repeat;
}
.ot-feature-guide-card__badge-icon--notice {
  -webkit-mask: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgPHBhdGggZD0iTTguNSAyLjAyN1YxaC0xdjEuMDI3YTQuNSA0LjUgMCAwMC00IDQuNDczVjExbC0uOSAxLjJhLjUuNSAwIDAwLjQuOGgyLjU1YTIuNSAyLjUgMCAwMDQuOSAwSDEzYS41LjUgMCAwMC40LS44bC0uOS0xLjJWNi41YTQuNSA0LjUgMCAwMC00LTQuNDczWm0tNCA5LjMwNlY2LjVhMy41IDMuNSAwIDExNyAwdjQuODMzTDEyIDEySDRsLjUtLjY2N1pNOCAxNGExLjUgMS41IDAgMDEtMS40MTUtMWgyLjgzQTEuNSAxLjUgMCAwMTggMTRaIi8+Cjwvc3ZnPgo=) center / contain no-repeat;
  mask: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+CiAgPHBhdGggZD0iTTguNSAyLjAyN1YxaC0xdjEuMDI3YTQuNSA0LjUgMCAwMC00IDQuNDczVjExbC0uOSAxLjJhLjUuNSAwIDAwLjQuOGgyLjU1YTIuNSAyLjUgMCAwMDQuOSAwSDEzYS41LjUgMCAwMC40LS44bC0uOS0xLjJWNi41YTQuNSA0LjUgMCAwMC00LTQuNDczWm0tNCA5LjMwNlY2LjVhMy41IDMuNSAwIDExNyAwdjQuODMzTDEyIDEySDRsLjUtLjY2N1pNOCAxNGExLjUgMS41IDAgMDEtMS40MTUtMWgyLjgzQTEuNSAxLjUgMCAwMTggMTRaIi8+Cjwvc3ZnPgo=) center / contain no-repeat;
}
.ot-feature-guide-card__title {
  margin-top: 4px;
  font-size: 16px;
  font-weight: 500;
  line-height: 24px;
  color: var(--Color-Base-Text-Primary);
}
.ot-feature-guide-card__desc {
  display: -webkit-box;
  overflow: hidden;
  margin-top: 8px;
  font-size: 12px;
  line-height: 20px;
  color: var(--Color-Base-Text-Secondary);
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.ot-feature-guide-card__action {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  padding: 8px 16px 16px;
}
.ot-feature-guide-card__pager {
  display: flex;
  align-items: center;
  gap: 8px;
}
.ot-feature-guide-card__pager-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  color: var(--Color-Base-Text-Secondary);
  background: transparent;
  border: 0;
  border-radius: 8px;
  cursor: pointer;
}
.ot-feature-guide-card__pager-btn svg {
  width: 16px;
  height: 16px;
}
.ot-feature-guide-card__pager-btn:hover:not(:disabled) {
  color: var(--Color-Base-Text-Primary);
  background: var(--color-gray-opacity-8);
}
.ot-feature-guide-card__pager-btn.ot-feature-guide-card__pager-btn--prev svg {
  transform: rotate(180deg);
}
.ot-feature-guide-card__pager-indicator {
  font-size: 12px;
  line-height: 24px;
  font-feature-settings: 'tnum';
  color: var(--Color-Base-Text-Primary);
}
.ot-feature-guide-card__pager-current {
  display: inline-block;
  animation: ot-feature-guide-num-in 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) both;
}
.ot-feature-guide-card__pager-total {
  color: var(--Color-Base-Text-Placeholder);
}
.ot-feature-guide-card__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 1;
  height: 30px;
  min-width: 72px;
  padding: 5px 12px;
  font-size: 12px;
  font-weight: 500;
  line-height: 20px;
  color: var(--Color-Base-Fill-Solid-Black);
  background: var(--Color-Base-Fill-Solid-White);
  border: 0;
  border-radius: 4px;
  cursor: pointer;
  transition: opacity 0.15s ease;
}
.ot-feature-guide-card__cta:hover {
  opacity: 0.88;
}
.ot-feature-guide-card__cta:active {
  opacity: 0.8;
}
.ot-feature-guide-card__doc-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 1;
  height: 30px;
  padding: 5px 12px;
  font-size: 12px;
  font-weight: 500;
  line-height: 20px;
  /* 设计变量 Color/Base/Text/Primary：暗色 #ffffffeb / 亮色 rgba(0,0,0,0.92)，
       与 Tertiary 灰底（#383838 / #e3e6eb）在两种主题下都有足够对比度 */
  color: var(--Color-Base-Text-Primary);
  /* 语义 token 优先，回退基元 token，避免主题包未定义该语义变量时背景透明 */
  background: var(--Color-Base-Fill-Tertiary-Default, var(--color-gray-800));
  border: 0;
  border-radius: 4px;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.15s ease;
}
.ot-feature-guide-card__doc-link:hover {
  background: var(--Color-Base-Fill-Tertiary-Hover, var(--color-gray-750));
}
.ot-feature-guide-card__close:focus-visible,
.ot-feature-guide-card__pager-btn:focus-visible,
.ot-feature-guide-card__doc-link:focus-visible,
.ot-feature-guide-card__cta:focus-visible {
  outline: 1px solid var(--Color-Base-Border-Focus);
  outline-offset: 1px;
}
/* 进场：自右侧滑入（起始位置 = 完整移出右缘 + 8px 边距） */
@keyframes ot-feature-guide-enter {
  from {
    transform: translateX(calc(100% + 8px));
  }
  to {
    transform: translateX(0);
  }
}
/* 出场：沿进场路径反向滑出右缘 */
@keyframes ot-feature-guide-exit {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(calc(100% + 8px));
  }
}
/* 卡片水平平移交换：平移量 = 卡片宽度(348) + 80px 间距（分镜实测 428px） */
@keyframes ot-feature-guide-in-next {
  from {
    transform: translateX(calc(100% + 80px));
  }
  to {
    transform: translateX(0);
  }
}
@keyframes ot-feature-guide-out-next {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(calc(-100% - 80px));
  }
}
@keyframes ot-feature-guide-in-prev {
  from {
    transform: translateX(calc(-100% - 80px));
  }
  to {
    transform: translateX(0);
  }
}
@keyframes ot-feature-guide-out-prev {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(calc(100% + 80px));
  }
}
/* 文字向上滚动：入场自下方滚上，离场向上滚出 */
@keyframes ot-feature-guide-text-in {
  from {
    transform: translateY(16px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}
@keyframes ot-feature-guide-text-out {
  from {
    transform: translateY(0);
    opacity: 1;
  }
  to {
    transform: translateY(-16px);
    opacity: 0;
  }
}
/* 页码数字上滚入场 */
@keyframes ot-feature-guide-num-in {
  from {
    transform: translateY(8px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}
@media (prefers-reduced-motion: reduce) {
  .ot-feature-guide-card,
  .ot-feature-guide-card__cover-layer,
  .ot-feature-guide-card__info-layer,
  .ot-feature-guide-card__title,
  .ot-feature-guide-card__desc,
  .ot-feature-guide-card__pager-current {
    animation: none;
  }
}
/*# sourceMappingURL=index.css.map */
@keyframes ot-ai-logo-rotate {
  0% {
    transform: rotate(0turn);
  }
  100% {
    transform: rotate(3turn);
  }
}
@keyframes ot-ai-logo-leaf-roll {
  0% {
    transform-origin: 44.5833% 54.75% !important;
    transform: translateY(0px) rotate(0deg);
  }
  100% {
    transform-origin: 44.5833% 54.75% !important;
    transform: translate(23.8333%, 45.1667%) rotate(150deg);
  }
}
@keyframes ot-ai-logo-leaf-roll-back {
  0% {
    transform-origin: 44.5833% 54.75% !important;
    transform: translate(23.8333%, 45.1667%) rotate(150deg);
  }
  100% {
    transform-origin: 44.5833% 54.75% !important;
    transform: translateY(0px) rotate(0deg);
  }
}
@keyframes ot-ai-logo-star1-blink {
  0% {
    transform: scale(0);
  }
  31.25% {
    opacity: 0;
    transform: scale(0);
  }
  34.375% {
    opacity: 1;
    transform: scale(1);
  }
  37.5% {
    opacity: 0;
    transform: scale(0);
  }
  100% {
    transform: scale(0);
  }
}
@keyframes ot-ai-logo-star2-blink {
  0% {
    transform: scale(0);
  }
  23.4375% {
    opacity: 0;
    transform: scale(0);
  }
  26.5625% {
    opacity: 1;
    transform: scale(1);
  }
  29.6875% {
    opacity: 0;
    transform: scale(0);
  }
  100% {
    transform: scale(0);
  }
}
.ot-ai-logo {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  position: relative;
  flex: none;
}
.ot-ai-logo__flower {
  display: inline-block;
  width: 100%;
  height: 100%;
  position: relative;
  animation: ot-ai-logo-rotate 25.2s linear infinite;
}
.ot-ai-logo__star1 {
  position: absolute;
  left: 0;
  bottom: 0;
  width: 62.5%;
  height: 62.5%;
  animation: ot-ai-logo-star1-blink 12.8s linear infinite;
}
.ot-ai-logo__star2 {
  position: absolute;
  right: 0;
  top: 0;
  width: 62.5%;
  height: 62.5%;
  animation: ot-ai-logo-star2-blink 12.8s linear infinite;
}
.ot-ai-logo__leaf {
  display: inline-block;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  color: #ff699b;
}
.ot-ai-logo__leaf > svg {
  position: absolute;
  width: 37.5% !important;
  height: 37.5% !important;
  left: 0;
  top: 37.5%;
  animation: ot-ai-logo-leaf-roll 1.6s cubic-bezier(0.6, 0.2, 0.6, 0.7) forwards;
  transform-origin: 44.5833% 54.75% !important;
}
.ot-ai-logo__leaf.is-roll-back > svg {
  animation: ot-ai-logo-leaf-roll-back 1.6s cubic-bezier(0.6, 0.2, 0.6, 0.7) forwards;
}
.ot-ai-logo__leaf:nth-child(2) {
  transform: rotate(60deg);
  color: #ff876e;
}
.ot-ai-logo__leaf:nth-child(3) {
  transform: rotate(120deg);
  color: #f5a61e;
}
.ot-ai-logo__leaf:nth-child(4) {
  transform: rotate(180deg);
  color: #54b8ff;
}
.ot-ai-logo__leaf:nth-child(5) {
  transform: rotate(240deg);
  color: #3b6cff;
}
.ot-ai-logo__leaf:nth-child(6) {
  transform: rotate(300deg);
  color: #5252ff;
}
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__star1 path,
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__star2 path {
  fill: #ffd814 !important;
}
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__star1 path + path,
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__star2 path + path {
  fill: #181818 !important;
}
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__leaf {
  color: #ff699b;
}
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__leaf:nth-child(2) {
  color: #ff876e;
}
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__leaf:nth-child(3) {
  color: #f5a61e;
}
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__leaf:nth-child(4) {
  color: #54b8ff;
}
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__leaf:nth-child(5) {
  color: #5c85ff;
}
[theme-mode="dark"][theme-enable="true"] .ot-ai-logo__leaf:nth-child(6) {
  color: #8175ff;
}
/*# sourceMappingURL=AILogoWithStar.css.map */
.ot-login__oauth-list {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  width: 272px;
}
.ot-login__oauth-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 272px;
  height: 44px;
  box-sizing: border-box;
  border-radius: 4px;
  border: 1px solid var(--OT-Color-Base-Border-Primary);
  background: var(--OT-Color-Base-Fill-Primary-Default);
  color: var(--OT-Color-Base-Text-Primary);
  font-size: 14px;
  font-weight: 500;
  line-height: 22px;
  cursor: pointer;
  transition: all 0.2s ease-in-out;
}
.ot-login__oauth-btn:hover {
  background: var(--OT-Color-Base-Fill-Primary-Hover);
}
.ot-login__protocol.unagreed .tea-form-check .tea-checkbox {
  border-color: var(--OT-Color-Accent-Text-Error-Default) !important;
}
.ot-login .ot-login__right .ot-login__right-body {
  flex: 1;
  justify-content: center;
  padding: 32px 24px 32px;
}
.ot-login__gate-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.ot-login__oauth-list .ot-login__gate-cell {
  width: 272px;
}
.ot-login__gate-tip {
  max-width: 272px;
  margin-top: 4px;
  color: var(--OT-Color-Accent-Text-Error-Default);
  font-size: 12px;
  line-height: 16px;
  text-align: center;
}
@keyframes ot-login-protocol-shake {
  0%,
  100% {
    transform: translateX(0);
  }
  20% {
    transform: translateX(-8px);
  }
  40% {
    transform: translateX(8px);
  }
  60% {
    transform: translateX(-6px);
  }
  80% {
    transform: translateX(6px);
  }
}
.ot-login__protocol.ot-shake {
  animation: ot-login-protocol-shake 0.4s ease-in-out;
}
.ot-login__oauth-btn:disabled {
  cursor: not-allowed;
  opacity: 0.5;
}
.ot-login__oauth-btn:disabled:hover {
  background: var(--OT-Color-Base-Fill-Primary-Default);
}
.ot-login__oauth-btn-wrapper {
  display: block;
  width: 272px;
}
.ot-login__protocol-text {
  word-break: normal;
  overflow-wrap: break-word;
}
.ot-login .ot-login__left .ot-login__left-desc {
  box-sizing: border-box;
  max-width: 100%;
  padding: 0 24px;
  text-align: center;
}
/*# sourceMappingURL=style.css.map */
.pwa-stopped-screen {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  /* 亮色主题（默认） */
  --pwa-bg: #fff;
  --pwa-title-color: #1a1a1a;
  --pwa-desc-color: #666;
}
/* 暗色主题：跟随 html[theme] 属性 */
[theme='dark'] .pwa-stopped-screen,
html[theme='dark'] .pwa-stopped-screen {
  --pwa-bg: #1a1a1a;
  --pwa-title-color: #e8e8e8;
  --pwa-desc-color: #999;
}
.pwa-stopped-screen {
  background: var(--pwa-bg);
  color: var(--pwa-desc-color);
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.pwa-stopped-screen__content {
  text-align: center;
  max-width: 480px;
  padding: 0 24px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.pwa-stopped-screen__title {
  font-size: 22px;
  font-weight: 600;
  margin-bottom: 16px;
  color: var(--pwa-title-color);
}
.pwa-stopped-screen__desc {
  font-size: 16px;
  line-height: 1.7;
  color: var(--pwa-desc-color);
  margin-bottom: 32px;
}
/* 卸载引导：弱化样式，区别于主 CTA */
.pwa-stopped-screen__uninstall {
  max-width: 520px;
  padding: 16px 20px;
  margin-top: 8px;
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.03);
  font-size: 13px;
  line-height: 1.7;
  color: var(--pwa-desc-color);
  text-align: left;
}
[theme='dark'] .pwa-stopped-screen__uninstall,
html[theme='dark'] .pwa-stopped-screen__uninstall {
  background: rgba(255, 255, 255, 0.05);
}
.pwa-stopped-screen__uninstall-title {
  margin: 0 0 8px;
  font-weight: 500;
  color: var(--pwa-title-color);
}
.pwa-stopped-screen__uninstall-list {
  margin: 0 0 8px;
  padding-left: 20px;
}
.pwa-stopped-screen__uninstall-list li {
  margin: 2px 0;
}
.pwa-stopped-screen__uninstall-note {
  margin: 0;
  font-size: 12px;
  opacity: 0.75;
}
/* 下载客户端 + 网页版 行动入口分组：组内紧凑间距 */
.pwa-stopped-screen__actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
}
/* 「网页版」次要灰色链接 */
.pwa-stopped-screen__web-link {
  font-size: 12px;
  color: var(--pwa-desc-color) !important;
  text-decoration: none;
  cursor: pointer;
}
.pwa-stopped-screen__web-link:hover {
  color: var(--pwa-title-color);
  text-decoration: underline;
}
/*# sourceMappingURL=PwaDeprecationDialog.css.map */
