.society-news-page { position: relative; z-index: 10; padding: 56px 0 80px; height: 100%; //height: calc(100vh - 64px); background: linear-gradient(135deg, #f0f4ff 0%, #ffffff 50%, #f8fafc 100%); } .news-container { max-width: 1200px; margin: 0 auto; padding: 0 24px; width: 100%; box-sizing: border-box; } .news-header { text-align: center; margin-bottom: 48px; } .news-title { margin: 0 0 16px; font-size: 36px; font-weight: 700; background: linear-gradient(135deg, #3b82f6 0%, #06b6d4 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .news-subtitle { margin: 0 auto; max-width: 576px; font-size: 16px; line-height: 1.625; color: #6b7280; } .filter-row { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 12px; margin-bottom: 48px; } .filter-btn { padding: 8px 20px; border-radius: 9999px; font-size: 14px; font-weight: 500; background: #ffffff; color: #6b7280; border: 1px solid #e5e7eb; cursor: pointer; transition: all 0.2s; &:hover { background: #eff6ff; color: #2563eb; border-color: #93c5fd; } &.active { background: linear-gradient(135deg, #2563eb, #3b82f6); color: #ffffff; border-color: #2563eb; } } .activity-list { display: flex; justify-content: center; align-items: stretch; flex-direction: column; gap: 16px; width: 100%; max-width: 960px; margin: 0 auto; } .activity-card { position: relative; border-radius: 16px; padding: 24px; cursor: pointer; animation: fadeIn 0.4s ease-out both; &:hover { transform: translateY(-2px); border-color: rgba(59, 130, 246, 0.3); box-shadow: 0 8px 32px rgba(59, 130, 246, 0.12); .activity-title { color: #2563eb; } .arrow-icon { color: #2563eb; transform: translateX(4px); } } } .activity-row { display: flex; gap: 24px; flex-direction: row; align-items: flex-start; } .activity-date { flex-shrink: 0; display: flex; align-items: center; gap: 8px; } .date-block { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 64px; height: 64px; border-radius: 12px; border: 1px solid; background-clip: padding-box; .date-day { font-size: 20px; font-weight: 700; line-height: 1; } .date-month { font-size: 12px; color: #6b7280; margin-top: 2px; } } .date-block-blue { background-image: linear-gradient(135deg, rgba(59, 130, 246, 0.1), rgba(6, 182, 212, 0.08)); border-color: #bfdbfe; .date-day { color: #2563eb; } } .date-block-green { background-image: linear-gradient(135deg, rgba(16, 185, 129, 0.1), rgba(20, 184, 166, 0.08)); border-color: #a7f3d0; .date-day { color: #059669; } } .date-block-violet { background-image: linear-gradient(135deg, rgba(139, 92, 246, 0.1), rgba(168, 85, 247, 0.08)); border-color: #ddd6fe; .date-day { color: #7c3aed; } } .activity-main { flex: 1; min-width: 0; } .activity-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-bottom: 12px; } .tag { display: inline-block; padding: 2px 10px; border-radius: 9999px; font-size: 12px; font-weight: 500; line-height: 1.5; } .tag-blue { background: rgba(59, 130, 246, 0.08); color: #2563eb; border: 1px solid rgba(59, 130, 246, 0.2); } .tag-green { background: rgba(16, 185, 129, 0.08); color: #059669; border: 1px solid rgba(16, 185, 129, 0.2); } .tag-violet { background: rgba(139, 92, 246, 0.08); color: #7c3aed; border: 1px solid rgba(139, 92, 246, 0.2); } .meta-source { font-size: 14px; color: #6b7280; } .activity-title { margin: 0 0 12px; font-size: 18px; font-weight: 600; line-height: 1.5; color: #111827; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; transition: color 0.2s; } .activity-desc { margin: 0; font-size: 14px; line-height: 1.625; color: #4b5563; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; } .activity-arrow { flex-shrink: 0; display: none; align-items: center; } @media (min-width: 1024px) { .activity-arrow { display: flex; } } .arrow-icon { width: 20px; height: 20px; color: #93c5fd; transition: all 0.2s; } @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* glass-card 玻璃拟态背景 */ .glass-card { background: rgba(255, 255, 255, 0.85); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(59, 130, 246, 0.15); box-shadow: 0 4px 16px rgba(59, 130, 246, 0.04); transition: all 0.3s; } @media (max-width: 768px) { .news-title { font-size: 28px; } .activity-card { padding: 20px 16px; } .activity-meta { gap: 8px; } .activity-title { font-size: 16px; } } /* ==================== Detail Modal ==================== */ .detail-overlay { position: fixed; inset: 0; z-index: 999; display: flex; align-items: flex-start; justify-content: center; padding: 40px 24px; background: rgba(0, 0, 0, 0.5); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); overflow-y: auto; } .detail-panel { position: relative; width: 100%; max-width: 720px; background: #ffffff; border-radius: 16px; border: 1px solid #dbeafe; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; flex-shrink: 0; } .detail-sticky-header { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; justify-content: space-between; padding: 16px 24px; background: linear-gradient(to bottom, #ffffff 80%, rgba(255,255,255,0.95)); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-bottom: 1px solid #dbeafe; .detail-header-left { display: flex; align-items: center; gap: 12px; } .detail-tag { display: inline-block; padding: 3px 12px; border-radius: 9999px; font-size: 12px; font-weight: 500; line-height: 1.5; &.tag-blue { background: rgba(59, 130, 246, 0.1); color: #2563eb; border: 1px solid rgba(59, 130, 246, 0.2); } &.tag-green { background: rgba(16, 185, 129, 0.1); color: #059669; border: 1px solid rgba(16, 185, 129, 0.2); } &.tag-violet { background: rgba(139, 92, 246, 0.1); color: #7c3aed; border: 1px solid rgba(139, 92, 246, 0.2); } } .detail-publisher { font-size: 13px; color: #6b7280; } } .detail-close { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: 1px solid #e5e7eb; border-radius: 8px; background: #f3f4f6; cursor: pointer; color: #6b7280; transition: all 0.2s; &:hover { background: #e5e7eb; color: #374151; } } .detail-body { padding: 24px 32px; } .detail-title { margin: 0 0 16px; font-size: 20px; font-weight: 700; line-height: 1.45; color: #111827; } .detail-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; margin-bottom: 24px; padding-bottom: 24px; border-bottom: 1px solid #f0f0f0; .detail-meta-item { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #6b7280; } .detail-meta-link { color: #3b82f6; text-decoration: none; transition: color 0.2s; &:hover { color: #2563eb; text-decoration: underline; } } svg { flex-shrink: 0; opacity: 0.6; } } .detail-content { font-size: 14px; line-height: 1.9; color: #374151; p { margin: 0 0 12px; } strong { color: #111827; } } .detail-sticky-footer { position: sticky; bottom: 0; z-index: 10; display: flex; align-items: center; justify-content: flex-end; padding: 16px 24px; background: linear-gradient(to top, #ffffff 80%, rgba(255,255,255,0.95)); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-top: 1px solid #dbeafe; } .btn-close { height: 40px; padding: 0 24px; border: none; border-radius: 12px; font-size: 14px; font-weight: 500; color: #ffffff; background: linear-gradient(135deg, #2563eb, #3b82f6); box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3); cursor: pointer; transition: opacity 0.2s; &:hover { opacity: 0.9; } } .detail-fade-enter-active, .detail-fade-leave-active { transition: opacity 0.25s ease; } .detail-fade-enter-active .detail-panel, .detail-fade-leave-active .detail-panel { transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); } .detail-fade-enter, .detail-fade-leave-to { opacity: 0; } .detail-fade-enter .detail-panel, .detail-fade-leave-to .detail-panel { transform: translateY(20px) scale(0.96); opacity: 0; } @media (max-width: 640px) { .detail-panel { max-width: 100%; border-radius: 16px; } .detail-cover { padding: 24px 20px 20px; } .detail-body { padding: 20px; } .detail-title { font-size: 18px; } }