/* * 自动生成的合并CSS文件 * 生成时间:2026-01-05T05:33:51.327Z * 包含文件:17 个 */ /* ========== styles/notifications.css (1.14KB) ========== */ /* 通知样式 */ .notification{position:fixed;top:20px;right:20px;max-width:350px;padding:15px 20px;border-radius:8px;color:white;font-size:14px;box-shadow:0 4px 12px rgba(0,0,0,0.15);z-index:999999 !important;opacity:0;transform:translateY(-20px);animation:slideIn 0.3s forwards;}/* 通知类型样式 */ .notification.success{background-color:#4CAF50;}.notification.error{background-color:#F44336;}.notification.info{background-color:#2196F3;}.notification.warning{background-color:#FF9800;}/* 隐藏动画 */ .notification.hide{animation:slideOut 0.3s forwards;}/* 动画定义 */ @keyframes slideIn{from{opacity:0;transform:translateY(-20px);}to{opacity:1;transform:translateY(0);}}@keyframes slideOut{from{opacity:1;transform:translateY(0);}to{opacity:0;transform:translateY(-20px);}}/* 自定义z-index类，确保通知显示在对话框上面 */ .z-1000{z-index:1000 !important;}/* ========== styles/style.css (14.84KB) ========== */ /* 添加自定义滚动条样式 */ .custom-scrollbar::-webkit-scrollbar{width:8px;height:8px;}.custom-scrollbar::-webkit-scrollbar-track{background:rgba(0,0,0,0.05);border-radius:4px;}.custom-scrollbar::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15);border-radius:4px;}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.25);}/* 暗色模式下的滚动条 */ .dark .custom-scrollbar::-webkit-scrollbar-track{background:rgba(255,255,255,0.05);}.dark .custom-scrollbar::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);}.dark .custom-scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.25);}/* 为里程碑列表也添加自定义滚动条 */ #subtaskList{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,0.15) rgba(0,0,0,0.05);}.dark #subtaskList{scrollbar-color:rgba(255,255,255,0.15) rgba(255,255,255,0.05);}/* 文本截断样式 */ .truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}/* 待办卡片样式 */ .task-card{display:flex;flex-direction:column;height:100%;min-height:180px;/* 确保卡片有最小高度 */}/* 待办完成状态样式 */ .task-card.completed{opacity:0.8;}/* 待办卡片悬停效果 */ .task-card:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06);}/* 待办卡片选中状态 */ .task-card[data-selected="true"]{box-shadow:0 0 0 2px #3b82f6 !important;border-color:#3b82f6 !important;transition:all 0.2s ease;}/* 标签样式优化 */ .task-card .inline-flex{align-items:center;justify-content:center;max-width:100%;}/* 待办表单内容样式 - 取消上间距 */ /* .task-form-content{margin-top:0 !important;padding-top:0 !important;}*/ /* 确保内容容器在待办表单中没有上内边距 */ /* .utils-dialog:has(.task-form-content) .px-6.py-5.overflow-y-auto{padding-top:0 !important;}*/ /* 待办标题容器样式 */ /* .task-title-container{margin-top:0 !important;padding-top:0 !important;}*/ /* 统一弹框输入元素的暗色模式 */ .utils-dialog input[type="text"],.utils-dialog input[type="date"],.utils-dialog input[type="number"],.utils-dialog select,.utils-dialog textarea{@apply dark:bg-gray-700 dark:border-gray-600 dark:text-gray-200;}/* 统一日期选择器在暗色模式下的样式 */ .utils-dialog input[type="date"]::-webkit-calendar-picker-indicator{filter:invert(0.8);}/* 修复下拉菜单在暗色模式下的样式 */ .utils-dialog select option{@apply dark:bg-gray-700 dark:text-gray-200;}/* 复选框和单选框在暗色模式下的样式 */ .utils-dialog input[type="checkbox"],.utils-dialog input[type="radio"]{@apply dark:border-gray-600 dark:bg-gray-700;}/* 修复弹框中的标签颜色在暗色模式下的问题 */ .utils-dialog label{@apply dark:text-gray-300;}/* 增强复选框和单选框的对比度 */ .utils-dialog input[type="checkbox"]:checked,.utils-dialog input[type="radio"]:checked{@apply dark:bg-primary dark:border-primary;}/* 修复弹框内特定元素的背景色 */ .utils-dialog .bg-gray-50{@apply dark:bg-gray-800;}/* 确保弹框中的提示文本在暗色模式下可见 */ .utils-dialog .text-gray-600,.utils-dialog .text-gray-700{@apply dark:text-gray-300;}/* 修复创建周弹框中的日期输入样式 */ .utils-dialog .date-input{@apply dark:bg-gray-700 dark:border-gray-600 dark:text-gray-200;}/* 标题栏响应式布局 - 新的设计 */ @media (max-width:768px){/* 移动端垂直布局 */ nav .title-container{width:100%;margin-bottom:0.5rem;min-width:unset;}nav #currentWeekTitle{display:block;width:100%;min-width:260px;text-align:center;}/* 确保垂直顺序正确 - 使用flex列布局 */ nav div.flex.flex-col{display:flex;flex-direction:column;align-items:center;}/* 子元素顺序设置 */ nav .order-1{order:1;/* margin-bottom:1rem;*/ width:100%;}nav .order-2{order:3;/* 在移动设备上按钮放到最下面 */ width:100%;display:flex;justify-content:center;/* margin-top:0.75rem;*/}nav .order-3{order:2;/* 在移动设备上搜索框在中间 */ width:100%;margin:0 !important;}/* 移动端搜索框样式 */ nav .search-container{width:100%;margin:0 !important;display:flex;justify-content:center;/* 在移动端水平居中 */ /* 增加左右内边距，确保不会贴边 */ /* padding:0 16px;*/ box-sizing:border-box;/* 确保padding包含在宽度内 */}nav .search-container .relative.flex{width:100%;/* 移除max-width限制，让搜索框占满容器 */}/* 移动端按钮容器样式 */ nav .order-2.justify-start{justify-content:center !important;}}/* 桌面布局样式 */ @media (min-width:768px){/* 确保水平三栏布局 */ nav .md\:flex-row{display:flex;align-items:center;justify-content:space-between;}/* 标题栏垂直居中 */ nav .title-container{display:flex;align-items:center;justify-content:center;height:100%;}nav #currentWeekTitle{margin:0;line-height:normal;min-width:260px;}/* 按钮栏宽度控制 */ nav .md\:order-1{flex:0 0 auto;min-width:200px;/* 确保有足够的空间放置按钮 */}/* 标题居中 */ nav .md\:order-2{flex:1;display:flex;justify-content:center;}/* 搜索框容器宽度控制 */ nav .md\:order-3{flex:0 0 auto;min-width:200px;display:flex;justify-content:flex-end;}}/* 避免标题内容变化引起的布局跳动 */ .title-container{transition:width 0.2s ease;}/* 隐藏低于中等尺寸屏幕上的最小宽度设置 */ @media (max-width:768px){.title-container{min-width:unset;}}/* 搜索容器样式 */ .search-container{margin-left:20px !important;}/* 搜索框和按钮样式优化 */ #searchInput,#searchBtn{height:40px;/* 统一高度 */ box-sizing:border-box;line-height:1.5;}#searchBtn{display:flex;align-items:center;justify-content:center;font-size:0.9375rem;min-width:70px;}/* 移动端搜索容器特别样式 */ @media (max-width:768px){.search-container{margin-left:0 !important;}/* 移动端搜索框和按钮样式 */ .search-container .relative.flex{height:40px;/* 确保容器也保持一致高度 */}}/* 里程碑标题截断 */ .task-card .subtask-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;/* 确保text-overflow生效 */ /* 默认移动端最大宽度 */ max-width:60vw;}/* 桌面端标题最大宽度 */ @media (min-width:768px){/* Tailwind's md breakpoint */ .task-card .subtask-title{max-width:calc((100vw - 306px)/2 - 200px);/* max-width:calc((100vw - 0px)/2 - 200px);*/}}/* 确保里程碑列表项的容器能正确处理溢出 */ .task-card .flex.items-center.min-w-0.flex-1{overflow:hidden;/* 添加这个确保容器宽度不会被子元素撑开 */}/* 侧边栏遮罩层 - 确保样式优先级 */ #sidebarOverlay{position:fixed !important;top:0 !important;left:0 !important;right:0 !important;bottom:0 !important;background-color:rgba(0,0,0,0.5) !important;z-index:40 !important;transition:opacity 0.3s ease !important;opacity:0 !important;pointer-events:none !important;backdrop-filter:blur(3px) !important;}#sidebarOverlay.show{opacity:1 !important;pointer-events:auto !important;}#sidebarOverlay.hidden{display:none !important;}/* 修复同时存在show和hidden类的冲突问题 */ #sidebarOverlay.show.hidden{display:none !important;/* hidden优先级更高 */}/* 特殊元素修复 */ html.dark #category-path-display{/* background-color:#1f2937 !important;*/ color:rgb(243,244,246) !important;/* text-gray-100 */}/* 夜间模式下的待办卡片背景色 - 增强优先级 */ html.dark .task-card,.dark .task-card,html.dark .task-card.bg-white,.dark .task-card.bg-white{background-color:rgb(31,41,55) !important;/* bg-gray-800 */ border-color:rgb(55,65,81) !important;/* border-gray-700 */}/* 夜间模式下的主要模块背景色 - 增强优先级 */ html.dark .bg-white,.dark .bg-white{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}html.dark .bg-gray-50,.dark .bg-gray-50{background-color:rgb(55,65,81) !important;/* bg-gray-700 */}html.dark .bg-gray-100,.dark .bg-gray-100{background-color:rgb(75,85,99) !important;/* bg-gray-600 */}/* 夜间模式下的边框颜色 - 增强优先级 */ html.dark .border-gray-100,.dark .border-gray-100{border-color:rgb(55,65,81) !important;/* border-gray-700 */}html.dark .border-gray-200,.dark .border-gray-200{border-color:rgb(75,85,99) !important;/* border-gray-600 */}/* 夜间模式下的文本颜色 - 增强优先级 */ html.dark .text-gray-900,.dark .text-gray-900{color:rgb(243,244,246) !important;/* text-gray-100 */}html.dark .text-gray-800,.dark .text-gray-800{color:rgb(229,231,235) !important;/* text-gray-200 */}html.dark .text-gray-700,.dark .text-gray-700{color:rgb(209,213,219) !important;/* text-gray-300 */}html.dark .text-gray-600,.dark .text-gray-600{color:rgb(156,163,175) !important;/* text-gray-400 */}html.dark .text-gray-500,.dark .text-gray-500{color:rgb(107,114,128) !important;/* text-gray-500 */}/* 夜间模式下待办卡片内的特定元素背景色 - 增强优先级 */ html.dark .task-card .bg-red-50,.dark .task-card .bg-red-50{background-color:rgba(127,29,29,0.2) !important;/* bg-red-900/20 */}html.dark .task-card .bg-yellow-50,.dark .task-card .bg-yellow-50{background-color:rgba(113,63,18,0.2) !important;/* bg-yellow-900/20 */}html.dark .task-card .bg-green-50,.dark .task-card .bg-green-50{background-color:rgba(20,83,45,0.2) !important;/* bg-green-900/20 */}/* 夜间模式下里程碑容器背景色 - 增强优先级 */ html.dark .task-card .bg-gray-50,.dark .task-card .bg-gray-50{background-color:rgb(55,65,81) !important;/* bg-gray-700 */}/* 夜间模式下弹框和对话框背景色 - 增强优先级 */ html.dark .utils-dialog .bg-white,.dark .utils-dialog .bg-white{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}html.dark .utils-dialog .bg-gray-50,.dark .utils-dialog .bg-gray-50{background-color:rgb(55,65,81) !important;/* bg-gray-700 */}/* 夜间模式下待办详情弹框的列表项背景色 - 增强优先级 */ html.dark .utils-dialog .bg-white.dark\:bg-gray-600,.dark .utils-dialog .bg-white.dark\:bg-gray-600{background-color:rgb(75,85,99) !important;/* bg-gray-600 */}/* 夜间模式下的侧边栏背景色确保 - 增强优先级 */ html.dark #sidebar,.dark #sidebar{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}/* 夜间模式下顶部导航栏背景色确保 - 增强优先级 */ html.dark nav,.dark nav{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}/* 夜间模式下主体页面背景色确保 - 增强优先级 */ html.dark body,.dark body{background-color:rgb(17,24,39) !important;/* bg-gray-900 */}/* 通用按钮焦点样式 - 确保所有按钮在focus时不显示默认边框 */ button:focus{outline:2px solid transparent;outline-offset:2px;}/* 确保链接元素在焦点时也不显示默认边框 */ a:focus{outline:2px solid transparent;outline-offset:2px;}/* ==================== 禁用移动端下拉刷新功能 ==================== */ /* 参考知识库项目实现，使用 none 而不是 contain */ /* 全局禁用下拉刷新 */ html,body{overscroll-behavior-y:none;-webkit-overscroll-behavior-y:none;-webkit-overflow-scrolling:touch;}/* 移动端优化 */ @media (max-width:1023px){html{height:100%;position:relative;overscroll-behavior-y:none;-webkit-overscroll-behavior-y:none;}body{height:100%;position:relative;overscroll-behavior-y:none;-webkit-overscroll-behavior-y:none;touch-action:pan-x pan-y pinch-zoom;}/* 主要容器禁用下拉刷新 */ #app{display:flex;flex-direction:column;height:100dvh;overflow:hidden;overscroll-behavior-y:none;-webkit-overscroll-behavior-y:none;}main{display:flex;flex-direction:column;flex:1;overflow:hidden;position:relative;overscroll-behavior-y:none;-webkit-overscroll-behavior-y:none;}/* 主内容区域 - 保留滚动弹簧效果 */ #mainContentArea{flex:1;overflow-y:auto;/* 使用 contain 而不是 none，保留容器内的弹性滚动效果 */ overscroll-behavior-y:contain;-webkit-overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;}/* 待办列表容器 - 保留弹簧效果 */ #todoContainer{-webkit-overflow-scrolling:touch;/* 不设置 overscroll-behavior，使用父容器的 contain 设置 */}}/* 桌面端也禁用下拉刷新 */ @media (min-width:1024px){#app,#mainContentArea,main{overscroll-behavior-y:none;-webkit-overscroll-behavior-y:none;}}/* 可滚动区域保持流畅滚动和弹簧效果 */ .custom-scrollbar,.overflow-y-auto,.overflow-auto,.utils-dialog,#sidebar,.quill-editor,[data-scrollable]{-webkit-overflow-scrolling:touch;/* 使用 contain 保留弹性效果，同时防止滚动链 */ overscroll-behavior-y:contain;-webkit-overscroll-behavior-y:contain;}/* 侧边栏特殊优化 */ #sidebar{-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;-webkit-overscroll-behavior-y:contain;}/* ========== styles/index.css (6.13KB) ========== */ /* 导入基础样式 */ :root{/* 颜色变量 */ --color-primary:#4a90e2;--color-primary-dark:#357abd;--color-success:#50b766;--color-warning:#f7b955;--color-danger:#ff7676;--color-text-primary:#333333;--color-text-secondary:#666666;--color-background:#f8f9fa;/* 间距变量 */ --spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;/* 圆角变量 */ --border-radius:8px;/* 阴影变量 */ --shadow-sm:0 2px 4px rgba(0,0,0,0.1);--shadow-md:0 4px 6px rgba(0,0,0,0.1);--shadow-lg:0 10px 15px rgba(0,0,0,0.1);/* 主题颜色 */ --primary:#3b82f6;--primary-dark:#2563eb;}/* 基础样式重置 */ *{margin:0;padding:0;box-sizing:border-box;}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.5;color:var(--color-text-primary);}/* 自定义滚动条 */ ::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{background:#f1f1f1;}::-webkit-scrollbar-thumb{background:#888;border-radius:4px;}::-webkit-scrollbar-thumb:hover{background:#666;}/* 导入布局样式 */ /* 导航菜单样式 */ #sidebar{height:100dvh;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;-webkit-overflow-scrolling:touch;transition:transform 0.3s ease-in-out;}#sidebar::-webkit-scrollbar{width:4px;}#sidebar::-webkit-scrollbar-track{background:rgba(0,0,0,0.05);}#sidebar::-webkit-scrollbar-thumb{background:rgba(0,0,0,0.15);border-radius:4px;}#sidebar::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,0.25);}/* 暗色模式下的滚动条 */ .dark #sidebar::-webkit-scrollbar-track{background:rgba(255,255,255,0.05);}.dark #sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);}.dark #sidebar::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,0.25);}/* 确保侧边栏内容不影响布局 */ #sidebar nav{height:auto;}/* 待办分组标题样式 */ .week-title{font-size:1.125rem;font-weight:600;color:#374151;display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;}.week-title .date-range{font-weight:500;}.week-title .task-count{font-size:0.875rem;font-weight:normal;color:#6b7280;}/* 导入组件样式 */ /* 待办卡片样式 */ .task-card{transform-origin:center center;backface-visibility:hidden;will-change:transform,opacity;perspective:1000px;transition:box-shadow 0.2s ease,transform 0.2s ease,opacity 0.2s ease;border-width:1px;box-shadow:0 1px 3px rgba(0,0,0,0.1);padding:1.25rem;/* 统一内边距 */ min-height:14rem;/* 设置最小高度 */ display:flex;flex-direction:column;width:100% !important;max-width:100% !important;box-sizing:border-box !important;margin:0 !important;/* 确保亮色模式下的背景色 */ background-color:#ffffff;border-color:#e5e7eb;}/* 夜间模式下的待办卡片背景色 - 增强优先级 */ html.dark .task-card,.dark .task-card,html.dark .task-card.bg-white,.dark .task-card.bg-white,html.dark .bg-white.task-card,.dark .bg-white.task-card{background-color:rgb(31,41,55) !important;/* bg-gray-800 */ border-color:rgb(55,65,81) !important;/* border-gray-700 */ box-shadow:0 1px 3px rgba(0,0,0,0.3);}html.dark .task-card:hover,.dark .task-card:hover{box-shadow:0 4px 8px rgba(0,0,0,0.3);}/* 强制待办分组上下布局 */ #todoContainer{display:flex !important;flex-direction:column !important;}/* 强制待办分组容器为单列 */ .task-section{width:100% !important;/* margin-top:1rem !important;*/ /* margin-bottom:1rem !important;*/}/* 分组标题样式自适应 */ .task-section-header{width:auto !important;display:inline-flex !important;min-width:140px !important;max-width:100% !important;/* margin-left:0.5rem !important;*/ transition:none !important;}.task-section-header svg{transition:none !important;transform-origin:center;}.task-section-header .transform{transition:none !important;}/* 设置待办卡片内部两列布局并增加间距 */ #inProgressTasksContainer,#completedTasksContainer{display:grid !important;grid-template-columns:repeat(1,1fr) !important;gap:1rem !important;margin-top:0.5rem !important;transition:none !important;width:100% !important;box-sizing:border-box !important;}/* 确保所有待办卡片宽度一致 */ .task-card{width:100% !important;max-width:100% !important;box-sizing:border-box !important;margin:0 !important;}/* 修复在移动端浏览器下，进行中待办卡片和已完成待办卡片的宽度不一致问题 */ @media (max-width:767px){#inProgressTasksContainer,#completedTasksContainer{width:100% !important;display:grid !important;grid-template-columns:1fr !important;}#inProgressTasksContainer > .task-card,#completedTasksContainer > .task-card{width:100% !important;max-width:100% !important;min-width:0 !important;box-sizing:border-box !important;}/* 修复底部标签和日期布局 */ .task-card .mt-auto.pt-2.flex{width:100% !important;box-sizing:border-box !important;}}/* 电脑端两列布局 */ @media (min-width:768px){#inProgressTasksContainer,#completedTasksContainer{grid-template-columns:repeat(2,1fr) !important;}}/* 自动高度样式 - 当所有分组折叠时使用 */ #todoContainer.auto-height{height:auto !important;min-height:auto !important;overflow:hidden !important;}/* 当内容区域需要自动高度时 */ .h-\[calc\(100dvh-4rem\)\].overflow-hidden{height:auto !important;min-height:0 !important;overflow:hidden !important;}.task-card:hover{box-shadow:0 4px 8px rgba(0,0,0,0.1);transform:translateY(-2px);}.task-card[data-selected="true"]{/* border-width:2px;*/ border-color:var(--primary-color);background-color:rgba(243,244,246,0.2);}.task-card.completed{opacity:0.75;transition:opacity 0.3s ease;}.task-card.completed h3,.task-card.completed p{text-decoration:line-through;color:#9ca3af;}.task-deleting{box-shadow:0 10px 25px rgba(0,0,0,0.1);}.task-card .overdue-task{color:#ef4444;}/* 待办卡片选择样式 */ .task-card.selectable{position:relative;padding-left:2.5rem;}.task-card .task-selector{position:absolute;top:1rem;left:1rem;z-index:1;}.task-card .task-selector:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");background-size:100% 100%;background-position:center;background-repeat:no-repeat;}/* 待办卡片容器 */ .task-card-container{height:100%;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform;}/* 过期待办样式 */ .overdue-task{background-color:rgba(239,68,68,0.1);padding:2px 8px;border-radius:4px;display:inline-block;}/* 折叠后的分组间距优化 */ .task-section-header.collapsed{margin-bottom:0.5rem !important;}/* 当分组折叠时，减少分组之间的间距 */ .task-section.collapsed{margin-bottom:0.5rem !important;}/* 确保没有额外边距 */ .task-section:has(.task-section-header.collapsed){margin-bottom:0.5rem !important;}/* 如果浏览器不支持:has选择器，使用类选择器 */ .task-section.with-collapsed-header{margin-bottom:0.5rem !important;}/* 当上一个分组折叠时，减小下一个分组的上边距 */ .task-section.collapsed + .task-section{margin-top:0rem !important;}/* 针对特定情况：进行中分组折叠后，已完成分组的上边距 */ #inProgressTasksContainer.hidden ~ .task-section,.task-section:has(#inProgressTasksContainer.hidden) + .task-section{margin-top:0rem !important;}/* 使用类选择器实现相同效果，增加兼容性 */ .with-collapsed-header + .task-section{margin-top:0rem !important;}/* 确保所有待办相关的容器都没有动画 */ .task-section *{transition-property:none !important;animation:none !important;}/* 确保分组折叠时内容完全隐藏 */ .hidden{display:none !important;visibility:hidden !important;height:0 !important;min-height:0 !important;max-height:0 !important;overflow:hidden !important;opacity:0 !important;pointer-events:none !important;}/* 强制待办容器在折叠状态下隐藏其所有子元素 */ #inProgressTasksContainer.hidden *,#completedTasksContainer.hidden *{display:none !important;visibility:hidden !important;height:0 !important;opacity:0 !important;}/* 折叠状态的容器不应占用空间 */ #inProgressTasksContainer.hidden,#completedTasksContainer.hidden{height:0 !important;min-height:0 !important;max-height:0 !important;margin:0 !important;padding:0 !important;border:none !important;overflow:hidden !important;}/* 确保里程碑样式正确显示 */ .task-card .subtask-title.line-through{color:#9ca3af !important;text-decoration:line-through !important;}/* 里程碑日期统一样式 */ .task-card li span.ml-2.text-xs{display:inline-flex;align-items:center;margin-left:0.5rem;}/* 过期或当天截止的待办日期样式 */ .task-card span.bg-red-50{/* background-color:rgba(254,226,226,0.5) !important;*/ color:#f87171 !important;padding:0.125rem 0.375rem !important;border-radius:0.25rem !important;font-weight:500 !important;}/* 已完成里程碑样式 */ .task-card .form-checkbox:checked + .subtask-title{color:#9ca3af !important;text-decoration:line-through !important;}/* 已完成里程碑的日期样式 */ .task-card .form-checkbox:checked ~ span.ml-2{color:#9ca3af !important;}/* 确保日期文本不换行 */ .task-card span.ml-2.text-xs,.task-card .flex-shrink-0 span{white-space:nowrap;}/* 确保待办卡片标题与按钮组水平对齐 */ .task-card .flex.justify-between.items-center{min-height:32px;}/* 确保按钮垂直居中 */ .task-card .flex.items-center.space-x-1{height:100%;display:flex;align-items:center;}/* 调整按钮大小和间距保持一致 */ .task-card button.p-1{display:flex;align-items:center;justify-content:center;height:26px;width:26px;}/* 确保图标垂直居中 */ .task-card button.p-1 i{display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;}/* 搜索关键词高亮样式 */ .search-highlight{background-color:rgba(255,234,0,0.4);color:inherit;font-weight:bold;padding:0 2px;border-radius:2px;display:inline;}/* 确保暗色模式下高亮依然明显 */ .dark .search-highlight{background-color:rgba(255,234,0,0.3);color:#fff;box-shadow:0 0 3px rgba(255,255,0,0.5);}/* 里程碑中的关键词高亮 */ .task-card .subtask-title .search-highlight{padding:0 1px;margin:0 -1px;}/* 已完成待办中的高亮 */ .task-card.completed .search-highlight,.task-card .line-through .search-highlight{background-color:rgba(255,234,0,0.2);text-decoration:line-through;font-weight:normal;}/* 限制卡片中的富文本内容 */ .task-card .quill-content{max-height:80px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;text-overflow:ellipsis;}.task-card .quill-content *{margin:0;padding:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;}.task-card .quill-content p{margin-bottom:0;display:inline;}/* 夜间模式下富文本内容样式 */ .dark .task-card .quill-content,.dark .task-card .quill-content *{color:rgba(255,255,255,0.9);}.dark .task-card.completed .quill-content,.dark .task-card.completed .quill-content *{color:rgba(156,163,175,0.9);}/* 待办卡片类 */ /* Quill 编辑器特定样式 */ .quill-editor-container .ql-toolbar{background-color:#ffffff;/* 与输入框一致的白色背景 */ border:1px solid #e5e7eb !important;/* 使用!important确保覆盖Quill原生样式 */ border-bottom:1px solid #e5e7eb !important;/* 保持底部边框 */ border-top-left-radius:0.5rem;/* Updated to match rounded-lg */ border-top-right-radius:0.5rem;/* Updated to match rounded-lg */ /* 添加阴影以匹配输入框 */ box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);/* shadow-sm */ transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;/* 添加过渡动画 */}.dark .quill-editor-container .ql-toolbar{background-color:#1f2937;/* 与暗色模式输入框一致 dark:bg-gray-700 */ border:1px solid #4b5563 !important;/* 使用!important确保覆盖Quill原生样式 */ border-bottom:1px solid #4b5563 !important;/* 保持底部边框 */ border-top-left-radius:0.5rem;/* Updated to match rounded-lg */ border-top-right-radius:0.5rem;/* Updated to match rounded-lg */ /* 添加阴影以匹配输入框 */ box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);/* shadow-sm */ transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;/* 添加过渡动画 */}/* 使用更具体的选择器来确保工具栏边框颜色覆盖 */ .quill-editor-container .ql-toolbar.ql-snow{border-color:#e5e7eb !important;/* 确保覆盖Quill的默认#ccc边框 */}.dark .quill-editor-container .ql-toolbar.ql-snow{border-color:#4b5563 !important;/* 确保覆盖Quill的默认#ccc边框 */}.quill-editor-container .ql-container{border:1px solid #e5e7eb !important;/* 使用!important确保覆盖Quill原生样式 */ border-top:none !important;/* Toolbar provides top border */ border-bottom-left-radius:0.5rem;/* Updated to match rounded-lg */ border-bottom-right-radius:0.5rem;/* Updated to match rounded-lg */ overflow:hidden;background-color:#ffffff;/* 与输入框一致的白色背景 */ /* Add shadow to match input fields */ box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);/* shadow-sm */ transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;/* 添加过渡动画 */}.dark .quill-editor-container .ql-container{border:1px solid #4b5563 !important;/* 使用!important确保覆盖Quill原生样式 */ border-top:none !important;/* Ensure top border remains none */ background-color:#1f2937;/* 与暗色模式输入框一致 dark:bg-gray-700 */ overflow:hidden;/* Add shadow to match input fields in dark mode */ box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);/* shadow-sm */ transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;/* 添加过渡动画 */}/* 使用更具体的选择器来确保边框颜色覆盖 */ .quill-editor-container .ql-container.ql-snow{border-color:#e5e7eb !important;/* 确保覆盖Quill的默认#ccc边框 */}.dark .quill-editor-container .ql-container.ql-snow{border-color:#4b5563 !important;/* 确保覆盖Quill的默认#ccc边框 */}/* 添加焦点状态样式，与输入框保持一致 */ .quill-editor-container:focus-within .ql-toolbar,.quill-editor-container .ql-editor:focus-within + .ql-toolbar{border-color:var(--primary-color,#3b82f6) !important;/* focus:border-primary */ box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;/* focus:ring-1 focus:ring-primary */}.quill-editor-container:focus-within .ql-container,.quill-editor-container .ql-editor:focus + .ql-container{border-color:var(--primary-color,#3b82f6) !important;/* focus:border-primary */ box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;/* focus:ring-1 focus:ring-primary */}/* 暗色模式下的焦点状态 */ .dark .quill-editor-container:focus-within .ql-toolbar,.dark .quill-editor-container .ql-editor:focus-within + .ql-toolbar{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;}.dark .quill-editor-container:focus-within .ql-container,.dark .quill-editor-container .ql-editor:focus + .ql-container{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;}.quill-editor-container .ql-editor{min-height:150px;/* max-height:400px;*/ overflow:hidden;background-color:transparent;/* 编辑器背景透明，让容器背景显示 */ color:#111827;/* 与输入框文字颜色一致 dark:text-gray-200 in light mode */ padding:12px;border-bottom-left-radius:0.5rem;/* Updated to match rounded-lg */ border-bottom-right-radius:0.5rem;/* Updated to match rounded-lg */ font-size:16px;/* 与标准输入框字体大小一致 */}.dark .quill-editor-container .ql-editor{background-color:transparent;/* 编辑器背景透明，让容器背景显示 */ color:#e5e7eb;/* 与暗色模式输入框文字颜色一致 dark:text-gray-200 */ border-bottom-left-radius:0.5rem;/* Updated to match rounded-lg */ border-bottom-right-radius:0.5rem;/* Updated to match rounded-lg */ overflow:hidden;padding:12px;/* Ensure padding is explicit here if not inherited */ font-size:16px;/* 与标准输入框字体大小一致 */}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin-bottom:0.5em;/* 为Quill内容块调整间距 */}/* Quill 编辑器提示文案样式 - 更新以匹配输入框placeholder样式 */ .ql-editor.ql-blank::before{color:#6b7280 !important;/* Updated to match input placeholder color (text-gray-400) */ font-style:normal !important;left:12px;/* 与编辑器padding一致 */ right:12px;opacity:1 !important;/* Ensure full opacity to match input placeholders */ font-size:16px !important;/* 与标准输入框字体大小一致 */ font-weight:normal !important;/* 确保字重与输入框一致 */}.dark .ql-editor.ql-blank::before{color:#6b7280 !important;/* Updated to match dark mode input placeholder color (dark:text-gray-500) */ opacity:1 !important;/* Ensure full opacity to match input placeholders */ font-size:16px !important;/* 与标准输入框字体大小一致 */ font-weight:normal !important;/* 确保字重与输入框一致 */}/* 使用更具体的选择器来确保placeholder颜色覆盖Quill原生样式 */ .quill-editor-container .ql-editor.ql-blank::before{color:#6b7280 !important;/* 确保覆盖Quill的默认placeholder颜色 */ font-style:normal !important;font-size:16px !important;font-weight:normal !important;opacity:1 !important;}.dark .quill-editor-container .ql-editor.ql-blank::before{color:#6b7280 !important;/* 确保覆盖Quill的默认placeholder颜色 */ font-style:normal !important;font-size:16px !important;font-weight:normal !important;opacity:1 !important;}/* 进一步提高优先级，针对Quill Snow主题 */ .quill-editor-container .ql-snow .ql-editor.ql-blank::before{color:#6b7280 !important;font-style:normal !important;font-size:16px !important;font-weight:normal !important;opacity:1 !important;}.dark .quill-editor-container .ql-snow .ql-editor.ql-blank::before{color:#6b7280 !important;font-style:normal !important;font-size:16px !important;font-weight:normal !important;opacity:1 !important;}/* 待办卡片中的描述截断 */ .task-description-card{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.5;/* 调整行高以适应两行显示 */ max-height:calc(1.5em * 2);/* line-height * 2 */ /* white-space:normal;Ensure newlines are not collapsed by default CSS */}/* 确保日期输入框的焦点状态样式生效 */ .main-task-date-picker:focus,#taskDueDate:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}.subtask-due-date:focus,.milestone-date-picker:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}/* 暗色模式下的日期输入框焦点状态 */ .dark .main-task-date-picker:focus,.dark #taskDueDate:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}.dark .subtask-due-date:focus,.dark .milestone-date-picker:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}/* 通用日期输入框焦点样式 - 确保所有日期输入框都有一致的焦点效果 */ input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* 增强日期选择器的具体焦点样式 - 确保包装器内的input正确显示焦点 */ /* Base styles for enhanced date pickers focus */ .enhanced-date-wrapper input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark .enhanced-date-wrapper input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* Specific types for enhanced date pickers focus */ .enhanced-date-wrapper[data-date-picker-type="main-task"] input[type="date"]:focus,.enhanced-date-wrapper[data-date-picker-type="milestone"] input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark .enhanced-date-wrapper[data-date-picker-type="main-task"] input[type="date"]:focus,.dark .enhanced-date-wrapper[data-date-picker-type="milestone"] input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* Dialog specific focus styles for enhanced date pickers - HIGH PRIORITY */ .utils-dialog .enhanced-date-wrapper:focus-within input[type="date"],.task-form-content .enhanced-date-wrapper:focus-within input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;/* Ring effect */ outline:2px solid transparent !important;/* modern outline reset */ outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark .utils-dialog .enhanced-date-wrapper:focus-within input[type="date"],.dark .task-form-content .enhanced-date-wrapper:focus-within input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;/* Ring effect */ outline:2px solid transparent !important;/* modern outline reset */ outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* Ensure specificity for main task and milestone types within dialogs */ .utils-dialog .enhanced-date-wrapper[data-date-picker-type="main-task"]:focus-within input[type="date"],.utils-dialog .enhanced-date-wrapper[data-date-picker-type="milestone"]:focus-within input[type="date"],.task-form-content .enhanced-date-wrapper[data-date-picker-type="main-task"]:focus-within input[type="date"],.task-form-content .enhanced-date-wrapper[data-date-picker-type="milestone"]:focus-within input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:2px solid transparent !important;outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark .utils-dialog .enhanced-date-wrapper[data-date-picker-type="main-task"]:focus-within input[type="date"],.dark .utils-dialog .enhanced-date-wrapper[data-date-picker-type="milestone"]:focus-within input[type="date"],.dark .task-form-content .enhanced-date-wrapper[data-date-picker-type="main-task"]:focus-within input[type="date"],.dark .task-form-content .enhanced-date-wrapper[data-date-picker-type="milestone"]:focus-within input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:2px solid transparent !important;outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* 待办卡片类 */ /* 里程碑样式 */ .subtask-item{transition:all 0.3s ease;position:relative;}.subtask-item.completed{opacity:0.75;}.subtask-title{font-weight:600;color:#374151;}.subtask-date{font-weight:600;color:#6B7280;margin-left:8px;}/* 里程碑删除按钮 */ .subtask-delete,.subtask-add-below,[data-action="remove-subtask"]{padding:0.5rem;border-radius:0.375rem;transition:all 0.2s ease;}.subtask-delete:hover,[data-action="remove-subtask"]:hover{background-color:#fee2e2;color:#dc2626;}/* 为添加按钮添加悬停效果 */ .subtask-add-below:hover{background-color:#e0f2fe;color:#2563eb;}/* 里程碑拖拽把手样式 */ .subtask-drag-handle{cursor:move;cursor:grab;color:#9ca3af;padding:0.25rem;border-radius:0.25rem;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;height:24px;width:24px;flex-shrink:0;z-index:5;}.subtask-drag-handle:hover{color:#6b7280;background-color:#f3f4f6;}.subtask-drag-handle:active{cursor:grabbing;}/* 拖拽过程中的样式 */ .subtask-ghost{opacity:0.5 !important;background-color:#e5e7eb !important;border:1px dashed #9ca3af !important;}.subtask-chosen{background-color:#f3f4f6 !important;box-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06) !important;}.subtask-drag{box-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05) !important;background-color:#f9fafb !important;z-index:10 !important;cursor:grabbing !important;}/* 表单元素样式 */ input[type="text"],input[type="date"],textarea,select{transition:border-color 0.2s ease-out;}input[type="text"]:focus,input[type="date"]:focus,textarea:focus,select:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(74,144,226,0.1);}/* 按钮悬停效果 */ button.bg-primary:hover{background-color:var(--color-primary-dark);}/* 复选框样式 */ input[type="checkbox"]{position:relative;cursor:pointer;transition:background-color 0.3s ease;border:2px solid #d1d5db;background-color:white;}input[type="checkbox"]:checked{background-color:var(--primary);border-color:var(--primary);}/* 下拉菜单自定义样式 */ select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:none !important;padding-right:2.5rem !important;}select::-ms-expand{display:none;}/* 自定义下拉箭头 */ .relative > .absolute.inset-y-0.right-0{pointer-events:none;}/* 日期选择器样式优化 */ input[type="date"]{position:relative;cursor:pointer;}input[type="date"]::-webkit-calendar-picker-indicator{opacity:0;position:absolute;right:0;top:0;bottom:0;width:2.5rem;height:100%;cursor:pointer;}/* 日期选择器的自定义图标 */ input[type="date"] + button{pointer-events:none;}/* 自定义滚动条 */ textarea::-webkit-scrollbar{width:6px;}textarea::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px;}textarea::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px;}textarea::-webkit-scrollbar-thumb:hover{background:#999;}/* 按钮样式 */ [data-action="delete"] i{transition:transform 0.2s ease;}[data-action="delete"]:hover i{transform:rotate(8deg);color:var(--color-danger);}[data-action="edit"] i{transition:transform 0.2s ease;}[data-action="edit"]:hover i{transform:rotate(-8deg);color:var(--color-primary);}/* 刷新按钮旋转动画 */ .refresh-rotating{animation:refresh-rotate 0.6s linear infinite;}@keyframes refresh-rotate{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}/* 刷新按钮禁用状态 */ #refreshDataBtn:disabled{opacity:0.6;cursor:not-allowed;}/* 空状态样式 */ .empty-state{text-align:center;padding:2rem;color:var(--color-text-secondary);}.empty-state i{font-size:4rem;color:#ddd;margin-bottom:1rem;}/* 模态框动画 */ #taskModal .bg-white{transform:scale(0.95);opacity:0;transition:transform 0.2s ease-out,opacity 0.2s ease-out;}#taskModal.flex .bg-white{transform:scale(1);opacity:1;}/* Quill富文本内容样式（优化版本，与知识库项目完全一致） */ .quill-content{font-size:16px;line-height:1.8;color:var(--text-primary,#111827);word-break:break-all;overflow-wrap:break-word;/* 不在根级初始化计数器，让第一个标题来初始化 */}/* 段落样式 */ .quill-content p{margin:0.25em 0;}.quill-content p:last-child{margin-bottom:0;}/* 标题样式 */ .quill-content h1,.quill-content h2,.quill-content h3,.quill-content h4,.quill-content h5,.quill-content h6{margin-top:0.5rem;margin-bottom:0.5rem;font-weight:600;color:var(--text-primary,#111827);}/* 标题元素创建新的计数器作用域 */ .quill-content h1,.quill-content h2,.quill-content h3,.quill-content h4,.quill-content h5,.quill-content h6{counter-reset:level1;}/* 标题后面的第一个有序列表只重置一级计数器 */ .quill-content h1 + ol,.quill-content h2 + ol,.quill-content h3 + ol,.quill-content h4 + ol,.quill-content h5 + ol,.quill-content h6 + ol,.quill-content h1 + * + ol,.quill-content h2 + * + ol,.quill-content h3 + * + ol,.quill-content h4 + * + ol,.quill-content h5 + * + ol,.quill-content h6 + * + ol{counter-reset:level1 !important;}/* 关键修复：强制覆盖浏览器默认的ol计数器重置行为 */ .quill-content ol{counter-reset:none !important;}/* 只有第一个ol才初始化计数器（无h标签场景） */ .quill-content ol:first-of-type{counter-reset:level1 !important;}.quill-content h1:first-child,.quill-content h2:first-child,.quill-content h3:first-child,.quill-content h4:first-child,.quill-content h5:first-child,.quill-content h6:first-child{margin-top:0;}.quill-content h1{font-size:1.5em;}.quill-content h2{font-size:1.3em;}.quill-content h3{font-size:1.2em;}.quill-content h4{font-size:1.1em;}.quill-content h5{font-size:1em;}.quill-content h6{font-size:1em;}/* 链接样式 */ .quill-content a{color:#3b82f6;text-decoration:underline;}.quill-content a:hover{color:#2563eb;}/* 重置所有列表样式 */ .quill-content ol,.quill-content ul{list-style:none !important;margin:0 !important;padding:0 !important;}/* 重置所有 Quill 默认的 .ql-ui:before 样式，防止与自定义样式冲突 */ .quill-content li[data-list="ordered"] > .ql-ui:before,.ql-editor li[data-list="ordered"] > .ql-ui:before{content:none !important;}/* 新的一级有序列表实现 - 只有h标签后才重置计数器 */ /* 所有一级有序列表项目都增加计数器 */ .quill-content li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5){counter-increment:level1;/* 每个一级项都重置所有下级计数器 */ counter-reset:level2 level3 level4 level5 level6;display:list-item !important;list-style:none !important;margin-left:2em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5)::before{content:counter(level1) ". ";font-weight:inherit;margin-left:-1.5em;display:inline-block;width:1.5em;}/* 二级有序列表 - 重置所有下级计数器 */ .quill-content li[data-list="ordered"].ql-indent-1{counter-increment:level2;counter-reset:level3 level4 level5 level6;/* 每个二级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:4em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-1::before{content:counter(level2,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 三级有序列表 - 重置所有下级计数器 */ .quill-content li[data-list="ordered"].ql-indent-2{counter-increment:level3;counter-reset:level4 level5 level6;/* 每个三级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:6em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-2::before{content:counter(level3,lower-roman) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 关键修复：当三级列表项紧跟在二级列表项后面时，重置level3计数器 */ .quill-content li[data-list="ordered"].ql-indent-1 + li[data-list="ordered"].ql-indent-2{counter-reset:level3 level4 level5 level6;}/* 四级有序列表 - 重置所有下级计数器 */ .quill-content li[data-list="ordered"].ql-indent-3{counter-increment:level4;counter-reset:level5 level6;/* 每个四级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:8em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-3::before{content:counter(level4,upper-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 五级有序列表 - 重置六级计数器 */ .quill-content li[data-list="ordered"].ql-indent-4{counter-increment:level5;counter-reset:level6;/* 每个五级项都重置六级计数器 */ display:list-item !important;list-style:none !important;margin-left:10em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-4::before{content:counter(level5) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 六级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-5{counter-increment:level6;display:list-item !important;list-style:none !important;margin-left:12em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-5::before{content:counter(level6,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 无序列表样式 - 使用伪元素与有序列表保持一致对齐 */ .quill-content li[data-list="bullet"]{display:list-item !important;list-style:none !important;margin-left:2em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="bullet"]::before{content:"•";font-weight:inherit;margin-left:-1.5em;display:inline-block;width:1.5em;}.quill-content li[data-list="bullet"].ql-indent-1{margin-left:4em !important;}.quill-content li[data-list="bullet"].ql-indent-1::before{content:"◦";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}.quill-content li[data-list="bullet"].ql-indent-2{margin-left:6em !important;}.quill-content li[data-list="bullet"].ql-indent-2::before{content:"▪";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}.quill-content li[data-list="bullet"].ql-indent-3{margin-left:8em !important;}.quill-content li[data-list="bullet"].ql-indent-3::before{content:"•";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 通用列表项样式 */ .quill-content li{margin-bottom:0.5rem;line-height:1.6;}.quill-content li:last-child{margin-bottom:0;}.quill-content li p{margin-bottom:0.5rem;}.quill-content li p:last-child{margin-bottom:0;}/* 行内代码样式 */ .quill-content code{background-color:rgba(0,0,0,0.05);border-radius:3px;padding:0.15em 0.25em;font-family:monospace;}/* ========== 富文本编辑器专用样式 ========== */ /* 编辑器根级计数器初始化 - 不在根级初始化计数器，让标题来初始化 */ /* 编辑器标题元素创建新的计数器作用域 */ .ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:level1;}/* 编辑器标题后面的第一个有序列表只重置一级计数器 */ .ql-editor h1 + ol,.ql-editor h2 + ol,.ql-editor h3 + ol,.ql-editor h4 + ol,.ql-editor h5 + ol,.ql-editor h6 + ol,.ql-editor h1 + * + ol,.ql-editor h2 + * + ol,.ql-editor h3 + * + ol,.ql-editor h4 + * + ol,.ql-editor h5 + * + ol,.ql-editor h6 + * + ol{counter-reset:level1 !important;}/* 关键修复：强制覆盖浏览器默认的ol计数器重置行为 */ .ql-editor ol{counter-reset:none !important;}/* 只有第一个ol才初始化计数器（无h标签场景） */ .ql-editor ol:first-of-type{counter-reset:level1 !important;}/* h标签后的ol重置计数器（有h标签场景） */ .ql-editor h1 + ol,.ql-editor h2 + ol,.ql-editor h3 + ol,.ql-editor h4 + ol,.ql-editor h5 + ol,.ql-editor h6 + ol,.ql-editor h1 + * + ol,.ql-editor h2 + * + ol,.ql-editor h3 + * + ol,.ql-editor h4 + * + ol,.ql-editor h5 + * + ol,.ql-editor h6 + * + ol{counter-reset:level1 !important;}/* 编辑器重置所有列表样式 */ .ql-editor ol,.ql-editor ul{list-style:none !important;margin:0 !important;padding:0 !important;}/* 编辑器一级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5){counter-increment:level1;counter-reset:level2 level3 level4 level5 level6;/* 每个一级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:2em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5)::before{content:counter(level1) ". ";font-weight:inherit;margin-left:-1.5em;display:inline-block;width:1.5em;}/* 编辑器二级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-1{counter-increment:level2 !important;counter-reset:level3 level4 level5 level6 !important;/* 每个二级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:1em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-1::before{content:counter(level2,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 编辑器三级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-2{counter-increment:level3 !important;counter-reset:level4 level5 level6 !important;/* 每个三级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:0em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-2::before{content:counter(level3,lower-roman) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 编辑器四级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-3{counter-increment:level4 !important;counter-reset:level5 level6 !important;/* 每个四级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:8em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-3::before{content:counter(level4,upper-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 编辑器五级有序列表 - 重置六级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-4{counter-increment:level5 !important;counter-reset:level6 !important;/* 每个五级项都重置六级计数器 */ display:list-item !important;list-style:none !important;margin-left:10em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-4::before{content:counter(level5) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 编辑器六级有序列表 */ .ql-editor li[data-list="ordered"].ql-indent-5{counter-increment:level6 !important;display:list-item !important;list-style:none !important;margin-left:12em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-5::before{content:counter(level6,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 引用样式 - 与编辑器完全一致 */ .quill-content blockquote,.ql-editor blockquote,.quill-editor blockquote,blockquote{margin:0 !important;margin-top:0 !important;margin-bottom:0 !important;padding:1rem !important;background:rgba(156,163,175,0.1) !important;/* 与编辑器保持一致 */ border-left:3px solid #c4c9d0 !important;/* 与编辑器保持一致 */ border-radius:4px;color:var(--text-secondary) !important;font-style:italic;font-size:0.875rem;line-height:1.6;position:relative;}/* 连续的引用块合并样式 - 与编辑器完全一致 */ .quill-content blockquote + blockquote{margin-top:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}/* 浏览器支持:has()的情况 */ @supports selector(:has(+ *)){.quill-content blockquote:has(+ blockquote){margin-bottom:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;padding-bottom:0.2rem !important;}}/* 浏览器不支持:has()的情况，使用JS类名控制 */ .quill-content .blockquote-group{margin:0 !important;margin-top:0 !important;margin-bottom:0 !important;background:transparent !important;/* 让内部blockquote显示自己的背景 */ border:none !important;/* 移除外层边框，让每个blockquote显示自己的边框 */ border-radius:0;overflow:visible;padding:0 !important;}.quill-content .blockquote-group blockquote{margin:0 !important;border-left:3px solid #c4c9d0 !important;/* 恢复每个引用块的边框 */ background:rgba(156,163,175,0.1) !important;/* 恢复每个引用块的背景 */ border-radius:4px !important;/* 恢复圆角 */ padding:1rem !important;/* 与单独引用块保持一致 */ font-size:0.875rem !important;color:var(--text-secondary) !important;font-style:italic !important;line-height:1.6 !important;}/* 分组中连续引用块的连接效果 - 与编辑器保持一致 */ .quill-content .blockquote-group blockquote + blockquote{margin-top:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}.quill-content .blockquote-group blockquote:first-child{border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;padding-bottom:0.2rem !important;}.quill-content .blockquote-group blockquote:not(:first-child):not(:last-child){border-radius:0 !important;padding-top:0.2rem !important;padding-bottom:0.2rem !important;}.quill-content .blockquote-group blockquote:last-child{border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}/* 代码块包装器样式 - 外层容器，负责定位复制按钮 */ .quill-content .code-block-wrapper{position:relative;margin:1rem 0;background:#2d3748;border-radius:6px;overflow:hidden;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 内层滚动容器 - 负责代码内容的滚动 */ .quill-content .code-scroll-container{overflow-x:auto;padding:0rem;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 确保所有可能的代码块容器都具有相对定位和触摸滚动支持 */ .quill-content .ql-code-block-container,.quill-content pre{position:relative;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.quill-content .code-scroll-container::-webkit-scrollbar{display:none;/* 隐藏滚动条 */}/* 可选：为了确保在所有 WebKit 浏览器中都能正常工作 */ .quill-content .code-scroll-container{-ms-overflow-style:none;/* IE 和 Edge */ scrollbar-width:none;/* Firefox */}/* 复制按钮样式 - 确保固定在容器右上角 */ .quill-content .code-copy-btn{position:absolute;top:0.5rem;right:0.5rem;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:4px;padding:0.4rem 0.6rem;font-size:0.75rem;color:#e2e8f0;cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;width:28px;height:28px;z-index:15;/* 提高层级，确保在滚动内容之上 */ /* 确保复制按钮不会跟随内容滚动 */ pointer-events:auto;/* 确保按钮可点击 */}.quill-content .code-copy-btn:hover{background:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.3);transform:translateY(-1px);}.quill-content .code-copy-btn.copied{background:rgba(34,197,94,0.8);border-color:rgba(34,197,94,1);color:white;}.quill-content .code-copy-btn i{font-size:14px;}/* 语言标签样式 */ .quill-content .code-language-label{position:absolute;top:0.5rem;left:0.5rem;background:rgba(0,0,0,0.3);color:#e2e8f0;padding:0.2rem 0.5rem;border-radius:3px;font-size:0.7rem;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;z-index:5;}/* Quill编辑器特有的代码块样式 - 与知识库项目完全一致 */ .quill-content .ql-code-block-container,.knowledge-content .ql-code-block-container{margin:0 !important;padding:0.75rem !important;border-radius:6px;overflow:hidden;background:#2d3748;position:relative;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 确保容器内的代码块也能获得高亮样式 */ .quill-content .ql-code-block-container .ql-code-block{padding:0.2rem;background:transparent;/* 使用容器的背景 */ color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre !important;/* 文本不换行 */ /* font-weight:lighter;*/ /* 细体 */ font-style:italic;/* 斜体 */ overflow-x:visible;/* 内容区不产生滚动条 */ border:none;margin:0;}/* 弹框中的代码块样式 - 与知识库项目完全一致 */ .utils-dialog .quill-content .ql-code-block{padding:0;background:transparent;color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre;/* 文本不换行 */ overflow-x:visible;border:none;margin:0;position:static;}/* 弹框中的 ql-syntax 样式 */ .utils-dialog .quill-content .ql-syntax{background:#2d3748;color:#e2e8f0;padding:1rem;padding-right:3rem;/* 为复制按钮留出空间 */ border-radius:6px;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;overflow-x:auto;white-space:pre;margin:1rem 0;position:relative;/* 确保复制按钮能正确定位 */ /* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 弹框中的代码块容器样式 */ .utils-dialog .quill-content .ql-code-block-container{margin:0 !important;padding:0.25rem !important;border-radius:6px;overflow:hidden;background:#2d3748;position:relative;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 确保容器内的代码块也能获得高亮样式 */ .quill-content .ql-code-block-container .ql-code-block{padding:0.25rem;background:transparent;/* 使用容器的背景 */ color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre !important;/* 完全保留空格和换行 */ /* font-weight:lighter;*/ /* 细体 */ font-style:italic;/* 斜体 */ overflow-x:auto;/* 允许横向滚动 */ /* 强制保留空格和制表符 */ tab-size:4 !important;-moz-tab-size:4 !important;-webkit-tab-size:4 !important;/* 防止文本换行 */ word-wrap:normal !important;word-break:normal !important;border:none;margin:0;}.quill-content .ql-code-block{padding:0;background:transparent;color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre;/* 文本不换行 */ overflow-x:visible;border:none;margin:0;position:static;}/* Quill编辑器的语法高亮支持 */ .quill-content .ql-syntax{background:#2d3748;color:#e2e8f0;padding:1rem;padding-right:3rem;/* 为复制按钮留出空间 */ border-radius:6px;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;overflow-x:auto;white-space:pre;margin:1rem 0;position:relative;/* 确保复制按钮能正确定位 */ /* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 代码块样式 */ .quill-content pre{background:transparent;/* 背景由外层容器提供 */ margin:0;padding:0;border-radius:0;white-space:pre;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 代码块样式 */ .quill-content pre{background:transparent;/* 背景由外层容器提供 */ margin:0;padding:0;border-radius:0;white-space:pre;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* Highlight.js 增强样式 */ .quill-content pre code,.quill-content .hljs{display:block;overflow-x:visible;/* 内容区不产生滚动条 */ padding:0;background:transparent;color:#e2e8f0;border-radius:0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;margin:0;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* Highlight.js 主题适配 - 覆盖默认主题 */ .quill-content .hljs{/* background:#1a202c !important;*/ color:#e2e8f0 !important;}/* 保持现有的语法高亮颜色定义，但优先级更高 */ .quill-content .hljs-keyword,.quill-content .ql-code-block .hljs-keyword,.quill-content .ql-syntax .hljs-keyword{color:#a78bfa !important;font-weight:600;}.quill-content .hljs-string,.quill-content .ql-code-block .hljs-string,.quill-content .ql-syntax .hljs-string{color:#34d399 !important;}.quill-content .hljs-number,.quill-content .ql-code-block .hljs-number,.quill-content .ql-syntax .hljs-number{color:#fbbf24 !important;}.quill-content .hljs-comment,.quill-content .ql-code-block .hljs-comment,.quill-content .ql-syntax .hljs-comment{color:#6b7280 !important;font-style:italic;}.quill-content .hljs-function,.quill-content .ql-code-block .hljs-function,.quill-content .ql-syntax .hljs-function{color:#60a5fa !important;}.quill-content .hljs-variable,.quill-content .ql-code-block .hljs-variable,.quill-content .ql-syntax .hljs-variable{color:#f87171 !important;}.quill-content .hljs-tag,.quill-content .ql-code-block .hljs-tag,.quill-content .ql-syntax .hljs-tag{color:#fb7185 !important;}.quill-content .hljs-attr,.quill-content .hljs-attribute,.quill-content .ql-code-block .hljs-attr,.quill-content .ql-syntax .hljs-attr{color:#fcd34d !important;}/* 额外的highlight.js语法元素 */ .quill-content .hljs-built_in,.quill-content .hljs-builtin-name{color:#8b5cf6 !important;}.quill-content .hljs-type,.quill-content .hljs-class{color:#f59e0b !important;}.quill-content .hljs-title,.quill-content .hljs-title.class_,.quill-content .hljs-title.function_{color:#60a5fa !important;font-weight:600;}.quill-content .hljs-params{color:#e2e8f0 !important;}.quill-content .hljs-meta,.quill-content .hljs-meta-keyword{color:#a78bfa !important;}.quill-content .hljs-doctag{color:#34d399 !important;}.quill-content .hljs-section{color:#60a5fa !important;font-weight:600;}.quill-content .hljs-selector-tag,.quill-content .hljs-selector-id,.quill-content .hljs-selector-class{color:#fb7185 !important;}.quill-content .hljs-regexp,.quill-content .hljs-literal{color:#34d399 !important;}.quill-content .hljs-operator,.quill-content .hljs-punctuation{color:#e2e8f0 !important;}.quill-content .hljs-deletion{background:rgba(239,68,68,0.2) !important;color:#fca5a5 !important;}.quill-content .hljs-addition{background:rgba(34,197,94,0.2) !important;color:#86efac !important;}.quill-content .hljs-emphasis{font-style:italic;}.quill-content .hljs-strong{font-weight:700;}/* 连续的引用块合并样式 - 完全按照知识库项目实现 */ .quill-content blockquote + blockquote{margin-top:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}/* 浏览器支持:has()的情况 */ @supports selector(:has(+ *)){.quill-content blockquote:has(+ blockquote){margin-bottom:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;padding-bottom:0.2rem !important;}}/* 浏览器不支持:has()的情况，使用JS类名控制 */ .quill-content .blockquote-group{margin:0 !important;margin-top:0 !important;margin-bottom:0 !important;background:rgba(156,163,175,0.1) !important;border-left:3px solid var(--primary-color,#3b82f6) !important;border-radius:4px !important;overflow:hidden !important;}.quill-content .blockquote-group blockquote{margin:0 !important;border:none !important;background:transparent !important;border-radius:0 !important;padding:0.75rem 1rem !important;font-size:0.875rem !important;}.quill-content .blockquote-group blockquote + blockquote{margin-top:0 !important;padding-top:0.75rem !important;}/* 暗色主题的引用块样式 - 与编辑器保持一致 */ [data-theme="dark"] .quill-content blockquote,.theme-dark .quill-content blockquote,.dark .quill-content blockquote{background:rgba(75,85,99,0.2) !important;/* 与编辑器保持一致 */ border-left-color:#4b5563 !important;/* 与编辑器保持一致 */}[data-theme="dark"] .quill-content .blockquote-group,.theme-dark .quill-content .blockquote-group,.dark .quill-content .blockquote-group{background:transparent !important;/* 保持透明，让内部blockquote显示自己的背景 */ border:none !important;}[data-theme="dark"] .quill-content .blockquote-group blockquote,.theme-dark .quill-content .blockquote-group blockquote,.dark .quill-content .blockquote-group blockquote{background:rgba(75,85,99,0.2) !important;/* 与编辑器保持一致 */ border-left-color:#4b5563 !important;/* 与编辑器保持一致 */}/* 媒体查询样式已统一到上面的定义中，这里不再需要重复定义 */ /* 暗色主题下的样式 */ .dark .quill-content{color:var(--text-primary,#e5e7eb);}.dark .quill-content h1,.dark .quill-content h2,.dark .quill-content h3,.dark .quill-content h4,.dark .quill-content h5,.dark .quill-content h6{color:var(--text-primary,#e5e7eb);}.dark .quill-content code{background-color:rgba(75,85,99,0.3);border-color:rgba(75,85,99,0.5);color:var(--text-primary,#e5e7eb);}/* 暗色主题的引用块样式已在上面统一定义 */ .quill-content img{max-width:100%;height:auto;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,0.1);margin:0.5em 0;}/* 字号样式 - 提高优先级 */ .quill-content .ql-size-small,.quill-content span.ql-size-small,.quill-content p.ql-size-small{font-size:0.75em !important;}.quill-content .ql-size-large,.quill-content span.ql-size-large,.quill-content p.ql-size-large{font-size:1.5em !important;}.quill-content .ql-size-huge,.quill-content span.ql-size-huge,.quill-content p.ql-size-huge{font-size:2.5em !important;}/* 对齐方式样式 - 提高优先级 */ .quill-content .ql-align-center,.quill-content p.ql-align-center{text-align:center !important;}.quill-content .ql-align-right,.quill-content p.ql-align-right{text-align:right !important;}.quill-content .ql-align-justify,.quill-content p.ql-align-justify{text-align:justify !important;}/* 在编辑器中的样式也要确保生效 - 提高优先级 */ .ql-editor .ql-size-small,.ql-editor span.ql-size-small,.ql-editor p.ql-size-small{font-size:0.75em !important;}.ql-editor .ql-size-large,.ql-editor span.ql-size-large,.ql-editor p.ql-size-large{font-size:1.5em !important;}.ql-editor .ql-size-huge,.ql-editor span.ql-size-huge,.ql-editor p.ql-size-huge{font-size:2.5em !important;}.ql-editor .ql-align-center,.ql-editor p.ql-align-center{text-align:center !important;}.ql-editor .ql-align-right,.ql-editor p.ql-align-right{text-align:right !important;}.ql-editor .ql-align-justify,.ql-editor p.ql-align-justify{text-align:justify !important;}/* 响应式样式 */ @media (max-width:1023px){.quill-content{font-size:14px;}/* 移动端响应式样式 - 有序列表 */ /* 一级有序列表移动端样式 */ .quill-content li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5){margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5)::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 二级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-1{margin-left:3.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-1::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 三级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-2{margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-2::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 四级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-3{margin-left:6.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-3::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 五级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-4{margin-left:7.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-4::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 六级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-5{margin-left:9.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-5::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 移动端无序列表样式调整 - 与有序列表保持一致对齐 */ .quill-content li[data-list="bullet"]{margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="bullet"]::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.quill-content li[data-list="bullet"].ql-indent-1{margin-left:3.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="bullet"].ql-indent-1::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.quill-content li[data-list="bullet"].ql-indent-2{margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="bullet"].ql-indent-2::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.quill-content li[data-list="bullet"].ql-indent-3{margin-left:6.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="bullet"].ql-indent-3::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.quill-content h1{font-size:1.4em;}.quill-content h2{font-size:1.3em;}.quill-content h3{font-size:1.2em;}.quill-content h4{font-size:1.1em;}.quill-content h5{font-size:1em;}.quill-content h6{font-size:1em;}.quill-content blockquote{padding:0.75rem;margin:1rem 0;font-size:0.875rem;}.quill-content pre,.quill-content .ql-code-block{padding:0.75rem;}.quill-content .ql-indent-1{padding-left:0em;}.quill-content .ql-indent-2{padding-left:3em;}.quill-content .ql-indent-3{padding-left:4.5em;}.quill-content .ql-indent-4{padding-left:6em;}.quill-content .ql-indent-5{padding-left:7.5em;}.quill-content .ql-indent-6{padding-left:9em;}.quill-content .ql-indent-7{padding-left:10.5em;}.quill-content .ql-indent-8{padding-left:12em;}}/* 滚动容器样式 */ .quill-content .code-scroll-container::-webkit-scrollbar{display:none;/* 隐藏滚动条 */}.quill-content .code-scroll-container{-ms-overflow-style:none;/* IE 和 Edge */ scrollbar-width:none;/* Firefox */}/* 复制按钮样式 - 确保固定在容器右上角 */ .quill-content .code-copy-btn{position:absolute;top:0.5rem;right:0.5rem;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:4px;padding:0.4rem 0.6rem;font-size:0.75rem;color:#e2e8f0;cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;z-index:15;/* 提高层级，确保在滚动内容之上 */ /* 确保复制按钮不会跟随内容滚动 */ pointer-events:auto;/* 确保按钮可点击 */}.quill-content .code-copy-btn:hover{background:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.3);transform:translateY(-1px);}.quill-content .code-copy-btn.copied{background:rgba(34,197,94,0.8);border-color:rgba(34,197,94,1);color:white;}.quill-content .code-copy-btn i{font-size:14px;}/* 语法高亮样式增强 */ .quill-content .hljs-keyword,.quill-content .ql-code-block .hljs-keyword,.quill-content .ql-syntax .hljs-keyword,.quill-content .ql-code-block-container .hljs-keyword{color:#a78bfa;font-weight:600;}.quill-content .hljs-string,.quill-content .ql-code-block .hljs-string,.quill-content .ql-syntax .hljs-string,.quill-content .ql-code-block-container .hljs-string{color:#34d399;}.quill-content .hljs-number,.quill-content .ql-code-block .hljs-number,.quill-content .ql-syntax .hljs-number,.quill-content .ql-code-block-container .hljs-number{color:#fbbf24;}.quill-content .hljs-comment,.quill-content .ql-code-block .hljs-comment,.quill-content .ql-syntax .hljs-comment,.quill-content .ql-code-block-container .hljs-comment{color:#6b7280;font-style:italic;}.quill-content .hljs-function,.quill-content .ql-code-block .hljs-function,.quill-content .ql-syntax .hljs-function,.quill-content .ql-code-block-container .hljs-function{color:#60a5fa;}.quill-content .hljs-variable,.quill-content .ql-code-block .hljs-variable,.quill-content .ql-syntax .hljs-variable,.quill-content .ql-code-block-container .hljs-variable{color:#f87171;}.quill-content .hljs-tag,.quill-content .ql-code-block .hljs-tag,.quill-content .ql-syntax .hljs-tag,.quill-content .ql-code-block-container .hljs-tag{color:#fb7185;}.quill-content .hljs-attr,.quill-content .ql-code-block .hljs-attr,.quill-content .ql-syntax .hljs-attr,.quill-content .ql-code-block-container .hljs-attr{color:#fcd34d;}/* 知识库项目样式支持 - 确保knowledge-content类也能应用相同样式 */ .knowledge-content .ql-code-block-container{margin:0 !important;padding:0.75rem !important;border-radius:6px;overflow:hidden;background:#2d3748;position:relative;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.knowledge-content .ql-code-block-container .ql-code-block{padding:0.2rem;background:transparent;color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre !important;font-style:italic;overflow-x:visible;border:none;margin:0;}.knowledge-content .ql-code-block{padding:0;background:transparent;color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre;overflow-x:visible;border:none;margin:0;position:static;}.knowledge-content .ql-syntax{background:#2d3748;color:#e2e8f0;padding:1rem;padding-right:3rem;border-radius:6px;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;overflow-x:auto;white-space:pre;margin:1rem 0;position:relative;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.knowledge-content pre{background:transparent;margin:0;padding:0;border-radius:0;white-space:pre;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.knowledge-content pre code,.knowledge-content .hljs{display:block;overflow-x:visible;padding:0;background:transparent;color:#e2e8f0;border-radius:0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;margin:0;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.knowledge-content .code-scroll-container::-webkit-scrollbar{display:none;}.knowledge-content .code-scroll-container{-ms-overflow-style:none;scrollbar-width:none;}.knowledge-content .code-copy-btn{position:absolute;top:0.5rem;right:0.5rem;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:4px;padding:0.4rem 0.6rem;font-size:0.75rem;color:#e2e8f0;cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;z-index:15;pointer-events:auto;}.knowledge-content .code-copy-btn:hover{background:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.3);transform:translateY(-1px);}.knowledge-content .code-copy-btn.copied{background:rgba(34,197,94,0.8);border-color:rgba(34,197,94,1);color:white;}.knowledge-content .code-copy-btn i{font-size:14px;}/* 知识库项目的语法高亮样式 */ .knowledge-content .hljs-keyword,.knowledge-content .ql-code-block .hljs-keyword,.knowledge-content .ql-syntax .hljs-keyword,.knowledge-content .ql-code-block-container .hljs-keyword{color:#a78bfa;font-weight:600;}.knowledge-content .hljs-string,.knowledge-content .ql-code-block .hljs-string,.knowledge-content .ql-syntax .hljs-string,.knowledge-content .ql-code-block-container .hljs-string{color:#34d399;}.knowledge-content .hljs-number,.knowledge-content .ql-code-block .hljs-number,.knowledge-content .ql-syntax .hljs-number,.knowledge-content .ql-code-block-container .hljs-number{color:#fbbf24;}.knowledge-content .hljs-comment,.knowledge-content .ql-code-block .hljs-comment,.knowledge-content .ql-syntax .hljs-comment,.knowledge-content .ql-code-block-container .hljs-comment{color:#6b7280;font-style:italic;}.knowledge-content .hljs-function,.knowledge-content .ql-code-block .hljs-function,.knowledge-content .ql-syntax .hljs-function,.knowledge-content .ql-code-block-container .hljs-function{color:#60a5fa;}.knowledge-content .hljs-variable,.knowledge-content .ql-code-block .hljs-variable,.knowledge-content .ql-syntax .hljs-variable,.knowledge-content .ql-code-block-container .hljs-variable{color:#f87171;}.knowledge-content .hljs-tag,.knowledge-content .ql-code-block .hljs-tag,.knowledge-content .ql-syntax .hljs-tag,.knowledge-content .ql-code-block-container .hljs-tag{color:#fb7185;}.knowledge-content .hljs-attr,.knowledge-content .ql-code-block .hljs-attr,.knowledge-content .ql-syntax .hljs-attr,.knowledge-content .ql-code-block-container .hljs-attr{color:#fcd34d;}/** * 移动端分页组件样式 * 参考知识库项目的移动端分页实现 */ /* 桌面端保持原有样式 */ @media (min-width:1024px){#paginationContainer{position:fixed;bottom:30px;/* 备案信息的高度 */ left:306px;/* 左侧边栏宽度 */ right:0;z-index:10;padding:0.75rem 1rem;background-color:rgba(255,255,255,0.95);backdrop-filter:blur(8px);box-shadow:0 -2px 10px rgba(0,0,0,0.05);display:flex;justify-content:center;align-items:center;}.dark #paginationContainer{background-color:rgba(17,24,39,0.9);box-shadow:0 -2px 10px rgba(0,0,0,0.3);}/* 桌面端确保内容区域有足够的底部空间，避免被分页器和备案信息遮挡 */ #todoContainer{padding-bottom:calc(5rem + 30px) !important;}/* 桌面端分页按钮基础样式 */ .pagination-btn{display:inline-flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;padding:0 0.75rem;font-size:0.875rem;border-radius:0.375rem;color:#374151;background-color:white;border:1px solid #e5e7eb;transition:all 0.2s;cursor:pointer;}.dark .pagination-btn{color:#d1d5db;background-color:#1f2937;border-color:#4b5563;}.pagination-btn:hover:not(:disabled){background-color:#f3f4f6;border-color:#d1d5db;}.dark .pagination-btn:hover:not(:disabled){background-color:#374151;border-color:#6b7280;}.pagination-btn.active{color:#3b82f6;background-color:#eff6ff;border-color:#bfdbfe;font-weight:500;}.dark .pagination-btn.active{color:#60a5fa;background-color:rgba(37,99,235,0.2);border-color:#3b82f6;}.pagination-btn:disabled{opacity:0.5;cursor:not-allowed;}/* 分页信息文本 */ .pagination-info{font-size:0.875rem;color:#6b7280;margin-right:1rem;}.dark .pagination-info{color:#9ca3af;}/* 页码按钮容器 */ .pagination-buttons{display:flex;align-items:center;gap:0.5rem;}/* 省略号样式 */ .pagination-dots{display:inline-flex;align-items:center;justify-content:center;padding:0 0.5rem;color:#9ca3af;}.dark .pagination-dots{color:#6b7280;}}/* 移动端专用分页栏样式 - 参考知识库项目 */ @media (max-width:1023px){#paginationContainer{background-color:white !important;border-top:1px solid #e5e7eb;position:fixed !important;bottom:calc(30px + env(safe-area-inset-bottom));/* 备案栏高度 + 安全区域 */ left:0 !important;right:0 !important;z-index:98 !important;backdrop-filter:blur(8px);padding:8px 16px calc(8px + env(safe-area-inset-bottom,0px)) 16px !important;/* 内部底部 padding 添加安全区域 */ display:flex !important;flex-direction:column !important;/* 垂直布局 */ justify-content:center !important;align-items:center !important;box-shadow:0 -2px 10px rgba(0,0,0,0.05);gap:0.25rem !important;/* 按钮和信息之间的间距 */}.dark #paginationContainer{background-color:#1f2937 !important;border-color:#252c36;box-shadow:0 -2px 10px rgba(0,0,0,0.2);}/* 分页信息文本移动端调整 - 在下方 */ #paginationContainer .pagination-info{font-size:0.75rem !important;margin:0 !important;color:#6b7280 !important;}.dark #paginationContainer .pagination-info{color:#9ca3af !important;}/* 分页按钮容器 */ #paginationContainer .pagination-buttons{display:flex !important;align-items:center !important;gap:0.25rem !important;}/* 移动端"上一页"/"下一页"按钮只显示图标，隐藏文字 */ #paginationContainer .pagination-btn-text{display:none !important;}/* 移动端页码按钮样式 */ #paginationContainer .pagination-btn{min-width:1.75rem !important;height:1.75rem !important;/* padding:0 0.5rem !important;*/ font-size:0.8125rem !important;border-radius:0.375rem !important;color:#374151 !important;background-color:white !important;border:1px solid #e5e7eb !important;transition:all 0.2s;cursor:pointer;display:inline-flex !important;align-items:center !important;justify-content:center !important;}.dark #paginationContainer .pagination-btn{color:#d1d5db !important;background-color:#374151 !important;border-color:#4b5563 !important;}/* 移动端禁用按钮悬停效果，避免触摸设备的误触问题 */ #paginationContainer .pagination-btn:hover:not(:disabled){background-color:white !important;border-color:#e5e7eb !important;}.dark #paginationContainer .pagination-btn:hover:not(:disabled){background-color:#374151 !important;border-color:#4b5563 !important;}/* 活跃按钮样式 - 需要高优先级 */ #paginationContainer .pagination-btn.active{color:#3b82f6 !important;background-color:#eff6ff !important;border-color:#bfdbfe !important;font-weight:500 !important;}.dark #paginationContainer .pagination-btn.active{color:#60a5fa !important;background-color:rgba(37,99,235,0.2) !important;border-color:#3b82f6 !important;}/* 活跃按钮悬停时保持活跃样式 */ #paginationContainer .pagination-btn.active:hover{color:#3b82f6 !important;background-color:#eff6ff !important;border-color:#bfdbfe !important;}.dark #paginationContainer .pagination-btn.active:hover{color:#60a5fa !important;background-color:rgba(37,99,235,0.2) !important;border-color:#3b82f6 !important;}/* 禁用按钮样式 */ #paginationContainer .pagination-btn:disabled{opacity:0.5 !important;cursor:not-allowed !important;}/* 省略号样式 */ #paginationContainer .pagination-dots{display:inline-flex !important;align-items:center !important;justify-content:center !important;padding:0 0.25rem !important;color:#9ca3af !important;font-size:0.8125rem !important;}.dark #paginationContainer .pagination-dots{color:#6b7280 !important;}/* 前进后退按钮图标 */ #paginationContainer .pagination-btn i{font-size:1rem;}/* 确保内容区域有足够的底部空间 */ #todoContainer{padding-bottom:calc(4.5rem + 45px) !important;}}/* PWA 模式下调整 */ @media (max-width:1023px) and (display-mode:standalone){#paginationContainer{/* PWA模式下备案信息被隐藏，分页组件底部留出安全区域 */ bottom:env(safe-area-inset-bottom,0px) !important;padding-bottom:20px !important;/* 恢复正常padding，安全区域由bottom处理 */}#todoContainer{padding-bottom:calc(4.5rem + env(safe-area-inset-bottom,0px) + 30px) !important;}}/* PWA 模式下桌面端调整 */ @media (min-width:1024px) and (display-mode:standalone){#paginationContainer{bottom:0 !important;/* PWA模式下备案信息被隐藏 */}/* PWA模式下调整内容区域底部空间（无备案信息） */ #todoContainer{padding-bottom:5rem !important;}}/* iOS Safari 专用优化 - 确保在所有 iOS 设备上都能正确处理安全区域 */ @supports (-webkit-touch-callout:none){@media (max-width:1023px) and (display-mode:standalone){#paginationContainer{/* iOS设备PWA模式下，确保安全区域至少有默认值 */ /* bottom:max(env(safe-area-inset-bottom,0px),8px) !important;*/}}}/* 导入动画样式 */ /* 动画关键帧定义 */ @keyframes slideIn{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:translateY(0);}}@keyframes checkmark{0%{transform:scale(0);}50%{transform:scale(1.2);}100%{transform:scale(1);}}@keyframes checkbox-pop{0%{transform:scale(0.8);}50%{transform:scale(1.1);}100%{transform:scale(1);}}@keyframes strike{0%{width:0;}100%{width:100%;}}@keyframes task-delete{0%{transform:scale(1) rotate(0deg);opacity:1;}20%{transform:scale(0.9) rotate(-2deg);}100%{transform:scale(0.001) rotate(5deg);opacity:0;}}@keyframes task-move-up{0%{transform:translateY(0);}30%{transform:translateY(-10px);}100%{transform:translateY(var(--move-distance));}}@keyframes spin{to{transform:rotate(360deg);}}@keyframes copy-success{0%{transform:scale(1);}50%{transform:scale(1.1);}100%{transform:scale(1);}}/* 动画类 */ .animate-checkbox{transform-origin:center;animation:checkbox-pop 0.3s cubic-bezier(0.175,0.885,0.32,1.275);will-change:transform;}.animate-strike{position:relative;color:#9ca3af;transition:color 0.3s ease;}.animate-strike::after{content:'';position:absolute;left:0;top:50%;width:0;height:1px;background-color:currentColor;animation:strike 0.3s ease-out forwards;transform:translateY(-50%);}.task-status-change{animation:none;}.task-deleting{animation:task-delete 0.4s cubic-bezier(0.34,1.56,0.64,1) forwards;}.task-move-up{animation:task-move-up 0.5s cubic-bezier(0.34,1.56,0.64,1) forwards;}.loading{position:relative;color:transparent !important;}.loading::after{content:'';position:absolute;left:50%;top:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:2px solid var(--color-primary);border-top-color:transparent;border-radius:50%;animation:spin 0.8s linear infinite;}.fade-enter{opacity:0;transform:translateY(-10px);}.fade-enter-active{opacity:1;transform:translateY(0);transition:opacity 300ms ease-out,transform 300ms ease-out;}.copy-success{animation:copy-success 0.3s ease-in-out;}/* 导入工具类 */ /* 自定义工具类 */ .text-primary{color:var(--primary) !important;}.bg-primary{background-color:var(--primary) !important;}.hover\:bg-primary-dark:hover{background-color:var(--primary-dark) !important;}.border-primary{border-color:var(--primary) !important;}/* 响应式工具类 */ @media (max-width:1024px){.sidebar-hidden{transform:translateX(-100%);}}/* 移动端优化 */ @media (max-width:640px){.sm\:flex-col{flex-direction:column;}.sm\:space-y-4 > * + *{margin-top:1rem;}}@media (hover:none){.task-card:hover{transform:none;box-shadow:var(--shadow-sm);}.touch-target{min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;}}/* 导入夜间模式修复样式 */ /* 夜间模式修复样式 - 使用最高优先级确保生效 */ /* 全局背景色修复 */ html.dark,html.dark body,html.dark #app,html.dark main,html.dark #mainContentArea,html.dark #todoContainer{background-color:rgb(17,24,39) !important;/* bg-gray-900 */}/* 待办卡片背景色修复 - 多重选择器确保覆盖 */ html.dark .task-card,html.dark .task-card.bg-white,html.dark .bg-white.task-card,html.dark div.task-card,html.dark div.task-card.bg-white,html.dark div.bg-white.task-card{background-color:rgb(31,41,55) !important;/* bg-gray-800 */ border-color:rgb(55,65,81) !important;/* border-gray-700 */}/* 通用白色背景修复 */ html.dark .bg-white,html.dark div.bg-white,html.dark section.bg-white,html.dark article.bg-white{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}/* 通用灰色背景修复 */ html.dark .bg-gray-50,html.dark div.bg-gray-50,html.dark section.bg-gray-50{background-color:rgb(55,65,81) !important;/* bg-gray-700 */}html.dark .bg-gray-100,html.dark div.bg-gray-100,html.dark section.bg-gray-100{background-color:rgb(75,85,99) !important;/* bg-gray-600 */}/* 边框颜色修复 */ html.dark .border-gray-200,html.dark div.border-gray-200,html.dark .task-card.border-gray-200{border-color:rgb(75,85,99) !important;/* border-gray-600 */}html.dark .border-gray-300,html.dark div.border-gray-300{border-color:rgb(107,114,128) !important;/* border-gray-500 */}/* 侧边栏和导航栏背景色 */ html.dark #sidebar,html.dark nav{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}/* 弹框背景色修复 */ html.dark .utils-dialog .bg-white,html.dark .utils-dialog div.bg-white{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}/* 文本颜色修复 */ html.dark .text-gray-900,html.dark div.text-gray-900{color:rgb(243,244,246) !important;/* text-gray-100 */}html.dark .text-gray-800,html.dark div.text-gray-800{color:rgb(229,231,235) !important;/* text-gray-200 */}html.dark .text-gray-700,html.dark div.text-gray-700{color:rgb(209,213,219) !important;/* text-gray-300 */}/* 特殊元素修复 */ html.dark #category-path-display{/* background-color:#1f2937 !important;*/ color:rgb(243,244,246) !important;/* text-gray-100 */}/* 分页器背景色 */ html.dark #paginationContainer{background-color:rgba(17,24,39,0.95) !important;/* bg-gray-900/95 */}/* 备案信息背景色 */ html.dark .beian-info{background-color:rgb(31,41,55) !important;/* bg-gray-800 */ color:rgb(156,163,175) !important;/* text-gray-400 */ border-color:rgb(55,65,81) !important;/* border-gray-700 */}/* 夜间模式下里程碑和待办标红样式修复 */ /* 针对"每日待办"弹框中的里程碑标红样式 */ html.dark .utils-dialog .bg-red-50,html.dark .utils-dialog span.bg-red-50,html.dark .utils-dialog .text-red-500.bg-red-50{background-color:rgba(239,68,68,0.2) !important;/* 半透明红色 */ color:rgb(248,113,113) !important;/* 亮红色文本 */}/* 针对任务卡片中的里程碑标红样式 */ html.dark .task-card .bg-red-50,html.dark .task-card span.bg-red-50,html.dark .task-card .text-red-500.bg-red-50{background-color:rgba(239,68,68,0.2) !important;/* 半透明红色 */ color:rgb(248,113,113) !important;/* 亮红色文本 */}/* 针对排序弹框中的标红样式 */ html.dark .text-red-500.dark\:text-red-400.bg-red-50.dark\:bg-red-900\/20,html.dark span.bg-red-50.dark\:bg-red-900\/20{background-color:rgba(239,68,68,0.2) !important;/* 半透明红色 */ color:rgb(248,113,113) !important;/* 亮红色文本 */}/* 所属分类下拉框背景色单独处理 */ html.dark #parentCategory,html.dark #taskCategory,html.dark select[name="category"],html.dark select[name="parentCategory"]{background-color:transparent !important;/* 透明背景 */ color:rgb(229,231,235) !important;/* text-gray-200 */}/* 所属分类下拉框的选项背景色 */ html.dark #parentCategory option,html.dark #taskCategory option,html.dark select[name="category"] option,html.dark select[name="parentCategory"] option{background-color:rgb(31,41,55) !important;/* bg-gray-800 */ color:rgb(229,231,235) !important;/* text-gray-200 */}/* 自定义主题色和布局修复 */ :root{--primary-color:#3b82f6;--primary-dark:#2563eb;--primary-light:#60a5fa;}/* 修复布局 */ @media (min-width:1024px){.lg\:ml-\[306px\]{margin-left:306px;}.w-\[306px\]{width:306px;}}/* 确保基础布局允许高度填充 */ html{height:100%;overflow:hidden;}/* 修改这里，禁用body滚动 */ body{height:100%;position:relative;overflow:hidden;}#app{display:flex;height:100%;overflow:hidden;}main{flex:1;display:flex;flex-direction:column;overflow:hidden;}/* 假设 header 是 main 的直接子元素 */ main>header{flex-shrink:0;}/* 内容区域滚动 */ #mainContentArea{flex-grow:1;overflow-y:auto !important;-webkit-overflow-scrolling:touch;}/* 内容区域容器 */ #mainContent{flex-grow:1;display:flex;flex-direction:column;padding:1rem;}/* 移动端特殊处理 */ @media (max-width:767px){/* 确保移动端下内容区域可以滚动 */ #mainContentArea{height:calc(100dvh - 10rem);overflow-y:auto !important;-webkit-overflow-scrolling:touch !important;}}/* Grid 布局 - 只在非空时 */ #todoContainer:not(:empty){display:grid;grid-template-columns:repeat(1,1fr);gap:1rem;/* padding-bottom:2rem;*/}/* 空状态下的容器 - Flex 居中 */ #todoContainer:empty{display:flex;flex-direction:column;justify-content:center;align-items:center;flex-grow:1;text-align:center;color:var(--text-secondary);}/* 媒体查询 - 只在非空时 */ @media (min-width:768px){#todoContainer:not(:empty){grid-template-columns:repeat(2,1fr);}}@media (min-width:1024px){#todoContainer:not(:empty){grid-template-columns:repeat(2,1fr);}}/* 空状态内部元素样式 (可选) */ #todoContainer:empty .empty-state-icon{font-size:3.5rem;margin-bottom:1rem;color:var(--text-tertiary);}#todoContainer:empty .empty-state-text{color:var(--text-secondary);}/* 暗色模式 */ .dark{--bg-color:#1a202c;--text-color:#e2e8f0;--border-color:#4a5568;--card-bg:#2d3748;}/* 夜间模式下全局背景色和文本色修复 - 增强优先级 */ html.dark body,.dark body{background-color:rgb(17,24,39) !important;/* bg-gray-900 */ color:rgb(243,244,246) !important;/* text-gray-100 */}html.dark main,.dark main{background-color:rgb(17,24,39) !important;/* bg-gray-900 */}html.dark #mainContentArea,.dark #mainContentArea{background-color:rgb(17,24,39) !important;/* bg-gray-900 */}html.dark #todoContainer,.dark #todoContainer{background-color:rgb(17,24,39) !important;/* bg-gray-900 */}/* 夜间模式下侧边栏和导航栏背景色 - 增强优先级 */ html.dark #sidebar,.dark #sidebar{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}html.dark nav,.dark nav{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}/* 夜间模式下分页器背景色 - 增强优先级 */ html.dark #paginationContainer,.dark #paginationContainer{background-color:rgba(17,24,39,0.95) !important;/* bg-gray-900/95 */}/* 夜间模式下用户信息区域背景色 - 增强优先级 */ html.dark #userProfileBtn,.dark #userProfileBtn{background-color:transparent;}html.dark #userProfileBtn:hover,.dark #userProfileBtn:hover{background-color:rgb(55,65,81) !important;/* bg-gray-700 */}/* 确保主内容区域在大屏幕下正确显示 */ #app{display:flex;min-height:100dvh;overflow:hidden;}main{flex:1;transition:margin-left 0.3s ease;overflow:hidden;}/* 分页控件样式 - 已移至 components/mobile-pagination.css */ /* 全部待办高亮样式 */ .highlighted-task{box-shadow:0 0 0 2px var(--color-primary) !important;border-color:var(--color-primary) !important;background-color:var(--color-primary-50) !important;transition:all 0.3s ease;}.dark .highlighted-task{box-shadow:0 0 0 2px var(--color-primary-dark) !important;border-color:var(--color-primary-dark) !important;background-color:var(--color-primary-dark-900) !important;}/* 搜索高亮样式 */ .search-highlight{background-color:rgba(255,193,7,0.3);padding:0.1em 0;border-radius:2px;font-weight:500;}.dark .search-highlight{background-color:rgba(255,193,7,0.2);color:#fff;}/* 备案信息样式 */ .beian-info{position:fixed;bottom:0;left:0;width:100%;height:30px;background-color:white;color:#4b5563;border-top:1px solid #e5e7eb;text-align:center;font-size:0.75rem;display:flex;align-items:center;justify-content:center;z-index:5;}/* 移动端添加安全区域支持 */ @media (max-width:1023px){.beian-info{height:calc(30px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);}}/* 大屏幕上备案信息样式 - 与分页器保持一致 */ @media (min-width:1024px){.beian-info{left:306px;/* 左侧边栏宽度 */ width:calc(100% - 306px);/* 调整宽度以匹配分页器 */}}.dark .beian-info{background-color:#1f2937;color:#9ca3af;border-color:#374151;}/* PWA 模式下隐藏备案信息 */ @media all and (display-mode:standalone){.beian-info{display:none !important;}/* PWA 模式下分页器和内容区域调整已移至 components/mobile-pagination.css */}/* ========== styles/modal.css (0.08KB) ========== */ /* 重定向到组件目录下的modal.css */ /* 模态框动画 */ #taskModal .bg-white{transform:scale(0.95);opacity:0;transition:transform 0.2s ease-out,opacity 0.2s ease-out;}#taskModal.flex .bg-white{transform:scale(1);opacity:1;}/* ========== styles/components/dialog.css (7.79KB) ========== */ /* 对话框组件样式 */ .utils-dialog{position:fixed;inset:0;z-index:50;/* 修复：允许弹框内容滚动，移除 overflow:hidden */ overflow:auto;display:flex;align-items:center;justify-content:center;/* 确保最高层级对话框接收所有事件 */ pointer-events:auto;/* 调整基础z-index，保证交互顺序 */ --base-z-index:50;}/* 夜间模式下对话框背景色确保 */ .dark .utils-dialog .bg-white{background-color:rgb(31,41,55) !important;/* bg-gray-800 */}.dark .utils-dialog .bg-gray-50{background-color:rgb(55,65,81) !important;/* bg-gray-700 */}.dark .utils-dialog .bg-gray-100{background-color:rgb(75,85,99) !important;/* bg-gray-600 */}/* 夜间模式下对话框边框色 */ .dark .utils-dialog .border-gray-200{border-color:rgb(75,85,99) !important;/* border-gray-600 */}.dark .utils-dialog .border-gray-300{border-color:rgb(107,114,128) !important;/* border-gray-500 */}/* 关闭中的对话框，添加渐变消失效果 */ .utils-dialog.closing{animation:fadeOut 0.2s ease forwards;}/* 叠加多个对话框时，较低层级的对话框不接收事件 */ .utils-dialog:not(:last-of-type){pointer-events:none;}/* 添加蒙层，确保事件不会穿透 */ .utils-dialog::before{content:'';position:absolute;inset:0;z-index:-1;/* 防止点击穿透到下层元素 */ pointer-events:auto;}/* 确保对话框内容不超出屏幕 */ .utils-dialog > div:last-child{max-height:var(--dialog-max-height,90dvh);display:flex;flex-direction:column;}/* 确保对话框内容区域可以滚动 */ .utils-dialog .px-6.py-5.overflow-y-auto{overflow-y:auto;flex-grow:1;flex-shrink:1;/* 确保滚动容器高度计算正确 */ /* max-height:calc(var(--dialog-max-height,90dvh) - 120px);预留头部和底部空间 */}/* 待办详情对话框特殊处理，修复内容区域高度 */ .utils-dialog[data-type="task-details"] .px-6.py-5.overflow-y-auto.custom-scrollbar,.utils-dialog .px-6.py-5.overflow-y-auto.custom-scrollbar{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,0.2) transparent;}/* 添加响应式处理，在小屏幕上优化显示 */ @media (max-height:640px){.utils-dialog > div:last-child{max-height:95dvh;}}/* 对话框内容容器 */ .utils-dialog .bg-white{@apply shadow-xl rounded-xl overflow-hidden;animation:scaleIn 0.3s cubic-bezier(0.16,1,0.3,1);transform-origin:center center;will-change:transform,opacity;}/* 手机端优化：减小待办详情的两侧边距到三分之一 */ @media (max-width:640px){/* 增加选择器优先级，覆盖原有样式 */ .utils-dialog[data-type="task-details"] .px-6.py-5.overflow-y-auto.custom-scrollbar,.utils-dialog[data-type="task-details"] .px-6.py-5.overflow-y-auto,/* .utils-dialog[data-type="task-details"] .px-6{padding-left:0.25rem !important;padding-right:0.25rem !important;}*/ /* 内容区域的子元素也减小内边距 */ .utils-dialog[data-type="task-details"] .px-5{padding-left:0.375rem !important;/* px-1.5 */ padding-right:0.375rem !important;/* px-1.5 */}/* 增加内部内容宽度，减少外部边距 */ .utils-dialog[data-type="task-details"] .bg-white{@apply w-[98%] mx-1;}}/* 手机端待办详情标题背景样式 */ @media (max-width:1023px){.utils-dialog[data-type="task-details"] .task-details-title-mobile{/* 确保背景色在手机端显示 */ background-color:rgb(249,250,251) !important;/* bg-gray-50 */ padding:1.25rem !important;/* p-5，与待办详情内容区域保持一致 */ border-radius:0.5rem !important;/* rounded-lg */ margin-left:0 !important;/* 移除负边距，与内容区域对齐 */ margin-right:0 !important;/* 移除负边距，与内容区域对齐 */ margin-bottom:0.75rem !important;/* mb-3，添加底部边距 */ display:block !important;/* 确保为块级元素 */ width:100% !important;/* 固定宽度，与待办详情背景一致 */ box-sizing:border-box !important;/* 确保padding包含在宽度内 */}/* 夜间模式下的背景色 */ .dark .utils-dialog[data-type="task-details"] .task-details-title-mobile{background-color:rgb(55,65,81) !important;/* bg-gray-700 */}}/* 对话框头部 */ .utils-dialog .px-6.py-4.border-b{@apply flex items-center justify-between;}/* 对话框底部按钮区域 */ .utils-dialog .px-6.py-4.border-t{@apply flex justify-end space-x-3;}/* 对话框输入元素暗色模式适配 */ .utils-dialog input:not([type="checkbox"],[type="radio"]),.utils-dialog select,.utils-dialog textarea{@apply bg-white dark:bg-gray-700 border border-gray-200 dark:border-gray-600 text-gray-800 dark:text-gray-200 rounded-lg;}/* 对话框按钮样式增强 */ .utils-dialog button[data-action]{@apply transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary;}/* 处理长文本在对话框中的显示 */ .utils-dialog .text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.utils-dialog .break-all{word-break:break-all;overflow-wrap:break-word;}/* 用户信息对话框中的长文本处理 */ .utils-dialog h3.truncate,.utils-dialog p.truncate{max-width:100%;display:block;}/* 对话框中的弹性布局优化 */ .utils-dialog .flex.items-center.justify-between{gap:8px;}/* 弹框中的文本字段最大宽度限制 */ .utils-dialog input[type="text"],.utils-dialog input[type="email"]{max-width:100%;}/* 里程碑日期显示样式 - 与标题保持一致 */ .milestone-date{@apply text-xs mt-1;}/* 未完成的里程碑日期 */ li:not(.line-through) .milestone-date{@apply text-gray-500 dark:text-gray-400;}/* 已完成的里程碑日期样式 */ .line-through + .milestone-date{@apply line-through text-gray-500;}/* 待办标题两边对齐样式 */ .task-card h3,.utils-dialog[data-type="task-details"] h3{text-align:justify !important;text-align-last:left !important;/* 最后一行左对齐 */ word-break:break-all;/* 允许单词内断行 */ hyphens:auto;/* 自动连字符 */}/* 确保在手机端也应用两边对齐 */ @media (max-width:1023px){.task-card h3,.utils-dialog[data-type="task-details"] .task-details-title-mobile{text-align:justify !important;text-align-last:left !important;word-break:break-all;hyphens:auto;}}/* 动画效果 */ @keyframes fadeIn{from{opacity:0;}to{opacity:1;}}@keyframes fadeOut{from{opacity:1;}to{opacity:0;}}@keyframes scaleIn{from{transform:scale(0.95);opacity:0;}to{transform:scale(1);opacity:1;}}@keyframes scaleOut{from{transform:scale(1);opacity:1;}to{transform:scale(0.95);opacity:0;}}/* 当存在多个对话框时，调整遮罩层透明度，使下层对话框保持可见性但降低亮度 */ .utils-dialog:not(:last-of-type) .absolute.inset-0.bg-black{background-color:rgba(0,0,0,0.5);/* 降低遮罩层不透明度 */ backdrop-filter:blur(3px);/* 轻微模糊 */}/* 最顶层对话框遮罩层使用正常不透明度 */ .utils-dialog:last-of-type .absolute.inset-0.bg-black{background-color:rgba(0,0,0,0.5);backdrop-filter:blur(3px);}/* 确保对话框内容容器接收事件 */ .utils-dialog > div[class*="bg-white"],.utils-dialog > div[class*="dark:bg-gray-800"]{pointer-events:auto !important;}/* ========== styles/components/task.css (23.87KB) ========== */ /* 待办卡片样式 */ .task-card{transform-origin:center center;backface-visibility:hidden;will-change:transform,opacity;perspective:1000px;transition:box-shadow 0.2s ease,transform 0.2s ease,opacity 0.2s ease;border-width:1px;box-shadow:0 1px 3px rgba(0,0,0,0.1);padding:1.25rem;/* 统一内边距 */ min-height:14rem;/* 设置最小高度 */ display:flex;flex-direction:column;width:100% !important;max-width:100% !important;box-sizing:border-box !important;margin:0 !important;/* 确保亮色模式下的背景色 */ background-color:#ffffff;border-color:#e5e7eb;}/* 夜间模式下的待办卡片背景色 - 增强优先级 */ html.dark .task-card,.dark .task-card,html.dark .task-card.bg-white,.dark .task-card.bg-white,html.dark .bg-white.task-card,.dark .bg-white.task-card{background-color:rgb(31,41,55) !important;/* bg-gray-800 */ border-color:rgb(55,65,81) !important;/* border-gray-700 */ box-shadow:0 1px 3px rgba(0,0,0,0.3);}html.dark .task-card:hover,.dark .task-card:hover{box-shadow:0 4px 8px rgba(0,0,0,0.3);}/* 强制待办分组上下布局 */ #todoContainer{display:flex !important;flex-direction:column !important;}/* 强制待办分组容器为单列 */ .task-section{width:100% !important;/* margin-top:1rem !important;*/ /* margin-bottom:1rem !important;*/}/* 分组标题样式自适应 */ .task-section-header{width:auto !important;display:inline-flex !important;min-width:140px !important;max-width:100% !important;/* margin-left:0.5rem !important;*/ transition:none !important;}.task-section-header svg{transition:none !important;transform-origin:center;}.task-section-header .transform{transition:none !important;}/* 设置待办卡片内部两列布局并增加间距 */ #inProgressTasksContainer,#completedTasksContainer{display:grid !important;grid-template-columns:repeat(1,1fr) !important;gap:1rem !important;margin-top:0.5rem !important;transition:none !important;width:100% !important;box-sizing:border-box !important;}/* 确保所有待办卡片宽度一致 */ .task-card{width:100% !important;max-width:100% !important;box-sizing:border-box !important;margin:0 !important;}/* 修复在移动端浏览器下，进行中待办卡片和已完成待办卡片的宽度不一致问题 */ @media (max-width:767px){#inProgressTasksContainer,#completedTasksContainer{width:100% !important;display:grid !important;grid-template-columns:1fr !important;}#inProgressTasksContainer > .task-card,#completedTasksContainer > .task-card{width:100% !important;max-width:100% !important;min-width:0 !important;box-sizing:border-box !important;}/* 修复底部标签和日期布局 */ .task-card .mt-auto.pt-2.flex{width:100% !important;box-sizing:border-box !important;}}/* 电脑端两列布局 */ @media (min-width:768px){#inProgressTasksContainer,#completedTasksContainer{grid-template-columns:repeat(2,1fr) !important;}}/* 自动高度样式 - 当所有分组折叠时使用 */ #todoContainer.auto-height{height:auto !important;min-height:auto !important;overflow:hidden !important;}/* 当内容区域需要自动高度时 */ .h-\[calc\(100dvh-4rem\)\].overflow-hidden{height:auto !important;min-height:0 !important;overflow:hidden !important;}.task-card:hover{box-shadow:0 4px 8px rgba(0,0,0,0.1);transform:translateY(-2px);}.task-card[data-selected="true"]{/* border-width:2px;*/ border-color:var(--primary-color);background-color:rgba(243,244,246,0.2);}.task-card.completed{opacity:0.75;transition:opacity 0.3s ease;}.task-card.completed h3,.task-card.completed p{text-decoration:line-through;color:#9ca3af;}.task-deleting{box-shadow:0 10px 25px rgba(0,0,0,0.1);}.task-card .overdue-task{color:#ef4444;}/* 待办卡片选择样式 */ .task-card.selectable{position:relative;padding-left:2.5rem;}.task-card .task-selector{position:absolute;top:1rem;left:1rem;z-index:1;}.task-card .task-selector:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");background-size:100% 100%;background-position:center;background-repeat:no-repeat;}/* 待办卡片容器 */ .task-card-container{height:100%;transform-style:preserve-3d;backface-visibility:hidden;will-change:transform;}/* 过期待办样式 */ .overdue-task{background-color:rgba(239,68,68,0.1);padding:2px 8px;border-radius:4px;display:inline-block;}/* 折叠后的分组间距优化 */ .task-section-header.collapsed{margin-bottom:0.5rem !important;}/* 当分组折叠时，减少分组之间的间距 */ .task-section.collapsed{margin-bottom:0.5rem !important;}/* 确保没有额外边距 */ .task-section:has(.task-section-header.collapsed){margin-bottom:0.5rem !important;}/* 如果浏览器不支持:has选择器，使用类选择器 */ .task-section.with-collapsed-header{margin-bottom:0.5rem !important;}/* 当上一个分组折叠时，减小下一个分组的上边距 */ .task-section.collapsed + .task-section{margin-top:0rem !important;}/* 针对特定情况：进行中分组折叠后，已完成分组的上边距 */ #inProgressTasksContainer.hidden ~ .task-section,.task-section:has(#inProgressTasksContainer.hidden) + .task-section{margin-top:0rem !important;}/* 使用类选择器实现相同效果，增加兼容性 */ .with-collapsed-header + .task-section{margin-top:0rem !important;}/* 确保所有待办相关的容器都没有动画 */ .task-section *{transition-property:none !important;animation:none !important;}/* 确保分组折叠时内容完全隐藏 */ .hidden{display:none !important;visibility:hidden !important;height:0 !important;min-height:0 !important;max-height:0 !important;overflow:hidden !important;opacity:0 !important;pointer-events:none !important;}/* 强制待办容器在折叠状态下隐藏其所有子元素 */ #inProgressTasksContainer.hidden *,#completedTasksContainer.hidden *{display:none !important;visibility:hidden !important;height:0 !important;opacity:0 !important;}/* 折叠状态的容器不应占用空间 */ #inProgressTasksContainer.hidden,#completedTasksContainer.hidden{height:0 !important;min-height:0 !important;max-height:0 !important;margin:0 !important;padding:0 !important;border:none !important;overflow:hidden !important;}/* 确保里程碑样式正确显示 */ .task-card .subtask-title.line-through{color:#9ca3af !important;text-decoration:line-through !important;}/* 里程碑日期统一样式 */ .task-card li span.ml-2.text-xs{display:inline-flex;align-items:center;margin-left:0.5rem;}/* 过期或当天截止的待办日期样式 */ .task-card span.bg-red-50{/* background-color:rgba(254,226,226,0.5) !important;*/ color:#f87171 !important;padding:0.125rem 0.375rem !important;border-radius:0.25rem !important;font-weight:500 !important;}/* 已完成里程碑样式 */ .task-card .form-checkbox:checked + .subtask-title{color:#9ca3af !important;text-decoration:line-through !important;}/* 已完成里程碑的日期样式 */ .task-card .form-checkbox:checked ~ span.ml-2{color:#9ca3af !important;}/* 确保日期文本不换行 */ .task-card span.ml-2.text-xs,.task-card .flex-shrink-0 span{white-space:nowrap;}/* 确保待办卡片标题与按钮组水平对齐 */ .task-card .flex.justify-between.items-center{min-height:32px;}/* 确保按钮垂直居中 */ .task-card .flex.items-center.space-x-1{height:100%;display:flex;align-items:center;}/* 调整按钮大小和间距保持一致 */ .task-card button.p-1{display:flex;align-items:center;justify-content:center;height:26px;width:26px;}/* 确保图标垂直居中 */ .task-card button.p-1 i{display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;}/* 搜索关键词高亮样式 */ .search-highlight{background-color:rgba(255,234,0,0.4);color:inherit;font-weight:bold;padding:0 2px;border-radius:2px;display:inline;}/* 确保暗色模式下高亮依然明显 */ .dark .search-highlight{background-color:rgba(255,234,0,0.3);color:#fff;box-shadow:0 0 3px rgba(255,255,0,0.5);}/* 里程碑中的关键词高亮 */ .task-card .subtask-title .search-highlight{padding:0 1px;margin:0 -1px;}/* 已完成待办中的高亮 */ .task-card.completed .search-highlight,.task-card .line-through .search-highlight{background-color:rgba(255,234,0,0.2);text-decoration:line-through;font-weight:normal;}/* 限制卡片中的富文本内容 */ .task-card .quill-content{max-height:80px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;text-overflow:ellipsis;}.task-card .quill-content *{margin:0;padding:0;overflow:hidden;text-overflow:ellipsis;white-space:normal;}.task-card .quill-content p{margin-bottom:0;display:inline;}/* 夜间模式下富文本内容样式 */ .dark .task-card .quill-content,.dark .task-card .quill-content *{color:rgba(255,255,255,0.9);}.dark .task-card.completed .quill-content,.dark .task-card.completed .quill-content *{color:rgba(156,163,175,0.9);}/* 待办卡片类 */ /* Quill 编辑器特定样式 */ .quill-editor-container .ql-toolbar{background-color:#ffffff;/* 与输入框一致的白色背景 */ border:1px solid #e5e7eb !important;/* 使用!important确保覆盖Quill原生样式 */ border-bottom:1px solid #e5e7eb !important;/* 保持底部边框 */ border-top-left-radius:0.5rem;/* Updated to match rounded-lg */ border-top-right-radius:0.5rem;/* Updated to match rounded-lg */ /* 添加阴影以匹配输入框 */ box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);/* shadow-sm */ transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;/* 添加过渡动画 */}.dark .quill-editor-container .ql-toolbar{background-color:#1f2937;/* 与暗色模式输入框一致 dark:bg-gray-700 */ border:1px solid #4b5563 !important;/* 使用!important确保覆盖Quill原生样式 */ border-bottom:1px solid #4b5563 !important;/* 保持底部边框 */ border-top-left-radius:0.5rem;/* Updated to match rounded-lg */ border-top-right-radius:0.5rem;/* Updated to match rounded-lg */ /* 添加阴影以匹配输入框 */ box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);/* shadow-sm */ transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;/* 添加过渡动画 */}/* 使用更具体的选择器来确保工具栏边框颜色覆盖 */ .quill-editor-container .ql-toolbar.ql-snow{border-color:#e5e7eb !important;/* 确保覆盖Quill的默认#ccc边框 */}.dark .quill-editor-container .ql-toolbar.ql-snow{border-color:#4b5563 !important;/* 确保覆盖Quill的默认#ccc边框 */}.quill-editor-container .ql-container{border:1px solid #e5e7eb !important;/* 使用!important确保覆盖Quill原生样式 */ border-top:none !important;/* Toolbar provides top border */ border-bottom-left-radius:0.5rem;/* Updated to match rounded-lg */ border-bottom-right-radius:0.5rem;/* Updated to match rounded-lg */ overflow:hidden;background-color:#ffffff;/* 与输入框一致的白色背景 */ /* Add shadow to match input fields */ box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);/* shadow-sm */ transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;/* 添加过渡动画 */}.dark .quill-editor-container .ql-container{border:1px solid #4b5563 !important;/* 使用!important确保覆盖Quill原生样式 */ border-top:none !important;/* Ensure top border remains none */ background-color:#1f2937;/* 与暗色模式输入框一致 dark:bg-gray-700 */ overflow:hidden;/* Add shadow to match input fields in dark mode */ box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);/* shadow-sm */ transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;/* 添加过渡动画 */}/* 使用更具体的选择器来确保边框颜色覆盖 */ .quill-editor-container .ql-container.ql-snow{border-color:#e5e7eb !important;/* 确保覆盖Quill的默认#ccc边框 */}.dark .quill-editor-container .ql-container.ql-snow{border-color:#4b5563 !important;/* 确保覆盖Quill的默认#ccc边框 */}/* 添加焦点状态样式，与输入框保持一致 */ .quill-editor-container:focus-within .ql-toolbar,.quill-editor-container .ql-editor:focus-within + .ql-toolbar{border-color:var(--primary-color,#3b82f6) !important;/* focus:border-primary */ box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;/* focus:ring-1 focus:ring-primary */}.quill-editor-container:focus-within .ql-container,.quill-editor-container .ql-editor:focus + .ql-container{border-color:var(--primary-color,#3b82f6) !important;/* focus:border-primary */ box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;/* focus:ring-1 focus:ring-primary */}/* 暗色模式下的焦点状态 */ .dark .quill-editor-container:focus-within .ql-toolbar,.dark .quill-editor-container .ql-editor:focus-within + .ql-toolbar{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;}.dark .quill-editor-container:focus-within .ql-container,.dark .quill-editor-container .ql-editor:focus + .ql-container{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;}.quill-editor-container .ql-editor{min-height:150px;/* max-height:400px;*/ overflow:hidden;background-color:transparent;/* 编辑器背景透明，让容器背景显示 */ color:#111827;/* 与输入框文字颜色一致 dark:text-gray-200 in light mode */ padding:12px;border-bottom-left-radius:0.5rem;/* Updated to match rounded-lg */ border-bottom-right-radius:0.5rem;/* Updated to match rounded-lg */ font-size:16px;/* 与标准输入框字体大小一致 */}.dark .quill-editor-container .ql-editor{background-color:transparent;/* 编辑器背景透明，让容器背景显示 */ color:#e5e7eb;/* 与暗色模式输入框文字颜色一致 dark:text-gray-200 */ border-bottom-left-radius:0.5rem;/* Updated to match rounded-lg */ border-bottom-right-radius:0.5rem;/* Updated to match rounded-lg */ overflow:hidden;padding:12px;/* Ensure padding is explicit here if not inherited */ font-size:16px;/* 与标准输入框字体大小一致 */}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin-bottom:0.5em;/* 为Quill内容块调整间距 */}/* Quill 编辑器提示文案样式 - 更新以匹配输入框placeholder样式 */ .ql-editor.ql-blank::before{color:#6b7280 !important;/* Updated to match input placeholder color (text-gray-400) */ font-style:normal !important;left:12px;/* 与编辑器padding一致 */ right:12px;opacity:1 !important;/* Ensure full opacity to match input placeholders */ font-size:16px !important;/* 与标准输入框字体大小一致 */ font-weight:normal !important;/* 确保字重与输入框一致 */}.dark .ql-editor.ql-blank::before{color:#6b7280 !important;/* Updated to match dark mode input placeholder color (dark:text-gray-500) */ opacity:1 !important;/* Ensure full opacity to match input placeholders */ font-size:16px !important;/* 与标准输入框字体大小一致 */ font-weight:normal !important;/* 确保字重与输入框一致 */}/* 使用更具体的选择器来确保placeholder颜色覆盖Quill原生样式 */ .quill-editor-container .ql-editor.ql-blank::before{color:#6b7280 !important;/* 确保覆盖Quill的默认placeholder颜色 */ font-style:normal !important;font-size:16px !important;font-weight:normal !important;opacity:1 !important;}.dark .quill-editor-container .ql-editor.ql-blank::before{color:#6b7280 !important;/* 确保覆盖Quill的默认placeholder颜色 */ font-style:normal !important;font-size:16px !important;font-weight:normal !important;opacity:1 !important;}/* 进一步提高优先级，针对Quill Snow主题 */ .quill-editor-container .ql-snow .ql-editor.ql-blank::before{color:#6b7280 !important;font-style:normal !important;font-size:16px !important;font-weight:normal !important;opacity:1 !important;}.dark .quill-editor-container .ql-snow .ql-editor.ql-blank::before{color:#6b7280 !important;font-style:normal !important;font-size:16px !important;font-weight:normal !important;opacity:1 !important;}/* 待办卡片中的描述截断 */ .task-description-card{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;line-height:1.5;/* 调整行高以适应两行显示 */ max-height:calc(1.5em * 2);/* line-height * 2 */ /* white-space:normal;Ensure newlines are not collapsed by default CSS */}/* 确保日期输入框的焦点状态样式生效 */ .main-task-date-picker:focus,#taskDueDate:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}.subtask-due-date:focus,.milestone-date-picker:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}/* 暗色模式下的日期输入框焦点状态 */ .dark .main-task-date-picker:focus,.dark #taskDueDate:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}.dark .subtask-due-date:focus,.dark .milestone-date-picker:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}/* 通用日期输入框焦点样式 - 确保所有日期输入框都有一致的焦点效果 */ input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* 增强日期选择器的具体焦点样式 - 确保包装器内的input正确显示焦点 */ /* Base styles for enhanced date pickers focus */ .enhanced-date-wrapper input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark .enhanced-date-wrapper input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* Specific types for enhanced date pickers focus */ .enhanced-date-wrapper[data-date-picker-type="main-task"] input[type="date"]:focus,.enhanced-date-wrapper[data-date-picker-type="milestone"] input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark .enhanced-date-wrapper[data-date-picker-type="main-task"] input[type="date"]:focus,.dark .enhanced-date-wrapper[data-date-picker-type="milestone"] input[type="date"]:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* Dialog specific focus styles for enhanced date pickers - HIGH PRIORITY */ .utils-dialog .enhanced-date-wrapper:focus-within input[type="date"],.task-form-content .enhanced-date-wrapper:focus-within input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;/* Ring effect */ outline:2px solid transparent !important;/* modern outline reset */ outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark .utils-dialog .enhanced-date-wrapper:focus-within input[type="date"],.dark .task-form-content .enhanced-date-wrapper:focus-within input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;/* Ring effect */ outline:2px solid transparent !important;/* modern outline reset */ outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* Ensure specificity for main task and milestone types within dialogs */ .utils-dialog .enhanced-date-wrapper[data-date-picker-type="main-task"]:focus-within input[type="date"],.utils-dialog .enhanced-date-wrapper[data-date-picker-type="milestone"]:focus-within input[type="date"],.task-form-content .enhanced-date-wrapper[data-date-picker-type="main-task"]:focus-within input[type="date"],.task-form-content .enhanced-date-wrapper[data-date-picker-type="milestone"]:focus-within input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:2px solid transparent !important;outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.dark .utils-dialog .enhanced-date-wrapper[data-date-picker-type="main-task"]:focus-within input[type="date"],.dark .utils-dialog .enhanced-date-wrapper[data-date-picker-type="milestone"]:focus-within input[type="date"],.dark .task-form-content .enhanced-date-wrapper[data-date-picker-type="main-task"]:focus-within input[type="date"],.dark .task-form-content .enhanced-date-wrapper[data-date-picker-type="milestone"]:focus-within input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:2px solid transparent !important;outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}/* 待办卡片类 */ /* ========== styles/components/subtask.css (1.69KB) ========== */ /* 里程碑样式 */ .subtask-item{transition:all 0.3s ease;position:relative;}.subtask-item.completed{opacity:0.75;}.subtask-title{font-weight:600;color:#374151;}.subtask-date{font-weight:600;color:#6B7280;margin-left:8px;}/* 里程碑删除按钮 */ .subtask-delete,.subtask-add-below,[data-action="remove-subtask"]{padding:0.5rem;border-radius:0.375rem;transition:all 0.2s ease;}.subtask-delete:hover,[data-action="remove-subtask"]:hover{background-color:#fee2e2;color:#dc2626;}/* 为添加按钮添加悬停效果 */ .subtask-add-below:hover{background-color:#e0f2fe;color:#2563eb;}/* 里程碑拖拽把手样式 */ .subtask-drag-handle{cursor:move;cursor:grab;color:#9ca3af;padding:0.25rem;border-radius:0.25rem;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;height:24px;width:24px;flex-shrink:0;z-index:5;}.subtask-drag-handle:hover{color:#6b7280;background-color:#f3f4f6;}.subtask-drag-handle:active{cursor:grabbing;}/* 拖拽过程中的样式 */ .subtask-ghost{opacity:0.5 !important;background-color:#e5e7eb !important;border:1px dashed #9ca3af !important;}.subtask-chosen{background-color:#f3f4f6 !important;box-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06) !important;}.subtask-drag{box-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05) !important;background-color:#f9fafb !important;z-index:10 !important;cursor:grabbing !important;}/* ========== styles/components/quill-content.css (44.53KB) ========== */ /* Quill富文本内容样式（优化版本，与知识库项目完全一致） */ .quill-content{font-size:16px;line-height:1.8;color:var(--text-primary,#111827);word-break:break-all;overflow-wrap:break-word;/* 不在根级初始化计数器，让第一个标题来初始化 */}/* 段落样式 */ .quill-content p{margin:0.25em 0;}.quill-content p:last-child{margin-bottom:0;}/* 标题样式 */ .quill-content h1,.quill-content h2,.quill-content h3,.quill-content h4,.quill-content h5,.quill-content h6{margin-top:0.5rem;margin-bottom:0.5rem;font-weight:600;color:var(--text-primary,#111827);}/* 标题元素创建新的计数器作用域 */ .quill-content h1,.quill-content h2,.quill-content h3,.quill-content h4,.quill-content h5,.quill-content h6{counter-reset:level1;}/* 标题后面的第一个有序列表只重置一级计数器 */ .quill-content h1 + ol,.quill-content h2 + ol,.quill-content h3 + ol,.quill-content h4 + ol,.quill-content h5 + ol,.quill-content h6 + ol,.quill-content h1 + * + ol,.quill-content h2 + * + ol,.quill-content h3 + * + ol,.quill-content h4 + * + ol,.quill-content h5 + * + ol,.quill-content h6 + * + ol{counter-reset:level1 !important;}/* 关键修复：强制覆盖浏览器默认的ol计数器重置行为 */ .quill-content ol{counter-reset:none !important;}/* 只有第一个ol才初始化计数器（无h标签场景） */ .quill-content ol:first-of-type{counter-reset:level1 !important;}.quill-content h1:first-child,.quill-content h2:first-child,.quill-content h3:first-child,.quill-content h4:first-child,.quill-content h5:first-child,.quill-content h6:first-child{margin-top:0;}.quill-content h1{font-size:1.5em;}.quill-content h2{font-size:1.3em;}.quill-content h3{font-size:1.2em;}.quill-content h4{font-size:1.1em;}.quill-content h5{font-size:1em;}.quill-content h6{font-size:1em;}/* 链接样式 */ .quill-content a{color:#3b82f6;text-decoration:underline;}.quill-content a:hover{color:#2563eb;}/* 重置所有列表样式 */ .quill-content ol,.quill-content ul{list-style:none !important;margin:0 !important;padding:0 !important;}/* 重置所有 Quill 默认的 .ql-ui:before 样式，防止与自定义样式冲突 */ .quill-content li[data-list="ordered"] > .ql-ui:before,.ql-editor li[data-list="ordered"] > .ql-ui:before{content:none !important;}/* 新的一级有序列表实现 - 只有h标签后才重置计数器 */ /* 所有一级有序列表项目都增加计数器 */ .quill-content li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5){counter-increment:level1;/* 每个一级项都重置所有下级计数器 */ counter-reset:level2 level3 level4 level5 level6;display:list-item !important;list-style:none !important;margin-left:2em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5)::before{content:counter(level1) ". ";font-weight:inherit;margin-left:-1.5em;display:inline-block;width:1.5em;}/* 二级有序列表 - 重置所有下级计数器 */ .quill-content li[data-list="ordered"].ql-indent-1{counter-increment:level2;counter-reset:level3 level4 level5 level6;/* 每个二级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:4em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-1::before{content:counter(level2,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 三级有序列表 - 重置所有下级计数器 */ .quill-content li[data-list="ordered"].ql-indent-2{counter-increment:level3;counter-reset:level4 level5 level6;/* 每个三级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:6em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-2::before{content:counter(level3,lower-roman) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 关键修复：当三级列表项紧跟在二级列表项后面时，重置level3计数器 */ .quill-content li[data-list="ordered"].ql-indent-1 + li[data-list="ordered"].ql-indent-2{counter-reset:level3 level4 level5 level6;}/* 四级有序列表 - 重置所有下级计数器 */ .quill-content li[data-list="ordered"].ql-indent-3{counter-increment:level4;counter-reset:level5 level6;/* 每个四级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:8em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-3::before{content:counter(level4,upper-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 五级有序列表 - 重置六级计数器 */ .quill-content li[data-list="ordered"].ql-indent-4{counter-increment:level5;counter-reset:level6;/* 每个五级项都重置六级计数器 */ display:list-item !important;list-style:none !important;margin-left:10em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-4::before{content:counter(level5) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 六级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-5{counter-increment:level6;display:list-item !important;list-style:none !important;margin-left:12em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="ordered"].ql-indent-5::before{content:counter(level6,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 无序列表样式 - 使用伪元素与有序列表保持一致对齐 */ .quill-content li[data-list="bullet"]{display:list-item !important;list-style:none !important;margin-left:2em !important;margin-bottom:0.5rem;line-height:1.6;}.quill-content li[data-list="bullet"]::before{content:"•";font-weight:inherit;margin-left:-1.5em;display:inline-block;width:1.5em;}.quill-content li[data-list="bullet"].ql-indent-1{margin-left:4em !important;}.quill-content li[data-list="bullet"].ql-indent-1::before{content:"◦";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}.quill-content li[data-list="bullet"].ql-indent-2{margin-left:6em !important;}.quill-content li[data-list="bullet"].ql-indent-2::before{content:"▪";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}.quill-content li[data-list="bullet"].ql-indent-3{margin-left:8em !important;}.quill-content li[data-list="bullet"].ql-indent-3::before{content:"•";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 通用列表项样式 */ .quill-content li{margin-bottom:0.5rem;line-height:1.6;}.quill-content li:last-child{margin-bottom:0;}.quill-content li p{margin-bottom:0.5rem;}.quill-content li p:last-child{margin-bottom:0;}/* 行内代码样式 */ .quill-content code{background-color:rgba(0,0,0,0.05);border-radius:3px;padding:0.15em 0.25em;font-family:monospace;}/* ========== 富文本编辑器专用样式 ========== */ /* 编辑器根级计数器初始化 - 不在根级初始化计数器，让标题来初始化 */ /* 编辑器标题元素创建新的计数器作用域 */ .ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:level1;}/* 编辑器标题后面的第一个有序列表只重置一级计数器 */ .ql-editor h1 + ol,.ql-editor h2 + ol,.ql-editor h3 + ol,.ql-editor h4 + ol,.ql-editor h5 + ol,.ql-editor h6 + ol,.ql-editor h1 + * + ol,.ql-editor h2 + * + ol,.ql-editor h3 + * + ol,.ql-editor h4 + * + ol,.ql-editor h5 + * + ol,.ql-editor h6 + * + ol{counter-reset:level1 !important;}/* 关键修复：强制覆盖浏览器默认的ol计数器重置行为 */ .ql-editor ol{counter-reset:none !important;}/* 只有第一个ol才初始化计数器（无h标签场景） */ .ql-editor ol:first-of-type{counter-reset:level1 !important;}/* h标签后的ol重置计数器（有h标签场景） */ .ql-editor h1 + ol,.ql-editor h2 + ol,.ql-editor h3 + ol,.ql-editor h4 + ol,.ql-editor h5 + ol,.ql-editor h6 + ol,.ql-editor h1 + * + ol,.ql-editor h2 + * + ol,.ql-editor h3 + * + ol,.ql-editor h4 + * + ol,.ql-editor h5 + * + ol,.ql-editor h6 + * + ol{counter-reset:level1 !important;}/* 编辑器重置所有列表样式 */ .ql-editor ol,.ql-editor ul{list-style:none !important;margin:0 !important;padding:0 !important;}/* 编辑器一级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5){counter-increment:level1;counter-reset:level2 level3 level4 level5 level6;/* 每个一级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:2em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5)::before{content:counter(level1) ". ";font-weight:inherit;margin-left:-1.5em;display:inline-block;width:1.5em;}/* 编辑器二级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-1{counter-increment:level2 !important;counter-reset:level3 level4 level5 level6 !important;/* 每个二级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:1em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-1::before{content:counter(level2,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 编辑器三级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-2{counter-increment:level3 !important;counter-reset:level4 level5 level6 !important;/* 每个三级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:0em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-2::before{content:counter(level3,lower-roman) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 编辑器四级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-3{counter-increment:level4 !important;counter-reset:level5 level6 !important;/* 每个四级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:8em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-3::before{content:counter(level4,upper-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 编辑器五级有序列表 - 重置六级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-4{counter-increment:level5 !important;counter-reset:level6 !important;/* 每个五级项都重置六级计数器 */ display:list-item !important;list-style:none !important;margin-left:10em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-4::before{content:counter(level5) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 编辑器六级有序列表 */ .ql-editor li[data-list="ordered"].ql-indent-5{counter-increment:level6 !important;display:list-item !important;list-style:none !important;margin-left:12em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-5::before{content:counter(level6,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 引用样式 - 与编辑器完全一致 */ .quill-content blockquote,.ql-editor blockquote,.quill-editor blockquote,blockquote{margin:0 !important;margin-top:0 !important;margin-bottom:0 !important;padding:1rem !important;background:rgba(156,163,175,0.1) !important;/* 与编辑器保持一致 */ border-left:3px solid #c4c9d0 !important;/* 与编辑器保持一致 */ border-radius:4px;color:var(--text-secondary) !important;font-style:italic;font-size:0.875rem;line-height:1.6;position:relative;}/* 连续的引用块合并样式 - 与编辑器完全一致 */ .quill-content blockquote + blockquote{margin-top:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}/* 浏览器支持:has()的情况 */ @supports selector(:has(+ *)){.quill-content blockquote:has(+ blockquote){margin-bottom:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;padding-bottom:0.2rem !important;}}/* 浏览器不支持:has()的情况，使用JS类名控制 */ .quill-content .blockquote-group{margin:0 !important;margin-top:0 !important;margin-bottom:0 !important;background:transparent !important;/* 让内部blockquote显示自己的背景 */ border:none !important;/* 移除外层边框，让每个blockquote显示自己的边框 */ border-radius:0;overflow:visible;padding:0 !important;}.quill-content .blockquote-group blockquote{margin:0 !important;border-left:3px solid #c4c9d0 !important;/* 恢复每个引用块的边框 */ background:rgba(156,163,175,0.1) !important;/* 恢复每个引用块的背景 */ border-radius:4px !important;/* 恢复圆角 */ padding:1rem !important;/* 与单独引用块保持一致 */ font-size:0.875rem !important;color:var(--text-secondary) !important;font-style:italic !important;line-height:1.6 !important;}/* 分组中连续引用块的连接效果 - 与编辑器保持一致 */ .quill-content .blockquote-group blockquote + blockquote{margin-top:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}.quill-content .blockquote-group blockquote:first-child{border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;padding-bottom:0.2rem !important;}.quill-content .blockquote-group blockquote:not(:first-child):not(:last-child){border-radius:0 !important;padding-top:0.2rem !important;padding-bottom:0.2rem !important;}.quill-content .blockquote-group blockquote:last-child{border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}/* 代码块包装器样式 - 外层容器，负责定位复制按钮 */ .quill-content .code-block-wrapper{position:relative;margin:1rem 0;background:#2d3748;border-radius:6px;overflow:hidden;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 内层滚动容器 - 负责代码内容的滚动 */ .quill-content .code-scroll-container{overflow-x:auto;padding:0rem;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 确保所有可能的代码块容器都具有相对定位和触摸滚动支持 */ .quill-content .ql-code-block-container,.quill-content pre{position:relative;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.quill-content .code-scroll-container::-webkit-scrollbar{display:none;/* 隐藏滚动条 */}/* 可选：为了确保在所有 WebKit 浏览器中都能正常工作 */ .quill-content .code-scroll-container{-ms-overflow-style:none;/* IE 和 Edge */ scrollbar-width:none;/* Firefox */}/* 复制按钮样式 - 确保固定在容器右上角 */ .quill-content .code-copy-btn{position:absolute;top:0.5rem;right:0.5rem;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:4px;padding:0.4rem 0.6rem;font-size:0.75rem;color:#e2e8f0;cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;min-width:28px;min-height:28px;width:28px;height:28px;z-index:15;/* 提高层级，确保在滚动内容之上 */ /* 确保复制按钮不会跟随内容滚动 */ pointer-events:auto;/* 确保按钮可点击 */}.quill-content .code-copy-btn:hover{background:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.3);transform:translateY(-1px);}.quill-content .code-copy-btn.copied{background:rgba(34,197,94,0.8);border-color:rgba(34,197,94,1);color:white;}.quill-content .code-copy-btn i{font-size:14px;}/* 语言标签样式 */ .quill-content .code-language-label{position:absolute;top:0.5rem;left:0.5rem;background:rgba(0,0,0,0.3);color:#e2e8f0;padding:0.2rem 0.5rem;border-radius:3px;font-size:0.7rem;font-weight:500;text-transform:uppercase;letter-spacing:0.5px;z-index:5;}/* Quill编辑器特有的代码块样式 - 与知识库项目完全一致 */ .quill-content .ql-code-block-container,.knowledge-content .ql-code-block-container{margin:0 !important;padding:0.75rem !important;border-radius:6px;overflow:hidden;background:#2d3748;position:relative;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 确保容器内的代码块也能获得高亮样式 */ .quill-content .ql-code-block-container .ql-code-block{padding:0.2rem;background:transparent;/* 使用容器的背景 */ color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre !important;/* 文本不换行 */ /* font-weight:lighter;*/ /* 细体 */ font-style:italic;/* 斜体 */ overflow-x:visible;/* 内容区不产生滚动条 */ border:none;margin:0;}/* 弹框中的代码块样式 - 与知识库项目完全一致 */ .utils-dialog .quill-content .ql-code-block{padding:0;background:transparent;color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre;/* 文本不换行 */ overflow-x:visible;border:none;margin:0;position:static;}/* 弹框中的 ql-syntax 样式 */ .utils-dialog .quill-content .ql-syntax{background:#2d3748;color:#e2e8f0;padding:1rem;padding-right:3rem;/* 为复制按钮留出空间 */ border-radius:6px;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;overflow-x:auto;white-space:pre;margin:1rem 0;position:relative;/* 确保复制按钮能正确定位 */ /* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 弹框中的代码块容器样式 */ .utils-dialog .quill-content .ql-code-block-container{margin:0 !important;padding:0.25rem !important;border-radius:6px;overflow:hidden;background:#2d3748;position:relative;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 确保容器内的代码块也能获得高亮样式 */ .quill-content .ql-code-block-container .ql-code-block{padding:0.25rem;background:transparent;/* 使用容器的背景 */ color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre !important;/* 完全保留空格和换行 */ /* font-weight:lighter;*/ /* 细体 */ font-style:italic;/* 斜体 */ overflow-x:auto;/* 允许横向滚动 */ /* 强制保留空格和制表符 */ tab-size:4 !important;-moz-tab-size:4 !important;-webkit-tab-size:4 !important;/* 防止文本换行 */ word-wrap:normal !important;word-break:normal !important;border:none;margin:0;}.quill-content .ql-code-block{padding:0;background:transparent;color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre;/* 文本不换行 */ overflow-x:visible;border:none;margin:0;position:static;}/* Quill编辑器的语法高亮支持 */ .quill-content .ql-syntax{background:#2d3748;color:#e2e8f0;padding:1rem;padding-right:3rem;/* 为复制按钮留出空间 */ border-radius:6px;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;overflow-x:auto;white-space:pre;margin:1rem 0;position:relative;/* 确保复制按钮能正确定位 */ /* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 代码块样式 */ .quill-content pre{background:transparent;/* 背景由外层容器提供 */ margin:0;padding:0;border-radius:0;white-space:pre;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* 代码块样式 */ .quill-content pre{background:transparent;/* 背景由外层容器提供 */ margin:0;padding:0;border-radius:0;white-space:pre;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* Highlight.js 增强样式 */ .quill-content pre code,.quill-content .hljs{display:block;overflow-x:visible;/* 内容区不产生滚动条 */ padding:0;background:transparent;color:#e2e8f0;border-radius:0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;margin:0;/* 添加触摸滚动支持 - 确保iPad横屏模式（桌面端布局）下能正常工作 */ -webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}/* Highlight.js 主题适配 - 覆盖默认主题 */ .quill-content .hljs{/* background:#1a202c !important;*/ color:#e2e8f0 !important;}/* 保持现有的语法高亮颜色定义，但优先级更高 */ .quill-content .hljs-keyword,.quill-content .ql-code-block .hljs-keyword,.quill-content .ql-syntax .hljs-keyword{color:#a78bfa !important;font-weight:600;}.quill-content .hljs-string,.quill-content .ql-code-block .hljs-string,.quill-content .ql-syntax .hljs-string{color:#34d399 !important;}.quill-content .hljs-number,.quill-content .ql-code-block .hljs-number,.quill-content .ql-syntax .hljs-number{color:#fbbf24 !important;}.quill-content .hljs-comment,.quill-content .ql-code-block .hljs-comment,.quill-content .ql-syntax .hljs-comment{color:#6b7280 !important;font-style:italic;}.quill-content .hljs-function,.quill-content .ql-code-block .hljs-function,.quill-content .ql-syntax .hljs-function{color:#60a5fa !important;}.quill-content .hljs-variable,.quill-content .ql-code-block .hljs-variable,.quill-content .ql-syntax .hljs-variable{color:#f87171 !important;}.quill-content .hljs-tag,.quill-content .ql-code-block .hljs-tag,.quill-content .ql-syntax .hljs-tag{color:#fb7185 !important;}.quill-content .hljs-attr,.quill-content .hljs-attribute,.quill-content .ql-code-block .hljs-attr,.quill-content .ql-syntax .hljs-attr{color:#fcd34d !important;}/* 额外的highlight.js语法元素 */ .quill-content .hljs-built_in,.quill-content .hljs-builtin-name{color:#8b5cf6 !important;}.quill-content .hljs-type,.quill-content .hljs-class{color:#f59e0b !important;}.quill-content .hljs-title,.quill-content .hljs-title.class_,.quill-content .hljs-title.function_{color:#60a5fa !important;font-weight:600;}.quill-content .hljs-params{color:#e2e8f0 !important;}.quill-content .hljs-meta,.quill-content .hljs-meta-keyword{color:#a78bfa !important;}.quill-content .hljs-doctag{color:#34d399 !important;}.quill-content .hljs-section{color:#60a5fa !important;font-weight:600;}.quill-content .hljs-selector-tag,.quill-content .hljs-selector-id,.quill-content .hljs-selector-class{color:#fb7185 !important;}.quill-content .hljs-regexp,.quill-content .hljs-literal{color:#34d399 !important;}.quill-content .hljs-operator,.quill-content .hljs-punctuation{color:#e2e8f0 !important;}.quill-content .hljs-deletion{background:rgba(239,68,68,0.2) !important;color:#fca5a5 !important;}.quill-content .hljs-addition{background:rgba(34,197,94,0.2) !important;color:#86efac !important;}.quill-content .hljs-emphasis{font-style:italic;}.quill-content .hljs-strong{font-weight:700;}/* 连续的引用块合并样式 - 完全按照知识库项目实现 */ .quill-content blockquote + blockquote{margin-top:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}/* 浏览器支持:has()的情况 */ @supports selector(:has(+ *)){.quill-content blockquote:has(+ blockquote){margin-bottom:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;padding-bottom:0.2rem !important;}}/* 浏览器不支持:has()的情况，使用JS类名控制 */ .quill-content .blockquote-group{margin:0 !important;margin-top:0 !important;margin-bottom:0 !important;background:rgba(156,163,175,0.1) !important;border-left:3px solid var(--primary-color,#3b82f6) !important;border-radius:4px !important;overflow:hidden !important;}.quill-content .blockquote-group blockquote{margin:0 !important;border:none !important;background:transparent !important;border-radius:0 !important;padding:0.75rem 1rem !important;font-size:0.875rem !important;}.quill-content .blockquote-group blockquote + blockquote{margin-top:0 !important;padding-top:0.75rem !important;}/* 暗色主题的引用块样式 - 与编辑器保持一致 */ [data-theme="dark"] .quill-content blockquote,.theme-dark .quill-content blockquote,.dark .quill-content blockquote{background:rgba(75,85,99,0.2) !important;/* 与编辑器保持一致 */ border-left-color:#4b5563 !important;/* 与编辑器保持一致 */}[data-theme="dark"] .quill-content .blockquote-group,.theme-dark .quill-content .blockquote-group,.dark .quill-content .blockquote-group{background:transparent !important;/* 保持透明，让内部blockquote显示自己的背景 */ border:none !important;}[data-theme="dark"] .quill-content .blockquote-group blockquote,.theme-dark .quill-content .blockquote-group blockquote,.dark .quill-content .blockquote-group blockquote{background:rgba(75,85,99,0.2) !important;/* 与编辑器保持一致 */ border-left-color:#4b5563 !important;/* 与编辑器保持一致 */}/* 媒体查询样式已统一到上面的定义中，这里不再需要重复定义 */ /* 暗色主题下的样式 */ .dark .quill-content{color:var(--text-primary,#e5e7eb);}.dark .quill-content h1,.dark .quill-content h2,.dark .quill-content h3,.dark .quill-content h4,.dark .quill-content h5,.dark .quill-content h6{color:var(--text-primary,#e5e7eb);}.dark .quill-content code{background-color:rgba(75,85,99,0.3);border-color:rgba(75,85,99,0.5);color:var(--text-primary,#e5e7eb);}/* 暗色主题的引用块样式已在上面统一定义 */ .quill-content img{max-width:100%;height:auto;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,0.1);margin:0.5em 0;}/* 字号样式 - 提高优先级 */ .quill-content .ql-size-small,.quill-content span.ql-size-small,.quill-content p.ql-size-small{font-size:0.75em !important;}.quill-content .ql-size-large,.quill-content span.ql-size-large,.quill-content p.ql-size-large{font-size:1.5em !important;}.quill-content .ql-size-huge,.quill-content span.ql-size-huge,.quill-content p.ql-size-huge{font-size:2.5em !important;}/* 对齐方式样式 - 提高优先级 */ .quill-content .ql-align-center,.quill-content p.ql-align-center{text-align:center !important;}.quill-content .ql-align-right,.quill-content p.ql-align-right{text-align:right !important;}.quill-content .ql-align-justify,.quill-content p.ql-align-justify{text-align:justify !important;}/* 在编辑器中的样式也要确保生效 - 提高优先级 */ .ql-editor .ql-size-small,.ql-editor span.ql-size-small,.ql-editor p.ql-size-small{font-size:0.75em !important;}.ql-editor .ql-size-large,.ql-editor span.ql-size-large,.ql-editor p.ql-size-large{font-size:1.5em !important;}.ql-editor .ql-size-huge,.ql-editor span.ql-size-huge,.ql-editor p.ql-size-huge{font-size:2.5em !important;}.ql-editor .ql-align-center,.ql-editor p.ql-align-center{text-align:center !important;}.ql-editor .ql-align-right,.ql-editor p.ql-align-right{text-align:right !important;}.ql-editor .ql-align-justify,.ql-editor p.ql-align-justify{text-align:justify !important;}/* 响应式样式 */ @media (max-width:1023px){.quill-content{font-size:14px;}/* 移动端响应式样式 - 有序列表 */ /* 一级有序列表移动端样式 */ .quill-content li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5){margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5)::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 二级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-1{margin-left:3.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-1::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 三级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-2{margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-2::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 四级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-3{margin-left:6.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-3::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 五级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-4{margin-left:7.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-4::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 六级有序列表 */ .quill-content li[data-list="ordered"].ql-indent-5{margin-left:9.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="ordered"].ql-indent-5::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}/* 移动端无序列表样式调整 - 与有序列表保持一致对齐 */ .quill-content li[data-list="bullet"]{margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="bullet"]::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.quill-content li[data-list="bullet"].ql-indent-1{margin-left:3.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="bullet"].ql-indent-1::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.quill-content li[data-list="bullet"].ql-indent-2{margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="bullet"].ql-indent-2::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.quill-content li[data-list="bullet"].ql-indent-3{margin-left:6.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.quill-content li[data-list="bullet"].ql-indent-3::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.quill-content h1{font-size:1.4em;}.quill-content h2{font-size:1.3em;}.quill-content h3{font-size:1.2em;}.quill-content h4{font-size:1.1em;}.quill-content h5{font-size:1em;}.quill-content h6{font-size:1em;}.quill-content blockquote{padding:0.75rem;margin:1rem 0;font-size:0.875rem;}.quill-content pre,.quill-content .ql-code-block{padding:0.75rem;}.quill-content .ql-indent-1{padding-left:0em;}.quill-content .ql-indent-2{padding-left:3em;}.quill-content .ql-indent-3{padding-left:4.5em;}.quill-content .ql-indent-4{padding-left:6em;}.quill-content .ql-indent-5{padding-left:7.5em;}.quill-content .ql-indent-6{padding-left:9em;}.quill-content .ql-indent-7{padding-left:10.5em;}.quill-content .ql-indent-8{padding-left:12em;}}/* 滚动容器样式 */ .quill-content .code-scroll-container::-webkit-scrollbar{display:none;/* 隐藏滚动条 */}.quill-content .code-scroll-container{-ms-overflow-style:none;/* IE 和 Edge */ scrollbar-width:none;/* Firefox */}/* 复制按钮样式 - 确保固定在容器右上角 */ .quill-content .code-copy-btn{position:absolute;top:0.5rem;right:0.5rem;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:4px;padding:0.4rem 0.6rem;font-size:0.75rem;color:#e2e8f0;cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;z-index:15;/* 提高层级，确保在滚动内容之上 */ /* 确保复制按钮不会跟随内容滚动 */ pointer-events:auto;/* 确保按钮可点击 */}.quill-content .code-copy-btn:hover{background:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.3);transform:translateY(-1px);}.quill-content .code-copy-btn.copied{background:rgba(34,197,94,0.8);border-color:rgba(34,197,94,1);color:white;}.quill-content .code-copy-btn i{font-size:14px;}/* 语法高亮样式增强 */ .quill-content .hljs-keyword,.quill-content .ql-code-block .hljs-keyword,.quill-content .ql-syntax .hljs-keyword,.quill-content .ql-code-block-container .hljs-keyword{color:#a78bfa;font-weight:600;}.quill-content .hljs-string,.quill-content .ql-code-block .hljs-string,.quill-content .ql-syntax .hljs-string,.quill-content .ql-code-block-container .hljs-string{color:#34d399;}.quill-content .hljs-number,.quill-content .ql-code-block .hljs-number,.quill-content .ql-syntax .hljs-number,.quill-content .ql-code-block-container .hljs-number{color:#fbbf24;}.quill-content .hljs-comment,.quill-content .ql-code-block .hljs-comment,.quill-content .ql-syntax .hljs-comment,.quill-content .ql-code-block-container .hljs-comment{color:#6b7280;font-style:italic;}.quill-content .hljs-function,.quill-content .ql-code-block .hljs-function,.quill-content .ql-syntax .hljs-function,.quill-content .ql-code-block-container .hljs-function{color:#60a5fa;}.quill-content .hljs-variable,.quill-content .ql-code-block .hljs-variable,.quill-content .ql-syntax .hljs-variable,.quill-content .ql-code-block-container .hljs-variable{color:#f87171;}.quill-content .hljs-tag,.quill-content .ql-code-block .hljs-tag,.quill-content .ql-syntax .hljs-tag,.quill-content .ql-code-block-container .hljs-tag{color:#fb7185;}.quill-content .hljs-attr,.quill-content .ql-code-block .hljs-attr,.quill-content .ql-syntax .hljs-attr,.quill-content .ql-code-block-container .hljs-attr{color:#fcd34d;}/* 知识库项目样式支持 - 确保knowledge-content类也能应用相同样式 */ .knowledge-content .ql-code-block-container{margin:0 !important;padding:0.75rem !important;border-radius:6px;overflow:hidden;background:#2d3748;position:relative;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.knowledge-content .ql-code-block-container .ql-code-block{padding:0.2rem;background:transparent;color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre !important;font-style:italic;overflow-x:visible;border:none;margin:0;}.knowledge-content .ql-code-block{padding:0;background:transparent;color:#e2e8f0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.75rem;line-height:1.4;white-space:pre;overflow-x:visible;border:none;margin:0;position:static;}.knowledge-content .ql-syntax{background:#2d3748;color:#e2e8f0;padding:1rem;padding-right:3rem;border-radius:6px;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;overflow-x:auto;white-space:pre;margin:1rem 0;position:relative;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.knowledge-content pre{background:transparent;margin:0;padding:0;border-radius:0;white-space:pre;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.knowledge-content pre code,.knowledge-content .hljs{display:block;overflow-x:visible;padding:0;background:transparent;color:#e2e8f0;border-radius:0;font-family:'Monaco','Menlo','Ubuntu Mono','Consolas','Courier New',monospace;font-size:0.875rem;line-height:1.4;margin:0;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;}.knowledge-content .code-scroll-container::-webkit-scrollbar{display:none;}.knowledge-content .code-scroll-container{-ms-overflow-style:none;scrollbar-width:none;}.knowledge-content .code-copy-btn{position:absolute;top:0.5rem;right:0.5rem;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:4px;padding:0.4rem 0.6rem;font-size:0.75rem;color:#e2e8f0;cursor:pointer;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;z-index:15;pointer-events:auto;}.knowledge-content .code-copy-btn:hover{background:rgba(255,255,255,0.2);border-color:rgba(255,255,255,0.3);transform:translateY(-1px);}.knowledge-content .code-copy-btn.copied{background:rgba(34,197,94,0.8);border-color:rgba(34,197,94,1);color:white;}.knowledge-content .code-copy-btn i{font-size:14px;}/* 知识库项目的语法高亮样式 */ .knowledge-content .hljs-keyword,.knowledge-content .ql-code-block .hljs-keyword,.knowledge-content .ql-syntax .hljs-keyword,.knowledge-content .ql-code-block-container .hljs-keyword{color:#a78bfa;font-weight:600;}.knowledge-content .hljs-string,.knowledge-content .ql-code-block .hljs-string,.knowledge-content .ql-syntax .hljs-string,.knowledge-content .ql-code-block-container .hljs-string{color:#34d399;}.knowledge-content .hljs-number,.knowledge-content .ql-code-block .hljs-number,.knowledge-content .ql-syntax .hljs-number,.knowledge-content .ql-code-block-container .hljs-number{color:#fbbf24;}.knowledge-content .hljs-comment,.knowledge-content .ql-code-block .hljs-comment,.knowledge-content .ql-syntax .hljs-comment,.knowledge-content .ql-code-block-container .hljs-comment{color:#6b7280;font-style:italic;}.knowledge-content .hljs-function,.knowledge-content .ql-code-block .hljs-function,.knowledge-content .ql-syntax .hljs-function,.knowledge-content .ql-code-block-container .hljs-function{color:#60a5fa;}.knowledge-content .hljs-variable,.knowledge-content .ql-code-block .hljs-variable,.knowledge-content .ql-syntax .hljs-variable,.knowledge-content .ql-code-block-container .hljs-variable{color:#f87171;}.knowledge-content .hljs-tag,.knowledge-content .ql-code-block .hljs-tag,.knowledge-content .ql-syntax .hljs-tag,.knowledge-content .ql-code-block-container .hljs-tag{color:#fb7185;}.knowledge-content .hljs-attr,.knowledge-content .ql-code-block .hljs-attr,.knowledge-content .ql-syntax .hljs-attr,.knowledge-content .ql-code-block-container .hljs-attr{color:#fcd34d;}/* ========== styles/components/enhanced-editor.css (34.28KB) ========== */ /* 增强的富文本编辑器样式 - 基于知识库项目 */ /* 编辑器容器优化 */ .quill-editor-container{border:1px solid var(--border-color,#d1d5db);border-radius:8px;overflow:hidden;background:var(--bg-primary,#ffffff);transition:border-color 0.2s ease,box-shadow 0.2s ease;}.quill-editor-container:focus-within{border-color:var(--primary-color,#3b82f6);box-shadow:0 0 0 1px var(--primary-color,#3b82f6);}/* 暗色模式下的容器背景色 */ .dark .quill-editor-container{background:#1f2937 !important;}/* 工具栏样式优化 - 参考知识库项目 */ .ql-toolbar.ql-snow{display:flex !important;align-items:center !important;flex-wrap:wrap !important;border:1px solid var(--border-color,#d1d5db) !important;border-bottom:1px solid var(--border-color,#d1d5db) !important;border-radius:8px 8px 0 0 !important;background:var(--bg-secondary,#f9fafb) !important;padding:0.5rem !important;box-sizing:border-box !important;margin:0 !important;}.ql-toolbar.ql-snow .ql-formats{margin-right:0.75rem !important;display:flex !important;align-items:center !important;margin-bottom:0 !important;}.ql-toolbar.ql-snow button{width:28px !important;height:28px !important;padding:0 !important;margin:0 0.125rem !important;border-radius:4px !important;display:flex !important;align-items:center !important;justify-content:center !important;border:none !important;background:transparent !important;position:relative !important;vertical-align:top !important;transition:background-color 0.2s ease !important;}.ql-toolbar.ql-snow button *{vertical-align:middle !important;}.ql-toolbar.ql-snow .ql-picker{height:28px !important;margin:0 0.125rem !important;border-radius:4px !important;border:none !important;background:transparent !important;display:flex !important;align-items:center !important;justify-content:center !important;transition:background-color 0.2s ease !important;}.ql-toolbar.ql-snow button:hover,.ql-toolbar.ql-snow .ql-picker:hover{/* background:var(--bg-tertiary,#f3f4f6) !important;*/}.ql-toolbar.ql-snow button.ql-active,.ql-toolbar.ql-snow .ql-picker.ql-active{background:var(--primary-color,#3b82f6) !important;color:white !important;}.ql-toolbar.ql-snow .ql-stroke{stroke:var(--text-primary,#111827) !important;stroke-width:1.5 !important;}.ql-toolbar.ql-snow .ql-fill{fill:var(--text-primary,#111827) !important;}.ql-toolbar.ql-snow .ql-picker-label{color:var(--text-primary,#111827) !important;width:auto !important;min-width:32px !important;height:32px !important;display:flex !important;align-items:center !important;justify-content:center !important;padding:0 0.5rem !important;border:none !important;background:transparent !important;font-size:11px !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;line-height:1 !important;vertical-align:middle !important;margin:0 !important;}/* 下拉选择器样式 */ .ql-toolbar.ql-snow .ql-picker-options{background:var(--bg-primary,#ffffff) !important;border:1px solid var(--border-color,#d1d5db) !important;border-radius:6px !important;box-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06) !important;z-index:10000 !important;max-height:200px !important;overflow-y:auto !important;/* 防止下拉框超出屏幕 */ position:absolute !important;}/* 修复下拉框定位问题 - 防止超出屏幕边界 */ .ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{/* 动态调整位置，避免超出视口 */ max-width:200px !important;white-space:nowrap !important;}/* 标题和字体大小选择器的特殊处理 */ .ql-toolbar.ql-snow .ql-header .ql-picker-options,.ql-toolbar.ql-snow .ql-size .ql-picker-options{min-width:120px !important;max-width:150px !important;left:0 !important;/* 确保不会超出右侧边界 */ transform:none !important;}/* 当工具栏粘性时，确保下拉框正确显示 */ .ql-toolbar.sticky .ql-picker-options{z-index:10001 !important;}.ql-toolbar.ql-snow .ql-picker-item{color:var(--text-primary,#111827) !important;padding:0.5rem 0.75rem !important;font-size:0.875rem !important;}.ql-toolbar.ql-snow .ql-picker-item:hover{/* background:var(--bg-secondary,#f9fafb) !important;*/}/* 特殊处理标题选择器 */ .ql-toolbar.ql-snow .ql-header .ql-picker-label{width:auto !important;min-width:65px !important;text-align:left !important;justify-content:flex-start !important;padding:0 0.5rem !important;}/* 字体大小选择器布局 */ .ql-toolbar.ql-snow .ql-size .ql-picker-label{width:auto !important;min-width:65px !important;padding:0 0.5rem !important;display:flex !important;align-items:center !important;justify-content:space-between !important;position:relative !important;}/* 为字体大小选择器添加箭头 */ .ql-toolbar.ql-snow .ql-size .ql-picker-label::after{content:"▼" !important;font-size:8px !important;opacity:0.6 !important;margin-left:0.25rem !important;display:inline-block !important;line-height:1 !important;vertical-align:middle !important;}/* 为标题选择器添加箭头 */ .ql-toolbar.ql-snow .ql-header .ql-picker-label::after{content:"▼" !important;font-size:8px !important;opacity:0.6 !important;margin-left:0.25rem !important;display:inline-block !important;line-height:1 !important;vertical-align:middle !important;}/* 修复下拉箭头位置 */ .ql-toolbar.ql-snow .ql-picker-label::after{margin-left:0.25rem !important;font-size:10px !important;vertical-align:middle !important;line-height:1 !important;display:inline-block !important;}/* 隐藏Quill原生的SVG箭头图标，只保留自定义箭头 */ .ql-toolbar.ql-snow .ql-size svg,.ql-toolbar.ql-snow .ql-header svg{display:none !important;}/* 确保选择器内容居中 */ .ql-toolbar.ql-snow .ql-picker-label > *{vertical-align:middle !important;line-height:1 !important;}/* 专门优化颜色选择器图标 */ .ql-toolbar.ql-snow .ql-color .ql-picker-label,.ql-toolbar.ql-snow .ql-background .ql-picker-label{width:32px !important;height:32px !important;padding:0 !important;margin:0 0.125rem !important;display:flex !important;align-items:center !important;justify-content:center !important;font-size:14px !important;font-weight:bold !important;line-height:1 !important;}/* 优化所有SVG图标的位置 */ .ql-toolbar.ql-snow svg{width:14px !important;height:14px !important;display:block !important;margin:auto !important;}/* 优化按钮内的伪元素图标 */ .ql-toolbar.ql-snow button::before{font-size:12px !important;line-height:1 !important;display:flex !important;align-items:center !important;justify-content:center !important;position:absolute !important;top:0 !important;left:0 !important;right:0 !important;bottom:0 !important;margin:auto !important;}/* 对齐选择器样式 - 基于知识库项目优化，使用图标显示 */ .ql-toolbar.ql-snow .ql-align .ql-picker-options{min-width:140px !important;padding:0.25rem 0 !important;}.ql-toolbar.ql-snow .ql-align .ql-picker-item{display:flex !important;align-items:center !important;justify-content:center !important;padding:0.5rem !important;min-height:32px !important;cursor:pointer !important;transition:background-color 0.2s ease !important;border-radius:4px !important;margin:0.125rem 0.25rem !important;}.ql-toolbar.ql-snow .ql-align .ql-picker-item:hover{/* background:var(--bg-secondary,#f9fafb) !important;*/}.ql-toolbar.ql-snow .ql-align .ql-picker-item i{color:var(--text-primary,#111827) !important;font-size:16px !important;line-height:1 !important;}/* 暗色模式下的对齐选项图标 */ .dark .ql-toolbar.ql-snow .ql-align .ql-picker-item i{color:var(--text-primary,#e5e7eb) !important;}/* 编辑器内容区域 */ .ql-container.ql-snow{border:none !important;font-size:1rem !important;line-height:1.6 !important;background:var(--bg-primary,#ffffff) !important;}.ql-editor{min-height:200px !important;padding:1rem !important;color:var(--text-primary,#111827) !important;font-size:1rem !important;line-height:1.6 !important;}.ql-editor.ql-blank::before{color:var(--text-tertiary,#9ca3af) !important;font-style:normal !important;font-size:1rem !important;left:1rem !important;font-family:inherit !important;}/* 粘性工具栏样式 */ .ql-toolbar.sticky{position:fixed !important;/* 固定：位于标题下方 3.75rem，左侧 1.5rem */ top:3.75rem !important;left:1.5rem !important;border:1px solid var(--border-color,#e5e7eb) !important;border-radius:0.5rem 0.5rem 0 0 !important;background:var(--bg-secondary,#f9fafb) !important;z-index:9999 !important;/* 确保在弹框中也能正确显示 */ margin:0 !important;/* 宽度仍由 JS 同步到编辑器宽度 */}/* 弹框中的粘性工具栏特殊处理 - 基于知识库项目优化 */ .utils-dialog .ql-toolbar.sticky{position:fixed !important;z-index:10000 !important;margin:0 !important;border:1px solid var(--border-color,#e5e7eb) !important;border-radius:0.5rem 0.5rem 0 0 !important;background:var(--bg-secondary,#f9fafb) !important;}/* 弹框内粘性工具栏的动画效果 */ /* 取消滑入动画，保持原始样式 */ .utils-dialog .ql-toolbar.sticky{animation:none !important;}/* 弹框内粘性工具栏的指示器 */ /* 去除蓝色下划线指示条 */ .utils-dialog .ql-toolbar.sticky::before{display:none !important;}/* 暗色模式下弹框内粘性工具栏 */ .dark .utils-dialog .ql-toolbar.sticky{background:var(--bg-secondary,#1f2937) !important;border-color:var(--border-color,#4b5563) !important;}@keyframes stickyToolbarSlideDown{from{transform:translateY(-100%);opacity:0;}to{transform:translateY(0);opacity:1;}}.ql-toolbar.sticky::before{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--primary-color,#3b82f6),var(--primary-hover,#2563eb));opacity:0.7;}/* 工具栏占位元素 */ .ql-toolbar-placeholder{height:44px;background:transparent !important;display:none;visibility:hidden !important;margin:0 !important;padding:0 !important;border:none !important;pointer-events:none !important;}/* 暗色主题适配 */ .dark .ql-toolbar.ql-snow{background:var(--bg-secondary,#1f2937) !important;border-color:var(--border-color,#374151) !important;}/* 暗色模式下的箭头颜色 */ .dark .ql-toolbar.ql-snow .ql-size .ql-picker-label::after,.dark .ql-toolbar.ql-snow .ql-header .ql-picker-label::after{color:var(--text-primary,#e5e7eb) !important;opacity:0.7 !important;}.dark .ql-toolbar.ql-snow .ql-stroke{stroke:var(--text-primary,#e5e7eb) !important;}.dark .ql-toolbar.ql-snow .ql-fill{fill:var(--text-primary,#e5e7eb) !important;}.dark .ql-toolbar.ql-snow .ql-picker-label{color:var(--text-primary,#e5e7eb) !important;}.dark .ql-toolbar.ql-snow .ql-picker-options{background:var(--bg-secondary,#1f2937) !important;border-color:var(--border-color,#374151) !important;}.dark .ql-toolbar.ql-snow .ql-picker-item{color:var(--text-primary,#e5e7eb) !important;}.dark .ql-toolbar.ql-snow .ql-picker-item:hover{background:var(--bg-tertiary,#374151) !important;}.dark .ql-container.ql-snow{background:var(--bg-primary,#111827) !important;}.dark .ql-editor{color:var(--text-primary,#e5e7eb) !important;}.dark .ql-editor.ql-blank::before{color:var(--text-tertiary,#6b7280) !important;}.dark .ql-toolbar.sticky{background:var(--bg-secondary,#1f2937) !important;border-color:var(--border-color,#374151) !important;box-shadow:0 2px 8px rgba(0,0,0,0.3) !important;}/* 编辑器中代码块基础样式 - 与知识库项目完全一致 */ .ql-editor .ql-code-block,.ql-editor .editor-code-block,.ql-editor .editor-content-code-block{/* 移除min-height避免抖动 */ box-sizing:border-box !important;padding:0.25rem !important;/* 精确匹配知识库项目的内边距 */ margin:0 !important;/* 精确匹配知识库项目的外边距 */ font-family:'Monaco','Menlo','Ubuntu Mono',monospace !important;font-size:0.75rem !important;/* 精确匹配知识库项目的字体大小 */ line-height:1.4 !important;/* 稍微紧凑的行高 */ border-radius:4px !important;background-color:#2d3748 !important;/* 统一使用深色背景 */ color:#c9d1d9 !important;/* 统一使用浅色文字 */ border:none !important;/* 移除边框 */ white-space:pre !important;/* 不换行，保持代码格式 */ overflow:visible !important;/* 不在代码块本身滚动，由编辑器容器处理 */ /* 确保文本内容可见 */ opacity:1 !important;visibility:visible !important;/* 防止高度抖动 */ height:auto !important;max-height:none !important;}/* 编辑器模式下的代码块特殊处理 */ .ql-editor .editor-code-block,.ql-editor .editor-content-code-block{/* 确保编辑器模式下的代码块内容可见且可编辑 */ display:block !important;/* 保持文本的可编辑性 */ -webkit-user-select:text !important;-moz-user-select:text !important;-ms-user-select:text !important;user-select:text !important;/* 确保焦点样式 */ outline:none !important;/* 防止内容被隐藏 */ overflow:visible !important;text-overflow:visible !important;/* 保持简洁的尺寸 */ position:static !important;}/* 编辑器中代码块容器样式 - 与知识库项目完全一致 */ .ql-editor .ql-code-block-container{/* 移除min-height避免抖动 */ box-sizing:border-box !important;padding:0.75rem !important;/* 容器适中的内边距 - 与知识库项目一致 */ margin:0.25rem 0 !important;/* 精确匹配知识库项目的外边距 */ font-family:'Monaco','Menlo','Ubuntu Mono',monospace !important;font-size:0.875rem !important;/* 容器字体稍大于代码块本身 */ line-height:1.4 !important;/* 与代码块保持一致的行高 */ border-radius:4px !important;background-color:#2d3748 !important;/* 统一使用深色背景 */ color:#c9d1d9 !important;/* 统一使用浅色文字 */ border:none !important;/* 移除边框 */ white-space:pre !important;/* 不换行，保持代码格式 */ overflow-x:auto !important;/* 容器支持横向滚动 */ overflow-y:visible !important;/* 纵向不滚动 */ /* 防止高度抖动 */ height:auto !important;max-height:none !important;/* font-weight:lighter;*/ /* 细体 */ font-style:italic;/* 斜体 */}/* 编辑器中的blockquote样式 - 与知识库项目完全一致 */ .ql-editor blockquote{margin:0 !important;margin-top:0 !important;margin-bottom:0 !important;padding:1rem !important;background:rgba(156,163,175,0.1) !important;border-left:3px solid #c4c9d0 !important;border-radius:4px !important;color:var(--text-secondary,#6b7280) !important;font-style:italic !important;font-size:0.875rem !important;line-height:1.6 !important;position:relative !important;}/* 连续的引用块合并样式 - 完全按照知识库项目实现 */ .ql-editor blockquote + blockquote{margin-top:0 !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;padding-top:0.2rem !important;}/* 浏览器支持:has()的情况 */ @supports selector(:has(+ *)){.ql-editor blockquote:has(+ blockquote){margin-bottom:0 !important;border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;padding-bottom:0.2rem !important;}}/* 浏览器不支持:has()的情况，使用JS类名控制 */ .ql-editor .blockquote-group{margin:0 !important;margin-top:0 !important;margin-bottom:0 !important;background:rgba(156,163,175,0.1) !important;border-left:3px solid var(--primary-color,#3b82f6) !important;border-radius:4px !important;overflow:hidden !important;}.ql-editor .blockquote-group blockquote{margin:0 !important;border:none !important;background:transparent !important;border-radius:0 !important;padding:0.75rem 1rem !important;font-size:0.875rem !important;}.ql-editor .blockquote-group blockquote + blockquote{margin-top:0 !important;padding-top:0.75rem !important;}/* 暗色主题下的编辑器内容样式 */ .dark .ql-editor blockquote{background:rgba(75,85,99,0.2) !important;border-left-color:#4b5563 !important;}.dark .ql-editor .blockquote-group{background:rgba(75,85,99,0.2) !important;border-left-color:var(--primary-color,#3b82f6) !important;}/* 暗色主题下的代码块基础样式 - 与知识库项目保持一致 */ [data-theme="dark"] .ql-editor .ql-code-block,[data-theme="dark"] .ql-editor .ql-code-block-container,[data-theme="dark"] .ql-editor .editor-code-block,[data-theme="dark"] .ql-editor .editor-content-code-block{background-color:#2d3748 !important;/* 与基础样式保持一致 */ color:#c9d1d9 !important;/* 与基础样式保持一致 */}/* 移动端适配 - 基于知识库项目优化 */ @media (max-width:1023px){.ql-toolbar.ql-snow{padding:1rem !important;flex-wrap:wrap !important;gap:0.25rem !important;}.ql-toolbar.ql-snow .ql-formats{margin-right:0.5rem !important;margin-bottom:0.25rem !important;}.ql-toolbar.ql-snow button,.ql-toolbar.ql-snow .ql-picker{width:32px !important;height:32px !important;margin:0 0.125rem !important;}.ql-toolbar.ql-snow .ql-picker-label{min-width:32px !important;height:32px !important;font-size:12px !important;}.ql-toolbar.ql-snow .ql-header .ql-picker-label{min-width:65px !important;}.ql-toolbar.ql-snow .ql-size .ql-picker-label{min-width:70px !important;}/* 移动端下拉框智能定位 - 根据按钮位置决定对齐方式 */ /* 字体大小和标题选择器（工具栏右侧）- 使用右对齐，向左延伸 */ .ql-toolbar.ql-snow .ql-size .ql-picker-options{left:auto !important;right:0 !important;}/* 颜色选择器（工具栏左侧）- 使用左对齐，向右延伸 */ .ql-toolbar.ql-snow .ql-header .ql-picker-options,.ql-toolbar.ql-snow .ql-color .ql-picker-options,.ql-toolbar.ql-snow .ql-background .ql-picker-options{left:0 !important;right:auto !important;}/* 移动端粘性工具栏优化 */ .ql-toolbar.sticky{left:0.75rem !important;width:calc(100% - 1.5rem) !important;padding:0.5rem !important;box-sizing:border-box !important;}/* 弹框内移动端粘性工具栏 */ .utils-dialog .ql-toolbar.sticky{left:0.75rem !important;width:calc(100% - 1.5rem) !important;padding:0.75rem 1rem !important;}.ql-editor{min-height:150px !important;padding:0.75rem !important;}/* 移动端代码块样式适配 - 精确匹配知识库项目 */ .ql-editor .ql-code-block,.ql-editor .editor-code-block,.ql-editor .editor-content-code-block{font-size:0.75rem !important;/* 移动端保持与桌面端相同的字体大小 */ padding:0.375rem !important;/* 精确匹配知识库项目的移动端内边距 */ margin:0.125rem 0 !important;/* 精确匹配知识库项目的移动端外边距 */ line-height:1.3 !important;/* 移动端更紧凑的行高 */}.ql-editor .ql-code-block-container{font-size:0.75rem !important;/* 移动端容器字体大小调整 */ padding:0.5rem !important;/* 精确匹配知识库项目的移动端容器内边距 */ margin:0.125rem 0 !important;/* 精确匹配知识库项目的移动端容器外边距 */}}/* 图片拖拽调整样式 */ .ql-editor img[data-drag-resize-enabled]{transition:filter 0.2s ease,box-shadow 0.2s ease !important;cursor:pointer !important;}.ql-editor img[data-drag-resize-enabled]:hover{filter:brightness(1.05) !important;}.ql-editor img[data-drag-resize-enabled].image-selected{filter:brightness(1.1) !important;box-shadow:0 0 0 2px var(--primary-color,#3b82f6),0 0 8px rgba(59,130,246,0.3) !important;}.resize-handle{position:absolute !important;width:10px !important;height:10px !important;background:var(--primary-color,#3b82f6) !important;border:2px solid white !important;border-radius:50% !important;z-index:1000 !important;opacity:1 !important;transition:opacity 0.2s ease,transform 0.1s ease !important;box-shadow:0 2px 4px rgba(0,0,0,0.2) !important;}.resize-handle:hover{transform:scale(1.2) !important;background:var(--primary-hover,#2563eb) !important;}/* 拖拽时的全局样式 */ body.resizing{user-select:none !important;cursor:inherit !important;}body.resizing *{pointer-events:none !important;}body.resizing .resize-handle{pointer-events:auto !important;}/* 拖拽时的尺寸信息显示 */ .resize-info{position:fixed !important;top:20px !important;right:20px !important;background:rgba(0,0,0,0.8) !important;color:white !important;padding:8px 12px !important;border-radius:4px !important;font-size:12px !important;font-family:'Monaco','Menlo','Ubuntu Mono',monospace !important;z-index:10000 !important;pointer-events:none !important;box-shadow:0 4px 12px rgba(0,0,0,0.3) !important;backdrop-filter:blur(4px) !important;}/* 移动端图片调整优化 */ @media (max-width:1023px){.resize-handle{width:16px !important;height:16px !important;border-width:3px !important;}.resize-info{top:50px !important;right:10px !important;font-size:14px !important;padding:10px 15px !important;}}/* 有序列表重新计数规则优化 - 基于知识库项目完全一致的实现 */ /* 编辑器标题元素创建新的计数器作用域 */ .ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:level1;}/* 编辑器重置所有列表样式 */ .ql-editor ol,.ql-editor ul{list-style:none !important;margin:0 !important;padding:0 !important;}/* 新的编辑器一级有序列表实现 - 只有h标签后才重置计数器 */ /* 所有一级有序列表项目都增加计数器 */ .ql-editor li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5){counter-increment:level1;counter-reset:level2 level3 level4 level5 level6;/* 每个一级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:2em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5)::before{content:counter(level1) ". ";font-weight:inherit;margin-left:-1.5em;display:inline-block;width:1.5em;}/* 关键修复：强制覆盖浏览器默认的ol计数器重置行为 */ .ql-editor ol{counter-reset:none !important;}/* 只有第一个ol才初始化计数器（无h标签场景） */ .ql-editor ol:first-of-type{counter-reset:level1 !important;}/* h标签后的ol重置计数器（有h标签场景） */ .ql-editor h1 + ol,.ql-editor h2 + ol,.ql-editor h3 + ol,.ql-editor h4 + ol,.ql-editor h5 + ol,.ql-editor h6 + ol,.ql-editor h1 + * + ol,.ql-editor h2 + * + ol,.ql-editor h3 + * + ol,.ql-editor h4 + * + ol,.ql-editor h5 + * + ol,.ql-editor h6 + * + ol{counter-reset:level1 !important;}/* 二级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-1{counter-increment:level2 !important;counter-reset:level3 level4 level5 level6 !important;/* 每个二级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:1em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-1::before{content:counter(level2,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 三级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-2{counter-increment:level3 !important;counter-reset:level4 level5 level6 !important;/* 每个三级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:0em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-2::before{content:counter(level3,lower-roman) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 四级有序列表 - 重置所有下级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-3{counter-increment:level4 !important;counter-reset:level5 level6 !important;/* 每个四级项都重置所有下级计数器 */ display:list-item !important;list-style:none !important;margin-left:8em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-3::before{content:counter(level4,upper-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 五级有序列表 - 重置六级计数器 */ .ql-editor li[data-list="ordered"].ql-indent-4{counter-increment:level5 !important;counter-reset:level6 !important;/* 每个五级项都重置六级计数器 */ display:list-item !important;list-style:none !important;margin-left:10em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-4::before{content:counter(level5) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 六级有序列表 */ .ql-editor li[data-list="ordered"].ql-indent-5{counter-increment:level6 !important;display:list-item !important;list-style:none !important;margin-left:12em !important;margin-bottom:0.5rem;line-height:1.6;}.ql-editor li[data-list="ordered"].ql-indent-5::before{content:counter(level6,lower-alpha) ". ";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 重置所有 Quill 默认的 .ql-ui:before 样式，防止与自定义样式冲突 */ .ql-editor li[data-list="ordered"] > .ql-ui:before{content:none !important;}/* 重置所有 Quill 默认的无序列表 .ql-ui:before 样式，防止重复显示 */ .ql-editor li[data-list="bullet"] > .ql-ui:before{content:none !important;}/* 编辑器无序列表样式 - 与有序列表保持完全一致的对齐 */ .ql-editor li[data-list="bullet"]{display:list-item !important;list-style:none !important;list-style-type:none !important;list-style-position:outside !important;margin-left:2em !important;margin-bottom:0.5rem;line-height:1.6;position:relative;}/* 确保移除所有可能的默认项目符号和Quill的默认样式 */ .ql-editor li[data-list="bullet"] *{list-style:none !important;}/* 移除可能的Quill默认伪元素 */ .ql-editor li[data-list="bullet"] .ql-ui{display:none !important;}.ql-editor li[data-list="bullet"]::before{content:"•";font-weight:inherit;margin-left:-1.5em;display:inline-block;width:1.5em;}.ql-editor li[data-list="bullet"].ql-indent-1{margin-left:1em !important;}.ql-editor li[data-list="bullet"].ql-indent-1::before{content:"◦";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}.ql-editor li[data-list="bullet"].ql-indent-2{margin-left:0em !important;}.ql-editor li[data-list="bullet"].ql-indent-2::before{content:"▪";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}.ql-editor li[data-list="bullet"].ql-indent-3{margin-left:8em !important;}.ql-editor li[data-list="bullet"].ql-indent-3::before{content:"•";font-weight:inherit;margin-left:-2em;display:inline-block;width:2em;}/* 删除编辑器中列表的下边距 */ .ql-editor ol,.ql-editor ul,.quill-editor ol,.quill-editor ul{margin-bottom:0 !important;}@media (max-width:1023px){.ql-editor li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5){margin-left:0.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="ordered"]:not(.ql-indent-1):not(.ql-indent-2):not(.ql-indent-3):not(.ql-indent-4):not(.ql-indent-5)::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="ordered"].ql-indent-1{margin-left:-0.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="ordered"].ql-indent-1::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="ordered"].ql-indent-2{margin-left:-2.5em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="ordered"].ql-indent-2::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="ordered"].ql-indent-3{margin-left:6.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="ordered"].ql-indent-3::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="ordered"].ql-indent-4{margin-left:7.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="ordered"].ql-indent-4::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="ordered"].ql-indent-5{margin-left:9.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="ordered"].ql-indent-5::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="bullet"]{margin-left:1.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="bullet"]::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="bullet"].ql-indent-1{margin-left:-0.8em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="bullet"].ql-indent-1::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="bullet"].ql-indent-2{margin-left:-2.5em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="bullet"].ql-indent-2::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}.ql-editor li[data-list="bullet"].ql-indent-3{margin-left:6.3em !important;margin-bottom:0.5rem !important;line-height:1.6 !important;}.ql-editor li[data-list="bullet"].ql-indent-3::before{margin-left:-1.5em !important;width:1.5em !important;display:inline-block !important;text-align:left !important;}}#clearSearchBtn{z-index:99999 !important;pointer-events:all !important;cursor:pointer !important;width:20px !important;height:20px !important;position:absolute !important;right:10px !important;top:10px !important;display:flex !important;align-items:center !important;justify-content:center !important;background-color:rgba(0,0,0,0.05) !important;border-radius:50% !important;padding:0 !important;}#searchInput{padding-right:40px !important;}#clearSearchBtn i{display:block !important;text-align:center !important;width:100% !important;margin:0 !important;padding:0 !important;}#clearSearchBtn:hover{background-color:rgba(0,0,0,0.1) !important;}.task-form-content{@apply w-full max-w-2xl mx-auto;}@media (max-width:640px){.task-form-content{@apply px-4;}.task-form-content .grid{@apply grid-cols-1 gap-4;}.task-form-content .due-date-option-container{@apply flex-col items-start space-y-2 pt-2;}.task-form-content .due-date-option-container > div{@apply w-full justify-between;}.subtask-item{@apply flex-col;}.subtask-item .flex-1{@apply w-full;}.subtask-item .flex-1 > div{@apply flex-col w-full;}.subtask-item input[type="date"]{@apply w-full;}.subtask-item .flex.items-center.gap-2{@apply justify-between mt-2;}}.subtask-item{@apply transition-all duration-200;}.subtask-item.sortable-ghost{@apply opacity-50 bg-gray-100 dark:bg-gray-600;}.subtask-item.sortable-chosen{@apply shadow-lg;}.subtask-drag-handle{@apply cursor-grab active:cursor-grabbing;}.task-form-content > div{@apply mb-4;}.task-form-content input:not([type="checkbox"]),.task-form-content textarea,.task-form-content select{@apply w-full transition-all duration-200;}.task-form-content label{@apply block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1;}#subtaskList{@apply space-y-3 bg-gray-50 dark:bg-gray-800 p-3 rounded-lg border border-gray-100 dark:border-gray-700 min-h-[50px];overflow-y:auto;}html,body{overscroll-behavior-y:none;-webkit-overscroll-behavior-y:none;}body.gesture-disabled{overflow:hidden !important;touch-action:none;position:relative;}body.gesture-disabled .utils-dialog .overflow-y-auto,body.gesture-disabled .ios-dialog-overlay .overflow-y-auto,body.gesture-disabled #category-dialog-content,body.gesture-disabled div[id*="dialog"] .overflow-y-auto{overflow-y:auto !important;-webkit-overflow-scrolling:touch !important;overscroll-behavior-y:contain !important;-webkit-overscroll-behavior-y:contain !important;}body.gesture-disabled .utils-dialog,body.gesture-disabled .ios-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:50;}#category-dialog-content{overflow-y:auto;max-height:60vh;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain;-webkit-overscroll-behavior-y:contain;}#mainContentArea{overflow-y:auto !important;-webkit-overflow-scrolling:touch !important;height:100%;overscroll-behavior-y:contain !important;-webkit-overscroll-behavior-y:contain !important;}body:not(.gesture-disabled){overflow-y:auto !important;overflow-x:hidden;height:100%;}#todoContainer{overflow-y:visible !important;}@media (max-width:1023px){body:not(.gesture-disabled){touch-action:manipulation;overflow-x:hidden;overflow-y:auto !important;}#mainContentArea{height:auto;min-height:calc(100dvh - 12rem);overflow-y:auto !important;-webkit-overflow-scrolling:touch !important;}#todoContainer{-webkit-overflow-scrolling:touch;overflow-y:visible;}#todoContainer .task-section{overflow:visible;}#inProgressTasksContainer,#completedTasksContainer{overflow:visible;}}.category-tree{@apply space-y-1;}.category-tree-item{@apply transition-all duration-200;}.category-tree-item .category-tree-content{@apply flex items-center justify-between pr-2 rounded-lg overflow-visible relative;}.category-tree-item.level-2 > .category-tree-content{@apply ml-5;}.category-tree-item.level-3 > .category-tree-content{@apply ml-10;}.category-tree-item.has-parent::before{content:"";@apply absolute h-8 w-4 border-l-2 border-b-2 border-gray-200 dark:border-gray-700 rounded-bl-lg left-2;transform:translateY(-50%);}.category-tree-item.level-2.has-parent::before{@apply left-0;}.category-tree-item.level-3.has-parent::before{@apply left-5;}.category-toggle-btn{@apply p-1 text-gray-500 hover:text-primary transition-transform duration-300 ease-in-out;}.category-toggle-btn.expanded{transform:rotate(90deg);}.category-children{@apply overflow-hidden transition-all duration-300 ease-in-out ml-4;max-height:0;}.category-children.expanded{max-height:5000px;}.category-item.selected{@apply bg-blue-100 dark:bg-blue-900/30 text-blue-800 dark:text-blue-200;}.category-actions{@apply flex items-center opacity-0 group-hover:opacity-100 transition-opacity duration-200;}.category-action-btn{@apply p-1 text-gray-500 hover:text-primary transition-colors;}.category-action-btn.disabled{@apply opacity-50 cursor-not-allowed;}.category-tree-select{@apply w-full p-2 border border-gray-300 dark:border-gray-700 rounded-lg bg-white dark:bg-gray-800 max-h-60 overflow-y-auto;}.category-tree-select .category-tree-item{@apply py-1 cursor-pointer;}.category-tree-select .category-tree-item:hover{@apply bg-gray-100 dark:bg-gray-700;}.category-tree-select .category-tree-item.selected{@apply bg-blue-100 dark:bg-blue-900/30;}.category-tree-multiselect .category-tree-item{@apply flex items-center;}.category-tree-multiselect .checkbox-container{@apply mr-2;}@media (prefers-color-scheme:dark){.dark input[type="text"],.dark input[type="date"],.dark input[type="number"],.dark input[type="password"],.dark input[type="email"],.dark select,.dark textarea{background-color:#1f2937 !important;color:#e5e7eb !important;}.dark select option{background-color:#1f2937 !important;color:#e5e7eb !important;}.dark .ql-toolbar.ql-snow,.dark .ql-container.ql-snow,.dark .ql-editor{background-color:#1f2937 !important;color:#e5e7eb !important;border-color:#4b5563 !important;}.dark .ql-toolbar.ql-snow{border-bottom-color:#4b5563 !important;}.dark .ql-toolbar.ql-snow .ql-picker-label,.dark .ql-toolbar.ql-snow .ql-picker-options{background-color:#1f2937 !important;color:#e5e7eb !important;}.dark .ql-toolbar.ql-snow .ql-stroke{stroke:#e5e7eb !important;}.dark .ql-toolbar.ql-snow .ql-fill{fill:#e5e7eb !important;}.dark .ql-toolbar.ql-snow .ql-picker{color:#e5e7eb !important;}.dark .dialog-body input[type="password"],.dark .dialog-body input[type="email"],.dark .dialog-content input[type="password"],.dark .dialog-content input[type="email"],.dark .utils-dialog input[type="password"],.dark .utils-dialog input[type="email"],.dark .utils-dialog input[type="text"]{background-color:#1f2937 !important;color:#e5e7eb !important;border-color:#4b5563 !important;}}html.dark input[type="text"],html.dark input[type="date"],html.dark input[type="number"],html.dark input[type="password"],html.dark input[type="email"],html.dark select,html.dark textarea{background-color:#1f2937 !important;color:#e5e7eb !important;}html.dark select option{background-color:#1f2937 !important;color:#e5e7eb !important;}html.dark .ql-toolbar.ql-snow,html.dark .ql-container.ql-snow,html.dark .ql-editor{background-color:#1f2937 !important;color:#e5e7eb !important;border-color:#4b5563 !important;}html.dark .ql-toolbar.ql-snow{border-bottom-color:#4b5563 !important;}html.dark .ql-toolbar.ql-snow .ql-picker-label,html.dark .ql-toolbar.ql-snow .ql-picker-options{background-color:#1f2937 !important;color:#e5e7eb !important;}html.dark .ql-toolbar.ql-snow .ql-stroke{stroke:#e5e7eb !important;}html.dark .ql-toolbar.ql-snow .ql-fill{fill:#e5e7eb !important;}html.dark .ql-toolbar.ql-snow .ql-picker{color:#e5e7eb !important;}html.dark .dialog-body input[type="password"],html.dark .dialog-body input[type="email"],html.dark .dialog-content input[type="password"],html.dark .dialog-content input[type="email"],html.dark .utils-dialog input[type="password"],html.dark .utils-dialog input[type="email"],html.dark .utils-dialog input[type="text"]{background-color:#1f2937 !important;color:#e5e7eb !important;border-color:#4b5563 !important;}.dark #taskTitle,.dark #taskDueDate,.dark #taskPriority,.dark #taskCategory,.dark #taskDisplayOrder,.dark #taskDescription{background-color:#1f2937 !important;color:#e5e7eb !important;}.dark .dialog input,.dark .dialog select,.dark .dialog textarea,.dark [role="dialog"] input,.dark [role="dialog"] select,.dark [role="dialog"] textarea,.dark .dialog-body input,.dark .dialog-body select,.dark .dialog-body textarea,.dark .dialog-content input,.dark .dialog-content select,.dark .dialog-content textarea{background-color:#1f2937 !important;color:#e5e7eb !important;border-color:#4b5563 !important;}.dark .form-checkbox,.dark .form-radio{background-color:#1f2937 !important;border-color:#4b5563 !important;}.dark .custom-scrollbar,.dark .space-y-2.overflow-y-auto,.dark .bg-gray-50.dark\:bg-gray-700{background-color:#1f2937 !important;}.dark fieldset,.dark .form-group{background-color:transparent !important;}.dark .form-group .space-y-2.overflow-y-auto.custom-scrollbar{background-color:#1f2937 !important;border-color:#4b5563 !important;}.dark input[type="checkbox"].form-checkbox,.dark input[type="radio"].form-radio,.dark input[name="currentWeekReportCategory"],.dark input[name="previousWeekReportCategory"],.dark input[name="currentWeekReportStatus"],.dark input[name="previousWeekReportStatus"],.dark input[name="currentWeekReportDueDate"],.dark input[name="previousWeekReportDueDate"]{background-color:#1f2937 !important;border-color:#4b5563 !important;}.dark input[type="checkbox"]:checked,.dark input[type="radio"]:checked{background-color:#3b82f6 !important;border-color:#3b82f6 !important;}input[type="text"]:focus,input[type="number"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="search"]:focus,textarea:focus,select:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:2px solid transparent !important;outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}#taskTitle:focus,#taskDisplayOrder:focus,#subtaskTitle:focus,.milestone-title-input:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:2px solid transparent !important;outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.utils-dialog input[type="text"]:focus,.utils-dialog input[type="number"]:focus,.utils-dialog input[type="password"]:focus,.utils-dialog input[type="email"]:focus,.utils-dialog input[type="search"]:focus,.utils-dialog textarea:focus,.utils-dialog select:focus,.task-form-content input[type="text"]:focus,.task-form-content input[type="number"]:focus,.task-form-content input[type="password"]:focus,.task-form-content input[type="email"]:focus,.task-form-content input[type="search"]:focus,.task-form-content textarea:focus,.task-form-content select:focus{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:2px solid transparent !important;outline-offset:2px !important;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;}.color-picker-container{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;}.color-option{width:30px;height:30px;border-radius:50%;cursor:pointer;transition:all 0.2s ease;position:relative;}.color-option:hover{transform:scale(1.1);box-shadow:0 2px 5px rgba(0,0,0,0.2);}.color-option.selected{box-shadow:0 0 0 2px #fff,0 0 0 4px #333;}.dark .color-option.selected{box-shadow:0 0 0 2px #333,0 0 0 4px #fff;}.custom-color-input{margin-top:10px;display:flex;align-items:center;}.custom-color-input input[type="color"]{width:40px;height:40px;border:none;border-radius:8px;background:none;cursor:pointer;padding:0;}.custom-color-input input[type="text"]{margin-left:10px;width:100px;padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:14px;}.dark .custom-color-input input[type="text"]{background-color:#374151;border-color:#4B5563;color:#F9FAFB;}.color-preview{display:inline-block;width:24px;height:24px;border-radius:50%;margin-right:8px;vertical-align:middle;}/** * 会员模块样式 */ .member-icon{color:#F59E0B;margin-right:0.25rem;}.member-badge{display:inline-flex;align-items:center;background:linear-gradient(135deg,#FEF3C7,#FDE68A);color:#B45309;padding:0.125rem 0.5rem;border-radius:9999px;font-size:0.75rem;font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,0.05);}.dark .member-badge{background:linear-gradient(135deg,#92400E,#B45309);color:#FEF3C7;}.membership-button{background:linear-gradient(135deg,#F59E0B,#D97706);color:white;border-radius:0.375rem;padding:0.5rem 1rem;font-weight:500;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center;width:100%;}.membership-button:hover{opacity:0.9;transform:translateY(-1px);}.membership-button:active{transform:translateY(0);}.membership-button-normal{background:linear-gradient(135deg,#E5E7EB,#D1D5DB);color:#374151;}.dark .membership-button-normal{background:linear-gradient(135deg,#4B5563,#374151);color:#E5E7EB;}.membership-modal{border-radius:0.5rem;overflow:hidden;}.membership-modal-header{background:linear-gradient(135deg,#F59E0B,#D97706);color:white;padding:1rem;text-align:center;}.membership-plan{border:1px solid #E5E7EB;border-radius:0.5rem;padding:1rem;transition:all 0.2s ease;}.membership-plan:hover{border-color:#F59E0B;box-shadow:0 4px 6px rgba(245,158,11,0.1);transform:translateY(-2px);}.membership-plan.selected{border-color:#F59E0B;background-color:rgba(245,158,11,0.05);}.dark .membership-plan{border-color:#4B5563;}.dark .membership-plan:hover,.dark .membership-plan.selected{border-color:#F59E0B;background-color:rgba(245,158,11,0.1);}.plan-badge{background-color:#F59E0B;color:white;font-size:0.75rem;padding:0.125rem 0.5rem;border-radius:9999px;position:absolute;top:-0.5rem;right:1rem;}.plan-price{font-size:1.5rem;font-weight:700;color:#F59E0B;}.dark .plan-price{color:#FBBF24;}.membership-required-badge{display:inline-flex;align-items:center;margin-left:0.5rem;padding:0.125rem 0.375rem;background-color:#f3f4f6;color:#9ca3af;border-radius:0.25rem;font-size:0.75rem;font-weight:500;}.dark .membership-required-badge{background-color:#374151;color:#9ca3af;}.membership-required-badge svg{margin-right:0.25rem;width:0.875rem;height:0.875rem;}.price-tag{position:relative;display:inline-block;background:linear-gradient(to right,#fbbf24,#f59e0b);color:white;padding:0.25rem 0.5rem;border-radius:0.25rem;font-weight:600;font-size:0.875rem;box-shadow:0 1px 2px 0 rgba(0,0,0,0.05);}.dark .price-tag{background:linear-gradient(to right,#d97706,#b45309);}.price-tag::after{content:'';position:absolute;top:50%;right:-4px;transform:translateY(-50%);width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #f59e0b;}.dark .price-tag::after{border-left-color:#b45309;}.enhanced-date-wrapper{position:relative;display:inline-block;vertical-align:middle;width:100%;isolation:isolate;will-change:auto;z-index:0;}span[class*="absolute"][class*="left-3"][class*="text-red-500"]{z-index:9999 !important;transform:translateZ(0) !important;will-change:auto !important;backface-visibility:hidden !important;-webkit-backface-visibility:hidden !important;position:absolute !important;}.subtask-item span[class*="absolute"][class*="left-3"][class*="text-red-500"]{z-index:10000 !important;isolation:isolate !important;}.utils-dialog span[class*="absolute"][class*="left-3"][class*="text-red-500"],.task-form-content span[class*="absolute"][class*="left-3"][class*="text-red-500"]{z-index:15000 !important;transform:translate3d(0,0,0) !important;animation:none !important;transition:none !important;}.milestone-wrapper{contain:layout;will-change:auto;}.enhanced-date-wrapper input[type="date"]{cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;}.enhanced-date-wrapper input[type="date"]:disabled{cursor:not-allowed;opacity:0.6;pointer-events:none;}.enhanced-date-wrapper:has(input[type="date"]:disabled){cursor:not-allowed;pointer-events:none;}.enhanced-date-wrapper input[type="date"]::-webkit-calendar-picker-indicator{opacity:0;position:absolute;right:0;width:100%;height:100%;cursor:pointer;z-index:2;}.enhanced-date-wrapper input[type="date"]::-moz-focus-inner{border:0;}.enhanced-date-wrapper input[type="date"]::-ms-clear,.enhanced-date-wrapper input[type="date"]::-ms-reveal{display:none;}.enhanced-date-wrapper:has(input[type="date"]:disabled) svg{opacity:0.5;}.enhanced-date-wrapper .absolute.inset-y-0.right-0{pointer-events:none;z-index:1;}@media (max-width:640px){.enhanced-date-wrapper input[type="date"]{font-size:16px;touch-action:manipulation;}}.dark .enhanced-date-wrapper svg{color:#9CA3AF;}.enhanced-date-wrapper:hover:not(:has(input[type="date"]:disabled)) svg{color:#6B7280;}.dark .enhanced-date-wrapper:hover:not(:has(input[type="date"]:disabled)) svg{color:#D1D5DB;}.enhanced-date-wrapper:has(input[type="date"]:focus) svg{color:#3B82F6;}.enhanced-date-wrapper:has(input[type="date"]:focus) input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}.dark .enhanced-date-wrapper:has(input[type="date"]:focus) input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}.enhanced-date-wrapper[data-date-picker-type="main-task"]:has(input[type="date"]:focus) input[type="date"],.enhanced-date-wrapper[data-date-picker-type="milestone"]:has(input[type="date"]:focus) input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}.utils-dialog .enhanced-date-wrapper:has(input[type="date"]:focus) input[type="date"],.task-form-content .enhanced-date-wrapper:has(input[type="date"]:focus) input[type="date"]{border-color:var(--primary-color,#3b82f6) !important;box-shadow:0 0 0 1px var(--primary-color,#3b82f6) !important;outline:none !important;}.enhanced-date-wrapper input[type="date"]{-webkit-appearance:none;-moz-appearance:textfield;appearance:none;}.enhanced-date-wrapper input[type="date"]{padding-right:0.1rem;}.enhanced-date-wrapper{flex:1;min-width:0;}.enhanced-date-wrapper{z-index:auto;}.dialog .enhanced-date-wrapper,.modal .enhanced-date-wrapper{position:relative;z-index:1;}.enhanced-date-wrapper[data-date-picker-type="main-task"]{z-index:2;}.enhanced-date-wrapper[data-date-picker-type="milestone"]{z-index:1;}.enhanced-date-wrapper[data-processing="true"]{pointer-events:auto !important;z-index:10;}.utils-dialog .enhanced-date-wrapper[data-date-picker-type="milestone"]{isolation:isolate;contain:layout style;}.utils-dialog .enhanced-date-wrapper[data-date-picker-type="main-task"]{isolation:isolate;contain:layout style;}.utils-dialog .subtask-item .relative,.task-form-content .subtask-item .relative{position:relative;z-index:auto;contain:layout;}
