Files
shencaisuan/public/css/distribution.css
T
2026-06-04 11:43:41 +08:00

1906 lines
32 KiB
CSS

/* ============================================================
distribution.css - 分销页 (fenxiao.html, wodefenxiao.html, tuiguang.html)
============================================================ */
/* === Page Header/Nav (shared by distribution pages) === */
.page-header {
max-width: 1400px;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 0;
}
.page-header .logo-wrap {
display: flex;
align-items: center;
gap: 12px;
}
.page-header .logo-wrap img {
height: 44px;
}
.page-header .logo-text {
font-size: 26px;
font-weight: 700;
color: var(--primary);
}
.page-header .logo-text span {
color: var(--orange);
}
.page-header .header-right {
display: flex;
align-items: center;
gap: 16px;
}
.page-header .header-right a {
font-size: 14px;
color: var(--primary);
font-weight: 500;
transition: color 0.2s;
text-decoration: none;
}
.page-header .header-right a:hover {
color: var(--orange);
}
.page-title {
font-size: 22px;
font-weight: 700;
color: var(--primary);
}
.page-desc {
font-size: 14px;
color: var(--text-muted);
margin-top: 4px;
line-height: 1.6;
}
.page-nav {
width: 100%;
background: var(--primary);
display: flex;
justify-content: center;
}
.page-nav-inner {
max-width: 1400px;
display: flex;
align-items: center;
justify-content: center;
height: 50px;
}
.page-nav-inner a {
width: 140px;
display: flex;
font-size: 16px;
justify-content: center;
line-height: 50px;
text-align: center;
color: #fff;
cursor: pointer;
transition: background 0.3s;
text-decoration: none;
}
.page-nav-inner a:hover {
background: rgba(253, 185, 51, 0.2);
}
.page-nav-inner a.active {
background: rgba(253, 185, 51, 0.3);
}
.page-main {
max-width: 1400px;
margin: 20px auto;
}
/* ============================
FENXIAO - 分销中心页 (fenxiao.html)
============================ */
/* User Card */
.user-card {
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light, #1a3f8f) 50%, var(--purple) 100%);
border-radius: var(--radius-lg);
padding: 32px;
color: #fff;
margin-bottom: 24px;
position: relative;
overflow: hidden;
box-shadow: 0 8px 32px rgba(16, 43, 106, 0.25);
}
.user-card::before {
content: '';
position: absolute;
top: -60px;
right: -60px;
width: 200px;
height: 200px;
border-radius: 50%;
background: rgba(253, 185, 51, 0.1);
}
.user-card::after {
content: '';
position: absolute;
bottom: -40px;
left: -40px;
width: 140px;
height: 140px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.05);
}
.user-info-row {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 24px;
position: relative;
z-index: 1;
}
.user-avatar {
width: 72px;
height: 72px;
border-radius: 50%;
border: 3px solid rgba(253, 185, 51, 0.6);
object-fit: cover;
background: rgba(255, 255, 255, 0.15);
display: flex;
align-items: center;
justify-content: center;
font-size: 28px;
color: var(--gold);
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
flex-shrink: 0;
}
.user-avatar-placeholder {
width: 64px;
height: 64px;
border-radius: 50%;
border: 3px solid rgba(253, 185, 51, 0.6);
background: rgba(255, 255, 255, 0.15);
display: flex;
align-items: center;
justify-content: center;
font-size: 28px;
color: var(--gold);
}
.user-info {
flex: 1;
position: relative;
z-index: 1;
}
.user-name {
font-size: 22px;
font-weight: 700;
color: #fff;
display: flex;
align-items: center;
gap: 10px;
}
.user-phone {
font-size: 14px;
color: rgba(255, 255, 255, 0.7);
margin-top: 4px;
}
.user-level {
display: inline-block;
padding: 3px 14px;
border-radius: 20px;
font-size: 12px;
font-weight: 700;
background: linear-gradient(135deg, var(--gold), var(--orange));
color: var(--primary);
letter-spacing: 0.5px;
}
.user-role-tag {
display: inline-block;
padding: 3px 12px;
border-radius: 20px;
font-size: 12px;
margin-left: 12px;
}
.role-distribution {
background: rgba(253, 185, 51, 0.3);
color: var(--gold);
}
.role-expert {
background: rgba(241, 90, 34, 0.3);
color: var(--orange);
}
.role-none {
background: rgba(255, 255, 255, 0.15);
color: rgba(255, 255, 255, 0.6);
}
/* Balance Grid */
.balance-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
position: relative;
z-index: 1;
}
.balance-item {
background: rgba(255, 255, 255, 0.1);
border-radius: var(--radius-lg);
padding: 20px;
text-align: center;
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
transition: transform 0.3s, background 0.3s;
}
.balance-item:hover {
transform: translateY(-2px);
background: rgba(255, 255, 255, 0.15);
}
.balance-label {
font-size: 13px;
color: rgba(255, 255, 255, 0.7);
margin-bottom: 8px;
}
.balance-value {
font-size: 26px;
font-weight: 700;
color: var(--gold);
}
.balance-value .unit {
font-size: 14px;
font-weight: 400;
color: rgba(255, 255, 255, 0.5);
margin-left: 2px;
}
/* Stats Grid */
.stats-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
margin-bottom: 24px;
}
.stat-item {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 24px;
text-align: center;
box-shadow: var(--shadow-sm);
transition: transform 0.3s, box-shadow 0.3s;
border-top: 3px solid transparent;
}
.stat-item:nth-child(1) {
border-top-color: var(--primary);
}
.stat-item:nth-child(2) {
border-top-color: var(--purple);
}
.stat-item:nth-child(3) {
border-top-color: var(--gold);
}
.stat-item:nth-child(4) {
border-top-color: var(--orange);
}
.stat-item:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-md);
}
.stat-num {
font-size: 28px;
font-weight: 700;
color: var(--primary);
line-height: 1.2;
}
.stat-num .unit {
font-size: 14px;
font-weight: 400;
color: var(--text-muted);
margin-left: 2px;
}
.stat-label {
font-size: 14px;
color: var(--text-muted);
margin-top: 8px;
}
/* Compat: stat-card (legacy class used in HTML) */
.stat-card {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 24px;
text-align: center;
box-shadow: var(--shadow-sm);
transition: transform 0.3s;
border-top: 3px solid transparent;
}
.stat-card:nth-child(1) {
border-top-color: var(--primary);
}
.stat-card:nth-child(2) {
border-top-color: var(--purple);
}
.stat-card:nth-child(3) {
border-top-color: var(--gold);
}
.stat-card:nth-child(4) {
border-top-color: var(--orange);
}
.stat-card:hover {
transform: translateY(-3px);
}
.stat-value {
font-size: 28px;
font-weight: 700;
color: var(--primary);
}
.stat-value .unit {
font-size: 14px;
font-weight: 400;
color: var(--text-muted);
margin-left: 2px;
}
/* Action Grid */
.action-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
margin-bottom: 24px;
}
.action-item {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 24px 16px;
text-align: center;
box-shadow: var(--shadow-sm);
transition: transform 0.3s, box-shadow 0.3s;
cursor: pointer;
text-decoration: none;
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
border: 1px solid var(--border-light);
}
.action-item:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-md);
border-color: var(--primary);
}
.action-icon {
width: 56px;
height: 56px;
border-radius: var(--radius-md);
display: flex;
align-items: center;
justify-content: center;
font-size: 26px;
color: #fff;
flex-shrink: 0;
}
.action-icon.icon-fenxiao {
background: linear-gradient(135deg, var(--primary), var(--primary-light, #1a3f8f));
}
.action-icon.icon-tuiguang {
background: linear-gradient(135deg, var(--purple), #9b4dca);
}
.action-icon.icon-tixian {
background: linear-gradient(135deg, var(--orange), var(--gold));
}
.action-icon.icon-wodefenxiao {
background: linear-gradient(135deg, var(--green), #2ecc71);
}
.action-text {
font-size: 14px;
font-weight: 600;
color: var(--primary);
}
.action-item:hover .action-text {
color: var(--orange);
}
/* Action Section (legacy 2-column card layout) */
.action-section {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
margin-bottom: 24px;
}
.action-card {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 28px;
box-shadow: var(--shadow-sm);
transition: transform 0.3s, box-shadow 0.3s;
}
.action-card:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-md);
}
.action-card-title {
font-size: 18px;
font-weight: 700;
color: var(--primary);
margin-bottom: 8px;
display: flex;
align-items: center;
gap: 8px;
}
.action-card-desc {
font-size: 14px;
color: var(--text-muted);
margin-bottom: 20px;
line-height: 1.6;
}
.action-card-btn {
display: inline-block;
padding: 10px 32px;
border-radius: var(--radius-md);
font-size: 15px;
font-weight: 600;
cursor: pointer;
border: none;
transition: all 0.3s;
}
.btn-apply-dist {
background: linear-gradient(135deg, var(--primary), var(--primary-light, #1a3f8f));
color: #fff;
}
.btn-apply-dist:hover {
box-shadow: 0 4px 16px rgba(16, 43, 106, 0.3);
transform: translateY(-1px);
}
.btn-apply-expert {
background: linear-gradient(135deg, var(--orange), var(--gold));
color: #fff;
}
.btn-apply-expert:hover {
box-shadow: 0 4px 16px rgba(241, 90, 34, 0.3);
transform: translateY(-1px);
}
.btn-disabled {
opacity: 0.5;
cursor: not-allowed;
pointer-events: none;
}
/* Team Section */
.team-section {
background: var(--white, #fff);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-sm);
margin-bottom: 24px;
overflow: hidden;
}
.team-section-title {
font-size: 18px;
font-weight: 700;
color: var(--primary);
padding: 20px 24px;
border-bottom: 1px solid var(--border-light);
display: flex;
align-items: center;
gap: 8px;
background: linear-gradient(90deg, rgba(16, 43, 106, 0.04) 0%, transparent 100%);
}
.team-section-title i {
color: var(--gold);
}
.team-table {
width: 100%;
border-collapse: collapse;
}
.team-table thead {
background: linear-gradient(135deg, #f0f3fa 0%, #e8ecf5 100%);
}
.team-table th {
padding: 14px 16px;
font-size: 13px;
font-weight: 600;
color: var(--primary);
text-align: left;
white-space: nowrap;
border-bottom: 1px solid var(--border-light);
}
.team-table td {
padding: 14px 16px;
font-size: 14px;
color: var(--text-dark, #1a1a2e);
border-bottom: 1px solid var(--border-light);
vertical-align: middle;
}
.team-table tbody tr {
transition: background 0.2s;
}
.team-table tbody tr:hover {
background: #fafbfe;
}
.team-table a {
color: var(--primary);
text-decoration: none;
transition: color 0.2s;
}
.team-table a:hover {
color: var(--orange);
}
/* Links Section */
.links-section {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 24px;
box-shadow: var(--shadow-sm);
}
.links-section-title {
font-size: 18px;
font-weight: 700;
color: var(--primary);
margin-bottom: 16px;
padding-bottom: 12px;
border-bottom: 2px solid var(--bg-light);
}
.links-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
.link-item {
display: flex;
align-items: center;
gap: 12px;
padding: 16px 20px;
border-radius: 10px;
background: var(--bg-light);
transition: all 0.3s;
text-decoration: none;
}
.link-item:hover {
background: var(--primary);
transform: translateY(-2px);
}
.link-item:hover .link-item-text {
color: #fff;
}
.link-item:hover .link-item-desc {
color: rgba(255, 255, 255, 0.7);
}
.link-item-icon {
width: 42px;
height: 42px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
flex-shrink: 0;
color: #fff;
}
.link-item-icon.icon-fenxiao {
background: linear-gradient(135deg, var(--primary), var(--primary-light, #1a3f8f));
}
.link-item-icon.icon-tuiguang {
background: linear-gradient(135deg, var(--purple), #9b4dca);
}
.link-item-icon.icon-tixian {
background: linear-gradient(135deg, var(--orange), var(--gold));
}
.link-item-text {
font-size: 16px;
font-weight: 600;
color: var(--primary);
}
.link-item-desc {
font-size: 12px;
color: var(--text-muted);
margin-top: 2px;
}
/* Empty State */
.empty-state {
text-align: center;
padding: 60px 20px;
color: var(--text-muted);
}
.empty-state i {
font-size: 60px;
color: #ddd;
margin-bottom: 16px;
display: block;
}
.empty-state p {
font-size: 16px;
}
/* ============================
WODEFENXIAO - 我的分销页 (wodefenxiao.html)
============================ */
/* Team Page */
.team-page {
max-width: 1400px;
margin: 0 auto;
padding: 0 0 40px;
}
.team-header {
margin-bottom: 24px;
}
.team-header .page-title {
font-size: 22px;
font-weight: 700;
color: var(--primary);
}
.team-header .page-desc {
font-size: 14px;
color: var(--text-muted);
margin-top: 4px;
}
.team-stats {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
margin-bottom: 24px;
}
.team-stats .stat-item {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 24px;
text-align: center;
box-shadow: var(--shadow-sm);
transition: transform 0.3s, box-shadow 0.3s;
border-top: 3px solid transparent;
}
.team-stats .stat-item:nth-child(1) {
border-top-color: var(--primary);
}
.team-stats .stat-item:nth-child(2) {
border-top-color: var(--purple);
}
.team-stats .stat-item:nth-child(3) {
border-top-color: var(--gold);
}
.team-stats .stat-item:nth-child(4) {
border-top-color: var(--orange);
}
.team-stats .stat-item:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-md);
}
/* Team Table Box */
.team-table-box {
background: var(--white, #fff);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-sm);
overflow: hidden;
margin-bottom: 24px;
}
.team-data-table {
width: 100%;
border-collapse: collapse;
}
.team-data-table thead {
background: linear-gradient(135deg, #f0f3fa 0%, #e8ecf5 100%);
}
.team-data-table th {
padding: 14px 16px;
font-size: 13px;
font-weight: 600;
color: var(--primary);
text-align: left;
white-space: nowrap;
border-bottom: 1px solid var(--border-light);
}
.team-data-table td {
padding: 14px 16px;
font-size: 14px;
color: var(--text-dark, #1a1a2e);
border-bottom: 1px solid var(--border-light);
vertical-align: middle;
}
.team-data-table tbody tr {
transition: background 0.2s;
}
.team-data-table tbody tr:hover {
background: #fafbfe;
}
.team-data-table a {
color: var(--primary);
text-decoration: none;
transition: color 0.2s;
}
.team-data-table a:hover {
color: var(--orange);
}
/* Team Level Badges */
.team-level-badge {
display: inline-flex;
align-items: center;
padding: 3px 12px;
border-radius: 20px;
font-size: 12px;
font-weight: 700;
letter-spacing: 0.5px;
gap: 4px;
}
.team-level-badge::before {
content: '';
width: 6px;
height: 6px;
border-radius: 50%;
flex-shrink: 0;
}
.team-level-1 {
background: rgba(16, 43, 106, 0.1);
color: var(--primary);
}
.team-level-1::before {
background: var(--primary);
}
.team-level-2 {
background: rgba(123, 45, 142, 0.1);
color: var(--purple);
}
.team-level-2::before {
background: var(--purple);
}
.team-level-3 {
background: rgba(241, 90, 34, 0.1);
color: var(--orange);
}
.team-level-3::before {
background: var(--orange);
}
/* Table Section (legacy compat) */
.table-section {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 24px;
box-shadow: var(--shadow-sm);
}
.table-section-title {
font-size: 18px;
font-weight: 700;
color: var(--primary);
margin-bottom: 16px;
display: flex;
align-items: center;
gap: 8px;
}
.table-section-title i {
color: var(--gold);
}
/* ============================
TUIGUANG - 推广赚钱页 (tuiguang.html)
============================ */
/* Promo Page */
.promo-page {
max-width: 1400px;
margin: 0 auto;
padding: 0 0 40px;
}
/* Promo Card */
.promo-card {
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light, #1a3f8f) 50%, var(--purple) 100%);
border-radius: var(--radius-lg);
padding: 40px;
color: #fff;
margin-bottom: 24px;
position: relative;
overflow: hidden;
box-shadow: 0 8px 32px rgba(16, 43, 106, 0.25);
}
.promo-card::before {
content: '';
position: absolute;
top: -80px;
right: -80px;
width: 260px;
height: 260px;
border-radius: 50%;
background: rgba(253, 185, 51, 0.08);
}
.promo-card::after {
content: '';
position: absolute;
bottom: -60px;
left: -40px;
width: 180px;
height: 180px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.04);
}
.promo-content {
position: relative;
z-index: 1;
}
.promo-title {
font-size: 28px;
font-weight: 700;
color: #fff;
margin-bottom: 8px;
}
.promo-title span {
color: var(--gold);
}
.promo-desc {
font-size: 15px;
color: rgba(255, 255, 255, 0.7);
line-height: 1.8;
margin-bottom: 0;
}
/* Promo Code Box */
.promo-code-box {
display: flex;
align-items: center;
gap: 12px;
background: var(--white, #fff);
border-radius: var(--radius-md);
padding: 12px 16px;
margin-bottom: 16px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
}
.promo-code {
flex: 1;
font-size: 15px;
font-weight: 600;
color: var(--primary);
word-break: break-all;
letter-spacing: 0.5px;
background: transparent;
border: none;
outline: none;
font-family: "Consolas", "Monaco", "Microsoft YaHei", monospace;
}
.promo-copy-btn {
height: 40px;
padding: 0 24px;
background: linear-gradient(135deg, var(--primary), var(--primary-light, #1a3f8f));
color: #fff;
border: none;
border-radius: var(--radius-md);
font-size: 14px;
font-weight: 600;
cursor: pointer;
white-space: nowrap;
transition: all 0.3s;
flex-shrink: 0;
}
.promo-copy-btn:hover {
box-shadow: 0 4px 16px rgba(16, 43, 106, 0.3);
transform: translateY(-1px);
}
.promo-copy-btn:active {
transform: translateY(0);
}
.promo-copy-btn.copied {
background: linear-gradient(135deg, var(--green), #2ecc71);
}
/* Promo QR Code */
.promo-qrcode {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 32px;
box-shadow: var(--shadow-sm);
text-align: center;
margin-bottom: 24px;
}
.promo-qrcode-title {
font-size: 18px;
font-weight: 700;
color: var(--primary);
margin-bottom: 20px;
}
.promo-qrcode-img {
display: inline-block;
padding: 16px;
background: #fff;
border: 2px dashed var(--border-light);
border-radius: var(--radius-lg);
margin-bottom: 16px;
}
.promo-qrcode-img img {
display: block;
width: 200px;
height: 200px;
}
.promo-qrcode-tip {
font-size: 13px;
color: var(--text-muted);
margin-top: 8px;
}
/* Promo Link */
.promo-link {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 32px;
box-shadow: var(--shadow-sm);
margin-bottom: 24px;
}
.promo-link-title {
font-size: 18px;
font-weight: 700;
color: var(--primary);
margin-bottom: 20px;
}
.promo-link-input-wrap {
display: flex;
gap: 12px;
margin-bottom: 20px;
}
.promo-link-input {
flex: 1;
height: 44px;
padding: 0 16px;
border: 2px solid var(--border-light);
border-radius: var(--radius-md);
font-size: 14px;
color: var(--text-dark, #1a1a2e);
background: var(--bg-light);
outline: none;
transition: border-color 0.3s;
}
.promo-link-input:focus {
border-color: var(--primary);
background: #fff;
}
/* Promo Stats */
.promo-stats {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin-bottom: 24px;
}
.promo-stat-item {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 24px;
text-align: center;
box-shadow: var(--shadow-sm);
transition: transform 0.3s, box-shadow 0.3s;
border-top: 3px solid transparent;
}
.promo-stat-item:nth-child(1) {
border-top-color: var(--primary);
}
.promo-stat-item:nth-child(2) {
border-top-color: var(--purple);
}
.promo-stat-item:nth-child(3) {
border-top-color: var(--gold);
}
.promo-stat-item:hover {
transform: translateY(-3px);
box-shadow: var(--shadow-md);
}
.promo-stat-num {
font-size: 28px;
font-weight: 700;
color: var(--primary);
line-height: 1.2;
}
.promo-stat-num .unit {
font-size: 14px;
font-weight: 400;
color: var(--text-muted);
margin-left: 2px;
}
.promo-stat-label {
font-size: 14px;
color: var(--text-muted);
margin-top: 8px;
}
/* Legacy promo-banner class */
.promo-banner {
background: linear-gradient(135deg, var(--primary) 0%, var(--primary-light, #1a3f8f) 50%, var(--purple) 100%);
border-radius: var(--radius-lg);
padding: 40px;
color: #fff;
margin-bottom: 24px;
position: relative;
overflow: hidden;
}
.promo-banner::before {
content: '';
position: absolute;
top: -80px;
right: -80px;
width: 260px;
height: 260px;
border-radius: 50%;
background: rgba(253, 185, 51, 0.08);
}
.promo-banner h2 {
font-size: 28px;
font-weight: 700;
margin-bottom: 8px;
position: relative;
z-index: 1;
}
.promo-banner h2 span {
color: var(--gold);
}
.promo-banner p {
font-size: 15px;
color: rgba(255, 255, 255, 0.7);
line-height: 1.8;
position: relative;
z-index: 1;
}
/* 3-column stats for tuiguang page */
.stats-row {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 16px;
margin-bottom: 24px;
}
/* Override stat-card nth-child colors for 3 columns */
.stats-row .stat-card:nth-child(1) {
border-top-color: var(--primary);
}
.stats-row .stat-card:nth-child(2) {
border-top-color: var(--purple);
}
.stats-row .stat-card:nth-child(3) {
border-top-color: var(--gold);
}
.stats-row .stat-card:nth-child(4) {
border-top-color: var(--orange);
}
.stats-row .stat-card:nth-child(5) {
border-top-color: var(--green);
}
.team-section-title--filter {
justify-content: space-between;
}
.team-section-title--filter > span {
display: flex;
align-items: center;
gap: 8px;
}
.promo-filter {
display: flex;
align-items: center;
gap: 8px;
}
.promo-filter button {
min-width: 74px;
height: 32px;
padding: 0 14px;
border: 1px solid var(--border-light);
border-radius: 16px;
background: #f5f7fb;
color: var(--text-muted);
font-size: 13px;
cursor: pointer;
transition: all 0.2s;
}
.promo-filter button.active,
.promo-filter button:hover {
border-color: var(--primary);
background: rgba(16, 43, 106, 0.08);
color: var(--primary);
font-weight: 600;
}
.promo-status {
display: inline-flex;
align-items: center;
height: 26px;
padding: 0 10px;
border-radius: 13px;
font-size: 12px;
font-weight: 600;
}
.promo-status.success {
color: var(--green);
background: rgba(35, 178, 111, 0.1);
}
.promo-status.pending {
color: var(--orange);
background: rgba(255, 139, 44, 0.12);
}
.promo-info-grid {
display: grid;
grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
gap: 24px;
}
.promo-info-card {
overflow: hidden;
}
.promo-rule-list {
padding: 20px 24px 24px;
}
.promo-rule-item {
display: flex;
gap: 12px;
align-items: flex-start;
padding: 10px 0;
border-bottom: 1px dashed var(--border-light);
}
.promo-rule-item:last-child {
border-bottom: none;
}
.promo-rule-item span {
width: 26px;
height: 26px;
border-radius: 50%;
background: var(--primary);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
font-weight: 700;
flex-shrink: 0;
}
.promo-rule-item p {
margin: 0;
color: var(--text-muted);
line-height: 1.8;
}
.promo-flow-list {
padding: 24px;
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 14px;
}
.promo-flow-step {
min-height: 78px;
border-radius: var(--radius-md);
background: linear-gradient(135deg, rgba(16, 43, 106, 0.06), rgba(253, 185, 51, 0.08));
padding: 16px;
display: flex;
flex-direction: column;
justify-content: center;
gap: 8px;
}
.promo-flow-step strong {
color: var(--orange);
font-size: 18px;
}
.promo-flow-step span {
color: var(--primary);
font-weight: 600;
}
/* QR & Link cards (legacy layout) */
.qr-card {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 32px;
box-shadow: var(--shadow-sm);
text-align: center;
}
.qr-card-title {
font-size: 18px;
font-weight: 700;
color: var(--primary);
margin-bottom: 20px;
}
.qr-code-box {
display: inline-block;
padding: 16px;
background: #fff;
border: 2px dashed var(--border-light);
border-radius: var(--radius-lg);
margin-bottom: 16px;
}
.qr-code-box img {
display: block;
width: 200px;
height: 200px;
}
.qr-card-tip {
font-size: 13px;
color: var(--text-muted);
margin-top: 8px;
}
.link-card {
background: var(--white, #fff);
border-radius: var(--radius-lg);
padding: 32px;
box-shadow: var(--shadow-sm);
}
.link-card-title {
font-size: 18px;
font-weight: 700;
color: var(--primary);
margin-bottom: 20px;
}
.link-input-wrap {
display: flex;
gap: 12px;
margin-bottom: 20px;
}
.link-input {
flex: 1;
height: 44px;
padding: 0 16px;
border: 2px solid var(--border-light);
border-radius: var(--radius-md);
font-size: 14px;
color: var(--text-dark, #1a1a2e);
background: var(--bg-light);
outline: none;
transition: border-color 0.3s;
}
.link-input:focus {
border-color: var(--primary);
}
.copy-btn {
height: 44px;
padding: 0 24px;
background: linear-gradient(135deg, var(--primary), var(--primary-light, #1a3f8f));
color: #fff;
border: none;
border-radius: var(--radius-md);
font-size: 14px;
font-weight: 600;
cursor: pointer;
white-space: nowrap;
transition: all 0.3s;
}
.copy-btn:hover {
box-shadow: 0 4px 16px rgba(16, 43, 106, 0.3);
transform: translateY(-1px);
}
.copy-btn:active {
transform: translateY(0);
}
.share-tips {
background: var(--bg-light);
border-radius: 10px;
padding: 20px;
margin-top: 20px;
}
.share-tips h4 {
font-size: 15px;
font-weight: 600;
color: var(--primary);
margin-bottom: 10px;
}
.share-tips ul {
list-style: disc;
padding-left: 20px;
}
.share-tips li {
font-size: 13px;
color: #666;
line-height: 2;
}
.share-tips li strong {
color: var(--orange);
}
/* ============================
PROMO CONTENT 2-COLUMN LAYOUT
============================ */
.promo-content-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
margin-bottom: 24px;
}
/* ============================
RESPONSIVE
============================ */
@media (max-width: 1024px) {
.page-header,
.page-nav-inner,
.page-main {
max-width: 100%;
padding-left: 16px;
padding-right: 16px;
}
.action-grid {
grid-template-columns: repeat(2, 1fr);
}
.team-stats {
grid-template-columns: repeat(2, 1fr);
}
.promo-stats {
grid-template-columns: repeat(2, 1fr);
}
.promo-content-grid {
grid-template-columns: 1fr;
}
.links-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 768px) {
.page-header,
.page-nav-inner,
.page-main {
width: 100%;
padding: 0 16px;
}
.page-title {
font-size: 18px;
}
.page-desc {
font-size: 13px;
}
.page-nav-inner {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.page-nav-inner a {
width: auto;
padding: 0 14px;
font-size: 14px;
white-space: nowrap;
}
/* User Card */
.user-card {
padding: 24px 16px;
border-radius: var(--radius-md);
}
.user-info-row {
flex-direction: column;
text-align: center;
gap: 12px;
}
.user-avatar {
width: 56px;
height: 56px;
}
.user-name {
font-size: 18px;
justify-content: center;
}
.user-level {
font-size: 11px;
padding: 2px 10px;
}
/* Balance Grid */
.balance-grid {
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.balance-item {
padding: 14px 10px;
border-radius: var(--radius-md);
}
.balance-value {
font-size: 22px;
}
.balance-label {
font-size: 12px;
}
/* Stats Grid */
.stats-grid {
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.stat-item {
padding: 16px 12px;
}
.stat-num {
font-size: 22px;
}
.stat-label {
font-size: 12px;
}
/* Team Stats */
.team-stats {
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.team-stats .stat-item {
padding: 16px 12px;
}
/* Action Grid */
.action-grid {
grid-template-columns: repeat(2, 1fr);
gap: 10px;
}
.action-item {
padding: 16px 10px;
}
.action-icon {
width: 44px;
height: 44px;
font-size: 20px;
}
.action-text {
font-size: 13px;
}
/* Action Section (legacy) */
.action-section {
grid-template-columns: 1fr;
}
/* Links Grid */
.links-grid {
grid-template-columns: 1fr;
}
/* Promo Card */
.promo-card {
padding: 24px 16px;
border-radius: var(--radius-md);
}
.promo-title {
font-size: 22px;
}
.promo-desc {
font-size: 14px;
}
/* Promo Code Box */
.promo-code-box {
flex-direction: column;
align-items: stretch;
gap: 10px;
padding: 12px;
}
.promo-code {
text-align: center;
font-size: 14px;
}
.promo-copy-btn {
width: 100%;
}
/* Promo Stats */
.promo-stats {
grid-template-columns: 1fr;
gap: 10px;
}
.promo-stat-item {
padding: 16px 12px;
}
.promo-stat-num {
font-size: 22px;
}
/* Promo QR Code */
.promo-qrcode {
padding: 20px 16px;
}
.promo-qrcode-img img {
width: 160px;
height: 160px;
}
/* Promo Link */
.promo-link {
padding: 20px 16px;
}
.promo-link-input-wrap {
flex-direction: column;
}
.promo-link-input {
width: 100%;
}
/* Stats Row */
.stats-row {
grid-template-columns: 1fr;
}
/* Promo Content (legacy 2-col) */
.promo-content {
grid-template-columns: 1fr;
}
/* Promo Content Grid */
.promo-content-grid {
grid-template-columns: 1fr;
}
/* Team Table */
.team-table-box,
.team-section {
border-radius: var(--radius-md);
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.team-data-table th,
.team-data-table td,
.team-table th,
.team-table td {
padding: 10px 10px;
font-size: 13px;
}
.team-level-badge {
font-size: 11px;
padding: 2px 8px;
}
/* QR Card / Link Card (legacy) */
.qr-card,
.link-card {
padding: 20px 16px;
}
.qr-code-box img {
width: 160px;
height: 160px;
}
.link-input-wrap {
flex-direction: column;
}
.link-input {
width: 100%;
}
.copy-btn {
width: 100%;
}
/* Stat Card (legacy) */
.stat-card {
padding: 16px 12px;
}
.stat-value {
font-size: 22px;
}
.stat-label {
font-size: 12px;
}
}
@media (max-width: 480px) {
.balance-grid {
grid-template-columns: repeat(2, 1fr);
gap: 8px;
}
.balance-value {
font-size: 20px;
}
.stats-grid {
grid-template-columns: repeat(2, 1fr);
gap: 8px;
}
.stat-num {
font-size: 20px;
}
.action-grid {
grid-template-columns: repeat(2, 1fr);
gap: 8px;
}
.action-icon {
width: 40px;
height: 40px;
font-size: 18px;
}
.team-stats {
grid-template-columns: repeat(2, 1fr);
gap: 8px;
}
.promo-stats {
grid-template-columns: 1fr;
gap: 8px;
}
.promo-stat-num {
font-size: 20px;
}
.promo-title {
font-size: 20px;
}
.user-name {
font-size: 16px;
}
.team-level-badge {
font-size: 10px;
padding: 2px 6px;
}
}
@media (max-width: 1200px) {
.stats-row {
grid-template-columns: repeat(3, 1fr);
}
.promo-info-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 768px) {
.stats-row {
grid-template-columns: repeat(2, 1fr);
}
.team-section-title--filter {
align-items: flex-start;
flex-direction: column;
gap: 12px;
}
.promo-filter {
flex-wrap: wrap;
}
.promo-flow-list {
grid-template-columns: 1fr;
}
}
/* Tuiguang spacing refinement */
.promo-content {
display: grid;
grid-template-columns: minmax(300px, 0.85fr) minmax(0, 1.15fr);
gap: 32px;
align-items: stretch;
margin-bottom: 36px;
}
.promo-content + .team-section {
margin-top: 8px;
}
.qr-card,
.link-card {
min-height: 100%;
}
.link-card .share-tips {
margin-top: 24px;
}
.team-section + .team-section,
.team-section + .promo-info-grid {
margin-top: 28px;
}
@media (max-width: 1024px) {
.promo-content {
grid-template-columns: 1fr;
gap: 28px;
margin-bottom: 32px;
}
}