{"id":8185,"date":"2024-11-25T18:02:00","date_gmt":"2024-11-25T10:02:00","guid":{"rendered":"https:\/\/www.xiangqi.sg\/wordpress\/?p=8185"},"modified":"2026-03-25T18:15:47","modified_gmt":"2026-03-25T10:15:47","slug":"19cycps","status":"publish","type":"post","link":"https:\/\/www.xiangqi.sg\/wordpress\/2024\/11\/25\/19cycps\/","title":{"rendered":"\u7b2c19\u5c4a\u8336\u9633\u676f\u5168\u56fd\u5c0f\u5b66\u8c61\u68cb\u6821\u9645\u8d5b"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u7b2c\u5341\u4e5d\u5c4a\u8336\u9633\u676f\u8c61\u68cb\u5c0f\u5b66\u6821\u9645\u8d5b \u540d\u6b21\u8868<\/title>\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Noto+Serif+SC:wght@400;700;900&#038;family=Cinzel:wght@500;700;900&#038;family=JetBrains+Mono:wght@400;500&#038;display=swap\" rel=\"stylesheet\">\n    <style>\n    :root {\n        --bg: #faf8f5;\n        --surface: #ffffff;\n        --surface-2: #f5f0ea;\n        --surface-3: #e0d6c8;\n        --text: #2c2420;\n        --text-muted: #78716c;\n        --gold: #b8860b;\n        --gold-light: #d4a017;\n        --gold-dim: #8b6914;\n        --ring: rgba(184, 134, 11, 0.2);\n        --radius: 12px;\n    }\n\n    * { margin: 0; padding: 0; box-sizing: border-box; }\n    html { scroll-behavior: smooth; }\n\n    body {\n        font-family: 'Noto Serif SC', serif;\n        background: var(--bg);\n        color: var(--text);\n        min-height: 100vh;\n        overflow-x: hidden;\n    }\n\n    body::before {\n        content: '';\n        position: fixed;\n        inset: 0;\n        opacity: 0.02;\n        background-image: url(\"data:image\/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'\/%3E%3C\/svg%3E\");\n        background-size: 256px 256px;\n        pointer-events: none;\n        z-index: 9999;\n    }\n\n    \/* === HEADER === *\/\n    .page-header {\n        position: relative;\n        text-align: center;\n        padding: 48px 20px 32px;\n        background: linear-gradient(180deg, rgba(184,134,11,0.06) 0%, transparent 100%);\n    }\n    .page-header::after {\n        content: '';\n        position: absolute;\n        bottom: 0;\n        left: 50%;\n        transform: translateX(-50%);\n        width: min(80%, 600px);\n        height: 1px;\n        background: linear-gradient(90deg, transparent, var(--gold-dim), transparent);\n    }\n    .page-header h1 {\n        font-family: 'Cinzel', serif;\n        font-weight: 900;\n        font-size: clamp(1.3rem, 3.5vw, 2.2rem);\n        letter-spacing: 0.1em;\n        background: linear-gradient(135deg, var(--gold-light), var(--gold), #6b4c00);\n        -webkit-background-clip: text;\n        -webkit-text-fill-color: transparent;\n        background-clip: text;\n    }\n    .page-header .sub {\n        font-size: 0.85rem;\n        color: var(--text-muted);\n        margin-top: 8px;\n        letter-spacing: 0.2em;\n    }\n\n    \/* === TOGGLE SWITCH === *\/\n    .toggle-section {\n        display: flex;\n        justify-content: center;\n        padding: 32px 20px 8px;\n    }\n\n    .toggle-wrap {\n        display: flex;\n        align-items: center;\n        gap: 0;\n        background: var(--surface);\n        border: 1.5px solid var(--surface-3);\n        border-radius: 40px;\n        padding: 4px;\n        box-shadow: 0 2px 12px rgba(0,0,0,0.06);\n        position: relative;\n    }\n\n    .toggle-btn {\n        position: relative;\n        z-index: 2;\n        padding: 10px 28px;\n        border: none;\n        background: transparent;\n        color: var(--text-muted);\n        font-family: 'Noto Serif SC', serif;\n        font-size: 0.9rem;\n        font-weight: 700;\n        letter-spacing: 0.05em;\n        cursor: pointer;\n        border-radius: 36px;\n        transition: color 0.3s;\n        -webkit-tap-highlight-color: transparent;\n        user-select: none;\n    }\n    .toggle-btn.active {\n        color: #fff;\n    }\n\n    .toggle-pill {\n        position: absolute;\n        top: 4px;\n        left: 4px;\n        height: calc(100% - 8px);\n        border-radius: 36px;\n        background: linear-gradient(135deg, var(--gold-dim), var(--gold));\n        box-shadow: 0 2px 10px rgba(184,134,11,0.3);\n        transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1), width 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);\n        z-index: 1;\n    }\n\n    \/* \u5c06 icon between buttons *\/\n    .toggle-icon {\n        font-family: 'Noto Serif SC', serif;\n        font-size: 20px;\n        font-weight: 900;\n        color: var(--gold);\n        opacity: 0.5;\n        padding: 0 4px;\n        user-select: none;\n        z-index: 2;\n        position: relative;\n    }\n\n    \/* === CATEGORY LABEL === *\/\n    .category-label {\n        text-align: center;\n        padding: 16px 20px 4px;\n        font-size: 1.2rem;\n        font-weight: 700;\n        color: var(--gold);\n        letter-spacing: 0.1em;\n        opacity: 0;\n        transform: translateY(8px);\n        transition: all 0.4s ease;\n    }\n    .category-label.visible { opacity: 1; transform: translateY(0); }\n\n    \/* === TABLE === *\/\n    .table-wrap {\n        max-width: 1100px;\n        margin: 0 auto;\n        padding: 12px 16px 60px;\n    }\n    .table-container {\n        display: none;\n        background: var(--surface);\n        border: 1px solid var(--surface-3);\n        border-radius: var(--radius);\n        overflow: hidden;\n        animation: fadeSlideIn 0.45s ease both;\n        box-shadow: 0 4px 24px rgba(0,0,0,0.06);\n    }\n    .table-container.show { display: block; }\n\n    @keyframes fadeSlideIn {\n        from { opacity: 0; transform: translateY(12px); }\n        to   { opacity: 1; transform: translateY(0); }\n    }\n\n    .table-scroll {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n    }\n\n    table {\n        width: 100%;\n        border-collapse: collapse;\n        min-width: 850px;\n    }\n    thead th {\n        position: sticky;\n        top: 0;\n        background: var(--surface-2);\n        color: var(--gold);\n        font-family: 'Cinzel', serif;\n        font-size: 0.68rem;\n        font-weight: 700;\n        letter-spacing: 0.08em;\n        text-transform: uppercase;\n        padding: 14px 10px;\n        text-align: left;\n        border-bottom: 1px solid var(--gold-dim);\n        white-space: nowrap;\n    }\n    tbody td {\n        padding: 10px;\n        font-size: 0.82rem;\n        color: var(--text);\n        border-bottom: 1px solid rgba(224,214,200,0.5);\n        white-space: nowrap;\n        font-feature-settings: 'tnum';\n    }\n    td:nth-child(1) { \/* \u540d\u6b21 *\/\n        font-family: 'JetBrains Mono', monospace;\n        font-weight: 500;\n        color: var(--text-muted);\n        text-align: center;\n        width: 48px;\n    }\n    \/* Team name column (2nd) *\/\n    td:nth-child(2) { font-weight: 700; }\n    \/* \u573a\u5206 column (3rd) *\/\n    td:nth-child(3) {\n        font-family: 'JetBrains Mono', monospace;\n        font-weight: 500;\n        color: var(--gold);\n    }\n    \/* All remaining columns *\/\n    td:nth-child(n+4) {\n        font-family: 'JetBrains Mono', monospace;\n        font-size: 0.78rem;\n        color: var(--text-muted);\n    }\n\n    tbody tr { transition: background 0.15s; }\n    tbody tr:hover { background: rgba(184,134,11,0.05); }\n\n    \/* Podium *\/\n    tr.rank-1 td:nth-child(1) { color: var(--gold); }\n    tr.rank-1 td:nth-child(2) { color: var(--gold); }\n    tr.rank-2 td:nth-child(1) { color: #8a8a8a; }\n    tr.rank-2 td:nth-child(2) { color: #6b6b6b; }\n    tr.rank-3 td:nth-child(1) { color: #cd7f32; }\n    tr.rank-3 td:nth-child(2) { color: #b87333; }\n\n    \/* === OFFICIALS === *\/\n    .officials {\n        max-width: 1100px;\n        margin: 0 auto;\n        padding: 0 16px 48px;\n        display: flex;\n        gap: 32px;\n        justify-content: center;\n        color: var(--text-muted);\n        font-size: 0.82rem;\n    }\n    .officials span { font-weight: 700; }\n\n    \/* === MOBILE === *\/\n    @media (max-width: 640px) {\n        .page-header { padding: 32px 16px 24px; }\n        .toggle-btn { padding: 8px 20px; font-size: 0.82rem; }\n        .toggle-icon { font-size: 16px; }\n        .table-wrap { padding: 12px 10px 48px; }\n        table { min-width: 750px; }\n        thead th { font-size: 0.6rem; padding: 10px 6px; }\n        tbody td { font-size: 0.75rem; padding: 8px 6px; }\n        .officials { flex-direction: column; align-items: center; gap: 8px; }\n    }\n    <\/style>\n<\/head>\n<body>\n\n<header class=\"page-header\">\n    <h1>\u7b2c\u5341\u4e5d\u5c4a\u8336\u9633\u676f\u8c61\u68cb\u5c0f\u5b66\u6821\u9645\u8d5b<\/h1>\n    <div class=\"sub\">\u540d\u6b21\u8868 &middot; Final Standings<\/div>\n<\/header>\n\n<section class=\"toggle-section\">\n    <div class=\"toggle-wrap\" id=\"toggleWrap\">\n        <button class=\"toggle-btn active\" data-cat=\"open\">\u516c\u5f00\u7ec4<\/button>\n        <span class=\"toggle-icon\">\u5c06<\/span>\n        <button class=\"toggle-btn\" data-cat=\"junior\">\u521d\u5c0f\u7ec4<\/button>\n        <div class=\"toggle-pill\" id=\"togglePill\"><\/div>\n    <\/div>\n<\/section>\n\n<div class=\"category-label visible\" id=\"catLabel\">\u516c\u5f00\u7ec4<\/div>\n\n<div class=\"table-wrap\">\n\n    <!-- \u516c\u5f00\u7ec4 -->\n    <div class=\"table-container show\" id=\"t-open\">\n        <div class=\"table-scroll\"><table>\n            <thead><tr>\n                <th>\u540d\u6b21<\/th><th>\u540d\u79f0<\/th><th>\u573a\u5206<\/th><th>\u7f16\u53f7<\/th><th>\u4ff1\u4e50\u90e8<\/th><th>\u5bf9\u624b\u5206<\/th><th>\u603b\u5c40\u5206<\/th><th>\u76f4\u80dc<\/th><th>\u5bf9\u624b\u603b\u5c40\u5206<\/th><th>\u9996\u53f0\u5c40\u5206<\/th><th>\u540e\u624b\u5c40<\/th><th>\u72af\u89c4<\/th><th>\u540d\u6b21\u9006\u6bd4<\/th>\n            <\/tr><\/thead>\n            <tbody>\n                <tr><td>1<\/td><td>\u516c\u6559D\u7ec4<\/td><td>14<\/td><td>1<\/td><td>CatholicHighSchoolPrimary<\/td><td>56<\/td><td>36<\/td><td><\/td><td>161.0<\/td><td>14<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>2<\/td><td>\u516c\u6559C\u7ec4<\/td><td>10<\/td><td>6<\/td><td>CatholicHighSchoolPrimary<\/td><td>64<\/td><td>30<\/td><td><\/td><td>179.0<\/td><td>8<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>3<\/td><td>\u516c\u6559A\u7ec4<\/td><td>10<\/td><td>12<\/td><td>CatholicHighSchoolPrimary<\/td><td>60<\/td><td>27<\/td><td><\/td><td>172.0<\/td><td>10<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>4<\/td><td>\u6d77\u661f\u9644\u5c0f\u8c61\u68cb\u793eA\u961f<\/td><td>10<\/td><td>4<\/td><td>MarisStella\u200bHighSchool(Pri)<\/td><td>58<\/td><td>26<\/td><td><\/td><td>165.0<\/td><td>12<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>5<\/td><td>MBS1<\/td><td>8<\/td><td>9<\/td><td>MahaBodhiSchool<\/td><td>56<\/td><td>25<\/td><td><\/td><td>163.0<\/td><td>8<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>6<\/td><td>CPS Team 1<\/td><td>8<\/td><td>11<\/td><td>CorporationPrimarySchool<\/td><td>54<\/td><td>23<\/td><td><\/td><td>163.0<\/td><td>6<\/td><td>11<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>7<\/td><td>Kong Hwa Team 1<\/td><td>8<\/td><td>3<\/td><td>KongHwaSchool<\/td><td>43<\/td><td>24<\/td><td><\/td><td>135.0<\/td><td>10<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>8<\/td><td>MBS2<\/td><td>6<\/td><td>5<\/td><td>MahaBodhiSchool<\/td><td>55<\/td><td>18<\/td><td><\/td><td>156.0<\/td><td>6<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>9<\/td><td>CPS Team 2<\/td><td>6<\/td><td>2<\/td><td>CorporationPrimarySchool<\/td><td>49<\/td><td>18<\/td><td><\/td><td>139.0<\/td><td>6<\/td><td>10<\/td><td>1<\/td><td><\/td><\/tr>\n                <tr><td>10<\/td><td>\u516c\u6559B\u7ec4<\/td><td>6<\/td><td>10<\/td><td>CatholicHighSchoolPrimary<\/td><td>43<\/td><td>17<\/td><td><\/td><td>136.0<\/td><td>6<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>11<\/td><td>\u6d77\u661f\u9644\u5c0f\u8c61\u68cb\u793eB\u961f<\/td><td>6<\/td><td>7<\/td><td>MarisStella\u200bHighSchool(Pri)<\/td><td>41<\/td><td>16<\/td><td><\/td><td>130.0<\/td><td>6<\/td><td>11<\/td><td>2<\/td><td><\/td><\/tr>\n                <tr><td>12<\/td><td>\u5b8f\u6587\u516c\u5f00\u7ec4<\/td><td>4<\/td><td>13<\/td><td>HONGWENSCHOOL<\/td><td>37<\/td><td>20<\/td><td><\/td><td>112.0<\/td><td>4<\/td><td>11<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>13<\/td><td>\u57f9\u7fa4\u4e19\u961f<\/td><td>2<\/td><td>8<\/td><td>PeiChunPublicSchool<\/td><td>39<\/td><td>14<\/td><td><\/td><td>120.0<\/td><td>2<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n            <\/tbody>\n        <\/table><\/div>\n    <\/div>\n\n    <!-- \u521d\u5c0f\u7ec4 -->\n    <div class=\"table-container\" id=\"t-junior\">\n        <div class=\"table-scroll\"><table>\n            <thead><tr>\n                <th>\u540d\u6b21<\/th><th>\u540d\u79f0<\/th><th>\u573a\u5206<\/th><th>\u7f16\u53f7<\/th><th>\u4ff1\u4e50\u90e8<\/th><th>\u5bf9\u624b\u5206<\/th><th>\u603b\u5c40\u5206<\/th><th>\u76f4\u80dc<\/th><th>\u5bf9\u624b\u603b\u5c40\u5206<\/th><th>\u9996\u53f0\u5c40\u5206<\/th><th>\u540e\u624b\u5c40<\/th><th>\u72af\u89c4<\/th><th>\u540d\u6b21\u9006\u6bd4<\/th>\n            <\/tr><\/thead>\n            <tbody>\n                <tr><td>1<\/td><td>\u516c\u6559E\u7ec4<\/td><td>12<\/td><td>1<\/td><td>\u516c\u6559\u4e2d\u5b66\u9644\u5c0f<\/td><td>59<\/td><td>36<\/td><td><\/td><td>163.0<\/td><td>14<\/td><td>11<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>2<\/td><td>ATS Chessmasters<\/td><td>12<\/td><td>4<\/td><td>\u7231\u540c\u5b66\u6821<\/td><td>59<\/td><td>30<\/td><td><\/td><td>169.0<\/td><td>12<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>3<\/td><td>MBS4<\/td><td>11<\/td><td>2<\/td><td>\u83e9\u63d0\u5b66\u6821<\/td><td>48<\/td><td>29<\/td><td><\/td><td>141.0<\/td><td>10<\/td><td>9<\/td><td>1<\/td><td><\/td><\/tr>\n                <tr><td>4<\/td><td>\u516c\u6559G\u7ec4<\/td><td>8<\/td><td>11<\/td><td>\u516c\u6559\u4e2d\u5b66\u9644\u5c0f<\/td><td>57<\/td><td>22<\/td><td><\/td><td>165.0<\/td><td>6<\/td><td>11<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>5<\/td><td>MBS3<\/td><td>8<\/td><td>5<\/td><td>\u83e9\u63d0\u5b66\u6821<\/td><td>55<\/td><td>20<\/td><td><\/td><td>169.0<\/td><td>6<\/td><td>11<\/td><td>2<\/td><td><\/td><\/tr>\n                <tr><td>6<\/td><td>Tao Nan Knights<\/td><td>8<\/td><td>8<\/td><td>\u9053\u5357\u5b66\u6821<\/td><td>53<\/td><td>24<\/td><td><\/td><td>161.0<\/td><td>6<\/td><td>11<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>7<\/td><td>\u516c\u6559F\u7ec4<\/td><td>8<\/td><td>10<\/td><td>\u516c\u6559\u4e2d\u5b66\u9644\u5c0f<\/td><td>38<\/td><td>20<\/td><td><\/td><td>129.0<\/td><td>6<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>8<\/td><td>\u6d77\u661f\u9644\u5c0f\u8c61\u68cb\u793eC\u961f<\/td><td>7<\/td><td>12<\/td><td>\u6d77\u661f\u4e2d\u5b66\uff08\u9644\u5c0f\uff09<\/td><td>48<\/td><td>19<\/td><td><\/td><td>135.0<\/td><td>6<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>9<\/td><td>\u57f9\u7fa4\u7532\u961f<\/td><td>6<\/td><td>9<\/td><td>\u516c\u7acb\u57f9\u7fa4\u5b66\u6821<\/td><td>61<\/td><td>18<\/td><td><\/td><td>175.0<\/td><td>4<\/td><td>10<\/td><td>3<\/td><td><\/td><\/tr>\n                <tr><td>10<\/td><td>\u6d77\u661f\u9644\u5c0f\u8c61\u68cb\u793eD\u961f<\/td><td>6<\/td><td>7<\/td><td>\u6d77\u661f\u4e2d\u5b66\uff08\u9644\u5c0f\uff09<\/td><td>46<\/td><td>24<\/td><td><\/td><td>133.0<\/td><td>10<\/td><td>10<\/td><td>1<\/td><td><\/td><\/tr>\n                <tr><td>11<\/td><td>\u5b8f\u6587\u521d\u5c0f<\/td><td>6<\/td><td>3<\/td><td>\u5b8f\u6587\u5b66\u6821<\/td><td>42<\/td><td>20<\/td><td><\/td><td>125.0<\/td><td>6<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n                <tr><td>12<\/td><td>\u57f9\u7fa4\u4e59\u961f<\/td><td>4<\/td><td>6<\/td><td>\u516c\u7acb\u57f9\u7fa4\u5b66\u6821<\/td><td>41<\/td><td>18<\/td><td><\/td><td>120.0<\/td><td>4<\/td><td>10<\/td><td>2<\/td><td><\/td><\/tr>\n                <tr><td>13<\/td><td>\u516c\u6559H\u7ec4<\/td><td>2<\/td><td>13<\/td><td>\u516c\u6559\u4e2d\u5b66\u9644\u5c0f<\/td><td>42<\/td><td>14<\/td><td><\/td><td>129.0<\/td><td>8<\/td><td>10<\/td><td><\/td><td><\/td><\/tr>\n            <\/tbody>\n        <\/table><\/div>\n    <\/div>\n\n<\/div>\n\n<footer class=\"officials\">\n    <p>\u88c1\u5224\u957f: <span>\u6b27\u6728\u987a<\/span><\/p>\n    <p>\u7f16\u6392\u957f: <span>\u6b27\u6728\u987a<\/span><\/p>\n<\/footer>\n\n<script type=\"module\">\nimport { WebHaptics } from 'https:\/\/cdn.jsdelivr.net\/npm\/web-haptics@0.0.6\/+esm';\nconst haptics = new WebHaptics();\n\nconst categories = {\n    open:   { label: '\u516c\u5f00\u7ec4', tableId: 't-open' },\n    junior: { label: '\u521d\u5c0f\u7ec4', tableId: 't-junior' },\n};\n\nconst toggleWrap = document.getElementById('toggleWrap');\nconst pill = document.getElementById('togglePill');\nconst btns = toggleWrap.querySelectorAll('.toggle-btn');\nconst catLabel = document.getElementById('catLabel');\nlet current = 'open';\n\nfunction positionPill() {\n    const activeBtn = toggleWrap.querySelector('.toggle-btn.active');\n    if (!activeBtn) return;\n    const wrapRect = toggleWrap.getBoundingClientRect();\n    const btnRect = activeBtn.getBoundingClientRect();\n    pill.style.width = btnRect.width + 'px';\n    pill.style.transform = `translateX(${btnRect.left - wrapRect.left - 4}px)`;\n}\n\nfunction switchCategory(cat) {\n    if (cat === current) return;\n    current = cat;\n    haptics.trigger('selection');\n\n    btns.forEach(btn => btn.classList.toggle('active', btn.dataset.cat === cat));\n    positionPill();\n\n    catLabel.classList.remove('visible');\n    setTimeout(() => {\n        catLabel.textContent = categories[cat].label;\n        catLabel.classList.add('visible');\n    }, 150);\n\n    document.querySelectorAll('.table-container').forEach(t => t.classList.remove('show'));\n    requestAnimationFrame(() => {\n        document.getElementById(categories[cat].tableId).classList.add('show');\n    });\n}\n\nbtns.forEach(btn => {\n    btn.addEventListener('click', () => switchCategory(btn.dataset.cat));\n    btn.addEventListener('touchstart', () => haptics.trigger('light'), { passive: true });\n});\n\n\/\/ Initial pill position\nrequestAnimationFrame(() => positionPill());\nwindow.addEventListener('resize', positionPill);\n\n\/\/ Podium highlighting \u2014 rank is first column\ndocument.querySelectorAll('tbody tr').forEach(row => {\n    const rank = row.querySelector('td')?.textContent.trim();\n    if (rank === '1') row.classList.add('rank-1');\n    else if (rank === '2') row.classList.add('rank-2');\n    else if (rank === '3') row.classList.add('rank-3');\n    row.addEventListener('touchstart', () => haptics.trigger('light'), { passive: true });\n});\n\n\/\/ Global haptic for all clickable elements\ndocument.addEventListener('click', (e) => {\n    if (e.target.closest('button, [role=\"button\"], a, label, input[type=\"submit\"]')) {\n        haptics.trigger('selection');\n    }\n}, { passive: true });\n<\/script>\n\n<\/body>\n<\/html>\n\n\n\n<style>\n\/* ============================================================\n   \u65b0\u52a0\u5761\u8c61\u68cb\u603b\u4f1a \u2014 Unified WordPress Internal CSS\n   Paste this into WordPress Customizer \u2192 Additional CSS\n   or into a site-wide HTML\/CSS block.\n   ============================================================ *\/\n\n\/* \u2500\u2500 Design Tokens (matching index page) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n:root {\n  --xq-crimson:       #8c2f39;\n  --xq-crimson-dark:  #6e242d;\n  --xq-gold:          #e4a855;\n  --xq-gold-light:    #f0d6a8;\n  --xq-cream:         #fdf8f0;\n  --xq-text:          #1c1c1c;\n  --xq-text-light:    #5a5a5a;\n  --xq-bg:            #fafafa;\n  --xq-white:         #ffffff;\n  --xq-radius:        12px;\n  --xq-radius-sm:     8px;\n  --xq-shadow:        0 4px 20px rgba(0, 0, 0, 0.08);\n  --xq-shadow-hover:  0 8px 30px rgba(0, 0, 0, 0.12);\n  --xq-transition:    0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   1. GLOBAL NAVIGATION BAR\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n\/* \u2500\u2500 Kill gap above nav \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nhtml, body {\n  margin-top: 0 !important;\n  padding-top: 0 !important;\n}\n\n.wp-site-blocks,\n.wp-block-template-part,\nheader.wp-block-template-part,\n.site-header {\n  margin-top: 0 !important;\n  padding-top: 0 !important;\n}\n\n\/* \u2500\u2500 Fix nav container constraint \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nheader.wp-block-template-part > div,\nheader.wp-block-template-part .wp-block-group,\n.wp-block-group.is-layout-constrained:has(.wp-block-navigation) {\n  padding: 0 !important;\n  margin: 0 !important;\n  max-width: 100% !important;\n  width: 100% !important;\n}\n\n\/* \u2500\u2500 Main Nav Container \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation,\nnav.wp-block-navigation {\n  background: linear-gradient(135deg, var(--xq-crimson) 0%, var(--xq-crimson-dark) 100%) !important;\n  padding: 0 24px !important;\n  font-family: \"Noto Sans SC\", \"PingFang SC\", \"Microsoft YaHei\", sans-serif !important;\n  border-bottom: 3px solid var(--xq-gold) !important;\n  box-shadow: 0 2px 12px rgba(110, 36, 45, 0.3) !important;\n  position: sticky !important;\n  top: 0 !important;\n  z-index: 999 !important;\n  margin: 0 !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  box-sizing: border-box !important;\n  display: block !important;\n  left: 0 !important;\n  right: 0 !important;\n}\n\n\/* \u2500\u2500 Force inner container to full width \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation > .wp-block-navigation__inner-container,\n.wp-block-navigation .wp-block-navigation__container,\n.wp-block-navigation > ul {\n  width: 100% !important;\n  max-width: 100% !important;\n  display: flex !important;\n  flex-wrap: wrap !important;\n  align-items: center !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n\/* \u2500\u2500 Nav Link Items \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation .wp-block-navigation-item__content,\n.wp-block-navigation .wp-block-navigation-item__label,\n.wp-block-navigation-item__content.wp-block-navigation-item__content,\n.wp-block-navigation.has-black-color,\n.wp-block-navigation .has-black-color {\n  color: #ffffff !important;\n  font-weight: 500 !important;\n  font-size: 0.95em !important;\n  letter-spacing: 0.3px !important;\n  transition: var(--xq-transition) !important;\n  text-decoration: none !important;\n}\n\n\/* \u2500\u2500 Nav Link Hover \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation .wp-block-navigation-item__content:hover,\n.wp-block-navigation .wp-block-navigation-item__content:focus {\n  color: var(--xq-gold) !important;\n}\n\n\/* Gold underline on hover *\/\n.wp-block-navigation .wp-block-navigation-item__content::after {\n  content: \"\" !important;\n  display: block !important;\n  width: 0 !important;\n  height: 2px !important;\n  background: var(--xq-gold) !important;\n  transition: width var(--xq-transition) !important;\n  margin-top: 2px !important;\n}\n\n.wp-block-navigation .wp-block-navigation-item__content:hover::after {\n  width: 100% !important;\n}\n\n\/* \u2500\u2500 Current \/ Active Page \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content,\n.wp-block-navigation .wp-block-navigation-item--active > .wp-block-navigation-item__content {\n  color: var(--xq-gold) !important;\n  font-weight: 700 !important;\n}\n\n.wp-block-navigation .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content::after {\n  width: 100% !important;\n}\n\n\/* \u2500\u2500 Submenu \/ Dropdown \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation .wp-block-navigation__submenu-container,\n.wp-block-navigation .has-child .wp-block-navigation__submenu-container {\n  background: var(--xq-crimson-dark) !important;\n  border: 1px solid rgba(228, 168, 85, 0.2) !important;\n  border-radius: var(--xq-radius-sm) !important;\n  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.25) !important;\n  padding: 8px 0 !important;\n  min-width: 200px !important;\n}\n\n.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {\n  padding: 10px 20px !important;\n  font-size: 0.9em !important;\n}\n\n.wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {\n  background: rgba(228, 168, 85, 0.15) !important;\n  color: var(--xq-gold) !important;\n}\n\n\/* \u2500\u2500 Nav Item Spacing \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation .wp-block-navigation-item {\n  padding: 14px 6px !important;\n  margin: 0 !important;\n}\n\n\/* \u2500\u2500 Buttons \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-button__link.wp-element-button,\n.wp-block-button__link.wp-element-button:visited,\n.entry-content .wp-block-button__link,\n.entry-content .wp-block-button__link:visited,\n.page-content .wp-block-button__link,\n.page-content .wp-block-button__link:visited {\n  background: var(--xq-gold) !important;\n  color: var(--xq-crimson-dark) !important;\n  font-weight: 700 !important;\n  border-radius: 25px !important;\n  padding: 12px 28px !important;\n  border: 2px solid var(--xq-gold) !important;\n  box-shadow: 0 4px 15px rgba(228, 168, 85, 0.4) !important;\n  transition: background var(--xq-transition), color var(--xq-transition), border-color var(--xq-transition), box-shadow var(--xq-transition) !important;\n  text-decoration: none !important;\n  border-bottom: 2px solid var(--xq-gold) !important;\n  font-size: 0.95em !important;\n  display: inline-block !important;\n  transform: none !important;\n}\n\n.wp-block-button__link.wp-element-button:hover,\n.wp-block-button__link.wp-element-button:focus,\n.entry-content .wp-block-button__link:hover,\n.entry-content .wp-block-button__link:focus,\n.page-content .wp-block-button__link:hover,\n.page-content .wp-block-button__link:focus {\n  background: var(--xq-crimson) !important;\n  color: #ffffff !important;\n  border: 2px solid var(--xq-crimson) !important;\n  border-bottom: 2px solid var(--xq-crimson) !important;\n  box-shadow: 0 6px 20px rgba(140, 47, 57, 0.4) !important;\n  transform: none !important;\n}\n\n\/* \u2500\u2500 Hamburger \/ Toggle Button \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation__responsive-container-open,\n.wp-block-navigation button.wp-block-navigation__responsive-container-open {\n  color: var(--xq-gold) !important;\n}\n\n\/* \u2500\u2500 Mobile Nav \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@media (max-width: 991px) {\n  .wp-block-navigation,\n  nav.wp-block-navigation {\n    padding: 0 16px !important;\n  }\n\n  .wp-block-navigation__responsive-container,\n  .wp-block-navigation__responsive-container-content {\n    background: linear-gradient(180deg, var(--xq-crimson-dark) 0%, var(--xq-crimson) 100%) !important;\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n\n  .wp-block-navigation__responsive-container ul,\n  .wp-block-navigation__responsive-container-content ul {\n    margin: 0 !important;\n    padding: 0 !important;\n    gap: 0 !important;\n    \/* Do NOT set display:block here \u2014 breaks close button *\/\n  }\n\n  .wp-block-navigation__responsive-container .wp-block-navigation-item,\n  .wp-block-navigation__responsive-container li {\n    padding: 0 !important;\n    margin: 0 !important;\n  }\n\n  .wp-block-navigation__responsive-container .wp-block-navigation-item__content {\n    color: #ffffff !important;\n    padding: 14px 24px !important;\n    font-size: 1.05em !important;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;\n    display: block !important;\n    margin: 0 !important;\n  }\n\n  .wp-block-navigation__responsive-container .wp-block-navigation-item__content:hover {\n    color: var(--xq-gold) !important;\n    background: rgba(228, 168, 85, 0.1) !important;\n  }\n\n  .wp-block-navigation__responsive-container-close {\n    position: relative !important;\n    z-index: 9999 !important;\n    pointer-events: auto !important;\n    cursor: pointer !important;\n  }\n\n  .wp-block-navigation__responsive-container-close,\n  .wp-block-navigation__responsive-container-close svg {\n    color: var(--xq-gold) !important;\n    fill: var(--xq-gold) !important;\n  }\n\n  .wp-block-navigation__responsive-container .wp-block-navigation__submenu-container {\n    background: rgba(0, 0, 0, 0.15) !important;\n    border: none !important;\n    box-shadow: none !important;\n    border-radius: 0 !important;\n    padding-left: 16px !important;\n    margin: 0 !important;\n  }\n}\n\n\/* \u2500\u2500 Fix close button being covered by ul \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.wp-block-navigation__responsive-container-close {\n  position: absolute !important;\n  top: 12px !important;\n  right: 16px !important;\n  z-index: 99999 !important;\n  pointer-events: auto !important;\n  cursor: pointer !important;\n}\n\n.wp-block-navigation__responsive-container {\n  position: relative !important;\n}\n\n.wp-block-navigation__responsive-container-content {\n  padding-top: 56px !important;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   2. SITE LOGO & BRANDING (if present)\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n.wp-block-site-logo img,\n.custom-logo {\n  max-height: 48px !important;\n  width: auto !important;\n}\n\n.wp-block-site-title a {\n  color: var(--xq-gold) !important;\n  font-weight: 800 !important;\n  text-decoration: none !important;\n  font-size: 1.2em !important;\n}\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   3. PAGE BODY \u2014 Unified Base Styles\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n\/* Page background *\/\nbody:not(.home) {\n  font-family: \"Noto Sans SC\", \"PingFang SC\", \"Microsoft YaHei\", \"Helvetica Neue\", Arial, sans-serif !important;\n  background: var(--xq-bg) !important;\n  color: var(--xq-text) !important;\n  line-height: 1.7 !important;\n  -webkit-font-smoothing: antialiased !important;\n}\n\n\/* Content area *\/\n.entry-content,\n.wp-block-post-content,\n.page-content,\nmain {\n  max-width: 1200px;\n  margin-left: auto;\n  margin-right: auto;\n  padding: 30px 20px;\n}\n\n\/* Page titles *\/\n.entry-title,\nh1.wp-block-post-title {\n  font-size: 2.2em !important;\n  font-weight: 800 !important;\n  color: var(--xq-crimson) !important;\n  margin-bottom: 20px !important;\n  letter-spacing: -0.5px !important;\n}\n\n\/* Section headings *\/\nh2 {\n  font-size: 1.6em !important;\n  font-weight: 700 !important;\n  color: var(--xq-crimson) !important;\n  margin-top: 32px !important;\n  margin-bottom: 16px !important;\n}\n\nh3 {\n  font-size: 1.3em !important;\n  font-weight: 600 !important;\n  color: var(--xq-crimson-dark) !important;\n}\n\n\/* Links (body text) *\/\n.entry-content a,\n.page-content a {\n  color: var(--xq-crimson) !important;\n  text-decoration: none !important;\n  border-bottom: 1px solid transparent !important;\n  transition: var(--xq-transition) !important;\n}\n\n.entry-content a:hover,\n.page-content a:hover {\n  color: var(--xq-crimson-dark) !important;\n  border-bottom-color: var(--xq-gold) !important;\n}\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   4. TABS (wc_tabgroup) \u2014 Rankings Page\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n.wc-shortcodes-tabgroup,\n.wc-shortcodes-tabs-layout-box {\n  background: var(--xq-white) !important;\n  border-radius: var(--xq-radius) !important;\n  box-shadow: var(--xq-shadow) !important;\n  overflow: hidden !important;\n  border: 1px solid rgba(140, 47, 57, 0.1) !important;\n}\n\n.wc-shortcodes-tabgroup .wc-shortcodes-tabs,\n.wc-shortcodes-tabs-layout-box .wc-shortcodes-tabs {\n  background: linear-gradient(135deg, var(--xq-crimson) 0%, var(--xq-crimson-dark) 100%) !important;\n  border-bottom: 3px solid var(--xq-gold) !important;\n  padding: 0 !important;\n  display: flex !important;\n  flex-wrap: wrap !important;\n  gap: 0 !important;\n}\n\n.wc-shortcodes-tabgroup .wc-shortcodes-tabs li a,\n.wc-shortcodes-tabs-layout-box .wc-shortcodes-tabs li a {\n  color: rgba(255, 255, 255, 0.85) !important;\n  font-weight: 600 !important;\n  font-size: 0.95em !important;\n  padding: 14px 22px !important;\n  background: transparent !important;\n  border: none !important;\n  border-bottom: none !important;\n  border-radius: 0 !important;\n  transition: var(--xq-transition) !important;\n  white-space: nowrap !important;\n}\n\n.wc-shortcodes-tabgroup .wc-shortcodes-tabs li a:hover,\n.wc-shortcodes-tabs-layout-box .wc-shortcodes-tabs li a:hover {\n  color: #ffffff !important;\n  background: rgba(255, 255, 255, 0.1) !important;\n  border-bottom: none !important;\n}\n\n.wc-shortcodes-tabgroup .wc-shortcodes-tabs li.active a,\n.wc-shortcodes-tabs-layout-box .wc-shortcodes-tabs li.active a,\n.wc-shortcodes-tabgroup .wc-shortcodes-tabs li.resp-tab-active a {\n  color: var(--xq-crimson-dark) !important;\n  background: var(--xq-gold) !important;\n  font-weight: 700 !important;\n  border-bottom: none !important;\n}\n\n.wc-shortcodes-tabgroup .wc-shortcodes-tab-content,\n.wc-shortcodes-tabs-layout-box .wc-shortcodes-tab-content {\n  padding: 24px !important;\n  background: var(--xq-white) !important;\n  font-size: 0.95em !important;\n  line-height: 1.7 !important;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   5. TABLES \u2014 Rankings \/ Data Tables\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n\/* TablePress & custom tables *\/\n.tablepress,\n.custom-table,\ntable.tablepress,\n.wc-shortcodes-tab-content table {\n  width: 100% !important;\n  border-collapse: separate !important;\n  border-spacing: 0 !important;\n  border-radius: var(--xq-radius-sm) !important;\n  overflow: hidden !important;\n  font-size: 0.9em !important;\n  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06) !important;\n}\n\n\/* Table header *\/\n.tablepress thead th,\n.custom-table th,\n.wc-shortcodes-tab-content table th {\n  background: linear-gradient(135deg, var(--xq-crimson) 0%, var(--xq-crimson-dark) 100%) !important;\n  color: #ffffff !important;\n  font-weight: 700 !important;\n  padding: 12px 16px !important;\n  text-align: left !important;\n  font-size: 0.85em !important;\n  text-transform: uppercase !important;\n  letter-spacing: 0.5px !important;\n  border-bottom: 3px solid var(--xq-gold) !important;\n}\n\n\/* Table cells *\/\n.tablepress td,\n.custom-table td,\n.wc-shortcodes-tab-content table td {\n  padding: 10px 16px !important;\n  border-bottom: 1px solid #f0ebe3 !important;\n  color: var(--xq-text) !important;\n  vertical-align: middle !important;\n}\n\n\/* Alternating rows *\/\n.tablepress .odd td,\n.custom-table tr:nth-child(odd) td,\n.wc-shortcodes-tab-content table tr:nth-child(odd) td {\n  background: var(--xq-white) !important;\n}\n\n.tablepress .even td,\n.custom-table tr:nth-child(even) td,\n.wc-shortcodes-tab-content table tr:nth-child(even) td {\n  background: var(--xq-cream) !important;\n}\n\n\/* Row hover *\/\n.tablepress tbody tr:hover td,\n.custom-table tr:hover td,\n.wc-shortcodes-tab-content table tbody tr:hover td {\n  background: var(--xq-gold-light) !important;\n  transition: background var(--xq-transition) !important;\n}\n\n\/* Responsive table *\/\n@media (max-width: 768px) {\n  .tablepress,\n  .custom-table,\n  .wc-shortcodes-tab-content table {\n    display: block !important;\n    overflow-x: auto !important;\n    -webkit-overflow-scrolling: touch !important;\n  }\n\n  .tablepress td,\n  .tablepress th,\n  .custom-table td,\n  .custom-table th {\n    padding: 8px 12px !important;\n    font-size: 0.85em !important;\n    white-space: nowrap !important;\n  }\n}\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   6. TIMELINE PAGE \u2014 Tournament Archives\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n\/* Override timeline colors to match index *\/\n.timeline-page .hero-section,\n.hero-section {\n  background: linear-gradient(135deg, var(--xq-crimson) 0%, var(--xq-crimson-dark) 50%, var(--xq-gold) 100%) !important;\n  border-radius: var(--xq-radius) !important;\n}\n\n.hero-title {\n  color: #ffffff !important;\n  text-shadow: 0 4px 20px rgba(0, 0, 0, 0.3) !important;\n}\n\n.hero-subtitle {\n  color: rgba(255, 255, 255, 0.9) !important;\n}\n\n\/* Filter buttons *\/\n.filter-section label {\n  background: var(--xq-crimson) !important;\n  color: #ffffff !important;\n  border-radius: 25px !important;\n  font-weight: 600 !important;\n  transition: var(--xq-transition) !important;\n}\n\n.filter-section label:hover {\n  background: var(--xq-gold) !important;\n  color: var(--xq-crimson-dark) !important;\n  transform: translateY(-2px) !important;\n}\n\n\/* Active filter *\/\n#all:checked ~ .filter-wrapper .filter-section label[for=\"all\"],\n#national:checked ~ .filter-wrapper .filter-section label[for=\"national\"],\n#open:checked ~ .filter-wrapper .filter-section label[for=\"open\"],\n#student:checked ~ .filter-wrapper .filter-section label[for=\"student\"],\n#team:checked ~ .filter-wrapper .filter-section label[for=\"team\"],\n#individual:checked ~ .filter-wrapper .filter-section label[for=\"individual\"] {\n  background: var(--xq-gold) !important;\n  color: var(--xq-crimson-dark) !important;\n  box-shadow: 0 4px 15px rgba(228, 168, 85, 0.4) !important;\n}\n\n\/* Timeline cards *\/\n.timeline-card {\n  border-radius: var(--xq-radius) !important;\n  box-shadow: var(--xq-shadow) !important;\n  border: 1px solid rgba(140, 47, 57, 0.08) !important;\n  transition: var(--xq-transition) !important;\n}\n\n.timeline-card:hover {\n  box-shadow: var(--xq-shadow-hover) !important;\n  transform: translateY(-4px) !important;\n}\n\n\/* Timeline accent line *\/\n.timeline-card::before {\n  background: var(--xq-gold) !important;\n}\n\n.timeline-year {\n  color: var(--xq-crimson) !important;\n}\n\n.quarter-label {\n  color: var(--xq-crimson) !important;\n  border-left-color: var(--xq-gold) !important;\n}\n\n\/* Timeline vertical line *\/\n.timeline-wrapper::before {\n  background: linear-gradient(to bottom, var(--xq-gold), var(--xq-crimson), var(--xq-gold)) !important;\n  width: 3px !important;\n}\n\n\/* Event list links in timeline *\/\n.timeline-card .event-list a {\n  color: var(--xq-text) !important;\n}\n\n.timeline-card .event-list a:hover {\n  color: var(--xq-crimson) !important;\n}\n\n.timeline-card .event-list a::after {\n  background-color: var(--xq-gold) !important;\n}\n\n\/* Competition name badge *\/\n.comp-name {\n  background: var(--xq-cream) !important;\n  border-color: var(--xq-gold-light) !important;\n  color: var(--xq-crimson) !important;\n}\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   7. EVENT CARDS (general pages)\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n.event-card {\n  border-radius: var(--xq-radius) !important;\n  box-shadow: var(--xq-shadow) !important;\n  border: 1px solid rgba(140, 47, 57, 0.06) !important;\n  transition: var(--xq-transition) !important;\n}\n\n.event-card:hover {\n  box-shadow: var(--xq-shadow-hover) !important;\n  transform: translateY(-4px) !important;\n}\n\n.event-card .event-title {\n  color: var(--xq-crimson) !important;\n}\n\n.event-card .event-badge {\n  background: linear-gradient(135deg, var(--xq-crimson) 0%, var(--xq-crimson-dark) 100%) !important;\n}\n\n\/* CTA buttons on all pages *\/\n.event-card .cta-button,\n.timeline-page .cta-button,\na.cta-button {\n  background: var(--xq-gold) !important;\n  color: var(--xq-crimson-dark) !important;\n  font-weight: 700 !important;\n  border-radius: 25px !important;\n  box-shadow: 0 4px 15px rgba(228, 168, 85, 0.4) !important;\n  transition: var(--xq-transition) !important;\n  border-bottom: none !important;\n}\n\n.event-card .cta-button:hover,\n.timeline-page .cta-button:hover,\na.cta-button:hover {\n  background: var(--xq-gold-light) !important;\n  transform: translateY(-2px) !important;\n  box-shadow: 0 6px 20px rgba(228, 168, 85, 0.5) !important;\n}\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   8. CALENDAR WIDGET \u2014 Color Harmony Override\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n#xq-calendar-wrapper .xq-header {\n  background: linear-gradient(135deg, var(--xq-crimson) 0%, var(--xq-crimson-dark) 100%) !important;\n  border-bottom-color: var(--xq-gold) !important;\n}\n\n#xq-calendar-wrapper .xq-header h3 {\n  color: var(--xq-gold-light) !important;\n}\n\n#xq-calendar-wrapper .xq-header select {\n  background: rgba(228, 168, 85, 0.3) !important;\n  color: #ffffff !important;\n}\n\n#xq-calendar-wrapper .xq-table th {\n  background: var(--xq-cream) !important;\n  color: var(--xq-crimson-dark) !important;\n  border-bottom-color: var(--xq-gold) !important;\n}\n\n#xq-calendar-wrapper .tag.open {\n  background: var(--xq-crimson-dark) !important;\n  color: var(--xq-gold-light) !important;\n}\n\n#xq-calendar-wrapper .tag.team {\n  background: var(--xq-crimson) !important;\n  color: #ffffff !important;\n}\n\n#xq-calendar-wrapper .tag.student {\n  background: var(--xq-gold-light) !important;\n  color: var(--xq-crimson-dark) !important;\n}\n\n#xq-calendar-wrapper .tag.general {\n  background: var(--xq-cream) !important;\n  color: var(--xq-crimson-dark) !important;\n  border-color: var(--xq-gold) !important;\n}\n\n#xq-calendar-wrapper .btn-reg {\n  background: var(--xq-gold) !important;\n  border-color: var(--xq-gold) !important;\n  color: var(--xq-crimson-dark) !important;\n}\n\n#xq-calendar-wrapper .btn-doc {\n  border-color: var(--xq-gold-light) !important;\n  color: var(--xq-crimson) !important;\n}\n\n#xq-calendar-wrapper {\n  border-color: rgba(140, 47, 57, 0.15) !important;\n  border-radius: var(--xq-radius) !important;\n}\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   9. FOOTER\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\nfooter,\n.wp-block-template-part footer,\n.site-footer {\n  background: linear-gradient(135deg, var(--xq-crimson-dark) 0%, var(--xq-crimson) 100%) !important;\n  color: rgba(255, 255, 255, 0.85) !important;\n  padding: 30px 20px !important;\n  text-align: center !important;\n  border-top: 3px solid var(--xq-gold) !important;\n}\n\nfooter a,\n.site-footer a {\n  color: var(--xq-gold) !important;\n  border-bottom: none !important;\n}\n\nfooter a:hover,\n.site-footer a:hover {\n  color: var(--xq-gold-light) !important;\n}\n\n.back-to-top {\n  color: var(--xq-gold) !important;\n}\n\n.back-to-top:hover {\n  color: var(--xq-gold-light) !important;\n}\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   10. UTILITY \u2014 Smooth Global Transitions\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\nhtml {\n  scroll-behavior: smooth;\n}\n\n::selection {\n  background: var(--xq-gold);\n  color: var(--xq-crimson-dark);\n}\n\n\/* Scrollbar (Webkit) *\/\n::-webkit-scrollbar {\n  width: 8px;\n  height: 8px;\n}\n\n::-webkit-scrollbar-track {\n  background: var(--xq-cream);\n}\n\n::-webkit-scrollbar-thumb {\n  background: var(--xq-crimson);\n  border-radius: 4px;\n}\n\n::-webkit-scrollbar-thumb:hover {\n  background: var(--xq-crimson-dark);\n}\n\n\n\n<\/style>\n\n\n\n<script type=\"module\">\nimport { WebHaptics } from 'https:\/\/cdn.jsdelivr.net\/npm\/web-haptics@0.0.6\/+esm';\nconst haptics = new WebHaptics();\n\ndocument.addEventListener('click', (e) => {\n    if (e.target.closest('button, [role=\"button\"], a, label, input[type=\"submit\"]')) {\n        haptics.trigger('selection');\n    }\n}, { passive: true });\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c\u5341\u4e5d\u5c4a\u8336\u9633\u676f\u8c61\u68cb\u5c0f\u5b66\u6821\u9645\u8d5b \u540d\u6b21\u8868 \u7b2c\u5341\u4e5d\u5c4a\u8336\u9633\u676f\u8c61\u68cb\u5c0f\u5b66\u6821\u9645\u8d5b \u540d\u6b21\u8868 &middot; Final Standings \u516c\u5f00\u7ec4 \u5c06 \u521d\u5c0f\u7ec4 \u516c\u5f00\u7ec4 \u540d\u6b21 \u540d\u79f0 \u573a\u5206 \u7f16\u53f7 \u4ff1\u4e50\u90e8 \u5bf9\u624b\u5206 \u603b\u5c40\u5206 \u76f4\u80dc \u5bf9\u624b\u603b\u5c40\u5206 \u9996\u53f0\u5c40\u5206 \u540e\u624b\u5c40 \u72af\u89c4 \u540d\u6b21\u9006\u6bd4 1 \u516c\u6559D\u7ec4 14 1 CatholicHighSchoolPrimary 56 36 161.0 14 10 2 \u516c\u6559C\u7ec4 10 6 CatholicHighSchoolPrimary 64 30 179.0 8 10 3 \u516c\u6559A\u7ec4 10 12 CatholicHighSchoolPrimary 60 27 172.0 10 10 4 [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-8185","post","type-post","status-publish","format-standard","hentry","category-tournament-news"],"_links":{"self":[{"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/comments?post=8185"}],"version-history":[{"count":5,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8185\/revisions"}],"predecessor-version":[{"id":8190,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8185\/revisions\/8190"}],"wp:attachment":[{"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/media?parent=8185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/categories?post=8185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/tags?post=8185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}