diff --git a/sky/engine/core/css/RuleSet.h b/sky/engine/core/css/RuleSet.h
index e5fd786..077671d 100644
--- a/sky/engine/core/css/RuleSet.h
+++ b/sky/engine/core/css/RuleSet.h
@@ -22,11 +22,10 @@
 #ifndef SKY_ENGINE_CORE_CSS_RULESET_H_
 #define SKY_ENGINE_CORE_CSS_RULESET_H_
 
-#include "sky/engine/core/css/MediaQueryEvaluator.h"
 #include "sky/engine/core/css/RuleFeature.h"
 #include "sky/engine/core/css/StyleRule.h"
 #include "sky/engine/core/css/StyleRuleKeyframes.h"
-#include "sky/engine/core/css/resolver/MediaQueryResult.h"
+#include "sky/engine/platform/heap/Handle.h"
 #include "sky/engine/wtf/Forward.h"
 #include "sky/engine/wtf/HashMap.h"
 #include "sky/engine/wtf/LinkedStack.h"
@@ -85,7 +84,6 @@
     const Vector<RuleData>* hostRules() const { ASSERT(!m_pendingRules); return &m_hostRules; }
     const Vector<RawPtr<StyleRuleFontFace> >& fontFaceRules() const { return m_fontFaceRules; }
     const Vector<RawPtr<StyleRuleKeyframes> >& keyframesRules() const { return m_keyframesRules; }
-    const MediaQueryResultList& viewportDependentMediaQueryResults() const { return m_viewportDependentMediaQueryResults; }
 
     void compactRulesIfNeeded()
     {
@@ -146,8 +144,6 @@
 
     RuleFeatureSet m_features;
 
-    MediaQueryResultList m_viewportDependentMediaQueryResults;
-
     unsigned m_ruleCount;
     OwnPtr<PendingRuleMaps> m_pendingRules;
 
diff --git a/sky/engine/core/css/StyleSheetContents.h b/sky/engine/core/css/StyleSheetContents.h
index 8b03b83..2f6746b 100644
--- a/sky/engine/core/css/StyleSheetContents.h
+++ b/sky/engine/core/css/StyleSheetContents.h
@@ -22,6 +22,7 @@
 #define SKY_ENGINE_CORE_CSS_STYLESHEETCONTENTS_H_
 
 #include "sky/engine/core/css/RuleSet.h"
+#include "sky/engine/core/css/parser/CSSParserMode.h"
 #include "sky/engine/platform/heap/Handle.h"
 #include "sky/engine/platform/weborigin/KURL.h"
 #include "sky/engine/wtf/HashMap.h"
diff --git a/sky/engine/core/css/resolver/StyleResolver.cpp b/sky/engine/core/css/resolver/StyleResolver.cpp
index 0372b34..5d66a3d 100644
--- a/sky/engine/core/css/resolver/StyleResolver.cpp
+++ b/sky/engine/core/css/resolver/StyleResolver.cpp
@@ -142,18 +142,12 @@
         return;
 
     TreeScope& treeScope = ownerNode->treeScope();
-    ScopedStyleResolver& resolver = treeScope.scopedStyleResolver();
-    resolver.addRulesFromSheet(cssSheet);
-
-    RuleSet& ruleSet = cssSheet->contents()->ruleSet();
-
-    const MediaQueryResultList& list = ruleSet.viewportDependentMediaQueryResults();
-    for (size_t i = 0; i < list.size(); ++i)
-        m_viewportDependentMediaQueryResults.append(list[i]);
+    treeScope.scopedStyleResolver().addRulesFromSheet(cssSheet);
 
     // FIXME(BUG 72461): We don't add @font-face rules of scoped style sheets for the moment.
     if (ownerNode->isDocumentNode()) {
         CSSFontSelector* fontSelector = document().styleEngine()->fontSelector();
+        RuleSet& ruleSet = cssSheet->contents()->ruleSet();
         const Vector<RawPtr<StyleRuleFontFace> > fontFaceRules = ruleSet.fontFaceRules();
         for (unsigned i = 0; i < fontFaceRules.size(); ++i) {
             if (RefPtr<FontFace> fontFace = FontFace::create(&document(), fontFaceRules[i]))
diff --git a/sky/engine/core/css/resolver/StyleResolver.h b/sky/engine/core/css/resolver/StyleResolver.h
index 2ebd0b2..bb3f015 100644
--- a/sky/engine/core/css/resolver/StyleResolver.h
+++ b/sky/engine/core/css/resolver/StyleResolver.h
@@ -22,9 +22,11 @@
 #ifndef SKY_ENGINE_CORE_CSS_RESOLVER_STYLERESOLVER_H_
 #define SKY_ENGINE_CORE_CSS_RESOLVER_STYLERESOLVER_H_
 
+#include "sky/engine/core/css/MediaQueryEvaluator.h"
 #include "sky/engine/core/css/RuleSet.h"
 #include "sky/engine/core/css/SelectorChecker.h"
 #include "sky/engine/core/css/resolver/MatchedPropertiesCache.h"
+#include "sky/engine/core/css/resolver/MediaQueryResult.h"
 #include "sky/engine/core/css/resolver/ScopedStyleResolver.h"
 #include "sky/engine/core/css/resolver/StyleBuilder.h"
 #include "sky/engine/core/css/resolver/StyleResourceLoader.h"
