{"id":228,"date":"2025-07-29T12:04:11","date_gmt":"2025-07-29T15:04:11","guid":{"rendered":"https:\/\/berwickgaladays.org\/?page_id=228"},"modified":"2026-08-14T15:21:42","modified_gmt":"2026-08-14T18:21:42","slug":"events","status":"publish","type":"page","link":"https:\/\/berwickgaladays.org\/?page_id=228","title":{"rendered":"Events"},"content":{"rendered":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<!-- =========================================================\n     BERWICK & DISTRICT GALA DAYS 2026 \u2014 EVENTS PAGE\n     Self-contained: all CSS, HTML and JS live here. No external\n     files, no images to upload \u2014 every icon is inline SVG.\n     ========================================================= -->\n\n<div id=\"gdEvents\">\n  <style>\n    #gdEvents{\n      --apple:#b21f27;\n      --apple-dark:#7c1319;\n      --leaf:#a8b64a;\n      --leaf-dark:#6f7d1f;\n      --gold:#e0b83f;\n      --cream:#fbf6ec;\n      --card:#ffffff;\n      --ink:#2a201c;\n      --ink-soft:#6b5f57;\n      --line:#eaddca;\n      font-family:\"Trebuchet MS\",\"Segoe UI\",system-ui,sans-serif;\n      color:var(--ink);\n      max-width:1080px;\n      margin:0 auto;\n      -webkit-font-smoothing:antialiased;\n    }\n    #gdEvents *{box-sizing:border-box;}\n\n    #gdEvents .ge-wrap{\n      background:var(--cream);\n      border-radius:20px;\n      padding:26px 18px 30px;\n      box-shadow:0 12px 34px rgba(124,19,25,.10);\n      position:relative;\n      overflow:hidden;\n    }\n    #gdEvents .ge-wrap::before{\n      content:\"\"; position:absolute; top:0; left:0; right:0; height:7px;\n      background:repeating-linear-gradient(90deg,var(--apple) 0 44px,var(--leaf) 44px 88px);\n      opacity:.92;\n    }\n\n    \/* ---------- Header ---------- *\/\n    #gdEvents .ge-head{ text-align:center; margin:10px 0 6px; }\n    #gdEvents .ge-kicker{\n      display:inline-block; font-size:.72rem; letter-spacing:.3em;\n      text-transform:uppercase; color:var(--leaf-dark); font-weight:700;\n    }\n    #gdEvents .ge-title{\n      font-family:Georgia,\"Times New Roman\",serif;\n      font-size:clamp(1.9rem,6vw,3rem); color:var(--apple);\n      margin:2px 0 0; line-height:1.02;\n    }\n    #gdEvents .ge-sub{ color:var(--ink-soft); font-size:.95rem; margin-top:6px; }\n    #gdEvents .ge-lede{\n      max-width:620px; margin:12px auto 0; color:var(--ink-soft);\n      font-size:.95rem; line-height:1.5;\n    }\n\n    \/* ---------- Day tabs ---------- *\/\n    #gdEvents .ge-tabs{\n      display:flex; gap:8px; overflow-x:auto; justify-content:flex-start;\n      padding:18px 2px 8px; scrollbar-width:thin; -webkit-overflow-scrolling:touch;\n    }\n    @media(min-width:760px){ #gdEvents .ge-tabs{ justify-content:center; } }\n    #gdEvents .ge-tab{\n      flex:0 0 auto; border:1.5px solid var(--line); background:var(--card);\n      color:var(--ink-soft); font-weight:700; font-size:.9rem;\n      padding:9px 16px; border-radius:999px; cursor:pointer; white-space:nowrap;\n      transition:all .15s ease;\n    }\n    #gdEvents .ge-tab:hover{ border-color:var(--leaf); color:var(--ink); }\n    #gdEvents .ge-tab[aria-selected=\"true\"]{\n      background:var(--apple); border-color:var(--apple); color:#fff;\n      box-shadow:0 4px 12px rgba(178,31,39,.30);\n    }\n    #gdEvents .ge-tab:focus-visible{ outline:3px solid var(--leaf); outline-offset:2px; }\n    #gdEvents .ge-tab .ge-tabday{ display:block; font-size:.68rem; opacity:.75; font-weight:600; }\n\n    \/* ---------- Day heading ---------- *\/\n    #gdEvents .ge-dayhead{\n      font-family:Georgia,serif; font-size:1.4rem; color:var(--apple-dark);\n      margin:22px 6px 14px; display:flex; align-items:center; gap:10px;\n    }\n    #gdEvents .ge-dayhead::after{\n      content:\"\"; flex:1; height:2px;\n      background:linear-gradient(90deg,var(--leaf),transparent);\n    }\n    #gdEvents .ge-daycount{\n      font-family:\"Trebuchet MS\",sans-serif; font-size:.72rem; font-weight:700;\n      color:var(--leaf-dark); background:#fff; border:1.5px solid var(--line);\n      border-radius:999px; padding:3px 10px; white-space:nowrap;\n    }\n\n    \/* ---------- Card grid ---------- *\/\n    #gdEvents .ge-grid{\n      display:grid; gap:14px;\n      grid-template-columns:1fr;\n    }\n    @media(min-width:620px){ #gdEvents .ge-grid{ grid-template-columns:1fr 1fr; } }\n    @media(min-width:960px){ #gdEvents .ge-grid{ grid-template-columns:1fr 1fr 1fr; } }\n\n    #gdEvents .ge-card{\n      background:var(--card); border:1px solid var(--line); border-radius:16px;\n      overflow:hidden; display:flex; flex-direction:column;\n      transition:transform .15s ease, box-shadow .15s ease;\n    }\n    #gdEvents .ge-card:hover{ transform:translateY(-3px); box-shadow:0 10px 24px rgba(124,19,25,.12); }\n\n    \/* graphic banner (SVG) *\/\n    #gdEvents .ge-art{\n      position:relative; height:132px; display:block;\n      border-bottom:3px solid rgba(0,0,0,.04);\n    }\n    #gdEvents .ge-art svg{ width:100%; height:100%; display:block; }\n    #gdEvents .ge-badge{\n      position:absolute; top:10px; left:10px;\n      font-size:.66rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase;\n      color:#fff; padding:4px 9px; border-radius:999px;\n      background:rgba(42,32,28,.55); backdrop-filter:blur(2px);\n    }\n    #gdEvents .ge-flag{\n      position:absolute; top:10px; right:10px;\n      font-size:.64rem; font-weight:800; letter-spacing:.03em;\n      color:var(--apple-dark); background:#fff; padding:4px 9px; border-radius:999px;\n      box-shadow:0 2px 6px rgba(0,0,0,.12);\n    }\n\n    #gdEvents .ge-body{ padding:14px 15px 15px; display:flex; flex-direction:column; flex:1; }\n    #gdEvents .ge-name{\n      font-family:Georgia,serif; font-size:1.14rem; color:var(--ink);\n      margin:0 0 8px; line-height:1.15;\n    }\n    #gdEvents .ge-meta{\n      display:flex; flex-wrap:wrap; gap:6px 10px; margin-bottom:10px;\n      font-size:.82rem; color:var(--ink-soft);\n    }\n    #gdEvents .ge-chip{\n      display:inline-flex; align-items:center; gap:5px; font-weight:700; color:var(--apple);\n    }\n    #gdEvents .ge-chip svg{ width:14px; height:14px; flex:0 0 auto; }\n    #gdEvents .ge-desc{ font-size:.9rem; line-height:1.5; color:var(--ink-soft); margin:0 0 14px; flex:1; }\n\n    #gdEvents .ge-actions{ display:flex; flex-wrap:wrap; gap:8px; margin-top:auto; }\n    #gdEvents .ge-btn{\n      display:inline-flex; align-items:center; gap:6px; text-decoration:none;\n      font-size:.8rem; font-weight:700; padding:8px 12px; border-radius:999px;\n      transition:all .12s ease; cursor:pointer; border:1.5px solid transparent;\n    }\n    #gdEvents .ge-btn svg{ width:14px; height:14px; }\n    #gdEvents .ge-btn.dir{ background:#f3f4e7; color:var(--leaf-dark); border-color:#e4e8c9; }\n    #gdEvents .ge-btn.dir:hover{ background:var(--leaf); color:#fff; border-color:var(--leaf); }\n    #gdEvents .ge-btn.tix{ background:var(--apple); color:#fff; }\n    #gdEvents .ge-btn.tix:hover{ background:var(--apple-dark); }\n    #gdEvents .ge-btn:focus-visible{ outline:3px solid var(--leaf); outline-offset:2px; }\n\n    \/* ---------- Footer ---------- *\/\n    #gdEvents .ge-foot{\n      text-align:center; font-size:.82rem; color:var(--ink-soft);\n      margin-top:26px; padding-top:16px; border-top:1px dashed var(--line);\n    }\n    #gdEvents .ge-foot a{ color:var(--apple); font-weight:700; text-decoration:none; }\n    #gdEvents .ge-foot a:hover{ text-decoration:underline; }\n\n    @media(prefers-reduced-motion:reduce){ #gdEvents *{ transition:none !important; } }\n  <\/style>\n\n  <div class=\"ge-wrap\">\n    <div class=\"ge-head\">\n      <span class=\"ge-kicker\">Berwick &amp; District Gala Days<\/span>\n      <h1 class=\"ge-title\">Events<\/h1>\n      <div class=\"ge-sub\">September 2\u20137, 2026 \u00b7 Celebrate the Valley<\/div>\n      <p class=\"ge-lede\">Six days of foam, fiddles, fast cars and heavy horses. Pick a day below to see what&#8217;s on \u2014 tap any event for directions, and grab tickets where you see them.<\/p>\n    <\/div>\n\n    <div class=\"ge-tabs\" id=\"geTabs\" role=\"tablist\" aria-label=\"Choose a day\"><\/div>\n    <div id=\"geList\" aria-live=\"polite\"><\/div>\n\n    <div class=\"ge-foot\">\n      Times &amp; details subject to change. For the full hour-by-hour rundown, see the\n      <a href=\"https:\/\/www.berwickgaladays.org\" target=\"_blank\" rel=\"noopener\">schedule &amp; brochure<\/a>.<br>\n      Questions? <a href=\"mailto:berwickgaladaysns@gmail.com\">berwickgaladaysns@gmail.com<\/a>\n    <\/div>\n  <\/div>\n\n  <script>\n  (function(){\n    \/* ---------- Google Maps directions ---------- *\/\n    var MAPQ = {\n      \"Rainforth Park\":\"Rainforth Park, 205 Cottage St, Berwick, NS\",\n      \"Carol's Place\":\"Carol's Place, Rainforth Park, Cottage St, Berwick, NS\",\n      \"Centennial Park\":\"Centennial Park, Union St, Berwick, NS\",\n      \"KMCC\":\"Kings Mutual Century Centre, Berwick, NS\",\n      \"Behind KMCC\":\"Kings Mutual Century Centre, Berwick, NS\",\n      \"Lions Hall\":\"Berwick Lions Club, Berwick, NS\",\n      \"Berwick Legion\":\"Royal Canadian Legion, Berwick, NS\",\n      \"Berwick Baptist Church\":\"Berwick Baptist Church, Berwick, NS\",\n      \"Spicer Park\":\"Spicer Park, Hayden Dr, Berwick, NS\",\n      \"Commercial Street\":\"Commercial St, Berwick, NS\"\n    };\n    function mapUrl(v){\n      var q = MAPQ[v] || (v + \", Berwick, NS\");\n      return \"https:\/\/www.google.com\/maps\/dir\/?api=1&destination=\" + encodeURIComponent(q);\n    }\n\n    \/* ---------- tiny inline icons ---------- *\/\n    var I = {\n      clock:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5l3 2\"\/><\/svg>',\n      pin:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 21s7-6.3 7-11a7 7 0 1 0-14 0c0 4.7 7 11 7 11Z\"\/><circle cx=\"12\" cy=\"10\" r=\"2.5\"\/><\/svg>',\n      arrow:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>',\n      ticket:'<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 9a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2 2 2 0 0 0 0 4 2 2 0 0 1-2 2H5a2 2 0 0 1-2-2 2 2 0 0 0 0-4Z\"\/><path d=\"M15 7v10\" stroke-dasharray=\"1.5 2.5\"\/><\/svg>'\n    };\n\n    \/* =========================================================\n       ART: each function returns an SVG banner for a category.\n       Palette pulled from the site tokens. No photos used.\n       ========================================================= *\/\n    function bg(a,b){ return '<defs><linearGradient id=\"g'+(bg._i=(bg._i||0)+1)+'\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"'+a+'\"\/><stop offset=\"1\" stop-color=\"'+b+'\"\/><\/linearGradient><\/defs>'; }\n    function frame(inner,a,b){\n      var id='bg'+Math.floor(Math.random()*1e6);\n      return '<svg viewBox=\"0 0 300 132\" preserveAspectRatio=\"xMidYMid slice\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">'\n        +'<defs><linearGradient id=\"'+id+'\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"1\"><stop offset=\"0\" stop-color=\"'+a+'\"\/><stop offset=\"1\" stop-color=\"'+b+'\"\/><\/linearGradient><\/defs>'\n        +'<rect width=\"300\" height=\"132\" fill=\"url(#'+id+')\"\/>'+inner+'<\/svg>';\n    }\n    var ART = {\n      ceremony:function(){return frame(\n        '<circle cx=\"150\" cy=\"66\" r=\"40\" fill=\"#fff\" opacity=\".12\"\/>'\n        +'<path d=\"M150 34l6.8 15.2L173 51l-11 12 3 17-15-8.4L135 80l3-17-11-12 16.2-1.8z\" fill=\"#fff\" opacity=\".95\"\/>'\n        +'<path d=\"M60 105h180\" stroke=\"#fff\" stroke-width=\"3\" opacity=\".4\"\/>'\n        ,'#b21f27','#7c1319');},\n      dessert:function(){return frame(\n        '<rect x=\"96\" y=\"70\" width=\"108\" height=\"34\" rx=\"6\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M96 70c6-24 102-24 108 0z\" fill=\"#fff\" opacity=\".85\"\/>'\n        +'<circle cx=\"150\" cy=\"44\" r=\"7\" fill=\"#e0b83f\"\/>'\n        +'<path d=\"M120 60c4-8 8-8 12 0M156 60c4-8 8-8 12 0\" stroke=\"#b21f27\" stroke-width=\"3\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        ,'#c98a2b','#e0b83f');},\n      quiet:function(){return frame(\n        '<circle cx=\"150\" cy=\"60\" r=\"30\" fill=\"#fff\" opacity=\".9\"\/>'\n        +'<path d=\"M138 60a12 12 0 0 1 24 0\" stroke=\"#6f7d1f\" stroke-width=\"3.5\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        +'<circle cx=\"150\" cy=\"70\" r=\"3.4\" fill=\"#6f7d1f\"\/>'\n        +'<path d=\"M110 40l80 46M110 86l80-46\" stroke=\"#fff\" stroke-width=\"2\" opacity=\".35\"\/>'\n        ,'#8a9a3c','#6f7d1f');},\n      pubcrawl:function(){return frame(\n        '<path d=\"M126 44h48l-4 34a8 8 0 0 1-8 7h-24a8 8 0 0 1-8-7z\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M174 52h10a8 8 0 0 1 0 16h-8\" stroke=\"#fff\" stroke-width=\"4\" fill=\"none\"\/>'\n        +'<rect x=\"140\" y=\"96\" width=\"20\" height=\"6\" rx=\"3\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<circle cx=\"150\" cy=\"34\" r=\"4\" fill=\"#e0b83f\"\/>'\n        ,'#8a1f2a','#5a1016');},\n      hockey:function(){return frame(\n        '<ellipse cx=\"150\" cy=\"96\" rx=\"70\" ry=\"10\" fill=\"#fff\" opacity=\".18\"\/>'\n        +'<rect x=\"140\" y=\"86\" width=\"20\" height=\"8\" rx=\"4\" fill=\"#2a201c\" opacity=\".85\"\/>'\n        +'<path d=\"M110 50c30 6 50 6 80 0\" stroke=\"#fff\" stroke-width=\"5\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        +'<path d=\"M118 50l-6 40M182 50l6 40\" stroke=\"#fff\" stroke-width=\"5\" stroke-linecap=\"round\"\/>'\n        ,'#3a5f8f','#24466f');},\n      foam:function(){return frame(\n        '<circle cx=\"120\" cy=\"70\" r=\"20\" fill=\"#fff\" opacity=\".85\"\/>'\n        +'<circle cx=\"150\" cy=\"58\" r=\"26\" fill=\"#fff\" opacity=\".9\"\/>'\n        +'<circle cx=\"182\" cy=\"72\" r=\"18\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<circle cx=\"138\" cy=\"88\" r=\"12\" fill=\"#fff\" opacity=\".7\"\/>'\n        +'<circle cx=\"168\" cy=\"90\" r=\"10\" fill=\"#fff\" opacity=\".7\"\/>'\n        ,'#4aa3c9','#2e7fa8');},\n      arm:function(){return frame(\n        '<path d=\"M108 92c8-26 20-40 42-40 22 0 34 14 42 40\" fill=\"none\" stroke=\"#fff\" stroke-width=\"6\" stroke-linecap=\"round\"\/>'\n        +'<circle cx=\"150\" cy=\"46\" r=\"10\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<rect x=\"120\" y=\"96\" width=\"60\" height=\"7\" rx=\"3.5\" fill=\"#fff\" opacity=\".5\"\/>'\n        ,'#a83226','#7c1319');},\n      drone:function(){return frame(\n        '<circle cx=\"110\" cy=\"46\" r=\"4\" fill=\"#e0b83f\"\/><circle cx=\"150\" cy=\"34\" r=\"4\" fill=\"#fff\"\/>'\n        +'<circle cx=\"190\" cy=\"46\" r=\"4\" fill=\"#a8b64a\"\/><circle cx=\"128\" cy=\"66\" r=\"4\" fill=\"#fff\"\/>'\n        +'<circle cx=\"172\" cy=\"66\" r=\"4\" fill=\"#e0b83f\"\/><circle cx=\"150\" cy=\"60\" r=\"4\" fill=\"#a8b64a\"\/>'\n        +'<circle cx=\"112\" cy=\"86\" r=\"3.4\" fill=\"#fff\"\/><circle cx=\"150\" cy=\"88\" r=\"3.4\" fill=\"#e0b83f\"\/><circle cx=\"188\" cy=\"86\" r=\"3.4\" fill=\"#fff\"\/>'\n        +'<path d=\"M40 118h220\" stroke=\"#fff\" stroke-width=\"2\" opacity=\".25\"\/>'\n        ,'#241d4a','#0f0d24');},\n      comedy:function(){return frame(\n        '<circle cx=\"150\" cy=\"60\" r=\"34\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M132 54c2-4 8-4 10 0M158 54c2-4 8-4 10 0\" stroke=\"#7c1319\" stroke-width=\"3.5\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        +'<path d=\"M132 70c8 12 28 12 36 0\" stroke=\"#7c1319\" stroke-width=\"4\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        ,'#b21f27','#7c1319');},\n      breakfast:function(){return frame(\n        '<circle cx=\"150\" cy=\"66\" r=\"34\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<circle cx=\"150\" cy=\"66\" r=\"15\" fill=\"#e0b83f\"\/>'\n        +'<path d=\"M96 66h-8M212 66h-8M150 24v-8\" stroke=\"#fff\" stroke-width=\"3\" stroke-linecap=\"round\" opacity=\".7\"\/>'\n        +'<path d=\"M118 44l-6-6M182 44l6-6\" stroke=\"#fff\" stroke-width=\"3\" stroke-linecap=\"round\" opacity=\".7\"\/>'\n        ,'#e0a72b','#c9852b');},\n      canteen:function(){return frame(\n        '<rect x=\"104\" y=\"52\" width=\"92\" height=\"46\" rx=\"6\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M104 52l14-16h64l14 16z\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<path d=\"M118 36v-8M150 36v-8M182 36v-8\" stroke=\"#b21f27\" stroke-width=\"4\" stroke-linecap=\"round\"\/>'\n        +'<rect x=\"132\" y=\"70\" width=\"36\" height=\"16\" rx=\"3\" fill=\"#b21f27\" opacity=\".8\"\/>'\n        ,'#c94b3a','#a8322a');},\n      kids:function(){return frame(\n        '<circle cx=\"130\" cy=\"56\" r=\"14\" fill=\"#fff\" opacity=\".9\"\/>'\n        +'<circle cx=\"170\" cy=\"56\" r=\"14\" fill=\"#e0b83f\"\/>'\n        +'<circle cx=\"150\" cy=\"84\" r=\"14\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<path d=\"M130 56l20 28 20-28\" stroke=\"#fff\" stroke-width=\"2\" opacity=\".4\" fill=\"none\"\/>'\n        ,'#4a9a7a','#2e7a5c');},\n      facepaint:function(){return frame(\n        '<circle cx=\"150\" cy=\"60\" r=\"34\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<circle cx=\"138\" cy=\"54\" r=\"4\" fill=\"#b21f27\"\/><circle cx=\"162\" cy=\"54\" r=\"4\" fill=\"#4aa3c9\"\/>'\n        +'<path d=\"M134 74c8 8 24 8 32 0\" stroke=\"#e0b83f\" stroke-width=\"4\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        +'<path d=\"M118 44c-6 0-10 4-10 4M182 44c6 0 10 4 10 4\" stroke=\"#fff\" stroke-width=\"3\" stroke-linecap=\"round\" opacity=\".6\"\/>'\n        ,'#8a5aa8','#6a3f88');},\n      truck:function(){return frame(\n        '<rect x=\"98\" y=\"56\" width=\"60\" height=\"34\" rx=\"4\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M158 66h30l14 16v8h-44z\" fill=\"#fff\" opacity=\".85\"\/>'\n        +'<circle cx=\"122\" cy=\"94\" r=\"9\" fill=\"#2a201c\" opacity=\".8\"\/><circle cx=\"182\" cy=\"94\" r=\"9\" fill=\"#2a201c\" opacity=\".8\"\/>'\n        ,'#c94b3a','#a8322a');},\n      dunk:function(){return frame(\n        '<path d=\"M96 78h108v6a20 20 0 0 1-20 20h-68a20 20 0 0 1-20-20z\" fill=\"#4aa3c9\" opacity=\".55\"\/>'\n        +'<circle cx=\"150\" cy=\"52\" r=\"12\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M110 78c8-6 16 0 24-4M156 74c8 4 16-2 24 4\" stroke=\"#fff\" stroke-width=\"2.5\" fill=\"none\" opacity=\".5\"\/>'\n        +'<path d=\"M150 64v10\" stroke=\"#fff\" stroke-width=\"3\" stroke-linecap=\"round\"\/>'\n        ,'#3f8fb8','#2e7fa8');},\n      flowers:function(){return frame(\n        '<circle cx=\"150\" cy=\"50\" r=\"9\" fill=\"#e0b83f\"\/>'\n        +'<circle cx=\"134\" cy=\"58\" r=\"8\" fill=\"#fff\" opacity=\".9\"\/><circle cx=\"166\" cy=\"58\" r=\"8\" fill=\"#fff\" opacity=\".9\"\/>'\n        +'<circle cx=\"140\" cy=\"72\" r=\"8\" fill=\"#fff\" opacity=\".8\"\/><circle cx=\"160\" cy=\"72\" r=\"8\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<path d=\"M150 78v22M144 88l6 6 6-6\" stroke=\"#6f7d1f\" stroke-width=\"3\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        ,'#9a5a8a','#7a3f6a');},\n      pie:function(){return frame(\n        '<ellipse cx=\"150\" cy=\"80\" rx=\"46\" ry=\"16\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M104 80c0-14 92-14 92 0\" fill=\"#e0b83f\" opacity=\".85\"\/>'\n        +'<path d=\"M124 72l8 8M150 68v10M176 72l-8 8\" stroke=\"#b21f27\" stroke-width=\"3\" stroke-linecap=\"round\"\/>'\n        ,'#c98a4b','#a86a2b');},\n      music:function(){return frame(\n        '<circle cx=\"126\" cy=\"88\" r=\"11\" fill=\"#fff\" opacity=\".92\"\/><circle cx=\"178\" cy=\"80\" r=\"11\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M137 88V44l52-10v44\" fill=\"none\" stroke=\"#fff\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n        ,'#5a7a9a','#3f5f7a');},\n      commando:function(){return frame(\n        '<path d=\"M80 96l30-30 20 16 24-30 26 22 40-30\" fill=\"none\" stroke=\"#fff\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" opacity=\".9\"\/>'\n        +'<circle cx=\"80\" cy=\"96\" r=\"5\" fill=\"#e0b83f\"\/><circle cx=\"220\" cy=\"44\" r=\"5\" fill=\"#e0b83f\"\/>'\n        ,'#5a6a3a','#3f4a24');},\n      cowpie:function(){return frame(\n        '<rect x=\"108\" y=\"46\" width=\"84\" height=\"60\" rx=\"4\" fill=\"#fff\" opacity=\".9\"\/>'\n        +'<path d=\"M108 66h84M108 86h84M136 46v60M164 46v60\" stroke=\"#6f7d1f\" stroke-width=\"2\" opacity=\".5\"\/>'\n        +'<circle cx=\"150\" cy=\"76\" r=\"9\" fill=\"#8a5a2b\"\/><circle cx=\"150\" cy=\"76\" r=\"4\" fill=\"#6a3f1b\"\/>'\n        ,'#8a9a3c','#6f7d1f');},\n      tractor:function(){return frame(\n        '<circle cx=\"128\" cy=\"88\" r=\"20\" fill=\"#2a201c\" opacity=\".8\"\/><circle cx=\"128\" cy=\"88\" r=\"8\" fill=\"#fff\" opacity=\".6\"\/>'\n        +'<circle cx=\"184\" cy=\"94\" r=\"12\" fill=\"#2a201c\" opacity=\".8\"\/>'\n        +'<rect x=\"118\" y=\"54\" width=\"40\" height=\"24\" rx=\"4\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<rect x=\"150\" y=\"60\" width=\"26\" height=\"18\" rx=\"3\" fill=\"#fff\" opacity=\".8\"\/>'\n        ,'#c94b3a','#a8322a');},\n      story:function(){return frame(\n        '<path d=\"M100 50h44a6 6 0 0 1 6 6v50a6 6 0 0 0-6-6h-44z\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M200 50h-44a6 6 0 0 0-6 6v50a6 6 0 0 1 6-6h44z\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<path d=\"M112 64h24M112 76h24M164 64h24M164 76h24\" stroke=\"#6f7d1f\" stroke-width=\"2.5\" stroke-linecap=\"round\"\/>'\n        ,'#4a8a9a','#2e6a7a');},\n      firefighter:function(){return frame(\n        '<path d=\"M150 40c-14 18-22 30-22 44a22 22 0 0 0 44 0c0-14-8-26-22-44z\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M150 66c-6 8-9 13-9 19a9 9 0 0 0 18 0c0-6-3-11-9-19z\" fill=\"#e0b83f\"\/>'\n        ,'#c9342a','#a11f19');},\n      concert:function(){return frame(\n        '<path d=\"M110 96V44l70-14v54\" fill=\"none\" stroke=\"#e0b83f\" stroke-width=\"6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n        +'<circle cx=\"100\" cy=\"96\" r=\"12\" fill=\"#e0b83f\"\/><circle cx=\"170\" cy=\"84\" r=\"12\" fill=\"#fff\" opacity=\".9\"\/>'\n        +'<path d=\"M60 118h180\" stroke=\"#fff\" stroke-width=\"2\" opacity=\".2\"\/>'\n        ,'#3a1f4a','#1f0d2a');},\n      run:function(){return frame(\n        '<circle cx=\"158\" cy=\"42\" r=\"9\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M150 58l-14 18 10 12M150 58l16 6 8 18M150 58l-18 6\" fill=\"none\" stroke=\"#fff\" stroke-width=\"5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>'\n        +'<path d=\"M96 100h30M176 100h28\" stroke=\"#fff\" stroke-width=\"3\" stroke-linecap=\"round\" opacity=\".5\"\/>'\n        ,'#4a9a7a','#2e7a5c');},\n      livestock:function(){return frame(\n        '<ellipse cx=\"150\" cy=\"74\" rx=\"40\" ry=\"24\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M114 66c-10-4-14-14-8-20 6 4 10 12 8 20zM186 66c10-4 14-14 8-20-6 4-10 12-8 20z\" fill=\"#fff\" opacity=\".85\"\/>'\n        +'<circle cx=\"138\" cy=\"72\" r=\"3.5\" fill=\"#6f7d1f\"\/><circle cx=\"162\" cy=\"72\" r=\"3.5\" fill=\"#6f7d1f\"\/>'\n        ,'#8a9a4c','#6f7d2f');},\n      carshow:function(){return frame(\n        '<path d=\"M96 82c4-16 12-24 20-24h68c8 0 16 8 20 24z\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<rect x=\"96\" y=\"80\" width=\"108\" height=\"14\" rx=\"6\" fill=\"#fff\" opacity=\".85\"\/>'\n        +'<circle cx=\"124\" cy=\"96\" r=\"11\" fill=\"#2a201c\" opacity=\".85\"\/><circle cx=\"176\" cy=\"96\" r=\"11\" fill=\"#2a201c\" opacity=\".85\"\/>'\n        +'<path d=\"M128 58c8-2 36-2 44 0\" stroke=\"#4aa3c9\" stroke-width=\"3\" fill=\"none\"\/>'\n        ,'#b23a2f','#8a1f19');},\n      market:function(){return frame(\n        '<rect x=\"104\" y=\"60\" width=\"92\" height=\"40\" rx=\"4\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M100 60l12-18h76l12 18z\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<path d=\"M112 60v40M136 60v40M164 60v40M188 60v40\" stroke=\"#b21f27\" stroke-width=\"2.5\" opacity=\".4\"\/>'\n        +'<path d=\"M112 42l0 18M136 42l0 18M164 42l0 18M188 42l0 18\" stroke=\"#b21f27\" stroke-width=\"4\"\/>'\n        ,'#c98a3b','#a86a2b');},\n      chicken:function(){return frame(\n        '<ellipse cx=\"150\" cy=\"78\" rx=\"40\" ry=\"26\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M124 60c-6-10-2-20 8-22 2 8 0 16-8 22zM150 54c0-12 6-20 16-20-2 10-8 18-16 20z\" fill=\"#e0b83f\"\/>'\n        +'<circle cx=\"150\" cy=\"80\" r=\"6\" fill=\"#c9852b\"\/>'\n        ,'#d98a2b','#b26a1f');},\n      bingo:function(){return frame(\n        '<rect x=\"112\" y=\"46\" width=\"76\" height=\"60\" rx=\"6\" fill=\"#fff\" opacity=\".94\"\/>'\n        +'<path d=\"M112 66h76M112 86h76M137 46v60M162 46v60\" stroke=\"#b21f27\" stroke-width=\"2\" opacity=\".4\"\/>'\n        +'<circle cx=\"124\" cy=\"56\" r=\"4\" fill=\"#b21f27\"\/><circle cx=\"175\" cy=\"76\" r=\"4\" fill=\"#e0b83f\"\/><circle cx=\"150\" cy=\"96\" r=\"4\" fill=\"#6f7d1f\"\/>'\n        ,'#c94b3a','#a8322a');},\n      craft:function(){return frame(\n        '<path d=\"M120 96V52a10 10 0 0 1 20 0v44M160 96V52a10 10 0 0 1 20 0v44\" fill=\"none\" stroke=\"#fff\" stroke-width=\"5\" stroke-linecap=\"round\"\/>'\n        +'<path d=\"M110 70l40-14 40 14\" fill=\"none\" stroke=\"#e0b83f\" stroke-width=\"4\" stroke-linecap=\"round\"\/>'\n        ,'#8a6a4a','#6a4a2a');},\n      ox:function(){return frame(\n        '<ellipse cx=\"150\" cy=\"76\" rx=\"42\" ry=\"24\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M116 62c-12-6-14-16-6-20 6 6 8 14 6 20zM184 62c12-6 14-16 6-20-6 6-8 14-6 20z\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<rect x=\"128\" y=\"96\" width=\"44\" height=\"8\" rx=\"4\" fill=\"#8a5a2b\"\/>'\n        ,'#7a8a3c','#5f6f2f');},\n      petshow:function(){return frame(\n        '<circle cx=\"150\" cy=\"70\" r=\"26\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<circle cx=\"128\" cy=\"50\" r=\"9\" fill=\"#fff\" opacity=\".85\"\/><circle cx=\"172\" cy=\"50\" r=\"9\" fill=\"#fff\" opacity=\".85\"\/>'\n        +'<circle cx=\"142\" cy=\"68\" r=\"3\" fill=\"#6f7d1f\"\/><circle cx=\"158\" cy=\"68\" r=\"3\" fill=\"#6f7d1f\"\/>'\n        +'<path d=\"M146 78c2 3 6 3 8 0\" stroke=\"#6f7d1f\" stroke-width=\"2.5\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        ,'#6a9a8a','#4a7a6a');},\n      horsepull:function(){return frame(\n        '<path d=\"M118 58c8-10 22-12 34-6 10-6 22-4 30 6l6 34h-76z\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M116 56c-8-2-12-10-8-16 6 4 10 10 8 16z\" fill=\"#fff\" opacity=\".8\"\/>'\n        +'<rect x=\"126\" y=\"96\" width=\"48\" height=\"8\" rx=\"4\" fill=\"#8a5a2b\"\/>'\n        ,'#8a5a3a','#6a3f2a');},\n      talent:function(){return frame(\n        '<path d=\"M150 34l6.4 14.4L172 50l-11 11 3 16-14-8-14 8 3-16-11-11 15.6-1.6z\" fill=\"#e0b83f\"\/>'\n        +'<rect x=\"108\" y=\"90\" width=\"84\" height=\"8\" rx=\"4\" fill=\"#fff\" opacity=\".6\"\/>'\n        +'<path d=\"M124 90c0-14 12-22 26-22s26 8 26 22\" fill=\"none\" stroke=\"#fff\" stroke-width=\"3\" opacity=\".5\"\/>'\n        ,'#7a2f5a','#5a1f3f');},\n      lighthorse:function(){return frame(\n        '<path d=\"M120 96V60c0-12 10-20 22-18 4-8 14-10 22-4-6 4-8 10-6 16l6 42z\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<circle cx=\"150\" cy=\"44\" r=\"4\" fill=\"#e0b83f\"\/>'\n        ,'#8a7a4a','#6a5a2f');},\n      bmx:function(){return frame(\n        '<circle cx=\"120\" cy=\"86\" r=\"18\" fill=\"none\" stroke=\"#fff\" stroke-width=\"4\"\/><circle cx=\"180\" cy=\"86\" r=\"18\" fill=\"none\" stroke=\"#fff\" stroke-width=\"4\"\/>'\n        +'<path d=\"M120 86l24-30 20 30M144 56h16\" stroke=\"#e0b83f\" stroke-width=\"4\" fill=\"none\" stroke-linecap=\"round\"\/>'\n        ,'#4a6a9a','#2e4a7a');},\n      hoop:function(){return frame(\n        '<ellipse cx=\"150\" cy=\"72\" rx=\"44\" ry=\"16\" fill=\"none\" stroke=\"#e0b83f\" stroke-width=\"6\"\/>'\n        +'<circle cx=\"150\" cy=\"46\" r=\"9\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M150 55v24\" stroke=\"#fff\" stroke-width=\"4\" stroke-linecap=\"round\"\/>'\n        ,'#9a4a7a','#7a2f5a');},\n      parade:function(){return frame(\n        '<path d=\"M90 100c20-40 40-40 60 0M150 100c20-40 40-40 60 0\" fill=\"none\" stroke=\"#fff\" stroke-width=\"4\" opacity=\".4\"\/>'\n        +'<rect x=\"130\" y=\"48\" width=\"40\" height=\"30\" rx=\"4\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M150 48v-14M150 34l16 6-16 6z\" fill=\"#e0b83f\" stroke=\"#e0b83f\"\/>'\n        ,'#b21f27','#7c1319');},\n      sip:function(){return frame(\n        '<path d=\"M128 46h44l-6 30a6 6 0 0 1-6 5h-14a6 6 0 0 1-6-5z\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M150 81v18M138 99h24\" stroke=\"#fff\" stroke-width=\"3.5\" stroke-linecap=\"round\"\/>'\n        +'<circle cx=\"150\" cy=\"60\" r=\"8\" fill=\"#e0b83f\" opacity=\".8\"\/>'\n        ,'#7a3f2f','#5a2a1f');},\n      battle:function(){return frame(\n        '<path d=\"M120 96l40-44M180 96l-40-44\" stroke=\"#fff\" stroke-width=\"7\" stroke-linecap=\"round\"\/>'\n        +'<circle cx=\"150\" cy=\"46\" r=\"10\" fill=\"#e0b83f\"\/>'\n        +'<rect x=\"120\" y=\"98\" width=\"60\" height=\"6\" rx=\"3\" fill=\"#fff\" opacity=\".4\"\/>'\n        ,'#6a4a9a','#4a2f7a');},\n      tug:function(){return frame(\n        '<path d=\"M92 66h116\" stroke=\"#fff\" stroke-width=\"6\" stroke-linecap=\"round\"\/>'\n        +'<circle cx=\"150\" cy=\"66\" r=\"7\" fill=\"#e0b83f\"\/>'\n        +'<path d=\"M108 66l-12 12M108 66l-12-12M192 66l12 12M192 66l12-12\" stroke=\"#fff\" stroke-width=\"4\" stroke-linecap=\"round\"\/>'\n        ,'#4a8a5a','#2e6a3f');},\n      magician:function(){return frame(\n        '<path d=\"M118 92l50-44 8 8-50 44z\" fill=\"#fff\" opacity=\".92\"\/>'\n        +'<path d=\"M168 40l4 10 10 4-10 4-4 10-4-10-10-4 10-4z\" fill=\"#e0b83f\"\/>'\n        +'<path d=\"M112 96l6 6M120 100l-4 4\" stroke=\"#fff\" stroke-width=\"3\" stroke-linecap=\"round\" opacity=\".6\"\/>'\n        ,'#3f2f6a','#241a4a');}\n    };\n\n    \/* =========================================================\n       EVENTS by day.\n       { name, time, venue, cat(->ART), badge, flag, desc, tix }\n       flag = little corner tag (e.g. \"19+\", \"Pre-register\")\n       tix  = optional {label,url} ticket button\n       ========================================================= *\/\n    var ABBA_TICKET_URL = \"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSdWJWqYSv_I5Wa6EZjPnFKinp7lf4m872xOc8n8eCu7oLhUnA\/viewform?usp=dialog\";\n    var COMEDY_TICKET_URL = \"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSeHWSJJCxlHDxqv42Y7073sYN4-fMx4yc1YjOBiyqXv-PMWpw\/viewform\";\n\n    var DATA = {\n      \"Wed\":{ date:\"Wednesday, Sept 2\", events:[\n        {name:\"Opening Ceremonies & Dessert Contest\", time:\"7:00 PM\", venue:\"Berwick Baptist Church\", cat:\"ceremony\", badge:\"Kickoff\",\n         desc:\"Gala Days officially begins! Join us as the committee opens the 2026 festival \u2014 then stick around for the Dessert Contest. Some seriously fabulous desserts are on the table. Which one will be your favourite?\"}\n      ]},\n      \"Thu\":{ date:\"Thursday, Sept 3\", events:[\n        {name:\"Concert in the Park\", time:\"7:00 PM\", venue:\"Centennial Park\", cat:\"concert\", badge:\"Music\",\n         desc:\"An evening of live music in Centennial Park to ease into the long weekend. Bring a chair, bring the family, and enjoy the sounds of the Valley.\"}\n      ]},\n      \"Fri\":{ date:\"Friday, Sept 4\", events:[\n        {name:\"Secret Garden\", time:\"5:30 PM\", venue:\"Spicer Park\", cat:\"quiet\", badge:\"Kids\",\n         desc:\"Tucked away in Spicer Park, away from the main grounds, a secret garden designed as an arts, crafts and sensory experience for children who prefer a quieter event. Edible play dough, a paper-plate person, scratch & sniff finger painting and more!\"},\n        {name:\"Pub Crawl\", time:\"6:00 PM\", venue:\"Berwick Legion\", cat:\"pubcrawl\", badge:\"19+\", flag:\"19+\",\n         desc:\"Starting at the Berwick Legion \u2014 just one of the stops along the way. Where will it lead you this year? A 19+ event.\"},\n        {name:\"Family Fun Foam Party\", time:\"6:30 PM\", venue:\"Rainforth Park\", cat:\"foam\", badge:\"Family\",\n         desc:\"Mountains of foam, music and mayhem in Rainforth Park. Bring a towel \u2014 you're going to need it!\"},\n        {name:\"Live Music \u2014 The Non-Refundables\", time:\"6:30 PM \u2013 9:00 PM\", venue:\"Rainforth Park\", cat:\"concert\", badge:\"Music\",\n         desc:\"Kick off the Friday night party with a live set from The Non-Refundables in Rainforth Park. Grab a bite at the BBQ, find a spot on the grass, and settle in for the evening before the drone show lights up the sky.\"},\n        {name:\"Valley Wildcats Exhibition Game\", time:\"7:00 PM\", venue:\"KMCC\", cat:\"hockey\", badge:\"Sports\",\n         desc:\"Come see an exhibition hockey game featuring the Valley Wildcats at the Kings Mutual Century Centre. Cheer on the home team!\"},\n        {name:\"Arm Wrestling \u2014 Super Showdown\", time:\"8:00 PM\", venue:\"Rainforth Park\", cat:\"arm\", badge:\"Compete\",\n         desc:\"The Super Showdown kicks off an expanded tournament weekend. Arm wrestling for all ages and experience levels \u2014 come test your grip or just watch the drama unfold. (Battle Zone continues Saturday.)\"},\n        {name:\"Drone Show\", time:\"9:15 PM\", venue:\"Rainforth Park\", cat:\"drone\", badge:\"Featured\", flag:\"Rain date: Sun\",\n         desc:\"New this year! Round out the night with a dazzling drone light show lighting up the sky over the grounds. Best viewed from a distance \u2014 watch from the street or the park, not right under the launch. Rain date: Sunday.\"},\n        {name:\"Comedy Show\", time:\"Doors 9:30 PM \u00b7 Show 10:00 PM\", venue:\"Lions Hall\", cat:\"comedy\", badge:\"19+\", flag:\"19+ \u00b7 Cash bar\",\n         desc:\"Cap off Friday night with live stand-up at the Lions Hall. Doors at 9:30, show at 10:00. A 19+ event with a cash bar.\",\n         tix:{label:\"Get tickets\", url:COMEDY_TICKET_URL}}\n      ]},\n      \"Sat\":{ date:\"Saturday, Sept 5\", events:[\n        {name:\"Lions Breakfast\", time:\"8:00 AM\", venue:\"Lions Hall\", cat:\"breakfast\", badge:\"Food\",\n         desc:\"Start your weekend off right with the Lions Club's famous breakfast! Eggs, bacon, sausage, pancakes, tea and coffee. Served 8:00\u201310:00 AM.\"},\n        {name:\"Arm Wrestling \u2014 Battle Zone\", time:\"Reg 10:00 AM \u00b7 12:00 PM\", venue:\"Carol's Place \/ Rainforth Park\", cat:\"arm\", badge:\"Compete\",\n         desc:\"Round two of the tournament. Registration starts at 10:00 AM at Carol's Place; competition gets going at noon in Rainforth Park. All ages and experience levels welcome.\"},\n        {name:\"Kids Games\", time:\"10:00 AM\", venue:\"Centennial Park\", cat:\"kids\", badge:\"Kids\",\n         desc:\"A morning of games and fun for the little ones in Centennial Park. Come play!\"},\n        {name:\"The Canteens\", time:\"Open 10:00 AM\", venue:\"Centennial Park\", cat:\"canteen\", badge:\"Food\",\n         desc:\"The canteens are open Saturday, Sunday and Monday. Local youth groups run the booths \u2014 the Lions, Scouts, Junior Curling on the grounds and Ringette over at KMCC. Every bite supports the kids.\"},\n        {name:\"Face Painting & Kid Zone\", time:\"11:30 AM \u2013 3:30 PM\", venue:\"Centennial Park\", cat:\"facepaint\", badge:\"Kids\",\n         desc:\"Turn your little one into a tiger, a butterfly, or whatever they dream up. Face painting and a kid zone running through the afternoon.\"},\n        {name:\"Quiet Touch a Truck\", time:\"11:30 AM\", venue:\"Rainforth Park\", cat:\"truck\", badge:\"Kids\", flag:\"Quiet hour\",\n         desc:\"Ever wanted to climb inside a tractor? A transfer truck? A fire truck? Come see these and more in Rainforth Park. This first hour is sensory-friendly \u2014 no sirens, horns or loud noises.\"},\n        {name:\"Modified Lawn Tractors\", time:\"12:00 PM\", venue:\"Rainforth Park\", cat:\"tractor\", badge:\"Grounds\",\n         desc:\"The modified lawn tractors are back! Come see how much they can pull. Just follow the roars.\"},\n        {name:\"Dunk Tank\", time:\"12:00 PM\", venue:\"Rainforth Park\", cat:\"dunk\", badge:\"Fun\",\n         desc:\"Who will you find sitting in the tank that you'd love to dunk? I bet there'll be some teachers you know! Saturday and Sunday at noon.\"},\n        {name:\"Flower Bouquet Bar\", time:\"12:00 PM\", venue:\"Rainforth Park\", cat:\"flowers\", badge:\"Market\",\n         desc:\"A gorgeous display of fresh, locally grown flowers under the tent. Enjoy them for their beauty and fragrance, or pick your favourites and build a unique bouquet of your own.\"},\n        {name:\"Cookie Decorating\", time:\"12:00 PM \u2013 2:00 PM\", venue:\"Rainforth Park\", cat:\"kids\", badge:\"Kids\",\n         desc:\"Sprinkles, icing and a whole lot of imagination. Decorate (and eat) your own cookie creation. Great for all ages.\"},\n        {name:\"Music in the Gazebo\", time:\"12:00 PM \u2013 5:00 PM\", venue:\"Centennial Park\", cat:\"music\", badge:\"Music\",\n         desc:\"Come enjoy some of our local musicians who generously donate their time and talents to Gala Days. Bring a chair if you wish and settle in for the afternoon.\"},\n        {name:\"Touch a Truck\", time:\"12:30 PM\", venue:\"Rainforth Park\", cat:\"truck\", badge:\"Kids\", flag:\"Loud!\",\n         desc:\"Same trucks as the quiet hour \u2014 but now the horns will blow, the sirens will sound, and there will be lots and lots of noise. Bring the kids who love a good honk!\"},\n        {name:\"Cow Pie Bingo\", time:\"1:00 PM\", venue:\"Behind KMCC\", cat:\"cowpie\", badge:\"Fundraiser\",\n         desc:\"Buy a numbered square and let nature do the rest \u2014 wherever the cow makes her, ahem, deposit, that square wins. Will yours be the lucky one? A hilarious Gala Days tradition.\"},\n        {name:\"Carnival Games for Kids\", time:\"2:00 PM\", venue:\"Centennial Park\", cat:\"kids\", badge:\"Kids\",\n         desc:\"Can you toss the apple into the basket? Land a ring on the bottle? Nab a prize from the fishpond? Games, prizes and surprises for the whole crew.\"},\n        {name:\"More Pies (Pie Eating Contest)\", time:\"2:00 PM\", venue:\"Rainforth Park\", cat:\"pie\", badge:\"Compete\",\n         desc:\"Hands behind your back, face in the pie. Who can finish first? Messy, delicious chaos in Rainforth Park.\"},\n        {name:\"Knee High to a Grasshopper \u2014 Storytelling with Liz\", time:\"2:00 PM\", venue:\"Rainforth Park\", cat:\"story\", badge:\"Kids\",\n         desc:\"Join Liz as she tells stories full of imagination for children of all ages. Her characters are fun, resourceful and loving, brought to life with felt hand puppets and props to delight her wide-eyed audience.\"},\n        {name:\"Firefighter Fun for Kids\", time:\"3:00 PM\", venue:\"Rainforth Park\", cat:\"firefighter\", badge:\"Kids\", flag:\"Interactive\",\n         desc:\"Your local firefighters bring the trucks and the gear for a hands-on afternoon with the kids. Get up close and see what it takes to answer the call.\"},\n        {name:\"ABBA Tribute Concert\", time:\"8:30 PM \u2013 12:30 AM\", venue:\"Rainforth Park\", cat:\"concert\", badge:\"Featured\", flag:\"19+ \u00b7 Cash bar\",\n         desc:\"Dancing Queen, here we go! Spend the evening with a top-tier ABBA tribute act under the stars. You will not be disappointed. A 19+ event with a cash bar.\",\n         tix:{label:\"Get tickets\", url:ABBA_TICKET_URL}}\n      ]},\n      \"Sun\":{ date:\"Sunday, Sept 6\", events:[\n        {name:\"74th Annual Road Race\", time:\"9:00 AM\", venue:\"Centennial Park\", cat:\"run\", badge:\"Sports\",\n         desc:\"Part of the Run NS Road Race Series. Runners start at Centennial Park, race through town, and loop back. Come see them off, or cheer them on from your yard if you're on the route \u2014 with a couple hundred runners, they're hard to miss! Drivers, watch for runners Sunday morning.\"},\n        {name:\"Livestock Show\", time:\"9:00 AM\", venue:\"Behind KMCC\", cat:\"livestock\", badge:\"Grounds\",\n         desc:\"A Valley tradition behind the Kings Mutual Century Centre. Pre-registration isn't required \u2014 register on site starting at 8:00 AM.\"},\n        {name:\"Live Music at the Car Show\", time:\"9:00 AM\", venue:\"Rainforth Park\", cat:\"music\", badge:\"Music\",\n         desc:\"Enjoy the musical talents of local performers who've donated their time to the Annual Car Show. A great soundtrack to a morning among the classics.\"},\n        {name:\"Chicken BBQ\", time:\"11:00 AM\", venue:\"Centennial Park\", cat:\"chicken\", badge:\"Food\",\n         desc:\"Gala Days' famous Chicken BBQ! A plate gets you chicken, potato salad, coleslaw and a roll. Come early before they sell out \u2014 and if you'd rather stay in the car, pull up to Carol's Place gate and we'll bring it right to you.\"},\n        {name:\"Annual Car Show\", time:\"11:00 AM\", venue:\"Rainforth Ballfield\", cat:\"carshow\", badge:\"Featured\",\n         desc:\"Our huge Car Show fills the ballfield. Entries roll in early, with cars open for viewing at 11:00 AM. Vote for your favourite in the People's Choice, and enjoy live music throughout the day.\"},\n        {name:\"Music @ Gazebo\", time:\"11:00 AM \u2013 12:30 PM\", venue:\"Centennial Park\", cat:\"music\", badge:\"Music\",\n         desc:\"More local musicians take the gazebo in Centennial Park. Pull up a chair and enjoy.\"},\n        {name:\"Firefighters Bingo\", time:\"11:00 AM\", venue:\"Carol's Place\", cat:\"bingo\", badge:\"Fun\",\n         desc:\"The ever-popular Firefighters Bingo returns at Carol's Place in Rainforth Park. Dab your card and hope for that lucky line. Runs Sunday and Monday.\"},\n        {name:\"Craft Fair\", time:\"11:00 AM \u2013 3:00 PM\", venue:\"Rainforth Park (under the tent)\", cat:\"craft\", badge:\"Market\",\n         desc:\"Browse a wide selection of local crafters and artisans under the big tent. Find something handmade and one of a kind to take home.\"},\n        {name:\"Dunk Tank\", time:\"12:00 PM\", venue:\"Rainforth Park\", cat:\"dunk\", badge:\"Fun\",\n         desc:\"Back for round two! Take your best shot and send someone into the drink. All in good fun (and a good cause).\"},\n        {name:\"Ox Pulls\", time:\"12:00 PM\", venue:\"Rainforth Park\", cat:\"ox\", badge:\"Grounds\",\n         desc:\"A traditional agricultural event. Which team of oxen can pull the heaviest weight? Come feel the ground shake.\"},\n        {name:\"Pet Show\", time:\"1:00 PM\", venue:\"Rainforth Park\", cat:\"petshow\", badge:\"Family\",\n         desc:\"Fun categories like Best Dressed, Best Trick, Best Hair and more! Bring your best friend and show them off. Entry form available under the Forms tab.\"},\n        {name:\"Carnival Games for Kids\", time:\"2:00 PM\", venue:\"Centennial Park\", cat:\"kids\", badge:\"Kids\",\n         desc:\"More games, more prizes, more surprises. Toss, ring, and fish your way to a win in Centennial Park.\"},\n        {name:\"Storytelling with Liz\", time:\"2:00 PM\", venue:\"Rainforth Park\", cat:\"story\", badge:\"Kids\",\n         desc:\"Liz returns with another round of imaginative tales for children of all ages, puppets and props included. A gentle, magical break in the afternoon.\"},\n        {name:\"Berwick's Got Talent\", time:\"5:00 PM\", venue:\"Rainforth Park (under the tent)\", cat:\"talent\", badge:\"Featured\", flag:\"Registered acts\",\n         desc:\"The Valley's brightest take the stage under the tent. This year's show features pre-registered acts \u2014 come cheer on your neighbours as they sing, dance and dazzle.\"},\n        {name:\"3 Horse Pulls\", time:\"7:00 PM\", venue:\"Rainforth Park\", cat:\"horsepull\", badge:\"Grounds\",\n         desc:\"Everyone knows 2-horse pulls \u2014 but three? Come experience this powerful twist on an old favourite as the sun goes down.\"}\n      ]},\n      \"Mon\":{ date:\"Monday, Sept 7\", events:[\n        {name:\"Light Horse Show\", time:\"9:00 AM\", venue:\"Behind KMCC\", cat:\"lighthorse\", badge:\"Grounds\",\n         desc:\"A relaxed light horse show \u2014 the perfect low-pressure ring for horses and riders new to showing to gain experience and confidence. See the Berwick Gala Days Horse Show Facebook page for details.\"},\n        {name:\"Bike Rodeo\", time:\"9:00 AM\", venue:\"Rainforth Park\", cat:\"bmx\", badge:\"Kids\",\n         desc:\"A fun, safety-focused bike course for kids in Rainforth Park. Bring your wheels and your helmet!\"},\n        {name:\"Highland Games\", time:\"9:00 AM\", venue:\"Rainforth Park\", cat:\"battle\", badge:\"Featured\",\n         desc:\"Watch some of the strongest folks around \u2014 in kilts \u2014 compete in traditional feats of strength. Learn where these events came from, and maybe get a chance to try tossing something heavy yourself! New this year: youth competitors and an all-day public clinic.\"},\n        {name:\"Grand Street Parade\", time:\"11:00 AM\", venue:\"Commercial Street\", cat:\"parade\", badge:\"Featured\", flag:\"New: combined!\",\n         desc:\"The big one. New for 2026, the Children's Parade joins the Grand Street Parade for one grand procession down Commercial Street. The first stretch is a Quiet Zone so noise-sensitive families can enjoy it too. Want to enter? See the Parade Application under Updates.\"},\n        {name:\"Firefighters Bingo\", time:\"11:00 AM\", venue:\"Carol's Place\", cat:\"bingo\", badge:\"Fun\",\n         desc:\"One more chance to dab your way to a win at Carol's Place. Hope to see you there!\"},\n        {name:\"Face Painting\", time:\"11:30 AM \u2013 3:30 PM\", venue:\"Centennial Park\", cat:\"facepaint\", badge:\"Kids\",\n         desc:\"Whiskers, rainbows and superheroes, one small face at a time. Running through the afternoon in Centennial Park.\"},\n        {name:\"Sip & Sample\", time:\"12:00 PM\", venue:\"Rainforth Park (under the tent)\", cat:\"sip\", badge:\"19+\", flag:\"19+\",\n         desc:\"Local craft breweries and cideries bring their best for you to sample while you enjoy live music under the tent. Find a new favourite \u2014 and take some home. A 19+ event.\"},\n        {name:\"Dunk Tank\", time:\"12:00 PM\", venue:\"Rainforth Park\", cat:\"dunk\", badge:\"Fun\",\n         desc:\"Last call for the dunk tank! One more chance to send a willing volunteer for a splash.\"},\n        {name:\"Horse Pulls\", time:\"12:00 PM\", venue:\"Rainforth Park\", cat:\"horsepull\", badge:\"Grounds\",\n         desc:\"Traditional 2-horse pulls in Rainforth Park. Who can pull the most? A fitting finale for the teamsters.\"},\n        {name:\"Gazebo Music\", time:\"12:00 PM \u2013 3:00 PM\", venue:\"Centennial Park\", cat:\"music\", badge:\"Music\",\n         desc:\"Local musicians see out the long weekend from the gazebo. Grab a seat and enjoy the last afternoon of music.\"},\n        {name:\"Valley Hooper Troopers\", time:\"1:00 PM\", venue:\"Rainforth Park\", cat:\"hoop\", badge:\"Show\",\n         desc:\"Watch these energetic performers pull off fun and amazing tricks with their hula hoops \u2014 you'll want to jump in and join them!\"},\n        {name:\"Cool Moves BMX Demo\", time:\"1:00 PM\", venue:\"Rainforth Park\", cat:\"bmx\", badge:\"Show\",\n         desc:\"Come watch these riders do things that shouldn't be possible. They will truly amaze you \u2014 jaws will drop.\"},\n        {name:\"Adult Battle Zone\", time:\"2:00 PM\", venue:\"Rainforth Park\", cat:\"battle\", badge:\"Compete\", flag:\"Pre-register\",\n         desc:\"Grown-ups, this one's for you \u2014 a high-energy battle of strength and strategy. Pre-registration is required, so sign up ahead on the site under Updates.\"},\n        {name:\"Tug O' War\", time:\"3:00 PM\", venue:\"Rainforth Ballfield\", cat:\"tug\", badge:\"Compete\",\n         desc:\"Teams of youth, women and men dig in for the Gala Days trophy. Grab your crew, or come lend your voice to the crowd.\"},\n        {name:\"Magician\", time:\"Walkabout 3:30 PM \u00b7 Tent show 4:00\u20135:00 PM\", venue:\"Rainforth Park\", cat:\"magician\", badge:\"Featured\",\n         desc:\"Our renowned magician wanders the grounds working his magic, then takes the tent for a full show from 4:00 to 5:00 PM. The perfect way to end your Gala Days.\"}\n      ]}\n    };\n\n    var DAYS = [\n      [\"Wed\",\"Wed\",\"Sept 2\"],[\"Thu\",\"Thu\",\"Sept 3\"],[\"Fri\",\"Fri\",\"Sept 4\"],\n      [\"Sat\",\"Sat\",\"Sept 5\"],[\"Sun\",\"Sun\",\"Sept 6\"],[\"Mon\",\"Mon\",\"Sept 7\"]\n    ];\n\n    var tabsEl = document.getElementById('geTabs');\n    var listEl = document.getElementById('geList');\n\n    function esc(s){ return (s||'').replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;'); }\n    function timeVal(t){\n      var m=(t||'').match(\/(\\d+):(\\d+)\\s*(AM|PM)\/i); if(!m) return 9999;\n      var h=parseInt(m[1],10)%12; if(\/PM\/i.test(m[3])) h+=12;\n      return h*60+parseInt(m[2],10);\n    }\n\n    function renderDay(key){\n      var day=DATA[key]; if(!day){ listEl.innerHTML=''; return; }\n      var events=day.events.slice().sort(function(a,b){ return timeVal(a.time)-timeVal(b.time); });\n      var html='<div class=\"ge-dayhead\">'+esc(day.date)\n        +'<span class=\"ge-daycount\">'+events.length+' event'+(events.length===1?'':'s')+'<\/span><\/div>';\n      html+='<div class=\"ge-grid\">';\n      events.forEach(function(ev){\n        var art=(ART[ev.cat]||ART.music)();\n        html+='<article class=\"ge-card\">'\n          +'<div class=\"ge-art\">'+art\n          +   (ev.badge?'<span class=\"ge-badge\">'+esc(ev.badge)+'<\/span>':'')\n          +   (ev.flag?'<span class=\"ge-flag\">'+esc(ev.flag)+'<\/span>':'')\n          +'<\/div>'\n          +'<div class=\"ge-body\">'\n          +  '<h3 class=\"ge-name\">'+esc(ev.name)+'<\/h3>'\n          +  '<div class=\"ge-meta\">'\n          +     '<span class=\"ge-chip\">'+I.clock+esc(ev.time)+'<\/span>'\n          +     '<span class=\"ge-chip\" style=\"color:var(--leaf-dark)\">'+I.pin+esc(ev.venue)+'<\/span>'\n          +  '<\/div>'\n          +  '<p class=\"ge-desc\">'+esc(ev.desc)+'<\/p>'\n          +  '<div class=\"ge-actions\">'\n          +     '<a class=\"ge-btn dir\" href=\"'+mapUrl(ev.venue)+'\" target=\"_blank\" rel=\"noopener\">'+I.arrow+'Directions<\/a>'\n          +     (ev.tix?'<a class=\"ge-btn tix\" href=\"'+ev.tix.url+'\" target=\"_blank\" rel=\"noopener\">'+I.ticket+esc(ev.tix.label)+'<\/a>':'')\n          +  '<\/div>'\n          +'<\/div>'\n          +'<\/article>';\n      });\n      html+='<\/div>';\n      listEl.innerHTML=html;\n    }\n\n    function selectTab(key){\n      Array.prototype.forEach.call(tabsEl.children,function(t){\n        t.setAttribute('aria-selected', t.dataset.key===key?'true':'false');\n      });\n      renderDay(key);\n    }\n\n    DAYS.forEach(function(d){\n      var b=document.createElement('button');\n      b.className='ge-tab'; b.dataset.key=d[0]; b.setAttribute('role','tab');\n      b.innerHTML=esc(d[1])+'<span class=\"ge-tabday\">'+esc(d[2])+'<\/span>';\n      b.addEventListener('click',function(){ selectTab(d[0]); });\n      tabsEl.appendChild(b);\n    });\n\n    selectTab('Wed');\n  })();\n  <\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Berwick &amp; District Gala Days Events September 2\u20137, 2026 \u00b7 Celebrate the Valley Six days of foam, fiddles, fast cars and heavy horses. Pick a day below to see what&#8217;s on \u2014 tap any event for directions, and grab tickets where you see them. Times &amp; details subject to change. For the full hour-by-hour rundown, [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-228","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/berwickgaladays.org\/index.php?rest_route=\/wp\/v2\/pages\/228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/berwickgaladays.org\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/berwickgaladays.org\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/berwickgaladays.org\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/berwickgaladays.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=228"}],"version-history":[{"count":5,"href":"https:\/\/berwickgaladays.org\/index.php?rest_route=\/wp\/v2\/pages\/228\/revisions"}],"predecessor-version":[{"id":540,"href":"https:\/\/berwickgaladays.org\/index.php?rest_route=\/wp\/v2\/pages\/228\/revisions\/540"}],"wp:attachment":[{"href":"https:\/\/berwickgaladays.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}