/* ============================================================ combo.css - Combo pages (duanzuhe.html, shazuhe.html) Uses CSS variables from public.css ============================================================ */ /* ============================ FILTER BAR - Category filters ============================ */ .filter-bar { display: flex; align-items: center; gap: 16px; padding: 20px 24px; background: var(--white); border-radius: var(--radius-lg); margin-bottom: 20px; box-shadow: var(--shadow-sm); flex-wrap: wrap; } .filter-bar label { font-size: 14px; font-weight: 600; color: var(--primary); white-space: nowrap; } .filter-group { display: flex; align-items: center; gap: 8px; } .filter-label { font-size: 14px; font-weight: 600; color: var(--primary); white-space: nowrap; min-width: fit-content; } .filter-options { display: flex; flex-wrap: wrap; gap: 6px; } .filter-option { display: inline-block; padding: 6px 16px; border-radius: 20px; font-size: 13px; font-weight: 500; color: var(--text-dark); background: var(--bg-light); border: 1px solid var(--border-light); cursor: pointer; transition: all 0.25s; user-select: none; white-space: nowrap; } .filter-option:hover { border-color: var(--primary); color: var(--primary); background: rgba(16, 43, 106, 0.04); } .filter-option.selected { background: linear-gradient(135deg, var(--primary), var(--primary-light)); color: var(--white); border-color: var(--primary); box-shadow: 0 2px 8px rgba(16, 43, 106, 0.25); } /* Legacy filter select support */ .filter-select { height: 36px; padding: 0 12px; border: 2px solid var(--border-light); border-radius: var(--radius-md); font-size: 13px; color: var(--text-dark); background: var(--bg-light); outline: none; transition: border-color 0.3s; } .filter-select:focus { border-color: var(--primary); } /* ============================ CONTENT SECTION - Card list ============================ */ .content-section { background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow: hidden; margin-bottom: 20px; } .content-card { border-bottom: 1px solid var(--border-light); padding: 20px 24px; transition: background 0.2s; cursor: pointer; } .content-card:last-child { border-bottom: none; } .content-card:hover { background: var(--bg-light); } .content-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; gap: 12px; } .content-title { font-size: 18px; font-weight: 700; color: var(--primary); padding: 20px 24px; border-bottom: 2px solid var(--bg-light); display: flex; align-items: center; gap: 8px; } .content-title i { color: var(--gold); } .content-card .content-title { font-size: 15px; font-weight: 700; color: var(--text-dark); padding: 0; border-bottom: none; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .content-meta { display: flex; align-items: center; gap: 12px; font-size: 12px; color: var(--text-muted); flex-shrink: 0; } .content-meta span { display: inline-flex; align-items: center; gap: 4px; } .content-body { padding: 0; } /* ============================ OPEN CODE CELL - Ball display ============================ */ .open-code-cell { display: flex; gap: 4px; flex-wrap: wrap; justify-content: center; align-items: center; padding: 4px 0; } .code-ball { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; font-size: 12px; font-weight: 700; color: var(--white); transition: transform 0.2s; } .code-ball:hover { transform: scale(1.15); } .code-ball.red { background: linear-gradient(135deg, var(--red), #c0392b); box-shadow: 0 2px 6px rgba(231, 76, 60, 0.3); } .code-ball.blue { background: linear-gradient(135deg, #3498db, #2471a3); box-shadow: 0 2px 6px rgba(52, 152, 219, 0.3); } .code-ball.orange { background: linear-gradient(135deg, #f39c12, var(--orange)); box-shadow: 0 2px 6px rgba(241, 90, 34, 0.3); } .code-ball.green { background: linear-gradient(135deg, var(--green), #1e8449); box-shadow: 0 2px 6px rgba(39, 174, 96, 0.3); } .code-ball.purple { background: linear-gradient(135deg, #8e44ad, var(--purple)); box-shadow: 0 2px 6px rgba(123, 45, 142, 0.3); } .code-ball.gold { background: linear-gradient(135deg, var(--gold), var(--orange)); box-shadow: 0 2px 6px rgba(253, 185, 51, 0.3); } /* ============================ COMBO SUMMARY - Price & action ============================ */ .combo-summary { display: flex; align-items: center; justify-content: space-between; padding: 16px 24px; background: var(--bg-light); border-top: 1px solid var(--border-light); gap: 16px; } .combo-price { display: flex; align-items: baseline; gap: 4px; } .combo-price .price-symbol { font-size: 14px; font-weight: 700; color: var(--orange); } .combo-price .price-value { font-size: 22px; font-weight: 800; color: var(--orange); } .combo-price .price-unit { font-size: 12px; color: var(--text-muted); } .combo-price .price-original { font-size: 13px; color: var(--text-muted); text-decoration: line-through; margin-left: 6px; } .combo-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 24px; border: none; border-radius: 20px; font-size: 14px; font-weight: 700; background: linear-gradient(135deg, var(--primary), var(--primary-light)); color: var(--white); cursor: pointer; transition: all 0.3s; white-space: nowrap; } .combo-btn:hover { box-shadow: 0 4px 12px rgba(16, 43, 106, 0.3); transform: translateY(-1px); } .combo-btn:active { transform: translateY(0); } .cxz-btn-buy { display: inline-flex; align-items: center; gap: 6px; padding: 10px 28px; border: none; border-radius: 22px; font-size: 14px; font-weight: 700; background: linear-gradient(135deg, var(--orange), #e04e1a); color: var(--white); cursor: pointer; transition: all 0.3s; white-space: nowrap; position: relative; overflow: hidden; } .cxz-btn-buy::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); transition: left 0.5s; } .cxz-btn-buy:hover::before { left: 100%; } .cxz-btn-buy:hover { box-shadow: 0 4px 16px rgba(241, 90, 34, 0.4); transform: translateY(-2px); } .cxz-btn-buy:active { transform: translateY(0); } /* ============================ LAYUI TABLE OVERRIDES ============================ */ .content-section .layui-table { margin: 0; } .content-section .layui-table th { background: var(--bg-light); color: var(--primary); font-weight: 600; font-size: 13px; text-align: center; } .content-section .layui-table td { text-align: center; font-size: 13px; padding: 10px 12px; } .content-section .layui-table tr:hover td { background: var(--bg-light); } /* ============================ PAGINATION & EMPTY STATE ============================ */ .pagination-wrap { padding: 16px 24px; display: flex; justify-content: center; } .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; } /* ============================ PAGE HEADER / NAV (shared) ============================ */ .page-header { 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-nav { width: 100%; background: var(--primary); display: flex; justify-content: center; } .page-nav-inner { 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: var(--white); 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 { width: 1400px; margin: 20px auto; } /* ============================ RESPONSIVE STYLES ============================ */ @media (max-width: 768px) { .page-header, .page-nav-inner, .page-main { width: 100%; padding: 0 16px; } .filter-bar { flex-direction: column; align-items: flex-start; padding: 16px; } .filter-group { width: 100%; flex-wrap: wrap; } .filter-options { width: 100%; } .content-header { flex-direction: column; align-items: flex-start; } .content-card .content-title { white-space: normal; } .content-meta { width: 100%; justify-content: flex-start; } .combo-summary { flex-direction: column; align-items: stretch; text-align: center; } .combo-price { justify-content: center; } .combo-btn, .cxz-btn-buy { width: 100%; justify-content: center; } .open-code-cell { justify-content: flex-start; } .page-nav-inner a { width: auto; padding: 0 14px; font-size: 14px; } } @media (max-width: 480px) { .filter-option { padding: 5px 12px; font-size: 12px; } .code-ball { width: 22px; height: 22px; font-size: 10px; } .content-card { padding: 14px 16px; } .combo-price .price-value { font-size: 18px; } .page-header .logo-text { font-size: 20px; } .page-nav-inner a { font-size: 12px; padding: 0 8px; } } /* duanzuhe page */ .duan-scheme { margin-bottom: 20px; } .duan-buy-panel, .duan-plan-panel { display: flex; align-items: center; justify-content: flex-start; gap: 18px; padding: 20px 24px; background: #fff8ed; color: #9a5b00; } .duan-plan-panel { display: none; } .duan-scheme-text { min-width: 0; font-size: 15px; line-height: 1.7; } .duan-scheme-actions { display: flex; align-items: center; gap: 12px; flex-shrink: 0; } .duan-buy-panel { justify-content: space-between; } .duan-price { color: #f15a22; font-size: 18px; font-weight: 800; white-space: nowrap; } .duan-buy-btn, .duan-plan-btn, .duan-copy-btn { border: 0; border-radius: 18px; background: #f15a22; color: #fff; cursor: pointer; font-size: 14px; font-weight: 700; height: 36px; padding: 0 22px; } .duan-plan-btn { border: 1px solid #f3d19e; background: #fdf6ec; color: #c88500; } .duan-copy-btn { height: 28px; padding: 0 14px; border-radius: 14px; background: #102b6a; font-size: 12px; } .duan-table-wrap { width: 100%; overflow: hidden; } .duan-table { width: 100%; table-layout: fixed; border-collapse: collapse; } .duan-table th, .duan-table td { height: 52px; border-bottom: 1px solid #edf1f7; text-align: center; font-size: 13px; } .duan-table th { background: #f5f7fb; color: #102b6a; font-weight: 700; } .duan-table tbody tr:nth-child(even) { background: #fafafa; } .duan-cell { display: flex; align-items: center; justify-content: center; gap: 4px; min-width: 0; white-space: nowrap; } .duan-code-ball { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; padding: 0 5px; border-radius: 999px; background: linear-gradient(135deg, #ff6b4a, #de2103); color: #fff; font-weight: 700; } .duan-muted { color: #999; } .duan-ok { color: #16a34a; font-weight: 700; } .duan-wrong { color: #999; font-weight: 700; } .duan-empty { padding: 58px 20px; color: #98a2b3; text-align: center; } .topbar__logged.is-hidden { display: none; } .site-footer__beian-link { font-size: 12px; color: rgba(255, 255, 255, 0.5); } .duan-plan-content { padding: 22px; line-height: 1.9; color: #25344d; } .cxz-plan-layer { overflow: hidden; border-radius: 10px; box-shadow: 0 26px 70px rgba(7, 26, 63, 0.32); } .cxz-plan-layer .layui-layer-title { height: 62px; padding: 0 64px 0 28px; border: 0; background: linear-gradient(135deg, #08265f 0%, #123b82 58%, #6f4ab3 100%); color: #fff; font-size: 18px; font-weight: 800; line-height: 62px; } .cxz-plan-layer .layui-layer-title::before { content: ""; display: inline-block; width: 10px; height: 10px; margin-right: 10px; border-radius: 50%; background: #f7bc36; box-shadow: 0 0 0 5px rgba(247, 188, 54, 0.16); vertical-align: 1px; } .cxz-plan-layer .layui-layer-setwin { top: 16px; right: 16px; width: 30px; height: 30px; } .cxz-plan-layer .layui-layer-setwin .layui-layer-close1 { position: relative; display: block; width: 30px; height: 30px; margin: 0; border-radius: 50%; background-image: none; background-color: rgba(255, 255, 255, 0.16); color: transparent; font-size: 0; line-height: 30px; text-indent: 0; transition: background-color 0.2s; } .cxz-plan-layer .layui-layer-setwin .layui-layer-close1::before { content: "\00d7"; position: absolute; inset: 0; display: block; color: rgba(255, 255, 255, 0.88); font-family: Arial, Helvetica, sans-serif; font-size: 22px; font-weight: 400; line-height: 29px; text-align: center; text-indent: 0; } .cxz-plan-layer .layui-layer-setwin .layui-layer-close1:hover { background-color: rgba(255, 255, 255, 0.28); } .cxz-plan-layer .layui-layer-content { background: #f5f7fb; } .duan-plan-content--brand { box-sizing: border-box; max-height: calc(82vh - 126px); padding: 16px 20px; overflow: auto; background: linear-gradient(180deg, rgba(247, 188, 54, 0.08), rgba(247, 188, 54, 0) 150px), #f5f7fb; } .duan-plan-content--brand::-webkit-scrollbar { width: 8px; } .duan-plan-content--brand::-webkit-scrollbar-thumb { border-radius: 999px; background: rgba(16, 43, 106, 0.22); } .duan-plan-doc { box-sizing: border-box; width: 100%; max-width: 660px; margin: 0 auto; padding: 34px 34px 28px; border-radius: 6px; background: #fff; color: #263955; font-size: 15px; line-height: 2; } .duan-plan-doc * { max-width: 100%; } .duan-plan-doc > :first-child { margin-top: 0 !important; } .duan-plan-doc p, .duan-plan-doc div { margin-top: 0; margin-bottom: 10px; } .duan-plan-doc b, .duan-plan-doc strong { color: #d73a21; font-weight: 800; } .duan-plan-doc span[style*="background"], .duan-plan-doc font[style*="background"] { border-radius: 4px; padding: 2px 6px; } .cxz-plan-layer .layui-layer-btn { padding: 12px 18px 18px; border-top: 1px solid #e7edf6; background: #f5f7fb; } .cxz-plan-layer .layui-layer-btn .layui-layer-btn0 { height: 38px; min-width: 112px; border: 0; border-radius: 20px; background: linear-gradient(135deg, #102b6a, #1c4b96); box-shadow: 0 8px 18px rgba(16, 43, 106, 0.2); color: #fff; font-weight: 700; line-height: 38px; } @media (max-width: 768px) { .cxz-plan-layer { width: calc(100vw - 24px) !important; left: 12px !important; } .cxz-plan-layer .layui-layer-title { height: 56px; padding-left: 20px; font-size: 16px; line-height: 56px; } .duan-plan-content--brand { max-height: calc(82vh - 116px); padding: 12px 14px; } .duan-plan-doc { max-width: none; padding: 24px 18px; font-size: 14px; } } .duan-col-name { width: 8%; } .duan-col-type { width: 10%; } .duan-col-issue { width: 9%; } .duan-col-open { width: 11%; } .duan-col-group { width: 14%; } .duan-col-status { width: 8%; } .duan-col-copy { width: 7%; } .duan-col-price { width: 6%; } .duan-col-action { width: 5%; } /* shared purchase dialog */ .cxz-dialog-overlay { display: none; position: fixed; inset: 0; z-index: 10000; align-items: center; justify-content: center; padding: 20px; background: rgba(0, 0, 0, 0.5); } .cxz-dialog-overlay.active { display: flex; } .cxz-dialog-box { width: 440px; max-width: 100%; overflow: hidden; border-radius: 12px; background: #fff; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25); } .cxz-dialog-header { display: flex; align-items: center; justify-content: space-between; padding: 18px 24px; background: linear-gradient(135deg, #102b6a, #1a3f8f); } .cxz-dialog-title { color: #fff; font-size: 17px; font-weight: 700; } .cxz-dialog-close { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: 0; border-radius: 50%; background: transparent; color: rgba(255, 255, 255, 0.75); cursor: pointer; font-size: 24px; line-height: 1; } .cxz-dialog-close:hover { background: rgba(255, 255, 255, 0.15); color: #fff; } .cxz-dialog-body { padding: 24px; } .cxz-pay-summary { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; padding: 14px 16px; border-radius: 8px; background: #fff8ed; color: #667085; } .cxz-pay-summary strong { color: #f15a22; font-size: 24px; font-weight: 800; } .cxz-pay-option { display: flex; align-items: center; gap: 14px; margin-bottom: 12px; padding: 16px 18px; border: 2px solid #e5e7eb; border-radius: 8px; background: #fff; cursor: pointer; transition: all 0.25s; } .cxz-pay-option:hover, .cxz-pay-option.selected { border-color: #102b6a; background: #f0f3fa; } .cxz-pay-radio { display: flex; align-items: center; justify-content: center; width: 20px; height: 20px; flex-shrink: 0; border: 2px solid #e5e7eb; border-radius: 50%; } .cxz-pay-option.selected .cxz-pay-radio { border-color: #102b6a; background: #102b6a; } .cxz-pay-option.selected .cxz-pay-radio::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #fff; } .cxz-pay-info { flex: 1; min-width: 0; } .cxz-pay-name { color: #1a1a2e; font-size: 15px; font-weight: 600; } .cxz-pay-desc { margin-top: 2px; color: #6b7280; font-size: 12px; } .cxz-pay-balance { flex-shrink: 0; color: #f15a22; font-size: 15px; font-weight: 700; white-space: nowrap; } .cxz-pay-balance::before { content: "\00A5"; margin-right: 2px; font-size: 12px; font-weight: 400; } .cxz-point-option { display: flex; align-items: center; gap: 8px; margin: 4px 0 18px; color: #667085; font-size: 13px; } .cxz-point-option em { margin-left: auto; color: #98a2b3; font-style: normal; } .cxz-dialog-footer { padding: 0 24px 24px; } .cxz-dialog-confirm { width: 100%; padding: 14px; border: 0; border-radius: 8px; background: linear-gradient(135deg, #102b6a, #1a3f8f); color: #fff; cursor: pointer; font-size: 16px; font-weight: 700; } .cxz-dialog-confirm:disabled { cursor: not-allowed; opacity: 0.55; } .duan-rec-hit { color: #e83b24; font-weight: 700; } .duan-rec-miss { color: #a8b0bc; font-weight: 700; } /* redesigned payment dialog */ .cxz-dialog-overlay { background: rgba(10, 18, 34, 0.58); backdrop-filter: blur(2px); } .cxz-dialog-box { width: 500px; max-width: calc(100vw - 32px); border-radius: 16px; background: #fff; box-shadow: 0 24px 70px rgba(10, 18, 34, 0.32); } .cxz-dialog-header { padding: 20px 22px 14px; border-bottom: 0; background: #fff; } .cxz-dialog-title { color: #102b6a; font-size: 19px; font-weight: 800; } .cxz-dialog-close { color: #7a8496; font-size: 26px; } .cxz-dialog-close:hover { color: #102b6a; background: #f1f4fa; } .cxz-dialog-body { padding: 0 22px 16px; } .cxz-pay-hero { padding: 20px; border-radius: 14px; background: linear-gradient(135deg, #102b6a 0%, #1e5790 100%); color: #fff; } .cxz-pay-hero-label { color: rgba(255, 255, 255, 0.76); font-size: 13px; } .cxz-pay-hero-price { margin-top: 8px; color: #ffb12b; font-size: 34px; font-weight: 900; line-height: 1; } .cxz-pay-hero-sub { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-top: 12px; color: rgba(255, 255, 255, 0.78); font-size: 12px; } .cxz-pay-deduct { color: #ffd48a; } .cxz-pay-section-title { margin: 18px 0 10px; color: #102b6a; font-size: 14px; font-weight: 800; } .cxz-pay-wallets { display: grid; gap: 10px; } .cxz-pay-option { display: grid; grid-template-columns: 18px 1fr auto; gap: 12px; align-items: center; width: 100%; margin: 0; padding: 14px 16px; border: 1px solid #e1e7f0; border-radius: 12px; background: #f8fafd; box-shadow: none; text-align: left; } .cxz-pay-option:hover, .cxz-pay-option.selected { border-color: #102b6a; background: #fff; box-shadow: 0 8px 22px rgba(16, 43, 106, 0.1); } .cxz-pay-radio { width: 16px; height: 16px; border: 1px solid #b8c2d2; } .cxz-pay-option.selected .cxz-pay-radio { border-color: #f15a22; background: #f15a22; } .cxz-pay-option.selected .cxz-pay-radio::after { width: 6px; height: 6px; } .cxz-pay-info { display: flex; flex-direction: column; gap: 2px; } .cxz-pay-name { color: #102b6a; font-size: 14px; font-weight: 800; } .cxz-pay-desc { display: block; color: #8b95a8; font-size: 12px; } .cxz-pay-balance { color: #f15a22; font-size: 15px; font-weight: 800; } .cxz-pay-balance::before { content: none; } .cxz-point-card { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 12px; padding: 14px 16px; border: 1px dashed #f3b36d; border-radius: 12px; background: #fff8ed; cursor: pointer; } .cxz-point-main { display: flex; align-items: center; gap: 10px; min-width: 0; } .cxz-point-card input { width: 16px; height: 16px; accent-color: #f15a22; } .cxz-point-title { display: block; color: #102b6a; font-size: 14px; font-weight: 800; } .cxz-point-desc { display: block; margin-top: 2px; color: #8b5b24; font-size: 12px; } .cxz-point-value { color: #f15a22; font-size: 14px; font-weight: 800; white-space: nowrap; } .cxz-pay-total-card { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 14px; padding: 14px 16px; border-radius: 12px; background: #f2f5fb; } .cxz-pay-total-card span { display: block; color: #102b6a; font-size: 14px; font-weight: 800; } .cxz-pay-total-card em { display: block; margin-top: 2px; color: #7a8496; font-size: 12px; font-style: normal; } .cxz-pay-total-card em.is-insufficient { color: #e83b24; } .cxz-pay-total-card strong { color: #f15a22; font-size: 18px; font-weight: 900; white-space: nowrap; } .cxz-dialog-footer { padding: 0 22px 22px; } .cxz-dialog-confirm { height: 46px; padding: 0 16px; border-radius: 12px; background: linear-gradient(135deg, #f15a22, #ff8a20); box-shadow: 0 10px 22px rgba(241, 90, 34, 0.24); } .cxz-dialog-confirm:hover { background: linear-gradient(135deg, #e94f18, #ff7b17); box-shadow: 0 10px 22px rgba(241, 90, 34, 0.3); } .cxz-dialog-confirm:disabled { background: #c9d1de; box-shadow: none; }