/* ============================================================ kaijiang.css - Lottery Results Page (kaijiang.html) ============================================================ */ /* ---------------------------------------------------------- 1. Latest Result Card ---------------------------------------------------------- */ .cxz-latest-card { background: linear-gradient(135deg, var(--primary), var(--primary-light)); border-radius: 16px; padding: 28px 32px; margin-bottom: 24px; color: var(--white); position: relative; overflow: hidden; box-shadow: 0 6px 24px rgba(16, 43, 106, 0.3); } /* Decorative background circles */ .cxz-latest-card::before, .cxz-latest-card::after { content: ""; position: absolute; border-radius: 50%; background: rgba(255, 255, 255, 0.04); pointer-events: none; } .cxz-latest-card::before { width: 260px; height: 260px; top: -80px; right: -60px; } .cxz-latest-card::after { width: 180px; height: 180px; bottom: -50px; left: -40px; } .cxz-latest-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; position: relative; z-index: 1; } .cxz-latest-label { font-size: 13px; color: rgba(255, 255, 255, 0.7); letter-spacing: 0.5px; text-transform: uppercase; } .cxz-latest-period { font-size: 22px; font-weight: 700; color: var(--gold); text-shadow: 0 1px 4px rgba(0, 0, 0, 0.15); } .cxz-latest-date { font-size: 13px; color: rgba(255, 255, 255, 0.7); } .cxz-latest-balls { display: flex; align-items: center; justify-content: center; gap: 6px; flex-wrap: wrap; padding: 12px 0 4px; position: relative; z-index: 1; } /* Larger balls inside the latest card */ .cxz-latest-balls .red-q, .cxz-latest-balls .bule-q { width: 40px; height: 40px; font-size: 16px; margin: 2px; box-shadow: 0 3px 10px rgba(0, 0, 0, 0.25); } .cxz-latest-balls .red-q { background: linear-gradient(135deg, #ff6b3d, var(--red)); box-shadow: 0 3px 10px rgba(231, 76, 60, 0.45); } .cxz-latest-balls .bule-q { background: linear-gradient(135deg, #4a90e2, #2c5fc2); box-shadow: 0 3px 10px rgba(16, 43, 106, 0.45); } /* Plus separator between red and blue balls */ .cxz-latest-balls .ball-sep { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; color: rgba(255, 255, 255, 0.5); font-size: 16px; font-weight: 700; margin: 0 4px; } /* ---------------------------------------------------------- 2. Lottery Tabs (Page-level overrides) ---------------------------------------------------------- */ .cxz-lottery-tabs { gap: 10px; padding: 20px 0 8px; } .cxz-lottery-tab { padding: 9px 24px; font-size: 14px; border-radius: var(--radius-md); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .cxz-lottery-tab:hover { transform: translateY(-1px); box-shadow: var(--shadow-sm); } .cxz-lottery-tab.active { box-shadow: 0 4px 14px rgba(16, 43, 106, 0.3); transform: translateY(-1px); } /* ---------------------------------------------------------- 3. Section Header Overrides ---------------------------------------------------------- */ .cxz-section-header { margin-bottom: 20px; border-bottom: 2px solid var(--border-light); } .cxz-section-title { font-size: 20px; } /* ---------------------------------------------------------- 4. Data Table Overrides ---------------------------------------------------------- */ .cxz-table-box { border-radius: var(--radius-lg); box-shadow: var(--shadow-md); } .cxz-data-table th { font-size: 13px; color: var(--text-muted); background: var(--bg-light); } .cxz-data-table td { vertical-align: middle; } /* Ball alignment inside table cells */ .cxz-data-table .ball-cell { white-space: nowrap; } .cxz-data-table .ball-cell .red-q, .cxz-data-table .ball-cell .bule-q { margin: 2px 1px; } /* Period number highlight in table */ .cxz-data-table .period-cell { font-weight: 600; color: var(--primary); } /* Date cell muted */ .cxz-data-table .date-cell { color: var(--text-muted); font-size: 13px; } /* Row number column */ .cxz-data-table .row-index { color: var(--text-muted); font-size: 13px; width: 50px; text-align: center; } /* ---------------------------------------------------------- 5. Breadcrumb Overrides ---------------------------------------------------------- */ /* ---------------------------------------------------------- 6. Empty State ---------------------------------------------------------- */ .cxz-empty-state { text-align: center; padding: 60px 20px; color: var(--text-muted); } .cxz-empty-state-icon { font-size: 48px; margin-bottom: 12px; opacity: 0.3; } .cxz-empty-state-text { font-size: 15px; line-height: 1.6; } /* ---------------------------------------------------------- 7. Table Header Toolbar ---------------------------------------------------------- */ .cxz-table-toolbar { display: flex; align-items: center; justify-content: space-between; padding: 14px 20px; border-bottom: 1px solid var(--border-light); background: var(--bg-light); } .cxz-table-toolbar-title { font-size: 15px; font-weight: 600; color: var(--text-dark); } .cxz-table-toolbar-count { font-size: 13px; color: var(--text-muted); margin-left: 8px; } .cxz-table-toolbar-actions { display: flex; align-items: center; gap: 8px; } .cxz-toolbar-btn { display: inline-flex; align-items: center; gap: 4px; padding: 6px 14px; border: 1px solid var(--border-light); border-radius: var(--radius-md); background: var(--white); color: var(--text-muted); font-size: 13px; cursor: pointer; transition: all 0.25s; } .cxz-toolbar-btn:hover { color: var(--primary); border-color: var(--primary); background: rgba(16, 43, 106, 0.04); } .cxz-toolbar-btn.active { color: var(--white); background: var(--primary); border-color: var(--primary); } /* ---------------------------------------------------------- 8. Pagination (page-level) ---------------------------------------------------------- */ .cxz-pagination { padding: 24px 20px; display: flex; align-items: center; justify-content: center; gap: 4px; } .cxz-pagination .layui-laypage a, .cxz-pagination .layui-laypage span { border-radius: var(--radius-md); min-width: 36px; height: 36px; line-height: 36px; font-size: 14px; } .cxz-pagination .layui-laypage .layui-laypage-curr .layui-laypage-em { background: var(--primary); border-radius: var(--radius-md); } .cxz-pagination .layui-laypage a:hover { color: var(--primary); } /* ---------------------------------------------------------- 9. Loading Skeleton ---------------------------------------------------------- */ .cxz-skeleton-card { background: var(--white); border-radius: var(--radius-lg); padding: 28px 32px; margin-bottom: 24px; } .cxz-skeleton-line { height: 16px; background: linear-gradient(90deg, var(--border-light) 25%, #ececf1 50%, var(--border-light) 75%); background-size: 200% 100%; border-radius: 4px; animation: cxz-shimmer 1.5s infinite; margin-bottom: 12px; } .cxz-skeleton-line:last-child { margin-bottom: 0; } .cxz-skeleton-line.w60 { width: 60%; } .cxz-skeleton-line.w40 { width: 40%; } .cxz-skeleton-line.w80 { width: 80%; } .cxz-skeleton-balls { display: flex; gap: 8px; justify-content: center; padding: 12px 0; } .cxz-skeleton-ball { width: 40px; height: 40px; border-radius: 50%; background: linear-gradient(90deg, var(--border-light) 25%, #ececf1 50%, var(--border-light) 75%); background-size: 200% 100%; animation: cxz-shimmer 1.5s infinite; } @keyframes cxz-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* ---------------------------------------------------------- 10. Lottery Category Badge ---------------------------------------------------------- */ .cxz-lottery-badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 20px; font-size: 12px; font-weight: 600; letter-spacing: 0.3px; } .cxz-lottery-badge.fc { background: rgba(231, 76, 60, 0.1); color: var(--red); } .cxz-lottery-badge.ssq { background: rgba(16, 43, 106, 0.1); color: var(--primary); } .cxz-lottery-badge.qlc { background: rgba(241, 90, 34, 0.1); color: var(--orange); } .cxz-lottery-badge.qxc { background: rgba(39, 174, 96, 0.1); color: var(--green); } /* ---------------------------------------------------------- 11. Sub-navigation Tabs (secondary lottery picker) ---------------------------------------------------------- */ .cxz-sub-tabs { display: flex; align-items: center; gap: 0; border-bottom: 2px solid var(--border-light); margin-bottom: 20px; overflow-x: auto; -webkit-overflow-scrolling: touch; } .cxz-sub-tab { padding: 10px 20px; font-size: 14px; font-weight: 500; color: var(--text-muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.25s; white-space: nowrap; background: none; border-top: none; border-left: none; border-right: none; } .cxz-sub-tab:hover { color: var(--primary); } .cxz-sub-tab.active { color: var(--primary); border-bottom-color: var(--primary); font-weight: 600; } /* ---------------------------------------------------------- 12. Responsive Styles ---------------------------------------------------------- */ /* Tablet */ @media (max-width: 1024px) { .cxz-latest-card { padding: 24px 20px; border-radius: 14px; } .cxz-latest-period { font-size: 20px; } .cxz-latest-balls .red-q, .cxz-latest-balls .bule-q { width: 36px; height: 36px; font-size: 15px; } .cxz-latest-balls .ball-sep { width: 18px; font-size: 14px; } .cxz-table-toolbar { padding: 12px 16px; } .cxz-sub-tab { padding: 9px 16px; font-size: 13px; } } /* Mobile */ @media (max-width: 768px) { .cxz-latest-card { padding: 20px 16px; border-radius: 12px; margin-bottom: 16px; } .cxz-latest-card::before { width: 160px; height: 160px; top: -50px; right: -40px; } .cxz-latest-card::after { width: 120px; height: 120px; bottom: -40px; left: -30px; } .cxz-latest-header { flex-wrap: wrap; gap: 6px; margin-bottom: 14px; } .cxz-latest-label { font-size: 12px; } .cxz-latest-period { font-size: 18px; } .cxz-latest-date { font-size: 12px; } .cxz-latest-balls { gap: 4px; padding: 8px 0 0; } .cxz-latest-balls .red-q, .cxz-latest-balls .bule-q { width: 34px; height: 34px; font-size: 14px; } .cxz-latest-balls .ball-sep { width: 14px; font-size: 12px; } .cxz-lottery-tabs { gap: 6px; padding: 12px 0 4px; overflow-x: auto; -webkit-overflow-scrolling: touch; flex-wrap: nowrap; } .cxz-lottery-tab { padding: 7px 16px; font-size: 13px; border-radius: 6px; flex-shrink: 0; } .cxz-lottery-tab:hover { transform: none; } .cxz-lottery-tab.active { transform: none; } .cxz-section-title { font-size: 17px; } .cxz-data-table th, .cxz-data-table td { padding: 10px 6px; font-size: 12px; } .cxz-data-table .red-q, .cxz-data-table .bule-q { width: 22px; height: 22px; font-size: 11px; margin: 1px; } .cxz-data-table .row-index { width: 36px; } .cxz-table-toolbar { flex-wrap: wrap; gap: 8px; padding: 10px 12px; } .cxz-table-toolbar-title { font-size: 14px; } .cxz-table-toolbar-actions { width: 100%; justify-content: flex-end; } .cxz-toolbar-btn { padding: 5px 10px; font-size: 12px; } .cxz-sub-tabs { gap: 0; margin-bottom: 16px; } .cxz-sub-tab { padding: 8px 12px; font-size: 13px; } .cxz-pagination { padding: 16px 8px; gap: 2px; } .cxz-empty-state { padding: 40px 16px; } .cxz-empty-state-icon { font-size: 36px; } .cxz-empty-state-text { font-size: 14px; } .cxz-skeleton-card { padding: 20px 16px; } .cxz-skeleton-ball { width: 34px; height: 34px; } } /* Small mobile */ @media (max-width: 480px) { .cxz-latest-card { padding: 16px 12px; border-radius: 10px; } .cxz-latest-period { font-size: 16px; } .cxz-latest-balls .red-q, .cxz-latest-balls .bule-q { width: 30px; height: 30px; font-size: 13px; } .cxz-latest-balls .ball-sep { width: 12px; font-size: 11px; margin: 0 2px; } .cxz-lottery-tab { padding: 6px 12px; font-size: 12px; } .cxz-data-table th, .cxz-data-table td { padding: 8px 4px; font-size: 12px; } .cxz-data-table .red-q, .cxz-data-table .bule-q { width: 20px; height: 20px; font-size: 10px; } .cxz-section-title { font-size: 15px; } .cxz-sub-tab { padding: 7px 10px; font-size: 12px; } .cxz-toolbar-btn { padding: 4px 8px; font-size: 11px; } .cxz-lottery-badge { font-size: 11px; padding: 3px 8px; } .cxz-skeleton-ball { width: 30px; height: 30px; } }