 
body.desktop-workbench.workbench-v22.workbench-v2 #agentSidebar.has-dots-navigation { display:flex;flex-direction:column;min-height:0; }
body.desktop-workbench.workbench-v22.workbench-v2 #agentSidebar.has-dots-navigation > :is(.sidebar-header,.sidebar-new-chat) { flex:0 0 auto; }
body.desktop-workbench.workbench-v22.workbench-v2 #agentSidebar.has-dots-navigation > .sidebar-scroll { position:relative;inset:auto;flex:1 1 auto;min-height:0;width:100%;height:auto; }
body.workbench-v22.workbench-v2 .sidebar-dots { margin-top:0;margin-bottom:7px; }
body.workbench-v22.workbench-v2 .sidebar-dots.is-selected { background:var(--v22-hover); }
.dots-view { position:absolute;inset:0;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--v22-panel,var(--canvas));color:var(--text); }
.dots-view [hidden],.dots-view[hidden] { display:none; }
.dots-view button,.dots-view textarea { font:inherit;color:inherit; }
.dots-view button { border:1px solid var(--line);border-radius:9px;background:transparent;padding:6px 10px;cursor:pointer; }
.dots-view button:hover { background:var(--v22-hover); }
.dots-view button:disabled { opacity:.45;cursor:default; }
.dots-view :is(button,summary):focus-visible,.sidebar-dots:focus-visible { outline:2px solid var(--accent);outline-offset:2px; }
.dots-view .dots-icon-button,.dots-toolbar .dots-icon-button { display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--secondary);cursor:pointer; }
.dots-view .dots-icon-button:hover,.dots-toolbar .dots-icon-button:hover,.dots-menu[open]>.dots-icon-button { background:var(--v22-hover);color:var(--text); }
.dots-icon-button .wb-icon { width:18px;height:18px; }
.dots-toolbar { position:relative;display:flex;align-items:center;gap:10px;flex:0 1 auto;height:32px;padding:0;min-width:0;z-index:8;-webkit-app-region:no-drag; }
.dots-toolbar[hidden] { display:none; }
.dots-toolbar :is(button,summary):focus-visible { outline:2px solid var(--accent);outline-offset:2px; }
.dots-toolbar :is(.dots-status,small) { font-size:12px;color:var(--secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px; }
.dots-menu { position:relative;flex-shrink:0; }
.dots-menu>summary { list-style:none; }
.dots-menu>summary::-webkit-details-marker { display:none; }
.dots-menu-content { position:absolute;top:calc(100% + 8px);right:0;z-index:8;width:200px;padding:6px;border:1px solid var(--line);border-radius:14px;background:var(--popover,var(--v22-panel));box-shadow:0 8px 24px #0002; }
.dots-menu:not([open])>.dots-menu-content { display:none; }
.dots-menu-content button { display:flex;align-items:center;gap:10px;width:100%;padding:10px;border:0;border-radius:8px;text-align:left;font:inherit;font-size:13px;background:transparent;color:var(--text);cursor:pointer; }
.dots-menu-content button:hover { background:var(--v22-hover); }
.dots-menu-content button:disabled { opacity:.45;cursor:default; }
.dots-menu-content .wb-icon { width:18px;height:18px;flex:0 0 18px; }
.dots-menu-content .is-destructive { color:#cc5555; }
.dots-menu-content hr { height:1px;margin:5px 6px;border:0;background:var(--line); }
.dots-error { flex-shrink:0;margin:0 20px 8px;padding:9px 12px;border-radius:10px;background:var(--v22-hover);color:#cd5555;font-size:13px;overflow-wrap:anywhere; }
.dots-layout { display:flex;flex:1;min-height:0;min-width:0; }
.dots-detail { flex:1;min-width:0;min-height:0;display:flex;flex-direction:column; }
.dots-records { flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:24px max(24px,calc((100% - 760px)/2));scrollbar-width:none;overflow-anchor:none; }
.dots-records::-webkit-scrollbar { display:none; }
.dots-manager-message { max-width:760px;margin:0 auto 28px;overflow-wrap:anywhere;line-height:1.7;font-size:14px; }
.dots-manager-message>header { font-size:11px;color:var(--secondary);margin-bottom:7px; }
.dots-manager-message.is-user { width:fit-content;max-width:85%;margin-left:auto;margin-right:0;padding:12px 16px;border-radius:20px;background:color-mix(in srgb, var(--accent) 9%, var(--canvas)); }
.dots-manager-message.is-user.is-image-only { padding:0 !important;background:transparent !important;border:0 !important;border-radius:0 !important;box-shadow:none !important; }
.dots-manager-message.is-user:not(.is-image-only) { background:var(--message-bubble,var(--soft-fill));color:var(--message-ink,var(--text)); }
.dots-manager-message.is-user.is-image-only .dots-images { margin-top:0; }
.dots-manager-message .message-body>:first-child { margin-top:0; }
.dots-manager-message .message-body>:last-child { margin-bottom:0; }
.dots-view .dots-history-more { display:block;margin:0 auto 24px;border:0;font-size:12px;color:var(--secondary); }
.dots-composer { display:flex;flex-direction:column;gap:8px;flex-shrink:0;padding:10px max(24px,calc((100% - 760px)/2)) 20px; }
.dots-composer-surface { display:flex;align-items:center;gap:10px;min-width:0;padding:9px 12px;border:1px solid var(--line);border-radius:25px;background:var(--v22-panel); }
.dots-composer textarea { flex:1;min-width:0;width:100%;box-sizing:border-box;min-height:36px;max-height:160px;margin:0;padding:7px 2px;border:0;background:transparent;outline:0;resize:none;line-height:22px;font-size:14px;scrollbar-width:none; }
.dots-composer textarea::-webkit-scrollbar { display:none; }
.dots-composer textarea::placeholder { color:var(--secondary); }
.dots-composer-surface:focus-within { border-color:var(--muted); }
.dots-view .dots-send { position:static;display:grid;place-items:center;flex:0 0 28px;min-width:28px;min-height:28px;width:28px;height:28px;margin:0;padding:0;border:0;border-radius:50%;transform:none;background:var(--accent);color:#fff; }
.dots-view .dots-send:hover { background:var(--accent);filter:brightness(1.06); }
.dots-view .dots-send.is-empty { background:#d5e3f8;opacity:1; }
.dots-send-icon { display:block;width:21px;height:21px;background:currentColor;-webkit-mask:url('/assets/send-arrow-v2.svg') center/contain no-repeat;mask:url('/assets/send-arrow-v2.svg') center/contain no-repeat; }
.dots-send.is-busy .dots-send-icon { width:14px;height:14px;box-sizing:border-box;background:none;-webkit-mask:none;mask:none;border:2px solid #ffffff60;border-top-color:currentColor;border-radius:50%;animation:dots-send-spin .8s linear infinite; }
.dots-compose-notice { margin:0 12px;color:var(--secondary);font-size:12px;line-height:1.5; }
.dots-activity { width:320px;flex-shrink:0;border-left:1px solid var(--line);padding:18px;overflow-y:auto;background:var(--v22-side);box-sizing:border-box;scrollbar-width:thin; }
.dots-activity>header { display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px;margin-bottom:16px; }
.dots-empty-list { margin:18px 10px;color:var(--secondary);font-size:13px; }
.dots-view .dots-task-row { display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:6px;width:100%;border:0;padding:12px 10px; }
.dots-task-row span { font-size:13px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.dots-task-row small,.dots-task-list summary,.dots-status { font-size:12px;color:var(--secondary); }
.dots-task-list details { margin-top:20px; }
.dots-task-list summary,.dots-timeline summary { cursor:pointer;padding:8px 0; }
.dots-task-detail { margin-top:20px;padding-top:18px;border-top:1px solid var(--line);font-size:13px;overflow-wrap:anywhere; }
.dots-view h3 { font-size:14px;margin:0 0 10px;font-weight:500; }
.dots-controls { display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0;font-size:12px; }
.dots-approval { border:1px solid var(--line);border-radius:12px;padding:14px;font-size:13px;margin-top:20px; }
.dots-approval pre { background:var(--soft-fill);border-radius:8px;padding:12px;overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere; }
.dots-approval button { margin:0 8px 0 0;font-size:12px; }
.dots-output { border-top:1px solid var(--line);padding:14px 0;font-size:14px;line-height:1.65;overflow-wrap:anywhere; }
.dots-output>header { color:var(--secondary);font-size:11px;margin-bottom:8px; }
.dots-output>button { font-size:12px; }
.dots-timeline { margin-top:24px;color:var(--secondary);font-size:12px; }
.dots-timeline ol { list-style:none;padding-left:0; }
.dots-timeline li { border-left:1px solid var(--line);padding:4px 0 8px 12px; }
.dots-timeline time { font-size:10px; }
.dots-timeline p { margin:5px 0;line-height:1.5;overflow-wrap:anywhere; }
.dots-raw-result { margin-top:14px;font-size:12px;color:var(--secondary); }
.dots-raw-result summary { cursor:pointer; }
.dots-raw-result pre { overflow:auto;max-height:320px;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--soft-fill);padding:12px;border-radius:8px;color:var(--text); }
.dots-view .message-body table { width:max-content;max-width:100%; }
@keyframes dots-send-spin { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce) { .dots-send.is-busy .dots-send-icon { animation:none; } }
@media(max-width:1000px) { .dots-activity { position:absolute;right:0;top:0;bottom:0;z-index:5;width:min(340px,90%);box-shadow:-8px 0 24px #0002; } }
@media(max-width:700px) { .dots-toolbar { gap:8px; }.dots-toolbar :is(.dots-status,small) { max-width:130px; }.dots-records { padding:18px; }.dots-composer { padding:10px 16px 16px; }dots-manager-message.is-user { max-width:90%; } }

 
.dots-view .dots-composer textarea:focus-visible { outline:none;box-shadow:none; }
.dots-view .dots-add-file { display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;margin:0;padding:0;border:0;border-radius:50%;font-size:27px;line-height:1;color:var(--text); }
.dots-add-file:disabled { opacity:.45;cursor:default; }
.dots-files { display:flex;gap:8px;flex-wrap:wrap;min-width:0; }
.dots-files:empty { display:none; }
.dots-file-chip { display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:12px;background:var(--soft-fill);font-size:12px; }
.dots-file-chip .wb-icon { width:17px;height:17px; }
.dots-file-chip>a,.dots-file-chip>span:not(:first-child) { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px;color:inherit; }
.dots-view .dots-file-chip button { border:0;padding:0 3px;font-size:18px; }
.dots-manager-message .dots-files { margin-top:10px; }

.dots-message-time{width:100%;margin:4px auto 18px;text-align:center;font-size:11px;line-height:17px;color:var(--secondary);font-variant-numeric:tabular-nums}

 
body.workbench-v22 .dots-menu-content button{display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:10px;align-items:center}
body.workbench-v22 .dots-menu-content button>:is(.wb-icon,.session-menu-icon){display:block;width:18px;height:18px;min-width:18px;max-width:18px;flex:0 0 18px;justify-self:center}
body.workbench-v22 .dots-menu-content button>span:not(.wb-icon){min-width:0;text-align:left}


 
.dots-view .dots-send.is-voice{width:32px;height:32px;flex-basis:32px;background:var(--text);color:var(--v22-panel);opacity:1}
.dots-view .dots-send.is-stop{background:var(--text);color:var(--v22-panel)}
.dots-view .dots-send.is-stop:hover{background:var(--text)}
.dots-view .dots-send.is-voice:hover{background:var(--text)}
.dots-voice-glyph{display:block;width:19px;height:19px}
.dots-voice-stop{display:block;width:11px;height:11px;border-radius:2px;background:currentColor}
 
.dots-voice-card{box-sizing:border-box;width:100%;padding:0;margin:0 0 18px;color:var(--text);outline:0}
.dots-voice-card[hidden]{display:none!important}
.dots-voice-card:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:14px}
#dotsActivity.has-voice-call>.dots-profile-identity{display:none}
.dots-call-identity{display:flex;align-items:center;gap:16px;min-height:82px;margin-bottom:20px}
.dots-call-avatar{display:grid;place-items:center;flex:0 0 76px;width:76px;height:82px}
.dots-call-avatar>:is(img,svg){display:block;width:76px;height:82px;object-fit:contain}
.dots-call-person{display:flex;flex-direction:column;gap:8px;min-width:0}
#dotsVoiceCard .dots-call-person h2{margin:0;font-size:21px;line-height:1.2;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:215px}
.dots-call-time{display:block;font-size:15px;line-height:1.2;font-variant-numeric:tabular-nums;color:var(--secondary)}
.dots-call-controls{display:flex;gap:10px;width:100%}
#dotsVoiceCard .dots-call-controls button{display:grid;place-items:center;flex:1;min-width:0;height:39px;padding:0;border:0;border-radius:999px;background:var(--soft-fill,#f4f4f4);color:var(--text,#242528)}
#dotsVoiceCard .dots-call-controls button:hover{background:var(--v22-hover,#e9e9e9)}
.dots-call-controls button svg{display:block;width:22px;height:22px}
#dotsVoiceCard .dots-call-controls button[aria-pressed="true"]{background:var(--line,#e4e4e5);color:var(--text,#171819);box-shadow:inset 0 0 0 1px var(--line,#d6d6d9)}
#dotsVoiceCard .dots-call-controls button.dots-call-end{background:#e92c29;color:#fff}
#dotsVoiceCard .dots-call-controls button.dots-call-end:hover{background:#d92421}
.dots-call-end svg{width:24px!important;height:24px!important}
.dots-call-accessible{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.dots-voice-card.is-compact{position:fixed;z-index:65;width:300px;max-width:calc(100vw - 20px);padding:13px 12px 12px;margin:0;border:1px solid #ffffff12;border-radius:19px;background:#2d2d2d;color:#fff;box-shadow:0 8px 28px #0002}
.dots-voice-card.is-compact .dots-call-identity{gap:11px;min-height:42px;margin:0 0 15px}
.dots-voice-card.is-compact .dots-call-avatar{flex-basis:38px;width:38px;height:42px}
.dots-voice-card.is-compact .dots-call-avatar>:is(img,svg){width:38px;height:42px}
#dotsVoiceCard.is-compact .dots-call-person{gap:5px}
#dotsVoiceCard.is-compact .dots-call-person h2{font-size:15px;font-weight:500;max-width:200px}
.dots-voice-card.is-compact .dots-call-time{font-size:14px;color:#b9b9bd}
#dotsVoiceCard.is-compact .dots-call-controls{gap:8px}
#dotsVoiceCard.is-compact .dots-call-controls button{height:36px;background:#3a3a3a;color:#fff}
#dotsVoiceCard.is-compact .dots-call-controls button:hover{background:#434343}
#dotsVoiceCard.is-compact .dots-call-controls button[aria-pressed="true"]{background:#f4f4f4;color:#252628;box-shadow:none}
#dotsVoiceCard.is-compact .dots-call-controls button.dots-call-end{background:#e92c29;color:#fff}
#dotsVoiceCard.is-compact .dots-call-controls button.dots-call-end:hover{background:#d92421}

 
body.workbench-v22.workbench-v2 .sidebar-dots .dots-navigation-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.workbench-v22.workbench-v2 .sidebar-dots .dots-unread-count{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:20px;height:20px;margin-left:auto;padding:0 5px;box-sizing:border-box;border-radius:10px;background:var(--accent);color:#fff;font-size:11px;font-weight:600;line-height:20px;font-variant-numeric:tabular-nums}
body.workbench-v22.workbench-v2 .sidebar-dots .dots-unread-count[hidden]{display:none}

.dots-view .dots-send>.wb-icon{display:block;width:19px;height:19px}

/* The existing call card remains usable above ordinary conversations. */
.dots-call-avatar{position:relative}
.dots-call-fallback{display:contents}
.dots-call-fallback>svg{display:block;width:100%;height:100%}
.dots-call-avatar.has-live-pet>.dots-call-fallback{display:none}
.dots-voice-card.is-compact{touch-action:none}
.dots-voice-card.is-compact .dots-call-identity{cursor:grab;user-select:none;-webkit-user-select:none}
.dots-voice-card.is-compact.is-dragging,.dots-voice-card.is-compact.is-dragging .dots-call-identity{cursor:grabbing}
#dotsVoiceCard.is-compact .dots-call-controls button{touch-action:manipulation;cursor:pointer}

/* Quiet inline references share the surrounding text instead of browser blue. */
body.workbench-v22 :is(.message-body,.dots-manager-message) a.message-reference {
  color:inherit;text-decoration-line:underline;text-decoration-style:dotted;text-underline-offset:.12em;
  text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent);
  background:transparent;border-bottom:0;
  border-radius:0;padding:0;box-decoration-break:clone;-webkit-box-decoration-break:clone;
  overflow-wrap:anywhere;
}
body.workbench-v22 :is(.message-body,.dots-manager-message) a.message-reference::after {
  content:"↗";display:inline-block;margin-left:.24em;font-size:.76em;opacity:.55;text-decoration:none;
}
body.workbench-v22 :is(.message-body,.dots-manager-message) a.message-reference:hover {
  background:transparent;text-decoration-color:color-mix(in srgb,currentColor 65%,transparent);
}
body.workbench-v22 :is(.message-body,.dots-manager-message) a.message-reference:focus-visible {
  outline:2px solid currentColor;outline-offset:3px;
}

/* 对话订阅卡片（Dots 对话里补充凭据 / 确认取消） */
.dots-sub-card{display:grid;gap:10px;margin-top:10px;padding:14px;border:1px solid rgba(127,127,127,.28);border-radius:14px;max-width:420px;box-sizing:border-box}
.dots-sub-card label{display:grid;gap:4px;font-size:13px}
.dots-sub-card input{box-sizing:border-box;width:100%;height:34px;padding:0 10px;border-radius:9px;border:1px solid rgba(127,127,127,.32);background:transparent;color:inherit;font:inherit}
.dots-sub-card>div{display:flex}
.dots-sub-card small{font-size:12px;opacity:.65;line-height:1.4}
.dots-sub-card small[role="alert"]{opacity:1;color:#d14343}
.dots-sub-card.is-done,.dots-sub-card.is-cancelled{display:inline-block;padding:6px 12px;font-size:13px;opacity:.75}
/* 事件订阅页：只读列表 */
.dots-subscription-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.dots-subscription-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border:1px solid rgba(127,127,127,.25);border-radius:12px}
.dots-subscription-list li>div{display:grid;gap:2px;min-width:0}
.dots-subscription-list li span{font-size:13px;opacity:.8;overflow-wrap:anywhere}
.dots-subscription-list li small{font-size:12px;opacity:.6}
.dots-subscription-list li button{flex:0 0 auto}
.dots-subscription-empty{opacity:.65}

/* 2026-10-30: reply bubbles, thinking state, reply/copy actions */
.dots-manager-message { position:relative; }
.dots-manager-message.is-assistant { width:fit-content;max-width:min(760px,92%);margin-left:0;padding:14px 18px;border-radius:20px;background:var(--dots-reply-fill,#f6f7fb);border:.5px solid color-mix(in srgb,currentColor 6%,transparent); }
@media (prefers-color-scheme:dark) { .dots-manager-message.is-assistant { --dots-reply-fill:rgba(255,255,255,.06); } }
:root[data-theme="dark"] .dots-manager-message.is-assistant { --dots-reply-fill:rgba(255,255,255,.06); }
.dots-manager-message.is-optimistic { opacity:.72;animation:dots-pop-in .28s cubic-bezier(.2,.9,.3,1.15) both; }
.dots-msg-actions { position:absolute;bottom:-26px;left:6px;display:flex;gap:2px;opacity:0;transform:translateY(-3px);transition:opacity .16s ease,transform .16s ease;pointer-events:none; }
.dots-manager-message.is-user .dots-msg-actions { left:auto;right:6px; }
.dots-manager-message:hover .dots-msg-actions,.dots-msg-actions:focus-within { opacity:1;transform:none;pointer-events:auto; }
.dots-msg-actions button { width:28px;height:28px;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:var(--secondary);cursor:pointer; }
.dots-msg-actions button:hover { background:var(--soft-fill);color:inherit; }
.dots-msg-actions button.is-done { color:#34a853; }
.dots-thinking { display:flex;align-items:center;gap:10px;width:fit-content;max-width:760px;margin:0 auto 28px 0;padding:12px 16px;border-radius:20px;background:var(--dots-reply-fill,#f6f7fb);border:.5px solid color-mix(in srgb,currentColor 6%,transparent);transform-origin:bottom left;animation:dots-pop-in .34s cubic-bezier(.2,.9,.3,1.2) both; }
@media (prefers-color-scheme:dark) { .dots-thinking { --dots-reply-fill:rgba(255,255,255,.06); } }
.dots-thinking-dots { display:flex;gap:5px; }
.dots-thinking-dots i { width:7px;height:7px;border-radius:50%;background:linear-gradient(135deg,#6e78f5,#ab70ed);animation:dots-wave 1.15s ease-in-out infinite; }
.dots-thinking-dots i:nth-child(2) { animation-delay:.15s; }
.dots-thinking-dots i:nth-child(3) { animation-delay:.3s; }
.dots-thinking-label { font-size:13px;background:linear-gradient(90deg,var(--secondary,#888) 0%,currentColor 50%,var(--secondary,#888) 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:dots-shimmer 2.2s linear infinite; }
@keyframes dots-wave { 0%,100% { transform:translateY(0) scale(.75);opacity:.4; } 45% { transform:translateY(-3.5px) scale(1.1);opacity:1; } }
@keyframes dots-shimmer { from { background-position:120% 0; } to { background-position:-120% 0; } }
@keyframes dots-pop-in { from { opacity:0;transform:scale(.86) translateY(6px); } to { opacity:1;transform:none; } }
.dots-reply-preview { display:flex;align-items:center;gap:10px;margin:0 0 8px;padding:8px 8px 8px 12px;border-radius:14px;background:var(--soft-fill);border-left:3px solid var(--accent,#5b6cf0);animation:dots-pop-in .24s ease both; }
.dots-reply-preview>div { flex:1;min-width:0;display:flex;flex-direction:column;gap:2px; }
.dots-reply-preview strong { font-size:12px;color:var(--accent,#5b6cf0); }
.dots-reply-preview span { font-size:12px;color:var(--secondary);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical; }
.dots-reply-preview button { width:26px;height:26px;border:0;border-radius:50%;background:transparent;color:var(--secondary);font-size:18px;cursor:pointer; }
.dots-manager-message.is-user blockquote { margin:0 0 8px;padding-left:9px;border-left:3px solid color-mix(in srgb,var(--accent,#5b6cf0) 70%,transparent);color:var(--secondary);font-size:12.5px; }
@media (prefers-reduced-motion:reduce) { .dots-thinking,.dots-thinking-dots i,.dots-thinking-label,.dots-reply-preview,.is-optimistic { animation:none; } }
.dots-thinking.is-steady { animation:none; }

/* 2026-10-30: connectors & Dots settings */
.dots-connectors-card { width:min(820px,94vw);max-height:min(86vh,900px);display:flex;flex-direction:column; }
.dots-connectors-card>header { display:flex;align-items:flex-start;justify-content:space-between; }
.dots-connectors-card>header small { display:block;margin-top:2px;color:var(--secondary);font-size:12px; }
.dots-connector-filters { display:flex;gap:6px;overflow-x:auto;padding:12px 0 6px;scrollbar-width:none; }
.dots-connector-filters button { flex:none;border:0;border-radius:999px;padding:6px 13px;background:var(--soft-fill);color:inherit;font-size:13px;cursor:pointer;transition:background .15s,color .15s; }
.dots-connector-filters button[aria-selected="true"] { background:var(--accent,#5b6cf0);color:#fff; }
.dots-connector-body { overflow-y:auto;padding:4px 2px 8px;margin:0 -2px; }
.dots-connector-body h3 { margin:16px 2px 8px;font-size:12px;font-weight:600;color:var(--secondary);letter-spacing:.02em; }
.dots-connector-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px; }
.dots-connector { border-radius:16px;background:var(--soft-fill);border:.5px solid color-mix(in srgb,currentColor 7%,transparent);transition:background .15s,box-shadow .2s;animation:dots-pop-in .26s ease both; }
.dots-connector:hover { box-shadow:0 2px 14px rgba(0,0,0,.06); }
.dots-connector.is-planned { opacity:.72; }
.dots-connector-head { width:100%;display:flex;align-items:center;gap:12px;padding:13px 14px;border:0;background:none;color:inherit;text-align:left;cursor:pointer; }
.dots-connector-icon { flex:none;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent,#5b6cf0) 12%,transparent);color:var(--accent,#5b6cf0); }
.dots-connector.is-connected .dots-connector-icon { background:color-mix(in srgb,#2e9e5b 14%,transparent);color:#2e9e5b; }
.dots-connector-text { flex:1;min-width:0;display:flex;flex-direction:column;gap:2px; }
.dots-connector-text strong { font-size:14px; }
.dots-connector-text span { font-size:12px;color:var(--secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.dots-connector-state { flex:none;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--secondary);white-space:nowrap; }
.dots-connector-state i { width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.45; }
.dots-connector.is-connected .dots-connector-state { color:#2e9e5b; } .dots-connector.is-connected .dots-connector-state i { opacity:1;box-shadow:0 0 0 3px color-mix(in srgb,#2e9e5b 18%,transparent); }
.dots-connector.is-error .dots-connector-state { color:#d9480f; } .dots-connector.is-error .dots-connector-state i { opacity:1; }
.dots-connector.is-paused .dots-connector-state { color:#b08900; }
.dots-connector-more { padding:0 14px 14px 64px;font-size:13px; }
.dots-connector-more p { margin:0 0 8px;color:var(--secondary);line-height:1.6; }
.dots-connector-account { display:inline-block;margin-bottom:8px;padding:3px 9px;border-radius:7px;background:color-mix(in srgb,currentColor 7%,transparent);font-size:12px; }
.dots-connector-caps { display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px;padding:0;list-style:none; }
.dots-connector-caps li { padding:3px 8px;border-radius:999px;border:.5px solid color-mix(in srgb,currentColor 18%,transparent);font-size:11.5px;color:var(--secondary); }
.dots-connector-devices { margin:0 0 10px;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px; }
.dots-connector-devices li { display:flex;align-items:center;gap:8px; } .dots-connector-devices i { width:7px;height:7px;border-radius:50%;background:#aaa; } .dots-connector-devices i.is-online { background:#2e9e5b; }
.dots-connector-devices small { color:var(--secondary); }
.dots-connector-actions { display:flex;gap:8px;flex-wrap:wrap; }
.dots-connector-actions button { border:0;border-radius:9px;padding:6px 14px;background:color-mix(in srgb,currentColor 8%,transparent);color:inherit;font-size:13px;cursor:pointer; }
.dots-connector-actions button.is-destructive { color:#d9480f; }
.dots-connector-note { font-size:12px; }
.dots-connector-skeleton { height:64px;margin:10px 0;border-radius:16px;background:linear-gradient(90deg,var(--soft-fill) 0%,color-mix(in srgb,currentColor 9%,transparent) 50%,var(--soft-fill) 100%);background-size:220% 100%;animation:dots-shimmer 1.4s linear infinite; }
@media(max-width:700px) { .dots-connector-grid { grid-template-columns:1fr; } .dots-connector-more { padding-left:14px; } }
.dots-settings-card { width:min(520px,94vw); }
.dots-settings-card h3 { margin:18px 0 8px;font-size:12px;color:var(--secondary);font-weight:600; }
.dots-choice-list { display:flex;flex-direction:column;gap:8px; }
.dots-choice { display:flex;gap:12px;align-items:flex-start;text-align:left;padding:12px 14px;border-radius:14px;border:1px solid color-mix(in srgb,currentColor 9%,transparent);background:none;color:inherit;cursor:pointer;transition:border-color .15s,background .15s; }
.dots-choice i { flex:none;margin-top:3px;width:16px;height:16px;border-radius:50%;border:1.5px solid color-mix(in srgb,currentColor 35%,transparent);transition:border .15s; }
.dots-choice.is-selected { border-color:var(--accent,#5b6cf0);background:color-mix(in srgb,var(--accent,#5b6cf0) 7%,transparent); }
.dots-choice.is-selected i { border:5px solid var(--accent,#5b6cf0); }
.dots-choice span,.dots-switch-row span { display:flex;flex-direction:column;gap:3px; } .dots-choice small,.dots-switch-row small { color:var(--secondary);font-size:12px;line-height:1.5; }
.dots-switch-row { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 2px;border-bottom:.5px solid color-mix(in srgb,currentColor 8%,transparent); }
.dots-msg-sep { width:1px;height:14px;margin:5px 3px;background:color-mix(in srgb,currentColor 15%,transparent); }
.dots-msg-actions button.is-on { color:var(--accent,#5b6cf0);background:color-mix(in srgb,var(--accent,#5b6cf0) 12%,transparent); }
.dots-manager-message.is-assistant:has(.is-on) .dots-msg-actions { opacity:1;transform:none;pointer-events:auto; }

/* WeChat binding */
.dots-weixin-card,.dots-settings-card { width:min(470px,94vw);height:min(620px,calc(100dvh - 32px));min-height:0;max-height:calc(100dvh - 32px);box-sizing:border-box; }
.dots-weixin-card { text-align:center; }
.dots-weixin-card>header { text-align:left; }
/* 二维码、说明和绑定成功都放在卡片的视觉中心（略高于几何中心）。 */
.dots-weixin-body { flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:0; }
.dots-weixin-body .dots-weixin-qr { margin-top:0; }
.dots-weixin-card.is-done .dots-weixin-status { font-size:18px;font-weight:600;margin-top:2px; }
.dots-weixin-card.is-done .dots-weixin-tip { max-width:290px;margin-top:4px; }
.dots-dialog-overlay .dots-weixin-card .dots-weixin-done { width:auto;min-width:140px;margin-top:22px; }
.dots-weixin-qr { position:relative;width:208px;height:208px;margin:14px auto 10px;padding:10px;border-radius:18px;background:#fff;box-shadow:0 0 0 .5px rgba(0,0,0,.08),0 8px 28px rgba(0,0,0,.08);display:grid;place-items:center;transition:filter .25s,opacity .25s; }
.dots-weixin-qr svg { width:100%;height:100%;display:block; }
.dots-weixin-qr.is-scanned svg { filter:blur(3px);opacity:.35; }
.dots-weixin-qr.is-expired { background:#fff;box-shadow:none;border:1px solid color-mix(in srgb,currentColor 10%,transparent); }
.dots-weixin-expired-state { width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:12px;text-align:center; }
.dots-weixin-expired-state strong { font-size:15px;font-weight:500; }
.dots-weixin-expired-state button { margin-top:2px; }
.dots-weixin-qr.is-done { box-shadow:none;background:transparent; }
.dots-weixin-ok { width:84px;height:84px;border-radius:50%;display:grid;place-items:center;background:#07c160;color:#fff;animation:dots-pop-in .35s cubic-bezier(.2,.9,.3,1.3) both; }
.dots-weixin-ok svg { width:44px;height:44px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round; }
.dots-weixin-loading { width:28px;height:28px;border-radius:50%;border:2.5px solid rgba(0,0,0,.12);border-top-color:#07c160;animation:dots-spin .8s linear infinite; }
@keyframes dots-spin { to { transform:rotate(360deg); } }
.dots-weixin-status { margin:6px 0 4px;font-size:14px;font-weight:500; }
.dots-weixin-status small { display:block;margin-top:2px;font-size:12px;font-weight:400;color:#d9480f; }
.dots-weixin-verify { display:flex;gap:8px;justify-content:center;margin:8px 0; }
.dots-weixin-verify input { width:150px;padding:7px 10px;border-radius:10px;border:1px solid color-mix(in srgb,currentColor 18%,transparent);background:transparent;color:inherit;font-size:16px;letter-spacing:.2em;text-align:center; }
.dots-weixin-steps { margin:10px auto 6px;padding:0;list-style:none;counter-reset:s;display:inline-flex;flex-direction:column;gap:5px;text-align:left;font-size:13px;color:var(--secondary); }
.dots-weixin-steps li { counter-increment:s;display:flex;gap:8px;align-items:center; }
.dots-weixin-steps li::before { content:counter(s);width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:11px;background:color-mix(in srgb,#07c160 14%,transparent);color:#07a554; }
.dots-weixin-tip { margin:6px 0 0;font-size:12px;color:var(--secondary);line-height:1.6; }

/* 批准范围 */
.dots-approval-scope { display:flex;flex-direction:column;gap:4px;margin:4px 0 10px; }
.dots-approval-scope label { display:flex;align-items:center;gap:10px;font-size:13px; }
.dots-approval-scope label span { color:var(--secondary);flex:none; }
.dots-approval-scope select { flex:1;min-width:0;font:inherit;font-size:13px;color:inherit;padding:6px 28px 6px 10px;border-radius:10px;border:1px solid color-mix(in srgb,currentColor 12%,transparent);background:color-mix(in srgb,currentColor 3%,transparent);appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 15px) 52%,calc(100% - 10px) 52%;background-size:5px 5px;background-repeat:no-repeat;cursor:pointer; }
.dots-approval-scope select:focus-visible { outline:2px solid var(--accent,#5b6cf0);outline-offset:1px; }
.dots-approval-scope small { color:var(--secondary);font-size:12px;line-height:1.5; }
/* 连接器权限 */
.dots-perm-list { display:flex;flex-direction:column; }
.dots-perm-row { display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 2px;border-bottom:.5px solid color-mix(in srgb,currentColor 8%,transparent); }
.dots-perm-row > span { display:flex;flex-direction:column;gap:3px;min-width:0; }
.dots-perm-row small { color:var(--secondary);font-size:12px;line-height:1.5; }
.dots-segmented { flex:none;display:inline-flex;padding:2px;border-radius:9px;background:color-mix(in srgb,currentColor 7%,transparent); }
.dots-dialog-overlay .dots-segmented button { border:0;background:none;color:inherit;font:inherit;font-size:12px;padding:5px 11px;border-radius:7px;cursor:pointer;opacity:.7;transition:background .15s,opacity .15s,box-shadow .15s; }
.dots-dialog-overlay .dots-segmented button.is-selected { opacity:1;background:var(--surface,#fff);box-shadow:0 1px 3px rgba(0,0,0,.12);font-weight:600; }
@media (prefers-color-scheme:dark){ .dots-segmented button.is-selected { background:color-mix(in srgb,currentColor 16%,transparent); } }
/* 已授权的操作 */
.dots-grant-list { list-style:none;margin:0;padding:0;display:flex;flex-direction:column; }
.dots-grant-list li { display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 2px;border-bottom:.5px solid color-mix(in srgb,currentColor 8%,transparent); }
.dots-grant-list li span { display:flex;flex-direction:column;gap:3px;min-width:0; }
.dots-grant-list strong { font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:600;overflow-wrap:anywhere; }
.dots-grant-list small { color:var(--secondary);font-size:12px; }
.dots-dialog-overlay .dots-grant-list button { flex:none;border:1px solid color-mix(in srgb,currentColor 12%,transparent);background:none;color:inherit;font:inherit;font-size:12px;padding:5px 12px;border-radius:999px;cursor:pointer; }
.dots-dialog-overlay .dots-grant-list button:hover { color:#d64545;border-color:color-mix(in srgb,#d64545 40%,transparent); }
.dots-settings-empty { color:var(--secondary);font-size:12px;line-height:1.6;margin:4px 2px; }
.dots-dialog-overlay .dots-settings-link { margin-top:10px;border:0;background:none;color:var(--accent,#5b6cf0);font:inherit;font-size:13px;padding:6px 2px;cursor:pointer; }
/* 做过的事 */
.dots-audit-card { width:min(560px,94vw);max-height:min(760px,88vh);display:flex;flex-direction:column; }
.dots-audit-intro { margin:0 0 12px;color:var(--secondary);font-size:12px;line-height:1.6; }
.dots-audit-filters { display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px; }
.dots-dialog-overlay .dots-audit-filters button { border:1px solid color-mix(in srgb,currentColor 10%,transparent);background:none;color:inherit;font:inherit;font-size:12px;padding:5px 12px;border-radius:999px;cursor:pointer;transition:background .15s,border-color .15s; }
.dots-dialog-overlay .dots-audit-filters button.is-selected { background:var(--accent,#5b6cf0);border-color:var(--accent,#5b6cf0);color:#fff; }
.dots-audit-list { list-style:none;margin:0;padding:0;overflow:auto;flex:1;min-height:0; }
.dots-audit-day { position:sticky;top:0;z-index:1;padding:12px 2px 6px;font-size:12px;font-weight:600;color:var(--secondary);background:var(--panel-bg,var(--surface,#fff)); }
.dots-audit-item { display:flex;gap:12px;padding:10px 2px;border-bottom:.5px solid color-mix(in srgb,currentColor 7%,transparent); }
.dots-audit-item > i { flex:none;width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-style:normal;font-size:13px;background:color-mix(in srgb,var(--accent,#5b6cf0) 10%,transparent);color:var(--accent,#5b6cf0); }
.dots-audit-item.is-approval > i { background:color-mix(in srgb,#2f9e6b 12%,transparent);color:#2f9e6b; }
.dots-audit-item.is-message > i { background:color-mix(in srgb,#d08a1e 12%,transparent);color:#d08a1e; }
.dots-audit-item.is-change > i { background:color-mix(in srgb,currentColor 8%,transparent);color:var(--secondary); }
.dots-audit-item.is-failed > i { background:color-mix(in srgb,#d64545 12%,transparent);color:#d64545; }
.dots-audit-item > div { display:flex;flex-direction:column;gap:3px;min-width:0;flex:1; }
.dots-audit-item p { margin:0;display:flex;align-items:baseline;gap:8px;font-size:13px; }
.dots-audit-item p strong { font-weight:600; }
.dots-audit-item p em { font-style:normal;font-size:11px;color:#d64545;padding:1px 6px;border-radius:6px;background:color-mix(in srgb,#d64545 10%,transparent); }
.dots-audit-item time { margin-left:auto;flex:none;font-size:11px;color:var(--secondary);font-variant-numeric:tabular-nums; }
.dots-audit-item small { color:var(--secondary);font-size:12px;line-height:1.5;overflow-wrap:anywhere; }
.dots-audit-item code { font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;padding:4px 7px;border-radius:7px;background:color-mix(in srgb,currentColor 5%,transparent);white-space:pre-wrap;overflow-wrap:anywhere;max-height:5.4em;overflow:hidden; }
.dots-audit-item .dots-audit-error { color:#d64545; }

/* 目标 */
.dots-goals-card { width:min(600px,94vw);max-height:min(820px,90vh);display:flex;flex-direction:column; }
.dots-goals-card > .dots-goal-list { overflow:auto;min-height:0;flex:1;display:flex;flex-direction:column;gap:12px;padding:2px 2px 6px; }
.dots-dialog-overlay .dots-goal-new { align-self:flex-start;border:1px dashed color-mix(in srgb,currentColor 22%,transparent);background:none;color:inherit;font:inherit;font-size:13px;padding:9px 16px;border-radius:12px;cursor:pointer;margin-bottom:12px;transition:border-color .15s,background .15s; }
.dots-dialog-overlay .dots-goal-new:hover { border-color:var(--accent,#5b6cf0);background:color-mix(in srgb,var(--accent,#5b6cf0) 6%,transparent); }
.dots-goal-form { display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:16px;border:1px solid color-mix(in srgb,currentColor 9%,transparent);margin-bottom:12px; }
.dots-goal-form label { display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--secondary);flex:1;min-width:0; }
.dots-goal-form input,.dots-goal-form textarea,.dots-goal-form select,.dots-goal-add input { font:inherit;font-size:13px;color:var(--text,inherit);padding:8px 10px;border-radius:10px;border:1px solid color-mix(in srgb,currentColor 12%,transparent);background:color-mix(in srgb,currentColor 3%,transparent);resize:vertical;min-width:0; }
.dots-goal-form-row { display:flex;gap:10px;flex-wrap:wrap; }
.dots-goal-form-actions { display:flex;justify-content:flex-end;gap:8px; }
.dots-dialog-overlay .dots-goal-form-actions button, .dots-dialog-overlay .dots-goal footer button, .dots-dialog-overlay .dots-goal-add button, .dots-dialog-overlay .dots-goal-failed button { border:1px solid color-mix(in srgb,currentColor 12%,transparent);background:none;color:inherit;font:inherit;font-size:12px;padding:6px 13px;border-radius:999px;cursor:pointer; }
.dots-goal-form-actions .is-primary { background:var(--accent,#5b6cf0);border-color:var(--accent,#5b6cf0);color:#fff; }
.dots-goal { padding:16px;border-radius:18px;border:1px solid color-mix(in srgb,currentColor 9%,transparent);background:color-mix(in srgb,currentColor 1.5%,transparent);display:flex;flex-direction:column;gap:10px; }
.dots-goal.is-paused { opacity:.72; }
.dots-goal > header { display:flex;justify-content:space-between;gap:12px;align-items:flex-start; }
.dots-goal h3 { margin:0;font-size:15px;font-weight:600;color:inherit; }
.dots-goal > header p { margin:4px 0 0;font-size:12px;color:var(--secondary);line-height:1.5; }
.dots-goal-status { flex:none;font-size:11px;padding:3px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent,#5b6cf0) 10%,transparent);color:var(--accent,#5b6cf0); }
.dots-goal.is-done .dots-goal-status { background:color-mix(in srgb,#2f9e6b 12%,transparent);color:#2f9e6b; }
.dots-goal.is-paused .dots-goal-status { background:color-mix(in srgb,currentColor 8%,transparent);color:var(--secondary); }
.dots-goal-progress { display:flex;align-items:center;gap:10px; }
.dots-goal-progress progress { flex:1;height:6px;appearance:none;-webkit-appearance:none;border:0;border-radius:99px;overflow:hidden;background:color-mix(in srgb,currentColor 8%,transparent); }
.dots-goal-progress progress::-webkit-progress-bar { background:color-mix(in srgb,currentColor 8%,transparent);border-radius:99px; }
.dots-goal-progress progress::-webkit-progress-value { background:var(--accent,#5b6cf0);border-radius:99px;transition:width .4s cubic-bezier(.2,.8,.2,1); }
.dots-goal-progress progress::-moz-progress-bar { background:var(--accent,#5b6cf0);border-radius:99px; }
.dots-goal-progress strong { font-size:12px;font-variant-numeric:tabular-nums;min-width:34px;text-align:right; }
.dots-goal-meta,.dots-goal-summary { margin:0;font-size:12px;color:var(--secondary);line-height:1.6; }
.dots-goal-summary { padding:8px 10px;border-radius:10px;background:color-mix(in srgb,var(--accent,#5b6cf0) 5%,transparent); }
.dots-goal-milestones { list-style:none;margin:0;padding:0;display:flex;flex-direction:column; }
.dots-goal-milestones li { display:flex;align-items:center;gap:10px;padding:7px 2px;font-size:13px;border-bottom:.5px solid color-mix(in srgb,currentColor 6%,transparent); }
.dots-goal-milestones li span { flex:1;min-width:0;line-height:1.45;transition:color .2s,opacity .2s; }
.dots-goal-milestones li.is-done span { text-decoration:line-through;opacity:.5; }
.dots-goal-milestones time { font-size:11px;color:var(--secondary);font-variant-numeric:tabular-nums; }
.dots-dialog-overlay .dots-goal-check { flex:none;width:18px;height:18px;border-radius:50%;border:1.5px solid color-mix(in srgb,currentColor 30%,transparent);background:none;cursor:pointer;padding:0;position:relative;transition:background .2s,border-color .2s,transform .15s; }
.dots-dialog-overlay .dots-goal-check:active { transform:scale(.88); }
.dots-dialog-overlay .dots-goal-check[aria-checked="true"] { background:var(--accent,#5b6cf0);border-color:var(--accent,#5b6cf0); }
.dots-dialog-overlay .dots-goal-check[aria-checked="true"]::after { content:"";position:absolute;left:5px;top:2px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg); }
.dots-dialog-overlay .dots-goal-remove { border:0;background:none;color:var(--secondary);font-size:15px;line-height:1;cursor:pointer;opacity:0;padding:0 2px;transition:opacity .15s; }
.dots-dialog-overlay .dots-goal-milestones li:hover .dots-goal-remove, .dots-dialog-overlay .dots-goal-remove:focus-visible { opacity:1; }
.dots-dialog-overlay .dots-goal-link { align-self:flex-start;border:0;background:none;color:var(--accent,#5b6cf0);font:inherit;font-size:12px;padding:2px;cursor:pointer; }
.dots-goal-add { display:flex;gap:8px;align-items:center; }
.dots-goal-add input[name=title] { flex:1; }
.dots-goal footer { display:flex;gap:8px;flex-wrap:wrap;padding-top:2px; }
.dots-goal footer .is-danger { margin-left:auto;color:#d64545;border-color:color-mix(in srgb,#d64545 30%,transparent); }
.dots-goal-planning { display:flex;align-items:center;gap:5px;padding:6px 2px;color:var(--secondary);font-size:12px; }
.dots-goal-planning span { width:6px;height:6px;border-radius:50%;background:var(--accent,#5b6cf0);animation:dotsGoalPulse 1.2s ease-in-out infinite; }
.dots-goal-planning span:nth-child(2) { animation-delay:.15s; } .dots-goal-planning span:nth-child(3) { animation-delay:.3s; }
.dots-goal-planning em { font-style:normal;margin-left:6px; }
@keyframes dotsGoalPulse { 0%,80%,100% { opacity:.25;transform:scale(.8); } 40% { opacity:1;transform:scale(1); } }
@media (prefers-reduced-motion:reduce){ .dots-goal-planning span { animation:none;opacity:.6; } }
.dots-goal-failed { display:flex;align-items:center;gap:10px;font-size:12px;color:#d64545; }

/* 连接器 / 事件订阅：统一列表 */
.dots-sources-card { width:min(520px,94vw);max-height:min(760px,88vh);display:flex;flex-direction:column; }
.dots-sources-card > header small { display:block;margin-top:3px;color:var(--secondary);font-size:12px;font-weight:400; }
.dots-src-body { overflow:auto;min-height:0;flex:1;margin:0 -4px;padding:0 4px 4px; }
.dots-sources-card h3 { margin:18px 0 6px;font-size:12px;font-weight:600;color:var(--secondary); }
.dots-sources-card h3:first-child { margin-top:6px; }
.dots-sponge-card { display:flex;flex-direction:column;gap:9px;padding:13px 14px;border:1px solid color-mix(in srgb,currentColor 9%,transparent);border-radius:14px;background:color-mix(in srgb,currentColor 1.5%,transparent); }
.dots-sponge-heading { display:flex;align-items:center;gap:10px; }
.dots-sponge-heading>span:last-child { display:flex;min-width:0;flex-direction:column;gap:3px; }
.dots-sponge-heading strong { font-size:13px;font-weight:600; }
.dots-sponge-heading small,.dots-sponge-description { margin:0;color:var(--secondary);font-size:12px;line-height:1.5; }
.dots-sponge-card>.dots-src-actions { display:flex;align-items:center;gap:7px;flex-wrap:wrap; }
.dots-sponge-card .dots-src-actions .dots-src-button { margin:0; }
.dots-sponge-error { margin:0;color:#d64545;font-size:12px;line-height:1.5; }
.dots-sponge-fallback { margin:0;font-size:12px; }
.dots-sponge-fallback a { color:#0a84ff;text-decoration:none; }
.dots-sponge-card .dots-src-confirm { margin-top:2px; }
.dots-src-list { list-style:none;margin:0;padding:0;border-radius:14px;border:1px solid color-mix(in srgb,currentColor 8%,transparent);overflow:hidden; }
.dots-src + .dots-src { border-top:1px solid color-mix(in srgb,currentColor 7%,transparent); }
.dots-src-row { display:flex;align-items:center;gap:12px;padding:11px 14px;min-height:52px; }
.dots-src-row[data-src-toggle] { cursor:pointer;transition:background .15s; }
.dots-src-row[data-src-toggle]:hover { background:color-mix(in srgb,currentColor 3%,transparent); }
.dots-src-row:focus-visible { outline:2px solid var(--accent,#5b6cf0);outline-offset:-2px; }
.dots-src-icon { flex:none;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,currentColor 6%,transparent);color:var(--text,inherit); }
.dots-src.is-connected .dots-src-icon { background:color-mix(in srgb,var(--accent,#5b6cf0) 11%,transparent);color:var(--accent,#5b6cf0); }
.dots-src-text { flex:1;min-width:0;display:flex;flex-direction:column;gap:2px; }
.dots-src-text strong { font-size:14px;font-weight:600; }
.dots-src-text small { color:var(--secondary);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.dots-src-side { flex:none;display:flex;align-items:center;gap:10px; }
.dots-src-state { display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--secondary); }
.dots-src-state i { width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,currentColor 30%,transparent); }
.dots-src-state.is-connected i { background:#2f9e6b; } .dots-src-state.is-paused i { background:#d08a1e; } .dots-src-state.is-error i { background:#d64545; }
.dots-src-chevron { width:14px;height:14px;fill:none;stroke:var(--secondary);stroke-width:2;transition:transform .2s; }
.dots-src.is-open .dots-src-chevron { transform:rotate(90deg); }
.dots-dialog-overlay .dots-src-button { border:1px solid color-mix(in srgb,currentColor 13%,transparent);background:none;color:inherit;font:inherit;font-size:12px;padding:5px 12px;border-radius:999px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s; }
.dots-dialog-overlay .dots-src-button:hover { background:color-mix(in srgb,currentColor 5%,transparent); }
.dots-dialog-overlay .dots-src-button.is-primary { background:#3988fa;border-color:#3988fa;color:#fff; }
.dots-dialog-overlay .dots-src-button.is-primary:hover { opacity:.9;background:#2878e8; }
.dots-dialog-overlay .dots-src-button:not(.is-primary):not(.is-danger) { color:var(--text,#222); }
.dots-dialog-overlay .dots-src-logo { overflow:hidden;background:transparent!important; }
.dots-dialog-overlay .dots-src-logo img { display:block;width:100%;height:100%;object-fit:contain;border-radius:7px; }
:root[data-theme="dark"] .dots-dialog-overlay .dots-src-button:not(.is-primary):not(.is-danger) { color:#f2f3f5;border-color:rgba(255,255,255,.24);background:rgba(255,255,255,.07); }
:root[data-theme="dark"] .dots-dialog-overlay .dots-src-button:not(.is-primary):not(.is-danger):hover { background:rgba(255,255,255,.14); }
@media (prefers-color-scheme:dark) { :root:not([data-theme="light"]) .dots-dialog-overlay .dots-src-button:not(.is-primary):not(.is-danger) { color:#f2f3f5;border-color:rgba(255,255,255,.24);background:rgba(255,255,255,.07); } :root:not([data-theme="light"]) .dots-dialog-overlay .dots-src-button:not(.is-primary):not(.is-danger):hover { background:rgba(255,255,255,.14); } }
.dots-dialog-overlay .dots-src-button.is-danger { color:#d64545;border-color:color-mix(in srgb,#d64545 30%,transparent); }
.dots-src-more { padding:0 14px 12px 58px;display:flex;flex-direction:column;gap:8px; }
.dots-src-more p { margin:0;color:var(--secondary);font-size:12px;line-height:1.55; }
.dots-src-actions { display:flex;flex-wrap:wrap;gap:8px; }
.dots-src-devices { list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;font-size:12.5px; }
.dots-src-devices li { display:flex;align-items:center;gap:8px; }
.dots-src-devices i { width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,currentColor 25%,transparent); }
.dots-src-devices i.is-online { background:#2f9e6b; }
.dots-src-chips { display:flex;flex-wrap:wrap;gap:6px; }
.dots-src-chips span { font-size:12px;padding:5px 11px;border-radius:999px;background:color-mix(in srgb,currentColor 5%,transparent); }
.dots-src-chips.is-muted span { color:var(--secondary); }
.dots-src-empty { margin:18px 0;text-align:center;color:var(--secondary);font-size:13px; }
.dots-src-skeleton { height:52px;border-radius:12px;margin-bottom:8px;background:linear-gradient(90deg,color-mix(in srgb,currentColor 4%,transparent),color-mix(in srgb,currentColor 8%,transparent),color-mix(in srgb,currentColor 4%,transparent));background-size:200% 100%;animation:dotsSrcShimmer 1.2s linear infinite; }
@keyframes dotsSrcShimmer { to { background-position:-200% 0; } }
@media (prefers-reduced-motion:reduce){ .dots-src-skeleton { animation:none; } }

.dots-msg-actions .symbol { width:16px;height:16px; }
.symbol.dots-panel-icon { width:18px;height:18px; }
.dots-sources-card { height:auto;min-height:0; }

/* Dots 消息操作：与普通对话工具栏同一套图标，同尺寸同颜色 */
.dots-msg-actions .symbol { width:18px;height:18px; }
.dots-menu-content .wb-ios-icon { width:17px;height:17px;flex:none; }
/* 确认对话框总在 Dots 弹窗之上 */
#confirmDialog.modal-overlay { z-index:2000; }

/* 电脑横屏：连接器、事件订阅、Dots 设置用更宽的两栏布局 */
.dots-sources-card { width:min(920px,94vw); }
.dots-sources-card .dots-src-list { display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px;border:0;border-radius:0;overflow:visible; }
.dots-sources-card .dots-src { border:1px solid color-mix(in srgb,currentColor 8%,transparent);border-radius:14px;background:color-mix(in srgb,currentColor 1.5%,transparent);align-self:start; }
.dots-sources-card .dots-src + .dots-src { border-top:1px solid color-mix(in srgb,currentColor 8%,transparent); }
.dots-sources-card .dots-src.is-open { grid-column:1 / -1; }
.dots-sources-card .dots-src-row { min-height:60px; }
.dots-sources-card h3 { margin-top:20px; }
.dots-settings-card { width:min(470px,94vw); }
.dots-settings-grid { display:grid;grid-template-columns:1fr;gap:12px;align-items:start; }
.dots-settings-col > h3:first-child { margin-top:6px; }
@media (max-width:720px) { .dots-settings-grid { grid-template-columns:1fr;gap:12px; } .dots-sources-card .dots-src-list { grid-template-columns:1fr; } }
.dots-dialog-overlay .dots-sources-card { width:min(920px,100%);height:auto;max-height:min(720px,calc(100dvh - 48px)); }
.dots-dialog-overlay .dots-settings-card { width:min(470px,94vw);height:min(620px,calc(100dvh - 32px));max-height:calc(100dvh - 32px);overflow:auto; }
/* 连接器：插件首字母图标、授权提示、添加 MCP 表单、工具列表 */
.dots-src-mono { font-weight:700;font-size:14px;color:#fff!important;background:hsl(var(--mono-hue,212) 55% 52%)!important; }
.dots-src-notice { margin:0 0 10px;padding:10px 12px;border-radius:10px;font-size:13px;background:color-mix(in srgb,#0a84ff 9%,transparent);color:inherit; }
.dots-src-notice a { color:#0a84ff;margin-left:6px; }
.dots-src-add { display:flex;align-items:center;gap:8px;width:100%;margin-top:8px;padding:11px 14px;border:1px dashed color-mix(in srgb,currentColor 18%,transparent);border-radius:14px;background:none;color:inherit;font:inherit;font-size:14px;cursor:pointer; }
.dots-src-add:hover { background:color-mix(in srgb,currentColor 4%,transparent); }
.dots-src-add .dots-panel-icon { width:16px;height:16px; }
.dots-mcp-form { display:flex;flex-direction:column;gap:10px; }
.dots-mcp-add { margin-top:8px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,currentColor 10%,transparent); }
.dots-mcp-form p { margin:0;font-size:12.5px;color:var(--secondary,#8a8f98); }
.dots-mcp-form label { display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--secondary,#8a8f98); }
.dots-mcp-form input { font:inherit;font-size:14px;color:var(--text,inherit);padding:8px 10px;border-radius:9px;border:1px solid color-mix(in srgb,currentColor 14%,transparent);background:color-mix(in srgb,currentColor 2%,transparent);outline:none; }
.dots-mcp-form input:focus { border-color:#0a84ff; }
.dots-mcp-form .dots-src-actions { justify-content:flex-end; }
.dots-src-tools { display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px; }
.dots-src-tools code { font-size:11.5px;padding:2px 7px;border-radius:6px;background:color-mix(in srgb,currentColor 6%,transparent); }
.dots-src-tools span { font-size:12px;color:var(--secondary,#8a8f98);align-self:center; }
.dots-sources-card .dots-mcp-add,.dots-sources-card .dots-src-add { grid-column:1 / -1; }

/* 多行输入：文字在上，加号和发送按钮在底部一行 */
.dots-composer-surface.is-tall { display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"input input input" "add . send";align-items:end;row-gap:4px;border-radius:22px;padding:10px 12px 9px; }
.dots-composer-surface.is-tall textarea { grid-area:input;padding:4px 6px; }
.dots-composer-surface.is-tall .dots-add-file { grid-area:add; }
.dots-composer-surface.is-tall .dots-send { grid-area:send; }

.dots-src-logo { background:#fff!important;padding:0;overflow:hidden;box-shadow:inset 0 0 0 .5px color-mix(in srgb,#000 10%,transparent); }
.dots-src-logo img { width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit; }
.settings-dots-entries { display:flex;flex-direction:column;gap:8px; }
.settings-entry-icon .wb-ios-icon { width:22px;height:22px; }

/* 消息里的图片缩略图（例如微信发来的图片） */
.dots-images { display:flex;flex-wrap:wrap;gap:8px;margin-top:6px; }
.dots-manager-message.is-user .dots-images { justify-content:flex-end; }
.dots-image { display:block;margin:0;padding:0;border:0!important;outline:0;appearance:none;-webkit-appearance:none;border-radius:10px;overflow:hidden;line-height:0;background:transparent!important;box-shadow:none!important;filter:none;cursor:pointer; }
.dots-image img { display:block;max-width:min(260px,100%);max-height:240px;width:auto;height:auto;object-fit:contain;border:0;border-radius:inherit;box-shadow:none!important;filter:none!important; }
.dots-manager-message .message-body:empty { display:none; }

/* 连接器说明：连上后能做什么、怎么连接；断开在卡片里原地确认 */
.dots-src-more .dots-src-label { margin-top:2px;color:inherit;font-size:12px;font-weight:600; }
.dots-src-abilities { margin:0;padding-left:18px;display:flex;flex-direction:column;gap:3px;font-size:13px;line-height:1.5; }
.dots-src-more .dots-src-example { font-size:12px;color:var(--secondary); }
.dots-src-more .dots-src-howto { font-size:12.5px;line-height:1.6; }
.dots-src-more .dots-src-status { color:inherit;font-size:12.5px; }
.dots-src-more .dots-src-url { font-size:11.5px;word-break:break-all; }
.dots-src-more > .dots-src-actions { margin-top:4px; }
.dots-src-more > .dots-src-actions.is-secondary { margin-top:0; }
.dots-dialog-overlay .dots-src-link { border:0;background:none;padding:0;margin-left:6px;font:inherit;font-size:12px;color:#0a84ff;cursor:pointer; }
.dots-dialog-overlay .dots-src-link.is-danger { margin-left:0;color:#d64545; }
.dots-src-confirm { display:flex;flex-direction:column;gap:8px;margin-top:4px;padding:10px 12px;border-radius:12px;background:color-mix(in srgb,#d64545 7%,transparent);font-size:12.5px;line-height:1.55; }
.dots-src-confirm .dots-src-actions { justify-content:flex-end; }

.dots-send-note { display:flex;align-items:center;gap:8px;width:fit-content;max-width:85%;margin:-18px 0 22px auto;font-size:12px;color:var(--secondary); }
.dots-send-failure { color:#c44; }
.dots-view .dots-send-retry { display:grid;place-items:center;width:26px;height:26px;padding:0;border:0;border-radius:8px;background:transparent;color:inherit;cursor:pointer; }
.dots-view .dots-send-retry:hover { background:var(--soft-fill); }
.dots-send-retry .wb-icon { width:14px;height:14px; }
.dots-manager-message.is-send-failed { opacity:1; }
