No associations registered.
';
}
$out .= '';
return $out;
}
// ---------------------------------------------------------------------------
// RENDER — ASSOCIATION LANDING (carousel + form)
// ---------------------------------------------------------------------------
function scn01_render_landing($association_slug, $access) {
$raw = @file_get_contents('addon/vs01/config.json');
$cfg = $raw ? json_decode($raw, true) : [];
$assoc = $cfg['associations'][$association_slug] ?? [];
$name = scn01_h($assoc['name'] ?? $association_slug);
$scenarios = scn01_load_scenarios();
$out = '';
$out .= '';
// Data island — consumed entirely by scn01.js, no PHP logic beyond this.
$out .= '';
// Pinned strip — populated client-side
$out .= '
';
// Carousel — populated client-side
$out .= '
';
$out .= '
← ';
$out .= '
';
$out .= '
→ ';
$out .= '
';
if ($access === 'public') {
$out .= '
';
$out .= 'Scenarios are public. ';
$out .= '
Complete the SASE process ';
$out .= 'to submit your own account for this association.';
$out .= '
';
$out .= '
';
return $out;
}
$form_url = z_root() . '/scn01/' . scn01_h($association_slug);
$out .= '