/** * 文案库页面样式(#1811 v2) * 风格对齐标题库,新增卡片 hover 阴影、标签/meta 行、筛选栏样式 */ .xx-scripts-page { padding: 24px; max-width: 1200px; margin: 0 auto; } .xx-scripts-layout { display: flex; flex-direction: column; gap: 16px; } /* ── 筛选栏 ── */ .xx-scripts-filters { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 12px 16px; background: var(--bg-card, #fff); border-radius: 12px; border: 1px solid var(--border-color, #f0f0f0); } .xx-scripts-filters-left { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; } .xx-scripts-filters-right { display: flex; gap: 8px; } /* ── 列表 ── */ .xx-scripts-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 16px; } .xx-script-card { transition: box-shadow 0.2s, transform 0.2s; } .xx-script-card:hover { box-shadow: 0 4px 16px rgba(124, 58, 237, 0.1); transform: translateY(-2px); } .xx-script-card .ant-card-body { padding: 16px; } .xx-script-card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 10px; } .xx-script-title-row { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; } .xx-script-title { font-size: 15px; font-weight: 600; color: var(--text-primary, #1f1f1f); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .xx-script-actions { flex-shrink: 0; } .xx-script-actions .ant-btn { padding: 0 6px; } .xx-script-preview { font-size: 13px; color: var(--text-secondary, #666); line-height: 1.6; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } .xx-script-title-text { font-size: 12px; color: var(--text-tertiary, #999); margin-bottom: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .xx-script-label { color: var(--text-tertiary, #999); } .xx-script-tags { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; margin-bottom: 8px; } .xx-script-meta { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-tertiary, #999); } .xx-script-meta-sep { opacity: 0.5; } /* ── 分页 ── */ .xx-scripts-pagination { display: flex; justify-content: center; padding: 16px 0; } .xx-scripts-loading { padding: 48px; text-align: center; color: var(--text-tertiary, #999); } /* ── 弹窗表单 ── */ .xx-script-form .ant-form-item { margin-bottom: 12px; } /* ── 响应式 ── */ @media (max-width: 768px) { .xx-scripts-page { padding: 16px 12px; } .xx-scripts-list { grid-template-columns: 1fr; } .xx-scripts-filters { flex-direction: column; align-items: stretch; } .xx-scripts-filters-left { width: 100%; } .xx-scripts-filters-left .ant-input, .xx-scripts-filters-left .ant-select { flex: 1; } } /* ── #1893 AI 能力样式 ── */ /* 抖音提取 / AI 按钮与主按钮间距 */ .xx-scripts-filters-right .ant-btn + .ant-btn { margin-left: 8px; } /* AI 改写工具条(贴在正文 TextArea 下方) */ .xx-ai-rewrite-bar { display: flex; align-items: center; margin-top: -8px; margin-bottom: 16px; padding: 8px 12px; background: linear-gradient(90deg, #f7f5ff 0%, #fff 100%); border: 1px dashed #d3c6ff; border-radius: 8px; } /* AI 生成标题候选 */ .xx-ai-title-candidates { margin-top: -8px; margin-bottom: 12px; padding: 10px 12px; background: #fafaff; border-radius: 8px; border: 1px solid #eee6ff; } .xx-ai-title-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; } .xx-ai-title-tag { cursor: pointer; font-size: 13px; padding: 4px 12px; border-radius: 16px; transition: transform 0.15s; margin: 0; } .xx-ai-title-tag:hover { transform: translateY(-1px); box-shadow: 0 2px 8px rgba(114, 46, 209, 0.18); } /* loading 提示文本 */ .xx-ai-loading-hint { display: flex; align-items: center; margin-top: 12px; padding: 10px 12px; color: var(--text-secondary, #666); font-size: 13px; background: #fafafa; border-radius: 6px; } /* AI 改写对比块 */ .xx-ai-rewrite-item { border-bottom: 1px solid var(--border-color, #f0f0f0) !important; padding: 12px 0 !important; } .xx-ai-rewrite-item:last-child { border-bottom: none !important; } .xx-ai-rewrite-block { width: 100%; } .xx-ai-rewrite-label { margin-bottom: 6px; } .xx-ai-rewrite-text { font-size: 13px; line-height: 1.7; color: var(--text-primary, #1f1f1f); padding: 8px 12px; background: #fafafa; border-radius: 6px; max-height: 180px; overflow-y: auto; } .xx-ai-rewrite-item:first-child .xx-ai-rewrite-text { color: var(--text-secondary, #666); background: #f7f7f7; } .xx-ai-rewrite-item:last-child .xx-ai-rewrite-text { background: linear-gradient(180deg, #faf5ff 0%, #ffffff 100%); border: 1px solid #eee6ff; } /* #1894: AI 改写内联 loading —— 渐变圆环旋转动画,替代 antd 默认 Spin */ .xx-ai-rewrite-loading { display: inline-flex; align-items: center; gap: 8px; margin-left: 4px; } .xx-ai-rewrite-spinner { width: 16px; height: 16px; border-radius: 50%; border: 2px solid transparent; border-top-color: #9254de; border-right-color: #722ed1; background: linear-gradient(#fff, #fff) padding-box, conic-gradient(from 0deg, #9254de, #4096ff, #9254de) border-box; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; animation: xx-ai-rewrite-spin 0.9s linear infinite; } @keyframes xx-ai-rewrite-spin { to { transform: rotate(360deg); } } .xx-ai-rewrite-loading-text { font-size: 13px; color: var(--text-secondary, #666); background: linear-gradient(90deg, #722ed1, #4096ff, #722ed1); background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: xx-ai-rewrite-text-shimmer 2s linear infinite; } @keyframes xx-ai-rewrite-text-shimmer { 0% { background-position: 0% 0; } 100% { background-position: 200% 0; } }