@source "../.."; /* Restored agent activity renderer styles from the TSH desktop source during the GUI migration. */ .workspace-agents-status-panel__detail-tool-code, .workspace-agents-status-panel__detail-tool-terminal, .workspace-agents-status-panel__detail-tool-diff, .workspace-agents-status-panel__detail-tool-result-list { box-shadow: none; } .workspace-agents-status-panel__detail-tool-terminal code, .workspace-agents-status-panel__detail-tool-code code, .workspace-agents-status-panel__detail-tool-diff pre { font-variant-ligatures: none; } .workspace-agents-status-panel__detail-tool-code, .workspace-agents-status-panel__detail-tool-code pre, .workspace-agents-status-panel__detail-tool-code code { font-family: "Droid Sans Mono", var(--tsh-font-mono); } .workspace-agents-status-panel__detail-tool-terminal [data-agent-terminal-command="true"], .workspace-agents-status-panel__detail-tool-terminal pre, .workspace-agents-status-panel__detail-tool-terminal code { font-family: "Droid Sans Mono", var(--tsh-font-mono); } .workspace-agents-status-panel .workspace-agents-status-panel__detail-tool-terminal { box-shadow: none; border-color: var(--line-2, var(--tutti-line-2)); background: var(--background-panel); } .workspace-agents-status-panel .workspace-agents-status-panel__detail-tool-terminal [data-agent-terminal-command-row="true"] { border-color: var(--line-2, var(--tutti-line-2)); background: var(--transparency-block); } .workspace-agents-status-panel__detail-tool-result-list a { text-decoration: none; } .workspace-agents-status-panel__detail-tool-result-list a:hover { background: color-mix( in srgb, var(--background-panel) 70%, var(--accent) 30% ); } .tsh-zoomable-image { position: relative; display: inline-block; max-width: 100%; vertical-align: top; } .tsh-zoomable-image--block { display: block; } .tsh-zoomable-image__trigger { position: absolute; inset: 0; z-index: 1; border: 0; background: transparent; color: transparent; cursor: zoom-in; -webkit-app-region: no-drag; } .tsh-zoom-dialog[data-rmiz-modal] { position: fixed; inset: 0; z-index: var(--z-dialog); display: flex; align-items: center; justify-content: center; padding: 24px; -webkit-app-region: no-drag; } .tsh-zoom-dialog [data-rmiz-modal-overlay] { position: absolute; inset: 0; } .tsh-zoom-dialog [data-rmiz-modal-content] { position: relative; z-index: 100300; display: flex; align-items: center; justify-content: center; max-width: calc(100vw - 48px); max-height: calc(100vh - 48px); -webkit-app-region: no-drag; } .tsh-zoom-dialog [data-rmiz-modal-overlay="visible"] { background: rgb(0 0 0 / 60%); backdrop-filter: blur(18px) saturate(1.02); } .tsh-zoom-dialog [data-rmiz-modal-overlay="hidden"] { background: rgb(0 0 0 / 0%); } .tsh-zoom-dialog[data-closing="true"] { animation: tsh-zoom-dialog-close 180ms ease-out forwards; } @keyframes tsh-zoom-dialog-close { to { opacity: 0; } } @media (prefers-reduced-motion: reduce) { .tsh-zoom-dialog[data-closing="true"] { animation-duration: 1ms; } } .tsh-zoom-dialog__toolbar-actions { position: fixed; top: max(20px, calc(var(--cove-titlebar-reserve, 0px) + 10px)); right: 20px; inset-inline-end: 20px; z-index: 100301; display: flex; align-items: center; gap: 6px; -webkit-app-region: no-drag; } /* * The image preview is portaled to document.body, so it cannot inherit the * workbench header's scoped Windows titlebar inset. Reuse the same native * caption-button geometry for the portal controls; otherwise the close and * zoom buttons sit underneath the minimize/maximize/close buttons. */ body[data-tutti-titlebar-overlay="true"] { --tutti-titlebar-controls-inset: calc( 100vw - env(titlebar-area-width, calc(100vw - 138px)) + 10px ); } body[data-tutti-titlebar-overlay="true"] .tsh-zoom-dialog__toolbar-actions { right: calc(20px + var(--tutti-titlebar-controls-inset)); inset-inline-end: calc(20px + var(--tutti-titlebar-controls-inset)); } .tsh-zoom-dialog__image { display: block; max-width: calc(100vw - 48px); max-height: calc(100vh - 48px); object-fit: contain; transform-origin: center center; cursor: zoom-out; } .tsh-zoom-dialog__zoom-controls { position: fixed; top: max(20px, calc(var(--cove-titlebar-reserve, 0px) + 10px)); right: 168px; z-index: 100301; display: flex; align-items: center; gap: 2px; height: 32px; padding: 0 2px; border-radius: 999px; background: var(--background-fronted); box-shadow: 0 18px 40px color-mix(in srgb, black 26%, transparent), 0 0 0 1px color-mix(in srgb, white 12%, transparent); color: var(--text-primary); -webkit-app-region: no-drag; } body[data-tutti-titlebar-overlay="true"] .tsh-zoom-dialog__zoom-controls { right: calc(168px + var(--tutti-titlebar-controls-inset)); } .tsh-zoom-dialog:not([data-tsh-image-actions="true"]) .tsh-zoom-dialog__zoom-controls { right: 72px; } body[data-tutti-titlebar-overlay="true"] .tsh-zoom-dialog:not([data-tsh-image-actions="true"]) .tsh-zoom-dialog__zoom-controls { right: calc(72px + var(--tutti-titlebar-controls-inset)); } .tsh-image-context-menu { position: fixed; z-index: 100302; min-width: 148px; overflow: hidden; border: 1px solid var(--line-2); border-radius: 8px; background: var(--background-fronted); box-shadow: 0 18px 40px color-mix(in srgb, black 26%, transparent); color: var(--text-primary); padding: 4px; -webkit-app-region: no-drag; } .tsh-zoom-dialog__zoom-controls button, .tsh-image-context-menu button { display: flex; align-items: center; gap: 8px; border: 0; border-radius: 6px; background: transparent; color: inherit; cursor: pointer; font: inherit; font-size: 13px; line-height: 20px; } .tsh-zoom-dialog__zoom-controls button { justify-content: center; width: 28px; height: 28px; padding: 0; border-radius: 999px; } .tsh-zoom-dialog__zoom-controls button:disabled { cursor: default; opacity: 0.45; } .tsh-zoom-dialog__zoom-controls span { min-width: 44px; padding: 0 4px; text-align: center; font-size: 12px; line-height: 28px; color: var(--text-primary); font-variant-numeric: tabular-nums; } .tsh-zoom-dialog__icon-button { justify-content: center; width: 32px; height: 32px; border-radius: 999px; background: var(--background-fronted); box-shadow: 0 18px 40px color-mix(in srgb, black 26%, transparent), 0 0 0 1px color-mix(in srgb, white 12%, transparent); color: var(--text-primary); } .tsh-image-context-menu button { width: 100%; padding: 7px 10px; } .tsh-zoom-dialog__icon-button:hover { background: color-mix(in srgb, var(--background-panel) 82%, white 12%); } .tsh-image-context-menu button:hover { background: var(--transparency-hover); } .tsh-zoom-dialog__zoom-controls button:not(:disabled):hover { background: color-mix(in srgb, var(--background-panel) 86%, black 8%); } .agent-markdown-mermaid { position: relative; box-sizing: border-box; width: 100%; min-width: 0; margin: 8px 0; overflow: hidden; border: 1px solid var(--line-2); border-radius: 8px; background: var(--background-panel); } .agent-markdown-mermaid__preview { width: 100%; min-width: 0; overflow-x: auto; padding: 16px; outline: none; cursor: zoom-in; } .agent-markdown-mermaid__preview:focus-visible { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--tutti-purple) 72%, transparent); } .agent-markdown-mermaid__preview-spacer { min-height: 180px; } .agent-markdown-mermaid__svg { display: flex; min-width: min-content; align-items: center; justify-content: center; } .agent-markdown-mermaid__svg > svg { display: block; max-width: none; height: auto; } .agent-markdown-mermaid__copy { position: absolute; top: 8px; right: 8px; z-index: 2; display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; border: 0; border-radius: 5px; background: color-mix( in srgb, var(--background-fronted, var(--background-panel)) 88%, transparent ); color: var(--text-tertiary); cursor: pointer; opacity: 0; transition: opacity 120ms ease-out, color 120ms ease-out, background 120ms ease-out; } .agent-markdown-mermaid:hover .agent-markdown-mermaid__copy, .agent-markdown-mermaid__copy:focus-visible { opacity: 1; } .agent-markdown-mermaid__copy:hover { background: var(--transparency-hover); color: var(--text-primary); } .agent-markdown-mermaid--loading { min-height: 180px; padding: 18px; } .agent-markdown-mermaid__placeholder { position: relative; min-height: 142px; overflow: hidden; border-radius: 6px; background: var(--transparency-block); } .agent-markdown-mermaid__placeholder::after { position: absolute; inset: 0; background: linear-gradient( 105deg, transparent 24%, color-mix(in srgb, var(--text-primary) 7%, transparent) 42%, transparent 60% ); content: ""; animation: agent-markdown-mermaid-shimmer 1.25s ease-in-out infinite; transform: translateX(-100%); } .agent-markdown-mermaid__placeholder-node, .agent-markdown-mermaid__placeholder-edge { position: absolute; display: block; background: color-mix(in srgb, var(--text-primary) 12%, transparent); } .agent-markdown-mermaid__placeholder-node { width: 92px; height: 34px; border-radius: 6px; } .agent-markdown-mermaid__placeholder-node--start { top: 20px; left: calc(18% - 46px); } .agent-markdown-mermaid__placeholder-node--middle { top: 88px; left: calc(50% - 46px); } .agent-markdown-mermaid__placeholder-node--end { top: 20px; left: calc(82% - 46px); } .agent-markdown-mermaid__placeholder-edge { top: 70px; width: 25%; height: 2px; transform-origin: left center; } .agent-markdown-mermaid__placeholder-edge--first { left: 22%; transform: rotate(10deg); } .agent-markdown-mermaid__placeholder-edge--second { left: 55%; transform: rotate(-10deg); } @keyframes agent-markdown-mermaid-shimmer { to { transform: translateX(100%); } } .agent-markdown-mermaid--failed { display: flex; min-height: 96px; align-items: center; justify-content: center; gap: 12px; padding: 18px; color: var(--text-secondary); } .agent-markdown-mermaid__failure-copy { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--line-2); border-radius: 6px; padding: 5px 8px; background: var(--transparency-block); color: var(--text-primary); cursor: pointer; font-size: 11px; line-height: 16px; } .agent-markdown-mermaid__failure-copy:hover { background: var(--transparency-hover); } .agent-mermaid-viewer { position: fixed; inset: 0; z-index: var(--z-dialog); overflow: hidden; -webkit-app-region: no-drag; } .agent-mermaid-viewer__backdrop { position: absolute; inset: 0; background: rgb(0 0 0 / 60%); backdrop-filter: blur(18px) saturate(1.02); } .agent-mermaid-viewer__stage { position: absolute; inset: 48px; z-index: 100300; display: flex; align-items: center; justify-content: center; overflow: hidden; outline: none; cursor: default; touch-action: none; user-select: none; } .agent-mermaid-viewer[data-agent-mermaid-space-pressed="true"] .agent-mermaid-viewer__stage { cursor: grab; } .agent-mermaid-viewer[data-agent-mermaid-dragging="true"] .agent-mermaid-viewer__stage { cursor: grabbing; } .agent-mermaid-viewer__canvas { width: 100%; height: 100%; transform-origin: center center; will-change: transform; } .agent-mermaid-viewer__canvas .agent-markdown-mermaid__svg { width: 100%; height: 100%; min-width: 0; } .agent-mermaid-viewer__canvas .agent-markdown-mermaid__svg > svg { width: 100% !important; height: 100% !important; max-width: none !important; } .agent-mermaid-viewer__zoom-controls { right: 72px; } .agent-mermaid-viewer__hint { position: fixed; bottom: 20px; left: 50%; z-index: 100301; padding: 6px 10px; border-radius: 999px; background: var(--background-fronted); box-shadow: 0 10px 28px color-mix(in srgb, black 24%, transparent); color: var(--text-secondary); font-size: 12px; line-height: 18px; pointer-events: none; transform: translateX(-50%); } @media (prefers-reduced-motion: reduce) { .agent-markdown-mermaid__placeholder::after { animation: none; } } .workspace-agents-status-panel { --workspace-agents-status-panel-chrome-gap: 8px; --workspace-room-top-bar-safe-area: 52px; --workspace-desktop-bottom-bar-height: 64px; --workspace-agents-status-panel-width-user: 360px; position: absolute; left: var(--workspace-agents-status-panel-chrome-gap); top: calc( var(--workspace-room-top-bar-safe-area) + var(--workspace-agents-status-panel-chrome-gap) ); bottom: calc( var(--workspace-desktop-bottom-bar-height) + var(--workspace-agents-status-panel-chrome-gap) ); z-index: 9; box-sizing: border-box; display: flex; flex-direction: column; width: min( var(--workspace-agents-status-panel-width-user), calc(100% - (2 * var(--workspace-agents-status-panel-chrome-gap))) ); min-width: min( 280px, calc(100% - (2 * var(--workspace-agents-status-panel-chrome-gap))) ); height: auto; min-height: 0; max-height: none; overflow: hidden; border: 1px solid var(--node-window-border); border-radius: 12px; color: var(--text-primary); background: var(--background-panel); box-shadow: var(--window-drop-shadow); backdrop-filter: none; transform-origin: bottom left; -webkit-app-region: no-drag; } .workspace-agents-status-panel[data-layer="raised"] { z-index: var(--z-toast, 100300); } [data-testid="workspace-agent-message-center"], [data-testid="workspace-agent-message-center"] * { -webkit-app-region: no-drag; } [data-testid="workspace-agent-message-center"] { --agent-gui-package-accent: var(--accent-codex); --agent-gui-package-accent-strong: var(--accent-codex); --agent-gui-package-success: var(--state-success); --agent-gui-package-warning: var(--state-warning); --agent-gui-package-danger: var(--state-danger); --agent-gui-accent: var(--agent-gui-package-accent); --agent-gui-accent-strong: var(--agent-gui-package-accent-strong); --agent-gui-mention-app-color: var(--tutti-purple); --agent-gui-success: var(--agent-gui-package-success); --agent-gui-warning: var(--agent-gui-package-warning); --agent-gui-danger: var(--agent-gui-package-danger); box-sizing: border-box; display: flex; flex-direction: column; min-height: 0; width: min(440px, calc(100vw - 16px)); max-width: none; overflow: hidden; border-top: 0; border-right: 0; border-bottom: 0; border-radius: 0; background: var(--background-panel); color: var(--text-primary); } [data-testid="workspace-agent-message-center"][data-presentation="embedded"] { width: 100%; } [data-testid="workspace-agent-message-center"] .workspace-agent-message-center__copy-text, [data-testid="workspace-agent-message-center"] .workspace-agent-message-center__copy-text * { -webkit-user-select: text; user-select: text; } [data-testid="workspace-agent-message-center"] .workspace-agent-message-center__copy-text a, [data-testid="workspace-agent-message-center"] .workspace-agent-message-center__copy-text button { cursor: pointer; } .workspace-agent-message-center__card { box-sizing: border-box; display: flex; flex-direction: column; min-width: 0; gap: 10px; border: 1px solid var(--line-2); border-radius: 8px; background: var(--background-fronted); padding: 14px; color: var(--text-primary); outline: 0 solid transparent; outline-offset: 2px; transition: background-color 140ms ease, border-color 140ms ease, outline-color 140ms ease; } .workspace-agent-message-center__card[data-waiting="true"] { border-color: var(--tutti-purple-border); background: var(--tutti-purple-bg); } .workspace-agent-message-center__card[data-highlighted="true"] { outline-width: 2px; outline-color: var(--accent); } .workspace-agent-message-center__status { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 6px; color: var(--text-secondary); font-size: 11px; font-weight: 600; line-height: 16px; } .workspace-agent-message-center__footer { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 8px; } .workspace-agent-message-center__provider { display: inline-flex; min-width: 0; max-width: 100%; align-items: center; gap: 6px; } .workspace-agent-message-center__provider-icon { width: 20px; height: 20px; flex: 0 0 20px; box-sizing: border-box; overflow: hidden; border: 1px solid var(--line-1, var(--nexight-line-1)); border-radius: 50%; object-fit: cover; } .workspace-agent-message-center__provider-name { min-width: 0; overflow: hidden; color: var(--text-secondary); text-overflow: ellipsis; white-space: nowrap; } .workspace-agent-message-center__open-chat-button { display: inline-flex; visibility: hidden; align-items: center; gap: 6px; width: auto; height: auto; min-height: 0; border: 0; background: transparent; background-color: transparent; padding: 0; color: var(--accent-codex); box-shadow: none; opacity: 0; transition: color 140ms ease, opacity 140ms ease, visibility 140ms ease; } .workspace-agent-message-center__open-chat-button svg { width: 15px; height: 15px; flex: 0 0 auto; color: currentColor; } .workspace-agent-message-center__card:hover .workspace-agent-message-center__open-chat-button, .workspace-agent-message-center__card:focus-within .workspace-agent-message-center__open-chat-button { visibility: visible; opacity: 1; } .workspace-agent-message-center__open-chat-button:hover, .workspace-agent-message-center__open-chat-button:focus-visible, .workspace-agent-message-center__open-chat-button:active { background: transparent; background-color: transparent; color: var(--accent-codex); } .workspace-agent-message-center__project-info-button { display: inline-flex; visibility: hidden; width: 20px; min-width: 20px; height: 20px; min-height: 20px; flex: 0 0 20px; align-items: center; justify-content: center; border: 0; border-radius: 4px; background: transparent; color: var(--text-secondary); opacity: 0; transition: background-color 140ms ease, color 140ms ease, opacity 140ms ease, visibility 140ms ease; } .workspace-agent-message-center__card:hover .workspace-agent-message-center__project-info-button, .workspace-agent-message-center__card:focus-within .workspace-agent-message-center__project-info-button { visibility: visible; opacity: 1; } .workspace-agent-message-center__project-info-button:hover, .workspace-agent-message-center__project-info-button:focus-visible { background: var(--transparency-hover); color: var(--text-primary); outline: none; } .workspace-agent-message-center__summary--overflowing { -webkit-mask-image: linear-gradient( to bottom, #000 0, #000 calc(100% - 32px), transparent 100% ); mask-image: linear-gradient( to bottom, #000 0, #000 calc(100% - 32px), transparent 100% ); } .workspace-agent-message-center__stack-rest { display: grid; grid-template-rows: 1fr; } .workspace-agent-message-center__stack-rest--opening { animation: workspace-agent-message-center-stack-grow 340ms cubic-bezier(0.22, 1, 0.36, 1) both; } .workspace-agent-message-center__stack-rest--closing { pointer-events: none; animation: workspace-agent-message-center-stack-shrink 260ms cubic-bezier(0.45, 0.05, 0.55, 0.95) both; } @keyframes workspace-agent-message-center-stack-grow { from { grid-template-rows: 0fr; opacity: 0; } to { grid-template-rows: 1fr; opacity: 1; } } @keyframes workspace-agent-message-center-stack-shrink { from { grid-template-rows: 1fr; opacity: 1; } to { grid-template-rows: 0fr; opacity: 0; } } @media (prefers-reduced-motion: reduce) { .workspace-agent-message-center__stack-rest--opening { animation: none; } .workspace-agent-message-center__stack-rest--closing { grid-template-rows: 0fr; opacity: 0; animation: none; } } @media (prefers-reduced-motion: reduce) { .t-modal { transition: none !important; } .t-modal-backdrop { transition: none !important; } .t-dropdown { transition: none !important; } .t-modal-backdrop::before { animation: none !important; transition: none !important; } .agent-gui-chrome__card--warning, .agent-gui-chrome__card--danger, .agent-gui-chrome__card--success, .agent-gui-chrome__card--muted, .agent-gui-chrome__card--connecting { animation: none !important; transition: none !important; } } .workspace-agents-status-panel__titlebar { display: flex; flex: 0 0 48px; gap: 8px; align-items: center; justify-content: space-between; box-sizing: border-box; min-height: 48px; padding: 0 8px 0 16px; } .workspace-agents-status-panel__titlebar--detail { padding-left: 8px; } aside.workspace-agents-status-panel .workspace-agents-status-panel__titlebar button.workspace-agents-status-panel__header-icon-btn { color: var(--text-secondary) !important; } aside.workspace-agents-status-panel .workspace-agents-status-panel__titlebar button.workspace-agents-status-panel__header-icon-btn:hover, aside.workspace-agents-status-panel .workspace-agents-status-panel__titlebar button.workspace-agents-status-panel__header-icon-btn:active { color: var(--secondary-foreground) !important; } .workspace-agents-status-panel__title { flex: 1 1 auto; min-width: 0; margin: 0; color: var(--text-primary); font-family: var(--tsh-font-display); font-size: 15px; font-weight: 600; font-synthesis: none; line-height: 1.3; } .workspace-agents-status-panel__detail-titlebar-main { display: flex; flex: 1 1 auto; gap: 6px; align-items: center; min-width: 0; } .workspace-agents-status-panel__detail-heading { display: flex; flex: 1 1 auto; gap: 8px; align-items: center; min-width: 0; } .workspace-agents-status-panel__detail-heading .workspace-agents-status-panel__status { padding-right: 6px; padding-left: 6px; } .workspace-agents-status-panel__detail-title { flex: 0 1 auto; min-width: 0; margin: 0; overflow: hidden; color: var(--text-primary); font-family: var(--tsh-font-display); font-size: 15px; font-weight: 600; font-synthesis: none; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; } .workspace-agents-status-panel__detail-title [data-workspace-agent-markdown-shell="true"], .workspace-agents-status-panel__detail-title [data-workspace-agent-markdown="true"] { display: inline; width: auto; min-width: 0; max-width: 100%; overflow: visible; font: inherit; line-height: inherit; vertical-align: baseline; } .workspace-agents-status-panel__detail-title .tsh-agent-object-token { max-width: 100%; font-size: inherit; font-weight: inherit; line-height: inherit; } .workspace-agents-status-panel__avatar { display: inline-grid; box-sizing: border-box; flex: 0 0 24px; place-items: center; width: 24px; height: 24px; overflow: hidden; border: 1px solid var(--line-1, var(--nexight-line-1)); border-radius: 50%; color: var(--text-secondary); font-size: 10px; font-weight: 600; line-height: 1; background: var(--transparency-block); } .workspace-agents-status-panel__avatar-img { display: block; box-sizing: border-box; width: 100%; height: 100%; max-width: none; border-radius: inherit; object-fit: cover; } .workspace-agents-status-panel__avatar-img--user-placeholder { background-color: var(--muted); } .workspace-agents-status-panel__content-shell { position: relative; display: flex; flex: 1 1 auto; flex-direction: column; gap: 16px; box-sizing: border-box; min-width: 0; min-height: 0; padding: 4px 16px 16px; } .workspace-agents-status-panel__content-shell--detail { gap: 0; padding: 0; } .workspace-agents-status-panel__viewport { position: relative; display: flex; flex: 1 1 auto; min-width: 0; min-height: 0; } .workspace-agents-status-panel__content { width: 100%; display: flex; flex: 1 1 auto; flex-direction: column; gap: 16px; box-sizing: border-box; min-width: 0; min-height: 0; overflow-x: hidden; overflow-y: auto; scrollbar-width: none; } .workspace-agents-status-panel__content--detail { gap: 0; padding-inline: 28px; } .workspace-agents-status-panel__content--detail-overlay { position: relative; flex: 1 1 auto; min-height: 0; } .workspace-agents-status-panel__detail-overlay-shell { position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; background: transparent; } .workspace-agents-status-panel__detail-action-bar { display: flex; flex: 0 0 auto; justify-content: flex-end; box-sizing: border-box; width: 100%; min-width: 0; padding: 12px 24px 16px; border-top: 1px solid color-mix(in srgb, var(--line-2) 52%, transparent); background: var(--background-panel); } .workspace-agents-status-panel__detail-action-button { max-width: 100%; } .workspace-agents-status-panel__conversation-timeline { --agent-conversation-text: var(--text-primary); --agent-conversation-user-text: var(--text-primary); --agent-conversation-user-bg: var(--transparency-block); --agent-conversation-user-max-width: calc(100% - 32px); box-sizing: border-box; width: 100%; scrollbar-width: none; } .workspace-agents-status-panel__conversation-timeline::-webkit-scrollbar { display: none; width: 0; height: 0; } .workspace-agents-status-panel__content--list-hidden { visibility: hidden; pointer-events: none; } .workspace-agents-status-panel__list { display: flex; flex: 1 1 auto; flex-direction: column; gap: 8px; min-height: 0; } .workspace-agents-status-panel__content::-webkit-scrollbar { display: none; width: 0; height: 0; } .tsh-custom-scrollbar { position: absolute; right: 8px; width: 4px; cursor: pointer; opacity: 0; pointer-events: auto; transition: opacity 160ms ease-in-out; } .workspace-agents-status-panel__scrollbar { top: 52px; bottom: 16px; } .tsh-custom-scroll-area:hover .tsh-custom-scrollbar[data-scrollable="true"], .tsh-custom-scroll-area:focus-within .tsh-custom-scrollbar[data-scrollable="true"] { opacity: 1; } .workspace-agents-status-panel:hover .workspace-agents-status-panel__scrollbar[data-scrollable="true"] { opacity: 1; } .tsh-custom-scrollbar__thumb { width: 4px; min-height: 24px; border-radius: 999px; background: var(--transparency-block); cursor: grab; transition: background-color 160ms ease-in-out; } .workspace-agents-status-panel__scrollbar-thumb { width: 4px; min-height: 24px; border-radius: 999px; background: var(--transparency-block); cursor: grab; transition: background-color 160ms ease-in-out; } .tsh-custom-scrollbar:hover .tsh-custom-scrollbar__thumb, .workspace-agents-status-panel__scrollbar:hover .workspace-agents-status-panel__scrollbar-thumb { background: var(--transparency-hover); } .tsh-custom-scrollbar[data-dragging="true"], .workspace-agents-status-panel__scrollbar[data-dragging="true"] { opacity: 1; } .tsh-custom-scrollbar[data-dragging="true"] .tsh-custom-scrollbar__thumb, .workspace-agents-status-panel__scrollbar[data-dragging="true"] .workspace-agents-status-panel__scrollbar-thumb { background: var(--transparency-hover); cursor: grabbing; will-change: transform; } .agent-tool-scroll-area__scrollbar { position: absolute; top: 8px; right: 8px; bottom: 8px; width: 4px; cursor: pointer; opacity: 0; pointer-events: auto; transition: opacity 160ms ease-in-out; } .agent-tool-scroll-area:hover .agent-tool-scroll-area__scrollbar[data-scrollable="true"] { opacity: 1; } .agent-tool-scroll-area__scrollbar:hover .workspace-agents-status-panel__scrollbar-thumb { background: var(--transparency-hover); } .agent-tool-scroll-area__scrollbar[data-dragging="true"] { opacity: 1; } .agent-tool-scroll-area__scrollbar[data-dragging="true"] .workspace-agents-status-panel__scrollbar-thumb { background: var(--transparency-hover); cursor: grabbing; } .agent-tool-diff__viewport, .agent-tool-diff__line { background: var(--background-fronted, var(--background-panel)); } .workspace-agents-status-panel__resize-handle { position: absolute; top: 48px; right: 0; bottom: 16px; z-index: 1; width: 6px; touch-action: none; cursor: col-resize; background: transparent; } .workspace-agents-status-panel__resize-handle::after { position: absolute; top: 0; right: 0; bottom: 0; width: 2px; pointer-events: none; content: ""; border-radius: 0 1px 1px 0; opacity: 0; background: color-mix(in srgb, var(--accent) 55%, transparent); transition: opacity 140ms ease; } .workspace-agents-status-panel__resize-handle:hover::after, .workspace-agents-status-panel__resize-handle:focus-visible::after { opacity: 1; } .workspace-agents-status-panel__resize-handle:focus-visible { outline: 1px solid var(--tutti-d-border-signal-focus); outline-offset: -1px; } .workspace-agents-status-panel__skeleton-list { display: flex; flex: 1 1 auto; flex-direction: column; gap: 12px; min-height: 0; overflow: hidden; } .workspace-agents-status-panel__skeleton-card { display: flex; flex: 0 0 auto; flex-direction: column; gap: 10px; box-sizing: border-box; width: 100%; min-width: 0; padding: 12px; border: 1px solid var(--line-2, var(--nexight-line-2)); border-radius: 8px; background: var(--background-fronted); } .workspace-agents-status-panel__skeleton-head { display: flex; gap: 8px; align-items: center; min-width: 0; } .workspace-agents-status-panel__skeleton-avatar, .workspace-agents-status-panel__skeleton-line { position: relative; overflow: hidden; background: color-mix(in srgb, var(--text-tertiary) 8%, transparent); } .workspace-agents-status-panel__skeleton-avatar::after, .workspace-agents-status-panel__skeleton-line::after { position: absolute; inset: 0; content: ""; background: linear-gradient( 90deg, transparent 0%, color-mix(in srgb, var(--text-tertiary) 8%, transparent) 45%, transparent 90% ); animation: workspace-agents-status-panel-skeleton 1.2s ease-in-out infinite; } .workspace-agents-status-panel__skeleton-avatar { flex: 0 0 24px; width: 24px; height: 24px; border-radius: 50%; } .workspace-agents-status-panel__skeleton-line { display: block; height: 12px; border-radius: 4px; } .workspace-agents-status-panel__skeleton-line--name { width: 118px; } .workspace-agents-status-panel__skeleton-line--tag { width: 46px; margin-left: auto; } .workspace-agents-status-panel__skeleton-line--title { width: 82%; height: 18px; } .workspace-agents-status-panel__skeleton-line--summary { width: 100%; height: 38px; border-radius: 4px; } .workspace-agents-status-panel__activity { display: flex; flex: 0 0 auto; flex-direction: column; gap: 8px; box-sizing: border-box; width: 100%; min-width: 0; padding: 12px; border: 1px solid var(--line-2, var(--nexight-line-2)); border-radius: 8px; background: var(--background-fronted); cursor: pointer; outline: none; transition: background-color 200ms ease-in-out, border-color 200ms ease-in-out, box-shadow 200ms ease-in-out; } .workspace-agents-status-panel__activity:focus-visible { box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 26%, transparent); } .workspace-agents-status-panel__activity:hover { border-color: var(--line-2, var(--nexight-line-2)); background: var(--transparency-block); } .workspace-agents-status-panel__activity--working, .workspace-agents-status-panel__activity--waiting, .workspace-agents-status-panel__activity--idle, .workspace-agents-status-panel__activity--done, .workspace-agents-status-panel__activity--failed { border-color: var(--line-2, var(--nexight-line-2)); } .workspace-agents-status-panel__activity--targeted { box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent); } .workspace-agents-status-panel__activity-head { display: flex; gap: 8px; align-items: center; min-width: 0; } .workspace-agents-status-panel__activity-avatar-stack { display: inline-flex; flex: 0 0 44px; align-items: center; width: 44px; height: 24px; } .workspace-agents-status-panel__activity-agent-avatar { margin-left: -4px; } .workspace-agents-status-panel__activity-user-avatar { z-index: 1; background: var(--background-1); } .workspace-agents-status-panel__activity-identity { display: flex; flex: 1 1 auto; gap: 8px; align-items: center; min-width: 0; } .workspace-agents-status-panel__activity-identity-names { display: flex; flex: 1 1 auto; align-items: center; min-width: 0; overflow: hidden; color: var(--text-secondary); font-size: 13px; font-weight: 600; line-height: 1.35; } .workspace-agents-status-panel__activity-user-name { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .workspace-agents-status-panel__activity-name-sep { flex-shrink: 0; margin: 0 4px; } .workspace-agents-status-panel__activity-agent-name { flex-shrink: 0; white-space: nowrap; } .workspace-agents-status-panel__status { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; box-sizing: border-box; height: 20px; min-width: 0; padding: 0 8px; border: 0; border-radius: 4px; color: var(--tsh-ui-pill-neutral-fg); font-size: 11px; font-weight: 600; line-height: 1; white-space: nowrap; background: var(--tsh-ui-pill-neutral-bg); } .workspace-agents-status-panel__status--working, .workspace-agents-status-panel__status[data-status="working"] { color: var(--tsh-ui-pill-success-fg); background: var(--tsh-ui-pill-success-bg); } .workspace-agents-status-panel__status--failed, .workspace-agents-status-panel__status[data-status="failed"] { color: var(--state-danger); background: color-mix(in srgb, var(--state-danger) 12%, transparent); } .workspace-agents-status-panel__activity-title { display: -webkit-box; min-width: 0; margin: 4px 0; overflow: hidden; color: var(--text-primary); font-size: 13px; font-weight: 600; line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .workspace-agents-status-panel__activity-summary { min-width: 0; margin: 0; padding: 12px; border-radius: 6px; color: var(--text-secondary); font-size: 13px; line-height: 1.5; background: var(--transparency-block); overflow-wrap: anywhere; } .workspace-agents-status-panel__activity-summary-messages { display: flex; flex-direction: column; gap: 10px; min-width: 0; } .workspace-agents-status-panel__activity-summary-messages .workspace-agents-status-panel__activity-summary-text + .workspace-agents-status-panel__activity-summary-text { padding-top: 10px; border-top: 1px solid color-mix(in srgb, var(--line-2, var(--nexight-line-2)) 72%, transparent); } .workspace-agents-status-panel__activity-summary-loading { display: flex; flex-direction: column; gap: 8px; width: 100%; min-height: 52px; } .workspace-agents-status-panel__activity-summary-text { margin: 0; min-width: 0; color: var(--text-secondary); font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; } .workspace-agents-status-panel__activity-summary .workspace-agents-status-panel__activity-summary-text[data-workspace-agent-markdown="true"] { display: block; } .workspace-agents-status-panel__activity-summary-text--image { display: inline-flex; align-items: center; gap: 6px; } .workspace-agents-status-panel__activity-summary .workspace-agents-status-panel__activity-summary-text p { margin: 0; } .workspace-agents-status-panel__activity-summary strong { color: var(--text-primary); font-weight: 600; } .workspace-agents-status-panel__activity-summary .workspace-agents-status-panel__detail-markdown-shell { min-width: 0; } .workspace-agents-status-panel__activity-summary .workspace-agents-status-panel__detail-markdown code { display: inline-block; max-width: 100%; min-width: 0; overflow: hidden; padding: 0; border-radius: 0; color: var(--text-secondary); font-family: inherit; font-size: inherit; line-height: inherit; text-overflow: ellipsis; vertical-align: bottom; white-space: nowrap; background: transparent; } .workspace-agents-status-panel__activity-summary .workspace-agents-status-panel__detail-markdown pre, .workspace-agents-status-panel__activity-summary .workspace-agents-status-panel__detail-markdown pre code { box-sizing: border-box !important; display: block !important; max-width: 100% !important; min-width: 0 !important; overflow: hidden !important; overflow-wrap: normal !important; text-overflow: ellipsis !important; white-space: nowrap !important; word-break: normal !important; } .workspace-agents-status-panel__activity-summary .workspace-agents-status-panel__detail-markdown a, .workspace-agents-status-panel__activity-summary .workspace-agents-status-panel__detail-markdown code a { color: var(--tutti-purple); font-weight: 600; } .workspace-agents-status-panel__activity-files { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; } .workspace-agents-status-panel__activity-file { display: flex; flex: 1 1 100%; gap: 4px; align-items: center; box-sizing: border-box; width: 100%; height: 32px; min-width: 0; padding: 0 8px; border: 0; border-radius: 6px; color: var(--accent); font-size: 13px; font-weight: 600; line-height: 1.3; background: color-mix(in srgb, var(--accent) 12%, transparent); font-family: inherit; text-align: left; transition: background-color 160ms ease-in-out; } .workspace-agents-status-panel__activity-file--clickable { cursor: pointer; } .workspace-agents-status-panel__activity-file--clickable:hover, .workspace-agents-status-panel__activity-file--clickable:focus-visible { background: color-mix(in srgb, var(--accent) 18%, transparent); } .workspace-agents-status-panel__activity-file svg { flex: 0 0 auto; width: 14px; height: 14px; } .workspace-agents-status-panel__activity-file span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .workspace-agents-status-panel__empty { display: flex; flex: 1 1 auto; align-items: center; justify-content: center; min-height: 0; padding: 34px 18px; color: var(--text-tertiary); font-size: 13px; line-height: 1.4; text-align: center; } .workspace-agents-status-panel__detail-empty { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; box-sizing: border-box; width: 100%; min-width: 0; padding: 34px 18px; color: var(--text-tertiary); font-size: 13px; line-height: 1.4; text-align: center; overflow-wrap: anywhere; } .workspace-agents-status-panel__notice { position: absolute; top: 4px; right: 16px; left: 16px; z-index: 2; box-sizing: border-box; pointer-events: none; border: 1px solid color-mix(in srgb, var(--label-orange) 34%, transparent); border-radius: 8px; background: color-mix( in srgb, var(--background-fronted) 86%, var(--label-orange) 14% ); padding: 8px 10px; color: var(--label-orange); font-size: 13px; line-height: 1.35; } .workspace-agents-status-panel__detail { --agent-conversation-text: var(--text-primary); --agent-conversation-user-text: var(--text-primary); --agent-conversation-user-bg: var(--transparency-block); display: flex; flex: 1 1 auto; flex-direction: column; gap: 16px; box-sizing: border-box; width: 100%; min-width: 0; min-height: 0; padding-bottom: 0; } .workspace-agents-status-panel__detail::after { display: block; flex: 0 0 auto; flex-shrink: 0; width: 100%; height: 32px; min-height: 32px; pointer-events: none; content: ""; } .workspace-agents-status-panel__detail-tool-section, .workspace-agents-status-panel__detail-thinking-section, .workspace-agents-status-panel__detail-turn-summary { display: flex; flex-direction: column; gap: 4px; align-items: flex-start; width: 100%; min-width: 0; max-width: min(860px, 100%); padding: 4px 0 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; } .agent-gui-node__timeline .workspace-agents-status-panel__detail-turn-summary { max-width: 100%; } .workspace-agents-status-panel__detail-turn-summary { --agent-turn-summary-border: color-mix( in srgb, var(--line-1) 58%, transparent ); --agent-turn-summary-row-border: color-mix( in srgb, var(--line-1) 46%, transparent ); --agent-turn-summary-surface: color-mix( in srgb, var(--background-fronted) 96%, var(--background-panel) 4% ); --agent-turn-summary-hover: color-mix( in srgb, var(--transparency-block) 58%, transparent ); --agent-turn-summary-path: color-mix( in srgb, var(--text-secondary) 78%, transparent ); --agent-turn-summary-toggle: color-mix( in srgb, var(--text-secondary) 88%, transparent ); } .agent-turn-summary-card { border: 1px solid var(--agent-turn-summary-border); background: var(--agent-turn-summary-surface); box-shadow: inset 0 1px 0 color-mix(in srgb, var(--background-fronted) 82%, transparent); } .agent-turn-summary-card__list, .agent-turn-summary-card__overflow-list, .agent-turn-summary-card__preview { border-top: 1px solid var(--agent-turn-summary-row-border); } .agent-turn-summary-card__file { border-top: 1px solid var(--agent-turn-summary-row-border); } .agent-turn-summary-card__file:first-child { border-top: 0; } .agent-turn-summary-card__file-row:hover { background: var(--agent-turn-summary-hover); } .agent-turn-summary-card__path { color: var(--agent-turn-summary-path); } .agent-turn-summary-card__path-directory, .agent-turn-summary-card__path-file { min-width: 0; overflow: hidden; text-overflow: ellipsis; } .agent-turn-summary-card__path-directory { flex: 0 1 auto; } .agent-turn-summary-card__path-file { flex: 0 0 auto; max-width: 100%; } .agent-path-tail-label { display: flex; min-width: 0; max-width: 100%; overflow: hidden; white-space: nowrap; } .agent-path-tail-label__directory, .agent-path-tail-label__file { min-width: 0; overflow: hidden; text-overflow: ellipsis; } .agent-path-tail-label__directory { flex: 0 1 auto; } .agent-path-tail-label__file { flex: 0 0 auto; max-width: 100%; } .workspace-agents-status-panel__detail-turn-summary .workspace-agents-status-panel__detail-tool-diff-added { color: var(--state-success); } .workspace-agents-status-panel__detail-turn-summary .workspace-agents-status-panel__detail-tool-diff-removed { color: var(--state-danger); } .agent-turn-summary-card__toggle-more { color: var(--agent-turn-summary-toggle); } .agent-turn-summary-card__toggle-more:hover { background: var(--agent-turn-summary-hover); color: var(--text-secondary); } .workspace-agents-status-panel__detail-tool-section { position: relative; gap: 16px; } .workspace-agents-status-panel__detail-tool-section[data-tool-group-expanded="true"] .workspace-agents-status-panel__detail-tool-count-icon, .workspace-agents-status-panel__detail-tool-section[data-tool-group-expanded="true"] .workspace-agents-status-panel__detail-tool-row-icon, .workspace-agents-status-panel__detail-tool-section[data-tool-group-expanded="true"] .workspace-agents-status-panel__detail-tool-list-item .tsh-inline-scanlight-icon { border-radius: 999px; } .workspace-agents-status-panel__detail-tool-count { position: relative; display: inline-flex; gap: 6px; align-items: center; width: fit-content; max-width: 100%; min-width: 0; padding: 0; border: 0; color: var(--text-secondary); font-family: var(--tsh-font-ui); font-size: 13px; font-weight: 400; line-height: 1.3; text-align: left; background: transparent; cursor: pointer; transition: color 150ms ease, opacity 150ms ease; appearance: none; } .workspace-agents-status-panel__detail-tool-section[data-tool-group-expanded="true"] .workspace-agents-status-panel__detail-tool-count::after { position: absolute; top: 24px; left: 7.5px; width: 1px; height: 4px; background: var(--line-1); content: ""; pointer-events: none; } .workspace-agents-status-panel__detail-tool-count:hover { color: var(--text-primary); } .workspace-agents-status-panel__detail-tool-count span { min-width: 0; } .workspace-agents-status-panel__detail-tool-count-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .workspace-agents-status-panel__detail-tool-count-primary { font-weight: 600; } .workspace-agents-status-panel__detail-tool-count svg { flex: 0 0 auto; } .workspace-agents-status-panel__detail-tool-count-icon { position: relative; z-index: 1; opacity: 0.72; transition: opacity 150ms ease; } .workspace-agents-status-panel__detail-tool-count:hover .workspace-agents-status-panel__detail-tool-count-icon, .workspace-agents-status-panel__detail-tool-count:focus-visible .workspace-agents-status-panel__detail-tool-count-icon { opacity: 1; } .workspace-agents-status-panel__detail-tool-count-chevron { color: var(--text-tertiary); opacity: 0; transition: opacity 150ms ease; } .workspace-agents-status-panel__detail-tool-count:hover .workspace-agents-status-panel__detail-tool-count-chevron, .workspace-agents-status-panel__detail-tool-count:focus-visible .workspace-agents-status-panel__detail-tool-count-chevron { opacity: 1; } .workspace-agents-status-panel__detail-tool-count--summary { justify-content: space-between; width: 100%; gap: 12px; } .workspace-agents-status-panel__detail-tool-list { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 16px; box-sizing: border-box; width: 100%; min-width: 0; padding: 0; border-radius: 0; background: transparent; } .workspace-agents-status-panel__detail-tool-list-item { position: relative; min-width: 0; } .workspace-agents-status-panel__detail-tool-list-item:not(:last-child)::after { position: absolute; top: 24px; left: 7.5px; width: 1px; height: max(4px, calc(100% - 16px)); background: var(--line-1); content: ""; pointer-events: none; } .workspace-agents-status-panel__detail-tool-section[data-tool-group-expanded="true"] .workspace-agents-status-panel__detail-tool-list-item .agent-collapsible-reveal { box-sizing: border-box; padding-left: 24px; } .workspace-agents-status-panel__detail-tool-row { display: flex; flex-direction: column; gap: 7px; width: 100%; min-width: 0; color: var(--text-secondary); font-size: 13px; line-height: 1.3; } .workspace-agents-status-panel__detail-tool-row-head { display: inline-flex; gap: 0; align-items: center; width: fit-content; max-width: 100%; min-width: 0; padding: 2px 0; color: var(--text-secondary); font-family: var(--tsh-font-ui); font-size: 13px; font-weight: 400; line-height: 1.3; } .workspace-agents-status-panel__detail-tool-row-head--button { padding: 0; border: 0; color: inherit; font: inherit; text-align: left; background: transparent; cursor: pointer; transition: color 150ms ease, opacity 150ms ease; appearance: none; } .workspace-agents-status-panel__detail-tool-row-head--button:hover { color: var(--text-primary); } .workspace-agents-status-panel__detail-tool-row-head svg { flex: 0 0 auto; opacity: 0.78; transition: opacity 150ms ease; } .workspace-agents-status-panel__detail-tool-row-head--button:hover .workspace-agents-status-panel__detail-tool-row-icon svg, .workspace-agents-status-panel__detail-tool-row-head--button:focus-visible .workspace-agents-status-panel__detail-tool-row-icon svg { opacity: 1; } .workspace-agents-status-panel__detail-tool-row-header-content { display: inline-flex; gap: 6px; align-items: center; width: fit-content; max-width: 100%; min-width: 0; } .workspace-agents-status-panel__detail-tool-row-header-content[data-active="true"] { color: var(--text-primary); } .workspace-agents-status-panel__detail-tool-row-icon { position: relative; z-index: 1; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: 16px; height: 16px; } .workspace-agents-status-panel__detail-tool-row-text { display: inline-flex; flex: 1 1 auto; gap: 8px; align-items: center; min-width: 0; } .workspace-agents-status-panel__detail-tool-row-title { flex: 0 1 auto; min-width: 0; overflow: hidden; font-family: var(--tsh-font-ui); font-size: 13px; font-weight: 600; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; } .workspace-agents-status-panel__detail-tool-status { flex: 0 0 auto; color: currentColor; font-size: 13px; font-weight: 400; line-height: 1.3; } .workspace-agents-status-panel__detail-tool-diff-stats { display: inline-flex; flex: 0 0 auto; gap: 4px; align-items: center; color: var(--text-tertiary); font-size: 13px; line-height: 1.3; } .workspace-agents-status-panel__detail-tool-diff-added { color: var(--state-success); } .workspace-agents-status-panel__detail-tool-diff-removed { color: var(--state-danger); } .tsh-inline-scanlight-line .workspace-agents-status-panel__detail-tool-diff-added, .tsh-inline-scanlight-line .workspace-agents-status-panel__detail-tool-diff-removed { background: none; -webkit-text-fill-color: currentColor; } .workspace-agents-status-panel__detail-tool-row-summary { flex: 1 1 auto; min-width: 0; overflow: hidden; color: var(--text-tertiary); font-size: 13px; font-weight: 400; line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; } /* Compact tool-call rows when nested inside a details block (e.g. task STEPS) */ .workspace-agents-status-panel__detail-tool-body .workspace-agents-status-panel__detail-tool-row-title, .workspace-agents-status-panel__detail-tool-body .workspace-agents-status-panel__detail-tool-status, .workspace-agents-status-panel__detail-tool-body .workspace-agents-status-panel__detail-tool-diff-stats, .workspace-agents-status-panel__detail-tool-body .workspace-agents-status-panel__detail-tool-row-summary { font-size: 11px; } .workspace-agents-status-panel__detail-tool-body .workspace-agents-status-panel__detail-tool-row-icon { width: 14px; height: 14px; } .workspace-agents-status-panel__detail-tool-body .workspace-agents-status-panel__detail-tool-row-icon svg { width: 14px; height: 14px; } /* Looser vertical rhythm for the nested step rows so they don't feel cramped */ .workspace-agents-status-panel__detail-tool-body .workspace-agents-status-panel__detail-tool-stack { gap: 12px; } .workspace-agents-status-panel__detail-tool-row-head .workspace-agents-status-panel__detail-tool-row-chevron { flex: 0 0 auto; color: var(--text-tertiary); opacity: 0; transition: opacity 150ms ease; } .workspace-agents-status-panel__detail-tool-row-head--button:hover .workspace-agents-status-panel__detail-tool-row-chevron, .workspace-agents-status-panel__detail-tool-row-head--button:focus-visible .workspace-agents-status-panel__detail-tool-row-chevron { opacity: 1; } .workspace-agents-status-panel__detail-tool-summary { width: 100%; min-width: 0; margin: 6px 0 0; padding: 0 0 0 20px; color: currentColor; font-family: var(--tsh-font-ui); font-size: 11px; font-weight: 400; line-height: 1.45; opacity: 0.9; white-space: pre-wrap; overflow-wrap: anywhere; } .agent-collapsible-reveal { contain: layout paint; width: 100%; min-width: 0; opacity: 0; overflow: clip; transform: translateY(-2px); transition: height 220ms ease, opacity 160ms ease, transform 180ms ease; } .agent-collapsible-reveal[data-expanded="true"] { opacity: 1; transform: translateY(0); } .agent-collapsible-reveal__inner { min-width: 0; min-height: 0; overflow: hidden; } .workspace-agents-status-panel__detail-tool-body { display: flex; flex-direction: column; gap: 16px; box-sizing: border-box; width: 100%; min-width: 0; margin-top: 8px; padding: 10px 12px; border-radius: 6px; background: var(--transparency-block); font-size: 11px; line-height: 1.45; } .workspace-agents-status-panel__detail-tool-body--flat { gap: 8px; margin-top: 4px; padding: 0; border: 1px solid var(--hairline-strong); border-radius: 6px; overflow: hidden; background: transparent; } .workspace-agents-status-panel__detail-tool-body--plain { gap: 8px; margin-top: 4px; padding: 0; border: 0; border-radius: 0; background: transparent; } .workspace-agents-status-panel__detail-tool-code--flat, .workspace-agents-status-panel__detail-tool-diff--flat, .workspace-agents-status-panel__detail-tool-monaco--flat { box-shadow: none; border: 0; border-radius: 0; background: transparent; } .workspace-agents-status-panel__detail-tool-section-block, .workspace-agents-status-panel__detail-tool-stack { display: flex; flex-direction: column; gap: 7px; width: 100%; min-width: 0; } .workspace-agents-status-panel__detail-tool-stack-item { display: flex; flex-direction: column; gap: 5px; min-width: 0; } .workspace-agents-status-panel__detail-tool-section-title { color: var(--text-secondary); font-size: 11px; font-weight: 400; line-height: 1.35; text-transform: uppercase; } .workspace-agents-status-panel__detail-tool-answer, .workspace-agents-status-panel__detail-tool-question { min-width: 0; color: var(--text-secondary); font-size: 11px; line-height: 1.45; overflow-wrap: anywhere; } .workspace-agents-status-panel__detail-tool-answer--muted { color: var(--text-tertiary); } .workspace-agents-status-panel__detail-subagents { display: flex; flex-direction: column; gap: 8px; width: 100%; min-width: 0; } .workspace-agents-status-panel__detail-subagent-card { min-width: 0; border: 1px solid color-mix(in srgb, var(--text-tertiary) 24%, transparent); border-radius: 6px; background: color-mix(in srgb, var(--text-tertiary) 5%, transparent); overflow: hidden; } .workspace-agents-status-panel__detail-subagent-header { display: grid; grid-template-columns: 12px 8px minmax(0, 1fr) auto; align-items: center; gap: 7px; min-width: 0; padding: 8px 9px; cursor: pointer; list-style: none; font-size: 11px; line-height: 1.45; } .workspace-agents-status-panel__detail-subagent-header::-webkit-details-marker { display: none; } .workspace-agents-status-panel__detail-subagent-chevron { width: 6px; height: 6px; border-right: 1.5px solid var(--text-tertiary); border-bottom: 1.5px solid var(--text-tertiary); transform: rotate(-45deg); transition: transform 120ms ease; } .workspace-agents-status-panel__detail-subagent-card[open] .workspace-agents-status-panel__detail-subagent-chevron { transform: rotate(45deg); } .workspace-agents-status-panel__detail-subagent-status { flex: none; align-self: center; width: 7px; height: 7px; border-radius: 50%; background: var(--text-tertiary); } .workspace-agents-status-panel__detail-subagent-status--running { background: var(--state-success, #22c55e); animation: workspace-agents-subagent-pulse 1.6s ease-in-out infinite; } .workspace-agents-status-panel__detail-subagent-status--completed { background: var(--state-success, #22c55e); } .workspace-agents-status-panel__detail-subagent-status--failed { background: var(--state-danger); } .workspace-agents-status-panel__detail-subagent-status--canceled { background: var(--text-tertiary); } .workspace-agents-status-panel__detail-subagent-title { min-width: 0; overflow: hidden; color: var(--text-primary); font-weight: 650; white-space: nowrap; text-overflow: ellipsis; } .workspace-agents-status-panel__detail-subagent-meta { flex: none; color: var(--text-tertiary); font-weight: 600; white-space: nowrap; } .workspace-agents-status-panel__detail-subagent-body { display: flex; flex-direction: column; gap: 7px; min-width: 0; padding: 0 9px 9px 27px; } .workspace-agents-status-panel__detail-subagent-activity { min-width: 0; color: var(--text-tertiary); font-size: 11px; line-height: 1.45; overflow-wrap: anywhere; } @keyframes workspace-agents-subagent-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } } .workspace-agents-status-panel__detail-tool-bullets { display: flex; flex-direction: column; gap: 5px; margin: 0; padding-left: 18px; color: var(--text-secondary); font-size: 11px; line-height: 1.45; } .workspace-agents-status-panel__detail-tool-markdown { width: 100%; min-width: 0; font-size: 11px; line-height: 1.45; } .workspace-agents-status-panel__detail-turn-summary-title { color: var(--text-secondary); font-size: 11px; font-weight: 400; line-height: 1.35; } .workspace-agents-status-panel__detail-processing { width: 100%; min-width: 0; padding: 0; border: 0; color: var(--text-primary); font-family: var(--tsh-font-ui); font-size: 13px; line-height: 1.3; background: transparent; box-shadow: none; } .group\/thinking-disclosure[data-active="true"] { color: var(--text-primary); } .tsh-inline-scanlight-line, .tsh-inline-scanlight-group .tsh-inline-scanlight-text, .tsh-inline-scanlight-text--standalone { background: linear-gradient( 90deg, currentColor 0%, currentColor 36%, color-mix(in srgb, currentColor 32%, white) 50%, currentColor 64%, currentColor 100% ); background-size: 260% 100%; background-position: 130% 0; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; animation: tsh-inline-scanlight-text-sweep 1.85s ease-in-out infinite; } .tsh-inline-scanlight-line { display: inline-flex; gap: inherit; align-items: center; min-width: 0; } .tsh-inline-loading-ellipsis { display: inline-flex; flex: 0 0 auto; gap: 0.13em; align-items: center; margin-left: 0; color: currentColor; background: none; -webkit-text-fill-color: currentColor; } .tsh-inline-loading-label { margin-right: 4px; } .tsh-inline-loading-ellipsis span { display: block; width: 0.18em; height: 0.18em; border-radius: 999px; background: currentColor; opacity: 0.28; transform: translateY(0.08em) scale(0.82); animation: tsh-inline-loading-dot 1.2s cubic-bezier(0.4, 0, 0.2, 1) infinite; } .tsh-inline-loading-ellipsis span:nth-child(2) { animation-delay: 150ms; } .tsh-inline-loading-ellipsis span:nth-child(3) { animation-delay: 300ms; } .tsh-inline-loading-ellipsis--entry-timing span { animation: tsh-inline-loading-dot 1.05s ease-in-out infinite; } .tsh-inline-loading-ellipsis--entry-timing span:nth-child(2) { animation-delay: 140ms; } .tsh-inline-loading-ellipsis--entry-timing span:nth-child(3) { animation-delay: 280ms; } .tsh-inline-scanlight-group .tsh-inline-scanlight-text--status { animation-delay: 260ms; } .tsh-inline-scanlight-group .workspace-agents-status-panel__detail-tool-row-title, .tsh-inline-scanlight-group .font-semibold.tsh-inline-scanlight-text { animation-delay: 90ms; } @media (prefers-reduced-motion: reduce) { .tsh-inline-scanlight-line, .tsh-inline-scanlight-group .tsh-inline-scanlight-text, .tsh-inline-scanlight-text--standalone { animation: none; background: none; -webkit-text-fill-color: currentColor; } .tsh-inline-loading-ellipsis span { opacity: 0.72; transform: none; animation: none; } } @keyframes workspace-agents-status-panel-skeleton { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } @keyframes workspace-agents-status-panel-working-shimmer { 0% { transform: translateX(0) skewX(-18deg); } 100% { transform: translateX(330%) skewX(-18deg); } } @keyframes tsh-inline-scanlight-text-sweep { 0% { background-position: 130% 0; } 42% { background-position: 48% 0; } 100% { background-position: -42% 0; } } @keyframes tsh-inline-loading-dot { 0%, 72%, 100% { opacity: 0.28; transform: translateY(0.08em) scale(0.82); } 28% { opacity: 0.95; transform: translateY(-0.04em) scale(1); } } .workspace-agents-status-panel__detail-scroll-region { scrollbar-width: thin !important; -ms-overflow-style: auto !important; scrollbar-color: transparent transparent; scrollbar-gutter: auto; } .workspace-agents-status-panel__detail-scroll-region:hover { scrollbar-color: var(--transparency-hover) transparent; } .workspace-agents-status-panel__detail-scroll-region::-webkit-scrollbar { display: block !important; width: 4px !important; height: 4px !important; } .workspace-agents-status-panel__detail-scroll-region::-webkit-scrollbar-track, .workspace-agents-status-panel__detail-scroll-region::-webkit-scrollbar-corner { background: transparent; } .workspace-agents-status-panel__detail-scroll-region::-webkit-scrollbar-thumb { border-radius: 999px; background: transparent; } .workspace-agents-status-panel__detail-scroll-region:hover::-webkit-scrollbar-thumb { background: var(--transparency-hover); } .agent-tool-scroll-area .workspace-agents-status-panel__detail-scroll-region { scrollbar-width: none !important; -ms-overflow-style: none !important; } .agent-tool-scroll-area .workspace-agents-status-panel__detail-scroll-region::-webkit-scrollbar { display: none !important; width: 0 !important; height: 0 !important; } .agent-gui-node__mention-palette-scroll-region { scrollbar-width: none !important; -ms-overflow-style: none !important; scrollbar-gutter: auto; } .agent-gui-node__mention-palette-scroll-region::-webkit-scrollbar { display: none !important; width: 0 !important; height: 0 !important; } .agent-gui-node__mention-palette-scrollbar { position: absolute; top: 4px; right: 4px; bottom: 4px; width: 4px; cursor: pointer; opacity: 0; pointer-events: auto; transition: opacity 160ms ease-in-out; } .agent-gui-node__mention-palette { container-type: inline-size; } .tsh-underline-tabs.agent-gui-node__mention-palette-tabs { height: 41px; padding: 8px 16px 0; } .agent-gui-node__mention-palette-header { padding: 8px 0 0; } .agent-gui-node__mention-palette-footer { min-height: 36px; border-top: 1px solid var(--line-2, var(--tutti-line-2)); background: var(--background-fronted, var(--background-panel)); } .agent-gui-node__mention-palette-hint { display: flex; align-items: center; justify-content: flex-end; gap: 8px; width: 100%; height: 36px; padding: 0 16px 1px; color: var(--agent-gui-text-secondary, var(--text-secondary)); font-size: 13px; font-weight: 500; line-height: 20px; pointer-events: auto; } .agent-gui-node__mention-palette-hint-item { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; line-height: 20px; white-space: nowrap; } .agent-gui-node__mention-palette-hint-item > span:last-child { font-size: 11px; } .agent-gui-node__mention-palette-hint-button, .agent-gui-node__mention-palette-shortcut-button { appearance: none; border: 0; font: inherit; font-size: 13px; cursor: pointer; } .agent-gui-node__mention-palette-hint-button { padding: 0; background: transparent; color: inherit; } .agent-gui-node__mention-palette-shortcut { display: inline-flex; align-items: center; justify-content: center; height: 20px; min-width: 20px; border: 1px solid var(--line-2, var(--tutti-line-2)); border-radius: 4px; background: color-mix(in srgb, var(--transparency-block) 72%, transparent); color: var(--agent-gui-text-secondary, var(--text-secondary)); font-size: 11px; font-weight: 600; line-height: 1; padding: 4px 6px; } .agent-gui-node__mention-palette-hint-button:hover .agent-gui-node__mention-palette-shortcut, .agent-gui-node__mention-palette-hint-button:focus-visible .agent-gui-node__mention-palette-shortcut, .agent-gui-node__mention-palette-shortcut-button:hover, .agent-gui-node__mention-palette-shortcut-button:focus-visible { background: var(--transparency-block); } .agent-gui-node__mention-palette-hint-button:focus-visible, .agent-gui-node__mention-palette-shortcut-button:focus-visible { outline: 2px solid var(--line-1); outline-offset: 2px; } .agent-gui-node__mention-palette-shortcut--arrow { width: 20px; min-width: 20px; font-size: 11px; line-height: 1; padding: 0; } .agent-gui-node__mention-palette-shortcut-group { display: inline-flex; align-items: center; gap: 5px; } .agent-gui-node__mention-palette-hint-separator { color: var(--line-2, var(--tutti-line-2)); } .agent-gui-node__mention-palette:hover .agent-gui-node__mention-palette-scrollbar[data-scrollable="true"] { opacity: 1; } .agent-gui-node__mention-palette { --agent-mention-file-icon-size: 16px; } @container (max-width: 520px) { .agent-gui-node__mention-palette .rich-text-at-mention-palette__shell { overflow: visible; } .agent-gui-node__mention-palette-hint { gap: 4px; padding-inline: 8px; } .agent-gui-node__mention-palette-hint-item { position: relative; } .agent-gui-node__mention-palette-hint-item > span:last-child { display: none; } .agent-gui-node__mention-palette-hint-item::after { position: absolute; bottom: calc(100% + 6px); left: 50%; z-index: 20; width: max-content; max-width: min(240px, calc(100cqw - 16px)); padding: 5px 8px; border: 1px solid var(--line-2, var(--tutti-line-2)); border-radius: 6px; background: var(--background-fronted, var(--background-panel)); box-shadow: 0 6px 18px rgb(0 0 0 / 18%); color: var(--text-primary); content: attr(data-tooltip); font-size: 11px; font-weight: 500; line-height: 16px; opacity: 0; pointer-events: none; transform: translateX(-50%) translateY(2px); transition: opacity 120ms ease, transform 120ms ease; white-space: normal; } .agent-gui-node__mention-palette-hint-item:hover::after, .agent-gui-node__mention-palette-hint-item:focus-within::after { opacity: 1; transform: translateX(-50%) translateY(0); } .agent-gui-node__mention-palette-hint-item:last-child::after { right: 0; left: auto; transform: translateY(2px); } .agent-gui-node__mention-palette-hint-item:last-child:hover::after, .agent-gui-node__mention-palette-hint-item:last-child:focus-within::after { transform: translateY(0); } } .agent-gui-node__mention-palette .rich-text-at-mention-palette__row-button, .agent-gui-node__mention-palette .rich-text-at-mention-palette__expand-button { min-height: 28px; padding-top: 4px; padding-bottom: 4px; padding-right: 4px; } .agent-gui-node__mention-palette .rich-text-at-mention-palette__empty-state-inner { width: min(100%, 52ch); } .agent-gui-node__mention-file-thumb { display: inline-flex; align-items: center; justify-content: center; width: var(--agent-mention-file-icon-size, 16px); height: var(--agent-mention-file-icon-size, 16px); flex: 0 0 var(--agent-mention-file-icon-size, 16px); overflow: hidden; border-radius: 4px; background-color: var(--bg-block, var(--block)); vertical-align: middle; } .agent-gui-node__mention-file-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; } .agent-gui-node__mention-file-icon { width: var(--agent-mention-file-icon-size, 16px); height: var(--agent-mention-file-icon-size, 16px); flex: 0 0 var(--agent-mention-file-icon-size, 16px); background-color: var(--folder); mask-repeat: no-repeat; mask-position: center; mask-size: var(--agent-mention-file-icon-size, 16px) var(--agent-mention-file-icon-size, 16px); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; -webkit-mask-size: var(--agent-mention-file-icon-size, 16px) var(--agent-mention-file-icon-size, 16px); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="folder"] .agent-gui-node__mention-file-icon { mask-image: url("./assets/icons/folder-filled.svg"); -webkit-mask-image: url("./assets/icons/folder-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="markdown"] .agent-gui-node__mention-file-icon { mask-image: url("./assets/icons/product-filled.svg"); -webkit-mask-image: url("./assets/icons/product-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="code"] .agent-gui-node__mention-file-icon { mask-image: url("./assets/icons/code-filled.svg"); -webkit-mask-image: url("./assets/icons/code-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="image"] .agent-gui-node__mention-file-icon { mask-image: url("./assets/icons/image-filled.svg"); -webkit-mask-image: url("./assets/icons/image-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="video"] .agent-gui-node__mention-file-icon { mask-image: url("./assets/icons/video-filled.svg"); -webkit-mask-image: url("./assets/icons/video-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="document"] .agent-gui-node__mention-file-icon { mask-image: url("./assets/icons/doc-filled.svg"); -webkit-mask-image: url("./assets/icons/doc-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="back"] .agent-gui-node__mention-file-icon.rich-text-at-mention-file-icon--glyph { display: inline-flex; align-items: center; justify-content: center; background-color: transparent; mask-image: none; -webkit-mask-image: none; color: currentColor; } .agent-gui-chrome__session-chrome { display: grid; justify-self: stretch; width: auto; gap: 0; margin: 0 8px; padding: 0; background: transparent; } .agent-gui-node__empty-hero-body > .agent-gui-chrome__session-chrome { justify-self: center; width: min(760px, 100%); margin: 0 auto; } .agent-gui-node__empty-hero-body > .agent-gui-chrome__session-chrome > .agent-gui-chrome__card { margin-right: 12px; margin-left: 12px; } .agent-gui-node__empty-hero-body > .agent-gui-chrome__session-chrome + .agent-gui-node__composer-hero { margin-top: calc(var(--agent-gui-empty-hero-gap, 24px) * -1); } .agent-gui-chrome__session-chrome:has(+ .agent-gui-chrome__session-chrome) { margin-right: 16px; margin-left: 16px; } .agent-gui-node__composer-input-group > .agent-gui-chrome__session-chrome { position: relative; z-index: 3; min-width: 0; margin-right: 8px; margin-left: 8px; } .agent-gui-node__composer-input-group-hero > .agent-gui-chrome__session-chrome { margin-right: 24px; margin-left: 24px; } .agent-gui-node__bottom-dock > .agent-gui-chrome__session-chrome { margin-right: 24px; margin-left: 24px; } .agent-gui-node__bottom-dock > .agent-gui-chrome__session-chrome:has(+ .agent-gui-chrome__session-chrome) { margin-right: 36px; margin-left: 36px; } .agent-gui-node__bottom-dock > .agent-gui-chrome__session-chrome:has( + .agent-gui-node__composer .agent-gui-node__composer-input-group > .agent-gui-chrome__session-chrome ) { margin-right: 36px; margin-left: 36px; } .agent-gui-node__bottom-dock > .agent-gui-chrome__session-chrome:has( + .agent-gui-node__composer .agent-gui-node__composer-input-group > .agent-gui-chrome__session-chrome ) + .agent-gui-node__composer .agent-gui-node__composer-input-group > .agent-gui-chrome__session-chrome { margin-right: 24px; margin-left: 24px; } .agent-gui-chrome__card { display: grid; gap: 8px; border: 1px solid var(--agent-gui-border-subtle, var(--line-2)); border-radius: 12px; padding: 12px; background: var(--agent-gui-surface-strong, var(--background-panel)); } .agent-gui-chrome__card--warning, .agent-gui-chrome__card--danger, .agent-gui-chrome__card--success, .agent-gui-chrome__card--muted, .agent-gui-chrome__card--connecting { --agent-gui-chrome-card-spring: cubic-bezier(0.22, 1.18, 0.36, 1); animation: agent-gui-chrome-card-enter 260ms var(--agent-gui-chrome-card-spring); box-sizing: border-box; height: auto; min-height: 36px; overflow: hidden; transform: translateY(0) scaleY(1); transform-origin: bottom center; transition: border-radius 220ms cubic-bezier(0.16, 1, 0.3, 1), transform 280ms var(--agent-gui-chrome-card-spring); } @keyframes agent-gui-chrome-card-enter { from { opacity: 0; transform: translateY(6px) scaleY(0.96); } } .agent-gui-chrome__card--warning { border-color: color-mix( in srgb, var(--agent-gui-warning, var(--cove-label-orange)) 36%, transparent ); border-bottom: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; background: color-mix( in srgb, var(--agent-gui-warning, var(--cove-label-orange)) 10%, var(--background-fronted) ); grid-template-columns: minmax(0, 1fr) auto; align-items: center; min-height: 36px; padding: 6px 16px; cursor: default; } .agent-gui-chrome__card--warning .agent-gui-chrome__icon, .agent-gui-chrome__card--warning .agent-gui-chrome__message { color: var(--agent-gui-warning, var(--cove-label-orange)); } .agent-gui-chrome__card--warning .agent-gui-chrome__actions button, .agent-gui-chrome__card--warning .agent-gui-chrome__danger-ghost-button { color: var(--agent-gui-warning, var(--cove-label-orange)); } .agent-gui-chrome__card--warning .agent-gui-chrome__actions button:hover:not(:disabled), .agent-gui-chrome__card--warning .agent-gui-chrome__danger-ghost-button:hover:not(:disabled) { background: color-mix( in srgb, var(--agent-gui-warning, var(--cove-label-orange)) 14%, transparent ); } .agent-gui-chrome__card--action { border-color: color-mix( in srgb, var(--accent) 24%, var(--agent-gui-border-subtle, var(--line-2)) ); background: color-mix( in srgb, var(--accent) 8%, var(--agent-gui-surface, var(--background-panel)) ); } .agent-gui-chrome__card--muted { border-bottom: 0; border-top-left-radius: 8px; border-top-right-radius: 8px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; align-items: center; min-height: 36px; padding: 6px 16px; background: var(--transparency-block); cursor: default; } .agent-gui-chrome__card--connecting { border-color: var(--agent-gui-border-subtle, var(--line-2)); border-bottom: 0; border-top-left-radius: 8px; border-top-right-radius: 8px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; color: var(--agent-gui-text-primary, var(--text-primary)); align-items: center; min-height: 36px; padding: 6px 16px; cursor: default; background: var(--agent-gui-surface-strong, var(--background-fronted)); } .agent-gui-chrome__card--connecting .agent-gui-chrome__message { display: inline-flex; min-width: 0; align-items: center; color: var(--agent-gui-text-primary, var(--text-primary)); } .agent-gui-chrome__card--connecting .agent-gui-chrome__icon { color: var(--agent-gui-text-primary, var(--text-primary)); } .agent-gui-chrome__card--danger { border-color: color-mix( in srgb, var(--status-danger, var(--state-danger)) 28%, transparent ); border-bottom: 0; border-top-left-radius: 8px; border-top-right-radius: 8px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; background: color-mix( in srgb, var(--status-danger, var(--state-danger)) 10%, var(--background-fronted) ); grid-template-columns: minmax(0, 1fr) auto; align-items: center; min-height: 36px; padding: 6px 16px; cursor: default; } .agent-gui-chrome__card[data-has-inline-actions="true"] { padding-right: 4px; } .agent-gui-chrome__card--danger .agent-gui-chrome__icon, .agent-gui-chrome__card--danger .agent-gui-chrome__message { color: var(--status-danger, var(--state-danger)); } .agent-gui-chrome__danger-ghost-button { background: transparent; color: var(--status-danger, var(--state-danger)); font-size: 13px; font-weight: 400; } .agent-gui-chrome__danger-ghost-button:hover:not(:disabled) { background: var(--on-danger-hover); color: var(--status-danger-hover, var(--state-danger-hover)); } .agent-gui-chrome__card--success { /* --state-success alone reads ~2:1 against the light-theme card wash; mixing toward --text-primary keeps the hue while adapting the contrast in both themes (45% keeps 13px text past the 4.5:1 target). Borders and backgrounds stay on the raw token. */ --agent-gui-chrome-success-foreground: color-mix( in srgb, var(--state-success) 45%, var(--text-primary) ); border-color: color-mix(in srgb, var(--state-success) 28%, transparent); border-bottom: 0; border-top-left-radius: 8px; border-top-right-radius: 8px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; background: color-mix( in srgb, var(--state-success) 10%, var(--background-fronted) ); grid-template-columns: minmax(0, 1fr) auto; align-items: center; min-height: 36px; padding: 6px 16px; cursor: default; } .agent-gui-chrome__card--success .agent-gui-chrome__icon, .agent-gui-chrome__card--success .agent-gui-chrome__message { color: var(--agent-gui-chrome-success-foreground, var(--state-success)); } .agent-gui-chrome__success-ghost-button { background: transparent; color: var(--agent-gui-chrome-success-foreground, var(--state-success)); font-size: 13px; font-weight: 400; } .agent-gui-chrome__success-ghost-button:hover:not(:disabled) { background: color-mix(in srgb, var(--state-success) 14%, transparent); } .agent-gui-chrome__success-ghost-button:focus-visible { border-color: var(--state-success); color: var(--agent-gui-chrome-success-foreground, var(--state-success)); box-shadow: 0 0 0 2px color-mix(in srgb, var(--state-success) 25%, transparent); } .agent-gui-chrome__danger-ghost-button:focus-visible { border-color: var(--status-danger, var(--state-danger)); color: var(--status-danger, var(--state-danger)); box-shadow: 0 0 0 2px color-mix( in srgb, var(--status-danger, var(--state-danger)) 25%, transparent ); } .agent-gui-chrome__icon { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: 16px; height: 16px; color: currentColor; } .agent-gui-chrome__title { color: var(--agent-gui-text-secondary, var(--text-secondary)); font-size: 13px; line-height: 20px; font-weight: 600; } .agent-gui-chrome__message { margin: 0; flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--agent-gui-text-secondary, var(--text-secondary)); font-size: 13px; line-height: 20px; } .agent-gui-chrome__card--warning .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message), .agent-gui-chrome__card--danger .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message), .agent-gui-chrome__card--success .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message), .agent-gui-chrome__card--muted .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message), .agent-gui-chrome__card--connecting .agent-gui-chrome__message:not(.agent-gui-chrome__notice-message) { display: -webkit-box; overflow: hidden; text-overflow: clip; white-space: normal; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .agent-gui-chrome__message-tooltip { max-width: min(560px, calc(100vw - 32px)); max-height: min(40vh, 260px); overflow: auto; overflow-wrap: anywhere; text-align: left; white-space: pre-wrap; } .agent-gui-chrome__notice-message { display: flex; align-items: center; gap: 10px; } .agent-gui-chrome__notice-title { flex: 0 0 auto; color: currentColor; font-weight: 400; } .agent-gui-chrome__notice-description { min-width: 0; overflow: hidden; color: currentColor; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-chrome__goal-hint { flex: 0 0 auto; white-space: nowrap; font-size: 11px; font-weight: 400; line-height: 16px; color: var(--agent-gui-text-tertiary, var(--text-tertiary)); opacity: 0.8; } .agent-gui-chrome__goal-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 4px; } .agent-gui-chrome__goal-actions button { display: inline-flex; align-items: center; gap: 4px; min-height: 22px; padding: 2px 8px; border: 0; border-radius: 6px; background: transparent; font-size: 11px; font-weight: 500; line-height: 16px; color: var(--agent-gui-text-secondary, var(--text-secondary)); cursor: pointer; } .agent-gui-chrome__goal-actions button:hover { background: color-mix( in srgb, var(--agent-gui-text-primary, var(--text-primary)) 8%, transparent ); color: var(--agent-gui-text-primary, var(--text-primary)); } /* Tutti workflow intensity button: tint icon + tier label + value by tier. Needs the extra attribute hook to outrank the goal-actions button rule. */ .agent-gui-chrome__goal-actions button[data-agent-tutti-tier="cost"] { color: var(--state-success); } .agent-gui-chrome__goal-actions button[data-agent-tutti-tier="balance"] { color: var(--accent-codex); } .agent-gui-chrome__goal-actions button[data-agent-tutti-tier="powerful"] { color: var(--tutti-purple); } /* The Tutti intensity chip is a non-button-like indicator: keep it flat on hover instead of picking up the goal-actions button hover background. */ .agent-gui-chrome__goal-actions button[data-agent-tutti-tier]:hover { background: transparent; } .agent-gui-chrome__composer-disclosure { display: grid; min-width: 0; } .agent-gui-chrome__composer-disclosure-panel { box-sizing: border-box; max-height: min(52vh, 520px); overflow: auto; /* The translateY below fuses the panel with its own banner by painting over the banner's top edge; the matching negative margin keeps the panel flush with any card stacked above it instead of leaving a gap. */ margin-top: -12px; border: 1px solid var(--agent-gui-border-subtle, var(--line-2)); border-bottom: 0; border-radius: 12px 12px 0 0; padding: 12px; background: var(--agent-gui-surface-strong, var(--background-panel)); pointer-events: auto; transform: translateY(12px); } /* Tutti workflow plan-review surfaces: --background-fronted base with an 8% tutti-purple wash. Geometry (fused panel/banner overlap, radii, borders) stays identical to the generic disclosure card. */ .agent-gui-chrome__tutti-workflow-panel { padding: 8px; background: color-mix( in srgb, var(--tutti-purple) 8%, var(--background-fronted) ); } .agent-gui-chrome__tutti-workflow-banner { background: color-mix( in srgb, var(--tutti-purple) 8%, var(--background-fronted) ); } .agent-gui-chrome__composer-disclosure[data-expanded="true"] .agent-gui-chrome__composer-disclosure-banner { border-top-left-radius: 0; border-top-right-radius: 0; } .agent-gui-chrome__composer-disclosure-banner { grid-template-columns: minmax(0, 1fr) auto; gap: 4px; } .agent-gui-chrome__composer-disclosure-trigger { display: flex; min-width: 0; align-items: center; gap: 8px; border: 0; padding: 0; background: transparent; color: var(--agent-gui-text-secondary, var(--text-secondary)); text-align: left; cursor: pointer; } .agent-gui-chrome__composer-disclosure-trigger:focus-visible { border-radius: 6px; outline: 2px solid color-mix(in srgb, var(--tutti-purple) 62%, transparent); outline-offset: 2px; } .agent-gui-chrome__composer-disclosure-chevron { width: 14px; height: 14px; flex: 0 0 auto; transition: transform 160ms ease; } .agent-gui-chrome__composer-disclosure-chevron--expanded { transform: rotate(180deg); } @media (prefers-reduced-motion: reduce) { .agent-gui-chrome__composer-disclosure-chevron { transition: none; } } .agent-gui-chrome__goal-edit-input { min-width: 0; flex: 1 1 auto; border: 0; border-radius: 6px; padding: 2px 6px; background: color-mix( in srgb, var(--agent-gui-text-primary, var(--text-primary)) 6%, transparent ); font-size: 12px; line-height: 18px; color: var(--agent-gui-text-primary, var(--text-primary)); outline: none; } .agent-gui-chrome__message-slot { display: flex; min-width: 0; flex: 1 1 auto; align-items: center; gap: 8px; } .agent-gui-chrome__inline-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 8px; } .agent-gui-chrome__inline-actions button { flex: 0 0 auto; } .agent-gui-chrome__actions, .agent-gui-chrome__meta-row { display: flex; min-width: 0; flex-wrap: nowrap; gap: 8px; align-items: center; justify-content: space-between; } .agent-gui-chrome__actions button { min-height: 30px; border: 1px solid var(--agent-gui-border, var(--cove-border)); border-radius: 6px; background: var(--agent-gui-surface-muted, var(--transparency-block)); color: var(--text-primary); font: inherit; font-size: 13px; font-weight: 600; padding: 4px 12px; transition: border-color 140ms ease, background-color 140ms ease, color 140ms ease; } .agent-gui-chrome__actions button:hover:not(:disabled) { border-color: color-mix( in srgb, var(--accent) 44%, var(--agent-gui-border, var(--cove-border)) ); background: var(--agent-gui-surface-hover, var(--transparency-block)); color: var(--text-primary); } .agent-gui-chrome__actions button:disabled { cursor: not-allowed; opacity: 0.55; } .agent-gui-conversation__interactive-prompt { padding: 0 clamp(20px, 4vw, 52px) 14px; background: transparent; font-family: var( --tsh-font-ui, var(--font-ui, var(--font-sans-system, sans-serif)) ); } .agent-gui-conversation__interactive-prompt--embedded { padding: 0; } .agent-gui-conversation__interactive-prompt-card { display: grid; gap: 12px; box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%; border: 1px solid var(--line-2, var(--tutti-line-2)); border-radius: 12px; background: var(--background-fronted); padding: 12px 16px 16px; box-shadow: 0 8px 24px color-mix(in srgb, var(--tutti-p-shadow-node) 16%, transparent); transform-origin: bottom center; animation: agent-gui-interactive-prompt-enter 190ms cubic-bezier(0.16, 1, 0.3, 1) both; } .agent-gui-conversation__interactive-prompt-card.agent-gui-edge-glow { --agent-gui-star-border-radius: 12px; } [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-prompt--embedded .agent-gui-conversation__interactive-prompt-card { box-sizing: border-box; min-width: 0; max-width: 100%; border: 0; border-radius: 12px; padding: 12px; box-shadow: none; } [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-prompt--embedded, [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-prompt-options, [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-option-display, [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-option-button { box-sizing: border-box; min-width: 0; max-width: 100%; } [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-prompt-question, [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-option-title, [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-option-description { min-width: 0; max-width: 100%; overflow-wrap: anywhere; } [data-testid="workspace-agent-message-center"] .agent-gui-conversation__interactive-option-command-description { min-width: 0; max-width: 100%; overflow-wrap: anywhere; } @media (prefers-reduced-motion: reduce) { .agent-gui-conversation__interactive-prompt-card { animation: none; } } .agent-gui-conversation__interactive-prompt-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; } .agent-gui-conversation__interactive-prompt-lead-content { display: grid; gap: 4px; } .agent-gui-conversation__interactive-prompt-lead { color: var(--text-primary); font-size: 15px; font-weight: 500; } .agent-gui-conversation__interactive-prompt-meta { color: var(--text-tertiary); font-size: 13px; } .agent-gui-conversation__interactive-prompt-question { color: var(--text-secondary); font-size: 13px; line-height: 1.5; } .agent-gui-conversation__interactive-prompt-options { display: grid; gap: 8px; } .agent-gui-conversation__interactive-option-button { display: flex; align-items: center; box-sizing: border-box; gap: 12px; width: 100%; min-width: 0; border: 0; border-radius: 8px; background: var(--transparency-block); color: var(--text-primary); font-family: inherit; font-size: 13px; font-weight: 500; line-height: 1.3; outline: none; padding: 8px 8px 8px 12px; text-align: left; transition: background-color 150ms ease, box-shadow 150ms ease, color 150ms ease; } .agent-gui-conversation__interactive-option-button:hover:not(:disabled), .agent-gui-conversation__interactive-option-button[data-active="true"] { background: var(--transparency-hover); } .agent-gui-conversation__interactive-option-button[data-active="true"] { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--text-primary) 24%, transparent); } .agent-gui-conversation__interactive-option-button:focus-visible { outline: 2px solid var(--border-focus); outline-offset: 2px; } .agent-gui-conversation__interactive-option-display { display: grid; gap: 3px; justify-items: start; box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%; overflow: hidden; border: 1px solid var(--line-2); border-radius: 8px; background: transparent; color: var(--text-primary); font-size: 13px; font-weight: 500; line-height: 1.3; padding: 12px; text-align: left; } .agent-gui-conversation__interactive-option-button:disabled { cursor: not-allowed; background: var(--transparency-block); color: var(--text-disabled); opacity: 0.48; } .agent-gui-conversation__interactive-option-button:disabled .agent-gui-conversation__interactive-option-title, .agent-gui-conversation__interactive-option-button:disabled .agent-gui-conversation__interactive-option-description, .agent-gui-conversation__interactive-option-button:disabled .agent-gui-conversation__interactive-option-shortcut { color: var(--text-disabled); } .agent-gui-conversation__interactive-option-button:disabled .agent-gui-conversation__interactive-option-shortcut { background: color-mix(in srgb, var(--transparency-block) 54%, transparent); } .agent-gui-conversation__interactive-option-title { display: -webkit-box; max-width: 100%; overflow: hidden; font-size: 13px; font-weight: 500; line-height: 1.3; overflow-wrap: anywhere; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .agent-gui-conversation__interactive-option-content { display: grid; flex: 1 1 auto; gap: 3px; justify-items: start; max-width: 100%; min-width: 0; } .agent-gui-conversation__interactive-option-description { max-width: 100%; color: var(--text-tertiary); font-size: 11px; font-weight: 400; line-height: 1.3; overflow-wrap: anywhere; } .agent-gui-conversation__interactive-option-command-description { display: -webkit-box; max-height: calc(1.3em * 4); overflow: hidden; font-family: var( --tsh-font-mono, var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace) ); -webkit-box-orient: vertical; -webkit-line-clamp: 4; } .agent-gui-conversation__interactive-option-command-tooltip { max-width: min(640px, calc(100vw - 32px)); white-space: pre-wrap; overflow-wrap: anywhere; } .agent-gui-conversation__interactive-option-shortcut { flex: none; margin-inline-start: auto; font-weight: 500; } .agent-gui-conversation__interactive-option-spinner { flex: none; color: currentColor; } .agent-gui-conversation__interactive-feedback-composer { position: relative; display: block; box-sizing: border-box; width: 100%; min-width: 0; min-height: 80px; overflow: hidden; border: 1px solid var(--line-2); border-radius: 7px; background: var(--background-fronted); padding-bottom: 44px; } .agent-gui-conversation__interactive-prompt-textarea { box-sizing: border-box; width: 100%; min-height: 72px; border: 1px solid var(--line-2); border-radius: 8px; background: var(--background-fronted); color: var(--text-primary); font: inherit; font-size: 13px; line-height: 1.5; padding: 12px; resize: vertical; } .agent-gui-conversation__interactive-feedback-composer .agent-gui-conversation__interactive-prompt-textarea { display: block; box-sizing: border-box; min-width: 0; min-height: 36px; max-height: 132px; overflow-y: auto; border: 0; border-radius: 0; background: transparent; color: var(--text-primary); font-size: 13px; line-height: 1.45; padding: 9px 10px; resize: vertical; scrollbar-width: thin; scrollbar-color: var(--transparency-hover) transparent; scrollbar-gutter: stable; } .agent-gui-conversation__interactive-feedback-composer .agent-gui-conversation__interactive-prompt-textarea::placeholder { color: var(--text-placeholder); } .agent-gui-conversation__interactive-feedback-composer .agent-gui-conversation__interactive-prompt-textarea::-webkit-scrollbar { display: block; width: 4px; height: 4px; } .agent-gui-conversation__interactive-feedback-composer .agent-gui-conversation__interactive-prompt-textarea::-webkit-scrollbar-track, .agent-gui-conversation__interactive-feedback-composer .agent-gui-conversation__interactive-prompt-textarea::-webkit-scrollbar-corner { background: transparent; } .agent-gui-conversation__interactive-feedback-composer .agent-gui-conversation__interactive-prompt-textarea::-webkit-scrollbar-thumb { border-radius: 999px; background: var(--transparency-hover); } .agent-gui-conversation__interactive-feedback-send-button { position: absolute; right: 12px; bottom: 12px; display: grid; place-items: center; width: 28px; min-width: 28px; height: 28px; min-height: 28px; border: 0; border-radius: 999px; background: var(--text-primary); color: var(--text-inverted); font-family: inherit; padding: 0; transition: transform 140ms ease, background-color 140ms ease, color 140ms ease; } .agent-gui-conversation__interactive-feedback-send-button:hover:not(:disabled) { transform: translateY(-1px); } .agent-gui-conversation__interactive-feedback-send-button:disabled { background: var(--text-disabled); color: var(--white-stationary); cursor: not-allowed; } .agent-gui-conversation__interactive-feedback-send-button svg { width: 22px; height: 22px; } .agent-gui-conversation__interactive-prompt-footer { display: grid; gap: 10px; } .agent-gui-conversation__interactive-prompt-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; } .agent-gui-conversation__interactive-prompt-card.agent-gui-conversation__interactive-prompt-collapsed { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-block: 10px; } .agent-gui-conversation__user-message-flow, .agent-gui-conversation__assistant-message-flow { display: grid; width: 100%; min-width: 0; } .agent-gui-conversation__user-message-flow { row-gap: 14px; justify-items: end; } .agent-gui-conversation__participant-message-layout { display: grid; width: 100%; min-width: 0; } .agent-gui-conversation__participant-message-header { display: flex; max-width: 100%; min-width: 0; align-items: center; column-gap: 8px; } /* The participant header sits directly above the thinking/tool-call info and the message content, so it uses a tighter gap than the default 24px flow spacing. */ .agent-gui-conversation__assistant-message-flow > .agent-gui-conversation__participant-message-header + * { margin-top: 8px; } /* Content below the header aligns with the participant name: assistant content insets to the name's left edge, user content to the name's right edge (28px avatar + 8px gap). The header is pulled back over the padding so it stays flush with the flow edge. */ .agent-gui-conversation__assistant-message-flow[data-agent-message-flow-participant="true"] { padding-left: 36px; } .agent-gui-conversation__assistant-message-flow[data-agent-message-flow-participant="true"] > .agent-gui-conversation__participant-message-header { margin-left: -36px; } .agent-gui-conversation__user-message-flow[data-agent-message-flow-participant="true"] { padding-right: 36px; } .agent-gui-conversation__user-message-flow[data-agent-message-flow-participant="true"] > .agent-gui-conversation__participant-message-header { margin-right: -36px; } /* * Participant headers render once per visible turn. Later assistant-owned * transcript rows are siblings of that header row, so carry the same * avatar-and-gap inset onto their content without changing host row padding. */ .agent-gui-transcript-row[data-agent-transcript-row-participant-content="assistant"] > * { box-sizing: border-box; padding-left: 36px; } .agent-gui-conversation__participant-name { overflow: hidden; font-size: 13px; font-weight: 500; line-height: 18px; color: var(--text-secondary); text-overflow: ellipsis; white-space: nowrap; } /* Hairline ring + crisp circular edge for participant avatars. The ring is painted on the avatar root (paint, anti-aliased on composited layers); the radial-gradient mask on the surface keeps the clipped image edge smooth in virtualized/composited lists where border-radius clipping is not anti-aliased. */ .agent-gui-conversation__participant-avatar { border-radius: 50%; box-shadow: 0 0 0 0.5px var(--line-2); } .agent-gui-conversation__participant-avatar [data-slot="avatar-surface"] { -webkit-mask-image: radial-gradient( circle closest-side, #000 calc(100% - 1px), transparent ); mask-image: radial-gradient( circle closest-side, #000 calc(100% - 1px), transparent ); } .agent-gui-conversation__participant-message-content { display: grid; width: 100%; min-width: 0; } .agent-gui-conversation__participant-message-layout[data-agent-message-speaker="user"] > .agent-gui-conversation__participant-message-content { row-gap: 14px; justify-items: end; } .agent-gui-conversation__message-group { position: relative; display: grid; width: 100%; min-width: 0; } .agent-gui-conversation__message-group::after { position: absolute; top: 100%; right: 0; left: 0; height: 26px; content: ""; } .agent-gui-conversation__message-group[data-agent-message-footer="true"] { margin-bottom: 26px; } .agent-gui-conversation__message-footer { position: absolute; top: calc(100% + 4px); z-index: 1; display: flex; gap: 6px; align-items: center; opacity: 0; pointer-events: none; transform: translateY(-2px); transition: opacity 120ms ease, transform 120ms ease; } .agent-gui-conversation__message-timestamp { display: inline-flex; align-items: center; height: 22px; font-size: 11px; line-height: 22px; color: var( --text-secondary, color-mix(in srgb, var(--text-primary) 60%, transparent) ); white-space: nowrap; } .agent-gui-conversation__message-copy-button { position: static; width: 22px; min-width: 22px; height: 22px; min-height: 22px; border-radius: 5px; border-color: transparent; background: transparent; box-shadow: none; opacity: 0; pointer-events: none; transform: translateY(-2px); transition: opacity 120ms ease, transform 120ms ease; } .agent-gui-conversation__message-copy-button[data-pending="true"] { opacity: 1; pointer-events: auto; transform: translateY(0); } .agent-gui-conversation__message-footer > .agent-gui-conversation__message-copy-button + .agent-gui-conversation__message-copy-button { margin-left: -8px; } .agent-gui-conversation__message-group[data-agent-message-speaker="user"] > .agent-gui-conversation__message-footer { right: 0; } .agent-gui-conversation__message-group[data-agent-message-speaker="assistant"] > .agent-gui-conversation__message-footer { left: 0; } .agent-gui-conversation__message-group:hover > .agent-gui-conversation__message-footer, .agent-gui-conversation__message-group:focus-within > .agent-gui-conversation__message-footer { opacity: 1; pointer-events: auto; transform: translateY(0); } .agent-gui-conversation__message-group:hover > .agent-gui-conversation__message-footer > .agent-gui-conversation__message-copy-button, .agent-gui-conversation__message-group:focus-within > .agent-gui-conversation__message-footer > .agent-gui-conversation__message-copy-button { opacity: 1; pointer-events: auto; transform: translateY(0); } .agent-gui-conversation__message-copy-button[data-copied="true"] { color: var(--state-success, #22c55e); } .agent-gui-conversation__user-message-flow > .agent-gui-conversation__message-group { justify-items: end; } .agent-gui-conversation__user-image-grid { display: grid; gap: 8px; justify-self: end; } .agent-gui-conversation__user-image-thumbnail { position: relative; box-sizing: border-box; height: 80px; max-height: 80px; min-width: 0; overflow: hidden; border: 1px solid var(--line-2); border-radius: 8px; } .agent-gui-conversation__user-image-thumbnail > .tsh-zoomable-image { width: 100%; height: 100%; } .agent-gui-conversation__user-image-thumbnail > .tsh-zoomable-image > img { width: 100%; height: 100%; object-fit: contain; } .agent-gui-conversation__user-image-thumbnail[data-image-state="loading"] > .tsh-zoomable-image { opacity: 0; pointer-events: none; } .agent-gui-conversation__user-image-thumbnail[data-image-state="loading"] > .tsh-zoomable-image > .tsh-zoomable-image__trigger { visibility: hidden; } .agent-gui-conversation__assistant-message-flow { gap: 0; } .agent-gui-conversation__assistant-message-flow > * + * { margin-top: 24px; } .agent-gui-conversation__assistant-message-flow > :is( .workspace-agents-status-panel__detail-thinking-disclosure, .workspace-agents-status-panel__detail-tool-section, .workspace-agents-status-panel__detail-tool-row ) + :is( .workspace-agents-status-panel__detail-thinking-disclosure, .workspace-agents-status-panel__detail-tool-section, .workspace-agents-status-panel__detail-tool-row ) { margin-top: 8px; } .agent-gui-node__timeline > .agent-gui-conversation__assistant-message-flow[data-agent-message-flow-thinking-last="true"] + :is( .workspace-agents-status-panel__detail-tool-section, .workspace-agents-status-panel__detail-tool-row ), .agent-gui-node__timeline > :is( .workspace-agents-status-panel__detail-tool-section, .workspace-agents-status-panel__detail-tool-row ) + .agent-gui-conversation__assistant-message-flow[data-agent-message-flow-thinking-first="true"], .agent-gui-node__timeline > :is( .workspace-agents-status-panel__detail-tool-section, .workspace-agents-status-panel__detail-tool-row ) + :is( .workspace-agents-status-panel__detail-tool-section, .workspace-agents-status-panel__detail-tool-row ) { margin-top: -8px; } .agent-gui-node__timeline > .agent-gui-transcript-row[data-agent-transcript-row-thinking-last="true"] + .agent-gui-transcript-row[data-agent-transcript-row-kind="tool-group"], .agent-gui-node__timeline > .agent-gui-transcript-row[data-agent-transcript-row-kind="tool-group"] + .agent-gui-transcript-row[data-agent-transcript-row-thinking-first="true"], .agent-gui-node__timeline > .agent-gui-transcript-row[data-agent-transcript-row-kind="tool-group"] + .agent-gui-transcript-row[data-agent-transcript-row-kind="tool-group"] { margin-top: -8px; } .agent-gui-node__timeline > .agent-gui-transcript-row[data-agent-transcript-row-speaker="assistant"] + .agent-gui-transcript-row[data-agent-transcript-row-kind="tool-group"], .agent-gui-node__timeline > .agent-gui-transcript-row[data-agent-transcript-row-kind="tool-group"] + .agent-gui-transcript-row[data-agent-transcript-row-speaker="assistant"] { margin-top: -12px; } .agent-gui-conversation__user-message-bubble { align-self: flex-end; } .agent-gui-conversation__assistant-markdown { max-width: min(880px, 100%); padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: var(--agent-conversation-text, var(--text-primary)); font-size: 13px; line-height: 1.72; } .workspace-agents-status-panel__detail-user-message.agent-gui-conversation__user-message-bubble { box-sizing: border-box; display: inline-block; justify-self: end; width: fit-content; min-width: 0; max-width: var(--agent-conversation-user-max-width, min(540px, 72%)); overflow: visible; padding: 8px 12px; border-radius: 8px; background: var(--agent-conversation-user-bg, var(--transparency-block)); color: var(--agent-conversation-user-text, var(--text-primary)); font-size: 13px; line-height: 24px; box-shadow: none; } .workspace-agents-status-panel__detail-user-message.agent-gui-conversation__user-message-bubble.agent-gui-conversation__user-message-editor { display: grid; width: calc(100% - 32px); min-width: 0; max-width: calc(100% - 32px); gap: 8px; padding: 10px 12px 8px; border-radius: 16px; } .agent-gui-conversation__user-message-editor:focus-within { outline: 1px solid var(--tsh-shell-accent); outline-offset: 1px; } .agent-gui-conversation__user-message-editor-textarea { box-sizing: border-box; width: 100%; min-height: 48px; max-height: 192px; padding: 0; resize: none; border: 0; outline: 0; background: transparent; color: var(--text-primary); font: inherit; line-height: 1.55; } .agent-gui-conversation__user-message-editor-textarea:disabled { color: var(--text-secondary); cursor: not-allowed; } .agent-gui-conversation__user-message-editor-actions { display: flex; width: 100%; gap: 4px; justify-content: flex-end; align-items: center; } .workspace-agents-status-panel__detail-user-message.agent-gui-conversation__user-message-editor > .agent-gui-conversation__user-message-editor-actions { display: flex; width: 100%; justify-content: flex-end; } .agent-gui-conversation__user-message-editor-actions > [data-slot="button"] { border-radius: 10px; } .workspace-agents-status-panel__detail-user-message[data-agent-mention-only="true"].agent-gui-conversation__user-message-bubble { max-width: min(100%, calc(var(--agent-mention-max-width, 16rem) + 24px)); } .workspace-agents-status-panel__detail-user-message .tsh-agent-object-token { font-size: inherit; overflow: visible; } .workspace-agents-status-panel__detail-user-message .agent-rich-text-mention-node { /* Avoid a percentage max-width feeding the mention's untruncated intrinsic width back into the fit-content message bubble. The nested pill still shrinks against this wrapper when the available line is narrower. */ max-width: var(--agent-mention-max-width, 16rem); } .workspace-agents-status-panel__detail-user-message .tsh-agent-object-token--file { --agent-mention-file-icon-size: 16px; } .workspace-agents-status-panel__detail-user-message > div, .workspace-agents-status-panel__detail-user-message > [contenteditable="false"], .workspace-agents-status-panel__detail-user-message .ProseMirror { display: inline-block; width: fit-content; min-width: 0; max-width: 100%; vertical-align: top; font-size: inherit; line-height: inherit; } .workspace-agents-status-panel__detail-user-message.agent-gui-conversation__user-message-bubble p { width: fit-content; max-width: 100%; margin: 0; } .workspace-agents-status-panel__detail-user-message.agent-gui-conversation__user-message-bubble p + p { margin-top: 16px; } .workspace-agents-status-panel__detail-markdown-shell { width: 100%; } .workspace-agents-status-panel__detail-markdown.agent-gui-conversation__assistant-markdown { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; } .workspace-agents-status-panel__detail-markdown.agent-gui-conversation__assistant-markdown p { margin: 0; } .workspace-agents-status-panel__detail-markdown.agent-gui-conversation__assistant-markdown p + p { margin-top: 16px; } .workspace-agents-status-panel__detail-markdown.agent-gui-conversation__assistant-markdown hr { height: 1px; margin: 14px 0; border: 0; background: var(--line-2, var(--tutti-line-2)); } .workspace-agents-status-panel__detail-markdown.agent-gui-conversation__assistant-markdown pre, .workspace-agents-status-panel__detail-markdown.agent-gui-conversation__assistant-markdown pre code { font-family: "Droid Sans Mono", var(--tsh-font-mono); } .workspace-agents-status-panel__detail-markdown p:last-child, .workspace-agents-status-panel__detail-markdown ul:last-child, .workspace-agents-status-panel__detail-markdown ol:last-child, .workspace-agents-status-panel__detail-markdown pre:last-child { margin-bottom: 0; } .workspace-agents-status-panel__detail-thinking-section, .workspace-agents-status-panel__detail-turn-summary, .workspace-agents-status-panel__detail-tool-section { max-width: min(860px, 100%); padding: 4px 0 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; } .tsh-agent-object-token { min-width: 0; /* 超出最大展示宽度时截断为省略号(标签 __main 已有 ellipsis);hover 经原生 title 看完整文本。 */ max-width: min(100%, var(--agent-mention-max-width, 16rem)); text-decoration: none; } .tsh-agent-object-token__main { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tsh-agent-object-token--file { position: relative; top: 3px; display: inline-flex; align-items: center; box-sizing: border-box; gap: 4px; padding: 2px 4px; border: 1px solid transparent; border-radius: 4px; background: transparent; color: var(--folder); font-size: 13px; font-weight: 600; line-height: 20px; vertical-align: middle; } .tsh-agent-object-token--file .tsh-agent-object-token__icon { width: var(--agent-mention-file-icon-size, 16px); height: var(--agent-mention-file-icon-size, 16px); flex: 0 0 var(--agent-mention-file-icon-size, 16px); background-color: currentColor; mask-repeat: no-repeat; mask-position: center; mask-size: var(--agent-mention-file-icon-size, 16px) var(--agent-mention-file-icon-size, 16px); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; -webkit-mask-size: var(--agent-mention-file-icon-size, 16px) var(--agent-mention-file-icon-size, 16px); mask-image: url("./assets/icons/product-filled.svg"); -webkit-mask-image: url("./assets/icons/product-filled.svg"); } .tsh-agent-object-token--entity { position: relative; top: -2px; display: inline-flex; align-items: center; gap: 6px; max-width: 100%; min-height: 20px; padding: 0; background: transparent; color: var(--text-primary); font-size: 13px; font-weight: 600; line-height: inherit; vertical-align: middle; } [data-agent-mention-only="true"] .tsh-agent-object-token--file, [data-agent-mention-only="true"] .tsh-agent-object-token--entity { top: 0; } .workspace-agents-status-panel__detail-user-message [data-agent-file-mention="true"][data-agent-mention-kind="file"].tsh-agent-object-token--file { top: -2px; line-height: 20px; vertical-align: middle; } .workspace-agents-status-panel__detail-user-message [data-agent-file-mention="true"][data-agent-mention-kind="workspace-app"].tsh-agent-object-token--entity { top: -2px; min-height: 24px; line-height: 24px; vertical-align: middle; } .workspace-agents-status-panel__detail-user-message [data-agent-file-mention="true"][data-agent-mention-kind="workspace-app"] .tsh-agent-object-token__main { overflow: visible; } .tsh-agent-object-token__kind { box-sizing: border-box; display: inline-flex; flex: 0 0 auto; min-width: 0; align-items: center; justify-content: center; overflow: visible; white-space: nowrap; height: 16px; padding: 0 4px; border-radius: 4px; font-size: 11px; font-weight: 600; letter-spacing: 0; line-height: 16px; } [data-agent-mention-kind="task"].tsh-agent-object-token--entity .tsh-agent-object-token__kind { flex-basis: 18px; width: 18px; height: 18px; padding: 0; background: transparent; color: var(--label-purple); } [data-agent-mention-kind="task"].tsh-agent-object-token--entity { gap: 4px; color: var(--label-purple); } [data-agent-mention-kind="task"].tsh-agent-object-token--entity .tsh-agent-object-token__kind-icon { display: block; flex: 0 0 16px; width: 16px; height: 16px; background-color: currentColor; mask-image: url("./assets/icons/issue-filled.svg"); mask-repeat: no-repeat; mask-position: center; mask-size: 16px 16px; -webkit-mask-image: url("./assets/icons/issue-filled.svg"); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; -webkit-mask-size: 16px 16px; } [data-agent-mention-kind="workspace-issue"].tsh-agent-object-token--entity .tsh-agent-object-token__kind { flex-basis: 18px; width: 18px; height: 18px; padding: 0; background: transparent; color: var(--label-purple); } [data-agent-mention-kind="workspace-issue"].tsh-agent-object-token--entity { gap: 4px; color: var(--label-purple); } [data-agent-mention-kind="workspace-issue"].tsh-agent-object-token--entity .tsh-agent-object-token__kind-icon { display: block; flex: 0 0 16px; width: 16px; height: 16px; background-color: currentColor; mask-image: url("./assets/icons/issue-filled.svg"); mask-repeat: no-repeat; mask-position: center; mask-size: 16px 16px; -webkit-mask-image: url("./assets/icons/issue-filled.svg"); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; -webkit-mask-size: 16px 16px; } [data-agent-mention-kind="session"].tsh-agent-object-token--entity .tsh-agent-object-token__kind { flex-basis: 18px; width: 18px; height: 18px; padding: 0; background: transparent; color: var(--room-issue-running, var(--tsh-ui-pill-success-fg)); } [data-agent-mention-kind="session"].tsh-agent-object-token--entity { gap: 4px; color: var(--room-issue-running, var(--tsh-ui-pill-success-fg)); } [data-agent-mention-kind="session"].tsh-agent-object-token--entity .tsh-agent-object-token__kind-icon { display: block; flex: 0 0 16px; width: 16px; height: 16px; background-color: currentColor; mask-image: url("./assets/icons/agent-sessions-filled.svg"); mask-repeat: no-repeat; mask-position: center; mask-size: 16px 16px; -webkit-mask-image: url("./assets/icons/agent-sessions-filled.svg"); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; -webkit-mask-size: 16px 16px; } [data-agent-mention-kind="workspace-app"].tsh-agent-object-token--entity, [data-agent-mention-kind="workspace-reference"][data-agent-reference-source="app"].tsh-agent-object-token--entity { color: var(--agent-gui-mention-app-color, var(--tutti-purple)); } [data-agent-mention-kind="skill"].tsh-agent-object-token--entity, [data-agent-mention-kind="capability"].tsh-agent-object-token--entity { top: -1px; gap: 0; padding: 0 4px 0 0; background: transparent; color: var(--tutti-purple); } [data-agent-mention-kind="skill"].tsh-agent-object-token--entity .tsh-agent-object-token__main, [data-agent-mention-kind="capability"].tsh-agent-object-token--entity .tsh-agent-object-token__main { padding: 0 6px; border-radius: 6px; background: transparent; } [data-agent-mention-kind="skill"].tsh-agent-object-token--entity.ProseMirror-selectednode .tsh-agent-object-token__main, [data-agent-mention-kind="capability"].tsh-agent-object-token--entity.ProseMirror-selectednode .tsh-agent-object-token__main { background: color-mix(in srgb, var(--tutti-purple) 20%, transparent); } [data-agent-mention-kind="skill"].tsh-agent-object-token--entity .tsh-agent-object-token__kind, [data-agent-mention-kind="capability"].tsh-agent-object-token--entity .tsh-agent-object-token__kind { display: none; } [data-agent-mention-kind="workspace-app"] [data-agent-mention-app-icon="true"] .tsh-agent-object-token__kind-icon, [data-agent-mention-kind="workspace-reference"][data-agent-reference-source="app"] [data-agent-mention-app-icon="true"] .tsh-agent-object-token__kind-icon { display: block; width: 16px; height: 16px; flex: 0 0 16px; background-color: currentColor; mask-image: url("./assets/icons/product-filled.svg"); mask-repeat: no-repeat; mask-position: center; mask-size: 16px 16px; -webkit-mask-image: url("./assets/icons/product-filled.svg"); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; -webkit-mask-size: 16px 16px; } .agent-gui-node__composer-textarea .agent-rich-text-mention-node { display: inline-flex; align-items: center; top: 1px; height: 24px; min-height: 24px; line-height: 24px; vertical-align: middle; } .agent-gui-node__composer-textarea .agent-rich-text-mention-node[data-agent-custom-mention="true"] { top: 0; height: auto; min-height: 0; line-height: inherit; } .agent-gui-node__composer-textarea .agent-rich-text-mention-node[data-agent-file-mention="true"].tsh-agent-object-token, .agent-gui-node__composer-textarea .agent-rich-text-mention-node [data-slot="mention-pill"] { display: inline-flex; align-items: center; cursor: pointer; top: 0; height: 24px; min-height: 24px; padding-top: 0; padding-right: 4px; padding-bottom: 0; padding-left: 4px; border-radius: 4px; line-height: 24px; transform: translateY(1px); transition: background-color 140ms ease-in-out; vertical-align: middle; } .agent-gui-node__composer-textarea .agent-rich-text-mention-node [data-slot="mention-pill"] { height: 24px; } .agent-gui-node__composer-textarea [data-agent-mention-kind="skill"].tsh-agent-object-token--entity, .agent-gui-node__composer-textarea [data-agent-mention-kind="capability"].tsh-agent-object-token--entity { top: 1px; height: 24px; min-height: 24px; box-sizing: border-box; line-height: 24px; vertical-align: middle; } .agent-gui-node__composer-textarea [data-agent-mention-kind="skill"].tsh-agent-object-token--entity .tsh-agent-object-token__main, .agent-gui-node__composer-textarea [data-agent-mention-kind="capability"].tsh-agent-object-token--entity .tsh-agent-object-token__main { height: 24px; box-sizing: border-box; border-radius: 4px; font-size: 13px; line-height: 24px; transform: translateY(-2px); } .agent-gui-node__composer-textarea [data-agent-file-mention="true"].tsh-agent-object-token:hover { background: color-mix(in srgb, currentColor 16%, transparent); } .agent-gui-conversation__assistant-markdown [data-agent-file-mention="true"].tsh-agent-object-token, .workspace-agents-status-panel__detail-user-message [data-agent-file-mention="true"].tsh-agent-object-token { cursor: pointer; font-size: 13px; } .agent-gui-conversation__assistant-markdown [data-agent-file-mention="true"].tsh-agent-object-token .tsh-agent-object-token__main, .workspace-agents-status-panel__detail-user-message [data-agent-file-mention="true"].tsh-agent-object-token .tsh-agent-object-token__main { font-size: 13px; } .agent-gui-conversation__assistant-markdown [data-agent-file-mention="true"].tsh-agent-object-token:hover, .workspace-agents-status-panel__detail-user-message [data-agent-file-mention="true"].tsh-agent-object-token:hover { background: color-mix(in srgb, currentColor 16%, transparent); } [data-agent-file-mention="true"][data-agent-mention-kind="file"].tsh-agent-object-token--file { color: var(--folder); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-upload-error="true"].tsh-agent-object-token--file { border-color: color-mix(in srgb, var(--state-danger) 42%, transparent); background: color-mix(in srgb, var(--state-danger) 8%, transparent); color: var(--state-danger); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-entry-kind="directory"] .tsh-agent-object-token__icon { mask-image: url("./assets/icons/folder-filled.svg"); -webkit-mask-image: url("./assets/icons/folder-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="markdown"] .tsh-agent-object-token__icon { mask-image: url("./assets/icons/product-filled.svg"); -webkit-mask-image: url("./assets/icons/product-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="code"] .tsh-agent-object-token__icon { mask-image: url("./assets/icons/code-filled.svg"); -webkit-mask-image: url("./assets/icons/code-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="image"] .tsh-agent-object-token__icon { mask-image: url("./assets/icons/image-filled.svg"); -webkit-mask-image: url("./assets/icons/image-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="video"] .tsh-agent-object-token__icon { mask-image: url("./assets/icons/video-filled.svg"); -webkit-mask-image: url("./assets/icons/video-filled.svg"); } [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="document"] .tsh-agent-object-token__icon, [data-agent-file-mention="true"][data-agent-mention-kind="file"][data-agent-file-visual-kind="binary"] .tsh-agent-object-token__icon, [data-agent-file-mention="true"][data-agent-mention-kind="file"]:not( [data-agent-file-entry-kind="directory"] ):not([data-agent-file-visual-kind]) .tsh-agent-object-token__icon { mask-image: url("./assets/icons/doc-filled.svg"); -webkit-mask-image: url("./assets/icons/doc-filled.svg"); } .agent-gui-node__composer-textarea [data-agent-file-mention="true"].tsh-agent-object-token--file { vertical-align: middle; } .agent-gui-node__shell, .agent-gui-node__side-surface { --agent-mention-file-icon-size: 16px; --agent-gui-text-primary: var(--text-primary); --agent-gui-text-secondary: var(--text-secondary); --agent-gui-text-tertiary: var(--text-tertiary); --agent-gui-surface: transparent; --agent-gui-surface-strong: var(--node-surface); --agent-gui-surface-raised: var(--background-fronted); --agent-gui-surface-muted: var(--transparency-block); --agent-gui-surface-hover: var(--transparency-block); --agent-gui-border: var(--cove-border); --agent-gui-border-subtle: var(--line-2); --agent-gui-package-accent: var(--accent-codex); --agent-gui-package-accent-strong: var(--accent-codex); --agent-gui-package-accent-bg: color-mix( in srgb, var(--agent-gui-surface-raised) 88%, var(--agent-gui-package-accent) 12% ); --agent-gui-package-border-focus: var(--accent-codex-border); --agent-gui-package-success: var(--state-success); --agent-gui-package-warning: var(--state-warning); --agent-gui-package-danger: var(--state-danger); --agent-gui-accent: var(--agent-gui-package-accent); --agent-gui-accent-strong: var(--agent-gui-package-accent-strong); --agent-gui-accent-bg: var(--agent-gui-package-accent-bg); --agent-gui-border-focus: var(--agent-gui-package-border-focus); --agent-gui-mention-app-color: var(--tutti-purple); --agent-gui-success: var(--agent-gui-package-success); --agent-gui-warning: var(--agent-gui-package-warning); --agent-gui-danger: var(--agent-gui-package-danger); --agent-conversation-text: var(--text-primary); --agent-conversation-user-text: var(--text-primary); --agent-conversation-user-bg: var(--agent-gui-surface-muted); --agent-gui-session-flow-background: var( --background-session-flow, rgb(252 253 255) ); --agent-gui-session-sidepanel-background: var( --background-session-sidepanel, rgb(244 245 247) ); --agent-gui-detail-padding-x: 48px; color: var(--agent-gui-text-primary); } .agent-gui-node__shell { width: 100%; height: 100%; container: agent-gui-node / inline-size; background: transparent; } :root[data-theme="dark"] :is(.agent-gui-node__shell, .agent-gui-node__side-surface) { --agent-gui-session-flow-background: var( --background-session-flow, rgb(24 24 24) ); --agent-gui-session-sidepanel-background: var( --background-session-sidepanel, rgb(42 42 43) ); } @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) :is(.agent-gui-node__shell, .agent-gui-node__side-surface) { --agent-gui-session-flow-background: var( --background-session-flow, rgb(24 24 24) ); --agent-gui-session-sidepanel-background: var( --background-session-sidepanel, rgb(42 42 43) ); } } .agent-gui-node__body { width: 100%; height: 100%; min-width: 0; min-height: 0; padding: 0; } .agent-gui-node__layout { --agent-gui-provider-rail-width: 0px; position: relative; display: grid; grid-template-rows: minmax(0, 1fr); width: 100%; height: 100%; min-height: 0; min-width: 0; overflow: hidden; background: var(--agent-gui-session-sidepanel-background); transition: grid-template-columns 180ms cubic-bezier(0.22, 1, 0.36, 1); } .agent-gui-node__layout[data-rail-resizing="true"] { transition: none; } .workbench-window[data-window-header-layout="overlay"] { --agent-gui-workbench-header-height: 44px; grid-template-rows: minmax(0, 1fr); } .workbench-window[data-window-header-layout="overlay"] .workbench-window__header { position: absolute !important; top: 0 !important; right: 0 !important; left: 0 !important; z-index: 30; width: 100% !important; height: var(--agent-gui-workbench-header-height); min-height: var(--agent-gui-workbench-header-height); padding: 0; overflow: visible; border-bottom: 0; background: transparent; cursor: default; pointer-events: none !important; user-select: auto; } .workbench-window[data-agent-gui-standalone-window="true"] .workbench-window__header { cursor: grab !important; } .workbench-window[data-agent-gui-standalone-window="true"] .workbench-window__header:active { cursor: grabbing !important; } .workbench-window[data-window-header-layout="overlay"] .workbench-window__header { z-index: calc(var(--z-panel) + 1); } .workbench-window[data-window-header-layout="overlay"] .workbench-window__body { grid-row: 1; overflow: hidden; } .workbench-window[data-agent-gui-standalone-window="true"] .workbench-window__body { display: flex; width: 100%; height: 100%; min-width: 0; min-height: 0; } .workbench-window[data-agent-gui-standalone-window="true"] { width: 100vw; height: 100vh; max-width: 100vw; max-height: 100vh; overflow: hidden; } .workbench-window[data-agent-gui-standalone-window="true"] .workspace-node-window, .workbench-window[data-agent-gui-standalone-window="true"] [data-workspace-node-window-root="true"], .workbench-window[data-agent-gui-standalone-window="true"] [data-workspace-node-window-body="true"], .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__shell, .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__body, .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__layout { width: 100%; height: 100%; min-width: 0; min-height: 0; overflow: hidden; } .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__provider-rail-panel, .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__rail, .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__detail-panel, .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__detail { min-height: 0; overflow: hidden; } .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__rail-toolbar { flex: 0 0 auto; } .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__conversation-list, .workbench-window[data-agent-gui-standalone-window="true"] .agent-gui-node__timeline { min-height: 0; overflow-y: auto; overscroll-behavior: contain; } .workbench-window[data-window-header-layout="overlay"] .agent-gui-node__provider-rail-panel { padding-top: var(--agent-gui-workbench-header-height); } /* The provider rail nests the workbench-header offset on the panel and the 2px breathing room on the inner rail, so the "All" tile sits at header + 2px. The toolbar has no such wrapper, so fold the same 2px into its offset to keep the search field top aligned with the provider tiles. */ .workbench-window[data-window-header-layout="overlay"] .agent-gui-node__rail-toolbar { padding-top: calc(var(--agent-gui-workbench-header-height) + 2px); } .workbench-window[data-window-header-layout="overlay"] .agent-gui-node__detail-panel { position: relative; } .workbench-window[data-window-header-layout="overlay"] .agent-gui-node__detail { padding-top: var(--agent-gui-workbench-header-height); } .workbench-window[data-window-header-layout="overlay"] .agent-gui-node__timeline-with-composer { padding-top: 20px; } .agent-gui-workbench-dock-icon { box-sizing: border-box; display: grid; width: 44px; height: 44px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px; padding: 3px; border: 1px solid var(--agent-gui-workbench-dock-icon-border, var(--line-1)); border-radius: 8px; background: var( --agent-gui-workbench-dock-icon-bg, var(--transparency-block) ); } .agent-gui-workbench-dock-icon__tile { display: block; overflow: hidden; min-width: 0; min-height: 0; border-radius: 6px; background: transparent; } .agent-gui-workbench-dock-icon__tile > img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center; } .agent-gui-workbench-dock-icon--single { display: block; padding: 0; border: 0; background: transparent; } .agent-gui-workbench-dock-icon--single > img { display: block; width: 100%; height: 100%; object-fit: contain; } .agent-gui-workbench-header { --agent-gui-workbench-header-rail-width: 280px; --agent-gui-workbench-header-padding-x: 16px; --agent-gui-workbench-header-primary-gap: 12px; --agent-gui-workbench-header-traffic-light-hit-area-size: 20px; --agent-gui-workbench-header-traffic-light-gap: 8px; --agent-gui-workbench-header-traffic-light-size: 12px; --agent-gui-workbench-header-title-max-width: calc(100% - 32px); --agent-gui-workbench-header-text: var(--text-primary); --agent-gui-workbench-header-muted: var(--text-secondary); position: relative; display: grid; width: 100%; height: var(--agent-gui-workbench-header-height, 44px); min-height: var(--agent-gui-workbench-header-height, 44px); grid-template-columns: minmax(0, var(--agent-gui-workbench-header-rail-width)) minmax(0, 1fr); align-items: center; background: transparent; color: var(--agent-gui-workbench-header-text); cursor: grab; pointer-events: auto; transition: grid-template-columns 180ms cubic-bezier(0.22, 1, 0.36, 1); user-select: none; } /* * Windows keeps the native caption buttons, but Electron overlays them on the * app-owned header when titleBarStyle is hidden. Match that overlay's height * and reserve its right-side hit area so Agent content never sits underneath * the native minimize/maximize/close buttons. */ .agent-gui-workbench-header[data-tutti-titlebar-overlay="true"] { --agent-gui-workbench-header-height: 52px; --tutti-titlebar-controls-inset: calc( 100vw - env(titlebar-area-width, calc(100vw - 138px)) + 10px ); box-sizing: border-box; padding-right: var(--tutti-titlebar-controls-inset); } .agent-gui-workbench-header[data-tutti-titlebar-overlay="true"] .agent-gui-workbench-header__traffic-lights { visibility: hidden; pointer-events: none; } .agent-gui-workbench-header:active { cursor: grabbing; } .agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"] { grid-template-columns: minmax(0, 0px) minmax(0, 1fr); } .agent-gui-workbench-header__primary { display: flex; box-sizing: border-box; width: 100%; height: 100%; min-width: 0; align-items: center; gap: var(--agent-gui-workbench-header-primary-gap); padding: 0 var(--agent-gui-workbench-header-padding-x); background: var(--agent-gui-session-sidepanel-background); pointer-events: auto; } .agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"] .agent-gui-workbench-header__primary { grid-column: 1 / -1; width: 100%; background: transparent; } /* * Tool-sidebar actions belong to the single Agent window header regardless of * whether that header is owned by the native window or an embedding host. * Collapsing the conversation rail must not pull them into the 720px content * cap. Let the primary row span the host header and keep the same trailing * inset as the expanded detail row. * * The tool actions are absolutely positioned against the window's right edge, * so they no longer occupy space in the flex row. In the collapsed primary row * the title is preceded by the traffic lights and header chrome buttons, which * means a max-width on the title alone cannot stop its right edge from sliding * under those actions. Reserve the actions' width plus the normal inset as * trailing padding on the row itself so the title flex-grows and truncates * before it can reach them, regardless of what precedes it. */ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"][data-agent-gui-workbench-header-collapsed="true"] .agent-gui-workbench-header__primary { width: 100%; padding-inline-end: calc( var(--agent-gui-tool-sidebar-layout-width, 0px) + var(--agent-gui-workbench-header-padding-x) ); } .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"] .agent-gui-workbench-header__secondary-accessory { padding-right: 0; } /* Keep the tool header on the same right edge as its body panel. The body panel is right-anchored independently of the Agent header's rail grid; leaving this accessory in the grid makes its left edge drift when the panel expands to the available width. */ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"] .agent-gui-workbench-header__secondary-accessory:has( [data-agent-tool-sidebar-header="true"] ) { position: absolute; top: 0; right: 0; margin-left: 0; } /* * The tool-sidebar actions are removed from the flex flow above. On Windows * the native caption buttons occupy the right edge of the same overlay. Keep * the tool header anchored to the same edge as its body panel, then reserve * the caption-button hit area inside that header so its controls stay clear * without shifting the header border into the Agent surface. */ .agent-gui-workbench-header[data-tutti-titlebar-overlay="true"] [data-agent-tool-sidebar-header="true"] { box-sizing: border-box; padding-right: calc( var(--tutti-titlebar-controls-inset) + var(--agent-gui-workbench-header-padding-x) ); } /* * The detached-window button pushes the detail controls to the far edge while * the conversation rail is expanded. Once the rail collapses, every primary * control and the session title share one full-width row, so keep that group * anchored immediately after the traffic lights. Secondary tool actions retain * their own right alignment across the full header width. */ .agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"] .agent-gui-workbench-header__detached-window { margin-left: 0; } .agent-gui-workbench-header__traffic-lights { display: inline-flex; flex: 0 0 auto; align-items: center; gap: var(--agent-gui-workbench-header-traffic-light-gap); margin-right: 0; } .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] { cursor: grab !important; -webkit-app-region: drag; } .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]:active { cursor: grabbing !important; } .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__primary { cursor: grab !important; -webkit-app-region: drag; } .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__primary:active { cursor: grabbing !important; } .agent-gui-workbench-header__traffic-light { position: relative; display: inline-flex; width: var(--agent-gui-workbench-header-traffic-light-hit-area-size); height: var(--agent-gui-workbench-header-traffic-light-hit-area-size); flex: 0 0 auto; margin: calc( ( var(--agent-gui-workbench-header-traffic-light-size) - var(--agent-gui-workbench-header-traffic-light-hit-area-size) ) / 2 ); padding: 0; border: 0; border-radius: 999px; background: transparent; cursor: pointer; opacity: 0.78; transition: opacity 160ms ease; } .agent-gui-workbench-header__traffic-light::before { position: absolute; inset: calc( ( var(--agent-gui-workbench-header-traffic-light-hit-area-size) - var(--agent-gui-workbench-header-traffic-light-size) ) / 2 ); border-radius: inherit; background-color: color-mix(in srgb, var(--text-tertiary) 72%, transparent); content: ""; transition: background-color 160ms ease; } .agent-gui-workbench-header__traffic-light-icon { position: absolute; z-index: 1; inset: 5px; width: 10px; height: 10px; color: color-mix(in srgb, #000 68%, transparent); opacity: 0; pointer-events: none; transition: opacity 120ms ease; } .agent-gui-workbench-header__traffic-lights:hover .agent-gui-workbench-header__traffic-light, .agent-gui-workbench-header__traffic-lights:focus-within .agent-gui-workbench-header__traffic-light { opacity: 1; } .agent-gui-workbench-header__traffic-light:focus-visible { outline: none; } .agent-gui-workbench-header__traffic-lights:hover .agent-gui-workbench-header__traffic-light-icon, .agent-gui-workbench-header__traffic-lights:focus-within .agent-gui-workbench-header__traffic-light-icon { opacity: 1; } .agent-gui-workbench-header__traffic-lights:hover .agent-gui-workbench-header__traffic-light[data-agent-gui-workbench-traffic-light="close"]::before, .agent-gui-workbench-header__traffic-lights:focus-within .agent-gui-workbench-header__traffic-light[data-agent-gui-workbench-traffic-light="close"]::before { background-color: #ff5f57; } .agent-gui-workbench-header__traffic-lights:hover .agent-gui-workbench-header__traffic-light[data-agent-gui-workbench-traffic-light="minimize"]::before, .agent-gui-workbench-header__traffic-lights:focus-within .agent-gui-workbench-header__traffic-light[data-agent-gui-workbench-traffic-light="minimize"]::before { background-color: #ffbd2e; } .agent-gui-workbench-header__traffic-lights:hover .agent-gui-workbench-header__traffic-light[data-agent-gui-workbench-traffic-light="maximize"]::before, .agent-gui-workbench-header__traffic-lights:focus-within .agent-gui-workbench-header__traffic-light[data-agent-gui-workbench-traffic-light="maximize"]::before { background-color: #28c840; } .agent-gui-workbench-header__agent-brand { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 8px; } .agent-gui-workbench-header__primary-accessory { display: inline-flex; min-width: 0; flex: 0 0 auto; align-items: center; -webkit-app-region: no-drag; } .agent-gui-workbench-header__detail { display: flex; width: 100%; height: 100%; min-width: 0; align-items: center; } .agent-gui-workbench-header__secondary-accessory { display: inline-flex; min-width: 0; flex: 0 0 auto; align-items: center; margin-left: auto; padding-right: var(--agent-gui-workbench-header-padding-x); pointer-events: auto; -webkit-app-region: no-drag; } /* The collapsed primary row already supplies the header's right inset. Avoid stacking the accessory inset when actions move out of the detail column. */ .agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"] .agent-gui-workbench-header__secondary-accessory { padding-right: 0; } .agent-gui-workbench-header__agent-name, .agent-gui-workbench-header__session-title, .agent-gui-workbench-header__detail-title { box-sizing: border-box; min-width: 0; color: var(--agent-gui-workbench-header-text); font-size: 15px; font-weight: 700; line-height: 20px; white-space: nowrap; } .agent-gui-workbench-header__title-text { min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Mention typography and icons use the same 24px row as the plain title, so the whole rich title can share the Agent icon's vertical center directly. */ .agent-gui-workbench-header__rich-title { display: block; width: max-content; min-width: 0; max-width: calc(100% - 36px); height: 24px; flex: 0 1 auto; overflow: hidden; } .agent-gui-workbench-header__rich-title > div, .agent-gui-workbench-header__rich-title .ProseMirror { display: block; width: 100%; min-width: 0; height: 24px; margin: 0; overflow: visible; } .agent-gui-workbench-header__rich-title p { display: flex; width: max-content; min-width: 100%; max-width: none; height: 24px; align-items: center; margin: 0; overflow: visible; overflow-wrap: normal; line-height: 24px; white-space: nowrap; word-break: normal; } .agent-gui-workbench-header__rich-title .agent-rich-text-mention-node, .agent-gui-workbench-header__rich-title .tsh-agent-object-token--file, .agent-gui-workbench-header__rich-title .tsh-agent-object-token--entity, .agent-gui-workbench-header__rich-title [data-slot="mention-pill"] { top: 0; align-items: center; transform: none; vertical-align: middle; } .agent-gui-workbench-header__rich-title .agent-rich-text-mention-node[data-agent-custom-mention="true"] { display: inline-flex; max-width: min(100%, var(--agent-mention-max-width, 20rem)); height: 24px; align-items: center; margin-right: 4px; transform: translateY(-1.5px); vertical-align: middle; } .agent-gui-workbench-header__rich-title .tsh-agent-object-token--file { height: 24px; min-height: 24px; padding-top: 0; padding-bottom: 0; line-height: 24px; } .agent-gui-workbench-header__rich-title .tsh-agent-object-token--file .tsh-agent-object-token__main { transform: translateY(-1.25px); } .agent-gui-workbench-header__agent-name { flex: 0 0 auto; } .agent-gui-workbench-header__session-title { display: flex; flex: 0 1 auto; max-width: min(100%, var(--agent-gui-workbench-header-title-max-width)); margin-left: 4px; align-items: center; gap: 8px; } .agent-gui-workbench-header__session-icon { width: 20px; height: 20px; flex: 0 0 auto; border-radius: 5px; } .agent-gui-workbench-header__session-icon-info-trigger { display: inline-flex; flex: 0 0 auto; align-items: center; border-radius: 5px; pointer-events: auto; -webkit-app-region: no-drag; } .agent-gui-workbench-header__session-icon-info-trigger:focus-visible { outline: auto; } .agent-gui-workbench-header__session-icon--pending { background: var(--transparency-block); animation: agent-gui-workbench-header-icon-pending 1.2s ease-in-out infinite; } @keyframes agent-gui-workbench-header-icon-pending { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } } .agent-gui-workbench-header__detail-title { display: flex; height: 100%; flex: 0 1 auto; max-width: min(100%, var(--agent-gui-workbench-header-title-max-width)); min-width: 0; align-items: center; gap: 8px; padding: 0 20px; pointer-events: none; } .agent-gui-workbench-header__session-title:has( .agent-gui-workbench-header__session-menu-trigger ) > .agent-gui-workbench-header__title-text, .agent-gui-workbench-header__detail-title:has( .agent-gui-workbench-header__session-menu-trigger ) > .agent-gui-workbench-header__title-text { max-width: calc(100% - 36px); } .agent-gui-workbench-header__session-menu-trigger { pointer-events: auto; } .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"] .agent-gui-workbench-header__session-title, .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"] .agent-gui-workbench-header__detail-title { box-sizing: border-box; width: auto; max-width: calc( 100% - var(--agent-gui-tool-sidebar-layout-width, 0px) - 16px ); flex: 1 1 0; min-width: 0; overflow: hidden; } /* * In the collapsed primary row the trailing reserve is supplied by the row's * own padding-inline-end (it has to account for the leading traffic lights and * chrome buttons that a title-level max-width cannot see). Relax the shared * max-width here so the reservation is not counted twice, which would strand * the title far short of the actions. */ .agent-gui-workbench-header[data-agent-gui-workbench-header-tool-sidebar="true"][data-agent-gui-workbench-header-collapsed="true"] .agent-gui-workbench-header__session-title { max-width: 100%; } .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__agent-brand, .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__session-title, .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__detail-title { cursor: grab !important; -webkit-app-region: drag; } .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__agent-brand:active, .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__session-title:active, .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__detail-title:active { cursor: grabbing !important; } .agent-gui-workbench-header__icon-button { display: inline-flex !important; width: 28px !important; height: 28px !important; min-width: 28px !important; min-height: 28px !important; flex: 0 0 auto; align-items: center; justify-content: center; padding: 0 !important; border: 0 !important; border-radius: 6px !important; background: transparent !important; color: var(--agent-gui-workbench-header-muted) !important; cursor: pointer; /* Header chrome icon buttons must not animate: no hover fade, no press-down motion inherited from the ui-system Button base. */ transition: none !important; } .agent-gui-workbench-header__icon-button:active { transform: none !important; } .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__traffic-lights, .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__traffic-light, .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] .agent-gui-workbench-header__icon-button { cursor: pointer !important; -webkit-app-region: no-drag; } .agent-gui-workbench-header__icon-button:hover, .agent-gui-workbench-header__icon-button:focus-visible { background: color-mix( in srgb, var(--text-primary) 8%, transparent ) !important; color: var(--agent-gui-workbench-header-text) !important; } .agent-gui-workbench-header__rail-toggle { margin-left: auto; } .agent-gui-workbench-header__detached-window { margin-left: auto; } .agent-gui-workbench-header__detached-window + .agent-gui-workbench-header__rail-toggle { /* The primary row gap is 12px; keep this icon pair at a net 8px. */ margin-left: -4px; } .agent-gui-workbench-header[data-agent-gui-workbench-header-body-error="true"] .agent-gui-workbench-header__rail-toggle { display: none !important; } .agent-gui-workbench-header[data-agent-gui-workbench-header-collapsed="true"] .agent-gui-workbench-header__rail-toggle { margin-left: 0; } .agent-gui-workbench-header__icon { width: 18px; height: 18px; flex: 0 0 auto; } .agent-gui-node__rail-panel { position: relative; z-index: 2; min-width: 0; min-height: 0; height: 100%; border-right: 0; overflow: visible; isolation: isolate; } .agent-gui-node__rail-panel--collapsed { overflow: hidden; pointer-events: none; } .agent-gui-node__rail-resize-handle { position: absolute; top: 0; bottom: 0; left: calc( var(--agent-gui-provider-rail-width, 0px) + var(--agent-gui-conversation-rail-width) - 6px ); z-index: 20; width: 12px; min-width: 12px; cursor: col-resize; touch-action: none; opacity: 1; transition: left 180ms cubic-bezier(0.22, 1, 0.36, 1), opacity 120ms ease; } .agent-gui-node__rail-resize-handle[data-resizing="true"] { transition: none; } .agent-gui-node__rail-resize-handle--collapsed { left: calc(var(--agent-gui-provider-rail-width, 0px) - 6px); opacity: 0; } .agent-gui-node__rail-resize-handle::after { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 1px; transform: translateX(-50%); background: transparent; transition: background-color 150ms ease, width 150ms ease; } .agent-gui-node__rail-resize-handle:hover::after, .agent-gui-node__rail-resize-handle:focus-visible::after, .agent-gui-node__rail-resize-handle[data-resizing="true"]::after { width: 2px; background: color-mix(in srgb, var(--border-focus) 40%, transparent); } .agent-gui-node__detail-panel { position: relative; display: flex; height: 100%; min-width: 0; min-height: 0; flex-direction: column; overflow: hidden; border-radius: 16px; background: var(--agent-gui-session-flow-background); } .agent-gui-node__detail-panel > .agent-gui-node__detail { min-height: 0; border-radius: inherit; overflow: hidden; } .agent-gui-node__composer-file-drop-overlay { position: absolute; inset: 0; z-index: 40; display: grid; place-items: center; padding: 24px; border-radius: inherit; border: 2px dashed color-mix(in srgb, var(--tutti-purple) 70%, transparent); background: color-mix( in srgb, var(--tutti-purple) 12%, var(--agent-gui-session-flow-background) ); opacity: 0; pointer-events: none; transition: opacity 150ms ease-out; } .agent-gui-node__composer-file-drop-overlay--active { opacity: 1; } .agent-gui-node__composer-file-drop-overlay-card { color: var(--text-primary); font-size: 15px; font-weight: 500; line-height: 1.4; text-align: center; } .agent-gui-node__rail { position: relative; display: flex; flex-direction: column; width: var( --agent-gui-conversation-rail-content-width, var(--agent-gui-conversation-rail-width) ); min-width: var( --agent-gui-conversation-rail-content-width, var(--agent-gui-conversation-rail-width) ); height: 100%; min-height: 0; background: var(--agent-gui-session-sidepanel-background); box-shadow: none; opacity: 1; } .agent-gui-node__provider-rail-panel { position: relative; z-index: 3; display: flex; width: var(--agent-gui-provider-rail-width, 52px); min-width: 0; min-height: 0; flex-direction: column; align-items: center; background: var(--agent-gui-session-sidepanel-background); overflow: hidden; transition: width 180ms cubic-bezier(0.22, 1, 0.36, 1); -webkit-app-region: no-drag; } .agent-gui-node__provider-rail-panel::after { content: ""; pointer-events: none; position: absolute; top: 0; right: 0; bottom: 0; width: 1px; background: linear-gradient( 180deg, transparent 0, var(--line-1) 24px, var(--line-1) calc(100% - 24px), transparent 100% ); } .workbench-window[data-window-header-layout="overlay"] .agent-gui-node__provider-rail-panel::after { top: var(--agent-gui-workbench-header-height); } .agent-gui-node__rail > * { transition: opacity 120ms ease, filter 120ms ease; transition-delay: 40ms; } .agent-gui-node__rail::after { content: ""; pointer-events: none; position: absolute; inset: 0; z-index: 1; background: color-mix( in srgb, var(--agent-gui-session-sidepanel-background) 88%, transparent ); opacity: 0; transition: opacity 120ms ease; } .agent-gui-node__rail-panel--collapsed .agent-gui-node__rail { box-shadow: none; } .agent-gui-node__rail-panel--collapsed .agent-gui-node__rail > * { filter: blur(1px); opacity: 0; transition-delay: 0ms; } .agent-gui-node__rail-panel--collapsed .agent-gui-node__rail::after { opacity: 1; transition-delay: 0ms; } @media (prefers-reduced-motion: reduce) { .agent-gui-node__layout, .agent-gui-workbench-header, .agent-gui-node__rail-resize-handle, .agent-gui-node__provider-rail-panel, .agent-gui-node__rail > *, .agent-gui-node__rail::after { transition: none; } .agent-gui-node__rail-panel--collapsed .agent-gui-node__rail > * { filter: none; } } .agent-gui-node__rail-toolbar { --agent-gui-rail-control-radius: 6px; display: flex; align-items: center; gap: 10px; min-width: 0; padding: 2px 12px 16px 12px; } .agent-gui-node__activity-toggle-button { position: relative; flex: 0 0 32px; width: 32px; min-width: 32px; height: 32px; min-height: 32px; border-radius: var(--agent-gui-rail-control-radius); background: transparent; color: var(--text-secondary); } .agent-gui-node__activity-toggle-button:hover, .agent-gui-node__activity-toggle-button:focus-visible { background: var(--transparency-hover); color: var(--text-primary); } .agent-gui-node__activity-toggle-button[data-active="true"] { background: color-mix(in srgb, var(--agent-gui-accent) 12%, transparent); color: var(--agent-gui-accent-strong); } .agent-gui-node__activity-toggle-button svg { width: 18px; height: 18px; } .agent-gui-node__activity-toggle-dot { position: absolute; top: 5px; right: 5px; width: 6px; height: 6px; border: 1px solid var(--agent-gui-session-sidepanel-background); border-radius: 999px; background: var(--agent-gui-accent); } .agent-gui-node__project-rail-header { display: flex; flex: 0 0 auto; min-width: 0; align-items: center; justify-content: space-between; gap: 6px; min-height: 26px; margin-bottom: 8px; padding: 0 6px 0 10px; } .agent-gui-node__conversation-section + .agent-gui-node__project-rail-header { margin-top: 24px; } .agent-gui-node__project-rail-title { display: inline-flex; min-width: 0; align-items: center; gap: 6px; overflow: hidden; color: var(--text-secondary); font-size: 13px; font-weight: 400; line-height: 18px; } .agent-gui-node__project-rail-title > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__project-rail-add-project { position: relative; display: inline-flex; flex: 0 0 auto; width: 24px; height: 24px; align-items: center; justify-content: center; opacity: 0; pointer-events: none; transition: opacity 140ms ease, color 140ms ease; } .agent-gui-node__project-rail-header:hover .agent-gui-node__project-rail-add-project, .agent-gui-node__project-rail-header:focus-within .agent-gui-node__project-rail-add-project { opacity: 1; pointer-events: auto; } .agent-gui-node__project-rail-add-project-trigger { width: 24px; min-width: 24px; height: 24px; min-height: 24px; max-width: 24px; border: 0; border-radius: 7px; background: transparent; padding: 0; color: var(--text-secondary); } .agent-gui-node__project-rail-add-project-trigger > span { display: none; } .agent-gui-node__project-rail-add-project-trigger > svg { display: none; } .agent-gui-node__project-rail-add-project-trigger:hover:not(:disabled), .agent-gui-node__project-rail-add-project-trigger:focus-visible { background: var(--transparency-block-hover); color: var(--text-primary); outline: none; } .agent-gui-node__project-rail-add-project-icon { position: absolute; inset: 50% auto auto 50%; width: 14px; height: 14px; color: var(--text-secondary); pointer-events: none; transform: translate(-50%, -50%); } .agent-gui-node__project-rail-add-project-trigger:hover:not(:disabled) + .agent-gui-node__project-rail-add-project-icon, .agent-gui-node__project-rail-add-project-trigger:focus-visible + .agent-gui-node__project-rail-add-project-icon { color: var(--text-primary); } .room-issue-node__search-field { position: relative; flex: 1 1 auto; min-width: 0; } .room-issue-node__search-input { flex: 1 1 auto; width: 100%; min-width: 0; box-sizing: border-box; height: 32px !important; min-height: 32px; max-height: 32px; border: 0 !important; border-radius: var(--agent-gui-rail-control-radius) !important; padding-left: 12px; padding-right: 36px; font-size: 13px !important; line-height: 18px; appearance: none; } .room-issue-node__search-input:hover, .room-issue-node__search-input:focus, .room-issue-node__search-input:focus-visible { background: var(--transparency-hover); } .room-issue-node__search-field[data-has-value="false"] .room-issue-node__search-input { padding-right: 12px; } .room-issue-node__search-input::-webkit-search-cancel-button, .room-issue-node__search-input::-webkit-search-decoration { appearance: none; } .room-issue-node__search-clear-button { position: absolute; top: 50%; right: 4px; display: inline-flex; align-items: center; justify-content: center; width: 24px; min-width: 24px; height: 24px; min-height: 24px; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--text-tertiary); cursor: pointer; appearance: none; transform: translateY(-50%); } .room-issue-node__search-clear-button:hover, .room-issue-node__search-clear-button:focus-visible { color: var(--text-secondary); background: var(--transparency-block-hover); outline: none; } .room-issue-node__search-clear-button svg { width: 14px; height: 14px; } .agent-gui-node__rail-toolbar .room-issue-node__search-field, .agent-gui-node__rail-toolbar .room-issue-node__search-input { min-width: 0; overflow: hidden; } .agent-gui-node__rail-toolbar .room-issue-node__search-input { text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__rail-toolbar .room-issue-node__search-input::placeholder { text-overflow: ellipsis; } .agent-gui-node__new-conversation-icon-button { flex: 0 0 auto; width: auto; min-width: max-content; box-sizing: border-box; height: 32px; min-height: 32px; max-height: 32px; border: 0 !important; border-radius: var(--agent-gui-rail-control-radius) !important; font-size: 13px; gap: 8px; white-space: nowrap; } .agent-gui-node__new-conversation-icon-button svg { width: 14px; height: 14px; flex-shrink: 0; } .agent-gui-node__window-agent-info { color: var(--text-secondary); } .agent-gui-node__composer-send-button { width: 28px; min-width: 28px; height: 28px; min-height: 28px; border: 1px solid var(--text-primary); border-radius: 999px; background: var(--text-primary); color: var(--text-inverted); transition: border-color 140ms ease, background-color 140ms ease, color 140ms ease; } .agent-gui-node__composer-send-button:disabled { cursor: not-allowed; opacity: 0.55; } .agent-gui-node__composer-send-button svg { width: 18px; height: 18px; } /* Plan-review decision copy: the send button widens into a labeled pill ("Accept plan" / "Request changes") while the empty-send override is on. */ .agent-gui-node__composer-send-button[data-plan-review-label="true"] { display: inline-flex; width: auto; min-width: 28px; max-width: 220px; align-items: center; justify-content: center; gap: 6px; padding: 0 10px 0 12px; font-size: 12px; font-weight: 500; line-height: 1; } .agent-gui-node__composer-reference-trigger { min-width: 36px; min-height: 36px; padding: 0; } .agent-gui-node__composer-reference-trigger svg:first-child { width: 14px; height: 14px; } .agent-gui-node__gateway-status { display: flex; align-items: center; gap: 8px; margin: 0 18px 12px; padding: 0 14px; min-height: 38px; border: 1px solid var(--agent-gui-border-subtle); border-radius: 8px; background: var(--agent-gui-surface-muted); color: var(--agent-gui-text-secondary); font-size: 13px; line-height: 20px; font-weight: 600; } .agent-gui-node__gateway-status[data-state="starting"] { border-color: color-mix( in srgb, var(--agent-gui-accent) 24%, var(--agent-gui-border-subtle) ); color: var(--agent-gui-accent-strong); } .agent-gui-node__gateway-status[data-state="failed"] { align-items: flex-start; flex-direction: column; min-height: 0; padding-top: 10px; padding-bottom: 10px; border-color: color-mix( in srgb, var(--agent-gui-danger) 24%, var(--agent-gui-border-subtle) ); color: var(--agent-gui-danger); } .agent-gui-node__gateway-retry-button { width: fit-content; border: 1px solid color-mix(in srgb, var(--agent-gui-danger) 24%, var(--agent-gui-border)); border-radius: 6px; background: var(--agent-gui-surface-muted); padding: 6px 10px; color: var(--agent-gui-danger); font: inherit; font-size: 13px; font-weight: 600; } .agent-gui-node__gateway-retry-button:hover { background: color-mix(in srgb, var(--agent-gui-danger) 8%, transparent); border-color: color-mix( in srgb, var(--agent-gui-danger) 44%, var(--agent-gui-border) ); } .agent-gui-node__conversation-list { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; max-width: 100%; min-height: 0; overflow-x: hidden; overflow-y: auto; /* The native overlay scrollbar does not reserve a gutter on macOS, so the right inset must match the left side explicitly. */ padding: 0 12px 18px 12px; } .agent-gui-node__activity-heading { flex: 0 0 auto; min-width: 0; margin: 14px 0 0; padding: 4px 10px 6px; color: var(--text-secondary); font-size: 13px; font-weight: 500; line-height: 18px; } .agent-gui-node__activity-heading[data-first="true"] { margin-top: 0; } .agent-gui-node__activity-empty { min-width: 0; padding: 8px 10px 10px; color: var(--text-tertiary); font-size: 12px; line-height: 18px; } .agent-gui-node__conversation-section { position: relative; display: grid; min-width: 0; max-width: 100%; } .agent-gui-node__pinned-project-rail-header { min-width: 0; padding: 4px 10px; color: var(--text-secondary); font-size: 13px; font-weight: 400; line-height: 18px; } .agent-gui-node__conversation-section[data-project-dragging="true"] { opacity: 0.42; } .agent-gui-node__conversation-section[data-project-drop-indicator]::before { position: absolute; right: 6px; left: 6px; z-index: 4; height: 2px; border-radius: 999px; background: var(--agent-gui-accent); content: ""; pointer-events: none; } .agent-gui-node__conversation-section[data-project-drop-indicator="before"]::before { top: -1px; } .agent-gui-node__conversation-section[data-project-drop-indicator="after"]::before { bottom: -1px; } .agent-gui-node__project-drag-image { position: fixed; top: -1000px; left: -1000px; display: flex; max-width: 220px; align-items: center; gap: 7px; border: 1px solid var(--border-subtle); border-radius: 7px; background: var(--agent-gui-surface-raised); box-shadow: var(--shadow-elevated); color: var(--text-primary); padding: 7px 10px; font-size: 12px; pointer-events: none; } .agent-gui-node__project-drag-image > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__conversation-section + .agent-gui-node__conversation-section { margin-top: 12px; } .agent-gui-node__conversation-section[data-kind="project"] + .agent-gui-node__conversation-section[data-kind="project"] { margin-top: 2px; } .agent-gui-node__conversation-section[data-kind="pinned"] + .agent-gui-node__conversation-section[data-kind="conversations"], .agent-gui-node__conversation-section[data-kind="project"] + .agent-gui-node__conversation-section[data-kind="conversations"] { margin-top: 24px; } .agent-gui-node__conversation-section-header { display: flex; min-width: 0; max-width: 100%; align-items: center; justify-content: space-between; gap: 6px; border-radius: 6px; background-color: transparent; padding: 4px 6px 4px 10px; transition: background-color 140ms ease; } .agent-gui-node__conversation-section[data-kind="project"] > .agent-gui-node__conversation-section-header:hover { background-color: var(--agent-gui-surface-hover); } .agent-gui-node__conversation-section-toggle { position: relative; display: inline-flex; flex: 1 1 auto; min-width: 0; max-width: 100%; align-items: center; gap: 0; border: 0; border-radius: 6px; background: transparent; color: inherit; padding: 2px 0; text-align: left; } button.agent-gui-node__conversation-section-toggle { cursor: pointer; } button.agent-gui-node__conversation-section-toggle:hover { color: var(--text-primary); } .agent-gui-node__conversation-section-chevron { position: absolute; left: 0; width: 12px; height: 12px; flex: 0 0 auto; color: var(--text-tertiary); opacity: 0; pointer-events: none; transition: color 140ms ease, opacity 140ms ease, transform 140ms ease; } .agent-gui-node__conversation-section[data-kind="project"] > .agent-gui-node__conversation-section-header:hover .agent-gui-node__conversation-section-chevron { opacity: 1; } .agent-gui-node__conversation-section-toggle[aria-expanded="true"] .agent-gui-node__conversation-section-chevron { transform: rotate(90deg); } button.agent-gui-node__conversation-section-toggle:hover .agent-gui-node__conversation-section-chevron { color: var(--text-secondary); } .agent-gui-node__conversation-section-label { display: inline-flex; flex: 1 1 auto; min-width: 0; max-width: 100%; align-items: center; gap: 6px; overflow: hidden; color: var(--text-secondary); font-size: 13px; line-height: 18px; font-weight: 400; } .agent-gui-node__conversation-section-label > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__conversation-section-label-icon { width: 12px; height: 12px; flex: 0 0 auto; transition: opacity 140ms ease; } .agent-gui-node__conversation-section[data-kind="project"] > .agent-gui-node__conversation-section-header:hover .agent-gui-node__conversation-section-label-icon { opacity: 0; } .agent-gui-node__conversation-section-actions { position: relative; z-index: 1; display: inline-flex; flex: none; align-items: center; gap: 4px; min-width: 44px; pointer-events: auto; } .agent-gui-node__conversation-section[data-kind="conversations"] .agent-gui-node__conversation-section-actions { min-width: 0; } .agent-gui-node__conversation-section-action-tooltip-wrap { display: inline-flex; flex: none; } .agent-gui-node__conversation-section-action-tooltip { max-width: 180px; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__conversation-section-more-button { flex: none; opacity: 0; pointer-events: none; transition: opacity 140ms ease, color 140ms ease; } .agent-gui-node__conversation-section-more-button svg { width: 14px; height: 14px; } .agent-gui-node__conversation-section:hover .agent-gui-node__conversation-section-more-button, .agent-gui-node__conversation-section:focus-within .agent-gui-node__conversation-section-more-button, .agent-gui-node__conversation-section-more-button[aria-expanded="true"] { opacity: 1; pointer-events: auto; } .agent-gui-node__conversation-section-items { display: grid; min-width: 0; max-width: 100%; grid-template-rows: 1fr; opacity: 1; visibility: visible; transition: grid-template-rows 180ms ease, opacity 140ms ease, visibility 0s linear 0s; padding-left: 14px; padding-top: 8px; } .agent-gui-node__conversation-section[data-kind="project"] .agent-gui-node__conversation-section-items { padding-left: 0; padding-top: 4px; } .agent-gui-node__conversation-section[data-kind="pinned"] .agent-gui-node__conversation-section-items { padding-left: 0; } .agent-gui-node__conversation-section[data-kind="conversations"] .agent-gui-node__conversation-section-items { padding-left: 0; } .agent-gui-node__conversation-section[data-collapsed="true"] .agent-gui-node__conversation-section-items { grid-template-rows: 0fr; opacity: 0; pointer-events: none; visibility: hidden; transition: grid-template-rows 180ms ease, opacity 120ms ease, visibility 0s linear 180ms; } .agent-gui-node__conversation-section-items-inner { display: grid; min-height: 0; min-width: 0; max-width: 100%; gap: 4px; overflow: hidden; } .agent-gui-node__conversation-section[data-kind="project"] .agent-gui-node__conversation-section-items-inner { gap: 2px; } .agent-gui-node__conversation-section-pagination { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-width: 0; margin-bottom: 12px; padding: 2px 6px 0 22px; } .agent-gui-node__conversation-section-pagination-button { min-width: 0; border: 0; border-radius: 4px; background: transparent; color: var(--text-tertiary); cursor: pointer; font: inherit; font-size: 12px; line-height: 18px; padding: 1px 4px; text-align: left; transition: background-color 140ms ease, color 140ms ease; } .agent-gui-node__conversation-section-pagination-button:hover, .agent-gui-node__conversation-section-pagination-button:focus-visible { background-color: var(--agent-gui-surface-hover); color: var(--text-primary); } @media (prefers-reduced-motion: reduce) { .agent-gui-node__conversation-section-items { transition: none; } } .agent-gui-node__conversation-section-empty { min-width: 0; padding: 7px 12px 7px 26px; color: var(--text-tertiary); font-size: 13px; line-height: 18px; } .agent-gui-node__conversation-list-skeleton { display: grid; gap: 10px; padding: 2px 0; } .agent-gui-node__conversation-list-skeleton-row { position: relative; display: grid; grid-template-columns: 16px minmax(0, 1fr); grid-template-rows: repeat(2, 10px); column-gap: 10px; row-gap: 8px; align-items: center; min-height: 46px; overflow: hidden; border-radius: 8px; background: color-mix(in srgb, var(--transparency-block) 54%, transparent); padding: 10px 12px; } .agent-gui-node__conversation-list-skeleton-row::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient( 100deg, transparent 0%, color-mix(in srgb, var(--background-fronted) 48%, transparent) 46%, transparent 82% ); animation: agent-gui-conversation-list-skeleton-shimmer 1.18s ease-in-out infinite; } .agent-gui-node__conversation-list-skeleton-spine, .agent-gui-node__conversation-list-skeleton-rib { position: relative; z-index: 1; display: block; border-radius: 999px; background: color-mix( in srgb, var(--agent-gui-text-tertiary) 18%, transparent ); } .agent-gui-node__conversation-list-skeleton-spine { grid-row: 1 / -1; width: 3px; height: 26px; justify-self: center; } .agent-gui-node__conversation-list-skeleton-rib { height: 12px; } .agent-gui-node__conversation-list-skeleton-rib-primary { width: 78%; } .agent-gui-node__conversation-list-skeleton-rib-secondary { width: 52%; opacity: 0.72; } .agent-gui-node__conversation-list-skeleton-row[data-size="long"] .agent-gui-node__conversation-list-skeleton-rib-primary { width: 88%; } .agent-gui-node__conversation-list-skeleton-row[data-size="medium"] .agent-gui-node__conversation-list-skeleton-rib-primary { width: 72%; } .agent-gui-node__conversation-list-skeleton-row[data-size="short"] .agent-gui-node__conversation-list-skeleton-rib-primary { width: 58%; } .agent-gui-node__conversation-list-skeleton-row[data-size="long"] .agent-gui-node__conversation-list-skeleton-rib-secondary { width: 60%; } .agent-gui-node__conversation-list-skeleton-row[data-size="medium"] .agent-gui-node__conversation-list-skeleton-rib-secondary { width: 48%; } .agent-gui-node__conversation-list-skeleton-row[data-size="short"] .agent-gui-node__conversation-list-skeleton-rib-secondary { width: 38%; } .agent-gui-node__conversation-item { --agent-gui-conversation-actions-width: 72px; --agent-gui-conversation-actions-inset: 4px; --agent-gui-conversation-actions-gap: 8px; position: relative; display: block; box-sizing: border-box; width: 100%; max-width: 100%; height: 32px; min-height: 32px; border: 1px solid transparent; border-radius: 6px; background-color: transparent; color: var(--agent-gui-text-primary); overflow: hidden; padding: 0; text-align: left; transition: background-color 140ms ease, border-color 140ms ease; } .agent-gui-node__conversation-item[data-presentation="activity"] { height: auto; min-height: 56px; margin-bottom: 4px; } .agent-gui-node__conversation-item[data-presentation="activity"] .agent-gui-node__conversation-select { align-items: start; min-height: 56px; padding-top: 8px; padding-bottom: 8px; } .agent-gui-node__conversation-activity-text { display: flex; min-width: 0; flex-direction: column; gap: 2px; overflow: hidden; } .agent-gui-node__conversation-activity-project-label { display: block; flex: 0 1 auto; min-width: 0; overflow: hidden; color: var(--text-tertiary); font-size: 12px; line-height: 18px; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__conversation-activity-secondary { display: flex; align-items: flex-start; min-width: 0; max-height: 34px; overflow: hidden; color: var(--text-tertiary); font-size: 12px; line-height: 17px; } .agent-gui-node__conversation-activity-secondary > span { display: -webkit-box; min-width: 0; overflow: hidden; text-overflow: ellipsis; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .agent-gui-node__conversation-activity-secondary-icon { display: block; flex: 0 0 12px; width: 12px; height: 12px; margin: 2px 4px 0 0; } .agent-gui-node__conversation-item[data-presentation="activity"] .agent-gui-node__conversation-actions { top: 4px; transform: none; } .agent-gui-node__conversation-item:has( .agent-gui-node__conversation-open-window-button ) { --agent-gui-conversation-actions-width: 96px; } .agent-gui-node__conversation-item:focus-within, .agent-gui-node__conversation-item:hover, .agent-gui-node__conversation-item[data-state="open"], .agent-gui-node__conversation-item:has( .agent-gui-node__conversation-actions [data-state="open"] ) { background-color: var(--agent-gui-surface-hover); } .agent-gui-node__conversation-item[data-active="true"] { border-color: var(--line-1); background-color: var(--background-fronted); } .agent-gui-node__conversation-select { display: grid; box-sizing: border-box; grid-template-columns: minmax(0, 1fr) auto; gap: var(--agent-gui-conversation-actions-gap); align-items: center; width: 100%; max-width: 100%; height: 100%; min-width: 0; border: 0; background: transparent; color: inherit; overflow: hidden; padding: 0 8px 0 12px; text-align: left; transition: padding-right 140ms ease; } .agent-gui-node__conversation-section[data-kind="project"] .agent-gui-node__conversation-select { padding-left: 26px; } .agent-gui-node__conversation-section[data-kind="pinned"] .agent-gui-node__conversation-select { padding-left: 26px; } .agent-gui-node__conversation-section[data-kind="conversations"] .agent-gui-node__conversation-select { padding-left: 26px; } .agent-gui-node__conversation-item:hover .agent-gui-node__conversation-select, .agent-gui-node__conversation-item[data-state="open"] .agent-gui-node__conversation-select, .agent-gui-node__conversation-item:has( .agent-gui-node__conversation-actions [data-state="open"] ) .agent-gui-node__conversation-select, .agent-gui-node__conversation-item:has( .agent-gui-node__conversation-actions:focus-within ) .agent-gui-node__conversation-select { grid-template-columns: minmax(0, 1fr) 0; padding-right: calc( var(--agent-gui-conversation-actions-width) + var(--agent-gui-conversation-actions-inset) ); } .agent-gui-node__conversation-item[data-pending-delete="true"] .agent-gui-node__conversation-select { grid-template-columns: minmax(0, 1fr) 0; padding-right: min(96px, calc(100% - 24px)); } .agent-gui-node__conversation-meta { display: inline-flex; align-items: center; justify-content: flex-end; min-width: 28px; gap: 4px; } .agent-gui-node__conversation-meta[data-kind="loading"], .agent-gui-node__conversation-meta[data-kind="waiting"], .agent-gui-node__conversation-meta[data-kind="failed"], .agent-gui-node__conversation-meta[data-kind="unread-complete"] { width: 28px; min-width: 28px; justify-content: center; } .agent-gui-node__conversation-meta[data-worktree="true"] { width: auto; min-width: max-content; } .agent-gui-node__conversation-meta[data-kind="time"] { margin-right: 6px; min-width: max-content; white-space: nowrap; } .agent-gui-node__conversation-actions { position: absolute; top: 50%; right: var(--agent-gui-conversation-actions-inset); z-index: 1; display: inline-flex; align-items: center; justify-content: flex-start; gap: 0; box-sizing: border-box; min-width: var(--agent-gui-conversation-actions-width); max-width: calc(100% - 20px); opacity: 0; transform: translateY(-50%); } .agent-gui-node__conversation-more-button { background: transparent; color: var(--text-tertiary); } .agent-gui-node__conversation-more-button svg { width: 16px; height: 16px; } .agent-gui-node__conversation-more-button:not(:disabled):hover, .agent-gui-node__conversation-more-button:not(:disabled):focus-visible { background: var(--transparency-hover); color: var(--text-primary); } .agent-gui-node__conversation-delete-button, .agent-gui-node__conversation-open-window-button, .agent-gui-node__conversation-pin-button { background: transparent; background-color: transparent; color: var(--text-tertiary); } .agent-gui-node__conversation-pin-button svg, .agent-gui-node__conversation-open-window-button svg, .agent-gui-node__conversation-delete-button svg { width: 14px; height: 14px; } .agent-gui-node__conversation-item:hover .agent-gui-node__conversation-actions, .agent-gui-node__conversation-item[data-state="open"] .agent-gui-node__conversation-actions, .agent-gui-node__conversation-actions:focus-within, .agent-gui-node__conversation-actions:has([data-state="open"]) { opacity: 1; /* Only in the visible state: fading in on hover stays smooth while leaving the row swaps back to the meta icon instantly, with no lingering cross-fade overlapping the two. */ transition: opacity 140ms ease; } .agent-gui-node__conversation-item[data-pinned="true"] .agent-gui-node__conversation-pin-button { color: var(--agent-gui-accent); } .agent-gui-node__conversation-item[data-pending-delete="true"] .agent-gui-node__conversation-actions { opacity: 1; } .agent-gui-node__conversation-item[data-pending-delete="true"] .agent-gui-node__conversation-delete-button { width: auto; min-width: 76px; background: transparent; color: var(--agent-gui-danger, var(--state-danger)); padding: 0 10px; opacity: 1; } .agent-gui-node__conversation-delete-confirm-text { display: inline-flex; align-items: center; height: 100%; font-size: 11px; font-weight: 600; line-height: 1; } .agent-gui-node__conversation-item[data-pending-delete="true"] .agent-gui-node__conversation-meta, .agent-gui-node__conversation-item:hover .agent-gui-node__conversation-meta, .agent-gui-node__conversation-item[data-state="open"] .agent-gui-node__conversation-meta, .agent-gui-node__conversation-item:has( .agent-gui-node__conversation-actions:focus-within ) .agent-gui-node__conversation-meta, .agent-gui-node__conversation-item:has( .agent-gui-node__conversation-actions [data-state="open"] ) .agent-gui-node__conversation-meta { width: 0; min-width: 0; margin-right: 0; overflow: hidden; opacity: 0; } .agent-gui-node__conversation-title-row { display: inline-flex; align-items: center; min-width: 0; max-width: 100%; gap: 6px; overflow: hidden; } .agent-gui-node__conversation-provider-icon { flex: 0 0 14px; width: 14px; height: 14px; } .agent-gui-node__conversation-provider-image { display: block; object-fit: contain; } .agent-gui-node__conversation-provider-mask-icon { display: inline-block; color: var(--text-tertiary); background-color: currentColor; mask-position: center; mask-repeat: no-repeat; mask-size: contain; -webkit-mask-position: center; -webkit-mask-repeat: no-repeat; -webkit-mask-size: contain; } .agent-gui-node__conversation-title-mention-icon { display: inline-flex; width: 14px; height: 14px; flex: 0 0 14px; align-items: center; justify-content: center; color: var(--text-primary); } .agent-gui-node__conversation-title-mention-icon > svg { width: 14px; height: 14px; } .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-open-window-button:not(:disabled):hover, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-open-window-button:not( :disabled ):focus-visible, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-open-window-button:not( :disabled ):active { background: transparent; background-color: transparent; color: var(--text-primary); } .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-open-window-button:not(:disabled):hover svg, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-open-window-button:not( :disabled ):focus-visible svg, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-open-window-button:not(:disabled):active svg { color: var(--text-primary); } .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-pin-button:not(:disabled):hover, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-pin-button:not(:disabled):focus-visible, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-pin-button:not(:disabled):active { background: transparent; background-color: transparent; color: var(--agent-gui-accent); } .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-pin-button:not(:disabled):hover svg, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-pin-button:not(:disabled):focus-visible svg, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-pin-button:not(:disabled):active svg { color: var(--agent-gui-accent); fill: currentColor; } .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-delete-button:not(:disabled):hover, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-delete-button:not( :disabled ):focus-visible, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-delete-button:not(:disabled):active { background: transparent; background-color: transparent; color: var(--agent-gui-danger, var(--state-danger)); } .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-delete-button:not(:disabled):hover svg, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-delete-button:not( :disabled ):focus-visible svg, .agent-gui-node__conversation-actions > button.agent-gui-node__conversation-delete-button:not(:disabled):active svg { color: var(--agent-gui-danger, var(--state-danger)); fill: currentColor; } .agent-gui-node__conversation-delete-button:disabled, .agent-gui-node__conversation-open-window-button:disabled, .agent-gui-node__conversation-pin-button:disabled { cursor: not-allowed; opacity: 0.4; } .agent-gui-node__conversation-title { display: block; flex: 1 1 auto; min-width: 0; overflow: hidden; color: var(--text-primary); font-size: 13px; line-height: 18px; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__conversation-title [data-workspace-agent-markdown-shell="true"], .agent-gui-node__conversation-title [data-workspace-agent-markdown="true"] { display: block; height: 18px; line-height: inherit; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__conversation-time { display: inline-flex; align-items: center; flex: none; color: var(--text-tertiary); font-size: 11px; font-weight: 400; line-height: 18px; white-space: nowrap; } .agent-gui-node__conversation-status-glyph { display: block; flex: none; width: 14px; height: 14px; transform-origin: center; } .agent-gui-node__conversation-worktree-glyph { display: block; flex: none; width: 15px; height: 15px; color: var(--text-tertiary); } .agent-gui-node__conversation-meta[data-kind="loading"] { color: var(--agent-gui-text-tertiary); } .agent-gui-node__conversation-meta[data-kind="failed"] { width: 28px; height: 28px; min-width: 28px; justify-content: center; color: var(--state-danger); } .agent-gui-node__conversation-meta[data-kind="waiting"] { width: 28px; height: 28px; min-width: 28px; justify-content: center; color: var(--color-amber-500); } .agent-gui-node__conversation-meta[data-kind="waiting"] .agent-gui-node__conversation-status-glyph, .agent-gui-node__conversation-meta[data-kind="failed"] .agent-gui-node__conversation-status-glyph { width: 16px; height: 16px; } .agent-gui-node__conversation-meta[data-kind="failed"] .agent-gui-node__conversation-status-glyph { color: var(--state-danger); } .agent-gui-node__conversation-unread-lamp { width: 6px; height: 6px; border-radius: 999px; background: var(--agent-gui-accent); } @keyframes agent-gui-conversation-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes agent-gui-conversation-list-skeleton-shimmer { 100% { transform: translateX(100%); } } @keyframes agent-gui-interactive-prompt-enter { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .agent-gui-node__detail { position: relative; display: flex; flex: 1 1 auto; flex-direction: column; box-sizing: border-box; width: 100%; min-width: 0; min-height: 0; background: inherit; } .agent-gui-node__detail-workbench { display: flex; flex: 1 1 auto; width: 100%; min-width: 0; min-height: 0; overflow: hidden; } .agent-gui-node__detail-primary { display: flex; flex: 1 1 auto; flex-direction: column; min-width: 0; min-height: 0; background: inherit; } .agent-gui-node__side-pane { position: relative; display: flex; flex: 0 0 var(--agent-gui-side-pane-width, 440px); flex-direction: column; width: var(--agent-gui-side-pane-width, 440px); min-width: 360px; max-width: 600px; min-height: 0; overflow: hidden; border-left: 1px solid var(--line-1, var(--tutti-line-1)); background: var(--agent-gui-session-sidepanel-background); } .agent-gui-node__side-surface { display: flex; flex: 1 1 auto; flex-direction: column; width: 100%; min-width: 0; min-height: 0; overflow: hidden; background: var(--agent-gui-session-sidepanel-background); } .agent-gui-node__side-resize-handle { position: absolute; top: 0; bottom: 0; left: -4px; z-index: 8; width: 8px; cursor: col-resize; touch-action: none; } .agent-gui-node__side-resize-handle::after { position: absolute; top: 0; bottom: 0; left: 3px; width: 2px; background: transparent; content: ""; transition: background 120ms ease; } .agent-gui-node__side-resize-handle:hover::after, .agent-gui-node__side-resize-handle:focus-visible::after { background: var(--tutti-purple); } .agent-gui-node__side-resize-handle:focus-visible { outline: none; } .agent-gui-node__side-close-button { display: inline-grid; flex: 0 0 auto; place-items: center; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 8px; background: transparent; color: var(--text-secondary, var(--tutti-text-secondary)); cursor: pointer; } .agent-gui-node__side-header { display: flex; flex: 0 0 44px; align-items: center; justify-content: flex-end; padding: 6px 10px 4px; } .agent-gui-node__side-close-button:hover { background: var(--transparency-block, var(--tutti-surface-2)); color: var(--text-primary, var(--tutti-text-primary)); } .agent-gui-node__side-close-button:focus-visible { outline: 2px solid var(--tutti-purple); outline-offset: 1px; } .agent-gui-node__side-timeline-frame { display: flex; flex: 1 1 auto; min-height: 0; } .agent-gui-node__side-timeline { display: grid; align-content: start; min-height: 0; padding: 8px 18px 112px; scroll-padding-bottom: 112px; } .agent-gui-node__side-empty-state { display: flex; min-height: 100%; flex-direction: column; align-items: center; justify-content: center; padding: 56px 20px; color: var(--text-secondary, var(--tutti-text-secondary)); text-align: center; } .agent-gui-node__side-empty-state-icon { margin-bottom: 18px; color: var(--text-secondary, var(--tutti-text-secondary)); } .agent-gui-node__side-empty-state-title { color: var(--text-primary, var(--tutti-text-primary)); font-size: 17px; font-weight: 600; line-height: 24px; } .agent-gui-node__side-empty-state-description { max-width: 360px; margin: 8px 0 0; font-size: 14px; line-height: 22px; } .agent-gui-node__side-error { margin: 0 12px 12px; color: var(--destructive, var(--tutti-destructive)); font-size: 13px; line-height: 20px; } .agent-gui-node__side-composer { position: sticky; bottom: 0; z-index: 4; flex: 0 0 auto; background: linear-gradient( to bottom, transparent, var(--agent-gui-session-sidepanel-background) 18px ); } .agent-gui-node__side-composer > .agent-gui-node__composer { padding-right: 10px; padding-left: 10px; } /* Dock Composer defaults to the main conversation-flow surface. Side is an adapter host for the shared Composer, so keep the dock padding and footer on the tool-sidebar surface without changing the shared input-card surface. */ .agent-gui-node__side-composer > .agent-gui-node__composer[data-layout="dock"], .agent-gui-node__side-composer > .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-footer { background: var(--agent-gui-session-sidepanel-background); } @media (max-width: 860px) { .agent-gui-node__detail-workbench:has(.agent-gui-node__side-pane) > .agent-gui-node__detail-primary { display: none; } .agent-gui-node__side-pane { flex-basis: 100%; width: 100%; min-width: 0; max-width: none; border-left: 0; } .agent-gui-node__side-resize-handle { display: none; } } .agent-gui-node__timeline { --agent-gui-message-locator-inline-offset: var(--agent-gui-detail-padding-x); position: relative; display: grid; flex: 1 1 auto; align-content: start; gap: 24px; min-height: 0; overflow: auto; padding: 32px var(--agent-gui-detail-padding-x) calc(24px + var(--agent-gui-bottom-dock-safe-area, 0px)); scroll-padding-bottom: calc( 24px + var(--agent-gui-bottom-dock-safe-area, 0px) ); background: transparent; } .agent-gui-transcript-row { display: grid; width: 100%; min-width: 0; transform-origin: top center; } .agent-gui-message-locator { --agent-message-locator-dot-size: 6px; --agent-message-locator-hit-size: 36px; --agent-message-locator-center-offset: 18px; --agent-message-locator-inline-shift: 8px; --agent-message-locator-scrollbar-gap: 8px; --agent-message-locator-visible-height: 100vh; --agent-message-locator-visible-top-offset: 0px; --agent-message-locator-viewport-height: var(--agent-message-locator-height); position: sticky; top: max( 0px, calc( var(--agent-message-locator-visible-top-offset) + ( ( var(--agent-message-locator-visible-height) - var(--agent-message-locator-viewport-height) ) / 2 ) ) ); right: 0; z-index: 7; justify-self: stretch; width: calc(100% + var(--agent-gui-message-locator-inline-offset)); height: var(--agent-message-locator-viewport-height); margin-right: calc(-1 * var(--agent-gui-message-locator-inline-offset)); margin-bottom: calc(-1 * var(--agent-message-locator-viewport-height)); pointer-events: none; } .agent-gui-message-locator__viewport { position: absolute; top: 0; right: calc( var(--agent-message-locator-scrollbar-gap) + var(--agent-message-locator-center-offset) - var(--agent-message-locator-hit-size) / 2 - var(--agent-message-locator-inline-shift) ); width: var(--agent-message-locator-hit-size); height: 100%; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; pointer-events: auto; scrollbar-width: none; cursor: pointer; z-index: 1; } .agent-gui-message-locator__viewport::-webkit-scrollbar { display: none; } .agent-gui-message-locator__content { position: relative; min-height: 100%; height: var(--agent-message-locator-height); } .agent-gui-message-locator__track-segment { position: absolute; top: var(--agent-message-locator-segment-position); left: calc(var(--agent-message-locator-hit-size) / 2); width: 1px; height: 8px; transform: translate(-50%, -50%); background: var(--line-1, var(--nexight-line-1)); } .agent-gui-message-locator__tick { position: absolute; top: var(--agent-message-locator-position); left: 0; display: grid; width: var(--agent-message-locator-hit-size); height: var(--agent-message-locator-hit-size); padding: 0; border: 0; place-items: center; background: transparent; color: inherit; transform: translateY(-50%); cursor: pointer; pointer-events: auto; touch-action: manipulation; -webkit-appearance: none; appearance: none; } .agent-gui-message-locator__dot { box-sizing: border-box; width: var(--agent-message-locator-dot-size); height: var(--agent-message-locator-dot-size); border: 0 solid transparent; border-radius: 999px; background: color-mix( in srgb, var(--text-tertiary, var(--tutti-text-tertiary)) 62%, transparent ); transition: background 140ms ease, border-color 140ms ease, transform 140ms ease; } .agent-gui-message-locator__tick:hover .agent-gui-message-locator__dot, .agent-gui-message-locator__tick:focus-visible .agent-gui-message-locator__dot, .agent-gui-message-locator__tick[data-selected="true"] .agent-gui-message-locator__dot { transform: scale(1.6667); } .agent-gui-message-locator__tick[data-selected="true"] .agent-gui-message-locator__dot { border-width: 2px; border-color: var(--text-secondary, var(--tutti-text-secondary)); background: transparent; } .agent-gui-message-locator__tick:hover .agent-gui-message-locator__dot, .agent-gui-message-locator__tick:focus-visible .agent-gui-message-locator__dot { border-width: 2px; border-color: var(--text-primary, var(--tutti-text-primary)); background: transparent; } .agent-gui-message-locator__tick[data-unread-agent-response="true"] .agent-gui-message-locator__dot { background: var(--tutti-purple); } .agent-gui-message-locator__tick[data-unread-agent-response="true"]:hover .agent-gui-message-locator__dot, .agent-gui-message-locator__tick[data-unread-agent-response="true"]:focus-visible .agent-gui-message-locator__dot { border-width: 2px; border-color: var(--tutti-purple); background: transparent; } .agent-gui-message-locator__panel { position: absolute; top: 50%; right: calc(22px + var(--agent-message-locator-scrollbar-gap)); display: grid; width: min(360px, calc(100vw - 112px)); max-width: max-content; max-height: calc(var(--agent-message-locator-visible-height) - 32px); gap: 12px; overflow-y: auto; padding: 16px; border: 1px solid color-mix(in srgb, var(--line-2, var(--tutti-line-2)) 72%, transparent); border-radius: 8px; background: var( --background-fronted, var(--surface-1, var(--tutti-surface-1)) ); box-shadow: var(--shadow-panel); color: var(--text-primary, var(--tutti-text-primary)); opacity: 0; transform: translateY(-50%) translateX(4px); transition: opacity 140ms ease, transform 140ms ease; pointer-events: none; } .agent-gui-message-locator__panel[data-open="true"] { opacity: 1; transform: translateY(-50%) translateX(0); pointer-events: auto; } .agent-gui-message-locator__panel-item { display: block; min-width: 0; max-width: 100%; padding: 0; border: 0; border-radius: 6px; background: transparent; color: var(--text-tertiary, var(--tutti-text-tertiary)); text-align: left; cursor: pointer; transition: color 160ms ease; } .agent-gui-message-locator__panel-item:hover, .agent-gui-message-locator__panel-item:focus-visible { background: color-mix( in srgb, var(--surface-2, var(--tutti-surface-2)) 86%, transparent ); outline: none; } .agent-gui-message-locator__panel-item[data-active="true"] { color: var(--text-primary, var(--tutti-text-primary)); } @media (prefers-reduced-motion: reduce) { .agent-gui-message-locator__panel, .agent-gui-message-locator__panel-item { transition: none; } } .agent-gui-message-locator__panel-item-text { display: block; overflow: hidden; max-width: 100%; text-align: left; font-size: 13px; font-weight: 520; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-transcript-virtual { position: relative; width: 100%; min-width: 0; contain: layout; overflow-anchor: none; } .agent-gui-transcript-virtual-item { position: absolute; top: 0; left: 0; display: grid; box-sizing: border-box; width: 100%; min-width: 0; padding-bottom: 16px; will-change: transform; } .agent-gui-transcript-virtual-item > .agent-gui-transcript-row + .agent-gui-transcript-row, .agent-gui-transcript-virtual-item > [data-testid="agent-transcript-turn-divider"] + .agent-gui-transcript-row { margin-top: 16px; } .agent-gui-transcript-row[data-agent-transcript-row-enter="true"] { animation: agent-gui-transcript-row-enter 180ms cubic-bezier(0.16, 1, 0.3, 1) both; } @keyframes agent-gui-transcript-row-enter { from { opacity: 0; } to { opacity: 1; } } @media (prefers-reduced-motion: reduce) { .agent-gui-transcript-row[data-agent-transcript-row-enter="true"] { animation: none; } } .workspace-agents-status-panel__conversation-timeline.agent-gui-node__timeline { --agent-gui-message-locator-inline-offset: 28px; padding-right: 28px; padding-left: 28px; } .agent-gui-node__timeline-with-composer { padding-top: 24px; padding-bottom: calc(120px + var(--agent-gui-bottom-dock-safe-area, 0px)); scroll-padding-bottom: calc( 120px + var(--agent-gui-bottom-dock-safe-area, 0px) ); } .agent-gui-node__timeline-with-composer.agent-gui-node__timeline--scrolled-from-top { -webkit-mask-image: linear-gradient( 180deg, transparent 0, rgb(0 0 0 / 0.18) 10px, rgb(0 0 0 / 0.62) 26px, black 44px ); mask-image: linear-gradient( 180deg, transparent 0, rgb(0 0 0 / 0.18) 10px, rgb(0 0 0 / 0.62) 26px, black 44px ); } .agent-gui-node__timeline-unavailable-chat-empty { display: flex; align-items: center; justify-content: center; padding-bottom: 24px; scroll-padding-bottom: 24px; } .agent-gui-node__timeline-centered { display: flex; align-items: stretch; justify-content: center; } .agent-gui-node__transcript-skeleton { display: grid; gap: 20px; width: 100%; min-width: 0; } .agent-gui-node__transcript-skeleton-row { display: flex; flex-direction: column; gap: 9px; width: min(72%, 560px); min-width: 0; } .agent-gui-node__transcript-skeleton-row-user { justify-self: end; align-items: flex-end; width: min(48%, 360px); } .agent-gui-node__transcript-skeleton-row-assistant { justify-self: start; align-items: flex-start; } .agent-gui-node__transcript-skeleton-line, .agent-gui-node__transcript-skeleton-bubble { position: relative; display: block; overflow: hidden; height: 16px; border-radius: 4px; background: var(--transparency-block); } .agent-gui-node__transcript-skeleton-line::after, .agent-gui-node__transcript-skeleton-bubble::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient( 90deg, transparent 0%, color-mix(in srgb, var(--background-fronted) 42%, transparent) 50%, transparent 100% ); animation: agent-gui-transcript-skeleton-shimmer 1.2s ease-in-out infinite; } .agent-gui-node__transcript-skeleton-line-long { width: 100%; } .agent-gui-node__transcript-skeleton-line-medium { width: 72%; } .agent-gui-node__transcript-skeleton-line-short { width: 46%; } @keyframes agent-gui-transcript-skeleton-shimmer { 100% { transform: translateX(100%); } } @media (prefers-reduced-motion: reduce) { .agent-gui-node__conversation-list-skeleton-row::after, .agent-gui-node__transcript-skeleton-line::after, .agent-gui-node__transcript-skeleton-bubble::after { animation: none; } } .agent-gui-node__bottom-dock { position: sticky; bottom: 0; z-index: 4; display: grid; align-self: stretch; box-sizing: border-box; gap: 0; margin-right: auto; margin-left: auto; width: 100%; margin-top: auto; padding-top: 0; background: transparent; border-top: 0; pointer-events: none; } .agent-gui-node__bottom-dock > .agent-gui-node__composer { padding-right: 12px; padding-left: 12px; pointer-events: none; } .agent-gui-node__bottom-dock-scroll-to-bottom { position: absolute; bottom: calc( 100% + var(--agent-gui-bottom-dock-floating-safe-area, 0px) + 8px ); left: 50%; z-index: 6; display: inline-grid; place-items: center; width: 34px; height: 34px; margin: 0; padding: 0; border: 1px solid color-mix(in srgb, var(--line-2, var(--tutti-line-2)) 72%, transparent); border-radius: 999px; background: var(--background-fronted, var(--tutti-surface-1)); box-shadow: 0 10px 26px rgb(0 0 0 / 10%); color: var(--text-secondary, var(--tutti-text-secondary)); pointer-events: auto; cursor: pointer; transform: translateX(-50%); transition: background 140ms ease, color 140ms ease, transform 140ms ease; } .agent-gui-node__bottom-dock-scroll-to-bottom:hover { background: var(--background-fronted, var(--tutti-surface-1)); color: var(--text-primary, var(--tutti-text-primary)); transform: translateX(-50%) translateY(-1px); } .agent-gui-node__bottom-dock-scroll-to-bottom:focus-visible { border-color: color-mix( in srgb, var(--text-secondary, var(--tutti-text-secondary)) 46%, transparent ); background: var(--background-fronted, var(--tutti-surface-1)); color: var(--text-primary, var(--tutti-text-primary)); outline: none; transform: translateX(-50%) translateY(-1px); } .agent-gui-node__bottom-dock-scroll-to-bottom:active { transform: translateX(-50%); } @media (prefers-reduced-motion: reduce) { .agent-gui-node__bottom-dock-scroll-to-bottom { transition: none; } } .agent-gui-node__bottom-dock > .agent-gui-chrome__session-chrome, .agent-gui-node__bottom-dock-prompt, .agent-gui-node__bottom-dock > .agent-gui-node__composer .agent-gui-node__composer-floating-prompt, .agent-gui-node__bottom-dock > .agent-gui-node__composer .agent-gui-node__composer-input-shell { pointer-events: auto; } .agent-gui-node__bottom-dock-prompt { position: relative; z-index: 5; margin: 0 12px 8px; } .agent-gui-node__empty, .agent-gui-node__empty-state { color: var(--agent-gui-text-secondary); font-size: 13px; line-height: 20px; } .agent-gui-node__empty-state { display: flex; flex: 1 1 auto; align-items: center; justify-content: center; min-height: 0; margin: 0; padding: 16px 14px; color: var(--text-secondary); text-align: center; } .agent-gui-node__conversation-rail-load-error { display: flex; flex: 1 1 auto; min-height: 0; min-width: 0; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 16px 14px; color: var(--text-secondary); font-size: 13px; line-height: 20px; text-align: center; } .agent-gui-node__conversation-rail-load-error-icon { width: 20px; height: 20px; color: var(--text-secondary); } .agent-gui-node__unavailable-chat-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; min-width: 0; padding: 24px; color: var(--agent-gui-text-tertiary, var(--text-tertiary)); text-align: center; } .agent-gui-node__unavailable-chat-empty-icon { width: 25px; height: 25px; flex: none; color: var(--text-tertiary); } .agent-gui-node__unavailable-chat-empty-text { margin-top: 10px; color: var(--text-tertiary); font-size: 13px; font-weight: 500; line-height: 20px; } .agent-gui-node__timeline-row { display: flex; width: 100%; min-width: 0; } .agent-gui-node__timeline-row[data-kind="user"] { justify-content: flex-end; } .agent-gui-node__timeline-row[data-kind="assistant"], .agent-gui-node__timeline-row[data-kind="tool"] { justify-content: flex-start; } .agent-gui-node__timeline-row[data-kind="system"] { justify-content: center; } .agent-gui-node__layout [data-slot="status-dot"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"] { --agent-gui-status-dot-color: var( --agent-gui-text-tertiary, var(--text-tertiary) ); display: inline-flex; flex: 0 0 auto; border-radius: 999px; background: var(--agent-gui-status-dot-color); } .agent-gui-node__layout [data-slot="status-dot"][data-size="xs"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-size="xs"] { width: 6px; height: 6px; } .agent-gui-node__layout [data-slot="status-dot"][data-size="sm"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-size="sm"] { width: 8px; height: 8px; } .agent-gui-node__layout [data-slot="status-dot"][data-size="md"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-size="md"] { width: 10px; height: 10px; } .agent-gui-node__layout [data-slot="status-dot"][data-tone="neutral"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-tone="neutral"] { --agent-gui-status-dot-color: var( --agent-gui-text-tertiary, var(--text-tertiary) ); } .agent-gui-node__layout [data-slot="status-dot"][data-tone="green"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-tone="green"] { --agent-gui-status-dot-color: var(--state-success); } .agent-gui-node__layout [data-slot="status-dot"][data-tone="blue"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-tone="blue"] { --agent-gui-status-dot-color: var(--status-running); } .agent-gui-node__layout [data-slot="status-dot"][data-tone="amber"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-tone="amber"] { --agent-gui-status-dot-color: var(--state-warning); } .agent-gui-node__layout [data-slot="status-dot"][data-tone="red"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-tone="red"] { --agent-gui-status-dot-color: var(--state-danger); } .agent-gui-node__layout [data-slot="status-dot"][data-pulse="true"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-pulse="true"] { animation: agent-gui-status-dot-pulse 1.8s ease-in-out infinite; } @keyframes agent-gui-status-dot-pulse { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 color-mix(in srgb, var(--agent-gui-status-dot-color) 36%, transparent); } 50% { opacity: 0.45; box-shadow: 0 0 0 4px color-mix(in srgb, var(--agent-gui-status-dot-color) 18%, transparent); } } @media (prefers-reduced-motion: reduce) { .agent-gui-node__layout [data-slot="status-dot"][data-pulse="true"], [data-testid="workspace-agent-message-center"] [data-slot="status-dot"][data-pulse="true"] { animation: none; } } .agent-gui-node__message-bubble { max-width: 100%; min-width: 0; color: var(--text-primary); font-size: 13px; line-height: 20px; } .agent-gui-node__timeline-row[data-kind="user"] .agent-gui-node__message-bubble { max-width: min(620px, 86%); border-radius: 8px; background: var(--transparency-block); padding: 10px 14px; } .agent-gui-node__timeline-row[data-kind="assistant"] .agent-gui-node__message-bubble { width: 100%; max-width: 860px; padding: 2px 0; } .agent-gui-node__timeline-row[data-kind="tool"] .agent-gui-node__message-bubble { width: 100%; max-width: 860px; border-left: 2px solid var(--agent-gui-border-subtle); padding: 2px 0 2px 10px; color: var(--text-primary); font-size: 13px; line-height: 20px; } .agent-gui-node__timeline-row[data-kind="system"] .agent-gui-node__message-bubble { max-width: min(520px, 90%); border-radius: 8px; background: var(--agent-gui-surface-muted); padding: 6px 10px; color: var(--text-secondary); font-size: 13px; line-height: 18px; text-align: center; } .agent-gui-node__timeline-row p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; } .agent-gui-node__row-meta { display: flex; align-items: center; justify-content: flex-start; gap: 8px; margin-bottom: 4px; color: var(--agent-gui-text-secondary); font-size: 11px; line-height: 18px; } .agent-gui-node__timeline-row[data-kind="user"] .agent-gui-node__row-meta, .agent-gui-node__timeline-row[data-kind="system"] .agent-gui-node__row-meta { display: none; } .agent-gui-node__timeline-row[data-kind="assistant"] .agent-gui-node__row-meta, .agent-gui-node__timeline-row[data-kind="tool"] .agent-gui-node__row-meta { color: var(--agent-gui-text-tertiary); } .agent-gui-node__timeline-row[data-kind="tool"] .agent-gui-node__row-meta { margin-bottom: 3px; font-weight: 400; } .agent-gui-node__composer { position: sticky; bottom: 0; z-index: 4; margin-top: 0; padding: 0 12px 12px; background: transparent; } .agent-gui-node__composer-hero { width: min(760px, 100%); min-width: 320px; margin: 0 auto; } .agent-gui-node__composer-input-group { display: grid; min-width: 0; } .agent-gui-node__slash-status-panel { width: 100%; min-width: 0; padding: 10px 12px; color: var(--agent-gui-text-primary); font-size: 11px; } .agent-gui-node__slash-status-limit { display: grid; grid-template-columns: minmax(24px, 1fr) max-content; align-items: center; gap: 12px; min-width: 0; } .agent-gui-node__slash-status-limit-meter { position: relative; display: block; width: 100%; height: 6px; overflow: hidden; border-radius: 0; background: color-mix( in srgb, var(--agent-gui-text-primary) 10%, transparent ); } .agent-gui-node__slash-status-limit-value { min-width: 0; text-align: right; white-space: nowrap; } .agent-gui-node__slash-status-limit-meter-fill { position: absolute; inset: 0 auto 0 0; min-width: 2px; border-radius: 0; background: var(--agent-gui-text-primary); } .agent-gui-node__composer-input-group-hero { padding: 2px; border: 1px solid var(--agent-gui-border-focus); border-radius: 16px; background: var(--agent-gui-accent-bg); } /* In dock layout a growing draft overhangs upward past the composer's top edge (the dock only reserves the collapsed input height in flow), so the floating panels anchored at bottom: 100% must be lifted by that overhang (--agent-gui-composer-input-overflow) or the grown input covers them. */ .agent-gui-node__composer-floating-prompt { position: absolute; right: 12px; bottom: calc(100% + 8px + var(--agent-gui-composer-input-overflow, 0px)); left: 12px; z-index: 5; } .agent-gui-node__composer-floating-prompt--queued { z-index: 1; right: 24px; bottom: calc(100% + var(--agent-gui-composer-input-overflow, 0px)); left: 24px; } .agent-gui-node__composer-input-shell { display: grid; gap: 10px; position: relative; isolation: isolate; z-index: 2; min-width: 0; padding: 8px; border: 1px solid var(--agent-gui-border-subtle); border-radius: 12px; background: var(--agent-gui-surface-raised); box-shadow: 0 8px 24px rgb(0 0 0 / 4%); transition: box-shadow 140ms ease; } .agent-gui-node__composer-hero-prompt-input-area { box-sizing: border-box; width: calc(100% - 8px); margin-inline: 4px; } .agent-gui-node__composer[data-layout="dock"] { /* Opaque backdrop for the footer strip: the timeline can slide beneath the dock, and a transparent footer would show message rows behind the toolbar controls. */ background: var(--agent-gui-session-flow-background); } /* Compact host surfaces are not conversation timelines. Keep attachments and growing text in normal flow so they cannot overhang unrelated host chrome. */ .agent-gui-node__composer[data-layout="embedded"] { position: relative; bottom: auto; z-index: 1; box-sizing: border-box; width: 100%; margin: 0; padding: 0; background: transparent; } .agent-gui-node__composer[data-layout="embedded"] .agent-gui-node__composer-input-shell { gap: 8px; } .agent-gui-node__shell[data-quick-composer-input-surface="borderless"] .agent-gui-node__composer-input-shell, .agent-gui-node__shell[data-quick-composer-input-surface="borderless"] .agent-gui-node__composer-input-shell:hover, .agent-gui-node__shell[data-quick-composer-input-surface="borderless"] .agent-gui-node__composer-input-shell:focus-within { border-color: transparent; box-shadow: none; } .agent-gui-node__composer[data-layout="embedded"] .agent-gui-node__composer-prompt-input-area { display: grid; min-width: 0; } .agent-gui-node__composer[data-layout="embedded"] .agent-gui-node__composer-prompt-input-line { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 8px; min-width: 0; } .agent-gui-node__composer[data-layout="embedded"] .agent-gui-node__composer-textarea { min-height: 46px; max-height: 96px; overflow-y: auto; } /* Full-height launch surfaces explicitly assign the available block size. Keep that contract opt-in so compact embedded composers continue sizing to their content. */ .agent-gui-node__composer[data-layout="embedded"][data-fill-available-height="true"] { display: flex; height: 100%; min-height: 0; flex-direction: column; } .agent-gui-node__composer[data-layout="embedded"][data-fill-available-height="true"] .agent-gui-node__composer-input-group { display: flex; min-height: 0; flex: 1 1 auto; flex-direction: column; } .agent-gui-node__composer[data-layout="embedded"][data-fill-available-height="true"] .agent-gui-node__composer-input-shell { grid-template-rows: minmax(0, 1fr) auto; width: 100%; height: 100%; min-height: 0; flex: 1 1 auto; } .agent-gui-node__composer[data-layout="embedded"][data-fill-available-height="true"] .agent-gui-node__composer-prompt-input-area { display: flex; height: 100%; min-height: 0; flex-direction: column; } .agent-gui-node__composer[data-layout="embedded"][data-fill-available-height="true"] .agent-gui-node__composer-prompt-input-line { align-items: stretch; height: 100%; min-height: 0; flex: 1 1 auto; } .agent-gui-node__composer[data-layout="embedded"][data-fill-available-height="true"] .agent-gui-node__rich-text-editor-surface, .agent-gui-node__composer[data-layout="embedded"][data-fill-available-height="true"] .agent-gui-node__rich-text-editor-content { height: 100%; min-height: 0; } .agent-gui-node__composer[data-layout="embedded"][data-fill-available-height="true"] .agent-gui-node__composer-textarea { height: 100%; min-height: 0; max-height: none; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-input-shell { /* Reserve only the collapsed input height (56px, keep in sync with DOCK_COMPOSER_INPUT_MIN_HEIGHT) in the layout flow. A growing draft (long paste, attachments) expands the text box upward over the conversation instead of enlarging the dock and pushing the message stream up. */ grid-template-rows: 56px auto; gap: 6px; padding: 0; border: 0; background: transparent; box-shadow: none; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area { display: grid; /* Keep the input shadow above the following footer row. Both rows otherwise share z-index: 1, so the later-painted footer visually clips the shadow. */ z-index: 2; grid-template-rows: minmax(0, 1fr); box-sizing: border-box; height: var(--agent-gui-composer-input-height, 56px); min-height: 56px; max-height: var(--agent-gui-composer-input-max-height, 110px); align-items: end; align-self: end; contain: layout; overflow: hidden; padding: 0 12px; border: 1px solid var(--line-2); border-radius: 10px; background: var(--agent-gui-surface-raised); box-shadow: 0 8px 24px rgb(0 0 0 / 4%); transition: height 160ms ease, border-color 140ms ease, box-shadow 140ms ease; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area:focus-within, .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area:hover { border-color: var(--line-2); box-shadow: 0 8px 24px rgb(0 0 0 / 6%); } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area[data-has-draft-attachments="true"] { grid-template-rows: minmax(0, var(--agent-gui-composer-attachment-height, 0px)) minmax(40px, 1fr); align-items: end; padding: 12px; } .agent-gui-node__composer[data-layout="dock"] [data-testid="agent-gui-composer-attachment-drafts"] { margin-bottom: 0; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area[data-has-draft-images="true"] [data-testid="agent-gui-composer-image-drafts"] { min-height: 0; margin-bottom: 0; overflow: hidden; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area[data-has-draft-images="true"] [data-testid="agent-gui-composer-image-draft"] { max-height: 56px; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-line { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; box-sizing: border-box; gap: 8px; height: calc(var(--agent-gui-composer-text-height, 56px) - 2px); min-height: 54px; max-height: 118px; min-width: 0; padding: 0 0 12px; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area[data-has-draft-attachments="true"] .agent-gui-node__composer-prompt-input-line { min-height: 40px; height: calc(var(--agent-gui-composer-text-height, 56px) - 2px); max-height: 118px; padding: 4px 0 0; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-send-button, .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-stop-button { align-self: end; } .agent-gui-node__composer-input-shell > * { position: relative; z-index: 1; } .agent-gui-edge-glow, .agent-gui-node__composer-input-group[data-edge-glow="true"] { --agent-gui-star-border-size: 2px; --agent-gui-star-border-duration: 5.8s; --agent-gui-star-border-color: rgb(248 250 252 / 90%); --agent-gui-star-border-mid-color: color-mix( in srgb, var(--accent-codex) 68%, transparent ); --agent-gui-star-border-core-stop: 42%; --agent-gui-star-border-fade-stop: 72%; --agent-gui-star-border-length: clamp(88px, 18%, 160px); --agent-gui-star-border-radius: 16px; --agent-gui-star-border-shadow: drop-shadow( 0 0 8px color-mix(in srgb, var(--accent-codex) 58%, transparent) ); position: relative; isolation: isolate; overflow: hidden; } .agent-gui-edge-glow > * { position: relative; z-index: 1; } .agent-gui-node__composer-input-group[data-edge-glow="true"] { overflow: hidden; } html[data-theme="light"] .agent-gui-edge-glow, html[data-theme="light"] .agent-gui-node__composer-input-group[data-edge-glow="true"] { --agent-gui-star-border-color: color-mix( in srgb, var(--accent-codex) 90%, transparent ); --agent-gui-star-border-mid-color: color-mix( in srgb, var(--accent-codex) 50%, transparent ); --agent-gui-star-border-core-stop: 24%; --agent-gui-star-border-fade-stop: 58%; } .agent-gui-edge-glow::before, .agent-gui-edge-glow::after, .agent-gui-node__composer-input-group[data-edge-glow="true"]::before, .agent-gui-node__composer-input-group[data-edge-glow="true"]::after { content: ""; position: absolute; top: calc(var(--agent-gui-star-border-size) / -2); left: 0; z-index: 0; width: var(--agent-gui-star-border-length); height: var(--agent-gui-star-border-size); border-radius: 999px; background: radial-gradient( circle, var(--agent-gui-star-border-color) 0, var(--agent-gui-star-border-mid-color) var(--agent-gui-star-border-core-stop), transparent var(--agent-gui-star-border-fade-stop) ); filter: var(--agent-gui-star-border-shadow); offset-anchor: 50% 50%; offset-path: inset( calc(var(--agent-gui-star-border-size) / 2) round var(--agent-gui-star-border-radius) ); offset-rotate: auto; pointer-events: none; } .agent-gui-edge-glow::before, .agent-gui-node__composer-input-group[data-edge-glow="true"]::before { animation: agent-gui-star-border-path var(--agent-gui-star-border-duration) linear infinite; } .agent-gui-edge-glow::after, .agent-gui-node__composer-input-group[data-edge-glow="true"]::after { animation: agent-gui-star-border-path var(--agent-gui-star-border-duration) linear infinite; animation-delay: calc(var(--agent-gui-star-border-duration) / -2); } .workspace-agent-decision-toast__edge-glow.agent-gui-edge-glow { --agent-gui-star-border-size: 1px; --agent-gui-star-border-color: color-mix( in srgb, var(--tutti-purple) 62%, transparent ); --agent-gui-star-border-mid-color: color-mix( in srgb, var(--tutti-purple) 28%, transparent ); --agent-gui-star-border-core-stop: 18%; --agent-gui-star-border-fade-stop: 48%; --agent-gui-star-border-length: clamp(180px, 58%, 280px); --agent-gui-star-border-radius: 12px; --agent-gui-star-border-shadow: drop-shadow( 0 0 3px color-mix(in srgb, var(--tutti-purple) 30%, transparent) ); } .workspace-agent-decision-toast[data-sonner-toast] { --decision-toast-collapse-duration: 320ms; --decision-toast-collapse-easing: cubic-bezier(0.22, 1, 0.36, 1); --decision-toast-content-fade-duration: 160ms; min-height: 0; overflow: visible; border: 0; border-radius: 12px; background: transparent; padding: 0; transform: translateX(calc(100% + 24px)) !important; transition: transform 360ms var(--decision-toast-collapse-easing), opacity 240ms ease, width var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), right var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), min-height var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), height var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), max-height var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), padding var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), border-top-width 0ms linear, border-radius 120ms ease, box-shadow 200ms !important; } .workspace-agent-decision-toast[data-sonner-toast][data-mounted="true"] { transform: var(--y) translateX(0) !important; } .workspace-agent-decision-toast__prompt .agent-gui-conversation__interactive-prompt-card { border: 0; padding: 12px; box-shadow: none; } .workspace-agent-decision-toast__outcome-card { border: 1px solid var(--line-1); border-radius: 8px; background: var(--background-fronted); padding: 10px; } .workspace-agent-decision-toast__outcome-card:hover { border-color: var(--line-2); } .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"] { --decision-toast-collapsed-offset: 0px; --decision-toast-collapsed-scale: 0.94; --y: translateY( calc(var(--front-toast-height) + var(--decision-toast-collapsed-offset)) ); width: calc(var(--width) * var(--decision-toast-collapsed-scale)); min-height: 0 !important; height: 10px !important; max-height: 10px !important; padding: 0 !important; overflow: hidden !important; border: 1px solid var(--line-2); border-top-width: 0; border-radius: 0 0 8px 8px; background: var(--background-fronted); box-shadow: 0 8px 24px color-mix(in srgb, var(--shadow-elevated) 72%, transparent); pointer-events: auto; right: calc( (var(--width) - (var(--width) * var(--decision-toast-collapsed-scale))) / 2 ) !important; transition: transform var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), opacity 240ms ease, width var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), right var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), min-height var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), height var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), max-height var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), padding var(--decision-toast-collapse-duration) var(--decision-toast-collapse-easing), border-top-width 0ms linear, border-radius 0ms linear, box-shadow 200ms !important; } .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"] > [data-content], .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"] > [data-content] > [data-title], .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"] > [data-content] article { min-height: 0 !important; height: 10px !important; max-height: 10px !important; overflow: hidden !important; } .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"] > [data-content] article { margin: 0 !important; padding: 0 !important; border: 0 !important; background: transparent !important; box-shadow: none !important; } .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"][data-index="2"] { --decision-toast-collapsed-offset: 8px; --decision-toast-collapsed-scale: 0.88; } .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"][data-index="3"] { --decision-toast-collapsed-offset: 16px; --decision-toast-collapsed-scale: 0.82; } .workspace-agent-decision-toast__edge-glow, .workspace-agent-decision-toast__close, .workspace-agent-decision-toast__content { transition: opacity var(--decision-toast-content-fade-duration) ease; } .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"] .workspace-agent-decision-toast__edge-glow, .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"] .workspace-agent-decision-toast__close, .workspace-agent-decision-toast[data-sonner-toast][data-expanded="false"][data-front="false"] .workspace-agent-decision-toast__content { opacity: 0 !important; pointer-events: none !important; } .workspace-agent-decision-toast[data-sonner-toast][data-expanded="true"][data-front="false"] .workspace-agent-decision-toast__close, .workspace-agent-decision-toast[data-sonner-toast][data-expanded="true"][data-front="false"] .workspace-agent-decision-toast__content { opacity: 0; animation: workspace-agent-decision-toast-content-fade-in 180ms ease 300ms forwards; } .workspace-agent-decision-toast[data-sonner-toast][data-removed="true"][data-swipe-out="false"] { opacity: 0 !important; transform: translateX(calc(100% + 24px)) !important; } @keyframes workspace-agent-decision-toast-content-fade-in { from { opacity: 0; } to { opacity: 1; } } .workspace-agents-status-panel__activity.agent-gui-edge-glow { --agent-gui-star-border-radius: 8px; border-color: var(--border-focus); } [data-message-center-item-id].agent-gui-edge-glow, html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow { --agent-gui-star-border-color: var(--tutti-purple); --agent-gui-star-border-mid-color: color-mix( in srgb, var(--tutti-purple) 48%, transparent ); --agent-gui-star-border-radius: 8px; --agent-gui-star-border-shadow: drop-shadow( 0 0 6px color-mix(in srgb, var(--tutti-purple) 58%, transparent) ); overflow: hidden; } .agent-gui-node__composer-controls-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; } .agent-gui-node__composer-select { min-height: 30px; border: 1px solid var(--agent-gui-border-subtle); border-radius: 6px; background: var(--agent-gui-surface-muted); color: var(--agent-gui-text-primary); font-size: 13px; padding: 0 10px; } .agent-gui-node__composer-toggle { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; border-radius: 6px; background: var(--agent-gui-surface-muted); padding: 0 10px; font-size: 13px; color: var(--agent-gui-text-primary); cursor: pointer; transition: opacity 120ms ease, background 120ms ease; } .agent-gui-node__composer-toggle:hover:not(:disabled) { background: var(--agent-gui-surface-strong, var(--agent-gui-surface-muted)); } /* Off state: dim the control so the on/off choice reads at a glance. */ .agent-gui-node__composer-toggle[aria-pressed="false"] { opacity: 0.4; } .agent-gui-node__composer-toggle:disabled { cursor: default; opacity: 0.5; } .agent-gui-node__composer-queued-prompt-list { display: grid; width: 100%; min-width: 0; gap: 0; max-height: 36px; overflow: hidden; overscroll-behavior: contain; padding-right: 2px; transition: max-height 180ms cubic-bezier(0.16, 1, 0.3, 1); } .agent-gui-node__composer-queued-prompt-panel { display: grid; min-width: 0; gap: 4px; position: relative; z-index: 1; margin-bottom: -1px; padding: 10px 16px 12px; border: 1px solid var(--agent-gui-border-subtle, var(--line-2)); border-bottom: 0; border-radius: 12px 12px 0 0; background: var(--background-panel); box-shadow: none; cursor: default; } .agent-gui-node__composer-queued-prompt-panel[data-expandable="true"] { cursor: pointer; } .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"] .agent-gui-node__composer-queued-prompt-list { max-height: var(--agent-gui-queued-prompt-expanded-height, 280px); overflow-y: auto; } .agent-gui-node__composer-queued-prompt-header { display: flex; align-items: center; justify-content: flex-start; gap: 4px; min-height: 20px; } .agent-gui-node__composer-queued-prompt-expand-cue { display: block; flex: 0 0 auto; color: var(--agent-gui-accent-strong); opacity: 0; transition: opacity 120ms ease, transform 120ms ease; } .agent-gui-node__composer-queued-prompt-panel:hover .agent-gui-node__composer-queued-prompt-expand-cue, .agent-gui-node__composer-queued-prompt-panel:focus-visible .agent-gui-node__composer-queued-prompt-expand-cue, .agent-gui-node__composer-queued-prompt-panel:focus-within .agent-gui-node__composer-queued-prompt-expand-cue, .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"] .agent-gui-node__composer-queued-prompt-expand-cue { opacity: 1; } .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"] .agent-gui-node__composer-queued-prompt-expand-cue { transform: rotate(90deg); } .agent-gui-node__composer-queued-prompt-card { display: contents; } .agent-gui-node__composer-queued-prompt-row { display: grid; box-sizing: border-box; width: 100%; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 2px 0; } .agent-gui-node__composer-queued-prompt-row[data-draining="true"] { opacity: 0.58; } .agent-gui-node__composer-queued-prompt-main { display: block; width: 100%; min-width: 0; } .agent-gui-node__composer-queued-prompt-body { display: flex; width: 100%; align-items: center; min-width: 0; overflow: hidden; gap: 6px; } .agent-gui-node__composer-queued-prompt-images { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 4px; min-width: 0; } .agent-gui-node__composer-queued-prompt-image { display: block; width: 28px; height: 28px; flex: 0 0 auto; border: 1px solid var(--agent-gui-border-subtle, var(--line-2)); border-radius: 4px; object-fit: cover; background: var(--agent-gui-surface-muted); } .agent-gui-node__composer-queued-prompt-label { min-width: 0; font-size: 13px; font-weight: 600; color: var(--agent-gui-accent-strong); line-height: 20px; } .agent-gui-node__composer-queued-prompt-panel[data-queue-status="paused_by_user"] .agent-gui-node__composer-queued-prompt-label { overflow-wrap: anywhere; white-space: normal; } .agent-gui-node__composer-queued-prompt-count { margin-left: 4px; color: var(--agent-gui-accent-strong); font-size: 13px; font-weight: 600; line-height: 20px; font-variant-numeric: tabular-nums; } .agent-gui-node__composer-queued-prompt-text { position: relative; width: 0; max-width: 100%; flex: 1 1 0; min-width: 0; margin: 0; color: var(--agent-gui-text-secondary, var(--text-secondary)); font-size: 13px; line-height: 28px; overflow: hidden; text-overflow: clip; word-break: break-word; white-space: nowrap; } .agent-gui-node__composer-queued-prompt-text[data-overflowing="true"]::after { content: "…"; position: absolute; top: 0; right: 0; width: 28px; height: 28px; background: linear-gradient(90deg, transparent, var(--background-panel) 52%); color: var(--agent-gui-text-secondary, var(--text-secondary)); line-height: 28px; text-align: right; pointer-events: none; } .agent-gui-node__composer-queued-prompt-markdown { display: block; width: 100%; min-width: 0; max-width: 100%; color: inherit; font-size: inherit; line-height: inherit; overflow: hidden; text-overflow: clip; white-space: nowrap; } .agent-gui-node__composer-queued-prompt-markdown [data-workspace-agent-markdown-shell="true"] { display: block; width: 100%; min-width: 0; max-width: 100%; overflow: hidden; white-space: nowrap; } .agent-gui-node__composer-queued-prompt-markdown [data-workspace-agent-markdown="true"] { display: block; overflow: hidden; text-overflow: clip; white-space: nowrap; } /* Queued rows are single-line previews. Flatten every markdown block (lists, code blocks, quotes, headings) to plain inline text — including their box styling from the markdown renderer — so the row's nowrap + overflow: hidden + "…" overlay can truncate instead of the blocks stacking extra lines. Scoped under the text wrapper to outrank the renderer's own [&_ol]/[&_pre]-style utilities. */ .agent-gui-node__composer-queued-prompt-text .agent-gui-node__composer-queued-prompt-markdown :is(p, ul, ol, li, blockquote, pre, h1, h2, h3, h4, h5, h6) { display: inline; margin: 0; padding: 0; border: 0; background: transparent; font-size: inherit; font-weight: inherit; line-height: inherit; white-space: nowrap; } .agent-gui-node__composer-queued-prompt-text .agent-gui-node__composer-queued-prompt-markdown pre code { white-space: nowrap; } /* Standalone media, tables, rules, and explicit line breaks cannot collapse into one text line — drop them from the preview entirely. MentionPill owns its nested image icon, which remains part of the inline mention preview. */ .agent-gui-node__composer-queued-prompt-text .agent-gui-node__composer-queued-prompt-markdown :is(img, video, table, hr, br, input):not([data-slot="mention-pill"] *) { display: none; } .agent-gui-node__composer-queued-prompt-markdown [data-agent-file-mention="true"] { width: max-content; max-width: min(100%, var(--agent-mention-max-width, 16rem)); color: inherit; vertical-align: middle; } /* Entity mentions wrap the shared MentionPill in an interactive link. Keep that link layout-only so the pill remains the single owner of its visual box; otherwise the wrapper's padding and offset create a second pill around it and push adjacent queued mentions apart. */ .agent-gui-node__composer-queued-prompt-markdown [data-agent-file-mention="true"].tsh-agent-object-token--entity { color: inherit; top: 0; gap: 0; max-width: min(100%, var(--agent-mention-max-width, 16rem)); min-height: 0; padding: 0; border: 0; border-radius: 0; line-height: inherit; transition: none; } .agent-gui-node__composer-queued-prompt-markdown [data-agent-file-mention="true"].tsh-agent-object-token--file, .agent-gui-node__composer-queued-prompt-markdown [data-agent-file-mention="true"].tsh-agent-object-token--entity > [data-slot="mention-pill"] { top: 0; vertical-align: middle; } .agent-gui-node__composer-queued-prompt-markdown [data-agent-file-mention="true"].tsh-agent-object-token:hover { border-color: transparent; background: transparent; text-decoration: none; } .agent-gui-node__composer-queued-prompt-markdown [data-agent-mention-kind="workspace-app"].tsh-agent-object-token--entity { color: inherit; } .agent-gui-node__composer-queued-prompt-markdown [data-agent-file-mention="true"] .tsh-agent-object-token__kind, .agent-gui-node__composer-queued-prompt-markdown [data-agent-file-mention="true"] [data-agent-mention-app-icon="true"] { color: inherit; } .agent-gui-node__composer-queued-prompt-markdown [data-agent-mention-kind="workspace-app"] [data-agent-mention-app-icon="true"] .tsh-agent-object-token__kind-icon { display: block; width: 16px; height: 16px; background-color: currentColor; mask-image: url("./assets/icons/product-filled.svg"); mask-repeat: no-repeat; mask-position: center; mask-size: 16px 16px; -webkit-mask-image: url("./assets/icons/product-filled.svg"); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center; -webkit-mask-size: 16px 16px; } .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"] .agent-gui-node__composer-queued-prompt-text { overflow: hidden; text-overflow: clip; white-space: nowrap; } .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"] .agent-gui-node__composer-queued-prompt-markdown, .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"] .agent-gui-node__composer-queued-prompt-markdown [data-workspace-agent-markdown-shell="true"], .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"] .agent-gui-node__composer-queued-prompt-markdown [data-workspace-agent-markdown="true"] { overflow: hidden; text-overflow: clip; white-space: nowrap; } .agent-gui-node__composer-queued-prompt-actions { display: inline-flex; justify-self: end; flex: 0 0 auto; align-items: center; gap: 4px; } .agent-gui-node__composer-queued-prompt-actions button { color: var(--text-secondary); } .agent-gui-node__composer-prompt-input-area textarea, .agent-gui-node__composer-textarea { --agent-gui-composer-text-line-height: 24px; --agent-gui-composer-text-max-visible-lines: 3.5; /* prettier-ignore */ --agent-gui-composer-text-viewport-height: calc(var(--agent-gui-composer-text-line-height) * var(--agent-gui-composer-text-max-visible-lines)); width: 100%; min-width: 0; min-height: 46px; max-height: var(--agent-gui-composer-text-viewport-height); overflow-y: auto; border: 0; background: transparent; color: var(--agent-gui-text-primary); font: inherit; font-size: 13px; line-height: var(--agent-gui-composer-text-line-height); outline: 0; padding: 0; resize: none; scrollbar-width: thin; scrollbar-color: var(--transparency-hover) transparent; scrollbar-gutter: stable; -ms-overflow-style: auto; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area textarea, .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-textarea { display: block; height: auto; min-height: 24px; max-height: var(--agent-gui-composer-text-viewport-height); overflow-x: hidden; overflow-y: auto; overflow-wrap: anywhere; padding-top: 12px; scrollbar-gutter: stable; /* Keep the scrollbar persistently visible (not hover/focus-only) once the draft overflows the visible viewport: a long pasted/dictated block of text must never look like a single visible line with no affordance that more content exists below (see: Feishu recvo2ITCPrpcA). */ scrollbar-width: thin; white-space: pre-wrap; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area[data-has-draft-attachments="true"] textarea, .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area[data-has-draft-attachments="true"] .agent-gui-node__composer-textarea { max-height: var(--agent-gui-composer-text-viewport-height); padding-top: 0; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar, .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-textarea::-webkit-scrollbar { display: block; width: 4px; height: 4px; } .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar, .agent-gui-node__composer-textarea::-webkit-scrollbar { display: block; width: 4px; height: 4px; } .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-track, .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-corner, .agent-gui-node__composer-textarea::-webkit-scrollbar-track, .agent-gui-node__composer-textarea::-webkit-scrollbar-corner { background: transparent; } .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-thumb, .agent-gui-node__composer-textarea::-webkit-scrollbar-thumb { border-radius: 999px; background: var(--transparency-hover); } .agent-gui-node__composer-input-shell[data-input-disabled="true"], .agent-gui-node__composer-textarea[aria-disabled="true"] { cursor: not-allowed; } .agent-gui-node__composer-textarea.ProseMirror { border: 0; outline: 0; box-shadow: none; } .agent-gui-node__composer-textarea.ProseMirror:focus, .agent-gui-node__composer-textarea.ProseMirror-focused { border: 0; outline: 0; box-shadow: none; } .agent-gui-node__composer-textarea p { margin: 0; font-size: 13px; line-height: 24px; min-height: 0; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-textarea p { display: block; width: auto; min-width: 0; min-height: 0; overflow: visible; overflow-wrap: anywhere; text-overflow: clip; white-space: pre-wrap; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-textarea .agent-rich-text-placeholder-node:first-child { position: relative; display: block; width: 100%; min-height: 24px; } .agent-gui-node__composer-textarea p:empty:not(.agent-rich-text-placeholder-node) { min-height: 0; line-height: 0; } .agent-gui-node__composer-textarea p:not(.agent-rich-text-placeholder-node):not(:empty) { position: relative; top: 0; line-height: var(--agent-gui-composer-text-line-height); } .agent-gui-node__composer-textarea p:not(.agent-rich-text-placeholder-node):not(:empty) .agent-rich-text-mention-node { transform: translateY(-2px); } .agent-gui-node__composer-textarea .agent-rich-text-placeholder-node:first-child::before { content: attr(data-agent-rich-text-placeholder); float: left; height: 0; color: var(--agent-gui-text-tertiary); font-size: 13px; line-height: 24px; pointer-events: none; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-textarea .agent-rich-text-placeholder-node:first-child::before { position: absolute; top: 0; left: 0; display: block; float: none; height: 24px; line-height: 24px; white-space: nowrap; } .agent-gui-node__composer-prompt-input-area textarea::placeholder, .agent-gui-node__composer-textarea::placeholder { color: var(--agent-gui-text-tertiary); line-height: 24px; } .agent-gui-node__composer-input-shell:focus-within, .agent-gui-node__composer-input-shell:hover { box-shadow: 0 8px 24px rgb(0 0 0 / 6%); } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-input-shell:focus-within, .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-input-shell:hover { box-shadow: none; } .agent-gui-node__composer-input-shell:focus-within { border-color: var(--agent-gui-border-subtle); } .agent-gui-node__composer-input-shell-hero { border-color: transparent; border-radius: 14px; box-shadow: none; } .agent-gui-node__composer-input-shell-hero:hover, .agent-gui-node__composer-input-shell-hero:focus-within { border-color: transparent; box-shadow: none; } .agent-gui-node__composer-project-row[data-project-missing="true"] { display: none; } .agent-gui-node__composer-project-row { display: flex; flex-wrap: nowrap; min-width: 0; align-items: center; justify-content: space-between; gap: 8px; padding: 2px 8px; } .agent-gui-node__composer-input-group-hero .agent-gui-node__composer-project-row { padding: 2px 8px; } .agent-gui-node__composer-project-controls { display: grid; grid-template-columns: fit-content(240px); flex: 0 1 auto; min-width: 0; max-width: 100%; align-items: center; gap: 0; } .agent-gui-node__composer-project-controls:has( [data-testid="agent-gui-session-launch-mode"] ) { grid-template-columns: fit-content(240px) max-content; } .agent-gui-node__composer-project-trigger { flex: 1 1 auto; min-width: 0; max-width: 240px; } .agent-gui-node__composer-project-controls [data-testid="agent-gui-session-launch-mode"] { flex: 0 0 auto; max-width: none; } .agent-gui-node__composer-provider-select { flex: 0 1 auto; min-width: 0; } .agent-gui-node__composer-handoff-trigger { padding-left: 6px; } .agent-gui-node__composer-handoff-icon { position: relative; display: inline-flex; width: 18px; height: 18px; flex: 0 0 18px; align-items: center; justify-content: center; color: var(--text-secondary); contain: layout paint; } .agent-gui-node__composer-handoff-icon[data-playing="true"] { color: var(--text-primary); } .agent-gui-node__composer-handoff-icon[data-disabled="true"] { color: var(--agent-gui-text-tertiary); } .agent-gui-node__composer-handoff-icon-static, .agent-gui-node__composer-handoff-icon-animated { width: 18px; height: 18px; display: block; } .agent-gui-node__composer-handoff-icon-static { background-color: currentColor; opacity: 1; } .agent-gui-node__composer-handoff-icon:has( .agent-gui-node__composer-handoff-icon-animated[data-active="true"] ) .agent-gui-node__composer-handoff-icon-static { opacity: 0; } .agent-gui-node__composer-handoff-icon-animated { position: absolute; inset: 0; /* Match the APNG's padded 44px canvas to the static icon's visual size. */ transform: scale(1.3); filter: var(--agent-gui-handoff-animation-filter, none); opacity: 0; pointer-events: none; } .agent-gui-node__composer-handoff-icon-animated[data-active="true"] { transform: translateZ(0) scale(1.3); opacity: 1; backface-visibility: hidden; will-change: opacity, transform; } .agent-gui-node__composer-tutti-mode-icon { position: relative; display: inline-flex; width: 16px; height: 16px; flex: 0 0 16px; align-items: center; justify-content: center; /* Inherit color from the chip label so the mark tracks every state: text-secondary at rest, text-primary on hover, tutti-purple when armed. */ contain: layout paint; } .agent-gui-node__composer-tutti-mode-icon-static, .agent-gui-node__composer-tutti-mode-icon-animated { width: 16px; height: 16px; display: block; } .agent-gui-node__composer-tutti-mode-icon-static { background-color: currentColor; opacity: 1; } .agent-gui-node__composer-tutti-mode-icon:has( .agent-gui-node__composer-tutti-mode-icon-animated[data-active="true"] ) .agent-gui-node__composer-tutti-mode-icon-static { opacity: 0; } .agent-gui-node__composer-tutti-mode-icon-animated { position: absolute; inset: 0; /* Match the 16px static mark exactly; the APNG canvas already pads the snapping hand and bursting stars, so no enlargement is applied. */ opacity: 0; pointer-events: none; } .agent-gui-node__composer-tutti-mode-icon-animated[data-active="true"] { transform: translateZ(0); opacity: 1; backface-visibility: hidden; will-change: opacity, transform; } @media (prefers-reduced-motion: reduce) { .agent-gui-node__composer-tutti-mode-icon-animated { display: none; } .agent-gui-node__composer-tutti-mode-icon-static { opacity: 1 !important; } } .agent-gui-node__composer-handoff-icon[data-disabled="true"] .agent-gui-node__composer-handoff-icon-animated { opacity: 0; } @media (prefers-reduced-motion: reduce) { .agent-gui-node__composer-handoff-icon-animated { display: none; } .agent-gui-node__composer-handoff-icon-static { opacity: 1 !important; } } :root[data-theme="dark"] .agent-gui-node__composer-handoff-icon-animated { --agent-gui-handoff-animation-filter: brightness(0) invert(1); } @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .agent-gui-node__composer-handoff-icon-animated { --agent-gui-handoff-animation-filter: brightness(0) invert(1); } } .agent-gui-node__composer-handoff-menu-content [data-slot="select-item"] { padding-right: 0.5rem; } .agent-gui-node__composer-handoff-menu-content [data-slot="select-item"] > span:first-child { display: none; } .agent-gui-node__composer-prompt-tips { display: flex; flex: 1 1 0; min-width: 0; overflow: hidden; align-items: center; justify-content: flex-end; } .agent-gui-node__composer-prompt-tip { --agent-gui-prompt-tip-count: 1; --agent-gui-prompt-tip-cycle-duration: 5200ms; display: block; box-sizing: border-box; width: min(620px, 100%); max-width: 100%; min-width: 0; height: 18px; overflow: hidden; color: var(--agent-gui-text-tertiary); font-size: 11px; line-height: 18px; text-align: right; } .agent-gui-node__composer-prompt-tip-track { display: block; min-width: 0; animation: agent-gui-node-prompt-tip-in 180ms ease backwards; } .agent-gui-node__composer-prompt-tip[data-rotating="true"] .agent-gui-node__composer-prompt-tip-track { animation: agent-gui-node-prompt-tip-track var(--agent-gui-prompt-tip-cycle-duration) steps(var(--agent-gui-prompt-tip-count)) infinite; will-change: transform; } .agent-gui-node__layout[data-agent-gui-active="false"] .agent-gui-node__composer-prompt-tip-track, .agent-gui-node__layout[data-agent-gui-active="false"] .agent-gui-node__composer-prompt-tip-item { animation: none; will-change: auto; } .agent-gui-node__composer-prompt-tip-item { display: block; min-width: 0; height: 18px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__composer-prompt-tip[data-rotating="true"] .agent-gui-node__composer-prompt-tip-item { animation: agent-gui-node-prompt-tip-cycle 5200ms cubic-bezier(0.22, 1, 0.36, 1) infinite; } .agent-gui-node__composer-prompt-tip-prefix { color: var(--agent-gui-text-tertiary); font-weight: 500; } .agent-gui-node__composer-prompt-tip-label { color: var(--agent-gui-text-tertiary); font-weight: 400; } .agent-gui-node__composer-prompt-tip-text { color: var(--agent-gui-text-tertiary); font-weight: 450; } .agent-gui-node__composer-prompt-tip-tooltip { max-width: min(560px, calc(100vw - 32px)); overflow-wrap: anywhere; text-align: left; white-space: normal; } @keyframes agent-gui-node-prompt-tip-in { from { opacity: 0; transform: translateY(2px); } to { opacity: 1; transform: translateY(0); } } @keyframes agent-gui-node-prompt-tip-track { to { transform: translateY(calc(var(--agent-gui-prompt-tip-count) * -18px)); } } @keyframes agent-gui-node-prompt-tip-cycle { 0% { opacity: 0; transform: translateY(6px); } 4%, 92% { opacity: 1; transform: translateY(0); } 100% { opacity: 0; transform: translateY(-6px); } } @media (prefers-reduced-motion: reduce) { .agent-gui-node__composer-prompt-tip-track, .agent-gui-node__composer-prompt-tip-item, .agent-gui-node__composer-prompt-tip[data-rotating="true"] .agent-gui-node__composer-prompt-tip-track, .agent-gui-node__composer-prompt-tip[data-rotating="true"] .agent-gui-node__composer-prompt-tip-item { animation: none; } } .agent-gui-node__composer-footer { display: flex; width: 100%; min-width: 0; justify-self: stretch; align-items: center; justify-content: space-between; column-gap: 12px; row-gap: 4px; flex-wrap: wrap; padding-top: 0; } .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-footer { position: relative; /* The base rule's width: 100% keeps the parent's content width, so the negative margins only shift the row left instead of widening it: the right edge falls 24px short of the composer edge and strands the model dropdown far from the send button above. width: auto lets justify-self: stretch + the negative margins span the full row. */ width: auto; margin: 0 -12px -12px; padding: 0 14px 12px; background: var(--agent-gui-session-flow-background); } .agent-gui-node__composer-footer-left, .agent-gui-node__composer-footer-right { display: inline-flex; min-width: 0; align-items: center; gap: 10px; } .agent-gui-node__composer-footer-left { gap: 8px; } .agent-gui-node__composer-footer-accessory { display: flex; flex: 0 0 100%; min-width: 0; flex-wrap: wrap; align-items: center; gap: 4px; } .agent-gui-node__composer-footer-accessory:empty { display: none; } .agent-gui-node__composer-footer-right { flex: 1 1 auto; gap: 2px; margin-left: auto; justify-content: flex-end; overflow: hidden; } .agent-gui-node__composer-footer-right .agent-gui-node__composer-menu-trigger > svg { width: 16px; height: 16px; flex: 0 0 16px; margin-left: 0; } .agent-gui-node__composer-menu-trigger { display: inline-flex; min-width: 0; min-height: 28px; max-width: min(100%, 240px); align-items: center; gap: 2px; border: 0; border-radius: 6px; background: transparent; padding: 0 8px; color: var(--agent-gui-text-secondary); font-size: 13px; font-weight: 400; line-height: 1.2; } /* Plan-task assignment rows space items with the row gap instead of each trigger's own horizontal padding. */ .tutti-plan-task-assignment-row .agent-gui-node__composer-menu-trigger { padding-right: 0; padding-left: 0; } .agent-gui-node__composer-menu-item > span:last-child { min-width: 0; flex: 1 1 auto; overflow: hidden; } .agent-gui-node__composer-menu-item > span:last-child > span { width: 100%; min-width: 0; } .agent-gui-node__composer-menu-trigger[data-agent-plan-mode-badge="true"], .agent-gui-node__composer-menu-trigger[data-agent-plan-mode-badge="true"]:hover:not( :disabled ) { color: var(--state-warning); } .agent-gui-node__composer-menu-trigger[data-agent-goal-badge="true"], .agent-gui-node__composer-menu-trigger[data-agent-goal-badge="true"]:hover:not( :disabled ) { color: var(--tutti-purple); } /* Active Tutti Mode chip: icon (bg-current) and label both go tutti-purple. */ .agent-gui-node__composer-menu-trigger[data-agent-tutti-mode-active="true"], .agent-gui-node__composer-menu-trigger[data-agent-tutti-mode-active="true"]:hover:not( :disabled ) { color: var(--tutti-purple); } .agent-gui-node__composer-menu-trigger:hover:not(:disabled) { color: var(--agent-gui-text-primary); } .agent-gui-node__composer-menu-trigger[data-agent-model-reasoning-trigger="true"] { flex: 0 1 auto; width: auto; min-width: 0; max-width: min(100%, 180px); overflow: hidden; } .agent-gui-node__composer-menu-trigger[data-agent-model-reasoning-trigger="true"]:hover:not( :disabled ) { color: var(--agent-gui-text-secondary); } .agent-gui-node__composer-menu-trigger[data-agent-model-reasoning-trigger="true"] > span:first-child { flex: 0 1 auto; } .agent-gui-node__composer-menu-trigger[data-agent-model-reasoning-trigger="true"] > svg { transition: transform 200ms ease; } .agent-gui-node__composer-menu-trigger[data-agent-model-reasoning-trigger="true"][data-state="open"] > svg { transform: rotate(180deg); } .agent-gui-node__composer-menu-trigger[data-permission-tone="accent"], .agent-gui-node__composer-menu-trigger[data-permission-tone="accent"]:hover:not( :disabled ), .agent-gui-node__composer-menu-trigger[data-permission-tone="accent"] > span, .agent-gui-node__composer-menu-trigger[data-permission-tone="accent"] > svg { color: var(--tutti-purple); } .agent-gui-node__composer-menu-trigger[data-permission-tone="success"], .agent-gui-node__composer-menu-trigger[data-permission-tone="success"]:hover:not( :disabled ), .agent-gui-node__composer-menu-trigger[data-permission-tone="success"] > span, .agent-gui-node__composer-menu-trigger[data-permission-tone="success"] > svg { color: var(--agent-gui-success); } .agent-gui-node__composer-menu-trigger[data-permission-tone="warning"], .agent-gui-node__composer-menu-trigger[data-permission-tone="warning"]:hover:not( :disabled ), .agent-gui-node__composer-menu-trigger[data-permission-tone="warning"] > span, .agent-gui-node__composer-menu-trigger[data-permission-tone="warning"] > svg { color: var(--agent-gui-warning) !important; } .agent-gui-node__composer-menu-trigger:focus, .agent-gui-node__composer-menu-trigger:focus-visible { outline: none; box-shadow: none; } .agent-gui-node__composer-menu-trigger:disabled { cursor: not-allowed; color: var(--agent-gui-text-tertiary); opacity: 0.6; } .agent-gui-node__composer-menu-trigger:disabled:hover { cursor: not-allowed; color: var(--agent-gui-text-tertiary); } .agent-gui-node__composer-menu-content { --accent: var(--tutti-purple); --agent-gui-text-primary: var(--text-primary); --agent-gui-text-secondary: var(--text-secondary); --agent-gui-text-tertiary: var(--text-tertiary); --agent-gui-surface-raised: var(--background-fronted); --agent-gui-border-subtle: var(--line-2); --agent-gui-package-accent: var(--tutti-purple); --agent-gui-package-accent-strong: var(--tutti-purple); --agent-gui-package-success: var(--state-success); --agent-gui-package-warning: var(--state-warning); --agent-gui-package-danger: var(--state-danger); --agent-gui-accent: var(--agent-gui-package-accent); --agent-gui-accent-strong: var(--agent-gui-package-accent-strong); --agent-gui-success: var(--agent-gui-package-success); --agent-gui-warning: var(--agent-gui-package-warning); --agent-gui-danger: var(--agent-gui-package-danger); border: 1px solid var(--agent-gui-border-subtle); border-radius: 8px; padding: 4px; background: var(--agent-gui-surface-raised); color: var(--agent-gui-text-primary); max-height: min( 360px, var(--radix-dropdown-menu-content-available-height, 360px) ); overflow-y: auto; overscroll-behavior: contain; } .agent-gui-node__composer-menu-content [data-workspace-user-project-action-separator="true"] { margin-inline: 12px; background: var(--agent-gui-border-subtle, var(--line-2)); } .agent-gui-node__composer-menu-label { padding: 4px 10px 2px; color: var(--agent-gui-text-secondary); font-size: 11px; line-height: 14px; font-weight: 600; } .agent-gui-node__composer-menu-item { min-height: 28px; border-radius: 6px; padding-block: 4px; padding-inline: 10px 28px; color: var(--agent-gui-text-primary); font-size: 13px; line-height: 1.2; } .agent-gui-node__composer-menu-item[data-disabled] { cursor: not-allowed; color: var(--text-disabled); opacity: 0.5; } .agent-gui-node__composer-menu-content[data-agent-composer-settings-layout="model-primary"] .agent-gui-node__composer-menu-item, .agent-gui-node__composer-menu-content[data-agent-composer-settings-layout="model-submenu"] .agent-gui-node__composer-menu-item { padding-inline: 8px 10px; } .agent-gui-node__composer-menu-item-meta { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .agent-gui-node__composer-chip { display: inline-flex; align-items: center; min-height: 28px; border-radius: 6px; padding: 0 12px; background: color-mix(in srgb, var(--agent-gui-success) 10%, transparent); color: var(--agent-gui-success); font-size: 13px; font-weight: 600; } .agent-gui-node__composer-send-button { display: grid; flex: 0 0 28px; place-items: center; width: 28px; min-width: 28px; height: 28px; min-height: 28px; border: 0; border-radius: 999px; background: var(--text-primary); color: var(--text-inverted); padding: 0; transition: transform 140ms ease, background-color 140ms ease, color 140ms ease; } .agent-gui-node__composer-send-button:hover:not(:disabled) { transform: translateY(-1px); background: var(--text-primary); color: var(--text-inverted); } .agent-gui-node__composer-send-button:disabled { background: var(--text-disabled); color: var(--white-stationary); box-shadow: none; } .agent-gui-node__composer-send-button[data-state="loading"], .agent-gui-node__composer-send-button[data-state="stopping"] { border: 0; background: var(--transparency-block); color: var(--text-primary); box-shadow: none; } .agent-gui-node__composer-send-button[data-state="interrupt"] { background: rgb(24 24 27); color: #ffffff; } .agent-gui-node__composer-send-button[data-state="interrupt"]:hover:not( :disabled ) { background: rgb(9 9 11); } .agent-gui-node__provider-rail { display: flex; width: 52px; min-width: 0; min-height: 0; flex: 1 1 auto; flex-direction: column; align-items: center; padding: 2px 0 16px; overflow-x: hidden; overflow-y: auto; mask-image: linear-gradient( to bottom, #000 0, #000 calc(100% - 24px), transparent 100% ); -webkit-mask-image: linear-gradient( to bottom, #000 0, #000 calc(100% - 24px), transparent 100% ); -webkit-app-region: no-drag; } .agent-gui-node__provider-rail-footer { display: flex; width: 52px; min-width: 0; flex: 0 0 auto; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 0; -webkit-app-region: no-drag; } .agent-gui-node__provider-rail-config-footer { padding-bottom: 4px; } .agent-gui-node__provider-rail-config-footer:last-child { padding-bottom: 12px; } .agent-gui-node__provider-rail-sidebar-footer { padding-bottom: 0; } .agent-gui-node__provider-rail-sidebar-footer:last-child { padding-bottom: 12px; } .agent-gui-node__provider-rail-sidebar-footer + .agent-gui-node__provider-rail-config-footer { margin-top: 8px; } .agent-gui-node__provider-rail-config-button { display: grid; width: 32px; height: 32px; place-items: center; border: 0; border-radius: 6px; background: transparent; color: var(--text-secondary); padding: 0; transition: background 120ms ease, color 120ms ease; -webkit-app-region: no-drag; } .agent-gui-node__provider-rail-config-button:hover:not(:disabled), .agent-gui-node__provider-rail-config-button[data-state="open"] { background: var(--transparency-hover); color: var(--text-primary); } .agent-gui-node__provider-rail-config-button:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--border-focus); } .agent-gui-node__provider-rail-config-button:disabled { color: var(--text-tertiary); cursor: not-allowed; } .agent-gui-node__provider-rail-tile { position: relative; display: grid; width: 52px; min-width: 0; grid-template-rows: 32px; gap: 0; place-items: center; border: 0; background: transparent; color: var(--text-tertiary); padding: 0; font-size: 10px; font-weight: 600; line-height: 14px; text-align: center; transition: color 120ms ease, margin 140ms ease, opacity 140ms ease; -webkit-app-region: no-drag; } .agent-gui-node__provider-rail-tile[draggable="true"] { cursor: grab; } .agent-gui-node__provider-rail-tile[draggable="true"]:active { cursor: grabbing; } .agent-gui-node__provider-rail-tile + .agent-gui-node__provider-rail-tile { margin-top: 12px; } .agent-gui-node__provider-rail-tile-label { max-width: 100%; margin-top: 4px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .agent-gui-node__provider-rail-tile:has( + .agent-gui-node__provider-rail-separator ) { padding-bottom: 0; } .agent-gui-node__provider-rail-tile:hover:not(:disabled) { color: var(--text-secondary); } .agent-gui-node__provider-rail-tile:disabled { cursor: not-allowed; opacity: 0.3; } .agent-gui-node__provider-rail-tile[data-dragging="true"] { opacity: 0.42; } .agent-gui-node__provider-rail-tile[data-drag-over="before"] { margin-top: 24px; } .agent-gui-node__provider-rail-tile[data-drag-over="after"] { margin-bottom: 12px; } .agent-gui-node__provider-rail-tile[data-drag-over="before"]::before, .agent-gui-node__provider-rail-tile[data-drag-over="after"]::after { content: ""; position: absolute; left: 12px; right: 12px; height: 2px; border-radius: 999px; background: var(--brand-primary, var(--tutti-purple)); pointer-events: none; } .agent-gui-node__provider-rail-tile[data-drag-over="before"]::before { top: -13px; } .agent-gui-node__provider-rail-tile[data-drag-over="after"]::after { bottom: -13px; } .agent-gui-node__provider-rail-separator { display: block; width: 28px; height: 1px; flex: 0 0 auto; margin-block: 12px; background: var(--line-2); } .agent-gui-node__provider-rail-tile[data-loading="true"] { cursor: progress; } .agent-gui-node__provider-rail-avatar { --agent-gui-avatar-badge-offset: -4px; --agent-gui-avatar-badge-size: 16px; position: relative; box-sizing: border-box; display: grid; width: 32px; height: 32px; place-items: center; overflow: visible; border: 2px solid transparent; border-radius: 8px; background: transparent; color: var(--text-tertiary); transition: border-color 140ms ease, outline-color 140ms ease, background-color 140ms ease, color 140ms ease, opacity 140ms ease, transform 140ms ease; } .agent-gui-node__provider-rail-tile:not([data-selected="true"]) .agent-gui-node__provider-rail-avatar { opacity: 1; } /* "Beta" tag straddling the selected icon's stroke: its centerline sits on the avatar's outer edge (the stroke is centered there with a -1px outline offset), horizontally centered on the icon. */ .agent-gui-node__provider-rail-beta-badge { position: absolute; top: 100%; left: 50%; transform: translate(-50%, -50%); z-index: 2; width: 26px; height: auto; pointer-events: none; } .agent-gui-node__provider-rail-tile:hover:not(:disabled) .agent-gui-node__provider-rail-avatar { background: var(--fill-secondary); color: var(--text-secondary); } .agent-gui-node__provider-rail-tile[data-selected="true"] { color: var(--text-primary); } /* Selected stroke floats 1px outside the 28px icon container: a 2px outline centered on the avatar's outer edge (-1px offset) leaves exactly 1px of transparent gap between the container and the stroke's inner edge. */ .agent-gui-node__provider-rail-tile[data-selected="true"] .agent-gui-node__provider-rail-avatar { border-color: transparent; background: color-mix(in srgb, var(--background-fronted) 80%, white); outline: 2px solid var(--brand-primary, var(--tutti-purple)); outline-offset: -1px; color: var(--brand-primary, var(--tutti-purple)); } .agent-gui-node__provider-rail-avatar-icon { width: 18px; height: 18px; } .agent-gui-node__provider-rail-avatar-image { width: 28px; height: 28px; border-radius: 6px; object-fit: contain; } .agent-gui-node__agent-avatar { position: relative; } .agent-gui-node__agent-avatar-image { display: block; width: 100%; height: 100%; object-fit: contain; } .agent-gui-node__agent-avatar-badge { position: absolute; right: var(--agent-gui-avatar-badge-offset, -4px); bottom: var(--agent-gui-avatar-badge-offset, -4px); box-sizing: border-box; display: grid; width: var(--agent-gui-avatar-badge-size, 16px); height: var(--agent-gui-avatar-badge-size, 16px); place-items: center; overflow: hidden; border: 1px solid var(--background-fronted); border-radius: 999px; background: var(--background-fronted); pointer-events: none; font-size: 9px; line-height: 1; } .agent-gui-node__agent-avatar-badge-image { width: 100%; height: 100%; object-fit: cover; } .agent-gui-node__provider-rail-tile[data-loading="true"] .agent-gui-node__provider-rail-avatar { background: linear-gradient( 90deg, var(--fill-tertiary), var(--fill-secondary), var(--fill-tertiary) ); background-size: 200% 100%; animation: agent-gui-provider-target-loading 1.2s ease-in-out infinite; } .agent-gui-provider-manager-tile[data-dragging="true"] { opacity: 0.45; } .agent-gui-provider-manager-drop-zone { transition: background-color 140ms ease, box-shadow 140ms ease; } .agent-gui-provider-manager-drop-zone[data-drop-active="true"] { background: color-mix( in srgb, var(--brand-primary, var(--tutti-purple)) 7%, transparent ); box-shadow: inset 0 0 0 1px color-mix( in srgb, var(--brand-primary, var(--tutti-purple)) 42%, transparent ); } .agent-gui-provider-manager-drop-zone[data-drop-blocked="true"] { background: color-mix(in srgb, var(--state-danger) 6%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--state-danger) 28%, transparent); } .agent-gui-provider-manager-tile > :not(.agent-gui-provider-manager-drop-indicator) { transition: translate 140ms ease; } .agent-gui-provider-manager-tile[data-drag-over="before"] > :not(.agent-gui-provider-manager-drop-indicator) { translate: 8px 0; } .agent-gui-provider-manager-tile[data-drag-over="after"] > :not(.agent-gui-provider-manager-drop-indicator) { translate: -8px 0; } .agent-gui-provider-manager-drop-indicator { position: absolute; top: 4px; bottom: 4px; width: 2px; border-radius: 999px; background: var(--brand-primary, var(--tutti-purple)); pointer-events: none; } .agent-gui-provider-manager-drop-indicator[data-position="before"] { left: -9px; } .agent-gui-provider-manager-drop-indicator[data-position="after"] { right: -9px; } .agent-gui-provider-manager-tile[data-long-press="true"] { animation: agent-gui-provider-manager-long-press 550ms linear; } .agent-gui-provider-manager-tile[data-editing="true"] { transform-origin: 50% 42%; animation: agent-gui-provider-manager-wiggle 180ms ease-in-out infinite alternate; } .agent-gui-provider-manager-tile[data-editing="true"]:nth-child(2n) { animation-delay: -90ms; animation-direction: alternate-reverse; } .agent-gui-provider-manager-tile[data-editing="true"][data-drag-active="true"] { animation: none; } @keyframes agent-gui-provider-manager-wiggle { 0% { transform: rotate(-1.2deg) translateY(0); } 100% { transform: rotate(1.2deg) translateY(-0.5px); } } @keyframes agent-gui-provider-manager-long-press { from { scale: 1; } to { scale: 1; } } @media (prefers-reduced-motion: reduce) { .agent-gui-provider-manager-tile[data-editing="true"] { animation: none; } } @keyframes agent-gui-provider-target-loading { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } } .agent-gui-node__empty-hero { /* Center one shared frame instead of each state's intrinsic content height. Wrapped titles, composer controls, and readiness actions then grow down. */ --agent-gui-empty-hero-anchor-block-size: 398px; display: flex; width: 100%; min-height: 100%; align-items: center; justify-content: center; padding: 24px clamp(32px, 4vw, 48px) 40px; } .agent-gui-node__empty-hero-body { --agent-gui-empty-hero-gap: 24px; display: grid; width: min(820px, 100%); min-width: 0; block-size: var(--agent-gui-empty-hero-anchor-block-size); align-content: start; gap: var(--agent-gui-empty-hero-gap); justify-items: center; } .agent-gui-node__empty-hero-icon-slot { display: grid; width: 54px; height: 54px; place-items: center; } /* The coverflow carousel needs a wider, taller stage than the single-icon slot; keep it centered in the hero column. */ .agent-gui-node__empty-hero-icon-slot:has( > .agent-gui-node__empty-hero-carousel ), .agent-gui-node__empty-hero-icon-slot[data-carousel-placeholder="true"] { width: min(400px, 100%); min-width: 320px; height: 112px; } .agent-gui-node__empty-hero-carousel-stage { position: relative; top: -24px; width: 100%; min-height: 100%; } .agent-gui-node__empty-hero-carousel-layer { position: absolute; z-index: 1; --agent-gui-hero-carousel-scale: 0.8; /* The stage measures the body's placeholder slot and pins the layer to it; the calc()/50% fallbacks remain only as the first-paint estimate. */ top: var(--agent-gui-hero-carousel-slot-top, calc(50% - 210px)); left: var(--agent-gui-hero-carousel-slot-left, 50%); width: round(nearest, min(400px, calc(100% - 64px)), 1px); min-width: 320px; transform: translateX(-50%) scale(var(--agent-gui-hero-carousel-scale)); transform-origin: center center; } @media (max-height: 639px) { .agent-gui-node__empty-hero-carousel-layer { --agent-gui-hero-carousel-scale: 0.64; top: calc( var(--agent-gui-hero-carousel-slot-top, calc(50% - 210px)) - 16px ); } } .agent-gui-node__empty-hero-carousel-placeholder { width: min(400px, 100%); min-width: 320px; height: 112px; flex: 0 0 auto; } /* Keep the overlayed carousel interactive while the ready/gated body below it changes independently. */ .agent-gui-node__empty-hero-carousel-layer > .agent-gui-node__empty-hero-carousel { pointer-events: auto; } .agent-gui-node__empty-hero-icon-effect { --agent-gui-avatar-badge-offset: -5px; --agent-gui-avatar-badge-size: 18px; display: block; width: 48px; height: 48px; object-fit: contain; animation: agent-gui-empty-hero-enter 260ms cubic-bezier(0.16, 1, 0.3, 1) 40ms backwards; } /* Empty-hero agent carousel ("All" tab): a three.js ring of same-sized agent records (see agentGuiHeroCarouselScene.ts). Records farther around the ring genuinely shrink and fade with perspective; visuals live on the canvas, while visually-hidden buttons keep the switcher reachable by keyboard, screen readers, and DOM tests. */ .agent-gui-node__empty-hero-carousel { position: relative; width: 100%; height: 112px; outline: none; touch-action: pan-y; animation: agent-gui-empty-hero-enter 260ms cubic-bezier(0.16, 1, 0.3, 1) 40ms backwards; } /* Reference VinylPlayer structure, scaled from 440px to the 112px hero slot. */ .agent-gui-vinyl-player { position: absolute; top: 50%; left: 50%; z-index: 2; width: 440px; height: 440px; overflow: visible; border-radius: 40px; background: transparent; pointer-events: none; transform: translate(-50%, -50%) scale(0.25); transform-origin: center; } .agent-gui-vinyl-player__chassis { position: absolute; top: 12px; left: 0; z-index: 0; width: 440px; height: 416px; object-fit: fill; pointer-events: none; } /* "Beta" wordmark SVG tucked into the turntable's bottom-right corner, tilted 30° to the left. The player renders at 0.25 (root) × 0.8 (hero layer) = 0.2 on screen, so the artwork is counter-scaled to net a readable on-screen size; position lengths stay in the 440px local space (× 0.2 on screen). */ .agent-gui-vinyl-player__beta { position: absolute; top: 380px; left: 372px; z-index: 3; width: 113px; height: auto; pointer-events: none; transform: translate(-50%, -50%) rotate(-30deg) scale(1.9); transform-origin: center; animation: agent-gui-vinyl-player-beta-slap 420ms cubic-bezier(0.34, 1.56, 0.64, 1) both; } /* Sticker "slap": drops in oversized and transparent, then snaps down to size with a slight overshoot so it lands like a decal being pressed on. Keep the translate/rotate in every keyframe since transform is a single property. */ @keyframes agent-gui-vinyl-player-beta-slap { 0% { opacity: 0; transform: translate(-50%, -50%) rotate(-30deg) scale(4.2); } 60% { opacity: 1; transform: translate(-50%, -50%) rotate(-30deg) scale(1.7); } 100% { opacity: 1; transform: translate(-50%, -50%) rotate(-30deg) scale(1.9); } } .agent-gui-vinyl-player__indicator { position: absolute; top: 32px; left: 32px; display: grid; width: 26px; height: 26px; place-items: center; border: 1px solid #c0c2c4; border-radius: 50%; background: #9ea0a3; box-shadow: 0 2px 4px rgb(0 0 0 / 10%), inset 0 1px 2px rgb(255 255 255 / 80%); display: none; } .agent-gui-vinyl-player__indicator-light { display: flex; width: 20px; height: 20px; align-items: center; justify-content: center; gap: 2px; border: 1px solid #384a3c; border-radius: 50%; background: #4b6652; box-shadow: inset 0 2px 6px rgb(0 0 0 / 40%); } .agent-gui-vinyl-player__indicator-light--playing { border-color: #86f0a6; background: #5edb84; box-shadow: 0 0 12px rgb(74 222 128 / 70%), inset 0 1px 4px rgb(255 255 255 / 60%); } .agent-gui-vinyl-player__indicator-light > span { width: 1px; height: 8px; background: rgb(255 255 255 / 80%); } .agent-gui-vinyl-player__platter { position: absolute; top: 29px; left: 24px; display: grid; width: 370px; height: 370px; place-items: center; border-radius: 50%; background: transparent; box-shadow: none; } .agent-gui-vinyl-player__platter-inner { display: grid; width: 340px; height: 340px; place-items: center; border-radius: 50%; background: transparent; box-shadow: none; } .agent-gui-vinyl-player__record { position: relative; display: grid; width: 326px; height: 326px; place-items: center; overflow: hidden; border-radius: 50%; background: repeating-radial-gradient( circle at center, rgb(255 255 255 / 9%) 0 2px, rgb(0 0 0 / 0%) 2px 8px ), #111; box-shadow: 0 4px 15px rgb(0 0 0 / 60%); animation: agent-gui-vinyl-player-record-spin 4s linear infinite paused; } .agent-gui-vinyl-player__record--playing { animation-play-state: running; } @keyframes agent-gui-vinyl-player-record-spin { to { transform: rotate(360deg); } } @media (prefers-reduced-motion: reduce) { .agent-gui-vinyl-player__record { animation: none; } } .agent-gui-vinyl-player__groove, .agent-gui-vinyl-player__reflection, .agent-gui-vinyl-player__label, .agent-gui-vinyl-player__hole { position: absolute; border-radius: 50%; } .agent-gui-vinyl-player__groove { border: 2px solid rgb(255 255 255 / 12%); } .agent-gui-vinyl-player__reflection { inset: 0; background: conic-gradient( from 0deg, transparent 0deg, rgb(255 255 255 / 15%) 45deg, transparent 90deg, transparent 180deg, rgb(255 255 255 / 15%) 225deg, transparent 270deg ); mix-blend-mode: screen; opacity: 0.35; } .agent-gui-vinyl-player__label { display: grid; width: 144px; height: 144px; place-items: center; overflow: hidden; background: #2a2a2a; box-shadow: inset 0 0 12px rgb(0 0 0 / 60%); } .agent-gui-vinyl-player__label > img { width: 100%; height: 100%; object-fit: cover; } .agent-gui-vinyl-player__tonearm { position: absolute; top: -20px; right: 14px; z-index: 4; width: 140px; height: 400px; object-fit: contain; pointer-events: none; transform: rotate(15deg); transform-origin: 50% 8%; } .agent-gui-vinyl-player__hole { width: 12px; height: 12px; border: 0.5px solid #717171; background: #e0e2e5; box-shadow: inset 0 1px 4px rgb(0 0 0 / 80%); } .agent-gui-vinyl-player__power-control { position: absolute; bottom: 32px; left: 32px; display: none; flex-direction: column; align-items: center; gap: 8px; } .agent-gui-vinyl-player__lever { display: block; width: 16px; height: 44px; border: 1px solid #111; border-radius: 10px; background: linear-gradient(90deg, #1a1a1a, #3a3a3a, #1a1a1a); box-shadow: 4px 2px 8px rgb(0 0 0 / 40%); transform-origin: bottom; } .agent-gui-vinyl-player__power-label { color: #3f4144; font-size: 10px; font-weight: 700; } .agent-gui-vinyl-player__tone-control { position: absolute; right: 32px; bottom: 32px; display: none; align-items: center; gap: 12px; color: #65676b; font-size: 10px; font-weight: 700; } .agent-gui-vinyl-player__tone-control > span:first-child { width: 30px; height: 52px; border: 1px solid #a0a2a4; border-radius: 6px; background: linear-gradient(#b0b2b5, #ced0d3); box-shadow: inset 0 2px 5px rgb(0 0 0 / 30%); } /* Match the WebGL carousel's historical BADGE_DIAMETER (0.36) and BADGE_OFFSET (0.4): the selected DOM player must keep the same owner-marker geometry as the records that move into and out of the center slot. */ .agent-gui-vinyl-player__owner-badge { position: absolute; right: -8%; bottom: -8%; z-index: 5; box-sizing: border-box; display: grid; width: 36%; aspect-ratio: 1; place-items: center; overflow: hidden; border: 8px solid var(--background-fronted); border-radius: 999px; background: var(--background-fronted); font-size: 18px; line-height: 1; } .agent-gui-node__empty-hero-carousel:has(:focus-visible) { border-radius: 12px; box-shadow: 0 0 0 1.5px var(--tutti-purple); } .agent-gui-node__empty-hero-carousel-canvas { display: block; width: 100%; height: 100%; opacity: 0; transition: opacity 120ms ease-out; /* Fade-out mask: the horizontal fade runs edge to edge so there is no dead band beside the integer-aligned canvas buffer. The vertical band melts tiles sinking down the wheel instead of clipping them at the bottom. */ mask-image: linear-gradient( 90deg, transparent 0%, #000 20%, #000 80%, transparent 100% ), linear-gradient(180deg, #000 0%, #000 70%, transparent 100%); mask-composite: intersect; mask-size: 100% 100%; mask-position: center; } .agent-gui-node__empty-hero-carousel[data-icons-ready="true"] > .agent-gui-node__empty-hero-carousel-canvas { opacity: 1; } .agent-gui-node__empty-hero-carousel-item { position: absolute; overflow: hidden; width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; clip-path: inset(50%); white-space: nowrap; } .agent-gui-node__empty-hero-title { margin: 0; text-align: center; color: var(--text-primary); font-size: 24px; line-height: 1.3; font-weight: 500; animation: agent-gui-empty-hero-enter 280ms cubic-bezier(0.16, 1, 0.3, 1) 110ms backwards; } .agent-gui-node__empty-hero-provider { font-family: Merriweather, Georgia, serif; font-style: italic; font-weight: 700; } .agent-gui-node__empty-provider-gate { max-width: 520px; gap: 8px; } /* Gate gap is 8px; add 16px so the icon-to-title spacing is 24px. */ .agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-icon-effect, .agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-carousel, .agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-carousel-placeholder { margin-bottom: 16px; } /* Keep the gate's carousel the same width as the ready hero's so the ring doesn't jump when selection lands on an unavailable agent. */ .agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-carousel { max-width: min(400px, 100%); } .agent-gui-node__empty-provider-gate-description { max-width: 420px; margin: 0; text-align: center; color: var(--text-secondary); font-size: 14px; line-height: 1.55; animation: agent-gui-empty-hero-enter 280ms cubic-bezier(0.16, 1, 0.3, 1) 150ms backwards; } .agent-gui-node__empty-provider-gate-status { min-height: 20px; color: var(--text-secondary); font-size: 13px; line-height: 20px; animation: agent-gui-empty-hero-enter 280ms cubic-bezier(0.16, 1, 0.3, 1) 170ms backwards; } .agent-gui-node__empty-provider-gate-action { /* Container gap is 8px; add 16px so the description-to-button spacing is 24px. */ margin-top: 16px; animation: agent-gui-empty-hero-enter 300ms cubic-bezier(0.16, 1, 0.3, 1) 190ms backwards; } .agent-gui-node__empty-hero-provider-select { display: inline-flex; width: auto; min-width: 0; height: auto; min-height: 0; vertical-align: baseline; border: 0; border-radius: 0; background: transparent; padding: 0; color: inherit; font: inherit; gap: 0.08em; line-height: inherit; letter-spacing: inherit; box-shadow: none; white-space: nowrap; } .agent-gui-node__empty-hero-provider-select:hover, .agent-gui-node__empty-hero-provider-select:focus, .agent-gui-node__empty-hero-provider-select:focus-visible, .agent-gui-node__empty-hero-provider-select[data-state="open"] { background: transparent; color: inherit; box-shadow: none; } .agent-gui-node__empty-hero-provider-select > svg { width: 20px; height: 20px; flex: 0 0 auto; margin-top: 0.08em; margin-left: 2px; opacity: 0.72; stroke-width: 3px; } .agent-gui-node__empty-provider-gate-action:disabled { border-color: var(--line-2); background: var(--fill-tertiary); color: var(--text-disabled); cursor: not-allowed; opacity: 0.65; } .agent-gui-node__empty-hero-body > .agent-gui-node__composer-hero { animation: agent-gui-empty-hero-enter 300ms cubic-bezier(0.16, 1, 0.3, 1) 180ms backwards; } .agent-gui-node__empty-hero-suggestions { position: relative; display: grid; width: min(760px, 100%); margin: 0 auto; gap: 12px; justify-items: stretch; animation: agent-gui-empty-hero-enter 300ms cubic-bezier(0.16, 1, 0.3, 1) 240ms backwards; } .agent-gui-node__empty-hero-suggestions-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; } .agent-gui-node__empty-hero-suggestions-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line-2, var(--nexight-line-2)); border-radius: 999px; background: transparent; padding: 6px 14px; color: var(--text-secondary); font: inherit; font-size: 11px; line-height: 1.2; cursor: pointer; transition: background 120ms ease, border-color 120ms ease, color 120ms ease; } .agent-gui-node__empty-hero-suggestions-chip:hover { border-color: var(--line-1, var(--nexight-line-1)); background: var(--background-fronted); color: var(--text-primary); } .agent-gui-node__empty-hero-suggestions-chip[aria-pressed="true"] { border-color: var(--line-1, var(--nexight-line-1)); background: color-mix(in srgb, var(--text-tertiary) 12%, transparent); color: var(--text-primary); } .agent-gui-node__empty-hero-suggestions-chip-icon { width: 14px; height: 14px; flex: 0 0 auto; opacity: 0.8; } .agent-gui-node__empty-hero-suggestions-card { position: absolute; top: 0; right: 0; left: 0; z-index: 5; display: grid; gap: 2px; border: 1px solid var(--line-2, var(--nexight-line-2)); border-radius: 16px; background: var(--background-fronted); padding: 8px; box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.28); animation: agent-gui-empty-hero-enter 220ms cubic-bezier(0.16, 1, 0.3, 1) backwards; } .agent-gui-node__empty-hero-suggestions-card-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px 4px; } .agent-gui-node__empty-hero-suggestions-card-title { display: inline-flex; align-items: center; gap: 8px; color: var(--text-tertiary); font-size: 13px; line-height: 1.2; } .agent-gui-node__empty-hero-suggestions-card-close { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; flex: 0 0 auto; border: 0; border-radius: 8px; background: transparent; padding: 0; color: var(--text-tertiary); cursor: pointer; transition: background 120ms ease, color 120ms ease; } .agent-gui-node__empty-hero-suggestions-card-close:hover { background: color-mix(in srgb, var(--text-tertiary) 10%, transparent); color: var(--text-primary); } .agent-gui-node__empty-hero-suggestions-card-close > svg { width: 16px; height: 16px; } .agent-gui-node__empty-hero-suggestions-item { display: flex; align-items: center; width: 100%; height: 32px; border: 0; border-radius: 6px; background: transparent; padding: 0 14px; color: var(--text-secondary); font: inherit; font-size: 13px; line-height: 1.2; text-align: left; cursor: pointer; transition: background 120ms ease, color 120ms ease; } .agent-gui-node__empty-hero-suggestions-item:hover { background: color-mix(in srgb, var(--text-tertiary) 8%, transparent); color: var(--text-primary); } @container agent-gui-node (max-width: 900px) { .agent-gui-node__empty-hero { padding-right: 32px; padding-left: 32px; } .agent-gui-node__empty-hero-body, .agent-gui-node__empty-hero-body > .agent-gui-node__composer-hero, .agent-gui-node__empty-hero-body > .agent-gui-node__empty-hero-suggestions { width: 100%; } } [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-hero-icon-effect, [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-hero-carousel, [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-hero-title, [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-provider-gate-description, [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-provider-gate-status, [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-provider-gate-action, [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-hero-body > .agent-gui-node__composer-hero, [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-hero-suggestions, [data-workspace-node-window-kind="agentGui"][data-workspace-node-window-appearance="embedded"] .agent-gui-node__empty-hero-suggestions-card { animation: none; } @keyframes agent-gui-empty-hero-enter { from { opacity: 0; transform: translate3d(0, 18px, 0); } to { opacity: 1; transform: translate3d(0, 0, 0); } } @keyframes agent-gui-star-border-path { 0% { opacity: 0; offset-distance: 0%; } 5% { opacity: 1; } 20% { opacity: 1; } 27% { opacity: 0; } 30% { opacity: 0; offset-distance: 30%; } 34% { opacity: 1; } 46% { opacity: 1; } 50% { opacity: 0; offset-distance: 50%; } 55% { opacity: 1; } 70% { opacity: 1; } 77% { opacity: 0; } 80% { opacity: 0; offset-distance: 80%; } 84% { opacity: 1; } 96% { opacity: 1; } 100% { opacity: 0; offset-distance: 100%; } } @media (prefers-reduced-motion: reduce) { .agent-gui-edge-glow::before, .agent-gui-edge-glow::after, .agent-gui-node__composer-input-group[data-edge-glow="true"]::before, .agent-gui-node__composer-input-group[data-edge-glow="true"]::after { animation: none; opacity: 0.62; } } .desktop-dock-popup__agent-info { position: relative; z-index: 2; display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 6px; color: var(--text-tertiary); cursor: default; outline: none; transition: background-color 140ms ease, color 140ms ease; } .desktop-dock-popup__agent-info:hover, .desktop-dock-popup__agent-info:focus-visible { color: var(--text-secondary); background: var(--transparency-block); } .desktop-dock-popup__agent-info-popover { position: absolute; top: calc(100% + 8px); right: 0; z-index: 3; box-sizing: border-box; width: min(280px, calc(100vw - 48px)); min-width: 220px; max-width: calc(100vw - 48px); padding: 10px 12px; border: 1px solid var(--line-2, var(--tutti-line-2)); border-radius: 8px; background: var(--background-fronted); box-shadow: 0 12px 32px rgb(0 0 0 / 0.16); opacity: 0; pointer-events: none; transform: translateY(-4px); transition: opacity 140ms ease, transform 140ms ease; } .desktop-dock-popup__agent-info-popover--portal { position: fixed; z-index: 1000000; opacity: 1; pointer-events: auto; transform: translateY(0); transform-origin: top center; animation: desktop-dock-agent-info-popover-enter 160ms cubic-bezier(0.16, 1, 0.3, 1) both; } .desktop-dock-popup__agent-info:hover .desktop-dock-popup__agent-info-popover, .desktop-dock-popup__agent-info:focus-visible .desktop-dock-popup__agent-info-popover, .desktop-dock-popup__agent-info:focus-within .desktop-dock-popup__agent-info-popover { opacity: 1; pointer-events: auto; transform: translateY(0); } @keyframes desktop-dock-agent-info-popover-enter { from { opacity: 0; transform: translateY(-4px) scale(0.98); } to { opacity: 1; transform: translateY(0) scale(1); } } @media (prefers-reduced-motion: reduce) { .desktop-dock-popup__agent-info-popover--portal { animation: none; } } .desktop-dock-popup__agent-info-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; } .desktop-dock-popup__agent-info-item { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 16px; align-items: baseline; color: var(--text-primary); font-size: 12.5px; line-height: 1.45; white-space: normal; } .desktop-dock-popup__agent-info-item[data-has-label="false"] { grid-template-columns: minmax(0, 1fr); gap: 0; } .desktop-dock-popup__agent-info-label { color: var(--text-secondary); white-space: nowrap; } .desktop-dock-popup__agent-info-value { display: block; overflow: hidden; min-width: 0; color: var(--text-primary); text-align: right; text-overflow: ellipsis; white-space: nowrap; } .desktop-dock-popup__agent-info-item[data-has-label="false"] .desktop-dock-popup__agent-info-value { text-align: left; } .desktop-dock-popup__agent-status-secondary { color: var(--text-tertiary); } .workspace-node-window__title:has(.desktop-dock-popup__agent-info) { overflow: visible; } .workspace-agents-status-panel__activity-footer { width: 100%; margin-top: 4px; } [data-workspace-app-icon="true"] { display: inline-grid; min-width: 0; min-height: 0; place-items: center; overflow: hidden; border-radius: 22.5%; background: var(--workspace-app-icon-bg, transparent); } [data-workspace-app-icon="true"] > img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; } [data-workspace-app-icon="true"] > .tsh-agent-object-token__kind-icon { display: block; } .workspace-agents-status-panel__detail-subagent-log { display: flex; flex-direction: column; gap: 2px; } .workspace-agents-status-panel__detail-subagent-log-entry { color: var(--tutti-text-muted, rgba(0, 0, 0, 0.55)); font-size: 12px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; } .workspace-agents-status-panel__detail-subagent-log-entry--latest { color: var(--tutti-text-primary, rgba(0, 0, 0, 0.85)); } .workspace-agents-status-panel__detail-subagent-log-entry--tool { font-family: var(--tutti-font-mono, ui-monospace, monospace); } .workspace-agents-status-panel__detail-subagent-log-entry--failure { color: var(--tutti-status-danger, #c0392b); } .workspace-agents-status-panel__detail-subagent-log-omitted { color: var(--tutti-text-muted, rgba(0, 0, 0, 0.45)); font-size: 11px; font-style: italic; } .workspace-agents-status-panel__detail-subagent-activity--failure { color: var(--tutti-status-danger, #c0392b); } .workspace-agents-status-panel__detail-subagent-name { color: var(--text-secondary); margin-left: 4px; } .workspace-agents-status-panel__detail-tool-row--subagent .workspace-agents-status-panel__detail-subagent-status { display: inline-block; width: 8px; height: 8px; border-radius: 50%; } /* Sub-agent body indents like an expanded tool (24px under the icon column) */ .workspace-agents-status-panel__detail-subagent-reveal { box-sizing: border-box; padding-left: 24px; } /* Bash-block-style sub-agent body: task strip on top, progress below */ .workspace-agents-status-panel__detail-subagent-terminal { overflow: hidden; border: 1px solid var(--line-2); border-radius: 8px; background: var(--background-panel); } .workspace-agents-status-panel__detail-subagent-task-strip { padding: 8px 12px; border-bottom: 1px solid var(--line-2); color: var(--text-secondary); font-size: 11px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; } .workspace-agents-status-panel__detail-subagent-activity--in-terminal { padding: 8px 12px; font-size: 11px; line-height: 1.5; } /* Fully occluded Workbench nodes stay mounted for instant switching, but their animations must not keep repainting pixels that cannot reach the screen. Partial exposure removes this rule, even when another window owns focus. */ .agent-gui-node__layout[data-agent-gui-visible="false"] :where(*, *::before, *::after) { animation-play-state: paused !important; } /* Occlusion is geometric, not focus-based. Fully covered Workbench bodies keep their DOM state but stop producing tiles; partially exposed bodies remain painted in full so moving the covering window never reveals a black region. */ .agent-gui-node__layout[data-agent-gui-visible="false"] { content-visibility: hidden; }