diff --git a/ui/suite/chat/chat.html b/ui/suite/chat/chat.html
index 84acbbc..8a2da6a 100644
--- a/ui/suite/chat/chat.html
+++ b/ui/suite/chat/chat.html
@@ -942,13 +942,23 @@
// Apply theme data from WebSocket events
function getContrastYIQ(hexcolor) {
- if (!hexcolor || typeof hexcolor !== 'string') return '#ffffff';
- hexcolor = hexcolor.replace("#", "");
- if (hexcolor.length === 3) hexcolor = hexcolor.split('').map(function (c) { return c + c; }).join('');
- if (hexcolor.length !== 6) return '#ffffff';
- var r = parseInt(hexcolor.substr(0, 2), 16);
- var g = parseInt(hexcolor.substr(2, 2), 16);
- var b = parseInt(hexcolor.substr(4, 2), 16);
+ if (!hexcolor) return '#ffffff';
+
+ // Handle named colors and variables by letting the browser resolve them
+ var temp = document.createElement("div");
+ temp.style.color = hexcolor;
+ temp.style.display = "none";
+ document.body.appendChild(temp);
+ var style = window.getComputedStyle(temp).color;
+ document.body.removeChild(temp);
+
+ var rgb = style.match(/\d+/g);
+ if (!rgb || rgb.length < 3) return '#ffffff';
+
+ var r = parseInt(rgb[0]);
+ var g = parseInt(rgb[1]);
+ var b = parseInt(rgb[2]);
+
var yiq = ((r * 299) + (g * 587) + (b * 114)) / 1000;
return (yiq >= 128) ? '#000000' : '#ffffff';
}