:root { --senlin-primary: #165dff; --senlin-bg: #f7f8fa; --senlin-panel: #ffffff; --senlin-border: #e5e6eb; --senlin-text: #1d2129; --senlin-muted: #86909c; --senlin-soft-blue: #e8f3ff; --senlin-status: #142033; } .app { min-height: 100vh; overflow-x: hidden; background: var(--senlin-bg); color: var(--senlin-text); } .theme-dark { --senlin-bg: #1e1e1e; --senlin-panel: #252526; --senlin-border: #3c3c3c; --senlin-text: #cccccc; --senlin-muted: #858585; --senlin-soft-blue: rgba(0, 122, 204, 0.22); --senlin-primary: #007acc; --senlin-status: #007acc; } .theme-dark .arco-layout, .theme-dark .arco-card, .theme-dark .arco-tabs, .theme-dark .arco-input, .theme-dark .arco-textarea, .theme-dark .arco-btn-secondary { background: var(--senlin-panel); color: var(--senlin-text); } .theme-dark .arco-card, .theme-dark .arco-input, .theme-dark .arco-textarea, .theme-dark .arco-btn, .theme-dark .arco-tabs-header-title { border-color: var(--senlin-border); } .theme-dark .arco-typography, .theme-dark .arco-typography p, .theme-dark .arco-typography h1, .theme-dark .arco-typography h2, .theme-dark .arco-typography h3, .theme-dark .arco-typography h4, .theme-dark .arco-typography h5, .theme-dark .arco-typography h6 { color: var(--senlin-text); } .theme-dark .arco-typography-secondary { color: var(--senlin-muted); } .login-screen { min-height: 100vh; display: grid; place-items: center; padding: 40px; background: radial-gradient(circle at 0 0, rgba(22, 93, 255, 0.08), transparent 28%), linear-gradient(180deg, #f3f7ff 0%, #f7f8fa 42%, #ffffff 100%); } .login-card.arco-card { width: min(1180px, 96vw); min-height: 430px; overflow: hidden; border-color: var(--senlin-border); border-radius: 8px; box-shadow: 0 12px 36px rgba(29, 33, 41, 0.08); } .login-card .arco-card-body { display: grid; grid-template-columns: 1fr 1.1fr 1fr; padding: 0; } .login-brand-panel, .login-form-panel, .login-value-panel { min-height: 430px; padding: 42px; } .login-brand-panel, .login-form-panel { border-right: 1px solid var(--senlin-border); } .login-brand-panel { display: grid; align-content: center; gap: 12px; } .brand-lockup { display: flex; align-items: center; gap: 10px; } .brand-lockup.large { gap: 16px; } .brand-symbol { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 8px; background: var(--senlin-primary); color: white; font-weight: 800; font-size: 18px; } .brand-lockup.large .brand-symbol { width: 46px; height: 46px; border-radius: 12px; font-size: 24px; } .brand-name { font-size: 18px; font-weight: 700; } .login-slogan { margin-top: 28px; font-size: 16px; font-weight: 600; } .login-footer-links { align-self: end; flex-wrap: wrap; margin-top: 72px; } .login-footer-links .arco-typography { white-space: nowrap; } .login-form-panel { display: grid; align-content: center; } .login-form { margin-top: 20px; } .login-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; } .check-dot { width: 14px; height: 14px; display: inline-block; border-radius: 3px; background: var(--senlin-primary); box-shadow: inset 0 0 0 3px white; } .connection-card { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; margin-top: 14px; padding: 10px 12px; border: 1px solid #7be188; border-radius: 6px; background: #f0fff4; color: #168a2f; } .connection-title { display: block; color: #168a2f; font-weight: 600; } .login-value-panel { display: grid; align-content: center; gap: 18px; } .value-point { display: grid; grid-template-columns: 42px 1fr; gap: 12px; align-items: center; } .value-point > span { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 999px; background: var(--senlin-soft-blue); color: var(--senlin-primary); font-size: 22px; } .value-title { display: block; font-weight: 700; } .workbench-shell { height: 100vh; display: grid; grid-template-rows: 58px minmax(0, 1fr) 32px; overflow: hidden; background: var(--senlin-bg); } .topbar { display: grid; grid-template-columns: 210px minmax(480px, 680px) 1fr; align-items: center; gap: 18px; height: 58px; padding: 0 16px; border-bottom: 1px solid var(--senlin-border); background: var(--senlin-panel); } .global-search { display: grid; grid-template-columns: minmax(0, 1fr) 76px; height: 42px; border: 1px solid var(--senlin-primary); border-radius: 6px; overflow: hidden; box-shadow: 0 0 0 2px rgba(22, 93, 255, 0.08); } .global-search .arco-input-inner-wrapper { height: 40px; border: 0; border-radius: 0; background: var(--senlin-panel); } .global-search .arco-btn { height: 40px; border-radius: 0; } .topbar-actions { justify-content: flex-end; } .workbench-main { min-height: 0; min-width: 0; } .project-rail { display: flex; flex-direction: column; align-items: center; gap: 12px; overflow: hidden; border-right: 1px solid var(--senlin-border); background: var(--senlin-panel); } .project-rail .arco-layout-sider-children { width: calc(100% - 1px); height: 100%; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; gap: 12px; overflow: hidden !important; padding: 14px 24px; } .project-stack, .project-stack .arco-space-item { width: 48px; } .dashboard-button, .create-project { width: 48px !important; height: 48px !important; min-width: 48px; padding: 0 !important; border-radius: 8px; } .dashboard-button.active { border-color: var(--senlin-primary); background: var(--senlin-primary); color: white; } .create-project { font-size: 11px; white-space: normal; } .project-button { width: 48px; height: 48px; border: 1px solid var(--senlin-border); border-radius: 8px; background: color-mix(in srgb, var(--project-color) 9%, white); color: var(--project-color); font-weight: 700; cursor: pointer; } .project-button.active { border-color: var(--project-color); background: var(--project-color); color: white; } .project-badge .arco-badge-number { box-shadow: 0 0 0 2px var(--senlin-panel); } .project-badge.urgent .arco-badge-number { background: #f53f3f; } .channel-sidebar { min-height: 0; overflow-x: hidden; overflow-y: auto; scrollbar-width: none; scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; padding: 16px; border-right: 1px solid var(--senlin-border); background: var(--senlin-panel); } .project-title { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; } .project-title h5 { margin: 0; } .channel-list { display: grid; gap: 4px; overflow-x: hidden; overflow-y: auto; scrollbar-width: none; scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; } .channel-button { width: 100%; min-height: 36px; display: flex; align-items: center; justify-content: space-between; gap: 8px; border: 0; border-radius: 6px; background: transparent; color: var(--senlin-text); padding: 7px 10px; cursor: pointer; } .channel-button.active { background: var(--senlin-soft-blue); color: var(--senlin-primary); box-shadow: inset 3px 0 0 var(--senlin-primary); } .channel-left { min-width: 0; display: flex; align-items: center; gap: 8px; } .channel-left .arco-typography { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .recent-sessions, .tag-cloud { display: grid; gap: 8px; } .section-title { font-weight: 700; } .recent-sessions button { display: grid; gap: 2px; border: 0; border-radius: 6px; background: transparent; padding: 6px 8px; text-align: left; cursor: pointer; } .recent-sessions button:hover { background: var(--senlin-soft-blue); } .stage { min-width: 0; overflow: auto; overflow-x: hidden; overflow-y: auto; scrollbar-width: none; scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; padding: 16px; background: var(--senlin-bg); } .overview-page { display: grid; gap: 12px; } .overview-head { display: flex; align-items: end; justify-content: space-between; padding-bottom: 10px; border-bottom: 1px solid var(--senlin-border); } .overview-head h4 { margin: 3px 0 0; } .metric-row { min-width: 0; } .metric-card.arco-card { border-radius: 6px; } .metric-card .arco-card-body { padding: 14px; } .metric-card h3 { margin: 2px 0; } .metric-delta { color: #00b42a; font-size: 12px; } .queue-section.arco-card { border-radius: 6px; } .queue-section .arco-card-body { padding: 12px; } .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; } .section-header h6 { margin: 0; } .data-row { width: 100%; display: grid; grid-template-columns: minmax(220px, 1.25fr) minmax(220px, 1fr) 82px 70px 82px; align-items: center; gap: 12px; border: 0; border-top: 1px solid var(--senlin-border); background: transparent; color: var(--senlin-text); padding: 9px 0; text-align: left; cursor: pointer; } .data-row:first-of-type { border-top: 0; } .data-row:hover { background: color-mix(in srgb, var(--senlin-primary) 5%, transparent); } .data-row span, .data-row time { overflow: hidden; color: var(--senlin-muted); font-size: 13px; text-overflow: ellipsis; white-space: nowrap; } .data-row .row-title { display: flex; align-items: center; gap: 8px; color: var(--senlin-text); font-weight: 600; } .task-row { grid-template-columns: minmax(260px, 1fr) 82px 100px 100px 130px; } .ai-row { grid-template-columns: minmax(260px, 1fr) minmax(260px, 1.2fr) 80px 90px; } .note-row { grid-template-columns: minmax(260px, 1fr) 80px 160px 80px; } .inspector { min-height: 0; overflow-x: hidden; overflow-y: auto; scrollbar-width: none; scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; padding: 0 16px 16px; border-left: 1px solid var(--senlin-border); background: var(--senlin-panel); } .channel-sidebar:hover, .stage:hover, .inspector:hover, .channel-list:hover, .inspector .arco-tabs-content:hover, .property-list:hover { scrollbar-width: thin; } .channel-sidebar::-webkit-scrollbar, .stage::-webkit-scrollbar, .inspector::-webkit-scrollbar, .channel-list::-webkit-scrollbar, .inspector .arco-tabs-content::-webkit-scrollbar, .property-list::-webkit-scrollbar { width: 0; height: 0; } .channel-sidebar:hover::-webkit-scrollbar, .stage:hover::-webkit-scrollbar, .inspector:hover::-webkit-scrollbar, .channel-list:hover::-webkit-scrollbar, .inspector .arco-tabs-content:hover::-webkit-scrollbar, .property-list:hover::-webkit-scrollbar { width: 8px; height: 8px; } .channel-sidebar::-webkit-scrollbar-thumb, .stage::-webkit-scrollbar-thumb, .inspector::-webkit-scrollbar-thumb, .channel-list::-webkit-scrollbar-thumb, .inspector .arco-tabs-content::-webkit-scrollbar-thumb, .property-list::-webkit-scrollbar-thumb { border-radius: 999px; background: color-mix(in srgb, var(--senlin-muted) 45%, transparent); } .channel-sidebar::-webkit-scrollbar-track, .stage::-webkit-scrollbar-track, .inspector::-webkit-scrollbar-track, .channel-list::-webkit-scrollbar-track, .inspector .arco-tabs-content::-webkit-scrollbar-track, .property-list::-webkit-scrollbar-track { background: transparent; } .inspector .arco-tabs-header { margin-bottom: 12px; } .inspector .arco-tabs-content { overflow-x: hidden; overflow-y: auto; scrollbar-width: none; scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; } .discussion-panel { display: grid; } .inspector-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .discussion-list { width: 100%; } .discussion-item { display: grid; grid-template-columns: 30px 1fr; gap: 10px; } .discussion-item p { margin: 4px 0 0; color: var(--senlin-text); } .discussion-name { font-weight: 700; } .comment-box { position: sticky; bottom: 0; display: grid; gap: 8px; margin-top: 16px; padding-top: 12px; background: var(--senlin-panel); } .comment-actions { display: flex; align-items: center; justify-content: space-between; } .property-list, .more-actions { width: 100%; } .property-list { overflow-x: hidden; overflow-y: auto; scrollbar-width: none; scrollbar-color: color-mix(in srgb, var(--senlin-muted) 45%, transparent) transparent; } .property-row { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--senlin-border); } .statusbar { height: 32px; display: grid; grid-template-columns: minmax(310px, 0.9fr) minmax(480px, 1.2fr) minmax(320px, 0.9fr); align-items: center; gap: 16px; padding: 0 16px; border-top: 1px solid rgba(255, 255, 255, 0.12); background: var(--senlin-status); color: rgba(255, 255, 255, 0.86); } .statusbar .arco-typography, .statusbar .arco-btn-text { color: rgba(255, 255, 255, 0.86); } .status-user, .status-tasks, .status-system { min-width: 0; display: flex; align-items: center; gap: 10px; white-space: nowrap; } .status-tasks { justify-content: center; } .status-tasks span, .status-system span { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; } .status-system { justify-content: flex-end; } .status-name { display: inline-flex; font-size: 12px; font-weight: 700; line-height: 1; } .status-identity { display: inline-flex; align-items: center; gap: 5px; } .status-online-dot { width: 7px; height: 7px; display: inline-block; border-radius: 50%; background: #7be188; box-shadow: 0 0 0 2px rgba(123, 225, 136, 0.16); } .status-system b { color: #7be188; } @media (max-width: 1180px) { .workbench-shell { min-width: 1180px; } .login-card .arco-card-body { grid-template-columns: 1fr; } .login-brand-panel, .login-form-panel { min-height: auto; border-right: 0; border-bottom: 1px solid var(--senlin-border); } .login-value-panel { min-height: auto; } }