html, body { margin: 0; padding: 0; height: 100%; overflow: hidden; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; } #root { height: 100vh; overflow: hidden; } /* Scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.15); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.25); } .ant-menu-dark { background: transparent !important; } .ant-menu-dark .ant-menu-item-selected { background-color: #2e3250 !important; } .ant-menu-dark .ant-menu-item:hover { background-color: rgba(255, 255, 255, 0.08) !important; } /* editable-card Tabs 默认有 4px paddingTop,导致 TabBar 顶部出现空隙 */ .ant-tabs-editable-card > .ant-tabs-nav { padding-top: 0 !important; margin-top: 0 !important; } /* * nav-only-tabs:Tabs 组件只用于渲染导航栏,内容区由外部 flex 子元素控制。 * 彻底绕开 Ant Design v5 CSS-in-JS 对内容高度的干扰。 */ .ant-tabs.nav-only-tabs .ant-tabs-content-holder { display: none !important; } /* * flex-tabs(保留兼容,当前 Runs 页改用 nav-only-tabs) */ /* Run list row hover */ .run-row { transition: background 0.12s; } .run-row:hover { background: #fafafa; } /* Pulse dot for running indicators */ .pulse-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex-shrink: 0; box-shadow: 0 0 0 0 rgba(22, 119, 255, 0.55); animation: pulse-dot 1.6s ease-out infinite; } @keyframes pulse-dot { 0% { box-shadow: 0 0 0 0 rgba(22, 119, 255, 0.55); } 70% { box-shadow: 0 0 0 8px rgba(22, 119, 255, 0); } 100% { box-shadow: 0 0 0 0 rgba(22, 119, 255, 0); } } /* Typing dots for pending replies */ .typing-dots { display: inline-flex; gap: 4px; padding: 2px 4px; } .typing-dots > span { width: 6px; height: 6px; border-radius: 50%; background: #b7c0cd; animation: typing-blink 1.2s infinite ease-in-out; } .typing-dots > span:nth-child(2) { animation-delay: 0.2s; } .typing-dots > span:nth-child(3) { animation-delay: 0.4s; } @keyframes typing-blink { 0%, 80%, 100% { opacity: 0.25; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-2px); } } /* Category tree node hover — reveal action buttons */ .cat-tree-node:hover .cat-actions { opacity: 1 !important; }