<style>

.gra2-wrap { font-family: system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif; }

.gra2-badge { display: inline-block; font-size: 0.75rem; padding: 2px 6px; border-radius: 999px; border: 1px solid #d4b106; margin-left: 6px; }

.gra2-table { width: 100%; border-collapse: collapse; }

.gra2-table th, .gra2-table td { padding: 10px 12px; border-bottom: 1px solid #e5e7eb; text-align: left; vertical-align: top; }

.gra2-table th { cursor: pointer; user-select: none; white-space: nowrap; }

.gra2-table tr[data-foundation="yes"] td { background: #fffdf2; } /* subtle highlight */

.gra2-table tr:hover td { background: #fafafa; }

@media (max-width: 640px) {

.gra2-table td, .gra2-table th { padding: 8px 10px; }

}

</style>

<div class="gra2-wrap">

<table class="gra2-table" id="gra2Table">

<thead>

<tr>

<th data-col="0">Country/Region ▾</th>

<th data-col="1">Entity</th>

</tr>

</thead>

<tbody>

<!-- Rows are alphabetized by Country/Region for easy editing -->

<tr data-foundation="yes">

<td>Americas</td><td>National Association of Real Estate Investment Trusts (NAREIT) <span class="gra2-badge">Foundation member</span></td>

</tr>

<tr data-foundation="yes">

<td>Asia Pacific</td><td>Asia Pacific Real Assets Association (APREA) <span class="gra2-badge">Foundation member</span></td>

</tr>

<tr data-foundation="no">

<td>Brazil</td><td>Brazilian REIT Alliance</td>

</tr>

<tr data-foundation="yes">

<td>Canada</td><td>Real Property Association of Canada (REALPAC) <span class="gra2-badge">Foundation member</span></td>

</tr>

<tr data-foundation="no">

<td>Belgium</td><td>Belgium REIT Association</td>

</tr>

<tr data-foundation="no">

<td>China</td><td>China REITs Alliance</td>

</tr>

<tr data-foundation="no">

<td>China</td><td>China REITs Forum (Shanghai REITs Institute)</td>

</tr>

<tr data-foundation="yes">

<td>Europe</td><td>European Public Real Estate Association (EPRA) <span class="gra2-badge">Foundation member</span></td>

</tr>

<tr data-foundation="no">

<td>France</td><td>Fédération des Sociétés Immobilières et Foncières (FSIF)</td>

</tr>

<tr data-foundation="no">

<td>Germany</td><td>German Property Federation (ZIA)</td>

</tr>

<tr data-foundation="no">

<td>India</td><td>India REIT Association</td>

</tr>

<tr data-foundation="no">

<td>Ireland</td><td>Irish Institutional Property</td>

</tr>

<tr data-foundation="no">

<td>Israel</td><td>Israel Real Estate Forum</td>

</tr>

<tr data-foundation="yes">

<td>Japan</td><td>Association of Real Estate Securitisation (ARES) <span class="gra2-badge">Foundation member</span></td>

</tr>

<tr data-foundation="no">

<td>Kenya</td><td>REITs Association of Kenya</td>

</tr>

<tr data-foundation="no">

<td>Mexico</td><td>Mexican Association of Real Estate FIBRAs (AMEFIBRA)</td>

</tr>

<tr data-foundation="no">

<td>Netherlands</td><td>FBI REIT Association (FBI)</td>

</tr>

<tr data-foundation="no">

<td>Poland</td><td>REIT Polska Association</td>

</tr>

<tr data-foundation="no">

<td>Portugal</td><td>Portuguese Association of Real Estate Developers and Investors (APPII)</td>

</tr>

<tr data-foundation="no">

<td>Romania</td><td>Romanian Association of Real Estate Investors</td>

</tr>

<tr data-foundation="no">

<td>South Africa</td><td>South African REIT Association (SAREIT)</td>

</tr>

<tr data-foundation="no">

<td>Sweden</td><td>Fastighetsägarna</td>

</tr>

<tr data-foundation="yes">

<td>United Kingdom</td><td>British Property Federation (BPF) <span class="gra2-badge">Foundation member</span></td>

</tr>

<tr data-foundation="yes">

<td>Australia</td><td>Property Council of Australia <span class="gra2-badge">Foundation member</span></td>

</tr>

</tbody>

</table>

</div>

<script>

(function(){

const table = document.getElementById('gra2Table');

const getText = (cell) => (cell?.textContent || '').trim().toLowerCase();

let sort = { col: 0, dir: 1 }; // start by Country asc

function sortBy(colIdx){

const tbody = table.tBodies[0];

const rows = Array.from(tbody.querySelectorAll('tr'));

if (sort.col === colIdx) { sort.dir *= -1; } else { sort.col = colIdx; sort.dir = 1; }

rows.sort((a,b)=>{

const A = getText(a.children[colIdx]);

const B = getText(b.children[colIdx]);

return A.localeCompare(B) * sort.dir;

});

rows.forEach(r => tbody.appendChild(r));

// header indicators

table.querySelectorAll('th').forEach((th,i)=>{

th.textContent = th.textContent.replace(/[\s▾▴]+$/,'');

if (i === colIdx) th.textContent += sort.dir === 1 ? ' ▾' : ' ▴';

});

}

// attach click handlers

table.querySelectorAll('th').forEach(th => {

th.addEventListener('click', () => sortBy(Number(th.dataset.col)));

});

// initial indicator (already alphabetized in HTML)

table.querySelector('th[data-col="0"]').textContent += ' ▾';

})();

</script>