@import "tailwindcss"; /* ======================================== LionCode UI - 设计令牌 基于原型图: https://openclaude.me/chat ======================================== */ :root { /* 品牌色 */ --color-primary: #E06B3E; --color-primary-hover: #D4643E; --color-primary-light: #FEF3EF; --color-primary-alpha: rgba(224, 107, 62, 0.1); /* 背景色 */ --color-bg-primary: #FFFFFF; --color-bg-secondary: #FAFAF9; --color-bg-tertiary: #F7F7F8; --color-bg-hover: #F3F4F6; /* 文字色 */ --color-text-primary: #111827; --color-text-secondary: #6B7280; --color-text-tertiary: #9CA3AF; --color-text-placeholder: #A0AEC0; /* 边框色 */ --color-border: #E5E5E5; --color-border-light: #F0F0F0; --color-border-focus: #E06B3E; /* 消息气泡色 */ --color-message-user: #EDE4DE; --color-message-assistant-bg: #F7F7F6; --color-message-assistant-border: #E8E8E8; /* 阴影 */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1); --shadow-dropdown: 0 4px 12px rgba(0, 0, 0, 0.1); --shadow-input: 0 2px 8px rgba(0, 0, 0, 0.04); --shadow-input-focus: 0 4px 16px rgba(224, 107, 62, 0.1); /* 布局 */ --sidebar-width: 280px; --header-height: 56px; --input-max-width: 900px; /* 圆角 */ --radius-sm: 6px; --radius-md: 8px; --radius-lg: 12px; --radius-xl: 16px; --radius-2xl: 18px; --radius-full: 9999px; /* 过渡 */ --transition-fast: 0.15s ease; --transition-base: 0.2s ease; --transition-slow: 0.3s ease; /* 字体大小 */ --font-size-base: 15px; } /* ======================================== 暗色模式 主背景色: #29252B ======================================== */ [data-theme="dark"] { /* 品牌色 - 保持不变 */ --color-primary: #E06B3E; --color-primary-hover: #E8805A; --color-primary-light: rgba(224, 107, 62, 0.15); --color-primary-alpha: rgba(224, 107, 62, 0.2); /* 背景色 */ --color-bg-primary: #29252B; --color-bg-secondary: #201D23; --color-bg-tertiary: #332E38; --color-bg-hover: #3A353E; /* 文字色 */ --color-text-primary: #F5F5F5; --color-text-secondary: #A8A8A8; --color-text-tertiary: #6B6B6B; --color-text-placeholder: #5A5A5A; /* 边框色 */ --color-border: #3A353E; --color-border-light: #332E38; --color-border-focus: #E06B3E; /* 消息气泡色 */ --color-message-user: #4A4352; --color-message-assistant-bg: #332E38; --color-message-assistant-border: #3A353E; /* 阴影 - 暗色模式下增强 */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5); --shadow-dropdown: 0 4px 12px rgba(0, 0, 0, 0.4); --shadow-input: 0 2px 8px rgba(0, 0, 0, 0.2); --shadow-input-focus: 0 4px 16px rgba(224, 107, 62, 0.2); } @theme inline { /* 品牌色 */ --color-primary: var(--color-primary); --color-primary-hover: var(--color-primary-hover); --color-primary-light: var(--color-primary-light); /* 背景色 */ --color-background: var(--color-bg-secondary); --color-foreground: var(--color-text-primary); /* 字体 */ --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; --font-mono: 'SF Mono', Monaco, 'Courier New', monospace; } /* ======================================== 全局样式 ======================================== */ * { box-sizing: border-box; } html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { background-color: var(--color-bg-secondary); color: var(--color-text-primary); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; font-size: var(--font-size-base); line-height: 1.5; min-height: 100vh; } /* ======================================== 自定义滚动条 ======================================== */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background-color: var(--color-border); border-radius: var(--radius-full); } ::-webkit-scrollbar-thumb:hover { background-color: var(--color-text-tertiary); } /* ======================================== 动画 ======================================== */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideDown { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } @keyframes popUp { from { opacity: 0; transform: translateY(8px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .animate-fade-in { animation: fadeIn var(--transition-base); } .animate-slide-up { animation: slideUp var(--transition-base); } .animate-slide-down { animation: slideDown var(--transition-fast); } .animate-pop-up { animation: popUp 0.15s ease-out; } /* ======================================== 响应式设计 ======================================== */ @media (max-width: 768px) { :root { --sidebar-width: 0px; } } @media (min-width: 769px) and (max-width: 1024px) { :root { --sidebar-width: 220px; } } /* ======================================== 按钮样式 ======================================== */ .btn-primary { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; background-color: var(--color-primary); color: white; font-size: 14px; font-weight: 500; border-radius: var(--radius-md); border: none; cursor: pointer; transition: background-color var(--transition-fast); } .btn-primary:hover { background-color: var(--color-primary-hover); } .btn-ghost { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; background-color: transparent; color: var(--color-text-secondary); font-size: 14px; font-weight: 500; border-radius: var(--radius-md); border: 1px solid var(--color-border); cursor: pointer; transition: all var(--transition-fast); } .btn-ghost:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } .btn-danger { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; background-color: #DC2626; color: white; font-size: 14px; font-weight: 500; border-radius: var(--radius-md); border: none; cursor: pointer; transition: background-color var(--transition-fast); } .btn-danger:hover { background-color: #B91C1C; } /* ======================================== 设置页面选择器 ======================================== */ .settings-select { appearance: none; background-color: var(--color-bg-primary); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 8px 32px 8px 12px; font-size: 14px; color: var(--color-text-primary); cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 8px center; min-width: 140px; } .settings-select:focus { outline: none; border-color: var(--color-primary); box-shadow: var(--shadow-input-focus); } /* ======================================== 设置页面输入框 ======================================== */ .settings-input { appearance: none; background-color: var(--color-bg-primary); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 8px 12px; font-size: 14px; color: var(--color-text-primary); } .settings-input::placeholder { color: var(--color-text-placeholder); } .settings-input:focus { outline: none; border-color: var(--color-primary); box-shadow: var(--shadow-input-focus); } .settings-input:disabled { background-color: var(--color-bg-tertiary); cursor: not-allowed; } /* ======================================== Prism.js 代码高亮样式 (VS Code Dark+) ======================================== */ code[class*="language-"], pre[class*="language-"] { color: #d4d4d4; text-shadow: none; font-family: 'SF Mono', Monaco, 'Courier New', monospace; direction: ltr; text-align: left; white-space: pre; word-spacing: normal; word-break: normal; line-height: 1.5; tab-size: 4; hyphens: none; } .token.comment, .token.prolog, .token.doctype, .token.cdata { color: #6a9955; } .token.punctuation { color: #d4d4d4; } .token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol, .token.deleted { color: #b5cea8; } .token.selector, .token.attr-name, .token.string, .token.char, .token.builtin, .token.inserted { color: #ce9178; } .token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string { color: #d4d4d4; } .token.atrule, .token.attr-value, .token.keyword { color: #569cd6; } .token.function, .token.class-name { color: #dcdcaa; } .token.regex, .token.important, .token.variable { color: #d16969; } .token.important, .token.bold { font-weight: bold; } .token.italic { font-style: italic; }