{% comment %} _includes/ttp-vertical-diagram.html ────────────────────────────────────────────────────────────────────── Renders the interactive vertical TTP overlap filter diagram. Requires page.ttp_data_key to be set (e.g. "ransomware_ttp_overlap"). Data is read from site.data[page.ttp_data_key]. The diagram renders fully in HTML/CSS via Liquid; actor filter interactions are handled client-side by assets/js/ttp-filter.js. {% endcomment %} {% assign ttp_data = site.data[page.ttp_data_key] %} {% if ttp_data %}

Technique cards with actor dots. Orange border = used by all actors. Click actors to filter; a cyan glow marks techniques shared by every selected actor.

{% for group in ttp_data.groups %} {% endfor %}
{% for phase in ttp_data.phases %}
{{ phase.label }}
{% for tech in phase.techniques %} {% assign actor_list = tech.groups | join: "," %} {% assign is_universal = false %} {% if tech.groups.size == ttp_data.groups.size %}{% assign is_universal = true %}{% endif %}
{% for group in ttp_data.groups %} {% assign used = false %} {% if tech.groups contains group.id %}{% assign used = true %}{% endif %} {% endfor %}
{{ tech.name }}
{{ tech.id }}
{% endfor %}
{% unless forloop.last %} {% endunless %} {% endfor %}
{% endif %}