{"id":556,"date":"2025-04-26T22:51:23","date_gmt":"2025-04-26T22:51:23","guid":{"rendered":"https:\/\/vancouver.tie.org\/?page_id=556"},"modified":"2026-10-22T04:10:14","modified_gmt":"2026-10-22T04:10:14","slug":"events","status":"publish","type":"page","link":"https:\/\/vancouver.tie.org\/index.php\/events\/","title":{"rendered":"Events"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"556\" class=\"elementor elementor-556\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c6a8507 e-con-full e-flex e-con e-parent\" data-id=\"c6a8507\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-33af319 elementor-widget elementor-widget-html\" data-id=\"33af319\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!--\n  TiE Vancouver - Events page\n  Paste this whole file into an Elementor \"HTML\" widget (or a Gutenberg \"Custom HTML\" block)\n  on the Events page. It does not include the site header\/footer; your theme already provides those.\n\n  To update events: edit the EVENTS list in the <script> below. Past\/upcoming is worked out\n  automatically from today's date, so finished events move to the \"Past\" tab on their own.\n  To update the gallery: edit the ALBUMS list.\n  Notify me opens the visitor's email app with a message to admin@vancouver.tie.org.\n-->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@600;700;800&family=Open+Sans:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n#tve{--red:#C41425;--red-hi:#ED1B2F;--ink:#414141;--muted:#5E5E5E;--line:#E6E6E6;--soft:#F7F7F7;--tint:#FBD9DC;--tint-ink:#8E0E1B;--night:#1F1F1F;\n  font-family:'Open Sans',Lato,Arial,sans-serif;color:var(--ink);background:#fff;line-height:1.5;font-size:16px}\n#tve *,#tve *::before,#tve *::after{box-sizing:border-box}\n#tve h1,#tve h2,#tve h3,#tve h4{font-family:Montserrat,Poppins,Arial,sans-serif;color:var(--ink);margin:0}\n#tve p{margin:0}\n#tve a{color:var(--red)}\n#tve button{font-family:inherit}\n#tve .tve-wrap{max-width:1240px;margin:0 auto;padding:0 24px}\n#tve .tve-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}\n#tve [hidden]{display:none !important}\n#tve :focus-visible{outline:3px solid var(--red-hi);outline-offset:2px}\n\n\/* buttons *\/\n#tve .tve-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 20px;border-radius:8px;font-weight:700;font-size:15px;text-decoration:none;cursor:pointer;border:2px solid transparent;line-height:1.2}\n#tve .tve-btn--red{background:var(--red);color:#fff}\n#tve .tve-btn--red:hover{background:#A51020;color:#fff}\n#tve .tve-btn--line{background:#fff;color:var(--ink);border-color:var(--ink)}\n#tve .tve-btn--line:hover{background:var(--soft)}\n#tve .tve-btn--outline-red{background:#fff;color:var(--red);border-color:var(--red)}\n#tve .tve-btn--outline-red:hover{background:#FFF5F6}\n#tve .tve-btn svg{flex:none}\n\n\/* hero *\/\n#tve .tve-hero{background:var(--soft);border-bottom:1px solid var(--line)}\n#tve .tve-hero .tve-wrap{display:flex;flex-wrap:wrap;gap:40px;align-items:center;padding-top:56px;padding-bottom:56px}\n#tve .tve-hero__text{flex:1 1 420px;min-width:0;display:flex;flex-direction:column;gap:16px}\n#tve .tve-pillars{font-family:Montserrat,sans-serif;font-weight:700;font-size:13px;letter-spacing:.12em;color:var(--red)}\n#tve .tve-hero h1{font-weight:800;font-size:clamp(36px,5vw,56px);line-height:1.04}\n#tve .tve-hero__lede{font-size:18px;line-height:1.6;max-width:560px}\n#tve .tve-hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px}\n#tve .tve-feat{flex:1 1 440px;min-width:0;background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}\n#tve .tve-feat__top{background:var(--ink);background-image:radial-gradient(rgba(255,255,255,.14) 2px,transparent 2.6px);background-size:20px 20px;color:#fff;padding:26px 28px 22px;display:flex;justify-content:space-between;gap:16px;align-items:flex-start}\n#tve .tve-feat__top h2{color:#fff;font-weight:800;font-size:28px;line-height:1.15;margin-top:8px}\n#tve .tve-feat__kicker{display:inline-flex;height:26px;align-items:center;padding:0 10px;border-radius:13px;background:#fff;color:var(--ink);font-size:12px;font-weight:700}\n#tve .tve-feat__meta{font-size:15px;opacity:.92;margin-top:6px}\n#tve .tve-count{flex:none;text-align:center;background:var(--red);border-radius:14px;padding:12px 14px;min-width:88px}\n#tve .tve-count b{display:block;font-family:Montserrat,sans-serif;font-weight:800;font-size:32px;line-height:1}\n#tve .tve-count span{display:block;font-size:12px;font-weight:700;margin-top:4px}\n#tve .tve-feat__body{padding:20px 28px 24px;display:flex;flex-direction:column;gap:14px}\n#tve .tve-feat__body .tve-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}\n\n\/* layout *\/\n#tve .tve-main{display:flex;flex-wrap:wrap;gap:40px;align-items:flex-start;padding-top:40px;padding-bottom:56px}\n#tve .tve-col{flex:999 1 600px;min-width:0;display:flex;flex-direction:column;gap:20px}\n#tve .tve-aside{flex:1 1 300px;min-width:0;display:flex;flex-direction:column;gap:20px}\n\n\/* toolbar *\/\n#tve .tve-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line)}\n#tve .tve-tabs{display:flex}\n#tve .tve-tab{min-height:46px;padding:0 4px;margin-right:22px;background:none;border:0;border-bottom:3px solid transparent;color:var(--ink);font-family:Montserrat,sans-serif;font-weight:700;font-size:16px;cursor:pointer;margin-bottom:-1px}\n#tve .tve-tab[aria-selected=\"true\"]{border-bottom-color:var(--red-hi);color:var(--red)}\n#tve .tve-seg{display:flex;gap:4px;background:#F2F2F2;border-radius:10px;padding:4px;margin-bottom:10px}\n#tve .tve-seg button{min-height:36px;min-width:60px;padding:0 14px;border:0;border-radius:8px;cursor:pointer;font-weight:700;font-size:14px;background:transparent;color:var(--muted);display:inline-flex;align-items:center;gap:6px}\n#tve .tve-seg button[aria-pressed=\"true\"]{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.15)}\n#tve .tve-search{position:relative}\n#tve .tve-search svg{position:absolute;left:14px;top:15px}\n#tve .tve-search input{width:100%;min-height:48px;padding:0 14px 0 42px;border:1px solid #CFCFCF;border-radius:10px;font-size:15px;font-family:inherit;color:var(--ink)}\n#tve .tve-chips{display:flex;flex-wrap:wrap;gap:10px}\n#tve .tve-chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:22px;cursor:pointer;font-size:14px;font-weight:700;background:#fff;color:var(--ink);border:2px solid #D6D6D6}\n#tve .tve-chip[aria-pressed=\"true\"]{background:var(--ink);color:#fff;border-color:var(--ink)}\n#tve .tve-chip small{font-size:12px;opacity:.75}\n#tve .tve-dot{display:inline-block;width:14px;height:14px;border-radius:7px}\n\n\/* category colours *\/\n#tve .c-F{background:var(--red);color:#fff}\n#tve .c-P{background:var(--tint);color:var(--tint-ink)}\n#tve .c-C{background:var(--ink);color:#fff}\n#tve .c-G{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}\n#tve .c-TBA{background:#F2F2F2;color:var(--ink)}\n#tve .tve-chip[aria-pressed=\"true\"] .c-G{box-shadow:inset 0 0 0 2px #fff;background:transparent}\n\n\/* list *\/\n#tve .tve-group{display:flex;flex-direction:column;gap:12px}\n#tve .tve-group h3{font-weight:800;font-size:18px;letter-spacing:.06em}\n#tve .tve-card{display:flex;flex-wrap:wrap;gap:20px;align-items:center;border:1px solid var(--line);border-radius:16px;padding:20px 22px;background:#fff}\n#tve .tve-date{flex:none;width:86px;height:86px;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-family:Montserrat,sans-serif}\n#tve .tve-date em{font-style:normal;font-weight:700;font-size:13px;letter-spacing:.08em}\n#tve .tve-date b{font-weight:800;font-size:24px;line-height:1}\n#tve .tve-date i{font-style:normal;font-size:11px;font-weight:600;font-family:'Open Sans',sans-serif}\n#tve .tve-card__body{flex:999 1 300px;min-width:0;display:flex;flex-direction:column;gap:6px}\n#tve .tve-tags{display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n#tve .tve-badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;font-size:11px;font-weight:700;letter-spacing:.04em}\n#tve .tve-scope{font-size:13px;font-weight:600;color:var(--muted)}\n#tve .tve-card h4{font-weight:700;font-size:20px;line-height:1.3}\n#tve .tve-card p{font-size:15px}\n#tve .tve-meta{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px;color:var(--muted)}\n#tve .tve-meta span{display:inline-flex;align-items:center;gap:6px}\n#tve .tve-card__act{flex:1 0 210px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;position:relative}\n#tve .tve-invite{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:8px;background:#F2F2F2;font-weight:700;font-size:14px}\n#tve .tve-linkbtn{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 4px;background:none;border:0;color:var(--ink);font-weight:700;font-size:14px;cursor:pointer}\n#tve .tve-menu{position:absolute;top:100%;right:0;z-index:5;width:240px;background:#fff;border:1px solid #E0E0E0;border-radius:12px;box-shadow:0 16px 36px rgba(0,0,0,.14);padding:6px;display:flex;flex-direction:column}\n#tve .tve-menu a,#tve .tve-menu button{display:block;text-align:left;padding:11px 12px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:14px;font-weight:600;background:none;border:0;cursor:pointer}\n#tve .tve-menu a:hover,#tve .tve-menu button:hover{background:var(--soft)}\n#tve .tve-note{font-size:12px;color:#6B6B6B;text-align:right}\n#tve .tve-empty{padding:32px;border:1px dashed #CFCFCF;border-radius:14px;text-align:center}\n#tve .tve-more{align-self:center}\n\n\/* month *\/\n#tve .tve-monthnav{display:flex;align-items:center;justify-content:space-between;gap:12px}\n#tve .tve-monthnav h3{font-weight:800;font-size:22px;letter-spacing:.04em}\n#tve .tve-round{width:44px;height:44px;border-radius:22px;border:1px solid #CFCFCF;background:#fff;color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center}\n#tve .tve-gridwrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px}\n#tve .tve-grid{min-width:660px;display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}\n#tve .tve-grid .wd{padding:10px;font-family:Montserrat,sans-serif;font-weight:700;font-size:12px;color:var(--muted);background:var(--soft);border-bottom:1px solid var(--line)}\n#tve .tve-grid .cell{min-height:108px;padding:8px;border-right:1px solid #EFEFEF;border-bottom:1px solid #EFEFEF;display:flex;flex-direction:column;gap:4px}\n#tve .tve-grid .cell.off{background:#FAFAFA}\n#tve .tve-grid .tve-daynum{font-size:13px;font-weight:600;color:var(--muted)}\n#tve .tve-pill{display:block;padding:4px 6px;border-radius:6px;font-size:12px;font-weight:700;line-height:1.25}\n#tve .tve-pill.c-F,#tve .tve-pill.c-C{color:#FFFFFF}\n#tve .tve-pill.c-P{color:var(--tint-ink)}\n#tve .tve-pill.c-G{color:var(--ink)}\n#tve .tve-undated{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:14px}\n#tve .tve-undated .tve-pill{display:inline-block;padding:4px 10px;border-radius:12px}\n\n\/* aside *\/\n#tve .tve-panel{border-radius:16px;padding:24px}\n#tve .tve-panel--soft{background:var(--soft)}\n#tve .tve-panel--red{background:var(--red);color:#fff}\n#tve .tve-panel--red h2{color:#fff}\n#tve .tve-panel--line{border:1px solid var(--line)}\n#tve .tve-panel h2{font-weight:800;font-size:18px;margin-bottom:8px}\n#tve .tve-panel p{font-size:14px;line-height:1.55}\n#tve .tve-sched{margin-top:10px}\n#tve .tve-sched div{display:flex;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid #E2E2E2;font-size:15px}\n#tve .tve-sched div:last-child{border-bottom:0}\n#tve .tve-sched b{font-weight:700}\n#tve .tve-panel a.tve-mail{display:inline-block;margin-top:12px;font-size:14px;font-weight:700}\n#tve .tve-panel--red .tve-kick{font-size:12px;font-weight:700;letter-spacing:.08em}\n\n\/* gallery *\/\n#tve .tve-gallery{background:var(--night);color:#fff}\n#tve .tve-gallery .tve-wrap{padding-top:64px;padding-bottom:64px;display:flex;flex-direction:column;gap:28px}\n#tve .tve-gallery h2{color:#fff;font-weight:800;font-size:clamp(28px,3.4vw,40px);line-height:1.1}\n#tve .tve-gallery__head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px}\n#tve .tve-gallery__head p{color:#D9D9D9;margin-top:10px;max-width:620px}\n#tve .tve-ychips{display:flex;gap:8px}\n#tve .tve-ychip{min-height:42px;padding:0 18px;border-radius:21px;cursor:pointer;font-weight:700;font-size:14px;background:transparent;color:#fff;border:2px solid #6B6B6B}\n#tve .tve-ychip[aria-pressed=\"true\"]{background:#fff;color:var(--night);border-color:#fff}\n#tve .tve-albums{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-auto-rows:230px;gap:18px}\n#tve .tve-album{position:relative;overflow:hidden;border:0;padding:0;cursor:pointer;border-radius:16px;background:#333;text-align:left}\n#tve .tve-album img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}\n#tve .tve-album:hover img{transform:scale(1.04)}\n#tve .tve-album::after{content:\"\";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.72) 0%,rgba(0,0,0,.15) 55%,rgba(0,0,0,0) 100%)}\n#tve .tve-album__date{position:absolute;top:16px;left:16px;z-index:1;display:inline-flex;height:26px;align-items:center;padding:0 10px;border-radius:13px;background:rgba(255,255,255,.95);color:var(--ink);font-size:12px;font-weight:700}\n#tve .tve-album__cap{position:absolute;left:18px;right:18px;bottom:16px;z-index:1;display:flex;flex-direction:column;gap:4px;color:#fff}\n#tve .tve-album__cap b{font-family:Montserrat,sans-serif;font-weight:800;font-size:20px;line-height:1.15}\n#tve .tve-album__cap span{font-size:14px;color:#EDEDED}\n#tve .tve-album--big{grid-column:span 2;grid-row:span 2}\n#tve .tve-album--big .tve-album__cap b{font-size:30px}\n@media (max-width:640px){#tve .tve-album--big{grid-column:span 1;grid-row:span 1}#tve .tve-album--big .tve-album__cap b{font-size:22px}}\n\n\/* modals *\/\n#tve .tve-overlay{position:fixed;inset:0;z-index:99999;background:rgba(20,20,20,.6);display:flex;align-items:center;justify-content:center;padding:20px}\n#tve .tve-overlay[hidden]{display:none}\n#tve .tve-dialog{width:100%;max-width:500px;max-height:calc(100vh - 40px);overflow:auto;background:#fff;border-radius:18px;padding:28px;box-shadow:0 30px 60px rgba(0,0,0,.25);display:flex;flex-direction:column;gap:14px}\n#tve .tve-dialog__head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}\n#tve .tve-dialog h2{font-weight:800;font-size:22px;line-height:1.25}\n#tve .tve-kicker{font-size:12px;font-weight:700;letter-spacing:.1em;color:var(--red)}\n#tve .tve-x{flex:none;width:40px;height:40px;border-radius:20px;border:1px solid #DDD;background:#fff;color:var(--ink);cursor:pointer;font-size:20px;line-height:1}\n#tve .tve-dialog label{font-size:14px;font-weight:700}\n#tve .tve-dialog input[type=email]{min-height:48px;padding:0 14px;border:1px solid #BDBDBD;border-radius:8px;font-size:15px;font-family:inherit;width:100%}\n#tve .tve-err{font-size:14px;font-weight:600;color:#B00020}\n#tve .tve-fine{font-size:12px;color:#6B6B6B}\n#tve .tve-hp{position:absolute;left:-9999px}\n#tve .tve-range{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}\n#tve .tve-step{display:flex;align-items:center;justify-content:space-between;gap:6px;border:1px solid #CFCFCF;border-radius:10px;padding:4px}\n#tve .tve-step button{width:40px;height:40px;border:0;border-radius:8px;background:#F2F2F2;color:var(--ink);cursor:pointer;font-size:18px;font-weight:700}\n#tve .tve-step span{font-weight:700;font-size:15px;text-align:center}\n#tve .tve-presets{display:flex;flex-wrap:wrap;gap:8px}\n#tve .tve-presets button{min-height:36px;padding:0 14px;border-radius:18px;border:2px solid #D6D6D6;background:#fff;color:var(--ink);font-weight:700;font-size:13px;cursor:pointer}\n#tve .tve-sum{background:var(--soft);border-radius:12px;padding:14px 16px;font-size:14px}\n#tve .tve-ok{display:flex;align-items:center;gap:12px;font-weight:700}\n#tve .tve-ok span{width:40px;height:40px;border-radius:20px;background:var(--tint);color:var(--tint-ink);display:flex;align-items:center;justify-content:center}\n\n\/* lightbox *\/\n#tve .tve-lb{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:14px}\n#tve .tve-lb[hidden]{display:none}\n#tve .tve-lb img{max-width:min(1100px,100%);max-height:calc(100vh - 160px);object-fit:contain;border-radius:8px}\n#tve .tve-lb__bar{display:flex;align-items:center;justify-content:space-between;gap:16px;width:min(1100px,100%);color:#fff}\n#tve .tve-lb__bar b{font-family:Montserrat,sans-serif;font-size:18px}\n#tve .tve-lb button{width:48px;height:48px;border-radius:24px;border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.08);color:#fff;font-size:22px;cursor:pointer}\n#tve .tve-lb__nav{display:flex;gap:12px;align-items:center;color:#ddd;font-size:14px}\n\n@media (prefers-reduced-motion:reduce){#tve *{transition:none !important;scroll-behavior:auto !important}}\n<\/style>\n\n<div id=\"tve\">\n\n  <section class=\"tve-hero\">\n    <div class=\"tve-wrap\">\n      <div class=\"tve-hero__text\">\n        <span class=\"tve-pillars\">Mentoring, networking, education, incubation and investing<\/span>\n        <h1>Events that move founders forward<\/h1>\n        <p class=\"tve-hero__lede\">Pitch nights, flagship conferences, member socials and the TiECons and summits across the global TiE network, all in one place.<\/p>\n        <div class=\"tve-hero__actions\">\n          <a href=\"#tve-events\" class=\"tve-btn tve-btn--red\">Browse events<\/a>\n          <button type=\"button\" class=\"tve-btn tve-btn--line\" data-action=\"open-pdf\">\n            <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3v12M7 10l5 5 5-5M5 21h14\"\/><\/svg>Download as PDF<\/button>\n        <\/div>\n      <\/div>\n      <article class=\"tve-feat\" id=\"tve-featured\" aria-live=\"polite\"><\/article>\n    <\/div>\n  <\/section>\n\n  <div class=\"tve-wrap tve-main\" id=\"tve-events\">\n    <div class=\"tve-col\">\n      <div class=\"tve-bar\">\n        <div class=\"tve-tabs\" role=\"tablist\" aria-label=\"Event timeframe\">\n          <button type=\"button\" class=\"tve-tab\" role=\"tab\" data-tab=\"up\" aria-selected=\"true\">Upcoming<\/button>\n          <button type=\"button\" class=\"tve-tab\" role=\"tab\" data-tab=\"past\" aria-selected=\"false\">Past<\/button>\n        <\/div>\n        <div class=\"tve-seg\">\n          <button type=\"button\" data-view=\"list\" aria-pressed=\"true\">List<\/button>\n          <button type=\"button\" data-view=\"month\" aria-pressed=\"false\">Month<\/button>\n          <button type=\"button\" data-action=\"open-pdf\" aria-pressed=\"false\" title=\"Download as PDF\">\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3v12M7 10l5 5 5-5M5 21h14\"\/><\/svg>PDF<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"tve-search\">\n        <label for=\"tve-q\" class=\"tve-sr\">Search events<\/label>\n        <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#5E5E5E\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><path d=\"M20 20l-3.5-3.5\"\/><\/svg>\n        <input id=\"tve-q\" type=\"search\" placeholder=\"Search events, cities or programs\" autocomplete=\"off\">\n      <\/div>\n      <div class=\"tve-chips\" role=\"group\" aria-label=\"Filter by category\" id=\"tve-chips\"><\/div>\n      <div id=\"tve-results\" aria-live=\"polite\"><\/div>\n    <\/div>\n\n    <aside class=\"tve-aside\">\n      <section class=\"tve-panel tve-panel--soft\">\n        <h2>Program meetings on Zoom<\/h2>\n        <p>Weekly unless noted, Pacific Time. Members can request the Zoom link.<\/p>\n        <div class=\"tve-sched\">\n          <div><b>TiE Women<\/b><span>Sun 9-10 AM<\/span><\/div>\n          <div><b>TiE Angels<\/b><span>Mon 8-9 AM<\/span><\/div>\n          <div><b>TiE Leadership<\/b><span>Thu 8-9 AM<\/span><\/div>\n          <div><b>TiE Nurture<\/b><span>Sat 8-9 AM<\/span><\/div>\n          <div><b>TiE Board<\/b><span>Monthly, date TBD<\/span><\/div>\n        <\/div>\n        <a class=\"tve-mail\" href=\"mailto:admin@vancouver.tie.org?subject=Zoom%20link%20request\">Request a Zoom link<\/a>\n      <\/section>\n      <section class=\"tve-panel tve-panel--soft\">\n        <h2>Monthly in person<\/h2>\n        <p>Play pickleball, then talk shop with fellow founders.<\/p>\n        <div class=\"tve-sched\">\n          <div><b>Pickleball Entrepreneurs<\/b><span>Thursdays, monthly<\/span><\/div>\n        <\/div>\n        <a class=\"tve-mail\" href=\"https:\/\/www.pickleballpreneurs.ca\" target=\"_blank\" rel=\"noopener\">pickleballpreneurs.ca<\/a>\n      <\/section>\n      <section class=\"tve-panel tve-panel--red\">\n        <span class=\"tve-kick\">TiE Women 2026<\/span>\n        <h2 style=\"font-size:21px;line-height:1.25;margin-top:8px\">Ranah Chavoshi wins the North America &amp; Europe semi-finals<\/h2>\n        <p>She represents TiE Vancouver and North America at the TiE Women Global Finals at TGS Indore, December 14-15.<\/p>\n      <\/section>\n      <section class=\"tve-panel tve-panel--line\">\n        <h2>Host or sponsor<\/h2>\n        <p>Put your brand in front of Vancouver's most ambitious founders and investors.<\/p>\n        <a class=\"tve-mail\" href=\"mailto:ed@vancouver.tie.org?subject=Events%20and%20sponsorship%20enquiry\">Talk to our events team<\/a>\n      <\/section>\n    <\/aside>\n  <\/div>\n\n  <section class=\"tve-gallery\" id=\"tve-gallery\">\n    <div class=\"tve-wrap\">\n      <div class=\"tve-gallery__head\">\n        <div>\n          <h2>Moments from the community<\/h2>\n          <p>Pitches, partnerships and celebrations from TiE Vancouver. Open an album to browse the photos.<\/p>\n        <\/div>\n        <div class=\"tve-ychips\" role=\"group\" aria-label=\"Filter albums by year\" id=\"tve-ychips\"><\/div>\n      <\/div>\n      <div class=\"tve-albums\" id=\"tve-albums\"><\/div>\n    <\/div>\n  <\/section>\n\n  <!-- PDF dialog -->\n  <div class=\"tve-overlay\" id=\"tve-pdf\" hidden>\n    <div class=\"tve-dialog\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"tve-pdf-title\">\n      <div class=\"tve-dialog__head\">\n        <div><span class=\"tve-kicker\">Download<\/span><h2 id=\"tve-pdf-title\">Events calendar as PDF<\/h2><\/div>\n        <button type=\"button\" class=\"tve-x\" data-close aria-label=\"Close\">&#x00d7;<\/button>\n      <\/div>\n      <p style=\"font-size:15px\">Choose the months to include. The PDF lists every TiE Vancouver and TiE Global network event in that range, colour-coded by category, plus the regular program meetings.<\/p>\n      <div class=\"tve-range\">\n        <div style=\"display:flex;flex-direction:column;gap:8px\"><span style=\"font-size:13px;font-weight:700\">From<\/span>\n          <div class=\"tve-step\"><button type=\"button\" data-step=\"from:-1\" aria-label=\"Earlier start month\">&#x2039;<\/button><span id=\"tve-from\"><\/span><button type=\"button\" data-step=\"from:1\" aria-label=\"Later start month\">&#x203a;<\/button><\/div><\/div>\n        <div style=\"display:flex;flex-direction:column;gap:8px\"><span style=\"font-size:13px;font-weight:700\">To<\/span>\n          <div class=\"tve-step\"><button type=\"button\" data-step=\"to:-1\" aria-label=\"Earlier end month\">&#x2039;<\/button><span id=\"tve-to\"><\/span><button type=\"button\" data-step=\"to:1\" aria-label=\"Later end month\">&#x203a;<\/button><\/div><\/div>\n      <\/div>\n      <div class=\"tve-presets\" id=\"tve-presets\"><\/div>\n      <div class=\"tve-sum\" id=\"tve-pdf-sum\"><\/div>\n      <button type=\"button\" class=\"tve-btn tve-btn--red\" data-action=\"make-pdf\">\n        <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3v12M7 10l5 5 5-5M5 21h14\"\/><\/svg>Download PDF<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Gallery lightbox -->\n  <div class=\"tve-lb\" id=\"tve-lb\" hidden role=\"dialog\" aria-modal=\"true\" aria-label=\"Photo album\">\n    <div class=\"tve-lb__bar\"><b id=\"tve-lb-title\"><\/b><button type=\"button\" data-close aria-label=\"Close album\">&#x00d7;<\/button><\/div>\n    <img id=\"tve-lb-img\" alt=\"\">\n    <div class=\"tve-lb__nav\"><button type=\"button\" data-lb=\"-1\" aria-label=\"Previous photo\">&#x2039;<\/button><span id=\"tve-lb-count\"><\/span><button type=\"button\" data-lb=\"1\" aria-label=\"Next photo\">&#x203a;<\/button><\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function () {\n  'use strict';\n\n  \/* ============================================================\n     SETTINGS\n     ============================================================ *\/\n  var CONFIG = {\n    adminEmail: 'admin@vancouver.tie.org',\n    pdfFirstMonth: [2025, 10],   \/\/ [year, monthIndex 0-11] earliest month offered in the PDF range\n    pdfLastMonth: [2027, 11],\n    timezone: 'America\/Vancouver'\n  };\n\n  \/* ============================================================\n     EVENTS\n     s \/ e : start \/ end date 'YYYY-MM-DD'. For month-only events use 'YYYY-MM'.\n     scope : 'V' TiE Vancouver, 'G' TiE Global network\n     cat   : 'F' flagship, 'P' programs & community, 'C' Charter Members, 'G' TiE Global network\n     act   : 'register' (needs href), 'invite', 'notify', 'photos'\n     utc   : optional exact start\/end in UTC for timed events (used by Add to calendar)\n     ============================================================ *\/\n  var EVENTS = [\n    \/\/ ---- 2025 \/ 2026 (past events move to the Past tab automatically)\n    { id: 'pf25', s: '2025-11-13', title: 'Pitch Finals: TiE Women & TiE U', scope: 'V', cat: 'P', time: '3:30-8:00 PM', venue: 'Fraserview Banquet Hall, Vancouver', blurb: 'Student and women-led ventures pitched for a place on the global stage.', act: 'photos' },\n    { id: 'tgs26j', s: '2026-01-04', e: '2026-01-06', title: 'TiE Global Summit, Jaipur', scope: 'G', cat: 'G', time: 'Three days', venue: 'Jaipur, India', blurb: 'TiE Vancouver\\u2019s TiE U team placed 2nd runner-up.', act: 'photos' },\n    { id: 'sl26', s: '2026-01-08', e: '2026-01-10', title: 'TiECon Sri Lanka 2026', scope: 'G', cat: 'G', time: 'Three days', venue: 'Colombo, Sri Lanka', blurb: 'Hosted by TiE Colombo.', act: 'none' },\n    { id: 'bcm26', s: '2026-01-10', title: 'TiE Vancouver at the BCIBN Mixer', scope: 'V', cat: 'P', time: 'Evening', venue: 'Vancouver', blurb: 'Connections with the BCIBN community.', act: 'photos' },\n    { id: 'ch26', s: '2026-02-13', title: 'TiECON Chennai 2026', scope: 'G', cat: 'G', time: 'All day', venue: 'ITC Grand Chola, Chennai', blurb: 'Hosted by TiE Chennai.', act: 'none' },\n    { id: 'up26', s: '2026-02-27', e: '2026-02-28', title: 'TiECon Uttar Pradesh 2026', scope: 'G', cat: 'G', time: 'Two days', venue: 'Taj Eternity, Kanpur', blurb: 'Hosted by TiE UP.', act: 'none' },\n    { id: 'chd26', s: '2026-04-10', e: '2026-04-11', title: 'TiECON Chandigarh 2026', scope: 'G', cat: 'G', time: 'Two days', venue: 'Hyatt Regency, Chandigarh', blurb: 'Hosted by TiE Chandigarh.', act: 'none' },\n    { id: 'sf26', s: '2026-04-17', e: '2026-04-18', title: 'Spring Fest & Spring Pitch Fest 2026', scope: 'V', cat: 'F', time: 'Two days', venue: 'VCC Downtown Campus, Vancouver', blurb: 'The Art of Entrepreneurship in the Age of AI.', act: 'photos' },\n    { id: 'sv26', s: '2026-04-29', e: '2026-05-01', title: 'TiEcon Silicon Valley 2026', scope: 'G', cat: 'G', time: 'Three days', venue: 'Santa Clara Convention Center, CA', blurb: 'TiE Silicon Valley\\u2019s flagship conference.', act: 'none' },\n    { id: 'tye26', s: '2026-05-09', title: 'TYE Finals 2026', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'Fasken, Vancouver', blurb: 'Grade 10-12 student entrepreneurs from the TYE 2026 cohort presented their startup ideas with confidence, creativity and purpose.', act: 'photos' },\n    { id: 'agm26', s: '2026-05-21', title: 'Annual General Meeting 2026', scope: 'V', cat: 'F', time: '3:30-7:00 PM', venue: 'Fraser View Banquet Hall, Vancouver', blurb: 'Members and Charter Members gathered for the AGM.', act: 'none' },\n    { id: 'ptm26', s: '2026-06-02', title: 'Pitch Till You Find a Mentor', scope: 'V', cat: 'P', time: 'Evening', venue: 'Fraser View Banquet Hall, Vancouver', blurb: 'Founders met mentors face to face for pitches and honest feedback.', act: 'photos' },\n    { id: 'cins26', s: '2026-06-06', title: 'TiE Vancouver and CINS MOU Signing', scope: 'V', cat: 'P', time: 'Daytime', venue: 'Vancouver', blurb: 'A partnership across the Canada-India corridor.', act: 'photos' },\n    { id: 'nj26', s: '2026-06-13', title: 'TiECon New Jersey 2026', scope: 'G', cat: 'G', time: 'All day', venue: 'Iselin, NJ', blurb: 'Hosted by TiE New Jersey.', act: 'none' },\n    { id: 'wmm26', s: '2026-07-17', title: 'TiE Vancouver Women Mentor Meet-up', scope: 'V', cat: 'P', time: 'In person and on Zoom', venue: 'UCW Granville Campus, Vancouver', blurb: 'TiE Women founders met their mentors in person and online ahead of the 2026 pitch finals.', act: 'photos' },\n    { id: 'wf26', s: '2026-08-30', title: 'TiE Vancouver Women Pitch Finals 2026', scope: 'V', cat: 'P', time: 'Morning', venue: 'UCW Granville Campus, Vancouver', blurb: 'Women-led ventures took the stage after a season of mentoring, workshops and virtual semi-finals.', act: 'photos' },\n    { id: 'wna26', s: '2026-09-17', e: '2026-09-18', title: 'TiE Women North America & Europe Finals', scope: 'G', cat: 'G', time: 'Two days', venue: 'TiE Los Angeles Investor Summit, Newport Beach', blurb: 'Won by TiE Vancouver\\u2019s Ranah Chavoshi.', act: 'none', href: 'https:\/\/tielosangeles.org\/' },\n    { id: 'east26', s: '2026-10-02', title: 'TiECON East 2026', scope: 'G', cat: 'G', time: 'All day', venue: 'Boston Marriott Burlington, MA', blurb: 'Hosted by TiE Boston.', act: 'none' },\n\n    \/\/ ---- Upcoming 2026\n    { id: 'ft26', s: '2026-10-04', title: 'Charter Member & Spouse Dinner: The Founders\\u2019 Table', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'The launch of our monthly Charter Member & Spouse Dinner series. Here\\u2019s to our Charter Members.', act: 'photos', utc: ['20261005T010000Z', '20261005T040000Z'] },\n    { id: 'ca26', s: '2026-10-30', title: 'Be part of the TiE Vancouver Delegation to TiECon Canada 2026', scope: 'G', cat: 'G', time: '8:30 AM-6:00 PM ET', venue: 'Richcraft Hall, Carleton University, Ottawa', blurb: 'Bold Entrepreneurship: Securing Canada\\u2019s Future. Join the TiE Vancouver delegation.', act: 'register', href: 'https:\/\/events.tie.org\/TiEConCanada', utc: ['20261030T123000Z', '20261030T220000Z'], featured: true },\n    { id: 'dw26', s: '2026-11-14', title: 'Charter Member & Spouse Dinner: Diwali Mixer', scope: 'V', cat: 'C', time: 'Evening', venue: 'Vancouver, BC', blurb: 'A festive Diwali evening for TiE Vancouver Charter Members and their partners.', act: 'invite' },\n    { id: 'tgs26', s: '2026-12-14', e: '2026-12-15', title: 'TiE Global Summit 2026, Indore', scope: 'G', cat: 'G', time: 'Two days', venue: 'Indore, India', blurb: 'The TiE network\\u2019s global gathering and the stage for the TiE Women Global Finals.', act: 'register', href: 'https:\/\/tieglobalsummit.org\/registration\/' },\n    { id: 'tse9', s: '2026-12-31', title: 'TSE Cohort 9: Road to Silicon Valley, applications close', scope: 'V', cat: 'P', time: 'Apply by December 31', venue: 'Online application', blurb: 'TiE Student Entrepreneur cohort for university founders.', act: 'register', linkLabel: 'Apply', href: 'https:\/\/tie-u.org\/cohort-9\/' },\n\n    \/\/ ---- TYE Masterclasses: alternate Saturdays, Nov 2026 to Mar 2027 (Dec 26, Boxing Day, skipped)\n    { id: 'tyem01', s: '2026-11-14', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20261114T170000Z', '20261114T200000Z'] },\n    { id: 'tyem02', s: '2026-11-28', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20261128T170000Z', '20261128T200000Z'] },\n    { id: 'tyem03', s: '2026-12-12', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20261212T170000Z', '20261212T200000Z'] },\n    { id: 'tyem04', s: '2027-01-09', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20270109T170000Z', '20270109T200000Z'] },\n    { id: 'tyem05', s: '2027-01-23', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20270123T170000Z', '20270123T200000Z'] },\n    { id: 'tyem06', s: '2027-02-06', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20270206T170000Z', '20270206T200000Z'] },\n    { id: 'tyem07', s: '2027-02-20', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20270220T170000Z', '20270220T200000Z'] },\n    { id: 'tyem08', s: '2027-03-06', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20270306T170000Z', '20270306T200000Z'] },\n    { id: 'tyem09', s: '2027-03-20', title: 'TYE Masterclass', scope: 'V', cat: 'P', time: '10:00 AM-1:00 PM', venue: 'In person, venue to be announced', blurb: 'Hands-on sessions for TiE Young Entrepreneurs, Grade 10-12, building toward the TYE Finals 2027.', act: 'none', utc: ['20270320T170000Z', '20270320T200000Z'] },\n\n    \/\/ ---- Charter Member & Spouse Dinner series: first Sunday monthly (Nov 2026 combined with the Diwali Mixer; no Dec 2026 dinner; Jan moved to Jan 10; July is the Charter Member Retreat)\n    { id: 'cmd2701', s: '2027-01-10', title: 'Charter Member & Spouse Dinner: Vision 2027', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'Each table shares one goal for the year, with a preview of chapter priorities.', act: 'invite', utc: ['20270111T010000Z', '20270111T040000Z'] },\n    { id: 'cmd2702', s: '2027-02-07', title: 'Charter Member & Spouse Dinner: Deal Stories, Fireside Chat & Dinner', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'A short fireside with a Charter Member on an investment that shaped them.', act: 'invite', utc: ['20270208T010000Z', '20270208T040000Z'] },\n    { id: 'cmd2703', s: '2027-03-07', title: 'Charter Member & Spouse Dinner: Celebrating Women in TiE', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'Honouring women Charter Members and partners around International Women\\u2019s Day.', act: 'invite', utc: ['20270308T010000Z', '20270308T040000Z'] },\n    { id: 'cmd2704', s: '2027-04-04', title: 'Charter Member & Spouse Dinner: Pre-AGM Dinner', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'An informal Board Q&A ahead of the AGM.', act: 'invite', utc: ['20270405T010000Z', '20270405T040000Z'] },\n    { id: 'cmd2705', s: '2027-05-02', title: 'Charter Member & Spouse Dinner: Masterclass & Supper', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'Dinner with a guest speaker.', act: 'invite', utc: ['20270503T010000Z', '20270503T040000Z'] },\n    { id: 'cmd2706', s: '2027-06-06', title: 'Charter Member & Spouse Dinner: Summer Patio', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'An outdoor evening, thanking the mentors of pitch season.', act: 'invite', utc: ['20270607T010000Z', '20270607T040000Z'] },\n    { id: 'cmd2708', s: '2027-08-01', title: 'Charter Member & Spouse Dinner: Pitch Final Preview', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'Meet the TiE Women finalists over dessert.', act: 'invite', utc: ['20270802T010000Z', '20270802T040000Z'] },\n    { id: 'cmd2709', s: '2027-09-05', title: 'Charter Member & Spouse Dinner: Global Connect', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'Welcoming Charter Members from other TiE chapters, and marking the series\\u2019 first anniversary.', act: 'invite', utc: ['20270906T010000Z', '20270906T040000Z'] },\n    { id: 'cmd2710', s: '2027-10-03', title: 'Charter Member & Spouse Dinner', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'A monthly evening for TiE Vancouver Charter Members and their partners.', act: 'invite', utc: ['20271004T010000Z', '20271004T040000Z'] },\n    { id: 'cmd2711', s: '2027-11-07', title: 'Charter Member & Spouse Dinner', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'A monthly evening for TiE Vancouver Charter Members and their partners.', act: 'invite', utc: ['20271108T010000Z', '20271108T040000Z'] },\n    { id: 'cmd2712', s: '2027-12-05', title: 'Charter Member & Spouse Dinner', scope: 'V', cat: 'C', time: '6:00-9:00 PM PT', venue: 'Vancouver, BC', blurb: 'A monthly evening for TiE Vancouver Charter Members and their partners.', act: 'invite', utc: ['20271206T010000Z', '20271206T040000Z'] },\n\n    \/\/ ---- 2027 (month only until dates are confirmed)\n    { id: 'tses27', s: '2027-03', title: 'TSE Semi-Finals', scope: 'V', cat: 'P', time: 'End of March, on Zoom', venue: 'Online (Zoom)', blurb: 'TiE Student Entrepreneur teams pitch online for a place in the TSE Finals.', act: 'notify' },\n    { id: 'tyef27', s: '2027-04', title: 'TYE Finals 2027', scope: 'V', cat: 'P', venue: 'Vancouver', blurb: 'Grade 10-12 founders from the TYE 2027 cohort pitch the ventures they built in the masterclasses.', act: 'notify' },\n    { id: 'tsef27', s: '2027-04', title: 'TSE Finals 2027', scope: 'V', cat: 'P', time: 'Hybrid: in person and online', venue: 'Vancouver and online', blurb: 'University founders from the TiE Student Entrepreneur program pitch in the finals.', act: 'notify' },\n    { id: 'cmr27', s: '2027-07', title: 'Charter Member Retreat', scope: 'V', cat: 'C', time: '4th week of July, date to be announced', venue: 'To be announced', blurb: 'A retreat for TiE Vancouver Charter Members and their partners.', act: 'invite' },\n    { id: 'wd27', s: '2027-03', title: 'TiE Women\\u2019s Day Celebration', scope: 'V', cat: 'F', venue: 'Vancouver', blurb: 'Celebrating women founders and the mentors behind them.', act: 'notify' },\n    { id: 'sf27', s: '2027-04', title: 'TiE Spring Fest 2027', scope: 'V', cat: 'F', venue: 'Vancouver', blurb: 'Our spring flagship: keynotes, pitches and the year\\u2019s biggest networking floor.', act: 'notify' },\n    { id: 'nm27', s: '2027-04', title: 'New Member Onboarding', scope: 'V', cat: 'P', venue: 'Vancouver', blurb: 'Meet the community and find the programs that fit your stage.', act: 'notify' },\n    { id: 'agm27', s: '2027-04', title: 'TiE Vancouver AGM 2027', scope: 'V', cat: 'F', venue: 'Vancouver', blurb: 'Annual general meeting for members and Charter Members.', act: 'notify' },\n    { id: 'tye27', s: '2027-05', title: 'TYE Youth Showcase', scope: 'V', cat: 'P', venue: 'Vancouver', blurb: 'Student teams pitch the ventures they built this year.', act: 'notify' },\n    { id: 'lc27a', s: '2027-05', title: 'Legal & Funding Clinic', scope: 'V', cat: 'P', venue: 'With Fasken, Vancouver', blurb: 'Practical legal and funding readiness for early-stage founders.', act: 'notify' },\n    { id: 'po27', s: '2027-06', title: 'TiE Women Pitch Participant Orientation', scope: 'V', cat: 'P', venue: 'Vancouver', blurb: 'Kick-off for the 2027 TiE Women pitch cohort.', act: 'notify' },\n    { id: 'be27', s: '2027-08', title: 'Charter Social: Bullseye', scope: 'V', cat: 'C', venue: 'Vancouver', blurb: 'A Charter Members social.', act: 'invite' },\n    { id: 'wf27', s: '2027-08', title: 'TiE Women Vancouver Finals 2027', scope: 'V', cat: 'P', venue: 'Vancouver', blurb: 'Women-led ventures take the stage after a season of mentoring.', act: 'notify' },\n    { id: 'wna27', s: '2027-09', title: 'TiE Women North America & Europe Finals 2027', scope: 'G', cat: 'G', venue: 'To be announced', blurb: 'Regional winners pitch for a place at the Global Finals. Dates are set by TiE Global.', act: 'notify' },\n    { id: 'dw27', s: '2027-10-30', title: 'Diwali Mixer', scope: 'V', cat: 'C', time: 'Evening', venue: 'Vancouver', blurb: 'A festive evening for TiE Vancouver Charter Members.', act: 'invite' },\n    { id: 'lc27b', s: '2027-11', title: 'Legal & Funding Clinic', scope: 'V', cat: 'P', venue: 'With Fasken, Vancouver', blurb: 'Practical legal and funding readiness for early-stage founders.', act: 'notify' },\n    { id: 'sp27', s: '2027-11', title: 'Sponsor & Partner Appreciation Evening', scope: 'V', cat: 'P', venue: 'Vancouver', blurb: 'Thanking the partners who make our programs possible.', act: 'notify' },\n    { id: 'xm27', s: '2027-12', title: 'TiE Christmas Mixer', scope: 'V', cat: 'F', venue: 'Vancouver', blurb: 'Closing out the year with members, partners and friends.', act: 'notify' }\n  ];\n\n  \/* ============================================================\n     GALLERY ALBUMS (images from the WordPress media library)\n     ============================================================ *\/\n  var U = 'https:\/\/vancouver.tie.org\/wp-content\/uploads\/';\n  var ALBUMS = [\n    { t: 'Charter Member & Spouse Dinner: The Founders\\u2019 Table', d: 'October 4, 2026', c: 'Here\\u2019s to our Charter Members', y: '2026', big: true,\n      p: ['2026\/10\/charter-member-dinner-2026-01.jpg', '2026\/10\/charter-member-dinner-2026-02.jpg', '2026\/10\/charter-member-dinner-2026-03.jpg', '2026\/10\/charter-member-dinner-2026-04.jpg', '2026\/10\/charter-member-dinner-2026-05.jpg'] },\n    { t: 'TiE Vancouver Women Pitch Finals 2026', d: 'August 30, 2026', c: 'UCW Granville Campus', y: '2026', big: true,\n      p: ['2026\/10\/tie-women-finals-2026-01.jpg', '2026\/10\/tie-women-finals-2026-02.jpg', '2026\/10\/tie-women-finals-2026-03.jpg', '2026\/10\/tie-women-finals-2026-04.jpg', '2026\/10\/tie-women-finals-2026-05.jpg', '2026\/10\/tie-women-finals-2026-06.jpg', '2026\/10\/tie-women-finals-2026-07.jpg', '2026\/10\/tie-women-finals-2026-08.jpg', '2026\/10\/tie-women-finals-2026-09.jpg', '2026\/10\/tie-women-finals-2026-10.jpg', '2026\/10\/tie-women-finals-2026-11.jpg', '2026\/10\/tie-women-finals-2026-12.jpg'] },\n    { t: 'TiE Vancouver Women Mentor Meet-up', d: 'July 17, 2026', c: 'UCW Granville Campus', y: '2026',\n      p: ['2026\/10\/tie-women-mentor-meetup-2026-01.jpg', '2026\/10\/tie-women-mentor-meetup-2026-02.jpg', '2026\/10\/tie-women-mentor-meetup-2026-03.jpg'] },\n    { t: 'Spring Fest & Spring Pitch Fest 2026', d: 'April 17-18, 2026', c: 'VCC Downtown Campus', y: '2026',\n      p: ['2026\/04\/IMG_6027-scaled.jpg', '2026\/04\/IMG_6092-scaled.jpg', '2026\/04\/IMG_6097-scaled.jpg', '2026\/04\/IMG_6202-scaled.jpg', '2026\/04\/IMG_6265-scaled.jpg', '2026\/04\/IMG_6224-scaled.jpg', '2026\/04\/IMG_1660-1-scaled.jpg', '2026\/05\/IMG_7403-scaled.jpg', '2026\/05\/20260418_122051.jpg', '2026\/05\/IMG_7435-scaled.jpg'] },\n    { t: 'TiE Vancouver and CINS MOU Signing', d: 'June 6, 2026', c: 'Canada India Network Society partnership', y: '2026',\n      p: ['2026\/06\/IMG_8897-scaled.jpg', '2026\/06\/IMG_8898-scaled.jpg', '2026\/06\/IMG_8900-scaled.jpg', '2026\/06\/IMG_8901-scaled.jpg', '2026\/06\/IMG_8903-scaled.jpg', '2026\/06\/IMG_8905-scaled.jpg'] },\n    { t: 'Pitch Till You Find a Mentor', d: 'June 2, 2026', c: 'Fraser View Banquet Hall', y: '2026',\n      p: ['2026\/06\/IMG_8826-scaled.jpg', '2026\/06\/IMG_8828-scaled.jpg', '2026\/06\/IMG_8829-scaled.jpg', '2026\/06\/IMG_8830-scaled.jpg', '2026\/06\/IMG_8833-scaled.jpg', '2026\/06\/IMG_8837-scaled.jpg'] },\n    { t: 'TYE Finals 2026', d: 'May 9, 2026', c: 'Grade 10-12 founders at Fasken Vancouver', y: '2026',\n      p: ['2026\/10\/tye-finals-2026-01.jpg', '2026\/10\/tye-finals-2026-02.jpg', '2026\/10\/tye-finals-2026-03.jpg', '2026\/10\/tye-finals-2026-04.jpg', '2026\/05\/IMG_7466.jpg'] },\n    { t: 'TiE Global Summit, Jaipur', d: 'January 4-6, 2026', c: 'TiE U team placed 2nd runner-up', y: '2026',\n      p: ['2026\/01\/1767637459421.jpeg', '2026\/01\/1767637459349.jpeg', '2026\/01\/1767861841026.jpeg', '2026\/01\/1767932354372.jpeg'] },\n    { t: 'BCIBN Mixer', d: 'January 10, 2026', c: 'Community networking', y: '2026',\n      p: ['2026\/01\/Mixer1.jpg', '2026\/01\/Mixer-2.jpg', '2026\/01\/Mixer-4.jpg', '2026\/01\/Mixer-6.jpg', '2026\/01\/1768194231024.jpeg'] },\n    { t: 'Pitch Finals: TiE Women & TiE U', d: 'November 13, 2025', c: 'Fraserview Banquet Hall', y: '2025', big: true,\n      p: ['2026\/01\/Pitch-1-scaled.jpg', '2026\/01\/Pitch-2.jpg', '2026\/01\/Pitch-4.jpg', '2026\/01\/Pitch-5.jpg', '2026\/01\/Pitch-6.jpg', '2026\/01\/Pitch-8.jpg', '2026\/01\/Pitch-9.jpg', '2026\/01\/Pitch-10.jpg', '2026\/01\/Pitch-11.jpg'] },\n    { t: 'BCIBN MOU Signing', d: 'December 19, 2025', c: 'Strategic partnership', y: '2025',\n      p: ['2026\/01\/MOU-scaled.jpg', '2026\/01\/1767919530823.jpeg', '2026\/01\/1767919530987.jpeg', '2026\/01\/1767919531325.jpeg'] },\n    { t: 'CGI \"Beyond the Degree\"', d: 'December 2, 2025', c: 'Vancouver', y: '2025',\n      p: ['2026\/01\/1765252305360.jpeg', '2026\/01\/1765252305541.jpeg', '2026\/01\/1765252305554.jpeg', '2026\/01\/1765252306311.jpeg'] },\n    { t: 'AGM 2025', d: 'April 24, 2025', c: 'Members and Charter Members', y: '2025',\n      p: ['2025\/04\/Agm-1.jpg', '2025\/04\/AGM-2.jpg', '2025\/04\/AGM-3.jpg', '2025\/04\/AGM-4.jpg', '2025\/04\/AGM-5.jpg', '2025\/04\/AgM-6.jpg'] }\n  ];\n\n  \/* ============================================================\n     HELPERS\n     ============================================================ *\/\n  var root = document.getElementById('tve');\n  var $ = function (sel) { return root.querySelector(sel); };\n  var MON = ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'];\n  var MONTH = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n  var CAT_LABEL = { F: 'Flagship', P: 'Programs & community', C: 'Charter Members', G: 'TiE Global network' };\n  var esc = function (t) { return String(t == null ? '' : t).replace(\/[&<>\"']\/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c]; }); };\n  function parse(s) { var p = s.split('-').map(Number); return new Date(p[0], p[1] - 1, p[2] || 1); }\n  function monthOnly(e) { return e.s.length === 7; }\n  function endDate(e) {\n    if (monthOnly(e)) { var d = parse(e.s); return new Date(d.getFullYear(), d.getMonth() + 1, 0); }\n    return parse(e.e || e.s);\n  }\n  function sortKey(e) { return monthOnly(e) ? e.s + '-15' : e.s; }\n  var today = new Date(); today.setHours(0, 0, 0, 0);\n  function isUpcoming(e) { return endDate(e) >= today; }\n  function ymd(d) { return d.getFullYear() + String(d.getMonth() + 1).padStart(2, '0') + String(d.getDate()).padStart(2, '0'); }\n  function addDays(d, n) { var x = new Date(d); x.setDate(x.getDate() + n); return x; }\n  function isoZ(z) { return z.slice(0, 4) + '-' + z.slice(4, 6) + '-' + z.slice(6, 8) + 'T' + z.slice(9, 11) + ':' + z.slice(11, 13) + ':00Z'; }\n  function dash(d) { return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0'); }\n  function timeLabel(e) { return e.time || 'Date to be announced'; }\n  function notifyMailto(e) {\n    var d = parse(e.s);\n    var subject = 'Notify me: ' + e.title;\n    var body = 'Hello TiE Vancouver team,\\n\\nPlease notify me when the date and registration for ' + e.title + ' (' + MONTH[d.getMonth()] + ' ' + d.getFullYear() + ') are confirmed.\\n\\nName:\\nPhone (optional):\\n\\nThank you.';\n    return 'mailto:' + CONFIG.adminEmail + '?subject=' + encodeURIComponent(subject) + '&body=' + encodeURIComponent(body);\n  }\n\n  \/* ============================================================\n     ADD TO CALENDAR\n     ============================================================ *\/\n  function calLinks(e) {\n    var t = encodeURIComponent(e.title), loc = encodeURIComponent(e.venue);\n    var details = encodeURIComponent(e.blurb + (e.href ? ' ' + e.href : '') + ' - TiE Vancouver');\n    var g, o, icsTimes;\n    if (e.utc) {\n      g = e.utc[0] + '\/' + e.utc[1];\n      o = 'startdt=' + isoZ(e.utc[0]) + '&enddt=' + isoZ(e.utc[1]);\n      icsTimes = 'DTSTART:' + e.utc[0] + '\\r\\nDTEND:' + e.utc[1];\n    } else {\n      var s = parse(e.s), en = addDays(parse(e.e || e.s), 1);\n      g = ymd(s) + '\/' + ymd(en);\n      o = 'allday=true&startdt=' + dash(s) + '&enddt=' + dash(en);\n      icsTimes = 'DTSTART;VALUE=DATE:' + ymd(s) + '\\r\\nDTEND;VALUE=DATE:' + ymd(en);\n    }\n    return {\n      google: 'https:\/\/calendar.google.com\/calendar\/render?action=TEMPLATE&text=' + t + '&dates=' + g + '&location=' + loc + '&details=' + details + '&ctz=' + encodeURIComponent(CONFIG.timezone),\n      outlook: 'https:\/\/outlook.live.com\/calendar\/0\/deeplink\/compose?path=%2Fcalendar%2Faction%2Fcompose&rru=addevent&subject=' + t + '&' + o + '&location=' + loc + '&body=' + details,\n      office: 'https:\/\/outlook.office.com\/calendar\/0\/deeplink\/compose?path=%2Fcalendar%2Faction%2Fcompose&rru=addevent&subject=' + t + '&' + o + '&location=' + loc + '&body=' + details,\n      ics: function () {\n        var stamp = new Date().toISOString().replace(\/[-:]\/g, '').replace(\/\\.\\d+\/, '');\n        var clean = function (x) { return String(x).replace(\/([,;\\\\])\/g, '\\\\$1'); };\n        var body = ['BEGIN:VCALENDAR', 'VERSION:2.0', 'PRODID:-\/\/TiE Vancouver\/\/Events\/\/EN', 'CALSCALE:GREGORIAN', 'BEGIN:VEVENT',\n          'UID:' + e.id + '@vancouver.tie.org', 'DTSTAMP:' + stamp, icsTimes, 'SUMMARY:' + clean(e.title), 'LOCATION:' + clean(e.venue),\n          'DESCRIPTION:' + clean(e.blurb + (e.href ? ' ' + e.href : '')), 'END:VEVENT', 'END:VCALENDAR'].join('\\r\\n');\n        download(new Blob([body], { type: 'text\/calendar;charset=utf-8' }), e.id + '-tie-vancouver.ics');\n      }\n    };\n  }\n  function download(blob, name) {\n    var url = URL.createObjectURL(blob);\n    var a = document.createElement('a'); a.href = url; a.download = name;\n    document.body.appendChild(a); a.click(); a.remove();\n    setTimeout(function () { URL.revokeObjectURL(url); }, 4000);\n  }\n\n  \/* ============================================================\n     STATE + RENDER\n     ============================================================ *\/\n  var state = { tab: 'up', cat: 'all', view: 'list', q: '', showAll: false, monthIdx: null, openCal: null, gy: 'all' };\n\n  function inTab() { return EVENTS.filter(function (e) { return state.tab === 'up' ? isUpcoming(e) : !isUpcoming(e); }); }\n  function matchesQuery(e) {\n    if (!state.q) return true;\n    var hay = (e.title + ' ' + e.venue + ' ' + e.blurb + ' ' + CAT_LABEL[e.cat] + ' ' + (e.scope === 'V' ? 'TiE Vancouver' : 'TiE Global')).toLowerCase();\n    return hay.indexOf(state.q) >= 0;\n  }\n  function filtered() {\n    var list = inTab().filter(matchesQuery).filter(function (e) { return state.cat === 'all' || e.cat === state.cat; });\n    list.sort(function (a, b) { var x = sortKey(a), y = sortKey(b); return state.tab === 'up' ? (x < y ? -1 : 1) : (x < y ? 1 : -1); });\n    return list;\n  }\n\n  function renderTabs() {\n    var up = EVENTS.filter(isUpcoming).length, past = EVENTS.length - up;\n    root.querySelectorAll('.tve-tab').forEach(function (b) {\n      var on = b.getAttribute('data-tab') === state.tab;\n      b.setAttribute('aria-selected', on ? 'true' : 'false');\n      b.textContent = (b.getAttribute('data-tab') === 'up' ? 'Upcoming (' + up + ')' : 'Past (' + past + ')');\n    });\n    root.querySelectorAll('[data-view]').forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-view') === state.view ? 'true' : 'false'); });\n  }\n\n  function renderChips() {\n    var base = inTab().filter(matchesQuery);\n    var defs = [['all', 'All'], ['F', 'Flagship'], ['P', 'Programs & community'], ['C', 'Charter Members'], ['G', 'TiE Global network']];\n    $('#tve-chips').innerHTML = defs.map(function (d) {\n      var n = d[0] === 'all' ? base.length : base.filter(function (e) { return e.cat === d[0]; }).length;\n      var dot = d[0] === 'all' ? '' : '<span class=\"tve-dot c-' + d[0] + '\"><\/span>';\n      return '<button type=\"button\" class=\"tve-chip\" data-cat=\"' + d[0] + '\" aria-pressed=\"' + (state.cat === d[0]) + '\">' + dot + esc(d[1]) + ' <small>' + n + '<\/small><\/button>';\n    }).join('');\n  }\n\n  function dateBlock(e) {\n    var d = parse(e.s), ed = e.e ? parse(e.e) : null;\n    var mon = MON[d.getMonth()] + (ed && ed.getMonth() !== d.getMonth() ? '-' + MON[ed.getMonth()] : '');\n    var day = monthOnly(e) ? (isUpcoming(e) ? 'TBA' : MON[d.getMonth()]) : (ed ? d.getDate() + '-' + ed.getDate() : String(d.getDate()));\n    if (monthOnly(e) && !isUpcoming(e)) mon = 'MONTH';\n    var cls = monthOnly(e) ? 'c-TBA' : 'c-' + e.cat;\n    return '<div class=\"tve-date ' + cls + '\" aria-hidden=\"true\"><em>' + mon + '<\/em><b>' + day + '<\/b><i>' + d.getFullYear() + '<\/i><\/div>';\n  }\n\n  function card(e) {\n    var up = state.tab === 'up';\n    var actions = '';\n    if (up && e.act === 'register') actions += '<a class=\"tve-btn tve-btn--red\" href=\"' + esc(e.href) + '\" target=\"_blank\" rel=\"noopener\">' + esc(e.linkLabel || 'Register') + '<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M7 17L17 7M9 7h8v8\"\/><\/svg><\/a>';\n    if (up && e.act === 'invite') actions += '<span class=\"tve-invite\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"5\" y=\"11\" width=\"14\" height=\"10\" rx=\"2\"\/><path d=\"M8 11V8a4 4 0 0 1 8 0v3\"\/><\/svg>Charter, by invitation<\/span>';\n    if (up && e.act === 'notify') actions += '<a class=\"tve-btn tve-btn--outline-red\" href=\"' + esc(notifyMailto(e)) + '\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\"\/><path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\"\/><\/svg>Notify me<\/a><span class=\"tve-note\">Opens your email app<\/span>';\n    if (!up && e.act === 'photos') actions += '<a href=\"#tve-gallery\" style=\"font-weight:700;min-height:44px;display:inline-flex;align-items:center\">View photos<\/a>';\n    if (up && !monthOnly(e)) {\n      var open = state.openCal === e.id;\n      actions += '<button type=\"button\" class=\"tve-linkbtn\" data-cal=\"' + e.id + '\" aria-expanded=\"' + open + '\" aria-haspopup=\"menu\"><svg width=\"15\" height=\"15\" 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>Add to calendar<\/button>';\n      if (open) {\n        var L = calLinks(e);\n        actions += '<div class=\"tve-menu\" role=\"menu\">' +\n          '<a role=\"menuitem\" href=\"' + esc(L.google) + '\" target=\"_blank\" rel=\"noopener\">Google Calendar<\/a>' +\n          '<a role=\"menuitem\" href=\"' + esc(L.outlook) + '\" target=\"_blank\" rel=\"noopener\">Outlook.com<\/a>' +\n          '<a role=\"menuitem\" href=\"' + esc(L.office) + '\" target=\"_blank\" rel=\"noopener\">Microsoft 365 \/ Outlook work<\/a>' +\n          '<button type=\"button\" role=\"menuitem\" data-ics=\"' + e.id + '\">Apple Calendar or Outlook desktop (.ics)<\/button><\/div>';\n      }\n    }\n    if (up && monthOnly(e)) actions += '<span class=\"tve-note\">Date to be announced<\/span>';\n    return '<article class=\"tve-card\">' + dateBlock(e) +\n      '<div class=\"tve-card__body\"><div class=\"tve-tags\"><span class=\"tve-badge c-' + e.cat + '\">' + esc(CAT_LABEL[e.cat]) + '<\/span><span class=\"tve-scope\">' + (e.scope === 'V' ? 'TiE Vancouver' : 'TiE Global network') + '<\/span><\/div>' +\n      '<h4>' + esc(e.title) + '<\/h4><p>' + esc(e.blurb) + '<\/p>' +\n      '<div class=\"tve-meta\"><span><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5l3 2\"\/><\/svg>' + esc(timeLabel(e)) + '<\/span>' +\n      '<span><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 21s-7-6.2-7-11a7 7 0 0 1 14 0c0 4.8-7 11-7 11z\"\/><circle cx=\"12\" cy=\"10\" r=\"2.5\"\/><\/svg>' + esc(e.venue) + '<\/span><\/div><\/div>' +\n      '<div class=\"tve-card__act\">' + actions + '<\/div><\/article>';\n  }\n\n  function renderList() {\n    var list = filtered(), LIMIT = 10;\n    var shown = (state.tab === 'up' && !state.showAll) ? list.slice(0, LIMIT) : list;\n    if (!list.length) return '<p class=\"tve-empty\">No events match that search. Try another word or choose All.<\/p>';\n    var html = '', last = '';\n    shown.forEach(function (e) {\n      var d = parse(e.s), label = MONTH[d.getMonth()] + ' ' + d.getFullYear();\n      if (label !== last) { if (last) html += '<\/section>'; html += '<section class=\"tve-group\"><h3>' + label + '<\/h3>'; last = label; }\n      html += card(e);\n    });\n    html += '<\/section>';\n    if (shown.length < list.length) html += '<button type=\"button\" class=\"tve-btn tve-btn--line tve-more\" data-action=\"show-all\">Show all ' + list.length + ' events<\/button>';\n    return '<div style=\"display:flex;flex-direction:column;gap:30px\">' + html + '<\/div>';\n  }\n\n  function monthList() {\n    var list = inTab();\n    if (!list.length) return [[today.getFullYear(), today.getMonth()]];\n    var keys = list.map(function (e) { var d = parse(e.s); return d.getFullYear() * 12 + d.getMonth(); });\n    var lo = Math.min.apply(null, keys), hi = Math.max.apply(null, keys), out = [];\n    if (state.tab === 'up') lo = Math.max(lo, today.getFullYear() * 12 + today.getMonth());\n    for (var k = lo; k <= hi; k++) out.push([Math.floor(k \/ 12), k % 12]);\n    return out;\n  }\n  function renderMonth() {\n    var months = monthList();\n    var i = state.monthIdx == null ? (state.tab === 'up' ? 0 : months.length - 1) : Math.max(0, Math.min(months.length - 1, state.monthIdx));\n    state.monthIdx = i;\n    var y = months[i][0], m = months[i][1];\n    var first = new Date(y, m, 1).getDay(), dim = new Date(y, m + 1, 0).getDate();\n    var list = filtered();\n    var html = '<div style=\"display:flex;flex-direction:column;gap:16px\"><div class=\"tve-monthnav\">' +\n      '<button type=\"button\" class=\"tve-round\" data-month=\"-1\" aria-label=\"Previous month\"' + (i === 0 ? ' disabled' : '') + '><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M15 6l-6 6 6 6\"\/><\/svg><\/button>' +\n      '<h3>' + MONTH[m] + ' ' + y + '<\/h3>' +\n      '<button type=\"button\" class=\"tve-round\" data-month=\"1\" aria-label=\"Next month\"' + (i === months.length - 1 ? ' disabled' : '') + '><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M9 6l6 6-6 6\"\/><\/svg><\/button><\/div>' +\n      '<div class=\"tve-gridwrap\"><div class=\"tve-grid\">' + ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'].map(function (w) { return '<div class=\"wd\">' + w + '<\/div>'; }).join('');\n    for (var b = 0; b < first; b++) html += '<div class=\"cell off\"><\/div>';\n    for (var d = 1; d <= dim; d++) {\n      var day = new Date(y, m, d);\n      var pills = list.filter(function (e) { return !monthOnly(e) && day >= parse(e.s) && day <= parse(e.e || e.s); })\n        .map(function (e) { return '<span class=\"tve-pill c-' + e.cat + '\">' + esc(e.title) + '<\/span>'; }).join('');\n      html += '<div class=\"cell\"><span class=\"tve-daynum\">' + d + '<\/span>' + pills + '<\/div>';\n    }\n    var cells = first + dim; while (cells % 7) { html += '<div class=\"cell off\"><\/div>'; cells++; }\n    html += '<\/div><\/div>';\n    var und = list.filter(function (e) { var s = parse(e.s); return monthOnly(e) && s.getFullYear() === y && s.getMonth() === m; });\n    if (und.length) html += '<div class=\"tve-undated\"><b>Also this month, date to be announced:<\/b>' + und.map(function (e) { return '<span class=\"tve-pill c-' + e.cat + '\">' + esc(e.title) + '<\/span>'; }).join('') + '<\/div>';\n    return html + '<\/div>';\n  }\n\n  function renderResults() { $('#tve-results').innerHTML = state.view === 'list' ? renderList() : renderMonth(); }\n  function renderAll() { renderTabs(); renderChips(); renderResults(); }\n\n  \/* ---- featured event with countdown *\/\n  function renderFeatured() {\n    var up = EVENTS.filter(function (e) { return isUpcoming(e) && e.act === 'register' && !monthOnly(e) && e.scope === 'G'; })\n      .sort(function (a, b) { return a.s < b.s ? -1 : 1; });\n    var f = EVENTS.filter(function (e) { return e.featured && isUpcoming(e); })[0] || up[0];\n    var el = $('#tve-featured');\n    if (!f) { el.hidden = true; return; }\n    var days = Math.round((parse(f.s) - today) \/ 86400000);\n    var d = parse(f.s);\n    var when = d.toLocaleDateString('en-CA', { weekday: 'short', month: 'short', day: 'numeric' });\n    var L = calLinks(f);\n    el.innerHTML = '<div class=\"tve-feat__top\"><div><span class=\"tve-feat__kicker\">Featured, TiE Global network<\/span><h2>' + esc(f.title) + '<\/h2>' +\n      '<p class=\"tve-feat__meta\">' + esc(when + ', ' + (f.time || '') + ', ' + f.venue) + '<\/p><\/div>' +\n      '<div class=\"tve-count\"><b>' + (days > 0 ? days : 'Today') + '<\/b><span>' + (days > 1 ? 'days to go' : days === 1 ? 'day to go' : '') + '<\/span><\/div><\/div>' +\n      '<div class=\"tve-feat__body\"><p>' + esc(f.blurb) + '<\/p><div class=\"tve-row\">' +\n      '<a class=\"tve-btn tve-btn--red\" href=\"' + esc(f.href) + '\" target=\"_blank\" rel=\"noopener\">Register<\/a>' +\n      '<a class=\"tve-btn tve-btn--line\" style=\"border-color:#D6D6D6\" href=\"' + esc(L.google) + '\" target=\"_blank\" rel=\"noopener\">Add to Google Calendar<\/a><\/div><\/div>';\n  }\n\n  \/* ---- gallery + lightbox *\/\n  var lb = { album: null, i: 0 };\n  function renderGallery() {\n    $('#tve-ychips').innerHTML = [['all', 'All'], ['2026', '2026'], ['2025', '2025']].map(function (y) {\n      return '<button type=\"button\" class=\"tve-ychip\" data-gy=\"' + y[0] + '\" aria-pressed=\"' + (state.gy === y[0]) + '\">' + y[1] + '<\/button>';\n    }).join('');\n    $('#tve-albums').innerHTML = ALBUMS.map(function (a, idx) {\n      if (state.gy !== 'all' && a.y !== state.gy) return '';\n      return '<button type=\"button\" class=\"tve-album' + (a.big ? ' tve-album--big' : '') + '\" data-album=\"' + idx + '\" aria-label=\"Open album: ' + esc(a.t) + '\">' +\n        '<img src=\"' + U + a.p[0] + '\" alt=\"\" loading=\"lazy\" decoding=\"async\" onerror=\"this.style.display=\\'none\\'\">' +\n        '<span class=\"tve-album__date\">' + esc(a.d) + '<\/span>' +\n        '<span class=\"tve-album__cap\"><b>' + esc(a.t) + '<\/b><span>' + esc(a.c) + ', ' + a.p.length + ' photos<\/span><\/span><\/button>';\n    }).join('');\n  }\n  function showLb() {\n    var a = ALBUMS[lb.album];\n    $('#tve-lb-title').textContent = a.t;\n    var img = $('#tve-lb-img'); img.src = U + a.p[lb.i]; img.alt = a.t + ', photo ' + (lb.i + 1);\n    $('#tve-lb-count').textContent = (lb.i + 1) + ' of ' + a.p.length;\n  }\n\n  \/* ---- dialogs *\/\n  var lastFocus = null;\n  function openDialog(id) { lastFocus = document.activeElement; var o = $(id); o.hidden = false; var f = o.querySelector('input[type=email],button:not(.tve-x)'); if (f) f.focus(); }\n  function closeDialogs() {\n    ['#tve-pdf', '#tve-lb'].forEach(function (id) { $(id).hidden = true; });\n    if (lastFocus && lastFocus.focus) lastFocus.focus();\n  }\n\n  \/* ---- PDF *\/\n  var pdf = { from: 0, to: 0, months: [] };\n  (function () {\n    for (var k = CONFIG.pdfFirstMonth[0] * 12 + CONFIG.pdfFirstMonth[1]; k <= CONFIG.pdfLastMonth[0] * 12 + CONFIG.pdfLastMonth[1]; k++) pdf.months.push([Math.floor(k \/ 12), k % 12]);\n  })();\n  function pdfIdx(y, m) { for (var i = 0; i < pdf.months.length; i++) if (pdf.months[i][0] === y && pdf.months[i][1] === m) return i; return -1; }\n  function pdfEvents() {\n    var a = pdf.months[pdf.from], b = pdf.months[pdf.to];\n    var lo = a[0] * 12 + a[1], hi = b[0] * 12 + b[1];\n    return EVENTS.filter(function (e) { var d = parse(e.s), k = d.getFullYear() * 12 + d.getMonth(); return k >= lo && k <= hi && (state.cat === 'all' || e.cat === state.cat); })\n      .sort(function (x, y) { return sortKey(x) < sortKey(y) ? -1 : 1; });\n  }\n  function renderPdfDialog() {\n    var a = pdf.months[pdf.from], b = pdf.months[pdf.to];\n    $('#tve-from').textContent = MONTH[a[1]] + ' ' + a[0];\n    $('#tve-to').textContent = MONTH[b[1]] + ' ' + b[0];\n    var n = pdfEvents().length;\n    $('#tve-pdf-sum').innerHTML = '<b>' + n + (n === 1 ? ' event' : ' events') + '<\/b> in this range. Category: <b>' + (state.cat === 'all' ? 'All categories' : esc(CAT_LABEL[state.cat])) + '<\/b>';\n  }\n  function openPdf() {\n    var i = pdfIdx(today.getFullYear(), today.getMonth());\n    pdf.from = i >= 0 ? i : 0; pdf.to = pdf.months.length - 1;\n    var y = today.getFullYear();\n    var presets = [\n      ['Rest of ' + y, pdf.from, Math.max(pdf.from, pdfIdx(y, 11))],\n      ['All of ' + y, Math.max(0, pdfIdx(y, 0)), pdfIdx(y, 11)],\n      ['All of ' + (y + 1), pdfIdx(y + 1, 0), pdfIdx(y + 1, 11)],\n      ['Everything', 0, pdf.months.length - 1]\n    ].filter(function (p) { return p[1] >= 0 && p[2] >= 0; });\n    $('#tve-presets').innerHTML = presets.map(function (p) { return '<button type=\"button\" data-preset=\"' + p[1] + ':' + p[2] + '\">' + esc(p[0]) + '<\/button>'; }).join('');\n    renderPdfDialog();\n    openDialog('#tve-pdf');\n  }\n\n  function buildPdf(events, rangeLabel, catLabel) {\n    var W = 612, H = 792, M = 50;\n    var MAP = { '\\u2019': 146, '\\u2018': 145, '\\u201C': 147, '\\u201D': 148, '\\u2013': 150, '\\u2014': 45, '\\u00B7': 183, '\\u2022': 149, '\\u00D7': 215, '\\u2026': 133 };\n    function enc(t) { var o = ''; Array.from(String(t)).forEach(function (ch) { var c = ch.charCodeAt(0), b = MAP[ch] != null ? MAP[ch] : (c < 256 ? c : 63); var x = String.fromCharCode(b); o += (x === '(' || x === ')' || x === '\\\\') ? '\\\\' + x : x; }); return o; }\n    var col = { F: [0.769, 0.078, 0.145], P: [0.984, 0.851, 0.863], C: [0.255, 0.255, 0.255], G: [1, 1, 1] };\n    var INK = [0.255, 0.255, 0.255], RED = [0.769, 0.078, 0.145], GREY = [0.37, 0.37, 0.37];\n    var pages = [], ops = [], y = 0;\n    function text(x, yy, size, bold, rgb, t) { ops.push(rgb.join(' ') + ' rg BT \/' + (bold ? 'F2' : 'F1') + ' ' + size + ' Tf ' + x + ' ' + yy + ' Td (' + enc(t) + ') Tj ET'); }\n    function rect(x, yy, w, h, fill, stroke) { if (fill) ops.push(fill.join(' ') + ' rg ' + x + ' ' + yy + ' ' + w + ' ' + h + ' re f'); if (stroke) ops.push('1.4 w ' + stroke.join(' ') + ' RG ' + x + ' ' + yy + ' ' + w + ' ' + h + ' re S'); }\n    function wrap(t, max) { var lines = [], cur = ''; String(t).split(' ').forEach(function (w) { if ((cur + ' ' + w).trim().length > max) { lines.push(cur.trim()); cur = w; } else cur += ' ' + w; }); if (cur.trim()) lines.push(cur.trim()); return lines; }\n    function newPage(first) {\n      if (ops.length) pages.push(ops);\n      ops = [];\n      rect(0, H - (first ? 110 : 46), W, first ? 110 : 46, RED);\n      if (first) {\n        text(M, H - 52, 22, true, [1, 1, 1], 'TiE Vancouver Events Calendar');\n        text(M, H - 76, 12, false, [1, 1, 1], rangeLabel + '   |   ' + catLabel);\n        y = H - 140;\n        var lx = M;\n        [['F', 'Flagship'], ['P', 'Programs & community'], ['C', 'Charter Members'], ['G', 'TiE Global network']].forEach(function (l) {\n          rect(lx, y - 2, 10, 10, col[l[0]], l[0] === 'G' ? INK : null); text(lx + 15, y, 9, false, INK, l[1]); lx += 30 + l[1].length * 4.6;\n        });\n        y -= 30;\n      } else { text(M, H - 30, 11, true, [1, 1, 1], 'TiE Vancouver Events Calendar  |  ' + rangeLabel); y = H - 80; }\n    }\n    newPage(true);\n    var lastGroup = '';\n    events.forEach(function (e) {\n      var d = parse(e.s), group = MONTH[d.getMonth()] + ' ' + d.getFullYear(), tl = wrap(e.title, 62);\n      var need = 18 + tl.length * 14 + 14 + (group !== lastGroup ? 34 : 0);\n      if (y - need < 70) { newPage(false); lastGroup = ''; }\n      if (group !== lastGroup) { text(M, y, 13, true, RED, group.toUpperCase()); ops.push('0.85 0.85 0.85 RG 0.8 w ' + M + ' ' + (y - 6) + ' m ' + (W - M) + ' ' + (y - 6) + ' l S'); y -= 26; lastGroup = group; }\n      var ed = e.e ? parse(e.e) : null;\n      var dl = monthOnly(e) ? (isUpcoming(e) ? 'TBA' : MONTH[d.getMonth()].slice(0, 3)) : (ed ? d.getDate() + '-' + (ed.getMonth() !== d.getMonth() ? MONTH[ed.getMonth()].slice(0, 3) + ' ' : '') + ed.getDate() : String(d.getDate()));\n      rect(M, y - 4, 12, 12, col[e.cat], e.cat === 'G' ? INK : null);\n      text(M + 20, y, 11, true, INK, dl);\n      tl.forEach(function (line, i) { text(M + 90, y - i * 14, 11, true, INK, line); });\n      y -= tl.length * 14;\n      var nice = { F: 'TiE Vancouver, flagship', P: 'TiE Vancouver, programs & community', C: 'TiE Vancouver, Charter Members', G: 'TiE Global network' }[e.cat];\n      var meta = nice + '  |  ' + timeLabel(e) + '  |  ' + e.venue + (e.act === 'invite' ? '  |  By invitation' : '');\n      wrap(meta, 92).forEach(function (line) { text(M + 90, y, 9, false, GREY, line); y -= 12; });\n      if (e.href && isUpcoming(e)) { text(M + 90, y, 9, true, RED, (e.linkLabel || 'Register') + ': ' + e.href); y -= 12; }\n      y -= 10;\n    });\n    if (!events.length) { text(M, y, 12, false, INK, 'No events in this range yet.'); y -= 30; }\n    if (y < 240) newPage(false);\n    y -= 6;\n    text(M, y, 13, true, RED, 'REGULAR PROGRAM MEETINGS ON ZOOM'); y -= 20;\n    [['TiE Women', 'Sundays 9:00-10:00 AM'], ['TiE Angels', 'Mondays 8:00-9:00 AM'], ['TiE Leadership', 'Thursdays 8:00-9:00 AM'], ['TiE Nurture', 'Saturdays 8:00-9:00 AM'], ['TiE Board', 'Monthly, date TBD']].forEach(function (r) {\n      text(M, y, 10, true, INK, r[0]); text(M + 120, y, 10, false, INK, r[1]); y -= 15;\n    });\n    text(M, y - 4, 9, false, GREY, 'Weekly unless noted, Pacific Time. Zoom links: ' + CONFIG.adminEmail); y -= 34;\n    text(M, y, 13, true, RED, 'MONTHLY IN PERSON'); y -= 20;\n    text(M, y, 10, true, INK, 'Pickleball Entrepreneurs'); text(M + 160, y, 10, false, INK, 'Thursdays, monthly: www.pickleballpreneurs.ca');\n    pages.push(ops);\n    var objs = ['<< \/Type \/Catalog \/Pages 2 0 R >>',\n      '<< \/Type \/Pages \/Kids [' + pages.map(function (_, i) { return (5 + i * 2) + ' 0 R'; }).join(' ') + '] \/Count ' + pages.length + ' >>',\n      '<< \/Type \/Font \/Subtype \/Type1 \/BaseFont \/Helvetica \/Encoding \/WinAnsiEncoding >>',\n      '<< \/Type \/Font \/Subtype \/Type1 \/BaseFont \/Helvetica-Bold \/Encoding \/WinAnsiEncoding >>'];\n    var gen = new Date().toLocaleDateString('en-CA', { year: 'numeric', month: 'long', day: 'numeric' });\n    pages.forEach(function (p, i) {\n      var foot = ['0.37 0.37 0.37 rg BT \/F1 8 Tf ' + M + ' 30 Td (' + enc('vancouver.tie.org   |   Generated ' + gen + '   |   Dates subject to change') + ') Tj ET',\n        'BT \/F1 8 Tf ' + (W - M - 40) + ' 30 Td (' + enc('Page ' + (i + 1) + ' of ' + pages.length) + ') Tj ET'];\n      var stream = p.concat(foot).join('\\n');\n      objs.push('<< \/Type \/Page \/Parent 2 0 R \/MediaBox [0 0 ' + W + ' ' + H + '] \/Resources << \/Font << \/F1 3 0 R \/F2 4 0 R >> >> \/Contents ' + (6 + i * 2) + ' 0 R >>');\n      objs.push('<< \/Length ' + stream.length + ' >>\\nstream\\n' + stream + '\\nendstream');\n    });\n    var out = '%PDF-1.4\\n', offs = [];\n    objs.forEach(function (o, i) { offs.push(out.length); out += (i + 1) + ' 0 obj\\n' + o + '\\nendobj\\n'; });\n    var xref = out.length;\n    out += 'xref\\n0 ' + (objs.length + 1) + '\\n0000000000 65535 f \\n' + offs.map(function (o) { return String(o).padStart(10, '0') + ' 00000 n \\n'; }).join('');\n    out += 'trailer\\n<< \/Size ' + (objs.length + 1) + ' \/Root 1 0 R >>\\nstartxref\\n' + xref + '\\n%%EOF';\n    var bytes = new Uint8Array(out.length);\n    for (var i = 0; i < out.length; i++) bytes[i] = out.charCodeAt(i) & 255;\n    return bytes;\n  }\n  function makePdf() {\n    var a = pdf.months[pdf.from], b = pdf.months[pdf.to];\n    var label = MONTH[a[1]] + ' ' + a[0] + ' to ' + MONTH[b[1]] + ' ' + b[0];\n    var bytes = buildPdf(pdfEvents(), label, state.cat === 'all' ? 'All categories' : CAT_LABEL[state.cat]);\n    var name = 'TiE-Vancouver-Events-' + a[0] + '-' + String(a[1] + 1).padStart(2, '0') + '-to-' + b[0] + '-' + String(b[1] + 1).padStart(2, '0') + '.pdf';\n    download(new Blob([bytes], { type: 'application\/pdf' }), name);\n  }\n\n  \/* ---- structured data for Google event listings *\/\n  function injectSchema() {\n    var items = EVENTS.filter(function (e) { return isUpcoming(e) && !monthOnly(e); }).map(function (e) {\n      var o = { '@context': 'https:\/\/schema.org', '@type': 'Event', name: e.title, startDate: e.utc ? isoZ(e.utc[0]) : dash(parse(e.s)), endDate: e.utc ? isoZ(e.utc[1]) : dash(parse(e.e || e.s)),\n        eventAttendanceMode: 'https:\/\/schema.org\/OfflineEventAttendanceMode', eventStatus: 'https:\/\/schema.org\/EventScheduled', description: e.blurb,\n        location: { '@type': 'Place', name: e.venue, address: e.venue }, organizer: { '@type': 'Organization', name: e.scope === 'V' ? 'TiE Vancouver' : 'TiE Global', url: e.scope === 'V' ? 'https:\/\/vancouver.tie.org\/' : 'https:\/\/tie.org\/' } };\n      if (e.href) o.offers = { '@type': 'Offer', url: e.href };\n      return o;\n    });\n    var s = document.createElement('script'); s.type = 'application\/ld+json'; s.text = JSON.stringify(items);\n    document.head.appendChild(s);\n  }\n\n  \/* ============================================================\n     EVENTS (clicks, keys, input)\n     ============================================================ *\/\n  root.addEventListener('click', function (ev) {\n    var t = ev.target.closest('button, a'); if (!t || !root.contains(t)) {\n      if (state.openCal) { state.openCal = null; renderResults(); }\n      return;\n    }\n    var d = t.dataset;\n    if (d.tab) { state.tab = d.tab; state.showAll = false; state.monthIdx = null; state.openCal = null; renderAll(); return; }\n    if (d.view) { state.view = d.view; state.openCal = null; renderAll(); return; }\n    if (d.cat) { state.cat = d.cat; state.showAll = false; state.openCal = null; renderAll(); return; }\n    if (d.cal) { state.openCal = state.openCal === d.cal ? null : d.cal; renderResults(); return; }\n    if (d.ics) { var e = EVENTS.filter(function (x) { return x.id === d.ics; })[0]; calLinks(e).ics(); state.openCal = null; renderResults(); return; }\n    if (d.month) { state.monthIdx = (state.monthIdx || 0) + Number(d.month); renderResults(); return; }\n    if (d.action === 'show-all') { state.showAll = true; renderResults(); return; }\n    if (d.action === 'open-pdf') { openPdf(); return; }\n    if (d.action === 'make-pdf') { makePdf(); return; }\n    if (d.step) { var p = d.step.split(':'); if (p[0] === 'from') pdf.from = Math.max(0, Math.min(pdf.to, pdf.from + Number(p[1]))); else pdf.to = Math.max(pdf.from, Math.min(pdf.months.length - 1, pdf.to + Number(p[1]))); renderPdfDialog(); return; }\n    if (d.preset) { var r = d.preset.split(':').map(Number); pdf.from = r[0]; pdf.to = r[1]; renderPdfDialog(); return; }\n    if (d.gy) { state.gy = d.gy; renderGallery(); return; }\n    if (d.album != null) { lb.album = Number(d.album); lb.i = 0; showLb(); openDialog('#tve-lb'); return; }\n    if (d.lb) { var a = ALBUMS[lb.album]; lb.i = (lb.i + Number(d.lb) + a.p.length) % a.p.length; showLb(); return; }\n    if (t.hasAttribute('data-close')) { closeDialogs(); return; }\n  });\n  root.querySelectorAll('.tve-overlay, .tve-lb').forEach(function (o) { o.addEventListener('click', function (ev) { if (ev.target === o) closeDialogs(); }); });\n  document.addEventListener('keydown', function (ev) {\n    if (ev.key === 'Escape') { closeDialogs(); if (state.openCal) { state.openCal = null; renderResults(); } }\n    if (!$('#tve-lb').hidden && (ev.key === 'ArrowRight' || ev.key === 'ArrowLeft')) { var a = ALBUMS[lb.album]; lb.i = (lb.i + (ev.key === 'ArrowRight' ? 1 : -1) + a.p.length) % a.p.length; showLb(); }\n  });\n  var qTimer;\n  $('#tve-q').addEventListener('input', function (ev) { clearTimeout(qTimer); qTimer = setTimeout(function () { state.q = ev.target.value.toLowerCase().trim(); state.showAll = false; renderChips(); renderResults(); }, 120); });\n\n  \/* ---- start *\/\n  renderFeatured();\n  renderAll();\n  renderGallery();\n  injectSchema();\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2fc8bc7 e-flex e-con-boxed e-con e-parent\" data-id=\"2fc8bc7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-029758b elementor-widget elementor-widget-text-editor\" data-id=\"029758b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p><strong data-start=\"119\" data-end=\"170\">Be Part of TiE Vancouver\u2019s Vibrant Event Scene!<\/strong><\/p>\n<p data-start=\"119\" data-end=\"523\">\nAt <strong data-start=\"176\" data-end=\"193\">TiE Vancouver<\/strong>, we host a dynamic lineup of events throughout the year \u2014 from inspiring keynote sessions and entrepreneurial workshops to high-energy networking mixers. Each event is designed to empower entrepreneurs, foster meaningful connections, and align with our mission to drive innovation and business growth.<\/p>\n<p data-start=\"525\" data-end=\"738\">With a number of&nbsp;<strong data-start=\"535\" data-end=\"565\">opportunities annually<\/strong> to engage, learn, and connect, our events keep you at the forefront of industry insights while expanding your network within Vancouver\u2019s thriving entrepreneurial ecosystem.<\/p>\n<p data-start=\"740\" data-end=\"888\"><strong data-start=\"743\" data-end=\"782\">Sponsorship Opportunities Available<\/strong><br data-start=\"782\" data-end=\"785\">Elevate your brand and connect with influential leaders, founders, and investors by partnering with us.<\/p>\n<p data-start=\"890\" data-end=\"1020\"><strong data-start=\"893\" data-end=\"921\">Contact our Events Team:<\/strong> <a data-start=\"922\" data-end=\"981\" rel=\"noopener\"><strong data-start=\"923\" data-end=\"949\">admin@vancouver.tie.org<\/strong><\/a><br data-start=\"981\" data-end=\"984\">Let\u2019s collaborate to make an impact!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","footnotes":""},"class_list":["post-556","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vancouver.tie.org\/index.php\/wp-json\/wp\/v2\/pages\/556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vancouver.tie.org\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vancouver.tie.org\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vancouver.tie.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vancouver.tie.org\/index.php\/wp-json\/wp\/v2\/comments?post=556"}],"version-history":[{"count":74,"href":"https:\/\/vancouver.tie.org\/index.php\/wp-json\/wp\/v2\/pages\/556\/revisions"}],"predecessor-version":[{"id":2454,"href":"https:\/\/vancouver.tie.org\/index.php\/wp-json\/wp\/v2\/pages\/556\/revisions\/2454"}],"wp:attachment":[{"href":"https:\/\/vancouver.tie.org\/index.php\/wp-json\/wp\/v2\/media?parent=556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}