/* static/css/settings.css — extracted from index.html (FrameFlow prototype) */
  /* Settings modal */
  .settings-overlay {
    position: fixed; inset: 0; z-index: 200;
    background: rgba(0,0,0,0.45); backdrop-filter: blur(10px);
    display: flex; align-items: center; justify-content: center; padding: 40px;
    opacity: 0; transition: opacity .25s ease; overflow: hidden;
  }
  .settings-overlay.show { opacity: 1; }
  .settings-modal {
    position: relative;
    width: 100%; max-width: 980px; height: calc(100vh - 80px); max-height: 760px;
    background: var(--modal-bg); border: 1px solid var(--modal-border); border-radius: 20px;
    display: flex; overflow: hidden;
    box-shadow: 0 40px 120px rgba(0,0,0,0.55);
    transform: translateY(10px); transition: transform .3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  /* 显示态去掉 transform：内部 position:fixed 子元素（如素材源遮罩）以视口为包含块，可全屏覆盖 */
  .settings-overlay.show .settings-modal { transform: none; }
  html[data-theme="light"] .settings-modal { background: var(--modal-bg); border-color: var(--modal-border); box-shadow: 0 30px 80px rgba(0,0,0,0.25); }
  .settings-sidebar {
    width: 210px; flex-shrink: 0; border-right: 1px solid rgba(255,255,255,0.06);
    display: flex; flex-direction: column; background: rgba(255,255,255,0.035);
  }
  html[data-theme="light"] .settings-sidebar { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.06); }
  .settings-sidebar-head {
    height: 60px; display: flex; align-items: center; padding: 0 18px;
    border-bottom: none;
  }
  .settings-sidebar-head h2 { margin: 0; font-size: 16px; font-weight: 800; color: var(--text); }
  .settings-menu {
    flex: 1; overflow-y: auto; overflow-x: hidden; padding: 10px 10px 20px; display: flex; flex-direction: column; gap: 2px;
  }
  .settings-menu::-webkit-scrollbar, .settings-body::-webkit-scrollbar { width: 6px; height: 6px; }
  .settings-menu::-webkit-scrollbar-track, .settings-body::-webkit-scrollbar-track { background: transparent; }
  .settings-menu::-webkit-scrollbar-thumb, .settings-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); border-radius: 999px; }
  .settings-menu::-webkit-scrollbar-thumb:hover, .settings-body::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.25); }
  html[data-theme="light"] .settings-menu::-webkit-scrollbar-thumb, html[data-theme="light"] .settings-body::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.18); }
  html[data-theme="light"] .settings-menu::-webkit-scrollbar-thumb:hover, html[data-theme="light"] .settings-body::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.28); }
  .settings-menu, .settings-body { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.15) transparent; }
  html[data-theme="light"] .settings-menu, html[data-theme="light"] .settings-body { scrollbar-color: rgba(0,0,0,0.18) transparent; }
  .settings-menu-item {
    display: flex; align-items: center; gap: 11px;
    padding: 10px 12px; border-radius: 10px; border: none; background: transparent;
    color: var(--text-dim); font-size: 13px; font-weight: 600; cursor: pointer; text-align: left;
    transition: background .15s ease, color .15s ease;
  }
  .settings-menu-item svg { width: 17px; height: 17px; flex-shrink: 0; }
  .settings-menu-item:hover { background: var(--surface-hover); color: var(--text); }
  .settings-menu-item.active { background: rgba(74,222,128,0.12); color: var(--neon-bright); }
  .settings-close {
    position: absolute; top: 16px; right: 16px; width: 34px; height: 34px; border-radius: 10px; z-index: 30;
    background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08); color: var(--text-dim);
    display: grid; place-items: center; cursor: pointer; transition: all .2s ease;
  }
  html[data-theme="light"] .settings-close { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .settings-close:hover { background: rgba(255,255,255,0.10); color: var(--text); border-color: rgba(255,255,255,0.14); transform: rotate(90deg); }
  html[data-theme="light"] .settings-close:hover { background: rgba(0,0,0,0.08); border-color: rgba(0,0,0,0.14); }
  .settings-close svg { width: 16px; height: 16px; }
  .settings-body {
    flex: 1; overflow-y: auto; overflow-x: hidden; padding: 0 32px 32px; position: relative;
    background: rgb(22,24,28);
  }
  html[data-theme="light"] .settings-body { background: #ffffff; }
  .settings-section-title { margin: 0 0 22px; font-size: 20px; font-weight: 800; color: var(--text); }
  .settings-group { margin-bottom: 26px; }
  .settings-group h3 {
    margin: 0 0 8px; font-size: 11px; font-weight: 800; letter-spacing: 0.07em; text-transform: uppercase; color: var(--text-dim);
  }
  .settings-group p {
    margin: 0 0 14px; font-size: 12px; line-height: 1.55; color: var(--text-muted);
  }
  .settings-row {
    display: flex; align-items: center; justify-content: space-between; gap: 20px;
    min-height: 56px; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,0.05);
  }
  html[data-theme="light"] .settings-row { border-color: rgba(0,0,0,0.05); }
  .settings-row:first-of-type { padding-top: 0; }
  .settings-row:last-child { border-bottom: none; }
  .settings-row-label { min-width: 0; }
  .settings-row-label strong { display: block; font-size: 13px; font-weight: 700; color: var(--text); }
  .settings-row-label span { display: block; margin-top: 3px; font-size: 12px; color: var(--text-muted); }
  .settings-control { flex-shrink: 0; display: flex; align-items: center; justify-content: flex-end; min-width: 180px; }
  .settings-select, .settings-input {
    height: 36px; padding: 0 12px; border-radius: 9px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text); font-size: 13px; outline: none; min-width: 180px;
  }
  html[data-theme="light"] .settings-select, html[data-theme="light"] .settings-input { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.08); }
  .settings-select:focus, .settings-input:focus { border-color: var(--neon); }
  /* Custom select inside settings (replaces native <select>) */
  .settings-select-custom { position: relative; min-width: 180px; }
  .settings-select-custom .project-form-select-trigger {
    height: 36px; padding: 0 30px 0 12px; border-radius: 9px;
    background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text); font-size: 13px;
  }
  html[data-theme="light"] .settings-select-custom .project-form-select-trigger { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.08); color: var(--text); }
  .settings-select-custom .project-form-select-trigger:focus, .settings-select-custom.open .project-form-select-trigger { border-color: var(--neon); }
  .settings-select-custom .project-form-select-dropdown {
    min-width: 100%; width: max-content; max-width: 320px; right: auto;
  }
  .settings-select-custom .project-form-select-option { white-space: nowrap; }
  .settings-slider {
    display: flex; align-items: center; gap: 14px; width: 240px;
  }
  .settings-slider input[type="range"] { flex: 1; }
  .settings-slider span { font-size: 12px; color: var(--text-muted); width: 32px; text-align: right; }
  .settings-toggle {
    display: inline-block; width: 46px; height: 24px; border-radius: 999px; background: rgba(255,255,255,0.12);
    position: relative; cursor: pointer; transition: background .2s ease; flex-shrink: 0;
  }
  .settings-toggle::after {
    content: ''; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px;
    border-radius: 50%; background: #fff; box-shadow: 0 2px 5px rgba(0,0,0,0.25);
    transition: transform .2s ease;
  }
  .settings-toggle.active { background: var(--neon); }
  .settings-toggle.active::after { transform: translateX(22px); }
  .settings-tags { display: flex; flex-wrap: wrap; gap: 8px; max-width: 320px; justify-content: flex-end; }
  .settings-tag {
    padding: 6px 11px; border-radius: 8px; background: rgba(255,255,255,0.04); border: none;
    font-size: 12px; color: var(--text-dim); cursor: pointer; transition: all .15s ease;
  }
  html[data-theme="light"] .settings-tag { background: rgba(0,0,0,0.04); }
  .settings-tag:hover { background: rgba(255,255,255,0.08); }
  html[data-theme="light"] .settings-tag:hover { background: rgba(0,0,0,0.07); }
  .settings-tag.active { background: rgba(74,222,128,0.14); color: var(--neon-bright); }
  .settings-storage { display: flex; align-items: center; gap: 14px; }
  .settings-storage-bar {
    width: 160px; height: 6px; border-radius: 999px; background: rgba(255,255,255,0.08); overflow: hidden;
  }
  html[data-theme="light"] .settings-storage-bar { background: rgba(0,0,0,0.08); }
  .settings-storage-bar i { display: block; height: 100%; width: 68%; background: var(--neon); border-radius: 999px; }
  .settings-storage span { font-size: 12px; color: var(--text-muted); }
  html[data-theme="light"] .settings-overlay { background: rgba(0,0,0,0.25); }
  html[data-theme="light"] .settings-modal { box-shadow: 0 30px 80px rgba(0,0,0,0.25); }

  /* AI Model settings */
  .ai-model-type-block {
    background: rgba(255,255,255,0.025); border: 1px solid rgba(255,255,255,0.06); border-radius: 14px;
    padding: 16px; margin-bottom: 14px;
  }
  html[data-theme="light"] .ai-model-type-block { background: rgba(0,0,0,0.025); border-color: rgba(0,0,0,0.06); }
  .ai-model-type-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px;
  }
  .ai-model-type-head strong { display: block; font-size: 14px; font-weight: 700; color: var(--text); }
  .ai-model-type-head span { display: block; margin-top: 3px; font-size: 12px; color: var(--text-muted); }
  .ai-model-type-head .btn-ghost { padding: 6px 12px; font-size: 12px; }
  .ai-model-type-head .btn-ghost span { display: inline; font-size: 14px; margin-right: 3px; }
  .ai-model-list { display: flex; flex-direction: column; gap: 8px; }
  .ai-model-item {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 10px 12px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.06);
    border-radius: 10px; transition: background .15s ease, border-color .15s ease;
  }
  html[data-theme="light"] .ai-model-item { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.06); }
  .ai-model-item:hover { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.10); }
  html[data-theme="light"] .ai-model-item:hover { background: rgba(0,0,0,0.06); border-color: rgba(0,0,0,0.10); }
  .ai-model-info { display: flex; align-items: center; gap: 10px; min-width: 0; }
  .ai-model-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
  .ai-model-dot-chat { background: #4ade80; box-shadow: 0 0 8px rgba(74,222,128,0.35); }
  .ai-model-dot-image { background: #60a5fa; box-shadow: 0 0 8px rgba(96,165,250,0.35); }
  .ai-model-dot-video { background: #f472b6; box-shadow: 0 0 8px rgba(244,114,182,0.35); }
  .ai-model-name { font-size: 13px; font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .ai-model-id { font-size: 11px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .ai-model-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
  .ai-model-actions button {
    width: 28px; height: 28px; border-radius: 7px; background: transparent; border: 1px solid rgba(255,255,255,0.10);
    color: var(--text-muted); display: grid; place-items: center; cursor: pointer; transition: all .2s ease; padding: 0;
  }
  html[data-theme="light"] .ai-model-actions button { border-color: rgba(0,0,0,0.10); }
  .ai-model-actions button svg { width: 14px; height: 14px; }
  .ai-model-actions .ai-model-edit:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.14); color: var(--text); }
  html[data-theme="light"] .ai-model-actions .ai-model-edit:hover { background: rgba(0,0,0,0.06); border-color: rgba(0,0,0,0.12); }
  .ai-model-actions .ai-model-del:hover { background: rgba(239,68,68,0.12); border-color: rgba(239,68,68,0.35); color: #fca5a5; }
  .ai-model-empty {
    padding: 14px; text-align: center; font-size: 12px; color: var(--text-muted);
    background: rgba(255,255,255,0.03); border: 1px dashed rgba(255,255,255,0.08); border-radius: 8px;
  }
  html[data-theme="light"] .ai-model-empty { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }

  .ai-model-overlay {
    position: fixed; inset: 0; z-index: 210;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,0.55); backdrop-filter: blur(10px);
    opacity: 0; transition: opacity .25s ease; overflow: hidden;
  }
  html[data-theme="light"] .ai-model-overlay { background: rgba(0,0,0,0.35); }
  .ai-model-overlay.show { opacity: 1; }
  .ai-model-modal {
    width: 100%; max-width: 860px; max-height: calc(100vh - 80px);
    background: var(--modal-bg); border: 1px solid var(--modal-border); border-radius: 18px;
    display: flex; flex-direction: column; overflow: hidden;
    box-shadow: 0 40px 120px rgba(0,0,0,0.55);
    transform: translateY(10px); transition: transform .3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  html[data-theme="light"] .ai-model-modal { background: var(--modal-bg); border-color: var(--modal-border); box-shadow: 0 30px 80px rgba(0,0,0,0.25); }
  .ai-model-overlay.show .ai-model-modal { transform: translateY(0); }
  .ai-model-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 16px 20px; border-bottom: 1px solid rgba(255,255,255,0.06);
  }
  html[data-theme="light"] .ai-model-head { border-color: rgba(0,0,0,0.06); }
  .ai-model-head h3 { margin: 0; font-size: 16px; font-weight: 800; color: var(--text); }
  .ai-model-head-actions { display: flex; align-items: center; gap: 8px; }
  .ai-model-head-actions .btn-ghost, .ai-model-head-actions .btn-neon { padding: 7px 14px; font-size: 12px; border-radius: 8px; }
  .ai-model-close {
    width: 32px; height: 32px; border-radius: 9px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text-dim); display: grid; place-items: center; cursor: pointer; transition: all .2s ease;
  }
  html[data-theme="light"] .ai-model-close { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-close:hover { background: rgba(255,255,255,0.10); color: var(--text); transform: rotate(90deg); }
  html[data-theme="light"] .ai-model-close:hover { background: rgba(0,0,0,0.08); }
  .ai-model-close svg { width: 16px; height: 16px; }
  .ai-model-body { padding: 20px; display: flex; flex-direction: column; gap: 18px; overflow-y: auto; }
  .ai-model-body::-webkit-scrollbar, .ai-model-select-dropdown::-webkit-scrollbar { width: 6px; height: 6px; }
  .ai-model-body::-webkit-scrollbar-track, .ai-model-select-dropdown::-webkit-scrollbar-track { background: transparent; }
  .ai-model-body::-webkit-scrollbar-thumb, .ai-model-select-dropdown::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); border-radius: 999px; }
  .ai-model-body::-webkit-scrollbar-thumb:hover, .ai-model-select-dropdown::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.25); }
  html[data-theme="light"] .ai-model-body::-webkit-scrollbar-thumb, html[data-theme="light"] .ai-model-select-dropdown::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.18); }
  html[data-theme="light"] .ai-model-body::-webkit-scrollbar-thumb:hover, html[data-theme="light"] .ai-model-select-dropdown::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.28); }
  .ai-model-body, .ai-model-select-dropdown { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.15) transparent; }
  html[data-theme="light"] .ai-model-body, html[data-theme="light"] .ai-model-select-dropdown { scrollbar-color: rgba(0,0,0,0.18) transparent; }
  .ai-model-section {
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06); border-radius: 14px; padding: 18px;
  }
  html[data-theme="light"] .ai-model-section { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.06); }
  .ai-model-section-title { font-size: 14px; font-weight: 800; color: var(--text); margin-bottom: 6px; }
  .ai-model-section-desc { font-size: 12px; color: var(--text-muted); margin: 0 0 14px; }
  .ai-model-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
  .ai-model-form-item { display: flex; flex-direction: column; gap: 6px; }
  .ai-model-form-item.ai-model-form-full { grid-column: 1 / -1; }
  .ai-model-form-item label { font-size: 12px; font-weight: 700; color: var(--text-muted); }
  .ai-model-form-item input, .ai-model-form-item select {
    height: 40px; padding: 0 13px; border-radius: 10px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text); font-size: 13px; outline: none; transition: border-color .15s ease, background .15s ease;
  }
  html[data-theme="light"] .ai-model-form-item input, html[data-theme="light"] .ai-model-form-item select { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-form-item input:focus, .ai-model-form-item select:focus { border-color: var(--neon); background: rgba(255,255,255,0.08); }
  html[data-theme="light"] .ai-model-form-item input:focus, html[data-theme="light"] .ai-model-form-item select:focus { background: rgba(0,0,0,0.06); }
  .ai-model-key-row { display: flex; align-items: center; gap: 8px; }
  .ai-model-key-row input {
    flex: 1; height: 40px; padding: 0 13px; border-radius: 10px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text); font-size: 13px; outline: none;
  }
  html[data-theme="light"] .ai-model-key-row input { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-key-row input:focus { border-color: var(--neon); background: rgba(255,255,255,0.08); }
  .ai-model-key-row .ai-model-key-action {
    width: 38px; height: 38px; border-radius: 50%; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text-muted); display: grid; place-items: center; cursor: pointer; transition: all .2s ease; flex-shrink: 0;
  }
  html[data-theme="light"] .ai-model-key-row .ai-model-key-action { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-key-row .ai-model-key-action:hover { background: rgba(74,222,128,0.12); border-color: rgba(74,222,128,0.40); color: var(--neon-bright); }
  .ai-model-key-row .ai-model-key-action svg { width: 16px; height: 16px; }
  .ai-model-key-row .ai-model-key-action .eye-closed, .ai-model-key-row .ai-model-key-action.show .eye-open { display: none; }
  .ai-model-key-row .ai-model-key-action.show .eye-closed { display: block; }
  .ai-model-key-status { margin-top: 10px; font-size: 12px; color: var(--text-muted); }
  .ai-model-api-actions {
    display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-top: 14px;
  }
  .ai-model-api-actions .btn-ghost { padding: 7px 12px; font-size: 12px; display: inline-flex; align-items: center; gap: 6px; }
  .ai-model-api-actions .btn-ghost svg { width: 14px; height: 14px; }
  .ai-model-select { position: relative; display: inline-flex; }
  /* 协议/图片接口下拉：按内容自适应宽度，选项完整显示（不截断） */
  .ai-model-modal .ui-select-dropdown {
    width: max-content; min-width: 100%; max-width: min(520px, calc(100vw - 24px));
    left: 0; right: auto;
  }
  .ai-model-modal .ui-select-option { white-space: nowrap; }
  .ai-model-modal .ui-select-trigger span { overflow: visible; text-overflow: clip; }
  /* 默认模型：先选平台再选模型（级联两列下拉） */
  .settings-default-model-cascade { display: flex; align-items: center; gap: 8px; }
  .settings-default-model-cascade .ui-select { flex: 1 1 0; min-width: 0; }
  .settings-default-model-cascade .ui-select:first-child { flex: 0 0 42%; }
  .ai-model-select-trigger {
    height: 36px; padding: 0 28px 0 12px; border-radius: 9px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text); font-size: 12px; outline: none; display: inline-flex; align-items: center; gap: 8px; cursor: pointer; white-space: nowrap;
  }
  html[data-theme="light"] .ai-model-select-trigger { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); color: var(--text); }
  .ai-model-select-trigger:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.12); }
  html[data-theme="light"] .ai-model-select-trigger:hover { background: rgba(0,0,0,0.07); border-color: rgba(0,0,0,0.12); }
  .ai-model-select-trigger:focus, .ai-model-select.open .ai-model-select-trigger { border-color: var(--neon); }
  .ai-model-select-trigger svg { position: absolute; right: 10px; width: 14px; height: 14px; color: var(--text-muted); transition: transform .2s ease; }
  .ai-model-select.open .ai-model-select-trigger svg { transform: rotate(180deg); }
  .ai-model-select-dropdown {
    position: absolute; top: calc(100% + 6px); left: 0; z-index: 100;
    min-width: 100%; width: max-content; max-width: 260px;
    padding: 6px; border-radius: 10px;
    background: rgba(24,26,30,0.92); border: 1px solid rgba(255,255,255,0.10);
    box-shadow: 0 12px 28px rgba(0,0,0,0.35);
    display: none; flex-direction: column; gap: 2px;
    backdrop-filter: blur(10px);
  }
  html[data-theme="light"] .ai-model-select-dropdown { background: rgba(250,250,250,0.96); border-color: rgba(0,0,0,0.10); box-shadow: 0 12px 28px rgba(0,0,0,0.12); }
  .ai-model-select.open .ai-model-select-dropdown { display: flex; }
  .ai-model-select-option {
    padding: 8px 10px; border-radius: 7px; font-size: 12px; color: var(--text); cursor: pointer; white-space: nowrap;
    display: flex; align-items: center; gap: 8px; transition: background .15s ease, color .15s ease;
  }
  .ai-model-select-option:hover { background: var(--surface-hover); }
  .ai-model-select-option.active { background: rgba(74,222,128,0.12); color: var(--neon-bright); }
  .ai-model-select-option::before { content: ''; width: 14px; height: 14px; border-radius: 50%; border: 1px solid rgba(255,255,255,0.18); flex-shrink: 0; }
  html[data-theme="light"] .ai-model-select-option::before { border-color: rgba(0,0,0,0.18); }
  .ai-model-select-option.active::before { background: var(--neon); border-color: var(--neon); box-shadow: inset 0 0 0 2px rgba(24,26,30,0.92); }
  html[data-theme="light"] .ai-model-select-option.active::before { box-shadow: inset 0 0 0 2px rgba(250,250,250,0.96); }
  .ai-model-list-actions {
    display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-bottom: 14px;
  }
  .ai-model-list-actions .btn-ghost { padding: 7px 12px; font-size: 12px; display: inline-flex; align-items: center; gap: 6px; }
  .ai-model-list-actions .btn-ghost svg { width: 14px; height: 14px; }
  .ai-model-list-actions .btn-ghost:disabled { opacity: 0.7; cursor: not-allowed; }
  .ai-model-fetch-spin { display: inline-block; width: 12px; height: 12px; border: 2px solid rgba(255,255,255,0.2); border-top-color: var(--neon); border-radius: 50%; animation: ai-model-spin 0.8s linear infinite; }
  @keyframes ai-model-spin { to { transform: rotate(360deg); } }
  .ai-model-id-display .ai-model-id-value {
    height: 40px; padding: 0 13px; border-radius: 10px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text-dim); font-size: 13px; display: flex; align-items: center; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  }
  html[data-theme="light"] .ai-model-id-display .ai-model-id-value { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.08); color: var(--text-dim); }
  .ai-model-lists { display: flex; flex-direction: column; gap: 14px; }
  .ai-model-type-block { background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06); border-radius: 12px; padding: 14px; }
  html[data-theme="light"] .ai-model-type-block { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.06); }
  .ai-model-type-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
  .ai-model-type-head strong { font-size: 13px; color: var(--text); }
  .ai-model-type-head span { display: block; font-size: 11px; color: var(--text-muted); margin-top: 3px; }
  .ai-model-type-list { display: flex; flex-direction: column; gap: 8px; }
  .ai-model-id-row { display: flex; align-items: center; gap: 8px; }
  .ai-model-id-row input {
    flex: 1; height: 36px; padding: 0 11px; border-radius: 8px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text); font-size: 13px; outline: none;
  }
  html[data-theme="light"] .ai-model-id-row input { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-id-row input:focus { border-color: var(--neon); }
  .ai-model-id-name { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text-muted); font-size: 12px; }
  .ai-model-disp-name { flex: 1 1 160px; max-width: 220px; height: 32px !important; padding: 0 9px !important; }
  .ai-model-id-del {
    width: 30px; height: 30px; border-radius: 7px; background: transparent; border: 1px solid rgba(255,255,255,0.08);
    color: var(--text-muted); display: grid; place-items: center; cursor: pointer; transition: all .2s ease; flex-shrink: 0;
  }
  html[data-theme="light"] .ai-model-id-del { border-color: rgba(0,0,0,0.08); }
  .ai-model-id-del:hover { background: rgba(239,68,68,0.10); border-color: rgba(239,68,68,0.35); color: #fca5a5; }
  .ai-model-id-add { margin-top: 8px; padding: 6px 10px; font-size: 12px; }
  .ai-model-limit-label { display: flex; align-items: center; gap: 6px; flex-shrink: 0; color: var(--text-muted); font-size: 12px; white-space: nowrap; }
  .ai-model-limit-label input {
    width: 56px; height: 30px; padding: 0 6px; border-radius: 6px;
    background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text); font-size: 13px; text-align: center;
  }
  html[data-theme="light"] .ai-model-limit-label input { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-limit-label input:focus { border-color: var(--neon); outline: none; }
  .ai-model-limit-label span { font-size: 11px; }

  .ai-model-empty-state { max-width: none; }
  .ai-provider-tests-summary:empty { display: none; }
  .ai-model-section-head {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
    margin-bottom: 14px;
  }
  .ai-model-section-head h3 { margin: 0; font-size: 16px; font-weight: 800; color: var(--text); }
  .ai-model-section-head p { margin: 4px 0 0; font-size: 12px; color: var(--text-muted); }
  .ai-model-provider-list { display: flex; flex-direction: column; gap: 10px; }
  .ai-model-provider-item {
    display: flex; align-items: center; gap: 14px;
    padding: 16px; border-radius: 14px;
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06);
    cursor: pointer; transition: background .15s ease, border-color .15s ease;
  }
  html[data-theme="light"] .ai-model-provider-item { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.06); }
  .ai-model-provider-item:hover { background: rgba(255,255,255,0.05); border-color: rgba(255,255,255,0.10); }
  html[data-theme="light"] .ai-model-provider-item:hover { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.10); }
  .ai-model-provider-icon {
    width: 42px; height: 42px; border-radius: 12px; flex-shrink: 0;
    background: rgba(74,222,128,0.10); border: 1px solid rgba(74,222,128,0.20);
    color: var(--neon-bright); display: grid; place-items: center;
  }
  .ai-model-provider-icon svg { width: 20px; height: 20px; }
  .ai-model-provider-info { flex: 1; min-width: 0; }
  .ai-model-provider-info strong { display: block; font-size: 14px; font-weight: 700; color: var(--text); }
  .ai-model-provider-info span { display: block; margin-top: 3px; font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-model-provider-actions { display: flex; align-items: center; gap: 8px; }
  .ai-model-section-actions { display: flex; align-items: center; gap: 8px; }
  .ai-provider-test-state { display: block; margin-top: 4px; font-size: 12px; font-style: normal; }
  .ai-test-ok { color: #3ecf8e; }
  .ai-test-fail { color: #ff6b6b; }
  .ai-test-pending { color: var(--text-muted); opacity: .7; }
  .ai-provider-tests-summary { margin: 10px 0; padding: 10px 14px; border-radius: 10px; background: rgba(255,255,255,.04); font-size: 13px; }
  .ai-model-provider-edit,
  .ai-model-provider-del { padding: 6px 12px; font-size: 12px; }
  .ai-model-provider-empty {
    padding: 18px; text-align: center; font-size: 13px; color: var(--text-muted);
    background: rgba(255,255,255,0.03); border: 1px dashed rgba(255,255,255,0.08); border-radius: 12px;
  }
  html[data-theme="light"] .ai-model-provider-empty { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-model-empty-card {
    display: flex; align-items: center; gap: 18px;
    padding: 22px;
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06); border-radius: 16px;
  }
  html[data-theme="light"] .ai-model-empty-card { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.06); }
  .ai-model-empty-icon {
    width: 48px; height: 48px; border-radius: 13px; flex-shrink: 0;
    background: rgba(74,222,128,0.10); border: 1px solid rgba(74,222,128,0.20);
    color: var(--neon-bright); display: grid; place-items: center;
  }
  .ai-model-empty-icon svg { width: 24px; height: 24px; }
  .ai-model-empty-text { flex: 1; min-width: 0; }
  .ai-model-empty-text strong { display: block; font-size: 14px; font-weight: 700; color: var(--text); }
  .ai-model-empty-text span { display: block; margin-top: 4px; font-size: 12px; color: var(--text-muted); }
  .ai-provider-add-btn { display: inline-flex; align-items: center; gap: 6px; padding: 9px 16px; font-size: 13px; }
  .ai-provider-add-btn span { font-size: 16px; }
  .ai-model-presets {
    display: flex; align-items: center; gap: 10px; margin-top: 16px; padding-top: 16px;
    border-top: 1px solid rgba(255,255,255,0.06);
  }
  html[data-theme="light"] .ai-model-presets { border-top-color: rgba(0,0,0,0.06); }
  .ai-model-presets-label { font-size: 12px; color: var(--text-muted); }
  .ai-model-preset-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; font-size: 12px; }
  .ai-model-preset-btn svg { width: 14px; height: 14px; }
  .ai-model-hint { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
  .ai-model-verify-result {
    margin-top: 14px; font-size: 13px; line-height: 1.6; display: none;
  }
  .ai-model-verify-result.show { display: block; }
  .ai-model-verify-result.ok { color: var(--neon); }
  .ai-model-verify-result.err { color: #fca5a5; }
  html[data-theme="light"] .ai-model-verify-result.err { color: #dc2626; }
  .ai-model-verify-result .ai-model-verify-title { display: flex; align-items: center; gap: 6px; font-weight: 600; }
  .ai-model-verify-result .ai-model-verify-detail { margin-top: 4px; color: var(--text-dim); }
  .ai-model-verify-result .ai-model-raw-toggle {
    display: inline-flex; align-items: center; gap: 4px; margin-top: 8px;
    color: var(--text-muted); font-size: 12px; cursor: pointer; user-select: none;
  }
  .ai-model-verify-result .ai-model-raw-toggle:hover { color: var(--text); }
  .ai-model-verify-result .ai-model-raw-panel {
    margin-top: 8px; padding: 10px; border-radius: 8px;
    background: rgba(0,0,0,0.25); border: 1px solid rgba(255,255,255,0.08);
    font-family: var(--mono); font-size: 11px; color: var(--text-dim);
    max-height: 180px; overflow: auto; white-space: pre-wrap; word-break: break-word; display: none;
  }
  html[data-theme="light"] .ai-model-verify-result .ai-model-raw-panel { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.08); }
  .ai-model-verify-result .ai-model-raw-panel.open { display: block; }
  .ai-model-hint-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: var(--text-muted); }
  .ai-model-hint-code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    padding: 3px 7px; border-radius: 5px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text-dim); font-size: 11px; cursor: pointer; user-select: all;
  }
  html[data-theme="light"] .ai-model-hint-code { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-hint-link {
    color: var(--neon-bright); text-decoration: underline; text-underline-offset: 3px;
    font-size: 12px;
  }
  .ai-model-hint-link:hover { color: var(--neon); }

  /* AI model picker */
  .ai-model-picker-overlay {
    position: fixed; inset: 0; z-index: 220;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,0.55); backdrop-filter: blur(10px);
    opacity: 0; transition: opacity .25s ease;
  }
  html[data-theme="light"] .ai-model-picker-overlay { background: rgba(0,0,0,0.35); }
  .ai-model-picker-overlay.show { opacity: 1; }
  .ai-model-picker {
    width: 100%; max-width: 560px; max-height: calc(100vh - 80px);
    background: rgba(22,24,28,0.88); border: 1px solid rgba(255,255,255,0.08); border-radius: 16px;
    display: flex; flex-direction: column; overflow: hidden;
    box-shadow: 0 40px 120px rgba(0,0,0,0.65);
    backdrop-filter: blur(16px);
    transform: translateY(10px); transition: transform .3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  html[data-theme="light"] .ai-model-picker { background: rgba(255,255,255,0.94); border-color: rgba(0,0,0,0.08); box-shadow: 0 30px 80px rgba(0,0,0,0.25); }
  .ai-model-picker-overlay.show .ai-model-picker { transform: translateY(0); }
  .ai-model-picker-head {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
    padding: 18px 20px 10px; border-bottom: 1px solid rgba(255,255,255,0.06);
  }
  html[data-theme="light"] .ai-model-picker-head { border-color: rgba(0,0,0,0.06); }
  .ai-model-picker-head h3 { margin: 0; font-size: 16px; font-weight: 800; color: var(--text); }
  .ai-model-picker-head p { margin: 5px 0 0; font-size: 12px; color: var(--text-muted); }
  .ai-model-picker-close {
    width: 32px; height: 32px; border-radius: 9px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
    color: var(--text-dim); display: grid; place-items: center; cursor: pointer; transition: all .2s ease; flex-shrink: 0;
  }
  html[data-theme="light"] .ai-model-picker-close { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-picker-close:hover { background: rgba(255,255,255,0.10); color: var(--text); }
  html[data-theme="light"] .ai-model-picker-close:hover { background: rgba(0,0,0,0.08); }
  .ai-model-picker-close svg { width: 16px; height: 16px; }
  .ai-model-picker-body { padding: 16px 20px 20px; display: flex; flex-direction: column; gap: 14px; overflow: hidden; }
  .ai-model-picker-search {
    display: flex; align-items: center; gap: 10px;
    padding: 0 12px; height: 40px; border-radius: 10px;
    background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.08);
  }
  html[data-theme="light"] .ai-model-picker-search { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-picker-search:focus-within { border-color: var(--neon); }
  .ai-model-picker-search svg { width: 16px; height: 16px; color: var(--text-muted); flex-shrink: 0; }
  .ai-model-picker-search input {
    flex: 1; border: none; background: transparent; color: var(--text); font-size: 13px; outline: none;
  }
  .ai-model-picker-search input::placeholder { color: var(--text-muted); }
  .ai-model-picker-filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
  .ai-model-picker-filter {
    height: 30px; padding: 0 12px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.08);
    background: rgba(255,255,255,0.04); color: var(--text-muted); font-size: 12px; cursor: pointer; transition: all .15s ease;
    display: inline-flex; align-items: center; gap: 5px;
  }
  html[data-theme="light"] .ai-model-picker-filter { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.08); }
  .ai-model-picker-filter:hover { background: rgba(255,255,255,0.08); color: var(--text); }
  html[data-theme="light"] .ai-model-picker-filter:hover { background: rgba(0,0,0,0.07); }
  .ai-model-picker-filter.active { background: rgba(74,222,128,0.12); border-color: rgba(74,222,128,0.35); color: var(--neon-bright); }
  .ai-model-picker-list {
    max-height: 380px; overflow-y: auto; display: flex; flex-direction: column; gap: 6px;
    padding-right: 4px;
  }
  .ai-model-picker-list::-webkit-scrollbar { width: 6px; height: 6px; }
  .ai-model-picker-list::-webkit-scrollbar-track { background: transparent; }
  .ai-model-picker-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); border-radius: 999px; }
  .ai-model-picker-list::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.25); }
  html[data-theme="light"] .ai-model-picker-list::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.18); }
  html[data-theme="light"] .ai-model-picker-list::-webkit-scrollbar-thumb:hover { background: rgba(0,0,0,0.28); }
  .ai-model-picker-list { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.15) transparent; }
  html[data-theme="light"] .ai-model-picker-list { scrollbar-color: rgba(0,0,0,0.18) transparent; }
  .ai-model-picker-item {
    display: flex; align-items: center; gap: 12px;
    padding: 10px 12px; border-radius: 10px;
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.05);
    cursor: pointer; transition: all .15s ease; user-select: none;
  }
  html[data-theme="light"] .ai-model-picker-item { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.05); }
  .ai-model-picker-item:hover { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.10); }
  html[data-theme="light"] .ai-model-picker-item:hover { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.10); }
  .ai-model-picker-item.checked { background: rgba(74,222,128,0.08); border-color: rgba(74,222,128,0.25); }
  .ai-model-picker-check {
    width: 18px; height: 18px; border-radius: 50%; border: 1px solid rgba(255,255,255,0.18);
    display: grid; place-items: center; flex-shrink: 0; transition: all .15s ease;
  }
  html[data-theme="light"] .ai-model-picker-check { border-color: rgba(0,0,0,0.18); }
  .ai-model-picker-item.checked .ai-model-picker-check { background: var(--neon); border-color: var(--neon); }
  .ai-model-picker-check svg { width: 10px; height: 10px; color: rgba(22,24,28,0.92); display: none; }
  .ai-model-picker-item.checked .ai-model-picker-check svg { display: block; }
  .ai-model-picker-id { font-size: 13px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .ai-model-picker-empty { text-align: center; padding: 30px; font-size: 13px; color: var(--text-muted); }
  .ai-model-picker-foot {
    display: flex; align-items: center; justify-content: space-between; gap: 14px;
    padding-top: 12px; border-top: 1px solid rgba(255,255,255,0.06);
  }
  html[data-theme="light"] .ai-model-picker-foot { border-color: rgba(0,0,0,0.06); }
  .ai-model-picker-summary { font-size: 12px; color: var(--text-muted); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
  .ai-model-picker-summary strong { color: var(--text); font-weight: 600; }
  .ai-model-picker-summary .pill {
    display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 999px;
    background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.08); font-size: 11px;
  }
  html[data-theme="light"] .ai-model-picker-summary .pill { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.08); }
  .ai-model-picker-actions { display: flex; align-items: center; gap: 10px; }
  .ai-model-picker-actions .btn-ghost { padding: 8px 16px; font-size: 13px; }
  .ai-model-picker-actions .btn-neon { padding: 8px 16px; font-size: 13px; }

  /* —— 新增组件：列表 / 角色 / 配置卡 / 键盘（与既有玻璃拟态、霓虹风格一致）—— */
  .settings-list { display: flex; flex-direction: column; gap: 2px; }
  .settings-list-item {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding: 12px 4px; border-bottom: 1px solid rgba(255,255,255,0.05);
  }
  html[data-theme="light"] .settings-list-item { border-color: rgba(0,0,0,0.05); }
  .settings-list-item:last-child { border-bottom: none; }
  .settings-list-item-info { min-width: 0; }
  .settings-list-item-info strong { display: block; font-size: 13px; font-weight: 700; color: var(--text); }
  .settings-list-item-info span { display: block; margin-top: 3px; font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .settings-list-item-actions { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }

  .settings-pill {
    display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 999px;
    font-size: 11px; font-weight: 600; white-space: nowrap;
    background: rgba(74,222,128,0.12); color: var(--neon-bright); border: 1px solid rgba(74,222,128,0.20);
  }
  .settings-pill-admin { background: rgba(74,222,128,0.16); color: var(--neon-bright); border-color: rgba(74,222,128,0.35); }
  .settings-pill-editor { background: rgba(96,165,250,0.14); color: #93c5fd; border-color: rgba(96,165,250,0.30); }
  .settings-pill-viewer { background: rgba(255,255,255,0.06); color: var(--text-muted); border-color: rgba(255,255,255,0.10); }
  html[data-theme="light"] .settings-pill-viewer { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.10); }
  .settings-pill-ok { background: rgba(74,222,128,0.14); color: var(--neon-bright); border-color: rgba(74,222,128,0.30); }
  .settings-pill-off { background: rgba(255,255,255,0.05); color: var(--text-muted); border-color: rgba(255,255,255,0.10); }
  html[data-theme="light"] .settings-pill-off { background: rgba(0,0,0,0.05); border-color: rgba(0,0,0,0.10); }

  .settings-role-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
  .settings-role-card {
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06); border-radius: 12px; padding: 14px;
  }
  html[data-theme="light"] .settings-role-card { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.06); }
  .settings-role-card strong { display: block; font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 10px; }
  .settings-pills { display: flex; flex-wrap: wrap; gap: 6px; }

  .settings-config-card {
    margin-top: 6px; padding: 16px; border-radius: 14px;
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.06);
  }
  html[data-theme="light"] .settings-config-card { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.06); }
  .settings-config-card-title { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: var(--neon-bright); margin-bottom: 14px; }
  .settings-config-card-title svg { width: 16px; height: 16px; }
  .settings-config-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
  .settings-config-item { display: flex; flex-direction: column; gap: 6px; }
  .settings-config-item-full { grid-column: 1 / -1; }
  .settings-config-item label { font-size: 12px; font-weight: 700; color: var(--text-muted); }

  .settings-kbd {
    display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 7px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 12px;
    color: var(--text); background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.10);
    box-shadow: 0 1px 0 rgba(255,255,255,0.06);
  }
  html[data-theme="light"] .settings-kbd { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.12); box-shadow: 0 1px 0 rgba(0,0,0,0.06); }

  /* —— 二级选项卡导航（极简下划线风格，与系统设计统一）—— */
  .settings-tabs {
    display: flex; flex-wrap: wrap; gap: 2px;
    margin: 0 0 20px; padding: 0;
    background: transparent; border: none; border-radius: 0;
    border-bottom: 1px solid var(--border);
  }
  .settings-tab {
    flex: 0 0 auto; padding: 9px 14px; margin: 0 2px -1px 0;
    font-family: var(--font); font-size: 12.5px; font-weight: 600; color: var(--text-dim);
    background: transparent; border: none; border-bottom: 2px solid transparent; border-radius: 0;
    cursor: pointer; transition: color .15s ease, border-color .15s ease;
    white-space: nowrap;
  }
  .settings-tab:hover { color: var(--text); }
  .settings-tab.active { color: var(--neon-bright); border-bottom-color: var(--neon-bright); }
  html[data-theme="light"] .settings-tabs { border-color: rgba(0,0,0,0.10); }
  html[data-theme="light"] .settings-tab.active { color: #15803d; border-bottom-color: #15803d; }

  /* —— 存储池配置卡（WebDAV 等）—— */
  .settings-storage-pools { display: flex; flex-direction: column; gap: 12px; }
  .settings-storage-pool { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 4px; }
  html[data-theme="light"] .settings-storage-pool { background: rgba(0,0,0,0.02); border-color: rgba(0,0,0,0.06); }
  .settings-storage-pool .settings-config-card { background: var(--surface-2); border-color: var(--border); margin: 0 8px 10px; }
  html[data-theme="light"] .settings-storage-pool .settings-config-card { background: rgba(0,0,0,0.03); }
  .settings-storage-actions { display: flex; gap: 10px; margin-top: 14px; }
  .settings-webdav-result { margin-top: 12px; font-size: 12px; color: var(--text-muted); min-height: 16px; }

  /* —— 客户素材库配置卡 —— */
  .settings-client-list { display: flex; flex-direction: column; gap: 12px; }
  .settings-client-card { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 4px; transition: border-color .2s; }
  html[data-theme="light"] .settings-client-card { background: rgba(0,0,0,0.02); border-color: rgba(0,0,0,0.06); }
  .settings-client-card.expanded { border-color: rgba(127,119,221,0.5); }
  .settings-client-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; }
  .settings-client-head-actions { display: flex; align-items: center; gap: 12px; }
  .settings-client-chevron { cursor: pointer; font-size: 14px; color: var(--text-muted); width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; border-radius: 6px; }
  .settings-client-chevron:hover { background: var(--surface-hover); color: var(--text); }
  .settings-client-body { padding: 4px 14px 16px; border-top: 1px solid var(--border); margin-top: 2px; }
  .settings-subblock { margin-top: 14px; }
  .settings-subblock-title { font-size: 12px; font-weight: 600; color: var(--neon-bright); margin-bottom: 8px; letter-spacing: .02em; }
  html[data-theme="light"] .settings-subblock-title { color: #15803d; }
  .settings-check { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; margin-right: 14px; cursor: pointer; color: var(--text); }
  .settings-check input { accent-color: var(--neon); }
  .settings-input-sm { width: 84px; display: inline-block; }
  .settings-client-scan { display: flex; align-items: center; gap: 14px; margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--border); }
  .settings-btn-primary { background: var(--neon); color: #06210f; border: none; border-radius: 9px; padding: 9px 18px; font-size: 13px; font-weight: 600; cursor: pointer; transition: filter .15s, transform .1s; }
  .settings-btn-primary:hover { filter: brightness(1.08); }
  .settings-btn-primary:active { transform: translateY(1px); }
  .settings-client-scan-status { font-size: 12px; color: var(--text-muted); }

/* ============ ComfyUI 生成源面板 ============ */
  .ai-comfyui-group { margin-top: 22px; }
  .ai-comfyui-hint { font-size: 12px; color: var(--text-muted); }
  .settings-control-stack { flex-direction: column; align-items: flex-start; gap: 6px; min-width: 260px; }
  .settings-control-stack .settings-input { width: 100%; }
  .settings-input {
    width: 100%; padding: 9px 12px; border-radius: 9px; font-size: 13px;
    background: var(--surface, rgba(255,255,255,0.04)); border: 1px solid var(--border, rgba(255,255,255,0.10));
    color: var(--text, #e5e7eb); outline: none;
  }
  html[data-theme="light"] .settings-input { background: #fff; border-color: rgba(0,0,0,0.12); color: #111827; }
  .settings-input:focus { border-color: var(--neon-#7dd3fc, #22d3ee); }
  .ai-comfyui-test-state { font-size: 12px; min-height: 16px; color: var(--text-muted); }
  .ai-comfyui-import-btn { padding: 7px 14px; font-size: 12px; display: inline-flex; align-items: center; gap: 4px; border-radius: 9px; }
  .ai-comfyui-wf-item {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 14px; border-radius: 12px;
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07);
  }
  html[data-theme="light"] .ai-comfyui-wf-item { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-wf-icon {
    width: 36px; height: 36px; border-radius: 10px; flex-shrink: 0;
    background: rgba(125,211,252,0.12); border: 1px solid rgba(125,211,252,0.22);
    color: #7dd3fc; display: grid; place-items: center; font-weight: 800; font-size: 14px;
  }
  html[data-theme="light"] .ai-comfyui-wf-icon { background: rgba(2,132,199,0.10); border-color: rgba(2,132,199,0.22); color: #0284c7; }
  .ai-comfyui-wf-info { flex: 1; min-width: 0; }
  .ai-comfyui-wf-info strong { display: block; font-size: 13.5px; font-weight: 700; color: var(--text); }
  .ai-comfyui-wf-info span { display: block; margin-top: 3px; font-size: 12px; color: var(--text-muted); }

/* ============ ComfyUI 独立选项卡（多后端） ============ */
  .ai-comfyui-ep-item {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 14px; border-radius: 12px;
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07);
  }
  html[data-theme="light"] .ai-comfyui-ep-item { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-ep-item .ai-model-provider-icon {
    width: 36px; height: 36px; border-radius: 10px; flex-shrink: 0;
    background: rgba(125,211,252,0.12); border: 1px solid rgba(125,211,252,0.22);
    color: #7dd3fc; display: grid; place-items: center; font-size: 16px;
  }
  html[data-theme="light"] .ai-comfyui-ep-item .ai-model-provider-icon { background: rgba(2,132,199,0.10); border-color: rgba(2,132,199,0.22); }
  .ai-comfyui-ep-state { display: block; margin-top: 4px; font-style: normal; }
  .ai-comfyui-folder-row { display: flex; gap: 8px; margin: 8px 0 12px; }
  .ai-comfyui-folder-row .settings-input { flex: 1; }
  .ai-comfyui-folder-row button { white-space: nowrap; }

/* ============ ComfyUI 双栏布局：工作流列表 + 详情（图形/测试画布） ============ */
  .ai-comfyui-layout { display: flex; gap: 16px; align-items: stretch; }
  .ai-comfyui-side { width: 320px; flex-shrink: 0; display: flex; flex-direction: column; gap: 4px; }
  .ai-comfyui-main { flex: 1; min-width: 0; }
  .ai-comfyui-wf-item { cursor: pointer; transition: border-color .15s, background .15s; }
  .ai-comfyui-wf-item.active { border-color: rgba(125,211,252,0.55); background: rgba(125,211,252,0.08); }
  html[data-theme="light"] .ai-comfyui-wf-item.active { border-color: rgba(2,132,199,0.55); background: rgba(2,132,199,0.08); }
  .ai-comfyui-wf-detail {
    border: 1px solid rgba(255,255,255,0.07); border-radius: 14px; background: rgba(255,255,255,0.02);
    min-height: 480px; display: flex; flex-direction: column; overflow: hidden;
  }
  html[data-theme="light"] .ai-comfyui-wf-detail { border-color: rgba(0,0,0,0.08); background: rgba(0,0,0,0.02); }
  .ai-comfyui-wf-detail-empty { align-items: center; justify-content: center; color: var(--text-muted); }
  .ai-comfyui-wf-detail-head {
    display: flex; align-items: center; gap: 12px; padding: 14px 16px;
    background: rgba(255,255,255,0.03); border-bottom: 1px solid rgba(255,255,255,0.06);
  }
  html[data-theme="light"] .ai-comfyui-wf-detail-head { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-wf-detail-head .ai-comfyui-wf-info { flex: 1; }
  .ai-comfyui-wf-detail-body { flex: 1; min-height: 420px; padding: 12px; display: flex; }
  .ai-comfyui-graph { flex: 1; min-width: 0; border-radius: 12px; background:
      radial-gradient(circle at 20% 20%, rgba(56,189,248,0.05), transparent 40%),
      rgba(2,6,23,0.6); border: 1px solid rgba(255,255,255,0.06); position: relative; overflow: hidden; }
  html[data-theme="light"] .ai-comfyui-graph { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-graph-toolbar { position: absolute; top: 10px; right: 10px; z-index: 2; display: flex; align-items: center; gap: 6px; padding: 6px 8px; border-radius: 10px; background: rgba(0,0,0,0.35); border: 1px solid rgba(255,255,255,0.08); font-size: 12px; color: var(--text-muted); }
  html[data-theme="light"] .ai-comfyui-graph-toolbar { background: rgba(255,255,255,0.85); border-color: rgba(0,0,0,0.1); }
  .ai-comfyui-graph-toolbar .ai-comfyui-graph-sep { width: 1px; height: 16px; background: rgba(255,255,255,0.12); }
  html[data-theme="light"] .ai-comfyui-graph-toolbar .ai-comfyui-graph-sep { background: rgba(0,0,0,0.12); }
  .ai-comfyui-graph-toolbar .btn-ghost.active { background: var(--neon-dim, rgba(74,222,128,0.15)); color: var(--neon-bright, #86efac); }
  .ai-comfyui-graph-node rect { transition: fill .15s ease, stroke .15s ease; }
  .ai-comfyui-graph-node:hover rect { fill: rgba(45,60,85,0.95); stroke: rgba(125,211,252,0.7); }
  .ai-comfyui-graph-node.selected rect { fill: rgba(22,78,99,0.95); stroke: var(--neon, #4ade80); stroke-width: 1.6; }
  .ai-comfyui-graph { cursor: grab; user-select: none; }
  .ai-comfyui-graph:active { cursor: grabbing; }
  /* 字段类型下拉（自定义主题下拉，替代原生白色菜单） */
  .ai-comfyui-field-config .ui-select { width: 100%; }
  .ai-comfyui-field-config .ui-select-trigger {
    width: 100%; font-size: 12px; padding: 5px 8px;
    background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); border-radius: 8px; color: var(--text,#e5e7eb);
  }
  html[data-theme="light"] .ai-comfyui-field-config .ui-select-trigger { background: #fff; border-color: rgba(0,0,0,0.15); color: #111827; }
  .ai-comfyui-field-config .ui-select-dropdown { max-height: 220px; }
  .ai-comfyui-side {
    position: absolute; top: 12px; right: 12px; bottom: 12px; width: 300px; z-index: 3;
    display: flex; flex-direction: column; gap: 8px;
    padding: 12px; border-radius: 12px; background: rgba(15,18,24,0.92);
    border: 1px solid rgba(255,255,255,0.09); backdrop-filter: blur(8px); overflow: hidden;
  }
  html[data-theme="light"] .ai-comfyui-side { background: rgba(255,255,255,0.95); border-color: rgba(0,0,0,0.1); }
  .ai-comfyui-side-title { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 800; color: var(--text); }
  .ai-comfyui-side-title i { font-style: normal; color: var(--neon-bright, #86efac); font-size: 12px; }
  .ai-comfyui-side-close { margin-left: auto; width: 22px; height: 22px; padding: 0; display: inline-flex; align-items: center; justify-content: center; }
  .ai-comfyui-node-list { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 4px; }
  .ai-comfyui-node-item {
    display: flex; align-items: center; gap: 8px; text-align: left; cursor: pointer;
    padding: 7px 10px; border-radius: 8px; border: 1px solid transparent;
    background: transparent; color: var(--text); font-size: 12px; transition: all .12s ease;
  }
  .ai-comfyui-node-item:hover { background: rgba(255,255,255,0.06); }
  .ai-comfyui-node-item.active { background: var(--neon-dim, rgba(74,222,128,0.12)); border-color: var(--neon-glow, rgba(74,222,128,0.35)); }
  .ai-comfyui-node-id { font-size: 10.5px; color: var(--text-muted); font-family: ui-monospace, monospace; flex-shrink: 0; }
  .ai-comfyui-node-item-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-comfyui-node-desc { font-size: 12.5px; font-weight: 600; color: var(--text); }
  .ai-comfyui-node-input-row { display: flex; align-items: center; gap: 8px; }
  .ai-comfyui-node-input-name { flex: 1; font-size: 11.5px; color: var(--text-muted, #94a3b8); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-comfyui-node-input { width: 150px !important; }
  .ai-comfyui-node-ref { font-size: 11px; color: var(--neon-bright, #86efac); background: rgba(74,222,128,0.08); padding: 3px 8px; border-radius: 6px; }
  .ai-comfyui-node-empty { font-size: 12px; color: var(--text-muted); padding: 8px 0; }
  .ai-comfyui-side-hint { font-size: 11px; color: var(--text-muted, #6b7280); border-top: 1px dashed rgba(255,255,255,0.1); padding-top: 8px; }
  html[data-theme="light"] .ai-comfyui-side-hint { border-color: rgba(0,0,0,0.1); }
  .ai-comfyui-side-sep { height: 1px; background: rgba(255,255,255,0.08); margin: 2px 0; }
  html[data-theme="light"] .ai-comfyui-side-sep { background: rgba(0,0,0,0.08); }
  .ai-comfyui-field-edit-list { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; }
  .ai-comfyui-field-edit {
    display: flex; flex-direction: column; gap: 4px; padding: 8px; border-radius: 8px;
    background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
  }
  html[data-theme="light"] .ai-comfyui-field-edit { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-field-edit-head { display: flex; align-items: center; gap: 6px; }
  .ai-comfyui-field-edit-name { flex: 1; font-size: 12px; font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-comfyui-field-edit-type { font-size: 10px; color: var(--neon-bright,#86efac); background: rgba(74,222,128,0.1); padding: 1px 7px; border-radius: 999px; }
  .ai-comfyui-field-edit .settings-input { width: 100%; font-size: 12px; padding: 5px 8px; }
  .ai-comfyui-test-field-remark { display: block; font-size: 11px; font-weight: 400; color: var(--text-muted,#6b7280); margin-top: 2px; }
  /* 工作流节点参数设置（参考设计：每输入一行，暴露开关+名称+类型+备注+范围/选项） */
  .ai-comfyui-side-sub { font-size: 11px; font-weight: 800; color: var(--neon-bright,#86efac); letter-spacing: .04em; }
  .ai-comfyui-field-row {
    display: flex; gap: 8px; align-items: flex-start;
    padding: 8px; border-radius: 8px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
  }
  html[data-theme="light"] .ai-comfyui-field-row { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-field-row.is-exposed { border-color: var(--neon-glow, rgba(74,222,128,0.35)); }
  .ai-comfyui-field-expose { flex-shrink: 0; width: 18px; height: 18px; margin-top: 2px; display: grid; place-items: center; cursor: pointer; }
  .ai-comfyui-field-expose input { width: 16px; height: 16px; accent-color: var(--neon, #4ade80); cursor: pointer; }
  .ai-comfyui-field-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
  .ai-comfyui-field-key { font-size: 12px; font-weight: 700; color: var(--text); }
  .ai-comfyui-field-key i { font-style: normal; font-weight: 400; font-size: 10px; color: var(--text-muted,#6b7280); margin-left: 4px; font-family: ui-monospace, monospace; }
  .ai-comfyui-field-config { display: flex; flex-direction: column; gap: 4px; }
  .ai-comfyui-field-config .settings-input { width: 100%; font-size: 12px; padding: 5px 8px; }
  .ai-comfyui-field-extras { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
  .ai-comfyui-num-pair { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-muted); }
  .ai-comfyui-num-pair input { width: 64px; font-size: 11px; padding: 3px 5px; }
  .ai-comfyui-field-random { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-muted); cursor: pointer; }
  .ai-comfyui-field-options { flex-direction: column; align-items: stretch; gap: 5px; }
  .ai-comfyui-opt-row { display: flex; align-items: center; gap: 6px; }
  .ai-comfyui-opt-idx { font-size: 11px; color: var(--text-muted); width: 14px; text-align: center; flex-shrink: 0; }
  .ai-comfyui-opt-row .settings-input { flex: 1; font-size: 12px; padding: 4px 8px; }
  .ai-comfyui-opt-del { width: 22px; height: 22px; padding: 0; border: none; border-radius: 6px; background: rgba(248,113,113,0.12); color: #f87171; cursor: pointer; font-size: 13px; line-height: 1; flex-shrink: 0; }
  .ai-comfyui-opt-del:hover { background: rgba(248,113,113,0.25); }
  .ai-comfyui-test-canvas { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 10px; overflow: auto; }
  .ai-comfyui-test-field { display: flex; flex-direction: column; gap: 5px; }
  .ai-comfyui-test-field label { font-size: 12.5px; font-weight: 600; color: var(--text); }
  .ai-comfyui-test-field .settings-input { width: 100%; }
  .ai-comfyui-test-field-check { flex-direction: row; align-items: center; gap: 10px; }
  .ai-comfyui-test-file-btn {
    display: flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer;
    min-height: 90px; border: 1px dashed rgba(125,211,252,0.4); border-radius: 12px;
    color: var(--text-muted); font-size: 12.5px; background: rgba(125,211,252,0.04);
  }
  .ai-comfyui-test-file-btn:hover { border-color: rgba(125,211,252,0.7); }
  .ai-comfyui-test-img-preview { max-height: 90px; max-width: 100%; border-radius: 10px; }
  .ai-comfyui-test-actions { display: flex; gap: 10px; align-items: center; margin-top: 6px; }
  .ai-comfyui-test-result { margin-top: 4px; padding: 12px; border-radius: 12px; border: 1px solid rgba(74,222,128,0.25); background: rgba(74,222,128,0.05); display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
  .ai-comfyui-test-result-meta { font-size: 12px; color: var(--text-muted); }
  .ai-comfyui-test-running { border-color: rgba(125,211,252,0.35); background: rgba(125,211,252,0.06); color: #7dd3fc; }
  .ai-comfyui-test-error { border-color: rgba(248,113,113,0.35); background: rgba(248,113,113,0.06); color: #f87171; }

/* ============ 设置内容页顶部固定（标题 + 二级选项卡） ============ */
  .settings-content-head {
    position: sticky; top: 0; z-index: 8;
    margin: 0 -32px 24px; padding: 18px 32px 12px;
    background: rgb(22,24,28);
  }
  html[data-theme="light"] .settings-content-head {
    background: #ffffff;
  }
  .settings-content-head .settings-section-title { margin: 0 0 10px; }
  .settings-content-head .settings-tabs { margin-bottom: 0; }

/* ============ ComfyUI 配置页：后端卡片 + 工作流卡片 + 详情弹窗 ============ */
  .ai-comfyui-ep-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
  .ai-comfyui-ep-card {
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.08); border-radius: 14px;
    padding: 14px 16px; display: flex; flex-direction: column; gap: 8px;
    transition: border-color .15s, background .15s;
  }
  html[data-theme="light"] .ai-comfyui-ep-card { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-ep-card:hover { border-color: rgba(125,211,252,0.35); }
  .ai-comfyui-ep-card-top { display: flex; align-items: center; gap: 8px; min-width: 0; }
  .ai-comfyui-ep-card-top strong { font-size: 13.5px; font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
  .ai-comfyui-ep-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; background: rgba(148,163,184,0.6); box-shadow: 0 0 0 3px rgba(148,163,184,0.12); }
  .ai-comfyui-ep-dot.ok { background: #34d399; box-shadow: 0 0 8px rgba(52,211,153,0.6); }
  .ai-comfyui-ep-dot.down { background: #f87171; box-shadow: 0 0 8px rgba(248,113,113,0.6); }
  html[data-theme="light"] .ai-comfyui-ep-dot { background: #94a3b8; box-shadow: 0 0 0 3px rgba(148,163,184,0.18); }
  html[data-theme="light"] .ai-comfyui-ep-dot.ok { background: #16a34a; box-shadow: 0 0 0 3px rgba(22,163,74,0.18); }
  html[data-theme="light"] .ai-comfyui-ep-dot.down { background: #dc2626; box-shadow: 0 0 0 3px rgba(220,38,38,0.18); }
  .ai-comfyui-ep-card-url { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-comfyui-ep-card-actions { display: flex; gap: 6px; }
  .ai-comfyui-ep-card-actions .btn-ghost { padding: 5px 10px; font-size: 11.5px; }
  .ai-comfyui-wf-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; }
  .ai-comfyui-wf-card {
    position: relative; z-index: 1;
    display: flex; flex-direction: column; gap: 8px; text-align: left;
    padding: 12px 14px; border-radius: 12px; cursor: pointer;
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07);
    color: var(--text); font-family: var(--font); transition: border-color .15s, background .15s, transform .1s;
  }
  html[data-theme="light"] .ai-comfyui-wf-card { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-wf-card:hover { border-color: rgba(125,211,252,0.5); background: rgba(125,211,252,0.05); transform: translateY(-1px); }
  .ai-comfyui-wf-card.wf-menu-open { z-index: 20; transform: none; }
  .ai-comfyui-wf-card-top { display: flex; align-items: center; gap: 12px; min-width: 0; }
  .ai-comfyui-wf-title { flex: 1; min-width: 0; font-size: 13px; font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-comfyui-wf-card-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
  .ai-comfyui-wf-stats { flex: 1; min-width: 0; font-size: 11.5px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-comfyui-wf-card-actions { display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; }
  .ai-comfyui-wf-backend { position: relative; display: inline-flex; }
  .ai-comfyui-wf-backend-trigger {
    display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px;
    border-radius: 999px; border: 1px solid rgba(255,255,255,0.14); background: rgba(255,255,255,0.05);
    color: var(--text-muted); font-size: 11px; cursor: pointer; transition: all .15s ease;
  }
  .ai-comfyui-wf-backend-trigger:hover { border-color: rgba(125,211,252,0.5); color: var(--text); }
  .ai-comfyui-wf-backend-dot { width: 6px; height: 6px; border-radius: 50%; background: rgba(148,163,184,0.6); flex-shrink: 0; }
  .ai-comfyui-wf-backend-dot.set { background: #4ade80; box-shadow: 0 0 6px rgba(74,222,128,0.5); }
  .ai-comfyui-wf-backend-menu {
    position: absolute; top: calc(100% + 6px); right: 0; z-index: 60; min-width: 150px;
    padding: 5px; border-radius: 10px; background: var(--modal-bg,#1c1c1c); border: 1px solid var(--modal-border);
    box-shadow: 0 14px 36px rgba(0,0,0,0.45); display: flex; flex-direction: column; gap: 2px;
  }
  .ai-comfyui-wf-backend-menu[hidden] { display: none; }
  .ai-comfyui-wf-backend-menu button {
    border: none; background: transparent; color: var(--text-dim); font-size: 12px; text-align: left;
    padding: 6px 10px; border-radius: 7px; cursor: pointer; white-space: nowrap;
  }
  .ai-comfyui-wf-backend-menu button:hover { background: rgba(255,255,255,0.08); color: var(--text); }
  html[data-theme="light"] .ai-comfyui-wf-backend-trigger { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.12); color: #374151; }
  html[data-theme="light"] .ai-comfyui-wf-backend-menu { background: #fff; border-color: rgba(0,0,0,0.10); }
  html[data-theme="light"] .ai-comfyui-wf-backend-menu button:hover { background: rgba(0,0,0,0.06); color: #111827; }
  .ai-comfyui-wf-edit {
    width: 26px; height: 26px; padding: 0; border-radius: 7px; border: 1px solid transparent;
    background: transparent; color: var(--text-muted); cursor: pointer; display: inline-flex;
    align-items: center; justify-content: center; transition: all .15s ease; flex-shrink: 0;
  }
  .ai-comfyui-wf-edit:hover { background: rgba(255,255,255,0.08); color: var(--text); border-color: rgba(255,255,255,0.12); }
  html[data-theme="light"] .ai-comfyui-wf-edit:hover { background: rgba(0,0,0,0.06); color: #111827; }
  .ai-comfyui-wf-card-edit { font-size: 11.5px; color: var(--neon-bright, #4ade80); opacity: 0.75; flex-shrink: 0; }
  .ai-comfyui-wf-card:hover .ai-comfyui-wf-card-edit { opacity: 1; }

/* 工作流详情弹窗（与系统弹窗风格一致） */
  .ai-comfyui-modal-overlay {
    position: fixed; inset: 0; z-index: 220;
    display: flex; align-items: center; justify-content: center;
    background: rgba(0,0,0,0.55); backdrop-filter: blur(10px);
    opacity: 0; transition: opacity .25s ease;
  }
  html[data-theme="light"] .ai-comfyui-modal-overlay { background: rgba(0,0,0,0.35); }
  .ai-comfyui-modal-overlay.show { opacity: 1; }
  .ai-comfyui-modal {
    width: 950px; max-width: calc(100vw - 40px);
    height: 950px; max-height: calc(100vh - 60px);
    background: rgba(22,24,28,0.78); border: 1px solid rgba(255,255,255,0.08); border-radius: 18px;
    display: flex; flex-direction: column; overflow: hidden;
    box-shadow: 0 40px 120px rgba(0,0,0,0.65);
    backdrop-filter: blur(16px);
    transform: translateY(10px); transition: transform .3s cubic-bezier(0.16, 1, 0.3, 1);
  }
  html[data-theme="light"] .ai-comfyui-modal { background: var(--modal-bg); border-color: var(--modal-border); box-shadow: 0 30px 80px rgba(0,0,0,0.25); }
  .ai-comfyui-modal-overlay.show .ai-comfyui-modal { transform: translateY(0); }
  .ai-comfyui-modal-head {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 16px 20px; border-bottom: 1px solid rgba(255,255,255,0.06);
  }
  html[data-theme="light"] .ai-comfyui-modal-head { border-color: rgba(0,0,0,0.06); }
  .ai-comfyui-modal-title { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
  .ai-comfyui-modal-title h3 { margin: 0; font-size: 16px; font-weight: 800; color: var(--text); }
  .ai-comfyui-modal-title span { font-size: 12px; color: var(--text-muted); }
  .ai-comfyui-modal-tabs {
    display: flex; gap: 2px; padding: 0 20px;
    border-bottom: 1px solid var(--border);
  }
  .ai-comfyui-modal-tabs .settings-tab { margin-bottom: -1px; }
  .ai-comfyui-modal-body { flex: 1; overflow-y: auto; padding: 16px 20px 20px; display: flex; }
  .ai-comfyui-modal-body::-webkit-scrollbar { width: 6px; height: 6px; }
  .ai-comfyui-modal-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); border-radius: 999px; }
  html[data-theme="light"] .ai-comfyui-modal-body::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.18); }

/* ============ 编辑 API 平台弹窗（简约版） ============ */
  .ai-model-head-sub { margin: 3px 0 0; font-size: 12px; color: var(--text-muted); }
  .ai-model-verify-row { display: flex; align-items: center; gap: 10px; margin-top: 12px; }
  .ai-model-verify-inline { font-size: 12px; color: var(--text-muted); min-height: 16px; }
  .ai-model-section-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
  .ai-model-fetch-summary { font-size: 12px; color: var(--text-muted); }
  .ai-model-fetch-panel {
    margin-top: 12px; border: 1px solid rgba(125,211,252,0.25); border-radius: 12px;
    background: rgba(125,211,252,0.04); padding: 12px;
  }
  html[data-theme="light"] .ai-model-fetch-panel { background: rgba(2,132,199,0.04); border-color: rgba(2,132,199,0.25); }
  .ai-model-fetch-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
  .ai-model-filter-chips { display: flex; gap: 6px; }
  .ai-model-filter-chips .chip {
    padding: 4px 12px; border-radius: 999px; border: 1px solid rgba(255,255,255,0.12);
    background: transparent; color: var(--text-dim); font-size: 12px; cursor: pointer;
  }
  html[data-theme="light"] .ai-model-filter-chips .chip { border-color: rgba(0,0,0,0.15); }
  .ai-model-filter-chips .chip.active { border-color: rgba(125,211,252,0.6); color: #7dd3fc; background: rgba(125,211,252,0.1); }
  html[data-theme="light"] .ai-model-filter-chips .chip.active { color: #0284c7; border-color: rgba(2,132,199,0.5); background: rgba(2,132,199,0.08); }
  .ai-model-fetch-search {
    flex: 1; min-width: 140px; padding: 6px 10px; border-radius: 8px; font-size: 12px;
    background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); color: var(--text); outline: none;
  }
  html[data-theme="light"] .ai-model-fetch-search { background: #fff; border-color: rgba(0,0,0,0.15); color: #111827; }
  .ai-model-fetch-list { max-height: 220px; overflow-y: auto; display: flex; flex-direction: column; gap: 4px; }
  .ai-model-fetch-item {
    display: flex; align-items: center; gap: 10px; padding: 6px 10px; border-radius: 8px; cursor: pointer;
    color: var(--text); font-size: 12.5px;
  }
  .ai-model-fetch-item:hover { background: rgba(255,255,255,0.05); }
  html[data-theme="light"] .ai-model-fetch-item:hover { background: rgba(0,0,0,0.04); }
  .ai-model-fetch-item.checked { background: rgba(125,211,252,0.08); }
  .ai-model-fetch-item input { accent-color: var(--neon); }
  .ai-model-fetch-id { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-model-fetch-item em { font-style: normal; font-size: 11px; color: var(--text-muted); border: 1px solid rgba(255,255,255,0.12); border-radius: 6px; padding: 1px 8px; }
  html[data-theme="light"] .ai-model-fetch-item em { border-color: rgba(0,0,0,0.12); }
  .ai-model-fetch-apply { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; }
  .ai-model-fetch-apply span { font-size: 12px; color: var(--text-muted); }

  /* 已应用模型：chip 风格 */
  .ai-model-type-list { display: flex; flex-wrap: wrap; gap: 8px; }
  .ai-model-id-row {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 6px 10px; border-radius: 999px;
    background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1);
    font-size: 12px; color: var(--text);
  }
  html[data-theme="light"] .ai-model-id-row { background: rgba(0,0,0,0.04); border-color: rgba(0,0,0,0.1); }
  .ai-model-id-name { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-model-limit-label { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-muted); }
  .ai-model-limit-label input { width: 44px; padding: 2px 4px; border-radius: 6px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); color: var(--text); }
  .ai-model-id-del {
    width: 18px; height: 18px; border-radius: 50%; border: none; cursor: pointer;
    background: rgba(248,113,113,0.15); color: #f87171; font-size: 13px; line-height: 1; display: grid; place-items: center;
  }
  .ai-model-id-del:hover { background: rgba(248,113,113,0.3); }
  .ai-model-add-row { display: flex; gap: 8px; margin-top: 14px; }
  .ai-model-add-row input { flex: 1; padding: 8px 12px; border-radius: 9px; font-size: 13px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); color: var(--text); outline: none; }
  html[data-theme="light"] .ai-model-add-row input { background: #fff; border-color: rgba(0,0,0,0.15); color: #111827; }
  .ai-model-add-row select { padding: 8px 10px; border-radius: 9px; font-size: 13px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); color: var(--text); }
  html[data-theme="light"] .ai-model-add-row select { background: #fff; border-color: rgba(0,0,0,0.15); color: #111827; }
/* 智能中枢主模型分配（最多 5 个） */
.settings-agent-models { display: flex; flex-direction: column; gap: 8px; }
.settings-agent-model-row { display: flex; align-items: center; gap: 8px; }
.settings-agent-model-row .settings-select-custom, .settings-agent-model-row .ui-select { flex: 1; min-width: 0; }
.settings-agent-model-idx { width: 22px; height: 22px; border-radius: 50%; background: rgba(74,222,128,0.15); color: #4ade80; font-size: 11px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.settings-agent-model-del { border: none; background: none; color: #f87171; cursor: pointer; font-size: 13px; padding: 4px 6px; flex-shrink: 0; }
.settings-agent-model-foot { font-size: 12px; color: var(--text-muted, #9ca3af); }
.settings-link { border: none; background: none; color: #60a5fa; cursor: pointer; font-size: 12px; padding: 0; }
html[data-theme="light"] .settings-agent-model-idx { background: rgba(22,163,74,0.12); color: #15803d; }
/* 智能中枢设置分区 */
.settings-pill-green { color: #4ade80; border-color: rgba(74,222,128,0.4); background: rgba(74,222,128,0.1); }
.settings-sub-title { font-size: 13px; font-weight: 700; color: var(--text-dim); margin: 16px 0 6px; }
.settings-empty { font-size: 12.5px; color: var(--text-muted, #9ca3af); padding: 8px 0; }
html[data-theme="light"] .settings-pill-green { color: #15803d; border-color: rgba(22,163,74,0.35); background: rgba(22,163,74,0.08); }
/* 智能中枢主模型：默认模型式行（平台+模型并排）+ 添加 */
.settings-agent-model-list { display: flex; flex-direction: column; gap: 8px; }
.settings-agent-model-row { display: flex; align-items: center; gap: 8px; }
.settings-agent-model-row .ui-select { flex: 1 1 0; min-width: 0; }
.settings-agent-model-row .ui-select:first-of-type { max-width: 180px; }
/* API 消耗统计 */
.settings-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 10px; margin-bottom: 12px; }
.settings-stat-card { border: 1px solid var(--border, rgba(255,255,255,0.1)); border-radius: 12px; padding: 12px 10px; text-align: center; background: rgba(255,255,255,0.04); }
.settings-stat-num { font-size: 20px; font-weight: 800; color: #4ade80; }
.settings-stat-label { font-size: 11.5px; color: var(--text-muted, #9ca3af); margin-top: 3px; }
.settings-stats-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.settings-stats-table th, .settings-stats-table td { text-align: left; padding: 7px 9px; border-bottom: 1px solid var(--border, rgba(255,255,255,0.08)); }
.settings-stats-table th { color: var(--text-muted, #9ca3af); font-weight: 600; }
html[data-theme="light"] .settings-stat-card { background: #fafafa; }
/* 智能中枢 LLM 分配（block 布局：标题/说明置顶，列表紧凑） */
.settings-agent-models-block { display: flex; flex-direction: column; gap: 10px; }
.settings-agent-models-head { display: flex; align-items: center; gap: 10px; }
.settings-agent-models-head strong { font-size: 15px; }
.settings-agent-models-desc { font-size: 12.5px; color: var(--text-muted, #9ca3af); }
.settings-agent-model-list { display: flex; flex-direction: column; gap: 8px; }
.settings-agent-model-row { display: flex; align-items: center; gap: 8px; }
.settings-agent-model-row .ui-select { flex: 1 1 0; min-width: 0; }
.settings-agent-model-row .ui-select:first-of-type { max-width: 200px; }
.settings-agent-model-foot { font-size: 12.5px; }
/* 插件行操作区：配置在前、开关在后 */
.settings-plugin-control { display: inline-flex; align-items: center; gap: 12px; }
.settings-plugin-config { min-width: 40px; padding: 3px 9px; font-size: 11.5px; line-height: 1.3; border-radius: 7px; height: 24px; }

/* 我的账户/头像/密码等自定义弹窗：固定可见，不受 settings-overlay 淡入淡出影响 */
.settings-overlay.settings-popover {
  opacity: 1;
}

/* ==================== ComfyUI 工作流列表增强：筛选/批量/拖拽排序/序号 ==================== */
  .ai-comfyui-wf-toolbar { display: flex; align-items: center; gap: 8px; margin: 2px 0 12px; flex-wrap: wrap; }
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-search { flex: 1; min-width: 160px; max-width: 320px; }
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-kind { width: auto; min-width: 118px; }
  .ai-comfyui-wf-count { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
  .ai-comfyui-wf-batchbar {
    position: relative; display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    padding: 8px 12px; margin-bottom: 10px; border-radius: 12px;
    background: rgba(74,222,128,0.08); border: 1px solid rgba(74,222,128,0.25);
  }
  html[data-theme="light"] .ai-comfyui-wf-batchbar { background: rgba(22,163,74,0.07); border-color: rgba(22,163,74,0.22); }
  .ai-comfyui-wf-batch-count { font-size: 12.5px; color: var(--text); }
  .ai-comfyui-wf-batch-count b { color: var(--neon-bright, #4ade80); }
  .ai-comfyui-wf-batch-menu {
    position: absolute; top: calc(100% + 6px); left: 12px; z-index: 80; min-width: 240px;
    padding: 8px; border-radius: 12px;
    background: var(--modal-bg, #1c1c1c); border: 1px solid var(--modal-border, rgba(255,255,255,0.1));
    box-shadow: 0 14px 36px rgba(0,0,0,0.45); display: flex; flex-direction: column; gap: 4px;
  }
  .ai-comfyui-wf-batch-menu-title { font-size: 12px; font-weight: 700; color: var(--text); padding: 2px 6px 8px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
  .ai-comfyui-wf-batch-menu-opts { display: flex; flex-direction: column; gap: 2px; max-height: 230px; overflow-y: auto; }
  .ai-comfyui-wf-batch-menu-opts button {
    display: flex; align-items: center; gap: 7px; border: none; background: transparent;
    color: var(--text-dim); font-size: 12px; text-align: left; padding: 7px 10px; border-radius: 8px; cursor: pointer; white-space: nowrap;
  }
  .ai-comfyui-wf-batch-menu-opts button:hover { background: rgba(255,255,255,0.08); color: var(--text); }
  html[data-theme="light"] .ai-comfyui-wf-batch-menu-opts button:hover { background: rgba(0,0,0,0.06); color: #111827; }
  .ai-comfyui-wf-batch-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; background: rgba(148,163,184,0.55); }
  .ai-comfyui-wf-batch-dot.sel { background: #4ade80; box-shadow: 0 0 6px rgba(74,222,128,0.55); }
  .ai-comfyui-wf-batch-menu-actions { display: flex; justify-content: flex-end; gap: 8px; padding-top: 8px; border-top: 1px solid var(--border); margin-top: 4px; }
  .ai-comfyui-wf-batch-menu-actions .btn-ghost, .ai-comfyui-wf-batch-menu-actions .btn-neon { padding: 6px 12px; font-size: 12px; }

  .ai-comfyui-wf-list { display: flex; flex-direction: column; gap: 8px; }
  .ai-comfyui-wf-row {
    position: relative; z-index: 1; display: flex; align-items: center; gap: 10px;
    padding: 10px 12px; border-radius: 12px; text-align: left;
    background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.07);
    transition: border-color .15s, background .15s, opacity .15s, transform .1s;
  }
  html[data-theme="light"] .ai-comfyui-wf-row { background: rgba(0,0,0,0.03); border-color: rgba(0,0,0,0.08); }
  .ai-comfyui-wf-row:hover { border-color: rgba(125,211,252,0.5); background: rgba(125,211,252,0.05); }
  .ai-comfyui-wf-row.wf-menu-open { z-index: 20; }
  .ai-comfyui-wf-row.dragging { opacity: .45; }
  .ai-comfyui-wf-row.drop-target { border-color: var(--neon, #4ade80); background: rgba(74,222,128,0.08); }
  .ai-comfyui-wf-check { display: inline-flex; align-items: center; flex-shrink: 0; cursor: pointer; }
  .ai-comfyui-wf-check input { width: 15px; height: 15px; accent-color: var(--neon, #4ade80); cursor: pointer; margin: 0; }
  .ai-comfyui-wf-sort {
    width: 56px; flex-shrink: 0; text-align: center;
    padding: 5px 4px !important; font-size: 12px !important;
  }
  .ai-comfyui-wf-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
  .ai-comfyui-wf-drag {
    flex-shrink: 0; width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center;
    cursor: grab; color: var(--text-muted); font-size: 16px; border-radius: 7px; user-select: none; touch-action: none;
  }
  .ai-comfyui-wf-drag:hover { background: rgba(255,255,255,0.08); color: var(--text); }
  html[data-theme="light"] .ai-comfyui-wf-drag:hover { background: rgba(0,0,0,0.06); color: #111827; }
  .ai-comfyui-wf-row .ai-comfyui-wf-icon {
    flex-shrink: 0; width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center;
    font-size: 15px; font-weight: 800; border-radius: 10px;
    background: rgba(2,132,199,0.12); border: 1px solid rgba(2,132,199,0.25); color: #38bdf8;
  }
  html[data-theme="light"] .ai-comfyui-wf-row .ai-comfyui-wf-icon { background: rgba(2,132,199,0.10); border-color: rgba(2,132,199,0.22); color: #0284c7; }
  .ai-comfyui-wf-row .ai-comfyui-wf-title { display: block; font-size: 13px; font-weight: 700; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ai-comfyui-wf-row .ai-comfyui-wf-stats { display: block; font-size: 11.5px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ==================== 添加后端弹窗（跟随现有深色 UI） ==================== */
  .ai-comfyui-add-ep-overlay { z-index: 100010; }
  .ai-comfyui-add-ep-overlay .ui-modal-card { width: 480px; max-width: calc(100vw - 40px); border-radius: 16px; overflow: visible; }
  .ai-comfyui-add-ep { padding: 4px 2px 2px; }
  .ai-comfyui-add-ep-title { font-size: 16px; font-weight: 800; color: var(--text); margin-bottom: 2px; }
  .ai-comfyui-add-ep-sub { font-size: 12px; color: var(--text-muted); margin-bottom: 14px; }
  .ai-comfyui-add-ep-test-row { display: flex; align-items: center; gap: 10px; margin-top: 4px; }
  .ai-comfyui-add-ep-test-state { font-size: 12px; min-height: 18px; color: var(--text-muted); }
  .ai-comfyui-add-ep-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
  .ai-comfyui-add-ep-actions .btn-ghost, .ai-comfyui-add-ep-actions .btn-neon { padding: 8px 16px; font-size: 12.5px; }

/* ==================== ComfyUI UI 统一规范（圆角 / 图标 / 操作栏 / 列表 / 拖拽动画 / 弹窗） ==================== */
/* 1. 按钮统一：全部 9px 圆角（参照上传工作流），内联 flex 垂直居中，图标 16px 统一 */
  .ai-comfyui-group .btn-ghost,
  .ai-comfyui-group .btn-neon,
  .ai-comfyui-modal .btn-ghost,
  .ai-comfyui-modal .btn-neon,
  .ai-comfyui-add-ep-overlay .btn-ghost,
  .ai-comfyui-add-ep-overlay .btn-neon {
    border-radius: 9px !important;
  }
  .ai-comfyui-group .btn-ghost,
  .ai-comfyui-group .btn-neon,
  .ai-comfyui-add-ep-overlay .btn-ghost,
  .ai-comfyui-add-ep-overlay .btn-neon {
    padding: 7px 14px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.01em;
  }
  .ai-comfyui-group .btn-neon,
  .ai-comfyui-add-ep-overlay .btn-neon { padding: 7px 16px; }
  .ai-comfyui-group button,
  .ai-comfyui-group .btn-ghost,
  .ai-comfyui-group .btn-neon,
  .ai-comfyui-add-ep-overlay button,
  .ai-comfyui-add-ep-overlay .btn-ghost,
  .ai-comfyui-add-ep-overlay .btn-neon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
  }
  .ai-comfyui-group button svg,
  .ai-comfyui-group .btn-ghost svg,
  .ai-comfyui-group .btn-neon svg,
  .ai-comfyui-add-ep-overlay button svg,
  .ai-comfyui-add-ep-overlay .btn-ghost svg,
  .ai-comfyui-add-ep-overlay .btn-neon svg {
    width: 16px; height: 16px; flex-shrink: 0; display: block;
  }
  /* 上传工作流 label 按钮：与其它按钮同规格 */
  .ai-comfyui-import-btn { gap: 6px !important; border-radius: 9px !important; }
  /* 行内编辑按钮 / 拖拽把手：统一 9px 圆角 */
  .ai-comfyui-wf-edit { border-radius: 9px; }
  .ai-comfyui-wf-drag { border-radius: 9px; }
  /* 每行后端下拉触发按钮：取消胶囊，统一 9px 圆角（箭头图标保持 12px） */
  .ai-comfyui-wf-backend-trigger { border-radius: 9px; }
  .ai-comfyui-group .ai-comfyui-wf-backend-trigger svg { width: 12px; height: 12px; }
  /* 批量下拉选项 / 每行后端菜单选项：统一 9px 圆角 */
  .ai-comfyui-wf-batch-menu button,
  .ai-comfyui-wf-backend-menu button { border-radius: 9px; }
  .ai-comfyui-wf-batch-menu-actions .btn-ghost,
  .ai-comfyui-wf-batch-menu-actions .btn-neon { border-radius: 9px !important; }

/* 2. 筛选栏统一操作栏：搜索/类型下拉/重置/刷新/上传单行排布（不换行），复用 base-select 组件 */
  .ai-comfyui-wf-toolbar {
    display: flex; align-items: center; gap: 8px; margin: 2px 0 12px; flex-wrap: nowrap;
  }
  .ai-comfyui-wf-toolbar-spacer { flex: 1 1 auto; }
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-search {
    flex: 1 1 auto; min-width: 120px; max-width: 260px; height: 32px;
  }
  /* 类型下拉：项目统一 base-select（ui.select）组件，收窄宽度 */
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-kind-select {
    width: 118px; flex: 0 0 auto;
  }
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-kind-select .ui-select-trigger {
    height: 32px; padding: 0 10px; gap: 6px; border-radius: 9px;
    font-size: 12px; color: var(--text, #e5e7eb);
    background: var(--surface, rgba(255,255,255,0.04)); border: 1px solid var(--border, rgba(255,255,255,0.10));
  }
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-kind-select .ui-select-trigger svg { width: 13px; height: 13px; }
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-kind-select .ui-select-dropdown .ui-select-option { font-size: 12px; }
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-count { font-size: 12px; color: var(--text-muted); white-space: nowrap; flex: 0 0 auto; }
  .ai-comfyui-wf-toolbar .btn-ghost,
  .ai-comfyui-wf-toolbar .btn-neon { height: 32px; white-space: nowrap; flex: 0 0 auto; }
  .ai-comfyui-wf-toolbar .ai-comfyui-wf-reset-sort { margin-left: 4px; }

/* 3. 工作流列表条目：复选框 / 序号 / 拖拽把手垂直居中，序号变窄，名称不被挤压 */
  .ai-comfyui-wf-row { align-items: center; }
  .ai-comfyui-wf-check,
  .ai-comfyui-wf-sort,
  .ai-comfyui-wf-drag { align-self: center; }
  .ai-comfyui-wf-check { margin: 0 2px; }
  .ai-comfyui-wf-sort {
    width: 44px; min-width: 44px; height: 28px; padding: 0 2px !important;
    text-align: center; font-size: 12px !important; flex-shrink: 0;
  }
  .ai-comfyui-wf-main { flex: 1 1 auto; min-width: 0; }
  .ai-comfyui-wf-row .ai-comfyui-wf-title {
    white-space: normal; word-break: break-word; line-height: 1.35; display: block;
  }
  .ai-comfyui-wf-row .ai-comfyui-wf-stats { white-space: nowrap; }
  .ai-comfyui-wf-drag {
    width: 28px; height: 28px; border-radius: 8px; margin-left: 2px;
    display: inline-flex; align-items: center; justify-content: center;
  }
  .ai-comfyui-wf-row .ai-comfyui-wf-icon { flex-shrink: 0; }

/* 4. 拖拽排序动画：插入引导线 + 周边平滑避让 + 被拖条目上浮阴影（200~300ms） */
  .ai-comfyui-wf-row {
    transition: transform .22s cubic-bezier(0.16, 1, 0.3, 1), border-color .18s ease, background .18s ease, opacity .2s ease, box-shadow .2s ease;
  }
  .ai-comfyui-wf-row.dragging {
    opacity: .55;
    transform: translateY(-2px) scale(1.015);
    background: rgba(30, 41, 59, 0.95);
    border-color: rgba(125, 211, 252, 0.55);
    box-shadow: 0 14px 34px rgba(0, 0, 0, 0.5), 0 4px 14px rgba(0, 0, 0, 0.35);
    z-index: 30;
  }
  html[data-theme="light"] .ai-comfyui-wf-row.dragging { background: #ffffff; }
  .ai-comfyui-wf-row.drop-target {
    transform: translateY(10px);
    border-color: rgba(74, 222, 128, 0.45);
    background: rgba(74, 222, 128, 0.06);
  }
  .ai-comfyui-wf-row.drop-target::before {
    content: '';
    position: absolute; top: -10px; left: 10px; right: 10px; height: 2px;
    border-radius: 2px; background: var(--neon, #4ade80);
    box-shadow: 0 0 10px rgba(74, 222, 128, 0.8);
    z-index: 5; pointer-events: none;
  }

/* 5. 添加后端弹窗：四周留白 + 表单分区 + 统一排版 */
  .ai-comfyui-add-ep-overlay .ui-modal-card { width: 500px; padding: 0; overflow: visible; }
  .ai-comfyui-add-ep { padding: 24px 26px 22px; }
  .ai-comfyui-add-ep-title { font-size: 16px; font-weight: 800; color: var(--text); margin-bottom: 4px; }
  .ai-comfyui-add-ep-sub { font-size: 12px; color: var(--text-muted); margin-bottom: 16px; line-height: 1.5; }
  .ai-comfyui-add-ep-form {
    margin: 0 0 14px; padding: 2px 16px 0;
    border-radius: 12px; background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.07);
  }
  html[data-theme="light"] .ai-comfyui-add-ep-form { background: rgba(0, 0, 0, 0.03); border-color: rgba(0, 0, 0, 0.08); }
  .ai-comfyui-add-ep-form .settings-row {
    min-height: 54px; padding: 10px 0; gap: 18px; align-items: center;
  }
  .ai-comfyui-add-ep-form .settings-control { min-width: 200px; }
  .ai-comfyui-add-ep-form .settings-input { height: 36px; }
  .ai-comfyui-add-ep-test-row { display: flex; align-items: center; gap: 12px; margin-top: 2px; }
  .ai-comfyui-add-ep-test-row .ai-comfyui-add-ep-test { padding: 8px 16px; }
  .ai-comfyui-add-ep-test-state { font-size: 12px; min-height: 18px; color: var(--text-muted); }
  .ai-comfyui-add-ep-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; }
  .ai-comfyui-add-ep-actions .btn-ghost,
  .ai-comfyui-add-ep-actions .btn-neon { padding: 8px 18px; font-size: 12.5px; }

/* ==================== ComfyUI 工作流行「⋯」菜单 + 重命名弹窗 ==================== */
  .ai-comfyui-group .ai-comfyui-wf-more .ui-dropdown { display: inline-flex; }
  .ai-comfyui-group .ai-comfyui-wf-more .ui-dd-trigger {
    width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center;
    border-radius: 9px; border: 1px solid transparent; color: var(--text-muted);
    background: transparent; cursor: pointer; transition: all .15s ease; flex-shrink: 0;
  }
  .ai-comfyui-group .ai-comfyui-wf-more .ui-dd-trigger:hover {
    background: rgba(255,255,255,0.08); color: var(--text); border-color: rgba(255,255,255,0.12);
  }
  html[data-theme="light"] .ai-comfyui-group .ai-comfyui-wf-more .ui-dd-trigger:hover { background: rgba(0,0,0,0.06); color: #111827; }
  .ai-comfyui-group .ai-comfyui-wf-more .ui-dd-trigger svg { width: 16px; height: 16px; }
  .ai-comfyui-group .ai-comfyui-wf-more .ui-dropdown-menu { min-width: 136px; }
  .ai-comfyui-rename-overlay .ui-modal-card { width: 380px; max-width: calc(100vw - 40px); border-radius: 14px; }
  .ai-comfyui-rename { padding: 20px 22px 18px; }
  .ai-comfyui-rename-title { font-size: 15px; font-weight: 800; color: var(--text); margin-bottom: 14px; }
  .ai-comfyui-rename-input { width: 100%; margin-bottom: 16px; height: 36px; }
  .ai-comfyui-rename-actions { display: flex; justify-content: flex-end; gap: 10px; }
  .ai-comfyui-rename-actions .btn-ghost,
  .ai-comfyui-rename-actions .btn-neon { border-radius: 9px !important; padding: 7px 16px; font-size: 12.5px; }

/* ---------- 存储与数据（第一阶段） ---------- */
.settings-storage-result {
  margin-top: 10px;
  font-size: 12px;
  color: var(--text-muted);
  min-height: 16px;
}
.settings-storage-result.ok { color: var(--neon-bright); }
.settings-storage-result.err { color: #f87171; }
.settings-empty-hint {
  padding: 24px;
  text-align: center;
  color: var(--text-muted);
  font-size: 13px;
  border: 1px dashed var(--border);
  border-radius: 12px;
}
.storage-readonly-tip {
  font-size: 12px;
  color: #fbbf24;
  padding-top: 2px;
}
.storage-readonly-hint {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 8px;
  font-size: 12px;
  color: var(--text-muted);
  background: var(--surface);
  border: 1px solid var(--border);
}
.storage-business-table-wrap {
  overflow-x: auto;
  margin-top: 4px;
}
.storage-business-table {
  width: 100%;
  min-width: 860px;
  border-collapse: collapse;
  font-size: 13px;
}
.storage-business-table th {
  text-align: left;
  padding: 10px 12px;
  font-size: 12px;
  font-weight: 700;
  color: var(--text-muted);
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.storage-business-table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
  vertical-align: middle;
  white-space: nowrap;
}
.storage-business-table tr:hover td { background: var(--surface); }
.storage-business-table .settings-input {
  width: 100%;
  min-width: 0;
  padding: 8px 10px;
}
.storage-business-table th:nth-child(1), .storage-business-table td:nth-child(1) { min-width: 170px; }
.storage-business-table th:nth-child(2), .storage-business-table td:nth-child(2) { min-width: 220px; }
.storage-business-table th:nth-child(3), .storage-business-table td:nth-child(3) { min-width: 200px; }
.storage-business-table th:nth-child(4), .storage-business-table td:nth-child(4) { min-width: 200px; }
.storage-business-table th:nth-child(5), .storage-business-table td:nth-child(5) { min-width: 150px; }
.storage-business-table th:nth-child(6), .storage-business-table td:nth-child(6) { min-width: 160px; }
.storage-business-table th:nth-child(7), .storage-business-table td:nth-child(7) { min-width: 220px; }
.storage-biz-name { font-weight: 700; color: var(--text); }
.storage-biz-key { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.storage-business-table td:first-child { min-width: 170px; }
.storage-business-table .storage-biz-desc { width: 210px; }
.storage-business-table .storage-biz-source, .storage-business-table .storage-biz-output { width: 190px; }
.storage-business-table .storage-biz-prefix { width: 140px; font-family: var(--mono); font-size: 12px; }
.storage-report-cat td { white-space: nowrap; }

/* ---------- 业务存储分配：提示 / 明细报表 ---------- */
.storage-warn-tip {
  margin: 10px 0 12px;
  padding: 9px 12px;
  border-radius: 10px;
  font-size: 12px;
  color: #fbbf24;
  background: rgba(251,191,36,0.08);
  border: 1px solid rgba(251,191,36,0.25);
}
.storage-head-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.storage-readonly-note {
  margin-top: 10px;
  padding: 14px 16px;
  border-radius: 10px;
  font-size: 13px;
  color: var(--text-muted);
  background: var(--surface);
  border: 1px solid var(--border);
}
.storage-business-table td code {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--neon-bright);
  background: var(--neon-dim);
  padding: 2px 6px;
  border-radius: 6px;
}
.storage-report-cat td {
  padding: 8px 12px;
  background: var(--surface-2);
  font-size: 13px;
}
.storage-report-cat td strong { color: var(--text); }

/* ---------- 业务分配：栏目配置卡片 / 素材源列表 ---------- */
.storage-columns {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: 16px;
}
.storage-column-card {
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface);
  padding: 14px 16px;
}
.storage-column-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 10px;
}
.storage-column-head h4 { margin: 0; font-size: 15px; font-weight: 800; color: var(--text); }
.storage-column-desc { font-size: 12px; color: var(--text-muted); }
.storage-column-block {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}
.storage-block-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
.storage-block-title strong { font-size: 13px; color: var(--text); }
.storage-block-title span { font-size: 11px; color: var(--text-muted); }
.storage-source-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.storage-source-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 12px;
  border-radius: 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
}
.storage-source-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.storage-source-info strong { font-size: 13px; color: var(--text); }
.storage-source-info span { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.storage-source-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.storage-source-add-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}
.storage-source-add-row[hidden] { display: none; }
.storage-source-add-row .settings-input { flex: 1; }
.storage-output-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.storage-output-row label {
  min-width: 200px;
  font-size: 12px;
  color: var(--text-dim);
  white-space: nowrap;
}
.storage-output-row label code {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--neon-bright);
}
.storage-output-row .settings-input { max-width: 320px; }
.storage-output-muted { opacity: 0.75; }

/* ---------- 孤儿回收 / 迁移工具面板 ---------- */
.storage-orphan-check { width: 15px; height: 15px; accent-color: var(--neon); }
.storage-migrate-panel { margin-top: 16px; }
.storage-migrate-stats {
  display: flex;
  gap: 10px;
  margin-bottom: 10px;
}
.storage-migrate-stat {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 12px;
  border-radius: 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
}
.storage-migrate-stat strong { font-size: 18px; color: var(--text); }
.storage-migrate-stat span { font-size: 11px; color: var(--text-muted); }
.storage-migrate-stat.err strong { color: #f87171; }
.storage-migrate-stat.ok strong { color: var(--neon-bright); }
.storage-migrate-confirm {
  margin: 8px 0;
  font-size: 12px;
  color: var(--text-dim);
}
.storage-migrate-confirm input { accent-color: var(--neon); }
.storage-migrate-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
}

/* ---------- 存储分配：手风琴 Accordion ---------- */
.storage-acc {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 6px;
}
.storage-acc-item {
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  overflow: hidden;
}
.storage-acc-item.open { border-color: rgba(94,234,212,0.35); }
.storage-acc-head {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 12px 14px;
  background: transparent;
  border: none;
  color: var(--text);
  cursor: pointer;
  text-align: left;
}
.storage-acc-head:hover { background: var(--surface-hover); }
.storage-acc-chevron {
  flex-shrink: 0;
  width: 18px;
  color: var(--text-muted);
  font-size: 12px;
  transition: transform .2s ease;
}
.storage-acc-title {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.storage-acc-title strong { font-size: 13px; font-weight: 700; color: var(--text); }
.storage-acc-title span { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.storage-acc-head .settings-pill { flex-shrink: 0; }
.storage-acc-body {
  display: none;
  padding: 12px 14px;
  border-top: 1px solid var(--border);
}
.storage-acc-item.open .storage-acc-body { display: block; }
.storage-acc-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.storage-acc-row:last-child { margin-bottom: 0; }
.storage-acc-row label {
  min-width: 130px;
  font-size: 12px;
  color: var(--text-dim);
  white-space: nowrap;
}
.storage-acc-row .settings-input { max-width: 340px; }
.storage-acc-hint {
  margin: 0 0 10px;
  font-size: 12px;
  color: var(--text-muted);
}
.storage-acc-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.storage-acc-advanced .storage-acc-body { padding: 12px 14px; }

/* ---------- 存储分配：分组手风琴 v2 / 素材源弹窗 ---------- */
.storage-acc-chevron { width: 16px; height: 16px; display: inline-flex; align-items: center; justify-content: center; color: var(--text-muted); flex-shrink: 0; }
.storage-acc-chevron svg { width: 14px; height: 14px; transition: transform .2s ease; }
.storage-acc-item.open .storage-acc-chevron svg { transform: rotate(90deg); }
.storage-sub-item {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 0;
  border-top: 1px solid var(--border);
}
.storage-sub-item:first-child { border-top: none; padding-top: 0; }
.storage-sub-item:last-child { padding-bottom: 0; }
.storage-sub-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.storage-sub-info strong { font-size: 13px; color: var(--text); }
.storage-sub-info span { font-size: 12px; color: var(--text-muted); line-height: 1.5; }
.storage-sub-control { flex-shrink: 0; display: flex; flex-direction: column; gap: 6px; min-width: 220px; }
.storage-sub-control label { font-size: 11px; color: var(--text-muted); }
.storage-acc-dual { display: flex; gap: 16px; }
.storage-acc-col { flex: 1; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.storage-acc-col label { font-size: 11px; color: var(--text-muted); }
.storage-acc-col .ui-select { width: 100%; }
.storage-acc-hint { margin: 0 0 10px; font-size: 12px; color: var(--text-muted); line-height: 1.6; }

/* 素材源新增/编辑弹窗 */
.settings-source-overlay {
  position: fixed;
  inset: 0;
  z-index: 300;
  background: rgba(0,0,0,0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}
.settings-source-modal {
  width: 960px;
  max-width: calc(100vw - 32px);
  height: auto; min-height: 440px;
  max-height: min(72vh, 660px);    /* 不占满屏：内容自适应，最多 72vh/660px，内部滚动 */
  border-radius: 16px;
  background: var(--modal-bg);
  border: 1px solid var(--modal-border);
  box-shadow: 0 24px 70px rgba(0,0,0,0.5);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.settings-source-head {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.settings-source-head h3 { margin: 0; font-size: 15px; font-weight: 800; color: var(--text); }
.settings-source-body { display: flex; flex: 1 1 auto; min-height: 0; }
.settings-source-left {
  flex: 0 0 430px; min-width: 0; min-height: 0;
  border-right: 1px solid var(--border);
  display: flex; flex-direction: column;
}
.settings-source-left .storage-source-form { flex: 1 1 auto; overflow-y: auto; padding: 16px 18px; }
.settings-source-modal .settings-config-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.settings-source-modal .settings-config-item { display: flex; flex-direction: column; gap: 6px; }
.settings-source-modal .settings-config-item-full { grid-column: 1 / -1; }
.settings-source-modal .settings-config-item label { font-size: 12px; color: var(--text-muted); }
.settings-source-modal .settings-input { padding: 9px 12px; }
.settings-source-modal input[readonly] { opacity: 0.75; }
.settings-storage-actions {
  flex-shrink: 0; display: flex; justify-content: flex-end; gap: 10px;
  padding: 12px 18px; border-top: 1px solid var(--border); background: var(--modal-bg);
}

/* ---------- 素材源弹窗：测试连接 / 选择根目录 ---------- */
.storage-source-conn { display: flex; align-items: center; gap: 10px; margin-top: 14px; }
.storage-source-conn button[disabled] { opacity: 0.45; cursor: not-allowed; }
.storage-source-conn-result { margin-top: 8px; font-size: 12px; min-height: 16px; }
.storage-source-conn-result:empty { display: none; }

/* 右侧目录树面板 */
.settings-source-right {
  flex: 1 1 auto; min-width: 0; min-height: 0;
  display: flex; flex-direction: column;
  border-left: 1px solid var(--border); background: var(--surface);
  overflow: hidden;
}
.settings-source-right-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px; border-bottom: 1px solid var(--border); flex-shrink: 0;
}
.settings-source-right-head strong { font-size: 13px; color: var(--text); }
.settings-source-right .storage-source-dirs {
  flex: 1 1 auto; min-height: 0; margin: 0; max-height: 60vh;
  border: none; border-radius: 0; background: transparent; overflow-y: auto; padding: 8px 10px;
}
.storage-source-dirs:empty { display: none; }
.storage-source-dir { padding: 4px 8px; font-size: 12px; color: var(--text-dim); border-radius: 6px; }
.storage-source-dir:hover { background: var(--surface-hover); }

/* 素材源类型单选 */
.storage-source-type { display: flex; gap: 14px; padding: 6px 2px; }
.source-type-radio { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text); cursor: pointer; }
.source-type-radio input { accent-color: var(--neon); width: 14px; height: 14px; }

/* 仅索引图片与视频 */
.source-only-media-check { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text); cursor: pointer; padding: 6px 2px; }
.source-only-media-check input { accent-color: var(--neon); width: 14px; height: 14px; }

/* 授权客户：搜索多选（仅私有素材源显示） */
.source-client-multi {
  position: relative;
  border: 1px solid var(--border); border-radius: 8px; background: var(--surface);
  padding: 6px; display: flex; flex-direction: column; gap: 6px;
}
.source-client-portal {
  position: fixed;
  z-index: 6000;
  background: #1b1e24;                    /* 深色不透明背景，避免透底 */
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: 10px;
  box-shadow: 0 18px 44px rgba(0,0,0,0.6);
  padding: 6px;
  max-height: 300px;
  overflow-y: auto;
}
.source-client-portal-title { font-size: 11px; color: var(--text-muted); padding: 4px 8px 6px; }
.source-client-multi-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.source-client-dropdown {
  position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 320;
  background: var(--surface); border: 1px solid var(--border); border-radius: 8px;
  box-shadow: 0 12px 30px rgba(0,0,0,0.35); padding: 6px; max-height: 200px; overflow-y: auto;
}
.source-client-tag {
  display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--neon-bright);
  background: var(--neon-dim); border-radius: 999px; padding: 2px 8px; cursor: pointer; user-select: none;
}
.source-client-tag:hover { color: #fff; background: var(--neon); }
.source-client-search { width: 100%; }
.source-client-options { max-height: 120px; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
.source-client-check { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-dim); cursor: pointer; padding: 3px 8px; border-radius: 6px; }
.source-client-check:hover { background: var(--surface-hover); }
.source-client-check input { accent-color: var(--neon); width: 13px; height: 13px; }

/* 目录树：仅纵向延展，不横向撑开；Windows 资源管理器风格层级连接线 */
.storage-source-tree-hint { font-size: 11px; color: var(--text-dim); padding: 2px 4px 6px; }
.storage-source-tree-children {
  position: relative;
  padding-left: 18px;
  max-width: 100%;
}
.storage-source-tree-children::before {
  content: '';
  position: absolute;
  left: 8px; top: 0; bottom: 0;
  width: 0;
  border-left: 1px solid rgba(255,255,255,0.16);
}
.storage-source-tree-node {
  position: relative;
  display: block; padding: 0; margin: 0;
  border-radius: 6px; max-width: 100%;
}
.storage-source-tree-row {
  position: relative;
  display: flex; align-items: center; gap: 4px;
  padding: 3px 4px 3px 2px; border-radius: 6px; max-width: 100%;
}
.storage-source-tree-row::before {
  content: '';
  position: absolute;
  left: -11px; top: 50%;
  width: 11px;
  border-top: 1px solid rgba(255,255,255,0.16);
}
.storage-source-tree-row:hover { background: var(--surface-hover); }
.storage-source-tree-expander {
  width: 28px; height: 28px; flex: 0 0 28px; display: inline-flex; align-items: center; justify-content: center;
  color: var(--text-muted); cursor: pointer; border-radius: 6px; user-select: none;
}
.storage-source-tree-expander svg { width: 20px; height: 20px; }
.storage-source-tree-expander:hover { color: var(--neon-bright); }
.storage-source-tree-expander.open { color: var(--neon-bright); }
.storage-source-tree-label {
  font-size: 13px; color: var(--text); cursor: pointer; min-width: 0; padding: 3px 4px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.storage-source-tree-label:hover { color: var(--neon-bright); }

/* ---------- 媒体处理：Worker 节点 / 密钥 ---------- */
.worker-secret-box { display: flex; align-items: center; gap: 8px; }
.worker-secret-box code {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--neon-bright);
  background: var(--neon-dim);
  padding: 4px 8px;
  border-radius: 6px;
  max-width: 260px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.worker-radio { display: inline-flex; align-items: center; gap: 6px; margin-right: 14px; font-size: 13px; color: var(--text-dim); cursor: pointer; }
.worker-radio input { accent-color: var(--neon); }
.worker-node-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px; }
.worker-node-card {
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  padding: 12px 14px;
}
.worker-node-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.worker-node-head strong { font-size: 13px; color: var(--text); }
.worker-node-fields { display: flex; flex-direction: column; gap: 6px; }
.worker-node-fields label { font-size: 11px; color: var(--text-muted); }
.worker-node-fields .settings-input { padding: 8px 10px; }
@media (max-width: 860px) {
  .worker-node-grid { grid-template-columns: 1fr; }
}

/* ---------- 媒体处理：三组转码配置手风琴 + 测试工具 ---------- */
.settings-group-head-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.settings-group-head-info { flex: 1; min-width: 0; }
.media-processing-notice {
  margin: 6px 0 0; padding: 10px 12px; border-radius: 8px;
  background: rgba(250,204,21,0.08); border: 1px solid rgba(250,204,21,0.25);
  color: #fde68a; font-size: 12px; line-height: 1.6;
}
.media-accordions { display: flex; flex-direction: column; gap: 12px; }
.media-accordion { border: 1px solid var(--border); border-radius: 12px; background: var(--surface); overflow: hidden; }
.media-accordion-head {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 12px 14px;
  background: transparent; border: none; cursor: pointer; text-align: left;
}
.media-accordion-head:hover { background: var(--surface-hover); }
.media-accordion-title { font-size: 13px; font-weight: 800; color: var(--text); }
.media-accordion-desc { flex: 1; font-size: 11px; color: var(--text-muted); }
.media-accordion-arrow { font-size: 16px; color: var(--text-muted); width: 20px; text-align: center; }
.media-accordion-body { padding: 4px 14px 14px; border-top: 1px solid rgba(255,255,255,0.06); }
.media-acc-section-title { font-size: 12px; font-weight: 800; color: var(--neon-bright); margin: 12px 0 6px; }
.media-range { display: flex; align-items: center; gap: 10px; width: 260px; }
.media-range input[type="range"] { flex: 1; accent-color: var(--neon); }
.media-range span { width: 30px; text-align: right; font-size: 12px; color: var(--text-muted); }
.media-processing-save { margin-top: 16px; }

/* 媒体转码测试工具弹窗 */

/* ---------- 媒体任务执行列表（任务中心） ---------- */
.mtc-overlay { z-index: 100020; }
.mtc-modal {
  width: 1320px; max-width: calc(100vw - 32px); max-height: 90vh;
  background: var(--modal-bg); border: 1px solid var(--modal-border); border-radius: 16px;
  display: flex; flex-direction: column; overflow: hidden;
}
.mtc-body { flex: 1; overflow-y: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 12px; }
.mtc-summary { display: flex; flex-wrap: wrap; gap: 8px; }
.mtc-chip { padding: 5px 12px; border-radius: 999px; font-size: 12px; font-weight: 700; }
.mtc-chip.pending { background: rgba(251,191,36,0.15); color: #fbbf24; border: 1px solid rgba(251,191,36,0.35); }
.mtc-chip.processing { background: rgba(96,165,250,0.15); color: #60a5fa; border: 1px solid rgba(96,165,250,0.35); }
.mtc-chip.done { background: rgba(74,222,128,0.15); color: #4ade80; border: 1px solid rgba(74,222,128,0.35); }
.mtc-chip.error { background: rgba(248,113,113,0.15); color: #f87171; border: 1px solid rgba(248,113,113,0.35); }
.mtc-chip.cancelled { background: rgba(148,163,184,0.15); color: #94a3b8; border: 1px solid rgba(148,163,184,0.35); }
.mtc-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.mtc-filter-label { font-size: 12px; color: var(--text-dim); white-space: nowrap; }
.mtc-filters .ui-select { width: auto; min-width: 140px; flex: none; }
.mtc-batch-bar {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 9px 12px; border: 1px solid var(--border); border-radius: 10px; background: rgba(255,255,255,0.02);
}
.mtc-check-all { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--text); cursor: pointer; }
.mtc-selected-count { font-size: 12px; font-weight: 700; color: var(--neon-bright); }
.mtc-check { width: 34px; text-align: center; }
.mtc-check input[type="checkbox"] { width: 15px; height: 15px; accent-color: var(--neon); cursor: pointer; }
.mtc-filters .settings-input { width: auto; min-width: 130px; }
.mtc-filters #mtcQ { min-width: 220px; }
.mtc-btn { font-size: 12px; padding: 4px 9px; white-space: nowrap; }
.mtc-table-wrap { flex: 1; overflow: auto; border: 1px solid var(--border); border-radius: 10px; min-height: 260px; }
.mtc-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.mtc-table th { position: sticky; top: 0; background: var(--bg-elevated); z-index: 1; text-align: left; padding: 9px 10px; border-bottom: 1px solid var(--border); font-weight: 700; color: var(--text-dim); white-space: nowrap; }
.mtc-table td { padding: 8px 10px; border-bottom: 1px solid rgba(255,255,255,0.05); vertical-align: middle; }
.mtc-table tr:hover td { background: rgba(255,255,255,0.03); }
.mtc-file .mtc-path { font-size: 11px; color: var(--text-muted); max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mtc-status { padding: 3px 9px; border-radius: 999px; font-size: 11px; font-weight: 700; white-space: nowrap; }
.mtc-status.pending { background: rgba(251,191,36,0.15); color: #fbbf24; }
.mtc-status.processing { background: rgba(96,165,250,0.15); color: #60a5fa; }
.mtc-status.done { background: rgba(74,222,128,0.15); color: #4ade80; }
.mtc-status.error { background: rgba(248,113,113,0.15); color: #f87171; }
.mtc-status.cancelled { background: rgba(148,163,184,0.15); color: #94a3b8; }
.mtc-status-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.mtc-ai-tag {
  display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 999px;
  font-size: 10.5px; font-weight: 700; white-space: nowrap;
}
.mtc-ai-tag.ok { background: rgba(167,139,250,0.15); color: #a78bfa; }
.mtc-ai-tag.skip { background: rgba(148,163,184,0.15); color: #94a3b8; }
.mtc-ai-tag.err { background: rgba(248,113,113,0.15); color: #f87171; }
.mtc-ai-tag.empty { background: rgba(251,191,36,0.15); color: #fbbf24; }
.mtc-ai-tag.muted { background: rgba(148,163,184,0.10); color: #94a3b8; }
.mtc-ai-tag.pending {
  background: rgba(251,191,36,0.15); color: #fbbf24; cursor: pointer;
  border: 1px dashed rgba(251,191,36,0.45); padding: 2px 8px;
}
.mtc-ai-tag.pending:hover { background: rgba(251,191,36,0.25); }
.mtc-prods { white-space: nowrap; }
.mtc-prod-row { display: inline-flex; align-items: center; gap: 6px; }
.mtc-prod { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 6px; }
.mtc-prod-img { color: #fbbf24; background: rgba(251,191,36,0.12); }
.mtc-prod-vid { color: #60a5fa; background: rgba(96,165,250,0.12); }
.mtc-ai-chip {
  display: inline-block; margin-left: 4px; padding: 2px 7px; border-radius: 999px;
  font-size: 10.5px; font-weight: 700; color: #94a3b8; border: 1px solid rgba(148,163,184,0.4);
  background: rgba(148,163,184,0.1); vertical-align: middle; white-space: nowrap;
}
.mtc-time { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; }
.mtc-ops { white-space: nowrap; }
.mtc-ops-row { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px; max-width: 320px; }
.mtc-err { margin-top: 4px; font-size: 11px; color: #f87171; max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mtc-empty { text-align: center; color: var(--text-muted); padding: 28px 0; }
.mtc-batch { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; }
.mtc-batch-label { font-size: 12px; font-weight: 700; color: var(--text); }
.mtc-hint { font-size: 11.5px; color: var(--text-muted); margin-left: auto; }
html[data-theme="light"] .mtc-table tr:hover td { background: rgba(0,0,0,0.03); }
html[data-theme="light"] .mtc-table td { border-bottom: 1px solid rgba(0,0,0,0.06); }
.media-test-overlay {
  position: fixed; inset: 0; z-index: 7000;
  background: rgba(0,0,0,0.6); backdrop-filter: blur(6px);
  display: flex; align-items: center; justify-content: center; padding: 24px;
}
.media-test-modal {
  width: 920px; max-width: calc(100vw - 40px); height: min(90vh, 1280px); max-height: 90vh;
  background: var(--modal-bg); border: 1px solid var(--modal-border); border-radius: 16px;
  box-shadow: 0 30px 90px rgba(0,0,0,0.6); overflow: hidden;
  display: flex; flex-direction: column;
}
.media-test-head { position: relative; display: flex; align-items: center; justify-content: space-between; padding: 14px 18px; border-bottom: 1px solid var(--border); }
.media-test-head h3 { margin: 0; font-size: 15px; font-weight: 800; }
.media-test-body { display: flex; flex: 1; min-height: 0; }
.media-test-left { flex: 0 0 400px; overflow-y: auto; padding: 16px 18px; border-right: 1px solid var(--border); display: flex; flex-direction: column; gap: 10px; }
.media-test-toolbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.media-test-hint { font-size: 11px; color: var(--text-muted); }
.media-test-params { display: flex; flex-direction: column; gap: 8px; }
.media-test-param { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.media-test-param label { font-size: 12px; color: var(--text-muted); }
.media-test-param .settings-input, .media-test-param select { width: 200px; }
.media-test-right { flex: 1; min-width: 0; overflow-y: auto; padding: 16px 18px; display: flex; flex-direction: column; gap: 12px; }
.media-test-stall {
  margin-top: 8px; padding: 8px 12px; border-radius: 8px; font-size: 12px; line-height: 1.6;
  color: #fbbf24; background: rgba(251,191,36,0.1); border: 1px solid rgba(251,191,36,0.3);
}
.media-test-stall .btn-ghost { margin-left: 6px; }
.media-test-status { font-size: 13px; font-weight: 800; padding: 8px 12px; border-radius: 8px; background: rgba(255,255,255,0.05); color: var(--text-dim); }
.media-test-status.running { color: var(--neon-bright); background: rgba(74,222,128,0.08); }
.media-test-status.success { color: var(--neon-bright); background: rgba(74,222,128,0.08); }
.media-test-status.error { color: #f87171; background: rgba(248,113,113,0.10); }
.media-test-preview { min-height: 120px; display: flex; align-items: center; justify-content: center; border: 1px dashed var(--border); border-radius: 10px; padding: 8px; }
.media-test-info { display: flex; flex-direction: column; gap: 6px; font-size: 12px; }
.media-test-info-row { display: flex; gap: 8px; color: var(--text-dim); }
.media-test-info-row strong { color: var(--text); width: 64px; flex-shrink: 0; }
.media-test-download { margin-top: 4px; }

/* ---------- 媒体处理：业务 Tab / 预设 / 水印 ---------- */
.media-biz-tabs { display: flex; gap: 8px; margin: 12px 0; }
.media-biz-tab {
  padding: 7px 18px; border: 1px solid var(--border); border-radius: 999px; background: transparent;
  color: var(--text-dim); font-size: 13px; font-weight: 700; cursor: pointer; transition: all .15s ease;
}
.media-biz-tab:hover { color: var(--text); border-color: rgba(255,255,255,0.2); }
.media-biz-tab.active { color: var(--neon-bright); background: rgba(74,222,128,0.12); border-color: var(--neon); }
.media-biz-form {
  padding: 20px 22px; display: flex; flex-direction: column; gap: 16px;
  background: var(--surface); border: 1px solid var(--border); border-radius: 16px;
}
.media-switch-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.media-switch-block {
  background: rgba(255,255,255,0.045); border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 6px;
}
.media-switch-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.media-switch-head strong { font-size: 13px; color: var(--text); }
.media-switch-desc { font-size: 11px; color: var(--text-muted); line-height: 1.5; }
.media-switch-fields { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; }
.media-biz-preview-mode { min-width: 0; max-width: 240px; }
.media-biz-preview-mode .ui-select-trigger { min-width: 0; }
.media-preset-action { padding: 8px 18px !important; font-size: 13px !important; white-space: nowrap !important; }
.media-params-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.media-params-col { display: flex; flex-direction: column; gap: 6px; }
.media-params-head { display: flex; align-items: center; justify-content: space-between; font-size: 12px; font-weight: 800; color: var(--neon-bright); margin-bottom: 4px; }
.media-params-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; color: var(--text-muted); }
.media-params-toggle .settings-toggle { transform: scale(0.82); }
.media-param-readonly { font-size: 12px; color: var(--text-dim); line-height: 1.7; padding: 8px 10px; border: 1px dashed var(--border); border-radius: 8px; }
.media-biz-note {
  margin-top: 14px; padding-top: 12px;
  border-top: 1px solid rgba(255,255,255,0.10);
  font-size: 11px; color: var(--text-dim); line-height: 1.6;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.media-biz-note-text { flex: 1; min-width: 0; }
.media-biz-preview-mode {
  display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0;
  font-size: 11px; color: var(--text-muted); white-space: nowrap;
}
.media-biz-preview-mode .ui-select { width: 150px; }
.media-biz-preview-mode .ui-select-trigger { min-width: 0; width: 100%; }
.media-biz-preview-mode label { margin: 0; }
.media-lower-accordions { margin-top: 28px; display: flex; flex-direction: column; gap: 12px; }
.media-preset-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; }
.media-preset-bar label { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
.media-preset-bar .media-preset-select { flex: 1; min-width: 320px; max-width: 480px; }
.media-preset-bar .ui-select-trigger { min-width: 320px; }
.media-preset-manage-list { display: flex; flex-direction: column; gap: 6px; max-height: 260px; overflow-y: auto; }
.media-preset-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 10px; border-radius: 8px; background: rgba(255,255,255,0.04); }
.media-preset-name { font-size: 13px; color: var(--text); }
.media-preset-ops { display: flex; gap: 6px; }
.media-preset-name-field { width: 100%; margin-top: 12px; }
.media-preset-name-input {
  width: 100%; box-sizing: border-box; padding: 9px 12px; border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.16); background: rgba(255,255,255,0.06);
  color: var(--text); font-size: 14px; outline: none;
}
.media-preset-name-input:focus { border-color: rgba(74,222,128,0.55); box-shadow: 0 0 0 3px rgba(74,222,128,0.15); }
html[data-theme="light"] .media-preset-name-input { border-color: rgba(0,0,0,0.14); background: rgba(0,0,0,0.04); color: #1f2937; }
.media-preset-manage-actions { margin-top: 10px; }
.media-preset-manage { width: 520px; max-width: calc(100vw - 40px); max-height: 80vh; background: var(--modal-bg); border: 1px solid var(--modal-border); border-radius: 16px; display: flex; flex-direction: column; overflow: hidden; }
.media-preset-manage-body { flex: 1; overflow-y: auto; padding: 14px 16px; }
.media-preset-manage-foot { padding: 12px 16px; border-top: 1px solid var(--border); display: flex; justify-content: flex-end; }
.media-wm-ok { font-size: 11px; color: var(--neon-bright); margin-left: 6px; }
.media-test-modal-v2 .media-test-top { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--border); min-height: 320px; align-items: stretch; }
.media-test-drop {
  border: 2px dashed var(--border); border-radius: 12px; min-height: 300px;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  background: rgba(255,255,255,0.03); transition: border-color .15s ease; padding: 18px;
}
.media-test-drop:hover { border-color: var(--neon); }
.media-test-drop-inner { text-align: center; color: var(--text-dim); font-size: 13px; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.media-test-drop-plus { font-size: 72px; line-height: 1; color: var(--neon); opacity: 0.9; }
.media-test-drop-text { max-width: 260px; line-height: 1.5; }
.media-test-result { display: flex; flex-direction: column; gap: 8px; min-height: 300px; }
.media-test-mid { flex: 1; min-height: 0; overflow: hidden; padding: 12px 16px; border-bottom: 1px solid var(--border); display: flex; }
.media-test-mid > * { flex: 1; min-width: 0; min-height: 0; }
.media-test-params-cols { display: flex; gap: 0; align-items: stretch; }
.media-test-params-col { flex: 1; min-width: 0; min-height: 0; overflow-y: auto; padding: 6px 18px; display: flex; flex-direction: column; }
.media-test-params-col + .media-test-params-col { border-left: 1px solid rgba(255,255,255,0.20); }
.media-test-params-col .media-acc-section-title { margin: 8px 0 10px; }
.media-test-param { display: flex; flex-direction: column; align-items: stretch; gap: 5px; margin-bottom: 11px; min-width: 0; }
.media-test-param.check { flex-direction: row; align-items: center; justify-content: space-between; gap: 10px; }
.media-test-param.check label { margin: 0; }
.media-test-param label { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
.media-test-param .settings-input,
.media-test-param select,
.media-test-param .media-test-select,
.media-test-param .media-range,
.media-test-param .media-test-file-row { width: 100%; min-width: 0; }
.media-test-file-row { display: flex; align-items: center; gap: 6px; }
.media-test-file-row input[type="file"] { flex: 1; min-width: 0; }
.media-test-wm-upload {
  border: 2px dashed var(--border); border-radius: 10px; min-height: 84px;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  background: rgba(255,255,255,0.03); transition: border-color .15s ease; padding: 8px; position: relative; overflow: hidden;
}
.media-test-wm-upload:hover { border-color: var(--neon); }
.media-test-wm-upload-inner { display: flex; flex-direction: column; align-items: center; gap: 4px; color: var(--text-muted); }
.media-test-wm-plus { font-size: 34px; line-height: 1; color: var(--neon); opacity: 0.85; }
.media-test-wm-hint { font-size: 11px; }
.media-test-wm-preview { max-width: 72px; max-height: 72px; object-fit: contain; border-radius: 6px; }
.media-test-wm-upload-inner[hidden],
.media-test-wm-preview[hidden],
.media-test-lut-name[hidden] { display: none !important; }
.media-test-lut-name {
  max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: 12px; color: var(--neon-bright); font-weight: 700;
}
.media-test-select { min-width: 0; max-width: none; }
.media-test-select .ui-select-trigger { min-width: 0; }
.ui-select-disabled { opacity: 0.45; pointer-events: none; }
.media-test-bottom { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; }
.media-test-bottom-left { display: flex; align-items: center; gap: 12px; flex: 1; flex-wrap: nowrap; white-space: nowrap; }
.media-test-preset-select { min-width: 300px; max-width: 300px; }
.media-test-preset-select .ui-select-trigger { min-width: 300px; }
.media-test-kind-tabs { display: flex; gap: 6px; }
.media-test-kind-tab { padding: 7px 16px; border: 1px solid var(--border); border-radius: 999px; background: transparent; color: var(--text-dim); font-size: 12px; cursor: pointer; }
.media-test-kind-tab.active { background: rgba(74,222,128,0.12); color: var(--neon-bright); border-color: var(--neon); }
.media-test-kind-tab.active { background: rgba(74,222,128,0.12); color: var(--neon-bright); border-color: var(--neon); }
.media-test-kind-tabs { margin: 2px 0 10px; }
.media-test-img-params[hidden], .media-test-vid-params[hidden] { display: none !important; }
.media-test-img-params, .media-test-vid-params { min-width: 0; }
/* ---- AI 打标面板（测试弹窗 + 业务 Tab 共用样式） ---- */
/* AI分析列：内部独立滚动，不撑大弹窗 */
/* AI 分析列：仅「基础设置 + 高级参数」内容参与滚动；启用开关/说明/结果区固定 */
.media-test-ai-col { display: flex; flex-direction: column; overflow: hidden; }
.media-test-ai-scroll { flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; padding-right: 8px; margin-top: 6px; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.3) transparent; }
.media-test-ai-scroll::-webkit-scrollbar { width: 8px; }
.media-test-ai-scroll::-webkit-scrollbar-track { background: transparent; }
.media-test-ai-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.25); border-radius: 999px; }
.media-test-ai-scroll::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.4); }
/* 参数说明小图标：小圆 + 感叹号，悬浮显示说明 */
.media-test-ai-tip { display: inline-flex; align-items: center; justify-content: center; width: 12px; height: 12px; margin-left: 5px; border-radius: 50%; background: #3f4a5a; border: 1px solid #64748b; color: #cbd5e1; font-size: 8px; font-weight: 800; line-height: 1; cursor: help; font-style: normal; vertical-align: middle; }
.media-test-ai-tip:hover { background: #4b5563; }
.media-test-ai-hovercard { position: fixed; z-index: 99999 !important; min-width: 220px; max-width: 340px; width: max-content; padding: 12px 14px; border-radius: 12px; background: var(--sh-bg, #101826); border: 1px solid rgba(255,255,255,0.16); box-shadow: 0 16px 44px rgba(0,0,0,0.4); color: var(--sh-fg, #e2e8f0); pointer-events: none; opacity: 0; visibility: hidden; transform: translate(-50%, calc(-100% - 10px)); transition: opacity .15s ease, transform .15s ease, visibility .15s; }
.media-test-ai-hovercard.show { opacity: 1; visibility: visible; transform: translate(-50%, calc(-100% - 10px)); }
.media-test-ai-hovercard::after { display: none !important; }
.media-test-ai-hovercard .ui-hover-title { font-size: 12.5px; font-weight: 500; color: var(--sh-fg, #e2e8f0); line-height: 1.6; white-space: normal; word-break: break-word; }
/* 自定义系统提示词：默认开高 */
.media-test-ai-prompt { min-height: 150px; resize: vertical; }

.media-test-ai-group, .media-biz-ai-group { margin-top: 10px; padding: 4px 0; border: none; border-radius: 0; background: transparent; }
.media-test-ai-group-title, .media-biz-ai-group-title { font-size: 12px; font-weight: 800; color: var(--neon-bright); margin-bottom: 6px; }
.media-test-ai-sub, .media-biz-ai-sub { font-size: 11px; font-weight: 700; color: var(--text-dim); margin: 8px 0 4px; }
.media-test-ai-group .media-test-param textarea.settings-input, .media-biz-ai-row textarea.settings-input { width: 100%; resize: vertical; }
.media-acc-fold-head { cursor: pointer; user-select: none; }
.media-acc-fold-body { margin-top: 4px; }
.media-acc-fold:not(.media-acc-fold-open) .media-acc-fold-body { display: none; }
.media-acc-fold:not(.media-acc-fold-open) .media-acc-fold-arrow { transform: rotate(-90deg); }
.media-acc-fold-arrow { display: inline-block; transition: transform .15s ease; font-size: 11px; }
.media-test-ai-result { margin-top: 10px; }
.media-test-ai-result-box { padding: 8px 10px; border-radius: 8px; font-size: 12px; display: flex; flex-direction: column; gap: 6px; }
.media-test-ai-result-box.error { background: rgba(248,113,113,0.12); border: 1px solid rgba(248,113,113,0.4); color: #f87171; }
.media-test-ai-result-box.empty { background: rgba(255,255,255,0.05); border: 1px dashed rgba(255,255,255,0.2); color: var(--text-muted); }
.media-test-ai-result-box.ok { background: rgba(74,222,128,0.08); border: 1px solid rgba(74,222,128,0.3); color: var(--text); }
.media-test-ai-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.media-test-ai-tag { padding: 3px 8px; border-radius: 999px; background: rgba(34,211,238,0.14); border: 1px solid rgba(34,211,238,0.35); font-size: 11px; }
.media-test-ai-tag em { font-style: normal; opacity: .7; margin-left: 2px; }
.media-test-ai-caption { font-size: 11px; color: var(--text-muted); }
/* 业务 Tab AI 面板 */
.media-biz-ai-wrap { margin: 10px 0; }
.media-biz-ai-panel[hidden] { display: none !important; }
.media-biz-ai-panel { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; border: 1px solid rgba(255,255,255,0.14); border-radius: 10px; background: rgba(255,255,255,0.03); }
.media-biz-ai-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.media-biz-ai-row label { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
.media-biz-ai-row .settings-input, .media-biz-ai-row .media-test-select, .media-biz-ai-row .media-range { width: 260px; }
.media-biz-ai-row.check { justify-content: space-between; }
.media-biz-ai-prompt { width: 100%; resize: vertical; }
.media-test-preset-label { font-size: 12px; color: var(--text-muted); }
.media-test-exec { margin: 4px 16px 10px; padding: 12px 16px; border: 1px solid rgba(255,255,255,0.14); border-radius: 10px; background: rgba(255,255,255,0.03); }
.media-test-exec-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.media-test-exec-title { font-size: 12px; font-weight: 800; color: var(--neon-bright); }
.media-test-exec-hint { font-size: 11px; color: var(--text-dim); }
.media-test-exec-opts { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.media-test-exec-opt { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--text-muted); cursor: pointer; }
.media-test-exec-opt.disabled { opacity: 0.45; cursor: not-allowed; }
.media-test-exec-worker { margin-top: 8px; padding-top: 8px; border-top: 1px dashed rgba(255,255,255,0.16); display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.media-test-exec-worker[hidden] { display: none !important; }
.media-test-exec-wlabel { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
.media-test-toolbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.media-test-source-preview { max-width: 100%; max-height: 220px; border-radius: 8px; object-fit: contain; }
.media-test-source-media { position: relative; display: inline-block; max-width: 100%; }
.media-test-source-media video { display: block; max-width: 100%; max-height: 220px; border-radius: 8px; }
.media-test-viewer-btn { position: absolute; top: 8px; right: 8px; z-index: 5; display: inline-flex; align-items: center; gap: 4px;
  padding: 5px 10px; border: 1px solid rgba(255,255,255,0.35); border-radius: 999px; background: rgba(15,23,42,0.72);
  color: #fff; font-size: 11px; cursor: pointer; backdrop-filter: blur(4px); }
.media-test-viewer-btn:hover { background: rgba(74,222,128,0.25); border-color: var(--neon); color: var(--neon-bright); }
.media-test-source-name { font-size: 11px; color: var(--text-muted); margin-top: 6px; }
.media-test-source-info { display: flex; flex-wrap: wrap; gap: 6px 14px; justify-content: center; margin-top: 8px; padding: 6px 10px; border: 1px dashed rgba(255,255,255,0.16); border-radius: 8px; background: rgba(255,255,255,0.03); }
.media-test-source-info span { font-size: 11px; color: var(--text-muted); white-space: nowrap; }
.media-test-source-info b { color: var(--text-dim); font-weight: 600; margin-right: 4px; }
.media-test-upload-state { display: flex; flex-direction: column; align-items: stretch; gap: 8px; width: 100%; max-width: 320px; padding: 8px 4px; }
.media-test-upload-name { font-size: 12px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.media-test-upload-bar.indeterminate .media-test-upload-fill {
  width: 40%;
  background: linear-gradient(90deg, #22d3ee, #3b82f6, #22d3ee);
  background-size: 200% 100%;
  animation: mtc-upload-indeterminate 1.1s infinite ease-in-out;
}
@keyframes mtc-upload-indeterminate {
  0% { margin-left: -40%; }
  100% { margin-left: 100%; }
}
.media-test-dim-bar {
  display: inline-block; width: 52px; height: 4px; border-radius: 2px; overflow: hidden;
  vertical-align: middle; margin-left: 8px; position: relative;
  background: rgba(255,255,255,0.12);
}
.media-test-dim-bar::after {
  content: ""; position: absolute; top: 0; left: 0; width: 45%; height: 100%; border-radius: 2px;
  background: linear-gradient(90deg, transparent, #22d3ee, #3b82f6, transparent);
  animation: mtc-dim-load 1s infinite ease-in-out;
}
@keyframes mtc-dim-load {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(220%); }
}
.mt-dl-progress { margin-top: 8px; width: 100%; max-width: 300px; }
.mt-dl-bar { height: 8px; border-radius: 999px; background: rgba(255,255,255,0.12); overflow: hidden; }
.mt-dl-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, #22d3ee, #3b82f6); transition: width .15s ease; width: 0; }
.mt-dl-meta { margin-top: 4px; font-size: 11px; color: var(--text-muted); }
.media-test-upload-bar { height: 8px; border-radius: 999px; background: rgba(255,255,255,0.12); overflow: hidden; }
.media-test-upload-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, #22d3ee, #3b82f6); transition: width .15s ease; }
.media-test-upload-meta { display: flex; justify-content: space-between; gap: 12px; font-size: 11px; color: var(--text-muted); }
.media-test-upload-error { color: #f87171; font-size: 12px; }

/* ---------- 素材源：扫描过滤规则（可编辑） ---------- */
.storage-source-rules {
  margin-top: 10px;
  padding: 12px;
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 12px;
  background: rgba(255,255,255,0.03);
}
.storage-source-rules-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}
.storage-source-rules-head strong { font-size: 13px; color: var(--text); }
.storage-source-rules-head span { font-size: 11px; color: var(--text-muted); }
.storage-source-rules-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.storage-source-rules-grid .settings-config-item { display: flex; flex-direction: column; gap: 5px; }
.storage-source-rules-grid label { font-size: 12px; color: var(--text-muted); }
.storage-source-rules-grid textarea.settings-input { resize: vertical; min-height: 40px; }
.storage-source-types { display: flex; gap: 14px; align-items: center; }
.storage-source-types label { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text); }
.storage-source-size { display: flex; align-items: center; gap: 6px; }
.storage-source-size .settings-input-sm { width: 90px; }
@media (max-width: 720px) {
  .storage-source-rules-grid { grid-template-columns: 1fr; }
}

/* ---------- 素材源：扫描过滤规则入口 + 目录树复选 ---------- */
.storage-source-rules-bar {
  display: flex;
  align-items: center;
  gap: 10px;
}
.storage-source-rules-summary {
  font-size: 12px;
  color: var(--neon-bright);
}
.storage-source-tree-check-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  cursor: pointer;
}
.storage-source-tree-check {
  width: 15px;
  height: 15px;
  accent-color: var(--neon, #22d3ee);
  cursor: pointer;
}

/* ---------- 媒体任务执行列表：实时刷新指示 ---------- */
.mtc-live {
  margin-left: auto;
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
}
.mtc-summary { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* ---------- 媒体任务执行列表：AI未完成提示 ---------- */
.mtc-ai-pending {
  color: #fbbf24;
  font-weight: 700;
  cursor: help;
  border-bottom: 1px dashed rgba(251,191,36,0.5);
}


/* ---- 素材库管理（用户菜单 → 素材库）：三栏素材浏览器 ---- */
.ui-lib-overlay { z-index: 100100; }
/* 覆盖 ui.css 的 .ui-modal-card 默认 640px 上限（ui.css 加载在后，需更高优先级） */
.ui-overlay .ui-lib-card {
  width: 1440px; max-width: 98vw; height: 880px; max-height: calc(100vh - 32px); padding: 0;
}
.ui-overlay .ui-lib-card-sm { width: 420px; max-width: 92vw; padding: 18px 20px; }
.ui-lib3 { display: flex; flex-direction: column; height: 100%; }
.ui-lib3-head { display: flex; align-items: center; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--border); }
.ui-lib3-head h3 { margin: 0; font-size: 16px; }
.ui-lib3-sub { font-size: 11px; color: var(--text-muted); flex: 1; }
.ui-lib3-body { flex: 1; min-height: 0; display: flex; }

/* 左栏：分组树 */
.ui-lib3-side { width: 220px; flex-shrink: 0; border-right: 1px solid var(--border); display: flex; flex-direction: column; }
.ui-lib3-side-title {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 14px 6px; font-size: 12px; color: var(--text-muted); font-weight: 600;
}
.ui-lib3-newroot {
  font-size: 11px; padding: 2px 8px; border-radius: 999px;
  border: 1px dashed rgba(74,222,128,0.45); background: transparent; color: var(--neon-bright); cursor: pointer;
}
.ui-lib3-newroot:hover { background: rgba(74,222,128,0.12); border-color: var(--neon); }
.ui-lib3-node-arrow { width: 14px; flex-shrink: 0; color: var(--text-muted); font-size: 10px; text-align: center; }
.ui-lib3-tree { flex: 1; overflow-y: auto; padding: 4px 8px 12px; }
.ui-lib3-node {
  display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 8px;
  cursor: pointer; color: var(--text); font-size: 13px; user-select: none;
}
.ui-lib3-node:hover { background: rgba(255,255,255,0.06); }
.ui-lib3-node.active { background: rgba(74,222,128,0.12); color: var(--neon-bright); border: 1px solid rgba(74,222,128,0.3); }
.ui-lib3-node-icon { font-size: 14px; }
.ui-lib3-node-label { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ui-lib3-node em { font-style: normal; font-size: 11px; color: var(--text-muted); }

/* 中栏：工具栏 + 网格 */
.ui-lib3-mid { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ui-lib3-toolbar { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.ui-lib3-search { width: 210px; padding: 6px 10px; font-size: 12px; }
.ui-lib3-toolbar select { width: auto; padding: 5px 8px; font-size: 12px; }
.ui-lib3-count { font-size: 12px; color: var(--text-muted); }
.ui-lib3-toolbar .btn-ghost,
.ui-lib3-toolbar .btn-neon { font-size: 12px; padding: 5px 10px; }
.ui-lib3-detail-btns .btn-neon { font-size: 12px; padding: 7px 10px; }
.ui-lib3-grid {
  flex: 1; overflow-y: auto; padding: 12px 14px;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; align-content: start;
}
.ui-lib3-loading, .ui-lib3-empty { grid-column: 1 / -1; text-align: center; color: var(--text-muted); padding: 48px; font-size: 13px; }
.ui-lib3-card { position: relative; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; cursor: pointer; background: var(--surface); }
.ui-lib3-card.sel { border-color: var(--neon); box-shadow: 0 0 0 1px var(--neon); }
.ui-lib3-card.cur { border-color: #38bdf8; box-shadow: 0 0 0 1px #38bdf8; }
.ui-lib3-thumb { height: 120px; background: var(--bg-elevated); display: grid; place-items: center; position: relative; }
.ui-lib3-thumb img, .ui-lib3-thumb video { width: 100%; height: 100%; object-fit: cover; display: block; }
.ui-lib3-ph { font-size: 26px; }
.ui-lib3-play {
  position: absolute; right: 8px; bottom: 8px; width: 26px; height: 26px; border-radius: 50%;
  background: rgba(0,0,0,0.55); color: #fff; display: grid; place-items: center; font-size: 12px; z-index: 2;
}
.ui-lib3-badge {
  position: absolute; top: 6px; padding: 2px 7px; border-radius: 999px; font-size: 10px; font-weight: 800; z-index: 2;
}
.ui-lib3-badge.type { left: 6px; background: rgba(59,130,246,0.85); color: #fff; }
.ui-lib3-badge.type.video { background: rgba(124,58,237,0.9); }
.ui-lib3-badge.trans { left: 6px; top: 28px; background: rgba(74,222,128,0.9); color: #04210f; }
.ui-lib3-badge.ai { right: 6px; background: rgba(251,191,36,0.92); color: #451a03; }
.ui-lib3-overlay {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 8px; display: flex; gap: 6px;
  background: linear-gradient(transparent, rgba(0,0,0,0.8)); opacity: 0; transition: opacity .18s; z-index: 3;
}
.ui-lib3-card:hover .ui-lib3-overlay { opacity: 1; }
.ui-lib3-overlay .btn-ghost { font-size: 11px; padding: 3px 8px; }
.ui-lib3-check { position: absolute; top: 6px; right: 6px; z-index: 4; accent-color: var(--neon); }
.ui-lib3-name {
  padding: 6px 8px; font-size: 12px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* 右栏：详情 */
.ui-lib3-detail {
  width: 300px; flex-shrink: 0; border-left: 1px solid var(--border); overflow-y: auto; padding: 14px;
}
.ui-lib3-detail:not(.open) { width: 0; padding: 0; border-left: none; overflow: hidden; }
.ui-lib3-detail-empty { color: var(--text-muted); font-size: 13px; text-align: center; padding: 30px 10px; white-space: nowrap; }
.ui-lib3-detail-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.ui-lib3-detail-head b { font-size: 14px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ui-lib3-detail-preview { border-radius: 10px; overflow: hidden; background: var(--bg-elevated); margin-bottom: 12px; }
.ui-lib3-detail-preview img, .ui-lib3-detail-preview video { width: 100%; max-height: 220px; object-fit: contain; display: block; background: #000; }
.ui-lib3-detail-meta { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.ui-lib3-detail-meta > div { display: flex; justify-content: space-between; font-size: 12px; gap: 10px; }
.ui-lib3-detail-meta span { color: var(--text-muted); }
.ui-lib3-detail-meta b { font-weight: 600; color: var(--text); text-align: right; }
.ui-lib3-clip { margin-bottom: 12px; }
.ui-lib3-clip > b { font-size: 12px; color: var(--text-muted); }
.ui-lib3-clip-row { display: flex; gap: 6px; margin: 6px 0; }
.ui-lib3-clip-row select { flex: 1; min-width: 0; padding: 5px 8px; font-size: 12px; }
.ui-lib3-clip .btn-ghost { font-size: 12px; padding: 5px 10px; }
.ui-lib3-detail-ai { margin-bottom: 12px; }
.ui-lib3-detail-ai > b { font-size: 12px; color: var(--text-muted); }
.ui-lib3-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.ui-lib3-tag {
  display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 999px;
  font-size: 11px; background: rgba(74,222,128,0.10); border: 1px solid rgba(74,222,128,0.35); color: #4ade80;
}
.ui-lib3-tag button { background: transparent; border: none; color: inherit; cursor: pointer; font-size: 12px; padding: 0; }
.ui-lib3-none { font-size: 11px; color: var(--text-muted); }
.ui-lib3-tag-add { display: flex; gap: 6px; margin-top: 4px; }
.ui-lib3-tag-add input { flex: 1; padding: 6px 8px; font-size: 12px; }
.ui-lib3-detail-ai textarea { width: 100%; font-size: 12px; margin-top: 4px; }
.ui-lib3-detail-actions { margin-top: 8px; }
.ui-lib3-detail-btns { display: flex; flex-direction: column; gap: 8px; }
.ui-lib3-detail-btns .btn-ghost { font-size: 12px; padding: 7px 10px; }

/* 分组右键菜单 */
.ui-lib3-ctx {
  position: fixed; z-index: 100200; min-width: 150px; padding: 6px; border-radius: 10px;
  background: var(--surface); border: 1px solid var(--border); box-shadow: 0 16px 44px rgba(0,0,0,0.45);
}
.ui-lib3-ctx-item { padding: 8px 12px; border-radius: 6px; font-size: 13px; cursor: pointer; color: var(--text); }
.ui-lib3-ctx-item:hover { background: rgba(74,222,128,0.12); }
.ui-lib3-ctx-item.danger { color: #f87171; }
.ui-lib3-ctx-item.danger:hover { background: rgba(248,113,113,0.12); }

/* 分组新建/重命名小弹窗 */
.ui-lib-prompt h3 { margin: 0 0 12px; font-size: 15px; }
.ui-lib-prompt input { width: 100%; padding: 8px 10px; font-size: 13px; }
.ui-lib-prompt .ui-dl-foot { margin-top: 14px; }
