{"id":208,"date":"2026-08-15T21:31:19","date_gmt":"2026-08-15T21:31:19","guid":{"rendered":"https:\/\/shahmata.nl\/?page_id=208"},"modified":"2026-10-20T13:37:40","modified_gmt":"2026-10-20T13:37:40","slug":"agenda","status":"publish","type":"page","link":"https:\/\/shahmata.nl\/en\/agenda\/","title":{"rendered":"Agenda"},"content":{"rendered":"\n<div id=\"smcal\" class=\"smcal\">\n  <noscript><p>Schakel JavaScript in om de kalender te bekijken.<\/p><\/noscript>\n<\/div>\n\n<style>\n  .smcal{--g:#17b800;--g-dk:#0f7d00;--g-lt:#e9f8e6;--gold:#b8860b;--gold-lt:#fbf3dd;--ink:#14181f;--mut:#667085;--line:#e4e7ec;--card:#fff;--soft:#f6f7f9;--knsb:#3b4a63;--knsb-lt:#e8ecf3;\n    color:var(--ink);font-family:inherit;line-height:1.45;max-width:880px;margin:0 auto;box-sizing:border-box}\n  .smcal *,.smcal *::before,.smcal *::after{box-sizing:border-box}\n  .smcal button{font-family:inherit;cursor:pointer}\n  .smcal-hero{background:var(--ink);color:#fff;border-radius:18px;padding:24px;position:relative;overflow:hidden;\n    background-image:linear-gradient(45deg,rgba(255,255,255,.035) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.035) 75%),linear-gradient(45deg,rgba(255,255,255,.035) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.035) 75%);\n    background-size:56px 56px;background-position:0 0,28px 28px}\n  .smcal-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--g)}\n  .smcal-dot{width:8px;height:8px;border-radius:50%;background:var(--g);box-shadow:0 0 0 0 rgba(23,184,0,.6);animation:smcal-pulse 1.8s infinite}\n  @keyframes smcal-pulse{70%{box-shadow:0 0 0 9px rgba(23,184,0,0)}100%{box-shadow:0 0 0 0 rgba(23,184,0,0)}}\n  @media (prefers-reduced-motion:reduce){.smcal-dot{animation:none}}\n  .smcal-hero h2{color:#fff;font-size:clamp(24px,5vw,34px);line-height:1.15;margin:10px 0 4px;font-weight:800}\n  .smcal-hero-date{color:#c9cfd8;font-size:15px;margin:0}\n  .smcal-hero-also{margin-top:16px;display:flex;flex-direction:column;gap:6px}\n  .smcal-hero-also div{font-size:14px;color:#dfe3e8}\n  .smcal-hero-also b{color:#fff}\n  .smcal-hero-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin-top:20px}\n  .smcal-ar{display:flex;align-items:center;gap:10px;font-size:13px;color:#c9cfd8}\n  .smcal-ar-dots{display:flex;gap:5px}\n  .smcal-ar-dots span{width:14px;height:14px;transform:rotate(45deg);border:2px solid #e0b94a;border-radius:2px}\n  .smcal-ar-dots span.done{background:#e0b94a}\n  .smcal-btn{border:0;border-radius:999px;padding:9px 16px;font-size:14px;font-weight:700;background:var(--g);color:#fff;transition:background .15s}\n  .smcal-btn:hover{background:var(--g-dk)}\n  .smcal-btn-ghost{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.35)}\n  .smcal-btn-ghost:hover{background:rgba(255,255,255,.1)}\n  .smcal-h3{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin:30px 0 12px}\n  .smcal-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}\n  .smcal-team{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;border-top:4px solid var(--g);text-align:left;width:100%;transition:transform .15s,box-shadow .15s}\n  .smcal-team:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(16,24,40,.08)}\n  .smcal-team[data-team=KNSB]{border-top-color:var(--knsb)}\n  .smcal-team-name{font-weight:800;font-size:15px;display:flex;justify-content:space-between;align-items:center;gap:6px}\n  .smcal-team-vs{font-size:13px;color:var(--mut);margin:4px 0 10px;min-height:2.6em}\n  .smcal-team-foot small{display:block;font-weight:600;color:var(--mut)}\n  .smcal-team-foot{display:flex;justify-content:space-between;align-items:center;font-size:12px}\n  .smcal-when{font-weight:700;color:var(--g-dk)}\n  .smcal-tag{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--soft);color:var(--mut);white-space:nowrap}\n  .smcal-tag.thuis{background:var(--g-lt);color:var(--g-dk)}\n  .smcal-filters{display:flex;gap:8px;overflow-x:auto;padding:2px 0 6px;scrollbar-width:none}\n  .smcal-filters::-webkit-scrollbar{display:none}\n  .smcal-chip{flex:0 0 auto;border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:7px 14px;font-size:14px;font-weight:600}\n  .smcal-chip[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}\n  .smcal-past{width:100%;margin:12px 0 4px;border:1.5px dashed var(--line);background:transparent;color:var(--mut);border-radius:12px;padding:10px;font-size:14px;font-weight:600}\n  .smcal-past:hover{border-color:var(--mut)}\n  .smcal-month{font-size:20px;font-weight:800;margin:26px 0 8px;display:flex;align-items:center;gap:12px}\n  .smcal-month::after{content:\"\";flex:1;height:1px;background:var(--line)}\n  .smcal-week{display:grid;grid-template-columns:58px 1fr;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}\n  .smcal-week.is-past{opacity:.5}\n  .smcal-week.is-now{background:var(--g-lt);border-radius:14px;border-bottom-color:transparent;padding:12px;margin:4px -12px;grid-template-columns:58px 1fr}\n  .smcal-day{text-align:center;border-radius:12px;padding:6px 0;background:var(--soft);align-self:start}\n  .smcal-week.is-now .smcal-day{background:var(--g);color:#fff}\n  .smcal-day b{display:block;font-size:22px;line-height:1.1}\n  .smcal-day small{font-size:12px;text-transform:uppercase;letter-spacing:.05em}\n  .smcal-items{display:flex;flex-direction:column;gap:8px;min-width:0}\n  .smcal-item{display:flex;align-items:center;gap:10px;min-width:0}\n  .smcal-item-main{flex:1;min-width:0}\n  .smcal-item-title{font-weight:700;font-size:15px}\n  .smcal-item-sub{font-size:13px;color:var(--mut)}\n  .smcal-pill{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;margin-right:6px;vertical-align:1px}\n  .smcal-pill.intern{background:var(--g-lt);color:var(--g-dk)}\n  .smcal-pill.allround{background:var(--gold-lt);color:var(--gold)}\n  .smcal-pill.special{background:#f3e8ff;color:#7a3db8}\n  .smcal-pill.summer{background:#fff1e0;color:#b45309}\n  .smcal-pill.holiday{background:var(--soft);color:var(--mut)}\n  .smcal-pill.team{background:var(--ink);color:#fff}\n  .smcal-pill.KNSB{background:var(--knsb-lt);color:var(--knsb)}\n  .smcal-item.match{padding-left:12px;border-left:3px solid var(--line)}\n  .smcal-ics{flex:0 0 auto;border:1px solid var(--line);background:var(--card);border-radius:8px;width:34px;height:34px;display:grid;place-items:center;color:var(--mut)}\n  .smcal-ics:hover{border-color:var(--g);color:var(--g-dk)}\n  .smcal-ics svg{width:16px;height:16px}\n  .smcal-empty{color:var(--mut);text-align:center;padding:24px}\n  .smcal-note{font-size:12px;color:var(--mut);margin-top:18px}\n  @media (max-width:520px){.smcal-hero{padding:20px}.smcal-week{grid-template-columns:48px 1fr;gap:10px}.smcal-week.is-now{grid-template-columns:48px 1fr;margin:4px -8px;padding:12px 8px}.smcal-day b{font-size:19px}}\n<\/style>\n\n<script>\n(function () {\n  \/* ============ INSTELLINGEN ============ *\/\n  var INSTELLINGEN = {\n    seizoen: \"2026\u20132027\",\n    clubavondStart: \"20:00\",   \/\/ TODO: controleer aanvangstijd clubavond\n    clubavondEinde: \"23:30\",   \/\/ TODO: controleer eindtijd\n    locatie: \"\",               \/\/ TODO: adres speellocatie\n    testDatum: null            \/\/ bv. \"2026-11-17\" om een andere dag te testen\n  };\n  var TEAMS = [\n    {id: \"SM1\",  naam: \"Shah Mata 1\"},\n    {id: \"SM2\",  naam: \"Shah Mata 2\"},\n    {id: \"V1\",   naam: \"Shah Mata V1\"},\n    {id: \"V2\",   naam: \"Shah Mata V2\"},\n    {id: \"KNSB\", naam: \"KNSB\"}\n  ];\n\n  \/* ============ DATA ============ *\/\n  var CLUBAVONDEN = [\n    {date: \"2026-09-08\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 1\"},\n    {date: \"2026-09-15\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 2\"},\n    {date: \"2026-09-22\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 3\"},\n    {date: \"2026-09-29\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 4\"},\n    {date: \"2026-10-06\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 5\"},\n    {date: \"2026-10-13\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 6\"},\n    {date: \"2026-10-20\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 7\"},\n    {date: \"2026-10-27\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 8\"},\n    {date: \"2026-11-03\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 9\"},\n    {date: \"2026-11-10\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 10\"},\n    {date: \"2026-11-17\", type: \"allround\", title: \"All Round Kampioenschap \u00b7 avond 1\"},\n    {date: \"2026-11-24\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 11\"},\n    {date: \"2026-12-01\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 12\"},\n    {date: \"2026-12-08\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 13\"},\n    {date: \"2026-12-15\", type: \"intern\", title: \"Interne competitie\"},\n    {date: \"2026-12-22\", type: \"special\", title: \"Kerstcompetitie\"},\n    {date: \"2026-12-29\", type: \"holiday\", title: \"Vakantie \u00b7 geen clubavond\"},\n    {date: \"2027-01-05\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 14\"},\n    {date: \"2027-01-12\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 15\"},\n    {date: \"2027-01-19\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 16\"},\n    {date: \"2027-01-26\", type: \"allround\", title: \"All Round Kampioenschap \u00b7 avond 2\"},\n    {date: \"2027-02-02\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 17\"},\n    {date: \"2027-02-09\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 18\"},\n    {date: \"2027-02-16\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 19\"},\n    {date: \"2027-02-23\", type: \"allround\", title: \"All Round Kampioenschap \u00b7 avond 3\"},\n    {date: \"2027-03-02\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 20\"},\n    {date: \"2027-03-09\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 21\"},\n    {date: \"2027-03-16\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 22\"},\n    {date: \"2027-03-23\", type: \"special\", title: \"Paascompetitie\"},\n    {date: \"2027-03-30\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 23\"},\n    {date: \"2027-04-06\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 24\"},\n    {date: \"2027-04-13\", type: \"allround\", title: \"All Round Kampioenschap \u00b7 avond 4\"},\n    {date: \"2027-04-20\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 25\"},\n    {date: \"2027-04-27\", type: \"special\", title: \"Snelschaakkampioenschap\"},\n    {date: \"2027-05-04\", type: \"allround\", title: \"All Round Kampioenschap \u00b7 avond 5\"},\n    {date: \"2027-05-11\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 26\"},\n    {date: \"2027-05-18\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 27\"},\n    {date: \"2027-05-25\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 28\"},\n    {date: \"2027-06-01\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 29\"},\n    {date: \"2027-06-08\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 30\"},\n    {date: \"2027-06-15\", type: \"allround\", title: \"All Round Kampioenschap \u00b7 avond 6\"},\n    {date: \"2027-06-22\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 31\"},\n    {date: \"2027-06-29\", type: \"intern\", title: \"Interne competitie \u00b7 ronde 32\"},\n    {date: \"2027-07-06\", type: \"summer\", title: \"Zomertoernooi\", until: \"2027-08-31\"}\n  ];\n\n  var WEDSTRIJDEN = [\n    {date: \"2026-09-22\", team: \"SM2\", cls: \"2A\", home: \"Shah Mata 2\", away: \"Onesimus 3\"},\n    {date: \"2026-10-03\", team: \"KNSB\", cls: \"KNSB\", home: \"KNSB-competitie\", away: \"\"},\n    {date: \"2026-10-08\", team: \"SM1\", cls: \"1B\", home: \"De Pionier 1\", away: \"Shah Mata 1\"},\n    {date: \"2026-10-13\", team: \"V2\", cls: \"V2D\", home: \"Shah Mata V2\", away: \"Erasmus V2\"},\n    {date: \"2026-10-15\", team: \"V1\", cls: \"V2B\", home: \"De Pionier V2\", away: \"Shah Mata V1\"},\n    {date: \"2026-10-31\", team: \"KNSB\", cls: \"KNSB\", home: \"KNSB-competitie\", away: \"\"},\n    {date: \"2026-11-03\", team: \"SM2\", cls: \"2A\", home: \"Shah Mata 2\", away: \"Dordrecht 3\"},\n    {date: \"2026-11-10\", team: \"SM1\", cls: \"1B\", home: \"Shah Mata 1\", away: \"Erasmus 2\"},\n    {date: \"2026-11-21\", team: \"KNSB\", cls: \"KNSB\", home: \"KNSB-competitie\", away: \"\"},\n    {date: \"2026-11-24\", team: \"V1\", cls: \"V2B\", home: \"Shah Mata V1\", away: \"Het Houten Paard V1\"},\n    {date: \"2026-11-24\", team: \"V2\", cls: \"V2D\", home: \"PASCAL V2\", away: \"Shah Mata V2\"},\n    {date: \"2026-12-01\", team: \"SM2\", cls: \"2A\", home: \"PASCAL 1\", away: \"Shah Mata 2\"},\n    {date: \"2026-12-12\", team: \"KNSB\", cls: \"KNSB\", home: \"KNSB-competitie\", away: \"\"},\n    {date: \"2027-01-09\", team: \"KNSB\", cls: \"KNSB\", home: \"KNSB-competitie\", away: \"\"},\n    {date: \"2027-01-15\", team: \"SM1\", cls: \"1B\", home: \"RSR Ivoren Toren 2\", away: \"Shah Mata 1\"},\n    {date: \"2027-02-01\", team: \"V1\", cls: \"V2B\", home: \"Toren van Goeree V1\", away: \"Shah Mata V1\"},\n    {date: \"2027-02-09\", team: \"SM2\", cls: \"2A\", home: \"Shah Mata 2\", away: \"HZP Schiedam 1\"},\n    {date: \"2027-02-16\", team: \"SM1\", cls: \"1B\", home: \"Shah Mata 1\", away: \"Messemaker 2\"},\n    {date: \"2027-03-02\", team: \"V2\", cls: \"V2D\", home: \"Shah Mata V2\", away: \"Dordrecht V1\"},\n    {date: \"2027-03-13\", team: \"KNSB\", cls: \"KNSB\", home: \"KNSB-competitie\", away: \"\"},\n    {date: \"2027-03-15\", team: \"SM2\", cls: \"2A\", home: \"Erasmus 3\", away: \"Shah Mata 2\"},\n    {date: \"2027-03-23\", team: \"SM1\", cls: \"1B\", home: \"Nieuwerkerk 1\", away: \"Shah Mata 1\"},\n    {date: \"2027-04-03\", team: \"KNSB\", cls: \"KNSB\", home: \"KNSB-competitie\", away: \"\"},\n    {date: \"2027-04-06\", team: \"V1\", cls: \"V2B\", home: \"Shah Mata V1\", away: \"Spijkenisse V2\"},\n    {date: \"2027-04-06\", team: \"V2\", cls: \"V2D\", home: \"3-Torens V1\", away: \"Shah Mata V2\"},\n    {date: \"2027-04-20\", team: \"SM2\", cls: \"2A\", home: \"Shah Mata 2\", away: \"De IJssel 1\"},\n    {date: \"2027-05-11\", team: \"V2\", cls: \"V2D\", home: \"Shah Mata V2\", away: \"Krimpen a\/d IJssel V4\"},\n    {date: \"2027-05-13\", team: \"V1\", cls: \"V2B\", home: \"Fianchetto V2\", away: \"Shah Mata V1\"},\n    {date: \"2027-05-18\", team: \"SM1\", cls: \"1B\", home: \"Shah Mata 1\", away: \"WSV Internos 1\"},\n    {date: \"2027-05-25\", team: \"SM2\", cls: \"2A\", home: \"HI Ambacht 1\", away: \"Shah Mata 2\"},\n    {date: \"2027-05-31\", team: \"V2\", cls: \"V2D\", home: \"Barendrecht\/IJsselmonde V2\", away: \"Shah Mata V2\"},\n    {date: \"2027-06-01\", team: \"V1\", cls: \"V2B\", home: \"Shah Mata V1\", away: \"Barendrecht\/IJsselmonde V1\"},\n    {date: \"2027-06-07\", team: \"SM1\", cls: \"1B\", home: \"De Zwarte Pion 1\", away: \"Shah Mata 1\"}\n  ];\n\n  \/* ============ CODE ============ *\/\n  var root = document.getElementById(\"smcal\");\n  if (!root) return;\n  var MAAND = [\"januari\",\"februari\",\"maart\",\"april\",\"mei\",\"juni\",\"juli\",\"augustus\",\"september\",\"oktober\",\"november\",\"december\"];\n  var MND = [\"jan\",\"feb\",\"mrt\",\"apr\",\"mei\",\"jun\",\"jul\",\"aug\",\"sep\",\"okt\",\"nov\",\"dec\"];\n  var DAG = [\"zondag\",\"maandag\",\"dinsdag\",\"woensdag\",\"donderdag\",\"vrijdag\",\"zaterdag\"];\n  var DG = [\"zo\",\"ma\",\"di\",\"wo\",\"do\",\"vr\",\"za\"];\n  var TYPELABEL = {intern: \"Intern\", allround: \"All Round\", special: \"Speciaal\", summer: \"Zomer\", holiday: \"Vrij\"};\n\n  function d(s) { var p = s.split(\"-\"); return new Date(+p[0], p[1] - 1, +p[2]); }\n  function iso(x) { return x.getFullYear() + \"-\" + (\"0\" + (x.getMonth() + 1)).slice(-2) + \"-\" + (\"0\" + x.getDate()).slice(-2); }\n  function addDays(x, n) { var y = new Date(x); y.setDate(y.getDate() + n); return y; }\n  function monday(x) { var y = new Date(x); y.setDate(y.getDate() - ((y.getDay() + 6) % 7)); return y; }\n  function diff(a, b) { return Math.round((d(b) - d(a)) \/ 864e5); }\n  function esc(s) { return String(s).replace(\/[&<>\"]\/g, function (c) { return {\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\"}[c]; }); }\n  function kort(s) { var x = d(s); return DG[x.getDay()] + \" \" + x.getDate() + \" \" + MND[x.getMonth()]; }\n  function lang(s) { var x = d(s); return DAG[x.getDay()] + \" \" + x.getDate() + \" \" + MAAND[x.getMonth()]; }\n  function teamNaam(id) { for (var i = 0; i < TEAMS.length; i++) if (TEAMS[i].id === id) return TEAMS[i].naam; return id; }\n  function isThuis(m) { return \/^Shah Mata\/i.test(m.home); }\n  function wanneer(s) {\n    var n = diff(VANDAAG, s);\n    return n === 0 ? \"vandaag\" : n === 1 ? \"morgen\" : n < 7 ? DAG[d(s).getDay()] : \"over \" + n + \" dagen\";\n  }\n  function matchTitel(m) { return m.team === \"KNSB\" ? \"KNSB-competitie\" : esc(m.home) + \" \u2013 \" + esc(m.away); }\n\n  var VANDAAG = INSTELLINGEN.testDatum || iso(new Date());\n\n  var weken = CLUBAVONDEN.map(function (n) {\n    var start = iso(monday(d(n.date)));\n    var eind = iso(addDays(d(n.until || n.date), 6 - ((d(n.until || n.date).getDay() + 6) % 7)));\n    return {start: start, eind: eind, avond: n, wedstrijden: []};\n  });\n  WEDSTRIJDEN.forEach(function (m) {\n    for (var i = 0; i < weken.length; i++) if (m.date >= weken[i].start && m.date <= weken[i].eind) { weken[i].wedstrijden.push(m); return; }\n  });\n\n  function icsDate(s) { return s.replace(\/-\/g, \"\"); }\n  function icsEsc(s) { return String(s).replace(\/([,;\\\\])\/g, \"\\\\$1\"); }\n  function vevent(o) {\n    var L = [\"BEGIN:VEVENT\", \"UID:\" + o.uid + \"@shahmata.nl\", \"DTSTAMP:\" + new Date().toISOString().replace(\/[-:]\/g, \"\").split(\".\")[0] + \"Z\", \"SUMMARY:\" + icsEsc(o.titel)];\n    if (o.tijd) {\n      L.push(\"DTSTART;TZID=Europe\/Amsterdam:\" + icsDate(o.datum) + \"T\" + INSTELLINGEN.clubavondStart.replace(\":\", \"\") + \"00\");\n      L.push(\"DTEND;TZID=Europe\/Amsterdam:\" + icsDate(o.datum) + \"T\" + INSTELLINGEN.clubavondEinde.replace(\":\", \"\") + \"00\");\n    } else {\n      L.push(\"DTSTART;VALUE=DATE:\" + icsDate(o.datum), \"DTEND;VALUE=DATE:\" + icsDate(iso(addDays(d(o.datum), 1))));\n    }\n    if (o.locatie) L.push(\"LOCATION:\" + icsEsc(o.locatie));\n    if (o.notitie) L.push(\"DESCRIPTION:\" + icsEsc(o.notitie));\n    L.push(\"END:VEVENT\");\n    return L.join(\"\\r\\n\");\n  }\n  function evAvond(n) {\n    return {uid: \"avond-\" + n.date, datum: n.date, titel: \"Shah Mata \u00b7 \" + n.title, tijd: true, locatie: INSTELLINGEN.locatie};\n  }\n  function evMatch(m) {\n    var thuis = isThuis(m);\n    return {uid: \"match-\" + m.date + \"-\" + m.team, datum: m.date, titel: m.team === \"KNSB\" ? \"KNSB-competitie (Shah Mata)\" : m.home + \" \u2013 \" + m.away,\n      tijd: thuis &#038;&#038; m.team !== \"KNSB\", locatie: thuis &#038;&#038; m.team !== \"KNSB\" ? INSTELLINGEN.locatie : \"\",\n      notitie: thuis ? \"\" : \"Uitwedstrijd \u2013 controleer aanvangstijd en adres bij de teamleider.\"};\n  }\n  function download(naam, events) {\n    var txt = [\"BEGIN:VCALENDAR\", \"VERSION:2.0\", \"PRODID:-\/\/Shah Mata\/\/Kalender\/\/NL\", \"CALSCALE:GREGORIAN\", \"X-WR-CALNAME:Shah Mata\", TZ].concat(events.map(vevent), [\"END:VCALENDAR\"]).join(\"\\r\\n\");\n    var a = document.createElement(\"a\");\n    a.href = URL.createObjectURL(new Blob([txt], {type: \"text\/calendar;charset=utf-8\"}));\n    a.download = naam + \".ics\";\n    document.body.appendChild(a); a.click();\n    setTimeout(function () { URL.revokeObjectURL(a.href); a.remove(); }, 500);\n  }\n  var TZ = [\"BEGIN:VTIMEZONE\", \"TZID:Europe\/Amsterdam\", \"BEGIN:DAYLIGHT\", \"TZOFFSETFROM:+0100\", \"TZOFFSETTO:+0200\", \"TZNAME:CEST\", \"DTSTART:19700329T020000\", \"RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\", \"END:DAYLIGHT\",\n    \"BEGIN:STANDARD\", \"TZOFFSETFROM:+0200\", \"TZOFFSETTO:+0100\", \"TZNAME:CET\", \"DTSTART:19701025T030000\", \"RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\", \"END:STANDARD\", \"END:VTIMEZONE\"].join(\"\\r\\n\");\n  var ICON = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\"\/><path d=\"M16 2v4M8 2v4M3 10h18M12 14v4M10 16h4\"\/><\/svg>';\n\n  function hero() {\n    var w = null;\n    for (var i = 0; i < weken.length; i++) {\n      var a = weken[i].avond;\n      if (a.type !== \"holiday\" &#038;&#038; (a.until || a.date) >= VANDAAG) { w = weken[i]; break; }\n    }\n    var ar = CLUBAVONDEN.filter(function (n) { return n.type === \"allround\"; });\n    var arDone = ar.filter(function (n) { return n.date < VANDAAG; }).length;\n    var html = '<section class=\"smcal-hero\">';\n    if (w) {\n      var a = w.avond, datum = a.until && a.date < VANDAAG ? nextTuesday(a) : a.date;\n      var n = diff(VANDAAG, datum);\n      var label = n === 0 ? \"Vanavond bij Shah Mata\" : n === 1 ? \"Morgen bij Shah Mata\" : \"Volgende clubavond \u00b7 \" + wanneer(datum);\n      html += '<span class=\"smcal-eyebrow\">' + (n === 0 ? '<span class=\"smcal-dot\"><\/span>' : \"\") + label + \"<\/span>\" +\n        \"<h2>\" + esc(a.title) + \"<\/h2>\" +\n        '<p class=\"smcal-hero-date\">' + lang(datum) + \" \u00b7 \" + INSTELLINGEN.clubavondStart + \" uur\" + (INSTELLINGEN.locatie ? \" \u00b7 \" + esc(INSTELLINGEN.locatie) : \"\") + \"<\/p>\";\n      var ook = w.wedstrijden.filter(function (m) { return m.date >= VANDAAG; });\n      if (ook.length) {\n        html += '<div class=\"smcal-hero-also\">' + ook.map(function (m) {\n          return \"<div>\u265e <b>\" + matchTitel(m) + \"<\/b> \u00b7 \" + kort(m.date) + \"<\/div>\";\n        }).join(\"\") + \"<\/div>\";\n      }\n      html += '<div class=\"smcal-hero-row\"><div class=\"smcal-ar\"><span class=\"smcal-ar-dots\">' +\n        ar.map(function (n) { return '<span class=\"' + (n.date < VANDAAG ? \"done\" : \"\") + '\" title=\"' + kort(n.date) + '\"><\/span>'; }).join(\"\") +\n        \"<\/span>All Round: \" + arDone + \" van \" + ar.length + \" gespeeld<\/div>\" +\n        '<div style=\"display:flex;gap:8px;flex-wrap:wrap\"><button class=\"smcal-btn\" data-ics-avond=\"' + a.date + '\" data-dag=\"' + datum + '\">In mijn agenda<\/button>' +\n        '<button class=\"smcal-btn smcal-btn-ghost\" data-ics-alles>Hele seizoen (.ics)<\/button><\/div><\/div>';\n    } else {\n      html += '<span class=\"smcal-eyebrow\">Seizoen ' + INSTELLINGEN.seizoen + \"<\/span><h2>Het seizoen zit erop. Tot volgend jaar!<\/h2>\";\n    }\n    return html + \"<\/section>\";\n  }\n  function nextTuesday(a) {\n    var x = d(VANDAAG); while (x.getDay() !== 2) x = addDays(x, 1);\n    return iso(x) <= a.until ? iso(x) : a.until;\n  }\n\n  function teamKaarten() {\n    var html = '<h3 class=\"smcal-h3\">Volgende wedstrijd per team<\/h3><div class=\"smcal-teams\">';\n    TEAMS.forEach(function (t) {\n      var m = WEDSTRIJDEN.filter(function (x) { return x.team === t.id && x.date >= VANDAAG; })[0];\n      var tag = m && t.id !== \"KNSB\" ? '<span class=\"smcal-tag ' + (isThuis(m) ? \"thuis\" : \"\") + '\">' + (isThuis(m) ? \"Thuis\" : \"Uit\") + \"<\/span>\" : \"\";\n      html += '<button class=\"smcal-team\" data-team=\"' + t.id + '\" data-filter-go=\"' + t.id + '\"><div class=\"smcal-team-name\">' + esc(t.naam) + tag + \"<\/div>\";\n      if (m) {\n        var tegen = t.id === \"KNSB\" ? \"Speeldag KNSB-competitie\" : (isThuis(m) ? \"tegen \" + esc(m.away) : \"bij \" + esc(m.home));\n        html += '<div class=\"smcal-team-vs\">' + tegen + '<\/div><div class=\"smcal-team-foot\"><span class=\"smcal-when\">' + kort(m.date) + \"<small>\" + wanneer(m.date) + \"<\/small><\/span><\/div>\";\n      } else {\n        html += '<div class=\"smcal-team-vs\">Geen wedstrijden meer dit seizoen<\/div>';\n      }\n      html += \"<\/button>\";\n    });\n    return html + \"<\/div>\";\n  }\n\n  var FILTERS = [{id: \"alles\", label: \"Alles\"}, {id: \"intern\", label: \"Interne competitie\"}, {id: \"allround\", label: \"All Round\"}]\n    .concat(TEAMS.map(function (t) { return {id: t.id, label: t.naam}; }));\n  var staat = {filter: \"alles\", toonVerleden: false};\n\n  function zichtbaar(w) {\n    var f = staat.filter;\n    if (f === \"alles\") return {avond: true, wedstrijden: w.wedstrijden};\n    if (f === \"intern\") return {avond: w.avond.type !== \"allround\" && w.avond.type !== \"holiday\", wedstrijden: []};\n    if (f === \"allround\") return {avond: w.avond.type === \"allround\", wedstrijden: []};\n    return {avond: false, wedstrijden: w.wedstrijden.filter(function (m) { return m.team === f; })};\n  }\n\n  function tijdlijn() {\n    var html = '<h3 class=\"smcal-h3\">Seizoen ' + INSTELLINGEN.seizoen + '<\/h3><div class=\"smcal-filters\" role=\"group\" aria-label=\"Filter\">' +\n      FILTERS.map(function (f) { return '<button class=\"smcal-chip\" data-filter=\"' + f.id + '\" aria-pressed=\"' + (staat.filter === f.id) + '\">' + esc(f.label) + \"<\/button>\"; }).join(\"\") + \"<\/div>\";\n    var rows = [], verleden = 0;\n    weken.forEach(function (w) {\n      var z = zichtbaar(w);\n      if (!z.avond && !z.wedstrijden.length) return;\n      var past = w.eind < VANDAAG;\n      if (past) { verleden++; if (!staat.toonVerleden) return; }\n      rows.push({w: w, z: z, past: past, nu: w.start <= VANDAAG &#038;&#038; VANDAAG <= w.eind});\n    });\n    if (verleden) html += '<button class=\"smcal-past\" data-toggle-past>' + (staat.toonVerleden ? \"Verberg gespeelde weken\" : \"Toon gespeelde weken (\" + verleden + \")\") + \"<\/button>\";\n    if (!rows.length) return html + '<p class=\"smcal-empty\">Geen komende activiteiten voor deze selectie.<\/p>';\n    var maand = \"\";\n    rows.forEach(function (r) {\n      var w = r.w, a = w.avond;\n      var anker = r.z.avond ? a.date : r.z.wedstrijden[0].date, ax = d(anker);\n      var mKey = MAAND[ax.getMonth()] + \" \" + ax.getFullYear();\n      if (mKey !== maand) { html += '<div class=\"smcal-month\">' + mKey.charAt(0).toUpperCase() + mKey.slice(1) + \"<\/div>\"; maand = mKey; }\n      html += '<div class=\"smcal-week' + (r.past ? \" is-past\" : \"\") + (r.nu ? \" is-now\" : \"\") + '\"><div class=\"smcal-day\"><b>' + ax.getDate() + \"<\/b><small>\" + DG[ax.getDay()] + '<\/small><\/div><div class=\"smcal-items\">';\n      if (r.z.avond) {\n        var sub = a.until ? \"Elke dinsdag t\/m \" + kort(a.until) : (a.type === \"holiday\" ? \"\" : \"Clubavond \u00b7 \" + INSTELLINGEN.clubavondStart + \" uur\");\n        if (r.nu && a.date === VANDAAG) sub = \"Vanavond \u00b7 \" + INSTELLINGEN.clubavondStart + \" uur\";\n        html += '<div class=\"smcal-item\"><div class=\"smcal-item-main\"><div class=\"smcal-item-title\"><span class=\"smcal-pill ' + a.type + '\">' + TYPELABEL[a.type] + \"<\/span>\" + esc(a.title) + \"<\/div>\" +\n          (sub ? '<div class=\"smcal-item-sub\">' + sub + \"<\/div>\" : \"\") + \"<\/div>\" +\n          (a.type !== \"holiday\" && (a.until || a.date) >= VANDAAG ? '<button class=\"smcal-ics\" data-ics-avond=\"' + a.date + '\" aria-label=\"Zet ' + esc(a.title) + ' in je agenda\">' + ICON + \"<\/button>\" : \"\") + \"<\/div>\";\n      }\n      r.z.wedstrijden.forEach(function (m) {\n        var idx = WEDSTRIJDEN.indexOf(m);\n        html += '<div class=\"smcal-item match\"' + (m.date < VANDAAG &#038;&#038; !r.past ? ' style=\"opacity:.5\"' : '') + '><div class=\"smcal-item-main\"><div class=\"smcal-item-title\"><span class=\"smcal-pill ' + (m.team === \"KNSB\" ? \"KNSB\" : \"team\") + '\">' + esc(teamNaam(m.team)) + \"<\/span>\" + matchTitel(m) + \"<\/div>\" +\n          '<div class=\"smcal-item-sub\">' + kort(m.date) + (m.team === \"KNSB\" ? \"\" : \" \u00b7 \" + (isThuis(m) ? \"Thuis\" : \"Uit\") + \" \u00b7 klasse \" + esc(m.cls)) + \"<\/div><\/div>\" +\n          (m.date >= VANDAAG ? '<button class=\"smcal-ics\" data-ics-match=\"' + idx + '\" aria-label=\"Zet wedstrijd in je agenda\">' + ICON + \"<\/button>\" : \"\") + \"<\/div>\";\n      });\n      html += \"<\/div><\/div>\";\n    });\n    return html;\n  }\n\n  function render() {\n    root.innerHTML = hero() + teamKaarten() + '<div id=\"smcal-tl\">' + tijdlijn() + \"<\/div>\" +\n      '<p class=\"smcal-note\">Data: Shah Mata seizoenskalender ' + INSTELLINGEN.seizoen + \". Wijzigingen voorbehouden.<\/p>\";\n  }\n  function renderTijdlijn() { document.getElementById(\"smcal-tl\").innerHTML = tijdlijn(); }\n\n  root.addEventListener(\"click\", function (e) {\n    var b = e.target.closest(\"button\"); if (!b) return;\n    if (b.hasAttribute(\"data-filter\")) { staat.filter = b.getAttribute(\"data-filter\"); renderTijdlijn(); }\n    else if (b.hasAttribute(\"data-filter-go\")) { staat.filter = b.getAttribute(\"data-filter-go\"); renderTijdlijn(); document.getElementById(\"smcal-tl\").scrollIntoView({behavior: \"smooth\", block: \"start\"}); }\n    else if (b.hasAttribute(\"data-toggle-past\")) { staat.toonVerleden = !staat.toonVerleden; renderTijdlijn(); }\n    else if (b.hasAttribute(\"data-ics-avond\")) {\n      var n = CLUBAVONDEN.filter(function (x) { return x.date === b.getAttribute(\"data-ics-avond\"); })[0];\n      var ev = evAvond(n); if (b.getAttribute(\"data-dag\")) { ev.datum = b.getAttribute(\"data-dag\"); ev.uid = \"avond-\" + ev.datum; }\n      download(\"shah-mata-\" + ev.datum, [ev]);\n    }\n    else if (b.hasAttribute(\"data-ics-match\")) { var m = WEDSTRIJDEN[+b.getAttribute(\"data-ics-match\")]; download(\"shah-mata-\" + m.date + \"-\" + m.team, [evMatch(m)]); }\n    else if (b.hasAttribute(\"data-ics-alles\")) {\n      var evs = CLUBAVONDEN.filter(function (x) { return x.type !== \"holiday\" && !x.until; }).map(evAvond).concat(WEDSTRIJDEN.map(evMatch));\n      download(\"shah-mata-seizoen-\" + INSTELLINGEN.seizoen.replace(\/[^0-9]\/g, \"-\"), evs);\n    }\n  });\n\n  render();\n})();\n<\/script>\n\n\n\n<div style=\"overflow-x:auto\">\n<table style=\"width:100%;border-collapse:collapse;font-size:15px\">\n<tr style=\"background:#17b800;color:#fff;text-align:left\"><th style=\"padding:8px;white-space:nowrap\">Datum<\/th><th style=\"padding:8px\">Clubavond (20:00)<\/th><th style=\"padding:8px\">Externe wedstrijden<\/th><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">September 2026<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 8 sep<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 1<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 15 sep<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 2<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 22 sep<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 3<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 2:<\/b> Shah Mata 2 \u2013 Onesimus 3 (di 22 sep)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 29 sep<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 4<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">KNSB-competitie (za 3 okt)<\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">Oktober 2026<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 6 okt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 5<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 1:<\/b> De Pionier 1 \u2013 Shah Mata 1 (do 8 okt)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 13 okt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 6<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata V2:<\/b> Shah Mata V2 \u2013 Erasmus V2 (di 13 okt)<br><b>Shah Mata V1:<\/b> De Pionier V2 \u2013 Shah Mata V1 (do 15 okt)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 20 okt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 7<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 27 okt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 8<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">KNSB-competitie (za 31 okt)<\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">November 2026<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 3 nov<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 9<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 2:<\/b> Shah Mata 2 \u2013 Dordrecht 3 (di 3 nov)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 10 nov<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 10<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 1:<\/b> Shah Mata 1 \u2013 Erasmus 2 (di 10 nov)<\/td><\/tr>\n<tr style=\"background:#fbf3dd\"><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 17 nov<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>All Round Kampioenschap \u00b7 avond 1<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">KNSB-competitie (za 21 nov)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 24 nov<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 11<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata V1:<\/b> Shah Mata V1 \u2013 Het Houten Paard V1 (di 24 nov)<br><b>Shah Mata V2:<\/b> PASCAL V2 \u2013 Shah Mata V2 (di 24 nov)<\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">December 2026<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 1 dec<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 12<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 2:<\/b> PASCAL 1 \u2013 Shah Mata 2 (di 1 dec)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 8 dec<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 13<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">KNSB-competitie (za 12 dec)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 15 dec<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 22 dec<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Kerstcompetitie<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr style=\"color:#999\"><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 29 dec<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Vakantie \u00b7 geen clubavond<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">Januari 2027<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 5 jan<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 14<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">KNSB-competitie (za 9 jan)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 12 jan<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 15<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 1:<\/b> RSR Ivoren Toren 2 \u2013 Shah Mata 1 (vr 15 jan)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 19 jan<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 16<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr style=\"background:#fbf3dd\"><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 26 jan<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>All Round Kampioenschap \u00b7 avond 2<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">Februari 2027<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 2 feb<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 17<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata V1:<\/b> Toren van Goeree V1 \u2013 Shah Mata V1 (ma 1 feb)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 9 feb<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 18<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 2:<\/b> Shah Mata 2 \u2013 HZP Schiedam 1 (di 9 feb)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 16 feb<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 19<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 1:<\/b> Shah Mata 1 \u2013 Messemaker 2 (di 16 feb)<\/td><\/tr>\n<tr style=\"background:#fbf3dd\"><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 23 feb<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>All Round Kampioenschap \u00b7 avond 3<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">Maart 2027<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 2 mrt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 20<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata V2:<\/b> Shah Mata V2 \u2013 Dordrecht V1 (di 2 mrt)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 9 mrt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 21<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">KNSB-competitie (za 13 mrt)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 16 mrt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 22<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 2:<\/b> Erasmus 3 \u2013 Shah Mata 2 (ma 15 mrt)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 23 mrt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Paascompetitie<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 1:<\/b> Nieuwerkerk 1 \u2013 Shah Mata 1 (di 23 mrt)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 30 mrt<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 23<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">KNSB-competitie (za 3 apr)<\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">April 2027<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 6 apr<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 24<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata V1:<\/b> Shah Mata V1 \u2013 Spijkenisse V2 (di 6 apr)<br><b>Shah Mata V2:<\/b> 3-Torens V1 \u2013 Shah Mata V2 (di 6 apr)<\/td><\/tr>\n<tr style=\"background:#fbf3dd\"><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 13 apr<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>All Round Kampioenschap \u00b7 avond 4<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 20 apr<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 25<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 2:<\/b> Shah Mata 2 \u2013 De IJssel 1 (di 20 apr)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 27 apr<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Snelschaakkampioenschap<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">Mei 2027<\/td><\/tr>\n<tr style=\"background:#fbf3dd\"><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 4 mei<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>All Round Kampioenschap \u00b7 avond 5<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 11 mei<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 26<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata V2:<\/b> Shah Mata V2 \u2013 Krimpen a\/d IJssel V4 (di 11 mei)<br><b>Shah Mata V1:<\/b> Fianchetto V2 \u2013 Shah Mata V1 (do 13 mei)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 18 mei<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 27<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 1:<\/b> Shah Mata 1 \u2013 WSV Internos 1 (di 18 mei)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 25 mei<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 28<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 2:<\/b> HI Ambacht 1 \u2013 Shah Mata 2 (di 25 mei)<\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">Juni 2027<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 1 jun<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 29<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata V2:<\/b> Barendrecht\/IJsselmonde V2 \u2013 Shah Mata V2 (ma 31 mei)<br><b>Shah Mata V1:<\/b> Shah Mata V1 \u2013 Barendrecht\/IJsselmonde V1 (di 1 jun)<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 8 jun<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 30<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>Shah Mata 1:<\/b> De Zwarte Pion 1 \u2013 Shah Mata 1 (ma 7 jun)<\/td><\/tr>\n<tr style=\"background:#fbf3dd\"><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 15 jun<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><b>All Round Kampioenschap \u00b7 avond 6<\/b><\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 22 jun<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 31<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 29 jun<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Interne competitie \u00b7 ronde 32<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<tr><td colspan=\"3\" style=\"padding:18px 8px 6px;font-weight:bold;font-size:17px;border-bottom:2px solid #17b800\">Juli 2027<\/td><\/tr>\n<tr><td style=\"padding:8px;border-bottom:1px solid #eee;white-space:nowrap;vertical-align:top\">di 6 jul<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\">Zomertoernooi (t\/m di 31 aug)<\/td><td style=\"padding:8px;border-bottom:1px solid #eee;vertical-align:top\"><\/td><\/tr>\n<\/table>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Schakel JavaScript in om de kalender te bekijken. Datum Clubavond (20:00) Externe wedstrijden September 2026 di 8 sep Interne competitie \u00b7 ronde 1 di 15 sep Interne competitie \u00b7 ronde 2 di 22 sep Interne competitie \u00b7 ronde 3 Shah Mata 2: Shah Mata 2 \u2013 Onesimus 3 (di 22 sep) di 29 sep Interne [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-208","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/shahmata.nl\/en\/wp-json\/wp\/v2\/pages\/208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shahmata.nl\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/shahmata.nl\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/shahmata.nl\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/shahmata.nl\/en\/wp-json\/wp\/v2\/comments?post=208"}],"version-history":[{"count":9,"href":"https:\/\/shahmata.nl\/en\/wp-json\/wp\/v2\/pages\/208\/revisions"}],"predecessor-version":[{"id":310,"href":"https:\/\/shahmata.nl\/en\/wp-json\/wp\/v2\/pages\/208\/revisions\/310"}],"wp:attachment":[{"href":"https:\/\/shahmata.nl\/en\/wp-json\/wp\/v2\/media?parent=208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}