{"id":8229,"date":"2026-05-12T00:40:59","date_gmt":"2026-05-11T16:40:59","guid":{"rendered":"https:\/\/www.xiangqi.sg\/wordpress\/?p=8229"},"modified":"2026-06-02T10:17:14","modified_gmt":"2026-06-02T02:17:14","slug":"65qgs","status":"publish","type":"post","link":"https:\/\/www.xiangqi.sg\/wordpress\/2026\/05\/12\/65qgs\/","title":{"rendered":"\u7b2c65\u5c4a\u5b59\u6587\u5e7f\u676f\u5168\u56fd\u8c61\u68cb\u4e2a\u4eba\u9526\u6807\u8d5b"},"content":{"rendered":"\n<!doctype html>\n<html lang=\"zh\">\n<head>\n<meta charset=\"utf-8\"\/>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"\/>\n<title>\u7b2c65\u5c4a\u5b59\u6587\u5e7f\u676f\u5168\u56fd\u8c61\u68cb\u4e2a\u4eba\u9526\u6807\u8d5b \u2014 \u65b0\u52a0\u5761\u8c61\u68cb\u603b\u4f1a<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"\/>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin\/>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Noto+Serif+SC:wght@400;600;700&#038;family=DM+Mono:wght@400;500&#038;display=swap\" rel=\"stylesheet\"\/>\n<style>\n:root{\n  --red:#9b2d3b;\n  --gold:#d9a441;\n  --cream:#fff8e8;\n  --bg:#fffdf8;\n  --line:#e7d8bd;\n  --text:#333;\n  --muted:#888;\n  --green:#149954;\n  --pink:#f8e9e9;\n  --draw:#f6eddc;\n  --mono:'DM Mono',monospace;\n  --zh:'Noto Serif SC',serif;\n}\n*{box-sizing:border-box;margin:0;padding:0}\nbody{background:var(--bg);color:var(--text);font-family:var(--zh);font-size:15px;line-height:1.7;-webkit-font-smoothing:antialiased}\n\n\/* \u2500\u2500 HERO \u2500\u2500 *\/\n.hero{\n  background:var(--cream);\n  border-bottom:3px solid var(--gold);\n  padding:36px 24px 28px;\n  text-align:center;\n}\n.hero-badge{\n  display:inline-block;background:var(--red);color:#fff;\n  font-family:var(--mono);font-size:10px;letter-spacing:.12em;\n  padding:3px 10px;border-radius:2px;margin-bottom:14px;\n}\n.hero h1{font-family:var(--zh);font-size:clamp(22px,4vw,36px);font-weight:700;color:var(--red);line-height:1.3;margin-bottom:4px}\n.hero-en{color:var(--muted);font-size:14px;margin-bottom:20px}\n.hero-meta{display:flex;flex-wrap:wrap;gap:0;justify-content:center;border-top:1px solid var(--line);padding-top:16px;margin-top:4px}\n.hero-meta-item{padding:4px 20px;border-right:1px solid var(--line);font-size:13px}\n.hero-meta-item:last-child{border-right:none}\n.hero-meta-item dt{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}\n.hero-meta-item dd{font-weight:600;color:var(--text)}\n\n\/* \u2500\u2500 WRAP \u2500\u2500 *\/\n.wrap{max-width:1060px;margin:0 auto;padding:24px 16px 60px}\n\n\/* \u2500\u2500 CARD \u2500\u2500 *\/\n.card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 6px 20px rgba(0,0,0,.06);margin-top:24px}\n.card-head{\n  background:var(--cream);padding:14px 20px;\n  border-bottom:2px solid var(--gold);\n  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;\n}\n.card-head h2{font-size:18px;font-weight:700;color:var(--red)}\n.card-note{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.06em}\n\n\/* \u2500\u2500 GROUP TABS \u2500\u2500 *\/\n.group-tabs{display:flex;gap:8px;margin-top:20px;flex-wrap:wrap}\n.g-btn{\n  font-family:var(--zh);font-size:14px;font-weight:700;\n  padding:9px 20px;border-radius:99px;border:1px solid var(--line);\n  background:#fff;color:#555;cursor:pointer;transition:all .15s;\n}\n.g-btn.active{background:var(--red);color:#fff;border-color:var(--red)}\n\n\/* \u2500\u2500 VIEW TOGGLE \u2500\u2500 *\/\n.view-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-top:16px}\n.view-toggle{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}\n.v-btn{font-family:var(--zh);font-size:13px;font-weight:700;padding:7px 18px;border:none;background:none;cursor:pointer;color:var(--muted);transition:all .15s}\n.v-btn.active{background:var(--red);color:#fff}\n\n\/* \u2500\u2500 ROUND PILLS \u2500\u2500 *\/\n.round-pills{display:flex;gap:6px;flex-wrap:wrap}\n.r-btn{\n  font-family:var(--mono);font-size:12px;padding:5px 14px;border-radius:99px;\n  border:1px solid var(--line);background:#fff;color:var(--muted);cursor:pointer;transition:all .15s;\n}\n.r-btn.active{background:var(--red);color:#fff;border-color:var(--red)}\n.r-btn:hover:not(.active){border-color:#aaa;color:var(--text)}\n\n\/* \u2500\u2500 TABLES shared \u2500\u2500 *\/\ntable{width:100%;border-collapse:collapse;font-size:14px}\nth{background:var(--cream);color:var(--red);text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);font-size:13px;font-weight:600}\nth.c{text-align:center}\nth.r{text-align:right}\ntd{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}\ntbody tr:last-child td{border-bottom:none}\ntbody tr:hover{background:var(--cream)}\n\n\/* \u2500\u2500 PAIRINGS \u2500\u2500 *\/\n.pair-table{table-layout:fixed}\ntd.bnum{width:44px;text-align:center;font-family:var(--mono);font-size:12px;color:var(--muted);font-weight:600}\ntd.red-col{width:42%;text-align:right}\ntd.blk-col{width:42%}\ntd.res-col{width:80px;text-align:center;font-family:var(--mono);font-size:17px;font-weight:800}\n.pcell{display:flex;align-items:center;gap:8px}\n.pcell.rev{flex-direction:row-reverse}\n.sc{\n  display:inline-flex;align-items:center;justify-content:center;\n  background:var(--red);color:#fff;font-family:var(--mono);font-size:11px;font-weight:700;\n  border-radius:99px;min-width:26px;height:26px;padding:0 6px;flex-shrink:0;\n}\n.pname{font-weight:700;font-size:14px}\n.pno{font-family:var(--mono);font-size:11px;color:var(--muted)}\n.bye-cell{color:var(--muted);font-style:italic;font-size:13px}\ntr.rw td.res-col{color:var(--green)}\ntr.bw td.res-col{color:#c0392b}\ntr.dr td.res-col{color:#a17422}\ntr.pe td.res-col{color:#bbb}\ntr.rw{background:rgba(20,153,84,.04)}\ntr.bw{background:rgba(192,57,43,.04)}\ntr.dr{background:rgba(161,116,34,.06)}\n.round-lbl{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:14px 12px 6px}\n\n\/* \u2500\u2500 STANDINGS \u2500\u2500 *\/\ntd.rnk{width:44px;text-align:center;font-family:var(--mono);font-size:16px;font-weight:700;color:var(--muted)}\ntr.r1 td.rnk{color:var(--gold);font-size:20px}\ntr.r2 td.rnk,tr.r3 td.rnk{color:#888;font-size:18px}\ntr.r1 td{font-weight:700}\ntd.pts-cell{width:56px;text-align:center;font-family:var(--mono);font-size:18px;font-weight:800;color:var(--red)}\ntd.sos-cell{width:68px;text-align:center;font-family:var(--mono);font-size:13px;color:#666}\ntd.sub-c{width:60px;text-align:center;font-family:var(--mono);font-size:12px;color:#888}\n.name-btn{\n  background:none;border:none;cursor:pointer;text-align:left;padding:0;\n  font-family:var(--zh);font-size:14px;font-weight:700;color:var(--text);\n  text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;\n  transition:color .15s;\n}\n.name-btn:hover{color:var(--red)}\n.promo-tag{\n  display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.03em;\n  padding:2px 7px;border-radius:3px;font-weight:600;margin-left:4px;white-space:nowrap;\n}\n.pt-up{background:#166534;color:#fff}\n.pt-master{background:var(--red);color:#fff}\n.pt-g2{background:#1d4ed8;color:#fff}\n.pt-g1{background:#475569;color:#fff}\n.pt-foul{background:#92400e;color:#fff}\n.dw-tag{\n  font-family:var(--mono);font-size:10px;border:1px solid var(--line);\n  border-radius:2px;padding:1px 5px;color:var(--muted);\n}\n\n\/* \u2500\u2500 PLAYER MODAL \u2500\u2500 *\/\n.modal-overlay{\n  display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;\n  align-items:center;justify-content:center;padding:16px;\n}\n.modal-overlay.open{display:flex}\n.modal{\n  background:#fff;border-radius:16px;max-width:560px;width:100%;\n  max-height:88vh;overflow-y:auto;box-shadow:0 24px 60px rgba(0,0,0,.25);\n}\n.modal-head{\n  background:var(--cream);padding:16px 20px;border-bottom:2px solid var(--gold);\n  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;\n  position:sticky;top:0;\n}\n.modal-title{font-size:18px;font-weight:700;color:var(--red)}\n.modal-sub{font-size:13px;color:var(--muted);margin-top:2px}\n.modal-close{\n  background:none;border:none;cursor:pointer;font-size:20px;color:var(--muted);\n  line-height:1;padding:2px 6px;border-radius:4px;flex-shrink:0;\n}\n.modal-close:hover{background:var(--line)}\n.modal-body{padding:0}\n.modal-stat-row{\n  display:flex;gap:0;border-bottom:1px solid var(--line);\n  padding:0;\n}\n.modal-stat{flex:1;text-align:center;padding:12px 8px;border-right:1px solid var(--line)}\n.modal-stat:last-child{border-right:none}\n.modal-stat dt{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}\n.modal-stat dd{font-family:var(--mono);font-size:20px;font-weight:700;color:var(--red)}\n.modal-rounds-head{\n  display:grid;grid-template-columns:36px 1fr 1fr 60px 60px;\n  padding:8px 16px;background:var(--cream);\n  font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);\n  border-bottom:1px solid var(--line);\n}\n.modal-round-row{\n  display:grid;grid-template-columns:36px 1fr 1fr 60px 60px;\n  padding:10px 16px;border-bottom:1px solid var(--line);align-items:center;\n  font-size:13px;\n}\n.modal-round-row:last-child{border-bottom:none}\n.modal-round-row:hover{background:var(--cream)}\n.rnd-num{font-family:var(--mono);font-size:12px;color:var(--muted);font-weight:600}\n.rnd-side{\n  font-family:var(--mono);font-size:10px;padding:2px 7px;border-radius:99px;\n  font-weight:600;text-align:center;width:fit-content;\n}\n.side-red{background:#fce8e8;color:#c0392b}\n.side-blk{background:#e8edf8;color:#1d4ed8}\n.rnd-res{font-family:var(--mono);font-size:14px;font-weight:800;text-align:center}\n.rnd-pts{font-family:var(--mono);font-size:13px;font-weight:700;text-align:center}\n.res-w{color:var(--green)}.res-d{color:#a17422}.res-l{color:#c0392b}\n\n\/* \u2500\u2500 EXPAND TOGGLE \u2500\u2500 *\/\n.expand-row{display:none;padding:10px 16px 6px;border-bottom:1px solid var(--line)}\n.expand-btn{\n  font-family:var(--mono);font-size:11px;letter-spacing:.06em;\n  border:1px solid var(--line);background:#fff;border-radius:99px;\n  padding:5px 14px;cursor:pointer;color:var(--muted);transition:all .15s;\n}\n.expand-btn.open{background:var(--red);color:#fff;border-color:var(--red)}\n\n\/* columns to hide on mobile *\/\n.col-extra{display:table-cell}\n\n@media(max-width:640px){\n  \/* hero *\/\n  .hero{padding:24px 14px 20px}\n  .hero h1{font-size:20px}\n  .hero-en{font-size:13px}\n  .hero-meta{gap:0}\n  .hero-meta-item{padding:4px 10px;font-size:12px;border-right:1px solid var(--line)}\n  .hero-meta-item:nth-child(n+4){border-top:1px solid var(--line)}\n\n  \/* wrap *\/\n  .wrap{padding:14px 10px 40px}\n\n  \/* tabs & toggles *\/\n  .group-tabs{gap:6px}\n  .g-btn{font-size:13px;padding:7px 14px}\n  .view-row{gap:8px}\n  .v-btn{font-size:12px;padding:6px 13px}\n  .r-btn{font-size:11px;padding:4px 11px}\n\n  \/* card *\/\n  .card-head{padding:10px 14px}\n  .card-head h2{font-size:16px}\n\n  \/* pairings *\/\n  .pair-table{table-layout:fixed}\n  th,td{padding:9px 6px;font-size:13px}\n  td.bnum{width:32px;font-size:11px}\n  td.red-col,td.blk-col{width:43%}\n  td.res-col{width:56px;font-size:13px}\n  .pname{font-size:13px}\n  .pno{font-size:10px}\n  .sc{min-width:22px;height:22px;font-size:10px;padding:0 5px}\n  .round-lbl{font-size:10px;padding:10px 10px 4px}\n\n  \/* standings \u2014 hide extra cols by default *\/\n  .col-extra{display:none}\n  .expand-row{display:block}\n\n  \/* standings core cols *\/\n  td.rnk{width:32px;font-size:14px}\n  td.pts-cell{width:40px;font-size:16px}\n  td.sos-cell{width:50px;font-size:12px}\n  td.sub-c{width:44px;font-size:11px}\n  .promo-tag{font-size:9px;padding:2px 5px;margin-left:0;display:block;margin-top:2px}\n\n  \/* modal *\/\n  .modal{border-radius:12px 12px 0 0;position:fixed;bottom:0;left:0;right:0;max-height:85vh;max-width:none}\n  .modal-overlay{align-items:flex-end;padding:0}\n  .modal-head{padding:14px 16px}\n  .modal-title{font-size:16px}\n  .modal-stat-row{flex-wrap:wrap}\n  .modal-stat{min-width:33%;border-bottom:1px solid var(--line)}\n  .modal-stat dd{font-size:16px}\n  .modal-rounds-head,.modal-round-row{\n    grid-template-columns:28px 1fr 46px 30px 36px;\n    padding:8px 12px;font-size:11px;gap:4px;\n  }\n  .modal-round-row{font-size:12px}\n  .rnd-side{font-size:9px;padding:1px 5px}\n}\n<\/style>\n<\/head>\n<body>\n\n<div class=\"hero\">\n  <div class=\"hero-badge\">CONCLUDED \u00b7 2026<\/div>\n  <h1>\u7b2c65\u5c4a\u5b59\u6587\u5e7f\u676f\u5168\u56fd\u8c61\u68cb\u4e2a\u4eba\u9526\u6807\u8d5b<\/h1>\n  <div class=\"hero-en\">65th Sun Wenguang Cup National Xiangqi Individual Championship<\/div>\n  <div class=\"hero-meta\">\n    <div class=\"hero-meta-item\"><dt>\u65e5\u671f<\/dt><dd>2026\u5e745\u670811\u201417\u65e5<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u5730\u70b9<\/dt><dd>\u65b0\u52a0\u5761<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u88c1\u5224\u957f<\/dt><dd>\u6b27\u6728\u987a<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u7f16\u6392\u957f<\/dt><dd>\u6b27\u6728\u987a<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u53c2\u8d5b<\/dt><dd>A\u7ec4 35\u4eba \u00b7 B\u7ec4 39\u4eba<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u8f6e\u6b21<\/dt><dd>9\u8f6e \u745e\u58eb\u5236<\/dd><\/div>\n  <\/div>\n<\/div>\n\n<div class=\"wrap\">\n  <div class=\"group-tabs\">\n    <button class=\"g-btn active\" onclick=\"switchGroup('A')\">\u516c\u5f00A\u7ec4 Group A<\/button>\n    <button class=\"g-btn\" onclick=\"switchGroup('B')\">B\u7ec4 Group B<\/button>\n  <\/div>\n\n  <div class=\"view-row\">\n    <div class=\"view-toggle\">\n      <button class=\"v-btn active\" onclick=\"switchView('standings')\">\ud83c\udfc6 \u6700\u7ec8\u540d\u6b21<\/button>\n      <button class=\"v-btn\" onclick=\"switchView('pairings')\">\ud83d\udccb \u5404\u8f6e\u5bf9\u9635<\/button>\n    <\/div>\n    <div class=\"round-pills\" id=\"roundPills\" style=\"display:none\"><\/div>\n  <\/div>\n\n  <div class=\"card\" id=\"mainCard\">\n    <div class=\"card-head\">\n      <h2 id=\"cardTitle\"><\/h2>\n      <div class=\"card-note\" id=\"cardNote\"><\/div>\n    <\/div>\n    <div id=\"cardBody\"><\/div>\n  <\/div>\n<\/div>\n\n<!-- PLAYER MODAL -->\n<div class=\"modal-overlay\" id=\"modalOverlay\" onclick=\"closeModal(event)\">\n  <div class=\"modal\" id=\"modal\">\n    <div class=\"modal-head\">\n      <div>\n        <div class=\"modal-title\" id=\"modalTitle\"><\/div>\n        <div class=\"modal-sub\" id=\"modalSub\"><\/div>\n      <\/div>\n      <button class=\"modal-close\" onclick=\"closeModalDirect()\">\u2715<\/button>\n    <\/div>\n    <div class=\"modal-body\" id=\"modalBody\"><\/div>\n  <\/div>\n<\/div>\n\n\n<script>\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\n   DATA\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 *\/\nconst players = {\n  A:{1:\"\u5434\u5bb6\u4e50\",2:\"\u8bb8\u6c38\u5764\",3:\"\u8d56\u4fca\u6770\",4:\"\u5218\u4ebf\u8c6a\",5:\"\u5b8b\u6210\u534e\",6:\"\u9648\u6dfb\u6e90\",7:\"\u7ae0\u5efa\u660e\",8:\"\u9ec4\u6bc5\u9e3f\",\n     9:\"\u5218\u6021\u5b8f\",10:\"\u8428\u6c99\",11:\"\u9648\u4e16\u660c\",12:\"\u5f90\u671d\u6656\",13:\"\u6797\u8000\u68ee\",14:\"\u9648\u8317\u82b3\",15:\"\u6881\u542f\u4e91\",16:\"\u5415\u745e\u5c55\",\n     17:\"\u5218\u6021\u8f89\",18:\"\u6f58\u6587\u4fca\",19:\"\u82a6\u4fca\u6d9b\",20:\"\u90d1\u6668\u66e6\",21:\"\u5434\u5b97\u7ff0\",22:\"\u66fe\u921e\u6e67\",23:\"\u5f90\u9053\u5d58\",24:\"\u6797\u6e05\u6c34\",\n     25:\"\u675c\u8861\",26:\"\u6d2a\u5b89\u8c6a\",27:\"\u90ed\u88d5\u8363\",28:\"\u9ec4\u6977\u54f2\",29:\"\u5deb\u6c49\u6883\",30:\"\u6731\u6c38\u5409\",31:\"\u738b\u5eb7\u5168\",32:\"\u5b59\u9896\u6587\",\n     33:\"\u738b\u6893\u745e\",34:\"\u6797\u8d85\u8d24\",35:\"\u6797\u5b50\u51b2\"},\n  B:{1:\"\u738b\u7fd4\u5584\",2:\"\u9648\u9756\u745e\",3:\"\u5f20\u8d77\u7855\",4:\"\u674e\u5fd7\u8d24\",5:\"\u8bb8\u4e7e\u4ebf\",6:\"\u6d2a\u5065\u68ee\",7:\"\u90d1\u5347\u7fd4\",8:\"\u90d1\u8521\u5cf0\",\n     9:\"\u8521\u5fb7\u8d22\",10:\"\u6731\u6631\u591a\",11:\"\u5362\u5fd7\u8c6a\",12:\"\u53f6\u5fb7\u660e\",13:\"\u738b\u9510\u8363\",14:\"\u8c22\u5fd7\u626c\",15:\"\u9ec4\u5eb7\u6377\",16:\"\u8427\u5723\u6743\",\n     17:\"\u82cf\u6dfb\u798f\",18:\"\u8d56\u9896\u6b63\",19:\"\u5f20\u6d69\u6668\",20:\"\u674e\u534e\u5174\",21:\"\u82cf\u6893\u5ce3\",22:\"\u5434\u5f97\u987a\",23:\"\u8bb8\u9f99\u53d1\",24:\"\u6797\u94ed\u6210\",\n     25:\"\u674e\u5a01\u99ff\",26:\"\u9093\u5b50\u5eb7\",27:\"\u90ed\u6b63\u6709\",28:\"\u9ece\u5929\u6717\",29:\"\u90d1\u5065\u7965\",30:\"\u9b4f\u5fd7\u5049\",31:\"\u6768\u8018\u5149\",32:\"\u6797\u53cb\u798f\",\n     33:\"\u5468\u8d35\u5e73\",34:\"\u65bd\u67cf\u5b87\",35:\"\u5218\u6587\u4e1a\",36:\"\u4f58\u7dad\u5143\",37:\"\u9648\u660e\u5149\",38:\"\u9093\u7ef4\u82f1\",39:\"\u8d99\u9326\u5c71\"}\n};\n\n\/* [rank, no, pts, sos, directWin|null, wins, bwins, bgames, bestOpp, fouls, notes] *\/\nconst standings = {\n  A:[\n    [1,21,17,98,null,8,3,4,14,0,\"\"],\n    [2,35,14,95.5,null,6,3,4,17,0,\"\u83b7\u5f972\u4e2a\u5927\u5e08\u5e8f\u5206\"],\n    [3,34,13,99,null,6,3,5,17,0,\"\u83b7\u5f972\u4e2a\u5927\u5e08\u5e8f\u5206\"],\n    [4,3,12,104,null,5,2,5,17,0,\"\"],\n    [5,4,12,99.5,null,5,3,4,17,0,\"\"],\n    [6,25,12,85,null,4,1,4,12,0,\"\"],\n    [7,12,12,82,null,4,1,4,12,0,\"\"],\n    [8,30,11,96,null,4,2,4,17,0,\"\"],\n    [9,6,11,93,null,5,3,5,17,0,\"\"],\n    [10,26,11,89,null,3,1,4,12,0,\"\"],\n    [11,19,10,101,null,4,2,4,17,0,\"\"],\n    [12,13,10,78,null,4,2,4,12,0,\"\"],\n    [13,31,10,77,null,5,3,4,13,0,\"\"],\n    [14,28,9,92,null,4,2,4,13,0,\"\"],\n    [15,7,9,90,null,4,2,5,13,0,\"\"],\n    [16,18,9,87,null,2,1,5,12,0,\"\"],\n    [17,1,9,82,null,3,1,5,12,0,\"\"],\n    [18,15,9,81,null,4,2,5,14,0,\"\"],\n    [19,8,9,80,null,3,1,4,14,0,\"\"],\n    [20,29,9,80,null,2,0,4,11,0,\"\"],\n    [21,2,9,77,null,3,2,5,10,0,\"\"],\n    [22,9,9,76,null,4,1,4,11,0,\"\"],\n    [23,10,8,88,null,4,1,5,17,0,\"\"],\n    [24,16,8,86,null,4,1,5,12,0,\"\"],\n    [25,20,8,77,null,4,1,5,10,0,\"\"],\n    [26,14,8,74,null,4,3,5,10,0,\"\"],\n    [27,23,8,69,null,4,3,5,11,0,\"\"],\n    [28,17,8,63.5,null,4,2,4,12,0,\"\"],\n    [29,22,7,70.5,null,3,1,4,17,0,\"\"],\n    [30,5,6,80,null,1,0,4,12,0,\"\"],\n    [31,27,6,60.5,2,3,0,4,9,0,\"\"],\n    [32,24,6,60.5,0,3,1,4,9,0,\"\"],\n    [33,33,5,74.5,null,2,0,4,13,0,\"\"],\n    [34,11,5,65.5,null,2,0,4,12,0,\"\"],\n    [35,32,5,59.5,null,2,1,4,10,0,\"\"]\n  ],\n  B:[\n    [1,15,16,98,null,7,5,5,14,0,\"\u83b7\u5f97\u4e59\u7ea7\u5e8f\u5206\"],\n    [2,11,14,104,null,6,3,5,16,0,\"\u83b7\u5f97\u4e59\u7ea7\u5e8f\u5206\"],\n    [3,6,13,88,null,5,3,5,14,0,\"\u83b7\u5f97\u4e59\u7ea7\u5e8f\u5206\"],\n    [4,27,13,87,null,6,3,5,12,0,\"\u83b7\u5f97\u4e59\u7ea7\u5e8f\u5206\"],\n    [5,34,12,100,null,4,2,5,16,0,\"\u83b7\u5f972\u7b49\u7ea7\u79f0\u53f7\u5e8f\u5206\"],\n    [6,28,12,89,null,6,3,5,14,0,\"\u83b7\u5f972\u7b49\u7ea7\u79f0\u53f7\u5e8f\u5206\"],\n    [7,4,12,81,null,6,3,4,16,0,\"\u83b7\u5f972\u7b49\u7ea7\u79f0\u53f7\u5e8f\u5206\"],\n    [8,25,11,105,null,5,2,4,16,0,\"\u83b7\u5f972\u7b49\u7ea7\u79f0\u53f7\u5e8f\u5206\"],\n    [9,30,11,94,null,5,4,4,13,1,\"\u83b7\u5f971\u7b49\u7ea7\u79f0\u53f7\u5e8f\u5206\"],\n    [10,1,11,94,null,4,0,4,16,0,\"\u83b7\u5f971\u7b49\u7ea7\u79f0\u53f7\u5e8f\u5206\"],\n    [11,21,11,93,null,5,2,4,16,0,\"\u83b7\u5f971\u7b49\u7ea7\u79f0\u53f7\u5e8f\u5206\"],\n    [12,12,10,90,null,5,2,4,14,0,\"\u83b7\u5f971\u7b49\u7ea7\u79f0\u53f7\u5e8f\u5206\"],\n    [13,37,10,84,null,5,2,4,12,0,\"\"],\n    [14,23,10,83,null,4,2,4,14,0,\"\"],\n    [15,2,10,77,null,4,1,5,11,0,\"\"],\n    [16,31,10,75,null,5,3,5,11,0,\"\"],\n    [17,10,9,102,null,4,2,5,16,0,\"\"],\n    [18,13,9,96,null,4,1,4,16,0,\"\"],\n    [19,7,9,89,null,3,3,5,13,0,\"\"],\n    [20,3,9,86,null,3,2,5,12,0,\"\"],\n    [21,20,9,85,null,2,0,4,13,0,\"\"],\n    [22,16,9,78,null,3,1,4,16,0,\"\"],\n    [23,38,9,76,null,4,2,5,11,0,\"\"],\n    [24,39,9,75,null,2,0,4,10,0,\"\"],\n    [25,5,9,65,null,4,2,4,13,0,\"\"],\n    [26,19,8,88,null,4,1,4,13,0,\"\"],\n    [27,29,8,87,null,4,3,5,13,0,\"\"],\n    [28,33,8,82,null,3,2,4,12,0,\"\"],\n    [29,22,8,67,null,4,2,4,11,0,\"\"],\n    [30,14,7,84,null,3,1,5,11,0,\"\"],\n    [31,36,7,70,null,3,2,4,12,0,\"\"],\n    [32,8,7,61,null,3,2,4,12,0,\"\"],\n    [33,9,7,59,2,3,2,4,10,0,\"\"],\n    [34,32,7,59,0,3,1,4,10,0,\"\"],\n    [35,18,6,71,null,3,2,5,10,0,\"\"],\n    [36,35,6,70,null,3,2,4,12,0,\"\"],\n    [37,26,6,69,null,3,2,4,13,0,\"\"],\n    [38,17,6,61,null,3,1,4,9,0,\"\"],\n    [39,24,2,59,null,1,0,4,10,0,\"\"]\n  ]\n};\n\nconst pairings = [\n  {g:\"A\",r:1,b:1,red:1,rs:0,black:2,bs:0,result:\"2:0\"},{g:\"A\",r:1,b:2,red:4,rs:0,black:3,bs:0,result:\"-:+\"},{g:\"A\",r:1,b:3,red:5,rs:0,black:6,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:4,red:8,rs:0,black:7,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:5,red:9,rs:0,black:10,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:6,red:12,rs:0,black:11,bs:0,result:\"2:0\"},{g:\"A\",r:1,b:7,red:13,rs:0,black:14,bs:0,result:\"2:0\"},{g:\"A\",r:1,b:8,red:16,rs:0,black:15,bs:0,result:\"2:0\"},{g:\"A\",r:1,b:9,red:17,rs:0,black:18,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:10,red:20,rs:0,black:19,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:11,red:21,rs:0,black:22,bs:0,result:\"2:0\"},{g:\"A\",r:1,b:12,red:24,rs:0,black:23,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:13,red:25,rs:0,black:26,bs:0,result:\"1:1\"},{g:\"A\",r:1,b:14,red:28,rs:0,black:27,bs:0,result:\"2:0\"},{g:\"A\",r:1,b:15,red:29,rs:0,black:30,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:16,red:32,rs:0,black:31,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:17,red:33,rs:0,black:34,bs:0,result:\"0:2\"},{g:\"A\",r:1,b:18,red:35,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"A\",r:2,b:1,red:34,rs:2,black:35,bs:2,result:\"0:2\"},{g:\"A\",r:2,b:2,red:31,rs:2,black:28,bs:2,result:\"0:2\"},{g:\"A\",r:2,b:3,red:30,rs:2,black:21,bs:2,result:\"0:2\"},{g:\"A\",r:2,b:4,red:23,rs:2,black:16,bs:2,result:\"0:2\"},{g:\"A\",r:2,b:5,red:19,rs:2,black:13,bs:2,result:\"2:0\"},{g:\"A\",r:2,b:6,red:18,rs:2,black:12,bs:2,result:\"1:1\"},{g:\"A\",r:2,b:7,red:10,rs:2,black:1,bs:2,result:\"2:0\"},{g:\"A\",r:2,b:8,red:6,rs:2,black:7,bs:2,result:\"2:0\"},{g:\"A\",r:2,b:9,red:3,rs:2,black:25,bs:1,result:\"2:0\"},{g:\"A\",r:2,b:10,red:26,rs:1,black:33,bs:0,result:\"2:0\"},{g:\"A\",r:2,b:11,red:27,rs:0,black:32,bs:0,result:\"0:2\"},{g:\"A\",r:2,b:12,red:22,rs:0,black:29,bs:0,result:\"1:1\"},{g:\"A\",r:2,b:13,red:15,rs:0,black:24,bs:0,result:\"2:0\"},{g:\"A\",r:2,b:14,red:14,rs:0,black:20,bs:0,result:\"2:0\"},{g:\"A\",r:2,b:15,red:11,rs:0,black:17,bs:0,result:\"0:2\"},{g:\"A\",r:2,b:16,red:2,rs:0,black:9,bs:0,result:\"2:0\"},{g:\"A\",r:2,b:17,red:5,rs:0,black:8,bs:0,result:\"1:1\"},{g:\"A\",r:2,b:18,red:4,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"A\",r:3,b:1,red:35,rs:4,black:3,bs:4,result:\"2:0\"},{g:\"A\",r:3,b:2,red:16,rs:4,black:6,bs:4,result:\"0:2\"},{g:\"A\",r:3,b:3,red:21,rs:4,black:10,bs:4,result:\"2:0\"},{g:\"A\",r:3,b:4,red:28,rs:4,black:19,bs:4,result:\"0:2\"},{g:\"A\",r:3,b:5,red:12,rs:3,black:26,bs:3,result:\"1:1\"},{g:\"A\",r:3,b:6,red:7,rs:2,black:18,bs:3,result:\"2:0\"},{g:\"A\",r:3,b:7,red:1,rs:2,black:4,bs:2,result:\"0:2\"},{g:\"A\",r:3,b:8,red:13,rs:2,black:2,bs:2,result:\"0:2\"},{g:\"A\",r:3,b:9,red:17,rs:2,black:14,bs:2,result:\"0:2\"},{g:\"A\",r:3,b:10,red:32,rs:2,black:15,bs:2,result:\"0:2\"},{g:\"A\",r:3,b:11,red:23,rs:2,black:30,bs:2,result:\"0:2\"},{g:\"A\",r:3,b:12,red:31,rs:2,black:34,bs:2,result:\"0:2\"},{g:\"A\",r:3,b:13,red:25,rs:1,black:5,bs:1,result:\"1:1\"},{g:\"A\",r:3,b:14,red:8,rs:1,black:22,bs:1,result:\"2:0\"},{g:\"A\",r:3,b:15,red:29,rs:1,black:11,bs:0,result:\"2:0\"},{g:\"A\",r:3,b:16,red:9,rs:0,black:27,bs:0,result:\"2:0\"},{g:\"A\",r:3,b:17,red:24,rs:0,black:20,bs:0,result:\"1:1\"},{g:\"A\",r:3,b:18,red:33,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"A\",r:4,b:1,red:19,rs:6,black:21,bs:6,result:\"0:2\"},{g:\"A\",r:4,b:2,red:6,rs:6,black:35,bs:6,result:\"1:1\"},{g:\"A\",r:4,b:3,red:34,rs:4,black:28,bs:4,result:\"2:0\"},{g:\"A\",r:4,b:4,red:30,rs:4,black:16,bs:4,result:\"2:0\"},{g:\"A\",r:4,b:5,red:15,rs:4,black:12,bs:4,result:\"2:0\"},{g:\"A\",r:4,b:6,red:26,rs:4,black:4,bs:4,result:\"0:2\"},{g:\"A\",r:4,b:7,red:14,rs:4,black:7,bs:4,result:\"0:2\"},{g:\"A\",r:4,b:8,red:3,rs:4,black:10,bs:4,result:\"2:0\"},{g:\"A\",r:4,b:9,red:2,rs:4,black:29,bs:3,result:\"1:1\"},{g:\"A\",r:4,b:10,red:18,rs:3,black:8,bs:3,result:\"1:1\"},{g:\"A\",r:4,b:11,red:20,rs:2,black:31,bs:2,result:\"2:0\"},{g:\"A\",r:4,b:12,red:33,rs:2,black:23,bs:2,result:\"2:0\"},{g:\"A\",r:4,b:13,red:5,rs:2,black:32,bs:2,result:\"2:0\"},{g:\"A\",r:4,b:14,red:25,rs:2,black:17,bs:2,result:\"2:0\"},{g:\"A\",r:4,b:15,red:13,rs:2,black:9,bs:2,result:\"1:1\"},{g:\"A\",r:4,b:16,red:22,rs:1,black:1,bs:2,result:\"0:2\"},{g:\"A\",r:4,b:17,red:27,rs:0,black:24,bs:0,result:\"2:0\"},{g:\"A\",r:4,b:18,red:11,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"A\",r:5,b:1,red:21,rs:8,black:6,bs:7,result:\"2:0\"},{g:\"A\",r:5,b:2,red:35,rs:7,black:15,bs:6,result:\"2:0\"},{g:\"A\",r:5,b:3,red:7,rs:6,black:3,bs:6,result:\"0:2\"},{g:\"A\",r:5,b:4,red:4,rs:6,black:19,bs:6,result:\"2:0\"},{g:\"A\",r:5,b:5,red:34,rs:6,black:30,bs:6,result:\"2:0\"},{g:\"A\",r:5,b:6,red:10,rs:4,black:2,bs:5,result:\"2:0\"},{g:\"A\",r:5,b:7,red:1,rs:4,black:25,bs:4,result:\"1:1\"},{g:\"A\",r:5,b:8,red:12,rs:4,black:5,bs:4,result:\"2:0\"},{g:\"A\",r:5,b:9,red:8,rs:4,black:33,bs:4,result:\"2:0\"},{g:\"A\",r:5,b:10,red:16,rs:4,black:14,bs:4,result:\"2:0\"},{g:\"A\",r:5,b:11,red:28,rs:4,black:18,bs:4,result:\"1:1\"},{g:\"A\",r:5,b:12,red:29,rs:4,black:20,bs:4,result:\"2:0\"},{g:\"A\",r:5,b:13,red:9,rs:3,black:26,bs:4,result:\"0:2\"},{g:\"A\",r:5,b:14,red:11,rs:2,black:13,bs:3,result:\"0:2\"},{g:\"A\",r:5,b:15,red:17,rs:2,black:27,bs:2,result:\"2:0\"},{g:\"A\",r:5,b:16,red:31,rs:2,black:23,bs:2,result:\"2:0\"},{g:\"A\",r:5,b:17,red:32,rs:2,black:22,bs:1,result:\"0:2\"},{g:\"A\",r:5,b:18,red:24,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"A\",r:6,b:1,red:35,rs:9,black:21,bs:10,result:\"0:2\"},{g:\"A\",r:6,b:2,red:3,rs:8,black:34,bs:8,result:\"1:1\"},{g:\"A\",r:6,b:3,red:6,rs:7,black:4,bs:8,result:\"0:2\"},{g:\"A\",r:6,b:4,red:30,rs:6,black:12,bs:6,result:\"1:1\"},{g:\"A\",r:6,b:5,red:26,rs:6,black:29,bs:6,result:\"1:1\"},{g:\"A\",r:6,b:6,red:19,rs:6,black:16,bs:6,result:\"2:0\"},{g:\"A\",r:6,b:7,red:15,rs:6,black:8,bs:6,result:\"0:2\"},{g:\"A\",r:6,b:8,red:7,rs:6,black:10,bs:6,result:\"2:0\"},{g:\"A\",r:6,b:9,red:2,rs:5,black:28,bs:5,result:\"0:2\"},{g:\"A\",r:6,b:10,red:18,rs:5,black:1,bs:5,result:\"2:0\"},{g:\"A\",r:6,b:11,red:25,rs:5,black:13,bs:5,result:\"2:0\"},{g:\"A\",r:6,b:12,red:14,rs:4,black:31,bs:4,result:\"0:2\"},{g:\"A\",r:6,b:13,red:20,rs:4,black:17,bs:4,result:\"2:0\"},{g:\"A\",r:6,b:14,red:33,rs:4,black:5,bs:4,result:\"1:1\"},{g:\"A\",r:6,b:15,red:22,rs:3,black:9,bs:3,result:\"0:2\"},{g:\"A\",r:6,b:16,red:23,rs:2,black:32,bs:2,result:\"2:0\"},{g:\"A\",r:6,b:17,red:24,rs:2,black:11,bs:2,result:\"2:0\"},{g:\"A\",r:6,b:18,red:27,rs:2,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"A\",r:7,b:1,red:4,rs:10,black:21,bs:12,result:\"1:1\"},{g:\"A\",r:7,b:2,red:8,rs:8,black:35,bs:9,result:\"0:2\"},{g:\"A\",r:7,b:3,red:34,rs:9,black:7,bs:8,result:\"2:0\"},{g:\"A\",r:7,b:4,red:19,rs:8,black:3,bs:9,result:\"1:1\"},{g:\"A\",r:7,b:5,red:12,rs:7,black:25,bs:7,result:\"1:1\"},{g:\"A\",r:7,b:6,red:28,rs:7,black:6,bs:7,result:\"2:0\"},{g:\"A\",r:7,b:7,red:29,rs:7,black:18,bs:7,result:\"1:1\"},{g:\"A\",r:7,b:8,red:30,rs:7,black:26,bs:7,result:\"1:1\"},{g:\"A\",r:7,b:9,red:10,rs:6,black:15,bs:6,result:\"0:2\"},{g:\"A\",r:7,b:10,red:16,rs:6,black:20,bs:6,result:\"2:0\"},{g:\"A\",r:7,b:11,red:31,rs:6,black:33,bs:5,result:\"2:0\"},{g:\"A\",r:7,b:12,red:5,rs:5,black:2,bs:5,result:\"1:1\"},{g:\"A\",r:7,b:13,red:13,rs:5,black:1,bs:5,result:\"1:1\"},{g:\"A\",r:7,b:14,red:9,rs:5,black:24,bs:4,result:\"2:0\"},{g:\"A\",r:7,b:15,red:27,rs:4,black:14,bs:4,result:\"0:2\"},{g:\"A\",r:7,b:16,red:17,rs:4,black:23,bs:4,result:\"0:2\"},{g:\"A\",r:7,b:17,red:11,rs:2,black:22,bs:3,result:\"2:0\"},{g:\"A\",r:7,b:18,red:32,rs:2,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"A\",r:8,b:1,red:21,rs:13,black:34,bs:11,result:\"2:0\"},{g:\"A\",r:8,b:2,red:35,rs:11,black:4,bs:11,result:\"1:1\"},{g:\"A\",r:8,b:3,red:3,rs:10,black:28,bs:9,result:\"2:0\"},{g:\"A\",r:8,b:4,red:26,rs:8,black:19,bs:9,result:\"1:1\"},{g:\"A\",r:8,b:5,red:18,rs:8,black:30,bs:8,result:\"1:1\"},{g:\"A\",r:8,b:6,red:15,rs:8,black:31,bs:8,result:\"0:2\"},{g:\"A\",r:8,b:7,red:7,rs:8,black:29,bs:8,result:\"1:1\"},{g:\"A\",r:8,b:8,red:25,rs:8,black:16,bs:8,result:\"2:0\"},{g:\"A\",r:8,b:9,red:12,rs:8,black:8,bs:8,result:\"2:0\"},{g:\"A\",r:8,b:10,red:6,rs:7,black:9,bs:7,result:\"2:0\"},{g:\"A\",r:8,b:11,red:1,rs:6,black:5,bs:6,result:\"2:0\"},{g:\"A\",r:8,b:12,red:23,rs:6,black:13,bs:6,result:\"0:2\"},{g:\"A\",r:8,b:13,red:20,rs:6,black:10,bs:6,result:\"2:0\"},{g:\"A\",r:8,b:14,red:14,rs:6,black:2,bs:6,result:\"0:2\"},{g:\"A\",r:8,b:15,red:33,rs:5,black:17,bs:4,result:\"0:2\"},{g:\"A\",r:8,b:16,red:32,rs:4,black:24,bs:4,result:\"0:2\"},{g:\"A\",r:8,b:17,red:27,rs:4,black:11,bs:4,result:\"2:0\"},{g:\"A\",r:8,b:18,red:22,rs:3,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"A\",r:9,b:1,red:21,rs:15,black:3,bs:12,result:\"2:0\"},{g:\"A\",r:9,b:2,red:4,rs:12,black:34,bs:11,result:\"0:2\"},{g:\"A\",r:9,b:3,red:19,rs:10,black:35,bs:12,result:\"0:2\"},{g:\"A\",r:9,b:4,red:31,rs:10,black:12,bs:10,result:\"0:2\"},{g:\"A\",r:9,b:5,red:28,rs:9,black:25,bs:10,result:\"0:2\"},{g:\"A\",r:9,b:6,red:29,rs:9,black:6,bs:9,result:\"0:2\"},{g:\"A\",r:9,b:7,red:30,rs:9,black:7,bs:9,result:\"2:0\"},{g:\"A\",r:9,b:8,red:26,rs:9,black:18,bs:9,result:\"2:0\"},{g:\"A\",r:9,b:9,red:2,rs:8,black:15,bs:8,result:\"1:1\"},{g:\"A\",r:9,b:10,red:8,rs:8,black:1,bs:8,result:\"1:1\"},{g:\"A\",r:9,b:11,red:13,rs:8,black:20,bs:8,result:\"2:0\"},{g:\"A\",r:9,b:12,red:9,rs:7,black:16,bs:8,result:\"2:0\"},{g:\"A\",r:9,b:13,red:10,rs:6,black:27,bs:6,result:\"2:0\"},{g:\"A\",r:9,b:14,red:24,rs:6,black:14,bs:6,result:\"0:2\"},{g:\"A\",r:9,b:15,red:5,rs:6,black:23,bs:6,result:\"0:2\"},{g:\"A\",r:9,b:16,red:22,rs:5,black:33,bs:5,result:\"2:0\"},{g:\"A\",r:9,b:17,red:11,rs:4,black:32,bs:4,result:\"1:1\"},{g:\"A\",r:9,b:18,red:17,rs:6,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:1,b:1,red:1,rs:0,black:2,bs:0,result:\"2:0\"},{g:\"B\",r:1,b:2,red:4,rs:0,black:3,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:3,red:5,rs:0,black:6,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:4,red:8,rs:0,black:7,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:5,red:9,rs:0,black:10,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:6,red:12,rs:0,black:11,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:7,red:13,rs:0,black:14,bs:0,result:\"2:0\"},{g:\"B\",r:1,b:8,red:16,rs:0,black:15,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:9,red:17,rs:0,black:18,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:10,red:20,rs:0,black:19,bs:0,result:\"2:0\"},{g:\"B\",r:1,b:11,red:21,rs:0,black:22,bs:0,result:\"2:0\"},{g:\"B\",r:1,b:12,red:24,rs:0,black:23,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:13,red:25,rs:0,black:26,bs:0,result:\"2:0\"},{g:\"B\",r:1,b:14,red:28,rs:0,black:27,bs:0,result:\"2:0\"},{g:\"B\",r:1,b:15,red:29,rs:0,black:30,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:16,red:32,rs:0,black:31,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:17,red:33,rs:0,black:34,bs:0,result:\"1:1\"},{g:\"B\",r:1,b:18,red:36,rs:0,black:35,bs:0,result:\"0:2\"},{g:\"B\",r:1,b:19,red:37,rs:0,black:38,bs:0,result:\"2:0\"},{g:\"B\",r:1,b:20,red:39,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:2,b:1,red:39,rs:2,black:37,bs:2,result:\"0:2\"},{g:\"B\",r:2,b:2,red:35,rs:2,black:28,bs:2,result:\"0:2\"},{g:\"B\",r:2,b:3,red:31,rs:2,black:25,bs:2,result:\"0:2\"},{g:\"B\",r:2,b:4,red:30,rs:2,black:21,bs:2,result:\"0:2\"},{g:\"B\",r:2,b:5,red:23,rs:2,black:20,bs:2,result:\"2:0\"},{g:\"B\",r:2,b:6,red:18,rs:2,black:13,bs:2,result:\"0:2\"},{g:\"B\",r:2,b:7,red:15,rs:2,black:1,bs:2,result:\"2:0\"},{g:\"B\",r:2,b:8,red:10,rs:2,black:11,bs:2,result:\"1:1\"},{g:\"B\",r:2,b:9,red:6,rs:2,black:7,bs:2,result:\"1:1\"},{g:\"B\",r:2,b:10,red:3,rs:2,black:33,bs:1,result:\"1:1\"},{g:\"B\",r:2,b:11,red:34,rs:1,black:36,bs:0,result:\"2:0\"},{g:\"B\",r:2,b:12,red:38,rs:0,black:32,bs:0,result:\"2:0\"},{g:\"B\",r:2,b:13,red:27,rs:0,black:29,bs:0,result:\"2:0\"},{g:\"B\",r:2,b:14,red:26,rs:0,black:24,bs:0,result:\"2:0\"},{g:\"B\",r:2,b:15,red:22,rs:0,black:17,bs:0,result:\"2:0\"},{g:\"B\",r:2,b:16,red:19,rs:0,black:16,bs:0,result:\"2:0\"},{g:\"B\",r:2,b:17,red:14,rs:0,black:12,bs:0,result:\"0:2\"},{g:\"B\",r:2,b:18,red:2,rs:0,black:9,bs:0,result:\"2:0\"},{g:\"B\",r:2,b:19,red:5,rs:0,black:8,bs:0,result:\"0:2\"},{g:\"B\",r:2,b:20,red:4,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:3,b:1,red:13,rs:4,black:15,bs:4,result:\"0:2\"},{g:\"B\",r:3,b:2,red:21,rs:4,black:23,bs:4,result:\"1:1\"},{g:\"B\",r:3,b:3,red:25,rs:4,black:28,bs:4,result:\"2:0\"},{g:\"B\",r:3,b:4,red:37,rs:4,black:3,bs:3,result:\"0:2\"},{g:\"B\",r:3,b:5,red:7,rs:3,black:10,bs:3,result:\"0:2\"},{g:\"B\",r:3,b:6,red:11,rs:3,black:6,bs:3,result:\"2:0\"},{g:\"B\",r:3,b:7,red:1,rs:2,black:34,bs:3,result:\"1:1\"},{g:\"B\",r:3,b:8,red:8,rs:2,black:4,bs:2,result:\"0:2\"},{g:\"B\",r:3,b:9,red:12,rs:2,black:39,bs:2,result:\"2:0\"},{g:\"B\",r:3,b:10,red:20,rs:2,black:2,bs:2,result:\"1:1\"},{g:\"B\",r:3,b:11,red:33,rs:2,black:18,bs:2,result:\"2:0\"},{g:\"B\",r:3,b:12,red:19,rs:2,black:22,bs:2,result:\"2:0\"},{g:\"B\",r:3,b:13,red:26,rs:2,black:27,bs:2,result:\"0:2\"},{g:\"B\",r:3,b:14,red:30,rs:2,black:31,bs:2,result:\"2:0\"},{g:\"B\",r:3,b:15,red:35,rs:2,black:38,bs:2,result:\"0:2\"},{g:\"B\",r:3,b:16,red:9,rs:0,black:5,bs:0,result:\"1:1\"},{g:\"B\",r:3,b:17,red:16,rs:0,black:14,bs:0,result:\"-:+\"},{g:\"B\",r:3,b:18,red:17,rs:0,black:24,bs:0,result:\"2:0\"},{g:\"B\",r:3,b:19,red:29,rs:0,black:32,bs:0,result:\"2:0\"},{g:\"B\",r:3,b:20,red:36,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:4,b:1,red:15,rs:6,black:25,bs:6,result:\"1:1\"},{g:\"B\",r:4,b:2,red:10,rs:5,black:21,bs:5,result:\"2:0\"},{g:\"B\",r:4,b:3,red:23,rs:5,black:11,bs:5,result:\"0:2\"},{g:\"B\",r:4,b:4,red:3,rs:5,black:30,bs:4,result:\"0:2\"},{g:\"B\",r:4,b:5,red:28,rs:4,black:19,bs:4,result:\"0:2\"},{g:\"B\",r:4,b:6,red:38,rs:4,black:33,bs:4,result:\"2:0\"},{g:\"B\",r:4,b:7,red:34,rs:4,black:37,bs:4,result:\"2:0\"},{g:\"B\",r:4,b:8,red:27,rs:4,black:13,bs:4,result:\"1:1\"},{g:\"B\",r:4,b:9,red:4,rs:4,black:12,bs:4,result:\"2:0\"},{g:\"B\",r:4,b:10,red:6,rs:3,black:20,bs:3,result:\"1:1\"},{g:\"B\",r:4,b:11,red:7,rs:3,black:1,bs:3,result:\"1:1\"},{g:\"B\",r:4,b:12,red:2,rs:3,black:35,bs:2,result:\"2:0\"},{g:\"B\",r:4,b:13,red:31,rs:2,black:26,bs:2,result:\"2:0\"},{g:\"B\",r:4,b:14,red:22,rs:2,black:29,bs:2,result:\"0:2\"},{g:\"B\",r:4,b:15,red:18,rs:2,black:8,bs:2,result:\"2:0\"},{g:\"B\",r:4,b:16,red:14,rs:2,black:17,bs:2,result:\"2:0\"},{g:\"B\",r:4,b:17,red:36,rs:2,black:39,bs:2,result:\"1:1\"},{g:\"B\",r:4,b:18,red:32,rs:0,black:9,bs:1,result:\"0:2\"},{g:\"B\",r:4,b:19,red:24,rs:0,black:5,bs:1,result:\"0:2\"},{g:\"B\",r:4,b:20,red:16,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:5,b:1,red:11,rs:7,black:15,bs:7,result:\"0:2\"},{g:\"B\",r:5,b:2,red:25,rs:7,black:10,bs:7,result:\"2:0\"},{g:\"B\",r:5,b:3,red:19,rs:6,black:4,bs:6,result:\"0:2\"},{g:\"B\",r:5,b:4,red:30,rs:6,black:34,bs:6,result:\"0:2\"},{g:\"B\",r:5,b:5,red:13,rs:5,black:38,bs:6,result:\"2:0\"},{g:\"B\",r:5,b:6,red:21,rs:5,black:2,bs:5,result:\"2:0\"},{g:\"B\",r:5,b:7,red:23,rs:5,black:3,bs:5,result:\"2:0\"},{g:\"B\",r:5,b:8,red:1,rs:4,black:27,bs:5,result:\"2:0\"},{g:\"B\",r:5,b:9,red:12,rs:4,black:7,bs:4,result:\"0:2\"},{g:\"B\",r:5,b:10,red:29,rs:4,black:6,bs:4,result:\"0:2\"},{g:\"B\",r:5,b:11,red:20,rs:4,black:14,bs:4,result:\"1:1\"},{g:\"B\",r:5,b:12,red:37,rs:4,black:18,bs:4,result:\"2:0\"},{g:\"B\",r:5,b:13,red:33,rs:4,black:28,bs:4,result:\"0:2\"},{g:\"B\",r:5,b:14,red:39,rs:3,black:31,bs:4,result:\"2:0\"},{g:\"B\",r:5,b:15,red:5,rs:3,black:36,bs:3,result:\"0:2\"},{g:\"B\",r:5,b:16,red:9,rs:3,black:16,bs:2,result:\"0:2\"},{g:\"B\",r:5,b:17,red:8,rs:2,black:22,bs:2,result:\"0:2\"},{g:\"B\",r:5,b:18,red:17,rs:2,black:26,bs:2,result:\"0:2\"},{g:\"B\",r:5,b:19,red:35,rs:2,black:24,bs:0,result:\"2:0\"},{g:\"B\",r:5,b:20,red:32,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:6,b:1,red:34,rs:8,black:25,bs:9,result:\"0:2\"},{g:\"B\",r:6,b:2,red:15,rs:9,black:4,bs:8,result:\"2:0\"},{g:\"B\",r:6,b:3,red:10,rs:7,black:23,bs:7,result:\"2:0\"},{g:\"B\",r:6,b:4,red:11,rs:7,black:21,bs:7,result:\"2:0\"},{g:\"B\",r:6,b:5,red:28,rs:6,black:13,bs:7,result:\"2:0\"},{g:\"B\",r:6,b:6,red:38,rs:6,black:30,bs:6,result:\"0:2\"},{g:\"B\",r:6,b:7,red:7,rs:6,black:37,bs:6,result:\"0:2\"},{g:\"B\",r:6,b:8,red:6,rs:6,black:19,bs:6,result:\"2:0\"},{g:\"B\",r:6,b:9,red:14,rs:5,black:1,bs:6,result:\"2:0\"},{g:\"B\",r:6,b:10,red:27,rs:5,black:20,bs:5,result:\"2:0\"},{g:\"B\",r:6,b:11,red:3,rs:5,black:39,bs:5,result:\"1:1\"},{g:\"B\",r:6,b:12,red:2,rs:5,black:36,bs:5,result:\"2:0\"},{g:\"B\",r:6,b:13,red:26,rs:4,black:35,bs:4,result:\"0:2\"},{g:\"B\",r:6,b:14,red:31,rs:4,black:33,bs:4,result:\"0:2\"},{g:\"B\",r:6,b:15,red:18,rs:4,black:29,bs:4,result:\"0:2\"},{g:\"B\",r:6,b:16,red:22,rs:4,black:12,bs:4,result:\"0:2\"},{g:\"B\",r:6,b:17,red:16,rs:4,black:5,bs:3,result:\"2:0\"},{g:\"B\",r:6,b:18,red:17,rs:2,black:9,bs:3,result:\"2:0\"},{g:\"B\",r:6,b:19,red:32,rs:2,black:8,bs:2,result:\"1:1\"},{g:\"B\",r:6,b:20,red:24,rs:0,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:7,b:1,red:25,rs:11,black:11,bs:9,result:\"0:2\"},{g:\"B\",r:7,b:2,red:10,rs:9,black:15,bs:11,result:\"0:2\"},{g:\"B\",r:7,b:3,red:4,rs:8,black:34,bs:8,result:\"0:2\"},{g:\"B\",r:7,b:4,red:30,rs:8,black:6,bs:8,result:\"1:1\"},{g:\"B\",r:7,b:5,red:37,rs:8,black:28,bs:8,result:\"0:2\"},{g:\"B\",r:7,b:6,red:13,rs:7,black:2,bs:7,result:\"2:0\"},{g:\"B\",r:7,b:7,red:21,rs:7,black:14,bs:7,result:\"2:0\"},{g:\"B\",r:7,b:8,red:23,rs:7,black:27,bs:7,result:\"0:2\"},{g:\"B\",r:7,b:9,red:39,rs:6,black:16,bs:6,result:\"1:1\"},{g:\"B\",r:7,b:10,red:1,rs:6,black:3,bs:6,result:\"2:0\"},{g:\"B\",r:7,b:11,red:19,rs:6,black:7,bs:6,result:\"0:2\"},{g:\"B\",r:7,b:12,red:12,rs:6,black:38,bs:6,result:\"2:0\"},{g:\"B\",r:7,b:13,red:33,rs:6,black:29,bs:6,result:\"0:2\"},{g:\"B\",r:7,b:14,red:20,rs:5,black:35,bs:6,result:\"2:0\"},{g:\"B\",r:7,b:15,red:36,rs:5,black:17,bs:4,result:\"0:2\"},{g:\"B\",r:7,b:16,red:26,rs:4,black:18,bs:4,result:\"0:2\"},{g:\"B\",r:7,b:17,red:22,rs:4,black:31,bs:4,result:\"0:2\"},{g:\"B\",r:7,b:18,red:5,rs:3,black:32,bs:3,result:\"2:0\"},{g:\"B\",r:7,b:19,red:24,rs:2,black:8,bs:3,result:\"0:2\"},{g:\"B\",r:7,b:20,red:9,rs:3,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:8,b:1,red:15,rs:13,black:34,bs:10,result:\"1:1\"},{g:\"B\",r:8,b:2,red:11,rs:11,black:28,bs:10,result:\"2:0\"},{g:\"B\",r:8,b:3,red:27,rs:9,black:25,bs:11,result:\"2:0\"},{g:\"B\",r:8,b:4,red:6,rs:9,black:10,bs:9,result:\"2:0\"},{g:\"B\",r:8,b:5,red:13,rs:9,black:30,bs:9,result:\"0:2\"},{g:\"B\",r:8,b:6,red:29,rs:8,black:21,bs:9,result:\"0:2\"},{g:\"B\",r:8,b:7,red:7,rs:8,black:4,bs:8,result:\"0:2\"},{g:\"B\",r:8,b:8,red:12,rs:8,black:37,bs:8,result:\"2:0\"},{g:\"B\",r:8,b:9,red:16,rs:7,black:1,bs:8,result:\"1:1\"},{g:\"B\",r:8,b:10,red:14,rs:7,black:23,bs:7,result:\"0:2\"},{g:\"B\",r:8,b:11,red:2,rs:7,black:39,bs:7,result:\"1:1\"},{g:\"B\",r:8,b:12,red:38,rs:6,black:20,bs:7,result:\"1:1\"},{g:\"B\",r:8,b:13,red:35,rs:6,black:33,bs:6,result:\"0:2\"},{g:\"B\",r:8,b:14,red:31,rs:6,black:19,bs:6,result:\"2:0\"},{g:\"B\",r:8,b:15,red:3,rs:6,black:17,bs:6,result:\"2:0\"},{g:\"B\",r:8,b:16,red:18,rs:6,black:5,bs:5,result:\"0:2\"},{g:\"B\",r:8,b:17,red:8,rs:5,black:36,bs:5,result:\"0:2\"},{g:\"B\",r:8,b:18,red:9,rs:5,black:26,bs:4,result:\"0:2\"},{g:\"B\",r:8,b:19,red:32,rs:3,black:24,bs:2,result:\"2:0\"},{g:\"B\",r:8,b:20,red:22,rs:4,black:\"BYE\",bs:null,result:\"2:0\"},\n  {g:\"B\",r:9,b:1,red:21,rs:11,black:15,bs:14,result:\"0:2\"},{g:\"B\",r:9,b:2,red:34,rs:11,black:11,bs:13,result:\"1:1\"},{g:\"B\",r:9,b:3,red:25,rs:11,black:6,bs:11,result:\"0:2\"},{g:\"B\",r:9,b:4,red:30,rs:11,black:27,bs:11,result:\"0:2\"},{g:\"B\",r:9,b:5,red:28,rs:10,black:12,bs:10,result:\"2:0\"},{g:\"B\",r:9,b:6,red:4,rs:10,black:13,bs:9,result:\"2:0\"},{g:\"B\",r:9,b:7,red:1,rs:9,black:10,bs:9,result:\"2:0\"},{g:\"B\",r:9,b:8,red:23,rs:9,black:16,bs:8,result:\"1:1\"},{g:\"B\",r:9,b:9,red:39,rs:8,black:7,bs:8,result:\"1:1\"},{g:\"B\",r:9,b:10,red:33,rs:8,black:2,bs:8,result:\"0:2\"},{g:\"B\",r:9,b:11,red:20,rs:8,black:3,bs:8,result:\"1:1\"},{g:\"B\",r:9,b:12,red:37,rs:8,black:29,bs:8,result:\"2:0\"},{g:\"B\",r:9,b:13,red:36,rs:7,black:31,bs:8,result:\"0:2\"},{g:\"B\",r:9,b:14,red:5,rs:7,black:14,bs:7,result:\"2:0\"},{g:\"B\",r:9,b:15,red:17,rs:6,black:38,bs:7,result:\"0:2\"},{g:\"B\",r:9,b:16,red:26,rs:6,black:22,bs:6,result:\"0:2\"},{g:\"B\",r:9,b:17,red:19,rs:6,black:18,bs:6,result:\"2:0\"},{g:\"B\",r:9,b:18,red:35,rs:6,black:32,bs:5,result:\"0:2\"},{g:\"B\",r:9,b:19,red:24,rs:2,black:9,bs:5,result:\"0:2\"},{g:\"B\",r:9,b:20,red:8,rs:5,black:\"BYE\",bs:null,result:\"2:0\"}\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\n   SCHEDULE\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 *\/\nconst schedule = {\n  A: {\n    1: {date:\"2026-05-11\", day:\"\u661f\u671f\u4e00 Mon\", time:\"19:30\"},\n    2: {date:\"2026-05-12\", day:\"\u661f\u671f\u4e8c Tue\", time:\"19:30\"},\n    3: {date:\"2026-05-13\", day:\"\u661f\u671f\u4e09 Wed\", time:\"19:30\"},\n    4: {date:\"2026-05-14\", day:\"\u661f\u671f\u56db Thu\", time:\"19:30\"},\n    5: {date:\"2026-05-15\", day:\"\u661f\u671f\u4e94 Fri\", time:\"19:30\"},\n    6: {date:\"2026-05-16\", day:\"\u661f\u671f\u516d Sat\", time:\"14:30\"},\n    7: {date:\"2026-05-16\", day:\"\u661f\u671f\u516d Sat\", time:\"18:30\"},\n    8: {date:\"2026-05-17\", day:\"\u661f\u671f\u65e5 Sun\", time:\"14:30\"},\n    9: {date:\"2026-05-17\", day:\"\u661f\u671f\u65e5 Sun\", time:\"18:30\"}\n  },\n  B: {\n    1: {date:\"2026-05-11\", day:\"\u661f\u671f\u4e00 Mon\", time:\"19:30\"},\n    2: {date:\"2026-05-12\", day:\"\u661f\u671f\u4e8c Tue\", time:\"19:30\"},\n    3: {date:\"2026-05-13\", day:\"\u661f\u671f\u4e09 Wed\", time:\"19:30\"},\n    4: {date:\"2026-05-14\", day:\"\u661f\u671f\u56db Thu\", time:\"19:30\"},\n    5: {date:\"2026-05-15\", day:\"\u661f\u671f\u4e94 Fri\", time:\"19:30\"},\n    6: {date:\"2026-05-16\", day:\"\u661f\u671f\u516d Sat\", time:\"14:30\"},\n    7: {date:\"2026-05-16\", day:\"\u661f\u671f\u516d Sat\", time:\"18:30\"},\n    8: {date:\"2026-05-17\", day:\"\u661f\u671f\u65e5 Sun\", time:\"14:30\"},\n    9: {date:\"2026-05-17\", day:\"\u661f\u671f\u65e5 Sun\", time:\"18:30\"}\n  }\n};\nlet cg = \"A\", cv = \"standings\", cr = 1;\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\n   HELPERS\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 *\/\nfunction pn(g, no){ return players[g][no] || \"?\"; }\n\nfunction rClass(res){\n  if(!res) return \"pe\";\n  if(res===\"2:0\"||res===\"+:-\") return \"rw\";\n  if(res===\"0:2\"||res===\"-:+\") return \"bw\";\n  if(res===\"1:1\") return \"dr\";\n  return \"\";\n}\n\nfunction promoTag(notes, foul){\n  let t = \"\";\n  if(notes.includes(\"\u4e59\u7ea7\u5e8f\u5206\"))  t += `<span class=\"promo-tag pt-up\">${notes}<\/span>`;\n  else if(notes.includes(\"\u5927\u5e08\"))  t += `<span class=\"promo-tag pt-master\">${notes}<\/span>`;\n  else if(notes.includes(\"2\u7b49\u7ea7\")) t += `<span class=\"promo-tag pt-g2\">${notes}<\/span>`;\n  else if(notes.includes(\"1\u7b49\u7ea7\")) t += `<span class=\"promo-tag pt-g1\">${notes}<\/span>`;\n  if(foul) t += `<span class=\"promo-tag pt-foul\">\u72af\u89c4\u00d7${foul}<\/span>`;\n  return t;\n}\n\nfunction pCell(g, no, sc, rev=false){\n  if(no===\"BYE\") return `<span class=\"bye-cell\">\u2014 \u8f6e\u7a7a BYE \u2014<\/span>`;\n  const badge = sc!==null ? `<span class=\"sc\">${sc}<\/span>` : \"\";\n  const dir = rev ? \" rev\" : \"\";\n  return `<div class=\"pcell${dir}\">${badge}<span class=\"pname\">${pn(g,no)}<\/span><span class=\"pno\">(${no})<\/span><\/div>`;\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\n   PLAYER MATCH HISTORY\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 *\/\nfunction getPlayerHistory(g, no){\n  const rows = [];\n  pairings.filter(p => p.g === g).forEach(p => {\n    let side = null, opp = null, res = null, pts = 0;\n    if(p.red === no){ side = \"red\"; opp = p.black; }\n    else if(p.black === no){ side = \"black\"; opp = p.red; }\n    else return;\n    if(!p.result) return;\n    const r = p.result;\n    if(side===\"red\"){\n      if(r===\"2:0\"||r===\"+:-\"){ res=\"W\"; pts=2; }\n      else if(r===\"0:2\"||r===\"-:+\"){ res=\"L\"; pts=0; }\n      else if(r===\"1:1\"){ res=\"D\"; pts=1; }\n    } else {\n      if(r===\"0:2\"||r===\"-:+\"){ res=\"W\"; pts=2; }\n      else if(r===\"2:0\"||r===\"+:-\"){ res=\"L\"; pts=0; }\n      else if(r===\"1:1\"){ res=\"D\"; pts=1; }\n    }\n    rows.push({ r: p.r, side, opp, res, pts });\n  });\n  rows.sort((a,b) => a.r - b.r);\n  return rows;\n}\n\nfunction openModal(g, no){\n  const name = pn(g, no);\n  const stand = standings[g].find(s => s[1] === no);\n  const hist = getPlayerHistory(g, no);\n  const totalPts = stand ? stand[2] : \"\u2014\";\n  const sos = stand ? stand[3] : \"\u2014\";\n  const rank = stand ? stand[0] : \"\u2014\";\n  const wins = hist.filter(h=>h.res===\"W\").length;\n  const draws = hist.filter(h=>h.res===\"D\").length;\n  const losses = hist.filter(h=>h.res===\"L\").length;\n\n  document.getElementById(\"modalTitle\").textContent = `${name} (${no})`;\n  document.getElementById(\"modalSub\").textContent = `\u7b2c65\u5c4a\u5b59\u6587\u5e7f\u676f \u00b7 ${g===\"A\"?\"\u516c\u5f00A\u7ec4\":\"B\u7ec4\"} \u00b7 \u540d\u6b21 ${rank}`;\n\n  document.getElementById(\"modalBody\").innerHTML = `\n    <div class=\"modal-stat-row\">\n      <div class=\"modal-stat\"><dt>\u79ef\u5206<\/dt><dd>${totalPts}<\/dd><\/div>\n      <div class=\"modal-stat\"><dt>\u5bf9\u624b\u5206<\/dt><dd>${sos}<\/dd><\/div>\n      <div class=\"modal-stat\"><dt>\u80dc<\/dt><dd style=\"color:var(--green)\">${wins}<\/dd><\/div>\n      <div class=\"modal-stat\"><dt>\u548c<\/dt><dd style=\"color:#a17422\">${draws}<\/dd><\/div>\n      <div class=\"modal-stat\"><dt>\u8d1f<\/dt><dd style=\"color:#c0392b\">${losses}<\/dd><\/div>\n    <\/div>\n    <div class=\"modal-rounds-head\">\n      <span>\u8f6e<\/span><span>\u5bf9\u624b<\/span><span>\u6267\u8272<\/span><span>\u7ed3\u679c<\/span><span>\u5bf9\u624b\u603b\u5206<\/span>\n    <\/div>\n    ${hist.map(h => {\n      const oppName = h.opp===\"BYE\" ? \"\u8f6e\u7a7a\" : `${pn(g, h.opp)} (${h.opp})`;\n      const sideHtml = h.opp===\"BYE\"\n        ? `<span class=\"rnd-side\" style=\"background:#f0f0f0;color:#999\">\u8f6e\u7a7a<\/span>`\n        : h.side===\"red\"\n          ? `<span class=\"rnd-side side-red\">\u7ea2\u65b9<\/span>`\n          : `<span class=\"rnd-side side-blk\">\u9ed1\u65b9<\/span>`;\n      const resCls = h.res===\"W\"?\"res-w\":h.res===\"D\"?\"res-d\":\"res-l\";\n      const resLabel = h.res===\"W\"?\"\u80dc\":h.res===\"D\"?\"\u548c\":\"\u8d1f\";\n      const oppFinalPts = h.opp===\"BYE\" ? \"\u2014\"\n        : (standings[g].find(s => s[1]===h.opp)?.[2] ?? \"\u2014\");\n      return `<div class=\"modal-round-row\">\n        <span class=\"rnd-num\">R${h.r}<\/span>\n        <span style=\"font-weight:600\">${oppName}<\/span>\n        <span>${sideHtml}<\/span>\n        <span class=\"rnd-res ${resCls}\">${resLabel}<\/span>\n        <span class=\"rnd-pts\" style=\"text-align:center;font-family:var(--mono);font-size:13px;color:#555;font-weight:600\">${oppFinalPts}<\/span>\n      <\/div>`;\n    }).join(\"\")}`;\n\n  document.getElementById(\"modalOverlay\").classList.add(\"open\");\n  document.body.style.overflow = \"hidden\";\n}\n\nfunction closeModal(e){\n  if(e.target === document.getElementById(\"modalOverlay\")) closeModalDirect();\n}\nfunction closeModalDirect(){\n  document.getElementById(\"modalOverlay\").classList.remove(\"open\");\n  document.body.style.overflow = \"\";\n}\ndocument.addEventListener(\"keydown\", e => { if(e.key===\"Escape\") closeModalDirect(); });\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\n   RENDER\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 *\/\nfunction switchGroup(g){\n  cg = g; extraVisible = false;\n  document.querySelectorAll(\".g-btn\").forEach((b,i) => b.classList.toggle(\"active\", (i===0&&g===\"A\")||(i===1&&g===\"B\")));\n  render();\n}\nfunction switchView(v){\n  cv = v; extraVisible = false;\n  document.querySelectorAll(\".v-btn\").forEach((b,i) => b.classList.toggle(\"active\", (i===0&&v===\"standings\")||(i===1&&v===\"pairings\")));\n  render();\n}\nfunction switchRound(r){ cr=r; render(); }\n\nfunction render(){\n  const pills = document.getElementById(\"roundPills\");\n  if(cv===\"standings\"){\n    pills.style.display=\"none\";\n    document.getElementById(\"cardTitle\").textContent = `${cg===\"A\"?\"\u516c\u5f00A\u7ec4\":\"B\u7ec4\"} \u00b7 \u6700\u7ec8\u540d\u6b21`;\n    document.getElementById(\"cardNote\").textContent = \"\u70b9\u51fb\u59d3\u540d\u67e5\u770b\u4e2a\u4eba\u6210\u7ee9 \u00b7 Click name for match history\";\n    renderStandings();\n  } else {\n    pills.style.display=\"flex\";\n    pills.innerHTML = Array.from({length:9},(_,i)=>i+1).map(r =>\n      `<button class=\"r-btn${r===cr?\" active\":\"\"}\" onclick=\"switchRound(${r})\">\u7b2c${r}\u8f6e<\/button>`\n    ).join(\"\");\n    const sch = schedule[cg][cr];\n    document.getElementById(\"cardTitle\").textContent = `${cg===\"A\"?\"\u516c\u5f00A\u7ec4\":\"B\u7ec4\"} \u00b7 \u7b2c${cr}\u8f6e`;\n    const list = pairings.filter(p=>p.g===cg&&p.r===cr);\n    document.getElementById(\"cardNote\").textContent = `${list.filter(p=>p.result).length}\/${list.length} \u5c40`;\n    renderPairings(list, sch);\n  }\n}\n\nfunction renderStandings(){\n  const data = standings[cg];\n  document.getElementById(\"cardBody\").innerHTML = `\n    <div class=\"expand-row\">\n      <button class=\"expand-btn\" id=\"expandBtn\" onclick=\"toggleExtra()\">\uff0b \u663e\u793a\u8be6\u7ec6\u6570\u636e<\/button>\n    <\/div>\n    <table>\n      <thead><tr>\n        <th class=\"c\">\u540d\u6b21<\/th>\n        <th>\u59d3\u540d<\/th>\n        <th class=\"c\">\u79ef\u5206<\/th>\n        <th class=\"c col-extra\">\u5bf9\u624b\u5206<\/th>\n        <th class=\"c col-extra\">\u76f4\u80dc<\/th>\n        <th class=\"c col-extra\">\u80dc\u5c40<\/th>\n        <th class=\"c col-extra\">\u540e\u624b\u80dc\/\u5c40<\/th>\n        <th class=\"c col-extra\">\u6700\u9ad8\u5bf9\u624b<\/th>\n        <th>\u5907\u6ce8<\/th>\n      <\/tr><\/thead>\n      <tbody>${data.map(([rank,no,pts,sos,dw,wins,bw,bg,bo,foul,notes]) => {\n        const cls = rank===1?\"r1\":rank===2?\"r2\":rank===3?\"r3\":\"\";\n        const dwStr = dw!==null ? `<span class=\"dw-tag\">${dw}<\/span>` : `<span style=\"color:var(--line)\">\u2014<\/span>`;\n        return `<tr class=\"${cls}\">\n          <td class=\"rnk\">${rank}<\/td>\n          <td><button class=\"name-btn\" onclick=\"openModal('${cg}',${no})\">${pn(cg,no)}<\/button> <span class=\"pno\">(${no})<\/span><\/td>\n          <td class=\"pts-cell\">${pts}<\/td>\n          <td class=\"sos-cell col-extra\">${sos}<\/td>\n          <td class=\"sub-c col-extra\">${dwStr}<\/td>\n          <td class=\"sub-c col-extra\">${wins}<\/td>\n          <td class=\"sub-c col-extra\">${bw}\/${bg}<\/td>\n          <td class=\"sub-c col-extra\">${bo}<\/td>\n          <td>${promoTag(notes,foul)}<\/td>\n        <\/tr>`;\n      }).join(\"\")}<\/tbody>\n    <\/table>`;\n}\n\nlet extraVisible = false;\nfunction toggleExtra(){\n  extraVisible = !extraVisible;\n  document.querySelectorAll(\".col-extra\").forEach(el => {\n    el.style.display = extraVisible ? \"table-cell\" : \"\";\n  });\n  const btn = document.getElementById(\"expandBtn\");\n  if(btn){\n    btn.textContent = extraVisible ? \"\uff0d \u9690\u85cf\u8be6\u7ec6\u6570\u636e\" : \"\uff0b \u663e\u793a\u8be6\u7ec6\u6570\u636e\";\n    btn.classList.toggle(\"open\", extraVisible);\n  }\n}\n\nfunction renderPairings(list, sch){\n  list = list.sort((a,b)=>a.b-b.b);\n  const dateLine = sch\n    ? `<div class=\"round-lbl\">${sch.date} &nbsp;\u00b7&nbsp; ${sch.day} &nbsp;\u00b7&nbsp; ${sch.time} &nbsp;\u00b7&nbsp; ${list.filter(p=>p.result).length}\/${list.length} \u5c40<\/div>`\n    : `<div class=\"round-lbl\">${list.filter(p=>p.result).length}\/${list.length} \u5c40<\/div>`;\n  document.getElementById(\"cardBody\").innerHTML = dateLine + `\n    <table class=\"pair-table\">\n      <thead><tr>\n        <th class=\"c\" style=\"width:44px\">\u53f0<\/th>\n        <th class=\"r\" style=\"width:42%\">\u7ea2\u65b9 Red<\/th>\n        <th class=\"c\" style=\"width:80px\">\u7ed3\u679c<\/th>\n        <th style=\"width:42%\">\u9ed1\u65b9 Black<\/th>\n      <\/tr><\/thead>\n      <tbody>${list.map(p=>`\n        <tr class=\"${rClass(p.result)}\">\n          <td class=\"bnum\">${p.b}<\/td>\n          <td class=\"red-col\">${pCell(p.g,p.red,p.rs,true)}<\/td>\n          <td class=\"res-col\">${p.result||\"\u2014\"}<\/td>\n          <td class=\"blk-col\">${pCell(p.g,p.black,p.bs,false)}<\/td>\n        <\/tr>`).join(\"\")}\n      <\/tbody>\n    <\/table>`;\n}\n\nrender();\n<\/script>\n<\/body>\n<\/html>\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\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<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c65\u5c4a\u5b59\u6587\u5e7f\u676f\u5168\u56fd\u8c61\u68cb\u4e2a\u4eba\u9526\u6807\u8d5b \u2014 \u65b0\u52a0\u5761\u8c61\u68cb\u603b\u4f1a CONCLUDED \u00b7 2026 \u7b2c65\u5c4a\u5b59\u6587\u5e7f\u676f\u5168\u56fd\u8c61\u68cb\u4e2a\u4eba\u9526\u6807\u8d5b 65th Sun Wenguang Cup National Xiangqi Individual Championship \u65e5\u671f 2026\u5e745\u670811\u201417\u65e5 \u5730\u70b9 \u65b0\u52a0\u5761 \u88c1\u5224\u957f \u6b27\u6728\u987a \u7f16\u6392\u957f \u6b27\u6728\u987a \u53c2\u8d5b A\u7ec4 35\u4eba \u00b7 B\u7ec4 39\u4eba \u8f6e\u6b21 9\u8f6e \u745e\u58eb\u5236 \u516c\u5f00A\u7ec4 Group A B\u7ec4 Group B \ud83c\udfc6 \u6700\u7ec8\u540d\u6b21 \ud83d\udccb \u5404\u8f6e\u5bf9\u9635 \u2715<\/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-8229","post","type-post","status-publish","format-standard","hentry","category-tournament-news"],"_links":{"self":[{"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8229","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=8229"}],"version-history":[{"count":69,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8229\/revisions"}],"predecessor-version":[{"id":8325,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8229\/revisions\/8325"}],"wp:attachment":[{"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/media?parent=8229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/categories?post=8229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/tags?post=8229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}