/* 编辑器区域滚动条 */ #yaml-editor::-webkit-scrollbar, #frequency-editor::-webkit-scrollbar, #timeline-editor::-webkit-scrollbar, #yaml-backdrop::-webkit-scrollbar, #frequency-backdrop::-webkit-scrollbar, #timeline-backdrop::-webkit-scrollbar { width: 10px; height: 10px; } #yaml-editor::-webkit-scrollbar-track, #frequency-editor::-webkit-scrollbar-track, #timeline-editor::-webkit-scrollbar-track, #yaml-backdrop::-webkit-scrollbar-track, #frequency-backdrop::-webkit-scrollbar-track, #timeline-backdrop::-webkit-scrollbar-track { background: #1e1e1e; } #yaml-editor::-webkit-scrollbar-thumb, #frequency-editor::-webkit-scrollbar-thumb, #timeline-editor::-webkit-scrollbar-thumb, #yaml-backdrop::-webkit-scrollbar-thumb, #frequency-backdrop::-webkit-scrollbar-thumb, #timeline-backdrop::-webkit-scrollbar-thumb { background: #424242; border-radius: 0; } #yaml-editor::-webkit-scrollbar-thumb:hover, #frequency-editor::-webkit-scrollbar-thumb:hover, #timeline-editor::-webkit-scrollbar-thumb:hover, #yaml-backdrop::-webkit-scrollbar-thumb:hover, #frequency-backdrop::-webkit-scrollbar-thumb:hover, #timeline-backdrop::-webkit-scrollbar-thumb:hover { background: #4f4f4f; } /* 高亮编辑器容器 */ .highlight-editor-wrap { position: relative; flex: 1; display: flex; overflow: hidden; } /* 高亮背景层 */ .highlight-backdrop { position: absolute; top: 0; left: 0; right: 0; bottom: 0; padding: 1rem; margin: 0; border: none; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.75rem; line-height: 1.625; white-space: pre-wrap; word-wrap: break-word; overflow: auto; background: #1e1e1e; color: #d4d4d4; pointer-events: none; z-index: 1; } /* 透明输入层 */ .highlight-textarea { position: absolute; top: 0; left: 0; right: 0; bottom: 0; padding: 1rem; margin: 0; border: none; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 0.75rem; line-height: 1.625; overflow: auto; background: transparent; color: transparent; caret-color: #d4d4d4; resize: none; outline: none; z-index: 2; } /* 注释样式 - 灰色 */ .syntax-comment { color: #6a9955; } /* 右侧面板滚动条 */ #modules-container::-webkit-scrollbar { width: 8px; } #modules-container::-webkit-scrollbar-track { background: transparent; } #modules-container::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } /* 模块卡片样式 */ .module-card { background: white; border-radius: 0.5rem; /* rounded-lg */ border: 1px solid #e5e7eb; /* border-gray-200 */ overflow: hidden; transition: all 0.2s; } /* 激活态(可编辑) */ .module-card.active { box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); } .module-card.active:hover { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); border-color: #bfdbfe; /* blue-200 */ } .module-card.active .module-header { background-color: #fff; border-bottom: 1px solid #f3f4f6; color: #111827; } /* 禁用态(灰色/只读) */ .module-card.disabled { background-color: #f9fafb; /* gray-50 */ opacity: 0.8; } .module-card.disabled .module-header { background-color: #f3f4f6; /* gray-100 */ color: #6b7280; /* gray-500 */ cursor: not-allowed; } .module-card.disabled .module-body { display: none; } .module-card.disabled .locked-badge { display: inline-flex; } /* 输入控件统一 */ input[type="text"], input[type="password"], input[type="number"], select { font-size: 0.875rem; /* text-sm */ line-height: 1.25rem; padding: 0.5rem 0.75rem; border-radius: 0.375rem; border-width: 1px; border-color: #d1d5db; /* gray-300 */ width: 100%; outline: 2px solid transparent; transition: all 0.15s; } input:focus, select:focus { border-color: #3b82f6; /* blue-500 */ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2); } /* 开关样式 (Checkbox Toggle) */ .toggle-checkbox:checked { right: 0; border-color: #3b82f6; } .toggle-checkbox:checked + .toggle-label { background-color: #3b82f6; } /* 列表样式 (Platforms & RSS & Sortable) */ .sortable-list-item { background: #f8fafc; border: 1px solid #e2e8f0; margin-bottom: 0.5rem; border-radius: 0.375rem; transition: all 0.2s; } .sortable-list-item:hover { border-color: #cbd5e1; background: #f1f5f9; } .sortable-handle { cursor: grab; color: #94a3b8; } .sortable-handle:hover { color: #64748b; } .sortable-ghost { background: #e2e8f0; opacity: 0.5; } /* 禁用状态的勾选框 */ input[type="checkbox"]:disabled { cursor: not-allowed; opacity: 0.5; } /* Tab 切换样式 */ .tab-button { transition: all 0.2s; } .tab-button.active { color: #d4d4d4; border-color: #3b82f6; } .tab-content.hidden { display: none; } /* 标签输入样式 */ .tag-input-container { display: flex; flex-wrap: wrap; gap: 0.5rem; padding: 0.5rem; border: 1px solid #d1d5db; border-radius: 0.375rem; background: white; min-height: 42px; } .tag-item { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.25rem 0.5rem; background: #3b82f6; color: white; border-radius: 0.25rem; font-size: 0.875rem; } .tag-item button { background: none; border: none; color: white; cursor: pointer; padding: 0; font-size: 1rem; line-height: 1; } .tag-input { flex: 1; border: none; outline: none; min-width: 120px; font-size: 0.875rem; } /* 词组卡片样式 */ .word-group-card { background: white; border: 1px solid #e5e7eb; border-radius: 0.5rem; padding: 1rem; transition: all 0.2s; } .word-group-card:hover { border-color: #3b82f6; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } /* 插入区域样式 */ .insert-zone { position: relative; height: 8px; margin: 0.5rem 0; display: flex; align-items: center; justify-content: center; transition: all 0.2s; } .insert-zone:hover { height: 32px; } .insert-button { opacity: 0; visibility: hidden; width: 32px; height: 32px; border-radius: 50%; background: linear-gradient(135deg, #3b82f6, #2563eb); color: white; border: 2px solid white; box-shadow: 0 2px 8px rgba(59, 130, 246, 0.4); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all 0.2s; font-size: 14px; } .insert-zone:hover .insert-button { opacity: 1; visibility: visible; } .insert-button:hover { transform: scale(1.1); box-shadow: 0 4px 12px rgba(59, 130, 246, 0.6); background: linear-gradient(135deg, #2563eb, #1d4ed8); } .insert-button:active { transform: scale(0.95); } /* 编辑区域恢复默认鼠标样式 */ .word-group-card .editable-area { cursor: default; } .word-group-card .editable-area input { cursor: text; } .word-group-card .editable-area button { cursor: pointer; } .word-group-card .editable-area .tag-item { cursor: pointer; } /* 拖拽手柄样式 */ .drag-handle { cursor: grab; transition: all 0.2s; } .drag-handle:active { cursor: grabbing; } /* SortableJS 拖拽样式 */ .sortable-ghost { opacity: 0.4; background: #dbeafe; border: 2px dashed #3b82f6; } .sortable-chosen { background: #f0f9ff; border-color: #3b82f6; } .sortable-drag { opacity: 0.8; box-shadow: 0 10px 20px rgba(0,0,0,0.2); transform: rotate(2deg); } /* 独立区域复选框组 */ .checkbox-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 0.75rem; } .checkbox-card { display: flex; align-items: center; padding: 0.5rem; border: 1px solid #e5e7eb; border-radius: 0.375rem; background-color: #fff; cursor: pointer; transition: all 0.15s; } .checkbox-card:hover { border-color: #93c5fd; background-color: #eff6ff; } .checkbox-card input:checked + span { color: #2563eb; font-weight: 500; } /* ========================================== 拖拽上传遮罩层 ========================================== */ .drop-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(59, 130, 246, 0.9); display: flex; align-items: center; justify-content: center; z-index: 100; pointer-events: all; } .drop-overlay.hidden { display: none; } .drop-overlay-content { text-align: center; color: white; } .drop-overlay-content i { font-size: 3rem; margin-bottom: 0.5rem; animation: bounce 1s infinite; } @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } /* ========================================== Toast 提示 ========================================== */ .toast-notification { position: fixed; bottom: 24px; right: 24px; display: flex; align-items: center; gap: 0.75rem; padding: 0.875rem 1.25rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 500; box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); z-index: 9999; opacity: 0; transform: translateY(20px); transition: all 0.3s ease; } .toast-notification.show { opacity: 1; transform: translateY(0); } .toast-notification i { font-size: 1.125rem; } /* Toast 类型样式 */ .toast-success { background: #10b981; color: white; } .toast-error { background: #ef4444; color: white; } .toast-info { background: #3b82f6; color: white; } .toast-warning { background: #f59e0b; color: white; } /* ========================================== 弹窗样式 ========================================== */ .modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; } .modal-overlay.hidden { display: none; } .modal-content { background: white; border-radius: 0.75rem; padding: 1.5rem; max-width: 450px; width: 90%; max-height: 90vh; overflow-y: auto; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); } /* 弹簧跳动动画 */ @keyframes spring-in { 0% { transform: scale(0.5); opacity: 0; } 60% { transform: scale(1.1); } 80% { transform: scale(0.95); } 100% { transform: scale(1); opacity: 1; } } .support-modal-content { animation: spring-in 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275); background: #ffffff; border: none; border-radius: 1.5rem; } /* ========================================== Timeline 编辑器样式 ========================================== */ /* 预设模式选择卡片 */ .tl-preset-card { border: 2px solid #e5e7eb; border-radius: 0.75rem; padding: 0.875rem; cursor: pointer; transition: all 0.2s; background: white; position: relative; } .tl-preset-card:hover { border-color: #93c5fd; background: #f0f7ff; } .tl-preset-card.selected { border-color: #3b82f6; background: #eff6ff; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15); } .tl-preset-card .tl-card-icon { width: 2rem; height: 2rem; border-radius: 0.5rem; display: flex; align-items: center; justify-content: center; font-size: 0.875rem; flex-shrink: 0; } .tl-preset-card .tl-recommend-badge { position: absolute; top: -1px; right: -1px; background: linear-gradient(135deg, #f59e0b, #ef4444); color: white; font-size: 0.625rem; font-weight: 700; padding: 0.125rem 0.5rem; border-radius: 0 0.625rem 0 0.5rem; } /* 周视图时间线 */ .tl-week-view { background: white; border: 1px solid #e5e7eb; border-radius: 0.75rem; padding: 1rem; overflow-x: auto; } .tl-week-row { display: flex; align-items: center; height: 2.25rem; margin-bottom: 0.25rem; } .tl-week-row:last-child { margin-bottom: 0; } .tl-day-label { width: 2.5rem; flex-shrink: 0; font-size: 0.6875rem; font-weight: 600; color: #6b7280; text-align: right; padding-right: 0.5rem; } .tl-day-label.today { color: #3b82f6; font-weight: 700; } .tl-timeline-bar { flex: 1; height: 1.75rem; background: #f1f5f9; border-radius: 0.25rem; position: relative; min-width: 480px; overflow: hidden; } .tl-period-block { position: absolute; top: 2px; bottom: 2px; border-radius: 0.1875rem; cursor: pointer; transition: filter 0.15s, transform 0.15s; display: flex; align-items: center; justify-content: center; overflow: hidden; z-index: 1; } .tl-period-block:hover { filter: brightness(1.1); transform: scaleY(1.15); z-index: 2; } .tl-period-block .tl-block-label { font-size: 0.5625rem; font-weight: 600; color: rgba(255,255,255,0.9); white-space: nowrap; text-overflow: ellipsis; overflow: hidden; padding: 0 0.25rem; text-shadow: 0 1px 2px rgba(0,0,0,0.2); } /* 时间段颜色 */ .tl-block-push { background: #3b82f6; } .tl-block-analyze { background: #8b5cf6; } .tl-block-push-analyze { background: #6366f1; } .tl-block-collect { background: #94a3b8; } .tl-block-silent { background: #cbd5e1; } /* 时间刻度 */ .tl-hour-markers { display: flex; padding-left: 2.5rem; margin-bottom: 0.25rem; } .tl-hour-marker { font-size: 0.5625rem; color: #9ca3af; text-align: center; } /* 图例 */ .tl-legend { display: flex; gap: 0.75rem; flex-wrap: wrap; padding-top: 0.5rem; border-top: 1px solid #f3f4f6; margin-top: 0.5rem; } .tl-legend-item { display: flex; align-items: center; gap: 0.25rem; font-size: 0.625rem; color: #6b7280; } .tl-legend-color { width: 0.75rem; height: 0.5rem; border-radius: 0.125rem; } /* 时间段 Tooltip */ .tl-tooltip { position: fixed; background: #1f2937; color: white; padding: 0.5rem 0.75rem; border-radius: 0.375rem; font-size: 0.75rem; z-index: 1000; pointer-events: none; box-shadow: 0 4px 12px rgba(0,0,0,0.2); max-width: 220px; } .tl-tooltip::after { content: ''; position: absolute; bottom: -4px; left: 50%; transform: translateX(-50%); border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #1f2937; } /* Custom 模式编辑面板 */ .tl-section-title { font-size: 0.75rem; font-weight: 700; color: #374151; display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.75rem; } .tl-section-title i { color: #3b82f6; font-size: 0.6875rem; } .tl-period-card { background: white; border: 1px solid #e5e7eb; border-radius: 0.5rem; padding: 0.75rem; transition: all 0.2s; } .tl-period-card:hover { border-color: #93c5fd; box-shadow: 0 2px 4px rgba(0,0,0,0.05); } .tl-toggle-row { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; } .tl-toggle-item { display: flex; align-items: center; gap: 0.375rem; font-size: 0.6875rem; color: #4b5563; } .tl-toggle-item.on { color: #2563eb; font-weight: 600; } .tl-toggle-item.off { color: #9ca3af; } /* Timeline 小型 toggle 开关 */ .tl-toggle-item .toggle-checkbox { width: 1rem; height: 1rem; border-width: 3px; } .tl-toggle-item .toggle-label { height: 1rem; } .tl-toggle-item .toggle-checkbox:checked { right: 0; border-color: #3b82f6; } .tl-toggle-item .toggle-checkbox:checked + .toggle-label { background-color: #3b82f6; } /* 日计划和周映射 */ .tl-dayplan-row { display: flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0; } .tl-dayplan-label { width: 3.5rem; font-size: 0.6875rem; font-weight: 600; color: #374151; flex-shrink: 0; } .tl-weekmap-select { font-size: 0.75rem; padding: 0.25rem 0.5rem; border: 1px solid #d1d5db; border-radius: 0.25rem; background: white; flex: 1; max-width: 200px; } .tl-weekmap-select:focus { border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2); outline: none; } /* Default 配置折叠面板 */ .tl-collapsible { border: 1px solid #e5e7eb; border-radius: 0.5rem; overflow: hidden; } .tl-collapsible-header { background: #f9fafb; padding: 0.625rem 0.75rem; cursor: pointer; display: flex; align-items: center; justify-content: space-between; font-size: 0.75rem; font-weight: 600; color: #4b5563; transition: background 0.15s; } .tl-collapsible-header:hover { background: #f3f4f6; } .tl-collapsible-body { padding: 0.75rem; border-top: 1px solid #e5e7eb; } .tl-collapsible-body.collapsed { display: none; } .tl-collapsible-header .fa-chevron-down { transition: transform 0.2s; } .tl-collapsible-header.is-collapsed .fa-chevron-down { transform: rotate(-90deg); } /* Timeline CRUD 新增样式 */ /* 预设卡片操作按钮 */ .tl-card-actions { display: none; position: absolute; top: 0.375rem; right: 0.375rem; gap: 0.25rem; z-index: 2; } .tl-preset-card:hover .tl-card-actions { display: flex; } .tl-card-action-btn { width: 1.5rem; height: 1.5rem; display: flex; align-items: center; justify-content: center; border-radius: 0.375rem; font-size: 0.625rem; color: #9ca3af; background: rgba(255,255,255,0.9); border: 1px solid #e5e7eb; cursor: pointer; transition: all 0.15s; } .tl-card-action-btn:hover { color: #3b82f6; background: white; border-color: #93c5fd; } .tl-card-action-btn.text-red-400:hover { color: #ef4444; border-color: #fca5a5; } /* 新建模式卡片 */ .tl-new-preset-card { border-style: dashed; border-color: #d1d5db; background: #fafafa; } .tl-new-preset-card:hover { border-color: #a78bfa; background: #faf5ff; } /* section 内的新增按钮 */ .tl-add-btn { font-size: 0.625rem; font-weight: 600; color: #3b82f6; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 0.375rem; padding: 0.125rem 0.5rem; cursor: pointer; transition: all 0.15s; } .tl-add-btn:hover { background: #dbeafe; border-color: #93c5fd; } /* period 卡片内联操作 */ .tl-inline-btn { width: 1.375rem; height: 1.375rem; display: inline-flex; align-items: center; justify-content: center; border-radius: 0.25rem; font-size: 0.625rem; color: #9ca3af; background: transparent; border: none; cursor: pointer; transition: all 0.15s; opacity: 0; } .tl-period-card:hover .tl-inline-btn, .tl-dayplan-card:hover .tl-inline-btn { opacity: 1; } .tl-inline-btn:hover { color: #3b82f6; background: #eff6ff; } .tl-inline-btn.text-red-400:hover { color: #ef4444; background: #fef2f2; } /* 日计划中的 period tag */ .tl-period-tag { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.625rem; padding: 0.125rem 0.5rem; border-radius: 9999px; color: white; white-space: nowrap; } .tl-tag-remove { font-size: 0.75rem; font-weight: 700; line-height: 1; color: rgba(255,255,255,0.7); background: none; border: none; cursor: pointer; padding: 0; margin-left: 0.125rem; } .tl-tag-remove:hover { color: white; } /* 添加时间段到日计划的 select */ .tl-add-period-select { font-size: 0.625rem; padding: 0.0625rem 0.375rem; border: 1px dashed #d1d5db; border-radius: 9999px; background: #f9fafb; color: #6b7280; cursor: pointer; transition: all 0.15s; } .tl-add-period-select:hover { border-color: #93c5fd; color: #3b82f6; } /* 周映射快捷按钮 */ .tl-quick-btn { font-size: 0.625rem; font-weight: 500; color: #6b7280; background: #f3f4f6; border: 1px solid #e5e7eb; border-radius: 0.375rem; padding: 0.25rem 0.5rem; cursor: pointer; transition: all 0.15s; } .tl-quick-btn:hover { color: #3b82f6; background: #eff6ff; border-color: #93c5fd; } /* 当前时间指示线 */ .tl-now-line { position: absolute; top: -2px; bottom: -2px; width: 2px; background: #ef4444; z-index: 5; pointer-events: none; } .tl-now-line::before { content: ''; position: absolute; top: -3px; left: -3px; width: 8px; height: 8px; border-radius: 50%; background: #ef4444; } /* 周视图色块点击态 */ .tl-period-block { cursor: pointer; } .tl-period-block:hover { filter: brightness(1.1); box-shadow: 0 0 0 2px rgba(255,255,255,0.6); } /* period 卡片高亮动画 */ .tl-period-highlight { animation: tl-highlight-pulse 1.5s ease-out; } @keyframes tl-highlight-pulse { 0% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.5); } 30% { box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.3); } 100% { box-shadow: none; } } /* 内联编辑输入框 */ .tl-inline-input { background: white; border: 1px solid #93c5fd; border-radius: 0.25rem; padding: 0 0.25rem; outline: none; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2); color: #1f2937; } .tl-editable { cursor: text; border-radius: 0.25rem; transition: background 0.15s; } .tl-editable:hover { background: rgba(59, 130, 246, 0.06); } /* 日计划 Tag 拖拽排序 */ .tl-period-tag { cursor: grab; } .tl-period-tag:active { cursor: grabbing; } .tl-tag-ghost { opacity: 0.4; } .tl-tag-drag { transform: rotate(2deg); box-shadow: 0 4px 12px rgba(0,0,0,0.15); } /* ========================================== 支持侧栏 ========================================== */ /* 外层容器:承担宽度和 flex 布局角色 */ .support-sidebar-wrap { width: 20%; min-width: 180px; max-width: 280px; overflow: visible; transition: width 0.3s ease, min-width 0.3s ease, max-width 0.3s ease; } .support-sidebar-wrap.collapsed { width: 0; min-width: 0; max-width: 0; } /* 内层侧栏:填满 wrap */ .support-sidebar { width: 100%; height: 100%; overflow: hidden; transition: opacity 0.3s ease; } .support-sidebar-wrap.collapsed .support-sidebar { opacity: 0; pointer-events: none; } /* 折叠/展开按钮 */ .sidebar-toggle-btn { position: absolute; left: 0; top: 50%; transform: translate(-100%, -50%); width: 20px; height: 40px; background: white; border: 1px solid #e5e7eb; border-radius: 6px 0 0 6px; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 10; opacity: 0; transition: opacity 0.2s ease, background 0.2s ease; color: #9ca3af; } .support-sidebar-wrap:hover .sidebar-toggle-btn { opacity: 1; } .sidebar-toggle-btn:hover { background: #f3f4f6; color: #6b7280; } /* 折叠后按钮始终可见,箭头朝左 */ .sidebar-toggle-btn.is-collapsed { opacity: 1; } .sidebar-toggle-btn.is-collapsed i { transform: rotate(180deg); } /* 侧栏滚动条 */ .sidebar-scroll::-webkit-scrollbar { width: 4px; } .sidebar-scroll::-webkit-scrollbar-track { background: transparent; } .sidebar-scroll::-webkit-scrollbar-thumb { background: #e5e7eb; border-radius: 2px; } .sidebar-scroll::-webkit-scrollbar-thumb:hover { background: #d1d5db; } /* 侧栏卡片 */ .sidebar-card { background: white; border: 1px solid #f3f4f6; border-radius: 0.75rem; padding: 0.75rem; transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); text-decoration: none; display: block; cursor: pointer; } .sidebar-card:hover { border-color: #e5e7eb; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); transform: translateY(-2px); } /* 侧栏卡片图标 */ .sidebar-card-icon { width: 2rem; height: 2rem; border-radius: 0.5rem; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; flex-shrink: 0; transition: all 0.2s ease; } .sidebar-card:hover .sidebar-card-icon { transform: rotate(8deg) scale(1.1); } /* 侧栏 CTA 按钮 */ .sidebar-cta { text-align: center; padding: 0.375rem 0.5rem; border-radius: 0.5rem; font-size: 0.625rem; font-weight: 700; transition: all 0.2s ease; letter-spacing: 0.02em; } /* 侧栏二维码 */ .sidebar-qr { width: 100%; max-width: 120px; aspect-ratio: 1; background: white; border: 1px solid #f3f4f6; border-radius: 0.625rem; padding: 0.375rem; transition: all 0.3s ease; } /* 链接样式重置 */ a.sidebar-card { color: inherit; } a.sidebar-card:hover { color: inherit; text-decoration: none; } /* 侧栏标题区引语 */ .sidebar-quote { max-height: 0; overflow: hidden; opacity: 0; margin-top: 0; transition: max-height 0.4s ease, opacity 0.3s ease, margin-top 0.3s ease; } .sidebar-header-hover:hover .sidebar-quote { max-height: 3rem; opacity: 1; margin-top: 0.375rem; } /* 可点击的二维码卡片 */ .sidebar-card-clickable { cursor: pointer; position: relative; } .sidebar-card-clickable:hover { border-color: #d1d5db; box-shadow: 0 6px 16px rgba(0, 0, 0, 0.08); } /* 点击放大提示 */ .sidebar-enlarge-hint { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%) translateY(4px); background: rgba(0, 0, 0, 0.65); color: white; font-size: 0.5625rem; padding: 0.125rem 0.5rem; border-radius: 0.25rem; white-space: nowrap; opacity: 0; transition: all 0.2s ease; pointer-events: none; } .sidebar-card-clickable:hover .sidebar-enlarge-hint { opacity: 1; transform: translateX(-50%) translateY(-4px); }