{"id":2087,"date":"2026-08-01T16:09:29","date_gmt":"2026-08-01T16:09:29","guid":{"rendered":"https:\/\/gravityafrica.co.za\/ngistaging\/?page_id=2087"},"modified":"2026-08-02T22:09:20","modified_gmt":"2026-08-02T22:09:20","slug":"news","status":"publish","type":"page","link":"https:\/\/gravityafrica.co.za\/ngistaging\/news\/","title":{"rendered":"News &#038; Insights"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2087\" class=\"elementor elementor-2087\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-16cca002 e-con-full e-flex e-con e-parent\" data-id=\"16cca002\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9e90e9b elementor-widget elementor-widget-html\" data-id=\"9e90e9b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n<style>\r\n  :root {\r\n    --ngi-news-blue: #006BFF;\r\n    --ngi-news-green: #00FE07;\r\n    --ngi-news-ink: #07182B;\r\n    --ngi-news-soft: #F3F7FC;\r\n    --ngi-news-white: #FFFFFF;\r\n  }\r\n\r\n  body:has(.ngi-news-root) .page-header,\r\n  body:has(.ngi-news-root) .entry-title,\r\n  body:has(.ngi-news-root) .wp-block-post-title {\r\n    display: none !important;\r\n  }\r\n\r\n  body:has(.ngi-news-root) main,\r\n  body:has(.ngi-news-root) .site-main,\r\n  body:has(.ngi-news-root) .page-content,\r\n  body:has(.ngi-news-root) .entry-content {\r\n    margin-top: 0 !important;\r\n    margin-bottom: 0 !important;\r\n    padding-top: 0 !important;\r\n    padding-bottom: 0 !important;\r\n  }\r\n\r\n  body:has(.ngi-news-root) {\r\n    overflow-x: hidden;\r\n  }\r\n\r\n  .ngi-news-root,\r\n  .ngi-news-root * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .ngi-news-root {\r\n    position: relative;\r\n    left: 50%;\r\n    width: 100vw;\r\n    max-width: none !important;\r\n    margin: 0 0 0 -50vw !important;\r\n    overflow: hidden;\r\n    background: var(--ngi-news-white);\r\n    color: var(--ngi-news-ink);\r\n    font-family: Calibri, \"Helvetica Neue\", Arial, sans-serif;\r\n    isolation: isolate;\r\n  }\r\n\r\n  .ngi-news-root a,\r\n  .ngi-news-root button,\r\n  .ngi-news-root input {\r\n    font: inherit;\r\n  }\r\n\r\n  .ngi-news-root a {\r\n    color: inherit !important;\r\n    text-decoration: none !important;\r\n  }\r\n\r\n  .ngi-news-root button {\r\n    border: 0;\r\n  }\r\n\r\n  .ngi-news-hero {\r\n    position: relative;\r\n    min-height: clamp(620px, 78vh, 880px);\r\n    display: grid;\r\n    grid-template-rows: auto 1fr auto;\r\n    overflow: hidden;\r\n    color: var(--ngi-news-white);\r\n    background: var(--ngi-news-blue);\r\n  }\r\n\r\n  .ngi-news-hero::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: -20% -8% auto auto;\r\n    width: min(64vw, 920px);\r\n    aspect-ratio: 1;\r\n    border: clamp(60px, 8vw, 120px) solid var(--ngi-news-green);\r\n    border-radius: 50%;\r\n    opacity: .98;\r\n    transform: translate(30%, -34%);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .ngi-news-hero::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    right: clamp(24px, 7vw, 112px);\r\n    bottom: clamp(80px, 11vw, 150px);\r\n    width: clamp(130px, 18vw, 280px);\r\n    height: clamp(130px, 18vw, 280px);\r\n    background-image: radial-gradient(circle, var(--ngi-news-white) 1.6px, transparent 1.8px);\r\n    background-size: 18px 18px;\r\n    opacity: .34;\r\n    transform: rotate(10deg);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .ngi-news-ticker {\r\n    position: relative;\r\n    z-index: 3;\r\n    overflow: hidden;\r\n    border-bottom: 1px solid rgba(255,255,255,.4);\r\n    white-space: nowrap;\r\n  }\r\n\r\n  .ngi-news-ticker-track {\r\n    display: inline-flex;\r\n    min-width: max-content;\r\n    align-items: center;\r\n    gap: 24px;\r\n    padding: 13px 0;\r\n    color: var(--ngi-news-white);\r\n    font-size: 13px;\r\n    font-weight: 700;\r\n    letter-spacing: .16em;\r\n    text-transform: uppercase;\r\n    animation: ngiNewsTicker 24s linear infinite;\r\n  }\r\n\r\n  .ngi-news-ticker-track span {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 24px;\r\n  }\r\n\r\n  .ngi-news-ticker-track span::after {\r\n    content: \"\";\r\n    width: 8px;\r\n    height: 8px;\r\n    border-radius: 50%;\r\n    background: var(--ngi-news-green);\r\n  }\r\n\r\n  @keyframes ngiNewsTicker {\r\n    to { transform: translateX(-50%); }\r\n  }\r\n\r\n  .ngi-news-hero-inner {\r\n    position: relative;\r\n    z-index: 2;\r\n    width: min(1380px, calc(100% - 80px));\r\n    margin: 0 auto;\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1fr) minmax(260px, .42fr);\r\n    align-items: end;\r\n    gap: clamp(30px, 6vw, 100px);\r\n    padding: clamp(86px, 10vw, 148px) 0 clamp(68px, 8vw, 112px);\r\n  }\r\n\r\n  .ngi-news-kicker {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 12px;\r\n    margin: 0 0 24px;\r\n    color: var(--ngi-news-white);\r\n    font-size: 13px;\r\n    font-weight: 700;\r\n    letter-spacing: .18em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ngi-news-kicker::before {\r\n    content: \"\";\r\n    width: 42px;\r\n    height: 4px;\r\n    background: var(--ngi-news-green);\r\n  }\r\n\r\n  .ngi-news-title {\r\n    max-width: 960px;\r\n    margin: 0;\r\n    color: var(--ngi-news-white) !important;\r\n    font-size: clamp(74px, 11.2vw, 174px) !important;\r\n    font-weight: 800 !important;\r\n    line-height: .74 !important;\r\n    letter-spacing: -.075em !important;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ngi-news-title-line {\r\n    display: block;\r\n  }\r\n\r\n  .ngi-news-title-and {\r\n    position: relative;\r\n    display: inline-flex;\r\n    width: .74em;\r\n    height: .74em;\r\n    margin: 0 .04em 0 .1em;\r\n    align-items: center;\r\n    justify-content: center;\r\n    color: var(--ngi-news-blue);\r\n    font-size: .48em;\r\n    line-height: 1;\r\n    vertical-align: .18em;\r\n    background: var(--ngi-news-green);\r\n    border-radius: 50%;\r\n    transform: rotate(-9deg);\r\n  }\r\n\r\n  .ngi-news-hero-side {\r\n    align-self: end;\r\n    padding-bottom: 4px;\r\n  }\r\n\r\n  .ngi-news-hero-side p {\r\n    max-width: 370px;\r\n    margin: 0 0 32px;\r\n    color: var(--ngi-news-white) !important;\r\n    font-size: clamp(20px, 2vw, 29px);\r\n    line-height: 1.25;\r\n  }\r\n\r\n  .ngi-news-live {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 10px;\r\n    padding: 10px 14px;\r\n    color: var(--ngi-news-white);\r\n    border: 1px solid rgba(255,255,255,.55);\r\n    border-radius: 999px;\r\n    font-size: 12px;\r\n    font-weight: 700;\r\n    letter-spacing: .12em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ngi-news-live-dot {\r\n    width: 9px;\r\n    height: 9px;\r\n    border-radius: 50%;\r\n    background: var(--ngi-news-green);\r\n    box-shadow: 0 0 0 0 rgba(0,254,7,.7);\r\n    animation: ngiNewsPulse 1.8s infinite;\r\n  }\r\n\r\n  @keyframes ngiNewsPulse {\r\n    70% { box-shadow: 0 0 0 10px rgba(0,254,7,0); }\r\n    100% { box-shadow: 0 0 0 0 rgba(0,254,7,0); }\r\n  }\r\n\r\n  .ngi-news-hero-foot {\r\n    position: relative;\r\n    z-index: 3;\r\n    display: grid;\r\n    grid-template-columns: auto 1fr auto;\r\n    align-items: center;\r\n    gap: 22px;\r\n    padding: 20px max(40px, calc((100vw - 1380px) \/ 2));\r\n    color: var(--ngi-news-white);\r\n    border-top: 1px solid rgba(255,255,255,.4);\r\n    font-size: 12px;\r\n    font-weight: 700;\r\n    letter-spacing: .14em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ngi-news-hero-rule {\r\n    height: 1px;\r\n    background: rgba(255,255,255,.38);\r\n  }\r\n\r\n  .ngi-news-down {\r\n    display: inline-flex;\r\n    width: 38px;\r\n    height: 38px;\r\n    align-items: center;\r\n    justify-content: center;\r\n    color: var(--ngi-news-blue) !important;\r\n    background: var(--ngi-news-green);\r\n    border-radius: 50%;\r\n    transition: transform .25s ease, background .25s ease;\r\n  }\r\n\r\n  .ngi-news-down:hover,\r\n  .ngi-news-down:focus-visible {\r\n    color: var(--ngi-news-blue) !important;\r\n    background: var(--ngi-news-white) !important;\r\n    transform: translateY(4px);\r\n  }\r\n\r\n  .ngi-news-feed {\r\n    background: var(--ngi-news-white);\r\n    padding: clamp(72px, 9vw, 132px) max(24px, calc((100vw - 1380px) \/ 2));\r\n  }\r\n\r\n  .ngi-news-feed-head {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, .85fr) minmax(320px, 1.15fr);\r\n    gap: clamp(36px, 8vw, 130px);\r\n    align-items: end;\r\n    margin-bottom: clamp(44px, 6vw, 82px);\r\n  }\r\n\r\n  .ngi-news-section-label {\r\n    margin: 0 0 15px;\r\n    color: var(--ngi-news-blue) !important;\r\n    font-size: 12px;\r\n    font-weight: 700;\r\n    letter-spacing: .18em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ngi-news-section-title {\r\n    margin: 0;\r\n    color: var(--ngi-news-ink) !important;\r\n    font-size: clamp(48px, 6vw, 92px) !important;\r\n    font-weight: 800 !important;\r\n    line-height: .9 !important;\r\n    letter-spacing: -.055em !important;\r\n  }\r\n\r\n  .ngi-news-section-title em {\r\n    display: block;\r\n    color: var(--ngi-news-blue);\r\n    font-style: normal;\r\n  }\r\n\r\n  .ngi-news-controls {\r\n    display: grid;\r\n    gap: 20px;\r\n  }\r\n\r\n  .ngi-news-search-wrap {\r\n    position: relative;\r\n    border-bottom: 3px solid var(--ngi-news-ink);\r\n  }\r\n\r\n  .ngi-news-search-wrap::after {\r\n    content: \"\u2192\";\r\n    position: absolute;\r\n    right: 0;\r\n    top: 50%;\r\n    color: var(--ngi-news-blue);\r\n    font-size: 28px;\r\n    transform: translateY(-50%);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .ngi-news-search {\r\n    width: 100%;\r\n    min-height: 58px;\r\n    padding: 12px 50px 12px 0 !important;\r\n    color: var(--ngi-news-ink) !important;\r\n    background: transparent !important;\r\n    border: 0 !important;\r\n    border-radius: 0 !important;\r\n    box-shadow: none !important;\r\n    outline: 0 !important;\r\n    font-size: clamp(19px, 2vw, 24px) !important;\r\n  }\r\n\r\n  .ngi-news-search::placeholder {\r\n    color: rgba(7,24,43,.6);\r\n  }\r\n\r\n  .ngi-news-search:focus {\r\n    color: var(--ngi-news-ink) !important;\r\n    border-color: transparent !important;\r\n  }\r\n\r\n  .ngi-news-search-wrap:focus-within {\r\n    border-bottom-color: var(--ngi-news-blue);\r\n  }\r\n\r\n  .ngi-news-filters {\r\n    display: flex;\r\n    gap: 9px;\r\n    overflow-x: auto;\r\n    padding: 2px 0 8px;\r\n    scrollbar-width: none;\r\n  }\r\n\r\n  .ngi-news-filters::-webkit-scrollbar {\r\n    display: none;\r\n  }\r\n\r\n  .ngi-news-filter {\r\n    flex: 0 0 auto;\r\n    padding: 10px 15px;\r\n    color: var(--ngi-news-blue) !important;\r\n    background: transparent !important;\r\n    border: 1.5px solid var(--ngi-news-blue) !important;\r\n    border-radius: 999px !important;\r\n    cursor: pointer;\r\n    font-size: 12px;\r\n    font-weight: 700;\r\n    letter-spacing: .06em;\r\n    text-transform: uppercase;\r\n    transition: color .2s ease, background .2s ease, transform .2s ease;\r\n  }\r\n\r\n  .ngi-news-filter:hover,\r\n  .ngi-news-filter:focus-visible,\r\n  .ngi-news-filter.is-active {\r\n    color: var(--ngi-news-blue) !important;\r\n    background: var(--ngi-news-green) !important;\r\n    border-color: var(--ngi-news-green) !important;\r\n    transform: translateY(-2px);\r\n  }\r\n\r\n  .ngi-news-status {\r\n    min-height: 20px;\r\n    margin: 0 0 26px;\r\n    color: rgba(7,24,43,.64) !important;\r\n    font-size: 12px;\r\n    font-weight: 700;\r\n    letter-spacing: .1em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ngi-news-feature {\r\n    min-height: 540px;\r\n    margin-bottom: clamp(54px, 7vw, 98px);\r\n  }\r\n\r\n  .ngi-news-feature-card {\r\n    position: relative;\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1.25fr) minmax(340px, .75fr);\r\n    min-height: 540px;\r\n    overflow: hidden;\r\n    background: var(--ngi-news-blue);\r\n    color: var(--ngi-news-white);\r\n  }\r\n\r\n  .ngi-news-feature-media {\r\n    position: relative;\r\n    min-height: 540px;\r\n    overflow: hidden;\r\n    background: var(--ngi-news-blue);\r\n  }\r\n\r\n  .ngi-news-feature-media::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background: linear-gradient(90deg, transparent 55%, rgba(0,107,255,.18));\r\n    pointer-events: none;\r\n  }\r\n\r\n  .ngi-news-feature-media img {\r\n    width: 100%;\r\n    height: 100%;\r\n    object-fit: cover;\r\n    transition: transform .7s cubic-bezier(.2,.7,.2,1);\r\n  }\r\n\r\n  .ngi-news-feature-card:hover .ngi-news-feature-media img {\r\n    transform: scale(1.035);\r\n  }\r\n\r\n  .ngi-news-placeholder-art {\r\n    position: absolute;\r\n    inset: 0;\r\n    overflow: hidden;\r\n    background: var(--ngi-news-blue);\r\n  }\r\n\r\n  .ngi-news-placeholder-art::before,\r\n  .ngi-news-placeholder-art::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    border-radius: 50%;\r\n  }\r\n\r\n  .ngi-news-placeholder-art::before {\r\n    width: 72%;\r\n    aspect-ratio: 1;\r\n    right: -20%;\r\n    top: -32%;\r\n    border: clamp(45px, 6vw, 88px) solid var(--ngi-news-green);\r\n  }\r\n\r\n  .ngi-news-placeholder-art::after {\r\n    width: 38%;\r\n    aspect-ratio: 1;\r\n    left: 14%;\r\n    bottom: -22%;\r\n    border: 2px solid var(--ngi-news-white);\r\n    opacity: .7;\r\n  }\r\n\r\n  .ngi-news-feature-copy {\r\n    position: relative;\r\n    z-index: 2;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: space-between;\r\n    padding: clamp(36px, 5vw, 74px);\r\n    background: var(--ngi-news-blue);\r\n  }\r\n\r\n  .ngi-news-meta {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    align-items: center;\r\n    gap: 11px;\r\n    margin: 0 0 20px;\r\n    color: inherit;\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    letter-spacing: .12em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ngi-news-meta-dot {\r\n    width: 5px;\r\n    height: 5px;\r\n    border-radius: 50%;\r\n    background: var(--ngi-news-green);\r\n  }\r\n\r\n  .ngi-news-feature-title {\r\n    margin: 0 0 22px;\r\n    color: var(--ngi-news-white) !important;\r\n    font-size: clamp(38px, 4.8vw, 72px) !important;\r\n    font-weight: 800 !important;\r\n    line-height: .98 !important;\r\n    letter-spacing: -.045em !important;\r\n  }\r\n\r\n  .ngi-news-feature-title a:hover,\r\n  .ngi-news-feature-title a:focus-visible {\r\n    color: var(--ngi-news-green) !important;\r\n  }\r\n\r\n  .ngi-news-feature-excerpt {\r\n    max-width: 580px;\r\n    margin: 0 0 34px;\r\n    color: rgba(255,255,255,.9) !important;\r\n    font-size: 16px;\r\n    line-height: 1.55;\r\n  }\r\n\r\n  .ngi-news-read {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    align-self: flex-start;\r\n    gap: 12px;\r\n    color: var(--ngi-news-blue) !important;\r\n    padding: 13px 18px;\r\n    background: var(--ngi-news-green) !important;\r\n    border-radius: 999px;\r\n    font-size: 12px;\r\n    font-weight: 800;\r\n    letter-spacing: .08em;\r\n    text-transform: uppercase;\r\n    transition: gap .2s ease, background .2s ease, color .2s ease;\r\n  }\r\n\r\n  .ngi-news-read:hover,\r\n  .ngi-news-read:focus-visible {\r\n    gap: 20px;\r\n    color: var(--ngi-news-blue) !important;\r\n    background: var(--ngi-news-white) !important;\r\n  }\r\n\r\n  .ngi-news-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    gap: clamp(34px, 4.5vw, 72px) clamp(24px, 3.4vw, 52px);\r\n  }\r\n\r\n  .ngi-news-card {\r\n    position: relative;\r\n    min-width: 0;\r\n    border-top: 4px solid var(--ngi-news-blue);\r\n    transition: transform .3s ease, border-color .3s ease;\r\n  }\r\n\r\n  .ngi-news-card:hover {\r\n    border-top-color: var(--ngi-news-green);\r\n    transform: translateY(-8px);\r\n  }\r\n\r\n  .ngi-news-card-media {\r\n    position: relative;\r\n    aspect-ratio: 16 \/ 10;\r\n    margin: 16px 0 23px;\r\n    overflow: hidden;\r\n    background: var(--ngi-news-blue);\r\n  }\r\n\r\n  .ngi-news-card-media img {\r\n    width: 100%;\r\n    height: 100%;\r\n    object-fit: cover;\r\n    transition: transform .55s cubic-bezier(.2,.7,.2,1);\r\n  }\r\n\r\n  .ngi-news-card:hover .ngi-news-card-media img {\r\n    transform: scale(1.055);\r\n  }\r\n\r\n  .ngi-news-card-arrow {\r\n    position: absolute;\r\n    right: 14px;\r\n    bottom: 14px;\r\n    display: inline-flex;\r\n    width: 42px;\r\n    height: 42px;\r\n    align-items: center;\r\n    justify-content: center;\r\n    color: var(--ngi-news-blue);\r\n    background: var(--ngi-news-green);\r\n    border-radius: 50%;\r\n    font-size: 21px;\r\n    transition: transform .25s ease;\r\n  }\r\n\r\n  .ngi-news-card:hover .ngi-news-card-arrow {\r\n    transform: rotate(-35deg);\r\n  }\r\n\r\n  .ngi-news-card .ngi-news-meta {\r\n    color: rgba(7,24,43,.62);\r\n  }\r\n\r\n  .ngi-news-card-title {\r\n    margin: 0 0 14px;\r\n    color: var(--ngi-news-ink) !important;\r\n    font-size: clamp(24px, 2.4vw, 34px) !important;\r\n    font-weight: 800 !important;\r\n    line-height: 1.05 !important;\r\n    letter-spacing: -.025em !important;\r\n  }\r\n\r\n  .ngi-news-card-title a:hover,\r\n  .ngi-news-card-title a:focus-visible {\r\n    color: var(--ngi-news-blue) !important;\r\n  }\r\n\r\n  .ngi-news-card-excerpt {\r\n    margin: 0;\r\n    color: rgba(7,24,43,.72) !important;\r\n    font-size: 15px;\r\n    line-height: 1.55;\r\n  }\r\n\r\n  .ngi-news-empty {\r\n    position: relative;\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1fr) minmax(320px, .8fr);\r\n    min-height: 510px;\r\n    overflow: hidden;\r\n    background: var(--ngi-news-blue);\r\n    color: var(--ngi-news-white);\r\n  }\r\n\r\n  .ngi-news-empty-copy {\r\n    position: relative;\r\n    z-index: 2;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    padding: clamp(44px, 7vw, 100px);\r\n  }\r\n\r\n  .ngi-news-empty-copy strong {\r\n    display: block;\r\n    max-width: 750px;\r\n    margin-bottom: 24px;\r\n    color: var(--ngi-news-white);\r\n    font-size: clamp(46px, 7vw, 104px);\r\n    font-weight: 800;\r\n    line-height: .88;\r\n    letter-spacing: -.06em;\r\n  }\r\n\r\n  .ngi-news-empty-copy p {\r\n    max-width: 520px;\r\n    margin: 0;\r\n    color: rgba(255,255,255,.88) !important;\r\n    font-size: 18px;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  .ngi-news-empty-signal {\r\n    position: relative;\r\n    min-height: 390px;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .ngi-news-empty-signal span {\r\n    position: absolute;\r\n    left: 50%;\r\n    top: 50%;\r\n    display: block;\r\n    width: 64%;\r\n    aspect-ratio: 1;\r\n    border: 3px solid var(--ngi-news-green);\r\n    border-radius: 50%;\r\n    transform: translate(-50%, -50%);\r\n  }\r\n\r\n  .ngi-news-empty-signal span:nth-child(2) { width: 42%; opacity: .72; }\r\n  .ngi-news-empty-signal span:nth-child(3) { width: 20%; opacity: .45; }\r\n\r\n  .ngi-news-empty-signal::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    left: 50%;\r\n    top: 50%;\r\n    width: 16px;\r\n    height: 16px;\r\n    border-radius: 50%;\r\n    background: var(--ngi-news-green);\r\n    box-shadow: 0 0 0 0 rgba(0,254,7,.55);\r\n    transform: translate(-50%, -50%);\r\n    animation: ngiNewsPulse 1.8s infinite;\r\n  }\r\n\r\n  .ngi-news-more-wrap {\r\n    display: flex;\r\n    justify-content: center;\r\n    padding-top: 62px;\r\n  }\r\n\r\n  .ngi-news-more {\r\n    display: none;\r\n    align-items: center;\r\n    gap: 12px;\r\n    padding: 15px 22px;\r\n    color: var(--ngi-news-white) !important;\r\n    background: var(--ngi-news-blue) !important;\r\n    border-radius: 999px !important;\r\n    cursor: pointer;\r\n    font-size: 12px;\r\n    font-weight: 800;\r\n    letter-spacing: .08em;\r\n    text-transform: uppercase;\r\n    transition: gap .2s ease, color .2s ease, background .2s ease;\r\n  }\r\n\r\n  .ngi-news-more:hover,\r\n  .ngi-news-more:focus-visible {\r\n    gap: 20px;\r\n    color: var(--ngi-news-blue) !important;\r\n    background: var(--ngi-news-green) !important;\r\n  }\r\n\r\n  .ngi-news-more.is-visible {\r\n    display: inline-flex;\r\n  }\r\n\r\n  .ngi-news-more[disabled] {\r\n    opacity: .55;\r\n    cursor: wait;\r\n  }\r\n\r\n  .ngi-news-skeleton {\r\n    position: relative;\r\n    min-height: 540px;\r\n    overflow: hidden;\r\n    background: var(--ngi-news-soft);\r\n  }\r\n\r\n  .ngi-news-skeleton::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background: linear-gradient(105deg, transparent 25%, rgba(255,255,255,.84) 46%, transparent 68%);\r\n    transform: translateX(-100%);\r\n    animation: ngiNewsShimmer 1.2s infinite;\r\n  }\r\n\r\n  @keyframes ngiNewsShimmer {\r\n    to { transform: translateX(100%); }\r\n  }\r\n\r\n  .ngi-news-final {\r\n    position: relative;\r\n    overflow: hidden;\r\n    background: var(--ngi-news-green);\r\n    color: var(--ngi-news-blue);\r\n    font-family: Calibri, \"Segoe UI\", Arial, sans-serif !important;\r\n  }\r\n\r\n  .ngi-news-final::after {\r\n    content: \"\u2192\";\r\n    position: absolute;\r\n    right: -2vw;\r\n    top: 50%;\r\n    color: var(--ngi-news-blue);\r\n    font-size: clamp(240px, 38vw, 620px);\r\n    font-weight: 300;\r\n    line-height: .6;\r\n    opacity: .1;\r\n    transform: translateY(-52%);\r\n    pointer-events: none;\r\n  }\r\n\r\n  .ngi-news-final-inner {\r\n    position: relative;\r\n    z-index: 2;\r\n    width: min(1380px, calc(100% - 80px));\r\n    margin: 0 auto;\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1fr) auto;\r\n    align-items: end;\r\n    gap: 44px;\r\n    padding: clamp(76px, 10vw, 148px) 0;\r\n  }\r\n\r\n  .ngi-news-final-label {\r\n    margin: 0 0 18px;\r\n    color: var(--ngi-news-blue) !important;\r\n    font-size: 12px;\r\n    font-weight: 800;\r\n    letter-spacing: .17em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  .ngi-news-final-title {\r\n    max-width: 980px;\r\n    margin: 0;\r\n    color: var(--ngi-news-blue) !important;\r\n    font-family: Calibri, \"Segoe UI\", Arial, sans-serif !important;\r\n    font-size: clamp(54px, 7.4vw, 110px) !important;\r\n    font-weight: 800 !important;\r\n    line-height: .9 !important;\r\n    letter-spacing: -.045em !important;\r\n  }\r\n\r\n  .ngi-news-final-link {\r\n    display: inline-flex;\r\n    min-height: 66px;\r\n    align-items: center;\r\n    justify-content: center;\r\n    padding: 16px 36px;\r\n    color: var(--ngi-news-white) !important;\r\n    background: var(--ngi-news-blue) !important;\r\n    border: 2px solid transparent !important;\r\n    border-radius: 4px !important;\r\n    font-family: Calibri, \"Segoe UI\", Arial, sans-serif !important;\r\n    font-size: 17px;\r\n    font-weight: 700;\r\n    letter-spacing: .02em;\r\n    line-height: 1.1;\r\n    text-transform: uppercase;\r\n    white-space: nowrap;\r\n    transition: transform .2s ease, color .2s ease, background .2s ease, border-color .2s ease;\r\n  }\r\n\r\n  .ngi-news-final-link:hover,\r\n  .ngi-news-final-link:focus-visible {\r\n    color: var(--ngi-news-blue) !important;\r\n    background: var(--ngi-news-white) !important;\r\n    border-color: var(--ngi-news-white) !important;\r\n    transform: translateY(-2px);\r\n  }\r\n\r\n  .ngi-news-error {\r\n    padding: 32px;\r\n    color: var(--ngi-news-white);\r\n    background: var(--ngi-news-blue);\r\n    border-left: 10px solid var(--ngi-news-green);\r\n  }\r\n\r\n  .ngi-news-root.is-empty .ngi-news-feature {\r\n    margin-bottom: 0;\r\n  }\r\n\r\n  .ngi-news-root.is-empty .ngi-news-more-wrap {\r\n    display: none;\r\n    padding-top: 0;\r\n  }\r\n\r\n  .ngi-news-root a.ngi-news-final-link {\r\n    color: var(--ngi-news-white) !important;\r\n  }\r\n\r\n  .ngi-news-root a.ngi-news-final-link:hover,\r\n  .ngi-news-root a.ngi-news-final-link:focus-visible {\r\n    color: var(--ngi-news-blue) !important;\r\n  }\r\n\r\n  .ngi-news-root .ngi-news-feature-title a {\r\n    color: var(--ngi-news-white) !important;\r\n  }\r\n\r\n  .ngi-news-root .ngi-news-feature-title a:hover,\r\n  .ngi-news-root .ngi-news-feature-title a:focus-visible {\r\n    color: var(--ngi-news-green) !important;\r\n  }\r\n\r\n  .ngi-news-root .ngi-news-card-title a {\r\n    color: var(--ngi-news-ink) !important;\r\n  }\r\n\r\n  .ngi-news-root .ngi-news-card-title a:hover,\r\n  .ngi-news-root .ngi-news-card-title a:focus-visible {\r\n    color: var(--ngi-news-blue) !important;\r\n  }\r\n\r\n  @media (max-width: 980px) {\r\n    .ngi-news-hero-inner {\r\n      width: min(100% - 48px, 760px);\r\n      grid-template-columns: 1fr;\r\n      align-items: end;\r\n      gap: 48px;\r\n      padding-top: 98px;\r\n    }\r\n\r\n    .ngi-news-hero-side {\r\n      max-width: 470px;\r\n    }\r\n\r\n    .ngi-news-hero::after {\r\n      right: -30px;\r\n      bottom: 120px;\r\n    }\r\n\r\n    .ngi-news-feed-head {\r\n      grid-template-columns: 1fr;\r\n      gap: 42px;\r\n    }\r\n\r\n    .ngi-news-feature-card {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .ngi-news-feature-media {\r\n      min-height: 440px;\r\n    }\r\n\r\n    .ngi-news-grid {\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    }\r\n\r\n    .ngi-news-empty {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .ngi-news-empty-signal {\r\n      position: absolute;\r\n      right: -40px;\r\n      bottom: -70px;\r\n      width: 46%;\r\n      min-height: 320px;\r\n      opacity: .65;\r\n    }\r\n\r\n    .ngi-news-final-inner {\r\n      width: min(100% - 48px, 760px);\r\n      grid-template-columns: 1fr;\r\n      align-items: start;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 680px) {\r\n    .ngi-news-hero {\r\n      min-height: 660px;\r\n    }\r\n\r\n    .ngi-news-hero::before {\r\n      width: 460px;\r\n      border-width: 62px;\r\n      transform: translate(49%, -34%);\r\n    }\r\n\r\n    .ngi-news-ticker-track {\r\n      font-size: 11px;\r\n    }\r\n\r\n    .ngi-news-hero-inner {\r\n      width: calc(100% - 36px);\r\n      gap: 36px;\r\n      padding: 80px 0 58px;\r\n    }\r\n\r\n    .ngi-news-title {\r\n      font-size: clamp(62px, 21vw, 102px) !important;\r\n      line-height: .78 !important;\r\n    }\r\n\r\n    .ngi-news-title-and {\r\n      width: .82em;\r\n      height: .82em;\r\n      margin-left: .04em;\r\n      font-size: .44em;\r\n    }\r\n\r\n    .ngi-news-kicker {\r\n      margin-bottom: 18px;\r\n      font-size: 11px;\r\n    }\r\n\r\n    .ngi-news-hero-side p {\r\n      max-width: 290px;\r\n      margin-bottom: 22px;\r\n      font-size: 19px;\r\n    }\r\n\r\n    .ngi-news-hero-foot {\r\n      grid-template-columns: auto 1fr;\r\n      padding: 14px 18px;\r\n      font-size: 10px;\r\n    }\r\n\r\n    .ngi-news-hero-rule {\r\n      display: none;\r\n    }\r\n\r\n    .ngi-news-down {\r\n      justify-self: end;\r\n    }\r\n\r\n    .ngi-news-feed {\r\n      padding: 72px 18px 84px;\r\n    }\r\n\r\n    .ngi-news-feed-head {\r\n      margin-bottom: 46px;\r\n    }\r\n\r\n    .ngi-news-section-title {\r\n      font-size: clamp(46px, 15vw, 72px) !important;\r\n    }\r\n\r\n    .ngi-news-search {\r\n      min-height: 52px;\r\n      font-size: 18px !important;\r\n    }\r\n\r\n    .ngi-news-feature {\r\n      min-height: 0;\r\n      margin-bottom: 64px;\r\n    }\r\n\r\n    .ngi-news-feature-card {\r\n      min-height: 0;\r\n    }\r\n\r\n    .ngi-news-feature-media {\r\n      min-height: 0;\r\n      aspect-ratio: 4 \/ 3;\r\n    }\r\n\r\n    .ngi-news-feature-copy {\r\n      padding: 34px 24px 38px;\r\n    }\r\n\r\n    .ngi-news-feature-title {\r\n      font-size: clamp(36px, 11vw, 54px) !important;\r\n    }\r\n\r\n    .ngi-news-feature-excerpt {\r\n      font-size: 16px;\r\n    }\r\n\r\n    .ngi-news-grid {\r\n      grid-template-columns: 1fr;\r\n      gap: 52px;\r\n    }\r\n\r\n    .ngi-news-card {\r\n      transform: none !important;\r\n    }\r\n\r\n    .ngi-news-card-title {\r\n      font-size: 29px !important;\r\n    }\r\n\r\n    .ngi-news-empty {\r\n      min-height: 500px;\r\n    }\r\n\r\n    .ngi-news-empty-copy {\r\n      padding: 50px 24px 170px;\r\n    }\r\n\r\n    .ngi-news-empty-copy strong {\r\n      font-size: clamp(46px, 15vw, 72px);\r\n    }\r\n\r\n    .ngi-news-empty-signal {\r\n      width: 78%;\r\n      right: -28%;\r\n      bottom: -80px;\r\n    }\r\n\r\n    .ngi-news-final-inner {\r\n      width: calc(100% - 36px);\r\n      padding: 76px 0;\r\n    }\r\n\r\n    .ngi-news-final-title {\r\n      font-size: clamp(50px, 15vw, 74px) !important;\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .ngi-news-root *,\r\n    .ngi-news-root *::before,\r\n    .ngi-news-root *::after {\r\n      scroll-behavior: auto !important;\r\n      animation-duration: .01ms !important;\r\n      animation-iteration-count: 1 !important;\r\n      transition-duration: .01ms !important;\r\n    }\r\n  }\r\n<\/style>\r\n<main class=\"ngi-news-root\" data-ngi-news-app=\"\" data-api=\"\/ngistaging\/wp-json\/wp\/v2\">\r\n<section class=\"ngi-news-hero\" aria-labelledby=\"ngi-news-title\">\r\n<div class=\"ngi-news-ticker\" aria-hidden=\"true\">\r\n<div class=\"ngi-news-ticker-track\">News &amp; InsightsFresh from NGIGraduate with ProofIdeas in motionNews &amp; InsightsFresh from NGIGraduate with ProofIdeas in motion<\/div>\r\n<\/div>\r\n<div class=\"ngi-news-hero-inner\">\r\n<div>\r\n<p class=\"ngi-news-kicker\">The NGI feed<\/p>\r\n<h1 id=\"ngi-news-title\" class=\"ngi-news-title\"><span class=\"ngi-news-title-line\">News <span class=\"ngi-news-title-and\">&amp;<\/span><\/span> <span class=\"ngi-news-title-line\">Insights<\/span><\/h1>\r\n<\/div>\r\n<div class=\"ngi-news-hero-side\">\r\n<p>Read the latest from NGI.<\/p>\r\n<span class=\"ngi-news-live\"><span data-ngi-live-count=\"\">Live feed<\/span><\/span><\/div>\r\n<\/div>\r\n<div class=\"ngi-news-hero-foot\">Scroll into the story<a class=\"ngi-news-down\" href=\"#ngi-latest\" aria-label=\"Explore the latest NGI stories\">\u2193<\/a><\/div>\r\n<\/section>\r\n<section id=\"ngi-latest\" class=\"ngi-news-feed\" aria-labelledby=\"ngi-latest-title\">\r\n<div class=\"ngi-news-feed-head\">\r\n<div>\r\n<p class=\"ngi-news-section-label\">Latest signal<\/p>\r\n<h2 id=\"ngi-latest-title\" class=\"ngi-news-section-title\">What\u2019s <em>happening.<\/em><\/h2>\r\n<\/div>\r\n<div class=\"ngi-news-controls\"><label class=\"ngi-news-search-wrap\"> <span style=\"position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;\">Search News &amp; Insights<\/span> <input class=\"ngi-news-search\" autocomplete=\"off\" type=\"search\" placeholder=\"Search the feed\" data-ngi-search=\"\" \/> <\/label>\r\n<div class=\"ngi-news-filters\" role=\"group\" aria-label=\"Filter stories by category\" data-ngi-filters=\"\"><button class=\"ngi-news-filter is-active\" type=\"button\" data-category=\"0\" aria-pressed=\"true\">All stories<\/button><\/div>\r\n<\/div>\r\n<\/div>\r\n<p class=\"ngi-news-status\" role=\"status\" aria-live=\"polite\" data-ngi-status=\"\">Loading the latest from NGI\u2026<\/p>\r\n<div class=\"ngi-news-feature\" data-ngi-feature=\"\">\r\n<div class=\"ngi-news-skeleton\" aria-hidden=\"true\">\u00a0<\/div>\r\n<\/div>\r\n<div class=\"ngi-news-grid\" data-ngi-grid=\"\">\u00a0<\/div>\r\n<div class=\"ngi-news-more-wrap\"><button class=\"ngi-news-more\" type=\"button\" data-ngi-more=\"\">Load more stories \u2192<\/button><\/div>\r\n<\/section>\r\n<section class=\"ngi-news-final\" aria-labelledby=\"ngi-news-final-title\">\r\n<div class=\"ngi-news-final-inner\">\r\n<div>\r\n<p class=\"ngi-news-final-label\">Your story starts here<\/p>\r\n<h2 id=\"ngi-news-final-title\" class=\"ngi-news-final-title\">Ready to become part of what\u2019s next?<\/h2>\r\n<\/div>\r\n<a class=\"ngi-news-final-link\" href=\"\/ngistaging\/enquiry\/\">Connect to an advisor<\/a><\/div>\r\n<\/section>\r\n<\/main>\r\n<script>\r\n(() => {\r\n  const app = document.querySelector('[data-ngi-news-app]');\r\n  if (!app || app.dataset.initialised === 'true') return;\r\n  app.dataset.initialised = 'true';\r\n\r\n  const api = new URL(app.dataset.api.replace(\/\\\/$\/, '') + '\/', window.location.origin).href;\r\n  const feature = app.querySelector('[data-ngi-feature]');\r\n  const grid = app.querySelector('[data-ngi-grid]');\r\n  const filters = app.querySelector('[data-ngi-filters]');\r\n  const search = app.querySelector('[data-ngi-search]');\r\n  const status = app.querySelector('[data-ngi-status]');\r\n  const more = app.querySelector('[data-ngi-more]');\r\n  const liveCount = app.querySelector('[data-ngi-live-count]');\r\n\r\n  const state = {\r\n    page: 1,\r\n    total: 0,\r\n    totalPages: 1,\r\n    category: 0,\r\n    query: '',\r\n    loading: false,\r\n    request: 0\r\n  };\r\n\r\n  const escapeHtml = (value = '') => String(value).replace(\/[&<>'\"]\/g, (char) => ({\r\n    '&': '&amp;', '<': '&lt;', '>': '&gt;', \"'\": '&#039;', '\"': '&quot;'\r\n  })[char]);\r\n\r\n  const plainText = (html = '') => {\r\n    const temp = document.createElement('div');\r\n    temp.innerHTML = html;\r\n    return (temp.textContent || temp.innerText || '').replace(\/\\s+\/g, ' ').trim();\r\n  };\r\n\r\n  const trimText = (text, max) => {\r\n    if (text.length <= max) return text;\r\n    return text.slice(0, max).replace(\/\\s+\\S*$\/, '') + '\u2026';\r\n  };\r\n\r\n  const formatDate = (value) => new Intl.DateTimeFormat('en-ZA', {\r\n    day: '2-digit', month: 'short', year: 'numeric'\r\n  }).format(new Date(value));\r\n\r\n  const categoryName = (post) => {\r\n    const groups = post?._embedded?.['wp:term'] || [];\r\n    const cats = groups.flat().filter((term) => term.taxonomy === 'category');\r\n    return cats[0]?.name || 'NGI';\r\n  };\r\n\r\n  const imageUrl = (post) => {\r\n    const media = post?._embedded?.['wp:featuredmedia']?.[0];\r\n    return media?.media_details?.sizes?.large?.source_url || media?.source_url || '';\r\n  };\r\n\r\n  const readMinutes = (post) => {\r\n    const words = plainText(post?.content?.rendered || '').split(\/\\s+\/).filter(Boolean).length;\r\n    return Math.max(1, Math.round(words \/ 210));\r\n  };\r\n\r\n  const metaMarkup = (post) => `\r\n    <div class=\"ngi-news-meta\">\r\n      <span>${escapeHtml(categoryName(post))}<\/span>\r\n      <span class=\"ngi-news-meta-dot\" aria-hidden=\"true\"><\/span>\r\n      <time datetime=\"${escapeHtml(post.date)}\">${escapeHtml(formatDate(post.date))}<\/time>\r\n      <span class=\"ngi-news-meta-dot\" aria-hidden=\"true\"><\/span>\r\n      <span>${readMinutes(post)} min read<\/span>\r\n    <\/div>`;\r\n\r\n  const mediaMarkup = (post, className) => {\r\n    const image = imageUrl(post);\r\n    const title = plainText(post?.title?.rendered || 'NGI story');\r\n    if (!image) return `<div class=\"ngi-news-placeholder-art\" aria-hidden=\"true\"><\/div>`;\r\n    return `<img src=\"${escapeHtml(image)}\" alt=\"${escapeHtml(title)}\" loading=\"${className === 'feature' ? 'eager' : 'lazy'}\" decoding=\"async\">`;\r\n  };\r\n\r\n  const featureMarkup = (post) => {\r\n    const title = plainText(post?.title?.rendered || 'Untitled');\r\n    const excerpt = trimText(plainText(post?.excerpt?.rendered || post?.content?.rendered || ''), 220);\r\n    return `\r\n      <article class=\"ngi-news-feature-card\">\r\n        <a class=\"ngi-news-feature-media\" href=\"${escapeHtml(post.link)}\" aria-label=\"Read ${escapeHtml(title)}\">\r\n          ${mediaMarkup(post, 'feature')}\r\n        <\/a>\r\n        <div class=\"ngi-news-feature-copy\">\r\n          <div>\r\n            ${metaMarkup(post)}\r\n            <h3 class=\"ngi-news-feature-title\"><a href=\"${escapeHtml(post.link)}\">${escapeHtml(title)}<\/a><\/h3>\r\n            ${excerpt ? `<p class=\"ngi-news-feature-excerpt\">${escapeHtml(excerpt)}<\/p>` : ''}\r\n          <\/div>\r\n          <a class=\"ngi-news-read\" href=\"${escapeHtml(post.link)}\">Read the story <span>\u2192<\/span><\/a>\r\n        <\/div>\r\n      <\/article>`;\r\n  };\r\n\r\n  const cardMarkup = (post) => {\r\n    const title = plainText(post?.title?.rendered || 'Untitled');\r\n    const excerpt = trimText(plainText(post?.excerpt?.rendered || post?.content?.rendered || ''), 135);\r\n    return `\r\n      <article class=\"ngi-news-card\">\r\n        <a class=\"ngi-news-card-media\" href=\"${escapeHtml(post.link)}\" aria-label=\"Read ${escapeHtml(title)}\">\r\n          ${mediaMarkup(post, 'card')}\r\n          <span class=\"ngi-news-card-arrow\" aria-hidden=\"true\">\u2192<\/span>\r\n        <\/a>\r\n        ${metaMarkup(post)}\r\n        <h3 class=\"ngi-news-card-title\"><a href=\"${escapeHtml(post.link)}\">${escapeHtml(title)}<\/a><\/h3>\r\n        ${excerpt ? `<p class=\"ngi-news-card-excerpt\">${escapeHtml(excerpt)}<\/p>` : ''}\r\n      <\/article>`;\r\n  };\r\n\r\n\r\n  const setLoading = (loading) => {\r\n    state.loading = loading;\r\n    search.disabled = loading;\r\n    more.disabled = loading;\r\n    if (loading) status.textContent = 'Tuning into the latest from NGI\u2026';\r\n  };\r\n\r\n  const buildUrl = (page) => {\r\n    const params = new URLSearchParams({\r\n      _embed: 'wp:featuredmedia,wp:term',\r\n      per_page: '10',\r\n      page: String(page),\r\n      orderby: 'date',\r\n      order: 'desc',\r\n      _ngi_cache: String(Date.now())\r\n    });\r\n    if (state.category) params.set('categories', String(state.category));\r\n    if (state.query) params.set('search', state.query);\r\n    return api + 'posts?' + params.toString();\r\n  };\r\n\r\n  const loadPosts = async ({ append = false } = {}) => {\r\n    if (state.loading) return;\r\n    const requestId = ++state.request;\r\n    const page = append ? state.page + 1 : 1;\r\n    setLoading(true);\r\n\r\n    try {\r\n      const response = await fetch(buildUrl(page), { credentials: 'same-origin', cache: 'no-store' });\r\n      if (!response.ok) throw new Error('Unable to load posts');\r\n      const posts = await response.json();\r\n      if (requestId !== state.request) return;\r\n\r\n      state.page = page;\r\n      state.total = Number(response.headers.get('X-WP-Total') || posts.length);\r\n      state.totalPages = Number(response.headers.get('X-WP-TotalPages') || 1);\r\n      liveCount.textContent = `${state.total} ${state.total === 1 ? 'story' : 'stories'} live`;\r\n\r\n      if (!append) {\r\n        feature.innerHTML = '';\r\n        grid.innerHTML = '';\r\n      }\r\n\r\n      if (!posts.length && !append) {\r\n        app.classList.add('is-empty');\r\n        feature.hidden = true;\r\n        status.textContent = state.total ? 'No matching stories' : 'The feed is ready';\r\n      } else if (!append) {\r\n        app.classList.remove('is-empty');\r\n        feature.hidden = false;\r\n        feature.innerHTML = featureMarkup(posts[0]);\r\n        grid.innerHTML = posts.slice(1).map(cardMarkup).join('');\r\n        status.textContent = `${state.total} ${state.total === 1 ? 'story' : 'stories'} \u00b7 newest first`;\r\n      } else {\r\n        grid.insertAdjacentHTML('beforeend', posts.map(cardMarkup).join(''));\r\n        status.textContent = `${Math.min(state.page * 10, state.total)} of ${state.total} stories shown`;\r\n      }\r\n\r\n      more.classList.toggle('is-visible', state.page < state.totalPages);\r\n    } catch (error) {\r\n      if (!append) {\r\n        feature.hidden = false;\r\n        feature.innerHTML = '<div class=\"ngi-news-error\"><strong>The feed is taking a moment.<\/strong><br>Please refresh and try again.<\/div>';\r\n        grid.innerHTML = '';\r\n      }\r\n      status.textContent = 'The latest stories could not be loaded';\r\n      more.classList.remove('is-visible');\r\n    } finally {\r\n      setLoading(false);\r\n    }\r\n  };\r\n\r\n  const loadCategories = async () => {\r\n    try {\r\n      const response = await fetch(api + 'categories?per_page=100&hide_empty=true&_ngi_cache=' + Date.now(), { credentials: 'same-origin', cache: 'no-store' });\r\n      if (!response.ok) return;\r\n      const categories = await response.json();\r\n      filters.insertAdjacentHTML('beforeend', categories.map((category) => `\r\n        <button class=\"ngi-news-filter\" type=\"button\" data-category=\"${Number(category.id)}\" aria-pressed=\"false\">${escapeHtml(category.name)}<\/button>\r\n      `).join(''));\r\n    } catch (error) {}\r\n  };\r\n\r\n  filters.addEventListener('click', (event) => {\r\n    const button = event.target.closest('[data-category]');\r\n    if (!button || state.loading) return;\r\n    state.category = Number(button.dataset.category || 0);\r\n    filters.querySelectorAll('[data-category]').forEach((item) => {\r\n      const active = item === button;\r\n      item.classList.toggle('is-active', active);\r\n      item.setAttribute('aria-pressed', String(active));\r\n    });\r\n    loadPosts();\r\n  });\r\n\r\n  let searchTimer;\r\n  search.addEventListener('input', () => {\r\n    window.clearTimeout(searchTimer);\r\n    searchTimer = window.setTimeout(() => {\r\n      state.query = search.value.trim();\r\n      loadPosts();\r\n    }, 350);\r\n  });\r\n\r\n  more.addEventListener('click', () => loadPosts({ append: true }));\r\n  loadCategories();\r\n  loadPosts();\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>News &amp; InsightsFresh from NGIGraduate with ProofIdeas in motionNews &amp; InsightsFresh from NGIGraduate with ProofIdeas in motion The NGI feed News &amp; Insights Read the latest from NGI. Live feed Scroll into the story\u2193 Latest signal What\u2019s happening. Search News &amp; Insights All stories Loading the latest from NGI\u2026 \u00a0 \u00a0 Load more stories \u2192 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-2087","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/gravityafrica.co.za\/ngistaging\/wp-json\/wp\/v2\/pages\/2087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gravityafrica.co.za\/ngistaging\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gravityafrica.co.za\/ngistaging\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gravityafrica.co.za\/ngistaging\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/gravityafrica.co.za\/ngistaging\/wp-json\/wp\/v2\/comments?post=2087"}],"version-history":[{"count":12,"href":"https:\/\/gravityafrica.co.za\/ngistaging\/wp-json\/wp\/v2\/pages\/2087\/revisions"}],"predecessor-version":[{"id":2326,"href":"https:\/\/gravityafrica.co.za\/ngistaging\/wp-json\/wp\/v2\/pages\/2087\/revisions\/2326"}],"wp:attachment":[{"href":"https:\/\/gravityafrica.co.za\/ngistaging\/wp-json\/wp\/v2\/media?parent=2087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}