diff --git a/public/css/panel.css b/public/css/panel.css
index 7128b1c..3d9e488 100644
--- a/public/css/panel.css
+++ b/public/css/panel.css
@@ -335,7 +335,14 @@
.badge-active { background: #c84040; }
/* Unknown / fallback */
-.badge-unknown { background: #606060; }
+.badge-unknown { background: #606060; }
+
+/* Boolean feature badges */
+.badge-api { background: #1e90cc; }
+.badge-invitation-only { background: #b87800; }
+.badge-deprecated { background: #8b3030; }
+.badge-nsfw { background: #9b2b9b; }
+.badge-region { background: #2e7d32; }
/* OPSEC row layout */
.opsec-row {
diff --git a/public/js/arf.js b/public/js/arf.js
index a935de5..e7cd87b 100644
--- a/public/js/arf.js
+++ b/public/js/arf.js
@@ -451,6 +451,30 @@ function openPanel(d) {
var pricingClass = ["free","freemium","paid"].indexOf(pricing) !== -1 ? pricing : "unknown";
badgeHtml += ' ' + escapeHtml(pricing) + '';
+ if (d.data.api === true) {
+ badgeHtml += ' API';
+ }
+ if (d.data.invitationOnly === true) {
+ badgeHtml += ' Invite Only';
+ }
+ if (d.data.deprecated === true) {
+ badgeHtml += ' Deprecated';
+ }
+ if (d.data.nsfw === true) {
+ badgeHtml += ' NSFW';
+ }
+
+ var region = d.data.region;
+ var regionLabel;
+ if (!region || region === "global") {
+ regionLabel = "Global";
+ } else if (Array.isArray(region)) {
+ regionLabel = region.map(function(r) { return r.toUpperCase(); }).join(", ");
+ } else {
+ regionLabel = String(region).toUpperCase();
+ }
+ badgeHtml += ' ' + escapeHtml(regionLabel) + '';
+
badgesEl.innerHTML = badgeHtml;
badgesEl.classList.remove("empty");
}