{"id":8332,"date":"2026-07-04T21:23:50","date_gmt":"2026-07-04T13:23:50","guid":{"rendered":"https:\/\/www.xiangqi.sg\/wordpress\/?p=8332"},"modified":"2026-07-04T22:50:16","modified_gmt":"2026-07-04T14:50:16","slug":"kg26","status":"publish","type":"post","link":"https:\/\/www.xiangqi.sg\/wordpress\/2026\/07\/04\/kg26\/","title":{"rendered":"\u666f\u4e07\u5cb8\u8c61\u68cb\u8d5b 2026"},"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>2026\u5e74\u666f\u4e07\u5cb8\u8c61\u68cb\u9526\u6807\u8d5b \u00b7 Kembangan Xiang Qi Tournament 2026<\/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;--gold:#d9a441;--cream:#fff8e8;--bg:#fffdf8;--line:#e7d8bd;\n  --text:#333;--muted:#888;--green:#149954;--mono:'DM Mono',monospace;--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.hero{background:var(--cream);border-bottom:3px solid var(--gold);padding:36px 24px 28px;text-align:center}\n.hero-badge{display:inline-block;background:var(--red);color:#fff;font-family:var(--mono);font-size:10px;letter-spacing:.12em;padding:3px 10px;border-radius:2px;margin-bottom:14px}\n.hero h1{font-family:var(--zh);font-size:clamp(20px,4vw,34px);font-weight:700;color:var(--red);line-height:1.3;margin-bottom:4px}\n.hero-en{color:var(--muted);font-size:14px;margin-bottom:8px}\n.hero-note{color:var(--muted);font-size:12px;margin-bottom:20px}\n.hero-note b{color:var(--red);font-weight:600}\n.hero-meta{display:flex;flex-wrap:wrap;gap:0;justify-content:center;border-top:1px solid var(--line);padding-top:16px}\n.hero-meta-item{padding:4px 18px;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}\n.wrap{max-width:1100px;margin:0 auto;padding:20px 14px 60px}\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:20px}\n.card-head{background:var(--cream);padding:14px 20px;border-bottom:2px solid var(--gold);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}\n.card-head h2{font-size:17px;font-weight:700;color:var(--red)}\n.card-note{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.06em}\n.group-row{display:flex;justify-content:center;margin-top:16px}\n.view-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-top:14px}\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.g-btn.active{background:var(--gold);color:#fff}\n.round-pills{display:flex;gap:6px;flex-wrap:wrap}\n.r-btn{font-family:var(--mono);font-size:12px;padding:5px 13px;border-radius:99px;border:1px solid var(--line);background:#fff;color:var(--muted);cursor:pointer;transition:all .15s}\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\/* table *\/\ntable{width:100%;border-collapse:collapse;font-size:14px}\nth{background:var(--cream);color:var(--red);text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);font-size:12px;font-weight:600}\nth.c{text-align:center}th.r{text-align:right}\ntd{padding:10px 10px;border-bottom:1px solid var(--line);vertical-align:middle}\ntbody tr:last-child td{border-bottom:none}\ntbody tr:hover{background:var(--cream)}\n\/* pairings *\/\n.pair-table{table-layout:fixed}\ntd.bnum{width:40px;text-align:center;font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:600}\ntd.red-col{width:42%;text-align:right}\ntd.blk-col{width:42%}\ntd.res-col{width:76px;text-align:center;font-family:var(--mono);font-size:16px;font-weight:800}\n.pcell{display:flex;align-items:center;gap:8px}\n.pcell.rev{flex-direction:row-reverse}\n.sc{display:inline-flex;align-items:center;justify-content:center;background:var(--red);color:#fff;font-family:var(--mono);font-size:10px;font-weight:700;border-radius:99px;min-width:24px;height:24px;padding:0 5px;flex-shrink:0}\n.pname{font-weight:700;font-size:13px}\n.pno{font-family:var(--mono);font-size:10px;color:var(--muted)}\n.bye-cell{color:var(--muted);font-style:italic;font-size:13px}\ntr.rw td.res-col{color:var(--green)}tr.bw td.res-col{color:#c0392b}tr.dr td.res-col{color:#a17422}\ntr.rw{background:rgba(20,153,84,.04)}tr.bw{background:rgba(192,57,43,.04)}tr.dr{background:rgba(161,116,34,.06)}\n.round-lbl{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:12px 12px 5px}\n\/* standings *\/\ntd.rnk{width:38px;text-align:center;font-family:var(--mono);font-size:15px;font-weight:700;color:var(--muted)}\ntr.r1 td.rnk{color:var(--gold);font-size:19px}tr.r2 td.rnk,tr.r3 td.rnk{color:#888;font-size:17px}\ntr.r1 td{font-weight:700}\ntr.wd td{color:#a89e8b}\ntd.pts-cell{width:52px;text-align:center;font-family:var(--mono);font-size:17px;font-weight:800;color:var(--red)}\ntd.sos-cell{width:64px;text-align:center;font-family:var(--mono);font-size:13px;color:#666}\ntd.sub-c{width:58px;text-align:center;font-family:var(--mono);font-size:12px;color:#888}\n.name-btn{background:none;border:none;cursor:pointer;text-align:left;padding:0;font-family:var(--zh);font-size:14px;font-weight:700;color:var(--text);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;transition:color .15s}\n.name-btn:hover{color:var(--red)}\n.expand-row{display:none;padding:10px 14px 6px;border-bottom:1px solid var(--line)}\n.expand-btn{font-family:var(--mono);font-size:11px;letter-spacing:.06em;border:1px solid var(--line);background:#fff;border-radius:99px;padding:5px 14px;cursor:pointer;color:var(--muted);transition:all .15s}\n.expand-btn.open{background:var(--red);color:#fff;border-color:var(--red)}\n.col-extra{display:table-cell}\n\/* modal *\/\n.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:200;align-items:center;justify-content:center;padding:16px}\n.modal-overlay.open{display:flex}\n.modal{background:#fff;border-radius:16px;max-width:560px;width:100%;max-height:88vh;overflow-y:auto;box-shadow:0 24px 60px rgba(0,0,0,.25)}\n.modal-head{background:var(--cream);padding:16px 20px;border-bottom:2px solid var(--gold);display:flex;align-items:flex-start;justify-content:space-between;gap:12px;position:sticky;top:0}\n.modal-title{font-size:17px;font-weight:700;color:var(--red)}\n.modal-sub{font-size:12px;color:var(--muted);margin-top:2px}\n.modal-close{background:none;border:none;cursor:pointer;font-size:20px;color:var(--muted);line-height:1;padding:2px 6px;border-radius:4px;flex-shrink:0}\n.modal-close:hover{background:var(--line)}\n.modal-stat-row{display:flex;border-bottom:1px solid var(--line)}\n.modal-stat{flex:1;text-align:center;padding:12px 6px;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{display:grid;grid-template-columns:32px 1fr 1fr 54px 60px;padding:8px 16px;background:var(--cream);font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line)}\n.modal-round-row{display:grid;grid-template-columns:32px 1fr 1fr 54px 60px;padding:10px 16px;border-bottom:1px solid var(--line);align-items:center;font-size:13px}\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{font-family:var(--mono);font-size:10px;padding:2px 7px;border-radius:99px;font-weight:600}\n.side-red{background:#fce8e8;color:#c0392b}.side-blk{background:#e8edf8;color:#1d4ed8}\n.rnd-res{font-family:var(--mono);font-size:14px;font-weight:800;text-align:center}\n.rnd-opp{font-family:var(--mono);font-size:13px;font-weight:700;text-align:center;color:#555}\n.res-w{color:var(--green)}.res-d{color:#a17422}.res-l{color:#c0392b}\n@media(max-width:640px){\n  .hero{padding:22px 12px 18px}.hero h1{font-size:18px}\n  .hero-meta-item{padding:4px 10px;font-size:12px}\n  .wrap{padding:12px 8px 40px}\n  .view-row{gap:8px}.v-btn{font-size:12px;padding:6px 12px}.r-btn{font-size:11px;padding:4px 10px}\n  th,td{padding:8px 6px;font-size:12px}\n  td.bnum{width:30px;font-size:10px}td.res-col{width:56px;font-size:13px}\n  .pname{font-size:12px}.sc{min-width:20px;height:20px;font-size:9px}\n  .round-lbl{font-size:10px;padding:10px 8px 4px}\n  .col-extra{display:none}.expand-row{display:block}\n  td.rnk{width:30px;font-size:13px}td.pts-cell{width:40px;font-size:15px}\n  td.sos-cell{width:52px;font-size:11px}td.sub-c{width:46px;font-size:10px}\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-rounds-head,.modal-round-row{grid-template-columns:28px 1fr 44px 30px 40px;padding:8px 10px;font-size:11px}\n}\n<\/style>\n<\/head>\n<body>\n\n<div class=\"hero\">\n  <div class=\"hero-badge\">CONCLUDED \u00b7 2026<\/div>\n  <h1>2026\u5e74\u666f\u4e07\u5cb8\u8c61\u68cb\u9526\u6807\u8d5b<\/h1>\n  <div class=\"hero-en\">Kembangan Xiang Qi Tournament 2026<\/div>\n  <div class=\"hero-note\">U18\u7ec4\u56e0\u62a5\u540d\u4eba\u6570\u4e0d\u8db3\uff0c\u5e76\u5165<b>\u516c\u5f00\u7ec4<\/b>\u8fdb\u884c\u6bd4\u8d5b<\/div>\n  <div class=\"hero-meta\">\n    <div class=\"hero-meta-item\"><dt>\u65e5\u671f Date<\/dt><dd>2026\u5e747\u67084\u65e5<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u5730\u70b9 Venue<\/dt><dd>Kampong Ubi CC<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u88c1\u5224\u957f Arbiter<\/dt><dd>\u7fc1\u6587\u9f99<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u7f16\u6392\u957f Pairing<\/dt><dd>\u5218\u80b2\u94ed<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u53c2\u8d5b Players<\/dt><dd>58\u4eba<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u8f6e\u6b21 Rounds<\/dt><dd>7\u8f6e \u79ef\u5206\u7f16\u6392<\/dd><\/div>\n    <div class=\"hero-meta-item\"><dt>\u65f6\u9650 Time<\/dt><dd>20\u5206\u949f+5\u79d2<\/dd><\/div>\n  <\/div>\n<\/div>\n\n<div class=\"wrap\">\n  <div class=\"group-row\">\n    <div class=\"view-toggle\" id=\"groupToggle\">\n      <button class=\"v-btn g-btn active\" onclick=\"switchGroup('Open')\">\u516c\u5f00\u7ec4<\/button>\n      <button class=\"v-btn g-btn\" onclick=\"switchGroup('U14')\">U14\u7ec4<\/button>\n      <button class=\"v-btn g-btn\" onclick=\"switchGroup('U10')\">U10\u7ec4<\/button>\n    <\/div>\n  <\/div>\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  <div class=\"card\" id=\"mainCard\">\n    <div class=\"card-head\"><h2 id=\"cardTitle\"><\/h2><div class=\"card-note\" id=\"cardNote\"><\/div><\/div>\n    <div id=\"cardBody\"><\/div>\n  <\/div>\n<\/div>\n\n<div class=\"modal-overlay\" id=\"modalOverlay\" onclick=\"closeModal(event)\">\n  <div class=\"modal\" id=\"modal\">\n    <div class=\"modal-head\">\n      <div><div class=\"modal-title\" id=\"modalTitle\"><\/div><div class=\"modal-sub\" id=\"modalSub\"><\/div><\/div>\n      <button class=\"modal-close\" onclick=\"closeModalDirect()\">\u2715<\/button>\n    <\/div>\n    <div id=\"modalBody\"><\/div>\n  <\/div>\n<\/div>\n\n<script>\nconst DATA = {\nOpen: { label:\"\u516c\u5f00\u7ec4\", names: {1:\"SOONG Soon Fah\",2:\"NGOI Chi Wai\",3:\"TAY Cheng See\",4:\"Samsudin ALAMSJAH\",5:\"WONG Liang Shen\",6:\"KEH Chee Keong\",7:\"CHAN Fook Chuen\",8:\"Fiona TAN Min Fang\",9:\"CHUA Chun Kiat\",10:\"Jasper ANDERSON Albert\",11:\"Denson KWEK\",12:\"GOH Test Soon\",13:\"TEO Yu Yong \",14:\"YEO Yuen Kong\",15:\"Benny LEE Hua Heng\",16:\"DU Heng\",17:\"TIN wee Kwok\",18:\"Alvin TAN\",19:\"TAN Jing Rui\",20:\"LEE Wei Jun\",21:\"CHOO Yong Kiat Allen\",22:\"WONG Kang Quan Jovan\"}, standings: [\n  [1,16,12,60,null,6,3,4,\"\",\"\"],\n  [2,22,11,56,null,5,2,3,\"\",\"\"],\n  [3,3,10,59,null,4,2,4,\"\",\"\"],\n  [4,21,9,60,null,3,2,3,\"\",\"\"],\n  [5,7,9,56,\"1\",3,2,4,\"16-1\",\"\"],\n  [6,9,9,56,\"1\",3,2,4,\"11-2\",\"\"],\n  [7,11,9,55,null,4,2,3,\"\",\"\"],\n  [8,1,8,60,null,3,1,3,\"\",\"\"],\n  [9,19,8,48,null,3,2,4,\"\",\"\"],\n  [10,14,8,45,null,4,3,4,\"\",\"\"],\n  [11,18,7,59,null,3,3,4,\"\",\"\"],\n  [12,17,7,53,null,3,1,3,\"\",\"\"],\n  [13,8,7,49,null,3,1,3,\"\",\"\"],\n  [14,2,6,50,null,3,2,3,\"\",\"\"],\n  [15,20,6,46,null,3,1,3,\"\",\"\"],\n  [16,15,6,44,null,3,2,4,\"\",\"\"],\n  [17,4,6,37,null,3,1,3,\"\",\"\"],\n  [18,12,4,43,null,2,1,3,\"\",\"\"],\n  [19,5,4,38,null,2,0,3,\"\",\"\"],\n  [20,10,4,34,null,2,0,3,\"9-7\",\"\"],\n  [21,6,4,34,null,2,0,3,\"17-9\",\"\"],\n  [\"\u2014\",13,\"\u2014\",\"\u2014\",null,\"\u2014\",\"\u2014\",\"\u2014\",\"\",\"\u9000\u8d5b\"]\n], pairings: [\n  {r:1,b:1,red:1,rs:0,black:2,bs:0,result:\"2:0\"},\n  {r:1,b:2,red:4,rs:0,black:3,bs:0,result:\"0:2\"},\n  {r:1,b:3,red:5,rs:0,black:6,bs:0,result:\"2:0\"},\n  {r:1,b:4,red:8,rs:0,black:7,bs:0,result:\"1:1\"},\n  {r:1,b:5,red:9,rs:0,black:10,bs:0,result:\"2:0\"},\n  {r:1,b:6,red:12,rs:0,black:11,bs:0,result:\"0:2\"},\n  {r:1,b:7,red:13,rs:0,black:14,bs:0,result:\"0:2\"},\n  {r:1,b:8,red:16,rs:0,black:15,bs:0,result:\"2:0\"},\n  {r:1,b:9,red:17,rs:0,black:18,bs:0,result:\"0:2\"},\n  {r:1,b:10,red:20,rs:0,black:19,bs:0,result:\"0:2\"},\n  {r:1,b:11,red:21,rs:0,black:22,bs:0,result:\"2:0\"},\n  {r:2,b:1,red:3,rs:2,black:1,bs:2,result:\"2:0\"},\n  {r:2,b:2,red:11,rs:2,black:5,bs:2,result:\"2:0\"},\n  {r:2,b:3,red:14,rs:2,black:9,bs:2,result:\"0:2\"},\n  {r:2,b:4,red:18,rs:2,black:16,bs:2,result:\"0:2\"},\n  {r:2,b:5,red:19,rs:2,black:21,bs:2,result:\"1:1\"},\n  {r:2,b:6,red:7,rs:1,black:20,bs:0,result:\"2:0\"},\n  {r:2,b:7,red:22,rs:0,black:8,bs:1,result:\"2:0\"},\n  {r:2,b:8,red:2,rs:0,black:4,bs:0,result:\"2:0\"},\n  {r:2,b:9,red:6,rs:0,black:12,bs:0,result:\"2:0\"},\n  {r:2,b:10,red:10,rs:0,black:13,bs:0,result:\"2:0\"},\n  {r:2,b:11,red:15,rs:0,black:17,bs:0,result:\"0:2\"},\n  {r:3,b:1,red:9,rs:4,black:3,bs:4,result:\"1:1\"},\n  {r:3,b:2,red:16,rs:4,black:11,bs:4,result:\"2:0\"},\n  {r:3,b:3,red:21,rs:3,black:7,bs:3,result:\"0:2\"},\n  {r:3,b:4,red:1,rs:2,black:19,bs:3,result:\"1:1\"},\n  {r:3,b:5,red:5,rs:2,black:2,bs:2,result:\"0:2\"},\n  {r:3,b:6,red:17,rs:2,black:6,bs:2,result:\"2:0\"},\n  {r:3,b:7,red:14,rs:2,black:10,bs:2,result:\"2:0\"},\n  {r:3,b:8,red:22,rs:2,black:18,bs:2,result:\"1:1\"},\n  {r:3,b:9,red:8,rs:1,black:15,bs:0,result:\"2:0\"},\n  {r:3,b:10,red:12,rs:0,black:4,bs:0,result:\"2:0\"},\n  {r:3,b:11,red:20,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:4,b:1,red:3,rs:5,black:16,bs:6,result:\"0:2\"},\n  {r:4,b:2,red:7,rs:5,black:9,bs:5,result:\"1:1\"},\n  {r:4,b:3,red:11,rs:4,black:17,bs:4,result:\"2:0\"},\n  {r:4,b:4,red:19,rs:4,black:14,bs:4,result:\"0:2\"},\n  {r:4,b:5,red:2,rs:4,black:22,bs:3,result:\"0:2\"},\n  {r:4,b:6,red:1,rs:3,black:8,bs:3,result:\"2:0\"},\n  {r:4,b:7,red:18,rs:3,black:21,bs:3,result:\"0:2\"},\n  {r:4,b:8,red:20,rs:2,black:5,bs:2,result:\"2:0\"},\n  {r:4,b:9,red:10,rs:2,black:12,bs:2,result:\"0:2\"},\n  {r:4,b:10,red:6,rs:2,black:15,bs:0,result:\"0:2\"},\n  {r:4,b:11,red:4,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:5,b:1,red:16,rs:8,black:7,bs:6,result:\"2:0\"},\n  {r:5,b:2,red:9,rs:6,black:11,bs:6,result:\"0:2\"},\n  {r:5,b:3,red:14,rs:6,black:1,bs:5,result:\"0:2\"},\n  {r:5,b:4,red:21,rs:5,black:3,bs:5,result:\"1:1\"},\n  {r:5,b:5,red:22,rs:5,black:20,bs:4,result:\"2:0\"},\n  {r:5,b:6,red:12,rs:4,black:2,bs:4,result:\"0:2\"},\n  {r:5,b:7,red:17,rs:4,black:19,bs:4,result:\"2:0\"},\n  {r:5,b:8,red:8,rs:3,black:18,bs:3,result:\"0:2\"},\n  {r:5,b:9,red:4,rs:2,black:6,bs:2,result:\"2:0\"},\n  {r:5,b:10,red:15,rs:2,black:10,bs:2,result:\"2:0\"},\n  {r:5,b:11,red:5,rs:2,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:6,b:1,red:22,rs:7,black:16,bs:10,result:\"2:0\"},\n  {r:6,b:2,red:11,rs:8,black:1,bs:7,result:\"1:1\"},\n  {r:6,b:3,red:2,rs:6,black:21,bs:6,result:\"0:2\"},\n  {r:6,b:4,red:3,rs:6,black:14,bs:6,result:\"2:0\"},\n  {r:6,b:5,red:7,rs:6,black:17,bs:6,result:\"1:1\"},\n  {r:6,b:6,red:18,rs:5,black:9,bs:6,result:\"0:2\"},\n  {r:6,b:7,red:5,rs:4,black:4,bs:4,result:\"0:2\"},\n  {r:6,b:8,red:19,rs:4,black:12,bs:4,result:\"2:0\"},\n  {r:6,b:9,red:15,rs:4,black:20,bs:4,result:\"0:2\"},\n  {r:6,b:10,red:10,rs:2,black:8,bs:3,result:\"0:2\"},\n  {r:6,b:11,red:6,rs:2,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:7,b:1,red:1,rs:8,black:16,bs:10,result:\"0:2\"},\n  {r:7,b:2,red:11,rs:9,black:22,bs:9,result:\"0:2\"},\n  {r:7,b:3,red:21,rs:8,black:9,bs:8,result:\"1:1\"},\n  {r:7,b:4,red:17,rs:7,black:3,bs:8,result:\"0:2\"},\n  {r:7,b:5,red:4,rs:6,black:7,bs:7,result:\"0:2\"},\n  {r:7,b:6,red:2,rs:6,black:19,bs:6,result:\"0:2\"},\n  {r:7,b:7,red:20,rs:6,black:14,bs:6,result:\"0:2\"},\n  {r:7,b:8,red:8,rs:5,black:5,bs:4,result:\"2:0\"},\n  {r:7,b:9,red:6,rs:4,black:18,bs:5,result:\"0:2\"},\n  {r:7,b:10,red:12,rs:4,black:15,bs:4,result:\"0:2\"},\n  {r:7,b:11,red:10,rs:2,black:\"BYE\",bs:null,result:\"+:-\"}\n] },\nU14: { label:\"U14\u7ec4\", names: {1:\"Darryl NG Guan Rui\",2:\"LEE Zhuo Yuan\",3:\"Reyes TAN Zi Cong\",4:\"Kyler WANG\",5:\"Chris MONG Xu Yang\",6:\"Aidan SEO Tho Kei Hon\",7:\"Kyler SEAH Jwee Guan\",8:\"Hayden SOH Yew Shi\",9:\"YEUNG Tsz Sun\",10:\"Zyler KWEK\",11:\"Daniel Raphael LAU\",12:\"ZHU Yuduo\",13:\"KWEE Yu Xiang\",14:\"NG Yi Kai Brian\",15:\"CHIEW Bo Yu\",16:\"Kenji TAN Kai Joon\",17:\"LAU Hong Le\",18:\"BAI Rui\",19:\"GUO Heyang\"}, standings: [\n  [1,12,11,60,null,5,2,3,\"\",\"\"],\n  [2,19,11,56,null,4,2,3,\"\",\"\"],\n  [3,11,11,55,null,5,2,3,\"\",\"\"],\n  [4,7,10,59,null,3,2,4,\"\",\"\"],\n  [5,16,10,56,null,5,2,4,\"\",\"\"],\n  [6,1,8,57,\"2\",4,2,3,\"\",\"\"],\n  [7,10,8,57,\"0\",3,1,3,\"\",\"\"],\n  [8,14,8,49,null,4,1,4,\"\",\"\"],\n  [9,2,8,41,null,4,0,3,\"\",\"\"],\n  [10,17,7,59,null,2,0,3,\"\",\"\"],\n  [11,13,7,52,null,3,1,4,\"\",\"\"],\n  [12,9,7,50,null,3,2,3,\"\",\"\"],\n  [13,5,6,43,null,3,1,4,\"\",\"\"],\n  [14,4,6,36,null,3,1,3,\"\",\"\"],\n  [15,6,6,33,null,3,1,3,\"\",\"\"],\n  [16,3,4,52,null,2,1,4,\"\",\"\"],\n  [17,15,4,41,\"2\",2,0,3,\"\",\"\"],\n  [18,8,4,41,\"0\",2,0,3,\"\",\"\"],\n  [19,18,4,40,null,2,1,3,\"\",\"\"]\n], pairings: [\n  {r:1,b:1,red:1,rs:0,black:2,bs:0,result:\"2:0\"},\n  {r:1,b:2,red:4,rs:0,black:3,bs:0,result:\"-:+\"},\n  {r:1,b:3,red:5,rs:0,black:6,bs:0,result:\"2:0\"},\n  {r:1,b:4,red:8,rs:0,black:7,bs:0,result:\"0:2\"},\n  {r:1,b:5,red:9,rs:0,black:10,bs:0,result:\"1:1\"},\n  {r:1,b:6,red:12,rs:0,black:11,bs:0,result:\"2:0\"},\n  {r:1,b:7,red:13,rs:0,black:14,bs:0,result:\"2:0\"},\n  {r:1,b:8,red:16,rs:0,black:15,bs:0,result:\"2:0\"},\n  {r:1,b:9,red:17,rs:0,black:18,bs:0,result:\"2:0\"},\n  {r:1,b:10,red:19,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:2,b:1,red:3,rs:2,black:13,bs:2,result:\"0:2\"},\n  {r:2,b:2,red:5,rs:2,black:12,bs:2,result:\"0:2\"},\n  {r:2,b:3,red:7,rs:2,black:16,bs:2,result:\"2:0\"},\n  {r:2,b:4,red:19,rs:2,black:17,bs:2,result:\"1:1\"},\n  {r:2,b:5,red:10,rs:1,black:1,bs:2,result:\"0:2\"},\n  {r:2,b:6,red:18,rs:0,black:9,bs:1,result:\"0:2\"},\n  {r:2,b:7,red:14,rs:0,black:4,bs:0,result:\"2:0\"},\n  {r:2,b:8,red:6,rs:0,black:11,bs:0,result:\"0:2\"},\n  {r:2,b:9,red:15,rs:0,black:8,bs:0,result:\"2:0\"},\n  {r:2,b:10,red:2,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:3,b:1,red:1,rs:4,black:7,bs:4,result:\"0:2\"},\n  {r:3,b:2,red:12,rs:4,black:13,bs:4,result:\"2:0\"},\n  {r:3,b:3,red:9,rs:3,black:19,bs:3,result:\"0:2\"},\n  {r:3,b:4,red:17,rs:3,black:5,bs:2,result:\"2:0\"},\n  {r:3,b:5,red:2,rs:2,black:15,bs:2,result:\"2:0\"},\n  {r:3,b:6,red:11,rs:2,black:3,bs:2,result:\"2:0\"},\n  {r:3,b:7,red:16,rs:2,black:14,bs:2,result:\"2:0\"},\n  {r:3,b:8,red:4,rs:0,black:10,bs:1,result:\"0:2\"},\n  {r:3,b:9,red:8,rs:0,black:6,bs:0,result:\"2:0\"},\n  {r:3,b:10,red:18,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:4,b:1,red:7,rs:6,black:12,bs:6,result:\"1:1\"},\n  {r:4,b:2,red:13,rs:4,black:17,bs:5,result:\"1:1\"},\n  {r:4,b:3,red:19,rs:5,black:16,bs:4,result:\"2:0\"},\n  {r:4,b:4,red:11,rs:4,black:1,bs:4,result:\"2:0\"},\n  {r:4,b:5,red:10,rs:3,black:2,bs:4,result:\"2:0\"},\n  {r:4,b:6,red:15,rs:2,black:9,bs:3,result:\"0:2\"},\n  {r:4,b:7,red:3,rs:2,black:5,bs:2,result:\"2:0\"},\n  {r:4,b:8,red:14,rs:2,black:8,bs:2,result:\"2:0\"},\n  {r:4,b:9,red:6,rs:0,black:18,bs:2,result:\"0:2\"},\n  {r:4,b:10,red:4,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:5,b:1,red:12,rs:7,black:19,bs:7,result:\"0:2\"},\n  {r:5,b:2,red:17,rs:6,black:7,bs:7,result:\"1:1\"},\n  {r:5,b:3,red:9,rs:5,black:11,bs:6,result:\"0:2\"},\n  {r:5,b:4,red:10,rs:5,black:13,bs:5,result:\"2:0\"},\n  {r:5,b:5,red:1,rs:4,black:16,bs:4,result:\"0:2\"},\n  {r:5,b:6,red:2,rs:4,black:3,bs:4,result:\"2:0\"},\n  {r:5,b:7,red:18,rs:4,black:14,bs:4,result:\"0:2\"},\n  {r:5,b:8,red:8,rs:2,black:4,bs:2,result:\"0:2\"},\n  {r:5,b:9,red:5,rs:2,black:15,bs:2,result:\"2:0\"},\n  {r:5,b:10,red:6,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:6,b:1,red:11,rs:8,black:19,bs:9,result:\"1:1\"},\n  {r:6,b:2,red:7,rs:8,black:10,bs:7,result:\"1:1\"},\n  {r:6,b:3,red:12,rs:7,black:17,bs:7,result:\"2:0\"},\n  {r:6,b:4,red:16,rs:6,black:2,bs:6,result:\"2:0\"},\n  {r:6,b:5,red:14,rs:6,black:9,bs:5,result:\"2:0\"},\n  {r:6,b:6,red:13,rs:5,black:5,bs:4,result:\"2:0\"},\n  {r:6,b:7,red:3,rs:4,black:1,bs:4,result:\"0:2\"},\n  {r:6,b:8,red:4,rs:4,black:18,bs:4,result:\"2:0\"},\n  {r:6,b:9,red:15,rs:2,black:6,bs:2,result:\"0:2\"},\n  {r:6,b:10,red:8,rs:2,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:7,b:1,red:19,rs:10,black:7,bs:9,result:\"1:1\"},\n  {r:7,b:2,red:10,rs:8,black:12,bs:9,result:\"0:2\"},\n  {r:7,b:3,red:11,rs:9,black:14,bs:8,result:\"2:0\"},\n  {r:7,b:4,red:17,rs:7,black:16,bs:8,result:\"0:2\"},\n  {r:7,b:5,red:2,rs:6,black:13,bs:7,result:\"2:0\"},\n  {r:7,b:6,red:1,rs:6,black:4,bs:6,result:\"2:0\"},\n  {r:7,b:7,red:9,rs:5,black:8,bs:4,result:\"2:0\"},\n  {r:7,b:8,red:6,rs:4,black:3,bs:4,result:\"2:0\"},\n  {r:7,b:9,red:18,rs:4,black:5,bs:4,result:\"0:2\"},\n  {r:7,b:10,red:15,rs:2,black:\"BYE\",bs:null,result:\"+:-\"}\n] },\nU10: { label:\"U10\u7ec4\", names: {1:\"TAN Chang Hong\",2:\"TAN Jing Jie Ethan\",3:\"LEO Ang Ying Heng\",4:\"Damien NG Jun Zhe\",5:\"Ian TAN Ek An\",6:\"Li Yuheng Austin\",7:\"CHIEW Bo Yi\",8:\"KWEE Shin Yee\",9:\"ZHANG Xingzhi\",10:\"GOH Zhi Xian Jared\",11:\"TANG Yi San\",12:\"Aren ZEE\",13:\"LIM Thien An\",14:\"LEE Han Yang\",15:\"Glen BAO Yifei\",16:\"LIU Jiachen\",17:\"Jack LIU\"}, standings: [\n  [1,15,14,53,null,7,3,3,\"\",\"\"],\n  [2,9,12,58,null,6,3,3,\"\",\"\"],\n  [3,10,10,50,null,5,1,3,\"\",\"\"],\n  [4,7,8,59,null,4,3,4,\"\",\"\"],\n  [5,11,8,55,null,4,2,4,\"\",\"1\"],\n  [6,2,8,49,null,4,1,4,\"\",\"\"],\n  [7,8,8,44,null,4,1,3,\"\",\"\"],\n  [8,4,8,38,null,3,1,3,\"\",\"\"],\n  [9,12,7,62,null,3,1,3,\"\",\"\"],\n  [10,1,7,58,null,3,1,4,\"\",\"\"],\n  [11,3,6,54,null,3,1,3,\"\",\"1\"],\n  [12,17,6,52,null,3,0,3,\"\",\"\"],\n  [13,13,6,46,null,3,0,3,\"\",\"2\"],\n  [14,16,4,42,null,2,0,3,\"\",\"1\"],\n  [15,14,4,37,null,2,1,4,\"\",\"\"],\n  [16,5,4,34,null,2,0,3,\"\",\"\"],\n  [\"\u2014\",6,\"\u2014\",\"\u2014\",null,\"\u2014\",\"\u2014\",\"\u2014\",\"\",\"\u9000\u8d5b\"]\n], pairings: [\n  {r:1,b:1,red:1,rs:0,black:2,bs:0,result:\"2:0\"},\n  {r:1,b:2,red:4,rs:0,black:3,bs:0,result:\"0:2\"},\n  {r:1,b:3,red:5,rs:0,black:6,bs:0,result:\"0:2\"},\n  {r:1,b:4,red:8,rs:0,black:7,bs:0,result:\"0:2\"},\n  {r:1,b:5,red:9,rs:0,black:10,bs:0,result:\"2:0\"},\n  {r:1,b:6,red:12,rs:0,black:11,bs:0,result:\"2:0\"},\n  {r:1,b:7,red:13,rs:0,black:14,bs:0,result:\"2:0\"},\n  {r:1,b:8,red:16,rs:0,black:15,bs:0,result:\"0:2\"},\n  {r:1,b:9,red:17,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:2,b:1,red:3,rs:2,black:9,bs:2,result:\"0:2\"},\n  {r:2,b:2,red:6,rs:2,black:12,bs:2,result:\"0:2\"},\n  {r:2,b:3,red:7,rs:2,black:13,bs:2,result:\"2:0\"},\n  {r:2,b:4,red:15,rs:2,black:17,bs:2,result:\"2:0\"},\n  {r:2,b:5,red:14,rs:0,black:1,bs:2,result:\"0:2\"},\n  {r:2,b:6,red:2,rs:0,black:5,bs:0,result:\"2:0\"},\n  {r:2,b:7,red:10,rs:0,black:8,bs:0,result:\"2:0\"},\n  {r:2,b:8,red:11,rs:0,black:16,bs:0,result:\"2:0\"},\n  {r:2,b:9,red:4,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:3,b:1,red:1,rs:4,black:7,bs:4,result:\"0:2\"},\n  {r:3,b:2,red:9,rs:4,black:15,bs:4,result:\"0:2\"},\n  {r:3,b:3,red:12,rs:4,black:4,bs:2,result:\"1:1\"},\n  {r:3,b:4,red:17,rs:2,black:2,bs:2,result:\"2:0\"},\n  {r:3,b:5,red:13,rs:2,black:3,bs:2,result:\"2:0\"},\n  {r:3,b:6,red:10,rs:2,black:6,bs:2,result:\"2:0\"},\n  {r:3,b:7,red:5,rs:0,black:11,bs:2,result:\"0:2\"},\n  {r:3,b:8,red:8,rs:0,black:14,bs:0,result:\"2:0\"},\n  {r:3,b:9,red:16,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:4,b:1,red:15,rs:6,black:7,bs:6,result:\"2:0\"},\n  {r:4,b:2,red:12,rs:5,black:10,bs:4,result:\"2:0\"},\n  {r:4,b:3,red:17,rs:4,black:9,bs:4,result:\"0:2\"},\n  {r:4,b:4,red:11,rs:4,black:13,bs:4,result:\"2:0\"},\n  {r:4,b:5,red:4,rs:3,black:1,bs:4,result:\"1:1\"},\n  {r:4,b:6,red:3,rs:2,black:16,bs:2,result:\"2:0\"},\n  {r:4,b:7,red:6,rs:2,black:8,bs:2,result:\"-:+\"},\n  {r:4,b:8,red:14,rs:0,black:2,bs:2,result:\"0:2\"},\n  {r:4,b:9,red:5,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:5,b:1,red:15,rs:8,black:12,bs:7,result:\"2:0\"},\n  {r:5,b:2,red:7,rs:6,black:11,bs:6,result:\"0:2\"},\n  {r:5,b:3,red:9,rs:6,black:1,bs:5,result:\"2:0\"},\n  {r:5,b:4,red:2,rs:4,black:4,bs:4,result:\"2:0\"},\n  {r:5,b:5,red:10,rs:4,black:3,bs:4,result:\"2:0\"},\n  {r:5,b:6,red:8,rs:4,black:17,bs:4,result:\"2:0\"},\n  {r:5,b:7,red:13,rs:4,black:5,bs:2,result:\"2:0\"},\n  {r:5,b:8,red:16,rs:2,black:6,bs:2,result:\"+:-\"},\n  {r:5,b:9,red:14,rs:0,black:\"BYE\",bs:null,result:\"+:-\"},\n  {r:6,b:1,red:11,rs:8,black:15,bs:10,result:\"0:2\"},\n  {r:6,b:2,red:12,rs:7,black:9,bs:8,result:\"0:2\"},\n  {r:6,b:3,red:2,rs:6,black:13,bs:6,result:\"2:0\"},\n  {r:6,b:4,red:7,rs:6,black:10,bs:6,result:\"0:2\"},\n  {r:6,b:5,red:1,rs:5,black:8,bs:6,result:\"2:0\"},\n  {r:6,b:6,red:3,rs:4,black:17,bs:4,result:\"2:0\"},\n  {r:6,b:7,red:4,rs:4,black:16,bs:4,result:\"2:0\"},\n  {r:6,b:8,red:5,rs:2,black:14,bs:2,result:\"2:0\"},\n  {r:7,b:1,red:15,rs:12,black:2,bs:8,result:\"2:0\"},\n  {r:7,b:2,red:9,rs:10,black:11,bs:8,result:\"2:0\"},\n  {r:7,b:3,red:10,rs:8,black:1,bs:7,result:\"2:0\"},\n  {r:7,b:4,red:8,rs:6,black:12,bs:7,result:\"2:0\"},\n  {r:7,b:5,red:3,rs:6,black:7,bs:6,result:\"0:2\"},\n  {r:7,b:6,red:13,rs:6,black:4,bs:6,result:\"0:2\"},\n  {r:7,b:7,red:17,rs:4,black:5,bs:4,result:\"2:0\"},\n  {r:7,b:8,red:16,rs:4,black:14,bs:2,result:\"0:2\"}\n] }\n};\n\nlet cg=\"Open\", cv=\"standings\", cr=1;\n\nfunction G(){ return DATA[cg]; }\nfunction pn(no){ return no===\"BYE\"?\"\u8f6e\u7a7a\":(G().names[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 pCell(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  return `<div class=\"pcell${rev?\" rev\":\"\"}\">${badge}<span class=\"pname\">${pn(no)}<\/span><span class=\"pno\">(${no})<\/span><\/div>`;\n}\n\nfunction getPlayerHistory(no){\n  return G().pairings\n    .filter(p => p.red===no || p.black===no)\n    .sort((a,b)=>a.r-b.r)\n    .map(p=>{\n      const isRed = p.red===no;\n      const opp = isRed ? p.black : p.red;\n      const res = p.result;\n      let outcome;\n      if(opp===\"BYE\") outcome=\"\u8f6e\u7a7a\";\n      else if((isRed&&(res===\"2:0\"||res===\"+:-\"))||(!isRed&&(res===\"0:2\"||res===\"-:+\"))) outcome=\"\u80dc\";\n      else if(res===\"1:1\") outcome=\"\u548c\";\n      else outcome=\"\u8d1f\";\n      if(opp!==\"BYE\"){\n        if((isRed&&res===\"+:-\")||(!isRed&&res===\"-:+\")) outcome=\"\u80dc\";\n        if((isRed&&res===\"-:+\")||(!isRed&&res===\"+:-\")) outcome=\"\u8d1f\";\n      }\n      const oppFinal = opp===\"BYE\"?null:(G().standings.find(s=>s[1]===opp)?.[2]??\"-\");\n      return {r:p.r, opp, side:isRed?\"\u7ea2\u65b9\":\"\u9ed1\u65b9\", outcome, oppFinal, res};\n    });\n}\n\nfunction openModal(no){\n  const stand = G().standings.find(s=>s[1]===no);\n  const hist = getPlayerHistory(no);\n  const wins=hist.filter(h=>h.outcome===\"\u80dc\").length;\n  const draws=hist.filter(h=>h.outcome===\"\u548c\").length;\n  const losses=hist.filter(h=>h.outcome===\"\u8d1f\").length;\n  document.getElementById(\"modalTitle\").textContent=`${pn(no)} (${no})`;\n  document.getElementById(\"modalSub\").textContent=`2026\u5e74\u666f\u4e07\u5cb8\u8c61\u68cb\u9526\u6807\u8d5b \u00b7 ${G().label} \u00b7 \u540d\u6b21 ${stand?.[0]||\"\u2014\"}`;\n  document.getElementById(\"modalBody\").innerHTML=`\n    <div class=\"modal-stat-row\">\n      <div class=\"modal-stat\"><dt>\u79ef\u5206<\/dt><dd>${stand?.[2]||\"\u2014\"}<\/dd><\/div>\n      <div class=\"modal-stat\"><dt>\u5bf9\u624b\u5206<\/dt><dd>${stand?.[3]||\"\u2014\"}<\/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\"><span>\u8f6e<\/span><span>\u5bf9\u624b<\/span><span>\u6267\u8272<\/span><span>\u7ed3\u679c<\/span><span>\u5bf9\u624b\u603b\u5206<\/span><\/div>\n    ${hist.map(h=>{\n      const oppName=h.opp===\"BYE\"?\"\u8f6e\u7a7a BYE\":`${pn(h.opp)} (${h.opp})`;\n      const sideHtml=h.opp===\"BYE\"?`<span class=\"rnd-side\" style=\"background:#f0f0f0;color:#999\">\u8f6e\u7a7a<\/span>`:\n        h.side===\"\u7ea2\u65b9\"?`<span class=\"rnd-side side-red\">\u7ea2\u65b9<\/span>`:`<span class=\"rnd-side side-blk\">\u9ed1\u65b9<\/span>`;\n      const cls=h.outcome===\"\u80dc\"?\"res-w\":h.outcome===\"\u548c\"?\"res-d\":\"res-l\";\n      const isFf=h.opp!==\"BYE\"&&(h.res===\"+:-\"||h.res===\"-:+\");\n      const resTxt=h.opp===\"BYE\"?\"\u8f6e\u7a7a\":(isFf?h.outcome+\"(\u5f03)\":h.outcome);\n      const resCls=h.opp===\"BYE\"?\"res-w\":cls;\n      return `<div class=\"modal-round-row\">\n        <span class=\"rnd-num\">R${h.r}<\/span>\n        <span style=\"font-weight:600;font-size:13px\">${oppName}<\/span>\n        <span>${sideHtml}<\/span>\n        <span class=\"rnd-res ${resCls}\" style=\"${isFf?'font-size:11px':''}\">${resTxt}<\/span>\n        <span class=\"rnd-opp\">${h.oppFinal??\"-\"}<\/span>\n      <\/div>`;\n    }).join(\"\")}`;\n  document.getElementById(\"modalOverlay\").classList.add(\"open\");\n  document.body.style.overflow=\"hidden\";\n}\nfunction closeModal(e){ if(e.target===document.getElementById(\"modalOverlay\")) closeModalDirect(); }\nfunction closeModalDirect(){ document.getElementById(\"modalOverlay\").classList.remove(\"open\"); document.body.style.overflow=\"\"; }\ndocument.addEventListener(\"keydown\",e=>{ if(e.key===\"Escape\") closeModalDirect(); });\n\nfunction switchGroup(g){\n  cg=g; cr=1;\n  document.querySelectorAll(\"#groupToggle .g-btn\").forEach((b,i)=>b.classList.toggle(\"active\",[\"Open\",\"U14\",\"U10\"][i]===g));\n  render();\n}\nfunction switchView(v){\n  cv=v;\n  document.querySelectorAll(\".view-row .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\nlet extraVisible2=false;\nfunction toggleExtra(){\n  extraVisible2=!extraVisible2;\n  document.querySelectorAll(\".col-extra\").forEach(el=>{el.style.display=extraVisible2?\"table-cell\":\"\";});\n  const btn=document.getElementById(\"expandBtn\");\n  if(btn){btn.textContent=extraVisible2?\"\uff0d \u9690\u85cf\u8be6\u7ec6\u6570\u636e\":\"\uff0b \u663e\u793a\u8be6\u7ec6\u6570\u636e\";btn.classList.toggle(\"open\",extraVisible2);}\n}\n\nfunction render(){\n  const pills=document.getElementById(\"roundPills\");\n  if(cv===\"standings\"){\n    pills.style.display=\"none\";\n    document.getElementById(\"cardTitle\").textContent=`${G().label} \u00b7 \u6700\u7ec8\u540d\u6b21`;\n    document.getElementById(\"cardNote\").textContent=\"\u70b9\u51fb\u59d3\u540d\u67e5\u770b\u5bf9\u5c40\u8be6\u60c5\";\n    renderStandings();\n  } else {\n    pills.style.display=\"flex\";\n    pills.innerHTML=Array.from({length:7},(_,i)=>i+1).map(r=>\n      `<button class=\"r-btn${r===cr?\" active\":\"\"}\" onclick=\"switchRound(${r})\">\u7b2c${r}\u8f6e<\/button>`).join(\"\");\n    const list=G().pairings.filter(p=>p.r===cr);\n    document.getElementById(\"cardTitle\").textContent=`${G().label} \u00b7 \u7b2c${cr}\u8f6e`;\n    document.getElementById(\"cardNote\").textContent=`${list.filter(p=>p.result).length}\/${list.length} \u5c40`;\n    renderPairings(list);\n  }\n}\n\nfunction renderStandings(){\n  extraVisible2=false;\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><thead><tr>\n      <th class=\"c\">\u540d\u6b21<\/th><th>\u59d3\u540d<\/th><th class=\"c\">\u79ef\u5206<\/th>\n      <th class=\"c col-extra\">\u5bf9\u624b\u5206<\/th><th class=\"c col-extra\">\u76f4\u80dc<\/th>\n      <th class=\"c col-extra\">\u80dc\u5c40<\/th><th class=\"c col-extra\">\u540e\u624b\u80dc\/\u5c40<\/th>\n      <th class=\"c col-extra\">\u524d\u8f6e\u5f3a\u5bf9\u624b<\/th><th class=\"c col-extra\">\u72af\u89c4<\/th>\n    <\/tr><\/thead><tbody>${G().standings.map(([rank,no,pts,sos,dw,wins,bw,bg,bo,fl])=>{\n      const cls=rank===1?\"r1\":rank===2?\"r2\":rank===3?\"r3\":(rank===\"\u2014\"?\"wd\":\"\");\n      const dwStr=(dw!==null&&dw!==\"\")?`<span style=\"font-family:var(--mono);font-size:10px;border:1px solid var(--line);border-radius:2px;padding:1px 5px;color:var(--muted)\">${dw}<\/span>`:`<span style=\"color:var(--line)\">\u2014<\/span>`;\n      const boStr=bo?bo:`<span style=\"color:var(--line)\">\u2014<\/span>`;\n      const flStr=fl?fl:`<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(${no})\">${pn(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\">${boStr}<\/td>\n        <td class=\"sub-c col-extra\">${flStr}<\/td>\n      <\/tr>`;}).join(\"\")}<\/tbody><\/table>`;\n}\n\nfunction renderPairings(list){\n  list=list.sort((a,b)=>a.b-b.b);\n  document.getElementById(\"cardBody\").innerHTML=\n    `<div class=\"round-lbl\">2026-07-04 \u00b7 \u661f\u671f\u516d Sat \u00b7 ${G().label} \u00b7 ${list.filter(p=>p.result).length}\/${list.length} \u5c40<\/div>\n    <table class=\"pair-table\"><thead><tr>\n      <th class=\"c\" style=\"width:40px\">\u53f0<\/th>\n      <th class=\"r\" style=\"width:42%\">\u7ea2\u65b9 Red<\/th>\n      <th class=\"c\" style=\"width:76px\">\u7ed3\u679c<\/th>\n      <th style=\"width:42%\">\u9ed1\u65b9 Black<\/th>\n    <\/tr><\/thead><tbody>${list.map(p=>`\n      <tr class=\"${rClass(p.result)}\">\n        <td class=\"bnum\">${p.black===\"BYE\"?\"\u2014\":p.b}<\/td>\n        <td class=\"red-col\">${pCell(p.red,p.rs,true)}<\/td>\n        <td class=\"res-col\">${p.result||\"\u2014\"}<\/td>\n        <td class=\"blk-col\">${pCell(p.black,p.bs,false)}<\/td>\n      <\/tr>`).join(\"\")}<\/tbody><\/table>`;\n}\n\nrender();\n<\/script>\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\n\n\n<style>\n\n.entry-content .xq-dash .xq-nav button,\n.page-content .xq-dash .xq-nav button,\n.wp-block-post-content .xq-dash .xq-nav button {\n  background: transparent !important;\n  color: #8a8a8a !important;\n  border: none !important; border-bottom: none !important;\n  border-radius: 6px !important;\n  text-decoration: none !important;\n  box-shadow: none !important;\n  padding: 7px 14px !important;\n  font-weight: 600 !important;\n  cursor: pointer !important;\n}\n.entry-content .xq-dash .xq-nav button:hover,\n.page-content .xq-dash .xq-nav button:hover {\n  background: #fdf4e0 !important;\n  color: #6b232b !important;\n  border-bottom: none !important;\n}\n.entry-content .xq-dash .xq-nav button.active,\n.page-content .xq-dash .xq-nav button.active {\n  background: linear-gradient(135deg, #8c2f39, #6b232b) !important;\n  color: #fff !important;\n  border-bottom: none !important;\n  box-shadow: 0 2px 8px rgba(140,47,57,.25) !important;\n}\n<\/style>\n","protected":false},"excerpt":{"rendered":"<p>2026\u5e74\u666f\u4e07\u5cb8\u8c61\u68cb\u9526\u6807\u8d5b \u00b7 Kembangan Xiang Qi Tournament 2026 CONCLUDED \u00b7 2026 2026\u5e74\u666f\u4e07\u5cb8\u8c61\u68cb\u9526\u6807\u8d5b Kembangan Xiang Qi Tournament 2026 U18\u7ec4\u56e0\u62a5\u540d\u4eba\u6570\u4e0d\u8db3\uff0c\u5e76\u5165\u516c\u5f00\u7ec4\u8fdb\u884c\u6bd4\u8d5b \u65e5\u671f Date 2026\u5e747\u67084\u65e5 \u5730\u70b9 Venue Kampong Ubi CC \u88c1\u5224\u957f Arbiter \u7fc1\u6587\u9f99 \u7f16\u6392\u957f Pairing \u5218\u80b2\u94ed \u53c2\u8d5b Players 58\u4eba \u8f6e\u6b21 Rounds 7\u8f6e \u79ef\u5206\u7f16\u6392 \u65f6\u9650 Time 20\u5206\u949f+5\u79d2 \u516c\u5f00\u7ec4 U14\u7ec4 U10\u7ec4 \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":[25,26],"class_list":["post-8332","post","type-post","status-publish","format-standard","hentry","category-tournament-news","tag-25","tag-26"],"_links":{"self":[{"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8332","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=8332"}],"version-history":[{"count":11,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8332\/revisions"}],"predecessor-version":[{"id":8352,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/posts\/8332\/revisions\/8352"}],"wp:attachment":[{"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/media?parent=8332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/categories?post=8332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xiangqi.sg\/wordpress\/wp-json\/wp\/v2\/tags?post=8332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}