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; } /* 二级菜单展开背景:与侧边栏 #1e2030 协调,用微暗叠加制造层次而非跳色 */ .ant-menu-dark .ant-menu-sub { background: rgba(0, 0, 0, 0.15) !important; } .ant-menu-dark .ant-menu-submenu-title:hover { background-color: rgba(255, 255, 255, 0.08) !important; } .ant-menu-dark .ant-menu-submenu-selected > .ant-menu-submenu-title { color: rgba(255, 255, 255, 0.9) !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; } /* 状态统计条(评估列表 / 任务队列页共用):一排可点击的状态计数卡 */ .stat-bar { display: flex; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; } .stat-chip { background: #fff; border: 1px solid #f0f0f0; border-radius: 8px; padding: 8px 20px; cursor: pointer; min-width: 110px; transition: all 0.15s; } .stat-chip:hover { border-color: #1677ff; } .stat-chip.active { border-color: #1677ff; box-shadow: 0 0 0 1px #1677ff inset; } .stat-chip .n { font-size: 22px; font-weight: 600; line-height: 1.1; } .stat-chip .l { font-size: 12px; color: #6b7280; } /* * intelligent-detail-tabs:评估详情页的 Tabs 需承载内容面板(概览/决策过程/ * 配置历史/报告)。建立高度链:Tabs 撑满父容器,content-holder 占剩余空间, * 面板内的子组件(height:100% + overflowY:auto)才能正确滚动。 */ .ant-tabs.intelligent-detail-tabs { display: flex; flex-direction: column; height: 100%; } .ant-tabs.intelligent-detail-tabs .ant-tabs-content-holder { flex: 1; min-height: 0; overflow: hidden; } .ant-tabs.intelligent-detail-tabs .ant-tabs-content, .ant-tabs.intelligent-detail-tabs .ant-tabs-tabpane { height: 100%; } /* * 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); } } /* File management */ .files-layout { display: grid; grid-template-columns: minmax(220px, 280px) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); height: 100%; min-height: 0; background: #fff; border-top: 1px solid #f0f0f0; } .files-category-panel, .files-list-panel { display: flex; flex-direction: column; min-width: 0; min-height: 0; overflow: hidden; background: #fff; } .files-category-panel { border-right: 1px solid #f0f0f0; } .files-panel-header, .files-list-header { min-height: 48px; padding: 8px 12px; border-bottom: 1px solid #f0f0f0; background: #fafafa; box-sizing: border-box; } .files-panel-header { display: flex; align-items: center; justify-content: space-between; } .files-category-scroll, .files-table-scroll { flex: 1; min-height: 0; overflow: auto; } .files-category-scroll { padding: 6px 4px; } .files-category-scroll .ant-tree, .files-category-scroll .ant-tree-list, .files-category-scroll .ant-tree-list-holder-inner { min-width: 100%; } .files-category-scroll .ant-tree-node-content-wrapper { min-width: 0; flex: 1; } .files-category-scroll .ant-tree-title { display: block; width: 100%; min-width: 0; } .cat-tree-node { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto; align-items: center; gap: 6px; width: 100%; min-width: 0; } .cat-tree-node-all { grid-template-columns: 16px minmax(0, 1fr); font-size: 14px; font-weight: 600; } .cat-tree-icon { color: #d48806; font-size: 15px; } .cat-tree-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .cat-actions { display: inline-flex; flex-shrink: 0; opacity: 0; transition: opacity 0.15s; } .cat-actions .ant-btn { width: 24px; height: 24px; padding: 0; } .cat-tree-node:hover .cat-actions, .cat-tree-node:focus-within .cat-actions { opacity: 1; } .files-list-header { display: flex; align-items: center; gap: 16px; } .files-current-category { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: 14px; font-weight: 600; color: #262626; } .files-current-category span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .files-stat { flex-shrink: 0; color: #8c8c8c; font-size: 13px; } .files-extension-stats { flex: 1; min-width: 0; } .files-list-actions { display: flex; flex-shrink: 0; gap: 8px; margin-left: auto; } .files-name-stack { display: grid; gap: 5px; min-width: 0; } .files-name-row { display: grid; grid-template-columns: 16px minmax(0, 1fr); align-items: center; gap: 8px; min-width: 0; } .files-name-cell { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; } .files-location-cell { display: grid; gap: 3px; min-width: 0; } .files-category-path { display: grid; grid-template-columns: 14px minmax(0, 1fr); align-items: center; gap: 5px; min-width: 0; color: #595959; font-size: 13px; } .files-category-path .anticon { color: #d48806; } .files-category-path span, .files-location-cell code { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .files-location-cell code { display: block; padding-left: 19px; color: #8c8c8c; font-size: 12px; background: transparent; } .files-location-mobile { display: none; } .files-upload-category { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px; margin-bottom: 16px; } @media (max-width: 760px) { .files-layout { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(150px, 30%) minmax(0, 1fr); } .files-category-panel { border-right: 0; border-bottom: 1px solid #f0f0f0; } .files-list-header { flex-wrap: wrap; gap: 8px 12px; } .files-extension-stats { display: none; } .files-list-actions { margin-left: auto; } } @media (max-width: 767px) { .files-location-mobile { display: grid; padding-left: 24px; } .files-location-mobile code { padding-left: 19px; } }