diff --git a/src/browser/tests/element/html/style.html b/src/browser/tests/element/html/style.html
index 040dd729..c5fa9247 100644
--- a/src/browser/tests/element/html/style.html
+++ b/src/browser/tests/element/html/style.html
@@ -19,6 +19,25 @@
lessStyle.type = 'text/less';
document.head.appendChild(lessStyle);
testing.expectEqual(null, lessStyle.sheet);
+
+ // Empty type attribute is valid (defaults to text/css per spec)
+ const emptyType = document.createElement('style');
+ emptyType.setAttribute('type', '');
+ document.head.appendChild(emptyType);
+ testing.expectEqual(true, emptyType.sheet instanceof CSSStyleSheet);
+
+ // Case-insensitive type check
+ const upperType = document.createElement('style');
+ upperType.type = 'TEXT/CSS';
+ document.head.appendChild(upperType);
+ testing.expectEqual(true, upperType.sheet instanceof CSSStyleSheet);
+
+ // Disconnection clears sheet
+ const tempStyle = document.createElement('style');
+ document.head.appendChild(tempStyle);
+ testing.expectEqual(true, tempStyle.sheet instanceof CSSStyleSheet);
+ document.head.removeChild(tempStyle);
+ testing.expectEqual(null, tempStyle.sheet);
}
diff --git a/src/browser/webapi/element/html/Style.zig b/src/browser/webapi/element/html/Style.zig
index c2c532e1..3e489ed8 100644
--- a/src/browser/webapi/element/html/Style.zig
+++ b/src/browser/webapi/element/html/Style.zig
@@ -79,8 +79,17 @@ pub fn setDisabled(self: *Style, disabled: bool, page: *Page) !void {
const CSSStyleSheet = @import("../../css/CSSStyleSheet.zig");
pub fn getSheet(self: *Style, page: *Page) !?*CSSStyleSheet {
// Per spec, sheet is null for disconnected elements or non-CSS types.
- if (!self.asNode().isConnected()) return null;
- if (!std.mem.eql(u8, self.getType(), "text/css")) return null;
+ // Valid types: absent (defaults to "text/css"), empty string, or
+ // case-insensitive match for "text/css".
+ if (!self.asNode().isConnected()) {
+ self._sheet = null;
+ return null;
+ }
+ const t = self.getType();
+ if (t.len != 0 and !std.ascii.eqlIgnoreCase(t, "text/css")) {
+ self._sheet = null;
+ return null;
+ }
if (self._sheet) |sheet| return sheet;
const sheet = try CSSStyleSheet.init(page);