Skip to content

Instantly share code, notes, and snippets.

@talentestors
Last active October 22, 2025 07:45
Show Gist options
  • Select an option

  • Save talentestors/8b3ef78c6b5539d6d304d2be6b7e6da7 to your computer and use it in GitHub Desktop.

Select an option

Save talentestors/8b3ef78c6b5539d6d304d2be6b7e6da7 to your computer and use it in GitHub Desktop.
Cherry Studio Theme
/* MaterialYou主题 CSS */
:root {
/* MaterialYou基础尺寸 */
--material-line-width: 0.3px;
--container-border-radius: 15px;
--list-item-border-radius: 8px;
/* 过渡时间 */
--duration-fast: 0.2s;
--duration-normal: 0.3s;
--easing-ease: ease;
/* Material You/Nord 配色(深色模式默认) */
--color-material-accent: #88c0d0;
--color-material-accent-bright: #8fbcbb;
--color-material-accent-purple: #b48ead;
--color-material-accent-rgb: 136, 192, 208;
--color-material-accent-purple-rgb: 180, 142, 173;
/* 线条 */
--color-material-line: rgba(var(--color-material-accent-rgb), 0.7);
--color-material-line-dim: rgba(var(--color-material-accent-rgb), 0.3);
/* 背景颜色 (增加壁纸可见度) */
--color-background: transparent;
--color-background-soft: rgba(59, 66, 82, 0.7);
--color-background-mute: rgba(67, 76, 94, 0.75);
--navbar-background: transparent;
--chat-background: transparent;
--chat-background-user: rgba(46, 52, 64, 0.7);
--chat-background-assistant: rgba(46, 52, 64, 0.7);
--chat-customize-collapse-background: rgba(46, 52, 64, 0.6);
--color-background-opacity: rgba(46, 52, 64, 0.7);
--color-background-rgb: 46, 52, 64;
--antd-arrow-background-color: rgba(67, 76, 94, 0.8);
/* 文本颜色 */
--chat-text-user: #e5e9f0;
--color-text-1: rgb(197, 232, 246);
--color-text-2: #d8dee9;
--chat-customize-codeHeader: #d8dee9;
--color-black: #2e3440;
--color-white: #eceff4;
/* 阴影颜色 */
--chat-customize-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06),
0 1px 2px rgba(0, 0, 0, 0.1);
--chat-customize-box-shadow2: none;
--chat-customize-box-shadow3: inset 0 1px 2px rgba(0, 0, 0, 0.1);
--chat-customize-box-shadow4: inset 0 0 0 1px
rgba(var(--color-material-accent-rgb), 0.3);
/* 其他变量 */
--color-black-rgb: 46, 52, 64;
--color-white-rgb: 236, 239, 244;
}
body {
letter-spacing: 0.03em;
line-height: 1.4;
}
/* --- 字体栈 --- */
/* UI 字体 */
.ant-modal-content,
.ant-popover-inner,
div[class^="InputContainer-"],
div[class^="OutputContainer-"],
div[class^="HistoryContainner-"],
.ant-notification-notice,
.ant-message-notice-content,
.ant-drawer-content,
.ant-collapse-content-box,
.ant-modal-body .ant-input-affix-wrapper input,
.ant-segmented-group .ant-segmented-item-label,
.ant-btn,
.ant-dropdown-trigger,
.ant-modal-header .ant-modal-title,
.ant-collapse-header,
li[class^="MenuItem-"],
#content-container [class^="ListItemContainer-"],
div[class^="SettingGroup-"] label,
.ant-tooltip-inner,
.markdown th,
.ant-table-thead > tr > th,
.markdown pre [class^="CodeHeader-"] {
font-weight: 600 !important;
letter-spacing: inherit;
line-height: inherit;
}
/* Markdown 标题字体 */
.markdown h1,
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
font-weight: 700 !important;
letter-spacing: 0.08em;
}*/
/* 阅读区域字体 */
.bubble .message-content-container,
.inputbar-container textarea,
.ant-modal .ant-modal-body,
.ant-table-tbody > tr > td,
.markdown blockquote,
.markdown table,
.markdown p,
.markdown li,
.markdown strong,
.markdown b,
.markdown em,
.markdown i {
letter-spacing: 0.03em !important;
line-height: 1.4 !important;
}*/
/* --- 主题模式 --- */
body[theme-mode="dark"] {
background-image: url("https://w.wallhaven.cc/full/j8/wallhaven-j831k5.png");
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
}
body[theme-mode="light"] {
/* Material You/Nord 配色(浅色模式) */
--color-material-accent: #7bbdffe0;
--color-material-accent-bright: #5e81ac;
--color-material-accent-purple: #b48ead;
--color-material-accent-rgb: 129, 161, 193;
--color-material-accent-purple-rgb: 180, 142, 173;
/* 线条 */
--color-material-line: rgba(var(--color-material-accent-rgb), 0.3);
--color-material-line-dim: rgba(var(--color-material-accent-rgb), 0.1);
/* 背景颜色 (增加壁纸可见度) */
--color-background: transparent;
--color-background-soft: rgba(236, 239, 244, 0.6);
--color-background-mute: rgba(229, 233, 240, 0.6);
--navbar-background: transparent;
--chat-background: transparent;
--chat-background-user: rgba(245, 248, 251, 0.7);
--chat-background-assistant: rgba(245, 248, 251, 0.7);
--chat-customize-collapse-background: rgba(236, 239, 244, 0.85);
--color-background-opacity: rgba(245, 248, 251, 0.65);
--color-background-rgb: 245, 248, 251;
--antd-arrow-background-color: rgba(229, 233, 240, 0.85);
/* 文本颜色 */
--chat-text-user: #4c566a;
--color-text-1: #2e3440;
--color-text-2: #4c566a;
--chat-customize-codeHeader: #4c566a;
--color-white: #ffffff;
--color-black: #2E340;
/* 其他变量 */
--color-black-rgb: 46, 52, 64;
--color-white-rgb: 255, 255, 255;
background-image: url("https://gcore.jsdelivr.net/gh/talentestors/cdn@latest/images/illust_132800.webp");
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
/* 浅色模式覆盖 */
.inputbar-container .ant-btn:hover {
background-color: rgba(var(--color-material-accent-rgb), 0.15) !important;
border-color: var(--color-material-line) !important;
}
.markdown pre [class^="CodeBlockWrapper-"],
.markdown table {
border-color: var(--color-material-line) !important;
}
.markdown pre [class^="CodeHeader-"] {
background-color: rgba(var(--color-white-rgb), 0.95) !important;
background-image: none !important;
color: var(--color-text-2);
}
.markdown pre [class^="CodeHeader-"]::after {
background: linear-gradient(90deg, transparent, var(--color-material-line));
opacity: 0.8;
z-index: 1;
}
}
/* == 全局组件样式 == */
.bubble:not(.multi-select-mode) .message-assistant .message-content-container {
padding-left: 5px;
}
/* 通用容器 */
.inputbar-container,
.ant-popover-inner,
div[class^="InputContainer-"],
div[class^="OutputContainer-"],
div[class^="HistoryContainner-"],
.ant-notification-notice,
.ant-message-notice-content,
.ant-drawer-content,
.ant-modal .ant-modal-content,
div[class^="AgentCardContainer-"],
.ant-table-wrapper,
.ant-collapse-item {
border-radius: var(--container-border-radius) !important;
box-shadow: var(--chat-customize-box-shadow);
background: var(--color-background-opacity) !important;
border: var(--material-line-width) solid var(--color-material-line-dim);
overflow: hidden;
position: relative;
transition: background-color var(--duration-normal) var(--easing-ease),
box-shadow var(--duration-normal) var(--easing-ease),
border-color var(--duration-normal) var(--easing-ease),
color var(--duration-normal) var(--easing-ease);
}
/* 输入框区域 */
.inputbar-container textarea {
resize: none;
color: var(--color-text-1) !important;
background-color: transparent !important;
}
.inputbar-container textarea:focus {
border: none !important;
box-shadow: none !important;
}
/* 输入栏按钮 */
.inputbar-container .ant-btn {
color: var(--color-text-1) !important;
background-color: rgba(var(--color-black-rgb), 0.08) !important;
border-color: var(--color-material-line-dim) !important;
box-shadow: none !important;
position: relative;
overflow: hidden;
border-width: var(--material-line-width) !important;
border-radius: var(--list-item-border-radius) !important;
transition: background-color var(--duration-fast) var(--easing-ease),
border-color var(--duration-fast) var(--easing-ease),
color var(--duration-fast) var(--easing-ease);
}
.inputbar-container .ant-btn .anticon,
.inputbar-container .ant-btn .iconfont {
color: var(--color-text-1) !important;
transition: color var(--duration-fast) var(--easing-ease);
}
/* 按钮 Hover */
.inputbar-container .ant-btn:hover {
background-color: rgba(var(--color-white-rgb), 0.12) !important;
border-color: var(--color-material-accent) !important;
color: var(--color-material-accent) !important;
}
.inputbar-container .ant-btn:hover .anticon,
.inputbar-container .ant-btn:hover .iconfont {
color: var(--color-material-accent) !important;
}
/* Dropdown Trigger */
.ant-dropdown-trigger {
background-color: transparent !important;
border: transparent !important;
box-shadow: none;
position: relative;
color: var(--color-text-2);
transition: color var(--duration-fast) var(--easing-ease);
}
.ant-dropdown-trigger:hover {
color: var(--color-text-1);
}
.ant-dropdown-trigger.active {
color: var(--color-material-accent-bright) !important;
}
.active .menu {
background-color: transparent !important;
border-radius: var(--list-item-border-radius);
}
/* 消息气泡容器 */
.bubble .message-content-container {
border-radius: var(--container-border-radius) !important;
box-shadow: var(--chat-customize-box-shadow);
background-color: var(--chat-background-assistant) !important;
position: relative;
overflow: hidden;
transition: background-color var(--duration-normal) var(--easing-ease),
box-shadow var(--duration-normal) var(--easing-ease);
}
/* 气泡容器 ::before 边框 */
.bubble .message-content-container::before {
content: "";
position: absolute;
inset: 0;
border: var(--material-line-width) solid var(--color-material-line-dim);
border-radius: var(--container-border-radius) !important;
pointer-events: none;
}
/* 气泡底部渐变线 */
.bubble .message-content-container::after {
content: "";
position: absolute;
bottom: 0;
right: 0;
width: 20%;
height: 1px;
background: linear-gradient(90deg, transparent, var(--color-material-accent));
opacity: 0.8;
z-index: 2;
transition: background var(--duration-normal) var(--easing-ease);
}
/* 模态框特定样式 */
.ant-modal .ant-modal-content {
border: 1px solid var(--color-material-accent);
color: var(--color-text-1);
}
.ant-modal .ant-modal-content::before,
.ant-modal .ant-modal-content::after {
content: none !important;
display: none;
}
.ant-modal-header {
background-color: transparent !important;
border-bottom: 1px solid var(--color-material-accent);
border-radius: var(--container-border-radius) var(--container-border-radius) 0
0 !important;
padding: 16px 24px;
color: var(--color-text-1) !important;
position: relative;
transition: border-color var(--duration-normal) var(--easing-ease);
}
.ant-modal-title {
color: var(--color-text-1) !important;
}
/* 模态框头部渐变线 */
.ant-modal-header::after {
content: "";
position: absolute;
bottom: -1px;
right: 0;
width: 25%;
height: 1px;
background: linear-gradient(90deg, transparent, var(--color-material-accent));
opacity: 0.6;
z-index: 1;
transition: background var(--duration-normal) var(--easing-ease);
}
/* Agent/卡片信息 */
div[class^="AgentCardContainer-"] div[class^="CardInfo-"],
.ant-modal-confirm-content div[class^="AgentPrompt-"] {
background: var(--chat-customize-collapse-background) !important;
box-shadow: var(--chat-customize-box-shadow3) !important;
color: var(--color-text-1);
border-radius: var(--list-item-border-radius) !important;
transition: background-color var(--duration-normal) var(--easing-ease),
box-shadow var(--duration-normal) var(--easing-ease);
}
/* 为 CardInfo 添加边框 */
div[class^="AgentCardContainer-"] div[class^="CardInfo-"] {
border: var(--material-line-width) solid var(--color-material-line-dim);
}
/* --- 菜单项 / 列表项 / 分段选择标签 --- */
li[class^="MenuItem-"],
#content-container [class^="ListItemContainer-"],
.ant-segmented-group .ant-segmented-item-label {
border: 0 !important;
box-sizing: border-box;
border-radius: var(--list-item-border-radius) !important;
color: var(--color-text-2);
position: relative;
background-color: transparent !important;
transition: background-color var(--duration-fast) var(--easing-ease),
color var(--duration-fast) var(--easing-ease),
box-shadow var(--duration-fast) var(--easing-ease),
border-left-color var(--duration-fast) var(--easing-ease);
}
/* Active 状态 */
li[class^="MenuItem-"].active,
#content-container [class^="ListItemContainer-"].active,
.ant-segmented-group .ant-segmented-item-label[aria-selected="true"] {
box-shadow: var(--chat-customize-box-shadow4) !important;
background: var(--color-background-soft) !important;
color: var(--color-text-1);
border-left: 2px solid var(--color-material-accent) !important;
}
/* Hover 状态 */
li[class^="MenuItem-"]:hover,
#content-container [class^="ListItemContainer-"]:hover,
.ant-segmented-group
.ant-segmented-item-label:not([aria-selected="true"]):hover {
background-color: rgba(var(--color-black-rgb), 0.1) !important;
color: var(--color-text-1);
}
/* 侧边栏图标 */
#app-sidebar [class^="Icon-"] {
transition: box-shadow var(--duration-fast) var(--easing-ease),
background var(--duration-fast) var(--easing-ease),
border var(--duration-fast) var(--easing-ease),
color var(--duration-fast) var(--easing-ease);
}
#app-sidebar [class^="Icon-"].active {
box-shadow: var(--chat-customize-box-shadow3) !important;
background: transparent !important;
border: none !important;
color: var(--color-material-accent-bright) !important;
position: relative;
}
/* --- 设置分组 / 分段选择器 容器 --- */
div[class^="SettingGroup-"] .ant-segmented,
div[class^="SettingContainer-"] div[class^="SettingGroup-"],
.ant-segmented.ant-segmented-shape-round {
border-radius: var(--container-border-radius) !important;
background-color: var(--color-background-opacity) !important;
box-shadow: var(--chat-customize-box-shadow) !important;
border: var(--material-line-width) solid var(--color-material-line-dim);
transition: background-color var(--duration-normal) var(--easing-ease),
box-shadow var(--duration-normal) var(--easing-ease),
border-color var(--duration-normal) var(--easing-ease);
}
.ant-segmented-thumb,
label.ant-segmented-item.ant-segmented-item-selected {
background-color: transparent !important;
border: transparent !important;
}
.ant-segmented-thumb-motion-appear-active {
display: none !important;
}
/* 折叠面板 */
.ant-collapse-item {
margin-bottom: 1rem;
}
.ant-collapse-header {
background-color: var(--color-background-soft) !important;
border-radius: 0 !important;
border-bottom: none;
color: var(--color-text-1);
position: relative;
padding: 16px;
transition: background-color var(--duration-normal) var(--easing-ease),
color var(--duration-normal) var(--easing-ease);
}
.ant-collapse-content {
background-color: transparent !important;
border-radius: 0 !important;
}
.ant-collapse-content-box {
background-color: rgba(var(--color-background-rgb), 0.1) !important;
border-radius: 0 !important;
padding: 16px;
color: var(--color-text-1);
transition: background-color var(--duration-normal) var(--easing-ease),
color var(--duration-normal) var(--easing-ease);
}
.ant-collapse,
.ant-collapse-borderless {
border: none !important;
background: transparent !important;
}
/* 输入框(模态框内) */
div[class^="EditorWrapper-"],
.ant-modal-body .ant-input-affix-wrapper {
background-color: var(--color-background-mute) !important;
box-shadow: var(--chat-customize-box-shadow4) !important;
border-radius: var(--list-item-border-radius) !important;
position: relative;
overflow: hidden;
border: var(--material-line-width) solid var(--color-material-line-dim);
transition: background-color var(--duration-fast) var(--easing-ease),
box-shadow var(--duration-fast) var(--easing-ease),
border-color var(--duration-fast) var(--easing-ease);
}
#content-container div[class^="EditorWrapper-"] {
border-radius: 0 !important;
}
.ant-modal-body .ant-input-affix-wrapper input {
background: transparent !important;
color: var(--color-text-1) !important;
}
.ant-modal-body .ant-input-affix-wrapper-focused {
background-color: var(--color-background-mute) !important;
box-shadow: var(--chat-customize-box-shadow4),
0 0 0 2px rgba(var(--color-material-accent-rgb), 0.3) !important;
border-color: var(--color-material-accent) !important;
}
div[class^="SearchIcon-"] {
background-color: transparent !important;
color: var(--color-text-2);
}
/* --- Markdown 内容 --- */
.markdown {
color: var(--color-text-1);
}
/* Markdown 标题颜色 */
.markdown h1 {
font-size: 2em;
border-bottom: 2px solid var(--color-material-accent);
padding-bottom: 0.3em;
margin-bottom: 1em;
margin-top: 1.5em;
position: relative;
color: var(--color-material-accent) !important;
transition: border-bottom-color var(--duration-normal) var(--easing-ease),
color var(--duration-normal) var(--easing-ease);
}
/* H1 底部渐变线 */
.markdown h1::after {
content: "";
position: absolute;
right: 0;
bottom: -2px;
width: 30%;
height: 2px;
background: linear-gradient(90deg, transparent, var(--color-material-accent));
transition: background var(--duration-normal) var(--easing-ease);
}
.markdown h2 {
font-size: 1.5em;
border-left: 4px solid var(--color-material-accent-bright);
padding-left: 1rem;
margin-bottom: 1em;
margin-top: 1.5em;
position: relative;
color: var(--color-material-accent-bright) !important;
transition: border-left-color var(--duration-normal) var(--easing-ease),
color var(--duration-normal) var(--easing-ease);
}
.markdown h3 {
font-size: 1.2em;
margin-bottom: 1em;
margin-top: 1.5em;
color: var(--color-material-accent-purple) !important;
display: inline-block;
background-color: rgba(var(--color-material-accent-purple-rgb), 0.08);
padding: 0.1em 0.4em;
border-radius: 4px;
line-height: 1.5;
box-decoration-break: clone;
-webkit-box-decoration-break: clone;
transition: background-color var(--duration-fast) var(--easing-ease),
color var(--duration-fast) var(--easing-ease);
}
/* H4, H5, H6 */
.markdown h4,
.markdown h5,
.markdown h6 {
color: var(--color-text-1) !important;
letter-spacing: 0.08em;
margin-bottom: 1em;
margin-top: 1.5em;
position: relative;
transition: color var(--duration-normal) var(--easing-ease);
}
.markdown h4 {
font-size: 1.1em;
}
.markdown h5 {
font-size: 1em;
}
.markdown h6 {
font-size: 0.9em;
}
/* Markdown 引用块 */
.markdown blockquote {
padding: 1rem 1.5rem;
margin: 1.5rem 0;
background-color: rgba(var(--color-material-accent-purple-rgb), 0.12);
font-style: italic;
color: var(--color-text-2);
position: relative;
border: 1px solid var(--color-material-accent-purple);
border-left: 4px solid var(--color-material-accent-purple);
border-radius: var(--container-border-radius) !important;
box-shadow: var(--chat-customize-box-shadow);
overflow: hidden;
transition: background-color var(--duration-normal) var(--easing-ease),
border-color var(--duration-normal) var(--easing-ease),
box-shadow var(--duration-normal) var(--easing-ease);
}
/* Markdown 粗体/斜体 */
.markdown strong,
.markdown b {
font-weight: bold !important;
color: var(--color-text-1);
background-color: rgba(var(--color-material-accent-rgb), 0.08);
padding: 0.1em 0.4em;
margin: 0 0.1em;
border-radius: 4px;
line-height: 1.5;
box-decoration-break: clone;
-webkit-box-decoration-break: clone;
}
.markdown em,
.markdown i {
font-style: italic;
color: var(--color-text-2);
background-color: rgba(var(--color-material-accent-purple-rgb), 0.06);
padding: 0.1em 0.4em;
margin: 0 0.1em;
border-radius: 4px;
border: 1px solid rgba(var(--color-material-accent-purple-rgb), 0.08);
line-height: 1.5;
box-decoration-break: clone;
-webkit-box-decoration-break: clone;
}
/* Markdown 代码块内部 Shiki */
.markdown pre .shiki {
border: none !important;
background-color: transparent !important;
padding: 0 !important;
margin: 0 !important;
}
/* Markdown 代码块 (pre) */
.markdown pre {
padding: 0 !important;
border-radius: var(--container-border-radius) !important;
background: none !important;
box-shadow: none !important;
margin: 1.5rem 0;
/* overflow:hidden; <-- 移除这里的 overflow */
position: relative;
}
/* --- 代码块 Wrapper 和 Table --- */
.markdown pre [class^="CodeBlockWrapper-"],
.markdown table {
border-radius: var(--container-border-radius) !important;
box-shadow: var(--chat-customize-box-shadow) !important;
/* overflow:hidden; <-- 移除这里的 overflow */
border: var(--material-line-width) solid var(--color-material-line-dim);
position: relative;
background-color: var(--color-background-opacity) !important;
transition: background-color var(--duration-normal) var(--easing-ease),
box-shadow var(--duration-normal) var(--easing-ease),
border-color var(--duration-normal) var(--easing-ease);
}
/* 为代码块 Wrapper 单独设置溢出 */
.markdown pre [class^="CodeBlockWrapper-"] {
overflow-x: auto;
overflow-y: hidden;
}
/* <-- 添加或修改这个规则 */
/* Markdown Table 的 margin */
.markdown table {
margin: 1.5rem 0;
border-collapse: separate;
border-spacing: 0;
width: 100%;
}
/* --- Table Header --- */
.markdown th,
.ant-table-thead > tr > th {
background-color: rgba(var(--color-material-accent-rgb), 0.1) !important;
border-bottom: 1px solid var(--color-material-accent) !important;
color: var(--color-text-1);
padding: 0.75rem;
border-left: 1px solid rgba(var(--color-material-accent-rgb), 0.2);
text-align: left;
position: relative;
transition: background-color var(--duration-normal) var(--easing-ease),
border-color var(--duration-normal) var(--easing-ease),
color var(--duration-normal) var(--easing-ease);
}
.markdown th:first-child,
.ant-table-thead > tr > th:first-child {
border-left: none;
padding-left: 0.75rem;
}
/* --- Table Data --- */
.markdown td,
.ant-table-tbody > tr > td {
padding: 0.75rem;
border-bottom: 1px solid rgba(var(--color-material-accent-rgb), 0.2) !important;
border-left: 1px solid rgba(var(--color-material-accent-rgb), 0.2);
color: var(--color-text-1);
transition: border-color var(--duration-normal) var(--easing-ease),
color var(--duration-normal) var(--easing-ease);
}
.markdown td:first-child,
.ant-table-tbody > tr > td:first-child {
border-left: none;
padding-left: 0.75rem;
}
.markdown tr:last-child td,
.ant-table-tbody > tr:last-child > td {
border-bottom: none !important;
padding-bottom: 0.75rem;
}
/* Markdown 代码块 Header */
.markdown pre [class^="CodeHeader-"] {
border-radius: 0 !important;
background-color: rgba(var(--color-black-rgb), 0.9) !important;
background-image: none !important;
border-bottom: none;
margin-bottom: 0 !important;
display: flex;
align-items: center;
justify-content: center;
color: var(--color-text-2);
padding: 8px 16px;
position: relative;
overflow: hidden;
padding-left: 60px;
transition: background-color var(--duration-normal) var(--easing-ease),
color var(--duration-normal) var(--easing-ease);
}
/* 交通灯圆点 */
.markdown pre [class^="CodeHeader-"]::before {
content: " ";
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 16px;
width: 12px;
height: 12px;
border-radius: 50%;
background: rgb(252, 132, 170);
box-shadow: 20px 0 rgb(147, 243, 230), 40px 0 rgb(132, 205, 143);
z-index: 1;
}
/* 渐变线 */
.markdown pre [class^="CodeHeader-"]::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(90deg, var(--color-material-accent), transparent);
opacity: 0.8;
z-index: 1;
transition: background var(--duration-normal) var(--easing-ease);
}
/* Markdown 代码块 Content */
.markdown pre [class^="CodeContent-"] {
background-color: transparent !important;
border-radius: 0 !important;
border-top: none !important;
margin-top: 0 !important;
padding: 16px;
}
/* Markdown 列表/HR */
.markdown ul li::marker,
.markdown ol li::marker {
color: var(--color-material-accent);
transition: color var(--duration-fast) var(--easing-ease);
}
.markdown hr {
border: none;
height: 1px;
background: linear-gradient(
90deg,
transparent,
var(--color-material-accent),
transparent
);
margin: 2rem 0;
opacity: 0.4;
position: relative;
transition: background var(--duration-normal) var(--easing-ease);
}
/* HR 圆点 */
.markdown hr::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 6px;
height: 6px;
background-color: var(--color-material-accent);
border-radius: 50%;
z-index: 1;
transition: background-color var(--duration-normal) var(--easing-ease);
}
/* 链接 */
a {
color: var(--color-material-accent) !important;
text-decoration: none;
position: relative;
transition: color var(--duration-fast) var(--easing-ease);
}
a:hover {
text-decoration: underline;
color: var(--color-material-accent-bright) !important;
}
/* 侧边栏图标(Home) */
.home-sidebar .anticon,
.home-sidebar .iconfont {
color: var(--color-text-1) !important;
font-size: 24px !important;
}
/* 表单控件 */
.ant-switch {
transition: background-color var(--duration-fast) var(--easing-ease);
}
.ant-switch-checked {
background-color: var(--color-material-accent) !important;
}
.ant-checkbox-checked .ant-checkbox-inner,
.ant-checkbox-indeterminate .ant-checkbox-inner {
background-color: var(--color-material-accent) !important;
border-color: var(--color-material-accent) !important;
transition: background-color var(--duration-fast) var(--easing-ease),
border-color var(--duration-fast) var(--easing-ease);
}
.ant-checkbox-wrapper:hover .ant-checkbox-inner,
.ant-checkbox:hover .ant-checkbox-inner,
.ant-checkbox-input:focus + .ant-checkbox-inner {
border-color: var(--color-material-accent) !important;
}
.ant-checkbox-checked::after {
border-color: var(--color-white) !important;
}
.ant-radio-checked .ant-radio-inner {
border-color: var(--color-material-accent) !important;
transition: border-color var(--duration-fast) var(--easing-ease);
}
.ant-radio-inner::after {
background-color: var(--color-material-accent) !important;
transition: background-color var(--duration-fast) var(--easing-ease);
}
.ant-radio-wrapper:hover .ant-radio,
.ant-radio:hover .ant-radio-inner,
.ant-radio-input:focus + .ant-radio-inner {
border-color: var(--color-material-accent) !important;
}
/* 选中高亮 */
::selection {
background-color: rgba(var(--color-material-accent-rgb), 0.2);
color: var(--color-white);
text-shadow: none;
transition: background-color var(--duration-fast) var(--easing-ease),
color var(--duration-fast) var(--easing-ease);
}
body[theme-mode="light"] ::selection {
color: var(--color-black);
}
/* 输入框RGB效果 */
@keyframes gradientFlow {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
@keyframes blinking {
0% {
filter: drop-shadow(rgba(var(--color-theme-blue-rgb), 0.72) 0px 0px 3px);
}
25% {
filter: drop-shadow(rgba(var(--color-theme-blue-rgb), 0.72) 0px 0px 5px);
}
50% {
filter: drop-shadow(rgba(var(--color-theme-purple-rgb), 0.72) 0px 0px 10px);
}
75% {
filter: drop-shadow(rgba(var(--color-theme-blue-rgb), 0.72) 0px 0px 5px);
}
100% {
filter: drop-shadow(rgba(var(--color-theme-blue-rgb), 0.72) 0px 0px 3px);
}
}
/* Dark Mode Background */
body[theme-mode="dark"] {
--color-background: transparent; /* Make background transparent to show image */
background-image: url('https://hdwallsbox.com/wallpapers/l/original/46/ocean_minimalistic_soft_shading_light_gradient_background_deep_2880x1800_45707.jpg');
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
/* Override other background variables */
--color-background-soft: rgba(40, 44, 52, 0.2); /* Semi-transparent */
--color-background-mute: rgba(50, 55, 62, 0.2); /* Semi-transparent */
--navbar-background: transparent;
--navbar-background-mac: transparent; /* Also override mac variant */
--chat-background: transparent;
--chat-background-user: rgba(22, 27, 34, 0.8); /* Semi-transparent from example.css */
--chat-background-assistant: rgba(22, 27, 34, 0.8); /* Semi-transparent from example.css */
--color-group-background: transparent;
}
/* Light Mode Background */
body[theme-mode="light"] {
--color-background: transparent; /* Make background transparent to show image */
background-image: url('https://cdn.prod.website-files.com/61e61bc712a95079885fb13f/62aace0f4b6bc83b758b04f1_wallpaper-gradient-p-1080.jpeg');
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;
/* Override other background variables */
--color-background-soft: rgba(220, 220, 220, 0.2); /* Semi-transparent */
--color-background-mute: rgba(210, 210, 210, 0.2); /* Semi-transparent */
--navbar-background: transparent;
--navbar-background-mac: transparent; /* Also override mac variant */
--chat-background: transparent;
--chat-background-user: rgba(246, 248, 250, 0.8); /* Semi-transparent from example.css */
--chat-background-assistant: rgba(246, 248, 250, 0.8); /* Semi-transparent from example.css */
--color-group-background: transparent;
}
/* Ensure content container is also transparent */
#content-container {
background-color: transparent !important; /* Use !important to ensure override */
border: none; /* Optionally remove border if it looks weird with background */
}
/* == Transparent Inputs, Selects, Buttons == */
/* Define semi-transparent background variables (can be adjusted) */
:root {
--transparent-bg-ui-dark: rgba(40, 44, 52, 0.35); /* Increased opacity */
--transparent-bg-ui-light: rgba(220, 220, 220, 0.35); /* Increased opacity */
--transparent-bg-hover-dark: rgba(50, 55, 62, 0.5); /* Increased opacity */
--transparent-bg-hover-light: rgba(210, 210, 210, 0.5); /* Increased opacity */
--transparent-bg-focus-dark: rgba(60, 65, 72, 0.6); /* Increased opacity */
--transparent-bg-focus-light: rgba(200, 200, 200, 0.6); /* Increased opacity */
--transparent-bg-dropdown-dark: rgba(30, 33, 39, 0.8); /* Increased opacity */
--transparent-bg-dropdown-light: rgba(235, 235, 235, 0.8); /* Increased opacity */
--ui-blur-amount: 8px;
--dropdown-blur-amount: 12px;
/* Windows Blue Accent */
--color-windows-blue: #0078D4;
--color-windows-blue-rgb: 0, 120, 212;
--shadow-windows-blue-glow: rgba(var(--color-windows-blue-rgb), 0.15);
/* Keep bright blue from example.css for contrast */
--color-cyber-accent-bright: #0091FF;
/* New Theme Colors & Gradient */
--color-theme-blue: #0078D4;
--color-theme-purple: #8A2BE2;
--color-theme-blue-rgb: 0, 120, 212;
--color-theme-purple-rgb: 138, 43, 226;
--gradient-theme: linear-gradient(to right, var(--color-theme-blue), var(--color-theme-purple));
/* Markdown Specific */
--markdown-border-radius: 8px;
/* Light Mode Theme Colors (Using same as dark mode) */
--color-theme-light: var(--color-theme-blue);
--color-theme-light-accent: var(--color-theme-purple);
--color-theme-light-rgb: var(--color-theme-blue-rgb);
--color-theme-light-accent-rgb: var(--color-theme-purple-rgb);
--gradient-theme-light: var(--gradient-theme);
}
/* --- Inputs (Textarea, Input Fields) --- */
/* Input Wrapper - Restore default padding, apply background/blur */
.ant-input-affix-wrapper {
background: transparent !important; /* Base transparent */
border: none !important;
border-radius: 6px !important; /* Keep radius */
box-shadow: none !important;
transition: all 0.3s ease !important; /* Restore transition */
position: relative !important;
padding: 4px 11px !important; /* Restore default padding */
display: flex !important; /* Ensure proper alignment */
align-items: center !important; /* Vertically center content */
box-sizing: border-box !important; /* Ensure correct box sizing */
backdrop-filter: blur(var(--ui-blur-amount)); /* Apply blur */
-webkit-backdrop-filter: blur(var(--ui-blur-amount));
/* Apply theme-specific subtle background to wrapper */
}
body[theme-mode="dark"] .ant-input-affix-wrapper {
background-color: rgba(40, 44, 52, 0.2) !important;
}
body[theme-mode="light"] .ant-input-affix-wrapper {
background-color: rgba(220, 220, 220, 0.2) !important;
}
/* Ensure suffix/prefix is transparent */
.ant-input-affix-wrapper .ant-input-prefix,
.ant-input-affix-wrapper .ant-input-suffix {
background: transparent !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
/* Apply styles DIRECTLY to the inner input and standalone inputs/textarea */
.ant-input-affix-wrapper > input.ant-input,
input.ant-input:not(.ant-input-affix-wrapper input),
.inputbar-container textarea {
background: transparent !important; /* Start transparent */
border: none !important;
border-radius: 6px !important; /* Apply radius here */
box-shadow: none !important;
color: var(--color-text-1) !important;
padding: 0 !important; /* Ensure padding is 0 */
margin: 0 !important;
/* Keep height removed */
line-height: 1.5715 !important; /* Restore default line-height */
transition: none !important; /* Remove transition from inner input */
position: static !important; /* Reset position */
width: 100% !important; /* Ensure full width */
flex-grow: 1 !important; /* Allow input to grow */
box-sizing: border-box !important; /* Ensure correct box sizing */
}
/* Ensure inner input is completely transparent and has no blur (Combine theme rules) */
.ant-input-affix-wrapper > input.ant-input {
background-color: transparent !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
/* Apply styles to standalone input AND other textareas (EXCLUDING .inputbar-container textarea) */
input.ant-input:not(.ant-input-affix-wrapper input),
textarea.ant-input:not(.inputbar-container textarea) { /* General textarea ONLY */
padding: 4px 11px !important;
backdrop-filter: blur(var(--ui-blur-amount));
-webkit-backdrop-filter: blur(var(--ui-blur-amount));
border-radius: 6px !important;
border: none !important;
box-shadow: none !important;
color: var(--color-text-1) !important;
transition: all 0.3s ease !important;
/* position: relative !important; REMOVED */
width: 100% !important;
box-sizing: border-box !important;
line-height: 1.5715 !important;
margin: 0 !important;
}
/* Apply theme-specific background to standalone and other textareas */
body[theme-mode="dark"] input.ant-input:not(.ant-input-affix-wrapper input),
body[theme-mode="dark"] textarea.ant-input:not(.inputbar-container textarea) { /* General textarea ONLY */
background-color: rgba(40, 44, 52, 0.2) !important;
}
body[theme-mode="light"] input.ant-input:not(.ant-input-affix-wrapper input),
body[theme-mode="light"] textarea.ant-input:not(.inputbar-container textarea) { /* General textarea ONLY */
background-color: rgba(220, 220, 220, 0.2) !important;
}
/* --- Input Bar Container Specific Styles --- */
.inputbar-container {
border-radius: 6px !important;
border: none !important;
box-shadow: none !important;
backdrop-filter: blur(var(--ui-blur-amount)); /* Apply blur to container */
-webkit-backdrop-filter: blur(var(--ui-blur-amount));
position: relative; /* Keep relative if needed for children */
overflow: hidden; /* Keep hidden if needed */
padding: 4px 11px !important; /* Add padding to container */
}
body[theme-mode="dark"] .inputbar-container {
background-color: rgba(40, 44, 52, 0.2) !important; /* Apply background to container */
}
body[theme-mode="light"] .inputbar-container {
background-color: rgba(220, 220, 220, 0.2) !important; /* Apply background to container */
}
/* Ensure textarea inside inputbar is completely transparent */
.inputbar-container textarea {
background: transparent !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
border: none !important;
box-shadow: none !important;
color: var(--color-text-1) !important;
padding: 0 !important; /* Remove padding from textarea itself */
margin: 0 !important;
resize: none !important; /* Keep resize none */
width: 100% !important;
line-height: 1.5715 !important;
/* position: relative !important; REMOVED */
}
/* Focus States - Apply DIRECTLY to input/textarea */
input.ant-input:focus,
textarea:focus { /* This applies to ALL textareas */
box-shadow: none !important;
border: none !important;
outline: none !important; /* Ensure no default outline */
}
/* Ensure inner input remains transparent even when wrapper is focused */
.ant-input-affix-wrapper-focused > input.ant-input {
background-color: transparent !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
/* --- Selects / Dropdowns --- */
/* Select Trigger (Apply blur here) */
.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
border: none !important;
border-radius: 6px !important;
box-shadow: none !important;
backdrop-filter: blur(var(--ui-blur-amount));
-webkit-backdrop-filter: blur(var(--ui-blur-amount));
background-color: transparent !important; /* Fallback */
}
body[theme-mode="dark"] .ant-select:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
background-color: var(--transparent-bg-ui-dark) !important;
}
body[theme-mode="light"] .ant-select:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
background-color: var(--transparent-bg-ui-light) !important;
}
/* Select Trigger - Focused State */
.ant-select-focused:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
box-shadow: 0 0 0 2px rgba(0, 120, 215, 0.2) !important; /* Subtle focus ring */
}
body[theme-mode="dark"] .ant-select-focused:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
background-color: var(--transparent-bg-focus-dark) !important;
}
body[theme-mode="light"] .ant-select-focused:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
background-color: var(--transparent-bg-focus-light) !important;
}
/* Select Trigger Inner Elements (NO blur, transparent background) */
.ant-select-selection-search-input,
.ant-select-selection-item,
.ant-select-selection-placeholder {
background: transparent !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
color: var(--color-text-1) !important;
}
/* Dropdown Panel (Apply blur here) */
.ant-select-dropdown,
.ant-dropdown-menu {
border: none !important;
border-radius: 8px !important; /* Slightly larger radius for dropdowns */
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1) !important;
backdrop-filter: blur(var(--dropdown-blur-amount));
-webkit-backdrop-filter: blur(var(--dropdown-blur-amount));
padding: 4px !important; /* Add some padding */
background-color: transparent !important; /* Fallback */
}
body[theme-mode="dark"] .ant-select-dropdown,
body[theme-mode="dark"] .ant-dropdown-menu {
background-color: var(--transparent-bg-dropdown-dark) !important;
}
body[theme-mode="light"] .ant-select-dropdown,
body[theme-mode="light"] .ant-dropdown-menu {
background-color: var(--transparent-bg-dropdown-light) !important;
}
/* Dropdown Items (NO blur, transparent background initially) */
.ant-select-item,
.ant-dropdown-menu-item {
background: transparent !important;
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
border-radius: 4px !important;
color: var(--color-text-1) !important;
margin: 2px 0 !important; /* Add spacing */
}
/* Dropdown Item Hover/Active State */
.ant-select-item-option-active:not(.ant-select-item-option-disabled),
.ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled):hover {
color: var(--color-text-1) !important;
}
body[theme-mode="dark"] .ant-select-item-option-active:not(.ant-select-item-option-disabled),
body[theme-mode="dark"] .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled):hover {
background-color: var(--transparent-bg-hover-dark) !important;
}
body[theme-mode="light"] .ant-select-item-option-active:not(.ant-select-item-option-disabled),
body[theme-mode="light"] .ant-dropdown-menu-item:not(.ant-dropdown-menu-item-disabled):hover {
background-color: var(--transparent-bg-hover-light) !important;
}
/* Dropdown Item Selected State */
.ant-select-item-option-selected:not(.ant-select-item-option-disabled),
.ant-dropdown-menu-item-selected {
font-weight: 600; /* Make selected item bold */
color: var(--color-text-1) !important; /* Use default text color */
background-color: transparent !important; /* Remove default background */
position: relative; /* For pseudo-element */
padding-left: calc(1rem + 5px) !important; /* Make space for the gradient line */
}
/* Add gradient line */
.ant-select-item-option-selected:not(.ant-select-item-option-disabled)::before,
.ant-dropdown-menu-item-selected::before {
content: '';
position: absolute;
left: 4px; /* Slight indent from edge */
top: 4px; /* Add top margin */
bottom: 4px; /* Add bottom margin */
width: 5px; /* Line thickness */
background: linear-gradient(to bottom, var(--color-theme-blue), var(--color-theme-purple)); /* Vertical gradient */
border-radius: 3px; /* Rounded corners */
}
/* Active items in lists - EXCEPT sidebar items */
li[class*="active"]:not([class*="SideBarItem"]),
[data-active="true"]:not([class*="SideBarItem"]) {
color: var(--color-text-1) !important;
background-color: transparent !important;
position: relative;
padding-left: calc(1rem + 5px) !important;
}
/* Apply gradient line to active items - EXCEPT sidebar items */
li[class*="active"]:not([class*="SideBarItem"])::before,
[data-active="true"]:not([class*="SideBarItem"])::before {
content: '';
position: absolute;
left: 4px;
top: 4px;
bottom: 4px;
width: 5px;
background: linear-gradient(to bottom, var(--color-theme-blue), var(--color-theme-purple));
border-radius: 3px;
}
/* Specific style for sidebar icons */
#app-sidebar [class*="SideBarItem-module__item"], /* Targeting the item container */
div[class*="SideBarItem-module__item"],
#app-sidebar [class*="active"],
div[class*="SideBarItem-module__active"] {
border-radius: 12px !important; /* Increased radius for both hover and active states */
transition: background-color 0.2s ease; /* Smooth transition for hover */
}
/* Hover state for sidebar icons */
#app-sidebar [class*="SideBarItem-module__item"]:hover,
div[class*="SideBarItem-module__item"]:hover {
border-radius: 12px !important; /* Ensure hover has same radius */
}
body[theme-mode="dark"] #app-sidebar [class*="SideBarItem-module__item"]:hover,
body[theme-mode="dark"] div[class*="SideBarItem-module__item"]:hover {
background-color: var(--transparent-bg-hover-dark) !important;
}
body[theme-mode="light"] #app-sidebar [class*="SideBarItem-module__item"]:hover,
body[theme-mode="light"] div[class*="SideBarItem-module__item"]:hover {
background-color: var(--transparent-bg-hover-light) !important;
}
/* Active state for sidebar icons */
#app-sidebar [class*="active"], /* Guessing sidebar ID */
div[class*="SideBarItem-module__active"] /* Another common pattern */
{
/* background-color applied per theme */
/* color: var(--color-primary) !important; REMOVED - Keep original icon color */
padding-left: initial !important; /* Reset padding */
position: static !important; /* Reset position */
border-radius: 12px !important; /* Use the same radius as hover */
}
/* Dark mode active sidebar icon background */
body[theme-mode="dark"] #app-sidebar [class*="active"],
body[theme-mode="dark"] div[class*="SideBarItem-module__active"] {
background-color: var(--transparent-bg-hover-dark) !important;
}
/* Light mode active sidebar icon background (Lighter) */
body[theme-mode="light"] #app-sidebar [class*="active"],
body[theme-mode="light"] div[class*="SideBarItem-module__active"] {
background-color: var(--transparent-bg-hover-light) !important;
}
/* Ensure pseudo-element is explicitly hidden for sidebar icons */
#app-sidebar [class*="active"]::before,
div[class*="SideBarItem-module__active"]::before {
display: none !important;
}
/* --- Buttons --- */
.ant-btn {
border: none !important;
border-radius: 6px !important;
box-shadow: none !important;
backdrop-filter: blur(var(--ui-blur-amount));
-webkit-backdrop-filter: blur(var(--ui-blur-amount));
color: var(--color-text-1) !important;
background-color: transparent !important; /* Fallback */
}
/* Default Button Background - Make fully transparent */
body[theme-mode="dark"] .ant-btn:not(.ant-btn-primary):not(.ant-btn-dangerous):not(:disabled) {
background-color: transparent !important; /* Fully transparent */
}
body[theme-mode="light"] .ant-btn:not(.ant-btn-primary):not(.ant-btn-dangerous):not(:disabled) {
background-color: transparent !important; /* Fully transparent */
}
/* Button Hover State */
body[theme-mode="dark"] .ant-btn:not(.ant-btn-primary):not(.ant-btn-dangerous):not(:disabled):hover {
background-color: var(--transparent-bg-hover-dark) !important;
}
body[theme-mode="light"] .ant-btn:not(.ant-btn-primary):not(.ant-btn-dangerous):not(:disabled):hover {
background-color: var(--transparent-bg-hover-light) !important;
}
/* Button Active/Focus State (Optional: can use hover state or a slightly darker/lighter one) */
body[theme-mode="dark"] .ant-btn:not(.ant-btn-primary):not(.ant-btn-dangerous):not(:disabled):active,
body[theme-mode="dark"] .ant-btn:not(.ant-btn-primary):not(.ant-btn-dangerous):not(:disabled):focus-visible {
background-color: var(--transparent-bg-focus-dark) !important;
box-shadow: 0 0 0 2px rgba(0, 120, 215, 0.2) !important; /* Focus ring */
}
body[theme-mode="light"] .ant-btn:not(.ant-btn-primary):not(.ant-btn-dangerous):not(:disabled):active,
body[theme-mode="light"] .ant-btn:not(.ant-btn-primary):not(.ant-btn-dangerous):not(:disabled):focus-visible {
background-color: var(--transparent-bg-focus-light) !important;
box-shadow: 0 0 0 2px rgba(0, 120, 215, 0.2) !important; /* Focus ring */
}
/* Primary Button (Keep solid color or make semi-transparent if desired) */
.ant-btn-primary:not(:disabled) {
background-color: var(--color-primary) !important;
color: var(--color-white) !important; /* Ensure contrast */
backdrop-filter: none !important; /* Usually solid buttons don't need blur */
}
body[theme-mode="light"] .ant-btn-primary:not(:disabled) {
color: var(--color-black) !important; /* Adjust contrast for light mode if needed */
}
.ant-btn-primary:not(:disabled):hover {
background-color: color-mix(in srgb, var(--color-primary) 90%, black) !important; /* Darken slightly */
}
/* Ensure icons inside buttons inherit color */
.ant-btn .anticon, .ant-btn .iconfont, .ant-btn .lucide {
color: inherit !important;
}
/* Ensure selected segmented control items are transparent */
.ant-segmented-item-selected {
background-color: transparent !important;
}
#inputbar {
z-index: 1;
position: relative;
box-shadow: var(--box-shadow); /* Assuming --box-shadow is defined elsewhere or can be removed */
margin: 0 15px 15px 15px !important;
}
#inputbar::before {
content: '';
position: absolute;
inset: -1px;
border-radius: inherit;
padding: 2px;
/* Use theme gradient for background */
background: var(--gradient-theme);
background-size: 200% 200%;
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
mask-composite: exclude;
animation: gradientFlow 4s linear infinite;
opacity: 0;
transition: all 0.4s ease-in-out;
pointer-events: none;
}
#inputbar:focus-within {
/* Apply blinking animation */
animation: blinking 4s linear infinite;
}
#inputbar:focus-within::before {
opacity: 1;
}
/* Dark mode blinking shadow colors */
body[theme-mode='dark'] #inputbar:focus-within {
filter: drop-shadow(rgba(var(--color-theme-blue-rgb), 0.72) 0px 0px 3px);
}
body[theme-mode='dark'] #inputbar:focus-within:hover {
filter: drop-shadow(rgba(var(--color-theme-blue-rgb), 0.72) 0px 0px 5px);
}
body[theme-mode='dark'] #inputbar:focus-within:active {
filter: drop-shadow(rgba(var(--color-theme-purple-rgb), 0.72) 0px 0px 10px);
}
/* Light mode blinking shadow colors */
body[theme-mode='light'] #inputbar:focus-within {
filter: drop-shadow(rgba(var(--color-theme-blue-rgb), 0.72) 0px 0px 3px);
}
body[theme-mode='light'] #inputbar:focus-within:hover {
filter: drop-shadow(rgba(var(--color-theme-blue-rgb), 0.72) 0px 0px 5px);
}
body[theme-mode='light'] #inputbar:focus-within:active {
filter: drop-shadow(rgba(255, 105, 180, 0.72) 0px 0px 10px); /* Using a standard pink RGBA */
}
/* --- Modals / Drawers --- */
/* Apply blur and semi-opaque background */
.ant-modal .ant-modal-content,
.ant-drawer-content {
border: none !important;
border-radius: 8px !important; /* Match dropdown radius */
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1) !important; /* Match dropdown shadow */
backdrop-filter: blur(var(--dropdown-blur-amount)) !important; /* Use dropdown blur */
-webkit-backdrop-filter: blur(var(--dropdown-blur-amount)) !important;
background-color: transparent !important; /* Fallback */
}
/* Use chat bubble background colors for higher opacity */
body[theme-mode="dark"] .ant-modal .ant-modal-content,
body[theme-mode="dark"] .ant-drawer-content {
background-color: var(--chat-background-assistant) !important; /* Use chat bubble variable (0.8 opacity) */
}
body[theme-mode="light"] .ant-modal .ant-modal-content,
body[theme-mode="light"] .ant-drawer-content {
background-color: var(--chat-background-assistant) !important; /* Use chat bubble variable (0.8 opacity) */
}
/* Ensure header/body/footer inside are transparent if needed, or style them */
.ant-modal-header,
.ant-modal-body,
.ant-modal-footer,
.ant-drawer-header,
.ant-drawer-body,
.ant-drawer-footer {
background: transparent !important; /* Make inner sections transparent */
color: inherit !important; /* Inherit text color */
}
/* Specific styling for header might be needed */
.ant-modal-header {
border-bottom: none !important; /* Remove default border */
}
.ant-drawer-header {
border-bottom: none !important; /* Remove default border */
}
/* --- Font Overrides (Based on example.css) --- */
/* Specific text elements within conversation/markdown */
.bubble .message-content-container,
.markdown p, /* Add paragraph targeting */
.markdown li /* Add list item targeting */
{
font-family: "Maple Mono NF CN", monospace !important;
font-weight: 400 !important;
letter-spacing: 0.03em !important;
line-height: 1.6 !important;
}
/* Code elements font */
code, /* Inline code */
pre, /* Code blocks */
.markdown pre [class^="CodeContent-"] * /* Content within code blocks */
{
font-family: "Maple Mono NF CN", monospace !important;
font-weight: 400 !important;
letter-spacing: normal !important; /* Use normal spacing for code */
line-height: 1.45 !important; /* Use specific line height for code */
}
/* Remove potentially redundant rule */
/*
.markdown pre {
font-family: "Maple Mono NF CN", monospace !important;
}
*/
/* --- New Markdown Styles --- */
/* General Markdown Container */
.markdown {
color: var(--color-text-1);
line-height: 1.7; /* Slightly increased line height for readability */
}
/* 覆盖默认的绿色为蓝紫色调 */
:root {
--color-primary: var(--color-theme-blue) !important;
--color-primary-soft: rgba(var(--color-theme-blue-rgb), 0.6) !important;
--color-primary-mute: rgba(var(--color-theme-blue-rgb), 0.2) !important;
}
/* Light Mode 覆盖变量 */
body[theme-mode="light"] {
--color-primary: var(--color-theme-blue) !important;
--color-primary-soft: rgba(var(--color-theme-blue-rgb), 0.6) !important;
--color-primary-mute: rgba(var(--color-theme-blue-rgb), 0.2) !important;
--chat-background-user: var(--color-theme-blue) !important;
}
/* 修改列表项标记颜色(深浅模式) */
.markdown li::marker,
body[theme-mode="light"] .markdown li::marker {
color: var(--color-theme-blue) !important;
}
/* 修改引用块样式 */
.markdown blockquote {
border-left-color: var(--color-theme-blue) !important;
}
/* 选中项的背景 */
.ant-select-item-option-selected:not(.ant-select-item-option-disabled),
.ant-dropdown-menu-item-selected {
background: linear-gradient(to right, rgba(var(--color-theme-blue-rgb), 0.12), rgba(var(--color-theme-purple-rgb), 0.12)) !important;
color: var(--color-theme-blue) !important;
}
/* 浅色模式选中项背景(更轻的阴影) */
body[theme-mode="light"] .ant-select-item-option-selected:not(.ant-select-item-option-disabled),
body[theme-mode="light"] .ant-dropdown-menu-item-selected {
background: linear-gradient(to right, rgba(var(--color-theme-blue-rgb), 0.08), rgba(var(--color-theme-purple-rgb), 0.08)) !important;
color: var(--color-theme-blue) !important;
}
/* 链接颜色 */
.markdown a,
.markdown .link {
color: var(--color-theme-blue) !important;
}
.markdown a:hover,
.markdown .link:hover {
color: var(--color-theme-purple) !important;
}
/* 脚注引用样式 */
.markdown .footnote-ref,
.footnotes .footnote-backref {
color: var(--color-theme-blue) !important;
}
.markdown .footnote-ref:hover,
.footnotes .footnote-backref:hover {
color: var(--color-theme-purple) !important;
}
/* Ensure footnotes section background is transparent */
.markdown .footnotes {
background-color: transparent !important;
}
/* Headings */
.markdown h1, .markdown h2, .markdown h3, .markdown h4, .markdown h5, .markdown h6 {
font-weight: 700; /* Bold headings */
margin-top: 1.8em;
margin-bottom: 1em;
color: var(--color-text-1); /* Default text color */
}
.markdown h1 {
font-size: 2.2em;
border-bottom: 3px solid;
/* border-image applied per theme */
padding-bottom: 0.4em;
}
body[theme-mode="dark"] .markdown h1 {
border-image: var(--gradient-theme) 1; /* Dark mode gradient */
}
body[theme-mode="light"] .markdown h1 {
border-image: var(--gradient-theme) 1; /* Use same gradient as dark mode */
}
.markdown h2 {
font-size: 1.8em;
/* border-left: 4px solid; REMOVED */
/* border-image: var(--gradient-theme) 1; REMOVED */
padding-left: 1.5rem; /* Increased padding to make space for pseudo-element */
position: relative; /* Needed for pseudo-element */
}
.markdown h2::before {
content: '';
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 5px; /* Make thicker */
/* background applied per theme */
border-radius: 3px; /* Adjust radius */
}
body[theme-mode="dark"] .markdown h2::before {
background: linear-gradient(to bottom, var(--color-theme-blue), var(--color-theme-purple)); /* Dark mode gradient */
}
body[theme-mode="light"] .markdown h2::before {
background: linear-gradient(to bottom, var(--color-theme-blue), var(--color-theme-purple)); /* Use same gradient as dark mode */
}
.markdown h3 {
font-size: 1.2em;
display: inline-block; /* Allow background to wrap content */
padding: 0.3em 0.8em; /* Add padding inside the box */
border-radius: var(--markdown-border-radius); /* Use defined radius */
margin-bottom: 1em; /* Keep bottom margin */
/* Background and text color applied per theme */
}
.markdown h3 {
color: var(--color-white) !important; /* White text for both themes */
text-shadow: 0 1px 1px rgba(0,0,0,0.3); /* Dark shadow for better contrast */
}
body[theme-mode="dark"] .markdown h3 {
background: var(--gradient-theme); /* Dark mode gradient background */
}
body[theme-mode="light"] .markdown h3 {
background: var(--gradient-theme); /* Use same gradient as dark mode */
}
.markdown h4 {
font-size: 1.2em;
/* color applied per theme */
}
body[theme-mode="dark"] .markdown h4 {
color: var(--color-theme-blue); /* Dark mode blue */
}
body[theme-mode="light"] .markdown h4 {
color: var(--color-theme-blue); /* Use same blue as dark mode */
}
/* Code Blocks */
.markdown pre {
padding: 0 !important;
border-radius: var(--markdown-border-radius) !important;
background: none !important;
box-shadow: none !important;
margin: 1.5rem 0;
font-family: "Maple Mono NF CN", monospace !important; /* Ensure font */
}
.markdown pre [class^="CodeBlockWrapper-"] {
border-radius: 10px !important; /* 统一使用稍大的圆角 */
overflow: hidden;
backdrop-filter: blur(10px); /* Slightly less blur than dropdowns */
-webkit-backdrop-filter: blur(10px);
}
/* 深色模式下的代码块样式 */
body[theme-mode="dark"] .markdown pre [class^="CodeBlockWrapper-"] {
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.15); /* 更明显的阴影 */
background-color: rgba(30, 33, 39, 0.5); /* 调整透明度以提高可读性 */
border: none;
}
/* 浅色模式下的代码块样式 */
body[theme-mode="light"] .markdown pre [class^="CodeBlockWrapper-"] {
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08); /* 更柔和的阴影 */
background-color: rgba(250, 250, 250, 0.5); /* 调整透明度以提高可读性 */
border: none; /* 移除边框 */
}
.markdown pre [class^="CodeHeader-"] {
border-radius: 10px 10px 0 0 !important; /* 统一圆角大小 */
background-color: rgba(var(--color-theme-blue-rgb), 0.03) !important;
border-bottom: none;
margin-bottom: 0 !important;
justify-content: center;
color: var(--color-text-1);
font-size: 0.9em;
font-weight: 500;
padding: 8px 16px;
position: relative;
overflow: hidden;
}
.markdown pre [class^="CodeHeader-"]::before {
content: ' ';
position: absolute;
top: 12px;
left: 12px;
width: 12px;
height: 12px;
border-radius: 50%;
background: #ff5f57;
box-shadow:
20px 0 #ffbd2e,
40px 0 #28c840,
0 1px 2px rgba(0, 0, 0, 0.15),
20px 1px 2px rgba(0, 0, 0, 0.15),
40px 1px 2px rgba(0, 0, 0, 0.15);
z-index: 1;
transition: transform 0.2s ease;
}
.markdown pre [class^="CodeHeader-"]:hover::before {
transform: scale(1.1);
}
.markdown pre [class^="CodeContent-"] {
background-color: transparent !important;
border-radius: 0 0 10px 10px !important; /* 统一圆角大小 */
border-top: none !important;
margin-top: 0 !important;
padding: 16px 20px !important;
line-height: 1.45 !important;
}
/* Inline Code */
.markdown code {
font-family: "Maple Mono NF CN", monospace !important; /* Ensure font */
/* background-color applied per theme */
border-radius: 4px;
padding: 0.2em 0.4em;
font-size: 0.9em;
color: var(--color-text-1);
margin: 0 2px;
}
/* Avoid applying background to code inside code blocks */
.markdown pre code {
background-color: transparent !important;
padding: 0 !important;
margin: 0 !important;
border-radius: 0 !important;
font-size: inherit !important;
}
body[theme-mode="dark"] .markdown code {
background-color: rgba(var(--color-theme-blue-rgb), 0.1); /* Dark mode light blue background */
}
body[theme-mode="light"] .markdown code {
background-color: rgba(var(--color-theme-blue-rgb), 0.1); /* Use same blue as dark mode */
}
/* Avoid applying background to code inside code blocks */
.markdown pre code {
background-color: transparent !important;
padding: 0 !important;
margin: 0 !important;
border-radius: 0 !important;
font-size: inherit !important;
}
/* Blockquotes */
.markdown blockquote {
/* border-left: 4px solid var(--color-theme-purple); REMOVED */
padding: 1rem 1.5rem 1rem 2rem; /* Increased left padding */
margin: 1.5rem 0;
/* background-color applied per theme */
color: var(--color-text-2); /* Muted text color */
border-radius: var(--markdown-border-radius); /* Apply radius to all corners now */
position: relative; /* Needed for pseudo-element */
}
.markdown blockquote::before {
content: '';
position: absolute;
left: 0.5rem; /* Position slightly inset */
top: 0.5rem; /* Add some top/bottom margin */
bottom: 0.5rem;
/* height: calc(100% - 1rem); Calculate height based on top/bottom */
width: 5px; /* Make thicker */
/* background applied per theme */
border-radius: 3px; /* Adjust radius */
}
body[theme-mode="dark"] .markdown blockquote {
background-color: rgba(var(--color-theme-purple-rgb), 0.05); /* Dark mode light purple background */
}
body[theme-mode="light"] .markdown blockquote {
background-color: rgba(var(--color-theme-purple-rgb), 0.05); /* Use same purple as dark mode */
}
body[theme-mode="light"] .markdown blockquote::before {
background: var(--color-theme-purple); /* Use same purple as dark mode */
}
body[theme-mode="light"] .markdown blockquote::before {
background: var(--color-theme-pink-light); /* Light mode pink */
}
.markdown blockquote p {
margin-bottom: 0; /* Remove extra margin inside blockquote */
}
/* Lists */
.markdown ul li::marker, .markdown ol li::marker {
/* color applied per theme */
}
body[theme-mode="dark"] .markdown ul li::marker,
body[theme-mode="dark"] .markdown ol li::marker {
color: var(--color-theme-blue); /* Dark mode blue marker */
}
body[theme-mode="light"] .markdown ul li::marker,
body[theme-mode="light"] .markdown ol li::marker {
color: var(--color-theme-blue); /* Use same blue as dark mode */
}
.markdown ul, .markdown ol {
padding-left: 2em; /* Standard padding */
}
/* Horizontal Rule */
.markdown hr {
border: none;
height: 2px; /* Slightly thicker */
/* background applied per theme */
margin: 2.5rem 0;
opacity: 0.8;
/* Add mask for tapering effect */
mask-image: linear-gradient(to right, transparent 0%, black 15%, black 85%, transparent 100%);
mask-size: 100% 100%;
mask-repeat: no-repeat;
/* Add vendor prefix for compatibility */
-webkit-mask-image: linear-gradient(to right, transparent 0%, black 15%, black 85%, transparent 100%);
-webkit-mask-size: 100% 100%;
-webkit-mask-repeat: no-repeat;
}
/* REMOVED duplicate -webkit-mask lines and closing brace */
body[theme-mode="dark"] .markdown hr {
background: var(--gradient-theme); /* Dark mode gradient */
}
body[theme-mode="light"] .markdown hr {
background: var(--gradient-theme-light); /* Light mode gradient */
}
/* Tables */
.markdown table {
width: 100%;
border-collapse: separate; /* Use separate for border-radius */
border-spacing: 0;
margin: 1.5rem 0;
background-color: transparent !important;
/* border applied per theme */
border-radius: var(--markdown-border-radius);
overflow: hidden; /* Needed for border-radius */
box-shadow: none;
}
body[theme-mode="dark"] .markdown table {
border: 1px solid rgba(var(--color-theme-blue-rgb), 0.1); /* Dark mode subtle blue border */
}
body[theme-mode="light"] .markdown table {
border: 1px solid rgba(var(--color-theme-skyblue-light-rgb), 0.1); /* Light mode subtle skyblue border */
}
.markdown th {
/* background-color applied per theme */
color: var(--color-text-1);
padding: 0.8em 1em;
/* border-bottom applied per theme */
border-left: none;
text-align: left;
font-weight: 600;
}
.markdown th:first-child { border-left: none; }
body[theme-mode="dark"] .markdown th {
background-color: rgba(var(--color-theme-blue-rgb), 0.05) !important; /* Dark mode light blue header */
border-bottom: 1px solid rgba(var(--color-theme-blue-rgb), 0.1);
}
body[theme-mode="light"] .markdown th {
background-color: rgba(var(--color-theme-skyblue-light-rgb), 0.05) !important; /* Light mode light skyblue header */
border-bottom: 1px solid rgba(var(--color-theme-skyblue-light-rgb), 0.1);
}
.markdown td {
padding: 0.8em 1em;
/* border-bottom applied per theme */
border-left: none;
transition: background-color 0.3s ease;
}
body[theme-mode="dark"] .markdown td {
border-bottom: 1px solid rgba(var(--color-theme-blue-rgb), 0.05); /* Dark mode lighter border */
}
body[theme-mode="light"] .markdown td {
border-bottom: 1px solid rgba(var(--color-theme-skyblue-light-rgb), 0.05); /* Light mode lighter border */
}
.markdown td:first-child { border-left: none; }
.markdown tr:last-child td { border-bottom: none; }
.markdown tr:hover td {
/* background-color applied per theme */
}
body[theme-mode="dark"] .markdown tr:hover td {
background-color: rgba(var(--color-theme-purple-rgb), 0.05) !important; /* Dark mode light purple hover */
}
body[theme-mode="light"] .markdown tr:hover td {
background-color: rgba(var(--color-theme-purple-rgb), 0.05) !important; /* Use same purple as dark mode */
}
/* Links */
.markdown a {
/* color applied per theme */
transition: color 0.3s ease;
text-decoration: none;
font-weight: 500;
}
body[theme-mode="dark"] .markdown a {
color: var(--color-theme-blue) !important; /* Dark mode blue link */
}
body[theme-mode="light"] .markdown a {
color: var(--color-theme-blue) !important; /* Use same blue as dark mode */
}
.markdown a:hover {
/* color applied per theme */
text-decoration: underline;
}
body[theme-mode="dark"] .markdown a:hover {
color: var(--color-theme-purple) !important; /* Dark mode purple hover */
}
body[theme-mode="light"] .markdown a:hover {
color: var(--color-theme-purple) !important; /* Use same purple as dark mode */
}
/* Alert/Note Blocks (Typora Style - Keeping original colors) */
.markdown .hint-container {
padding: 1em 1.5em;
margin: 1.5rem 0;
border-radius: var(--markdown-border-radius);
border: 1px solid transparent;
position: relative;
overflow: hidden;
}
.markdown .hint-container > .hint-title {
font-weight: 700;
margin-bottom: 0.5em;
display: flex;
align-items: center;
}
.markdown .hint-container > .hint-title::before {
/* Placeholder for icon - needs specific icons per type */
content: ''; /* Add icons via ::before if desired */
margin-right: 0.5em;
font-size: 1.2em;
}
.markdown .hint-container p:last-child {
margin-bottom: 0;
}
/* Alert/Note Block Variables */
:root {
/* Note Colors */
--alert-note-border: rgba(0, 120, 212, 0.3);
--alert-note-bg: rgba(0, 120, 212, 0.05);
--alert-note-color: #0078D4;
/* Tip Colors */
--alert-tip-border: rgba(138, 43, 226, 0.3);
--alert-tip-bg: rgba(138, 43, 226, 0.05);
--alert-tip-color: #8A2BE2;
/* Important Colors */
--alert-important-border: rgba(25, 113, 194, 0.3);
--alert-important-bg: rgba(25, 113, 194, 0.05);
--alert-important-color: #1971C2;
/* Warning Colors */
--alert-warning-border: rgba(245, 158, 11, 0.3);
--alert-warning-bg: rgba(245, 158, 11, 0.05);
--alert-warning-color: #F59E0B;
/* Caution Colors */
--alert-caution-border: rgba(239, 68, 68, 0.3);
--alert-caution-bg: rgba(239, 68, 68, 0.05);
--alert-caution-color: #EF4444;
}
/* Alert/Note Block Styles */
.markdown blockquote:has(> [class^="hint-"]) {
border: 1px solid var(--alert-note-border);
background: var(--alert-note-bg);
color: var(--color-text-1);
padding: 1em 1.2em;
margin: 1.5rem 0;
border-radius: 6px;
}
/* Specific Alert Types */
.markdown blockquote:has(> .hint-note) {
border-color: var(--alert-note-border);
background-color: var(--alert-note-bg);
}
.markdown blockquote:has(> .hint-tip) {
border-color: var(--alert-tip-border);
background-color: var(--alert-tip-bg);
}
.markdown blockquote:has(> .hint-important) {
border-color: var(--alert-important-border);
background-color: var(--alert-important-bg);
}
.markdown blockquote:has(> .hint-warning) {
border-color: var(--alert-warning-border);
background-color: var(--alert-warning-bg);
}
.markdown blockquote:has(> .hint-caution) {
border-color: var(--alert-caution-border);
background-color: var(--alert-caution-bg);
}
/* Alert Titles */
.markdown blockquote [class^="hint-"] {
font-weight: 600;
color: var(--alert-note-color);
display: flex;
align-items: center;
gap: 0.5em;
margin-bottom: 0.5em;
}
.markdown blockquote .hint-note {
color: var(--alert-note-color);
}
.markdown blockquote .hint-tip {
color: var(--alert-tip-color);
}
.markdown blockquote .hint-important {
color: var(--alert-important-color);
}
.markdown blockquote .hint-warning {
color: var(--alert-warning-color);
}
.markdown blockquote .hint-caution {
color: var(--alert-caution-color);
}
/* Hide default blockquote marker for alerts */
.markdown blockquote:has(> [class^="hint-"])::before {
display: none;
}
/* 0423 Mac风格磨砂玻璃主题 */
@import url("https://cdn.bootcdn.net/ajax/libs/lxgw-wenkai-screen-webfont/1.7.0/style.min.css");
:root {
--duration-quick: 0.15s;
--duration-normal: 0.3s;
--duration-long: 0.5s;
--easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
--easing-decelerate: cubic-bezier(0, 0, 0.2, 1);
--easing-standard: cubic-bezier(0.4, 0, 0.2, 1);
--easing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);
--radius-dynamic: 12px;
--radius-large: 12px;
--color-brand-primary: oklch(65% 0.05 250);
--color-brand-hover: color-mix(
in oklch,
var(--color-brand-primary) 90%,
black
);
--theme-lightness: 1;
--shadow-intensity: 0.1;
--highlight-intensity: 0.05;
--file-line-width: 65rem;
--font-default: "LXGW WenKai Screen", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
--background-blur: 12px;
--hover-scale: 1.01;
--active-scale: 0.98;
--card-translate-y: 6px;
--chat-text-user: var(--color-text-1);
--metal-gradient-light: linear-gradient(
90deg,
rgba(255, 255, 255, 0.07) 0%,
rgba(255, 255, 255, 0.15) 25%,
rgba(255, 255, 255, 0.07) 50%,
rgba(255, 255, 255, 0.15) 75%,
rgba(255, 255, 255, 0.07) 100%
);
--metal-gradient-dark: linear-gradient(
90deg,
rgba(255, 255, 255, 0.03) 0%,
rgba(255, 255, 255, 0.08) 25%,
rgba(255, 255, 255, 0.03) 50%,
rgba(255, 255, 255, 0.08) 75%,
rgba(255, 255, 255, 0.03) 100%
);
--border-glow: 0 0 5px rgba(255, 255, 255, 0.2);
}
/* 深色模式 */
body[theme-mode="dark"] {
--background-image-url: url("https://gcore.jsdelivr.net/gh/talentestors/cdn@latest/images/illust_132800.webp");
--background-overlay-opacity: 0.5;
--color-background: linear-gradient(
145deg,
rgba(28, 28, 30, 0.56) 0%,
rgba(44, 44, 46, 0.56) 100%
);
--color-background-soft: linear-gradient(
145deg,
rgba(44, 44, 46, 0.55) 0%,
rgba(58, 58, 60, 0.55) 100%
);
--color-background-mute: linear-gradient(
145deg,
rgba(72, 72, 74, 0.4) 0%,
rgba(99, 99, 102, 0.4) 100%
);
--navbar-background: linear-gradient(
to right,
rgba(28, 28, 30, 0.56) 0%,
rgba(44, 44, 46, 0.56) 100%
);
--chat-background: linear-gradient(
to bottom,
rgba(44, 44, 46, 0.5) 0%,
rgba(58, 58, 60, 0.5) 100%
);
--chat-background-user: linear-gradient(
to right,
rgba(30, 144, 255, 0.4) 0%,
rgba(65, 172, 255, 0.4) 100%
);
--user-text-color-dark: rgba(255, 255, 255, 0.95);
--chat-background-assistant: linear-gradient(
to right,
rgba(72, 72, 74, 0.4) 0%,
rgba(85, 85, 87, 0.4) 100%
);
--ctp-text: rgba(255, 255, 255, 0.85);
--shadow-color: rgba(0, 0, 0, 0.25);
--highlight-color: rgba(255, 255, 255, 0.08);
--deep-thinking-color: rgba(180, 180, 200, 0.9);
--code-bg-dark: rgba(30, 30, 32, 0.7);
--footnote-bg-dark: rgba(44, 44, 46, 0.4);
--theme-lightness: -1;
--shadow-intensity: 0.25;
--border-color: rgba(255, 255, 255, 0.05);
--border-hover-color: rgba(255, 255, 255, 0.1);
--metal-gradient: var(--metal-gradient-dark);
--xy-controls-button-color-default: var(--code-bg-dark);
--xy-controls-button-color-hover-default: rgb(0, 0, 0);
--ant-modal-body-background: rgba(30, 30, 30, 0.85);
}
/* 浅色模式 */
body[theme-mode="light"] {
--background-image-url: url("https://gcore.jsdelivr.net/gh/talentestors/cdn@latest/images/wallhaven-72o6ze.webp");
--background-overlay-opacity: 0.5;
--color-background: linear-gradient(
145deg,
rgba(255, 255, 255, 0.35) 0%,
rgba(250, 250, 255, 0.35) 100%
);
--color-background-soft: linear-gradient(
145deg,
rgba(245, 245, 250, 0.25) 0%,
rgba(240, 240, 245, 0.25) 100%
);
--color-background-mute: linear-gradient(
145deg,
rgba(235, 235, 240, 0.25) 0%,
rgba(230, 230, 235, 0.25) 100%
);
--navbar-background: linear-gradient(
to right,
rgba(255, 255, 255, 0.26) 0%,
rgba(250, 250, 255, 0.26) 100%
);
--chat-background: linear-gradient(
to bottom,
rgba(255, 255, 255, 0.3) 0%,
rgba(250, 250, 255, 0.3) 100%
);
--chat-background-user: linear-gradient(
to right,
rgba(135, 206, 250, 0.5) 0%,
rgba(165, 215, 255, 0.5) 100%
);
--chat-background-assistant: linear-gradient(
to right,
rgba(240, 240, 245, 0.4) 0%,
rgba(235, 235, 240, 0.4) 100%
);
--color-white: rgba(255, 255, 255, 0.9);
--ctp-text: rgba(30, 30, 30, 0.9);
--shadow-color: rgba(0, 0, 0, 0.06);
--highlight-color: rgba(255, 255, 255, 0.3);
--deep-thinking-color: rgba(80, 80, 100, 0.9);
--code-bg-light: rgba(240, 240, 245, 0.4);
--footnote-bg-light: rgba(245, 245, 250, 0.3);
--theme-lightness: 1;
--border-color: rgba(255, 255, 255, 0.15);
--border-hover-color: rgba(255, 255, 255, 0.25);
--metal-gradient: var(--metal-gradient-light);
--ant-modal-body-background: rgba(255, 255, 255, 0.9);
}
*:not(.katex):not(.katex *):not(.iconfont):not(.markdown code):not(.markdown pre):not(.MathJax) {
font-family: var(--font-default);
line-height: 1.5;
letter-spacing: 0.0625em;
}
body {
position: relative;
background-image: var(--background-image-url);
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-attachment: fixed;
}
body::after {
content: "";
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: var(--color-background);
opacity: var(--background-overlay-opacity);
-webkit-backdrop-filter: blur(var(--background-blur));
backdrop-filter: blur(var(--background-blur));
z-index: -1;
}
.message-content-container {
will-change: transform;
contain: layout paint style;
background: color-mix(
in srgb,
var(--color-background-soft),
transparent 10%
) !important;
-webkit-backdrop-filter: blur(16px);
backdrop-filter: blur(16px);
-webkit-transform: translateZ(0);
transform: translateZ(0);
border: none;
border-radius: var(--radius-dynamic);
position: relative;
z-index: 1;
outline: none;
transition: background-color var(--duration-normal) var(--easing-standard),
box-shadow var(--duration-normal) var(--easing-standard);
margin-block: 8px;
padding-inline: 12px;
padding-block: 10px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.message-content-container::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
border-radius: var(--radius-dynamic);
background: var(--metal-gradient);
opacity: 0.4;
pointer-events: none;
z-index: -1;
border: 0.3px solid var(--border-color);
transition: opacity var(--duration-normal) var(--easing-standard);
}
.message-content-container:hover::before {
opacity: 0.7;
border-color: var(--border-hover-color);
}
@keyframes cardAppear {
from {
opacity: 0;
transform: translateY(var(--card-translate-y));
}
to {
opacity: 1;
transform: translateY(0);
}
}
.chat-item {
animation: cardAppear var(--duration-normal) var(--easing-decelerate) forwards;
}
div[class^="InputContainer"],
#inputbar {
background: color-mix(
in srgb,
var(--color-background),
transparent 20%
) !important;
-webkit-backdrop-filter: blur(12px);
backdrop-filter: blur(12px);
border: none;
position: relative;
border-radius: var(--radius-large);
margin: -15px 20px 15px 20px;
transition: box-shadow var(--duration-normal) var(--easing-standard);
outline: none;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
#inputbar::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
border-radius: var(--radius-large);
background: var(--metal-gradient);
opacity: 0.4;
pointer-events: none;
z-index: -1;
border: 0.3px solid var(--border-color);
}
#inputbar:focus-within::before {
opacity: 0.8;
border-color: var(--color-brand-primary);
box-shadow: var(--border-glow);
}
.navbar {
background: color-mix(
in srgb,
var(--navbar-background),
transparent 20%
) !important;
-webkit-backdrop-filter: blur(12px);
backdrop-filter: blur(12px);
border: none;
position: relative;
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.05);
animation: navbarAppear var(--duration-long) var(--easing-standard) forwards;
}
.navbar::after {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 0.3px;
background: var(--metal-gradient);
opacity: 0.5;
}
@keyframes navbarAppear {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.chat-container {
background: transparent !important;
}
.chat-item.user .message-content-container {
background: color-mix(
in srgb,
rgba(135, 206, 250, 0.4),
transparent 20%
) !important;
-webkit-backdrop-filter: blur(16px);
backdrop-filter: blur(16px);
border-left: 3px solid rgba(30, 144, 255, 0.6);
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
.chat-item.assistant .message-content-container {
background: color-mix(
in srgb,
rgba(255, 182, 193, 0.4),
transparent 20%
) !important;
-webkit-backdrop-filter: blur(16px);
backdrop-filter: blur(16px);
border-left: 3px solid rgba(255, 182, 193, 0.6);
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
@media (prefers-contrast: more) {
.message-content-container::before {
opacity: 0.8;
border-width: 1px;
}
#inputbar::before {
opacity: 0.8;
border-width: 1px;
}
}
body[theme-mode="dark"] .chat-item.user .nickname,
body[theme-mode="dark"] .chat-item.user .message {
color: var(--user-text-color-dark);
}
.chat-item .nickname,
.chat-item .message {
color: var(--ctp-text);
}
.ant-collapse-content-box .markdown {
color: var(--deep-thinking-color);
background: color-mix(
in srgb,
var(--color-background-soft),
transparent 30%
) !important;
-webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
border-radius: 8px;
padding: 10px 14px;
margin-top: 8px;
border-left: 2px solid rgba(180, 180, 200, 0.3);
}
body[theme-mode="dark"] .ant-collapse-content-box .markdown {
background: color-mix(
in srgb,
var(--color-background-soft),
transparent 50%
) !important;
border-left: 2px solid rgba(180, 180, 200, 0.2);
}
/* 浅色模式代码背景 - Mac OS风格 */
.shiki.one-light {
background-color: transparent !important;
border-radius: 6px;
position: relative;
overflow: hidden;
transition: box-shadow var(--duration-normal) var(--easing-standard);
}
.shiki.one-light::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
border-radius: 6px;
background: var(--metal-gradient);
opacity: 0.3;
pointer-events: none;
z-index: -1;
border: 0.3px solid rgba(0, 0, 0, 0.05);
}
/* 深色模式代码背景 - Mac OS风格 */
.shiki.material-theme-darker {
background-color: transparent !important;
border-radius: 6px;
position: relative;
overflow: hidden;
transition: box-shadow var(--duration-normal) var(--easing-standard);
}
.shiki.material-theme-darker::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
border-radius: 6px;
background: var(--metal-gradient);
opacity: 0.2;
pointer-events: none;
z-index: -1;
border: 0.3px solid rgba(255, 255, 255, 0.05);
}
/* 代码块悬停效果 - 光泽变化 */
pre:hover .shiki::before {
opacity: 0.5;
}
/* 引用来源背景透明 - Mac OS风格 */
.footnotes {
background-color: var(--footnote-bg-light);
border-radius: 8px;
position: relative;
-webkit-backdrop-filter: blur(12px);
backdrop-filter: blur(12px);
transition: box-shadow var(--duration-normal) var(--easing-standard);
}
.footnotes::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
border-radius: 8px;
background: var(--metal-gradient);
opacity: 0.3;
pointer-events: none;
z-index: -1;
border: 0.3px solid rgba(0, 0, 0, 0.05);
}
body[theme-mode="dark"] .footnotes {
background-color: var(--footnote-bg-dark);
}
body[theme-mode="dark"] .footnotes::before {
border-color: rgba(255, 255, 255, 0.05);
opacity: 0.2;
}
/* 保留原有样式 - 输入框高度 */
#inputbar textarea.ant-input {
height: 120px !important;
padding: 10px;
}
/* 按钮 - Mac OS风格(移除动效) */
button,
.ant-btn {
border-radius: 6px;
-webkit-backdrop-filter: blur(12px);
backdrop-filter: blur(12px);
transition: background-color var(--duration-quick) var(--easing-standard);
position: relative;
overflow: hidden;
}
/* 按钮金属质感 */
button::before,
.ant-btn::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--metal-gradient);
opacity: 0.2;
pointer-events: none;
z-index: -1;
}
button:hover::before,
.ant-btn:hover::before {
opacity: 0.4;
}
/* 滚动条 - Mac OS风格 */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.2);
border-radius: 4px;
transition: background var(--duration-quick) var(--easing-standard);
background-image: var(--metal-gradient-light);
background-size: 100px 100%;
}
::-webkit-scrollbar-thumb:horizontal {
background: rgba(0, 0, 0, 0.2);
border-radius: 4px;
}
body[theme-mode="dark"] ::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.15);
background-image: var(--metal-gradient-dark);
}
::-webkit-scrollbar-thumb:hover {
background: rgba(0, 0, 0, 0.25);
}
::-webkit-scrollbar-thumb:horizontal:hover {
background: rgba(0, 0, 0, 0.3);
}
body[theme-mode="dark"] ::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.3);
}
.markdown pre {
overflow-x: auto !important;
white-space: nowrap !important;
}
/* 加载时的页面过渡效果 */
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
body {
animation: fadeIn 0.6s var(--easing-decelerate) forwards;
}
/* 卡片的内容渐入动画 */
.message-content-container .markdown {
opacity: 0;
animation: fadeIn 0.2s var(--easing-decelerate) 0.06s forwards;
}
/* 链接颜色 - Mac OS风格 */
a {
color: var(--color-brand-primary);
transition: color var(--duration-quick) var(--easing-standard);
}
a:hover {
color: var(--color-brand-hover);
}
/* 选中文本背景色 - Mac OS风格 */
::selection {
background-color: color-mix(
in srgb,
var(--color-brand-primary),
transparent 70%
);
}
/* 夜间/日间模式切换按钮(移除动效) */
.theme-toggle-button {
transition: opacity var(--duration-normal) var(--easing-emphasized);
}
.theme-toggle-button:hover {
opacity: 0.8;
}
.ant-modal-body {
background: var(--ant-modal-body-background);
}
body[theme-mode="light"] .ant-tooltip {
--antd-arrow-background-color: rgb(255 255 255 / 95%) !important;
}
body[theme-mode="light"] .ant-tooltip .ant-tooltip-content .ant-tooltip-inner,
body[theme-mode="light"] .ant-tooltip .ant-tooltip-inner .ant-typography {
color: #000 !important;
background-color: rgb(255 255 255 / 95%) !important;
}
pre div[class^="CodeContent"],
.ant-dropdown,
.ant-dropdown-menu {
border-radius: 6px !important;
}
body[theme-mode="light"] pre div[class^="CodeContent"] {
background-color: var(--code-bg-light) !important;
}
body[theme-mode="dark"] pre div[class^="CodeContent"] {
background-color: var(--code-bg-dark) !important;
}
/* 浅色模式加粗文本 */
body[theme-mode="light"] .markdown strong {
color: rgba(0, 0, 0, 1); /* 纯黑色,最大对比度 */
}
/* 深色模式加粗文本 */
body[theme-mode="dark"] .markdown strong {
color: rgba(255, 255, 255, 1); /* 纯白色,最大对比度 */
}
div[class^="ServerCard"],
div[class^="AgentsList"] div[class^="AgentCardContainer"] {
background: var(--color-background);
}
div[class^="AgentsList"] div[class^="AgentCardContainer"] div[class^="CardInfo"] {
margin-top: 0;
}
body[theme-mode="light"] div[class^="Tag"] {
color: rgb(100, 100, 100);
background-color: rgba(120, 120, 120, 0.125);
}
button.ant-input-clear-icon {
line-height: 1em !important;
width: 1em;
height: 1em;
border-radius: 0.5em;
}
#home-page .active,
div[class^="TopicListItem"]:hover {
background: var(--color-background-soft) !important;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment