{"id":6,"date":"2026-07-29T19:48:45","date_gmt":"2026-07-29T19:48:45","guid":{"rendered":"https:\/\/solusflyerscanada.com\/?page_id=6"},"modified":"2026-07-29T20:14:31","modified_gmt":"2026-07-29T20:14:31","slug":"partner-with-us","status":"publish","type":"page","link":"https:\/\/solusflyerscanada.com\/?page_id=6","title":{"rendered":"Partner with Us"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<title>Solus Flyers \u2014 Canada Partner Map<\/title>\n<style>\n  :root{\n    --bg:#0E0F11;\n    --bg-raised:#17181B;\n    --bg-raised-2:#1E2024;\n    --border:#2A2C31;\n    --border-soft:#232529;\n    --text:#F5F5F1;\n    --text-muted:#A6A69C;\n    --text-dim:#75766E;\n    --accent:#E9E026;\n    --accent-ink:#14150C;\n    --accent-soft:rgba(233,224,38,0.12);\n    --op:#34D399;\n    --op-soft:rgba(52,211,153,0.14);\n    --seek:#E9E026;\n    --seek-soft:rgba(233,224,38,0.14);\n    --come:#4FA8F0;\n    --come-soft:rgba(79,168,240,0.14);\n    --font-display: ui-sans-serif, \"Segoe UI\", \"Helvetica Neue\", Arial, sans-serif;\n    --font-body: system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif;\n    --font-mono: ui-monospace, \"SF Mono\", \"Cascadia Mono\", \"Roboto Mono\", Consolas, monospace;\n    --radius-lg:20px;\n    --radius-md:14px;\n    --radius-sm:9px;\n    --shadow-soft: 0 10px 30px rgba(0,0,0,0.35);\n    --shadow-lift: 0 18px 48px rgba(0,0,0,0.5);\n  }\n\n  *,*::before,*::after{box-sizing:border-box;}\n  html,body{margin:0;padding:0;}\n  body{\n    background:var(--bg);\n    color:var(--text);\n    font-family:var(--font-body);\n    -webkit-font-smoothing:antialiased;\n    line-height:1.6;\n    overflow-x:hidden;\n  }\n  img,svg{max-width:100%;display:block;}\n  button{font-family:inherit;}\n  a{color:inherit;}\n\n  .sf-app{\n    max-width:1180px;\n    margin:0 auto;\n    padding:32px 20px 80px;\n    display:flex;\n    flex-direction:column;\n    gap:44px;\n  }\n\n  .sf-skip-link{\n    position:absolute;\n    left:-999px;\n    top:auto;\n    background:var(--accent);\n    color:var(--accent-ink);\n    padding:10px 16px;\n    border-radius:var(--radius-sm);\n    font-weight:700;\n    z-index:200;\n  }\n  .sf-skip-link:focus{\n    left:20px;\n    top:20px;\n  }\n\n  :focus-visible{\n    outline:3px solid var(--accent);\n    outline-offset:3px;\n    border-radius:6px;\n  }\n\n  \/* ---------- Hero ---------- *\/\n  .sf-hero{\n    position:relative;\n    border-radius:var(--radius-lg);\n    padding:56px 36px;\n    background:\n      radial-gradient(circle at 18% 20%, rgba(233,224,38,0.10), transparent 55%),\n      radial-gradient(circle at 84% 78%, rgba(79,168,240,0.08), transparent 50%),\n      linear-gradient(180deg, #141519 0%, #0E0F11 100%);\n    border:1px solid var(--border-soft);\n    overflow:hidden;\n    text-align:center;\n  }\n  .sf-hero::before{\n    content:\"\";\n    position:absolute;\n    inset:0;\n    background-image:radial-gradient(rgba(245,245,241,0.06) 1px, transparent 1px);\n    background-size:26px 26px;\n    mask-image:radial-gradient(ellipse at 50% 30%, black 0%, transparent 72%);\n    pointer-events:none;\n  }\n  .sf-hero-eyebrow{\n    position:relative;\n    display:inline-flex;\n    align-items:center;\n    gap:8px;\n    font-family:var(--font-mono);\n    font-size:12px;\n    letter-spacing:.16em;\n    text-transform:uppercase;\n    color:var(--accent);\n    background:var(--accent-soft);\n    border:1px solid rgba(233,224,38,0.3);\n    padding:6px 14px;\n    border-radius:999px;\n    margin-bottom:22px;\n  }\n  .sf-hero-eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:sf-pulse-dot 2s ease-in-out infinite;}\n  .sf-hero h1{\n    position:relative;\n    font-family:var(--font-display);\n    font-weight:800;\n    letter-spacing:-0.02em;\n    font-size:clamp(30px, 5vw, 54px);\n    line-height:1.06;\n    margin:0 0 18px;\n    text-wrap:balance;\n    color:var(--text);\n  }\n  .sf-hero h1 em{\n    font-style:normal;\n    color:var(--accent);\n  }\n  .sf-hero p{\n    position:relative;\n    max-width:640px;\n    margin:0 auto;\n    color:var(--text-muted);\n    font-size:clamp(15px,2vw,18px);\n  }\n\n  \/* ---------- Stats ---------- *\/\n  .sf-stats{\n    display:grid;\n    grid-template-columns:repeat(4,1fr);\n    gap:16px;\n  }\n  .sf-stat-card{\n    background:var(--bg-raised);\n    border:1px solid var(--border-soft);\n    border-radius:var(--radius-md);\n    padding:22px 20px;\n    display:flex;\n    flex-direction:column;\n    gap:6px;\n    opacity:0;\n    transform:translateY(14px);\n    transition:opacity .6s ease, transform .6s ease, border-color .2s ease, box-shadow .2s ease;\n  }\n  .sf-stat-card.sf-in{opacity:1;transform:translateY(0);}\n  .sf-stat-card:hover{border-color:rgba(233,224,38,0.35);box-shadow:var(--shadow-soft);}\n  .sf-stat-num{\n    font-family:var(--font-mono);\n    font-variant-numeric:tabular-nums;\n    font-size:clamp(26px,3.4vw,36px);\n    font-weight:700;\n    color:var(--accent);\n  }\n  .sf-stat-label{\n    font-size:13px;\n    text-transform:uppercase;\n    letter-spacing:.08em;\n    color:var(--text-muted);\n  }\n\n  \/* ---------- Console (search\/filter\/map) ---------- *\/\n  .sf-console{\n    background:var(--bg-raised);\n    border:1px solid var(--border-soft);\n    border-radius:var(--radius-lg);\n    padding:22px;\n    display:flex;\n    flex-direction:column;\n    gap:18px;\n  }\n  .sf-toolbar{\n    display:flex;\n    flex-wrap:wrap;\n    gap:14px;\n    align-items:center;\n    justify-content:space-between;\n  }\n  .sf-search{\n    position:relative;\n    flex:1 1 280px;\n    min-width:220px;\n  }\n  .sf-search input{\n    width:100%;\n    background:var(--bg-raised-2);\n    border:1px solid var(--border);\n    color:var(--text);\n    padding:13px 16px 13px 42px;\n    border-radius:var(--radius-sm);\n    font-size:15px;\n    transition:border-color .2s ease, box-shadow .2s ease;\n  }\n  .sf-search input::placeholder{color:var(--text-dim);}\n  .sf-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none;}\n  .sf-search-icon{\n    position:absolute;left:14px;top:50%;transform:translateY(-50%);\n    width:18px;height:18px;color:var(--text-dim);pointer-events:none;\n  }\n  .sf-search-results{\n    position:absolute;\n    top:calc(100% + 8px);\n    left:0;right:0;\n    background:var(--bg-raised-2);\n    border:1px solid var(--border);\n    border-radius:var(--radius-sm);\n    max-height:280px;\n    overflow-y:auto;\n    z-index:40;\n    box-shadow:var(--shadow-lift);\n    display:none;\n  }\n  .sf-search-results.sf-open{display:block;}\n  .sf-search-result{\n    padding:10px 16px;\n    cursor:pointer;\n    display:flex;\n    align-items:center;\n    justify-content:space-between;\n    gap:10px;\n    font-size:14px;\n    border-bottom:1px solid var(--border-soft);\n  }\n  .sf-search-result:last-child{border-bottom:none;}\n  .sf-search-result:hover,.sf-search-result[aria-selected=\"true\"]{background:var(--accent-soft);}\n  .sf-search-result .sf-sr-city{font-weight:600;}\n  .sf-search-result .sf-sr-prov{color:var(--text-dim);font-size:12px;}\n  .sf-search-empty{padding:14px 16px;color:var(--text-dim);font-size:14px;}\n\n  .sf-view-toggle{\n    display:flex;\n    background:var(--bg-raised-2);\n    border:1px solid var(--border);\n    border-radius:999px;\n    padding:3px;\n    gap:3px;\n  }\n  .sf-view-toggle button{\n    border:none;\n    background:transparent;\n    color:var(--text-muted);\n    padding:9px 16px;\n    border-radius:999px;\n    font-size:13px;\n    font-weight:600;\n    cursor:pointer;\n    transition:background .2s ease, color .2s ease;\n  }\n  .sf-view-toggle button[aria-pressed=\"true\"]{background:var(--accent);color:var(--accent-ink);}\n\n  .sf-filters{\n    display:flex;\n    flex-wrap:wrap;\n    gap:8px;\n  }\n  .sf-filter-btn{\n    border:1px solid var(--border);\n    background:var(--bg-raised-2);\n    color:var(--text-muted);\n    padding:8px 14px;\n    border-radius:999px;\n    font-size:13px;\n    font-weight:600;\n    cursor:pointer;\n    display:inline-flex;\n    align-items:center;\n    gap:7px;\n    transition:transform .15s ease, border-color .2s ease, color .2s ease, background .2s ease;\n  }\n  .sf-filter-btn:hover{transform:translateY(-1px);}\n  .sf-filter-btn .swatch{width:8px;height:8px;border-radius:50%;background:currentColor;}\n  .sf-filter-btn[aria-pressed=\"true\"]{border-color:var(--accent);color:var(--text);background:var(--accent-soft);}\n  .sf-filter-btn[data-status=\"operating\"][aria-pressed=\"true\"]{border-color:var(--op);}\n  .sf-filter-btn[data-status=\"seeking\"][aria-pressed=\"true\"]{border-color:var(--seek);}\n  .sf-filter-btn[data-status=\"coming\"][aria-pressed=\"true\"]{border-color:var(--come);}\n\n  \/* ---------- Map stage ---------- *\/\n  .sf-map-stage{\n    position:relative;\n    border-radius:var(--radius-md);\n    overflow:hidden;\n    background:\n      radial-gradient(circle at 30% 20%, rgba(233,224,38,0.05), transparent 60%),\n      #101215;\n    border:1px solid var(--border-soft);\n    height:min(72vh,620px);\n    min-height:380px;\n    touch-action:none;\n  }\n  .sf-map-stage svg{\n    width:100%;\n    height:100%;\n    display:block;\n    cursor:grab;\n  }\n  .sf-map-stage svg.sf-grabbing{cursor:grabbing;}\n\n  .sf-grid-line{stroke:rgba(245,245,241,0.05);stroke-width:1;}\n  .sf-landmass-glow{fill:rgba(245,245,241,0.025);}\n  .sf-prov-label{\n    fill:var(--text-dim);\n    font-family:var(--font-mono);\n    font-size:11px;\n    letter-spacing:.08em;\n    text-transform:uppercase;\n    pointer-events:none;\n    user-select:none;\n  }\n\n  .sf-marker{cursor:pointer;}\n  .sf-marker .sf-marker-halo{\n    opacity:0;\n    transform-origin:center;\n    animation:sf-marker-pulse 2.6s ease-out infinite;\n  }\n  .sf-marker[data-status=\"operating\"] .sf-marker-dot{fill:var(--op);}\n  .sf-marker[data-status=\"operating\"] .sf-marker-halo{fill:var(--op);}\n  .sf-marker[data-status=\"seeking\"] .sf-marker-dot{fill:var(--seek);}\n  .sf-marker[data-status=\"seeking\"] .sf-marker-halo{fill:var(--seek);}\n  .sf-marker[data-status=\"coming\"] .sf-marker-dot{fill:none;stroke:var(--come);stroke-width:2;stroke-dasharray:2.4 2.2;}\n  .sf-marker[data-status=\"coming\"] .sf-marker-halo{fill:var(--come);}\n  .sf-marker-dot{transition:r .15s ease, filter .15s ease;}\n  .sf-marker:hover .sf-marker-dot,.sf-marker:focus .sf-marker-dot{filter:brightness(1.3);}\n  .sf-marker.sf-dimmed{opacity:0.12;pointer-events:none;}\n  .sf-marker.sf-active .sf-marker-dot{filter:drop-shadow(0 0 6px currentColor);}\n\n  .sf-heat-layer{opacity:0;pointer-events:none;transition:opacity .35s ease;}\n  .sf-heat-layer.sf-visible{opacity:1;}\n  .sf-marker-layer{transition:opacity .35s ease;}\n  .sf-marker-layer.sf-hidden-for-heat{opacity:0.16;}\n\n  .sf-map-controls{\n    position:absolute;\n    right:14px;\n    bottom:14px;\n    display:flex;\n    flex-direction:column;\n    gap:8px;\n    z-index:10;\n  }\n  .sf-map-controls button{\n    width:44px;height:44px;\n    border-radius:var(--radius-sm);\n    background:rgba(23,24,27,0.92);\n    border:1px solid var(--border);\n    color:var(--text);\n    font-size:18px;\n    font-weight:700;\n    cursor:pointer;\n    backdrop-filter:blur(6px);\n    transition:transform .15s ease, background .2s ease;\n  }\n  .sf-map-controls button:hover{transform:scale(1.06);background:var(--bg-raised-2);}\n\n  .sf-map-hint{\n    position:absolute;\n    left:14px;\n    bottom:14px;\n    font-size:12px;\n    color:var(--text-dim);\n    background:rgba(23,24,27,0.85);\n    border:1px solid var(--border-soft);\n    padding:7px 12px;\n    border-radius:999px;\n    pointer-events:none;\n  }\n\n  \/* ---------- Legend ---------- *\/\n  .sf-legend{\n    display:flex;\n    flex-wrap:wrap;\n    gap:20px;\n    padding:4px 4px 0;\n    font-size:13px;\n    color:var(--text-muted);\n  }\n  .sf-legend-item{display:flex;align-items:center;gap:8px;}\n  .sf-legend-swatch{width:11px;height:11px;border-radius:50%;flex:none;}\n  .sf-legend-swatch.op{background:var(--op);}\n  .sf-legend-swatch.seek{background:var(--seek);}\n  .sf-legend-swatch.come{background:transparent;border:2px dashed var(--come);}\n\n  \/* ---------- City panel ---------- *\/\n  .sf-panel-backdrop{\n    position:fixed;inset:0;\n    background:rgba(0,0,0,0.5);\n    opacity:0;pointer-events:none;\n    transition:opacity .25s ease;\n    z-index:90;\n  }\n  .sf-panel-backdrop.sf-open{opacity:1;pointer-events:auto;}\n\n  .sf-panel{\n    position:fixed;\n    top:0;right:0;\n    height:100%;\n    width:min(420px,92vw);\n    background:var(--bg-raised);\n    border-left:1px solid var(--border-soft);\n    box-shadow:var(--shadow-lift);\n    z-index:100;\n    transform:translateX(105%);\n    transition:transform .35s cubic-bezier(.22,.9,.32,1);\n    display:flex;\n    flex-direction:column;\n    overflow-y:auto;\n  }\n  .sf-panel.sf-open{transform:translateX(0);}\n\n  .sf-panel-head{\n    display:flex;\n    align-items:flex-start;\n    justify-content:space-between;\n    gap:12px;\n    padding:24px 24px 0;\n  }\n  .sf-panel-close{\n    background:var(--bg-raised-2);\n    border:1px solid var(--border);\n    color:var(--text);\n    width:38px;height:38px;\n    border-radius:50%;\n    font-size:16px;\n    cursor:pointer;\n    flex:none;\n    transition:transform .15s ease;\n  }\n  .sf-panel-close:hover{transform:scale(1.08);}\n\n  .sf-panel-body{padding:16px 24px 32px;display:flex;flex-direction:column;gap:22px;}\n  .sf-panel-city{\n    font-family:var(--font-display);\n    font-weight:800;\n    font-size:26px;\n    letter-spacing:-.01em;\n    margin:0;\n  }\n  .sf-panel-prov{color:var(--text-dim);font-size:14px;margin-top:2px;}\n\n  .sf-status-badge{\n    display:inline-flex;\n    align-items:center;\n    gap:7px;\n    padding:6px 12px;\n    border-radius:999px;\n    font-size:12px;\n    font-weight:700;\n    text-transform:uppercase;\n    letter-spacing:.05em;\n    width:fit-content;\n  }\n  .sf-status-badge .dot{width:8px;height:8px;border-radius:50%;}\n  .sf-status-badge.operating{background:var(--op-soft);color:var(--op);}\n  .sf-status-badge.operating .dot{background:var(--op);}\n  .sf-status-badge.seeking{background:var(--seek-soft);color:var(--seek);}\n  .sf-status-badge.seeking .dot{background:var(--seek);}\n  .sf-status-badge.coming{background:var(--come-soft);color:var(--come);}\n  .sf-status-badge.coming .dot{background:var(--come);}\n\n  .sf-panel-metrics{\n    display:grid;\n    grid-template-columns:1fr 1fr;\n    gap:12px;\n  }\n  .sf-metric{\n    background:var(--bg-raised-2);\n    border:1px solid var(--border-soft);\n    border-radius:var(--radius-sm);\n    padding:14px 16px;\n  }\n  .sf-metric-label{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-dim);}\n  .sf-metric-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:20px;font-weight:700;margin-top:4px;}\n\n  .sf-rating{display:flex;flex-direction:column;gap:6px;}\n  .sf-rating-stars{font-size:20px;letter-spacing:2px;color:var(--border);}\n  .sf-rating-stars .filled{color:var(--accent);}\n  .sf-rating-text{font-size:13px;color:var(--text-muted);}\n\n  .sf-panel-why h3{\n    font-size:12px;\n    text-transform:uppercase;\n    letter-spacing:.08em;\n    color:var(--text-dim);\n    margin:0 0 8px;\n  }\n  .sf-panel-why p{margin:0;color:var(--text-muted);font-size:15px;max-width:60ch;}\n\n  .sf-cta-btn{\n    display:block;\n    width:100%;\n    text-align:center;\n    background:var(--accent);\n    color:var(--accent-ink);\n    border:none;\n    padding:16px 20px;\n    border-radius:var(--radius-sm);\n    font-weight:800;\n    font-size:15px;\n    cursor:pointer;\n    transition:transform .15s ease, box-shadow .15s ease;\n  }\n  .sf-cta-btn:hover{transform:translateY(-2px) scale(1.015);box-shadow:0 10px 26px rgba(233,224,38,0.25);}\n\n  \/* ---------- Footer CTA ---------- *\/\n  .sf-footer-cta{\n    position:relative;\n    border-radius:var(--radius-lg);\n    padding:56px 36px;\n    text-align:center;\n    background:\n      radial-gradient(circle at 76% 30%, rgba(233,224,38,0.12), transparent 55%),\n      linear-gradient(180deg, #17181B 0%, #0E0F11 100%);\n    border:1px solid var(--border-soft);\n    overflow:hidden;\n  }\n  .sf-footer-cta h2{\n    font-family:var(--font-display);\n    font-weight:800;\n    font-size:clamp(26px,4vw,40px);\n    letter-spacing:-.01em;\n    margin:0 0 16px;\n    text-wrap:balance;\n  }\n  .sf-footer-cta h2 em{font-style:normal;color:var(--accent);}\n  .sf-footer-cta p{\n    max-width:620px;\n    margin:0 auto 28px;\n    color:var(--text-muted);\n    font-size:16px;\n  }\n  .sf-footer-cta .sf-cta-btn{width:auto;display:inline-block;padding:17px 34px;font-size:16px;}\n\n  \/* ---------- Placeholder application form ---------- *\/\n  .sf-form-section{\n    background:var(--bg-raised);\n    border:1px solid var(--border-soft);\n    border-radius:var(--radius-lg);\n    padding:32px;\n  }\n  .sf-form-section h2{font-family:var(--font-display);font-size:24px;margin:0 0 6px;}\n  .sf-form-note{\n    font-size:13px;\n    color:var(--text-dim);\n    background:var(--bg-raised-2);\n    border:1px dashed var(--border);\n    border-radius:var(--radius-sm);\n    padding:10px 14px;\n    margin:14px 0 22px;\n  }\n  .sf-applying-banner{\n    display:none;\n    align-items:center;\n    gap:10px;\n    background:var(--accent-soft);\n    border:1px solid rgba(233,224,38,0.35);\n    color:var(--accent);\n    padding:10px 16px;\n    border-radius:var(--radius-sm);\n    font-size:14px;\n    font-weight:600;\n    margin-bottom:20px;\n  }\n  .sf-applying-banner.sf-show{display:flex;}\n  .sf-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}\n  .sf-form-grid .full{grid-column:1\/-1;}\n  .sf-form-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-muted);}\n  .sf-form-grid input,.sf-form-grid textarea{\n    background:var(--bg-raised-2);\n    border:1px solid var(--border);\n    color:var(--text);\n    padding:11px 13px;\n    border-radius:var(--radius-sm);\n    font-family:inherit;\n    font-size:14px;\n  }\n  .sf-form-grid input:focus,.sf-form-grid textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft);}\n  .sf-form-submit{margin-top:18px;}\n\n  .sf-tiny-footer{text-align:center;color:var(--text-dim);font-size:12px;}\n\n  @keyframes sf-marker-pulse{\n    0%{opacity:.55;transform:scale(1);}\n    70%{opacity:0;transform:scale(2.6);}\n    100%{opacity:0;transform:scale(2.6);}\n  }\n  @keyframes sf-pulse-dot{\n    0%,100%{opacity:1;}\n    50%{opacity:.35;}\n  }\n\n  @media (prefers-reduced-motion: reduce){\n    *{animation-duration:0.001ms !important;animation-iteration-count:1 !important;transition-duration:0.001ms !important;}\n  }\n\n  \/* ---------- Mobile ---------- *\/\n  @media (max-width:860px){\n    .sf-app{padding:20px 14px 64px;gap:32px;}\n    .sf-hero{padding:40px 22px;}\n    .sf-stats{grid-template-columns:1fr 1fr;}\n    .sf-form-grid{grid-template-columns:1fr;}\n    .sf-map-stage{height:62vh;min-height:420px;}\n\n    .sf-panel{\n      top:auto;bottom:0;left:0;right:0;\n      width:100%;\n      height:auto;\n      max-height:82vh;\n      border-left:none;\n      border-top:1px solid var(--border-soft);\n      border-radius:22px 22px 0 0;\n      transform:translateY(105%);\n    }\n    .sf-panel.sf-open{transform:translateY(0);}\n    .sf-panel-drag{\n      width:44px;height:5px;border-radius:99px;background:var(--border);\n      margin:10px auto 0;\n    }\n  }\n\n  @media (max-width:480px){\n    .sf-stats{grid-template-columns:1fr 1fr;gap:10px;}\n    .sf-stat-card{padding:16px 14px;}\n    .sf-panel-metrics{grid-template-columns:1fr 1fr;}\n    .sf-toolbar{flex-direction:column;align-items:stretch;}\n    .sf-view-toggle{justify-content:center;}\n  }\n<\/style>\n\n<a class=\"sf-skip-link\" href=\"#sf-main\">Skip to partner map<\/a>\n\n<div class=\"sf-app\" id=\"sf-main\">\n\n  <!-- HERO -->\n  <header class=\"sf-hero\">\n    <span class=\"sf-hero-eyebrow\"><span class=\"dot\" aria-hidden=\"true\"><\/span> Now Expanding Nationwide<\/span>\n    <h1>Partner with Solus Flyers <em>Across Canada<\/em><\/h1>\n    <p>Own and operate a Solus Flyers business in your community. Click on a city below to discover available opportunities.<\/p>\n  <\/header>\n\n  <!-- STATS -->\n  <section class=\"sf-stats\" id=\"sf-stats\" aria-label=\"Network statistics\">\n    <div class=\"sf-stat-card\">\n      <span class=\"sf-stat-num\" data-stat=\"citiesAvailable\" data-suffix=\"\">0<\/span>\n      <span class=\"sf-stat-label\">Cities Available<\/span>\n    <\/div>\n    <div class=\"sf-stat-card\">\n      <span class=\"sf-stat-num\" data-stat=\"potentialHomes\" data-suffix=\"+\">0<\/span>\n      <span class=\"sf-stat-label\">Potential Homes<\/span>\n    <\/div>\n    <div class=\"sf-stat-card\">\n      <span class=\"sf-stat-num\" data-stat=\"partnersOperating\" data-suffix=\"\">0<\/span>\n      <span class=\"sf-stat-label\">Partners Operating<\/span>\n    <\/div>\n    <div class=\"sf-stat-card\">\n      <span class=\"sf-stat-num\" data-stat=\"citiesSeeking\" data-suffix=\"\">0<\/span>\n      <span class=\"sf-stat-label\">Cities Seeking Partners<\/span>\n    <\/div>\n  <\/section>\n\n  <!-- CONSOLE: search + filters + map -->\n  <section class=\"sf-console\" aria-label=\"Canada partner map\">\n    <div class=\"sf-toolbar\">\n      <div class=\"sf-search\" role=\"combobox\" aria-expanded=\"false\" aria-owns=\"sf-search-results\" aria-haspopup=\"listbox\">\n        <svg class=\"sf-search-icon\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"2\"\/><path d=\"M21 21l-4.3-4.3\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>\n        <input type=\"text\" id=\"sf-search-input\" placeholder=\"Search for your city...\" autocomplete=\"off\"\n               aria-label=\"Search for your city\" aria-autocomplete=\"list\" aria-controls=\"sf-search-results\" \/>\n        <div class=\"sf-search-results\" id=\"sf-search-results\" role=\"listbox\"><\/div>\n      <\/div>\n\n      <div class=\"sf-view-toggle\" role=\"group\" aria-label=\"Map view\">\n        <button type=\"button\" data-view=\"markers\" aria-pressed=\"true\">Marker View<\/button>\n        <button type=\"button\" data-view=\"heat\" aria-pressed=\"false\">Heat Map View<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"sf-filters\" role=\"group\" aria-label=\"Filter cities by status\">\n      <button class=\"sf-filter-btn\" data-status=\"all\" aria-pressed=\"true\">All Cities<\/button>\n      <button class=\"sf-filter-btn\" data-status=\"operating\" aria-pressed=\"false\"><span class=\"swatch\" style=\"color:var(--op)\"><\/span>Operating<\/button>\n      <button class=\"sf-filter-btn\" data-status=\"seeking\" aria-pressed=\"false\"><span class=\"swatch\" style=\"color:var(--seek)\"><\/span>Seeking Partner<\/button>\n      <button class=\"sf-filter-btn\" data-status=\"coming\" aria-pressed=\"false\"><span class=\"swatch\" style=\"color:var(--come)\"><\/span>Coming Soon<\/button>\n    <\/div>\n\n    <div class=\"sf-map-stage\" id=\"sf-map-stage\">\n      <svg id=\"sf-svg\" viewBox=\"0 0 1000 700\" role=\"application\" aria-label=\"Interactive map of Canadian cities. Use the search box for keyboard access, or tab to individual city markers.\">\n        <g id=\"sf-map-layer\">\n          <g id=\"sf-grid\"><\/g>\n          <g id=\"sf-prov-labels\"><\/g>\n          <g id=\"sf-heat-layer\" class=\"sf-heat-layer\"><\/g>\n          <g id=\"sf-marker-layer\" class=\"sf-marker-layer\"><\/g>\n        <\/g>\n      <\/svg>\n      <div class=\"sf-map-hint\">Scroll \/ pinch to zoom &middot; drag to pan<\/div>\n      <div class=\"sf-map-controls\">\n        <button type=\"button\" id=\"sf-zoom-in\" aria-label=\"Zoom in\">+<\/button>\n        <button type=\"button\" id=\"sf-zoom-out\" aria-label=\"Zoom out\">&minus;<\/button>\n        <button type=\"button\" id=\"sf-zoom-reset\" aria-label=\"Reset map view\">&#8634;<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"sf-legend\" aria-hidden=\"false\">\n      <span class=\"sf-legend-item\"><span class=\"sf-legend-swatch op\"><\/span> Operating \u2014 a partner already serves this city<\/span>\n      <span class=\"sf-legend-item\"><span class=\"sf-legend-swatch seek\"><\/span> Seeking Partner \u2014 this city is available now<\/span>\n      <span class=\"sf-legend-item\"><span class=\"sf-legend-swatch come\"><\/span> Coming Soon \u2014 expansion planned<\/span>\n    <\/div>\n  <\/section>\n\n  <!-- FOOTER CTA -->\n  <section class=\"sf-footer-cta\">\n    <h2>Your City Could Be <em>Next<\/em><\/h2>\n    <p>If your city is currently seeking a partner, now is the perfect time to become part of the Solus Flyers network. We provide the business model, marketing materials, website, and ongoing support so you can focus on building your local business.<\/p>\n    <button type=\"button\" class=\"sf-cta-btn\" id=\"sf-footer-apply\">Apply to Become a Solus Flyers Partner<\/button>\n  <\/section>\n\n  <!-- APPLICATION FORM PLACEHOLDER -->\n  <section class=\"sf-form-section\" id=\"partner-application-form\">\n    <h2>Partner With Us<\/h2>\n    <p style=\"color:var(--text-muted);margin:0;\">Tell us about the city you&#8217;d like to serve and we&#8217;ll be in touch.<\/p>\n    <div class=\"sf-form-note\">This is a placeholder application form for preview purposes. When embedding in WordPress, replace this section with your existing &#8220;Partner with Us&#8221; form \u2014 just keep its wrapper&#8217;s <code>id=\"partner-application-form\"<\/code> (or update <code>FORM_TARGET_SELECTOR<\/code> near the top of the script) so every &#8220;Become the Partner&#8221; button keeps scrolling to the right place.<\/div>\n    <div class=\"sf-applying-banner\" id=\"sf-applying-banner\"><\/div>\n    <form onsubmit=\"return false;\">\n      <div class=\"sf-form-grid\">\n        <label>Full name<input type=\"text\" name=\"name\" required \/><\/label>\n        <label>Email<input type=\"email\" name=\"email\" required \/><\/label>\n        <label>Phone<input type=\"tel\" name=\"phone\" \/><\/label>\n        <label>City you&#8217;re applying for<input type=\"text\" name=\"city\" id=\"sf-form-city\" \/><\/label>\n        <label class=\"full\">Tell us about yourself<textarea rows=\"4\" name=\"message\"><\/textarea><\/label>\n      <\/div>\n      <button type=\"submit\" class=\"sf-cta-btn sf-form-submit\" style=\"width:auto;padding-left:32px;padding-right:32px;\">Submit Application<\/button>\n    <\/form>\n  <\/section>\n\n  <p class=\"sf-tiny-footer\">Solus Flyers &middot; Canada Partner Map &middot; Data covers cities with population 10,000+ outside Quebec &middot; Updated 2026<\/p>\n<\/div>\n\n<!-- Backdrop + city panel -->\n<div class=\"sf-panel-backdrop\" id=\"sf-panel-backdrop\"><\/div>\n<aside class=\"sf-panel\" id=\"sf-panel\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"sf-panel-city-name\" tabindex=\"-1\">\n  <div class=\"sf-panel-drag\" aria-hidden=\"true\"><\/div>\n  <div class=\"sf-panel-head\">\n    <div>\n      <h2 class=\"sf-panel-city\" id=\"sf-panel-city-name\">&nbsp;<\/h2>\n      <div class=\"sf-panel-prov\" id=\"sf-panel-prov\"><\/div>\n    <\/div>\n    <button type=\"button\" class=\"sf-panel-close\" id=\"sf-panel-close\" aria-label=\"Close city details\">&times;<\/button>\n  <\/div>\n  <div class=\"sf-panel-body\">\n    <span class=\"sf-status-badge\" id=\"sf-panel-status\"><span class=\"dot\"><\/span><span id=\"sf-panel-status-text\"><\/span><\/span>\n\n    <div class=\"sf-panel-metrics\">\n      <div class=\"sf-metric\">\n        <div class=\"sf-metric-label\">Population<\/div>\n        <div class=\"sf-metric-value\" id=\"sf-panel-pop\"><\/div>\n      <\/div>\n      <div class=\"sf-metric\">\n        <div class=\"sf-metric-label\">Est. Homes<\/div>\n        <div class=\"sf-metric-value\" id=\"sf-panel-hh\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"sf-rating\">\n      <div class=\"sf-metric-label\">Opportunity Rating<\/div>\n      <div class=\"sf-rating-stars\" id=\"sf-panel-stars\" aria-hidden=\"true\"><\/div>\n      <div class=\"sf-rating-text\" id=\"sf-panel-rating-text\"><\/div>\n    <\/div>\n\n    <div class=\"sf-panel-why\">\n      <h3>Why This City?<\/h3>\n      <p id=\"sf-panel-desc\"><\/p>\n    <\/div>\n\n    <button type=\"button\" class=\"sf-cta-btn\" id=\"sf-panel-cta\">Become the Partner for this City<\/button>\n  <\/div>\n<\/aside>\n\n<script id=\"sf-city-data\" type=\"application\/json\">\n[[\"Toronto\",\"ON\",43.6532,-79.3832,2794356,\"operating\"],[\"Ottawa\",\"ON\",45.4215,-75.6972,1017449,\"operating\"],[\"Mississauga\",\"ON\",43.5890,-79.6441,717961,\"operating\"],[\"Brampton\",\"ON\",43.7315,-79.7624,656480,\"operating\"],[\"Hamilton\",\"ON\",43.2557,-79.8711,569353,\"operating\"],[\"London\",\"ON\",42.9849,-81.2453,422324,\"operating\"],[\"Markham\",\"ON\",43.8561,-79.3370,338503,\"operating\"],[\"Vaughan\",\"ON\",43.8361,-79.5083,323103,\"seeking\"],[\"Kitchener\",\"ON\",43.4516,-80.4925,256885,\"seeking\"],[\"Windsor\",\"ON\",42.3149,-83.0364,229660,\"operating\"],[\"Richmond Hill\",\"ON\",43.8828,-79.4403,202022,\"seeking\"],[\"Oakville\",\"ON\",43.4675,-79.6877,213759,\"operating\"],[\"Burlington\",\"ON\",43.3255,-79.7990,186948,\"seeking\"],[\"Oshawa\",\"ON\",43.8971,-78.8658,175383,\"seeking\"],[\"Greater Sudbury\",\"ON\",46.4917,-80.9930,166004,\"seeking\"],[\"Barrie\",\"ON\",44.3894,-79.6903,147829,\"operating\"],[\"Cambridge\",\"ON\",43.3616,-80.3144,138479,\"seeking\"],[\"Whitby\",\"ON\",43.8975,-78.9429,138501,\"coming\"],[\"Guelph\",\"ON\",43.5448,-80.2482,143740,\"operating\"],[\"Kingston\",\"ON\",44.2312,-76.4860,132485,\"seeking\"],[\"Milton\",\"ON\",43.5183,-79.8774,132979,\"coming\"],[\"Ajax\",\"ON\",43.8509,-79.0204,126666,\"seeking\"],[\"Waterloo\",\"ON\",43.4643,-80.5204,121436,\"seeking\"],[\"Thunder Bay\",\"ON\",48.3809,-89.2477,108843,\"seeking\"],[\"Brantford\",\"ON\",43.1394,-80.2644,104688,\"coming\"],[\"Clarington\",\"ON\",43.9169,-78.6377,101427,\"coming\"],[\"Chatham-Kent\",\"ON\",42.4048,-82.1910,101647,\"seeking\"],[\"Pickering\",\"ON\",43.8384,-79.0868,99186,\"operating\"],[\"Niagara Falls\",\"ON\",43.0896,-79.0849,94415,\"seeking\"],[\"Newmarket\",\"ON\",44.0592,-79.4613,87942,\"operating\"],[\"Peterborough\",\"ON\",44.3091,-78.3197,84317,\"seeking\"],[\"Sault Ste. Marie\",\"ON\",46.5136,-84.3358,72051,\"coming\"],[\"Sarnia\",\"ON\",42.9749,-82.4066,71594,\"seeking\"],[\"Aurora\",\"ON\",44.0065,-79.4504,62057,\"coming\"],[\"Halton Hills\",\"ON\",43.6501,-79.9663,62715,\"coming\"],[\"Belleville\",\"ON\",44.1628,-77.3832,55071,\"seeking\"],[\"Welland\",\"ON\",42.9922,-79.2483,52293,\"seeking\"],[\"North Bay\",\"ON\",46.3091,-79.4608,51553,\"coming\"],[\"Georgina\",\"ON\",44.2519,-79.4318,45418,\"seeking\"],[\"Innisfil\",\"ON\",44.2985,-79.6238,43979,\"coming\"],[\"Cornwall\",\"ON\",45.0217,-74.7305,46589,\"seeking\"],[\"Woodstock\",\"ON\",43.1300,-80.7470,46705,\"seeking\"],[\"Orangeville\",\"ON\",43.9223,-80.0940,30375,\"coming\"],[\"Timmins\",\"ON\",48.4758,-81.3305,41145,\"seeking\"],[\"Leamington\",\"ON\",42.0533,-82.5992,29097,\"coming\"],[\"Collingwood\",\"ON\",44.5000,-80.2166,24811,\"seeking\"],[\"Stratford\",\"ON\",43.3701,-80.9821,33232,\"seeking\"],[\"Orillia\",\"ON\",44.6079,-79.4197,33411,\"seeking\"],[\"Owen Sound\",\"ON\",44.5667,-80.9425,21612,\"coming\"],[\"Vancouver\",\"BC\",49.2827,-123.1207,662248,\"operating\"],[\"Surrey\",\"BC\",49.1913,-122.8490,568322,\"operating\"],[\"Burnaby\",\"BC\",49.2488,-122.9805,249125,\"operating\"],[\"Richmond\",\"BC\",49.1666,-123.1336,209937,\"seeking\"],[\"Abbotsford\",\"BC\",49.0504,-122.3045,153524,\"seeking\"],[\"Coquitlam\",\"BC\",49.2838,-122.7932,148625,\"operating\"],[\"Kelowna\",\"BC\",49.8880,-119.4960,144576,\"seeking\"],[\"Langley Township\",\"BC\",49.1042,-122.6604,132603,\"seeking\"],[\"Saanich\",\"BC\",48.4771,-123.3811,117735,\"operating\"],[\"Victoria\",\"BC\",48.4284,-123.3656,91867,\"operating\"],[\"Delta\",\"BC\",49.0847,-123.0587,108455,\"coming\"],[\"Nanaimo\",\"BC\",49.1659,-123.9401,100065,\"seeking\"],[\"Kamloops\",\"BC\",50.6745,-120.3273,97902,\"seeking\"],[\"Chilliwack\",\"BC\",49.1579,-121.9515,93203,\"coming\"],[\"Maple Ridge\",\"BC\",49.2193,-122.5984,90990,\"seeking\"],[\"Prince George\",\"BC\",53.9171,-122.7497,76708,\"seeking\"],[\"New Westminster\",\"BC\",49.2057,-122.9110,78916,\"operating\"],[\"Port Coquitlam\",\"BC\",49.2621,-122.7817,61498,\"coming\"],[\"North Vancouver\",\"BC\",49.3200,-123.0724,58120,\"operating\"],[\"Vernon\",\"BC\",50.2670,-119.2720,44519,\"seeking\"],[\"West Vancouver\",\"BC\",49.3286,-123.1610,44122,\"operating\"],[\"Mission\",\"BC\",49.1337,-122.3106,41519,\"coming\"],[\"Penticton\",\"BC\",49.4991,-119.5937,36885,\"seeking\"],[\"Campbell River\",\"BC\",50.0244,-125.2475,36461,\"seeking\"],[\"Courtenay\",\"BC\",49.6841,-124.9927,28420,\"coming\"],[\"Squamish\",\"BC\",49.7016,-123.1558,23819,\"seeking\"],[\"White Rock\",\"BC\",49.0253,-122.8028,21939,\"coming\"],[\"Fort St. John\",\"BC\",56.2499,-120.8529,21465,\"seeking\"],[\"Cranbrook\",\"BC\",49.5122,-115.7694,20499,\"coming\"],[\"Salmon Arm\",\"BC\",50.6989,-119.2951,19432,\"seeking\"],[\"Port Alberni\",\"BC\",49.2339,-124.8055,18259,\"coming\"],[\"Parksville\",\"BC\",49.3181,-124.3131,13642,\"seeking\"],[\"Powell River\",\"BC\",49.8354,-124.5247,13157,\"coming\"],[\"Dawson Creek\",\"BC\",55.7596,-120.2377,12178,\"seeking\"],[\"Prince Rupert\",\"BC\",54.3150,-130.3208,12220,\"coming\"],[\"Terrace\",\"BC\",54.5182,-128.6032,12017,\"seeking\"],[\"Williams Lake\",\"BC\",52.1417,-122.1417,10753,\"coming\"],[\"Nelson\",\"BC\",49.4928,-117.2948,11106,\"seeking\"],[\"Calgary\",\"AB\",51.0447,-114.0719,1306784,\"operating\"],[\"Edmonton\",\"AB\",53.5461,-113.4938,1010899,\"operating\"],[\"Red Deer\",\"AB\",52.2681,-113.8112,100418,\"seeking\"],[\"Lethbridge\",\"AB\",49.6956,-112.8451,98406,\"seeking\"],[\"Airdrie\",\"AB\",51.2917,-114.0144,74100,\"seeking\"],[\"St. Albert\",\"AB\",53.6303,-113.6256,68899,\"operating\"],[\"Grande Prairie\",\"AB\",55.1707,-118.7947,64141,\"seeking\"],[\"Medicine Hat\",\"AB\",50.0405,-110.6764,63260,\"coming\"],[\"Spruce Grove\",\"AB\",53.5450,-113.9163,39348,\"seeking\"],[\"Leduc\",\"AB\",53.2594,-113.5492,34996,\"coming\"],[\"Cochrane\",\"AB\",51.1892,-114.4675,34002,\"seeking\"],[\"Okotoks\",\"AB\",50.7256,-113.9749,30220,\"coming\"],[\"Fort Saskatchewan\",\"AB\",53.7128,-113.2168,27088,\"seeking\"],[\"Chestermere\",\"AB\",51.0501,-113.8221,22163,\"coming\"],[\"Lloydminster\",\"AB\",53.2783,-110.0056,20988,\"seeking\"],[\"Camrose\",\"AB\",53.0169,-112.8331,18742,\"seeking\"],[\"Canmore\",\"AB\",51.0891,-115.3599,15990,\"coming\"],[\"Brooks\",\"AB\",50.5657,-111.8886,14924,\"seeking\"],[\"Stony Plain\",\"AB\",53.5279,-114.0057,17908,\"coming\"],[\"Sylvan Lake\",\"AB\",52.3086,-114.0973,15631,\"seeking\"],[\"Cold Lake\",\"AB\",54.4643,-110.1827,15661,\"coming\"],[\"Wetaskiwin\",\"AB\",52.9694,-113.3758,12655,\"seeking\"],[\"Winnipeg\",\"MB\",49.8951,-97.1384,749607,\"operating\"],[\"Brandon\",\"MB\",49.8483,-99.9501,51313,\"seeking\"],[\"Steinbach\",\"MB\",49.5258,-96.6841,17806,\"seeking\"],[\"Winkler\",\"MB\",49.1817,-97.9391,13975,\"coming\"],[\"Portage la Prairie\",\"MB\",49.9727,-98.2926,13304,\"seeking\"],[\"Thompson\",\"MB\",55.7435,-97.8558,13035,\"coming\"],[\"Selkirk\",\"MB\",50.1436,-96.8839,10504,\"seeking\"],[\"Saskatoon\",\"SK\",52.1332,-106.6700,266141,\"operating\"],[\"Regina\",\"SK\",50.4452,-104.6189,226404,\"operating\"],[\"Prince Albert\",\"SK\",53.2033,-105.7531,35926,\"seeking\"],[\"Moose Jaw\",\"SK\",50.3934,-105.5519,33890,\"seeking\"],[\"Swift Current\",\"SK\",50.2851,-107.7972,16604,\"coming\"],[\"Yorkton\",\"SK\",51.2139,-102.4628,16280,\"seeking\"],[\"North Battleford\",\"SK\",52.7575,-108.2861,13888,\"coming\"],[\"Warman\",\"SK\",52.3223,-106.5828,11916,\"seeking\"],[\"Estevan\",\"SK\",49.1391,-102.9862,11483,\"coming\"],[\"Weyburn\",\"SK\",49.6640,-103.8514,10870,\"seeking\"],[\"Martensville\",\"SK\",52.2887,-106.6653,10015,\"coming\"],[\"Halifax\",\"NS\",44.6488,-63.5752,348634,\"operating\"],[\"Cape Breton\",\"NS\",46.1368,-60.1942,94285,\"seeking\"],[\"Moncton\",\"NB\",46.0878,-64.7782,79470,\"operating\"],[\"Saint John\",\"NB\",45.2733,-66.0633,67575,\"seeking\"],[\"Fredericton\",\"NB\",45.9636,-66.6431,63116,\"operating\"],[\"Dieppe\",\"NB\",46.0989,-64.6889,28114,\"seeking\"],[\"Riverview\",\"NB\",46.0604,-64.8052,19667,\"coming\"],[\"Quispamsis\",\"NB\",45.4306,-65.9436,19255,\"seeking\"],[\"Miramichi\",\"NB\",47.0287,-65.5019,17537,\"coming\"],[\"Edmundston\",\"NB\",47.3737,-68.3251,16032,\"seeking\"],[\"Bathurst\",\"NB\",47.6187,-65.6515,11894,\"coming\"],[\"Charlottetown\",\"PE\",46.2382,-63.1311,38809,\"operating\"],[\"Summerside\",\"PE\",46.3950,-63.7876,15655,\"seeking\"],[\"St. John's\",\"NL\",47.5615,-52.7126,110525,\"operating\"],[\"Conception Bay South\",\"NL\",47.5192,-52.9903,26199,\"seeking\"],[\"Mount Pearl\",\"NL\",47.5189,-52.8058,22957,\"coming\"],[\"Paradise\",\"NL\",47.5364,-52.8631,21389,\"seeking\"],[\"Corner Brook\",\"NL\",48.9500,-57.9522,19806,\"seeking\"],[\"Grand Falls-Windsor\",\"NL\",48.9333,-55.6667,14171,\"coming\"],[\"Gander\",\"NL\",48.9564,-54.6089,11688,\"seeking\"],[\"Whitehorse\",\"YT\",60.7212,-135.0568,28201,\"operating\"],[\"Yellowknife\",\"NT\",62.4540,-114.3718,20340,\"seeking\"]]\n<\/script>\n\n<script>\n(function(){\n  \"use strict\";\n\n  \/* ============================================================\n     CONFIG \u2014 edit these to adapt the map to a real WordPress page\n     ============================================================ *\/\n  var FORM_TARGET_SELECTOR = '#partner-application-form'; \/\/ your real \"Partner with Us\" form wrapper\n  var HOUSEHOLD_MULTIPLIER = 2.4; \/\/ avg people per household, used to estimate homes from population\n\n  var PROVINCE_NAMES = {\n    ON:\"Ontario\", BC:\"British Columbia\", AB:\"Alberta\", MB:\"Manitoba\", SK:\"Saskatchewan\",\n    NS:\"Nova Scotia\", NB:\"New Brunswick\", PE:\"Prince Edward Island\", NL:\"Newfoundland and Labrador\",\n    YT:\"Yukon\", NT:\"Northwest Territories\", NU:\"Nunavut\"\n  };\n\n  var STATUS_META = {\n    operating:{ label:\"Operating\", cta:\"Ask About Neighbouring Territories\" },\n    seeking:{ label:\"Seeking Partner\", cta:\"Become the Partner for this City\" },\n    coming:{ label:\"Coming Soon\", cta:\"Register Your Interest\" }\n  };\n\n  var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  \/* ============================================================\n     DATA \u2014 normalize raw rows into full city records\n     ============================================================ *\/\n  function hashStr(s){\n    var h = 0;\n    for (var i=0;i<s.length;i++){ h = (h*31 + s.charCodeAt(i)) >>> 0; }\n    return h;\n  }\n\n  function ratingFor(status, hh){\n    if (status === 'operating') return hh > 60000 ? 5 : hh > 20000 ? 4 : 3;\n    return hh > 45000 ? 5 : hh > 15000 ? 4 : 3;\n  }\n\n  function descriptionFor(city){\n    var hhFmt = city.households.toLocaleString('en-CA');\n    if (city.status === 'operating'){\n      return city.name + \" is proudly served by an established Solus Flyers partner, delivering flyers to roughly \" + hhFmt + \" homes and helping local businesses connect with their community. Interested in an unclaimed territory nearby?\";\n    }\n    if (city.status === 'coming'){\n      return \"Solus Flyers is planning expansion into \" + city.name + \" soon, where an estimated \" + hhFmt + \" homes are waiting to be reached. Register your interest now to be considered as the founding partner when this territory opens.\";\n    }\n    return \"This growing community has roughly \" + hhFmt + \" homes that local businesses want to reach. Solus Flyers is currently seeking an enthusiastic partner to establish and grow the business in \" + city.name + \".\";\n  }\n\n  function normalizeCity(row, idx){\n    var name = row[0], prov = row[1], lat = row[2], lon = row[3], pop = row[4], status = row[5];\n    var households = Math.round(pop \/ HOUSEHOLD_MULTIPLIER);\n    var city = {\n      id: 'c' + idx + '-' + name.toLowerCase().replace(\/[^a-z0-9]+\/g,'-'),\n      name: name, province: prov, provinceName: PROVINCE_NAMES[prov] || prov,\n      lat: lat, lon: lon, population: pop, households: households, status: status\n    };\n    city.rating = ratingFor(status, households);\n    city.description = descriptionFor(city);\n    return city;\n  }\n\n  var RAW = JSON.parse(document.getElementById('sf-city-data').textContent);\n  var CITIES = RAW.map(normalizeCity);\n\n  \/* ============================================================\n     PROJECTION \u2014 Albers equal-area conic, tuned for Canada,\n     auto-fit to the SVG viewBox so adding cities never breaks layout\n     ============================================================ *\/\n  var VB_W = 1000, VB_H = 700, PAD = 46;\n  var deg2rad = Math.PI\/180;\n  var PHI1 = 49*deg2rad, PHI2 = 77*deg2rad, PHI0 = 44*deg2rad, LAMBDA0 = -96*deg2rad;\n  var ALB_N = (Math.sin(PHI1)+Math.sin(PHI2))\/2;\n  var ALB_C = Math.cos(PHI1)*Math.cos(PHI1) + 2*ALB_N*Math.sin(PHI1);\n  var ALB_RHO0 = Math.sqrt(ALB_C - 2*ALB_N*Math.sin(PHI0))\/ALB_N;\n\n  function albers(lat, lon){\n    var phi = lat*deg2rad, lambda = lon*deg2rad;\n    var rho = Math.sqrt(ALB_C - 2*ALB_N*Math.sin(phi))\/ALB_N;\n    var theta = ALB_N*(lambda - LAMBDA0);\n    return { x: rho*Math.sin(theta), y: ALB_RHO0 - rho*Math.cos(theta) };\n  }\n\n  CITIES.forEach(function(c){ var p = albers(c.lat,c.lon); c.px = p.x; c.py = p.y; });\n  var xs = CITIES.map(function(c){return c.px;}), ys = CITIES.map(function(c){return c.py;});\n  var minX = Math.min.apply(null,xs), maxX = Math.max.apply(null,xs);\n  var minY = Math.min.apply(null,ys), maxY = Math.max.apply(null,ys);\n  var spanX = maxX-minX || 1, spanY = maxY-minY || 1;\n  var scaleFit = Math.min((VB_W-PAD*2)\/spanX, (VB_H-PAD*2)\/spanY);\n  var offX = (VB_W - spanX*scaleFit)\/2 - minX*scaleFit;\n  var offY = (VB_H - spanY*scaleFit)\/2 - minY*scaleFit;\n\n  CITIES.forEach(function(c){\n    c.sx = c.px*scaleFit + offX;\n    c.sy = VB_H - (c.py*scaleFit + offY); \/\/ flip Y: SVG y grows downward, north should be up\n  });\n\n  \/* ============================================================\n     SVG SCENE \u2014 background grid + province labels\n     ============================================================ *\/\n  var svg = document.getElementById('sf-svg');\n  var mapLayer = document.getElementById('sf-map-layer');\n  var gridG = document.getElementById('sf-grid');\n  var provG = document.getElementById('sf-prov-labels');\n  var markerLayer = document.getElementById('sf-marker-layer');\n  var heatLayer = document.getElementById('sf-heat-layer');\n  var NS_SVG = 'http:\/\/www.w3.org\/2000\/svg';\n\n  function el(tag, attrs){\n    var e = document.createElementNS(NS_SVG, tag);\n    for (var k in attrs) e.setAttribute(k, attrs[k]);\n    return e;\n  }\n\n  for (var gx=0; gx<=VB_W; gx+=50){ gridG.appendChild(el('line',{class:'sf-grid-line',x1:gx,y1:0,x2:gx,y2:VB_H})); }\n  for (var gy=0; gy<=VB_H; gy+=50){ gridG.appendChild(el('line',{class:'sf-grid-line',x1:0,y1:gy,x2:VB_W,y2:gy})); }\n\n  var glow = el('ellipse',{class:'sf-landmass-glow', cx:(minX*scaleFit+offX+ (maxX*scaleFit+offX))\/2, cy:VB_H\/2, rx:(spanX*scaleFit)\/1.7, ry:(spanY*scaleFit)\/1.7});\n  gridG.appendChild(glow);\n\n  var provCenters = {};\n  CITIES.forEach(function(c){\n    if (!provCenters[c.province]) provCenters[c.province] = {sx:0,sy:0,n:0};\n    provCenters[c.province].sx += c.sx; provCenters[c.province].sy += c.sy; provCenters[c.province].n++;\n  });\n  Object.keys(provCenters).forEach(function(p){\n    var v = provCenters[p];\n    var t = el('text',{class:'sf-prov-label', x:v.sx\/v.n, y:(v.sy\/v.n)-26, 'text-anchor':'middle'});\n    t.textContent = p;\n    provG.appendChild(t);\n  });\n\n  \/* ---- markers ---- *\/\n  var markerEls = {};\n  CITIES.forEach(function(city){\n    var g = el('g',{class:'sf-marker', 'data-status':city.status, 'data-id':city.id,\n      tabindex:'0', role:'button',\n      'aria-label': city.name + ', ' + city.provinceName + ' \u2014 ' + STATUS_META[city.status].label + ', population ' + city.population.toLocaleString('en-CA')\n    });\n    g.setAttribute('transform','translate(' + city.sx + ',' + city.sy + ')');\n    var haloR = 4 + Math.min(6, Math.log(city.population)\/2.2);\n    var dotR = 3 + Math.min(4.5, Math.log(city.population)\/3.2);\n    g.appendChild(el('circle',{class:'sf-marker-halo', r:haloR}));\n    g.appendChild(el('circle',{class:'sf-marker-hit', r:Math.max(dotR,9), fill:'transparent'}));\n    g.appendChild(el('circle',{class:'sf-marker-dot', r:dotR}));\n    markerLayer.appendChild(g);\n    markerEls[city.id] = g;\n\n    function activate(){ openCity(city, g); }\n    g.addEventListener('click', activate);\n    g.addEventListener('keydown', function(e){\n      if (e.key === 'Enter' || e.key === ' '){ e.preventDefault(); activate(); }\n    });\n    g.addEventListener('mouseenter', function(){ g.setAttribute('data-hover','1'); });\n    g.addEventListener('mouseleave', function(){ g.removeAttribute('data-hover'); });\n  });\n\n  \/* ---- heat layer ---- *\/\n  var defs = el('defs',{});\n  svg.insertBefore(defs, svg.firstChild);\n  var maxPop = Math.max.apply(null, CITIES.map(function(c){return c.population;}));\n  CITIES.forEach(function(city, i){\n    var gradId = 'sf-heat-grad-' + i;\n    var grad = el('radialGradient',{id:gradId});\n    var intensity = Math.pow(city.population\/maxPop, 0.42);\n    grad.appendChild(el('stop',{offset:'0%','stop-color':'#E9E026','stop-opacity':(0.55*intensity).toFixed(3)}));\n    grad.appendChild(el('stop',{offset:'100%','stop-color':'#E9E026','stop-opacity':'0'}));\n    defs.appendChild(grad);\n    var r = 14 + intensity*46;\n    heatLayer.appendChild(el('circle',{cx:city.sx, cy:city.sy, r:r, fill:'url(#'+gradId+')'}));\n  });\n\n  \/* ============================================================\n     PAN \/ ZOOM\n     ============================================================ *\/\n  var view = { x:0, y:0, scale:1 };\n  var MIN_SCALE = 1, MAX_SCALE = 10;\n\n  function applyTransform(animated){\n    mapLayer.style.transition = animated ? 'transform .5s cubic-bezier(.22,.9,.32,1)' : 'none';\n    mapLayer.setAttribute('transform', 'translate(' + view.x + ',' + view.y + ') scale(' + view.scale + ')');\n  }\n  applyTransform(false);\n\n  function clientToSvg(clientX, clientY){\n    var rect = svg.getBoundingClientRect();\n    var x = (clientX - rect.left) \/ rect.width * VB_W;\n    var y = (clientY - rect.top) \/ rect.height * VB_H;\n    return {x:x, y:y};\n  }\n\n  function zoomAt(svgPoint, factor){\n    var newScale = Math.min(MAX_SCALE, Math.max(MIN_SCALE, view.scale*factor));\n    var k = newScale \/ view.scale;\n    view.x = svgPoint.x - k*(svgPoint.x - view.x);\n    view.y = svgPoint.y - k*(svgPoint.y - view.y);\n    view.scale = newScale;\n    clampPan();\n    applyTransform(false);\n  }\n\n  function clampPan(){\n    var maxOffX = VB_W*(view.scale-1), maxOffY = VB_H*(view.scale-1);\n    view.x = Math.min(0, Math.max(-maxOffX, view.x));\n    view.y = Math.min(0, Math.max(-maxOffY, view.y));\n  }\n\n  svg.addEventListener('wheel', function(e){\n    e.preventDefault();\n    var pt = clientToSvg(e.clientX, e.clientY);\n    zoomAt(pt, e.deltaY < 0 ? 1.18 : 0.85);\n  }, {passive:false});\n\n  document.getElementById('sf-zoom-in').addEventListener('click', function(){ zoomAtViewportCenter(1.3); });\n  document.getElementById('sf-zoom-out').addEventListener('click', function(){ zoomAtViewportCenter(0.72); });\n  document.getElementById('sf-zoom-reset').addEventListener('click', function(){\n    view = {x:0,y:0,scale:1}; applyTransform(true);\n  });\n  function zoomAtViewportCenter(factor){\n    zoomAt({x: VB_W\/2, y: VB_H\/2}, factor);\n  }\n\n  var dragging = false, dragStart = null, viewStart = null;\n  svg.addEventListener('pointerdown', function(e){\n    if (e.target.closest &#038;&#038; e.target.closest('.sf-marker')) return;\n    dragging = true; svg.classList.add('sf-grabbing');\n    dragStart = {x:e.clientX,y:e.clientY}; viewStart = {x:view.x,y:view.y};\n    svg.setPointerCapture(e.pointerId);\n  });\n  svg.addEventListener('pointermove', function(e){\n    if (!dragging) return;\n    var rect = svg.getBoundingClientRect();\n    var dx = (e.clientX-dragStart.x)\/rect.width*VB_W;\n    var dy = (e.clientY-dragStart.y)\/rect.height*VB_H;\n    view.x = viewStart.x + dx; view.y = viewStart.y + dy;\n    clampPan(); applyTransform(false);\n  });\n  ['pointerup','pointercancel','pointerleave'].forEach(function(ev){\n    svg.addEventListener(ev, function(){ dragging = false; svg.classList.remove('sf-grabbing'); });\n  });\n\n  \/\/ pinch-to-zoom\n  var pointers = {};\n  var pinchStartDist = null, pinchStartScale = null;\n  svg.addEventListener('pointerdown', function(e){ pointers[e.pointerId] = {x:e.clientX,y:e.clientY}; });\n  svg.addEventListener('pointermove', function(e){\n    if (!(e.pointerId in pointers)) return;\n    pointers[e.pointerId] = {x:e.clientX,y:e.clientY};\n    var ids = Object.keys(pointers);\n    if (ids.length === 2){\n      dragging = false;\n      var p1 = pointers[ids[0]], p2 = pointers[ids[1]];\n      var dist = Math.hypot(p1.x-p2.x, p1.y-p2.y);\n      if (pinchStartDist == null){ pinchStartDist = dist; pinchStartScale = view.scale; }\n      else {\n        var mid = clientToSvg((p1.x+p2.x)\/2, (p1.y+p2.y)\/2);\n        var targetScale = Math.min(MAX_SCALE, Math.max(MIN_SCALE, pinchStartScale * dist\/pinchStartDist));\n        zoomAt(mid, targetScale\/view.scale);\n      }\n    }\n  });\n  ['pointerup','pointercancel','pointerleave'].forEach(function(ev){\n    svg.addEventListener(ev, function(e){ delete pointers[e.pointerId]; if (Object.keys(pointers).length < 2) pinchStartDist = null; });\n  });\n\n  function focusOnCity(city){\n    var targetScale = 4.2;\n    view.scale = targetScale;\n    view.x = VB_W\/2 - city.sx*targetScale;\n    view.y = VB_H\/2 - city.sy*targetScale;\n    clampPan();\n    applyTransform(true);\n  }\n\n  \/* ============================================================\n     VIEW TOGGLE \u2014 markers \/ heat map\n     ============================================================ *\/\n  var viewButtons = document.querySelectorAll('.sf-view-toggle button');\n  viewButtons.forEach(function(btn){\n    btn.addEventListener('click', function(){\n      viewButtons.forEach(function(b){ b.setAttribute('aria-pressed', b===btn ? 'true':'false'); });\n      var heat = btn.dataset.view === 'heat';\n      heatLayer.classList.toggle('sf-visible', heat);\n      markerLayer.classList.toggle('sf-hidden-for-heat', heat);\n    });\n  });\n\n  \/* ============================================================\n     FILTERS\n     ============================================================ *\/\n  var activeStatus = 'all';\n  var filterButtons = document.querySelectorAll('.sf-filter-btn');\n  filterButtons.forEach(function(btn){\n    btn.addEventListener('click', function(){\n      activeStatus = btn.dataset.status;\n      filterButtons.forEach(function(b){ b.setAttribute('aria-pressed', b===btn ? 'true':'false'); });\n      applyFilter();\n    });\n  });\n  function applyFilter(){\n    CITIES.forEach(function(c){\n      var show = activeStatus === 'all' || c.status === activeStatus;\n      markerEls[c.id].classList.toggle('sf-dimmed', !show);\n    });\n  }\n\n  \/* ============================================================\n     SEARCH\n     ============================================================ *\/\n  var searchInput = document.getElementById('sf-search-input');\n  var resultsBox = document.getElementById('sf-search-results');\n  var searchWrap = searchInput.closest('.sf-search');\n  var activeIndex = -1, currentMatches = [];\n\n  function renderResults(matches){\n    currentMatches = matches; activeIndex = -1;\n    resultsBox.innerHTML = '';\n    if (!matches.length){\n      resultsBox.innerHTML = '<div class=\"sf-search-empty\">No cities match your search.<\/div>';\n    } else {\n      matches.slice(0,8).forEach(function(city, i){\n        var row = document.createElement('div');\n        row.className = 'sf-search-result';\n        row.setAttribute('role','option');\n        row.id = 'sf-opt-' + i;\n        row.innerHTML = '<span class=\"sf-sr-city\">'+city.name+'<\/span><span class=\"sf-sr-prov\">'+city.provinceName+'<\/span>';\n        row.addEventListener('click', function(){ selectSearchCity(city); });\n        resultsBox.appendChild(row);\n      });\n    }\n    resultsBox.classList.add('sf-open');\n    searchWrap.setAttribute('aria-expanded','true');\n  }\n\n  function closeResults(){\n    resultsBox.classList.remove('sf-open');\n    searchWrap.setAttribute('aria-expanded','false');\n    searchInput.removeAttribute('aria-activedescendant');\n    activeIndex = -1;\n  }\n\n  function selectSearchCity(city){\n    searchInput.value = city.name;\n    closeResults();\n    focusOnCity(city);\n    openCity(city, markerEls[city.id]);\n  }\n\n  searchInput.addEventListener('input', function(){\n    var q = searchInput.value.trim().toLowerCase();\n    if (!q){ closeResults(); return; }\n    var matches = CITIES.filter(function(c){ return c.name.toLowerCase().indexOf(q) === 0; });\n    if (matches.length < 5){\n      var contains = CITIES.filter(function(c){ return c.name.toLowerCase().indexOf(q) > 0; });\n      matches = matches.concat(contains);\n    }\n    renderResults(matches);\n  });\n\n  searchInput.addEventListener('keydown', function(e){\n    if (!resultsBox.classList.contains('sf-open')) return;\n    var items = resultsBox.querySelectorAll('.sf-search-result');\n    if (e.key === 'ArrowDown'){ e.preventDefault(); activeIndex = Math.min(items.length-1, activeIndex+1); }\n    else if (e.key === 'ArrowUp'){ e.preventDefault(); activeIndex = Math.max(0, activeIndex-1); }\n    else if (e.key === 'Enter'){ if (activeIndex>=0 && currentMatches[activeIndex]){ selectSearchCity(currentMatches[activeIndex]); } return; }\n    else if (e.key === 'Escape'){ closeResults(); return; }\n    else return;\n    items.forEach(function(it,i){ it.setAttribute('aria-selected', i===activeIndex ? 'true':'false'); });\n    if (activeIndex>=0){ searchInput.setAttribute('aria-activedescendant','sf-opt-'+activeIndex); }\n  });\n\n  document.addEventListener('click', function(e){\n    if (!searchWrap.contains(e.target)) closeResults();\n  });\n\n  \/* ============================================================\n     CITY PANEL\n     ============================================================ *\/\n  var panel = document.getElementById('sf-panel');\n  var backdrop = document.getElementById('sf-panel-backdrop');\n  var lastTrigger = null;\n\n  function starString(rating){\n    var full = '\u2605'.repeat(rating), empty = '\u2606'.repeat(5-rating);\n    return '<span class=\"filled\">'+full+'<\/span>'+empty;\n  }\n  function ratingLabel(rating){\n    if (rating >= 5) return 'Excellent Opportunity';\n    if (rating >= 4) return 'Good Opportunity';\n    return 'Moderate Opportunity';\n  }\n\n  function openCity(city, triggerEl){\n    lastTrigger = triggerEl || null;\n    Object.values(markerEls).forEach(function(m){ m.classList.remove('sf-active'); });\n    if (triggerEl) triggerEl.classList.add('sf-active');\n\n    document.getElementById('sf-panel-city-name').textContent = city.name;\n    document.getElementById('sf-panel-prov').textContent = city.provinceName;\n\n    var badge = document.getElementById('sf-panel-status');\n    badge.className = 'sf-status-badge ' + city.status;\n    document.getElementById('sf-panel-status-text').textContent = STATUS_META[city.status].label;\n\n    document.getElementById('sf-panel-pop').textContent = city.population.toLocaleString('en-CA');\n    document.getElementById('sf-panel-hh').textContent = city.households.toLocaleString('en-CA');\n\n    document.getElementById('sf-panel-stars').innerHTML = starString(city.rating);\n    document.getElementById('sf-panel-rating-text').textContent = ratingLabel(city.rating);\n\n    document.getElementById('sf-panel-desc').textContent = city.description;\n\n    var cta = document.getElementById('sf-panel-cta');\n    cta.textContent = STATUS_META[city.status].cta;\n    cta.onclick = function(){ applyForCity(city); };\n\n    panel.classList.add('sf-open');\n    backdrop.classList.add('sf-open');\n    panel.focus();\n    announce(city.name + ' selected. ' + STATUS_META[city.status].label + '.');\n  }\n\n  function closePanel(){\n    panel.classList.remove('sf-open');\n    backdrop.classList.remove('sf-open');\n    if (lastTrigger) lastTrigger.focus();\n  }\n  document.getElementById('sf-panel-close').addEventListener('click', closePanel);\n  backdrop.addEventListener('click', closePanel);\n  document.addEventListener('keydown', function(e){\n    if (e.key === 'Escape' && panel.classList.contains('sf-open')) closePanel();\n  });\n\n  function applyForCity(city){\n    var target = document.querySelector(FORM_TARGET_SELECTOR);\n    var cityField = document.getElementById('sf-form-city');\n    var banner = document.getElementById('sf-applying-banner');\n    if (cityField) cityField.value = city.name + ', ' + city.provinceName;\n    if (banner){\n      banner.textContent = 'Applying for: ' + city.name + ', ' + city.provinceName;\n      banner.classList.add('sf-show');\n    }\n    closePanel();\n    if (target) target.scrollIntoView({ behavior: reduceMotion ? 'auto' : 'smooth', block: 'start' });\n  }\n\n  document.getElementById('sf-footer-apply').addEventListener('click', function(){\n    var target = document.querySelector(FORM_TARGET_SELECTOR);\n    if (target) target.scrollIntoView({ behavior: reduceMotion ? 'auto' : 'smooth', block: 'start' });\n  });\n\n  var liveRegion = document.createElement('div');\n  liveRegion.setAttribute('aria-live','polite');\n  liveRegion.setAttribute('role','status');\n  liveRegion.style.cssText = 'position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);';\n  document.body.appendChild(liveRegion);\n  function announce(msg){ liveRegion.textContent = msg; }\n\n  \/* ============================================================\n     STATS \u2014 computed from real data, animated count-up\n     ============================================================ *\/\n  var stats = {\n    citiesAvailable: CITIES.filter(function(c){ return c.status !== 'operating'; }).length,\n    potentialHomes: CITIES.filter(function(c){ return c.status !== 'operating'; })\n      .reduce(function(sum,c){ return sum + c.households; }, 0),\n    partnersOperating: CITIES.filter(function(c){ return c.status === 'operating'; }).length,\n    citiesSeeking: CITIES.filter(function(c){ return c.status === 'seeking'; }).length\n  };\n\n  function formatStat(key, val){\n    if (key === 'potentialHomes'){\n      var rounded = Math.round(val\/1000)*1000;\n      return rounded.toLocaleString('en-CA');\n    }\n    return Math.round(val).toLocaleString('en-CA');\n  }\n\n  function animateCount(elm, endVal, key){\n    if (reduceMotion){ elm.textContent = formatStat(key,endVal) + elm.dataset.suffix; return; }\n    var start = performance.now(), dur = 1400;\n    function tick(now){\n      var t = Math.min(1, (now-start)\/dur);\n      var eased = 1 - Math.pow(1-t, 3);\n      elm.textContent = formatStat(key, endVal*eased) + elm.dataset.suffix;\n      if (t < 1) requestAnimationFrame(tick);\n    }\n    requestAnimationFrame(tick);\n  }\n\n  var statsSection = document.getElementById('sf-stats');\n  var statCards = statsSection.querySelectorAll('.sf-stat-card');\n  var statNums = statsSection.querySelectorAll('.sf-stat-num');\n  var statsAnimated = false;\n  function runStatsAnimation(){\n    if (statsAnimated) return;\n    statsAnimated = true;\n    statCards.forEach(function(c,i){ setTimeout(function(){ c.classList.add('sf-in'); }, i*90); });\n    statNums.forEach(function(n){ animateCount(n, stats[n.dataset.stat], n.dataset.stat); });\n    io.disconnect();\n  }\n  var io = new IntersectionObserver(function(entries){\n    entries.forEach(function(entry){ if (entry.isIntersecting) runStatsAnimation(); });\n  }, {threshold:0.3});\n  io.observe(statsSection);\n  \/\/ Fallback for embedding contexts where the tab loads hidden\/backgrounded\n  \/\/ (e.g. some WordPress page-builder iframes), so counters never get stuck at 0.\n  if (document.visibilityState === 'visible'){\n    setTimeout(runStatsAnimation, 2500);\n  } else {\n    document.addEventListener('visibilitychange', function(){\n      if (document.visibilityState === 'visible') setTimeout(runStatsAnimation, 300);\n    });\n  }\n\n  \/* initial filter pass *\/\n  applyFilter();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Solus Flyers \u2014 Canada Partner Map Skip to partner map Now Expanding Nationwide Partner with Solus Flyers Across Canada Own and operate a Solus Flyers business in your community. Click on a city below to discover available opportunities. 0 Cities Available 0 Potential Homes 0 Partners Operating 0 Cities Seeking Partners Marker View Heat Map [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/solusflyerscanada.com\/index.php?rest_route=\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solusflyerscanada.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/solusflyerscanada.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/solusflyerscanada.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solusflyerscanada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":2,"href":"https:\/\/solusflyerscanada.com\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":9,"href":"https:\/\/solusflyerscanada.com\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions\/9"}],"wp:attachment":[{"href":"https:\/\/solusflyerscanada.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}