Files
shencaisuan/public/css/mianfei.css
T
2026-07-07 12:06:31 +08:00

1899 lines
36 KiB
CSS

/* ============================================================
mianfei.css - 免费推荐页 (mianfei.html, mianfeilist.html, mianfeishoucang.html)
============================================================ */
/* === Page Banner === */
.cxz-page-banner {
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light, #1a3f8f) 100%);
color: var(--white, #fff);
padding: 40px 0 36px;
text-align: center;
position: relative;
overflow: hidden;
}
.cxz-page-banner::after {
content: "";
position: absolute;
top: -40%;
right: -10%;
width: 360px;
height: 360px;
border-radius: 50%;
background: rgba(253, 185, 51, 0.08);
pointer-events: none;
}
.cxz-page-banner::before {
content: "";
position: absolute;
bottom: -30%;
left: -5%;
width: 280px;
height: 280px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.04);
pointer-events: none;
}
.cxz-banner-title {
font-size: 28px;
font-weight: 700;
margin-bottom: 8px;
position: relative;
z-index: 1;
}
.cxz-banner-desc {
font-size: 14px;
opacity: 0.8;
position: relative;
z-index: 1;
}
/* ============================================================
Article Detail Card (mianfei.html)
============================================================ */
.cxz-article-card {
background: var(--white, #fff);
border-radius: var(--radius-lg, 12px);
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.06));
overflow: hidden;
transition: box-shadow 0.3s ease;
}
.cxz-article-card:hover {
box-shadow: var(--shadow-md, 0 4px 16px rgba(0,0,0,0.08));
}
.cxz-article-header {
padding: 28px 32px 20px;
border-bottom: 1px solid var(--border-light, #e5e7eb);
position: relative;
}
.cxz-article-header::after {
content: "";
position: absolute;
bottom: -1px;
left: 32px;
width: 40px;
height: 3px;
background: linear-gradient(90deg, var(--primary), var(--gold));
border-radius: 2px;
}
.cxz-article-title {
font-size: 24px;
font-weight: 700;
color: var(--text-dark, #1a1a2e);
line-height: 1.5;
margin-bottom: 14px;
}
.cxz-article-meta {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 20px;
font-size: 13px;
color: var(--text-muted, #6b7280);
}
.cxz-article-meta .author {
color: var(--orange, #f15a22);
font-weight: 600;
}
.cxz-article-meta .tag {
display: inline-block;
padding: 2px 10px;
border-radius: 10px;
font-size: 11px;
font-weight: 600;
background: rgba(16, 43, 106, 0.08);
color: var(--primary);
}
.cxz-article-meta .views {
display: flex;
align-items: center;
gap: 4px;
}
.cxz-article-body {
padding: 28px 32px;
font-size: 15px;
line-height: 1.8;
color: var(--text-dark, #1a1a2e);
word-wrap: break-word;
overflow-wrap: break-word;
}
.cxz-article-body img {
max-width: 100%;
height: auto;
border-radius: var(--radius-md, 8px);
margin: 16px 0;
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.06));
}
.cxz-article-body p {
margin-bottom: 14px;
}
.cxz-article-body p:last-child {
margin-bottom: 0;
}
.cxz-article-body h2,
.cxz-article-body h3,
.cxz-article-body h4 {
margin-top: 24px;
margin-bottom: 12px;
font-weight: 700;
color: var(--text-dark, #1a1a2e);
}
.cxz-article-body h2 { font-size: 20px; }
.cxz-article-body h3 { font-size: 18px; }
.cxz-article-body h4 { font-size: 16px; }
.cxz-article-body ul,
.cxz-article-body ol {
padding-left: 24px;
margin-bottom: 14px;
}
.cxz-article-body li {
margin-bottom: 6px;
}
.cxz-article-body blockquote {
margin: 16px 0;
padding: 14px 20px;
border-left: 4px solid var(--primary);
background: var(--bg-light, #f4f6fb);
border-radius: 0 var(--radius-md, 8px) var(--radius-md, 8px) 0;
color: var(--text-muted, #6b7280);
font-style: italic;
}
.cxz-article-body table {
width: 100%;
border-collapse: collapse;
margin: 16px 0;
}
.cxz-article-body th,
.cxz-article-body td {
border: 1px solid var(--border-light, #e5e7eb);
padding: 10px 14px;
font-size: 14px;
text-align: left;
}
.cxz-article-body th {
background: var(--bg-light, #f4f6fb);
font-weight: 600;
color: var(--text-dark, #1a1a2e);
}
.cxz-article-body a {
color: var(--primary);
text-decoration: underline;
text-underline-offset: 2px;
}
.cxz-article-body a:hover {
color: var(--orange, #f15a22);
}
.cxz-article-footer {
padding: 16px 32px;
border-top: 1px solid var(--border-light, #e5e7eb);
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
background: var(--bg-light, #f4f6fb);
}
.cxz-article-footer .cxz-article-meta {
gap: 16px;
}
/* Article Actions */
.cxz-article-actions {
padding: 16px 32px;
border-top: 1px solid var(--border-light, #e5e7eb);
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
}
.cxz-action-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 8px 22px;
border-radius: 20px;
font-size: 13px;
font-weight: 500;
cursor: pointer;
border: 1px solid var(--border-light, #e5e7eb);
background: var(--bg-light, #f4f6fb);
color: var(--text-dark, #1a1a2e);
transition: all 0.3s ease;
user-select: none;
}
.cxz-action-btn:hover {
border-color: var(--primary);
color: var(--primary);
background: rgba(16, 43, 106, 0.04);
}
.cxz-action-btn:active {
transform: scale(0.96);
}
.cxz-action-btn.liked {
background: var(--orange, #f15a22);
color: var(--white, #fff);
border-color: var(--orange, #f15a22);
}
.cxz-action-btn.liked:hover {
background: var(--red, #e74c3c);
border-color: var(--red, #e74c3c);
color: var(--white, #fff);
}
.cxz-action-btn.collected {
background: var(--gold, #fdb933);
color: var(--primary);
border-color: var(--gold, #fdb933);
}
.cxz-action-btn.collected:hover {
background: var(--gold-dark, #f5a623);
border-color: var(--gold-dark, #f5a623);
}
.cxz-action-btn i {
font-size: 16px;
}
.cxz-action-btn .count {
font-size: 12px;
opacity: 0.8;
}
/* Article Navigation */
.cxz-article-nav {
margin-top: 24px;
display: flex;
gap: 16px;
}
.cxz-nav-item {
flex: 1;
padding: 18px 24px;
background: var(--white, #fff);
border-radius: var(--radius-lg, 12px);
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.06));
text-decoration: none;
transition: all 0.3s ease;
border: 1px solid var(--border-light, #e5e7eb);
}
.cxz-nav-item:hover {
box-shadow: var(--shadow-md, 0 4px 16px rgba(0,0,0,0.08));
border-color: var(--primary);
transform: translateY(-1px);
}
.cxz-nav-label {
font-size: 12px;
color: var(--text-muted, #6b7280);
margin-bottom: 6px;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.cxz-nav-title {
font-size: 14px;
color: var(--text-dark, #1a1a2e);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
transition: color 0.2s;
}
.cxz-nav-item:hover .cxz-nav-title {
color: var(--primary);
}
/* ============================================================
Article List (mianfeilist.html)
============================================================ */
.cxz-article-list {
background: var(--white, #fff);
border-radius: var(--radius-lg, 12px);
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.06));
overflow: hidden;
}
.cxz-article-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 20px;
border-bottom: 1px solid var(--border-light, #e5e7eb);
transition: background 0.2s ease;
}
.cxz-article-item:last-child {
border-bottom: none;
}
.cxz-article-item:hover {
background: var(--bg-light, #f4f6fb);
}
.cxz-article-item a {
flex: 1;
color: var(--text-dark, #1a1a2e);
text-decoration: none;
font-size: 14px;
transition: color 0.2s;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.cxz-article-item a:hover {
color: var(--orange, #f15a22);
}
.cxz-article-date {
font-size: 12px;
color: var(--text-muted, #6b7280);
flex-shrink: 0;
margin-left: 16px;
}
/* List items with structured layout (cxz-list-*) */
.cxz-list-item {
display: flex;
align-items: center;
padding: 16px 24px;
border-bottom: 1px solid var(--border-light, #e5e7eb);
transition: all 0.25s ease;
gap: 16px;
}
.cxz-list-item:last-child {
border-bottom: none;
}
.cxz-list-item:hover {
background: var(--bg-light, #f4f6fb);
}
.cxz-list-item + .cxz-list-item {
border-top: 1px solid var(--border-light, #e5e7eb);
}
.cxz-list-title {
flex: 1;
min-width: 0;
font-size: 15px;
font-weight: 500;
color: var(--text-dark, #1a1a2e);
text-decoration: none;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
transition: color 0.2s;
cursor: pointer;
}
.cxz-list-title:hover {
color: var(--primary);
}
.cxz-list-title a {
color: inherit;
text-decoration: none;
}
.cxz-list-title a:hover {
color: var(--primary);
}
.cxz-list-meta {
display: flex;
align-items: center;
gap: 16px;
font-size: 13px;
color: var(--text-muted, #6b7280);
flex-shrink: 0;
}
.cxz-list-meta .category {
display: inline-block;
padding: 2px 10px;
border-radius: 10px;
font-size: 11px;
font-weight: 600;
background: rgba(16, 43, 106, 0.08);
color: var(--primary);
}
.cxz-list-meta .author {
color: var(--orange, #f15a22);
font-weight: 500;
}
.cxz-list-meta .date {
color: var(--text-muted, #6b7280);
}
.cxz-list-action {
display: flex;
align-items: center;
gap: 8px;
flex-shrink: 0;
}
.cxz-list-action .cxz-action-btn {
padding: 5px 14px;
font-size: 12px;
border-radius: 14px;
}
.cxz-list-action .btn-view {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 5px 16px;
border-radius: 14px;
font-size: 12px;
font-weight: 500;
color: var(--primary);
background: rgba(16, 43, 106, 0.06);
border: 1px solid rgba(16, 43, 106, 0.15);
cursor: pointer;
transition: all 0.25s;
text-decoration: none;
}
.cxz-list-action .btn-view:hover {
background: var(--primary);
color: var(--white, #fff);
border-color: var(--primary);
}
.cxz-list-action .btn-collect {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 5px 16px;
border-radius: 14px;
font-size: 12px;
font-weight: 500;
color: var(--gold, #fdb933);
background: rgba(253, 185, 51, 0.08);
border: 1px solid rgba(253, 185, 51, 0.25);
cursor: pointer;
transition: all 0.25s;
}
.cxz-list-action .btn-collect:hover {
background: var(--gold, #fdb933);
color: var(--primary);
border-color: var(--gold, #fdb933);
}
.cxz-list-action .btn-collect.collected {
background: var(--gold, #fdb933);
color: var(--primary);
border-color: var(--gold, #fdb933);
}
/* List item index number */
.cxz-list-item .list-index {
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
border-radius: 50%;
font-size: 12px;
font-weight: 700;
flex-shrink: 0;
background: var(--bg-light, #f4f6fb);
color: var(--text-muted, #6b7280);
}
.cxz-list-item:nth-child(-n+3) .list-index {
background: linear-gradient(135deg, var(--primary), var(--primary-light, #1a3f8f));
color: var(--white, #fff);
box-shadow: 0 2px 6px rgba(16, 43, 106, 0.3);
}
/* List item with thumbnail */
.cxz-list-item.has-thumb {
padding: 16px 24px;
gap: 20px;
}
.cxz-list-thumb {
width: 80px;
height: 56px;
border-radius: var(--radius-md, 8px);
object-fit: cover;
flex-shrink: 0;
background: var(--bg-light, #f4f6fb);
}
.cxz-list-item.has-thumb .cxz-list-content {
flex: 1;
min-width: 0;
}
.cxz-list-item.has-thumb .cxz-list-title {
display: block;
margin-bottom: 6px;
}
/* ============================================================
Collection Grid (mianfeishoucang.html)
============================================================ */
.cxz-collect-grid {
display: flex;
flex-wrap: wrap;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 20px;
}
.cxz-collect-card {
background: var(--white, #fff);
border-radius: var(--radius-lg, 12px);
overflow: hidden;
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.06));
transition: all 0.3s ease;
position: relative;
border: 1px solid var(--border-light, #e5e7eb);
}
.cxz-collect-card:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-md, 0 4px 16px rgba(0,0,0,0.08));
border-color: transparent;
}
.cxz-collect-card.removing {
animation: fadeOutCard 0.4s ease forwards;
}
@keyframes fadeOutCard {
0% { opacity: 1; transform: scale(1); }
100% { opacity: 0; transform: scale(0.9); }
}
.cxz-collect-card .cxz-card-body {
padding: 20px;
}
.cxz-collect-card .cxz-card-title {
font-size: 15px;
font-weight: 600;
color: var(--primary);
line-height: 1.5;
margin-bottom: 12px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.cxz-collect-card .cxz-card-title a {
color: var(--primary);
text-decoration: none;
transition: color 0.2s;
}
.cxz-collect-card .cxz-card-title a:hover {
color: var(--orange, #f15a22);
}
.cxz-collect-card .cxz-card-meta {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 12px;
color: var(--text-muted, #6b7280);
}
.cxz-collect-card .cxz-card-remove {
padding: 4px 14px;
border-radius: 14px;
font-size: 12px;
background: transparent;
color: var(--orange, #f15a22);
border: 1px solid var(--orange, #f15a22);
cursor: pointer;
transition: all 0.3s;
}
.cxz-collect-card .cxz-card-remove:hover {
background: var(--orange, #f15a22);
color: var(--white, #fff);
}
/* Collect title & meta (standalone classes matching the spec) */
.cxz-collect-title {
font-size: 15px;
font-weight: 600;
color: var(--primary);
line-height: 1.5;
margin-bottom: 10px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.cxz-collect-title a {
color: var(--primary);
text-decoration: none;
transition: color 0.2s;
}
.cxz-collect-title a:hover {
color: var(--orange, #f15a22);
}
.cxz-collect-meta {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 8px;
font-size: 12px;
color: var(--text-muted, #6b7280);
}
.cxz-collect-meta .collect-date {
display: flex;
align-items: center;
gap: 4px;
}
.cxz-collect-meta .btn-remove {
padding: 4px 14px;
border-radius: 14px;
font-size: 12px;
background: transparent;
color: var(--orange, #f15a22);
border: 1px solid var(--orange, #f15a22);
cursor: pointer;
transition: all 0.3s;
line-height: 1.4;
}
.cxz-collect-meta .btn-remove:hover {
background: var(--orange, #f15a22);
color: var(--white, #fff);
}
/* Collect card with image header */
.cxz-collect-card.has-image .cxz-collect-image {
width: 100%;
height: 140px;
object-fit: cover;
display: block;
}
.cxz-collect-card.has-image .cxz-collect-content {
padding: 16px 20px;
}
/* Collect card color accent bar */
.cxz-collect-card::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 3px;
background: linear-gradient(90deg, var(--primary), var(--gold));
opacity: 0;
transition: opacity 0.3s;
}
.cxz-collect-card:hover::before {
opacity: 1;
}
/* ============================================================
Filter Bar (shared across list & collection pages)
============================================================ */
.cxz-filter-bar {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 10px;
padding: 16px 20px;
background: var(--white, #fff);
border-radius: var(--radius-lg, 12px);
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.06));
margin-bottom: 20px;
}
.cxz-filter-bar .cxz-filter-label {
font-size: 14px;
font-weight: 600;
color: var(--text-dark, #1a1a2e);
margin-right: 4px;
white-space: nowrap;
}
.cxz-filter-btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 7px 20px;
border-radius: 20px;
font-size: 13px;
font-weight: 500;
color: var(--text-muted, #6b7280);
background: var(--bg-light, #f4f6fb);
border: 1px solid var(--border-light, #e5e7eb);
cursor: pointer;
transition: all 0.25s ease;
white-space: nowrap;
user-select: none;
text-decoration: none;
}
.cxz-filter-btn:hover {
color: var(--primary);
border-color: var(--primary);
background: rgba(16, 43, 106, 0.04);
}
.cxz-filter-btn.active {
color: var(--white, #fff);
background: var(--primary);
border-color: var(--primary);
box-shadow: 0 2px 8px rgba(16, 43, 106, 0.25);
}
.cxz-filter-btn.active:hover {
background: var(--primary-hover, #0d224f);
border-color: var(--primary-hover, #0d224f);
}
/* Filter bar search input */
.cxz-filter-bar .cxz-filter-search {
display: flex;
align-items: center;
gap: 0;
margin-left: auto;
}
.cxz-filter-bar .cxz-filter-search input {
padding: 7px 14px;
border: 1px solid var(--border-light, #e5e7eb);
border-radius: 20px 0 0 20px;
font-size: 13px;
outline: none;
background: var(--bg-light, #f4f6fb);
color: var(--text-dark, #1a1a2e);
transition: border-color 0.2s;
min-width: 160px;
}
.cxz-filter-bar .cxz-filter-search input::placeholder {
color: var(--text-muted, #6b7280);
}
.cxz-filter-bar .cxz-filter-search input:focus {
border-color: var(--primary);
background: var(--white, #fff);
}
.cxz-filter-bar .cxz-filter-search button {
padding: 7px 18px;
border: 1px solid var(--primary);
border-left: none;
border-radius: 0 20px 20px 0;
font-size: 13px;
font-weight: 500;
color: var(--white, #fff);
background: var(--primary);
cursor: pointer;
transition: background 0.2s;
white-space: nowrap;
}
.cxz-filter-bar .cxz-filter-search button:hover {
background: var(--primary-hover, #0d224f);
}
/* ============================================================
Pagination Enhancement
============================================================ */
.cxz-pagination {
padding: 24px 20px;
text-align: center;
}
.cxz-pagination .layui-laypage {
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
}
.cxz-pagination .layui-laypage a,
.cxz-pagination .layui-laypage span {
min-width: 36px;
height: 36px;
line-height: 36px;
padding: 0;
border-radius: var(--radius-md, 8px);
font-size: 13px;
border: 1px solid var(--border-light, #e5e7eb);
transition: all 0.2s;
}
.cxz-pagination .layui-laypage a:hover {
color: var(--primary);
border-color: var(--primary);
background: rgba(16, 43, 106, 0.04);
}
.cxz-pagination .layui-laypage .layui-laypage-curr em {
background: var(--primary);
border-radius: var(--radius-md, 8px);
}
.cxz-pagination .layui-laypage .layui-laypage-curr {
border-color: var(--primary);
}
/* ============================================================
Locked Content Overlay
============================================================ */
.cxz-content-lock {
position: relative;
}
.cxz-content-lock::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 50%;
background: linear-gradient(to bottom, transparent, var(--white, #fff) 40%);
pointer-events: none;
z-index: 1;
}
.cxz-content-lock .cxz-lock-overlay {
position: absolute;
inset: 0;
background: rgba(255, 255, 255, 0.65);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 2;
border-radius: inherit;
padding: 40px 20px;
}
.cxz-lock-icon {
width: 64px;
height: 64px;
border-radius: 50%;
background: linear-gradient(135deg, var(--primary), var(--primary-light, #1a3f8f));
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 16px;
box-shadow: 0 4px 16px rgba(16, 43, 106, 0.3);
}
.cxz-lock-icon i {
font-size: 28px;
color: var(--gold, #fdb933);
}
.cxz-lock-icon svg {
width: 28px;
height: 28px;
fill: var(--gold, #fdb933);
}
.cxz-lock-text {
font-size: 16px;
font-weight: 600;
color: var(--text-dark, #1a1a2e);
margin-bottom: 8px;
text-align: center;
}
.cxz-lock-text .lock-sub {
display: block;
font-size: 13px;
font-weight: 400;
color: var(--text-muted, #6b7280);
margin-top: 4px;
}
.cxz-lock-text + .cxz-lock-btn,
.cxz-lock-overlay .cxz-lock-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 10px 28px;
border-radius: 24px;
font-size: 14px;
font-weight: 600;
color: var(--primary);
background: linear-gradient(135deg, var(--gold, #fdb933), var(--gold-dark, #f5a623));
border: none;
cursor: pointer;
transition: all 0.3s;
box-shadow: 0 4px 14px rgba(253, 185, 51, 0.35);
text-decoration: none;
margin-top: 8px;
}
.cxz-lock-text + .cxz-lock-btn:hover,
.cxz-lock-overlay .cxz-lock-btn:hover {
background: linear-gradient(135deg, #ffc947, var(--gold, #fdb933));
box-shadow: 0 6px 20px rgba(253, 185, 51, 0.5);
transform: translateY(-1px);
}
/* Inline lock (within article body) */
.cxz-inline-lock {
position: relative;
margin: 20px 0;
padding: 24px;
background: var(--bg-light, #f4f6fb);
border-radius: var(--radius-md, 8px);
border: 1px dashed var(--border-light, #e5e7eb);
text-align: center;
}
.cxz-inline-lock .cxz-lock-icon {
width: 48px;
height: 48px;
margin-bottom: 10px;
}
.cxz-inline-lock .cxz-lock-icon i {
font-size: 22px;
}
.cxz-inline-lock .cxz-lock-text {
font-size: 14px;
margin-bottom: 10px;
}
/* ============================================================
Empty State
============================================================ */
.cxz-empty {
text-align: center;
padding: 60px 20px;
color: var(--text-muted, #6b7280);
}
.cxz-empty-icon {
font-size: 48px;
margin-bottom: 12px;
opacity: 0.3;
}
.cxz-empty-text {
font-size: 14px;
margin-bottom: 16px;
}
.cxz-empty-action {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 8px 24px;
border-radius: 20px;
font-size: 13px;
font-weight: 500;
color: var(--primary);
background: rgba(16, 43, 106, 0.06);
border: 1px solid rgba(16, 43, 106, 0.15);
cursor: pointer;
transition: all 0.25s;
text-decoration: none;
}
.cxz-empty-action:hover {
background: var(--primary);
color: var(--white, #fff);
border-color: var(--primary);
}
/* ============================================================
Stats Bar (optional top summary)
============================================================ */
.cxz-stats-bar {
display: flex;
align-items: center;
gap: 24px;
padding: 16px 24px;
background: var(--white, #fff);
border-radius: var(--radius-lg, 12px);
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.06));
margin-bottom: 20px;
flex-wrap: wrap;
}
.cxz-stat-item {
display: flex;
align-items: center;
gap: 8px;
}
.cxz-stat-item .stat-icon {
width: 40px;
height: 40px;
border-radius: var(--radius-md, 8px);
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
}
.cxz-stat-item .stat-icon.blue {
background: rgba(16, 43, 106, 0.1);
color: var(--primary);
}
.cxz-stat-item .stat-icon.gold {
background: rgba(253, 185, 51, 0.12);
color: var(--gold-dark, #f5a623);
}
.cxz-stat-item .stat-icon.orange {
background: rgba(241, 90, 34, 0.1);
color: var(--orange, #f15a22);
}
.cxz-stat-item .stat-icon.green {
background: rgba(39, 174, 96, 0.1);
color: var(--green, #27ae60);
}
.cxz-stat-item .stat-info .stat-value {
font-size: 20px;
font-weight: 700;
color: var(--text-dark, #1a1a2e);
line-height: 1.2;
}
.cxz-stat-item .stat-info .stat-label {
font-size: 12px;
color: var(--text-muted, #6b7280);
}
/* ============================================================
Responsive Styles
============================================================ */
/* Tablet & below */
@media (max-width: 1024px) {
.cxz-article-header {
padding: 24px 24px 16px;
}
.cxz-article-body {
padding: 24px 24px;
}
.cxz-article-footer {
padding: 14px 24px;
}
.cxz-article-actions {
padding: 14px 24px;
}
.cxz-article-title {
font-size: 22px;
}
.cxz-collect-grid {
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
gap: 16px;
}
.cxz-filter-bar {
padding: 12px 16px;
}
.cxz-list-item {
padding: 14px 16px;
}
}
/* Mobile */
@media (max-width: 768px) {
/* Page Banner */
.cxz-page-banner {
padding: 28px 16px 24px;
}
.cxz-banner-title {
font-size: 22px;
}
.cxz-banner-desc {
font-size: 13px;
}
/* Article Card */
.cxz-article-card {
border-radius: var(--radius-md, 8px);
}
.cxz-article-header {
padding: 20px 16px 14px;
}
.cxz-article-header::after {
left: 16px;
}
.cxz-article-title {
font-size: 19px;
margin-bottom: 10px;
}
.cxz-article-meta {
gap: 10px;
font-size: 12px;
}
.cxz-article-body {
padding: 20px 16px;
font-size: 14px;
line-height: 1.7;
}
.cxz-article-footer {
padding: 12px 16px;
flex-direction: column;
align-items: flex-start;
}
.cxz-article-actions {
padding: 12px 16px;
gap: 8px;
}
.cxz-action-btn {
padding: 7px 16px;
font-size: 12px;
}
/* Article Navigation */
.cxz-article-nav {
flex-direction: column;
gap: 10px;
}
.cxz-nav-item {
padding: 14px 16px;
}
/* Article List */
.cxz-article-list {
border-radius: var(--radius-md, 8px);
}
.cxz-article-item {
padding: 12px 16px;
}
.cxz-article-item a {
font-size: 13px;
}
/* List items */
.cxz-list-item {
flex-wrap: wrap;
padding: 12px 16px;
gap: 8px;
}
.cxz-list-title {
font-size: 14px;
width: 100%;
flex: none;
}
.cxz-list-meta {
gap: 10px;
font-size: 12px;
order: 2;
}
.cxz-list-action {
order: 3;
width: 100%;
justify-content: flex-end;
padding-top: 4px;
}
.cxz-list-item .list-index {
width: 24px;
height: 24px;
font-size: 11px;
}
/* Collection Grid */
.cxz-collect-grid {
grid-template-columns: 1fr;
gap: 12px;
}
.cxz-collect-card {
border-radius: var(--radius-md, 8px);
}
.cxz-collect-card .cxz-card-body {
padding: 16px;
}
.cxz-collect-card:hover {
transform: none;
}
/* Filter Bar */
.cxz-filter-bar {
padding: 10px 12px;
gap: 8px;
border-radius: var(--radius-md, 8px);
}
.cxz-filter-btn {
padding: 6px 14px;
font-size: 12px;
}
.cxz-filter-bar .cxz-filter-label {
font-size: 13px;
width: 100%;
margin-bottom: 2px;
}
.cxz-filter-bar .cxz-filter-search {
margin-left: 0;
width: 100%;
}
.cxz-filter-bar .cxz-filter-search input {
flex: 1;
min-width: 0;
}
/* Pagination */
.cxz-pagination {
padding: 16px 12px;
}
/* Locked Content */
.cxz-lock-icon {
width: 52px;
height: 52px;
}
.cxz-lock-icon i {
font-size: 24px;
}
.cxz-lock-text {
font-size: 14px;
}
.cxz-lock-overlay .cxz-lock-btn {
padding: 8px 22px;
font-size: 13px;
}
/* Empty State */
.cxz-empty {
padding: 40px 16px;
}
.cxz-empty-icon {
font-size: 40px;
}
/* Stats Bar */
.cxz-stats-bar {
padding: 12px 16px;
gap: 16px;
}
.cxz-stat-item .stat-info .stat-value {
font-size: 18px;
}
}
/* Small mobile */
@media (max-width: 480px) {
.cxz-article-title {
font-size: 17px;
}
.cxz-article-meta {
flex-direction: column;
align-items: flex-start;
gap: 4px;
}
.cxz-article-actions {
flex-direction: column;
align-items: stretch;
}
.cxz-action-btn {
justify-content: center;
}
.cxz-filter-bar {
flex-direction: column;
align-items: stretch;
}
.cxz-filter-btn {
text-align: center;
}
.cxz-list-meta {
flex-wrap: wrap;
gap: 6px;
}
.cxz-stats-bar {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
}
/* ============================================================
Animations
============================================================ */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(12px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.cxz-article-card {
animation: fadeInUp 0.4s ease;
}
.cxz-article-list {
animation: fadeInUp 0.4s ease;
}
.cxz-collect-card {
animation: fadeInUp 0.4s ease;
}
.cxz-collect-card:nth-child(2) { animation-delay: 0.05s; }
.cxz-collect-card:nth-child(3) { animation-delay: 0.1s; }
.cxz-collect-card:nth-child(4) { animation-delay: 0.15s; }
.cxz-collect-card:nth-child(5) { animation-delay: 0.2s; }
.cxz-collect-card:nth-child(6) { animation-delay: 0.25s; }
/* Filter bar slide in */
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-8px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.cxz-filter-bar {
animation: slideDown 0.35s ease;
}
/* Pulse animation for lock icon */
@keyframes lockPulse {
0%, 100% { box-shadow: 0 4px 16px rgba(16, 43, 106, 0.3); }
50% { box-shadow: 0 4px 24px rgba(16, 43, 106, 0.5); }
}
.cxz-lock-icon {
animation: lockPulse 2.5s ease-in-out infinite;
}
/* ============================================================
Print Styles
============================================================ */
@media print {
.cxz-article-actions,
.cxz-article-nav,
.cxz-filter-bar,
.cxz-pagination,
.cxz-content-lock .cxz-lock-overlay,
.cxz-collect-meta .btn-remove,
.cxz-collect-meta .cxz-card-remove,
.cxz-list-action {
display: none !important;
}
.cxz-article-card,
.cxz-collect-card {
box-shadow: none;
border: 1px solid #ccc;
}
.cxz-content-lock::after {
display: none;
}
}
/* Article detail interactions */
.cxz-article-actions {
justify-content: center;
gap: 14px;
padding: 20px 32px;
}
.cxz-action-btn {
min-width: 118px;
height: 44px;
padding: 0 22px;
border-radius: 999px;
border: 1px solid #dbe2ee;
background: #f7f9fc;
color: #102b6a;
font-size: 14px;
font-weight: 700;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
}
.cxz-action-btn:hover {
border-color: #102b6a;
background: #fff;
color: #102b6a;
box-shadow: 0 8px 20px rgba(16, 43, 106, 0.12);
}
.cxz-action-btn.liked {
border-color: rgba(241, 90, 34, 0.24);
background: #fff3ec;
color: #f15a22;
}
.cxz-action-btn.collected {
border-color: rgba(253, 185, 51, 0.38);
background: #fff8e8;
color: #102b6a;
}
.cxz-action-btn:disabled {
cursor: not-allowed;
opacity: 0.72;
box-shadow: none;
}
.cxz-article-nav {
display: flex;
flex-wrap: wrap;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.cxz-recommend-section {
display: flex;
flex-wrap: wrap;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 16px;
margin-top: 24px;
}
.cxz-recommend-card {
padding: 18px 20px;
border: 1px solid #e7edf6;
border-radius: 12px;
background: #fff;
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0, 0, 0, 0.04));
}
.cxz-recommend-title {
margin-bottom: 12px;
color: var(--primary);
font-size: 16px;
font-weight: 800;
}
.cxz-recommend-list {
display: flex;
flex-wrap: wrap;
display: grid;
gap: 10px;
margin: 0;
padding: 0;
list-style: none;
}
.cxz-recommend-list li {
display: flex;
flex-wrap: wrap;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 12px;
align-items: center;
color: var(--text-muted);
font-size: 13px;
}
.cxz-recommend-list a {
overflow: hidden;
color: var(--text-dark);
text-overflow: ellipsis;
white-space: nowrap;
}
.cxz-recommend-list a:hover {
color: var(--primary);
}
.cxz-recommend-empty {
grid-template-columns: 1fr !important;
color: var(--text-muted);
}
.cxz-nav-item {
position: relative;
overflow: hidden;
}
.cxz-nav-item::before {
content: "";
position: absolute;
inset: 0 auto 0 0;
width: 4px;
background: #fdb933;
opacity: 0;
transition: opacity 0.2s ease;
}
.cxz-nav-item:hover::before {
opacity: 1;
}
.cxz-nav-item.is-disabled {
cursor: default;
opacity: 0.54;
pointer-events: none;
}
.cxz-nav-item.is-disabled:hover {
border-color: var(--border-light, #e5e7eb);
box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.06));
transform: none;
}
.cxz-comment-section {
margin-top: 24px;
border-radius: 16px;
background: #fff;
box-shadow: 0 12px 34px rgba(16, 43, 106, 0.08);
overflow: hidden;
}
.cxz-comment-header {
padding: 18px 24px;
border-bottom: 1px solid #e7edf6;
color: #102b6a;
font-weight: 800;
}
.cxz-comment-input-box {
padding: 20px 24px;
border-bottom: 1px solid #eef2f7;
background: #f8fafd;
}
.cxz-comment-textarea {
min-height: 104px;
border-radius: 12px;
border-color: #dbe2ee;
background: #fff;
}
.cxz-comment-textarea:focus {
border-color: #102b6a;
box-shadow: 0 0 0 3px rgba(16, 43, 106, 0.1);
}
.cxz-comment-submit-btn {
min-width: 112px;
border-radius: 999px;
background: linear-gradient(135deg, #102b6a, #1e5790);
box-shadow: 0 8px 18px rgba(16, 43, 106, 0.18);
}
.cxz-comment-submit-btn:hover {
background: linear-gradient(135deg, #0d245c, #194d83);
}
.cxz-comment-list {
padding: 4px 24px 8px;
}
.cxz-comment-item {
padding: 18px 0;
}
.cxz-comment-avatar,
.cxz-comment-avatar-placeholder {
width: 40px;
height: 40px;
}
.cxz-article-body {
overflow: hidden;
}
.cxz-content-inner {
max-width: 100%;
color: inherit;
font-size: inherit;
line-height: inherit;
}
.cxz-content-inner img,
.cxz-content-inner video,
.cxz-content-inner iframe {
max-width: 100%;
}
.cxz-content-empty {
margin: 0;
padding: 32px 0;
text-align: center;
color: var(--text-muted, #8a96aa);
}
/* mianfei comment layout fix */
.cxz-comment-section {
border: 1px solid #e7edf6;
}
@media (max-width: 768px) {
.cxz-recommend-section {
grid-template-columns: 1fr;
}
.cxz-recommend-list li {
grid-template-columns: 1fr;
gap: 4px;
}
}
.cxz-comment-header {
display: flex;
align-items: center;
gap: 8px;
background: linear-gradient(180deg, #fbfcff, #fff);
font-size: 16px;
}
.cxz-comment-header i {
color: #102b6a;
font-size: 18px;
}
.cxz-comment-input-box {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
.cxz-comment-textarea {
display: block;
width: 100%;
min-height: 108px;
padding: 12px 14px;
border: 1px solid #d7dfec;
border-radius: 10px;
color: #1f2f4d;
font-size: 14px;
line-height: 1.7;
outline: none;
resize: vertical;
box-sizing: border-box;
}
.cxz-comment-textarea::placeholder {
color: #8a96aa;
}
.cxz-comment-submit-btn {
height: 36px;
padding: 0 24px;
border: 0;
color: #fff;
font-size: 14px;
font-weight: 700;
cursor: pointer;
transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.cxz-comment-submit-btn:disabled {
cursor: not-allowed;
opacity: 0.68;
transform: none;
box-shadow: none;
}
/* mianfei comment list polish */
.cxz-comment-textarea {
resize: none;
}
.cxz-comment-list {
padding: 18px 24px 8px;
}
.cxz-comment-empty {
display: flex;
min-height: 92px;
align-items: center;
justify-content: center;
gap: 8px;
color: #8a96aa;
font-size: 14px;
text-align: center;
}
.cxz-comment-empty i {
color: #102b6a;
font-size: 18px;
opacity: 0.7;
}
.cxz-comment-item {
display: flex;
flex-wrap: wrap;
display: grid;
grid-template-columns: 44px minmax(0, 1fr);
gap: 14px;
padding: 18px 0;
border-bottom: 1px solid #eef2f7;
}
.cxz-comment-item:last-child {
border-bottom: 0;
}
.cxz-comment-avatar,
.cxz-comment-avatar-placeholder {
width: 44px;
height: 44px;
border-radius: 50%;
object-fit: cover;
}
.cxz-comment-avatar-placeholder {
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #102b6a, #1e5790);
color: #fff;
font-weight: 800;
}
.cxz-comment-body {
min-width: 0;
}
.cxz-comment-name {
margin-bottom: 6px;
color: #102b6a;
font-size: 14px;
font-weight: 800;
}
.cxz-comment-text {
color: #1f2f4d;
font-size: 14px;
line-height: 1.7;
word-break: break-word;
white-space: pre-wrap;
}
.cxz-comment-time {
margin-top: 8px;
color: #8a96aa;
font-size: 12px;
}
.cxz-pagination {
padding: 12px 24px 18px;
border-top: 1px solid #eef2f7;
}