Import Cobalt 2.10571 2016-09-08
diff --git a/src/base/sys_info_starboard.cc b/src/base/sys_info_starboard.cc
index 30b5f75..552a8ce 100644
--- a/src/base/sys_info_starboard.cc
+++ b/src/base/sys_info_starboard.cc
@@ -37,7 +37,7 @@
 
 // static
 int64 SysInfo::AmountOfPhysicalMemory() {
-  return SbSystemGetTotalMemory();
+  return SbSystemGetTotalCPUMemory();
 }
 
 }  // namespace base
diff --git a/src/cobalt/bindings/testing/dom_string_bindings_test.cc b/src/cobalt/bindings/testing/dom_string_bindings_test.cc
index 06a9595..4e99c1c 100644
--- a/src/cobalt/bindings/testing/dom_string_bindings_test.cc
+++ b/src/cobalt/bindings/testing/dom_string_bindings_test.cc
@@ -45,6 +45,22 @@
   EXPECT_STREQ("mock_value", result.c_str());
 }
 
+TEST_F(DOMStringBindingsTest, SetPropertyWithJapanese) {
+  EXPECT_CALL(test_mock(), set_property(std::string("かわいいです")));
+
+  std::string result;
+  EXPECT_TRUE(EvaluateScript("test.property = \"かわいいです\";", &result));
+  EXPECT_STREQ("かわいいです", result.c_str());
+}
+
+TEST_F(DOMStringBindingsTest, SetPropertyWithChinese) {
+  EXPECT_CALL(test_mock(), set_property(std::string("的")));
+
+  std::string result;
+  EXPECT_TRUE(EvaluateScript("test.property = \"\xe7\x9a\x84\";", &result));
+  EXPECT_STREQ("的", result.c_str());
+}
+
 TEST_F(DOMStringBindingsTest, GetReadOnlyProperty) {
   EXPECT_CALL(test_mock(), read_only_property()).WillOnce(Return("mock_value"));
 
@@ -53,6 +69,14 @@
   EXPECT_STREQ("mock_value", result.c_str());
 }
 
+TEST_F(DOMStringBindingsTest, GetReadOnlyPropertyWithKorean) {
+  EXPECT_CALL(test_mock(), read_only_property()).WillOnce(Return("대박"));
+
+  std::string result;
+  EXPECT_TRUE(EvaluateScript("test.readOnlyProperty;", &result));
+  EXPECT_STREQ("대박", result.c_str());
+}
+
 TEST_F(DOMStringBindingsTest, SetReadOnlyProperty) {
   // Script executes with no error, but interface is not called.
   EXPECT_TRUE(EvaluateScript("test.readOnlyProperty = \"foo\";", NULL));
diff --git a/src/cobalt/bindings/testing/object_type_bindings_test.cc b/src/cobalt/bindings/testing/object_type_bindings_test.cc
index 3747719..7c5cbf0 100644
--- a/src/cobalt/bindings/testing/object_type_bindings_test.cc
+++ b/src/cobalt/bindings/testing/object_type_bindings_test.cc
@@ -257,6 +257,12 @@
   EXPECT_THAT(result.c_str(), StartsWith("TypeError:"));
 }
 
+TEST_F(UserObjectBindingsTest, SetUndefinedObject) {
+  std::string result;
+  EXPECT_FALSE(EvaluateScript("test.arbitraryObject = undefined;", &result));
+  EXPECT_THAT(result.c_str(), StartsWith("TypeError:"));
+}
+
 TEST_F(UserObjectBindingsTest, SetWrongObjectType) {
   std::string result;
   EXPECT_FALSE(EvaluateScript("test.arbitraryObject = new Object()", &result));
diff --git a/src/cobalt/bindings/testing/stack_trace_test.cc b/src/cobalt/bindings/testing/stack_trace_test.cc
index 34c4629..b8c1304 100644
--- a/src/cobalt/bindings/testing/stack_trace_test.cc
+++ b/src/cobalt/bindings/testing/stack_trace_test.cc
@@ -66,6 +66,22 @@
   EXPECT_TRUE(position != std::string::npos);
 }
 
+TEST_F(StackTraceTest, UnnamedFunction) {
+  std::string result;
+
+  // There should be a stack entry for the anonymous function.
+  std::string script =
+      "function foo(fun) {\n"
+      "  return fun();\n"
+      "}\n"
+      "foo(function() { return getStackTrace();})";
+  EXPECT_TRUE(EvaluateScript(script, &result));
+
+  std::string match_line = "[object BindingsTestBase]:4";
+  size_t position = result.find(match_line);
+  EXPECT_TRUE(position != std::string::npos);
+}
+
 #if defined(ENGINE_SUPPORTS_STACK_TRACE_COLUMNS)
 // Test for column numbers in stack trace. Behavior varies somewhat
 // across engines & versions so, don't check actual column values.
diff --git a/src/cobalt/browser/application.cc b/src/cobalt/browser/application.cc
index 4327e96..ff3ddef 100644
--- a/src/cobalt/browser/application.cc
+++ b/src/cobalt/browser/application.cc
@@ -53,9 +53,6 @@
 namespace browser {
 
 namespace {
-const int kDefaultViewportWidth = 1920;
-const int kDefaultViewportHeight = 1080;
-
 const int kStatUpdatePeriodMs = 1000;
 
 const char kDefaultURL[] = "https://www.youtube.com/tv";
@@ -318,8 +315,6 @@
   // The main web module's stat tracker tracks event stats.
   options.web_module_options.track_event_stats = true;
 
-  math::Size viewport_size(kDefaultViewportWidth, kDefaultViewportHeight);
-
 #if defined(ENABLE_DEBUG_COMMAND_LINE_SWITCHES)
   if (command_line->HasSwitch(browser::switches::kProxy)) {
     options.network_module_options.custom_proxy =
@@ -352,6 +347,10 @@
 
   EnableUsingStubImageDecoderIfRequired();
 
+  if (command_line->HasSwitch(browser::switches::kDisableWebmVp9)) {
+    DLOG(INFO) << "Webm/Vp9 disabled";
+    options.media_module_options.disable_webm_vp9 = true;
+  }
   if (command_line->HasSwitch(switches::kAudioDecoderStub)) {
     DLOG(INFO) << "Use ShellRawAudioDecoderStub";
     options.media_module_options.use_audio_decoder_stub = true;
@@ -366,40 +365,34 @@
   }
 #endif  // ENABLE_DEBUG_COMMAND_LINE_SWITCHES
 
+  base::optional<math::Size> viewport_size;
   if (command_line->HasSwitch(browser::switches::kViewport)) {
     const std::string switchValue =
         command_line->GetSwitchValueASCII(browser::switches::kViewport);
     std::vector<std::string> lengths;
     base::SplitString(switchValue, 'x', &lengths);
     if (lengths.size() >= 1) {
-      int width;
-      if (!base::StringToInt(lengths[0], &width) || width < 1) {
-        DLOG(ERROR) << "Invalid value specified for viewport width: "
-                    << switchValue
-                    << ". Using default viewport: " << viewport_size.width()
-                    << "x" << viewport_size.height();
-      } else {
-        viewport_size.set_width(width);
-        if (lengths.size() >= 2) {
-          int height;
-          if (!base::StringToInt(lengths[1], &height) || height < 1) {
-            DLOG(ERROR) << "Invalid value specified for viewport height: "
-                        << switchValue << ". Using default viewport height: "
-                        << viewport_size.width() << "x"
-                        << viewport_size.height();
-          } else {
-            viewport_size.set_height(height);
-          }
-        } else {
+      int width = -1;
+      if (base::StringToInt(lengths[0], &width) && width >= 1) {
+        int height = -1;
+        if (lengths.size() < 2) {
           // Allow shorthand specification of the viewport by only giving the
           // width. This calculates the height at 4:3 aspect ratio for smaller
           // viewport widths, and 16:9 for viewports 1280 pixels wide or larger.
-          if (viewport_size.width() >= 1280) {
-            viewport_size.set_height(9 * viewport_size.width() / 16);
+          if (width >= 1280) {
+            viewport_size.emplace(width, 9 * width / 16);
           } else {
-            viewport_size.set_height(3 * viewport_size.width() / 4);
+            viewport_size.emplace(width, 3 * width / 4);
           }
+        } else if (base::StringToInt(lengths[1], &height) && height >= 1) {
+          viewport_size.emplace(width, height);
+        } else {
+          DLOG(ERROR) << "Invalid value specified for viewport height: "
+                      << switchValue << ". Using default viewport size.";
         }
+      } else {
+        DLOG(ERROR) << "Invalid value specified for viewport width: "
+                    << switchValue << ". Using default viewport size.";
       }
     }
   }
@@ -558,9 +551,9 @@
 Application::CValStats::CValStats()
     : free_memory("Memory.CPU.Free", 0,
                   "Total free application memory remaining."),
-#if !defined(__LB_SHELL__FOR_RELEASE__)
       used_memory("Memory.CPU.Used", 0,
                   "Total memory allocated via the app's allocators."),
+#if !defined(__LB_SHELL__FOR_RELEASE__)
       exe_memory("Memory.CPU.Exe", 0,
                  "Total memory occupied by the size of the executable."),
 #endif
@@ -634,9 +627,14 @@
   if (!memory_stats_updated) {
     available_memory_ = lb_get_unallocated_memory();
     c_val_stats_.free_memory = static_cast<size_t>(available_memory_);
+    c_val_stats_.used_memory =
+        lb_get_total_system_memory() - lb_get_unallocated_memory();
   }
 #elif defined(OS_STARBOARD)
-// TODO: Need to expose memory tracking through starboard.
+  int64_t used_memory = SbSystemGetUsedCPUMemory();
+  available_memory_ = SbSystemGetTotalCPUMemory() - used_memory;
+  c_val_stats_.free_memory = available_memory_;
+  c_val_stats_.used_memory = used_memory;
 #endif
 
   lifetime_in_ms_ = (base::TimeTicks::Now() - start_time_).InMilliseconds();
diff --git a/src/cobalt/browser/application.h b/src/cobalt/browser/application.h
index 4ed944a..870e87f 100644
--- a/src/cobalt/browser/application.h
+++ b/src/cobalt/browser/application.h
@@ -128,8 +128,8 @@
     CValStats();
 
     base::CVal<size_t, base::CValPublic> free_memory;
-#if !defined(__LB_SHELL__FOR_RELEASE__)
     base::CVal<size_t, base::CValPublic> used_memory;
+#if !defined(__LB_SHELL__FOR_RELEASE__)
     base::CVal<size_t, base::CValPublic> exe_memory;
 #endif
 
diff --git a/src/cobalt/browser/browser_module.cc b/src/cobalt/browser/browser_module.cc
index 668f3c7..9dfbf01 100644
--- a/src/cobalt/browser/browser_module.cc
+++ b/src/cobalt/browser/browser_module.cc
@@ -174,7 +174,7 @@
   debug_console_.reset(new DebugConsole(
       base::Bind(&BrowserModule::OnDebugConsoleRenderTreeProduced,
                  base::Unretained(this)),
-      media_module_.get(), &network_module_, system_window->window_size(),
+      media_module_.get(), &network_module_, system_window->GetWindowSize(),
       renderer_module_.pipeline()->GetResourceProvider(),
       kLayoutMaxRefreshFrequencyInHz,
       base::Bind(&BrowserModule::GetDebugServer, base::Unretained(this))));
@@ -285,6 +285,14 @@
 void BrowserModule::OnRenderTreeProduced(
     const browser::WebModule::LayoutResults& layout_results) {
   TRACE_EVENT0("cobalt::browser", "BrowserModule::OnRenderTreeProduced()");
+  if (MessageLoop::current() != self_message_loop_) {
+    self_message_loop_->PostTask(
+        FROM_HERE,
+        base::Bind(&BrowserModule::OnRenderTreeProduced, weak_this_,
+                   layout_results));
+    return;
+  }
+
   renderer::Submission renderer_submission(layout_results.render_tree,
                                            layout_results.layout_time);
 #if defined(OS_STARBOARD)
@@ -323,6 +331,14 @@
     const browser::WebModule::LayoutResults& layout_results) {
   TRACE_EVENT0("cobalt::browser",
                "BrowserModule::OnDebugConsoleRenderTreeProduced()");
+  if (MessageLoop::current() != self_message_loop_) {
+    self_message_loop_->PostTask(
+        FROM_HERE,
+        base::Bind(&BrowserModule::OnDebugConsoleRenderTreeProduced, weak_this_,
+                   layout_results));
+    return;
+  }
+
   render_tree_combiner_.UpdateDebugConsoleRenderTree(renderer::Submission(
       layout_results.render_tree, layout_results.layout_time));
 }
diff --git a/src/cobalt/browser/debug_console/debug_console.css b/src/cobalt/browser/debug_console/debug_console.css
index 41d695a..afac884 100644
--- a/src/cobalt/browser/debug_console/debug_console.css
+++ b/src/cobalt/browser/debug_console/debug_console.css
@@ -1,3 +1,7 @@
+body {
+  font-size: 1.4815vh;  /* Corresponds to 16px at 1080p. */
+}
+
 #hudFrame {
   position: absolute;
   top: 85%;
@@ -10,16 +14,16 @@
 
 #hud {
   position: absolute;
-  top: 10px;
-  left: 10px;
-  bottom: 10px;
-  right: 10px;
+  top: 0.625em;
+  left: 0.625em;
+  bottom: 0.625em;
+  right: 0.625em;
   background-color: rgba(0, 0, 0, 0.6);
   color: #FFFFFF;
-  border: 1px;
+  border: 0.0625em;
   border-color: #606060;
   border-style: solid;
-  padding: 10px;
+  padding: 0.625em;
 }
 
 #consoleFrame {
@@ -35,37 +39,37 @@
 
 #messageContainerFrame {
   position: absolute;
-  top: 10px;
-  left: 10px;
-  bottom: 40px;
-  right: 10px;
+  top: 0.625em;
+  left: 0.625em;
+  bottom: 2.5em;
+  right: 0.625em;
   background-color: rgba(0, 0, 0, 0.6);
   color: #FFFFFF;
   overflow: hidden;
-  border: 1px;
+  border: 0.0625em;
   border-color: #606060;
   border-style: solid;
-  padding: 10px;
+  padding: 0.625em;
 }
 
 #messageContainer {
   position: absolute;
-  bottom: 10px;
+  bottom: 0.625em;
   font-family: monospace;
 }
 
 #in {
   position: absolute;
-  left: 10px;
+  left: 0.625em;
   bottom: 0;
-  right: 10px;
-  height: 20px;
+  right: 0.625em;
+  height: 1.25em;
   background-color: rgba(0, 0, 0, 0.6);
   color: #FFFFFF;
   white-space: pre;
   font-family: monospace;
-  border: 1px;
+  border: 0.0625em;
   border-color: #606060;
   border-style: solid;
-  padding: 10px;
+  padding: 0.625em;
 }
diff --git a/src/cobalt/browser/switches.cc b/src/cobalt/browser/switches.cc
index d9d0abf..7ebcce6 100644
--- a/src/cobalt/browser/switches.cc
+++ b/src/cobalt/browser/switches.cc
@@ -36,6 +36,9 @@
 // Switches different debug console modes: on | hud | off
 const char kDebugConsoleMode[] = "debug_console";
 
+// Disable webm/vp9.
+const char kDisableWebmVp9[] = "disable_webm_vp9";
+
 // Create WebDriver server.
 const char kEnableWebDriver[] = "enable_webdriver";
 
diff --git a/src/cobalt/browser/switches.h b/src/cobalt/browser/switches.h
index 75dc57d..025841b 100644
--- a/src/cobalt/browser/switches.h
+++ b/src/cobalt/browser/switches.h
@@ -26,6 +26,7 @@
 extern const char kAudioDecoderStub[];
 extern const char kCspMode[];
 extern const char kDebugConsoleMode[];
+extern const char kDisableWebmVp9[];
 extern const char kEnableWebDriver[];
 extern const char kExtraWebFileDir[];
 extern const char kIgnoreCertificateErrors[];
diff --git a/src/cobalt/browser/web_module.cc b/src/cobalt/browser/web_module.cc
index 307b437..073f8b7 100644
--- a/src/cobalt/browser/web_module.cc
+++ b/src/cobalt/browser/web_module.cc
@@ -84,6 +84,10 @@
                          const base::SourceLocation& script_location,
                          base::WaitableEvent* got_result, std::string* result);
 
+  // Clears disables timer related objects
+  // so that the message loop can easily exit
+  void ClearAllIntervalsAndTimeouts();
+
 #if defined(ENABLE_PARTIAL_LAYOUT_CONTROL)
   void OnPartialLayoutConsoleCommandReceived(const std::string& message);
 #endif  // defined(ENABLE_PARTIAL_LAYOUT_CONTROL)
@@ -288,8 +292,9 @@
       data.window_dimensions.width(), data.window_dimensions.height(),
       css_parser_.get(), dom_parser_.get(), fetcher_factory_.get(),
       data.resource_provider, image_cache_.get(), remote_typeface_cache_.get(),
-      local_storage_database_.get(), data.media_module, execution_state_.get(),
-      script_runner_.get(), media_source_registry_.get(),
+      local_storage_database_.get(), data.media_module, data.media_module,
+      execution_state_.get(), script_runner_.get(),
+      media_source_registry_.get(),
       web_module_stat_tracker_->dom_stat_tracker(), data.initial_url,
       data.network_module->GetUserAgent(),
       data.network_module->preferred_language(),
@@ -415,6 +420,12 @@
   got_result->Signal();
 }
 
+void WebModule::Impl::ClearAllIntervalsAndTimeouts() {
+  DCHECK(thread_checker_.CalledOnValidThread());
+  DCHECK(window_);
+  window_->DestroyTimers();
+}
+
 void WebModule::Impl::OnRenderTreeProduced(
     const LayoutResults& layout_results) {
   // Notify the stat tracker that a render tree has been produced. This signals
@@ -608,6 +619,9 @@
                             base::Unretained(&did_register_shutdown_observer)));
   did_register_shutdown_observer.Wait();
 
+  // This will cancel the timers for tasks, which help the thread exit
+  ClearAllIntervalsAndTimeouts();
+
   // Stop the thread. This will cause the destruction observer to be notified.
   thread_.Stop();
 }
@@ -645,6 +659,18 @@
   return result;
 }
 
+void WebModule::ClearAllIntervalsAndTimeouts() {
+  TRACE_EVENT0("cobalt::browser", "WebModule::ClearAllIntervalsAndTimeouts()");
+  DCHECK(message_loop());
+  DCHECK(impl_);
+
+  if (impl_) {
+    message_loop()->PostTask(
+        FROM_HERE, base::Bind(&WebModule::Impl::ClearAllIntervalsAndTimeouts,
+                              base::Unretained(impl_.get())));
+  }
+}
+
 #if defined(ENABLE_PARTIAL_LAYOUT_CONTROL)
 void WebModule::OnPartialLayoutConsoleCommandReceived(
     const std::string& message) {
diff --git a/src/cobalt/browser/web_module.h b/src/cobalt/browser/web_module.h
index 826df99..3aeb2e2 100644
--- a/src/cobalt/browser/web_module.h
+++ b/src/cobalt/browser/web_module.h
@@ -225,6 +225,8 @@
   // perform any other initialization required on the dedicated thread.
   void Initialize(const ConstructionData& data);
 
+  void ClearAllIntervalsAndTimeouts();
+
 #if defined(ENABLE_PARTIAL_LAYOUT_CONTROL)
   void OnPartialLayoutConsoleCommandReceived(const std::string& message);
 #endif  // defined(ENABLE_PARTIAL_LAYOUT_CONTROL)
diff --git a/src/cobalt/build/all.gyp b/src/cobalt/build/all.gyp
index b822bbc..8352629 100644
--- a/src/cobalt/build/all.gyp
+++ b/src/cobalt/build/all.gyp
@@ -87,43 +87,7 @@
           'target_name': 'in_progress_targets',
           'type': 'none',
           'dependencies': [
-            '<(DEPTH)/base/base.gyp:base_unittests',
-            '<(DEPTH)/cobalt/audio/audio.gyp:*',
-            '<(DEPTH)/cobalt/base/base.gyp:*',
-            '<(DEPTH)/cobalt/bindings/testing/testing.gyp:*',
-            '<(DEPTH)/cobalt/browser/browser.gyp:*',
-            '<(DEPTH)/cobalt/browser/cobalt.gyp:*',
-            '<(DEPTH)/cobalt/csp/csp.gyp:*',
-            '<(DEPTH)/cobalt/css_parser/css_parser.gyp:*',
-            '<(DEPTH)/cobalt/cssom/cssom.gyp:*',
-            '<(DEPTH)/cobalt/cssom/cssom_test.gyp:*',
-            '<(DEPTH)/cobalt/debug/debug.gyp:*',
-            '<(DEPTH)/cobalt/dom/dom.gyp:*',
-            '<(DEPTH)/cobalt/dom/dom_test.gyp:*',
-            '<(DEPTH)/cobalt/dom_parser/dom_parser.gyp:*',
-            '<(DEPTH)/cobalt/h5vcc/h5vcc.gyp:*',
-            '<(DEPTH)/cobalt/input/input.gyp:*',
-            '<(DEPTH)/cobalt/layout/layout.gyp:*',
-            '<(DEPTH)/cobalt/layout_tests/layout_tests.gyp:*',
-            '<(DEPTH)/cobalt/loader/image/sandbox/sandbox.gyp:*',
-            '<(DEPTH)/cobalt/loader/loader.gyp:*',
-            '<(DEPTH)/cobalt/math/math.gyp:*',
-            '<(DEPTH)/cobalt/media/sandbox/sandbox.gyp:*',
-            '<(DEPTH)/cobalt/network/network.gyp:*',
-            '<(DEPTH)/cobalt/render_tree/render_tree.gyp:*',
-            '<(DEPTH)/cobalt/renderer/renderer.gyp:*',
-            '<(DEPTH)/cobalt/renderer/sandbox/sandbox.gyp:*',
-            '<(DEPTH)/cobalt/samples/samples.gyp:*',
-            '<(DEPTH)/cobalt/script/script.gyp:*',
-            '<(DEPTH)/cobalt/speech/speech.gyp:*',
-            '<(DEPTH)/cobalt/storage/storage.gyp:*',
-            '<(DEPTH)/cobalt/trace_event/trace_event.gyp:*',
-            '<(DEPTH)/cobalt/web_animations/web_animations.gyp:*',
-            '<(DEPTH)/cobalt/webdriver/webdriver.gyp:*',
-            '<(DEPTH)/cobalt/xhr/xhr.gyp:*',
-            '<(DEPTH)/crypto/crypto.gyp:crypto_unittests',
-            '<(DEPTH)/sql/sql.gyp:sql_unittests',
-            '<(DEPTH)/starboard/nplb/nplb.gyp:nplb',
+            '<(DEPTH)/cobalt/browser/cobalt.gyp:cobalt',
           ],
         },
       ],
diff --git a/src/cobalt/build/build.id b/src/cobalt/build/build.id
index d57c218..2eed42f 100644
--- a/src/cobalt/build/build.id
+++ b/src/cobalt/build/build.id
@@ -1 +1 @@
-10373
\ No newline at end of file
+10571
\ No newline at end of file
diff --git a/src/cobalt/css_parser/background_shorthand_property_parse_structures.h b/src/cobalt/css_parser/background_shorthand_property_parse_structures.h
index 8ab19ba..5c66272 100644
--- a/src/cobalt/css_parser/background_shorthand_property_parse_structures.h
+++ b/src/cobalt/css_parser/background_shorthand_property_parse_structures.h
@@ -27,12 +27,15 @@
 // This helps parsing and verifying syntax of background shorthand property
 // values.
 struct BackgroundShorthandLayer {
+  BackgroundShorthandLayer() : error(false) {}
+
   bool IsBackgroundPropertyOverlapped(
       const BackgroundShorthandLayer& that) const;
   void IntegrateNonOverlapped(const BackgroundShorthandLayer& that);
 
   void ReplaceNullWithInitialValues();
 
+  bool error;
   scoped_refptr<cssom::PropertyValue> background_color;
   scoped_refptr<cssom::PropertyValue> background_image;
   scoped_refptr<cssom::PropertyValue> background_position;
diff --git a/src/cobalt/css_parser/border_shorthand_property_parse_structures.h b/src/cobalt/css_parser/border_shorthand_property_parse_structures.h
index 7a7cb67..c30b75c 100644
--- a/src/cobalt/css_parser/border_shorthand_property_parse_structures.h
+++ b/src/cobalt/css_parser/border_shorthand_property_parse_structures.h
@@ -25,6 +25,9 @@
 
 // This helps parsing and verifying syntax of border shorthand property values.
 struct BorderShorthand {
+  BorderShorthand() : error(false) {}
+
+  bool error;
   scoped_refptr<cssom::PropertyValue> border_color;
   scoped_refptr<cssom::PropertyValue> border_style;
   scoped_refptr<cssom::PropertyValue> border_width;
diff --git a/src/cobalt/css_parser/grammar.y b/src/cobalt/css_parser/grammar.y
index 09e7f2d..34a7143 100644
--- a/src/cobalt/css_parser/grammar.y
+++ b/src/cobalt/css_parser/grammar.y
@@ -955,8 +955,7 @@
     $$ = AddRef(new cssom::MediaFeature($1, $4));
   }
   | kZeroOrOneMediaFeatureTypeToken maybe_whitespace colon zero_or_one {
-    $$ = AddRef(new cssom::MediaFeature($1,
-                                        AddRef(new cssom::NumberValue($4))));
+    $$ = AddRef(new cssom::MediaFeature($1, new cssom::IntegerValue($4)));
   }
   ;
 
@@ -967,8 +966,7 @@
   }
   | kNonNegativeIntegerMediaFeatureTypeToken maybe_whitespace colon
     non_negative_integer {
-    $$ = AddRef(new cssom::MediaFeature($1,
-                                        AddRef(new cssom::NumberValue($4))));
+    $$ = AddRef(new cssom::MediaFeature($1, new cssom::IntegerValue($4)));
   }
   | kRatioMediaFeatureTypeToken maybe_whitespace colon ratio {
     $$ = AddRef(new cssom::MediaFeature($1, MakeScopedRefPtrAndRelease($4)));
@@ -2246,7 +2244,7 @@
 
 positive_length:
   length {
-    scoped_refptr<cssom::LengthValue> length = MakeScopedRefPtrAndRelease($1);
+    scoped_refptr<cssom::LengthValue> length(MakeScopedRefPtrAndRelease($1));
     if (length && length->value() < 0) {
       parser_impl->LogError(@1, "negative values of length are illegal");
       YYERROR;
@@ -2489,25 +2487,28 @@
 
 background_property_element:
     color {
+    scoped_refptr<cssom::PropertyValue> color(MakeScopedRefPtrAndRelease($1));
     if (!$<background_shorthand_layer>0->background_color) {
-      $<background_shorthand_layer>0->background_color =
-          MakeScopedRefPtrAndRelease($1);
+      $<background_shorthand_layer>0->background_color = color;
     } else {
       parser_impl->LogError(
           @1, "background-color value declared twice in background.");
+      $<background_shorthand_layer>0->error = true;
     }
   }
   | background_image_property_list_element {
+    scoped_refptr<cssom::PropertyValue> image(MakeScopedRefPtrAndRelease($1));
     if (!$<background_shorthand_layer>0->background_image) {
       scoped_ptr<cssom::PropertyListValue::Builder>
           background_image_builder(new cssom::PropertyListValue::Builder());
       background_image_builder->reserve(1);
-      background_image_builder->push_back(MakeScopedRefPtrAndRelease($1));
+      background_image_builder->push_back(image);
       $<background_shorthand_layer>0->background_image =
           new cssom::PropertyListValue(background_image_builder.Pass());
     } else {
       parser_impl->LogError(
           @1, "background-image value declared twice in background.");
+      $<background_shorthand_layer>0->error = true;
     }
   }
   ;
@@ -2600,7 +2601,8 @@
       parser_impl->LogError(
           @1, "background-position or background-repeat declared twice in "
               "background.");
-      $$ = NULL;
+      $$ = new BackgroundShorthandLayer();
+      $$->error = true;
     }
   }
   | final_background_layer background_property_element {
@@ -2988,7 +2990,7 @@
   | position_list
     position_list_element {
     scoped_ptr<PositionParseStructure> position_info($1);
-    scoped_refptr<cssom::PropertyValue> element = MakeScopedRefPtrAndRelease($2);
+    scoped_refptr<cssom::PropertyValue> element(MakeScopedRefPtrAndRelease($2));
     if (position_info &&
         !position_info->PushBackElement(element)) {
       parser_impl->LogWarning(@2, "invalid background position value");
@@ -3267,27 +3269,35 @@
 // different values on the four borders.
 border_property_element:
     color {
+    scoped_refptr<cssom::PropertyValue> color(MakeScopedRefPtrAndRelease($1));
     if (!$<border_shorthand>0->border_color) {
-      $<border_shorthand>0->border_color = MakeScopedRefPtrAndRelease($1);
+      $<border_shorthand>0->border_color = color;
     } else {
       parser_impl->LogError(
           @1, "border-color value declared twice in border.");
+      $<border_shorthand>0->error = true;
     }
   }
   | line_style {
+    scoped_refptr<cssom::PropertyValue> line_style =
+        MakeScopedRefPtrAndRelease($1);
     if (!$<border_shorthand>0->border_style) {
-      $<border_shorthand>0->border_style = MakeScopedRefPtrAndRelease($1);
+      $<border_shorthand>0->border_style = line_style;
     } else {
       parser_impl->LogError(
           @1, "border-style value declared twice in border.");
+      $<border_shorthand>0->error = true;
     }
   }
   | positive_length {
+    scoped_refptr<cssom::PropertyValue> positive_length =
+        MakeScopedRefPtrAndRelease($1);
     if (!$<border_shorthand>0->border_width) {
-      $<border_shorthand>0->border_width = MakeScopedRefPtrAndRelease($1);
+      $<border_shorthand>0->border_width = positive_length;
     } else {
       parser_impl->LogError(
           @1, "border-width value declared twice in border.");
+      $<border_shorthand>0->error = true;
     }
   }
   ;
@@ -3335,7 +3345,7 @@
       // Negative values are not allowed for blur radius.
       if (length && length->value() < 0) {
         parser_impl->LogError(@1, "negative values of blur radius are illegal");
-        YYERROR;
+        $<shadow_info>0->error = true;
       }
       $<shadow_info>0->length_vector.push_back(length);
     } else {
@@ -3344,19 +3354,20 @@
     }
   }
   | color {
+    scoped_refptr<cssom::RGBAColorValue> color(MakeScopedRefPtrAndRelease($1));
     if (!$<shadow_info>0->color) {
-      $<shadow_info>0->color = MakeScopedRefPtrAndRelease($1);
+      $<shadow_info>0->color = color;
     } else {
-      parser_impl->LogError(
-          @1, "color value declared twice in box shadow.");
+      parser_impl->LogError(@1, "color value declared twice in box shadow.");
+      $<shadow_info>0->error = true;
     }
   }
   | kInsetToken maybe_whitespace {
     if (!$<shadow_info>0->has_inset) {
       $<shadow_info>0->has_inset = true;
     } else {
-      parser_impl->LogError(
-          @1, "inset value declared twice in box shadow.");
+      parser_impl->LogError(@1, "inset value declared twice in box shadow.");
+      $<shadow_info>0->error = true;
     }
   }
   ;
@@ -3386,14 +3397,14 @@
 
 comma_separated_box_shadow_list:
     validated_box_shadow_list {
-    $$ = new cssom::PropertyListValue::Builder();
     if ($1) {
+      $$ = new cssom::PropertyListValue::Builder();
       $$->push_back(MakeScopedRefPtrAndRelease($1));
     }
   }
   | comma_separated_box_shadow_list comma validated_box_shadow_list {
     $$ = $1;
-    if ($3) {
+    if ($$ && $3) {
       $$->push_back(MakeScopedRefPtrAndRelease($3));
     }
   }
@@ -3404,8 +3415,10 @@
 //   https://www.w3.org/TR/css3-background/#box-shadow
 box_shadow_property_value:
     comma_separated_box_shadow_list {
-    scoped_ptr<cssom::PropertyListValue::Builder> property_value($1);
-    $$ = AddRef(new cssom::PropertyListValue(property_value.Pass()));
+    if ($1) {
+      scoped_ptr<cssom::PropertyListValue::Builder> property_value($1);
+      $$ = AddRef(new cssom::PropertyListValue(property_value.Pass()));
+    }
   }
   | kNoneToken maybe_whitespace {
     $$ = AddRef(cssom::KeywordValue::GetNone().get());
@@ -3892,7 +3905,7 @@
 margin_property_value:
     // If there is only one component value, it applies to all sides.
     margin_width {
-    scoped_refptr<cssom::PropertyValue> width = MakeScopedRefPtrAndRelease($1);
+    scoped_refptr<cssom::PropertyValue> width(MakeScopedRefPtrAndRelease($1));
     $$ = MarginOrPaddingShorthand::TryCreate(
         width, width, width, width).release();
   }
@@ -4155,7 +4168,7 @@
       // Negative values are not allowed for blur radius.
       if (length && length->value() < 0) {
         parser_impl->LogError(@1, "negative values of blur radius are illegal");
-        YYERROR;
+        $<shadow_info>0->error = true;
       }
       $<shadow_info>0->length_vector.push_back(length);
     } else {
@@ -4164,11 +4177,13 @@
     }
   }
   | color {
+    scoped_refptr<cssom::RGBAColorValue> color(MakeScopedRefPtrAndRelease($1));
     if (!$<shadow_info>0->color) {
-      $<shadow_info>0->color = MakeScopedRefPtrAndRelease($1);
+      $<shadow_info>0->color = color;
     } else {
       parser_impl->LogError(
-          @1, "color value declared twice in box shadow.");
+          @1, "color value declared twice in text shadow.");
+      $<shadow_info>0->error = true;
     }
   }
   ;
@@ -4198,14 +4213,14 @@
 
 comma_separated_text_shadow_list:
     validated_text_shadow_list {
-    $$ = new cssom::PropertyListValue::Builder();
     if ($1) {
+      $$ = new cssom::PropertyListValue::Builder();
       $$->push_back(MakeScopedRefPtrAndRelease($1));
     }
   }
   | comma_separated_text_shadow_list comma validated_text_shadow_list {
     $$ = $1;
-    if ($3) {
+    if ($$ && $3) {
       $$->push_back(MakeScopedRefPtrAndRelease($3));
     }
   }
@@ -4216,8 +4231,10 @@
 //   https://www.w3.org/TR/css-text-decor-3/#text-shadow-property
 text_shadow_property_value:
     comma_separated_text_shadow_list {
-    scoped_ptr<cssom::PropertyListValue::Builder> property_value($1);
-    $$ = AddRef(new cssom::PropertyListValue(property_value.Pass()));
+    if ($1) {
+      scoped_ptr<cssom::PropertyListValue::Builder> property_value($1);
+      $$ = AddRef(new cssom::PropertyListValue(property_value.Pass()));
+    }
   }
   | kNoneToken maybe_whitespace {
     $$ = AddRef(cssom::KeywordValue::GetNone().get());
@@ -5072,19 +5089,26 @@
 
     scoped_ptr<TransitionShorthand> transition(new TransitionShorthand());
 
-    if (property_list_builder.size() == 1 &&
-        property_list_builder[0] == cssom::kNoneProperty) {
+    if (property_list_builder.empty() ||
+        (property_list_builder.size() == 1 &&
+         property_list_builder[0] == cssom::kNoneProperty)) {
       transition->property_list = cssom::KeywordValue::GetNone();
     } else {
       transition->property_list = new cssom::PropertyKeyListValue(
           transition_builder->property_list_builder.Pass());
     }
-    transition->duration_list = new cssom::TimeListValue(
-        transition_builder->duration_list_builder.Pass());
-    transition->timing_function_list = new cssom::TimingFunctionListValue(
-        transition_builder->timing_function_list_builder.Pass());
-    transition->delay_list = new cssom::TimeListValue(
-        transition_builder->delay_list_builder.Pass());
+    if (!transition_builder->duration_list_builder->empty()) {
+      transition->duration_list = new cssom::TimeListValue(
+          transition_builder->duration_list_builder.Pass());
+    }
+    if (!transition_builder->timing_function_list_builder->empty()) {
+      transition->timing_function_list = new cssom::TimingFunctionListValue(
+          transition_builder->timing_function_list_builder.Pass());
+    }
+    if (!transition_builder->delay_list_builder->empty()) {
+      transition->delay_list = new cssom::TimeListValue(
+          transition_builder->delay_list_builder.Pass());
+    }
 
     $$ = transition.release();
   }
@@ -5306,7 +5330,7 @@
   | kBackgroundToken maybe_whitespace colon background_property_value
       maybe_important {
     scoped_ptr<BackgroundShorthandLayer> background($4);
-    if (background) {
+    if (background && !background->error) {
       background->ReplaceNullWithInitialValues();
       scoped_ptr<PropertyDeclaration> property_declaration(
           new PropertyDeclaration($5));
@@ -5372,74 +5396,82 @@
       maybe_important {
     scoped_ptr<BorderShorthand> border($4);
     DCHECK(border);
+    if (!border->error) {
+      scoped_ptr<PropertyDeclaration> property_declaration(
+          new PropertyDeclaration($5));
 
-    scoped_ptr<PropertyDeclaration> property_declaration(
-        new PropertyDeclaration($5));
+      // Unpack border color.
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderTopColorProperty, border->border_color));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderRightColorProperty, border->border_color));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderBottomColorProperty, border->border_color));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderLeftColorProperty, border->border_color));
 
-    // Unpack border color.
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderTopColorProperty, border->border_color));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderRightColorProperty, border->border_color));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderBottomColorProperty, border->border_color));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderLeftColorProperty, border->border_color));
+      // Unpack border style.
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderTopStyleProperty, border->border_style));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderRightStyleProperty, border->border_style));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderBottomStyleProperty, border->border_style));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderLeftStyleProperty, border->border_style));
 
-    // Unpack border style.
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderTopStyleProperty, border->border_style));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderRightStyleProperty, border->border_style));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderBottomStyleProperty, border->border_style));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderLeftStyleProperty, border->border_style));
+      // Unpack border width.
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderTopWidthProperty, border->border_width));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderRightWidthProperty, border->border_width));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderBottomWidthProperty, border->border_width));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderLeftWidthProperty, border->border_width));
 
-    // Unpack border width.
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderTopWidthProperty, border->border_width));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderRightWidthProperty, border->border_width));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderBottomWidthProperty, border->border_width));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderLeftWidthProperty, border->border_width));
-
-    $$ = property_declaration.release();
+      $$ = property_declaration.release();
+    } else {
+      parser_impl->LogWarning(@1, "invalid border");
+      $$ = NULL;
+    }
   }
   | kBorderBottomToken maybe_whitespace colon border_property_value
       maybe_important {
     scoped_ptr<BorderShorthand> border($4);
     DCHECK(border);
+    if (!border->error) {
+      scoped_ptr<PropertyDeclaration> property_declaration(
+          new PropertyDeclaration($5));
 
-    scoped_ptr<PropertyDeclaration> property_declaration(
-        new PropertyDeclaration($5));
+      // Unpack border bottom.
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderBottomColorProperty, border->border_color));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderBottomStyleProperty, border->border_style));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderBottomWidthProperty, border->border_width));
 
-    // Unpack border bottom.
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderBottomColorProperty, border->border_color));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderBottomStyleProperty, border->border_style));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderBottomWidthProperty, border->border_width));
-
-    $$ = property_declaration.release();
+      $$ = property_declaration.release();
+    } else {
+      parser_impl->LogWarning(@1, "invalid border-bottom");
+      $$ = NULL;
+    }
   }
   | kBorderBottomColorToken maybe_whitespace colon color_property_value
       maybe_important {
@@ -5498,22 +5530,26 @@
       maybe_important {
     scoped_ptr<BorderShorthand> border($4);
     DCHECK(border);
+    if (!border->error) {
+      scoped_ptr<PropertyDeclaration> property_declaration(
+          new PropertyDeclaration($5));
 
-    scoped_ptr<PropertyDeclaration> property_declaration(
-        new PropertyDeclaration($5));
+      // Unpack border left.
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderLeftColorProperty, border->border_color));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderLeftStyleProperty, border->border_style));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderLeftWidthProperty, border->border_width));
 
-    // Unpack border left.
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderLeftColorProperty, border->border_color));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderLeftStyleProperty, border->border_style));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderLeftWidthProperty, border->border_width));
-
-    $$ = property_declaration.release();
+      $$ = property_declaration.release();
+    } else {
+      parser_impl->LogWarning(@1, "invalid border-left");
+      $$ = NULL;
+    }
   }
   | kBorderLeftColorToken maybe_whitespace colon color_property_value
       maybe_important {
@@ -5543,22 +5579,26 @@
       maybe_important {
     scoped_ptr<BorderShorthand> border($4);
     DCHECK(border);
+    if (!border->error) {
+      scoped_ptr<PropertyDeclaration> property_declaration(
+          new PropertyDeclaration($5));
 
-    scoped_ptr<PropertyDeclaration> property_declaration(
-        new PropertyDeclaration($5));
+      // Unpack border right.
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderRightColorProperty, border->border_color));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderRightStyleProperty, border->border_style));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderRightWidthProperty, border->border_width));
 
-    // Unpack border right.
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderRightColorProperty, border->border_color));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderRightStyleProperty, border->border_style));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderRightWidthProperty, border->border_width));
-
-    $$ = property_declaration.release();
+      $$ = property_declaration.release();
+    } else {
+      parser_impl->LogWarning(@1, "invalid border-right");
+      $$ = NULL;
+    }
   }
   | kBorderRightColorToken maybe_whitespace colon color_property_value
       maybe_important {
@@ -5617,22 +5657,26 @@
       maybe_important {
     scoped_ptr<BorderShorthand> border($4);
     DCHECK(border);
+    if (!border->error) {
+      scoped_ptr<PropertyDeclaration> property_declaration(
+          new PropertyDeclaration($5));
 
-    scoped_ptr<PropertyDeclaration> property_declaration(
-        new PropertyDeclaration($5));
+      // Unpack border top.
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderTopColorProperty, border->border_color));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderTopStyleProperty, border->border_style));
+      property_declaration->property_values.push_back(
+          PropertyDeclaration::PropertyKeyValuePair(
+              cssom::kBorderTopWidthProperty, border->border_width));
 
-    // Unpack border top.
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderTopColorProperty, border->border_color));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderTopStyleProperty, border->border_style));
-    property_declaration->property_values.push_back(
-        PropertyDeclaration::PropertyKeyValuePair(
-            cssom::kBorderTopWidthProperty, border->border_width));
-
-    $$ = property_declaration.release();
+      $$ = property_declaration.release();
+    } else {
+      parser_impl->LogWarning(@1, "invalid border-right");
+      $$ = NULL;
+    }
   }
   | kBorderTopColorToken maybe_whitespace colon color_property_value
       maybe_important {
@@ -6307,7 +6351,7 @@
   }
   // Parses the rule.
   | kRuleEntryPointToken maybe_whitespace rule {
-    scoped_refptr<cssom::CSSRule> rule = MakeScopedRefPtrAndRelease($3);
+    scoped_refptr<cssom::CSSRule> rule(MakeScopedRefPtrAndRelease($3));
     parser_impl->set_rule(rule);
   }
   // Parses the contents of a HTMLElement.style attribute.
diff --git a/src/cobalt/css_parser/parser_test.cc b/src/cobalt/css_parser/parser_test.cc
index 77b4874..0aaf421 100644
--- a/src/cobalt/css_parser/parser_test.cc
+++ b/src/cobalt/css_parser/parser_test.cc
@@ -1352,6 +1352,53 @@
   EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundSizeProperty));
 }
 
+TEST_F(ParserTest, InvalidBackgroundWithTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:38: error: background-color value "
+                      "declared twice in background."));
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "background: 0 0 rgba(255,255,255,.1) rgba(255,255,255,.1)",
+          source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundImageProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundPositionProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundRepeatProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundSizeProperty));
+}
+
+TEST_F(ParserTest, InvalidBackgroundWithTwoImages) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:26: error: background-image value "
+                      "declared twice in background."));
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList("background: url(foo.png) url(bar.png)",
+                                        source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundImageProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundPositionProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundRepeatProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundSizeProperty));
+}
+
+TEST_F(ParserTest, InvalidBackgroundWithTwoPositionsAndTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:11: error: background-position or "
+                      "background-repeat declared twice in background."));
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "background: 0 0 rgba(255,255,255,.1) 100% rgba(255,255,255,.1) 100%",
+          source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundImageProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundPositionProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundRepeatProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBackgroundSizeProperty));
+}
+
 TEST_F(ParserTest, LinearGradientWithOneColorStopIsError) {
   EXPECT_CALL(
       parser_observer_,
@@ -2957,6 +3004,159 @@
       parser_.ParseStyleDeclarationList("border: foo, bar;", source_location_);
 }
 
+TEST_F(ParserTest, InvalidBorderWithTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:30: error: border-color value "
+                      "declared twice in border."));
+  EXPECT_CALL(parser_observer_,
+              OnWarning("[object ParserTest]:1:1: warning: invalid border"));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "border: rgba(255,255,255,.1) rgba(255,255,255,.1)",
+          source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomColorProperty));
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomStyleProperty));
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomWidthProperty));
+}
+
+TEST_F(ParserTest, InvalidBorderBottomWithTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:37: error: border-color value "
+                      "declared twice in border."));
+  EXPECT_CALL(
+      parser_observer_,
+      OnWarning("[object ParserTest]:1:1: warning: invalid border-bottom"));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "border-bottom: rgba(255,255,255,.1) rgba(255,255,255,.1)",
+          source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomWidthProperty));
+}
+
+TEST_F(ParserTest, InvalidBorderLeftWithTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:35: error: border-color value "
+                      "declared twice in border."));
+  EXPECT_CALL(
+      parser_observer_,
+      OnWarning("[object ParserTest]:1:1: warning: invalid border-left"));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "border-left: rgba(255,255,255,.1) rgba(255,255,255,.1)",
+          source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftWidthProperty));
+}
+
+TEST_F(ParserTest, InvalidBorderRightWithTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:36: error: border-color value "
+                      "declared twice in border."));
+  EXPECT_CALL(
+      parser_observer_,
+      OnWarning("[object ParserTest]:1:1: warning: invalid border-right"));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "border-right: rgba(255,255,255,.1) rgba(255,255,255,.1)",
+          source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightWidthProperty));
+}
+
+TEST_F(ParserTest, InvalidBorderTopWithTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:34: error: border-color value "
+                      "declared twice in border."));
+  EXPECT_CALL(
+      parser_observer_,
+      OnWarning("[object ParserTest]:1:1: warning: invalid border-right"));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "border-top: rgba(255,255,255,.1) rgba(255,255,255,.1)",
+          source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopWidthProperty));
+}
+
+TEST_F(ParserTest, InvalidBorderWithTwoStyles) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:15: error: border-style value "
+                      "declared twice in border."));
+  EXPECT_CALL(parser_observer_,
+              OnWarning("[object ParserTest]:1:1: warning: invalid border"));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList("border: solid hidden",
+                                        source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomColorProperty));
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomStyleProperty));
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomWidthProperty));
+}
+
+TEST_F(ParserTest, InvalidBorderWithTwoWidths) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:7: error: border-width value "
+                      "declared twice in border."));
+  EXPECT_CALL(parser_observer_,
+              OnWarning("[object ParserTest]:1:1: warning: invalid border"));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList("border: 10px 20px", source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopColorProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomColorProperty));
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopStyleProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomStyleProperty));
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderLeftWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderRightWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderTopWidthProperty));
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBorderBottomWidthProperty));
+}
+
 TEST_F(ParserTest, ParsesBorderColorWidth) {
   scoped_refptr<cssom::CSSDeclaredStyleData> style =
       parser_.ParseStyleDeclarationList("border: gray 20px;", source_location_);
@@ -3610,7 +3810,37 @@
             style->GetPropertyValue(cssom::kBoxShadowProperty));
 }
 
-TEST_F(ParserTest, ParsesBoxShadowWith2Lengths) {
+TEST_F(ParserTest, InvalidBoxShadowWithTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:18: error: color value declared "
+                      "twice in box shadow."));
+  EXPECT_CALL(parser_observer_,
+              OnWarning("[object ParserTest]:1:11: warning: invalid box shadow "
+                        "property."));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "box-shadow: gray green .2em 20px .3em;", source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBoxShadowProperty));
+}
+
+TEST_F(ParserTest, InvalidBoxShadowWithNegativeBlurRadius) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:23: error: negative values of "
+                      "blur radius are illegal"));
+  EXPECT_CALL(parser_observer_,
+              OnWarning("[object ParserTest]:1:11: warning: invalid box shadow "
+                        "property."));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList("box-shadow: .2em 20px -10px;",
+                                        source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kBoxShadowProperty));
+}
+
+TEST_F(ParserTest, ParsesBoxShadowWithTwoLengths) {
   scoped_refptr<cssom::CSSDeclaredStyleData> style =
       parser_.ParseStyleDeclarationList("box-shadow: .2em 20px;",
                                         source_location_);
@@ -3638,7 +3868,7 @@
   EXPECT_FALSE(box_shadow->has_inset());
 }
 
-TEST_F(ParserTest, ParsesBoxShadowWith3LengthsAndColor) {
+TEST_F(ParserTest, ParsesBoxShadowWithThreeLengthsAndColor) {
   scoped_refptr<cssom::CSSDeclaredStyleData> style =
       parser_.ParseStyleDeclarationList("box-shadow: gray .2em 20px .3em;",
                                         source_location_);
@@ -3670,7 +3900,7 @@
   EXPECT_FALSE(box_shadow->has_inset());
 }
 
-TEST_F(ParserTest, ParsesBoxShadowWith4LengthsInsetAndColor) {
+TEST_F(ParserTest, ParsesBoxShadowWithFourLengthsInsetAndColor) {
   scoped_refptr<cssom::CSSDeclaredStyleData> style =
       parser_.ParseStyleDeclarationList(
           "box-shadow: .2em 20px .3em 0 "
@@ -5689,7 +5919,37 @@
             style->GetPropertyValue(cssom::kTextShadowProperty));
 }
 
-TEST_F(ParserTest, ParsesTextShadowWith2Lengths) {
+TEST_F(ParserTest, InvalidTextShadowWithTwoColors) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:19: error: color value declared "
+                      "twice in text shadow."));
+  EXPECT_CALL(parser_observer_,
+              OnWarning("[object ParserTest]:1:12: warning: invalid text "
+                        "shadow property."));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList(
+          "text-shadow: gray green .2em 20px .3em;", source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kTextShadowProperty));
+}
+
+TEST_F(ParserTest, InvalidTextShadowWithNegativeBlurRadius) {
+  EXPECT_CALL(parser_observer_,
+              OnError("[object ParserTest]:1:24: error: negative values of "
+                      "blur radius are illegal"));
+  EXPECT_CALL(parser_observer_,
+              OnWarning("[object ParserTest]:1:12: warning: invalid text "
+                        "shadow property."));
+
+  scoped_refptr<cssom::CSSDeclaredStyleData> style =
+      parser_.ParseStyleDeclarationList("text-shadow: .2em 20px -10px;",
+                                        source_location_);
+
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kTextShadowProperty));
+}
+
+TEST_F(ParserTest, ParsesTextShadowWithTwoLengths) {
   scoped_refptr<cssom::CSSDeclaredStyleData> style =
       parser_.ParseStyleDeclarationList("text-shadow: 0.04em 1px;",
                                         source_location_);
@@ -5717,7 +5977,7 @@
   EXPECT_FALSE(text_shadow->has_inset());
 }
 
-TEST_F(ParserTest, ParsesTextShadowWith3LengthsAndColor) {
+TEST_F(ParserTest, ParsesTextShadowWithThreeLengthsAndColor) {
   scoped_refptr<cssom::CSSDeclaredStyleData> style =
       parser_.ParseStyleDeclarationList("text-shadow: 0.04em 1px .2em #123;",
                                         source_location_);
@@ -7370,34 +7630,19 @@
       parser_.ParseStyleDeclarationList(
           "transition: 1s voodoo-magic; display: inline;", source_location_);
 
-  // Test transition-property was set properly.
-  scoped_refptr<cssom::PropertyKeyListValue> property_name_list =
-      dynamic_cast<cssom::PropertyKeyListValue*>(
-          style->GetPropertyValue(cssom::kTransitionPropertyProperty).get());
-  ASSERT_TRUE(property_name_list.get());
-  ASSERT_EQ(0, property_name_list->value().size());
+  // Test transition-property was not set.
+  EXPECT_EQ(cssom::KeywordValue::GetNone(),
+            style->GetPropertyValue(cssom::kTransitionPropertyProperty));
 
-  // Test transition-duration was set properly.
-  scoped_refptr<cssom::TimeListValue> duration_list =
-      dynamic_cast<cssom::TimeListValue*>(
-          style->GetPropertyValue(cssom::kTransitionDurationProperty).get());
-  ASSERT_TRUE(duration_list.get());
-  ASSERT_EQ(0, duration_list->value().size());
+  // Test transition-duration was not set.
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kTransitionDurationProperty));
 
-  // Test transition-timing-function was set properly.
-  scoped_refptr<cssom::TimingFunctionListValue> timing_function_list =
-      dynamic_cast<cssom::TimingFunctionListValue*>(
-          style->GetPropertyValue(cssom::kTransitionTimingFunctionProperty)
-              .get());
-  ASSERT_TRUE(timing_function_list.get());
-  ASSERT_EQ(0, timing_function_list->value().size());
+  // Test transition-timing-function was not set.
+  EXPECT_FALSE(
+      style->GetPropertyValue(cssom::kTransitionTimingFunctionProperty));
 
-  // Test transition-delay was set properly.
-  scoped_refptr<cssom::TimeListValue> delay_list =
-      dynamic_cast<cssom::TimeListValue*>(
-          style->GetPropertyValue(cssom::kTransitionDelayProperty).get());
-  ASSERT_TRUE(delay_list.get());
-  ASSERT_EQ(0, delay_list->value().size());
+  // Test transition-delay was not set.
+  EXPECT_FALSE(style->GetPropertyValue(cssom::kTransitionDelayProperty));
 
   // Test that despite the error, display inline was still set correctly.
   EXPECT_EQ(cssom::KeywordValue::GetInline(),
@@ -7414,34 +7659,20 @@
       parser_.ParseStyleDeclarationList("transition: 1s voodoo-magic 2s;",
                                         source_location_);
 
-  // Test transition-property was set properly.
-  scoped_refptr<cssom::PropertyKeyListValue> property_name_list =
-      dynamic_cast<cssom::PropertyKeyListValue*>(
-          style->GetPropertyValue(cssom::kTransitionPropertyProperty).get());
-  ASSERT_TRUE(property_name_list.get());
-  ASSERT_EQ(0, property_name_list->value().size());
+  // Test transition-property was not set.
+  EXPECT_EQ(cssom::KeywordValue::GetNone(),
+            style->GetPropertyValue(cssom::kTransitionPropertyProperty).get());
 
-  // Test transition-duration was set properly.
-  scoped_refptr<cssom::TimeListValue> duration_list =
-      dynamic_cast<cssom::TimeListValue*>(
-          style->GetPropertyValue(cssom::kTransitionDurationProperty).get());
-  ASSERT_TRUE(duration_list.get());
-  ASSERT_EQ(0, duration_list->value().size());
+  // Test transition-duration was not set.
+  EXPECT_FALSE(
+      style->GetPropertyValue(cssom::kTransitionDurationProperty).get());
 
-  // Test transition-timing-function was set properly.
-  scoped_refptr<cssom::TimingFunctionListValue> timing_function_list =
-      dynamic_cast<cssom::TimingFunctionListValue*>(
-          style->GetPropertyValue(cssom::kTransitionTimingFunctionProperty)
-              .get());
-  ASSERT_TRUE(timing_function_list.get());
-  ASSERT_EQ(0, timing_function_list->value().size());
+  // Test transition-timing-function was not set.
+  EXPECT_FALSE(
+      style->GetPropertyValue(cssom::kTransitionTimingFunctionProperty).get());
 
-  // Test transition-delay was set properly.
-  scoped_refptr<cssom::TimeListValue> delay_list =
-      dynamic_cast<cssom::TimeListValue*>(
-          style->GetPropertyValue(cssom::kTransitionDelayProperty).get());
-  ASSERT_TRUE(delay_list.get());
-  ASSERT_EQ(0, delay_list->value().size());
+  // Test transition-delay was not set.
+  ASSERT_FALSE(style->GetPropertyValue(cssom::kTransitionDelayProperty).get());
 }
 
 TEST_F(ParserTest,
@@ -8005,5 +8236,31 @@
   ASSERT_EQ(media_list->media_text(), ", ");
 }
 
+TEST_F(ParserTest, ParsesValidMediaQueryWithIntegers) {
+  scoped_refptr<cssom::MediaQuery> media_query =
+      parser_.ParseMediaQuery(
+                 "(color: 8) and (grid:0) and (color) and (scan: progressive)",
+                 source_location_)
+          .get();
+  ASSERT_TRUE(media_query.get());
+
+  // TODO: Update when media query serialization is implemented.
+  ASSERT_EQ(media_query->media_query(), "");
+  math::Size size;
+  EXPECT_TRUE(media_query->EvaluateConditionValue(size));
+}
+
+TEST_F(ParserTest, ParsesValidMediaListWithIntegers) {
+  scoped_refptr<cssom::MediaList> media_list =
+      parser_.ParseMediaList("(color: 0), (grid:0)", source_location_).get();
+  ASSERT_TRUE(media_list.get());
+  EXPECT_EQ(media_list->length(), 2);
+
+  // TODO: Update when media query serialization is implemented.
+  ASSERT_EQ(media_list->media_text(), ", ");
+  math::Size size;
+  EXPECT_TRUE(media_list->EvaluateConditionValue(size));
+}
+
 }  // namespace css_parser
 }  // namespace cobalt
diff --git a/src/cobalt/css_parser/scanner.cc b/src/cobalt/css_parser/scanner.cc
index 7d594d9..fadfebb 100644
--- a/src/cobalt/css_parser/scanner.cc
+++ b/src/cobalt/css_parser/scanner.cc
@@ -418,6 +418,10 @@
     // Return all prepended tokens before actual input.
     if (!prepended_tokens_.empty()) {
       Token prepended_token = prepended_tokens_.front();
+      if ((prepended_token == kMediaListEntryPointToken) ||
+          (prepended_token == kMediaQueryEntryPointToken)) {
+        parsing_mode_ = kMediaQueryMode;
+      }
       prepended_tokens_.pop_front();
       return prepended_token;
     }
diff --git a/src/cobalt/css_parser/shadow_property_parse_structures.cc b/src/cobalt/css_parser/shadow_property_parse_structures.cc
index a690d6d..e0baf60 100644
--- a/src/cobalt/css_parser/shadow_property_parse_structures.cc
+++ b/src/cobalt/css_parser/shadow_property_parse_structures.cc
@@ -20,6 +20,7 @@
 namespace css_parser {
 
 bool ShadowPropertyInfo::IsShadowPropertyValid(ShadowType type) {
+  if (error) return false;
   switch (type) {
     case kBoxShadow:
       //  https://www.w3.org/TR/css3-background/#box-shadow
diff --git a/src/cobalt/css_parser/shadow_property_parse_structures.h b/src/cobalt/css_parser/shadow_property_parse_structures.h
index 3075bda..4347ef6 100644
--- a/src/cobalt/css_parser/shadow_property_parse_structures.h
+++ b/src/cobalt/css_parser/shadow_property_parse_structures.h
@@ -35,10 +35,11 @@
 };
 
 struct ShadowPropertyInfo {
-  ShadowPropertyInfo() : has_inset(false) {}
+  ShadowPropertyInfo() : error(false), has_inset(false) {}
 
   bool IsShadowPropertyValid(ShadowType type);
 
+  bool error;
   std::vector<scoped_refptr<cssom::LengthValue> > length_vector;
   scoped_refptr<cssom::RGBAColorValue> color;
   bool has_inset;
diff --git a/src/cobalt/cssom/computed_style.cc b/src/cobalt/cssom/computed_style.cc
index ea15228..9d5d0c9 100644
--- a/src/cobalt/cssom/computed_style.cc
+++ b/src/cobalt/cssom/computed_style.cc
@@ -2701,7 +2701,9 @@
     return true;
   } else if (*value == KeywordValue::GetInitial()) {
     *value = GetPropertyInitialValue(key);
-    return true;
+    // If the initial value is current color, it still requires to do further
+    // processing.
+    return *value == KeywordValue::GetCurrentColor() ? false : true;
   } else {
     return false;
   }
diff --git a/src/cobalt/cssom/computed_style_test.cc b/src/cobalt/cssom/computed_style_test.cc
index 2637dfa..f9745eb 100644
--- a/src/cobalt/cssom/computed_style_test.cc
+++ b/src/cobalt/cssom/computed_style_test.cc
@@ -792,6 +792,27 @@
   EXPECT_EQ(kPixelsUnit, border_radius->unit());
 }
 
+TEST(PromoteToComputedStyle, BorderColorWithInitialValue) {
+  scoped_refptr<CSSComputedStyleData> computed_style(
+      new CSSComputedStyleData());
+  computed_style->set_border_bottom_color(KeywordValue::GetInitial());
+  computed_style->set_color(RGBAColorValue::GetAqua());
+
+  scoped_refptr<CSSComputedStyleData> parent_computed_style(
+      new CSSComputedStyleData());
+  scoped_refptr<CSSComputedStyleDeclaration> parent_computed_style_declaration(
+      CreateComputedStyleDeclaration(parent_computed_style));
+
+  PromoteToComputedStyle(computed_style, parent_computed_style_declaration,
+                         parent_computed_style, math::Size(), NULL);
+
+  scoped_refptr<RGBAColorValue> border_bottom_color =
+      dynamic_cast<RGBAColorValue*>(
+          computed_style->border_bottom_color().get());
+  ASSERT_TRUE(border_bottom_color);
+  EXPECT_EQ(0x00FFFFFF, border_bottom_color->value());
+}
+
 TEST(PromoteToComputedStyle, BorderColorWithCurrentColorValue) {
   scoped_refptr<CSSComputedStyleData> computed_style(
       new CSSComputedStyleData());
diff --git a/src/cobalt/cssom/list_value.h b/src/cobalt/cssom/list_value.h
index aeea7f3..df0a5a0 100644
--- a/src/cobalt/cssom/list_value.h
+++ b/src/cobalt/cssom/list_value.h
@@ -40,6 +40,7 @@
 
   explicit ListValue(scoped_ptr<Builder> value) : value_(value.Pass()) {
     DCHECK(value_.get());
+    DCHECK(!value_->empty());
   }
 
   const T& get_item_modulo_size(int index) const {
diff --git a/src/cobalt/cssom/media_feature.cc b/src/cobalt/cssom/media_feature.cc
index c54da9c..88db75c 100644
--- a/src/cobalt/cssom/media_feature.cc
+++ b/src/cobalt/cssom/media_feature.cc
@@ -123,7 +123,11 @@
         base::polymorphic_downcast<LengthValue*>(value_.get());
     // TODO: Support 'em' units for media features.
     // https://www.w3.org/TR/css3-mediaqueries/#units
-    DCHECK_EQ(kPixelsUnit, specified_value->unit());
+    if (kPixelsUnit != specified_value->unit()) {
+      DLOG(WARNING)
+          << "Media feature length value only supported in pixel units.";
+      return false;
+    }
 
     switch (operator_) {
       case kEquals:
diff --git a/src/cobalt/cssom/property_value_visitor_test.cc b/src/cobalt/cssom/property_value_visitor_test.cc
index 2884f13..953dd12 100644
--- a/src/cobalt/cssom/property_value_visitor_test.cc
+++ b/src/cobalt/cssom/property_value_visitor_test.cc
@@ -36,6 +36,7 @@
 #include "cobalt/cssom/ratio_value.h"
 #include "cobalt/cssom/resolution_value.h"
 #include "cobalt/cssom/rgba_color_value.h"
+#include "cobalt/cssom/rotate_function.h"
 #include "cobalt/cssom/shadow_value.h"
 #include "cobalt/cssom/string_value.h"
 #include "cobalt/cssom/time_list_value.h"
@@ -185,9 +186,11 @@
 }
 
 TEST(PropertyValueVisitorTest, VisitsPropertyKeyListValue) {
+  scoped_ptr<ListValue<PropertyKey>::Builder> builder(
+      new PropertyKeyListValue::Builder());
+  builder->push_back(kWidthProperty);
   scoped_refptr<PropertyKeyListValue> property_key_list_value =
-      new PropertyKeyListValue(
-          make_scoped_ptr(new PropertyKeyListValue::Builder()));
+      new PropertyKeyListValue(builder.Pass());
   MockPropertyValueVisitor mock_visitor;
   EXPECT_CALL(mock_visitor,
               VisitPropertyKeyList(property_key_list_value.get()));
@@ -195,8 +198,11 @@
 }
 
 TEST(PropertyValueVisitorTest, VisitsPropertyListValue) {
-  scoped_refptr<PropertyListValue> property_list_value = new PropertyListValue(
-      make_scoped_ptr(new ScopedRefListValue<PropertyValue>::Builder()));
+  scoped_ptr<ScopedRefListValue<PropertyValue>::Builder> builder(
+      new ScopedRefListValue<PropertyValue>::Builder());
+  builder->push_back(cssom::KeywordValue::GetNone());
+  scoped_refptr<PropertyListValue> property_list_value =
+      new PropertyListValue(builder.Pass());
   MockPropertyValueVisitor mock_visitor;
   EXPECT_CALL(mock_visitor, VisitPropertyList(property_list_value.get()));
   property_list_value->Accept(&mock_visitor);
@@ -252,17 +258,21 @@
 }
 
 TEST(PropertyValueVisitorTest, VisitsTimeListValue) {
+  scoped_ptr<TimeListValue::Builder> builder(new TimeListValue::Builder());
+  builder->push_back(base::TimeDelta());
   scoped_refptr<TimeListValue> time_list_value =
-      new TimeListValue(make_scoped_ptr(new TimeListValue::Builder()));
+      new TimeListValue(builder.Pass());
   MockPropertyValueVisitor mock_visitor;
   EXPECT_CALL(mock_visitor, VisitTimeList(time_list_value.get()));
   time_list_value->Accept(&mock_visitor);
 }
 
 TEST(PropertyValueVisitorTest, VisitsTimingFunctionListValue) {
+  scoped_ptr<TimingFunctionListValue::Builder> builder(
+      new TimingFunctionListValue::Builder());
+  builder->push_back(TimingFunction::GetLinear());
   scoped_refptr<TimingFunctionListValue> timing_function_list_value =
-      new TimingFunctionListValue(
-          make_scoped_ptr(new TimingFunctionListValue::Builder()));
+      new TimingFunctionListValue(builder.Pass());
   MockPropertyValueVisitor mock_visitor;
   EXPECT_CALL(mock_visitor,
               VisitTimingFunctionList(timing_function_list_value.get()));
@@ -270,8 +280,10 @@
 }
 
 TEST(PropertyValueVisitorTest, VisitsTransformListValue) {
+  TransformFunctionListValue::Builder builder;
+  builder.push_back(new RotateFunction(0.0f));
   scoped_refptr<TransformFunctionListValue> transform_list_value =
-      new TransformFunctionListValue(TransformFunctionListValue::Builder());
+      new TransformFunctionListValue(builder.Pass());
   MockPropertyValueVisitor mock_visitor;
   EXPECT_CALL(mock_visitor,
               VisitTransformFunctionList(transform_list_value.get()));
diff --git a/src/cobalt/cssom/scoped_list_value.h b/src/cobalt/cssom/scoped_list_value.h
index 044740e..48d004c 100644
--- a/src/cobalt/cssom/scoped_list_value.h
+++ b/src/cobalt/cssom/scoped_list_value.h
@@ -35,7 +35,9 @@
  public:
   typedef ScopedVector<T> Builder;
 
-  explicit ScopedListValue(Builder value) : value_(value.Pass()) {}
+  explicit ScopedListValue(Builder value) : value_(value.Pass()) {
+    DCHECK(!value_.empty());
+  }
 
   const T& get_item_modulo_size(int index) const {
     return *value_[index % value_.size()];
diff --git a/src/cobalt/cssom/scoped_ref_list_value.h b/src/cobalt/cssom/scoped_ref_list_value.h
index 9a06c8f..eb03137 100644
--- a/src/cobalt/cssom/scoped_ref_list_value.h
+++ b/src/cobalt/cssom/scoped_ref_list_value.h
@@ -40,6 +40,7 @@
   explicit ScopedRefListValue(scoped_ptr<Builder> value)
       : value_(value.Pass()) {
     DCHECK(value_.get());
+    DCHECK(!value_->empty());
   }
 
   const scoped_refptr<T>& get_item_modulo_size(int index) const {
diff --git a/src/cobalt/dom/comment_test.cc b/src/cobalt/dom/comment_test.cc
index e05b477..2b8773d 100644
--- a/src/cobalt/dom/comment_test.cc
+++ b/src/cobalt/dom/comment_test.cc
@@ -42,7 +42,7 @@
 
 CommentTest::CommentTest()
     : html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                            NULL, NULL, "") {
+                            NULL, NULL, NULL, "") {
   EXPECT_TRUE(GlobalStats::GetInstance()->CheckNoLeaks());
   document_ = new Document(&html_element_context_);
 }
diff --git a/src/cobalt/dom/document_test.cc b/src/cobalt/dom/document_test.cc
index c56714f..39e118d 100644
--- a/src/cobalt/dom/document_test.cc
+++ b/src/cobalt/dom/document_test.cc
@@ -66,7 +66,8 @@
     : css_parser_(css_parser::Parser::Create()),
       dom_stat_tracker_(new DomStatTracker("DocumentTest")),
       html_element_context_(NULL, css_parser_.get(), NULL, NULL, NULL, NULL,
-                            NULL, NULL, NULL, dom_stat_tracker_.get(), "") {
+                            NULL, NULL, NULL, NULL, dom_stat_tracker_.get(),
+                            "") {
   EXPECT_TRUE(GlobalStats::GetInstance()->CheckNoLeaks());
 }
 
diff --git a/src/cobalt/dom/document_type_test.cc b/src/cobalt/dom/document_type_test.cc
index f19fa27..1fc4b6a 100644
--- a/src/cobalt/dom/document_type_test.cc
+++ b/src/cobalt/dom/document_type_test.cc
@@ -27,7 +27,7 @@
  protected:
   DocumentTypeTest()
       : html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                              NULL, NULL, ""),
+                              NULL, NULL, NULL, ""),
         document_(new Document(&html_element_context_)) {}
   ~DocumentTypeTest() OVERRIDE {}
 
diff --git a/src/cobalt/dom/dom_parser_test.cc b/src/cobalt/dom/dom_parser_test.cc
index 5d392e1..d3dd079 100644
--- a/src/cobalt/dom/dom_parser_test.cc
+++ b/src/cobalt/dom/dom_parser_test.cc
@@ -46,10 +46,11 @@
       dom_parser_parser_(new dom_parser::Parser()),
       html_element_context_(
           &fetcher_factory_, &stub_css_parser_, dom_parser_parser_.get(),
-          NULL /* web_media_player_factory */, &stub_script_runner_,
-          NULL /* media_source_registry */, NULL /* resource_provider */,
-          NULL /* image_cache */, NULL /* remote_typeface_cache */,
-          NULL /* dom_stat_tracker */, "" /* language */),
+          NULL /* can_play_type_handler */, NULL /* web_media_player_factory */,
+          &stub_script_runner_, NULL /* media_source_registry */,
+          NULL /* resource_provider */, NULL /* image_cache */,
+          NULL /* remote_typeface_cache */, NULL /* dom_stat_tracker */,
+          "" /* language */),
       dom_parser_(new DOMParser(&html_element_context_)) {}
 
 TEST_F(DOMParserTest, ParsesXML) {
diff --git a/src/cobalt/dom/dom_string_map_test.cc b/src/cobalt/dom/dom_string_map_test.cc
index 0851497..5faca86 100644
--- a/src/cobalt/dom/dom_string_map_test.cc
+++ b/src/cobalt/dom/dom_string_map_test.cc
@@ -45,7 +45,7 @@
 
 DOMStringMapTest::DOMStringMapTest()
     : html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                            NULL, NULL, ""),
+                            NULL, NULL, NULL, ""),
       document_(new Document(&html_element_context_)),
       element_(new Element(document_, base::Token("element"))),
       dom_string_map_(new DOMStringMap(element_)) {}
diff --git a/src/cobalt/dom/dom_token_list_test.cc b/src/cobalt/dom/dom_token_list_test.cc
index c763eb1..49c58dd 100644
--- a/src/cobalt/dom/dom_token_list_test.cc
+++ b/src/cobalt/dom/dom_token_list_test.cc
@@ -40,7 +40,7 @@
 
 DOMTokenListTest::DOMTokenListTest()
     : html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                            NULL, NULL, "") {
+                            NULL, NULL, NULL, "") {
   EXPECT_TRUE(GlobalStats::GetInstance()->CheckNoLeaks());
   document_ = new Document(&html_element_context_);
 }
diff --git a/src/cobalt/dom/element_test.cc b/src/cobalt/dom/element_test.cc
index affdd02..f2ea69d 100644
--- a/src/cobalt/dom/element_test.cc
+++ b/src/cobalt/dom/element_test.cc
@@ -61,7 +61,7 @@
       dom_parser_(new dom_parser::Parser()),
       dom_stat_tracker_(new DomStatTracker("ElementTest")),
       html_element_context_(NULL, css_parser_.get(), dom_parser_.get(), NULL,
-                            NULL, NULL, NULL, NULL, NULL,
+                            NULL, NULL, NULL, NULL, NULL, NULL,
                             dom_stat_tracker_.get(), "") {
   EXPECT_TRUE(GlobalStats::GetInstance()->CheckNoLeaks());
   document_ = new Document(&html_element_context_);
diff --git a/src/cobalt/dom/event_target.cc b/src/cobalt/dom/event_target.cc
index f8af5a2..87553ff 100644
--- a/src/cobalt/dom/event_target.cc
+++ b/src/cobalt/dom/event_target.cc
@@ -193,10 +193,10 @@
        iter != event_listener_infos_.end(); ++iter) {
     if ((*iter)->type == type &&
         (*iter)->listener.referenced_object().EqualTo(listener) &&
-        (*iter)->use_capture == use_capture) {
+        (*iter)->use_capture == use_capture &&
+        (*iter)->listener_type == listener_type) {
       // Attribute listeners should have already been removed.
       DCHECK_EQ(listener_type, EventListener::kNotAttribute);
-      DCHECK_EQ(listener_type, (*iter)->listener_type);
       return;
     }
   }
diff --git a/src/cobalt/dom/event_target_test.cc b/src/cobalt/dom/event_target_test.cc
index 57a092a..1a1ffe5 100644
--- a/src/cobalt/dom/event_target_test.cc
+++ b/src/cobalt/dom/event_target_test.cc
@@ -308,6 +308,58 @@
   EXPECT_TRUE(event_target->DispatchEvent(event, &exception_state));
 }
 
+TEST(EventTargetTest, AddSameListenerMultipleTimes) {
+  StrictMock<MockExceptionState> exception_state;
+  scoped_refptr<EventTarget> event_target = new EventTarget;
+  scoped_refptr<Event> event = new Event(base::Token("fired"));
+  scoped_ptr<MockEventListener> event_listener = MockEventListener::Create();
+  FakeScriptObject script_object(event_listener.get());
+
+  InSequence in_sequence;
+  event_listener->ExpectHandleEventCall(event, event_target);
+
+  // The same listener should only get added once.
+  event_target->AddEventListener("fired", script_object, false);
+  event_target->AddEventListener("fired", script_object, false);
+  event_target->AddEventListener("fired", script_object, false);
+  EXPECT_TRUE(event_target->DispatchEvent(event, &exception_state));
+}
+
+TEST(EventTargetTest, AddSameAttributeListenerMultipleTimes) {
+  StrictMock<MockExceptionState> exception_state;
+  scoped_refptr<EventTarget> event_target = new EventTarget;
+  scoped_refptr<Event> event = new Event(base::Token("fired"));
+  scoped_ptr<MockEventListener> event_listener = MockEventListener::Create();
+  FakeScriptObject script_object(event_listener.get());
+
+  InSequence in_sequence;
+  event_listener->ExpectHandleEventCall(event, event_target);
+
+  // The same listener should only get added once.
+  event_target->SetAttributeEventListener(base::Token("fired"), script_object);
+  event_target->SetAttributeEventListener(base::Token("fired"), script_object);
+  event_target->SetAttributeEventListener(base::Token("fired"), script_object);
+  EXPECT_TRUE(event_target->DispatchEvent(event, &exception_state));
+}
+
+TEST(EventTargetTest, SameEventListenerAsAttribute) {
+  StrictMock<MockExceptionState> exception_state;
+  scoped_refptr<EventTarget> event_target = new EventTarget;
+  scoped_refptr<Event> event = new Event(base::Token("fired"));
+  scoped_ptr<MockEventListener> event_listener = MockEventListener::Create();
+  FakeScriptObject script_object(event_listener.get());
+
+  InSequence in_sequence;
+  event_listener->ExpectHandleEventCall(event, event_target);
+  event_listener->ExpectHandleEventCall(event, event_target);
+
+  // The same script object can be registered as both an attribute and
+  // non-attribute listener. Both should be fired.
+  event_target->AddEventListener("fired", script_object, false);
+  event_target->SetAttributeEventListener(base::Token("fired"), script_object);
+  EXPECT_TRUE(event_target->DispatchEvent(event, &exception_state));
+}
+
 }  // namespace
 }  // namespace dom
 }  // namespace cobalt
diff --git a/src/cobalt/dom/html_element_context.cc b/src/cobalt/dom/html_element_context.cc
index f9363e0..25d74f7 100644
--- a/src/cobalt/dom/html_element_context.cc
+++ b/src/cobalt/dom/html_element_context.cc
@@ -23,7 +23,8 @@
 
 HTMLElementContext::HTMLElementContext(
     loader::FetcherFactory* fetcher_factory, cssom::CSSParser* css_parser,
-    Parser* dom_parser, media::WebMediaPlayerFactory* web_media_player_factory,
+    Parser* dom_parser, media::CanPlayTypeHandler* can_play_type_handler,
+    media::WebMediaPlayerFactory* web_media_player_factory,
     script::ScriptRunner* script_runner,
     MediaSource::Registry* media_source_registry,
     render_tree::ResourceProvider* resource_provider,
@@ -33,6 +34,7 @@
     : fetcher_factory_(fetcher_factory),
       css_parser_(css_parser),
       dom_parser_(dom_parser),
+      can_play_type_handler_(can_play_type_handler),
       web_media_player_factory_(web_media_player_factory),
       script_runner_(script_runner),
       media_source_registry_(media_source_registry),
diff --git a/src/cobalt/dom/html_element_context.h b/src/cobalt/dom/html_element_context.h
index b1c9847..642a4a0 100644
--- a/src/cobalt/dom/html_element_context.h
+++ b/src/cobalt/dom/html_element_context.h
@@ -28,6 +28,7 @@
 #include "cobalt/loader/fetcher_factory.h"
 #include "cobalt/loader/font/remote_typeface_cache.h"
 #include "cobalt/loader/image/image_cache.h"
+#include "cobalt/media/can_play_type_handler.h"
 #include "cobalt/media/web_media_player_factory.h"
 #include "cobalt/script/script_runner.h"
 
@@ -43,6 +44,7 @@
  public:
   HTMLElementContext(loader::FetcherFactory* fetcher_factory,
                      cssom::CSSParser* css_parser, Parser* dom_parser,
+                     media::CanPlayTypeHandler* can_play_type_handler,
                      media::WebMediaPlayerFactory* web_media_player_factory,
                      script::ScriptRunner* script_runner,
                      MediaSource::Registry* media_source_registry,
@@ -59,6 +61,9 @@
 
   Parser* dom_parser() { return dom_parser_; }
 
+  media::CanPlayTypeHandler* can_play_type_handler() {
+    return can_play_type_handler_;
+  }
   media::WebMediaPlayerFactory* web_media_player_factory() {
     return web_media_player_factory_;
   }
@@ -92,6 +97,7 @@
   loader::FetcherFactory* const fetcher_factory_;
   cssom::CSSParser* const css_parser_;
   Parser* const dom_parser_;
+  media::CanPlayTypeHandler* can_play_type_handler_;
   media::WebMediaPlayerFactory* const web_media_player_factory_;
   script::ScriptRunner* const script_runner_;
   MediaSource::Registry* const media_source_registry_;
diff --git a/src/cobalt/dom/html_element_factory_test.cc b/src/cobalt/dom/html_element_factory_test.cc
index 8008245..94b421f 100644
--- a/src/cobalt/dom/html_element_factory_test.cc
+++ b/src/cobalt/dom/html_element_factory_test.cc
@@ -55,6 +55,7 @@
         dom_stat_tracker_(new DomStatTracker("HTMLElementFactoryTest")),
         html_element_context_(
             &fetcher_factory_, &stub_css_parser_, dom_parser_.get(),
+            NULL /* can_play_type_handler */,
             NULL /* web_media_player_factory */, &stub_script_runner_,
             NULL /* media_source_registry */, NULL /* resource_provider */,
             NULL /* image_cache */, NULL /* remote_typeface_cache */,
diff --git a/src/cobalt/dom/html_element_test.cc b/src/cobalt/dom/html_element_test.cc
index 1e8bceb..4561437 100644
--- a/src/cobalt/dom/html_element_test.cc
+++ b/src/cobalt/dom/html_element_test.cc
@@ -110,7 +110,7 @@
   HTMLElementTest()
       : dom_stat_tracker_(new DomStatTracker("HTMLElementTest")),
         html_element_context_(NULL, &css_parser_, NULL, NULL, NULL, NULL, NULL,
-                              NULL, NULL, dom_stat_tracker_.get(), ""),
+                              NULL, NULL, NULL, dom_stat_tracker_.get(), ""),
         document_(new Document(&html_element_context_)) {}
   ~HTMLElementTest() OVERRIDE {}
 
diff --git a/src/cobalt/dom/html_media_element.cc b/src/cobalt/dom/html_media_element.cc
index 12a4e8e..4f1bb38 100644
--- a/src/cobalt/dom/html_media_element.cc
+++ b/src/cobalt/dom/html_media_element.cc
@@ -168,13 +168,15 @@
   LoadInternal();
 }
 
-std::string HTMLMediaElement::CanPlayType(const std::string& mime_type) const {
+std::string HTMLMediaElement::CanPlayType(const std::string& mime_type) {
   return CanPlayType(mime_type, "");
 }
 
 std::string HTMLMediaElement::CanPlayType(const std::string& mime_type,
-                                          const std::string& key_system) const {
-  std::string result = ::media::CanPlayType(mime_type, key_system);
+                                          const std::string& key_system) {
+  std::string result =
+      html_element_context()->can_play_type_handler()->CanPlayType(mime_type,
+                                                                   key_system);
   DLOG(INFO) << "HTMLMediaElement::canPlayType(" << mime_type << ", "
              << key_system << ") -> " << result;
   return result;
diff --git a/src/cobalt/dom/html_media_element.h b/src/cobalt/dom/html_media_element.h
index 823e006..300874f 100644
--- a/src/cobalt/dom/html_media_element.h
+++ b/src/cobalt/dom/html_media_element.h
@@ -69,9 +69,9 @@
 
   scoped_refptr<TimeRanges> buffered() const;
   void Load();
-  std::string CanPlayType(const std::string& mimeType) const;
+  std::string CanPlayType(const std::string& mimeType);
   std::string CanPlayType(const std::string& mimeType,
-                          const std::string& key_system) const;
+                          const std::string& key_system);
   void GenerateKeyRequest(
       const std::string& key_system,
       const base::optional<scoped_refptr<Uint8Array> >& init_data,
diff --git a/src/cobalt/dom/node_dispatch_event_test.cc b/src/cobalt/dom/node_dispatch_event_test.cc
index 5db9eaa..d3368ef 100644
--- a/src/cobalt/dom/node_dispatch_event_test.cc
+++ b/src/cobalt/dom/node_dispatch_event_test.cc
@@ -59,7 +59,7 @@
 
 NodeDispatchEventTest::NodeDispatchEventTest()
     : html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                            NULL, NULL, "") {
+                            NULL, NULL, NULL, "") {
   EXPECT_TRUE(GlobalStats::GetInstance()->CheckNoLeaks());
 
   document_ = new Document(&html_element_context_);
diff --git a/src/cobalt/dom/node_list_live_test.cc b/src/cobalt/dom/node_list_live_test.cc
index bf041b3..b8e6702 100644
--- a/src/cobalt/dom/node_list_live_test.cc
+++ b/src/cobalt/dom/node_list_live_test.cc
@@ -30,7 +30,7 @@
   NodeListLiveTest()
       : dom_stat_tracker_("NodeListLiveTest"),
         html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                              NULL, &dom_stat_tracker_, ""),
+                              NULL, NULL, &dom_stat_tracker_, ""),
         document_(new Document(&html_element_context_)) {}
 
   ~NodeListLiveTest() OVERRIDE {}
diff --git a/src/cobalt/dom/node_list_test.cc b/src/cobalt/dom/node_list_test.cc
index 999d442..a93339a 100644
--- a/src/cobalt/dom/node_list_test.cc
+++ b/src/cobalt/dom/node_list_test.cc
@@ -30,7 +30,7 @@
   NodeListTest()
       : dom_stat_tracker_(new DomStatTracker("NodeListTest")),
         html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                              NULL, dom_stat_tracker_.get(), ""),
+                              NULL, NULL, dom_stat_tracker_.get(), ""),
         document_(new Document(&html_element_context_)) {}
 
   ~NodeListTest() OVERRIDE {}
diff --git a/src/cobalt/dom/rule_matching_test.cc b/src/cobalt/dom/rule_matching_test.cc
index 3be7b17..2d1b118 100644
--- a/src/cobalt/dom/rule_matching_test.cc
+++ b/src/cobalt/dom/rule_matching_test.cc
@@ -45,7 +45,7 @@
         dom_parser_(new dom_parser::Parser()),
         dom_stat_tracker_(new DomStatTracker("RuleMatchingTest")),
         html_element_context_(NULL, css_parser_.get(), dom_parser_.get(), NULL,
-                              NULL, NULL, NULL, NULL, NULL,
+                              NULL, NULL, NULL, NULL, NULL, NULL,
                               dom_stat_tracker_.get(), ""),
         document_(new Document(&html_element_context_)),
         root_(document_->CreateElement("html")->AsHTMLElement()) {
diff --git a/src/cobalt/dom/serializer_test.cc b/src/cobalt/dom/serializer_test.cc
index 678cd45..ec16354 100644
--- a/src/cobalt/dom/serializer_test.cc
+++ b/src/cobalt/dom/serializer_test.cc
@@ -47,7 +47,7 @@
     : dom_parser_(new dom_parser::Parser()),
       dom_stat_tracker_(new DomStatTracker("SerializerTest")),
       html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                            NULL, dom_stat_tracker_.get(), ""),
+                            NULL, NULL, dom_stat_tracker_.get(), ""),
       document_(new Document(&html_element_context_)),
       root_(new Element(document_, base::Token("root"))),
       source_location_(base::SourceLocation("[object SerializerTest]", 1, 1)) {}
diff --git a/src/cobalt/dom/text_test.cc b/src/cobalt/dom/text_test.cc
index 799c3dd..536b42f 100644
--- a/src/cobalt/dom/text_test.cc
+++ b/src/cobalt/dom/text_test.cc
@@ -41,7 +41,7 @@
 
 TextTest::TextTest()
     : html_element_context_(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-                            NULL, NULL, "") {
+                            NULL, NULL, NULL, "") {
   EXPECT_TRUE(GlobalStats::GetInstance()->CheckNoLeaks());
   document_ = new Document(&html_element_context_);
 }
diff --git a/src/cobalt/dom/window.cc b/src/cobalt/dom/window.cc
index cdab450..e901752 100644
--- a/src/cobalt/dom/window.cc
+++ b/src/cobalt/dom/window.cc
@@ -66,6 +66,7 @@
                loader::image::ImageCache* image_cache,
                loader::font::RemoteTypefaceCache* remote_typeface_cache,
                LocalStorageDatabase* local_storage_database,
+               media::CanPlayTypeHandler* can_play_type_handler,
                media::WebMediaPlayerFactory* web_media_player_factory,
                script::ExecutionState* execution_state,
                script::ScriptRunner* script_runner,
@@ -83,9 +84,10 @@
     : width_(width),
       height_(height),
       html_element_context_(new HTMLElementContext(
-          fetcher_factory, css_parser, dom_parser, web_media_player_factory,
-          script_runner, media_source_registry, resource_provider, image_cache,
-          remote_typeface_cache, dom_stat_tracker, language)),
+          fetcher_factory, css_parser, dom_parser, can_play_type_handler,
+          web_media_player_factory, script_runner, media_source_registry,
+          resource_provider, image_cache, remote_typeface_cache,
+          dom_stat_tracker, language)),
       performance_(new Performance(new base::SystemMonotonicClock())),
       ALLOW_THIS_IN_INITIALIZER_LIST(document_(new Document(
           html_element_context_.get(),
@@ -214,23 +216,51 @@
   DLOG_IF(WARNING, timeout < 0)
       << "Window::SetTimeout received negative timeout: " << timeout;
   timeout = std::max(timeout, 0);
-  return window_timers_->SetTimeout(handler, timeout);
+
+  int return_value = 0;
+  if (window_timers_) {
+    return_value = window_timers_->SetTimeout(handler, timeout);
+  } else {
+    DLOG(WARNING) << "window_timers_ does not exist.  Already destroyed?";
+  }
+
+  return return_value;
 }
 
-void Window::ClearTimeout(int handle) { window_timers_->ClearTimeout(handle); }
+void Window::ClearTimeout(int handle) {
+  if (window_timers_) {
+    window_timers_->ClearTimeout(handle);
+  } else {
+    DLOG(WARNING) << "window_timers_ does not exist.  Already destroyed?";
+  }
+}
 
 int Window::SetInterval(const WindowTimers::TimerCallbackArg& handler,
                         int timeout) {
   DLOG_IF(WARNING, timeout < 0)
       << "Window::SetInterval received negative timeout: " << timeout;
   timeout = std::max(timeout, 0);
-  return window_timers_->SetInterval(handler, timeout);
+
+  int return_value = 0;
+  if (window_timers_) {
+    return_value = window_timers_->SetInterval(handler, timeout);
+  } else {
+    DLOG(WARNING) << "window_timers_ does not exist.  Already destroyed?";
+  }
+
+  return return_value;
 }
 
 void Window::ClearInterval(int handle) {
-  window_timers_->ClearInterval(handle);
+  if (window_timers_) {
+    window_timers_->ClearInterval(handle);
+  } else {
+    DLOG(WARNING) << "window_timers_ does not exist.  Already destroyed?";
+  }
 }
 
+void Window::DestroyTimers() { window_timers_.reset(); }
+
 scoped_refptr<Storage> Window::local_storage() const { return local_storage_; }
 
 scoped_refptr<Storage> Window::session_storage() const {
diff --git a/src/cobalt/dom/window.h b/src/cobalt/dom/window.h
index 196c987..2bb6c07 100644
--- a/src/cobalt/dom/window.h
+++ b/src/cobalt/dom/window.h
@@ -46,6 +46,7 @@
 #include "cobalt/loader/font/remote_typeface_cache.h"
 #include "cobalt/loader/image/image_cache.h"
 #include "cobalt/loader/loader.h"
+#include "cobalt/media/can_play_type_handler.h"
 #include "cobalt/media/web_media_player_factory.h"
 #include "cobalt/script/callback_function.h"
 #include "cobalt/script/environment_settings.h"
@@ -90,6 +91,7 @@
          loader::image::ImageCache* image_cache,
          loader::font::RemoteTypefaceCache* remote_typeface_cache,
          LocalStorageDatabase* local_storage_database,
+         media::CanPlayTypeHandler* can_play_type_handler,
          media::WebMediaPlayerFactory* web_media_player_factory,
          script::ExecutionState* execution_state,
          script::ScriptRunner* script_runner,
@@ -202,6 +204,8 @@
 
   void ClearInterval(int handle);
 
+  void DestroyTimers();
+
   // Web API: Storage (implements)
   scoped_refptr<Storage> local_storage() const;
   scoped_refptr<Storage> session_storage() const;
diff --git a/src/cobalt/dom/window_test.cc b/src/cobalt/dom/window_test.cc
index 926a308..2a5db90 100644
--- a/src/cobalt/dom/window_test.cc
+++ b/src/cobalt/dom/window_test.cc
@@ -54,8 +54,8 @@
         window_(new Window(
             1920, 1080, css_parser_.get(), dom_parser_.get(),
             fetcher_factory_.get(), NULL, NULL, NULL, &local_storage_database_,
-            stub_media_module_.get(), NULL, NULL, NULL, NULL, url_, "", "en-US",
-            base::Callback<void(const GURL &)>(),
+            stub_media_module_.get(), stub_media_module_.get(), NULL, NULL,
+            NULL, NULL, url_, "", "en-US", base::Callback<void(const GURL &)>(),
             base::Bind(&MockErrorCallback::Run,
                        base::Unretained(&mock_error_callback_)),
             NULL, network_bridge::PostSender(),
diff --git a/src/cobalt/dom/window_timers.cc b/src/cobalt/dom/window_timers.cc
index df784cd..54f19ff 100644
--- a/src/cobalt/dom/window_timers.cc
+++ b/src/cobalt/dom/window_timers.cc
@@ -27,6 +27,12 @@
 int WindowTimers::SetTimeout(const TimerCallbackArg& handler, int timeout) {
   int handle = GetFreeTimerHandle();
   DCHECK(handle);
+
+  if (handle == 0) {  // unable to get a free timer handle
+    // avoid accidentally overwriting existing timers
+    return 0;
+  }
+
   scoped_ptr<base::Timer> timer(new base::OneShotTimer<TimerInfo>());
   timer->Start(FROM_HERE, base::TimeDelta::FromMilliseconds(timeout),
                base::Bind(&WindowTimers::RunTimerCallback,
@@ -40,6 +46,12 @@
 int WindowTimers::SetInterval(const TimerCallbackArg& handler, int timeout) {
   int handle = GetFreeTimerHandle();
   DCHECK(handle);
+
+  if (handle == 0) {  // unable to get a free timer handle
+    // avoid accidentally overwriting existing timers
+    return 0;
+  }
+
   scoped_ptr<base::Timer> timer(new base::RepeatingTimer<TimerInfo>());
   timer->Start(FROM_HERE, base::TimeDelta::FromMilliseconds(timeout),
                base::Bind(&WindowTimers::RunTimerCallback,
@@ -50,6 +62,8 @@
 
 void WindowTimers::ClearInterval(int handle) { timers_.erase(handle); }
 
+void WindowTimers::ClearAllIntervalsAndTimeouts() { timers_.clear(); }
+
 int WindowTimers::GetFreeTimerHandle() {
   int next_timer_index = current_timer_index_;
   while (true) {
diff --git a/src/cobalt/dom/window_timers.h b/src/cobalt/dom/window_timers.h
index 412f613..aa63575 100644
--- a/src/cobalt/dom/window_timers.h
+++ b/src/cobalt/dom/window_timers.h
@@ -44,6 +44,8 @@
 
   void ClearInterval(int handle);
 
+  void ClearAllIntervalsAndTimeouts();
+
  private:
   class TimerInfo : public base::RefCounted<TimerInfo> {
    public:
diff --git a/src/cobalt/dom_parser/html_decoder_test.cc b/src/cobalt/dom_parser/html_decoder_test.cc
index a3c5a22..d9ca19a 100644
--- a/src/cobalt/dom_parser/html_decoder_test.cc
+++ b/src/cobalt/dom_parser/html_decoder_test.cc
@@ -64,10 +64,11 @@
     : fetcher_factory_(NULL /* network_module */),
       dom_parser_(new Parser()),
       dom_stat_tracker_(new dom::DomStatTracker("HTMLDecoderTest")),
-      html_element_context_(
-          &fetcher_factory_, &stub_css_parser_, dom_parser_.get(),
-          NULL /* web_media_player_factory */, &stub_script_runner_, NULL, NULL,
-          NULL, NULL, dom_stat_tracker_.get(), ""),
+      html_element_context_(&fetcher_factory_, &stub_css_parser_,
+                            dom_parser_.get(), NULL /* can_play_type_handler */,
+                            NULL /* web_media_player_factory */,
+                            &stub_script_runner_, NULL, NULL, NULL, NULL,
+                            dom_stat_tracker_.get(), ""),
       document_(
           new dom::Document(&html_element_context_, dom::Document::Options())),
       root_(new dom::Element(document_, base::Token("element"))),
diff --git a/src/cobalt/dom_parser/libxml_parser_wrapper.cc b/src/cobalt/dom_parser/libxml_parser_wrapper.cc
index b6e09a7..993e453 100644
--- a/src/cobalt/dom_parser/libxml_parser_wrapper.cc
+++ b/src/cobalt/dom_parser/libxml_parser_wrapper.cc
@@ -159,8 +159,17 @@
     element->SetAttribute(attributes[i].name.as_string(),
                           attributes[i].value.as_string());
   }
-  element->OnParserStartTag(GetSourceLocation());
-  node_stack_.top()->InsertBefore(element, reference_node_);
+
+  if (node_stack_.size() < kMaxStackDepth) {
+    element->OnParserStartTag(GetSourceLocation());
+    node_stack_.top()->InsertBefore(element, reference_node_);
+  } else {
+    if (!depth_limit_exceeded_) {
+      depth_limit_exceeded_ = true;
+      LOG(WARNING) << "Parser discarded deeply nested elements.";
+    }
+  }
+
   node_stack_.push(element);
 }
 
@@ -168,7 +177,11 @@
   while (!node_stack_.empty()) {
     scoped_refptr<dom::Element> element = node_stack_.top()->AsElement();
     node_stack_.pop();
-    element->OnParserEndTag();
+
+    if (node_stack_.size() < kMaxStackDepth) {
+      element->OnParserEndTag();
+    }
+
     if (element->node_name() == name) {
       return;
     }
diff --git a/src/cobalt/dom_parser/libxml_parser_wrapper.h b/src/cobalt/dom_parser/libxml_parser_wrapper.h
index 8114403..4f39651 100644
--- a/src/cobalt/dom_parser/libxml_parser_wrapper.h
+++ b/src/cobalt/dom_parser/libxml_parser_wrapper.h
@@ -78,6 +78,10 @@
   };
   typedef std::vector<ParserAttribute> ParserAttributeVector;
 
+  // This restricts the depth of the nodes in the DOM tree. All elements at a
+  // depth deeper than this will be discarded.
+  static const size_t kMaxStackDepth = 32;
+
   LibxmlParserWrapper(
       const scoped_refptr<dom::Document>& document,
       const scoped_refptr<dom::Node>& parent_node,
@@ -89,6 +93,7 @@
         reference_node_(reference_node),
         first_chunk_location_(first_chunk_location),
         error_callback_(error_callback),
+        depth_limit_exceeded_(false),
         issue_level_(kNoIssue) {}
   virtual ~LibxmlParserWrapper() {}
 
@@ -137,6 +142,7 @@
   const scoped_refptr<dom::Node> reference_node_;
   const base::SourceLocation first_chunk_location_;
   const base::Callback<void(const std::string&)> error_callback_;
+  bool depth_limit_exceeded_;
   IssueSeverity issue_level_;
 
   std::stack<scoped_refptr<dom::Node> > node_stack_;
diff --git a/src/cobalt/h5vcc/h5vcc_account_manager.cc b/src/cobalt/h5vcc/h5vcc_account_manager.cc
index 69dd9db..0d239fa 100644
--- a/src/cobalt/h5vcc/h5vcc_account_manager.cc
+++ b/src/cobalt/h5vcc/h5vcc_account_manager.cc
@@ -17,6 +17,7 @@
 #include "cobalt/h5vcc/h5vcc_account_manager.h"
 
 #include "base/memory/scoped_ptr.h"
+#include "starboard/ps4/application_linking.h"
 #include "starboard/user.h"
 
 namespace cobalt {
diff --git a/src/cobalt/layout/anonymous_block_box.cc b/src/cobalt/layout/anonymous_block_box.cc
index 281cc70..4be8d5f 100644
--- a/src/cobalt/layout/anonymous_block_box.cc
+++ b/src/cobalt/layout/anonymous_block_box.cc
@@ -150,46 +150,42 @@
   while (child_box_iterator != child_boxes().end()) {
     Box* child_box = *child_box_iterator;
 
-    if (child_box->IsAbsolutelyPositioned()) {
-      inline_formatting_context->BeginEstimateStaticPosition(child_box);
-    } else {
-      // Attempt to add the child box to the inline formatting context.
-      Box* child_box_before_wrap =
-          inline_formatting_context->TryAddChildAndMaybeWrap(child_box);
-      // If |child_box_before_wrap| is non-NULL, then trying to add the child
-      // box caused a line wrap to occur, and |child_box_before_wrap| is set to
-      // the last box that was successfully placed on the line. This can
-      // potentially be any of the child boxes previously added. Any boxes
-      // following the returned box, including ones that were previously
-      // added, still need to be added to the inline formatting context.
-      if (child_box_before_wrap) {
-        // Iterate backwards until the last box added to the line is found, and
-        // then increment the iterator, so that it is pointing at the location
-        // of the first box to add the next time through the loop.
-        while (*child_box_iterator != child_box_before_wrap) {
-          --child_box_iterator;
-        }
+    // Attempt to add the child box to the inline formatting context.
+    Box* child_box_before_wrap =
+        inline_formatting_context->TryAddChildAndMaybeWrap(child_box);
+    // If |child_box_before_wrap| is non-NULL, then trying to add the child
+    // box caused a line wrap to occur, and |child_box_before_wrap| is set to
+    // the last box that was successfully placed on the line. This can
+    // potentially be any of the child boxes previously added. Any boxes
+    // following the returned box, including ones that were previously
+    // added, still need to be added to the inline formatting context.
+    if (child_box_before_wrap) {
+      // Iterate backwards until the last box added to the line is found, and
+      // then increment the iterator, so that it is pointing at the location
+      // of the first box to add the next time through the loop.
+      while (*child_box_iterator != child_box_before_wrap) {
+        --child_box_iterator;
+      }
 
-        // If |child_box_before_wrap| has a split sibling, then this potentially
-        // means that a split occurred during the wrap, and a new box needs to
-        // be added to the container (this will also need to be the first box
-        // added to the inline formatting context).
-        //
-        // If the split sibling is from a previous split, then it would have
-        // already been added to the line and |child_box_iterator| should
-        // be currently pointing at it. If this is not the case, then we know
-        // that this is a new box produced during the wrap, and it must be
-        // added to the container. This will be the first box added during
-        // the next iteration of the loop.
-        Box* split_child_after_wrap = child_box_before_wrap->GetSplitSibling();
-        Boxes::const_iterator next_child_box_iterator = child_box_iterator + 1;
-        if (split_child_after_wrap &&
-            (next_child_box_iterator == child_boxes().end() ||
-             *next_child_box_iterator != split_child_after_wrap)) {
-          child_box_iterator =
-              InsertSplitSiblingOfDirectChild(child_box_iterator);
-          continue;
-        }
+      // If |child_box_before_wrap| has a split sibling, then this potentially
+      // means that a split occurred during the wrap, and a new box needs to
+      // be added to the container (this will also need to be the first box
+      // added to the inline formatting context).
+      //
+      // If the split sibling is from a previous split, then it would have
+      // already been added to the line and |child_box_iterator| should
+      // be currently pointing at it. If this is not the case, then we know
+      // that this is a new box produced during the wrap, and it must be
+      // added to the container. This will be the first box added during
+      // the next iteration of the loop.
+      Box* split_child_after_wrap = child_box_before_wrap->GetSplitSibling();
+      Boxes::const_iterator next_child_box_iterator = child_box_iterator + 1;
+      if (split_child_after_wrap &&
+          (next_child_box_iterator == child_boxes().end() ||
+           *next_child_box_iterator != split_child_after_wrap)) {
+        child_box_iterator =
+            InsertSplitSiblingOfDirectChild(child_box_iterator);
+        continue;
       }
     }
 
diff --git a/src/cobalt/layout/box.cc b/src/cobalt/layout/box.cc
index c8739ee..4a57476 100644
--- a/src/cobalt/layout/box.cc
+++ b/src/cobalt/layout/box.cc
@@ -989,6 +989,13 @@
   }
 }
 
+namespace {
+bool AllBorderSidesShareSameProperties(const Border& border) {
+  return border.left == border.top && border.left == border.right &&
+         border.left == border.bottom;
+}
+}  // namespace
+
 void Box::RenderAndAnimateBorder(
     const base::optional<RoundedCorners>& rounded_corners,
     CompositionNode::Builder* border_node_builder,
@@ -1004,6 +1011,14 @@
   SetupBorderNodeFromStyle(rounded_corners, computed_style(),
                            &rect_node_builder);
 
+  if (rounded_corners &&
+      !AllBorderSidesShareSameProperties(*rect_node_builder.border)) {
+    LOG(WARNING)
+        << "Cobalt does not support rounded corners borders whose edges do not "
+           "all share the same properties.";
+    return;
+  }
+
   scoped_refptr<RectNode> border_node(new RectNode(rect_node_builder.Pass()));
   border_node_builder->AddChild(border_node);
 
diff --git a/src/cobalt/layout/box_generator.cc b/src/cobalt/layout/box_generator.cc
index 99f2b2c..2cfb06b 100644
--- a/src/cobalt/layout/box_generator.cc
+++ b/src/cobalt/layout/box_generator.cc
@@ -26,6 +26,7 @@
 #include "cobalt/cssom/keyword_value.h"
 #include "cobalt/cssom/property_definitions.h"
 #include "cobalt/cssom/property_value_visitor.h"
+#include "cobalt/cssom/url_value.h"
 #include "cobalt/dom/html_br_element.h"
 #include "cobalt/dom/html_element.h"
 #include "cobalt/dom/html_video_element.h"
@@ -631,6 +632,12 @@
     is_element_generated_ = true;
   }
 
+  void VisitURL(cssom::URLValue* url_value) OVERRIDE {
+    // TODO: Implement support for 'content: url(foo)'.
+    DLOG(ERROR) << "Unsupported content property value: "
+                << url_value->ToString();
+  }
+
   void VisitKeyword(cssom::KeywordValue* keyword) OVERRIDE {
     switch (keyword->value()) {
       case cssom::KeywordValue::kNone:
diff --git a/src/cobalt/layout/inline_container_box.cc b/src/cobalt/layout/inline_container_box.cc
index 4ce8255..2215a46 100644
--- a/src/cobalt/layout/inline_container_box.cc
+++ b/src/cobalt/layout/inline_container_box.cc
@@ -109,12 +109,7 @@
 
   for (Boxes::const_iterator child_box_iterator = child_boxes().begin();
        child_box_iterator != child_boxes().end(); ++child_box_iterator) {
-    Box* child_box = *child_box_iterator;
-    if (child_box->IsAbsolutelyPositioned()) {
-      line_box.BeginEstimateStaticPosition(child_box);
-    } else {
-      line_box.BeginAddChildAndMaybeOverflow(child_box);
-    }
+    line_box.BeginAddChildAndMaybeOverflow(*child_box_iterator);
   }
   line_box.EndUpdates();
 
diff --git a/src/cobalt/layout/inline_formatting_context.cc b/src/cobalt/layout/inline_formatting_context.cc
index a1d4098..eb739e2 100644
--- a/src/cobalt/layout/inline_formatting_context.cc
+++ b/src/cobalt/layout/inline_formatting_context.cc
@@ -48,8 +48,6 @@
 InlineFormattingContext::~InlineFormattingContext() {}
 
 Box* InlineFormattingContext::TryAddChildAndMaybeWrap(Box* child_box) {
-  DCHECK(child_box->GetLevel() == Box::kInlineLevel);
-
   // When an inline box exceeds the width of a line box, it is split into
   // several boxes and these boxes are distributed across several line boxes.
   //   https://www.w3.org/TR/CSS21/visuren.html#inline-formatting
@@ -65,10 +63,6 @@
   return child_box_before_wrap;
 }
 
-void InlineFormattingContext::BeginEstimateStaticPosition(Box* child_box) {
-  line_box_->BeginEstimateStaticPosition(child_box);
-}
-
 void InlineFormattingContext::EndUpdates() {
   // Treat the end of child boxes almost as an explicit line break,
   // but don't create the new line box.
diff --git a/src/cobalt/layout/inline_formatting_context.h b/src/cobalt/layout/inline_formatting_context.h
index 1611dd2..d19cca5 100644
--- a/src/cobalt/layout/inline_formatting_context.h
+++ b/src/cobalt/layout/inline_formatting_context.h
@@ -79,10 +79,6 @@
   // child boxes. The used values will be undefined until |EndUpdates| is
   // called.
   Box* TryAddChildAndMaybeWrap(Box* child_box);
-  // Asynchronously estimates the static position of the given child box.
-  // In CSS 2.1 the static position is only defined for absolutely positioned
-  // boxes. The position is undefined until |EndUpdates| is called.
-  void BeginEstimateStaticPosition(Box* child_box);
   // Ensures that the calculation of used values for all previously seen child
   // boxes is completed.
   void EndUpdates();
diff --git a/src/cobalt/layout/line_box.cc b/src/cobalt/layout/line_box.cc
index 9012f31..7a72a16 100644
--- a/src/cobalt/layout/line_box.cc
+++ b/src/cobalt/layout/line_box.cc
@@ -55,6 +55,7 @@
       ellipsis_width_(ellipsis_width),
       has_overflowed_(false),
       at_end_(false),
+      num_absolutely_positioned_boxes_before_first_box_justifying_line_(0),
       shrink_to_fit_width_(indent_offset_),
       height_(0),
       baseline_offset_from_top_(0),
@@ -62,9 +63,13 @@
       placed_ellipsis_offset_(0) {}
 
 Box* LineBox::TryAddChildAndMaybeWrap(Box* child_box) {
-  DCHECK(!child_box->IsAbsolutelyPositioned());
   DCHECK(!at_end_);
 
+  if (child_box->IsAbsolutelyPositioned()) {
+    BeginEstimateStaticPositionForAbsolutelyPositionedChild(child_box);
+    return NULL;
+  }
+
   UpdateSizePreservingTrailingWhiteSpace(child_box);
 
   // If the line box hasn't already overflowed the line, then attempt to add it
@@ -131,52 +136,15 @@
 }
 
 void LineBox::BeginAddChildAndMaybeOverflow(Box* child_box) {
-  DCHECK(!child_box->IsAbsolutelyPositioned());
+  if (child_box->IsAbsolutelyPositioned()) {
+    BeginEstimateStaticPositionForAbsolutelyPositionedChild(child_box);
+    return;
+  }
 
   UpdateSizePreservingTrailingWhiteSpace(child_box);
   BeginAddChildInternal(child_box);
 }
 
-void LineBox::BeginEstimateStaticPosition(Box* child_box) {
-  DCHECK(child_box->IsAbsolutelyPositioned());
-
-  // The term "static position" (of an element) refers, roughly, to the position
-  // an element would have had in the normal flow. More precisely:
-  //
-  // The static-position containing block is the containing block of a
-  // hypothetical box that would have been the first box of the element if its
-  // specified 'position' value had been 'static'.
-  //
-  // The static position for 'left' is the distance from the left edge of the
-  // containing block to the left margin edge of a hypothetical box that would
-  // have been the first box of the element if its 'position' property had been
-  // 'static' and 'float' had been 'none'. The value is negative if the
-  // hypothetical box is to the left of the containing block.
-  //   https://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width
-
-  // For the purposes of this section and the next, the term "static position"
-  // (of an element) refers, roughly, to the position an element would have had
-  // in the normal flow. More precisely, the static position for 'top' is the
-  // distance from the top edge of the containing block to the top margin edge
-  // of a hypothetical box that would have been the first box of the element if
-  // its specified 'position' value had been 'static'.
-  //   https://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height
-
-  switch (child_box->GetLevel()) {
-    case Box::kInlineLevel:
-      // NOTE: This case is never reached due to a bug.
-      child_box->SetStaticPositionLeftFromParent(shrink_to_fit_width_);
-      break;
-    case Box::kBlockLevel:
-      child_box->SetStaticPositionLeftFromParent(LayoutUnit());
-      break;
-    default:
-      NOTREACHED();
-      break;
-  }
-  child_box->SetStaticPositionTopFromParent(LayoutUnit());
-}
-
 void LineBox::EndUpdates() {
   at_end_ = true;
 
@@ -186,6 +154,12 @@
     CollapseTrailingWhiteSpace();
   }
 
+  // Set the leading and trailing white space flags now. This ensures that the
+  // values returned by HasLeadingWhiteSpace() and HasTrailingWhiteSpace()
+  // remain valid even after bidi reversals.
+  has_leading_white_space_ = HasLeadingWhiteSpace();
+  has_trailing_white_space_ = HasTrailingWhiteSpace();
+
   ReverseChildBoxesByBidiLevels();
   UpdateChildBoxLeftPositions();
   SetLineBoxHeightFromChildBoxes();
@@ -194,15 +168,31 @@
 }
 
 bool LineBox::HasLeadingWhiteSpace() const {
-  return first_non_collapsed_child_box_index_ &&
-         child_boxes_[*first_non_collapsed_child_box_index_]
-             ->HasLeadingWhiteSpace();
+  // |has_leading_white_space_| should only ever be set by EndUpdates() after
+  // |at_end_| has been set to true;
+  DCHECK(at_end_ || !has_leading_white_space_);
+
+  // If |has_leading_white_space_| has been set, then use it. Otherwise, grab
+  // the leading white space state from the first non-collapsed child box.
+  return has_leading_white_space_
+             ? *has_leading_white_space_
+             : first_non_collapsed_child_box_index_ &&
+                   child_boxes_[*first_non_collapsed_child_box_index_]
+                       ->HasLeadingWhiteSpace();
 }
 
 bool LineBox::HasTrailingWhiteSpace() const {
-  return last_non_collapsed_child_box_index_ &&
-         child_boxes_[*last_non_collapsed_child_box_index_]
-             ->HasTrailingWhiteSpace();
+  // |has_trailing_white_space_| should only ever be set by EndUpdates() after
+  // |at_end_| has been set to true;
+  DCHECK(at_end_ || !has_trailing_white_space_);
+
+  // If |has_trailing_white_space_| has been set, then use it. Otherwise, grab
+  // the trailing white space state from the last non-collapsed child box.
+  return has_trailing_white_space_
+             ? *has_trailing_white_space_
+             : last_non_collapsed_child_box_index_ &&
+                   child_boxes_[*last_non_collapsed_child_box_index_]
+                       ->HasTrailingWhiteSpace();
 }
 
 bool LineBox::IsCollapsed() const {
@@ -215,7 +205,8 @@
 
 size_t LineBox::GetFirstBoxJustifyingLineExistenceIndex() const {
   return first_box_justifying_line_existence_index_.value_or(
-      child_boxes_.size());
+             child_boxes_.size()) +
+         num_absolutely_positioned_boxes_before_first_box_justifying_line_;
 }
 
 bool LineBox::IsEllipsisPlaced() const { return is_ellipsis_placed_; }
@@ -474,6 +465,49 @@
   return false;
 }
 
+void LineBox::BeginEstimateStaticPositionForAbsolutelyPositionedChild(
+    Box* child_box) {
+  if (!first_box_justifying_line_existence_index_) {
+    ++num_absolutely_positioned_boxes_before_first_box_justifying_line_;
+  }
+
+  // The term "static position" (of an element) refers, roughly, to the position
+  // an element would have had in the normal flow. More precisely:
+  //
+  // The static-position containing block is the containing block of a
+  // hypothetical box that would have been the first box of the element if its
+  // specified 'position' value had been 'static'.
+  //
+  // The static position for 'left' is the distance from the left edge of the
+  // containing block to the left margin edge of a hypothetical box that would
+  // have been the first box of the element if its 'position' property had been
+  // 'static' and 'float' had been 'none'. The value is negative if the
+  // hypothetical box is to the left of the containing block.
+  //   https://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width
+
+  // For the purposes of this section and the next, the term "static position"
+  // (of an element) refers, roughly, to the position an element would have had
+  // in the normal flow. More precisely, the static position for 'top' is the
+  // distance from the top edge of the containing block to the top margin edge
+  // of a hypothetical box that would have been the first box of the element if
+  // its specified 'position' value had been 'static'.
+  //   https://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height
+
+  switch (child_box->GetLevel()) {
+    case Box::kInlineLevel:
+      // NOTE: This case is never reached due to a bug.
+      child_box->SetStaticPositionLeftFromParent(shrink_to_fit_width_);
+      break;
+    case Box::kBlockLevel:
+      child_box->SetStaticPositionLeftFromParent(LayoutUnit());
+      break;
+    default:
+      NOTREACHED();
+      break;
+  }
+  child_box->SetStaticPositionTopFromParent(LayoutUnit());
+}
+
 void LineBox::BeginAddChildInternal(Box* child_box) {
   if (!first_box_justifying_line_existence_index_ &&
       child_box->JustifiesLineExistence()) {
diff --git a/src/cobalt/layout/line_box.h b/src/cobalt/layout/line_box.h
index a330f96..af97faa 100644
--- a/src/cobalt/layout/line_box.h
+++ b/src/cobalt/layout/line_box.h
@@ -84,10 +84,6 @@
   // Asynchronously adds the given child box to the line, ignoring any possible
   // overflow. The used values will be undefined until |EndUpdates| is called.
   void BeginAddChildAndMaybeOverflow(Box* child_box);
-  // Asynchronously estimates the static position of the given child box.
-  // In CSS 2.1 the static position is only defined for absolutely positioned
-  // boxes. The used values will be undefined until |EndUpdates| is called.
-  void BeginEstimateStaticPosition(Box* child_box);
   // Ensures that the calculation of used values for all previously seen child
   // boxes is completed.
   void EndUpdates();
@@ -108,6 +104,8 @@
   // treated as not existing for any other purpose.
   //   https://www.w3.org/TR/CSS21/visuren.html#inline-formatting
   bool LineExists() const;
+  // Returns the first box justifing the line's existence.
+  // NOTE: This includes absolutely positioned children.
   size_t GetFirstBoxJustifyingLineExistenceIndex() const;
 
   bool IsEllipsisPlaced() const;
@@ -147,6 +145,11 @@
   bool TryWrapChildrenAtLastOpportunity(
       WrapOpportunityPolicy wrap_opportunity_policy);
 
+  // Asynchronously estimates the static position of the given child box.
+  // In CSS 2.1 the static position is only defined for absolutely positioned
+  // boxes. The used values will be undefined until |EndUpdates| is called.
+  void BeginEstimateStaticPositionForAbsolutelyPositionedChild(Box* child_box);
+
   void BeginAddChildInternal(Box* child_box);
 
   void ReverseChildBoxesByBidiLevels();
@@ -183,10 +186,21 @@
   typedef std::vector<Box*> ChildBoxes;
   ChildBoxes child_boxes_;
 
+  int num_absolutely_positioned_boxes_before_first_box_justifying_line_;
+
+  // Accessing boxes indicated by these indices are only valid before
+  // EndUpdates() is called, because the positions of the boxes may change
+  // during bidirectional sorting.
   base::optional<size_t> first_box_justifying_line_existence_index_;
   base::optional<size_t> first_non_collapsed_child_box_index_;
   base::optional<size_t> last_non_collapsed_child_box_index_;
 
+  // These flags are set when EndUpdates() is called. This allows the leading
+  // and trailing white space state of the line to be accessible even after
+  // the boxes have been moved as a result of bidirectional sorting.
+  base::optional<bool> has_leading_white_space_;
+  base::optional<bool> has_trailing_white_space_;
+
   LayoutUnit shrink_to_fit_width_;
   LayoutUnit height_;
   LayoutUnit baseline_offset_from_top_;
diff --git a/src/cobalt/layout/replaced_box.cc b/src/cobalt/layout/replaced_box.cc
index 15f0d6a..d8a694c 100644
--- a/src/cobalt/layout/replaced_box.cc
+++ b/src/cobalt/layout/replaced_box.cc
@@ -420,20 +420,32 @@
               // Constraint: (w < min-width) and (h < min-height), where
               // (min-width/w > min-height/h)
               set_width(min_width);
-              set_height(std::min(*max_height,
-                                  min_width * (h.toFloat() / w.toFloat())));
+              LayoutUnit height = min_width * (h.toFloat() / w.toFloat());
+              if (max_height) {
+                set_height(std::min(*max_height, height));
+              } else {
+                set_height(height);
+              }
             } else {
               // Constraint: (w < min-width) and (h < min-height), where
               // (min-width/w <= min-height/h)
-              set_width(std::min(*max_width,
-                                 min_height * (w.toFloat() / h.toFloat())));
+              LayoutUnit width = min_height * (w.toFloat() / h.toFloat());
+              if (max_width) {
+                set_width(std::min(*max_width, width));
+              } else {
+                set_width(width);
+              }
               set_height(min_height);
             }
           } else {  // not h < min-height
             // Constraint: w < min-width
             set_width(min_width);
-            set_height(
-                std::min(min_width * (h.toFloat() / w.toFloat()), *max_height));
+            LayoutUnit height = min_width * (h.toFloat() / w.toFloat());
+            if (max_height) {
+              set_height(std::min(height, *max_height));
+            } else {
+              set_height(height);
+            }
           }
         }
       } else {  // not w < min_width
@@ -445,8 +457,12 @@
         } else {  // not h_greater_than_max_height
           if (h < min_height) {
             // Constraint: h < min-height
-            set_width(
-                std::min(min_height * (w.toFloat() / h.toFloat()), *max_width));
+            LayoutUnit width = min_height * (w.toFloat() / h.toFloat());
+            if (max_width) {
+              set_width(std::min(width, *max_width));
+            } else {
+              set_width(width);
+            }
             set_height(min_height);
           } else {  // not h < min_height
             // Constraint: none
diff --git a/src/cobalt/layout/used_style.cc b/src/cobalt/layout/used_style.cc
index b8ca707..02227e0 100644
--- a/src/cobalt/layout/used_style.cc
+++ b/src/cobalt/layout/used_style.cc
@@ -757,14 +757,23 @@
   }
 }
 
+// Compares ColorStops by position.
+bool ColorStopPositionComparator(const render_tree::ColorStop& x,
+                                 const render_tree::ColorStop& y) {
+  return x.position < y.position;
+}
+
 render_tree::ColorStopList ConvertToRenderTreeColorStopList(
     const cssom::ColorStopList& css_color_stop_list,
     float gradient_line_length) {
   render_tree::ColorStopList ret;
 
+  ret.reserve(css_color_stop_list.size());
+
   // The description of this process is defined here:
   //   https://www.w3.org/TR/css3-images/#color-stop-syntax
   float largest_position = 0.0f;
+  const float kMaxPositionSupported = 1.0f;
   for (size_t i = 0; i < css_color_stop_list.size(); ++i) {
     const cssom::ColorStop& css_color_stop = *css_color_stop_list[i];
 
@@ -791,6 +800,10 @@
 
       // Ensure that it is larger than all previous stop positions.
       render_tree_position = std::max(largest_position, render_tree_position);
+      DLOG_IF(WARNING, render_tree_position > kMaxPositionSupported)
+          << "Color stop's position which is larger than 1.0 is not supported";
+      render_tree_position =
+          std::min(render_tree_position, kMaxPositionSupported);
       largest_position = render_tree_position;
     } else {
       // If the position is not specified, fill it in as 0 if it is the first,
@@ -812,6 +825,11 @@
 
   InterpolateUnspecifiedColorStopPositions(&ret);
 
+  // According to the spec @ https://www.w3.org/TR/css3-images/#linear-gradients
+  // the color-stops can be in unsorted order.  The color-stops are sorted
+  // to make the rendering code easier to write and faster to execute.
+  std::sort(ret.begin(), ret.end(), ColorStopPositionComparator);
+
   return ret;
 }
 }  // namespace
diff --git a/src/cobalt/layout_tests/layout_tests.cc b/src/cobalt/layout_tests/layout_tests.cc
index 9ceb258..c2e63c0 100644
--- a/src/cobalt/layout_tests/layout_tests.cc
+++ b/src/cobalt/layout_tests/layout_tests.cc
@@ -89,21 +89,20 @@
   browser::WebModule::LayoutResults layout_results = SnapshotURL(
       GetParam().url, viewport_size, pixel_tester.GetResourceProvider());
 
-  render_tree::animations::AnimateNode* animated_node =
-      base::polymorphic_downcast<render_tree::animations::AnimateNode*>(
-          layout_results.render_tree.get());
+  scoped_refptr<render_tree::animations::AnimateNode> animate_node =
+      new render_tree::animations::AnimateNode(layout_results.render_tree);
+  scoped_refptr<render_tree::Node> animated_tree =
+      animate_node->Apply(layout_results.layout_time);
 
   bool results =
-      pixel_tester.TestTree(animated_node->Apply(layout_results.layout_time),
-                            GetParam().base_file_path);
+      pixel_tester.TestTree(animated_tree, GetParam().base_file_path);
   EXPECT_TRUE(results);
 
   if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kRebaseline) ||
       (!results &&
        CommandLine::ForCurrentProcess()->HasSwitch(
            switches::kRebaselineFailedTests))) {
-    pixel_tester.Rebaseline(layout_results.render_tree,
-                            GetParam().base_file_path);
+    pixel_tester.Rebaseline(animated_tree, GetParam().base_file_path);
   }
 }
 
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/layout_tests.txt b/src/cobalt/layout_tests/testdata/benchmarks/layout_tests.txt
new file mode 100644
index 0000000..e5af5b3
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/layout_tests.txt
@@ -0,0 +1 @@
+youtube-2015-q3-initial-layout:1920x1080, file:///cobalt/layout_tests/benchmarks/youtube-2015-q3/index.html
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/-9-kyTW8ZkZNDHQJ6FgpwQ/1.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/-9-kyTW8ZkZNDHQJ6FgpwQ/1.jpg
new file mode 100644
index 0000000..fc5fc1c
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/-9-kyTW8ZkZNDHQJ6FgpwQ/1.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/4R8DWoMoI7CAwX8_LjQHig/1.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/4R8DWoMoI7CAwX8_LjQHig/1.jpg
new file mode 100644
index 0000000..0b1dda7
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/4R8DWoMoI7CAwX8_LjQHig/1.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/Egdi0XIXXZ-qJOFPf4JSKw/1.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/Egdi0XIXXZ-qJOFPf4JSKw/1.jpg
new file mode 100644
index 0000000..5abfe0e
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/Egdi0XIXXZ-qJOFPf4JSKw/1.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/F0pVplsI8R5kcAqgtoRqoA/1.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/F0pVplsI8R5kcAqgtoRqoA/1.jpg
new file mode 100644
index 0000000..429bdae
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/F0pVplsI8R5kcAqgtoRqoA/1.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/OpNcN46UbXVtpKMrmU4Abg/1.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/OpNcN46UbXVtpKMrmU4Abg/1.jpg
new file mode 100644
index 0000000..861caa9
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/OpNcN46UbXVtpKMrmU4Abg/1.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/YfdidRxbB8Qhf0Nx7ioOYw/1.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/YfdidRxbB8Qhf0Nx7ioOYw/1.jpg
new file mode 100644
index 0000000..75357d6
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/YfdidRxbB8Qhf0Nx7ioOYw/1.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/i-g4cjqGV7jvU8aeSuj0jQ/1.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/i-g4cjqGV7jvU8aeSuj0jQ/1.jpg
new file mode 100644
index 0000000..e8b0b20
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/i-g4cjqGV7jvU8aeSuj0jQ/1.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/xAgnFbkxldX6YUEvdcNjnA/1.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/xAgnFbkxldX6YUEvdcNjnA/1.jpg
new file mode 100644
index 0000000..40edb65
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/i/xAgnFbkxldX6YUEvdcNjnA/1.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/0vEKItRNIb0/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/0vEKItRNIb0/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/0vEKItRNIb0/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/1dXVzBU5p-Q/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/1dXVzBU5p-Q/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/1dXVzBU5p-Q/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/2A07xMhKC6g/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/2A07xMhKC6g/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/2A07xMhKC6g/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/59_zMJRhFM0/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/59_zMJRhFM0/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/59_zMJRhFM0/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/8VstEBbwhnc/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/8VstEBbwhnc/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/8VstEBbwhnc/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/D-YPnDvTCmI/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/D-YPnDvTCmI/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/D-YPnDvTCmI/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/F50yjSws9gQ/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/F50yjSws9gQ/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/F50yjSws9gQ/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/GwzBLYGRj6c/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/GwzBLYGRj6c/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/GwzBLYGRj6c/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/LZoilVdo7Hw/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/LZoilVdo7Hw/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/LZoilVdo7Hw/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/M9WlASe5ThU/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/M9WlASe5ThU/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/M9WlASe5ThU/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/MODTYlzxY9U/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/MODTYlzxY9U/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/MODTYlzxY9U/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/RL7grUEo960/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/RL7grUEo960/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/RL7grUEo960/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/XilhAJZ2qxs/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/XilhAJZ2qxs/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/XilhAJZ2qxs/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/Z31LDqbhN8U/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/Z31LDqbhN8U/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/Z31LDqbhN8U/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/_TWbD3MKfMI/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/_TWbD3MKfMI/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/_TWbD3MKfMI/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/eOOyxSMI0aE/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/eOOyxSMI0aE/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/eOOyxSMI0aE/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/q14aPbvbvl8/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/q14aPbvbvl8/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/q14aPbvbvl8/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/qkKRkfZYhlE/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/qkKRkfZYhlE/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/qkKRkfZYhlE/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/qrZcKwcVwk8/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/qrZcKwcVwk8/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/qrZcKwcVwk8/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/rs-Ou-gjReQ/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/rs-Ou-gjReQ/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/rs-Ou-gjReQ/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/rtzlT78OEks/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/rtzlT78OEks/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/rtzlT78OEks/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/spC883rn6zk/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/spC883rn6zk/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/spC883rn6zk/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/tCehxI5a1y0/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/tCehxI5a1y0/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/tCehxI5a1y0/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/tnfPNYpi8rc/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/tnfPNYpi8rc/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/tnfPNYpi8rc/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/vvFHyFW_jFc/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/vvFHyFW_jFc/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/vvFHyFW_jFc/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/wNRUzu4fTgw/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/wNRUzu4fTgw/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/wNRUzu4fTgw/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/x5ZxRObLLzE/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/x5ZxRObLLzE/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/x5ZxRObLLzE/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/zzmrTdAtEu4/hqdefault.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/zzmrTdAtEu4/hqdefault.jpg
new file mode 100644
index 0000000..e686f50
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/i.ytimg.com/vi/zzmrTdAtEu4/hqdefault.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/index.html b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/index.html
new file mode 100644
index 0000000..5d33c44
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/index.html
@@ -0,0 +1,1751 @@
+<html xmlns:yt="http://youtube.com"><head><meta charset="utf-8">
+    
+    
+    <title>YouTube TV</title>
+    
+  <style>#loader { height: 100%; left: 0px; position: absolute; top: 0px; width: 100%; z-index: 0; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAmwAAAEsCAYAAAB+Je/UAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAABVsSURBVFjD7dntcavAGYDRWwIlUIJKoARKoASVQAcqgRIogRJUAiVQArETPKN4LFsfC7sL5505kx9JrvXF7sPyb57nfwAApMuHAAAg2AAAEGwAAIINAADBBgCAYAMAEGwAAAg2AADBBgCAYAMAQLABAAg2AAAEGwAAgg0AQLABACDYAAAEGwAAgg0AAMEGACDYAAAQbAAAgg0AAMEGAIBgAwAQbAAACDYAAAQbAIBgAwBAsAEACDYAAAQbAACCDQBAsAEAINgAAAQbAACCDQAAwQYAINgAABBsAAAINgAAwQYAgGADABBsAAAINgAABBsAgGADAECwAQAINgAABBsAAIINAECwAQAg2AAAEGwAAIINAADBBgAg2AB4Qfmh+kX9oX3A5cPwgmne70wvfibtg+o/vrvS7xvBBrCd0w+b8U8beHcnAMbZmP+f8c5vpbvz2/r++zu5LhFswF59bXbNt83w+6ZpTI7z20lhLfQEG0BKipsTsF6AGfNr4PU3J3iF9UOwAaz9yPLy4WoPNuatuS7XkpM4wQYQRLmcDIz2WGNWmXG5xpy8CTaAl0Kts5cas+l0y7VnDRJsAL8qhJox0efixE2wAdxz/jDZK41JYj6vxdq6JNgAbk/VBvujMUlO77RNsAGcnKoZk/yMy7VqzRJswAE19kFjsnpE2li3BBsg1owx6Y9oE2yAWDPGiDYEGyDWjDGiTbAB3FXZ44zZ1Zysa4IN2Jfiw2R/M2ZXMy7XtjVOsAE70dvbjNnl9NY3wQbsQ21PM2bXU1nnBBuQv9F+ZszuH41a6wQbkLHGXmbMIaax3gk2wOmaMcYpG4INcLpmjHHKJtiA47nav4w51AzWPcEG5KWydxlzyCmtf4INyEdn3zLmkHOx/gk2IB+TfcuYQ85k/RNsQB5qe5Yxh57aOijYAI9DjTFpT2cdFGyAx6HGmLTHY1HBlrUhoC2Om9uAr9f373GoMeZYc7IeCrZcXTM7bg51SnL13R/KJdDvpt258WCPx3xWx5vWeijYcnUOeCGMK7/WU8DXevbduzF5YY5w4n6UqXxWhxxPVwRbtsrAF0OZSVw6Fj+OIuDvRrAJNsGW/1gXBZvHoiufXPWZnASSltpCL0IEmwn43SPYdvFYtF/xdU6BXuPFd34oF8EmQgSbuZnWuijYPBb9X1St8RpPAV9j7Ts/lJAbq89KsAm2/GewLgo2C/V6x81t4kFJukKOdUCwCbb8xz4g2LLWJH7cHGpx7HzXh3IKvNALNsEm2PYxpfVRsOWqCHghXBM+JWl814dSCzYRItjMRk+CEGyb6QNeDEXA11Ul+rpIXyvYRIhgMxs9CUKwZflYtE5w0x18x4fTCTYRItiMYBNsHoven0uCm8jZd3w4oTdVn5dgE2z7GDfwgs1j0WXGBCOy9P0ezlWwiRDBZgSbYPNYdP1AqhMLSPISegSbYBNs+5jJ+ijY9mAKdEE0AV7LJcFHtAg2wSbYBFv+Y40UbNnrAl0MfUKPtCrf6+FUFngRItjML1NYJwVb7kI9hnz3yLlw9I1gE2yCzST6G0Cw7eqx6CmBcOx8n248As0QUMjICmWyWQs2vwEE2zEfi7ZvvIZLoNdQ+z4PqU18swj1Po1gM6/N2Top2JxO/P+JxKuvYQz0Ggrfp2ATbEawmYAHCgi2pIQKplf+dhnob/e+R6fEgs0INiPYBNuexXwk2TjyZucbqmATbCbuDNZJwbYXp0AXxSXi6UjpexRsgs0INiPYBJvHon/PNaO/y35Mgs0INiPYBJvHouuddJURT/bYj9RHsAk2s5/rEMG2m8eizRN/swn0N0++P8Em2IxgM4JNsHks+vh0T/y9PsDfm3xvh1YeaKMwgs0INsHGf7UbB9S0cSCyP5VgM4LNeBIj2JxWrHdhhHoEW/veBJtgM4LNrPw7QLAl5xrgwjg/8HfOgS7CYsXPolgu8nYx/KBf/rvGgiDYBJtgM4JNsLGVECHVP/B3+o3+zrM+T/4uH8Y3X1ezckx+19wJyme8+sjgEuBvv/q+W8FmEgu26eZGrvqmWa6Xawaf27C81p/ex5fzzc3sJNgEG3k+Fv3r74S4uJsVgifkfL7HbvlM1/7e2ogL2rDB70WwhZnul833Ed2bv693pB5sn/+7+smbwy6h3+m0BNo7n1eIG961prW/CzaPRZ9fJEM9xgoRQqeNHnm0K5+4CTbBtsWm1Ub8HFINtuHNv1FFPp0aA9/8fqnntB4nCzbB5rHonbmsvMleE4mcZxfG0yzYBJtg20OwTctaGeK7LebtH5NOK4XaT08vUnhcKtgEm8eiLwTVEPni+1wc+4iPHdZYJI8abP2c/gi2/QXbdYWbr2LDsOlXPvFPac0VbILNY9EHplhx4znN+dzJ/jSho+2owZbSIxfBdoxgG1aMnWrn4RLzRLy3rws2j0Wfi5IQC9KYeaytEW2CTbAJtvWDrdtg7e0yulF89RFpjBns64LNY9H7060UFl2CC2GszUSwCTbBtk2wdRutvWs9Gk0h1mJGm2ATbB6LPnkSFuKEq450YrjGTIEerwg2wSbY1gu264qPQbe4uWzn9PaXi2ATbKT1WLT8ducYYwM8Jb6hh1hIjhps05z+CLa8g+2ycayFXrP6HR8KCDbBRsDHouebf6+OtPjkcApTz4ItVsQINsGWojGhE/w195itbrpGe7pg81j08cAKcQTePPn6q0w29XEWbIJNsAm2sI9FmwzeZ5vhtYhg2+Vj0Snw8fezd4vDnM/Us2ATbIJNsP1Pc5ATpWLDUzZ7umDzWPSBBbMI8O9cn3ztpzmv6WfBJtgEm2AL83TgnNF7vWR2LSLYdvtYtF1Oj+aNF6DQi0C3vIZqeT9toFPD2ykFm2ATbFkE22n5t9vlP8sV/saWTyP+OgWrllO/5uYmPKWDAcEm2AjwWPS6xM67c3rydY8BT75+W5zqgEf6jWATbIIt2WArls/g3toyBA636Y01K1SUDn/cxIZ6v9eMrkUE264fi44B/v8x7tj6Jxa2acO/J9gEm2DbNtjqB9ex6YWby9DXVhPgbzcPrmmh3u85o2sRwbbrx6LvzuWFxebdmZ489j8H+puC7TGVYBNsGwXbs+/7GjnY3j31Kp+8AX12rbx30yvYBBsBXCJvevWTrzfEI9jzC59TiMewp1mwCTbBlkqwvbr2NZHW3XGOE4pdIr9xwSbYDu8UccN75dQpxIlgMccJ23oWbIJNsKUSbK/+vocIJ3uf00dc64tIn7VgE2yscHo0b7QAvTvDHC9s21mwCTbBlnuwhQiYNsJ3/M5NZzOn/STHPi7YDqOLtOE9uwiUkTe2GIEq2ASbYEsv2KoIn3fM9/vuY9GzYBNshFFH2vCevUsNsZHXc7xj/WEWbIJNsO0h2NoIa24V8Xd2ffNvV5lciwi2LGw9wxwnLKs5XrCNgk2wCTbB9uJv/J2/V0b+vQs2wUZA/cab3TlSvJRvfEaXCAuLYBNsgi29YBvmvIKtSuD3LtgEG4GcN97syjlOvMTa1ASbYBNsgi3nYKtmwSbYSEK54UY3zvkEk2ATbIJNsMUOthiBKNgEGwkbN9roLgcOtkKwCTbBJtgOGGxjBtcigi0bl402umo+brBVs2ATbIJNsB0v2IYMrkUEWzbqDTa5KbNHkoJNsAk2wSbYBJtgIzlrTyfYBJtgE2yCTbAJNsFGuhfV5zSCTbAJNsEm2ASbYBNsxI+S36YQbIJNsAk2wSbYBJtgI/6FfW/6BIJJsAk2wSbYBJtgQ7DtwlpzFmyCTbAJNsEm2ASbYCOMtS6sUrAJNsEm2ATb5sF2Wv6Nd5wEm2AjPe0KF9Q1kdcl2ASbYBNsRwu2PR8ECDbBdmhrbJgXwSbYBJtgE2yCTbAJNsIpVrigTrNgE2yCTbAJNsEm2AQbQV0DXkxTQo9qBZtgE2yCTbAJNgTbbnQBL6ZOsAk2wSbYBJtgE2yCjfDOAS+mWrAJNsEm2ASbYBNsgo3wQm6a1SzYBJtgE2yCTbAJNsGGYBNsgk2wCTbBJtgQbIJNsAk2wSbYBJtgE2yCDcEm2ASbYBNsgk2wCTbBhmATbIJNsAk2wSbYEGyCTbAJNsEm2ASbYBNsgg3BJtgEm2ATbIJNsAk2wYZgE2wRg+3fnMcINsGWS7DlchMk2AQbgk2wCTbBJtgEm2BDsAk2wSbYBJtgE2yCTbAJNgSbYBNsgk2wCTbBJtgEG4JNsAk2wSbYBJtgE2w+BMEm2ASbYBNsgk2wCTbBhmATbIJNsAk2wXaUYLvarwWbYBNsgi3e5z0JNsEm2ATbBp8Ngk2wCTbBFmkzFWyCTbAJNgSbYBNsgk2wCTbBJtgEm2BDsAk2wSbYBJtgE2yCTbAh2ASbYBNsgk2wbRhFa13Tvf1asAk2wSbY4n3evWATbIJNsG3w20ewCTbBJtgif9aCTbAJNsGGYBNsgk2wCTbBJtgEm2ATbAi2PQZbIdgEm2ATbIJNsAk2BFvawZbDqV4KwXYWbIJNsAm2DfcXBJtgE2yCLfLvT7AJttyDbdpBsF0Fm2BDsD0zpzf+fifYBJtgE2yRTrxyD7a1RrAJNsGW4AVVRX4t7wbMKNgEm2DbRbBdMgu2046DrbRfCzbBts9gayIe6Q+zYHtUIdgEW8LB1kZYy6qIv7M+4WCzXws2wZZgsJUBXssl4oLTZRRsVQKLqWBLP9gu8zGDrY7web/7fq8Rf1+CTbBxsGALcdFfX/y7daRNNUawfZ5uTYJNsD1wLRUHDbYywuf97nd8ifRkYs3rebJXCzbSDbYQj+leWWy7AH+3ntMPtiLAo99QUTMKtmSDbQoQLbkG2xjgPb9yXfcR1/R3v+vTStfgYK8WbKQbbCHC6dnHOKFOnMo5TrDVG3++oaJmmNOePQXb+clYOyXw/t9dV/qIjwdfua5DhOIrN0Ehoqhe6RoUbIKNhIOtCfSantlwLgH+3rThwv5KoBZvbGCCLf9gOz3xOz4FXmtirSvFCzcoU6DHwK/+tssI63qI9btd6RrsZ3u1YCPZYCsDvabrgwtvE3lhCbHQjQ9s1teVFtTYp6mCLdzpy3WFWPuXwLryzDVWB/qbrwZbs/FNbxP5/W7xu0ewCbaVgu3VY/17IVP/cvd9CfgZNHPcO9PuzntsAz3uXSNq2jnt2VuwVXd+C9PKG2MqN4LdHydrdQJrWKgTpfqP1zAFjLVixWtQsAk2Eg+2S+CLflwWwnb5t9e4GywS+B7G5f21Gz5uFGzbBNsQMFzaG02gR4CpB9vt+282+AxirCX31pf2mzrwe21WvAbP9mrBRtrBVs55TZ/I95Bb1NSCbfNgiyGlYNvCu+tXbpFyXfEarGZ7tWAj6WD7t+EJUez3f+Rgq3b83gTbcYPt3RuR8aD7iGATbGQabLmEzPXN91kcONhOgu3hmQRbNtoA33eTyXtd+8a6mO3Vgo3kgy2XU7YqkQ0916gRbNu/nmd0gi3KujVlECtNRtcggk2wrbywlsvCler0gd7nNcJr7wJtLIJtu/e4dcBcIn/H777fNsK6WgS+RlPdP4oN1uacT5UFG4cLtq3u4l6ZMeAdcLfxax8CngTkGKu5Bts50ulJrsE2RIiec+DfYKqPRocN1ykEm2DL6M6/S2wj/7zzOyW8yP8215vQTCHYhjndSS3YtoqPJpFT1CrQb2vLaBtX+B2m9mh4q/VYsAk2Mgy21KIt9F1vueFj0CJwLO0txlMOtinSdZZ7sG0VbWs9DQh9g5jLzWU726cFG1kGWyqb+1qPKNZ+NNitdLr17vtuBVsSv7/il+trD8G2drQVS1iteapfH+RkTbAJNnYQbDGjbVr5fdYrvvbzio8jU37fewy2cYXfXvnHDcNegu2nU+ZQ+h1HTLHh+0v5UbBgQ7C9+Ohh2nDhuC6b2trvq19hcz89uaFtHTUnwRbktPSdR1zTyp9DSsH2dT2HfMS49U3ksNF69LVPjJGuv3K2Tws2sg+2r1OBte/6pl9Op9a6kw31aPTywElCCsH2b053/iX8/s4Brp9ho88htWC7Pa0q3rxeu4i/z27FqNliff1r7bVPCzZ2Emy372ONk6l3F/N3NoF3QuqZu+9Ugm2Y05yUg21efvfPbtinFyJjr8H2da03L1zrMU+efgq3OuDTixSux94eLdj4/zuoNpAykfdzfmOxGQMvfCEWzkdP26blRK184W+8+92HeK/tbEJs2MUvcdEGPL3d40w3n2P5y+d4TijUfnoP/fJdVw+sB+XNb6NP7L2EWlsQbGRygngbJN0Sc8O34HhkYYsdol/v47K8/q9F+bycmOT+XdV6IfgJ8eBj8DnezHV5L7lEe8ynNoIN4JfHwMYY8zXWRcEGJMrjOmPMvJwEWhMFG5Coi33KGPMxZ+uhYAPSVdmnjDEfc7IeCjYgbZO9yphDz2gdFGxA+jr7lTGHnot1ULAB6avtV8YcejwOFWxAJjwWNeaYM1r/BBvgsagxJu3xOFSwARk52beMOeSU1j/BBuRlsHcZc6gZrHuCDchPY/8y5lBTWfcEG5Cn0R5mzCFmtN4JNsApmzEm7Wmsd4INcMpmjEl3BuucYAPyV9nPjNn1VNY5wQbsQ29PM2aXc7G+CTZgPwqPRo3Z3VyXa9saJ9iAHTnZ34zZzUzLNW1tE2zADjX2OWN2MbX1TLABos0Yk+401jHBBog2Y4xYQ7ABiag+TPY/Y7KYz2v1ZN0SbMAxlR+u9kJjkp7rcq1aswQbcHCtPdGYJOfyobBGCTaA29O2wf5oTBIzfqisS4IN4J5KuBkTbablxNupmmADeDjcOvunMUINwQak73MDaT709lRjgs91ub6EmmADCBpv9YeLx6bGvDyfNz/nD6U1RbABbOW0RFy7PEL9DLnRnmzMf0/PhuUGp1muFWuGYANI8kSuWk4T2puTuS+TPd1kMtO3326//Ka/NMtvvXLdCzaAvStvNr0vzbeN8Uv/bQMVguZrxju/i/7Ob6n+4XdXuB4RbADpheFPznc2+HuGF007iqLf9E98ln99N4IKwQYAgGADABBsAAAINgAAwQYAgGADAECwAQAINgAABBsAAIINAECwAQAg2AAABBsAAIINAADBBgAg2AAAEGwAAIINAADBBgCAYAMAEGwAAAg2AAAEGwCAYAMAQLABAAg2AAAEGwAAgg0AQLABACDYAAAEmw8BAECwAQAg2AAABBsAAIINAADBBgAg2AAAEGwAAIINAADBBgCAYAMAEGwAAAg2AAB8CAAAgg0AAMEGACDYAAAQbAAACDYAAMEGAIBgAwAQbAAACDYAAAQbAIBgAwBAsAEA8OE/SZR9m3dtGpgAAAAASUVORK5CYII=); background-color: rgb(230, 45, 39); background-size: 60%; background-position: 50% 50%; background-repeat: no-repeat; }</style><style>.icon-cast_off::before { content: ""; }
+.icon-cast_on::before { content: ""; }
+.icon-mr_meh_android::before { content: ""; }
+.icon-settings-signin-android::before { content: ""; }
+.icon-settings-signout-android::before { content: ""; }
+.icon-rockandroll-back::before { content: ""; }
+.icon-hats-happy::before { content: ""; }
+.icon-hats-neutral::before { content: ""; }
+.icon-hats-sad::before { content: ""; }
+.icon-hats-very-happy::before { content: ""; }
+.icon-hats-very-sad::before { content: ""; }
+.icon-search-keyboard::before { content: ""; }
+.icon-multiaudio::before { content: ""; }
+.icon-settings-check::before { content: ""; }
+.icon-settings-uncheck::before { content: ""; }
+.icon-popular::before { content: ""; }
+.icon-airplane::before { content: ""; }
+.icon-back::before { content: ""; }
+.icon-check::before { content: ""; }
+.icon-chevron-single::before { content: ""; }
+.icon-delete::before { content: ""; }
+.icon-desktop-arrowkeys::before { content: ""; }
+.icon-desktop-delete::before { content: ""; }
+.icon-desktop-esc::before { content: ""; }
+.icon-desktop-g::before { content: ""; }
+.icon-desktop-s::before { content: ""; }
+.icon-dislike::before { content: ""; }
+.icon-double-chevron-right::before { content: ""; }
+.icon-edit::before { content: ""; }
+.icon-education::before { content: ""; }
+.icon-ellipsis::before { content: ""; }
+.icon-entertainment::before { content: ""; }
+.icon-exit::before { content: ""; }
+.icon-film::before { content: ""; }
+.icon-flag::before { content: ""; }
+.icon-gaming::before { content: ""; }
+.icon-guide-history::before { content: ""; }
+.icon-guide-my-subs::before { content: ""; }
+.icon-guide-purchases::before { content: ""; }
+.icon-guide-social::before { content: ""; }
+.icon-guide-what-to-watch::before { content: ""; }
+.icon-home::before { content: ""; }
+.icon-hourglass::before { content: ""; }
+.icon-key-delete::before { content: ""; }
+.icon-key-globe::before { content: ""; }
+.icon-key-space-sm::before { content: ""; }
+.icon-key-space::before { content: ""; }
+.icon-like::before { content: ""; }
+.icon-lips::before { content: ""; }
+.icon-logo-lozenge::before { content: ""; }
+.icon-lol::before { content: ""; }
+.icon-lozenge::before { content: ""; }
+.icon-mix::before { content: ""; }
+.icon-music::before { content: ""; }
+.icon-news::before { content: ""; }
+.icon-people::before { content: ""; }
+.icon-pets::before { content: ""; }
+.icon-player-3d::before { content: ""; }
+.icon-player-annotations::before { content: ""; }
+.icon-player-closedcaptions::before { content: ""; }
+.icon-player-ff::before { content: ""; }
+.icon-player-HD-circle::before { content: ""; }
+.icon-player-HD::before { content: ""; }
+.icon-player-info::before { content: ""; }
+.icon-player-instantreplay::before { content: ""; }
+.icon-player-less::before { content: ""; }
+.icon-player-more::before { content: ""; }
+.icon-player-mute::before { content: ""; }
+.icon-player-next::before { content: ""; }
+.icon-player-pause::before { content: ""; }
+.icon-player-play::before { content: ""; }
+.icon-player-prev::before { content: ""; }
+.icon-player-replay::before { content: ""; }
+.icon-player-rew::before { content: ""; }
+.icon-player-settings::before { content: ""; }
+.icon-player-share::before { content: ""; }
+.icon-player-size-fullscreen::before { content: ""; }
+.icon-player-size-medium::before { content: ""; }
+.icon-player-size-minimize::before { content: ""; }
+.icon-player-stop::before { content: ""; }
+.icon-player-subtitles::before { content: ""; }
+.icon-player-volume-45::before { content: ""; }
+.icon-player-volume-48::before { content: ""; }
+.icon-playlist::before { content: ""; }
+.icon-playstation-circle::before { content: ""; }
+.icon-playstation-square::before { content: ""; }
+.icon-playstation-triangle::before { content: ""; }
+.icon-playstation-x::before { content: ""; }
+.icon-privacy-link::before { content: ""; }
+.icon-privacy-locked::before { content: ""; }
+.icon-privacy-public::before { content: ""; }
+.icon-related::before { content: ""; }
+.icon-remoteque::before { content: ""; }
+.icon-reward::before { content: ""; }
+.icon-rocket::before { content: ""; }
+.icon-search-clear::before { content: ""; }
+.icon-search::before { content: ""; }
+.icon-settings-clear-cookies::before { content: ""; }
+.icon-settings-clear-history::before { content: ""; }
+.icon-settings-feedback::before { content: ""; }
+.icon-settings-help::before { content: ""; }
+.icon-settings-pair::before { content: ""; }
+.icon-settings-phone::before { content: ""; }
+.icon-settings-term::before { content: ""; }
+.icon-speechbubble::before { content: ""; }
+.icon-sports::before { content: ""; }
+.icon-star::before { content: ""; }
+.icon-trash::before { content: ""; }
+.icon-trends::before { content: ""; }
+.icon-tv-dpad::before { content: ""; }
+.icon-upload-arrow::before { content: ""; }
+.icon-upload::before { content: ""; }
+.icon-watch-later::before { content: ""; }
+.icon-wii-1::before { content: ""; }
+.icon-wii-2::before { content: ""; }
+.icon-wii-A::before { content: ""; }
+.icon-wii-B::before { content: ""; }
+.icon-wii-minus::before { content: ""; }
+.icon-wii-plus::before { content: ""; }
+.icon-wii-x::before { content: ""; }
+.icon-wii-y::before { content: ""; }
+.icon-youtube-logo::before { content: ""; }
+.icon-youtube-unlimited-logo::before { content: ""; }
+@font-face { font-family: 'Cutive Mono'; src: url(www.youtube.com/s/tv/fonts/CutiveMono-Regular.woff) format(woff); }
+@font-face { font-family: 'PT Mono'; src: url(www.youtube.com/s/tv/fonts/PTM55FT.woff) format(woff); }
+@font-face { font-family: 'PT Serif Caption'; src: url(www.youtube.com/s/tv/fonts/PT_Serif-Caption-Web-Regular.woff) format(woff); }
+@font-face { font-family: 'PT Sans Caption'; src: url(www.youtube.com/s/tv/fonts/PT_Sans-Caption-Web-Regular.woff) format(woff); }
+@font-face { font-family: Handlee; src: url(www.youtube.com/s/tv/fonts/Handlee-Regular.woff) format(woff); }
+@font-face { font-family: 'Dancing Script'; src: url(www.youtube.com/s/tv/fonts/DancingScript-Regular.woff) format(woff); }
+@font-face { font-family: 'Marcellus SC'; src: url(www.youtube.com/s/tv/fonts/MarcellusSC-Regular.woff) format(woff); }
+body, html { font-size: 100%; height: 100%; margin: auto; overflow: hidden; padding: 0px; -webkit-user-select: none; }
+input { font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: inherit; line-height: inherit; font-family: inherit; margin: 0px; padding: 0px; }
+body { background-color: rgb(28, 26, 26); }
+p, ul, li { border: 0px; margin: 0px; outline: none; padding: 0px; }
+ul { list-style: none; }
+.focused, :focus { outline: solid 0px; }
+.hidden { display: none !important; }
+.invisible { visibility: hidden; }
+ul.list li { display: inline; }
+ul.list.vertical li { display: block; }
+.device-plugin { height: 0px; margin: 0px; position: absolute; visibility: hidden; width: 0px; }
+#loader { }
+#leanback { height: 100%; }
+#app-markup { height: 100%; background-size: 100% 100%; }
+#background { bottom: 0px; left: 0px; position: absolute; overflow: hidden; right: 0px; top: 0px; background-size: 100% 100%; }
+.limited-memory.sets-ui #app-markup { background-color: rgb(40, 51, 55); }
+#app-markup.watch-state { background-color: rgb(0, 0, 0) !important; }
+.veryvibrant #app-markup.watch-state { background-image: none !important; }
+#playstation-buttons { display: none; position: absolute; }
+#spinner { position: absolute; top: 17.17em; width: 100%; }
+.browse-state .loading-indicator { display: none; }
+.browse-state .fallback-loading-indicator { display: block; }
+.opera #spinner { top: 20em; }
+.loading-indicator { height: 5.33em; margin: 0px auto; position: relative; width: 5.33em; }
+.dot { border-radius: 50%; height: 1.17em; position: absolute; width: 1.17em; background-color: rgb(203, 203, 203); }
+@-webkit-keyframes fade1 { 
+  0%,100% { opacity: 0; }
+  50% { opacity: 1; }
+}
+@-webkit-keyframes fade2 { 
+  0%,100% { opacity: 0.25; }
+  37.5% { opacity: 1; }
+  87.5% { opacity: 0; }
+}
+@-webkit-keyframes fade3 { 
+  0%,100% { opacity: 0.5; }
+  25% { opacity: 1; }
+  75% { opacity: 0; }
+}
+@-webkit-keyframes fade4 { 
+  0%,100% { opacity: 0.75; }
+  12.5% { opacity: 1; }
+  62.5% { opacity: 0; }
+}
+@-webkit-keyframes fade5 { 
+  0%,100% { opacity: 1; }
+  50% { opacity: 0; }
+}
+@-webkit-keyframes fade6 { 
+  0%,100% { opacity: 0.75; }
+  37.5% { opacity: 0; }
+  87.5% { opacity: 1; }
+}
+@-webkit-keyframes fade7 { 
+  0%,100% { opacity: 0.5; }
+  25% { opacity: 0; }
+  75% { opacity: 1; }
+}
+@-webkit-keyframes fade8 { 
+  0%,100% { opacity: 0.25; }
+  12.5% { opacity: 0; }
+  62.5% { opacity: 1; }
+}
+@keyframes fade1 { 
+  0%,100% { opacity: 0; }
+  50% { opacity: 1; }
+}
+@keyframes fade2 { 
+  0%,100% { opacity: 0.25; }
+  37.5% { opacity: 1; }
+  87.5% { opacity: 0; }
+}
+@keyframes fade3 { 
+  0%,100% { opacity: 0.5; }
+  25% { opacity: 1; }
+  75% { opacity: 0; }
+}
+@keyframes fade4 { 
+  0%,100% { opacity: 0.75; }
+  12.5% { opacity: 1; }
+  62.5% { opacity: 0; }
+}
+@keyframes fade5 { 
+  0%,100% { opacity: 1; }
+  50% { opacity: 0; }
+}
+@keyframes fade6 { 
+  0%,100% { opacity: 0.75; }
+  37.5% { opacity: 0; }
+  87.5% { opacity: 1; }
+}
+@keyframes fade7 { 
+  0%,100% { opacity: 0.5; }
+  25% { opacity: 0; }
+  75% { opacity: 1; }
+}
+@keyframes fade8 { 
+  0%,100% { opacity: 0.25; }
+  12.5% { opacity: 0; }
+  62.5% { opacity: 1; }
+}
+#dot1 { animation: fade8 0.72s ease infinite; left: 0px; top: 2.09em; }
+#dot2 { animation: fade7 0.72s ease infinite; left: 0.61em; top: 0.61em; }
+#dot3 { animation: fade6 0.72s ease infinite; left: 2.09em; top: 0px; }
+#dot4 { animation: fade5 0.72s ease infinite; right: 0.61em; top: 0.61em; }
+#dot5 { animation: fade4 0.72s ease infinite; right: 0px; top: 2.09em; }
+#dot6 { animation: fade3 0.72s ease infinite; bottom: 0.61em; right: 0.61em; }
+#dot7 { animation: fade2 0.72s ease infinite; bottom: 0px; left: 2.09em; }
+#dot8 { animation: fade1 0.72s ease infinite; bottom: 0.61em; left: 0.61em; }
+.spinner.transitions .dot { animation: initial !important; background: url(www.youtube.com/s/tv/html5/f0d770f4/img/circle.png) 50% 50% / 100% no-repeat; }
+.spinner.transitions.spin .loading-indicator { transition: transform 25s linear; transform: rotate(-7200deg); }
+.transitions #dot1 { opacity: 1; }
+.transitions #dot2 { opacity: 0.875; }
+.transitions #dot3 { opacity: 0.75; }
+.transitions #dot4 { opacity: 0.625; }
+.transitions #dot5 { opacity: 0.5; }
+.transitions #dot6 { opacity: 0.375; }
+.transitions #dot7 { opacity: 0.25; }
+.transitions #dot8 { opacity: 0.125; }
+.fallback-loading-indicator { color: rgb(241, 241, 241); display: none; font-size: 1.8em; margin: 2px auto 0px; text-align: center; }
+.scrollbar { height: 100%; position: absolute; top: 0px; width: 0.1em; background-color: rgba(255, 255, 255, 0.0980392); }
+.scrollbar .handle { position: absolute; width: 0.1em; background-color: rgb(241, 241, 241); }
+.application-message { color: rgb(241, 241, 241); font-size: 1.8em; position: absolute; text-align: center; text-shadow: rgb(0, 0, 0) 0.04em 0.04em; top: 50%; width: 100%; }
+.debug-watermark { color: rgb(14, 2, 2); display: none; font-size: 100%; left: 0px; padding: 1em; position: absolute; bottom: 0px; width: 70%; background-color: rgba(235, 49, 3, 0.701961); }
+.debug-watermark.visible { display: block; }
+.debug-console { color: rgb(255, 255, 255); height: 95%; overflow: scroll; padding: 1em; position: absolute; right: 0px; top: 0px; width: 40em; z-index: 1; background: rgba(0, 0, 0, 0.901961); }
+#player-controls .button, #player-controls .toggle-button { font-family: youtube-icons; speak: none; }
+.fps { position: absolute; right: 0px; bottom: 0px; text-align: center; padding-top: 0.3em; width: 5em; height: 1.7em; z-index: 100; background-color: rgb(0, 255, 0); }
+#html5-player-messages { display: none; }
+#button-list > .icon-player-more::before { content: ""; }
+.icon-player-play.toggle-selected::before { content: ""; }
+#loader { z-index: 1000; }
+.sliding-highlighter, .pivot-sliding-highlighter { box-shadow: rgba(153, 153, 153, 0.298039) 0px 0px 60px; display: none; height: 26em; position: absolute; width: 24em; background: white; }
+#settings-items .sliding-highlighter { height: 26.2em; width: 24.2em; }
+.horizontal-list.focused .sliding-highlighter, .video-uploads.focused .sliding-highlighter, #settings-items.focused .sliding-highlighter { display: block; }
+.video-uploads .sliding-highlighter { height: 20em; width: 18em; }
+.carousel .item:hover { cursor: pointer; background-color: rgb(90, 90, 90); }
+.feed-title.preview { color: rgb(241, 241, 241); font-size: 1.3em; height: 1.3em; opacity: 0.7; padding-bottom: 0.6em; padding-left: 1.9em; }
+.feed-title .unread-count { font-size: 0.6em; margin-left: 0.5em; padding: 0.05em 0.3em; position: relative; top: -0.265em; background-color: rgba(187, 0, 0, 0.901961); }
+.prev-feed { height: 3.6em; left: 4%; position: absolute; top: 5%; }
+.next-feed { height: 2em; left: 4%; position: absolute; top: 84%; }
+.tile { color: rgb(102, 102, 102); height: 26em; list-style: none; overflow: hidden; position: absolute; width: 24em; background-color: rgb(0, 0, 0); }
+.tile-focus-target { height: 0px; width: 0px; }
+.tile-top { height: 50%; width: 100%; background-color: rgb(0, 0, 0); }
+.channel-top { height: 62%; margin: 5.25% 16%; width: 68%; }
+.channel-top .video-thumb, .tile-top .video-thumb { height: 100%; background-color: rgb(37, 37, 37); background-size: 100%; background-position: 50% 50%; background-repeat: no-repeat; }
+.browse-header-avatar.preloaded, .tile-top .video-thumb.preloaded { background: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-playbutton.png) 50% 50% / auto no-repeat rgb(37, 37, 37); }
+.auto-play-tile { overflow: visible; }
+.post-play-title { font-size: 1.4em; overflow: hidden; position: absolute; text-overflow: ellipsis; text-shadow: rgb(0, 0, 0) 0.08em 0.08em; top: -1.8em; width: 15.5em; }
+.auto-play-tile .video-tile { top: 0px; }
+.auto-play-tile .default-title, .auto-play-tile .next-up-title { color: rgb(204, 204, 204); }
+.post-play-countdown { display: none; }
+.countdown-active .post-play-countdown { color: rgb(255, 255, 255); display: block; font-size: 5em; position: relative; text-align: center; text-shadow: rgb(0, 0, 0) 0.06em 0.06em; top: 14%; }
+.playlist-tile.focused, .playlist-tile.focused:hover, .auto-play-tile.focused .video-tile, .auto-play-tile.focused:hover .video-tile, .recent-search-tile.focused, .recent-search-tile.focused:hover, .video-tile.focused, .video-tile.focused:hover { background-color: rgb(241, 241, 241); }
+.item .overlay { display: none; }
+.playlist-tile .overlay, .video-tile .overlay { display: block; height: 53%; margin-left: 56%; margin-top: -57.5%; opacity: 0.8; width: 45%; background: rgb(0, 0, 0); }
+.playlist-tile.focused .overlay, .video-tile.focused .overlay { color: rgb(241, 241, 241); }
+.playlist-tile .overlay strong { font-size: 1.75em; font-weight: normal; }
+.playlist-tile .overlay .count, .video-tile .overlay .count { font-size: 1.5em; line-height: 1.2em; padding-top: 1.7em; text-align: center; }
+.playlist-tile .overlay .icon, .video-tile .overlay .icon { font-family: youtube-icons; font-size: 3em; height: 50%; overflow: hidden; padding: 0.2em; text-align: center; }
+.tile-bottom { height: 50%; padding: 0.25em 0px 0px 1em; width: 23em; }
+.channel-bottom { height: 25%; margin-top: 2.65em; width: 100%; }
+.channel-bottom .title, .tile-bottom .title { color: rgb(153, 153, 153); font-size: 1.7em; height: 2.45em; line-height: 1.25em; margin: 0.6em 0.6em 0px 0px; overflow: hidden; text-align: left; white-space: normal; }
+.channel-bottom .title { height: 1.2em; margin: 0px; padding: 0px 0.6em; text-align: center; text-overflow: ellipsis; white-space: nowrap; }
+.tile.selected.focused .tile-bottom { color: rgb(34, 34, 34); }
+.tile.selected.focused .channel-bottom .details, .tile.selected.focused .tile-bottom .details { color: rgb(153, 153, 153); }
+.tile.selected.focused .channel-bottom .title, .tile.selected.focused .tile-bottom .title { color: rgb(68, 68, 68); }
+.channel-tile .channel-top .decoration { margin-top: -19%; text-align: right; width: 97%; }
+.video-tile .tile-top .decoration { margin-top: -2em; text-align: right; width: 97.3%; }
+.channel-top .badge, .tile-top .badge, .tile-top .duration { border-radius: 0.1em; color: rgb(255, 255, 255); display: inline-block; font-size: 1.4em; padding: 0em 0.1em; background: rgba(0, 0, 0, 0.701961); }
+.tile-top .badge, .tile-top .duration { text-transform: uppercase; }
+.tile-top .live-badge { border: 0px; color: rgb(255, 255, 255); background-color: rgba(230, 33, 23, 0.8); }
+.playlist-tile:hover, .video-tile:hover { background-color: rgb(34, 34, 34); }
+.channel-tile .details, .playlist-tile .details, .recent-search-tile .details, .video-tile .details { color: rgb(153, 153, 153); font-size: 1.3em; font-weight: 300; height: 40%; overflow: hidden; padding: 0px; white-space: normal; word-break: break-all; }
+.channel-tile .details { text-align: center; }
+.playlist-tile .details, .recent-search-tile .details, .video-tile .details { margin: 0.7em 0em 0em; }
+.custom-playlist-image-tile .tile-top .video-thumb { background-size: 56.25%; background-position-x: 0%; background-repeat: no-repeat; }
+.playlist-tile.focused .details, .recent-search-tile.focused .details, .video-tile.focused .details { color: rgb(102, 102, 102); }
+.playlist-tile .details .by, .recent-search-tile .results, .video-tile .details .by { height: 1.4em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+.playlist-tile .details .views, .video-tile .details .views { display: inline-block; padding-right: 1.5em; }
+.playlist-tile .details .views:empty, .video-tile .details .views:empty { display: none; }
+.action-tile { border: 2px solid rgba(255, 255, 255, 0.0980392); color: rgb(255, 255, 255); height: 26em; overflow: visible; }
+.action-tile.focused, .channel-tile.focused { color: rgb(34, 34, 34); background-color: rgb(255, 255, 255); }
+.action-tile .content { height: 26em; white-space: normal; }
+.video-tile .live-start-time { display: inline-block; vertical-align: middle; }
+.tile-top .count-overlay { font-size: 1.4em; height: 100%; position: absolute; right: 0px; text-align: center; top: 0px; width: 30%; background: rgba(0, 0, 0, 0.74902); }
+.tile-top .count-overlay .video-count { display: block; font-size: 2.2em; font-weight: bold; line-height: 0.8em; margin-top: 1.6em; }
+.action-tile .title { font-size: 2.4em; height: 24%; overflow: hidden; padding-top: 0.5em; text-align: center; text-overflow: ellipsis; text-transform: uppercase; white-space: normal; }
+.action-tile .long-title { font-size: 2em; text-align: center; white-space: normal; }
+.action-tile .description, .action-tile .remote-pair-text, .action-tile .remote-reset-help { color: rgb(255, 255, 255); font-size: 1.4em; opacity: 0; padding: 0.5em; text-align: center; white-space: normal; }
+.action-tile.focused .description, .action-tile.focused .remote-pair-text, .action-tile.focused .remote-reset-help, .action-tile.focused .sign-out-username { opacity: 1; }
+.action-tile .sign-out-username { font-size: 1.7em; margin: 1em auto; overflow: hidden; text-align: center; text-overflow: ellipsis; white-space: nowrap; width: 80%; }
+.action-tile .remote-count { font-size: 0.4em; position: absolute; top: 40%; width: 100%; }
+.action-tile .remote-standing { display: inline-block; font-size: 1.4em; margin: 0.2em auto; padding: 0.8em 0.4em 0.1em; }
+.action-tile .remote-reset-help { height: 2.7em; }
+.action-tile .status { font-size: 2em; text-align: center; }
+.row-playing { display: none; }
+.action-tile .large-action-icon { font-family: youtube-icons; font-size: 11em; margin-top: 0px; text-align: center; width: 100%; }
+.action-tile .sign-out-user-icon { border-radius: 20em; height: 9em; margin: 0px auto; width: 9em; background-size: cover; }
+.action-tile .search-tile .description { font-size: 1.4em; margin-top: 2em; position: inherit; text-align: center; }
+.large-action-icon.icon-guide-history { font-size: 8em; margin-top: 0.2em; }
+.toggle-tile .icon { margin-top: 0px; }
+.toggle-tile .content .title { height: 12%; white-space: nowrap; }
+.toggle-tile .label { font-size: 1.8em; max-height: 13%; text-align: center; width: 100%; }
+.selected .icon-search, .tile.selected .icon-search-clear { color: rgb(34, 34, 34); }
+.exp-densityBrowse .horizontal-list > .content { font-size: 100%; }
+.exp-densityBrowse .horizontal-list .no-content-message { display: none; }
+.exp-densityBrowse .horizontal-list .pivot-sliding-highlighter { border: 0.5em solid rgb(255, 255, 255); box-shadow: rgb(0, 0, 0) 0.083em 0.083em 0.75em 0.167em inset; height: 7.5em; margin-left: -0.4em; margin-top: -0.4em; pointer-events: none; width: 13.8em; background: transparent; }
+.exp-densityBrowse .horizontal-list.focused .pivot-sliding-highlighter { display: block; }
+.exp-densityBrowse .horizontal-list.focused.channel-selected .pivot-sliding-highlighter { border-radius: 50%; height: 7.5em; transform: translateX(3.2em); width: 7.5em; }
+.exp-densityBrowse .browse-sets .action-tile, .exp-densityBrowse .horizontal-list .channel-tile, .exp-densityBrowse .horizontal-list .video-tile { height: 14em; width: 14em; }
+.exp-densityBrowse .shelf .horizontal-list .channel-tile, .exp-densityBrowse .shelf .horizontal-list .video-tile, .exp-densityBrowse .shelf .horizontal-list .channel-tile.selected, .exp-densityBrowse .shelf .horizontal-list .video-tile.selected { opacity: 0.5; }
+.exp-densityBrowse .shelf.selected .horizontal-list .channel-tile, .exp-densityBrowse .shelf.selected .horizontal-list .video-tile, .exp-densityBrowse .horizontal-list .channel-tile, .exp-densityBrowse .horizontal-list .video-tile { opacity: 0.7; }
+.exp-densityBrowse .shelf.selected .horizontal-list .channel-tile.selected, .exp-densityBrowse .shelf.selected .horizontal-list .video-tile.selected, .exp-densityBrowse .horizontal-list .channel-tile.selected, .exp-densityBrowse .horizontal-list .video-tile.selected, .exp-densityBrowse .horizontal-list .auto-play-tile.selected .video-tile, .limited-animation .exp-densityBrowse .shelf .horizontal-list .channel-tile, .limited-animation .exp-densityBrowse .shelf .horizontal-list .video-tile, .limited-animation .exp-densityBrowse .shelf .horizontal-list .channel-tile.selected, .limited-animation .exp-densityBrowse .shelf .horizontal-list .video-tile.selected, .limited-animation .exp-densityBrowse .shelf.selected .horizontal-list .channel-tile, .limited-animation .exp-densityBrowse .shelf.selected .horizontal-list .video-tile, .limited-animation .exp-densityBrowse .horizontal-list .channel-tile, .limited-animation .exp-densityBrowse .horizontal-list .video-tile { opacity: 1; }
+.exp-densityBrowse .horizontal-list .tile-top { height: 7.83em; }
+.exp-densityBrowse .channel-top .badge, .exp-densityBrowse .tile-top .badge { font-size: 1em; padding: 0.2em; }
+.exp-densityBrowse .horizontal-list .tile-bottom, .exp-densityBrowse .horizontal-list .channel-bottom { height: 4.25em; margin-top: 0.83em; padding: 0px; width: 100%; }
+.exp-densityBrowse .shelf .horizontal-list .tile-bottom, .exp-densityBrowse .shelf .horizontal-list .channel-bottom { display: none; }
+.exp-densityBrowse .shelf.selected .horizontal-list .tile-bottom, .exp-densityBrowse .shelf.selected .horizontal-list .channel-bottom { display: block; }
+.exp-densityBrowse .browse-sets .action-tile .description, .exp-densityBrowse .horizontal-list .tile-bottom .title, .exp-densityBrowse .horizontal-list .channel-bottom .title { font-size: 1.16em; height: initial; line-height: 1.25em; margin: 0px; max-height: 2.5em; text-overflow: ellipsis; }
+.exp-densityBrowse .horizontal-list .channel-bottom .title { white-space: normal; }
+.exp-densityBrowse .horizontal-list .video-tile .details { color: rgb(205, 205, 205); font-size: 0.83em; height: initial; margin: 0.4em 0px; }
+.exp-densityBrowse .horizontal-list .video-tile .tile-top .decoration { display: none; line-height: 1em; margin-top: 0px; transform: translateY(-100%); width: 100%; }
+.exp-densityBrowse #search .tile-top .decoration, .exp-densityBrowse #post-play-list .tile-top .decoration, .exp-densityBrowse .shelf.selected .horizontal-list .tile-top .decoration { display: block; }
+.exp-densityBrowse .horizontal-list .video-tile .tile-top .badge { border-radius: 0px; }
+.exp-densityBrowse .horizontal-list .video-tile .tile-top .duration { font-size: 1em; font-weight: bold; padding: 0.5em; background: rgba(0, 0, 0, 0.498039); }
+.exp-densityBrowse .horizontal-list .channel-bottom .details { display: none; }
+.exp-densityBrowse .horizontal-list .video-tile .details .views, .exp-densityBrowse .horizontal-list .video-tile .details .age { display: inline-block; }
+.exp-densityBrowse .horizontal-list .video-tile .details .views { padding-right: 0.5em; }
+.sets-ui .exp-densityBrowse .horizontal-list .channel-tile.selected .channel-bottom > .title, .sets-ui .exp-densityBrowse .horizontal-list .auto-play-tile.selected .tile-bottom > .title, .sets-ui .exp-densityBrowse .horizontal-list .video-tile.selected .tile-bottom > .title { color: rgb(255, 255, 255); }
+.exp-densityBrowse .video-tile .overlay { height: 7.83em; margin-left: 60%; margin-top: -7.83em; width: 40%; }
+.exp-densityBrowse .video-tile .overlay .count { font-size: 1em; line-height: 1em; padding-top: 1.5em; }
+.exp-densityBrowse .video-tile .overlay .icon { font-size: 2em; padding: 0px; }
+.exp-densityBrowse .horizontal-list .channel-top { height: 7.83em; margin: 0px auto; width: 7.83em; }
+.exp-densityBrowse .horizontal-list .channel-top .video-thumb { border-radius: 50%; }
+.exp-densityBrowse .browse-sets .shelf > .title { font-size: 1em; margin-bottom: 0.9em; margin-top: 0px; }
+.exp-densityBrowse .browse-sets .shelf > .title .main { font-size: 1.5em; }
+.exp-densityBrowse .browse-sets .shelf > .title .annotation { font-size: 1em; }
+.exp-densityBrowse .browse-sets .shelf > .title { color: rgb(205, 205, 205); }
+.engaged.exp-densityBrowse .channel-tile .voice-command, .engaged.exp-densityBrowse .video-tile .voice-command { font-size: 1em; line-height: 1em; margin-top: -2em; }
+.limited-animation.sets-ui .exp-densityBrowse .video-tile:hover:not(.focused), .limited-animation.sets-ui .exp-densityBrowse .channel-tile:hover:not(.focused), .sets-ui .exp-densityBrowse .carousel .item:hover, .sets-ui .exp-densityBrowse .carousel .auto-play-tile:hover, .sets-ui .exp-densityBrowse .carousel .channel-tile:hover { opacity: 1; background-color: inherit !important; }
+.exp-densityBrowse .browse-sets .action-tile { border: none; }
+.exp-densityBrowse .browse-sets .action-tile .content { height: 7.83em; margin-bottom: 0.83em; }
+.exp-densityBrowse .browse-sets .action-tile .title { display: none; }
+.exp-densityBrowse .browse-sets .action-tile .large-action-icon { color: rgb(255, 255, 255); font-size: 6em; height: 1.3em; line-height: 1.3em; background-color: rgb(35, 35, 35); }
+.exp-densityBrowse .browse-sets .action-tile .description { opacity: inherit; padding: 0px; }
+.exp-densityBrowse .auto-play-tile { height: 14em; width: 14em; }
+.exp-densityBrowse .post-play-countdown { top: 7%; }
+.limited-animation .exp-densityBrowse .browse-content .list { margin-left: -7.5em; width: inherit; }
+.limited-animation .exp-densityBrowse .browse-content .shelf > .title { margin-left: 7.5em; }
+.limited-animation .exp-densityBrowse .browse-content .list .shelf:nth-child(1) { margin-bottom: 6.5em; }
+.limited-animation .exp-densityBrowse .browse-content .list .shelf { margin-bottom: -0.1em; }
+.limited-animation.sets-ui .exp-densityBrowse .channel-tile:not(.focused), .limited-animation.sets-ui .exp-densityBrowse .video-tile:not(.focused) { background-color: inherit; }
+.limited-animation .exp-densityBrowse .channel-tile.focused, .limited-animation .exp-densityBrowse .video-tile.focused { background-color: inherit; }
+.limited-animation .exp-densityBrowse .video-tile { margin-right: 0.5em; }
+.limited-animation .exp-densityBrowse .video-tile .overlay { height: 7.03em; margin-left: 8em; margin-top: -7.43em; width: 5.6em; }
+.limited-animation .exp-densityBrowse .video-tile .tile-top { height: 7.03em; padding: 0.4em; width: 13.2em; background: inherit; }
+.limited-animation .exp-densityBrowse .channel-tile { margin-right: 0.5em; }
+.limited-animation .exp-densityBrowse .channel-tile .channel-top { height: 6.83em; padding: 0.4em; width: 6.83em; }
+.limited-animation .exp-densityBrowse .video-tile.focused .tile-top { background: rgb(255, 255, 255); }
+.limited-animation .exp-densityBrowse .channel-tile.focused .channel-top { border-radius: 50%; background: rgb(255, 255, 255); }
+.limited-animation .exp-densityBrowse .search .placeholder-tile, .limited-animation .exp-densityBrowse .browse-content .list .placeholder-tile { height: 14em; margin-right: 0.5em; width: 14em; }
+#dialog.remote-reset-dialog > .title { font-size: 3em; padding-bottom: 0.5em; }
+#dialog.remote-reset-dialog .buttons { bottom: 0.5em; position: absolute; }
+#dialog.remote-reset-dialog { left: 0px; position: absolute; white-space: normal; }
+.remote-reset-dialog #dialog-view { color: rgb(170, 170, 170); font-size: 1.8em; padding-top: 0.5em; }
+.connection-instructions { padding-top: 0.5em; font-size: 2em; }
+.text-dialog .connection-instructions { font-size: 1.3em; }
+.browse-sets-state .login-dialog { margin-top: 5em; }
+#search .pairing .pairing-content > *, #dialog .pairing .pairing-content > * { display: inline-block; }
+#search .pairing .pairing-content .step2, #dialog .pairing .pairing-content .step2 { display: block; }
+#search .dial-upsell .connection-steps .no-dial-connect-step1, #search .manual-connect .connection-steps .with-dial-connect-step1 { display: none; }
+.connection-instructions .step1, .connection-instructions .step2, .qr-code .scan, .pairing .connected-header, .remote-reset-dialog .connected-header { color: rgb(170, 170, 170); font-size: 0.7em; }
+.connection-instructions .pair-url, .connection-instructions .pair-code { color: rgb(241, 241, 241); }
+.connection-instructions .step2 { margin-top: 2em; }
+.pairing .qr-code, .pairing .connected-list { display: inline-block; margin-left: 1em; vertical-align: top; }
+.pairing .dial-upsell { color: rgb(170, 170, 170); display: inline-block; font-size: 95%; overflow: hidden; padding-left: 2em; padding-top: 0.8em; text-align: initial; vertical-align: top; white-space: normal; width: 16em; }
+.pairing .cast-icon { display: inline-block; height: 1em; margin: 0.1em 0.3em; vertical-align: middle; width: 1em; background: url(www.youtube.com/s/tv/html5/f0d770f4/img/cast_disconnected_blue.png) 50% 50% / contain no-repeat; }
+.pairing .qr-code .scan { margin-bottom: 0.5em; white-space: normal; width: 5em; }
+.pairing .qr-code img { height: 5.1em; width: 5.1em; }
+.pairing .icon-settings-pair, .login-dialog .icon-settings-pair { display: inline-block; font-style: normal; font-variant: normal; font-weight: normal; font-stretch: normal; font-size: 5em; line-height: normal; font-family: youtube-icons; height: 1em; margin-top: 0.1em; width: 1.4em; background-image: none; }
+.remote-reset-dialog .connected-header, .pairing .connected-header { margin-bottom: 0.3em; }
+.remote-reset-dialog .devices, .pairing .devices { list-style: none; font-size: 1.5em; color: rgb(241, 241, 241); }
+.remote-reset-dialog .devices > div, .pairing .devices > div { display: block; height: 1.5em; line-height: 1.5em; overflow: hidden; padding-left: 1.5em; text-overflow: ellipsis; white-space: nowrap; width: 11.5em; }
+.remote-reset-dialog .devices .connected::before { background-position: 0px 100%; }
+.remote-reset-dialog .devices .connected { color: rgb(241, 241, 241); }
+#search { bottom: 0px; color: rgb(241, 241, 241); left: 0px; overflow: hidden; position: absolute; right: 0px; text-align: center; top: 0px; }
+.watch-state #search { left: 0px; }
+#search > .controls { left: 8em; margin-right: 18em; position: absolute; right: 2.5em; text-align: left; top: 2.5em; }
+#search-text-box { font-size: 1.6em; height: 100%; margin: 0px auto; overflow: hidden; position: relative; background-color: rgb(225, 225, 225); }
+#search-text-box > .icon-search { display: none; }
+#search-input { border: none; color: rgb(17, 17, 17); height: 100%; padding-left: 0.5em; width: 100%; background: none; }
+#search-input:disabled { color: rgb(17, 17, 17); }
+#search-query { color: rgb(17, 17, 17); height: 100%; overflow: hidden; padding-left: 0.5em; padding-top: 0.3em; position: absolute; text-overflow: ellipsis; white-space: pre; width: 95%; }
+#search-suggestions { font-size: 1.2em; position: relative; display: inline-block; left: 0px; width: 100%; }
+.search-state #spinner { top: 26em; }
+#suggest-list { overflow: hidden; }
+#suggest-list > div { border-radius: 1px; color: rgb(225, 225, 225); display: inline-block; padding: 0.2em 0.5em; }
+#search-keyboard { font-size: 1em; text-align: left; width: 65%; }
+#search-suggestions, #search-keyboard, #letter-suggest { white-space: nowrap; }
+#search-keyboard, #letter-suggest { z-index: 1; }
+#keyboard-grid { display: inline-block; font-size: 1.6em; margin: 0px auto; overflow: hidden; text-align: left; }
+#keyboard-grid, #keyboard-spacebar { color: rgb(163, 163, 163); }
+#keyboard-grid .button { border-radius: 1px; display: inline-block; margin: 0.3em 0.6em 0.3em 0px; padding: 0px 0.1em; text-align: center; text-transform: uppercase; width: 1em; vertical-align: top; }
+#keyboard-grid .list { text-align: left; text-shadow: none; }
+#search-keyboard #keyboard-grid .icon-key-delete.button { font-family: youtube-icons; font-size: 0.7em; line-height: 1.2em; margin-left: 2.25em; padding: 0.25em; width: 2.25em; }
+#keyboard-spacebar { border-radius: 1px; display: inline-block; font-family: youtube-icons; font-size: 1.44em; margin: 0.1em 7em 0px 2.1em; padding: 0.1em; text-align: left; }
+#search-keyboard #keyboard-grid .clear-query-tile.button { font-size: 0.7em; margin-left: 2.25em; padding: 0.25em; text-transform: uppercase; width: auto; }
+#keyboard-grid .icon-key-globe { font-family: youtube-icons; margin: 0.25em 0px 0.25em 1.6em; padding: 0.1em; width: 1.2em; }
+#search-keyboard .button.focused { color: rgb(33, 33, 33); background-color: rgb(225, 225, 225); }
+#letter-suggest { font-size: 1.6em; position: fixed; text-align: center; width: 1.2em; }
+.letter-suggest-visible #keyboard-grid .list.selected .button.selected:not(.focused) { color: rgb(0, 0, 0); text-shadow: none; background-color: rgba(153, 153, 153, 0.85098); }
+#keyboard-grid .button.numbers-toggle-tile { font-size: 0.75em; padding: 0.22em; margin: 0.25em 0px 0px 2.1em; width: auto; }
+#search .pairing .icon-settings-pair { display: none; }
+#search .search-message { display: inline-block; margin-left: 2em; margin-top: 1.5em; vertical-align: top; white-space: normal; width: 50%; }
+#search .search-pairing { bottom: 0px; display: inline-block; left: 5em; padding: 2em 2.5em 4em; position: absolute; text-align: left; text-shadow: black -1px 1px 2px; width: 100%; background-color: rgba(0, 0, 0, 0.298039); }
+.limited-animation #search .search-pairing { background-color: rgb(0, 0, 0); }
+#search .search-pairing .search-img { display: inline-block; height: 11em; width: 11em; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/pair_promo.png); background-size: cover; }
+#search .search-pairing .title { font-size: 1.9em; }
+#search .search-pairing .connection-instructions { font-size: 1.6em; }
+#search .search-pairing .dial-upsell-content { color: rgb(170, 170, 170); }
+#search .search-pairing .manual-connect-content .connection-steps { padding: 0px; }
+#search .search-pairing .manual-connect-content .connection-steps .pair-code, #search .search-pairing .manual-connect-content .connection-steps .pair-url { display: block; }
+#search .search-pairing .manual-connect-content .connection-steps .step2 { margin-top: 1em; }
+#search .search-pairing .manual-connect-content .connection-steps .label, #search .search-pairing .manual-connect .dial-upsell-content, #search .search-pairing .dial-upsell .manual-connect-content { display: none; }
+#search .pairing .no-dial-connect-step1, #search .pairing .no-dial-connect-step2 { display: inline-block; }
+#search .pairing .no-dial-connect-step2 { margin-left: 2em; }
+#search .pairing .connection-steps { text-align: left; }
+#search .pairing .connected-list, #search .pairing .qr-code-wrapper { display: none; }
+#search.hide-input .search-pairing { margin-top: 8em; }
+#letter-suggest div { color: rgba(0, 0, 0, 0.8); height: 1.4em; text-shadow: none; background-color: rgba(153, 153, 153, 0.85098); }
+#letter-suggest .focused { color: rgb(241, 241, 241); }
+#transliteration-container { display: none; }
+#search-keyboard.transliterable #transliteration-container { display: block; }
+#transliteration .list { font-size: 2em; height: 1.2em; margin: 0px auto; overflow: hidden; padding: 0.2em 0px; text-align: center; width: 77%; }
+#transliteration .list > div { display: inline; padding: 0px 0.5em; position: relative; }
+#suggest-list > div.focused, #transliteration .list .focused { color: rgb(33, 33, 33); background-color: rgb(254, 254, 254); }
+#transliteration .button:hover { background-color: rgba(153, 153, 153, 0.4); }
+#transliteration .button:hover, #search-keyboard .button:hover { cursor: pointer; }
+#search .horizontal-list > .content { text-align: left; }
+.limited-animation.sets-ui #search .horizontal-list > .content { margin-left: -21.8em; width: 126em; }
+#search .horizontal-list { left: 7.5em; height: inherit; position: absolute; right: 0px; top: 38%; transform: translateY(7.5em); transition: opacity 0.25s, transform 0.25s; width: initial; }
+#search.input-collapsed .horizontal-list { transform: none !important; }
+#search-keyboard { transition: opacity 0.25s, transform 0.25s; transform-origin: 50% top 0px; }
+#search-keyboard.hidden { opacity: 0; transform: scaleY(0.5); display: block !important; }
+#search #search-text-entry { height: 2.4em; }
+#search #search-suggestions, #search #search-text-entry { padding-top: 0.25em; transform-origin: 50% top 0px; transition: opacity 0.25s, transform 0.25s; background-color: rgba(0, 0, 0, 0); }
+.limited-animation #search .horizontal-list, .limited-animation #search #search-suggestions, .limited-animation #search #search-text-entry, .limited-animation #search #search-keyboard { transition: none; }
+#search-text-entry { padding-bottom: 0.4em; }
+#search-text-entry, #text-box-background { height: 3em; }
+#keyboard-icon { display: none; font-family: youtube-icons; font-size: 1.2em; padding-bottom: 0.4em; text-align: center; vertical-align: bottom; width: 2em; }
+.input-collapsed #keyboard-icon { display: inline-block; }
+#search-text-entry .suggestions-container { white-space: nowrap; overflow: hidden; height: 2.4em; }
+.exp-densityBrowse #search .horizontal-list { font-size: 100%; height: 14em; top: 35%; transform: translateY(8em); }
+.limited-animation .exp-densityBrowse #search .horizontal-list .list { margin-left: -14em; }
+.exp-densityBrowse #search .horizontal-list .video-tile { height: 14em; }
+.exp-densityBrowse #search .horizontal-list .video-tile .details .views, .exp-densityBrowse #search .horizontal-list .video-tile .details .age { display: inline-block; }
+.exp-densityBrowse #search .horizontal-list .video-tile .details .views { padding-right: 0.5em; }
+.limited-animation.sets-ui .exp-densityBrowse #search .horizontal-list > .content { margin-left: 0px; width: inherit; }
+#player { height: 100%; width: 100%; }
+.watch-state #watch { display: block; }
+.veryvibrant #watch { height: 100%; background-color: rgb(0, 0, 0); }
+#player-facade { height: 100%; position: absolute; width: 100%; }
+#player-video { height: 100%; }
+#watch, .dialog-focused .standard-caption-window, #caption-window-99, .countdowntimer, .ytp-cued-icon, .ytp-fallback, .html5-context-menu, .html5-dialog-holder, .html5-endscreen, .html5-info-bar, .html5-modal-panel, .html5-player-chrome, .html5-show-video-info-template, .html5-storyboard, .html5-text-button, .html5-video-player .hid, .html5-ypc-module, .player-actions-container, .video-ad-status-bar, .video-annotations, .html5-watermark, .video-fallback-content, .video-ads, .title-card.hidden { display: none; }
+.html5-video-player { overflow: visible; }
+.html5-video-info-panel { color: rgb(241, 241, 241); display: none; margin: 20%; position: absolute; top: 0px; z-index: 1; background-color: rgba(0, 0, 0, 0.701961); }
+.html5-video-info-panel-close { display: none; }
+.html5-video-info-panel-content > div > div { display: inline-block; font-weight: bold; padding: 0px 0.5em; text-align: right; width: 10em; }
+.ad-video { width: 100%; height: 100%; }
+.ad-showing .video-ads { display: block; overflow: hidden; }
+.ad-interrupting.tag-pool-enabled .html5-main-video { position: absolute; left: -1px; top: -1px; overflow: hidden; width: 1px !important; height: 1px !important; }
+.html5-video-player .video-stream { position: absolute; top: 0px; left: 0px; display: block; }
+.opera .video-stream { height: 720px; width: 1280px; }
+.advertisement-info, .skip-ad-button { position: absolute; top: 9.5em; }
+.advertisement-info { left: 12.5%; text-align: left; width: 30%; overflow: hidden; }
+.advertisement-info-top { height: 3em; }
+.advertisement-avatar { width: 3em; height: 3em; display: inline-block; margin-right: 0.4em; background-size: contain; background-position: 100% 50%; background-repeat: no-repeat; }
+.advertisement-info-details { display: inline-block; vertical-align: top; width: 79%; }
+.advertisement-title, .advertisement-advertiser, .third-party { color: rgb(255, 255, 255); text-shadow: rgb(0, 0, 0) 2px 1px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
+.third-party { position: absolute; bottom: 0px; }
+.advertisement-title { font-size: 1.4em; line-height: 1em; height: 1.1em; }
+.advertisement-advertiser { font-size: 1.1em; line-height: 1.3em; height: 1.4em; }
+.advertisement-info .ad-badge { padding: 1px 5px; text-shadow: none; border-radius: 0.15em; font-size: 0.9em; text-transform: capitalize; background-color: rgb(230, 188, 39); }
+.skip-ad-button { right: 12.5%; border-radius: 0.15em; padding: 0.6em; background-color: rgba(0, 0, 0, 0.4); }
+.canskip.mdx-skip.skip-ad-button { height: 4em; width: 18em; }
+.canskip.mdx-skip .skip-button-text { font-size: 1.1em; height: 3em; left: 2em; line-height: 1.5em; position: absolute; top: 0.7em; width: 75%; }
+#transport-controls.ad-active .player-controls #button-list div.skip-ad-button .label, .skip-ad-button .label { font-size: 1.1em; padding: 0px 1.4em; height: 2.5em; line-height: 2.5em; border-radius: 0.12em; cursor: pointer; color: rgb(225, 225, 225); background-color: rgba(0, 0, 0, 0); }
+.skip-ad-button.canskip.mdx-skip .label { height: 3.7em; }
+#transport-controls.ad-active .player-controls #button-list div.skip-ad-button.canskip:hover .label, .skip-ad-button.canskip:hover .label { color: rgb(33, 33, 33); border-radius: 0.12em; background-color: rgb(255, 255, 255); }
+#transport-controls.ad-active .player-controls #button-list div.skip-ad-button.canskip.focused .label, .skip-ad-button.canskip.focused .label { color: rgb(33, 33, 33); border-radius: 0.12em; background-color: rgb(225, 225, 225); }
+.skip-ad-button .skip-symbol { display: none; font-family: youtube-icons; }
+.skip-ad-button.canskip .skip-symbol.icon-player-next { display: inline; font-size: 1.3em; margin-left: 0.5em; vertical-align: middle; }
+.exp-newMdxSkipButtonCast .canskip.mdx-skip.skip-ad-button .skip-symbol.icon-cast_on { display: inline; font-size: 2.5em; position: absolute; right: 0.7em; text-align: right; top: 0.5em; width: 25%; }
+.exp-newMdxSkipButtonPair .canskip.mdx-skip.skip-ad-button .skip-symbol.icon-settings-pair { display: inline; font-size: 4em; position: absolute; right: 0.4em; text-align: right; top: 0.3em; width: 25%; }
+.canskip.mdx-skip.skip-ad-button .skip-symbol.icon-player-next { display: none; }
+#player-controls { text-align: center; }
+#bottom-half { bottom: 0px; height: 50%; position: absolute; width: 100%; }
+#transport-controls { bottom: 0px; height: 100%; position: absolute; transition: transform 0.25s, opacity 0.25s; width: 100%; background: linear-gradient(rgba(0, 0, 0, 0), rgb(0, 0, 0)); }
+#transport-controls.hidden { opacity: 0; display: block !important; }
+.limited-animation #transport-controls.hidden { display: none !important; }
+#transport-controls, #transport-controls.focused { display: block; }
+.player-controls-widget { border: 0px; margin-top: 8.4em; }
+.fresh-transport-controls.seeking-forward .seeking-icon.icon-player-rew::before { content: ""; }
+.seeking-icon { bottom: 3em; color: rgb(255, 255, 255); display: none; position: absolute; left: 0px; margin: 0px auto; right: 0px; }
+.seeking-icon span { display: none; }
+.fresh-watch.watch-seeking .seeking-icon { display: block; }
+.fresh-watch .title-card { height: 35.9%; background: linear-gradient(rgba(0, 0, 0, 0.74902), transparent); }
+#transport-controls.fresh-transport-controls { background: linear-gradient(to top, rgb(0, 0, 0), transparent); }
+.fresh-watch .player-video-title { color: rgb(255, 255, 255); font-size: 1.936em; }
+.fresh-watch .player-meta .player-video-details { color: rgba(255, 255, 255, 0.701961); font-size: 1.455em; }
+.fresh-watch .pivot-shelf-list { margin-top: 14.5em; padding-left: 3.871em; }
+#fresh-rows-container { border: 0px; color: rgb(255, 255, 255); margin-top: 7.7em; }
+.fresh-transport-controls .storyboards { position: absolute; }
+.fresh-transport-controls .more-row, .fresh-transport-controls .main-row { margin-left: 5%; width: 95%; }
+.fresh-transport-controls .button span, .fresh-transport-controls .toggle-button span { display: none; font-family: roboto-regular; color: rgb(255, 255, 255); }
+.lang-case-sensitive .fresh-transport-controls span::first-letter { text-transform: uppercase; }
+.fresh-transport-controls .button.disabled:hover, .fresh-transport-controls .toggle-button.disabled:hover { background-color: transparent; }
+.fresh-transport-controls .button.disabled, .fresh-transport-controls .toggle-button.disabled { opacity: 0.45; }
+.fresh-transport-controls .button.focused, .fresh-transport-controls .toggle-button.focused, .fresh-transport-controls .button:hover, .fresh-transport-controls .toggle-button:hover { color: rgb(255, 255, 255); background-color: rgba(255, 255, 255, 0.498039); }
+.fresh-transport-controls .button, .fresh-transport-controls .toggle-button, .seeking-icon { border-radius: 4px; font-family: youtube-icons; font-size: 1.4em; height: 1em; padding: 0.55em; speak: none; text-align: center; width: 1em; }
+.fresh-transport-controls .button, .fresh-transport-controls .toggle-button { color: rgba(255, 255, 255, 0.701961); cursor: pointer; display: inline-block; position: relative; }
+.fresh-transport-controls #transport-more-button::before { display: inline-block; left: 19%; position: absolute; top: -9%; }
+.fresh-transport-controls #transport-more-button { font-size: 2em; height: 0.7em; margin-right: 1.452em; padding: 0.385em; width: 0.7em; }
+.fresh-transport-controls #transport-more-button span { color: rgb(255, 255, 255); display: inline-block; font-size: 0.485em; left: 4.5em; position: absolute; text-align: left; top: 1em; width: 15em; }
+.fresh-transport-controls #transport-more-button.top-row-active span { display: none; }
+.fresh-transport-controls #transport-more-options-list { display: inline-block; }
+.fresh-transport-controls .progress-bar { display: inline-block; height: 3em; left: 0px; padding: 0px; position: relative; top: 0px; width: 76.55%; }
+.fresh-transport-controls.live-playback #play-pause-button { margin-right: 1em; }
+.fresh-transport-controls.live-playback .progress-bar { width: 77.55%; }
+.fresh-transport-controls.live-playback .live-indicator { display: inline-block; left: 0px; margin-left: 1em; position: relative; top: 0px; }
+.fresh-transport-controls #player-time-elapsed, .fresh-transport-controls .player-time-total { color: rgb(255, 255, 255); display: inline-block; font-size: 1.3em; position: relative; text-align: center; top: 0px; width: 8%; }
+.fresh-transport-controls .more-row { margin-bottom: 5px; }
+.fresh-transport-controls .more-row .button, .fresh-transport-controls .more-row .toggle-button { margin-right: 2.075em; vertical-align: top; }
+.fresh-transport-controls .icon-like.toggle-selected, .fresh-transport-controls .icon-dislike.toggle-selected, .fresh-transport-controls .icon-player-closedcaptions.toggle-selected { color: rgb(39, 147, 230); }
+.fresh-transport-controls .icon-logo-lozenge.toggle-selected { color: rgb(255, 0, 0); }
+.fresh-transport-controls .more-row .button span, .fresh-transport-controls .more-row .toggle-button span { font-size: 0.692em; left: -3.45em; position: relative; top: -4.4em; width: 8.3em; }
+.fresh-transport-controls .more-row .button.focused span, .fresh-transport-controls .more-row .toggle-button.focused span, .fresh-transport-controls .more-row .button:hover span, .fresh-transport-controls .more-row .toggle-button:hover span { display: inline-block; }
+.fresh-transport-controls .progress-bar .progress-bar-line div { height: 0.242em; }
+.fresh-transport-controls .progress-bar .progress-bar-line .progress-bar-background { background-color: rgba(255, 255, 255, 0.45098); }
+.fresh-transport-controls .progress-bar .progress-bar-line .progress-bar-loaded { background-color: rgb(255, 255, 255); }
+.fresh-transport-controls .progress-bar .progress-bar-line .progress-bar-played { background-color: rgb(223, 35, 35); }
+.fresh-transport-controls .progress-bar.ad-active .progress-bar-played { background-color: rgb(231, 189, 0); }
+.ypc-playback .fresh-transport-controls .progress-bar-line .progress-bar-played { background-color: rgb(39, 147, 230); }
+.fresh-watch .ad-point-separator, .fresh-transport-controls .progress-bar .progress-bar-disc, .fresh-transport-controls.ad-active #player-time-elapsed, .fresh-transport-controls.ad-active .player-time-total { display: none; }
+.fresh-transport-controls.ad-active .progress-bar { padding-left: 1em; width: 88%; }
+.fresh-transport-controls.ad-active .more-row, .fresh-watch.watch-seeking .more-row { visibility: hidden; }
+.fresh-watch .skip-ad-button, .fresh-watch .advertisement-info { top: 6.7em; }
+.fresh-watch .advertisement-info { left: 5%; }
+.fresh-watch .advertisement-info .advertisement-info-top { height: 3.065em; position: relative; }
+.fresh-watch .skip-ad-button { border-radius: 4px; padding: 0px; right: 6%; z-index: 1; background-color: rgba(0, 0, 0, 0.498039); }
+.fresh-watch .skip-ad-button .label { color: rgb(255, 255, 255); font-size: 1.13em; height: 2.57em; line-height: 2.57em; padding: 0px 1.3em; }
+.fresh-watch .skip-ad-button .skip-symbol { font-size: 1.1em; }
+.fresh-watch .skip-ad-button.canskip:hover, .fresh-watch .skip-ad-button.canskip.focused { background-color: rgba(255, 255, 255, 0.498039); }
+.fresh-watch .skip-ad-button.canskip:hover .label, .fresh-watch .skip-ad-button.canskip.focused .label { color: rgb(255, 255, 255); background: none; }
+.fresh-watch .advertisement-info { color: rgb(255, 255, 255); }
+.fresh-watch .advertisement-info .advertisement-advertiser { font-size: 100%; height: 1.4em; line-height: 1.3em; }
+.fresh-watch .advertisement-info .advertisement-advertiser > span { vertical-align: bottom; }
+.fresh-watch .advertisement-info .advertisement-advertiser, .fresh-watch .advertisement-info .advertisement-title, .fresh-watch .advertisement-info .third-party { overflow: hidden; text-shadow: none; text-overflow: ellipsis; white-space: nowrap; }
+.fresh-watch .advertisement-info .third-party { bottom: 0px; position: absolute; vertical-align: top; width: 79%; }
+.fresh-watch .advertisement-info .third-party > span { vertical-align: middle; }
+.fresh-watch .advertisement-info .advertisement-title { font-size: 1.35em; font-weight: bold; line-height: 1em; height: 1.1em; padding-bottom: 1%; text-shadow: none; }
+.fresh-watch .advertisement-info .ad-badge { border-radius: 0.15em; font-size: 0.85em; font-weight: bold; padding: 1px 7px; text-shadow: none; text-transform: capitalize; background-color: rgb(231, 189, 0); }
+.fresh-watch .advertisement-info .remaining-duration, .fresh-watch .advertisement-info .ad-by { font-size: 1.13em; }
+.fresh-watch .advertisement-info .remaining-duration { padding: 0px 2%; }
+.fresh-watch .advertisement-info .advertisement-avatar { border-radius: 50%; display: inline-block; height: 3.065em; margin-right: 1.4em; width: 3.065em; background-size: contain; background-repeat: no-repeat; }
+.title-card { display: block; height: 25%; position: absolute; top: 0px; transition: transform 0.25s, opacity 0.25s; width: 100%; background: linear-gradient(rgba(0, 0, 0, 0.901961), rgba(0, 0, 0, 0.8), transparent); }
+.ypc-playback .title-card { height: 30%; }
+.title-card.hidden { opacity: 0; display: block !important; }
+.limited-animation .title-card.hidden { display: none !important; }
+.title-card .badges span { border: 1px solid rgb(221, 221, 221); border-radius: 2px; display: inline-block; font-size: 0.9em; margin-left: 1em; padding: 0px 0.5em; text-transform: uppercase; vertical-align: middle; }
+.title-card .badges span.live-badge { color: rgb(255, 255, 255); border: 0px; margin-left: 0px; background-color: rgba(230, 33, 23, 0.8); }
+.selected-title .views { margin-top: -0.6em; }
+.player-meta { color: rgb(241, 241, 241); margin: 2.6em 0px 0px 3.5em; white-space: nowrap; width: 90%; }
+.player-meta .user-details { position: absolute; right: 5%; }
+.player-meta .user-details > div { display: inline-block; vertical-align: top; }
+.player-meta .user-details .avatar { height: 4em; width: 4em; background-size: cover; }
+.player-meta .user-details .message { font-size: 80%; margin: 0.2em 1em 0px 1.1em; max-width: 50%; overflow: hidden; text-overflow: ellipsis; }
+.player-meta .player-video-text { display: inline-block; padding-left: 1.5em; width: 90%; }
+.player-meta .player-video-details { font-size: 1.5em; white-space: initial; }
+.player-meta .player-video-details > div { margin: 0.2em 1em 0px 0px; vertical-align: top; }
+.player-meta .player-video-details .username { max-width: 45%; overflow: hidden; text-overflow: ellipsis; }
+.player-meta .player-video-details .set-context { max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+.player-meta .player-video-details .set-context, .player-meta .player-video-details .set-context-position, .player-meta .player-video-details .uploaded-date, .player-meta .player-video-details .view-count, .player-meta .player-video-details .badges, .player-meta .player-video-details .username { display: inline-block; }
+.player-video-avatar { border-radius: 50%; display: inline-block; height: 5.5em; vertical-align: top; width: 5.5em; background-size: contain; }
+.player-video-title { font-size: 2.4em; margin: -0.1em 0px 0px; overflow: hidden; text-overflow: ellipsis; }
+.quality-status { display: none; padding-top: 0.2em; }
+.title-tray-inflated .quality-status { display: inline-block; }
+.quality-status-hd-badge { border-radius: 2px; color: rgb(65, 65, 65); font-size: 0.6em; font-weight: bold; padding: 0.125em 0.5em; background: rgb(241, 241, 241); }
+.ypc-preview { display: none; }
+.ypc-playback .ypc-preview { display: block; }
+.player-controls #button-list .focused, .player-controls #button-list div:hover { border-radius: 0.05em; color: rgb(0, 0, 0); }
+.player-controls #button-list .focused { background-color: rgb(255, 255, 255); }
+.player-controls #button-list div:hover { background-color: rgb(157, 148, 149); }
+.player-controls #button-list .button, .player-controls #button-list .toggle-button { display: inline-block; font-size: 1.4em; height: 1.3em; margin: 1em; padding-bottom: 0.4em; padding-top: 0.8em; top: 0px; width: 2.3em; }
+.player-controls #button-list .button span, .player-controls #button-list .toggle-button span { font-family: roboto-regular; font-size: 0.7em; left: -10%; margin: 0.5em 0px 0px; width: 120%; height: 120%; }
+.player-controls #button-list .button.spacer { visibility: hidden; cursor: auto; }
+#transport-controls.focused .player-controls #button-list div { color: rgb(255, 255, 255); }
+#transport-controls.focused .player-controls #button-list .focused { color: rgb(34, 34, 34); }
+.player-controls #button-list div { color: rgb(170, 170, 170); cursor: pointer; vertical-align: middle; }
+#transport-controls.ad-active .player-controls #button-list div.disabled { visibility: hidden; }
+#transport-controls.ad-active .player-controls #button-list div.skip-ad-button.disabled { visibility: visible; opacity: 1; }
+.player-controls #button-list div.disabled:hover { color: rgb(255, 255, 255); background-color: transparent; }
+.player-controls #button-list div.focused { opacity: 1; }
+.player-controls #button-list div.disabled { opacity: 0.2; }
+.player-controls #button-list .icon-player-closedcaptions.toggle-selected, .player-controls #button-list .icon-like.toggle-selected, .player-controls #button-list .icon-dislike.toggle-selected { color: rgb(39, 147, 230) !important; }
+.player-controls #button-list .icon-logo-lozenge.toggle-selected { color: rgb(255, 0, 0) !important; }
+#transport-controls .player-controls #button-list div.icon-player-more, #transport-controls .player-controls #button-list div.icon-player-less { color: rgb(133, 133, 133); }
+.player-controls .toggle-button span, .player-controls .button span, .player-controls .toggle-button.disabled span, .player-controls .button.disabled span { display: none; margin-top: 1em; color: rgb(255, 255, 255); font-size: 0.75em; padding: 0px; position: relative; text-align: center; top: 1em; width: 100%; }
+.lang-case-sensitive .player-controls .button span::first-letter, .lang-case-sensitive .player-controls .toggle-button span::first-letter { text-transform: uppercase; }
+#transport-controls.focused, .player-controls .toggle-button.focused span, .player-controls div:hover.toggle-button span, .player-controls .button.focused span, .player-controls div:hover.button span { display: block; }
+.player-seekbar { position: relative; }
+.progress-bar { height: 4em; left: 11%; position: absolute; top: -9em; width: 75%; padding: 0px 1.5%; }
+.progress-bar .progress-bar-playhead, .progress-bar .progress-bar-line { top: 2.5em; }
+.progress-bar .progress-bar-line { position: relative; width: 100%; }
+.progress-bar .progress-bar-line div { height: 2px; position: absolute; }
+.progress-bar .progress-bar-playhead { height: 2px; position: relative; width: 100%; }
+.progress-bar .progress-bar-line .progress-bar-background { width: 100%; background-color: rgb(91, 91, 91); }
+.progress-bar .progress-bar-line .progress-bar-played { background-color: rgb(227, 44, 41); }
+.progress-bar .progress-bar-line .progress-bar-loaded { background-color: rgb(153, 153, 153); }
+.ypc-playback .progress-bar-line .progress-bar-played { background-color: rgb(39, 147, 230); }
+.progress-bar .progress-bar-disc { border-radius: 50%; height: 0.6em; margin: -0.25em 0px 0px -0.25em; position: absolute; width: 0.6em; background-color: rgb(204, 204, 204); }
+.progress-bar .cue-range-markers { height: 100%; position: absolute; width: 100%; }
+.progress-bar-disc { pointer-events: none; }
+.ad-active .progress-bar .cue-range-markers { visibility: hidden; }
+.progress-bar .cue-range-markers .cue-range-marker { height: 2px; margin: 0px 0px 0px -0.1em; position: absolute; width: 0.2em; background-color: rgba(255, 255, 255, 0); }
+.progress-bar .cue-range-markers .ad-marker { background-color: rgb(230, 188, 39); }
+.progress-bar.ad-active .progress-bar-played { background-color: rgb(214, 203, 35); }
+#player-time-elapsed, .player-time-total, .live-indicator { color: rgba(255, 255, 255, 0.74902); font-size: 1.2em; position: absolute; top: -6em; width: 12%; }
+.limited-graphics #player-time-elapsed, .limited-graphics .player-time-total { color: rgb(255, 255, 255); }
+#player-time-elapsed { left: 0px; text-align: right; }
+.player-time-total, .live-indicator { right: 0px; text-align: left; }
+#transport-controls.ad-active #player-time-elapsed, #transport-controls.ad-active .player-time-total { display: none; }
+.live-indicator { display: none; font-size: 1.3em; position: absolute; top: -5.6em; width: 11.7%; }
+.live-playback .live-indicator { display: block; }
+.live-playback .player-time-total, .live-playback .elapsed-time, .fresh-transport-controls.live-playback .player-time-total, .fresh-transport-controls.live-playback #player-time-elapsed { display: none; }
+.live-playback .progress-bar-disc { background-color: rgb(230, 33, 23); }
+#watch .loading-indicator { top: 30%; }
+#transport-spacer:hover { background: none; }
+.html5-video-controls { position: absolute; width: 100%; height: 0px; bottom: 2em; transition: all 0.6s ease; }
+.ytp-player-content { position: absolute; bottom: 0px; height: 0px; left: 0px; right: 0px; }
+.html5-video-content { position: absolute; }
+.caption-window { position: absolute; pointer-events: none; }
+.standard-caption-window { position: absolute; white-space: normal; width: 80%; }
+.caption-window-transform { display: inline-block; line-height: 1.32em; }
+.html5-video-player .captions-text { position: relative; }
+.html5-video-player .caption-row { padding-bottom: 5px; padding-top: 5px; }
+.anchor-point-1 { transform: translate(-50%, 0px); }
+.anchor-point-2 { transform: translate(-100%, 0px); }
+.anchor-point-3 { transform: translate(0px, -50%); }
+.anchor-point-4 { transform: translate(-50%, -50%); }
+.anchor-point-5 { transform: translate(-100%, -50%); }
+.anchor-point-6 { transform: translate(0px, -100%); }
+.anchor-point-7 { transform: translate(-50%, -100%); }
+.anchor-point-8 { transform: translate(-100%, -100%); }
+.anchor-point-0, .anchor-point-1, .anchor-point-2 { padding-top: 3em; }
+.watch.transport-showing .anchor-point-0, .watch.transport-showing .anchor-point-1, .watch.transport-showing .anchor-point-2 { padding-top: 9em; }
+.anchor-point-0, .anchor-point-3, .anchor-point-6 { padding-left: 3em; }
+.anchor-point-2, .anchor-point-5, .anchor-point-8 { padding-right: 3em; }
+.anchor-point-6, .anchor-point-7, .anchor-point-8, .eureka .watch.transport-showing .anchor-point-6, .eureka .watch.transport-showing .anchor-point-7, .eureka .watch.transport-showing .anchor-point-8 { padding-bottom: 3em; }
+.watch.transport-showing .anchor-point-6, .watch.transport-showing .anchor-point-7, .watch.transport-showing .anchor-point-8 { padding-bottom: 15em; }
+.watch.pivot-focused .anchor-point-6 { padding-bottom: 17.5em; }
+.watch.pivot-focused .anchor-point-7, .watch.pivot-focused .anchor-point-8 { padding-bottom: 16em; }
+.watch .ytp-fresca-module, .search-focused .watch.message .ytp-fresca-module { display: none; }
+.watch.message .ytp-fresca-module { color: rgb(255, 255, 255); display: block; font-size: 2em; padding-left: 1.5em; position: absolute; top: 30%; width: 100%; background-color: rgba(0, 0, 0, 0.498039); }
+.watch.message .ytp-fresca-show-countdown { padding-bottom: 1.3em; }
+.ytp-fresca-countdown { font-size: 1.4em; }
+.pivot-shelf-list { margin-top: 12.5em; padding-left: 7em; transition: transform 0.25s, opacity 0.25s; transform: translateY(10em); }
+.pivot-shelf-list.hidden { opacity: 0; display: block !important; }
+.limited-animation .pivot-shelf-list.hidden, .forced-limited-animation.pivot-shelf-list.hidden { display: none !important; }
+.pivot-shelf-list.animate-in { transform: translateY(0px); }
+.pivot-shelf-list > .carousel { opacity: 0.5; transition: opacity 0.25s; }
+.limited-memory .pivot-shelf-list { opacity: 1; }
+.pivot-shelf-list .title-container { color: rgb(255, 255, 255); }
+.pivot-shelf .tile-title .author, .pivot-shelf .tile-title .view { color: rgb(225, 225, 225); }
+.pivot-shelf-list.focused, .post-play .pivot-shelf-list { height: 17.5em; margin-top: 2.5em; padding-top: 10em; transform: translateY(-7.5em); background: linear-gradient(rgba(0, 0, 0, 0), rgb(0, 0, 0)); }
+.post-play .pivot-shelf { opacity: 0.5; }
+.post-play .pivot-shelf-list.focused .pivot-shelf, .pivot-shelf-list.focused > .carousel { opacity: 1; }
+.pivot-shelf-list .focused.list { height: 0px; }
+.pivot-shelf-list .no-content-message { display: none; }
+.pivot-shelf-list.forced-limited-animation, .limited-animation .pivot-shelf-list, .limited-animation .pivot-shelf-list > .carousel { transition: none; }
+.pivot-shelf-list.forced-limited-animation .placeholder-tile, .limited-animation .pivot-shelf-list .placeholder-tile { height: 7.83em; width: 14em; }
+#pivot-post-play .pivot-video-tile, #pivot-post-play .placeholder-tile { height: 10.625em; width: 18.5em; }
+#pivot-post-play .tile-top { height: 10.625em; }
+.limited-animation #pivot-post-play .tile-top, #pivot-post-play.forced-limited-animation .tile-top { height: 9.825em; width: 17.7em; }
+.pivo`t-video-tile, .pivot-channel-tile { height: 7.83em; width: 14em; }
+.forced-limited-animation .pivot-video-tile, .forced-limited-animation .pivot-auto-play-tile, .forced-limited-animation .pivot-channel-tile, .pivot-shelf-list.forced-limited-animation .placeholder-tile, #pivot-post-play.forced-limited-animation .placeholder-tile, .limited-animation .pivot-video-tile, .limited-animation .pivot-auto-play-tile, .limited-animation .pivot-channel-tile, .limited-animation #pivot-post-play .placeholder-tile, .limited-animation .pivot-shelf-list .placeholder-tile { display: inline-block; margin-right: 0.5em; position: relative; vertical-align: bottom; background: none; }
+.forced-limited-animation .pivot-channel-tile, .limited-animation .pivot-channel-tile { border-radius: 100%; width: 10.625em; }
+.forced-limited-animation .pivot-video-tile.focused, .forced-limited-animation .pivot-auto-play-tile.focused .pivot-video-tile, .limited-animation .pivot-video-tile.focused, .limited-animation .pivot-auto-play-tile.focused .pivot-video-tile { background-color: rgb(255, 255, 255); }
+.pivot-video-tile .tile-top { height: 7.83em; }
+.forced-limited-animation .pivot-video-tile .tile-top, .limited-animation .pivot-video-tile .tile-top { height: 7.03em; padding: 0.4em; width: 13.2em; background-color: inherit; }
+.forced-limited-animation .pivot-video-tile.focused .tile-top, .limited-animation .pivot-video-tile.focused .tile-top { background-color: rgb(255, 255, 255); }
+.pivot-video-tile .tile-overlay { color: rgb(255, 255, 255); display: none; height: 100%; margin-top: -7.83em; text-align: center; width: 100%; background-color: rgba(0, 0, 0, 0.498039); }
+.forced-limited-animation .pivot-video-tile .tile-overlay, .limited-animation .pivot-video-tile .tile-overlay { margin-top: -7.03em; }
+#pivot-post-play .pivot-video-tile .tile-overlay { margin-top: -10.625em; }
+.limited-animation #pivot-post-play .pivot-video-tile .tile-overlay, #pivot-post-play.forced-limited-animation .pivot-video-tile .tile-overlay { margin-top: -9.875em; }
+.pivot-video-tile.has-overlay .tile-overlay { display: block; }
+#pivot-post-play .pivot-video-tile.has-overlay .tile-overlay { opacity: 0; }
+#pivot-post-play.focused .pivot-video-tile.has-overlay .tile-overlay { opacity: 1; }
+.post-play .pivot-shelf-list .pivot-video-tile.has-overlay .label { display: none; }
+.post-play .pivot-shelf-list .pivot-video-tile.has-overlay .icon-player-play { font-size: 4em; }
+.post-play .pivot-shelf-list .pivot-video-tile.has-overlay .icon-player-play::before { content: ""; }
+.pivot-video-tile .tile-overlay .icon { font-family: youtube-icons; font-size: 3em; padding-top: 0.5em; }
+.pivot-video-tile .tile-overlay .label { font-size: 1.2em; }
+#pivot-post-play .pivot-video-tile .tile-overlay { color: rgb(225, 225, 225); }
+#pivot-post-play .pivot-video-tile .tile-overlay .icon { font-size: 4.5em; padding-bottom: 0.15em; padding-top: 0.4em; }
+#pivot-post-play .pivot-video-tile .tile-overlay .label, #pivot-post-play .pivot-video-tile .tile-overlay .icon { opacity: 0; transition: opacity 0.25s; }
+#pivot-post-play.focused .pivot-video-tile .tile-overlay .label, #pivot-post-play.focused .pivot-video-tile .tile-overlay .icon { opacity: 1; }
+.limited-animation #pivot-post-play .pivot-video-tile .tile-overlay .label, .limited-animation #pivot-post-play .pivot-video-tile .tile-overlay .icon, #pivot-post-play.forced-limited-animation .pivot-video-tile .tile-overlay .label, #pivot-post-play.forced-limited-animation .pivot-video-tile .tile-overlay .icon { transition: none; }
+.pivot-video-tile .video-thumb { height: 100%; width: 100%; background-size: 100%; background-position: 50% 50%; background-repeat: no-repeat; }
+.pivot-video-tile .decoration { margin-top: -2.1em; text-align: right; }
+.pivot-video-tile .duration { font-size: 1em; font-weight: bold; padding: 0.5em; background-color: rgba(0, 0, 0, 0.701961); }
+.pivot-auto-play-tile { height: 10.625em; overflow: visible; width: 18.5em; background: none; }
+.forced-limited-animation .pivot-auto-play-tile, .limited-animation .pivot-auto-play-tile { height: 10.625em; width: 18.5em; }
+.pivot-auto-play-tile .post-play-countdown { display: block; font-size: 1.8em; margin-left: 10.8em; opacity: 0; pointer-events: none; position: absolute; text-align: left; text-shadow: none; top: 0px; width: 17.5em; }
+.pivot-auto-play-tile.countdown-active .post-play-countdown { opacity: 1; pointer-events: inherit; }
+.pivot-auto-play-tile .details, .pivot-auto-play-tile .title { color: rgb(255, 255, 255); opacity: 0; pointer-events: none; }
+.pivot-auto-play-tile.focused .details, .pivot-auto-play-tile.focused .title { opacity: 1; pointer-events: inherit; }
+.pivot-auto-play-tile .title { font-size: 1.4em; margin-left: 14em; max-height: 2.5em; overflow: hidden; position: absolute; top: 2.2em; width: 20em; }
+.pivot-auto-play-tile .details { font-size: 1.1em; margin-left: 17.8em; position: absolute; top: 6em; width: 37em; }
+.pivot-auto-play-tile .details, .pivot-auto-play-tile .title, .pivot-auto-play-tile .post-play-countdown { transition: opacity 0.25s; }
+.limited-animation .pivot-auto-play-tile .details, .limited-animation .pivot-auto-play-tile .title, .limited-animation .pivot-auto-play-tile .post-play-countdown { transition: none; }
+#pivot-post-play .pivot-auto-play-tile .pivot-video-tile { padding-left: 0px; padding-top: 0px; }
+#pivot-post-play #post-play-list .no-content-message { display: none; }
+.forced-limited-animation .pivot-horizontal-list, .limited-animation .pivot-horizontal-list { margin-left: -15em; }
+.pivot-horizontal-list.focused .pivot-sliding-highlighter, .post-play #post-play-list.focused .pivot-sliding-highlighter { display: block; }
+.pivot-horizontal-list .pivot-sliding-highlighter, .post-play .pivot-sliding-highlighter { border: 0.5em solid rgb(255, 255, 255); box-shadow: rgb(0, 0, 0) 0.083em 0.083em 0.75em 0.167em inset; height: 7.5em; margin-left: -0.4em; margin-top: -0.4em; pointer-events: none; width: 13.8em; background: transparent; }
+.pivot-shelf { position: absolute; width: 0px; }
+.forced-limited-animation .pivot-shelf, .limited-animation .pivot-shelf { opacity: 0.5; position: relative; }
+.forced-limited-animation .pivot-shelf.focused, .limited-animation .pivot-shelf.focused { opacity: 1; }
+.limited-memory.limited-animation .pivot-shelf { opacity: 1; }
+.pivot-shelf .title-container { margin-bottom: 1em; visibility: hidden; white-space: nowrap; }
+.pivot-shelf .title-container .icon { font-family: youtube-icons; vertical-align: middle; }
+.pivot-shelf .tile-title span { display: inline-block; overflow: hidden; text-overflow: ellipsis; }
+.pivot-shelf.focused .title-container { visibility: visible; }
+.pivot-shelf .tile-title, .pivot-shelf .shelf-title { margin-bottom: 0.3em; }
+.pivot-shelf .tile-title { height: 1.7em; }
+.pivot-shelf .tile-title .title { font-size: 1.3em; max-width: 30em; }
+.pivot-shelf .tile-title .author, .pivot-shelf .tile-title .view { margin-left: 0.3em; max-width: 20em; }
+.pivot-shelf .tile-title .author, .pivot-sliding-highlighter .select { display: none; }
+.pivot-shelf.has-author .tile-title .author { display: inline-block; }
+.forced-limited-animation .pivot-horizontal-list .list, .limited-animation .pivot-horizontal-list .list { width: 98em; }
+.forced-limited-animation .postplay-horizontal-list .list, .limited-animation .postplay-horizontal-list .list { margin-left: -13.4em; width: 98em; }
+.forced-limited-animation .pivot-channel-tile.focused .tile-top, .limited-animation .pivot-channel-tile.focused .tile-top { background-color: rgb(255, 255, 255); }
+.forced-limited-animation .pivot-channel-tile .tile-top, .limited-animation .pivot-channel-tile .tile-top { height: 6.83em; padding: 0.4em; width: 6.83em; }
+.pivot-channel-tile .tile-top { border-radius: 50%; height: 7.83em; margin: 0px auto; overflow: hidden; width: 7.83em; background: none; }
+.pivot-channel-tile .tile-top .video-thumb { background-color: rgba(0, 0, 0, 0); }
+.pivot-channel-tile .video-thumb { border-radius: 50%; }
+.pivot-shelf .pivot-horizontal-list.channel-selected .pivot-sliding-highlighter { border-radius: 50%; height: 7.5em; margin-left: -0.3em; margin-top: -0.3em; transform: translateX(3.2em); width: 7.5em; }
+.pivot-shelf.channel-selected .shelf-title { visibility: hidden; }
+.pivot-footer { height: 9em; }
+.pivot-button-list { padding-top: 4em; }
+.pivot-button-list .icon-button { display: inline-block; padding: 0.5em 1em; }
+.pivot-button-list .icon-button .icon { font-family: youtube-icons; margin-right: 0.3em; }
+.pivot-footer.focused .pivot-button-list .icon-button.selected { background-color: rgb(255, 255, 255); }
+.pivot-button-list .icon-button span { color: rgb(255, 255, 255); font-size: 1.5em; }
+.pivot-footer.focused .pivot-button-list .icon-button.selected span { color: rgb(0, 0, 0); }
+#pivot-post-play { padding-left: 6em; padding-top: 10em; }
+.limited-animation #pivot-post-play, #pivot-post-play.forced-limited-animation { padding-left: 0px; }
+#pivot-post-play #post-play-list { font-size: 1.1em; margin-left: 0.1em; }
+.forced-limited-animation .pivot-auto-play-tile, .limited-animation .pivot-auto-play-tile { padding-left: 0px; vertical-align: bottom; }
+#pivot-post-play.forced-limited-animation .pivot-video-tile, .limited-animation #pivot-post-play .pivot-video-tile { vertical-align: bottom; }
+.forced-limited-animation .pivot-auto-play-tile .pivot-video-tile, .limited-animation .pivot-auto-play-tile .pivot-video-tile { display: block; position: absolute; }
+#pivot-post-play .pivot-sliding-highlighter { border-width: 0.5em; height: 9.9em; margin-top: 0px; width: 18.4em; }
+.limited-animation.sets-ui .exp-densityBrowse .auto-play-tile:not(.focused) .video-tile, .limited-animation .exp-densityBrowse .auto-play-tile.focused .video-tile, .limited-animation .exp-densityBrowse .auto-play-tile { background-color: inherit; }
+.limited-animation .exp-densityBrowse .auto-play-tile.focused .tile-top { background: rgb(255, 255, 255); }
+.limited-animation .exp-densityBrowse .auto-play-tile .post-play-countdown { top: -2.67em; }
+.loki-video-source { color: rgb(255, 255, 255); font-size: 1.5em; left: 5em; position: absolute; top: 2.6em; }
+.loki-title-card { bottom: 0px; display: block; height: 25%; position: absolute; width: 100%; background: linear-gradient(to top, rgba(0, 0, 0, 0.901961) 0%, rgba(0, 0, 0, 0.6) 80%, transparent 100%); }
+.loki-title-card .loki-metadata { color: rgb(241, 241, 241); height: 100%; margin-bottom: 2.6em; margin-left: 8em; overflow: hidden; white-space: nowrap; width: 100%; }
+.loki-metadata #loki-progress-bar { display: block; height: 2em; left: 8em; padding: 0px; position: absolute; top: -4em; width: 80%; }
+#loki-progress-bar .progress-bar-playhead { display: none; }
+.loki-metadata .loki-video-avatar { display: inline-block; height: 8em; width: 8em; background-size: contain; }
+.loki-metadata .loki-video-text { display: inline-block; height: 100%; margin: 0px 5em 0px 3.5em; width: 80%; }
+.loki-video-text .loki-video-title { font-size: 2.4em; margin-top: -0.1em; overflow: hidden; text-overflow: ellipsis; width: 80%; }
+.loki-video-text .loki-channel-name { font-size: 1.5em; margin-top: 0.4em; overflow: hidden; text-overflow: ellipsis; width: 80%; }
+.loki-video-text .loki-video-description { line-height: 1.4em; margin-top: 0.4em; max-height: 4.2em; overflow: hidden; white-space: normal; width: 80%; }
+.toaster { color: rgb(170, 170, 170); font-size: 133%; position: absolute; top: 0px; width: 100%; }
+.toaster .list { margin-top: 0.8em; position: absolute; width: 100%; }
+.toaster .toast { min-height: 3.5em; overflow: hidden; position: relative; text-align: center; width: 100%; transition: all 0.6s ease; }
+.toaster .toast-container { border: 1px solid black; display: inline-block; margin: 0.2em 0px 1em; max-width: 60%; opacity: 1; padding: 0.5em 1em 0.6em; transition: all 0.3s ease; background-color: rgba(27, 25, 26, 0.8); }
+.toaster .toast.toast-removing .toast-container { opacity: 0; }
+.toaster .toast-container > div { display: inline-block; vertical-align: middle; }
+.toaster .toast-icon { height: 1.2em; width: 1.2em; background-size: 1.1em 1.1em; background-position: 50% 50%; background-repeat: no-repeat; }
+.device-toast .toast-container { padding: 0.7em; }
+.toaster .device-toast .toast-msg { padding-left: 0.8em; background-size: 1.1em 1.1em; background-position: 0% 50%; background-repeat: no-repeat; }
+.toaster .avatar { height: 2.6em; width: 2.6em; }
+.toaster .avatar > div { height: inherit; width: inherit; background-size: cover; background-position: 50% 50%; }
+.toaster .video-image > div { height: 100%; width: 100%; background-size: cover; background-position: 50% 50%; }
+.toast .update-playlist-toast { bottom: 0px; max-width: 14em; padding: 0.8em; position: fixed; right: 0px; text-align: left; }
+.update-playlist-toast .overlay { height: 55%; margin-left: 56%; margin-top: -55%; opacity: 0.8; width: 44%; background: rgb(0, 0, 0); }
+.update-playlist-toast .video-count { font-size: 2.3em; font-weight: normal; line-height: 1.2em; padding-top: 0.8em; text-align: center; }
+.update-playlist-toast .icon-playlist { font-family: youtube-icons; font-size: 2.2em; height: 50%; overflow: hidden; padding: 0.2em; text-align: center; }
+.update-playlist-toast .avatar { padding: 0.3em; }
+.update-playlist-toast .contrast-container { padding: 0.4em; background-color: rgba(0, 0, 0, 0.8); }
+.update-playlist-toast .tile-top { height: 7.7em; width: 14em; }
+.update-playlist-toast .toast-msg { font-size: 85%; padding-left: 0.6em; }
+.update-playlist-toast .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 13.2em; }
+.update-playlist-toast .toast-msg.avatar { height: 2.1em; width: 10em; overflow: hidden; }
+.update-playlist-toast .toast-msg.truncate { white-space: normal; }
+.update-playlist-toast .toast-msg.no-user-avatar { font-size: 85%; margin-left: -2.2em; }
+.update-playlist-toast .wrapper > div { display: inline-block; vertical-align: middle; }
+.toaster .toast-icon { max-width: 100%; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/dial-sprite.png); background-size: 100%; }
+.toast-icon.avatar { background-image: none; }
+.toaster .android-phone-connected { background-position: 0px 0%; }
+.toaster .android-phone-disconnected { background-position: 0px 10.14%; }
+.toaster .android-tablet-connected { background-position: 0px 20.29%; }
+.toaster .android-tablet-disconnected { background-position: 0px 30.43%; }
+.toaster .ios-phone-connected { background-position: 0px 40.58%; }
+.toaster .ios-phone-disconnected { background-position: 0px 50.72%; }
+.toaster .ios-tablet-connected { background-position: 0px 60.87%; }
+.toaster .ios-tablet-disconnected { background-position: 0px 71%; }
+.toaster .laptop-connected { background-position: 0px 81.16%; }
+.toaster .laptop-disconnected { background-position: 0px 91.3%; }
+.toaster .remote-connected { background-size: 233.33%; background-position: 0px 100%; }
+.toaster .remote-disconnected { background-size: 233.33%; background-position: 0px 100%; }
+.toaster .toast-progress { border: 1px solid rgb(170, 170, 170); width: 10em; }
+.toaster .toast-progress .progress { height: 1em; background-color: rgb(102, 102, 102); }
+.toaster .volume-muted { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/volume_mute_pressed.png); }
+.toaster .volume-low { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/volume_0_pressed.png); }
+.toaster .volume-mid { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/volume_1_pressed.png); }
+.toaster .volume-high { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/volume_2_pressed.png); }
+.toaster .volume-toast .toast-msg { text-align: right; width: 1.2em; }
+.toaster .volume-toast .toast-container { transition-delay: 0.3s; }
+.toaster .volume-toast.toast-removing .toast-container { transition-delay: 0s; }
+.unlimited-welcome-toast .toast-container { box-shadow: rgb(0, 0, 0) 0em 0em 0.6em 0.02em; height: 6.5em; margin: 0em; padding: 0px; position: fixed; right: 0px; text-align: left; top: 0px; width: 24.5em; transform: translateX(0px); opacity: 1; transition: all 0.6s ease; }
+.unlimited-welcome-toast.toast-displaying .toast-container { opacity: 0; transform: translateX(18em); }
+.limited-animation .unlimited-welcome-toast .toast-container { opacity: 1; transition: none; transform: none; }
+.unlimited-toast-messages { position: absolute; padding-top: 2.1em; padding-left: 1.3em; width: 12em; }
+.unlimited-toast-msg-top { color: rgb(221, 221, 221); line-height: 1em; }
+.unlimited-toast-msg-bottom { padding-top: 0.5em; font-size: 0.7em; }
+.unlimited-toast-background { height: 100%; width: 9em; background-size: 100%; background-position: 0% 50%; background-repeat: no-repeat; }
+.unlimited-toast-logo { height: 100%; background-size: 100%; background-repeat: no-repeat; }
+#dialog { color: rgb(255, 255, 255); display: none; height: 100%; left: 0px; position: absolute; top: 0px; width: 100%; }
+#error-markup #dialog { display: block; }
+#dialog.focused { display: block; }
+#dialog-wrapper { height: 30em; margin-top: 11.1em; padding: 1.3em 6em; position: relative; background-color: rgb(0, 0, 0); }
+#dialog.browse-sets #dialog-wrapper { height: 100%; margin-top: 0px; padding: 1.3em 10%; background-color: rgba(32, 32, 32, 0.498039); }
+#dialog .dialog-contents { background: 90% 30% no-repeat; }
+#dialog.browse-sets .dialog-contents .icon-simple-dialog { color: rgb(255, 255, 255); }
+#dialog .dialog-contents .dialog-large-icon { display: none; }
+#dialog.browse-sets .dialog-contents .dialog-large-icon { display: inline-block; font-family: youtube-icons; font-size: 10em; height: 2.5em; line-height: 2.5em; text-align: center; width: 35%; }
+#dialog.browse-sets .icon-simple-dialog .icon-dialog-content .extra-info { color: rgba(255, 255, 255, 0.74902); display: block; font-family: monospace; font-size: 1.5em; line-height: 1.4em; padding-top: 0.8em; }
+#dialog.browse-sets .icon-simple-dialog .icon-dialog-content .label { display: block; font-size: 1.8em; line-height: 1.1em; padding-top: 6.45em; }
+#dialog .dialog-contents .header .title { font-size: 2.5em; }
+#dialog.browse-sets.browse-sets-titled-dialog .dialog-contents .header { border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgba(255, 255, 255, 0.2); height: 3.4em; margin: 0px 1.5em; }
+#dialog.browse-sets.browse-sets-titled-dialog .dialog-contents .header .title { color: rgba(255, 255, 255, 0.498039); display: block; font-size: 1.3em; font-weight: 300; height: 3em; line-height: 3em; }
+#dialog.browse-sets .buttons { font-size: 1.8em; margin-right: 2%; margin-top: 0.8em; text-align: right; }
+#dialog.browse-sets .connection-steps { padding: 0px; }
+#dialog.browse-sets.exit .dialog-contents .header .title { display: block; padding: 1em 6.5em 3em; }
+#dialog.browse-sets .dialog-contents { height: 80%; margin-top: 5%; background-color: rgb(0, 0, 0); }
+#dialog.browse-sets.closed-captions .dialog-contents { height: 75%; }
+#dialog.browse-sets .dialog-cancel-button { text-align: center; }
+.video-overview .dialog-contents { font-size: 2em; }
+#dialog.qr-dialog .dialog-contents { color: rgb(204, 204, 204); font-size: 1.1em; overflow: hidden; padding-top: 4em; }
+#dialog.qr-dialog .dialog-contents .header .title { color: rgb(255, 255, 255); font-size: 2em; }
+#dialog .box { padding-top: 1.5em; }
+#dialog.qr-dialog a { color: rgb(255, 255, 255); display: block; font-size: 1.5em; }
+#dialog.qr-dialog .qr { height: 7em; margin: 0.2em 0px; width: 7em; background-size: 100%; }
+#dialog.qr-dialog .dialog-icon { display: block; background-size: 12em; }
+#dialog.help .dialog-icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-help.png); }
+#dialog.feedback .dialog-icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-feedback.png); }
+#dialog.system-error .dialog-icon { font-family: youtube-icons; font-size: 10em; margin-right: 0px; padding-right: 0.5em; padding-top: 0.5em; text-align: right; width: 2em; }
+#dialog.system-error .dialog-icon::before { content: ""; }
+#dialog.qr-dialog.browse-sets .dialog-icon { display: none; }
+#dialog .text-dialog { bottom: 1.5em; left: 0px; padding: 2em 20em 0px 6em; position: absolute; white-space: normal; }
+#dialog.text-dialog .dialog-contents .header .title { font-size: 3em; padding-bottom: 0.5em; }
+.text-dialog #dialog-view { color: rgb(170, 170, 170); padding-bottom: 1em; width: 90%; }
+.text-dialog #dialog-view .dialog-contents { font-size: 1.8em; }
+#dialog.browse-sets .icon-dialog-content { display: inline-block; height: 25em; vertical-align: top; width: 60%; }
+#dialog-view .url { color: rgb(255, 255, 255); font-size: 1.25em; padding-bottom: 0.8em; }
+#dialog-view .flag-claim .url { padding-bottom: 0.5em; }
+#dialog-view .reset-help { display: block; width: 25em; }
+#dialog.browse-sets .tos-dialog .icon-dialog-content { padding-top: 9em; }
+#dialog.browse-sets .tos-dialog .icon-dialog-content .subtitle { color: rgb(170, 170, 170); }
+#dialog.browse-sets .tos-dialog .icon-dialog-content .url { font-size: 2em; }
+#dialog.browse-sets.qr-dialog .dialog-contents { padding-top: 0px; }
+#dialog.browse-sets.qr-dialog .icon-dialog-content .link { margin-top: 5em; padding-top: 0px; }
+#dialog.browse-sets.qr-dialog .icon-dialog-content .qr-code-wrapper { margin-top: 2em; }
+#dialog.browse-sets.qr-dialog .icon-dialog-content .qr-code-wrapper .qr { border: 0.2em solid rgba(255, 255, 255, 0.0980392); padding: 0.5em; }
+#dialog .signed-out-dialog { font-size: 1.8em; }
+.connection-error, .connection-steps { display: inline-block; font-weight: 300; padding: 0px 1em 1em 2em; white-space: normal; }
+.connection-error { vertical-align: top; }
+.connection-error div { margin-bottom: 1em; }
+#dialog .login-dialog .activation-code { font-size: 1.3em; letter-spacing: 0.1em; line-height: 1.3em; }
+#dialog .sets-login-dialog .body-text { display: inline-block; height: 25em; vertical-align: top; width: 50%; }
+#dialog .sets-login-dialog .body-text .connection-instructions { font-size: 1.9em; margin-top: 3.5em; }
+#dialog .sets-login-dialog .standard-message, #dialog .sets-login-dialog .like-dislike-message, #dialog .sets-login-dialog .subscribe-message, #dialog .sets-login-dialog .upload-message, #dialog .sets-login-dialog .player-message { display: none; }
+#dialog.standard-login .sets-login-dialog .standard-message, #dialog.like-dislike-login .sets-login-dialog .like-dislike-message, #dialog.subscribe-login .sets-login-dialog .subscribe-message, #dialog.upload-login .sets-login-dialog .upload-message, #dialog.player-login .sets-login-dialog .player-message { display: block; }
+#dialog .pairing .qr-code-wrapper { display: inline-block; vertical-align: top; }
+#dialog .manual-connect-content .connection-steps { padding: 0px; }
+#dialog .manual-connect-content .connection-steps .label { color: rgb(170, 170, 170); font-size: 0.7em; margin-top: 1em; }
+#dialog .manual-connect-content .connection-steps .step1, #dialog .manual-connect-content .connection-steps .step2 { margin-top: 0.7em; }
+#dialog .manual-connect-content .connection-steps .pair-url, #dialog .manual-connect-content .connection-steps .pair-code { margin-left: 0.3em; }
+#dialog.browse-sets .manual-connect-content .connection-steps .label { font-size: 1.3em; }
+#dialog.browse-sets .manual-connect-content .connection-steps .step1, #dialog.browse-sets .manual-connect-content .connection-steps .step2 { display: inline-block; font-size: 1.3em; }
+#dialog.browse-sets .manual-connect-content .connection-steps .pair-url, #dialog.browse-sets .manual-connect-content .connection-steps .pair-code { display: inline-block; font-size: 1.3em; margin-left: 0.3em; }
+#dialog.browse-sets .pairing .connection-instructions { font-size: 1em; padding-top: 10em; }
+#dialog .manual-connect .dial-upsell-content { display: none; }
+#dialog .dial-upsell .manual-connect-content .connection-steps .no-dial-connect-step1, #dialog .manual-connect .manual-connect-content .connection-steps .with-dial-connect-step1 { display: none; }
+#dialog .manual-connect .manual-connect-content .connection-steps { font-size: 1.5em; }
+#dialog .manual-connect .manual-connect-content .connection-steps .label { display: none; }
+#dialog.browse-sets .dial-upsell .dial-upsell-content { font-size: 1.8em; white-space: normal; width: 80%; }
+#dialog.browse-sets .dial-upsell .dial-upsell-content .cast-icon { height: 1.3em; margin: 0px; width: 1.5em; }
+#dialog.browse-sets .dial-upsell .manual-connect-content { color: rgb(170, 170, 170); font-size: 1.4em; line-height: 1em; }
+#dialog.browse-sets .remote-reset-dialog .connected-list .connected-header { color: rgb(255, 255, 255); font-size: 1.5em; margin-top: 6em; }
+#dialog.browse-sets .remote-reset-dialog .connected-list .devices { display: inline-block; font-size: 1em; }
+#dialog.browse-sets .remote-reset-dialog .connected-list .devices > div { display: inline-block; font-size: 1em; padding-left: 0px; padding-right: 1.5em; width: 10em; }
+#dialog.browse-sets .remote-reset-dialog .reset-help { font-size: 1.5em; margin-top: 1em; }
+#dialog .logout-authenticated-info { padding: 2.5em 0px; }
+#dialog .login-user-icon { display: inline-block; height: 4em; margin: 2em 2em 0px 0px; width: 4em; background-size: cover; }
+#dialog.browse-sets .login-user-icon { margin: 0px 15%; border-radius: 20em; }
+#dialog .login-user-info { display: inline-block; margin-left: 1.7em; margin-top: -0.8em; font-size: 2em; font-weight: 300; width: 82%; }
+#dialog .login-user-info h3 { font-size: 2.2em; font-weight: normal; margin: 0px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+#dialog.browse-sets .logout-authenticated-info { padding: 0px; }
+#dialog.browse-sets .login-user-info { height: 13em; margin: 0px; width: 100%; }
+#dialog.browse-sets .login-user-info .display-name, #dialog.browse-sets .login-user-info .platform-container { display: none; }
+#dialog.browse-sets .login-user-info .signed-in-message { display: inline-block; width: 50%; }
+#dialog.browse-sets .login-user-info .signed-in-label strong { color: rgb(255, 255, 255); display: block; font-size: 2.5em; overflow: hidden; text-overflow: ellipsis; }
+#dialog.browse-sets .login-user-info .signed-in-label { color: rgb(170, 170, 170); font-size: 0.5em; margin-top: 10em; }
+#dialog.browse-sets .login-user-info .sign-out-label { margin-top: 1em; }
+#dialog .spinner { height: 10em; width: 10em; }
+#dialog .spinner .loading-indicator { height: 100%; width: 100%; background-size: contain; }
+#dialog .buttons { font-size: 3em; font-weight: 300; padding-top: 0.3em; }
+#dialog .buttons > div { color: rgb(0, 0, 0); cursor: pointer; display: inline-block; min-width: 2.4em; padding: 0px 0.3em; text-align: center; background-color: rgb(51, 51, 51); }
+#dialog.browse-sets .buttons .button { color: rgba(255, 255, 255, 0.498039); min-width: 3em; padding: 0.2em 0.8em; background-color: rgb(0, 0, 0); }
+#dialog.browse-sets .buttons .focused, #dialog.browse-sets .buttons .button.focused:hover { color: rgb(102, 102, 102); background-color: rgb(241, 241, 241); }
+#dialog .buttons .button:hover, #dialog.browse-sets .buttons .button:hover { background-color: rgb(102, 102, 102); }
+#dialog .buttons div { margin-left: 0.5em; }
+#dialog .buttons .focused, #dialog .buttons .focused:hover { color: rgb(102, 102, 102); background-color: rgb(241, 241, 241); }
+#dialog .whichOneIsThis-logout-dialog .logout-prompt { font-size: 1.7em; }
+#dialog .logout-prompt { margin-top: 6em; }
+.scrolling-text { font-size: 1.3em; height: 15em; margin-right: 1.1em; margin-top: 1em; overflow: hidden; }
+.scrolling-text h4 { margin: 0px; padding: 0px; }
+.scrolling-text > div { overflow: hidden; padding-bottom: 1em; }
+.flag-list-container { margin-top: 0.5em; }
+.flag-list .button { color: rgb(134, 134, 134); cursor: pointer; display: inline-block; font-size: 1.8em; padding: 0.4em; vertical-align: top; }
+.flag-list .button { width: 12em; }
+.flag-list .button:hover { background-color: rgb(68, 68, 68); }
+.flag-list .button.focused, .flag-list .button.focused:hover { color: rgb(103, 103, 103); background-color: rgb(255, 255, 255); }
+#flag-widget { font-weight: 300; }
+.flag-video { color: rgb(103, 103, 103); font-size: 1.8em; font-weight: 300; padding-top: 1em; width: 47%; }
+.flag-video .url { color: rgb(255, 255, 255); display: block; font-size: 1.6em; padding-top: 0.5em; }
+.flag-example { display: inline-block; height: 57%; position: absolute; right: 18%; top: 9%; width: 23%; background: url(www.youtube.com/s/tv/html5/f0d770f4/img/flag.png) 0px 0px / contain no-repeat; }
+.flag-claim .metadata { display: block; font-size: 1em; font-weight: 500; padding-top: 0.2em; white-space: normal; }
+.flag-claim .url { color: rgb(134, 134, 134); display: block; font-weight: 300; }
+.flag-claim { color: rgb(103, 103, 103); font-size: 1.6em; font-weight: 300; margin: 1em 0px 0px 2em; white-space: nowrap; }
+.flag-claim .copyright-infringment { display: inline-block; white-space: normal; width: 50%; }
+.flag-claim .privacy-invasion { display: inline-block; margin-left: 4%; vertical-align: top; white-space: normal; width: 40%; }
+.flag-claim .email { color: rgb(134, 134, 134); }
+.flag-claim .subtitle { font-size: 1.2em; font-weight: 500; }
+.player-error-dialog.player-error { color: rgb(170, 170, 170); font-size: 1.8em; padding: 1em 0px 8em 0em; }
+#dialog .scrollbar { height: 70%; margin-top: 5em; right: 5em; }
+#dialog .scrollbar .handle { height: 5em; }
+.paid-channel-info { font-size: 1.4em; padding-top: 1em; }
+.paid-channel-info .channel-url { font-weight: bold; }
+.status-dialog #dialog-wrapper { background-color: rgba(0, 0, 0, 0.498039); }
+.status-dialog .icon { display: inline-block; height: 11em; vertical-align: middle; width: 25%; background: url(www.youtube.com/s/tv/html5/f0d770f4/img/pairing-promo-combo.png) 50% 50% / contain no-repeat; }
+.status-dialog .info { display: inline-block; padding-left: 0.5em; vertical-align: middle; width: 70%; }
+.status-dialog .message { color: rgb(204, 204, 204); font-size: 2em; }
+.status-dialog #dialog-view { padding-top: 7em; }
+.dialog-focused #legend { bottom: 12%; display: block; }
+#legend.legend-for-dialog-closed-captions { bottom: 6%; }
+#dialog.confirm-cookies .dialog-contents .header .title { font-size: 3em; }
+#dialog.confirm-cookies #dialog-view { color: rgb(170, 170, 170); font-size: 1.8em; height: 8em; padding-top: 0.9em; }
+.single-pane-selector { padding-bottom: 1em; padding-top: 1em; white-space: nowrap; }
+.single-pane-selector .list { display: inline-block; margin-right: 0.5em; padding-left: 0.5em; padding-right: 0.5em; vertical-align: top; width: 94%; }
+.single-pane-selector .button .label { width: 90%; }
+.single-pane-selector .check-button.previously-selected .icon-check { display: inline-block; }
+.split-pane-selector { border-bottom-width: 0.1em; border-bottom-style: solid; border-bottom-color: rgba(255, 255, 255, 0.2); padding-bottom: 1em; padding-top: 1em; white-space: nowrap; }
+.check-button .icon-check { display: none; font-family: youtube-icons; }
+.single-pane-selector .labeled-value, .split-pane-selector .labeled-value { color: rgb(134, 134, 134); font-size: 1.4em; height: 2.8em; line-height: 1.5em; overflow: hidden; padding: 0px 1em; white-space: normal; }
+.single-pane-selector .labeled-value .value, .split-pane-selector .labeled-value .value { color: rgb(102, 102, 102); display: block; font-size: 0.7em; line-height: 1.4em; }
+.single-pane-selector .button, .split-pane-selector .button { color: rgb(134, 134, 134); cursor: pointer; font-size: 1.4em; height: 2.8em; line-height: 2.8em; overflow: hidden; padding: 0px 0.4em; white-space: normal; }
+.single-pane-selector .button .label, .split-pane-selector .button .label { display: inline-block; line-height: 1.3em; vertical-align: middle; }
+.single-pane-selector .subtitled-button, .split-pane-selector .subtitled-button { line-height: 1.5em; }
+.single-pane-selector .button.no-model, .split-pane-selector .button.no-model { visibility: hidden; }
+.split-pane-selector .list { display: inline-block; vertical-align: top; width: 47%; }
+.split-pane-selector .list:first-child { border-right-width: 0.1em; border-right-style: solid; border-right-color: rgba(255, 255, 255, 0.2); margin-right: 0.5em; padding-right: 0.5em; }
+.single-pane-selector .button:hover, .single-pane-selector .list:not(.focused) .button.selected, .split-pane-selector .button:hover, .split-pane-selector .list:not(.focused) .button.selected { color: rgb(255, 255, 255); background-color: rgb(68, 68, 68); }
+.single-pane-selector .button.focused, .single-pane-selector .button.focused:hover, .split-pane-selector .button.focused, .split-pane-selector .button.focused:hover { color: black; background-color: rgb(255, 255, 255); }
+.single-pane-selector .subtitled-button span.subtitle, .split-pane-selector .subtitled-button span.subtitle { color: rgb(102, 102, 102); display: block; font-size: 0.7em; line-height: 1.4em; }
+.color-button .preview { border: 2px solid rgb(0, 0, 0); color: rgb(134, 134, 134); display: inline-block; height: 1em; margin: 0px 0.2em 0.2em; vertical-align: middle; width: 1em; }
+.color-button .preview.rounded { border-radius: 50%; }
+.preview.black { border: 1px solid rgb(255, 255, 255); background-color: rgb(0, 0, 0); }
+.preview.red { background-color: rgb(255, 0, 0); }
+.preview.magenta { background-color: rgb(255, 0, 255); }
+.preview.blue { background-color: rgb(0, 0, 255); }
+.preview.cyan { background-color: rgb(0, 255, 255); }
+.preview.green { background-color: rgb(0, 255, 0); }
+.preview.yellow { background-color: rgb(255, 255, 0); }
+.preview.white { background-color: rgb(255, 255, 255); }
+.debug-dialog { font-size: 0.9em; }
+.debug-dialog span.label { font-weight: bold; }
+#dialog.browse-sets .video-upload-dialog-contents { display: inline-block; font-size: 1.6em; margin: 1em 3% 0px; text-align: left; vertical-align: top; width: 55%; }
+#dialog.browse-sets .modify-video .video-upload-dialog-contents { margin-top: 2em; text-align: center; }
+.video-upload-status .video-url { color: rgb(39, 147, 230); }
+.delete-video { padding-bottom: 6em; }
+.modify-video .list .button { color: rgb(132, 132, 132); display: inline-block; height: 8em; margin-right: 1em; text-align: center; width: 8em; background-size: 60% 60%; background-position: 50% 20%; background-repeat: no-repeat; }
+.modify-video .list .button.focused { color: rgb(40, 40, 40); background-color: rgb(255, 255, 255); }
+.modify-video .list .button span { display: block; font-size: 1.2em; margin: 4.6em 0.5em 0.5em; overflow: hidden; white-space: nowrap; }
+.modify-video .modify-edit-button { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_light.png); }
+.modify-video .modify-edit-button.focused { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_dark.png); }
+.modify-video .modify-delete-button { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_light.png); }
+.modify-video .modify-delete-button.focused { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_dark.png); }
+.delete-video-dialog .video-tile .details, .modify-video .video-tile .details { margin-top: -0.1em; }
+.browse-sets #modify-list .button { height: 7.5em; margin-right: 0.9em; width: 7.5em; }
+.browse-sets #modify-list .button span { font-size: 1.1em; margin-top: 5.2em; }
+.delete-video-dialog { margin-bottom: 14em; }
+.browse-sets .delete-video-dialog { margin-bottom: 1em; }
+.video-processing, .video-upload-error { font-size: 1.5em; }
+.video-upload-error .error-container { color: rgb(170, 170, 170); margin-top: 1em; }
+#dialog .buttons .upload-terms, #dialog .buttons .upload-terms:hover { color: rgb(85, 85, 85); display: block; font-size: 0.6em; margin-left: 1.5em; text-align: left; background-color: rgb(0, 0, 0); }
+.upload-progress { margin-bottom: 1em; width: 100%; }
+.upload-progress-value { text-align: left; width: 100%; }
+.upload-progress span { margin-left: -1em; position: relative; width: 4em; }
+.upload-progress .upload-progress-bar { width: 100%; background-color: rgb(170, 170, 170); }
+.upload-progress .upload-progress-bar .completed { height: 1em; background-color: rgb(39, 147, 230); }
+.privacy-button { cursor: pointer; position: relative; background: 0.4em 50% / 1.5em no-repeat; }
+.privacy-button .checkbox { height: 2em; left: 85%; position: absolute; top: 0px; width: 2em; background-size: 2em; background-position: 100% 50%; }
+.privacy-button.checked .checkbox { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-light.png); }
+.privacy-button.focused.checked .checkbox { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-dark.png); }
+.privacy-button .label .name { line-height: 1.5em; text-indent: 1.8em; background-size: 2em; background-position: 0px 0.5em; }
+.privacy-button .description { font-size: 0.6em; line-height: 0.8em; padding-left: 2.9em; }
+.privacy-button .name { font-size: 1em; line-height: 1.2em; padding-left: 1.7em; }
+.private-state, .video-tile .private { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-light.png); }
+.private-state.focused { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-dark.png); }
+.public-state, .video-tile .public { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-light.png); }
+.public-state.focused { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-dark.png); }
+.unlisted-state, .video-tile .unlisted { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-light.png); }
+.unlisted-state.focused { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-dark.png); }
+.video-tile .private, .video-tile .public, .video-tile .unlisted { min-height: 1.5em; min-width: 1.5em; padding-left: 1.5em; background-size: 1.5em; background-position: 0% 50%; background-repeat: no-repeat; }
+.video-privacy .button, .video-overview .button { display: inline-block; height: 2em; line-height: 2em; margin: 0.1em 0px; overflow: hidden; padding: 0.1em 0.5em; vertical-align: top; white-space: nowrap; width: 65%; }
+.video-privacy .button { width: 85%; }
+.video-overview .button:first-child { width: 20%; }
+.video-privacy .button.focused, .video-privacy .button:not(.disabled):hover, .video-overview .button.focused, .video-overview .button:not(.disabled):hover { color: rgb(103, 103, 103); background-color: rgb(255, 255, 255); }
+#dialog.browse-sets .video-privacy .button:nth-child(2) { width: 11em; }
+#dialog.browse-sets .video-uploads { margin: 3em 1em 2em; }
+#dialog.browse-sets .video-uploads .carousel { overflow: hidden; }
+#dialog.browse-sets .video-uploads .carousel .video-tile .details { text-align: left; }
+.video-overview .title-button { line-height: 1em; white-space: normal; }
+#dialog.browse-sets .video-overview .title-button .label { display: inline-block; line-height: 2em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 95%; }
+.video-overview .channel-button { line-height: 2em; overflow: hidden; text-indent: 1.8em; text-overflow: ellipsis; background-size: 1.5em; background-position: 0.35em 50%; background-repeat: no-repeat; }
+.video-uploads .carousel { height: 20em; position: relative; white-space: nowrap; }
+.video-tile-container { display: inline-block; margin-top: 1.7em; text-align: right; width: 35%; }
+.video-tile-container .video-tile { border: 0.1em solid rgba(255, 255, 255, 0.2); display: inline-block; height: 22em; position: static; text-align: left; width: 20em; }
+.video-tile-container .video-tile .tile-top { height: 51%; }
+.video-tile-container .video-tile .tile-bottom .details { height: inherit; }
+.video-uploads .carousel .video-tile { height: 20em; width: 18em; }
+.video-uploads .video-tile .decoration { top: 7em; }
+.video-tile-container .video-tile .tile-bottom, .video-uploads .video-tile .tile-bottom { width: initial; }
+.dialog.closed-captions #dialog-wrapper { margin-top: 5em; }
+#dialog.closed-captions-language-only #dialog-wrapper { padding: 1.6em 26%; }
+#dialog.closed-captions-language-only #options-list { display: none; }
+#legend.legend-for-dialog-closedCaptionsDialog { bottom: 24%; }
+#dialog.closed-captions-language-only ~ #legend { right: 29%; }
+.simple-dialog { margin: 3em; font-size: 1.6em; }
+.lang-ja_JP .connection-instructions .step1, .lang-ja_JP .connection-instructions .step2, .lang-ko_KR .connection-instructions .step1, .lang-ko_KR .connection-instructions .step2, .lang-zh_CN .connection-instructions .step1, .lang-zh_CN .connection-instructions .step2, .lang-zh_HK .connection-instructions .step1, .lang-zh_HK .connection-instructions .step2, .lang-zh_TW .connection-instructions .step1, .lang-zh_TW .connection-instructions .step2 { font-size: 0.8em; }
+.lang-de_DE .action-tile .content .title, .lang-el_GR .action-tile .content .title, .lang-es_ES .action-tile .content .title, .lang-es_MX .action-tile .content .title, .lang-fr_FR .action-tile .content .title, .lang-fr_CA .action-tile .content .title, .lang-ko_KR .action-tile .content .title, .lang-nl_NL .action-tile .content .title, .lang-pl_PL .action-tile .content .title, .lang-pt_BR .action-tile .content .title, .lang-pt_PT .action-tile .content .title, .lang-ru_RU .action-tile .content .title, .lang-uk_UA .action-tile .content .title { font-size: 2em; }
+.lang-it_IT .action-tile .content .title { font-size: 1.8em; }
+.lang-es_ES .action-tile .improve-yt-tile .title, .lang-fr_CA .action-tile .history-tile .title, .lang-fr_FR .action-tile .history-tile .title, .lang-de_DE .action-tile .terms-tile .title, .lang-fr_CA .action-tile .terms-tile .title, .lang-fr_FR .action-tile .terms-tile .title { font-size: 1.7em; }
+.lang-es_ES .action-tile .videoinfo-tile .title, .lang-es_MX .action-tile .videoinfo-tile .title, .lang-fr_CA .action-tile .videoinfo-tile .title, .lang-fr_FR .action-tile .videoinfo-tile .title, .lang-pt_BR .action-tile .videoinfo-tile .title { font-size: 1.5em; white-space: normal; }
+.lang-de_DE .action-tile .videoinfo-tile .title { font-size: 1.45em; padding-left: 0.5em; padding-right: 0.5em; white-space: normal; }
+.lang-es_ES .action-tile .videoinfo-tile .label, .lang-es_MX .action-tile .videoinfo-tile .label, .lang-fr_CA .action-tile .videoinfo-tile .label, .lang-fr_FR .action-tile .videoinfo-tile .label, .lang-pt_BR .action-tile .videoinfo-tile .label { padding-top: 0.6em; }
+.lang-de_DE .action-tile .videoinfo-tile .label { font-size: 1.6em; padding-top: 0.7em; }
+.lang-ja_JP .action-tile .terms-tile .title { font-size: 2em; }
+.lang-ja_JP #transliteration .list { font-size: 1.2em; }
+.lang-ja_JP #keyboard-grid { font-size: 1.5em; }
+.lang-ja_JP #keyboard-spacebar { margin-left: 5.5em; }
+.lang-zh_CN #search .horizontal-list, .lang-zh_HK #search .horizontal-list, .lang-zh_TW #search .horizontal-list, .lang-ja_JP #search .horizontal-list { transform: translateY(9.5em); }
+.lang-ko_KR #search .horizontal-list { transform: translateY(10.5em); }
+.lang-ko_KR #search-keyboard { font-size: 1.82em; }
+.lang-ko_KR #letter-suggest .button { width: 1em; }
+.lang-ko_KR #keyboard-grid, .lang-ru_RU #keyboard-grid, .lang-uk_UA #keyboard-grid { margin-top: 0.3em; }
+.lang-ko_KR #keyboard-grid.lang-ko .numbers-toggle-tile.button, .lang-ru_RU #keyboard-grid.lang-ru .numbers-toggle-tile.button, .lang-uk_UA #keyboard-grid.lang-ua .numbers-toggle-tile.button { font-size: 0.75em; }
+.lang-ko_KR #keyboard-grid .button, .lang-ru_RU #keyboard-grid .button, .lang-uk_UA #keyboard-grid .button { height: 1.2em; line-height: 1.1em; margin-top: 0.6em; }
+.lang-ko_KR #letter-suggest .button, .lang-ru_RU #letter-suggest .button, .lang-uk_UA #letter-suggest .button { height: 1.2em; line-height: 1.1em; width: 1.2em; }
+.lang-ko_KR .search-state #spinner, .lang-ru_RU .search-state #spinner, .lang-uk_UA .search-state #spinner, .lang-ja_JP .search-state #spinner { top: 25em; }
+.lang-ko_KR .search-state .application-message, .lang-ru_RU .search-state .application-message, .lang-uk_UA .search-state .application-message, .lang-ja_JP .search-state .application-message { top: 55%; }
+.lang-ru_RU #keyboard-grid.lang-ru .button, .lang-uk_UA #keyboard-grid.lang-ua .button, .lang-ko_KR #keyboard-grid, .lang-ko_KR #letter-suggest, .lang-ko_KR #keyboard-spacebar { font-size: 1em; }
+.lang-ru_RU #keyboard-spacebar, .lang-uk_UA #keyboard-spacebar { margin-left: 4.2em; }
+.lang-de_DE .countdown-ad-callout .time-left-label, .lang-de_DE .countdown-ad-callout .skip-time-label { font-size: 1.1em; }
+.lang-cs_CZ .action-tile .description, .lang-de_DE .action-tile .description, .lang-hi_IN .action-tile .description, .lang-pl_PL .action-tile .description, .lang-pt_BR .action-tile .description, .lang-pt_PT .action-tile .description, .lang-ru_RU .action-tile .description, .lang-uk_UA .action-tile .description { font-size: 1.3em; }
+.lang-de_DE .guide-button.footer .guide-button-title { width: 27.81em; }
+.lang-de_DE .guide-user-name { width: 13.5em; }
+.lang-nl_NL .guide-button.disabled .guide-button-title, .lang-de_DE .guide-button.disabled .guide-button-title, .lang-fr_FR .guide-button.disabled .guide-button-title, .lang-pt_PT .guide-button.disabled .guide-button-title { width: 13em; }
+.lang-tr_TR #search #keyboard-grid .button.clear-query-tile, .lang-tr_TR .action-tile .title, .lang-tr_TR .guide-button-icon, .lang-tr_TR #keyboard-grid .button, .lang-tr_TR .tile-top .badge, .lang-tr_TR .tile-top .duration, .lang-tr_TR .title-card .badges span .lang-tr_TR.lang-case-sensitive .player-controls .button span::first-letter, .lang-tr_TR.lang-case-sensitive .player-controls .toggle-button span::first-letter, .lang-tr_TR.lang-case-sensitive .snap-controls .speakable span::first-letter, .lang-tr_TR.lang-case-sensitive .voice-command::first-letter { text-transform: none; }
+.voice-command { display: none; }
+.lang-case-sensitive .voice-command::first-letter { text-transform: uppercase; }
+.engaged .voice-command { color: rgb(93, 194, 30); display: block; font-size: 1em; background-color: rgba(22, 22, 22, 0.701961); }
+.engaged .horizontal-list .carousel .voice-command { display: none; }
+.engaged .horizontal-list.focused .carousel .voice-command { display: block; }
+.engaged .pivot-video-tile .voice-command, .engaged .pivot-channel-tile .voice-command { display: none; }
+.engaged .pivot-video-tile.speakable .voice-command, .engaged .pivot-channel-tile.speakable .voice-command { display: block; }
+.engaged .video-tile .voice-command, .engaged .pivot-video-tile .voice-command, .engaged .pivot-channel-tile .voice-command, .engaged .playlist-tile .voice-command, .engaged .channel-tile .voice-command { bottom: 50%; font-size: 1.5em; margin-top: -2.17em; padding: 0.5em 0.9em; opacity: 0.999; }
+.engaged .video-tile.disabled .voice-command, .engaged .pivot-video-tile.disabled .voice-command, .engaged .pivot-channel-tile.disabled .voice-command { display: none; }
+.engagement-indicator { bottom: 0.8em; display: none; font-size: 1.5em; left: 1.8em; position: absolute; width: 16em; }
+.engaged .engagement-indicator { color: rgb(93, 194, 30); display: block; background-color: transparent; }
+.engagement-indicator .icon { display: inline-block; height: 2em; vertical-align: middle; width: 2em; background: 50% 50% no-repeat; }
+.engagement-indicator .stop-listening { padding: 0.5em; }
+.engagement-indicator .stop-listening .icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-aaa-engaged.png); }
+.engagement-indicator .text { text-align: center; }
+.engagement-indicator .title { display: inline-block; font-size: 0.9em; }
+.browse-sets-state.engaged .engagement-indicator, .browse-state.engaged .engagement-indicator, .post-play-state.engaged .engagement-indicator, .post-play-state.engaged .engagement-indicator, .settings-state.engaged .engagement-indicator, .search-state.engaged .engagement-indicator { display: block; }
+.watch-state.engaged .engagement-indicator { display: block; height: 3em; left: 0px; margin-left: auto; margin-right: auto; right: 0px; text-align: center; top: 20%; }
+.watch-focused .engagement-indicator .stop-listening { background-color: rgba(22, 22, 22, 0.701961); }
+.sliding-highlighter .select, .engaged .legend-item, .engaged #dialog .speakable.button, .engaged .context-menu .speakable.button, .engaged .speakable.action-tile .title, .engaged .modify-video .speakable, .engaged .modify-video .speakable.focused { color: rgb(93, 194, 30); }
+.voice-footer { bottom: 0px; color: rgb(93, 194, 30); font-size: 1.5em; height: 3em; padding: 1em 0px 0.6em; position: absolute; text-align: center; width: 100%; background-color: rgba(22, 22, 22, 0.701961); }
+.voice-footer .list { font-size: 0.65em; margin: -1.3em auto auto; padding-top: 1em; width: 29em; }
+.voice-footer .component { display: inline-block; padding-right: 1em; }
+.engaged .voice-footer { color: rgb(93, 194, 30); }
+.engaged .voice-footer li { display: inline; padding: 0px 2%; }
+.engaged .player-controls .button span, .engaged .player-controls .toggle-button span { color: rgb(93, 194, 30); display: block; }
+.engaged .player-controls .button.disabled span, .engaged .player-controls .toggle-button.disabled span { display: none; }
+.engaged #transport-controls.ad-active .player-controls #button-list div.skip-ad-button.canskip .label, .engaged .skip-ad-button.canskip .label { color: rgb(93, 194, 30); }
+.engaged .player-controls-widget { margin-top: 7.4em; }
+.engaged .player-controls .voice-command.transport { top: 1em; }
+.legend { bottom: 5.5%; color: rgb(241, 241, 241); position: absolute; right: 5.5%; text-shadow: rgb(0, 0, 0) 2px 2px 4px; display: none; background: radial-gradient(closest-side, rgba(0, 0, 0, 0.2) 25%, rgba(0, 0, 0, 0.0980392) 60%, rgba(0, 0, 0, 0)); }
+.limited-memory .legend { background: none; }
+.legend-item { cursor: pointer; display: none; margin: 0px 0px 0px 0.5em; }
+.legend-item span { vertical-align: middle; }
+.legend-item .icon { display: block; height: 2.5em; margin: auto; max-width: 100%; text-align: center; width: 2.5em; background-size: 100%; }
+.legend-item.more > .icon.icon-player-more { background-size: 0px; }
+.legend-item.more > .icon::before { font-family: youtube-icons; color: rgb(255, 255, 255); font-size: 1.9em; margin: auto; position: relative; top: 0.2em; }
+.legend-item .title { display: block; font-size: 1.1em; margin-top: 0px; text-align: center; text-transform: none; }
+#legend.back .back, #legend.close-guide .close-guide, #legend.delete .delete, #legend.exit .exit, #legend.guide .guide, #legend.search .search, #legend.space .space, #legend.home .home, #legend.modify .modify, #legend.more .more, .reversed-keys #legend.back .reversed-back { display: inline-block; }
+.reversed-keys #legend.back .back { display: none; }
+.desktop .legend, .game-console .legend, .tv .legend { display: inline-block; }
+.veryvibrant .legend { font-size: 1.2em; }
+.desktop .legend-item .icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-desktop.png); }
+.game-console.sony .legend-item .icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-bbb.png); }
+.rockandroll #legend .legend-item .icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ccc.png); }
+.skip-ad-callout .icon, .tv .legend-item .icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ddd.png); }
+.veryvibrant .legend-item .icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-eee.png); }
+.veryvibrant #user-info-background { transform: translateZ(0px); }
+.veryvibrant #search .horizontal-list { top: 30%; transform: none; }
+.veryvibrant .search-state #spinner { top: 20em; }
+.sellingApples .legend-item .icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ggg.png); }
+.nothingHere .legend-item .icon { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-fff.png); }
+.desktop .legend-item.back .icon, .desktop .legend-item.exit .icon { background-size: 240%; background-position: 0px 47.4%; }
+.desktop .legend-item.search .icon { background-size: 240%; background-position: 0px 100%; }
+.desktop .legend-item.close-guide .icon, .desktop .legend-item.guide .icon, .desktop .legend-item.home .icon, .desktop .legend-item.space .icon { background-size: 240%; background-position: 0px 73.7%; }
+.desktop .skip-ad-callout .icon { width: 6.6em; background-size: 520%; background-position: 31% 67.5%; }
+.game-console.sony .legend-item .icon, .tv .legend-item .icon, .veryvibrant .legend-item .icon { height: 1.5em; position: relative; bottom: 0.5em; width: 1.5em; background-repeat: no-repeat; }
+.game-console.sony .legend-item.more > .icon::before, .tv .legend-item.more > .icon::before, .veryvibrant .legend-item.more > .icon::before { top: initial; }
+.game-console.microsoft .legend-item { margin-left: 1.4em; }
+.game-console.microsoft .legend-item.back .icon, .game-console.microsoft .legend-item.exit .icon, .game-console.microsoft .legend-item.reversed-back .icon { background-position: 0px 27.5%; }
+.game-console.microsoft .legend-item.search .icon, .game-console.microsoft .legend-item.space .icon { background-position: 0px 82%; }
+.game-console.microsoft .legend-item.close-guide .icon, .game-console.microsoft .legend-item.delete .icon, .game-console.microsoft .legend-item.guide .icon, .game-console.microsoft .legend-item.home .icon, .game-console.microsoft .legend-item.modify .icon { background-position: 0px 54.9%; }
+.rockandroll #legend .legend-item.back .icon, .rockandroll #legend .legend-item.exit .icon { background-position: 0px 105%; }
+.game-console.sony .legend-item.back .icon, .game-console.sony .legend-item.exit .icon { background-position: 0px 0%; }
+.game-console.sony .legend-item.reversed-back .icon { background-position: 0px 100%; }
+.game-console.sony .legend-item.search .icon, .game-console.sony .legend-item.space .icon { background-position: 0px 87.5%; }
+.game-console.sony .legend-item.close-guide .icon, .game-console.sony .legend-item.delete .icon, .game-console.sony .legend-item.guide .icon, .game-console.sony .legend-item.home .icon { background-position: 0px 75%; }
+.game-console.sony #dialog .logout-authenticated-info, .game-console.microsoft #dialog .logout-authenticated-info { padding-top: 0px; }
+.game-console.sony .action-tile .platform-container, .game-console.microsoft .action-tile .platform-container { margin: 1em; text-align: center; }
+.game-console.sony .login-user-info .platform-user-name, .game-console.sony .platform-user-name, .game-console.microsoft .login-user-info .platform-user-name, .game-console.microsoft .platform-user-name { vertical-align: middle; }
+.game-console.sony .login-user-info .platform-user-icon, .game-console.sony .platform-user-icon, .game-console.microsoft .platform-user-icon, .game-console.microsoft .login-user-info .platform-user-icon { display: inline-block; height: 3em; vertical-align: middle; width: 3em; background-size: cover; }
+.game-console.sony #dialog .login-user-info .platform-container > div, .game-console.microsoft #dialog .login-user-info .platform-container > div { font-size: 1em; }
+.veryvibrant .advertisement-callout, .veryvibrant .advertisement-info, .veryvibrant #leanback-player-container, .veryvibrant .skip-ad-button, .veryvibrant .title-card, .veryvibrant #watch, .veryvibrant .toaster { }
+.veryvibrant .pivot-shelf-list { opacity: 1; }
+.veryvibrant .legend-item.back .icon, .veryvibrant .legend-item.exit .icon { background-position: 0px 33.3%; }
+.veryvibrant .legend-item.search .icon { background-position: 0px 100%; }
+.veryvibrant .legend-item.close-guide .icon, .veryvibrant .legend-item.delete .icon, .veryvibrant .legend-item.guide .icon, .veryvibrant .legend-item.home .icon { background-position: 0px 66.7%; }
+.veryvibrant .qr-code-wrapper { display: none; }
+.veryvibrant #search .search-pairing { display: none; }
+.veryvibrant #search-suggestions { font-size: 1.6em; height: 1.6em; }
+.veryvibrant .search-state .application-message { top: 35%; }
+.tv .legend-item.guide .icon, .tv .legend-item.close-guide .icon, .tv .skip-ad-callout .icon { background-position: 0px 100%; }
+.lg .legend-item.back, .lg .legend-item.exit { cursor: pointer; }
+.tv .legend-item.back .icon, .tv .legend-item.exit .icon { background-position: 0% 0%; }
+.lg .legend-item.back .icon, .lg .legend-item.exit .icon { opacity: 0.8; }
+.lg .legend-item.back:hover .icon, .lg .legend-item.exit:hover .icon { opacity: 1; }
+body.samsung { background-color: transparent !important; }
+body.lg { background-image: url(tv:) !important; background-color: transparent !important; }
+body.limited-memory { background-color: rgb(17, 17, 17); }
+.limited-memory .bg, .eureka .bg { background-image: none; background-color: rgb(46, 46, 46); }
+.limited-animation .loading-indicator, .opera .loading-indicator, .lg .loading-indicator { display: none; }
+.limited-animation .fallback-loading-indicator, .opera .fallback-loading-indicator, .lg .fallback-loading-indicator { display: block; }
+.limited-animation .video-tile .video-thumb { opacity: 1; }
+.limited-memory .video-tile .video-thumb { background-size: cover; }
+.limited-memory .video-tile .video-thumb.preloaded { background-size: auto; }
+.rockandroll.limited-memory .video-tile .video-thumb { opacity: 1; background-size: 100%; }
+.limited-animation.playlist-tile .count-overlay { background-color: rgb(0, 0, 0); }
+.search .placeholder-tile, .settings .placeholder-tile, .limited-animation .browse-content .list .placeholder-tile { height: 24em; width: 20.75em; }
+.guide .placeholder-tile { width: 100%; height: 2em; }
+.limited-animation .action-tile, .limited-animation .channel-tile, .limited-animation .playlist-tile, .limited-animation .auto-play-tile, .limited-animation .recent-search-tile, .limited-animation .video-tile, .limited-animation .browse-content .list .placeholder-tile, .search .placeholder-tile, .settings .placeholder-tile, .shelf .placeholder-tile { display: inline-block; margin-right: 1.1em; position: relative; vertical-align: top; }
+.limited-animation .shelves { margin-top: 2.5%; }
+.limited-animation .playlist-tile .overlay, .limited-animation .video-tile .overlay, .limited-memory .playlist-tile .overlay, .limited-memory .video-tile .overlay { opacity: 1; }
+.limited-memory .auto-play-tile .video-tile { margin: 0px; }
+.limited-animation .auto-play-tile .post-play-countdown { top: -4em; }
+.limited-animation .hide-background.video-tile .video-thumb { opacity: 1; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/icon-playbutton.png) !important; background-repeat: no-repeat; }
+.limited-animation .action-tile.focused .content { text-shadow: none; }
+.limited-animation .post-play-countdown { text-shadow: none; }
+.limited-animation #keyboard-grid .button.disabled, .limited-animation #keyboard-grid .button.focused, .limited-animation #letter-suggest .button { background-color: rgb(153, 153, 153); }
+.limited-animation #search #text-box-background, .limited-animation #search #search-text-entry { background-color: rgb(0, 0, 0); }
+.limited-animation #search-keyboard, .limited-animation #letter-suggest { text-shadow: none; }
+.limited-animation #search-keyboard .disabled, .limited-animation #letter-suggest .button { color: rgb(0, 0, 0); text-shadow: none; }
+.limited-animation #letter-suggest .button.focused, .limited-animation #search-keyboard .button.focused { color: rgb(33, 33, 33); background-color: rgb(225, 225, 225); }
+.limited-animation #transliteration .list .button { border-right-color: rgb(241, 241, 241); }
+.limited-animation #transliteration .list .button.focused { background-color: rgb(153, 153, 153); }
+.limited-animation .toaster .toast-container { background-color: rgb(27, 25, 26); }
+.limited-animation .title-card, .limited-memory.limited-animation.sets-ui .title-card { height: 20%; background: rgb(0, 0, 0); }
+.opera .focused, .opera :focus { outline: invert none medium; }
+.eureka #browse-sets, .eureka #dialog .buttons, .eureka .legend, .eureka #transport-controls { display: none; }
+#eureka-player-controls-container { display: none; position: absolute; top: 17em; width: 100%; }
+.eureka #eureka-player-controls-container { display: block; }
+.eureka .loading #eureka-player-controls-container { opacity: 0; }
+#eureka-player-controls { border-radius: 1em; height: 11.5em; margin: 0px auto; overflow: hidden; width: 11.5em; background-size: 100%; }
+.eureka #eureka-player-controls { opacity: 0; }
+@-webkit-keyframes showAndShrinkPause { 
+  0% { transform: scale(1.5); opacity: 0; }
+  100% { opacity: 0.7; }
+}
+@-webkit-keyframes hideAndGrowPlay { 
+  0% { opacity: 0.7; }
+  100% { transform: scale(1.5); opacity: 0; }
+}
+.eureka #watch.play #eureka-player-controls { animation: hideAndGrowPlay 0.25s linear 0s 1 normal none; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/player-play.png); }
+.eureka #watch.pause #eureka-player-controls { animation: showAndShrinkPause 0.25s linear 0s 1 normal none; opacity: 0.7; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/player-pause.png); }
+.sellingApples .action-tile, .sellingApples .legend-item.back, .sellingApples .legend-item.delete, .sellingApples .legend-item.exit, .sellingApples .legend-item.home, .sellingApples .legend-item.modify, .sellingApples .legend-item.reversed-back, .sellingApples .legend-item.search, .sellingApples .player-controls div, .sellingApples .auto-play-tile, .sellingApples .video-stream, .sellingApples .video-tile, .sellingApples #browse-search-bar, .sellingApples #guide.focused .guide-button, .sellingApples #player-controls .item, .sellingApples #snap-buttons > div { }
+.sellingApples #browse-sets { }
+.sellingApples #guide.focused .carousel { }
+.sellingApples .settings-shelf { }
+.sellingApples #transliteration .button:hover, .sellingApples #keyboard-grid .button:hover { cursor: default; background: none; }
+.search-hint { display: none; }
+.sellingApples .search-hint, .nothingHere .search-hint { color: rgb(107, 107, 107); display: block; font-size: 1.4em; line-height: 2em; }
+.context-menu-defocuser { height: 100%; left: 0px; position: absolute; top: 0px; width: 100%; background-color: rgba(0, 0, 0, 0.498039); }
+.context-menu-list { height: initial; left: 50%; padding-top: 2.5em; position: relative; top: 50%; transform: translate(-50%, -50%); width: 30%; background-color: rgb(0, 0, 0); }
+.context-menu-list .button { border-color: rgb(0, 0, 0); border-style: solid; border-width: 0.5em 1em; color: rgb(225, 225, 225); cursor: pointer; font-family: roboto-regular; font-size: 1.5em; height: auto; line-height: 2.5em; margin: 0px; text-align: left; text-indent: 1em; transition-duration: 200ms; transition-property: background-color, color; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }
+.context-menu-list .button::before { font-family: youtube-icons; padding-right: 1em; }
+.context-menu-list .button.icon-platform-switch-users { border-style: solid; border-color: rgb(31, 31, 31); border-width: 2em 1em; height: initial; line-height: initial; margin-top: 1em; padding: 0.5em 0px 0.5em 3em; text-indent: 0px; background: url(www.youtube.com/s/tv/html5/f0d770f4/app-prod.css) 0.5em 50% / 2em 2em no-repeat rgb(31, 31, 31); }
+.context-menu-list .button.focused { color: rgb(0, 0, 0); background-color: rgb(225, 225, 225); }
+.call-to-cast { display: none; }
+.call-to-cast.focused { bottom: 0px; display: block; left: 0px; position: absolute; right: 0px; top: 0px; }
+.call-to-cast-text { color: rgb(241, 241, 241); font-weight: normal; text-shadow: rgb(0, 0, 0) 0.06em 0.06em; width: 38%; }
+h2.call-to-cast-text { font-size: 3.2em; margin-bottom: 0.3em; margin-top: 0px; padding-top: 1.5em; }
+h3.call-to-cast-text { font-size: 1.7em; }
+.call-to-cast .end-screen { display: none; height: 100%; background-size: cover; background-position: 50% 50%; background-repeat: no-repeat; }
+.call-to-cast .end-screen.active { display: block; }
+.call-to-cast .end-screen .call-to-cast-text { color: rgb(255, 255, 255); width: 40%; }
+.call-to-cast .end-screen .call-to-cast-text em { color: rgb(0, 144, 255); font-style: normal; }
+.call-to-cast .end-screen h2.call-to-cast-text { margin-bottom: 0.5em; padding-top: 2em; }
+.call-to-cast .end-screen h3.call-to-cast-text { line-height: 1.5em; }
+.call-to-cast .end-screen.left .call-to-cast-text { margin-left: 5%; }
+.call-to-cast .end-screen.right .call-to-cast-text { margin-left: 50%; }
+.call-to-cast .end-screen .yt-logo, .call-to-cast .end-screen .yt-kids-logo { bottom: 8%; height: 13.88%; position: fixed; width: 100%; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-yt-logo.png); background-size: contain; background-repeat: no-repeat; }
+.call-to-cast .end-screen.left .yt-logo, .call-to-cast .end-screen.left .yt-kids-logo { left: 4%; background-position: 0% 50%; }
+.call-to-cast .end-screen.right .yt-logo, .call-to-cast .end-screen.right .yt-kids-logo { right: 4%; background-position: 100% 50%; }
+.call-to-cast .end-screen .yt-kids-logo { height: 20%; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/yt-kids-logo.png); }
+.call-to-cast .end-screen.multi-user { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-multi-user.jpg); }
+.call-to-cast .end-screen.yt-mix { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-yt-mix.jpg); }
+.call-to-cast .end-screen.tv-queue { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-tv-queue.jpg); }
+.call-to-cast .end-screen.kids-promo { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-promo.jpg); }
+.call-to-cast .end-screen.kids-mother-goose { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-mother-goose.jpg); }
+.call-to-cast .end-screen.kids-rainbow { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-rainbow.jpg); }
+.call-to-cast .end-screen.kids-sesame { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-sesame.jpg); }
+.call-to-cast .end-screen.kids-talking-tom { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-talking-tom.jpg); }
+.call-to-cast .end-screen.kids-wonderquest { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-wonderquest.jpg); }
+.call-to-cast .THEME-cl.end-screen.kids-promo h2.call-to-cast-text { width: 80%; }
+.call-to-cast .THEME-k.end-screen h3.call-to-cast-text { font-size: 3em; line-height: 1.4em; margin-top: 0px; padding-top: 10%; padding-left: 5%; width: 45%; }
+.call-to-cast .end-screen.gaming-heart { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-gaming-heart.jpg); }
+.call-to-cast .THEME-g.end-screen h3.call-to-cast-text { font-size: 2.2em; padding-top: 0%; width: 100%; }
+.call-to-cast .end-screen.loki { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-loki.jpg); }
+.call-to-cast .THEME-up.end-screen h3.call-to-cast-text { font-size: 2.2em; margin-left: 0%; padding-top: 17em; text-align: center; width: 100%; }
+.call-to-cast .THEME-m.end-screen h2.call-to-cast-text { font-size: 2.2em; margin-bottom: 0px; text-align: center; width: 100%; }
+.call-to-cast .THEME-m.end-screen h3.call-to-cast-text { margin-top: 0px; text-align: center; width: 100%; }
+.call-to-cast .THEME-m.end-screen.music-ready { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music.jpg); }
+.call-to-cast .THEME-m.end-screen.music-ready .call-to-cast-logo { height: 60%; background: url(www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo.png) 50% 100% no-repeat; }
+.call-to-cast .THEME-m.end-screen.music-ready h2.call-to-cast-text { padding-top: 10%; }
+.call-to-cast .THEME-m.end-screen.music-party { height: 100%; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music.jpg); }
+.call-to-cast .THEME-m.end-screen.music-party .call-to-cast-logo { height: 55%; background: url(www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music-party-logo.png) 50% 100% no-repeat; }
+.call-to-cast .THEME-m.end-screen.music-party .footer { height: 10%; background: url(www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo-small.png) 50% 0% no-repeat; }
+.snap-controls { height: 90%; padding: 0.5em; position: relative; }
+.snapped.blurred #snap-buttons, .snapped.blurred #unsupported-mode, .snapped.blurred #ad-callout, .snapped.blurred .logo-container, .snapped.blurred .title-card, .snapped.blurred .up-next { opacity: 0.25 !important; }
+.snapped #dialog, .snapped #guide, .snapped #search, .snapped #settings, .snapped #title-tray, .snapped #transport-controls, .snapped .ad-showing .video-ads, .snapped .advertisement-info, .snapped .application-message, .snapped .browse, .snapped .browse-sets, .snapped .caption-window, .snapped .countdown-ad-callout, .snapped .html5-video-info-panel, .snapped .legend, .snapped .player-video-avatar, .snapped .quality-status, .snapped .skip-ad-button, .snapped .skip-ad-callout, .snapped .toaster, .snapped.blurred.browse-sets-state .title-card, .snapped.blurred.search-state .title-card, .snapped.blurred.settings-state .title-card, .snapped.dialog-focused #snap-progress-bar, .snapped.dialog-focused #watch { display: none !important; }
+.snapped .advertisement-tooltip { color: rgb(160, 160, 160); font-size: 0.4em; left: 0px; top: 0px; }
+.snapped .advertisement-tooltip .remaining_duration { color: rgb(113, 113, 113); }
+.snapped #ad-callout { left: 5%; top: 18%; }
+.snapped .debug-watermark { font-size: 0.2em; width: 100%; }
+#app-markup.snapped { background-color: rgb(35, 31, 32); }
+.snapped #background { display: none; }
+.snapped { font-size: 2em; }
+.snapped.watch-state .logo-container { opacity: inherit; }
+.snapped .icon-youtube-logo::before { content: ""; }
+.snap-controls .logo-container { display: inherit; height: 2.5em; left: 0px; position: absolute; right: 0px; top: 5%; background: url(www.youtube.com/s/tv/html5/f0d770f4/img/yt-logo-fullcolor.png) 50% 0% no-repeat; }
+.snapped .ad-video, .snapped .ad-created .video-stream { height: 270px !important; width: 480px !important; }
+.snapped .video-stream, .snapped .html5-video-content { max-height: 5.6em; transform: scale(0.9) !important; top: 4.4em !important; }
+.snapped .html5-video-controls { top: 9.8em !important; }
+.snapped .player-video-title { color: rgb(160, 160, 160); font-size: 0.7em; line-height: 1.1em; margin: 0px; max-height: 2.2em; white-space: normal; width: 12em; }
+.snapped .player-meta { left: 0px; margin: 0px; position: inherit; top: 0px; }
+.snapped .player-meta .player-video-text { padding-left: 0px; }
+.snapped .player-meta .player-video-details { color: rgb(113, 113, 113); font-size: 0.5em; line-height: 1.1em; }
+.snapped .player-meta .player-video-details > div { margin-left: 0px; }
+.snapped .player-video-details .uploaded-date, .snapped .player-video-details .set-context, .snapped .player-video-details .view-count { font-size: 0.9em; margin-top: 0px; }
+.watch-state.snapped #snap-progress-bar { display: block; }
+#snap-progress-bar { display: none; height: 0.1em; left: 0px; margin-top: 9.25em; padding: 0px; position: relative; top: 0px; width: 100%; background-position: 0% 0%; }
+#snap-progress-bar .progress-bar-disc, #snap-progress-bar .progress-bar-playhead { display: none; }
+#snap-progress-bar div { height: 5px; top: 0px; }
+.snapped .title-card { border: none; height: initial; padding-top: 0.3em; position: inherit; background: none; }
+#unsupported-mode { color: rgb(255, 255, 255); font-size: 0.9em; line-height: 1.2em; padding: 80% 1em 0px; width: 8em; }
+.snapped .loading-indicator { height: 5em; width: 5em; }
+.snapped #spinner { top: 19%; transform: scale(0.5); }
+.engaged.snapped .engagement-indicator { display: inline-block; left: 0px; margin-left: auto; margin-right: auto; position: absolute; right: 0px; text-align: center; font-size: 0.6em !important; top: 4.2em !important; }
+.engaged.snapped .engagement-indicator .stop-listening { background: transparent; }
+.snap-controls #snap-buttons { bottom: 0px; position: absolute; }
+.snap-controls #snap-buttons .focused, .snap-controls #snap-buttons :hover { border-radius: 0.15em; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); }
+.snap-controls #snap-buttons .button, .snap-controls #snap-buttons .toggle-button { display: inline-block; font-size: 0.8em; height: 1em; margin-left: 0.5em; padding: 1em; position: relative; text-align: center; top: 0px; width: 1em; }
+.snap-controls #snap-buttons div { color: rgb(255, 255, 255); cursor: pointer; vertical-align: middle; }
+.snap-controls #snap-buttons div.disabled:hover { color: rgb(255, 255, 255); background-color: transparent; }
+.snap-controls #snap-buttons div.focused { opacity: 1; }
+.snap-controls #snap-buttons div.disabled { opacity: 0.2; }
+.snap-controls .speakable span, .snap-controls .disabled span { display: none; }
+.engaged .snap-controls .speakable:not(.disabled) span { color: rgb(93, 194, 30); display: block; font-size: 0.6em; left: 0px; overflow: hidden; pointer-events: none; position: absolute; text-align: center; top: -1.5em; width: 100%; word-break: break-all; }
+.lang-case-sensitive .snap-controls .speakable span::first-letter { text-transform: uppercase; }
+.snap-controls .icon-player-play { font-family: youtube-icons; }
+.snap-controls .icon-mute, .snap-controls .icon-fullscreen { background-size: 3em; background-position: 50% 50%; background-repeat: no-repeat; }
+.snap-controls .icon-mute, .snap-controls .icon-mute.disabled { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-active.png); }
+.snap-controls .icon-mute.focused, .snap-controls .icon-mute:hover:not(.disabled) { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-onhover-active.png); }
+.snap-controls .icon-mute.toggle-selected { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-active.png); }
+.snap-controls .icon-mute.toggle-selected.focused, .snap-controls .icon-mute.toggle-selected:hover { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-onhover-active.png); }
+.snap-controls .icon-fullscreen { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-active.png); }
+.snap-controls .icon-fullscreen.focused, .snap-controls .icon-fullscreen:hover { background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-onhover-active.png); }
+.up-next { height: 3em; padding-top: 1em; }
+.up-next div { color: rgb(160, 160, 160); font-size: 0.6em; }
+.up-next .video-title { height: 1.2em; line-height: 1.2em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 100%; }
+.up-next .video-thumb { display: inline-block; height: 100%; margin-top: 0.2em; max-height: 2.5em; vertical-align: top; width: 5em; background: 50% 50% / 100% no-repeat; }
+#browse-sets { height: 100%; left: 0px; overflow: hidden; position: absolute; right: 0px; background-color: rgb(34, 34, 34); }
+#browse-sets.no-background, .limited-memory #browse-sets { background-color: rgba(0, 0, 0, 0); }
+#browse-search-bar { cursor: pointer; height: 3em; left: 8em; margin-right: 18em; position: absolute; right: 2.5em; top: 2.5em; background-color: rgba(153, 153, 153, 0.2); }
+.limited-animation #browse-search-bar { background-color: rgb(79, 87, 90); }
+#browse-search-bar.focused, #browse-search-bar:hover { background: rgb(255, 255, 255); }
+#browse-search-bar .icon { color: rgba(255, 255, 255, 0.4); display: block; font-family: youtube-icons; font-size: 1.8em; margin: 0px; padding: 0.35em 0px 0px 0.5em; text-align: left; }
+.limited-animation #browse-search-bar .icon { color: rgb(225, 225, 225); }
+.youtube-logo-top { height: 3.4em; position: absolute; right: 9.5em; top: 2.3em; width: 8.4em; font-family: youtube-icons; }
+#browse-sets.has-header-content .youtube-logo-top { display: none; }
+.youtube-logo::before { color: rgba(153, 153, 153, 0.498039); display: block; font-size: 3.4em; }
+.youtube-unlimited-logo::before { color: rgba(153, 153, 153, 0.498039); display: none; font-size: 3.4em; position: relative; right: 0.5em; }
+.unlimited .youtube-logo::before { display: none; }
+.unlimited .youtube-unlimited-logo::before { display: block; }
+.limited-animation .youtube-unlimited-logo::before, .limited-animation .youtube-logo::before { color: rgb(79, 87, 90); }
+#browse-search-bar.focused .icon, #browse-search-bar:hover .icon { color: rgb(68, 68, 68); }
+#platform-user-icon { height: 4em; position: absolute; right: 3em; top: 2em; width: 4em; background-size: contain; background-position: 50% 50%; background-repeat: no-repeat; }
+#browse-header { height: 60%; position: relative; background-size: cover; background-position: 0px -8em; }
+.limited-memory.limited-animation #browse-header { background-size: contain; background-position: 6em 0px; background-repeat: no-repeat; }
+.no-background #browse-header { background-image: none !important; }
+.browse-sets #browse-header.collapsed { transform: translateY(-27%); }
+.limited-memory .browse-sets #browse-header.collapsed { top: -7em; transform: none; }
+#browse-header .title { color: rgb(225, 225, 225); display: inline-block; font-size: 2.25em; margin-bottom: -0.23em; overflow: hidden; text-overflow: ellipsis; transform-origin: left 50% 0px; white-space: nowrap; width: 23.7em; }
+#browse-header.one-button .title { width: 18.7em; }
+#browse-header.two-buttons .title { width: 14em; }
+#browse-header.collapsed .title { overflow: visible; transform: scale(0.8, 0.8) translateY(-5em) translateX(-1.5em); }
+.browse-header-gradient { height: 100%; width: 100%; background: linear-gradient(rgba(34, 34, 34, 0) 0%, rgba(34, 34, 34, 0) 15%, rgb(34, 34, 34) 100%); }
+.limited-memory .browse-header-gradient { display: none; }
+.no-background .browse-header-gradient { visibility: hidden; }
+.browse-header-metadata { left: 8em; position: absolute; transform: translateZ(0px); }
+.limited-memory.limited-animation .browse-header-metadata { top: 11.6em; }
+.limited-memory.limited-animation #browse-header.collapsed .browse-header-metadata { font-size: inherit; left: 8em; top: 11em; }
+.limited-memory.limited-animation #browse-header.collapsed .browse-header-metadata .browse-header-avatar { height: 4em; margin-right: 1em; width: 4em; }
+.browse-header-avatar { display: inline-block; height: 5em; margin-right: 1.3em; transform-origin: left 50% 0px; width: 5em; background-size: contain; }
+#browse-header.collapsed .browse-header-avatar { transform: scale(0.61, 0.61) translateY(-13.5em); }
+#browse-header.collapsed .browse-header-button-bar { transform: translateY(-6.25em); opacity: 0; }
+.browse-header-button-bar { border-radius: 0.15em; font-size: 1.1em; height: 2.4em; margin-bottom: -0.59em; padding: 0.59em; position: absolute; right: 3.5em; background: rgba(0, 0, 0, 0.4); }
+.limited-animation .browse-header-button-bar { background: rgb(31, 36, 38); }
+.limited-memory.limited-animation .browse-header-button-bar { top: 13em; }
+.browse-header-button-bar, .browse-header-metadata { bottom: 3.9em; }
+.browse-header-button-bar .button { border-radius: 0.12em; color: rgb(225, 225, 225); cursor: default; display: inline-block; height: 2.4em; min-width: 8.2em; overflow: hidden; padding-right: 1em; white-space: nowrap; }
+.browse-header-button-bar .button span { line-height: 2.4em; vertical-align: middle; }
+.browse-header-button-bar .button.focused, .browse-header-button-bar .button.focused:hover { color: rgb(33, 33, 33); background: rgb(225, 225, 225); }
+.browse-header-button-bar .button:hover { background-color: rgb(102, 102, 102); }
+.browse-header-button-bar .button .icon { display: inline-block; font-family: youtube-icons; height: 2.4em; margin: 0px 1em; }
+.browse-header-subscribe .icon::before { font-size: 2em; }
+.browse-header-subscribe.toggle-selected .icon::before { content: ""; font-size: 1em; }
+.browse-header-subscribe.toggle-selected.focused { color: rgb(206, 41, 45); }
+.browse-header-subscribe.disabled { background-color: rgba(0, 0, 0, 0); }
+.browse-content { height: 80%; left: 8em; position: absolute; top: 14.5%; width: 100%; }
+.browse-sets.collapsed .browse-content { transform: translateY(44%); }
+.limited-memory .browse-sets.collapsed .browse-content { top: 20em; transform: none; }
+#browse-header, .browse-header-avatar, .browse-header-button-bar, .browse-content, #browse-header .title { transform: translateZ(0px); transition: -webkit-transform 0.25s; }
+.browse-header-button-bar { transition: opacity 0.25s, transform 0.25s; }
+.limited-animation #browse-header, .limited-animation .browse-header-avatar, .limited-animation #browse-header.collapsed .browse-header-avatar, .limited-animation .browse-content, .limited-animation .browse-header-button-bar, .limited-animation #browse-header .title, .limited-animation .browse-content .shelves, .limited-animation .browse-header-metadata, .limited-animation .shelf #content-container, .limited-animation .shelves > .title, .limited-animation .shelf > .title, .limited-animation .horizontal-list > .content, .limited-animation .horizontal-list, .limited-animation .shelves .carousel { transition: none; transform: none; }
+.limited-animation #browse-header.collapsed .browse-header-metadata { font-size: 0.6em; left: 13.25em; top: 17.75em; }
+.limited-animation #browse-header.collapsed .browse-header-metadata .title { font-size: 3em; }
+.limited-memory #browse-header.collapsed .browse-header-metadata .title { font-size: 1.8em; }
+.limited-animation .browse-content .list { margin-left: -9.5em; width: 126em; }
+.limited-animation .browse-content .shelf > .title { margin-left: 6em; }
+.limited-animation.sets-ui .action-tile:not(.focused), .limited-animation.sets-ui .auto-play-tile:not(.focused) .video-tile, .limited-animation.sets-ui .channel-tile:not(.focused), .limited-animation.sets-ui .playlist-tile:not(.focused), .limited-animation.sets-ui .recent-search-tile:not(.focused), .limited-animation.sets-ui .video-tile:not(.focused), .rockandroll.limited-animation.sets-ui .action-tile:hover:not(.focused), .rockandroll.limited-animation.sets-ui .auto-play-tile:hover:not(.focused) .video-tile, .rockandroll.limited-animation.sets-ui .channel-tile:hover:not(.focused), .rockandroll.limited-animation.sets-ui .playlist-tile:hover:not(.focused), .rockandroll.limited-animation.sets-ui .video-tile:hover:not(.focused) { background-color: rgb(33, 33, 33); }
+.limited-animation.sets-ui .action-tile:hover:not(.focused), .limited-animation.sets-ui .auto-play-tile:hover:not(.focused) .video-tile, .limited-animation.sets-ui .channel-tile:hover:not(.focused), .limited-animation.sets-ui .playlist-tile:hover:not(.focused), .limited-animation.sets-ui .recent-search-tile:hover:not(.focused), .limited-animation.sets-ui .video-tile:hover:not(.focused) { background-color: rgb(65, 65, 65); }
+.browse-content .shelves { margin-left: 0em; transform: translateZ(0px); }
+.browse-content .shelves > .no-content-message, .browse-content .horizontal-list > .no-content-message { margin-left: -8em; }
+.shelves > .no-content-message, .horizontal-list > .no-content-message { display: none; position: absolute; top: 8em; width: 100%; }
+.shelves.no-content > .no-content-message, .horizontal-list.no-content > .no-content-message { display: block; }
+.shelves > .no-content-message .text, .horizontal-list > .no-content-message .text { color: rgb(241, 241, 241); font-size: 1.8em; text-align: center; text-shadow: rgb(0, 0, 0) 0.04em 0.04em; }
+.shelf { width: 100%; }
+.limited-animation .shelf { margin-bottom: 1.8em; }
+.carousel .shelf { position: absolute; }
+.shelf #content-container { transform: translateZ(0px); }
+.shelves > .title, .shelf > .title { color: rgb(153, 153, 153); font-size: 1.6em; margin-bottom: 1em; margin-top: 0.2em; transform: translateZ(0px); white-space: nowrap; }
+.shelves > .title, .shelf.selected > .title { color: rgb(255, 255, 255); }
+.shelf > .title .annotation { color: rgb(119, 119, 119); font-size: 70%; margin-left: 0.5em; }
+.shelf.selected > .title .annotation { color: rgb(221, 221, 221); }
+.horizontal-list.no-model, .shelf.no-model, .survey-shelf.no-model { display: none; }
+.shelf > .icon { display: none; }
+.horizontal-list > .content { font-size: 79%; height: 26em; opacity: 1; transform: translateZ(0px); }
+.horizontal-list.focused > .content { opacity: 1; }
+.horizontal-list, .shelves .carousel, .browse-header-metadata { transform: translateZ(0px); }
+.shelf0to0 { opacity: 1; transform: translateY(0%) scale(1); }
+@-webkit-keyframes shelf0to1-anim { 
+  0% { transform: translateY(0%); }
+  100% { transform: translateY(100%); }
+}
+.shelf0to1 { animation: shelf0to1-anim 200ms forwards; }
+@-webkit-keyframes shelf0to2-anim { 
+  0% { opacity: 1; transform: translateX(0%) translateY(0%) scale(1); }
+  100% { opacity: 0; transform: translateX(-2%) translateY(-11%) scale(0.75); }
+}
+.shelf0to2 { animation: shelf0to2-anim 200ms forwards; }
+@-webkit-keyframes shelf1to0-anim { 
+  0% { transform: translateX(0%) translateY(100%); }
+  100% { transform: translateX(0%) translateY(0%); }
+}
+.shelf1to0 { animation: shelf1to0-anim 200ms forwards; }
+.shelf1to1 { opacity: 1; transform: translateX(0%) translateY(100%) scale(1); }
+@-webkit-keyframes shelf1to2-anim { 
+  0% { transform: translateX(0%) translateY(100%); }
+  99% { transform: translateX(0%) translateY(200%); }
+  100% { opacity: 0; transform: translateX(-2%) translateY(-11%) scale(0.75); }
+}
+.shelf1to2 { animation: shelf1to2-anim 200ms forwards; }
+@-webkit-keyframes shelf2to0-anim { 
+  0% { opacity: 0; transform: translateX(-2%) translateY(-11%) scale(0.75); }
+  100% { opacity: 1; transform: translateX(0%) translateY(0%) scale(1); }
+}
+.shelf2to0 { animation: shelf2to0-anim 200ms forwards; }
+@-webkit-keyframes shelf2to1-anim { 
+  0% { opacity: 1; transform: translateX(0%) translateY(200%); }
+  100% { opacity: 1; transform: translateX(0%) translateY(100%); }
+}
+.shelf2to1 { animation: shelf2to1-anim 200ms forwards; }
+.shelf2to2 { opacity: 0; transform: translateX(-2%) translateY(-11%) scale(0.75); }
+.limited-memory .shelves .list .video-tile:nth-child(1) .video-thumb, .limited-memory .shelves .list .channel-tile:nth-child(1) .video-thumb, .limited-memory.sets-ui #search .horizontal-list .list .video-tile:nth-child(1) .video-thumb, .limited-memory.sets-ui #search .horizontal-list .list .channel-tile:nth-child(1) .video-thumb, .limited-memory.sets-ui #browse .list .video-tile:nth-child(1) .video-thumb, .limited-memory.sets-ui #browse .list .channel-tile:nth-child(1) .video-thumb, .limited-memory.sets-ui #browse .list .video-tile:last-child .video-thumb, .limited-memory.sets-ui #browse .list .channel-tile:last-child .video-thumb { background: none !important; }
+.survey-shelf { position: absolute; }
+.survey-shelf > .title { color: rgb(255, 255, 255); display: inline-block; font-size: 1.6em; margin-bottom: 1em; margin-top: 0.2em; }
+.survey-shelf .action-tile .content > .title { display: none; }
+.survey-shelf .horizontal-list > .content { font-size: 79%; height: 26em; }
+.survey-shelf .description { color: rgb(255, 255, 255); visibility: visible; }
+.survey-shelf .button { display: inline-block; margin-bottom: 1em; margin-left: 2em; }
+.survey-shelf .sliding-highlighter { height: 8em; width: 8em; }
+.survey-shelf .action-tile, .exp-densityBrowse .survey-shelf .action-tile { border: 0px; height: 8em; width: 8em; }
+.survey-shelf .action-tile .content { height: 8em; width: 8em; }
+.survey-shelf .action-tile .description { color: rgb(119, 119, 119); font-size: 1.2em; margin-top: -1.3em; opacity: 1; white-space: nowrap; }
+.exp-densityBrowse .survey-shelf.focused .action-tile .description { display: block; }
+.exp-densityBrowse .survey-shelf .action-tile .description { display: none; }
+.survey-shelf .action-tile .large-action-icon, .exp-densityBrowse .survey-shelf .action-tile .large-action-icon { font-size: 5em; margin-top: 0.26em; padding-right: 0.2em; background-color: transparent; }
+.survey-shelf .action-tile.selected .large-action-icon, .exp-densityBrowse .survey-shelf .action-tile.selected .large-action-icon { color: rgb(255, 255, 255); }
+.survey-shelf .action-tile.focused .large-action-icon, .exp-densityBrowse .survey-shelf .action-tile.focused .large-action-icon { color: rgb(34, 34, 34); }
+.survey-shelf .button.focused { border-radius: 0.1em; color: rgb(34, 34, 34); padding: 0.2em; background-color: rgb(255, 255, 255); }
+.survey-shelf .button { color: rgb(119, 119, 119); }
+.limited-animation .survey-shelf { margin-bottom: 5em; position: relative; }
+.limited-animation .survey-shelf > .title { margin-left: 6em; }
+.limited-animation .exp-densityBrowse .survey-shelf > .title { margin-left: 5em; }
+.limited-animation .survey-shelf .horizontal-list { margin-left: 17.5em; }
+.limited-animation .exp-densityBrowse .survey-shelf .horizontal-list { margin-left: 13.5em; }
+.limited-animation .exp-densityBrowse .survey-shelf .action-tile .large-action-icon { margin-top: 0.12em; }
+.limited-animation .exp-densityBrowse .survey-shelf .action-tile .description { display: block; }
+#guide { box-shadow: black 0.1em 0px 1em 0em; height: 100%; left: 0px; overflow: hidden; position: absolute; transform: translateX(-23em) translateZ(0px); transition: transform 400ms cubic-bezier(0.4, 0, 0.2, 1); width: 28em; }
+.limited-memory.limited-animation #guide { box-shadow: none; transform: none; }
+.limited-memory #guide.focused { border-right-style: none; }
+#guide.focused { transform: translateX(0px); }
+#guide:hover { background-color: rgba(255, 255, 255, 0.2); }
+.limited-animation #guide:hover { background: none; }
+.limited-animation #guide, .limited-animation #guide #user-info-background, .limited-animation .guide-carousel-background { transition: none; }
+.guide-carousel-background { height: 100%; left: 0em; position: absolute; top: 0em; width: 100%; transition: background-color 400ms; background-color: rgba(0, 0, 0, 0.2); }
+.limited-animation .guide-carousel-background, .limited-animation #guide #user-info-background { background-color: rgb(31, 36, 38); }
+.limited-animation #guide:hover .guide-carousel-background, .limited-animation #guide:hover #user-info-background { background-color: rgb(56, 65, 69); }
+.limited-animation.limited-memory .guide-carousel-background, .limited-animation.limited-memory #guide #user-info-background { background-color: rgb(223, 35, 35); }
+.limited-memory .guide-carousel-background, .limited-memory #guide #user-info-background, #guide .list { display: none; }
+.limited-memory #guide.focused .guide-carousel-background, .limited-memory #guide.focused.logged-in #user-info-background, #guide.focused .list { display: block; }
+.logged-in .guide-carousel-background { top: 8.5em; }
+#guide.focused .guide-carousel-background, #guide.focused:hover .guide-carousel-background { background-color: rgb(223, 35, 35); }
+.collapsed-guide, #guide.focused .collapsed-guide { display: none; }
+.collapsed-guide-icons { color: rgb(133, 136, 138); font-size: 1.6em; left: 15em; opacity: 1; position: absolute; top: 7.5em; }
+.collapsed-guide-icon { font-family: youtube-icons; margin-top: 1em; margin-bottom: 1em; text-align: center; width: 2em; }
+#guide .collapsed-guide-icons { transition: opacity 150ms 450ms; }
+.limited-memory .collapsed-guide-icons { left: 1em; }
+.limited-animation #guide .collapsed-guide-icons { transition: none; }
+#guide.focused .collapsed-guide-icons { opacity: 0; transition: none; }
+#guide .collapsed-guide-icon.icon-guide-my-subs { display: none; }
+#guide.logged-in .collapsed-guide-icon.icon-guide-my-subs { display: block; }
+#guide.logged-in .collapsed-guide-icon.icon-popular { display: none; }
+.collapsed-guide-icon.icon-music { font-size: 0.925em; padding-left: 0.0375em; }
+.limited-memory .collapsed-guide { border-right-width: 0.2em; border-right-style: solid; border-right-color: rgb(17, 17, 17); display: block; height: 100%; left: 0px; width: 6em; background-color: rgb(31, 36, 38); }
+#error-message { display: none; }
+#guide.error.focused #error-message { color: rgb(255, 255, 255); display: block; font-size: 2em; padding: 2em; position: absolute; text-align: center; top: 12em; }
+#guide .sliding-highlighter { display: none; width: 100%; height: 4.2em; opacity: 0; }
+#guide.focused .sliding-highlighter { opacity: 1; }
+#guide.focused .sliding-highlighter { display: block; }
+#guide.focused #user-info-background { visibility: visible; }
+#guide #user-info-background { transition: background-color 400ms; background-color: rgba(0, 0, 0, 0.2); }
+#guide.focused #user-info-background, #guide.focused:hover #user-info-background { background-color: rgb(147, 23, 23); }
+.logged-in #user-info-background { display: block; }
+#guide.focused .guide-user-text { visibility: visible; }
+#guide .carousel, #guide .list, #guide .sliding-highlighter { color: rgb(255, 255, 255); margin-top: 2em; }
+#guide.logged-in .carousel, #guide.logged-in .list, #guide.logged-in .sliding-highlighter { margin-top: 1em; }
+#guide .carousel.hidden { visibility: hidden; display: block !important; }
+#guide .list { position: relative; }
+.carousel .guide-button { position: absolute; }
+.list .guide-button { margin-bottom: 0.1em; }
+.guide-button { font-size: 1.6em; height: 1.83em; overflow: hidden; padding: 0.5em 0.27em 0.3em 2.9em; white-space: nowrap; }
+.guide-button:hover { cursor: pointer; padding-right: 1.78em; background: rgb(153, 0, 0); }
+.guide-button.selected:hover { background: transparent; }
+.guide-button.disabled:hover { cursor: inherit; padding-right: inherit; background: transparent; }
+.guide-button.disabled { padding-left: 2.1em; text-transform: uppercase; }
+.guide-button.disabled.footer { text-transform: none; }
+.guide-button-icon { color: rgb(239, 145, 145); display: inline-block; font-family: youtube-icons; font-size: 1.2em; margin-top: 0.2em; text-align: center; width: 1.8em; }
+.guide-button.disabled .guide-button-icon { display: none; }
+.guide-user-text, .guide-button-title { color: rgb(251, 218, 218); display: inline-block; line-height: 1.7em; overflow: hidden; padding-left: 0.5em; text-overflow: ellipsis; vertical-align: top; }
+.guide-button.disabled .guide-button-title { color: rgb(239, 145, 145); }
+.guide-user-text { visibility: hidden; margin-left: -0.4em; position: relative; top: 30%; text-overflow: ellipsis; width: 9.5em; }
+.guide-button-title { width: 11em; }
+.engaged .guide-button-title { width: 8em; }
+.guide-button.footer .guide-button-title { font-size: 75%; padding-top: 0.8em; width: 21.15em; }
+.guide-button-icon .image, #guide-user-avatar { height: 1em; width: 1em; background: 50% 50% / 100% no-repeat; }
+.guide-button-icon .image { box-shadow: rgb(239, 145, 145) 0px 0px 0px 1px; margin: 0px 0.4em; background-color: rgb(255, 255, 255); }
+.guide-button.focused .guide-button-icon .image { box-shadow: none; }
+.guide-button .image { display: none; }
+.guide-button.has-image .image { display: block; }
+#guide-user-avatar { border-radius: 50%; box-shadow: rgba(239, 145, 145, 0.4) 0px 0px 0px 0.05em, rgb(239, 145, 145) 0px 0px 0.05em; display: inline-block; font-size: 2.31em; margin: 0.2em 0.2em 0.2em 0.4em; }
+#guide-user-avatar, .guide-user-text, .guide-button-icon, .guide-button-title { transition: color 50ms 25ms; }
+.no-transition .guide-button .guide-button-icon, .no-transition .guide-button .guide-button-title, .limited-animation .guide-button .guide-button-icon, .limited-animation .guide-button .guide-button-title, .limited-animation #guide-user-avatar, .limited-animation .guide-user-text { transition: none; }
+.guide-button.focused .guide-button-icon, .guide-button.focused .guide-button-title { color: rgb(223, 35, 35); }
+.limited-animation .guide-button.focused { background-color: rgb(255, 255, 255); }
+.user-info-container { height: 2.6em; padding: 1.1em 0em 0em 1.8em; font-size: 1.6em; white-space: nowrap; }
+#user-info-background { display: none; height: 8.53em; position: relative; width: inherit; z-index: 1; }
+.sliding-highlighter .select { display: none; height: 2.9em; min-width: 3.5em; padding: 1.3em 0.6em 0em; position: absolute; right: 0px; text-align: center; background-color: rgba(0, 0, 0, 0.8); }
+.engaged .guide .sliding-highlighter .select { display: block; }
+.unlimited .guide-user-text { line-height: 1em; }
+.guide-user-unlimited { font-size: 0.8em; color: rgb(170, 136, 136); text-transform: uppercase; }
+#settings { height: 100%; overflow: visible; position: absolute; right: 0px; left: 4.5em; }
+.settings-shelf { height: 24em; margin-left: 3.5em; margin-top: 1em; position: absolute; top: 19%; width: 100%; }
+.settings-title { color: rgb(255, 255, 255); font-size: 1.2em; line-height: 3em; white-space: nowrap; }
+.limited-animation .settings .content .list { width: 130em; }
+.limited-animation #settings-items { margin-left: -17em; }
+.settings-horizontal-list > .content { font-size: 79%; }
+.settings-horizontal-list > .no-content-message { display: none; }
+.pointer-overlay { display: block; }
+.pointer-overlay .nav-arrow { cursor: pointer; display: none; height: 5em; opacity: 0.5; position: absolute; width: 5em; background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/motion-control-sprite.png); background-size: 100%; background-repeat: no-repeat; }
+.pointer-overlay.enabled .nav-arrow { display: block; }
+.pointer-overlay .nav-arrow:hover { opacity: 1; }
+.pointer-overlay .up-arrow { left: 45%; top: 18%; background-position: 0px 100%; }
+.pointer-overlay .down-arrow { bottom: 11%; left: 45%; background-position: 0px 0%; }
+.pointer-overlay .left-arrow { top: 50%; left: 5%; background-position: 0px 33.3%; }
+.settings-focused .pointer-overlay .left-arrow, .browse-sets-state .pointer-overlay .left-arrow, .search-state .pointer-overlay .left-arrow { left: 7%; }
+.pointer-overlay .right-arrow { top: 50%; right: 5%; background-position: 0px 66.7%; }
+#search.input-open + .pointer-overlay .up-arrow, .post-play-state .pointer-overlay .up-arrow, .post-play-state .pointer-overlay .down-arrow { display: none; }
+.watch-state .pointer-overlay .down-arrow { bottom: 2%; }
+.search-state.guide-focused .pointer-overlay .up-arrow { top: 20%; }
+@media screen and (aspect-ratio: 5/4) { 
+  #dialog.browse-sets #dialog-wrapper { padding: 1.3em 2em; }
+  .flag-list-container.flag-options-dialog { font-size: 0.875em; }
+}
+@media screen and (max-aspect-ratio: 4/3) { 
+  .player-controls #button-list { font-size: 0.875em; }
+  #transport-controls.ad-active .player-controls-widget .player-controls #button-list { font-size: 1em; }
+  .fresh-transport-controls .progress-bar { width: 70%; }
+  .fresh-transport-controls #player-time-elapsed, .fresh-transport-controls .player-time-total { font-size: 1.1em; width: 10%; }
+}
+@media screen and (aspect-ratio: 4/3) { 
+  #browse-header .title { width: 18.3em; }
+  #browse-header.one-button .title { width: 13.2em; }
+  #browse-header.two-buttons .title { width: 8.5em; }
+  .sets-ui .flag-list.grid { font-size: 0.8em; }
+  .flag-claim { font-size: 1.4em; }
+  #search .search-pairing { font-size: 0.7em; }
+  .sets-ui .debug-dialog { font-size: 0.8em; }
+  .voice-footer .list { padding-top: 0px; width: 16em; }
+}
+@media screen and (min-width: 3840px) { 
+  .player-controls { top: 21px; }
+}
+@media screen and (min-width: 1919px) { 
+  .opera .video-stream { height: 1080px; width: 1920px; }
+  .watch-video-tile, .watch-list .button { padding: 10px; }
+}
+@media screen and (max-height: 576px) and (max-width: 1024px) and (min-width: 640px) { 
+  .countdown-ad-callout { font-size: 1.3em; right: 10%; }
+  .opera .video-stream { height: 576px; width: 1024px; }
+  #keyboard-grid .button { width: 0.7em; }
+  #dialog-wrapper { padding-left: 4em; padding-right: 4em; }
+  .pairing { transform-origin: 0px 50% 0px; transform: scale(0.7); }
+  .browse-sets #browse-header.collapsed { transform: translateY(-19%); }
+}
+@media screen and (max-height: 480px) and (max-width: 720px) { 
+  .countdown-ad-callout { font-size: 0.9em; right: 5%; }
+  .skip-ad-callout { right: 3%; }
+  .opera .video-stream { height: 480px; }
+  #search .pairing .alternatives { margin: 0px 0px 0px 1em; }
+  #keyboard-grid .button { width: 0.8em; }
+  #search .pairing .search-message .title { margin-top: 0.7em; }
+  #dialog-view .pairing { font-size: 0.8em; margin-top: 2em; }
+  .watch-list .list { margin-left: -4em; }
+}
+@media screen and (max-height: 480px) and (max-width: 640px) { 
+  .opera .video-stream { height: 480px; width: 640px; }
+  #keyboard-grid .button { width: 0.7em; }
+  #dialog-view .reset-help { display: block; width: 27em; }
+  .watch-video-tile, .watch-list .button { padding: 4px; }
+  .browse-header-metadata { bottom: 3.9em; }
+  .browse-sets #browse-header.collapsed { transform: translateY(-27%); }
+  .voice-footer .list { font-size: 0.6em; margin-left: 35%; width: 35%; }
+  .engaged .engagement-indicator { display: inline-block; font-size: 1.3em; height: 3em; margin-bottom: 1.5em; }
+  .engaged .engagement-indicator .title { display: inline-block; }
+  .engagement-indicator .stop-listening .icon { display: inline-block; height: 3em; left: 0px; top: 0px; width: 15%; }
+}
+@media screen and (max-width: 1440px) and (min-height: 1080px) { 
+  .video-tile-container { transform: scale(0.7); transform-origin: right top 0px; }
+  .player-controls #button-list .button, .player-controls #button-list .toggle-button { margin-right: 0.2em; margin-left: 0.2em; }
+  .fresh-transport-controls .progress-bar { width: 59%; }
+  .fresh-transport-controls #player-time-elapsed, .fresh-transport-controls .player-time-total { font-size: 1em; width: 14%; }
+  .fresh-transport-controls .button, .fresh-transport-controls .toggle-button { font-size: 1.1em; }
+  .fresh-transport-controls #transport-more-button { font-size: 1.7em; }
+  #dialog-wrapper { padding: 1.3em 3em; }
+  .dialog-contents { font-size: 95%; }
+  #dialog-wrapper .connection-steps { padding: 0px; }
+  #dialog-wrapper .pairing .qr-code, #dialog-wrapper .pairing .connected-list { margin: 0.2em; }
+  .context-menu-list { left: 30%; right: 30%; }
+  .voice-footer .list { font-size: 0.65em; padding-left: 22em; padding-right: 18em; padding-top: 1.3em; }
+}
+.sets-ui .carousel .item, .sets-ui .carousel .channel-tile, .sets-ui .carousel .auto-play-tile { background-color: inherit !important; }
+.sets-ui .carousel .item:hover, .sets-ui .carousel .channel-tile:hover, .sets-ui .carousel .auto-play-tile:hover { background-color: rgba(255, 255, 255, 0.0980392) !important; }
+.sets-ui .tile .channel-bottom > .title, .sets-ui .tile .tile-bottom > .title { color: rgb(225, 225, 225); }
+.sets-ui .tile .channel-bottom > .details, .sets-ui .tile .tile-bottom > .details { color: rgb(100, 100, 100); }
+.sets-ui .tile.focused.selected .channel-bottom > .title, .sets-ui .tile.focused.selected .tile-bottom > .title { color: rgb(33, 33, 33); }
+.sets-ui .tile.focused.selected .channel-bottom > .details, .sets-ui .tile.focused.selected .tile-bottom > .details { color: rgb(141, 141, 141); }
+.sets-ui #transport-controls .player-controls #button-list div.icon-player-more, .sets-ui #transport-controls .player-controls #button-list div.icon-player-less { color: rgb(255, 255, 255); }
+.sets-ui #transport-controls .player-controls #button-list div.icon-player-more.focused, .sets-ui #transport-controls .player-controls #button-list div.icon-player-less.focused { color: rgb(34, 34, 34); }
+.sets-ui .settings-title { font-size: 1.5em; }
+.sets-ui .action-tile .title { font-size: 2.4em; margin-left: 0.1em; margin-right: 0.1em; }
+.sets-ui .flag-list.grid { margin: 3.25em; }
+.sets-ui .flag-list .list { text-align: left; }
+.sets-ui .flag-list .button { width: 14em; text-align: center; }
+.sets-ui .flag-example { top: 20%; }
+.sets-ui .flag-video { margin-left: 2em; text-align: left; }
+.sets-ui .flag-claim .privacy-invasion { margin: auto; width: 50%; }
+.sets-ui .authentication-error-dialog, .sets-ui .delete-video-error, .sets-ui .missing-channel-error, .sets-ui .server-unavailable, .sets-ui .network-error-dialog { margin-top: 1em; }
+.sets-ui .eureka-authorization-dialog .icon, .sets-ui .eureka-player-error-dialog .icon { margin-left: 3em; }
+.sets-ui .eureka-authorization-dialog .info, .sets-ui .eureka-player-error-dialog .info { width: 50%; }
+.sets-ui .debug-dialog { padding: 0px 1em; text-align: left; }
+.sets-ui .text-dialog #dialog-view { width: auto; }
+.sets-ui #dialog .platform-container { font-size: 0.6em; margin-bottom: 0.5em; }
+.sets-ui .paid-channel-dialog { margin: 1em; }
+.sets-ui #dialog .connection-instructions .icon-settings-pair { display: none; }
+.sets-ui .closed-captions-dialog { text-align: left; padding-left: 1em; }
+.sets-ui .delete-video-error, .sets-ui .paid-scope-dialog, .sets-ui .video-edit-error, .sets-ui .video-processing, .sets-ui .video-upload-error { margin: 3em; font-size: 1.6em; }
+.limited-animation .auto-play-tile.focused .video-tile { background-color: rgb(241, 241, 241); }
+.limited-animation.sets-ui .title-card { background: linear-gradient(rgba(0, 0, 0, 0.901961), rgba(0, 0, 0, 0.8), transparent); }
+.limited-animation.sets-ui #search #text-box-background, .limited-animation.sets-ui #search #search-text-entry { background-color: rgba(0, 0, 0, 0); }
+.sets-ui .scrolling-text { text-align: left; padding-left: 1em; height: 20em; }
+.sets-ui #dialog .scrollbar { right: 11em; }
+.sets-ui #dialog-view .reset-help { width: 20em; }
+.sets-ui #dialog.remote-reset-dialog .buttons { position: inherit; }
+.sets-ui #dialog.remote-reset-dialog .reset-help { height: 11em; padding-left: 1em; text-align: left; }
+.sets-ui #dialog.remote-reset-dialog .connected-list { margin-right: 2em; }
+.sets-ui .dialog-focused #legend { bottom: 17%; right: 16%; }
+.exp-densityFiveTiles .horizontal-list > .content { font-size: 59%; }
+.exp-densityFiveTiles .shelf > .title { font-size: 1.5em; margin-bottom: 0.75em; margin-top: 0px; }
+.exp-densityFiveTiles .channel-bottom .title, .exp-densityFiveTiles .tile-bottom .title { font-size: 1.75em; }
+.exp-densityFiveTiles .tile-bottom .details { font-size: 1.5em; height: 50%; margin: 0.2em 1em 0px 0px; }
+.exp-densityFiveTiles .channel-top .video-thumb { border-radius: 50%; }
+.limited-animation .exp-densityFiveTiles .browse-content .list { margin-left: -8em; width: 155em; }
+.exp-densityFourTiles .horizontal-list > .content { font-size: 67%; }
+.exp-densityFourTiles .shelf > .title { font-size: 1.5em; margin-bottom: 0.75em; margin-top: 0px; }
+.exp-densityFourTiles .channel-bottom .title, .exp-densityFourTiles .tile-bottom .title { font-size: 1.75em; }
+.exp-densityFourTiles .tile-bottom .details { font-size: 1.5em; height: 50%; margin: 0.2em 1em 0px 0px; }
+.limited-animation .exp-densityFourTiles .browse-content .list { margin-left: -8.5em; width: 155em; }
+.exp-densityFourTiles .channel-top .video-thumb { border-radius: 50%; }
+.exp-densityHideMetadata .shelf .horizontal-list .tile-bottom, .exp-densityHideMetadata .shelf .horizontal-list .channel-bottom { display: none; }
+.exp-densityHideMetadata .shelf.selected .horizontal-list .tile-bottom, .exp-densityHideMetadata .shelf.selected .horizontal-list .channel-bottom { display: block; }
+.exp-densityHideMetadata .horizontal-list .video-tile .tile-top .decoration { display: none; }
+.exp-densityHideMetadata #search .tile-top .decoration, .exp-densityHideMetadata #post-play-list .tile-top .decoration, .exp-densityHideMetadata .shelf.selected .horizontal-list .tile-top .decoration { display: block; }
+.exp-densityHideMetadata .shelf:not(.selected) .channel-tile .video-thumb { height: 70%; width: 70%; }
+.sets-ui .exp-densityHideMetadata .shelf:not(.selected) .carousel .item:hover, .sets-ui .exp-densityHideMetadata .shelf:not(.selected) .carousel .channel-tile:hover { background-color: inherit !important; }
+.limited-animation .exp-densityHideMetadata .browse-content .list .shelf:nth-child(1) { margin-bottom: 9.5em; }
+.limited-animation.sets-ui .exp-densityHideMetadata .channel-tile:not(.focused), .limited-animation.sets-ui .exp-densityHideMetadata .video-tile:not(.focused) { background-color: inherit; }
+.rockandroll.limited-animation.sets-ui .exp-densityHideMetadata .channel-tile:hover:not(.focused), .rockandroll.limited-animation.sets-ui .exp-densityHideMetadata .video-tile:hover:not(.focused) { background-color: inherit; }</style><style>@font-face { font-family: roboto-regular; src: url(www.youtube.com/s/tv/html5/misc/fonts/Roboto-Regular-20140804.ttf) format(truetype); }
+html { font-family: roboto-regular; }
+body { font-family: roboto-regular; }
+.button span { font-family: roboto-regular; }
+.toggle-button span { font-family: roboto-regular; }
+@font-face { font-family: youtube-icons; src: url(www.youtube.com/s/tv/html5/f0d770f4/img/icons.ttf) format(truetype); }</style><script>(function (resourcePaths) {
+    var imageContainer = document.createElement('div');
+    imageContainer.style.position = 'absolute';
+    imageContainer.style.left = '0px';
+    imageContainer.style.top = '0px';
+    imageContainer.style.visibility = 'hidden';
+
+    var pendingResourceCount = 0;
+    resourcePaths.forEach(function(resourcePath) {
+      console.log(resourcePath);
+      if (/\.(jpeg|jpg|png)$/i.test(resourcePath)) {
+        ++pendingResourceCount;
+        console.log(pendingResourceCount);
+        var imageElement = new Image();
+        imageElement.src = resourcePath;
+        imageContainer.appendChild(imageElement);
+      }
+    });
+  })(["www.youtube.com/s/tv/fonts/CutiveMono-Regular.woff","www.youtube.com/s/tv/fonts/PTM55FT.woff","www.youtube.com/s/tv/fonts/PT_Serif-Caption-Web-Regular.woff","www.youtube.com/s/tv/fonts/PT_Sans-Caption-Web-Regular.woff","www.youtube.com/s/tv/fonts/Handlee-Regular.woff","www.youtube.com/s/tv/fonts/DancingScript-Regular.woff","www.youtube.com/s/tv/fonts/MarcellusSC-Regular.woff","www.youtube.com/s/tv/html5/f0d770f4/img/circle.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-playbutton.png","www.youtube.com/s/tv/html5/f0d770f4/img/cast_disconnected_blue.png","www.youtube.com/s/tv/html5/f0d770f4/img/pair_promo.png","www.youtube.com/s/tv/html5/f0d770f4/img/dial-sprite.png","www.youtube.com/s/tv/html5/f0d770f4/img/volume_mute_pressed.png","www.youtube.com/s/tv/html5/f0d770f4/img/volume_0_pressed.png","www.youtube.com/s/tv/html5/f0d770f4/img/volume_1_pressed.png","www.youtube.com/s/tv/html5/f0d770f4/img/volume_2_pressed.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-help.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-feedback.png","www.youtube.com/s/tv/html5/f0d770f4/img/flag.png","www.youtube.com/s/tv/html5/f0d770f4/img/pairing-promo-combo.png","www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_light.png","www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_dark.png","www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_light.png","www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_dark.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-light.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-dark.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-light.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-dark.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-light.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-dark.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-light.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-dark.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-aaa-engaged.png","www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-desktop.png","www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-bbb.png","www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ccc.png","www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ddd.png","www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-eee.png","www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-fff.png","www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ggg.png","www.youtube.com/s/tv/html5/f0d770f4/img/icon-playbutton.png","www.youtube.com/s/tv/html5/f0d770f4/img/player-play.png","www.youtube.com/s/tv/html5/f0d770f4/img/player-pause.png","www.youtube.com/s/tv/html5/f0d770f4/app-prod.css","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-yt-logo.png","www.youtube.com/s/tv/html5/f0d770f4/img/yt-kids-logo.png","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-multi-user.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-yt-mix.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-tv-queue.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-promo.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-mother-goose.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-rainbow.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-sesame.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-talking-tom.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-wonderquest.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-gaming-heart.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-loki.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo.png","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music.jpg","www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music-party-logo.png","www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo-small.png","www.youtube.com/s/tv/html5/f0d770f4/img/yt-logo-fullcolor.png","www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-active.png","www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-onhover-active.png","www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-active.png","www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-onhover-active.png","www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-active.png","www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-onhover-active.png","www.youtube.com/s/tv/html5/f0d770f4/img/motion-control-sprite.png","www.youtube.com/s/tv/html5/misc/fonts/Roboto-Regular-20140804.ttf","www.youtube.com/s/tv/html5/f0d770f4/img/icons.ttf","www.youtube.com/s/tv/html5/f0d770f4/img/default_bg.jpg","i.ytimg.com/vi/_TWbD3MKfMI/hqdefault.jpg","i.ytimg.com/vi/vvFHyFW_jFc/hqdefault.jpg","i.ytimg.com/vi/q14aPbvbvl8/hqdefault.jpg","i.ytimg.com/vi/M9WlASe5ThU/hqdefault.jpg","i.ytimg.com/vi/59_zMJRhFM0/hqdefault.jpg","i.ytimg.com/vi/tnfPNYpi8rc/hqdefault.jpg","i.ytimg.com/vi/F50yjSws9gQ/hqdefault.jpg","i.ytimg.com/vi/rs-Ou-gjReQ/hqdefault.jpg","i.ytimg.com/vi/x5ZxRObLLzE/hqdefault.jpg","i.ytimg.com/vi/LZoilVdo7Hw/hqdefault.jpg","i.ytimg.com/vi/0vEKItRNIb0/hqdefault.jpg","i.ytimg.com/vi/8VstEBbwhnc/hqdefault.jpg","i.ytimg.com/vi/qkKRkfZYhlE/hqdefault.jpg","i.ytimg.com/vi/MODTYlzxY9U/hqdefault.jpg","i.ytimg.com/vi/D-YPnDvTCmI/hqdefault.jpg","i.ytimg.com/vi/wNRUzu4fTgw/hqdefault.jpg","i.ytimg.com/vi/GwzBLYGRj6c/hqdefault.jpg","i.ytimg.com/vi/rtzlT78OEks/hqdefault.jpg","i.ytimg.com/vi/eOOyxSMI0aE/hqdefault.jpg","i.ytimg.com/vi/RL7grUEo960/hqdefault.jpg","i.ytimg.com/vi/2A07xMhKC6g/hqdefault.jpg","i.ytimg.com/vi/Z31LDqbhN8U/hqdefault.jpg","i.ytimg.com/vi/zzmrTdAtEu4/hqdefault.jpg","i.ytimg.com/vi/1dXVzBU5p-Q/hqdefault.jpg","i.ytimg.com/vi/spC883rn6zk/hqdefault.jpg","i.ytimg.com/vi/XilhAJZ2qxs/hqdefault.jpg","i.ytimg.com/vi/tCehxI5a1y0/hqdefault.jpg","i.ytimg.com/vi/qrZcKwcVwk8/hqdefault.jpg","i.ytimg.com/i/F0pVplsI8R5kcAqgtoRqoA/1.jpg","i.ytimg.com/i/-9-kyTW8ZkZNDHQJ6FgpwQ/1.jpg","i.ytimg.com/i/Egdi0XIXXZ-qJOFPf4JSKw/1.jpg","i.ytimg.com/i/OpNcN46UbXVtpKMrmU4Abg/1.jpg","i.ytimg.com/i/YfdidRxbB8Qhf0Nx7ioOYw/1.jpg","i.ytimg.com/i/4R8DWoMoI7CAwX8_LjQHig/1.jpg","yt3.ggpht.com/-dL2jeHlm2Ok/AAAAAAAAAAI/AAAAAAAAAAA/ZCMMkRj-hrw/s88-c-k-no/photo.jpg","i.ytimg.com/i/xAgnFbkxldX6YUEvdcNjnA/1.jpg","i.ytimg.com/i/i-g4cjqGV7jvU8aeSuj0jQ/1.jpg"]);</script></head>
+  <body class="desktop sets-ui lang-en_US lang-case-sensitive" style="font-size: 150%;">
+    
+    <div id="leanback"><div id="app-markup" class="focused exp-autoOpenGuide exp-mdxIgnoreFlings exp-innertubeCountdown exp-enableSafetyModeRename exp-atomSubscriptionsMultirowShelves browse-sets-state guide-focused     application" tabindex="-1">  <div id="background" class="no-model background" tabindex="-1" style="background-image: url(www.youtube.com/s/tv/html5/f0d770f4/img/default_bg.jpg);"></div>  <div id="watch" class="no-model watch" tabindex="-1">  <div id="leanback-player-container"><div class="html5-video-player el-leanback ytp-no-controls" tabindex="-1" id="movie_player" data-version="//s.ytimg.com/yts/jsbin/html5player-new-en_GB-vflmdFuIW/html5player-new.js"><div class="html5-video-container"><video class="video-stream html5-main-video" style="width: 1920px; height: 1080px; left: 0px; top: -1080px; transform: none;"></video><div class="html5-video-content" style="width: 1920px; height: 1080px; left: 0px; top: 0px;"></div></div></div></div>  <div class="title-card no-model watch-title-tray" id="title-tray" tabindex="-1">  <div class="player-meta">    <div class="user-details hidden">      <div class="message">Added by </div>      <div class="avatar no-model image" data-image-url="{{addedByUserAvatarUrl}}" tabindex="-1"></div>    </div>    <div class="player-video-avatar no-model image" data-image-url="{{channelAvatarUrl}}" tabindex="-1"></div>    <div class="player-video-text">      <div class="player-video-title"></div>      <div class="player-video-details">        <div class="username"></div>        <div class="set-context hidden"></div>        <div class="set-context-position hidden">0 of 0</div>        <div class="uploaded-date"></div>        <div class="view-count"><span class="view-count-label"></span></div>        <div class="hidden no-model quality-status" tabindex="-1">  <div class="quality-status-hd-badge"></div></div>        <div id="badges" class="badges hidden">          <span class="live-badge">Live</span>        </div>        <div class="ypc-preview">Preview: This video requires payment to watch.</div>      </div>    </div>  </div></div>  <div id="eureka-player-controls-container">    <div id="eureka-player-controls"></div>  </div>  <div id="pivot-post-play" class="hidden no-model pivot-post-play" tabindex="-1">  <div id="post-play-list" class="no-model no-content postplay-horizontal-list" tabindex="-1">  <div class="no-content-message">    <div class="text">No videos are available</div>  </div>  <div class="content"><div class="no-model carousel" tabindex="-1"></div><div class="hidden no-model pivot-sliding-highlighter" tabindex="-1">  <div class="select">Select</div></div></div></div></div>  <div id="bottom-half">    <div id="transport-controls" class="no-model transport-controls" tabindex="-1">  <div class="player-controls-widget">    <div id="player-controls" class="player-controls">      <div id="button-list" class=" list" data-model="{{buttonCollection}}" data-enable-sounds="false" tabindex="-1"><div class="icon-ellipsis button" tabindex="-1"><span class="label">more actions</span></div><div class="icon-home button" tabindex="-1"><span class="label">Go Home</span></div><div class="icon-player-prev button" tabindex="-1"><span class="label">skip backward</span></div><div class="icon-player-rew button" tabindex="-1"><span class="label">rewind</span></div><div class="selected icon-player-play toggle-button" tabindex="-1"><span>play</span></div><div class="icon-player-ff button" tabindex="-1"><span class="label">forward</span></div><div class="icon-player-next button" tabindex="-1"><span class="label">skip forward</span></div><div class="icon-player-closedcaptions toggle-button" tabindex="-1"><span>captions</span></div><div class="disabled spacer button" tabindex="-1"><span class="label"></span></div></div>    </div>    <div class="player-seekbar">      <div id="progress-bar" class=" progress-bar" tabindex="-1">  <div class="progress-bar-line">    <div class="progress-bar-background"></div>    <div class="progress-bar-loaded" style="width:0%"></div>    <div class="progress-bar-played" style="width:0%"></div>  </div>  <div class="progress-bar-playhead">    <div class="no-model cue-range-markers" tabindex="-1"></div>    <div class="progress-bar-disc" style="left:0%"></div>  </div></div>      <div id="player-time-elapsed" class="no-model elapsed-time" tabindex="-1">0:00</div>      <div class="player-time-total"></div>      <div class="live-indicator">Live</div>    </div>  </div></div>    <div class="hidden skip-ad-button" tabindex="-1">  <div class="label">    <span class="skip-button-text"></span>    <span class="skip-symbol icon-player-next"></span>    <span class="skip-symbol icon-settings-pair"></span>    <span class="skip-symbol icon-cast_on"></span>  </div></div>    <div class="hidden no-model advertisement-info" tabindex="-1">  <div class="advertisement-info-top">    <div class="youtube-hosted">      <div class="advertisement-avatar no-model image" data-image-url="{{advertiserAvatar}}" tabindex="-1"></div>      <div class="advertisement-info-details">        <div class="advertisement-title"></div>        <div class="advertisement-advertiser">          <span class="ad-badge">Ad</span>          <span class="remaining-duration"></span>          <span class="ad-point-separator">•</span>          <span class="ad-by">by </span>        </div>      </div>    </div>    <div class="third-party">      <span class="ad-badge">Ad</span>      <span class="ad-point-separator">•</span>      <span class="remaining-duration"></span>    </div>  </div></div>  <div class="no-model no-content pivot-shelf-list" tabindex="-1">  <div class="no-content-message">    <div class="text">No videos are available</div>  </div><div class=" carousel" tabindex="-1"></div></div></div></div>  <div id="call-to-cast" class="no-model call-to-cast" tabindex="-1">  <div class="THEME-cl end-screen multi-user left">    <h2 class="call-to-cast-text">Everyone's connected.</h2>    <h3 class="call-to-cast-text">Friends and family can <em>join in</em> and add videos to your TV Queue.</h3>    <div class="yt-logo"></div>  </div>  <div class="THEME-cl end-screen yt-mix right">    <h2 class="call-to-cast-text">Find the perfect mix.</h2>    <h3 class="call-to-cast-text">Play a nonstop <em>YouTube Mix</em> inspired by your favorite artist or video.</h3>    <div class="yt-logo"></div>  </div>  <div class="THEME-cl end-screen kids-promo left">    <h2 class="call-to-cast-text">      Have the YouTube Kids app?    </h2>    <h3 class="call-to-cast-text">      Get the family <em>together</em> and watch your favorite videos on the big screen.    </h3>    <div class="yt-kids-logo"></div>  </div>  <div class="THEME-cl end-screen tv-queue left">    <h2 class="call-to-cast-text">What's up next?</h2>    <h3 class="call-to-cast-text">Browse and add videos to your <em>TV Queue</em> while your current video keeps playing.</h3>    <div class="yt-logo"></div>  </div>  <div class="THEME-k end-screen kids-mother-goose left">    <h3 class="call-to-cast-text">Tap a video to watch on your TV.</h3>  </div>  <div class="THEME-k end-screen kids-rainbow left">    <h3 class="call-to-cast-text">Tap a video to watch on your TV.</h3>  </div>  <div class="THEME-k end-screen kids-sesame left">    <h3 class="call-to-cast-text">Tap a video to watch on your TV.</h3>  </div>  <div class="THEME-k end-screen kids-talking-tom left">    <h3 class="call-to-cast-text">Tap a video to watch on your TV.</h3>  </div>  <div class="THEME-k end-screen kids-wonderquest left">    <h3 class="call-to-cast-text">Tap a video to watch on your TV.</h3>  </div>  <div class="THEME-g end-screen gaming-heart left">    <h3 class="call-to-cast-text"></h3>  </div>  <div class="THEME-up end-screen loki left">    <h3 class="call-to-cast-text">Pick a video, yo.</h3>  </div>  <div class="THEME-m end-screen music-ready">    <div class="call-to-cast-logo"></div>    <h2 class="call-to-cast-text">Ready to play</h2>    <h3 class="call-to-cast-text">Choose some music in YouTube Music and play it here</h3>  </div>  <div class="THEME-m end-screen music-party">    <div class="call-to-cast-logo"></div>    <h3 class="call-to-cast-text">Need a soundtrack for your party?</h3>    <h3 class="call-to-cast-text">Stream endless video or audio stations to match the mood.</h3>    <div class="footer"></div>  </div></div>  <div id="browse-sets" class="no-background browse-sets" tabindex="-1">  <div id="browse-search-bar" class="no-model icon-button" tabindex="-1">  <span class="icon icon-search"></span>  <span class="label"></span></div>  <div class="youtube-logo-top">    <div class="youtube-logo icon-youtube-logo"></div>    <div class="youtube-unlimited-logo icon-youtube-unlimited-logo"></div>  </div>  <div id="browse-header" class="hidden no-model collapsed two-buttons browse-header" tabindex="-1">  <div class="browse-header-gradient"></div>  <div class="browse-header-metadata">    <div class="browse-header-avatar no-model image" data-image-url="{{avatarImageURL}}" tabindex="-1"></div>    <div class="title"></div>  </div>  <div class="browse-header-button-bar no-model component" tabindex="-1">    <div class="button browse-header-trailer no-model icon-button" tabindex="-1">  <span class="icon icon-player-play"></span>  <span class="label"></span></div>    <div class="button browse-header-subscribe no-model subscribe-button" tabindex="-1">  <span class="icon icon-logo-lozenge"></span>  <span class="label"></span></div>  </div></div>  <div id="platform-user-icon" class="hidden no-model image" data-image-url="{{platformUserIcon}}" tabindex="-1"></div>  <div class="browse-content">    <div id="shelves" class=" shelves" tabindex="-1">  <div class="title"></div>  <div class="no-content-message">    <div class="text">No videos are available</div>  </div><div class=" carousel" tabindex="-1"><div class="selected shelf" tabindex="-1" style="height: 24em; opacity: 1; z-index: 1; transform: translateX(0%) translateY(0%) scale(1) translateZ(0px); transition: none 0s;">  <div class="icon "></div>  <div class="title">    <span class="main">Screen Rant</span>    <span class="annotation">Recommended channel</span>  </div>  <div class="content-container"><div class=" horizontal-list" tabindex="-1">  <div class="no-content-message">    <div class="text">No videos are available</div>  </div>  <div class="content"><div class=" sliding-highlighter" tabindex="-1" style="transform: translateX(0%) translateZ(0px); transition: none 0s;">  <div class="select">Select</div></div><div class=" carousel" tabindex="-1"><div class="item tile selected video-tile" tabindex="-1" style="transform: translateX(0%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/_TWbD3MKfMI/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">7:30</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">16,573,823 views</div>      <div class="age">3 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(107%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/vvFHyFW_jFc/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">7:06</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">11,425,149 views</div>      <div class="age">3 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(214%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/q14aPbvbvl8/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">7:25</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">8,454,555 views</div>      <div class="age">5 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(321%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/M9WlASe5ThU/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:24</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">3,804,435 views</div>      <div class="age">2 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(428%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/59_zMJRhFM0/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">7:14</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">487,432 views</div>      <div class="age">3 weeks ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(535%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/tnfPNYpi8rc/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">9:22</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">3,156,426 views</div>      <div class="age">7 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(642%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/F50yjSws9gQ/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">5:27</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">1,108,695 views</div>      <div class="age">3 weeks ago</div>    </div>  </div></div></div></div></div></div></div><div class=" shelf" tabindex="-1" style="height: 24em; opacity: 1; z-index: 2; transform: translateX(0%) translateY(106%) scale(1) translateZ(0px); transition: none 0s;">  <div class="icon "></div>  <div class="title">    <span class="main">FailArmy</span>    <span class="annotation">Recommended channel</span>  </div>  <div class="content-container"><div class=" horizontal-list" tabindex="-1">  <div class="no-content-message">    <div class="text">No videos are available</div>  </div>  <div class="content"><div class=" sliding-highlighter" tabindex="-1" style="transform: translateX(0%) translateZ(0px); transition: none 0s;">  <div class="select">Select</div></div><div class=" carousel" tabindex="-1"><div class="item tile selected video-tile" tabindex="-1" style="transform: translateX(0%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/rs-Ou-gjReQ/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">7:01</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">4,792,124 views</div>      <div class="age">1 month ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(107%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/x5ZxRObLLzE/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:49</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">5,144,308 views</div>      <div class="age">2 weeks ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(214%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/LZoilVdo7Hw/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">7:06</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">3,485,342 views</div>      <div class="age">3 weeks ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(321%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/0vEKItRNIb0/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:54</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">KidsCat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">3,469,457 views</div>      <div class="age">3 weeks ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(428%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/8VstEBbwhnc/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:52</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">4,334,756 views</div>      <div class="age">1 week ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(535%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/qkKRkfZYhlE/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:37</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">3,053,167 views</div>      <div class="age">2 weeks ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(642%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/MODTYlzxY9U/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:44</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">2,734,235 views</div>      <div class="age">1 week ago</div>    </div>  </div></div></div></div></div></div></div><div class=" shelf" tabindex="-1" style="height: 24em; opacity: 1; z-index: 3; transform: translateX(0%) translateY(212%) scale(1) translateZ(0px); transition: none 0s;">  <div class="icon "></div>  <div class="title">    <span class="main">Cyprien</span>    <span class="annotation">Recommended channel</span>  </div>  <div class="content-container"><div class=" horizontal-list" tabindex="-1">  <div class="no-content-message">    <div class="text">No videos are available</div>  </div>  <div class="content"><div class=" sliding-highlighter" tabindex="-1" style="transform: translateX(0%) translateZ(0px); transition: none 0s;">  <div class="select">Select</div></div><div class=" carousel" tabindex="-1"><div class="item tile selected video-tile" tabindex="-1" style="transform: translateX(0%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/D-YPnDvTCmI/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">5:02</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">byby Not a Cat</div>      <div class="views">9,832,315 views</div>      <div class="age">1 month ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(107%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/wNRUzu4fTgw/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">11:44</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">15,035,125 views</div>      <div class="age">8 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(214%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/GwzBLYGRj6c/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:32</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">10,769,981 views</div>      <div class="age">4 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(321%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/rtzlT78OEks/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:32</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">12,174,818 views</div>      <div class="age">4 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(428%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/eOOyxSMI0aE/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">6:32</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">11,402,149 views</div>      <div class="age">5 months ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(535%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/RL7grUEo960/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">4:50</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">27,077,657 views</div>      <div class="age">1 year ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(642%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/2A07xMhKC6g/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">5:55</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">11,230,070 views</div>      <div class="age">6 months ago</div>    </div>  </div></div></div></div></div></div></div><div class=" shelf" tabindex="-1" style="height: 24em; opacity: 1; z-index: 3; transform: translateX(0%) translateY(212%) scale(1) translateZ(0px); transition: none 0s;">  <div class="icon "></div>  <div class="title">    <span class="main">Recently Uploaded</span>    <span class="annotation">Recommended videos</span>  </div>  <div class="content-container"><div class=" horizontal-list" tabindex="-1">  <div class="no-content-message">    <div class="text">No videos are available</div>  </div>  <div class="content"><div class=" sliding-highlighter" tabindex="-1" style="transform: translateX(0%) translateZ(0px); transition: none 0s;">  <div class="select">Select</div></div><div class=" carousel" tabindex="-1"><div class="item tile selected video-tile" tabindex="-1" style="transform: translateX(0%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/Z31LDqbhN8U/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">10:23</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">23,123 views</div>      <div class="age">5 days ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(107%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/zzmrTdAtEu4/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">14:09</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">23,595 views</div>      <div class="age">3 days ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(214%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/1dXVzBU5p-Q/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">14:26</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">53,711 views</div>      <div class="age">6 days ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(321%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/spC883rn6zk/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">17:41</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">62,903 views</div>      <div class="age">5 days ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(428%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/XilhAJZ2qxs/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">11:46</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">37,470 views</div>      <div class="age">2 days ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(535%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/tCehxI5a1y0/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">10:28</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">9,132 views</div>      <div class="age">2 days ago</div>    </div>  </div></div><div class="item tile video-tile" tabindex="-1" style="transform: translateX(642%) translateZ(0px); transition: none 0s;"><div class="no-model tile-focus-target" tabindex="-1"></div>  <div class="tile-top">    <div class="video-thumb no-model image" data-image-url="{{model.imageUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/vi/qrZcKwcVwk8/hqdefault.jpg);"></div>    <div class="voice-command">Cat Video</div>    <div class="decoration">      <div class="live-badge badge hidden"></div>      <div class="text-badge badge hidden"></div>      <div class="duration">8:43</div>    </div>  </div>  <div class="overlay hidden">    <div class="count"><div><strong></strong></div>videos</div>    <div class="icon"></div>  </div>  <div class="tile-bottom">    <div class="title">Cat Video</div>    <div class="details">      <div class="by">by Not a Cat</div>      <div class="views">23,568 views</div>      <div class="age">3 days ago</div>    </div>  </div></div></div></div></div></div></div></div></div>  </div></div>  <div id="settings-placeholder"></div>  <div id="search" class="hidden no-model search" tabindex="-1">  <div class="youtube-logo-top">    <div class="youtube-logo icon-youtube-logo"></div>    <div class="youtube-unlimited-logo icon-youtube-unlimited-logo"></div>  </div>  <div class="controls">    <div id="text-box-background">      <div id="search-text-box">        <span class="icon-search"></span>        <input id="search-input" autocomplete="off" class="no-model component" title="search" placeholder="Search..." tabindex="-1">        <span id="search-query" class="hidden"></span>      </div>    </div>    <div id="search-text-entry">      <div class="suggestions-container">        <div id="keyboard-icon" class="icon-search-keyboard"></div>        <div id="search-suggestions" class=" suggestions" tabindex="-1">  <div id="suggest-list" class=" list" data-model="{{model.suggestions}}" data-catch-mouse-move="{{catchMouseMove}}" data-scroll-on-focus="true" tabindex="-1"></div></div>      </div>      <div id="search-keyboard" class=" keyboard" tabindex="-1">  <div id="transliteration-container">    <div id="transliteration" class="no-model transliteration" tabindex="-1">  <div class=" list" data-model="{{transliterations}}" tabindex="-1">  </div></div>  </div>  <div id="keyboard-grid" class=" grid" tabindex="-1">  <div class="selected list" data-catch-mouse-move="{{catchRowMouseMove}}" data-item-factory="{{itemFactory}}" data-item-name="{{itemName}}" data-is-vertical="false" data-loop="{{loopRows}}" data-consume-events="{{consumeEvents}}" data-rate-limit="{{rateLimit}}" tabindex="-1"><div class="selected button" tabindex="-1"><span class="label">a</span></div><div class=" button" tabindex="-1"><span class="label">b</span></div><div class=" button" tabindex="-1"><span class="label">c</span></div><div class=" button" tabindex="-1"><span class="label">d</span></div><div class=" button" tabindex="-1"><span class="label">e</span></div><div class=" button" tabindex="-1"><span class="label">f</span></div><div class=" button" tabindex="-1"><span class="label">g</span></div><div class="icon-key-delete button" tabindex="-1"><span class="label"></span></div></div><div class=" list" data-catch-mouse-move="{{catchRowMouseMove}}" data-item-factory="{{itemFactory}}" data-item-name="{{itemName}}" data-is-vertical="false" data-loop="{{loopRows}}" data-consume-events="{{consumeEvents}}" data-rate-limit="{{rateLimit}}" tabindex="-1"><div class="selected button" tabindex="-1"><span class="label">h</span></div><div class=" button" tabindex="-1"><span class="label">i</span></div><div class=" button" tabindex="-1"><span class="label">j</span></div><div class=" button" tabindex="-1"><span class="label">k</span></div><div class=" button" tabindex="-1"><span class="label">l</span></div><div class=" button" tabindex="-1"><span class="label">m</span></div><div class=" button" tabindex="-1"><span class="label">n</span></div><div class="clear-query-tile button" tabindex="-1"><span class="label">Clear</span></div></div><div class=" list" data-catch-mouse-move="{{catchRowMouseMove}}" data-item-factory="{{itemFactory}}" data-item-name="{{itemName}}" data-is-vertical="false" data-loop="{{loopRows}}" data-consume-events="{{consumeEvents}}" data-rate-limit="{{rateLimit}}" tabindex="-1"><div class="selected button" tabindex="-1"><span class="label">o</span></div><div class=" button" tabindex="-1"><span class="label">p</span></div><div class=" button" tabindex="-1"><span class="label">q</span></div><div class=" button" tabindex="-1"><span class="label">r</span></div><div class=" button" tabindex="-1"><span class="label">s</span></div><div class=" button" tabindex="-1"><span class="label">t</span></div><div class=" button" tabindex="-1"><span class="label">u</span></div><div class="numbers-toggle-tile button" tabindex="-1"><span class="label">&amp;123</span></div></div><div class=" list" data-catch-mouse-move="{{catchRowMouseMove}}" data-item-factory="{{itemFactory}}" data-item-name="{{itemName}}" data-is-vertical="false" data-loop="{{loopRows}}" data-consume-events="{{consumeEvents}}" data-rate-limit="{{rateLimit}}" tabindex="-1"><div class="selected button" tabindex="-1"><span class="label">v</span></div><div class=" button" tabindex="-1"><span class="label">w</span></div><div class=" button" tabindex="-1"><span class="label">x</span></div><div class=" button" tabindex="-1"><span class="label">y</span></div><div class=" button" tabindex="-1"><span class="label">z</span></div><div class=" button" tabindex="-1"><span class="label">-</span></div><div class=" button" tabindex="-1"><span class="label">'</span></div></div></div>  <div id="letter-suggest" class=" list" data-is-vertical="true" data-catch-mouse-move="true" data-model="{{letterSuggestions}}" tabindex="-1"></div>  <div>    <div id="keyboard-spacebar" class="icon-key-space button" tabindex="-1"><span class="label"></span></div>  </div></div>      <div class="search-hint">        Voice search is not supported.      </div>    </div>  </div>  <div class="search-pairing">    <div class="search-img"></div>    <div class="search-message">      <div class="title">Search Faster</div>      <div class="pairing no-model dial-upsell pairing-dialog" id="pairing" tabindex="-1">  <div class="dialog-large-icon icon-settings-pair"></div>  <div class="connection-instructions icon-dialog-content">    <div class="dial-upsell-content">      Connect one or more devices to the same Wi-Fi network and select <div class="cast-icon">&nbsp;</div>    </div>    <div class="manual-connect-content">      <div class="connection-steps">        <div class="with-dial-connect-step1">        <div class="step1">Or go to</div>        <div class="pair-url">youtube.com/pair</div>        </div>        <div class="no-dial-connect-step1">        <div class="step1">Go to</div>        <div class="pair-url">youtube.com/pair</div>        </div>        <div class="no-dial-connect-step2">        <div class="step2">and enter</div>        <div class="pair-code">Loading...</div>        </div>      </div>    </div>  </div></div>    </div>  </div>  <div id="results-placeholder"></div></div>  <div id="pointer-overlay" class="-overlay hidden"></div>  <div id="guide" class="focused guide" tabindex="-1">  <div id="user-info-background">    <div class="user-info-container">      <div id="guide-user-avatar" style="background-image: url()"></div>      <div class="guide-user-text">        <div class="guide-user-name"></div>        <div class="guide-user-unlimited"></div>      </div>    </div>  </div>  <div class="collapsed-guide"></div>  <div class="guide-carousel-background"></div>  <div class="collapsed-guide-icons">    <div class="collapsed-guide-icon icon-guide-what-to-watch"></div>    <div class="collapsed-guide-icon icon-guide-my-subs"></div>    <div class="collapsed-guide-icon icon-popular"></div>    <div class="collapsed-guide-icon icon-music"></div>    <div class="collapsed-guide-icon icon-ellipsis"></div>  </div>  <div id="error-message">Sorry, the rest of this Guide isn’t available right now.</div><div class=" sliding-highlighter" tabindex="-1" style="transform: translateY(200%) translateZ(0px); transition: opacity 200ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 200ms cubic-bezier(0.4, 0, 0.2, 1);">  <div class="select">Select</div></div><div class="focused carousel" tabindex="-1"><div class=" guide-button" tabindex="-1" style="transform: translateY(0%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon icon-people">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1"></div>  </div>  <div class="guide-button-title">Sign In</div></div><div class=" guide-button" tabindex="-1" style="transform: translateY(100%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon icon-search">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1"></div>  </div>  <div class="guide-button-title">Search</div></div><div class="focused selected guide-button" tabindex="-1" style="transform: translateY(200%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon icon-guide-what-to-watch">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1"></div>  </div>  <div class="guide-button-title">Home</div></div><div class=" guide-button" tabindex="-1" style="transform: translateY(300%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon icon-player-settings">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1"></div>  </div>  <div class="guide-button-title">Settings</div></div><div class="disabled guide-button" tabindex="-1" style="transform: translateY(400%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1"></div>  </div>  <div class="guide-button-title">Best of YouTube</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(500%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/i/F0pVplsI8R5kcAqgtoRqoA/1.jpg);"></div>  </div>  <div class="guide-button-title">Popular on YouTube</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(600%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/i/-9-kyTW8ZkZNDHQJ6FgpwQ/1.jpg);"></div>  </div>  <div class="guide-button-title">Music</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(700%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/i/Egdi0XIXXZ-qJOFPf4JSKw/1.jpg);"></div>  </div>  <div class="guide-button-title">Sports</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(800%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/i/OpNcN46UbXVtpKMrmU4Abg/1.jpg);"></div>  </div>  <div class="guide-button-title">Gaming</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(900%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/i/YfdidRxbB8Qhf0Nx7ioOYw/1.jpg);"></div>  </div>  <div class="guide-button-title">News</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(1000%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/i/4R8DWoMoI7CAwX8_LjQHig/1.jpg);"></div>  </div>  <div class="guide-button-title">Live</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(1100%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(yt3.ggpht.com/-dL2jeHlm2Ok/AAAAAAAAAAI/AAAAAAAAAAA/ZCMMkRj-hrw/s88-c-k-no/photo.jpg);"></div>  </div>  <div class="guide-button-title">Spotlight</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(1200%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/i/xAgnFbkxldX6YUEvdcNjnA/1.jpg);"></div>  </div>  <div class="guide-button-title">Film &amp; Animation</div></div><div class="has-image guide-button" tabindex="-1" style="transform: translateY(1300%) translateZ(0px); transition: none 0s;">  <div class="guide-button-icon ">    <div class="no-model image" data-image-url="{{model.iconUrl}}" tabindex="-1" style="background-image: url(i.ytimg.com/i/i-g4cjqGV7jvU8aeSuj0jQ/1.jpg);"></div>  </div>  <div class="guide-button-title">Entertainment</div></div></div></div>  <div class="no-model application-message" tabindex="-1"></div>  <div id="spinner" class="hidden no-model spinner" tabindex="-1">  <div class="fallback-loading-indicator">LOADING...</div>  <div class="loading-indicator">    <div class="dot" id="dot1"></div>    <div class="dot" id="dot2"></div>    <div class="dot" id="dot3"></div>    <div class="dot" id="dot4"></div>    <div class="dot" id="dot5"></div>    <div class="dot" id="dot6"></div>    <div class="dot" id="dot7"></div>    <div class="dot" id="dot8"></div>  </div></div>  <h1 class=" debug-watermark" tabindex="-1"></h1>  <div class="browse-sets no-model dialog" id="dialog" tabindex="-1">  <div id="dialog-wrapper">    <div class="dialog-icon"></div> <!-- Only used for flat UI -->    <div class="dialog-contents">      <div class="header">        <div class="title"></div>      </div>      <div class="no-model component" id="dialog-view" tabindex="-1"></div>      <div class="buttons">        <div id="dialog-cancel-button" class="no-model button" tabindex="-1"><span class="label"></span></div>        <div id="dialog-ok-button" class="no-model button" tabindex="-1"><span class="label"></span></div>      </div>    </div>  </div></div>  <div id="voice-footer-placeholder"></div>  <div id="legend" class="close-guide search legend" tabindex="-1">  <div class="more no-model legend-item" tabindex="-1">  <span class="icon icon-player-more"></span>  <span class="title">Show More</span></div>  <div class="back no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Go Back</span></div>  <div class="exit no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Exit</span></div>  <div class="reversed-back no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Go Back</span></div>  <div class="search no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Search</span></div>  <div class="space no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Space</span></div>  <div class="home no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Go Home</span></div>  <div class="modify no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Modify</span></div>  <div class="delete no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Delete</span></div>  <div class="guide no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Open Guide</span></div>  <div class="close-guide no-model legend-item" tabindex="-1">  <span class="icon "></span>  <span class="title">Close Guide</span></div></div>  <div class=" toaster" tabindex="-1">  <div class=" list" data-model="{{model}}" tabindex="-1"></div></div>  <div class="no-model engagement-indicator" tabindex="-1"></div>  <div class=" hidden" id="snap-controls" data-is-hidden="true"></div>  <div id="context-menu-placeholder" class="hidden"></div>  <div class="hidden no-model fps" tabindex="-1"></div></div></div>
+    
+    
+  
+
+<div id="window-resizer-tooltip"><a href="#" title="Edit settings"></a><span class="tooltipTitle">Window size: </span><span class="tooltipWidth" id="winWidth"></span> x <span class="tooltipHeight" id="winHeight"></span><br><span class="tooltipTitle">Viewport size: </span><span class="tooltipWidth" id="vpWidth"></span> x <span class="tooltipHeight" id="vpHeight"></span></div></body></html>
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/CutiveMono-Regular.woff b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/CutiveMono-Regular.woff
new file mode 100644
index 0000000..6ab1ca1
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/CutiveMono-Regular.woff
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/DancingScript-Regular.woff b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/DancingScript-Regular.woff
new file mode 100644
index 0000000..71b2e76
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/DancingScript-Regular.woff
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/Handlee-Regular.woff b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/Handlee-Regular.woff
new file mode 100644
index 0000000..c8f2418
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/Handlee-Regular.woff
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/MarcellusSC-Regular.woff b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/MarcellusSC-Regular.woff
new file mode 100644
index 0000000..1740d4f
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/MarcellusSC-Regular.woff
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PTM55FT.woff b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PTM55FT.woff
new file mode 100644
index 0000000..e7e96d1
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PTM55FT.woff
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PT_Sans-Caption-Web-Regular.woff b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PT_Sans-Caption-Web-Regular.woff
new file mode 100644
index 0000000..c0e6a2f
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PT_Sans-Caption-Web-Regular.woff
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PT_Serif-Caption-Web-Regular.woff b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PT_Serif-Caption-Web-Regular.woff
new file mode 100644
index 0000000..f5599f7
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/fonts/PT_Serif-Caption-Web-Regular.woff
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/app-prod.css b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/app-prod.css
new file mode 100644
index 0000000..c78c202
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/app-prod.css
@@ -0,0 +1 @@
+.icon-cast_off:before{content:"\00e675"}.icon-cast_on:before{content:"\00e676"}.icon-mr_meh_android:before{content:"\00e677"}.icon-settings-signin-android:before{content:"\00e678"}.icon-settings-signout-android:before{content:"\00e679"}.icon-roku-back:before{content:"\00e674"}.icon-hats-happy:before{content:"\00e66f"}.icon-hats-neutral:before{content:"\00e670"}.icon-hats-sad:before{content:"\00e671"}.icon-hats-very-happy:before{content:"\00e672"}.icon-hats-very-sad:before{content:"\00e673"}.icon-search-keyboard:before{content:"\00e66e"}.icon-multiaudio:before{content:"\00e62d"}.icon-settings-check:before{content:"\00e66d"}.icon-settings-uncheck:before{content:"\00e659"}.icon-popular:before{content:"\00e66c"}.icon-airplane:before{content:"\00e600"}.icon-back:before{content:"\00e601"}.icon-check:before{content:"\00e602"}.icon-chevron-single:before{content:"\00e603"}.icon-delete:before{content:"\00e604"}.icon-desktop-arrowkeys:before{content:"\00e605"}.icon-desktop-delete:before{content:"\00e606"}.icon-desktop-esc:before{content:"\00e607"}.icon-desktop-g:before{content:"\00e608"}.icon-desktop-s:before{content:"\00e609"}.icon-dislike:before{content:"\00e60a"}.icon-double-chevron-right:before{content:"\00e60b"}.icon-edit:before{content:"\00e60c"}.icon-education:before{content:"\00e60d"}.icon-ellipsis:before{content:"\00e60e"}.icon-entertainment:before{content:"\00e60f"}.icon-exit:before{content:"\00e610"}.icon-film:before{content:"\00e611"}.icon-flag:before{content:"\00e612"}.icon-gaming:before{content:"\00e613"}.icon-guide-history:before{content:"\00e614"}.icon-guide-my-subs:before{content:"\00e615"}.icon-guide-purchases:before{content:"\00e616"}.icon-guide-social:before{content:"\00e617"}.icon-guide-what-to-watch:before{content:"\00e618"}.icon-home:before{content:"\00e619"}.icon-hourglass:before{content:"\00e61a"}.icon-key-delete:before{content:"\00e61b"}.icon-key-globe:before{content:"\00e61c"}.icon-key-space-sm:before{content:"\00e61d"}.icon-key-space:before{content:"\00e61e"}.icon-like:before{content:"\00e61f"}.icon-lips:before{content:"\00e620"}.icon-logo-lozenge:before{content:"\00e621"}.icon-lol:before{content:"\00e622"}.icon-lozenge:before{content:"\00e623"}.icon-mix:before{content:"\00e624"}.icon-music:before{content:"\00e625"}.icon-news:before{content:"\00e626"}.icon-people:before{content:"\00e627"}.icon-pets:before{content:"\00e628"}.icon-player-3d:before{content:"\00e629"}.icon-player-annotations:before{content:"\00e62a"}.icon-player-closedcaptions:before{content:"\00e62b"}.icon-player-ff:before{content:"\00e62c"}.icon-player-HD-circle:before{content:"\00e651"}.icon-player-HD:before{content:"\00e62e"}.icon-player-info:before{content:"\00e62f"}.icon-player-instantreplay:before{content:"\00e630"}.icon-player-less:before{content:"\00e631"}.icon-player-more:before{content:"\00e632"}.icon-player-mute:before{content:"\00e633"}.icon-player-next:before{content:"\00e634"}.icon-player-pause:before{content:"\00e635"}.icon-player-play:before{content:"\00e636"}.icon-player-prev:before{content:"\00e637"}.icon-player-replay:before{content:"\00e638"}.icon-player-rew:before{content:"\00e639"}.icon-player-settings:before{content:"\00e63a"}.icon-player-share:before{content:"\00e63b"}.icon-player-size-fullscreen:before{content:"\00e63c"}.icon-player-size-medium:before{content:"\00e63d"}.icon-player-size-minimize:before{content:"\00e63e"}.icon-player-stop:before{content:"\00e63f"}.icon-player-subtitles:before{content:"\00e640"}.icon-player-volume-45:before{content:"\00e641"}.icon-player-volume-48:before{content:"\00e642"}.icon-playlist:before{content:"\00e643"}.icon-playstation-circle:before{content:"\00e644"}.icon-playstation-square:before{content:"\00e645"}.icon-playstation-triangle:before{content:"\00e646"}.icon-playstation-x:before{content:"\00e647"}.icon-privacy-link:before{content:"\00e648"}.icon-privacy-locked:before{content:"\00e649"}.icon-privacy-public:before{content:"\00e64a"}.icon-related:before{content:"\00e64b"}.icon-remoteque:before{content:"\00e64c"}.icon-reward:before{content:"\00e64d"}.icon-rocket:before{content:"\00e64e"}.icon-search-clear:before{content:"\00e64f"}.icon-search:before{content:"\00e650"}.icon-settings-clear-cookies:before{content:"\00e652"}.icon-settings-clear-history:before{content:"\00e653"}.icon-settings-feedback:before{content:"\00e654"}.icon-settings-help:before{content:"\00e655"}.icon-settings-pair:before{content:"\00e656"}.icon-settings-phone:before{content:"\00e657"}.icon-settings-term:before{content:"\00e658"}.icon-speechbubble:before{content:"\00e65a"}.icon-sports:before{content:"\00e65b"}.icon-star:before{content:"\00e65c"}.icon-trash:before{content:"\00e65d"}.icon-trends:before{content:"\00e65e"}.icon-tv-dpad:before{content:"\00e65f"}.icon-upload-arrow:before{content:"\00e660"}.icon-upload:before{content:"\00e661"}.icon-watch-later:before{content:"\00e662"}.icon-wii-1:before{content:"\00e663"}.icon-wii-2:before{content:"\00e664"}.icon-wii-A:before{content:"\00e665"}.icon-wii-B:before{content:"\00e666"}.icon-wii-minus:before{content:"\00e667"}.icon-wii-plus:before{content:"\00e668"}.icon-wii-x:before{content:"\00e669"}.icon-wii-y:before{content:"\00e66a"}.icon-youtube-logo:before{content:"\00e66b"}.icon-youtube-unlimited-logo:before{content:"\00e67a"}@font-face{font-family:'Cutive Mono';src:url('/s/tv/fonts/CutiveMono-Regular.woff') format('woff')}@font-face{font-family:'PT Mono';src:url('/s/tv/fonts/PTM55FT.woff') format('woff')}@font-face{font-family:'PT Serif Caption';src:url('/s/tv/fonts/PT_Serif-Caption-Web-Regular.woff') format('woff')}@font-face{font-family:'PT Sans Caption';src:url('/s/tv/fonts/PT_Sans-Caption-Web-Regular.woff') format('woff')}@font-face{font-family:'Handlee';src:url('/s/tv/fonts/Handlee-Regular.woff') format('woff')}@font-face{font-family:'Dancing Script';src:url('/s/tv/fonts/DancingScript-Regular.woff') format('woff')}@font-face{font-family:'Marcellus SC';src:url('/s/tv/fonts/MarcellusSC-Regular.woff') format('woff')}body,html{font-size:100%;height:100%;margin:auto;overflow:hidden;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}input{font:inherit;margin:0;padding:0}body{background-color:#1c1a1a}p,ul,li{border:0;margin:0;outline:none;padding:0}ul{list-style:none}.focused,:focus{outline:0 solid}.hidden{display:none!important}.invisible{visibility:hidden}ul.list li{display:inline}ul.list.vertical li{display:block}.device-plugin{height:0;margin:0;position:absolute;visibility:hidden;width:0}#loader{}#leanback{height:100%}#app-markup{background-size:100% 100%;height:100%}#background{background-size:100% 100%;bottom:0;left:0;position:absolute;overflow:hidden;right:0;top:0}.limited-memory.sets-ui #app-markup{background-color:#283337}#app-markup.watch-state{background-color:#000!important}.wiiu #app-markup.watch-state{background-image:none!important}#playstation-buttons{display:none;position:absolute}#spinner{position:absolute;top:17.17em;width:100%}.browse-state .loading-indicator{display:none}.browse-state .fallback-loading-indicator{display:block}.opera #spinner{top:20em}.loading-indicator{height:5.33em;margin:0 auto;position:relative;width:5.33em}.dot{background-color:#cbcbcb;border-radius:50%;height:1.17em;position:absolute;width:1.17em}@-webkit-keyframes fade1{0%,100%{opacity:0}50%{opacity:1}}@-webkit-keyframes fade2{0%,100%{opacity:.25}37.5%{opacity:1}87.5%{opacity:0}}@-webkit-keyframes fade3{0%,100%{opacity:.5}25%{opacity:1}75%{opacity:0}}@-webkit-keyframes fade4{0%,100%{opacity:.75}12.5%{opacity:1}62.5%{opacity:0}}@-webkit-keyframes fade5{0%,100%{opacity:1}50%{opacity:0}}@-webkit-keyframes fade6{0%,100%{opacity:.75}37.5%{opacity:0}87.5%{opacity:1}}@-webkit-keyframes fade7{0%,100%{opacity:.5}25%{opacity:0}75%{opacity:1}}@-webkit-keyframes fade8{0%,100%{opacity:.25}12.5%{opacity:0}62.5%{opacity:1}}@-o-keyframes fade1{0%,100%{opacity:0}50%{opacity:1}}@-o-keyframes fade2{0%,100%{opacity:.25}37.5%{opacity:1}87.5%{opacity:0}}@-o-keyframes fade3{0%,100%{opacity:.5}25%{opacity:1}75%{opacity:0}}@-o-keyframes fade4{0%,100%{opacity:.75}12.5%{opacity:1}62.5%{opacity:0}}@-o-keyframes fade5{0%,100%{opacity:1}50%{opacity:0}}@-o-keyframes fade6{0%,100%{opacity:.75}37.5%{opacity:0}87.5%{opacity:1}}@-o-keyframes fade7{0%,100%{opacity:.5}25%{opacity:0}75%{opacity:1}}@-o-keyframes fade8{0%,100%{opacity:.25}12.5%{opacity:0}62.5%{opacity:1}}@keyframes fade1{0%,100%{opacity:0}50%{opacity:1}}@keyframes fade2{0%,100%{opacity:.25}37.5%{opacity:1}87.5%{opacity:0}}@keyframes fade3{0%,100%{opacity:.5}25%{opacity:1}75%{opacity:0}}@keyframes fade4{0%,100%{opacity:.75}12.5%{opacity:1}62.5%{opacity:0}}@keyframes fade5{0%,100%{opacity:1}50%{opacity:0}}@keyframes fade6{0%,100%{opacity:.75}37.5%{opacity:0}87.5%{opacity:1}}@keyframes fade7{0%,100%{opacity:.5}25%{opacity:0}75%{opacity:1}}@keyframes fade8{0%,100%{opacity:.25}12.5%{opacity:0}62.5%{opacity:1}}#dot1{-o-animation:fade8 .72s infinite ease;-webkit-animation:fade8 .72s infinite ease;animation:fade8 .72s infinite ease;left:0;top:2.09em}#dot2{-o-animation:fade7 .72s infinite ease;-webkit-animation:fade7 .72s infinite ease;animation:fade7 .72s infinite ease;left:.61em;top:.61em}#dot3{-o-animation:fade6 .72s infinite ease;-webkit-animation:fade6 .72s infinite ease;animation:fade6 .72s infinite ease;left:2.09em;top:0}#dot4{-o-animation:fade5 .72s infinite ease;-webkit-animation:fade5 .72s infinite ease;animation:fade5 .72s infinite ease;right:.61em;top:.61em}#dot5{-o-animation:fade4 .72s infinite ease;-webkit-animation:fade4 .72s infinite ease;animation:fade4 .72s infinite ease;right:0;top:2.09em}#dot6{-o-animation:fade3 .72s infinite ease;-webkit-animation:fade3 .72s infinite ease;animation:fade3 .72s infinite ease;bottom:.61em;right:.61em}#dot7{-o-animation:fade2 .72s infinite ease;-webkit-animation:fade2 .72s infinite ease;animation:fade2 .72s infinite ease;bottom:0;left:2.09em}#dot8{-o-animation:fade1 .72s infinite ease;-webkit-animation:fade1 .72s infinite ease;animation:fade1 .72s infinite ease;bottom:.61em;left:.61em}.spinner.transitions .dot{-o-animation:initial!important;-webkit-animation:initial!important;animation:initial!important;background:url(img/circle.png) no-repeat center;background-size:100%}.spinner.transitions.spin .loading-indicator{transition:transform 25s linear;transform:rotate(-7200deg)}.transitions #dot1{opacity:1}.transitions #dot2{opacity:0.875}.transitions #dot3{opacity:0.75}.transitions #dot4{opacity:0.625}.transitions #dot5{opacity:0.5}.transitions #dot6{opacity:0.375}.transitions #dot7{opacity:0.25}.transitions #dot8{opacity:0.125}.fallback-loading-indicator{color:#f1f1f1;display:none;font-size:1.8em;margin:2px auto 0 auto;text-align:center}.scrollbar{background-color:rgba(255,255,255,.1);height:100%;position:absolute;top:0;width:.1em}.scrollbar .handle{background-color:#f1f1f1;position:absolute;width:.1em}.application-message{color:#f1f1f1;font-size:1.8em;position:absolute;text-align:center;text-shadow:#000 .04em .04em;top:50%;width:100%}.debug-watermark{background-color:rgba(235,49,3,0.7);color:#0e0202;display:none;font-size:100%;left:0;padding:1em;position:absolute;bottom:0;width:70%}.debug-watermark.visible{display:block}.debug-console{background:rgba(0,0,0,.9);color:#fff;height:95%;overflow:scroll;padding:1em;position:absolute;right:0;top:0;width:40em;z-index:1}#player-controls .button,#player-controls .toggle-button{font-family:'youtube-icons';speak:none}.fps{position:absolute;right:0;bottom:0;text-align:center;padding-top:0.3em;width:5em;height:1.7em;background-color:#0f0;z-index:100}#html5-player-messages{display:none}#button-list>.icon-player-more:before{content:"\00e632"}.icon-player-play.toggle-selected:before{content:"\00e635"}#loader{z-index:1000}.sliding-highlighter,.pivot-sliding-highlighter{background:white;box-shadow:0 0 60px rgba(153,153,153,.3);display:none;height:26em;position:absolute;width:24em}#settings-items .sliding-highlighter{height:26.2em;width:24.2em}.horizontal-list.focused .sliding-highlighter,.video-uploads.focused .sliding-highlighter,#settings-items.focused .sliding-highlighter{display:block}.video-uploads .sliding-highlighter{height:20em;width:18em}.carousel .item:hover{background-color:#5a5a5a;cursor:pointer}.feed-title.preview{color:#f1f1f1;font-size:1.3em;height:1.3em;opacity:.7;padding-bottom:.6em;padding-left:1.9em}.feed-title .unread-count{background-color:rgba(187,0,0,.9);font-size:.6em;margin-left:.5em;padding:.05em .3em;position:relative;top:-0.265em}.prev-feed{height:3.6em;left:4%;position:absolute;top:5%}.next-feed{height:2em;left:4%;position:absolute;top:84%}.tile{background-color:#000;color:#666;height:26em;list-style:none;overflow:hidden;position:absolute;width:24em}.tile-focus-target{height:0;width:0}.tile-top{background-color:#000;height:50%;width:100%}.channel-top{height:62%;margin:5.25% 16%;width:68%}.channel-top .video-thumb,.tile-top .video-thumb{background-color:#252525;background-position:center;background-repeat:no-repeat;background-size:100%;height:100%}.browse-header-avatar.preloaded,.tile-top .video-thumb.preloaded{background:no-repeat center;background-color:#252525;background-image:url('img/icon-playbutton.png');background-size:auto}.auto-play-tile{overflow:visible}.post-play-title{font-size:1.4em;overflow:hidden;position:absolute;text-overflow:ellipsis;text-shadow:#000 .08em .08em;top:-1.8em;width:15.5em}.auto-play-tile .video-tile{top:0}.auto-play-tile .default-title,.auto-play-tile .next-up-title{color:#cccccc}.post-play-countdown{display:none}.countdown-active .post-play-countdown{color:#fff;display:block;font-size:5em;position:relative;text-align:center;text-shadow:#000 .06em .06em;top:14%}.playlist-tile.focused,.playlist-tile.focused:hover,.auto-play-tile.focused .video-tile,.auto-play-tile.focused:hover .video-tile,.recent-search-tile.focused,.recent-search-tile.focused:hover,.video-tile.focused,.video-tile.focused:hover{background-color:#f1f1f1}.item .overlay{display:none}.playlist-tile .overlay,.video-tile .overlay{background:#000;display:block;height:53%;margin-left:56%;margin-top:-57.5%;opacity:.8;width:45%}.playlist-tile.focused .overlay,.video-tile.focused .overlay{color:#f1f1f1}.playlist-tile .overlay strong{font-size:1.75em;font-weight:normal}.playlist-tile .overlay .count,.video-tile .overlay .count{font-size:1.5em;line-height:1.2em;padding-top:1.7em;text-align:center}.playlist-tile .overlay .icon,.video-tile .overlay .icon{font-family:'youtube-icons';font-size:3em;height:50%;overflow:hidden;padding:.2em;text-align:center}.tile-bottom{height:50%;padding:.25em 0 0 1em;width:23em}.channel-bottom{height:25%;margin-top:2.65em;width:100%}.channel-bottom .title,.tile-bottom .title{color:#999;font-size:1.7em;height:2.45em;line-height:1.25em;margin:.6em .6em 0 0;overflow:hidden;text-align:left;white-space:normal}.channel-bottom .title{height:1.2em;margin:0;padding:0 .6em;text-align:center;text-overflow:ellipsis;white-space:nowrap}.tile.selected.focused .tile-bottom{color:#222}.tile.selected.focused .channel-bottom .details,.tile.selected.focused .tile-bottom .details{color:#999}.tile.selected.focused .channel-bottom .title,.tile.selected.focused .tile-bottom .title{color:#444}.channel-tile .channel-top .decoration{margin-top:-19%;text-align:right;width:97%}.video-tile .tile-top .decoration{margin-top:-2em;text-align:right;width:97.3%}.channel-top .badge,.tile-top .badge,.tile-top .duration{background:rgba(0,0,0,.7);border-radius:0.1em;color:#fff;display:inline-block;font-size:1.4em;padding:0em .1em}.tile-top .badge,.tile-top .duration{text-transform:uppercase}.tile-top .live-badge{background-color:rgba(230,33,23,.8);border:0;color:#fff}.playlist-tile:hover,.video-tile:hover{background-color:#222}.channel-tile .details,.playlist-tile .details,.recent-search-tile .details,.video-tile .details{color:#999;font-size:1.3em;font-weight:300;height:40%;overflow:hidden;padding:0;white-space:normal;word-break:break-all}.channel-tile .details{text-align:center}.playlist-tile .details,.recent-search-tile .details,.video-tile .details{margin:.7em 0em 0em}.custom-playlist-image-tile .tile-top .video-thumb{background-position-x:0%;background-repeat:no-repeat;background-size:56.25%}.playlist-tile.focused .details,.recent-search-tile.focused .details,.video-tile.focused .details{color:#666}.playlist-tile .details .by,.recent-search-tile .results,.video-tile .details .by{height:1.4em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist-tile .details .views,.video-tile .details .views{display:inline-block;padding-right:1.5em}.playlist-tile .details .views:empty,.video-tile .details .views:empty{display:none}.action-tile{border:2px rgba(255,255,255,0.1) solid;color:#fff;height:26em;overflow:visible}.action-tile.focused,.channel-tile.focused{background-color:#fff;color:#222}.action-tile .content{height:26em;white-space:normal}.video-tile .live-start-time{display:inline-block;vertical-align:middle}.tile-top .count-overlay{background:rgba(0,0,0,0.75);font-size:1.4em;height:100%;position:absolute;right:0;text-align:center;top:0;width:30%}.tile-top .count-overlay .video-count{display:block;font-size:2.2em;font-weight:bold;line-height:.8em;margin-top:1.6em}.action-tile .title{font-size:2.4em;height:24%;overflow:hidden;padding-top:0.5em;text-align:center;text-overflow:ellipsis;text-transform:uppercase;white-space:normal}.action-tile .long-title{font-size:2em;text-align:center;white-space:normal}.action-tile .description,.action-tile .remote-pair-text,.action-tile .remote-reset-help{color:#fff;font-size:1.4em;opacity:0;padding:0.5em;text-align:center;white-space:normal}.action-tile.focused .description,.action-tile.focused .remote-pair-text,.action-tile.focused .remote-reset-help,.action-tile.focused .sign-out-username{opacity:1}.action-tile .sign-out-username{font-size:1.7em;margin:1em auto;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap;width:80%}.action-tile .remote-count{font-size:.4em;position:absolute;top:40%;width:100%}.action-tile .remote-standing{display:inline-block;font-size:1.4em;margin:.2em auto;padding:.8em .4em .1em}.action-tile .remote-reset-help{height:2.7em}.action-tile .status{font-size:2em;text-align:center}.row-playing{display:none}.action-tile .large-action-icon{font-family:'youtube-icons';font-size:11em;margin-top:0;text-align:center;width:100%}.action-tile .sign-out-user-icon{background-size:cover;border-radius:20em;height:9em;margin:0 auto;width:9em}.action-tile .search-tile .description{font-size:1.4em;margin-top:2em;position:inherit;text-align:center}.large-action-icon.icon-guide-history{font-size:8em;margin-top:0.2em}.toggle-tile .icon{margin-top:0}.toggle-tile .content .title{height:12%;white-space:nowrap}.toggle-tile .label{font-size:1.8em;max-height:13%;text-align:center;width:100%}.selected .icon-search,.tile.selected .icon-search-clear{color:#222}.exp-densityBrowse .horizontal-list>.content{font-size:100%}.exp-densityBrowse .horizontal-list .no-content-message{display:none}.exp-densityBrowse .horizontal-list .pivot-sliding-highlighter{background:transparent;border:.5em #fff solid;box-shadow:.083em .083em .75em .167em #000 inset;height:7.5em;margin-left:-.4em;margin-top:-.4em;pointer-events:none;width:13.8em}.exp-densityBrowse .horizontal-list.focused .pivot-sliding-highlighter{display:block}.exp-densityBrowse .horizontal-list.focused.channel-selected .pivot-sliding-highlighter{border-radius:50%;height:7.5em;-moz-transform:translateX(3.2em);-o-transform:translateX(3.2em);-webkit-transform:translateX(3.2em);transform:translateX(3.2em);width:7.5em}.exp-densityBrowse .browse-sets .action-tile,.exp-densityBrowse .horizontal-list .channel-tile,.exp-densityBrowse .horizontal-list .video-tile{height:14em;width:14em}.exp-densityBrowse .shelf .horizontal-list .channel-tile,.exp-densityBrowse .shelf .horizontal-list .video-tile,.exp-densityBrowse .shelf .horizontal-list .channel-tile.selected,.exp-densityBrowse .shelf .horizontal-list .video-tile.selected{opacity:.5}.exp-densityBrowse .shelf.selected .horizontal-list .channel-tile,.exp-densityBrowse .shelf.selected .horizontal-list .video-tile,.exp-densityBrowse .horizontal-list .channel-tile,.exp-densityBrowse .horizontal-list .video-tile{opacity:.7}.exp-densityBrowse .shelf.selected .horizontal-list .channel-tile.selected,.exp-densityBrowse .shelf.selected .horizontal-list .video-tile.selected,.exp-densityBrowse .horizontal-list .channel-tile.selected,.exp-densityBrowse .horizontal-list .video-tile.selected,.exp-densityBrowse .horizontal-list .auto-play-tile.selected .video-tile,.limited-animation .exp-densityBrowse .shelf .horizontal-list .channel-tile,.limited-animation .exp-densityBrowse .shelf .horizontal-list .video-tile,.limited-animation .exp-densityBrowse .shelf .horizontal-list .channel-tile.selected,.limited-animation .exp-densityBrowse .shelf .horizontal-list .video-tile.selected,.limited-animation .exp-densityBrowse .shelf.selected .horizontal-list .channel-tile,.limited-animation .exp-densityBrowse .shelf.selected .horizontal-list .video-tile,.limited-animation .exp-densityBrowse .horizontal-list .channel-tile,.limited-animation .exp-densityBrowse .horizontal-list .video-tile{opacity:1}.exp-densityBrowse .horizontal-list .tile-top{height:7.83em}.exp-densityBrowse .channel-top .badge,.exp-densityBrowse .tile-top .badge{font-size:1em;padding:.2em}.exp-densityBrowse .horizontal-list .tile-bottom,.exp-densityBrowse .horizontal-list .channel-bottom{height:4.25em;margin-top:.83em;padding:0;width:100%}.exp-densityBrowse .shelf .horizontal-list .tile-bottom,.exp-densityBrowse .shelf .horizontal-list .channel-bottom{display:none}.exp-densityBrowse .shelf.selected .horizontal-list .tile-bottom,.exp-densityBrowse .shelf.selected .horizontal-list .channel-bottom{display:block}.exp-densityBrowse .browse-sets .action-tile .description,.exp-densityBrowse .horizontal-list .tile-bottom .title,.exp-densityBrowse .horizontal-list .channel-bottom .title{font-size:1.16em;height:initial;line-height:1.25em;margin:0;max-height:2.5em;text-overflow:ellipsis}.exp-densityBrowse .horizontal-list .channel-bottom .title{white-space:normal}.exp-densityBrowse .horizontal-list .video-tile .details{color:#cdcdcd;font-size:.83em;height:initial;margin:.4em 0}.exp-densityBrowse .horizontal-list .video-tile .tile-top .decoration{display:none;line-height:1em;margin-top:0;-moz-transform:translateY(-100%);-o-transform:translateY(-100%);-webkit-transform:translateY(-100%);transform:translateY(-100%);width:100%}.exp-densityBrowse #search .tile-top .decoration,.exp-densityBrowse #post-play-list .tile-top .decoration,.exp-densityBrowse .shelf.selected .horizontal-list .tile-top .decoration{display:block}.exp-densityBrowse .horizontal-list .video-tile .tile-top .badge{border-radius:0}.exp-densityBrowse .horizontal-list .video-tile .tile-top .duration{background:rgba(0,0,0,.5);font-size:1em;font-weight:bold;padding:.5em}.exp-densityBrowse .horizontal-list .channel-bottom .details{display:none}.exp-densityBrowse .horizontal-list .video-tile .details .views,.exp-densityBrowse .horizontal-list .video-tile .details .age{display:inline-block}.exp-densityBrowse .horizontal-list .video-tile .details .views{padding-right:.5em}.sets-ui .exp-densityBrowse .horizontal-list .channel-tile.selected .channel-bottom>.title,.sets-ui .exp-densityBrowse .horizontal-list .auto-play-tile.selected .tile-bottom>.title,.sets-ui .exp-densityBrowse .horizontal-list .video-tile.selected .tile-bottom>.title{color:#fff}.exp-densityBrowse .video-tile .overlay{height:7.83em;margin-left:60%;margin-top:-7.83em;width:40%}.exp-densityBrowse .video-tile .overlay .count{font-size:1em;line-height:1em;padding-top:1.5em}.exp-densityBrowse .video-tile .overlay .icon{font-size:2em;padding:0}.exp-densityBrowse .horizontal-list .channel-top{height:7.83em;margin:0 auto;width:7.83em}.exp-densityBrowse .horizontal-list .channel-top .video-thumb{border-radius:50%}.exp-densityBrowse .browse-sets .shelf>.title{font-size:1em;margin-bottom:.9em;margin-top:0}.exp-densityBrowse .browse-sets .shelf>.title .main{font-size:1.5em}.exp-densityBrowse .browse-sets .shelf>.title .annotation{font-size:1em}.exp-densityBrowse .browse-sets .shelf>.title{color:#cdcdcd}.engaged.exp-densityBrowse .channel-tile .voice-command,.engaged.exp-densityBrowse .video-tile .voice-command{font-size:1em;line-height:1em;margin-top:-2em}.limited-animation.sets-ui .exp-densityBrowse .video-tile:hover:not(.focused),.limited-animation.sets-ui .exp-densityBrowse .channel-tile:hover:not(.focused),.sets-ui .exp-densityBrowse .carousel .item:hover,.sets-ui .exp-densityBrowse .carousel .auto-play-tile:hover,.sets-ui .exp-densityBrowse .carousel .channel-tile:hover{background-color:inherit!important;opacity:1}.exp-densityBrowse .browse-sets .action-tile{border:none}.exp-densityBrowse .browse-sets .action-tile .content{height:7.83em;margin-bottom:.83em}.exp-densityBrowse .browse-sets .action-tile .title{display:none}.exp-densityBrowse .browse-sets .action-tile .large-action-icon{background-color:#232323;color:#fff;font-size:6em;height:1.3em;line-height:1.3em}.exp-densityBrowse .browse-sets .action-tile .description{opacity:inherit;padding:0}.exp-densityBrowse .auto-play-tile{height:14em;width:14em}.exp-densityBrowse .post-play-countdown{top:7%}.limited-animation .exp-densityBrowse .browse-content .list{margin-left:-7.5em;width:inherit}.limited-animation .exp-densityBrowse .browse-content .shelf>.title{margin-left:7.5em}.limited-animation .exp-densityBrowse .browse-content .list .shelf:nth-child(1){margin-bottom:6.5em}.limited-animation .exp-densityBrowse .browse-content .list .shelf{margin-bottom:-.1em}.limited-animation.sets-ui .exp-densityBrowse .channel-tile:not(.focused),.limited-animation.sets-ui .exp-densityBrowse .video-tile:not(.focused){background-color:inherit}.limited-animation .exp-densityBrowse .channel-tile.focused,.limited-animation .exp-densityBrowse .video-tile.focused{background-color:inherit}.limited-animation .exp-densityBrowse .video-tile{margin-right:.5em}.limited-animation .exp-densityBrowse .video-tile .overlay{height:7.03em;margin-left:8em;margin-top:-7.43em;width:5.6em}.limited-animation .exp-densityBrowse .video-tile .tile-top{background:inherit;height:7.03em;padding:.4em;width:13.2em}.limited-animation .exp-densityBrowse .channel-tile{margin-right:.5em}.limited-animation .exp-densityBrowse .channel-tile .channel-top{height:6.83em;padding:.4em;width:6.83em}.limited-animation .exp-densityBrowse .video-tile.focused .tile-top{background:#fff}.limited-animation .exp-densityBrowse .channel-tile.focused .channel-top{background:#fff;border-radius:50%}.limited-animation .exp-densityBrowse .search .placeholder-tile,.limited-animation .exp-densityBrowse .browse-content .list .placeholder-tile{height:14em;margin-right:.5em;width:14em}#dialog.remote-reset-dialog>.title{font-size:3em;padding-bottom:.5em}#dialog.remote-reset-dialog .buttons{bottom:.5em;position:absolute}#dialog.remote-reset-dialog{left:0;position:absolute;white-space:normal}.remote-reset-dialog #dialog-view{color:#aaa;font-size:1.8em;padding-top:0.5em}.connection-instructions{padding-top:.5em;font-size:2em}.text-dialog .connection-instructions{font-size:1.3em}.browse-sets-state .login-dialog{margin-top:5em}#search .pairing .pairing-content>*,#dialog .pairing .pairing-content>*{display:inline-block}#search .pairing .pairing-content .step2,#dialog .pairing .pairing-content .step2{display:block}#search .dial-upsell .connection-steps .no-dial-connect-step1,#search .manual-connect .connection-steps .with-dial-connect-step1{display:none}.connection-instructions .step1,.connection-instructions .step2,.qr-code .scan,.pairing .connected-header,.remote-reset-dialog .connected-header{color:#aaa;font-size:.7em}.connection-instructions .pair-url,.connection-instructions .pair-code{color:#f1f1f1}.connection-instructions .step2{margin-top:2em}.pairing .qr-code,.pairing .connected-list{display:inline-block;margin-left:1em;vertical-align:top}.pairing .dial-upsell{color:#aaa;display:inline-block;font-size:95%;overflow:hidden;padding-left:2em;padding-top:0.8em;text-align:initial;vertical-align:top;white-space:normal;width:16em}.pairing .cast-icon{background:url(img/cast_disconnected_blue.png) no-repeat center;background-size:contain;display:inline-block;height:1em;margin:.1em .3em;vertical-align:middle;width:1em}.pairing .qr-code .scan{margin-bottom:.5em;white-space:normal;width:5em}.pairing .qr-code img{height:5.1em;width:5.1em}.pairing .icon-settings-pair,.login-dialog .icon-settings-pair{background-image:none;display:inline-block;font:5em 'youtube-icons';height:1em;margin-top:.1em;width:1.4em}.remote-reset-dialog .connected-header,.pairing .connected-header{margin-bottom:.3em}.remote-reset-dialog .devices,.pairing .devices{list-style:none;font-size:1.5em;color:#f1f1f1}.remote-reset-dialog .devices>div,.pairing .devices>div{display:block;height:1.5em;line-height:1.5em;overflow:hidden;padding-left:1.5em;text-overflow:ellipsis;white-space:nowrap;width:11.5em}.remote-reset-dialog .devices .connected:before{background-position:0 100%}.remote-reset-dialog .devices .connected{color:#f1f1f1}#search{bottom:0;color:#f1f1f1;left:0;overflow:hidden;position:absolute;right:0;text-align:center;top:0}.watch-state #search{left:0}#search>.controls{left:8em;margin-right:18em;position:absolute;right:2.5em;text-align:left;top:2.5em}#search-text-box{background-color:#e1e1e1;font-size:1.6em;height:100%;margin:0 auto;overflow:hidden;position:relative}#search-text-box>.icon-search{display:none}#search-input{background:none;border:none;color:#111;height:100%;padding-left:.5em;width:100%}#search-input:disabled{color:#111}#search-query{color:#111;height:100%;overflow:hidden;padding-left:.5em;padding-top:.3em;position:absolute;text-overflow:ellipsis;white-space:pre;width:95%}#search-suggestions{font-size:1.2em;position:relative;display:inline-block;left:0;width:100%}.search-state #spinner{top:26em}#suggest-list{overflow:hidden}#suggest-list>div{border-radius:1px;color:#e1e1e1;display:inline-block;padding:.2em .5em}#search-keyboard{font-size:1em;text-align:left;width:65%}#search-suggestions,#search-keyboard,#letter-suggest{white-space:nowrap}#search-keyboard,#letter-suggest{z-index:1}#keyboard-grid{display:inline-block;font-size:1.6em;margin:0 auto;overflow:hidden;text-align:left}#keyboard-grid,#keyboard-spacebar{color:#a3a3a3}#keyboard-grid .button{border-radius:1px;display:inline-block;margin:.3em .6em .3em 0;padding:0 .1em;text-align:center;text-transform:uppercase;width:1em;vertical-align:top}#keyboard-grid .list{text-align:left;text-shadow:none}#search-keyboard #keyboard-grid .icon-key-delete.button{font-family:'youtube-icons';font-size:.7em;line-height:1.2em;margin-left:2.25em;padding:.25em;width:2.25em}#keyboard-spacebar{border-radius:1px;display:inline-block;font-family:'youtube-icons';font-size:1.44em;margin:.1em 7em 0 2.1em;padding:.1em;text-align:left}#search-keyboard #keyboard-grid .clear-query-tile.button{font-size:.7em;margin-left:2.25em;padding:.25em;text-transform:uppercase;width:auto}#keyboard-grid .icon-key-globe{font-family:'youtube-icons';margin:.25em 0 .25em 1.6em;padding:.1em;width:1.2em}#search-keyboard .button.focused{background-color:#e1e1e1;color:#212121}#letter-suggest{font-size:1.6em;position:fixed;text-align:center;width:1.2em}.letter-suggest-visible #keyboard-grid .list.selected .button.selected:not(.focused){background-color:rgba(153,153,153,.85);color:#000;text-shadow:none}#keyboard-grid .button.numbers-toggle-tile{font-size:.75em;padding:.22em;margin:.25em 0 0 2.1em;width:auto}#search .pairing .icon-settings-pair{display:none}#search .search-message{display:inline-block;margin-left:2em;margin-top:1.5em;vertical-align:top;white-space:normal;width:50%}#search .search-pairing{background-color:rgba(0,0,0,.3);bottom:0;display:inline-block;left:5em;padding:2em 2.5em 4em;position:absolute;text-align:left;text-shadow:-1px 1px 2px black;width:100%}.limited-animation #search .search-pairing{background-color:#000}#search .search-pairing .search-img{background-image:url(img/pair_promo.png);background-size:cover;display:inline-block;height:11em;width:11em}#search .search-pairing .title{font-size:1.9em}#search .search-pairing .connection-instructions{font-size:1.6em}#search .search-pairing .dial-upsell-content{color:#aaa}#search .search-pairing .manual-connect-content .connection-steps{padding:0}#search .search-pairing .manual-connect-content .connection-steps .pair-code,#search .search-pairing .manual-connect-content .connection-steps .pair-url{display:block}#search .search-pairing .manual-connect-content .connection-steps .step2{margin-top:1em}#search .search-pairing .manual-connect-content .connection-steps .label,#search .search-pairing .manual-connect .dial-upsell-content,#search .search-pairing .dial-upsell .manual-connect-content{display:none}#search .pairing .no-dial-connect-step1,#search .pairing .no-dial-connect-step2{display:inline-block}#search .pairing .no-dial-connect-step2{margin-left:2em}#search .pairing .connection-steps{text-align:left}#search .pairing .connected-list,#search .pairing .qr-code-wrapper{display:none}#search.hide-input .search-pairing{margin-top:8em}#letter-suggest div{background-color:rgba(153,153,153,.85);color:rgba(0,0,0,.8);height:1.4em;text-shadow:none}#letter-suggest .focused{color:#f1f1f1}#transliteration-container{display:none}#search-keyboard.transliterable #transliteration-container{display:block}#transliteration .list{font-size:2em;height:1.2em;margin:0 auto;overflow:hidden;padding:.2em 0;text-align:center;width:77%}#transliteration .list>div{display:inline;padding:0 .5em;position:relative}#suggest-list>div.focused,#transliteration .list .focused{background-color:#fefefe;color:#212121}#transliteration .button:hover{background-color:rgba(153,153,153,.4)}#transliteration .button:hover,#search-keyboard .button:hover{cursor:pointer}#search .horizontal-list>.content{text-align:left}.limited-animation.sets-ui #search .horizontal-list>.content{margin-left:-21.8em;width:126em}#search .horizontal-list{left:7.5em;height:inherit;position:absolute;right:0;top:38%;-o-transform:translateY(7.5em);-webkit-transform:translateY(7.5em);transform:translateY(7.5em);-o-transition:opacity .25s -o-transform .25s;-webkit-transition:opacity .25s,-webkit-transform .25s;transition:opacity .25s,transform .25s;width:initial}#search.input-collapsed .horizontal-list{-o-transform:none!important;-webkit-transform:none!important;transform:none!important}#search-keyboard{-o-transition:opacity .25s -o-transform .25s;-webkit-transition:opacity .25s,-webkit-transform .25s;transition:opacity .25s,transform .25s;transform-origin:top}#search-keyboard.hidden{display:block!important;opacity:0;-o-transform:scaleY(.5);-webkit-transform:scaleY(.5);transform:scaleY(.5)}#search #search-text-entry{height:2.4em}#search #search-suggestions,#search #search-text-entry{background-color:rgba(0,0,0,0);padding-top:.25em;-o-transform-origin:top;-webkit-transform-origin:top;transform-origin:top;-o-transition:opacity .25s -o-transform .25s;-webkit-transition:opacity .25s,-webkit-transform .25s;transition:opacity .25s,transform .25s}.limited-animation #search .horizontal-list,.limited-animation #search #search-suggestions,.limited-animation #search #search-text-entry,.limited-animation #search #search-keyboard{-o-transition:none;-webkit-transition:none;transition:none}#search-text-entry{padding-bottom:.4em}#search-text-entry,#text-box-background{height:3em}#keyboard-icon{display:none;font-family:'youtube-icons';font-size:1.2em;padding-bottom:.4em;text-align:center;vertical-align:bottom;width:2em}.input-collapsed #keyboard-icon{display:inline-block}#search-text-entry .suggestions-container{white-space:nowrap;overflow:hidden;height:2.4em}.exp-densityBrowse #search .horizontal-list{font-size:100%;height:14em;top:35%;-moz-transform:translateY(8em);-o-transform:translateY(8em);-webkit-transform:translateY(8em);transform:translateY(8em)}.limited-animation .exp-densityBrowse #search .horizontal-list .list{margin-left:-14em}.exp-densityBrowse #search .horizontal-list .video-tile{height:14em}.exp-densityBrowse #search .horizontal-list .video-tile .details .views,.exp-densityBrowse #search .horizontal-list .video-tile .details .age{display:inline-block}.exp-densityBrowse #search .horizontal-list .video-tile .details .views{padding-right:.5em}.limited-animation.sets-ui .exp-densityBrowse #search .horizontal-list>.content{margin-left:0;width:inherit}#player{height:100%;width:100%}.watch-state #watch{display:block}.wiiu #watch{background-color:#000;height:100%}#player-facade{height:100%;position:absolute;width:100%}#player-video{height:100%}#watch,.dialog-focused .standard-caption-window,#caption-window-99,.countdowntimer,.ytp-cued-icon,.ytp-fallback,.html5-context-menu,.html5-dialog-holder,.html5-endscreen,.html5-info-bar,.html5-modal-panel,.html5-player-chrome,.html5-show-video-info-template,.html5-storyboard,.html5-text-button,.html5-video-player .hid,.html5-ypc-module,.player-actions-container,.video-ad-status-bar,.video-annotations,.html5-watermark,.video-fallback-content,.video-ads,.title-card.hidden{display:none}.html5-video-player{overflow:visible}.html5-video-info-panel{background-color:rgba(0,0,0,.7);color:#f1f1f1;display:none;margin:20%;position:absolute;top:0;z-index:1}.html5-video-info-panel-close{display:none}.html5-video-info-panel-content>div>div{display:inline-block;font-weight:bold;padding:0 .5em;text-align:right;width:10em}.ad-video{width:100%;height:100%}.ad-showing .video-ads{display:block;overflow:hidden}.ad-interrupting.tag-pool-enabled .html5-main-video{position:absolute;left:-1px;top:-1px;overflow:hidden;width:1px!important;height:1px!important}.html5-video-player .video-stream{position:absolute;top:0;left:0;display:block}.opera .video-stream{height:720px;width:1280px}.advertisement-info,.skip-ad-button{position:absolute;top:9.5em}.advertisement-info{left:12.5%;text-align:left;width:30%;overflow:hidden}.advertisement-info-top{height:3em}.advertisement-avatar{width:3em;height:3em;display:inline-block;margin-right:.4em;background-position:right center;background-repeat:no-repeat;background-size:contain}.advertisement-info-details{display:inline-block;vertical-align:top;width:79%}.advertisement-title,.advertisement-advertiser,.third-party{color:#fff;text-shadow:2px 1px #000;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.third-party{position:absolute;bottom:0}.advertisement-title{font-size:1.4em;line-height:1em;height:1.1em}.advertisement-advertiser{font-size:1.1em;line-height:1.3em;height:1.4em}.advertisement-info .ad-badge{background-color:#e6bc27;padding:1px 5px;text-shadow:none;border-radius:.15em;font-size:.9em;text-transform:capitalize}.skip-ad-button{right:12.5%;border-radius:.15em;background-color:rgba(0,0,0,.4);padding:.6em}.canskip.mdx-skip.skip-ad-button{height:4.0em;width:18em}.canskip.mdx-skip .skip-button-text{font-size:1.1em;height:3em;left:2.0em;line-height:1.5em;position:absolute;top:.7em;width:75%}#transport-controls.ad-active .player-controls #button-list div.skip-ad-button .label,.skip-ad-button .label{font-size:1.1em;padding:0 1.4em;height:2.5em;line-height:2.5em;border-radius:.12em;cursor:pointer;background-color:rgba(0,0,0,0);color:#e1e1e1}.skip-ad-button.canskip.mdx-skip .label{height:3.7em}#transport-controls.ad-active .player-controls #button-list div.skip-ad-button.canskip:hover .label,.skip-ad-button.canskip:hover .label{background-color:#fff;color:#212121;border-radius:.12em}#transport-controls.ad-active .player-controls #button-list div.skip-ad-button.canskip.focused .label,.skip-ad-button.canskip.focused .label{background-color:#e1e1e1;color:#212121;border-radius:.12em}.skip-ad-button .skip-symbol{display:none;font-family:'youtube-icons'}.skip-ad-button.canskip .skip-symbol.icon-player-next{display:inline;font-size:1.3em;margin-left:.5em;vertical-align:middle}.exp-newMdxSkipButtonCast .canskip.mdx-skip.skip-ad-button .skip-symbol.icon-cast_on{display:inline;font-size:2.5em;position:absolute;right:.7em;text-align:right;top:.5em;width:25%}.exp-newMdxSkipButtonPair .canskip.mdx-skip.skip-ad-button .skip-symbol.icon-settings-pair{display:inline;font-size:4em;position:absolute;right:.4em;text-align:right;top:.3em;width:25%}.canskip.mdx-skip.skip-ad-button .skip-symbol.icon-player-next{display:none}#player-controls{text-align:center}#bottom-half{bottom:0;height:50%;position:absolute;width:100%}#transport-controls{background:-o-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,1));background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,1));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,1));bottom:0;height:100%;position:absolute;-o-transition:-o-transform .25s,opacity .25s;-webkit-transition:-webkit-transform .25s,opacity .25s;transition:transform .25s,opacity .25s;width:100%}#transport-controls.hidden{display:block!important;opacity:0}.limited-animation #transport-controls.hidden{display:none!important}#transport-controls,#transport-controls.focused{display:block}.player-controls-widget{border:0;margin-top:8.4em}.fresh-transport-controls.seeking-forward .seeking-icon.icon-player-rew:before{content:"\00e62c"}.seeking-icon{bottom:3em;color:#fff;display:none;position:absolute;left:0;margin:0 auto;right:0}.seeking-icon span{display:none}.fresh-watch.watch-seeking .seeking-icon{display:block}.fresh-watch .title-card{background:-webkit-linear-gradient(top,rgba(0,0,0,.75),transparent);background:-o-linear-gradient(top,rgba(0,0,0,.75),transparent);background:linear-gradient(to bottom,rgba(0,0,0,.75),transparent);height:35.9%}#transport-controls.fresh-transport-controls{background:-webkit-linear-gradient(bottom,#000,transparent);background:-o-linear-gradient(bottom,#000,transparent);background:linear-gradient(to top,#000,transparent)}.fresh-watch .player-video-title{color:rgba(255,255,255,1);font-size:1.936em}.fresh-watch .player-meta .player-video-details{color:rgba(255,255,255,0.7);font-size:1.455em}.fresh-watch .pivot-shelf-list{margin-top:14.5em;padding-left:3.871em}#fresh-rows-container{border:0;color:#fff;margin-top:7.7em}.fresh-transport-controls .storyboards{position:absolute}.fresh-transport-controls .more-row,.fresh-transport-controls .main-row{margin-left:5%;width:95%}.fresh-transport-controls .button span,.fresh-transport-controls .toggle-button span{display:none;font-family:'roboto-regular';color:rgba(255,255,255,1)}.lang-case-sensitive .fresh-transport-controls span:first-letter{text-transform:uppercase}.fresh-transport-controls .button.disabled:hover,.fresh-transport-controls .toggle-button.disabled:hover{background-color:transparent}.fresh-transport-controls .button.disabled,.fresh-transport-controls .toggle-button.disabled{opacity:.45}.fresh-transport-controls .button.focused,.fresh-transport-controls .toggle-button.focused,.fresh-transport-controls .button:hover,.fresh-transport-controls .toggle-button:hover{background-color:rgba(255,255,255,.5);color:#fff}.fresh-transport-controls .button,.fresh-transport-controls .toggle-button,.seeking-icon{border-radius:4px;font-family:'youtube-icons';font-size:1.4em;height:1em;padding:.55em;speak:none;text-align:center;width:1em}.fresh-transport-controls .button,.fresh-transport-controls .toggle-button{color:rgba(255,255,255,.7);cursor:pointer;display:inline-block;position:relative}.fresh-transport-controls #transport-more-button:before{display:inline-block;left:19%;position:absolute;top:-9%}.fresh-transport-controls #transport-more-button{font-size:2em;height:.7em;margin-right:1.452em;padding:.385em;width:.7em}.fresh-transport-controls #transport-more-button span{color:#fff;display:inline-block;font-size:.485em;left:4.5em;position:absolute;text-align:left;top:1em;width:15em}.fresh-transport-controls #transport-more-button.top-row-active span{display:none}.fresh-transport-controls #transport-more-options-list{display:inline-block}.fresh-transport-controls .progress-bar{display:inline-block;height:3em;left:0;padding:0;position:relative;top:0;width:76.55%}.fresh-transport-controls.live-playback #play-pause-button{margin-right:1em}.fresh-transport-controls.live-playback .progress-bar{width:77.55%}.fresh-transport-controls.live-playback .live-indicator{display:inline-block;left:0;margin-left:1em;position:relative;top:0}.fresh-transport-controls #player-time-elapsed,.fresh-transport-controls .player-time-total{color:rgba(255,255,255,1);display:inline-block;font-size:1.3em;position:relative;text-align:center;top:0;width:8%}.fresh-transport-controls .more-row{margin-bottom:5px}.fresh-transport-controls .more-row .button,.fresh-transport-controls .more-row .toggle-button{margin-right:2.075em;vertical-align:top}.fresh-transport-controls .icon-like.toggle-selected,.fresh-transport-controls .icon-dislike.toggle-selected,.fresh-transport-controls .icon-player-closedcaptions.toggle-selected{color:#2793e6}.fresh-transport-controls .icon-logo-lozenge.toggle-selected{color:#f00}.fresh-transport-controls .more-row .button span,.fresh-transport-controls .more-row .toggle-button span{font-size:.692em;left:-3.45em;position:relative;top:-4.4em;width:8.3em}.fresh-transport-controls .more-row .button.focused span,.fresh-transport-controls .more-row .toggle-button.focused span,.fresh-transport-controls .more-row .button:hover span,.fresh-transport-controls .more-row .toggle-button:hover span{display:inline-block}.fresh-transport-controls .progress-bar .progress-bar-line div{height:.242em}.fresh-transport-controls .progress-bar .progress-bar-line .progress-bar-background{background-color:rgba(255,255,255,0.45)}.fresh-transport-controls .progress-bar .progress-bar-line .progress-bar-loaded{background-color:#fff}.fresh-transport-controls .progress-bar .progress-bar-line .progress-bar-played{background-color:#df2323}.fresh-transport-controls .progress-bar.ad-active .progress-bar-played{background-color:#e7bd00}.ypc-playback .fresh-transport-controls .progress-bar-line .progress-bar-played{background-color:#2793e6}.fresh-watch .ad-point-separator,.fresh-transport-controls .progress-bar .progress-bar-disc,.fresh-transport-controls.ad-active #player-time-elapsed,.fresh-transport-controls.ad-active .player-time-total{display:none}.fresh-transport-controls.ad-active .progress-bar{padding-left:1em;width:88%}.fresh-transport-controls.ad-active .more-row,.fresh-watch.watch-seeking .more-row{visibility:hidden}.fresh-watch .skip-ad-button,.fresh-watch .advertisement-info{top:6.7em}.fresh-watch .advertisement-info{left:5%}.fresh-watch .advertisement-info .advertisement-info-top{height:3.065em;position:relative}.fresh-watch .skip-ad-button{border-radius:4px;background-color:rgba(0,0,0,.5);padding:0;right:6%;z-index:1}.fresh-watch .skip-ad-button .label{color:#fff;font-size:1.13em;height:2.57em;line-height:2.57em;padding:0 1.3em}.fresh-watch .skip-ad-button .skip-symbol{font-size:1.1em}.fresh-watch .skip-ad-button.canskip:hover,.fresh-watch .skip-ad-button.canskip.focused{background-color:rgba(255,255,255,.5)}.fresh-watch .skip-ad-button.canskip:hover .label,.fresh-watch .skip-ad-button.canskip.focused .label{background:none;color:#fff}.fresh-watch .advertisement-info{color:#fff}.fresh-watch .advertisement-info .advertisement-advertiser{font-size:100%;height:1.4em;line-height:1.3em}.fresh-watch .advertisement-info .advertisement-advertiser>span{vertical-align:bottom}.fresh-watch .advertisement-info .advertisement-advertiser,.fresh-watch .advertisement-info .advertisement-title,.fresh-watch .advertisement-info .third-party{overflow:hidden;text-shadow:none;text-overflow:ellipsis;white-space:nowrap}.fresh-watch .advertisement-info .third-party{bottom:0;position:absolute;vertical-align:top;width:79%}.fresh-watch .advertisement-info .third-party>span{vertical-align:middle}.fresh-watch .advertisement-info .advertisement-title{font-size:1.35em;font-weight:bold;line-height:1em;height:1.1em;padding-bottom:1%;text-shadow:none}.fresh-watch .advertisement-info .ad-badge{background-color:#e7bd00;border-radius:.15em;font-size:.85em;font-weight:bold;padding:1px 7px;text-shadow:none;text-transform:capitalize}.fresh-watch .advertisement-info .remaining-duration,.fresh-watch .advertisement-info .ad-by{font-size:1.13em}.fresh-watch .advertisement-info .remaining-duration{padding:0 2%}.fresh-watch .advertisement-info .advertisement-avatar{background-repeat:no-repeat;background-size:contain;border-radius:50%;display:inline-block;height:3.065em;margin-right:1.4em;width:3.065em}.title-card{background:-o-linear-gradient(top,rgba(0,0,0,.9),rgba(0,0,0,.8),transparent);background:-webkit-linear-gradient(top,rgba(0,0,0,.9),rgba(0,0,0,.8),transparent);background:linear-gradient(to bottom,rgba(0,0,0,.9),rgba(0,0,0,.8),transparent);display:block;height:25%;position:absolute;top:0;-o-transition:-o-transform .25s,opacity .25s;-webkit-transition:-webkit-transform .25s,opacity .25s;transition:transform .25s,opacity .25s;width:100%}.ypc-playback .title-card{height:30%}.title-card.hidden{display:block!important;opacity:0}.limited-animation .title-card.hidden{display:none!important}.title-card .badges span{border:1px solid #ddd;border-radius:2px;display:inline-block;font-size:.9em;margin-left:1em;padding:0 .5em 0;text-transform:uppercase;vertical-align:middle}.title-card .badges span.live-badge{color:#fff;border:0;background-color:rgba(230,33,23,.8);margin-left:0}.selected-title .views{margin-top:-.6em}.player-meta{color:#f1f1f1;margin:2.6em 0 0 3.5em;white-space:nowrap;width:90%}.player-meta .user-details{position:absolute;right:5%}.player-meta .user-details>div{display:inline-block;vertical-align:top}.player-meta .user-details .avatar{background-size:cover;height:4em;width:4em}.player-meta .user-details .message{font-size:80%;margin:.2em 1em 0 1.1em;max-width:50%;overflow:hidden;text-overflow:ellipsis}.player-meta .player-video-text{display:inline-block;padding-left:1.5em;width:90%}.player-meta .player-video-details{font-size:1.5em;white-space:initial}.player-meta .player-video-details>div{margin:.2em 1em 0 0;vertical-align:top}.player-meta .player-video-details .username{max-width:45%;overflow:hidden;text-overflow:ellipsis}.player-meta .player-video-details .set-context{max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-meta .player-video-details .set-context,.player-meta .player-video-details .set-context-position,.player-meta .player-video-details .uploaded-date,.player-meta .player-video-details .view-count,.player-meta .player-video-details .badges,.player-meta .player-video-details .username{display:inline-block}.player-video-avatar{background-size:contain;border-radius:50%;display:inline-block;height:5.5em;vertical-align:top;width:5.5em}.player-video-title{font-size:2.4em;margin:-.1em 0 0 0;overflow:hidden;text-overflow:ellipsis}.quality-status{display:none;padding-top:.2em}.title-tray-inflated .quality-status{display:inline-block}.quality-status-hd-badge{background:#f1f1f1;border-radius:2px;color:#414141;font-size:.6em;font-weight:bold;padding:.125em .5em}.ypc-preview{display:none}.ypc-playback .ypc-preview{display:block}.player-controls #button-list .focused,.player-controls #button-list div:hover{-webkit-border-radius:.05em;color:#000}.player-controls #button-list .focused{background-color:#fff}.player-controls #button-list div:hover{background-color:#9d9495}.player-controls #button-list .button,.player-controls #button-list .toggle-button{display:inline-block;font-size:1.4em;height:1.3em;margin:1em 1em;padding-bottom:.4em;padding-top:.8em;top:0;width:2.3em}.player-controls #button-list .button span,.player-controls #button-list .toggle-button span{font-family:'roboto-regular';font-size:.7em;left:-10%;margin:.5em 0 0;width:120%;height:120%}.player-controls #button-list .button.spacer{visibility:hidden;cursor:auto}#transport-controls.focused .player-controls #button-list div{color:#fff}#transport-controls.focused .player-controls #button-list .focused{color:#222}.player-controls #button-list div{color:#aaa;cursor:pointer;vertical-align:middle}#transport-controls.ad-active .player-controls #button-list div.disabled{visibility:hidden}#transport-controls.ad-active .player-controls #button-list div.skip-ad-button.disabled{visibility:visible;opacity:1}.player-controls #button-list div.disabled:hover{background-color:transparent;color:#fff}.player-controls #button-list div.focused{opacity:1}.player-controls #button-list div.disabled{opacity:.2}.player-controls #button-list .icon-player-closedcaptions.toggle-selected,.player-controls #button-list .icon-like.toggle-selected,.player-controls #button-list .icon-dislike.toggle-selected{color:#2793e6!important}.player-controls #button-list .icon-logo-lozenge.toggle-selected{color:#f00!important}#transport-controls .player-controls #button-list div.icon-player-more,#transport-controls .player-controls #button-list div.icon-player-less{color:#858585}.player-controls .toggle-button span,.player-controls .button span,.player-controls .toggle-button.disabled span,.player-controls .button.disabled span{display:none;margin-top:1em;color:#fff;font-size:.75em;padding:0;position:relative;text-align:center;top:1em;width:100%}.lang-case-sensitive .player-controls .button span:first-letter,.lang-case-sensitive .player-controls .toggle-button span:first-letter{text-transform:uppercase}#transport-controls.focused,.player-controls .toggle-button.focused span,.player-controls div:hover.toggle-button span,.player-controls .button.focused span,.player-controls div:hover.button span{display:block}.player-seekbar{position:relative}.progress-bar{height:4em;left:11%;position:absolute;top:-9em;width:75%;padding:0 1.5%}.progress-bar .progress-bar-playhead,.progress-bar .progress-bar-line{top:2.5em}.progress-bar .progress-bar-line{position:relative;width:100%}.progress-bar .progress-bar-line div{height:2px;position:absolute}.progress-bar .progress-bar-playhead{height:2px;position:relative;width:100%}.progress-bar .progress-bar-line .progress-bar-background{width:100%;background-color:#5b5b5b}.progress-bar .progress-bar-line .progress-bar-played{background-color:#e32c29}.progress-bar .progress-bar-line .progress-bar-loaded{background-color:#999}.ypc-playback .progress-bar-line .progress-bar-played{background-color:#2793e6}.progress-bar .progress-bar-disc{background-color:#ccc;border-radius:50%;height:.6em;margin:-.25em 0 0 -.25em;position:absolute;width:.6em}.progress-bar .cue-range-markers{height:100%;position:absolute;width:100%}.progress-bar-disc{pointer-events:none}.ad-active .progress-bar .cue-range-markers{visibility:hidden}.progress-bar .cue-range-markers .cue-range-marker{background-color:rgba(255,255,255,0);height:2px;margin:0 0 0 -.1em;position:absolute;width:.2em}.progress-bar .cue-range-markers .ad-marker{background-color:#e6bc27}.progress-bar.ad-active .progress-bar-played{background-color:#d6cb23}#player-time-elapsed,.player-time-total,.live-indicator{color:rgba(255,255,255,.75);font-size:1.2em;position:absolute;top:-6em;width:12%}.limited-graphics #player-time-elapsed,.limited-graphics .player-time-total{color:#fff}#player-time-elapsed{left:0;text-align:right}.player-time-total,.live-indicator{right:0;text-align:left}#transport-controls.ad-active #player-time-elapsed,#transport-controls.ad-active .player-time-total{display:none}.live-indicator{display:none;font-size:1.3em;position:absolute;top:-5.6em;width:11.7%}.live-playback .live-indicator{display:block}.live-playback .player-time-total,.live-playback .elapsed-time,.fresh-transport-controls.live-playback .player-time-total,.fresh-transport-controls.live-playback #player-time-elapsed{display:none}.live-playback .progress-bar-disc{background-color:#e62117}#watch .loading-indicator{top:30%}#transport-spacer:hover{background:none}.html5-video-controls{position:absolute;width:100%;height:0;bottom:2em;-moz-transition:all .6s ease;-ms-transition:all .6s ease;-o-transition:all .6s ease;-webkit-transition:all .6s ease}.ytp-player-content{position:absolute;bottom:0;height:0;left:0;right:0}.html5-video-content{position:absolute}.caption-window{position:absolute;pointer-events:none}.standard-caption-window{position:absolute;white-space:normal;width:80%}.caption-window-transform{display:inline-block;line-height:1.32em}.html5-video-player .captions-text{position:relative}.html5-video-player .caption-row{padding-bottom:5px;padding-top:5px}.anchor-point-1{-moz-transform:translate(-50%,0);-ms-transform:translate(-50%,0);-o-transform:translate(-50%,0);-webkit-transform:translate(-50%,0);transform:translate(-50%,0)}.anchor-point-2{-moz-transform:translate(-100%,0);-ms-transform:translate(-100%,0);-o-transform:translate(-100%,0);-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}.anchor-point-3{-moz-transform:translate(0,-50%);-ms-transform:translate(0,-50%);-o-transform:translate(0,-50%);-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.anchor-point-4{-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.anchor-point-5{-moz-transform:translate(-100%,-50%);-ms-transform:translate(-100%,-50%);-o-transform:translate(-100%,-50%);-webkit-transform:translate(-100%,-50%);transform:translate(-100%,-50%)}.anchor-point-6{-moz-transform:translate(0,-100%);-ms-transform:translate(0,-100%);-o-transform:translate(0,-100%);-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}.anchor-point-7{-moz-transform:translate(-50%,-100%);-ms-transform:translate(-50%,-100%);-o-transform:translate(-50%,-100%);-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.anchor-point-8{-moz-transform:translate(-100%,-100%);-ms-transform:translate(-100%,-100%);-o-transform:translate(-100%,-100%);-webkit-transform:translate(-100%,-100%);transform:translate(-100%,-100%)}.anchor-point-0,.anchor-point-1,.anchor-point-2{padding-top:3em}.watch.transport-showing .anchor-point-0,.watch.transport-showing .anchor-point-1,.watch.transport-showing .anchor-point-2{padding-top:9em}.anchor-point-0,.anchor-point-3,.anchor-point-6{padding-left:3em}.anchor-point-2,.anchor-point-5,.anchor-point-8{padding-right:3em}.anchor-point-6,.anchor-point-7,.anchor-point-8,.eureka .watch.transport-showing .anchor-point-6,.eureka .watch.transport-showing .anchor-point-7,.eureka .watch.transport-showing .anchor-point-8{padding-bottom:3em}.watch.transport-showing .anchor-point-6,.watch.transport-showing .anchor-point-7,.watch.transport-showing .anchor-point-8{padding-bottom:15em}.watch.pivot-focused .anchor-point-6{padding-bottom:17.5em}.watch.pivot-focused .anchor-point-7,.watch.pivot-focused .anchor-point-8{padding-bottom:16em}.watch .ytp-fresca-module,.search-focused .watch.message .ytp-fresca-module{display:none}.watch.message .ytp-fresca-module{background-color:rgba(0,0,0,.5);color:#fff;display:block;font-size:2em;padding-left:1.5em;position:absolute;top:30%;width:100%}.watch.message .ytp-fresca-show-countdown{padding-bottom:1.3em}.ytp-fresca-countdown{font-size:1.4em}.pivot-shelf-list{margin-top:12.5em;padding-left:7em;-o-transition:-o-transform .25s,opacity .25s;-webkit-transition:-webkit-transform .25s,opacity .25s;transition:transform .25s,opacity .25s;-webkit-transform:translateZ(0);-o-transform:translateY(10em);-webkit-transform:translateY(10em);transform:translateY(10em)}.pivot-shelf-list.hidden{display:block!important;opacity:0}.limited-animation .pivot-shelf-list.hidden,.forced-limited-animation.pivot-shelf-list.hidden{display:none!important}.pivot-shelf-list.animate-in{-o-transform:translateY(0);-webkit-transform:translateY(0);transform:translateY(0)}.pivot-shelf-list>.carousel{opacity:.5;-o-transition:opacity .25s;-webkit-transition:opacity .25s;transition:opacity .25s}.limited-memory .pivot-shelf-list{opacity:1}.pivot-shelf-list .title-container{color:#fff}.pivot-shelf .tile-title .author,.pivot-shelf .tile-title .view{color:#e1e1e1}.pivot-shelf-list.focused,.post-play .pivot-shelf-list{background:-o-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,1));background:-webkit-linear-gradient(rgba(0,0,0,0),rgba(0,0,0,1));background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,1));height:17.5em;margin-top:2.5em;padding-top:10em;-o-transform:translateY(-7.5em);-webkit-transform:translateY(-7.5em);transform:translateY(-7.5em)}.post-play .pivot-shelf{opacity:.5}.post-play .pivot-shelf-list.focused .pivot-shelf,.pivot-shelf-list.focused>.carousel{opacity:1}.pivot-shelf-list .focused.list{height:0}.pivot-shelf-list .no-content-message{display:none}.pivot-shelf-list.forced-limited-animation,.limited-animation .pivot-shelf-list,.limited-animation .pivot-shelf-list>.carousel{-o-transition:none;-webkit-transition:none;transition:none}.pivot-shelf-list.forced-limited-animation .placeholder-tile,.limited-animation .pivot-shelf-list .placeholder-tile{height:7.83em;width:14em}#pivot-post-play .pivot-video-tile,#pivot-post-play .placeholder-tile{height:10.625em;width:18.5em}#pivot-post-play .tile-top{height:10.625em}.limited-animation #pivot-post-play .tile-top,#pivot-post-play.forced-limited-animation .tile-top{height:9.825em;width:17.7em}.pivot-video-tile,.pivot-channel-tile{height:7.83em;width:14em}.forced-limited-animation .pivot-video-tile,.forced-limited-animation .pivot-auto-play-tile,.forced-limited-animation .pivot-channel-tile,.pivot-shelf-list.forced-limited-animation .placeholder-tile,#pivot-post-play.forced-limited-animation .placeholder-tile,.limited-animation .pivot-video-tile,.limited-animation .pivot-auto-play-tile,.limited-animation .pivot-channel-tile,.limited-animation #pivot-post-play .placeholder-tile,.limited-animation .pivot-shelf-list .placeholder-tile{background:none;display:inline-block;margin-right:.5em;position:relative;vertical-align:bottom}.forced-limited-animation .pivot-channel-tile,.limited-animation .pivot-channel-tile{border-radius:100%;width:10.625em}.forced-limited-animation .pivot-video-tile.focused,.forced-limited-animation .pivot-auto-play-tile.focused .pivot-video-tile,.limited-animation .pivot-video-tile.focused,.limited-animation .pivot-auto-play-tile.focused .pivot-video-tile{background-color:#fff}.pivot-video-tile .tile-top{height:7.83em}.forced-limited-animation .pivot-video-tile .tile-top,.limited-animation .pivot-video-tile .tile-top{background-color:inherit;height:7.03em;padding:.4em;width:13.2em}.forced-limited-animation .pivot-video-tile.focused .tile-top,.limited-animation .pivot-video-tile.focused .tile-top{background-color:#fff}.pivot-video-tile .tile-overlay{background-color:rgba(0,0,0,.5);color:#fff;display:none;height:100%;margin-top:-7.83em;text-align:center;width:100%}.forced-limited-animation .pivot-video-tile .tile-overlay,.limited-animation .pivot-video-tile .tile-overlay{margin-top:-7.03em}#pivot-post-play .pivot-video-tile .tile-overlay{margin-top:-10.625em}.limited-animation #pivot-post-play .pivot-video-tile .tile-overlay,#pivot-post-play.forced-limited-animation .pivot-video-tile .tile-overlay{margin-top:-9.875em}.pivot-video-tile.has-overlay .tile-overlay{display:block}#pivot-post-play .pivot-video-tile.has-overlay .tile-overlay{opacity:0}#pivot-post-play.focused .pivot-video-tile.has-overlay .tile-overlay{opacity:1}.post-play .pivot-shelf-list .pivot-video-tile.has-overlay .label{display:none}.post-play .pivot-shelf-list .pivot-video-tile.has-overlay .icon-player-play{font-size:4em}.post-play .pivot-shelf-list .pivot-video-tile.has-overlay .icon-player-play:before{content:"\00e638"}.pivot-video-tile .tile-overlay .icon{font-family:'youtube-icons';font-size:3em;padding-top:.5em}.pivot-video-tile .tile-overlay .label{font-size:1.2em}#pivot-post-play .pivot-video-tile .tile-overlay{color:#e1e1e1}#pivot-post-play .pivot-video-tile .tile-overlay .icon{font-size:4.5em;padding-bottom:.15em;padding-top:.4em}#pivot-post-play .pivot-video-tile .tile-overlay .label,#pivot-post-play .pivot-video-tile .tile-overlay .icon{opacity:0;-o-transition:opacity .25s;-webkit-transition:opacity .25s;transition:opacity .25s}#pivot-post-play.focused .pivot-video-tile .tile-overlay .label,#pivot-post-play.focused .pivot-video-tile .tile-overlay .icon{opacity:1}.limited-animation #pivot-post-play .pivot-video-tile .tile-overlay .label,.limited-animation #pivot-post-play .pivot-video-tile .tile-overlay .icon,#pivot-post-play.forced-limited-animation .pivot-video-tile .tile-overlay .label,#pivot-post-play.forced-limited-animation .pivot-video-tile .tile-overlay .icon{-o-transition:none;-webkit-transition:none;transition:none}.pivot-video-tile .video-thumb{background-position:center;background-repeat:no-repeat;background-size:100%;height:100%;width:100%}.pivot-video-tile .decoration{margin-top:-2.1em;text-align:right}.pivot-video-tile .duration{background-color:rgba(0,0,0,.7);font-size:1em;font-weight:bold;padding:.5em}.pivot-auto-play-tile{background:none;height:10.625em;overflow:visible;width:18.5em}.forced-limited-animation .pivot-auto-play-tile,.limited-animation .pivot-auto-play-tile{height:10.625em;width:18.5em}.pivot-auto-play-tile .post-play-countdown{display:block;font-size:1.8em;margin-left:10.8em;opacity:0;pointer-events:none;position:absolute;text-align:left;text-shadow:none;top:0;width:17.5em}.pivot-auto-play-tile.countdown-active .post-play-countdown{opacity:1;pointer-events:inherit}.pivot-auto-play-tile .details,.pivot-auto-play-tile .title{color:#fff;opacity:0;pointer-events:none}.pivot-auto-play-tile.focused .details,.pivot-auto-play-tile.focused .title{opacity:1;pointer-events:inherit}.pivot-auto-play-tile .title{font-size:1.4em;margin-left:14em;max-height:2.5em;overflow:hidden;position:absolute;top:2.2em;width:20em}.pivot-auto-play-tile .details{font-size:1.1em;margin-left:17.8em;position:absolute;top:6em;width:37em}.pivot-auto-play-tile .details,.pivot-auto-play-tile .title,.pivot-auto-play-tile .post-play-countdown{-o-transition:opacity .25s;-webkit-transition:opacity .25s;transition:opacity .25s}.limited-animation .pivot-auto-play-tile .details,.limited-animation .pivot-auto-play-tile .title,.limited-animation .pivot-auto-play-tile .post-play-countdown{-o-transition:opacity none;-webkit-transition:none;transition:none}#pivot-post-play .pivot-auto-play-tile .pivot-video-tile{padding-left:0;padding-top:0}#pivot-post-play #post-play-list .no-content-message{display:none}.forced-limited-animation .pivot-horizontal-list,.limited-animation .pivot-horizontal-list{margin-left:-15em}.pivot-horizontal-list.focused .pivot-sliding-highlighter,.post-play #post-play-list.focused .pivot-sliding-highlighter{display:block}.pivot-horizontal-list .pivot-sliding-highlighter,.post-play .pivot-sliding-highlighter{background:transparent;border:.5em #fff solid;box-shadow:.083em .083em .75em .167em #000 inset;height:7.5em;margin-left:-.4em;margin-top:-.4em;pointer-events:none;width:13.8em}.pivot-shelf{position:absolute;width:0}.forced-limited-animation .pivot-shelf,.limited-animation .pivot-shelf{opacity:.5;position:relative}.forced-limited-animation .pivot-shelf.focused,.limited-animation .pivot-shelf.focused{opacity:1}.limited-memory.limited-animation .pivot-shelf{opacity:1}.pivot-shelf .title-container{margin-bottom:1em;visibility:hidden;white-space:nowrap}.pivot-shelf .title-container .icon{font-family:'youtube-icons';vertical-align:middle}.pivot-shelf .tile-title span{display:inline-block;overflow:hidden;text-overflow:ellipsis}.pivot-shelf.focused .title-container{visibility:visible}.pivot-shelf .tile-title,.pivot-shelf .shelf-title{margin-bottom:.3em}.pivot-shelf .tile-title{height:1.7em}.pivot-shelf .tile-title .title{font-size:1.3em;max-width:30em}.pivot-shelf .tile-title .author,.pivot-shelf .tile-title .view{margin-left:.3em;max-width:20em}.pivot-shelf .tile-title .author,.pivot-sliding-highlighter .select{display:none}.pivot-shelf.has-author .tile-title .author{display:inline-block}.forced-limited-animation .pivot-horizontal-list .list,.limited-animation .pivot-horizontal-list .list{width:98em}.forced-limited-animation .postplay-horizontal-list .list,.limited-animation .postplay-horizontal-list .list{margin-left:-13.4em;width:98em}.forced-limited-animation .pivot-channel-tile.focused .tile-top,.limited-animation .pivot-channel-tile.focused .tile-top{background-color:#fff}.forced-limited-animation .pivot-channel-tile .tile-top,.limited-animation .pivot-channel-tile .tile-top{height:6.83em;padding:.4em;width:6.83em}.pivot-channel-tile .tile-top{background:none;border-radius:50%;height:7.83em;margin:0 auto;overflow:hidden;width:7.83em}.pivot-channel-tile .tile-top .video-thumb{background-color:rgba(0,0,0,0)}.pivot-channel-tile .video-thumb{border-radius:50%}.pivot-shelf .pivot-horizontal-list.channel-selected .pivot-sliding-highlighter{border-radius:50%;height:7.5em;margin-left:-.3em;margin-top:-.3em;-moz-transform:translateX(3.2em);-o-transform:translateX(3.2em);-webkit-transform:translateX(3.2em);transform:translateX(3.2em);width:7.5em}.pivot-shelf.channel-selected .shelf-title{visibility:hidden}.pivot-footer{height:9em}.pivot-button-list{padding-top:4em}.pivot-button-list .icon-button{display:inline-block;padding:.5em 1em}.pivot-button-list .icon-button .icon{font-family:'youtube-icons';margin-right:.3em}.pivot-footer.focused .pivot-button-list .icon-button.selected{background-color:#fff}.pivot-button-list .icon-button span{color:#fff;font-size:1.5em}.pivot-footer.focused .pivot-button-list .icon-button.selected span{color:#000}#pivot-post-play{padding-left:6em;padding-top:10em}.limited-animation #pivot-post-play,#pivot-post-play.forced-limited-animation{padding-left:0}#pivot-post-play #post-play-list{font-size:1.1em;margin-left:.1em}.forced-limited-animation .pivot-auto-play-tile,.limited-animation .pivot-auto-play-tile{padding-left:0;vertical-align:bottom}#pivot-post-play.forced-limited-animation .pivot-video-tile,.limited-animation #pivot-post-play .pivot-video-tile{vertical-align:bottom}.forced-limited-animation .pivot-auto-play-tile .pivot-video-tile,.limited-animation .pivot-auto-play-tile .pivot-video-tile{display:block;position:absolute}#pivot-post-play .pivot-sliding-highlighter{border-width:.5em;height:9.9em;margin-top:0;width:18.4em}.limited-animation.sets-ui .exp-densityBrowse .auto-play-tile:not(.focused) .video-tile,.limited-animation .exp-densityBrowse .auto-play-tile.focused .video-tile,.limited-animation .exp-densityBrowse .auto-play-tile{background-color:inherit}.limited-animation .exp-densityBrowse .auto-play-tile.focused .tile-top{background:#fff}.limited-animation .exp-densityBrowse .auto-play-tile .post-play-countdown{top:-2.67em}.loki-video-source{color:#fff;font-size:1.5em;left:5.0em;position:absolute;top:2.6em}.loki-title-card{background:-o-linear-gradient(bottom,rgba(0,0,0,.9) 0%,rgba(0,0,0,.6) 80%,transparent 100%);background:-webkit-linear-gradient(bottom,rgba(0,0,0,.9) 0%,rgba(0,0,0,.6) 80%,transparent 100%);background:linear-gradient(to top,rgba(0,0,0,.9) 0%,rgba(0,0,0,.6) 80%,transparent 100%);bottom:0;display:block;height:25%;position:absolute;width:100%}.loki-title-card .loki-metadata{color:#f1f1f1;height:100%;margin-bottom:2.6em;margin-left:8.0em;overflow:hidden;white-space:nowrap;width:100%}.loki-metadata #loki-progress-bar{display:block;height:2.0em;left:8.0em;padding:0;position:absolute;top:-4.0em;width:80%}#loki-progress-bar .progress-bar-playhead{display:none}.loki-metadata .loki-video-avatar{background-size:contain;display:inline-block;height:8.0em;width:8.0em}.loki-metadata .loki-video-text{display:inline-block;height:100%;margin:0 5.0em 0 3.5em;width:80%}.loki-video-text .loki-video-title{font-size:2.4em;margin-top:-.1em;overflow:hidden;text-overflow:ellipsis;width:80%}.loki-video-text .loki-channel-name{font-size:1.5em;margin-top:.4em;overflow:hidden;text-overflow:ellipsis;width:80%}.loki-video-text .loki-video-description{line-height:1.4em;margin-top:.4em;max-height:4.2em;overflow:hidden;white-space:normal;width:80%}.toaster{color:#aaa;font-size:133%;position:absolute;top:0;width:100%}.toaster .list{margin-top:.8em;position:absolute;width:100%}.toaster .toast{min-height:3.5em;overflow:hidden;position:relative;text-align:center;width:100%;-moz-transition:all .6s ease;-ms-transition:all .6s ease;-o-transition:all .6s ease;-webkit-transition:all .6s ease}.toaster .toast-container{background-color:rgba(27,25,26,0.8);border:1px solid black;display:inline-block;margin:.2em 0 1em;max-width:60%;opacity:1;padding:.5em 1em .6em;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;-webkit-transition:all .3s ease}.toaster .toast.toast-removing .toast-container{opacity:0}.toaster .toast-container>div{display:inline-block;vertical-align:middle}.toaster .toast-icon{background-position:center;background-repeat:no-repeat;background-size:1.1em 1.1em;height:1.2em;width:1.2em}.device-toast .toast-container{padding:0.7em}.toaster .device-toast .toast-msg{background-position:center left;background-repeat:no-repeat;background-size:1.1em 1.1em;padding-left:0.8em}.toaster .avatar{height:2.6em;width:2.6em}.toaster .avatar>div{background-position:center;background-size:cover;height:inherit;width:inherit}.toaster .video-image>div{background-position:center;background-size:cover;height:100%;width:100%}.toast .update-playlist-toast{bottom:0;max-width:14em;padding:0.8em;position:fixed;right:0;text-align:left}.update-playlist-toast .overlay{background:#000;height:55%;margin-left:56%;margin-top:-55%;opacity:.8;width:44%}.update-playlist-toast .video-count{font-size:2.3em;font-weight:normal;line-height:1.2em;padding-top:0.8em;text-align:center}.update-playlist-toast .icon-playlist{font-family:'youtube-icons';font-size:2.2em;height:50%;overflow:hidden;padding:.2em;text-align:center}.update-playlist-toast .avatar{padding:0.3em}.update-playlist-toast .contrast-container{background-color:rgba(0,0,0,0.8);padding:0.4em}.update-playlist-toast .tile-top{height:7.7em;width:14em}.update-playlist-toast .toast-msg{font-size:85%;padding-left:0.6em}.update-playlist-toast .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:13.2em}.update-playlist-toast .toast-msg.avatar{height:2.1em;width:10em;overflow:hidden}.update-playlist-toast .toast-msg.truncate{white-space:normal}.update-playlist-toast .toast-msg.no-user-avatar{font-size:85%;margin-left:-2.2em}.update-playlist-toast .wrapper>div{display:inline-block;vertical-align:middle}.toaster .toast-icon{background-image:url(img/dial-sprite.png);background-size:100%;max-width:100%}.toast-icon.avatar{background-image:none}.toaster .android-phone-connected{background-position:0 0%}.toaster .android-phone-disconnected{background-position:0 10.14%}.toaster .android-tablet-connected{background-position:0 20.29%}.toaster .android-tablet-disconnected{background-position:0 30.43%}.toaster .ios-phone-connected{background-position:0 40.58%}.toaster .ios-phone-disconnected{background-position:0 50.72%}.toaster .ios-tablet-connected{background-position:0 60.87%}.toaster .ios-tablet-disconnected{background-position:0 71.0%}.toaster .laptop-connected{background-position:0 81.16%}.toaster .laptop-disconnected{background-position:0 91.3%}.toaster .remote-connected{background-position:0 100%;background-size:233.33%}.toaster .remote-disconnected{background-position:0 100%;background-size:233.33%}.toaster .toast-progress{border:1px solid #aaa;width:10em}.toaster .toast-progress .progress{background-color:#666;height:1em}.toaster .volume-muted{background-image:url(img/volume_mute_pressed.png)}.toaster .volume-low{background-image:url(img/volume_0_pressed.png)}.toaster .volume-mid{background-image:url(img/volume_1_pressed.png)}.toaster .volume-high{background-image:url(img/volume_2_pressed.png)}.toaster .volume-toast .toast-msg{text-align:right;width:1.2em}.toaster .volume-toast .toast-container{-moz-transition-delay:.3s;-ms-transition-delay:.3s;-o-transition-delay:.3s;-webkit-transition-delay:.3s}.toaster .volume-toast.toast-removing .toast-container{-moz-transition-delay:0s;-ms-transition-delay:0s;-o-transition-delay:0s;-webkit-transition-delay:0s}.unlimited-welcome-toast .toast-container{box-shadow:0em 0em .6em .02em #000;height:6.5em;margin:0em;padding-right:1em;padding:0;position:fixed;right:0;text-align:left;top:0;width:24.5em;transform:translateX(0);opacity:1;-moz-transition:all .6s ease;-ms-transition:all .6s ease;-o-transition:all .6s ease;-webkit-transition:all .6s ease}.unlimited-welcome-toast.toast-displaying .toast-container{opacity:0;transform:translateX(18em)}.limited-animation .unlimited-welcome-toast .toast-container{opacity:1;-o-transition:none;-webkit-transition:none;transition:none;transform:none}.unlimited-toast-messages{position:absolute;padding-top:2.1em;padding-left:1.3em;width:12em}.unlimited-toast-msg-top{color:#ddd;line-height:1.0em}.unlimited-toast-msg-bottom{padding-top:0.5em;font-size:0.7em}.unlimited-toast-background{background-size:100%;background-position:left;background-repeat:no-repeat;height:100%;width:9em}.unlimited-toast-logo{background-size:100%;background-repeat:no-repeat;height:100%}#dialog{color:#fff;display:none;height:100%;left:0;position:absolute;top:0;width:100%}#error-markup #dialog{display:block}#dialog.focused{display:block}#dialog-wrapper{background-color:#000;height:30em;margin-top:11.1em;padding:1.3em 6em;position:relative}#dialog.browse-sets #dialog-wrapper{background-color:rgba(32,32,32,.5);height:100%;margin-top:0;padding:1.3em 10%}#dialog .dialog-contents{background:no-repeat 90% 30%}#dialog.browse-sets .dialog-contents .icon-simple-dialog{color:#fff}#dialog .dialog-contents .dialog-large-icon{display:none}#dialog.browse-sets .dialog-contents .dialog-large-icon{display:inline-block;font-family:'youtube-icons';font-size:10em;height:2.5em;line-height:2.5em;text-align:center;width:35%}#dialog.browse-sets .icon-simple-dialog .icon-dialog-content .extra-info{color:rgba(255,255,255,.75);display:block;font-family:monospace;font-size:1.5em;line-height:1.4em;padding-top:.8em}#dialog.browse-sets .icon-simple-dialog .icon-dialog-content .label{display:block;font-size:1.8em;line-height:1.1em;padding-top:6.45em}#dialog .dialog-contents .header .title{font-size:2.5em}#dialog.browse-sets.browse-sets-titled-dialog .dialog-contents .header{border-bottom:1px solid rgba(255,255,255,.2);height:3.4em;margin:0 1.5em}#dialog.browse-sets.browse-sets-titled-dialog .dialog-contents .header .title{color:rgba(255,255,255,.5);display:block;font-size:1.3em;font-weight:300;height:3em;line-height:3em}#dialog.browse-sets .buttons{font-size:1.8em;margin-right:2%;margin-top:.8em;text-align:right}#dialog.browse-sets .connection-steps{padding:0}#dialog.browse-sets.exit .dialog-contents .header .title{display:block;padding:1em 6.5em 3em 6.5em}#dialog.browse-sets .dialog-contents{background-color:#000;height:80%;margin-top:5%}#dialog.browse-sets.closed-captions .dialog-contents{height:75%}#dialog.browse-sets .dialog-cancel-button{text-align:center}.video-overview .dialog-contents{font-size:2em}#dialog.qr-dialog .dialog-contents{color:#ccc;font-size:1.1em;overflow:hidden;padding-top:4em}#dialog.qr-dialog .dialog-contents .header .title{color:#fff;font-size:2em}#dialog .box{padding-top:1.5em}#dialog.qr-dialog a{color:#fff;display:block;font-size:1.5em}#dialog.qr-dialog .qr{height:7em;margin:.2em 0;width:7em;background-size:100%}#dialog.qr-dialog .dialog-icon{display:block;background-size:12em}#dialog.help .dialog-icon{background-image:url(img/icon-help.png)}#dialog.feedback .dialog-icon{background-image:url(img/icon-feedback.png)}#dialog.system-error .dialog-icon{font-family:'youtube-icons';font-size:10em;margin-right:0;padding-right:.5em;padding-top:.5em;text-align:right;width:2em}#dialog.system-error .dialog-icon:before{content:"\00e656"}#dialog.qr-dialog.browse-sets .dialog-icon{display:none}#dialog .text-dialog{bottom:1.5em;left:0;padding:2em 20em 0 6em;position:absolute;white-space:normal}#dialog.text-dialog .dialog-contents .header .title{font-size:3em;padding-bottom:.5em}.text-dialog #dialog-view{color:#aaa;padding-bottom:1em;width:90%}.text-dialog #dialog-view .dialog-contents{font-size:1.8em}#dialog.browse-sets .icon-dialog-content{display:inline-block;height:25em;vertical-align:top;width:60%}#dialog-view .url{color:#fff;font-size:1.25em;padding-bottom:.8em}#dialog-view .flag-claim .url{padding-bottom:.5em}#dialog-view .reset-help{display:block;width:25em}#dialog.browse-sets .tos-dialog .icon-dialog-content{padding-top:9em}#dialog.browse-sets .tos-dialog .icon-dialog-content .subtitle{color:#aaa}#dialog.browse-sets .tos-dialog .icon-dialog-content .url{font-size:2em}#dialog.browse-sets.qr-dialog .dialog-contents{padding-top:0}#dialog.browse-sets.qr-dialog .icon-dialog-content .link{margin-top:5em;padding-top:0}#dialog.browse-sets.qr-dialog .icon-dialog-content .qr-code-wrapper{margin-top:2em}#dialog.browse-sets.qr-dialog .icon-dialog-content .qr-code-wrapper .qr{border:.2em rgba(255,255,255,.1) solid;padding:.5em}#dialog .signed-out-dialog{font-size:1.8em}.connection-error,.connection-steps{display:inline-block;font-weight:300;padding:0 1em 1em 2em;white-space:normal}.connection-error{vertical-align:top}.connection-error div{margin-bottom:1em}#dialog .login-dialog .activation-code{font-size:1.3em;letter-spacing:.1em;line-height:1.3em}#dialog .sets-login-dialog .body-text{display:inline-block;height:25em;vertical-align:top;width:50%}#dialog .sets-login-dialog .body-text .connection-instructions{font-size:1.9em;margin-top:3.5em}#dialog .sets-login-dialog .standard-message,#dialog .sets-login-dialog .like-dislike-message,#dialog .sets-login-dialog .subscribe-message,#dialog .sets-login-dialog .upload-message,#dialog .sets-login-dialog .player-message{display:none}#dialog.standard-login .sets-login-dialog .standard-message,#dialog.like-dislike-login .sets-login-dialog .like-dislike-message,#dialog.subscribe-login .sets-login-dialog .subscribe-message,#dialog.upload-login .sets-login-dialog .upload-message,#dialog.player-login .sets-login-dialog .player-message{display:block}#dialog .pairing .qr-code-wrapper{display:inline-block;vertical-align:top}#dialog .manual-connect-content .connection-steps{padding:0}#dialog .manual-connect-content .connection-steps .label{color:#aaa;font-size:.7em;margin-top:1em}#dialog .manual-connect-content .connection-steps .step1,#dialog .manual-connect-content .connection-steps .step2{margin-top:.7em}#dialog .manual-connect-content .connection-steps .pair-url,#dialog .manual-connect-content .connection-steps .pair-code{margin-left:.3em}#dialog.browse-sets .manual-connect-content .connection-steps .label{font-size:1.3em}#dialog.browse-sets .manual-connect-content .connection-steps .step1,#dialog.browse-sets .manual-connect-content .connection-steps .step2{display:inline-block;font-size:1.3em}#dialog.browse-sets .manual-connect-content .connection-steps .pair-url,#dialog.browse-sets .manual-connect-content .connection-steps .pair-code{display:inline-block;font-size:1.3em;margin-left:.3em}#dialog.browse-sets .pairing .connection-instructions{font-size:1em;padding-top:10em}#dialog .manual-connect .dial-upsell-content{display:none}#dialog .dial-upsell .manual-connect-content .connection-steps .no-dial-connect-step1,#dialog .manual-connect .manual-connect-content .connection-steps .with-dial-connect-step1{display:none}#dialog .manual-connect .manual-connect-content .connection-steps{font-size:1.5em}#dialog .manual-connect .manual-connect-content .connection-steps .label{display:none}#dialog.browse-sets .dial-upsell .dial-upsell-content{font-size:1.8em;white-space:normal;width:80%}#dialog.browse-sets .dial-upsell .dial-upsell-content .cast-icon{height:1.3em;margin:0;width:1.5em}#dialog.browse-sets .dial-upsell .manual-connect-content{color:#aaa;font-size:1.4em;line-height:1em}#dialog.browse-sets .remote-reset-dialog .connected-list .connected-header{color:#fff;font-size:1.5em;margin-top:6em}#dialog.browse-sets .remote-reset-dialog .connected-list .devices{display:inline-block;font-size:1em}#dialog.browse-sets .remote-reset-dialog .connected-list .devices>div{display:inline-block;font-size:1em;padding-left:0;padding-right:1.5em;width:10em}#dialog.browse-sets .remote-reset-dialog .reset-help{font-size:1.5em;margin-top:1em}#dialog .logout-authenticated-info{padding:2.5em 0}#dialog .login-user-icon{background-size:cover;display:inline-block;height:4em;margin:2em 2em 0 0;width:4em}#dialog.browse-sets .login-user-icon{margin:0 15%;border-radius:20em}#dialog .login-user-info{display:inline-block;margin-left:1.7em;margin-top:-.8em;font-size:2em;font-weight:300;width:82%}#dialog .login-user-info h3{font-size:2.2em;font-weight:normal;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#dialog.browse-sets .logout-authenticated-info{padding:0}#dialog.browse-sets .login-user-info{height:13em;margin:0;width:100%}#dialog.browse-sets .login-user-info .display-name,#dialog.browse-sets .login-user-info .platform-container{display:none}#dialog.browse-sets .login-user-info .signed-in-message{display:inline-block;width:50%}#dialog.browse-sets .login-user-info .signed-in-label strong{color:#fff;display:block;font-size:2.5em;overflow:hidden;text-overflow:ellipsis}#dialog.browse-sets .login-user-info .signed-in-label{color:#aaa;font-size:.5em;margin-top:10em}#dialog.browse-sets .login-user-info .sign-out-label{margin-top:1em}#dialog .spinner{height:10em;width:10em}#dialog .spinner .loading-indicator{background-size:contain;height:100%;width:100%}#dialog .buttons{font-size:3em;font-weight:300;padding-top:.3em}#dialog .buttons>div{background-color:#333;color:#000;cursor:pointer;display:inline-block;min-width:2.4em;padding:0 .3em;text-align:center}#dialog.browse-sets .buttons .button{background-color:#000;color:rgba(255,255,255,.5);min-width:3em;padding:.2em .8em}#dialog.browse-sets .buttons .focused,#dialog.browse-sets .buttons .button.focused:hover{background-color:#f1f1f1;color:#666}#dialog .buttons .button:hover,#dialog.browse-sets .buttons .button:hover{background-color:#666}#dialog .buttons div{margin-left:.5em}#dialog .buttons .focused,#dialog .buttons .focused:hover{background-color:#f1f1f1;color:#666}#dialog .ps4-logout-dialog .logout-prompt{font-size:1.7em}#dialog .logout-prompt{margin-top:6em}.scrolling-text{font-size:1.3em;height:15em;margin-right:1.1em;margin-top:1em;overflow:hidden}.scrolling-text h4{margin:0;padding:0}.scrolling-text>div{overflow:hidden;padding-bottom:1em}.flag-list-container{margin-top:.5em}.flag-list .button{color:#868686;cursor:pointer;display:inline-block;font-size:1.8em;padding:.4em;vertical-align:top}.flag-list .button{width:12em}.flag-list .button:hover{background-color:#444}.flag-list .button.focused,.flag-list .button.focused:hover{background-color:#fff;color:#676767}#flag-widget{font-weight:300}.flag-video{color:#676767;font-size:1.8em;font-weight:300;padding-top:1em;width:47%}.flag-video .url{color:#fff;display:block;font-size:1.6em;padding-top:.5em}.flag-example{background:url(img/flag.png) no-repeat 0 0;background-size:contain;display:inline-block;height:57%;position:absolute;right:18%;top:9%;width:23%}.flag-claim .metadata{display:block;font-size:1em;font-weight:500;padding-top:.2em;white-space:normal}.flag-claim .url{color:#868686;display:block;font-weight:300}.flag-claim{color:#676767;font-size:1.6em;font-weight:300;margin:1em 0 0 2em;white-space:nowrap}.flag-claim .copyright-infringment{display:inline-block;white-space:normal;width:50%}.flag-claim .privacy-invasion{display:inline-block;margin-left:4%;vertical-align:top;white-space:normal;width:40%}.flag-claim .email{color:#868686}.flag-claim .subtitle{font-size:1.2em;font-weight:500}.player-error-dialog.player-error{color:#aaa;font-size:1.8em;padding:1em 0 8em 0em}#dialog .scrollbar{height:70%;margin-top:5em;right:5em}#dialog .scrollbar .handle{height:5em}.paid-channel-info{font-size:1.4em;padding-top:1em}.paid-channel-info .channel-url{font-weight:bold}.status-dialog #dialog-wrapper{background-color:rgba(0,0,0,.5)}.status-dialog .icon{background:url(img/pairing-promo-combo.png) center center no-repeat;background-size:contain;display:inline-block;height:11em;vertical-align:middle;width:25%}.status-dialog .info{display:inline-block;padding-left:.5em;vertical-align:middle;width:70%}.status-dialog .message{color:#ccc;font-size:2em}.status-dialog #dialog-view{padding-top:7em}.dialog-focused #legend{bottom:12%;display:block}#legend.legend-for-dialog-closed-captions{bottom:6%}#dialog.confirm-cookies .dialog-contents .header .title{font-size:3em}#dialog.confirm-cookies #dialog-view{color:#aaa;font-size:1.8em;height:8em;padding-top:.9em}.single-pane-selector{padding-bottom:1em;padding-top:1em;white-space:nowrap}.single-pane-selector .list{display:inline-block;margin-right:.5em;padding-left:.5em;padding-right:.5em;vertical-align:top;width:94%}.single-pane-selector .button .label{width:90%}.single-pane-selector .check-button.previously-selected .icon-check{display:inline-block}.split-pane-selector{border-bottom:.1em solid rgba(255,255,255,.2);padding-bottom:1em;padding-top:1em;white-space:nowrap}.check-button .icon-check{display:none;font-family:youtube-icons}.single-pane-selector .labeled-value,.split-pane-selector .labeled-value{color:#868686;font-size:1.4em;height:2.8em;line-height:1.5em;overflow:hidden;padding:0 1em;white-space:normal}.single-pane-selector .labeled-value .value,.split-pane-selector .labeled-value .value{color:#666;display:block;font-size:.7em;line-height:1.4em}.single-pane-selector .button,.split-pane-selector .button{color:#868686;cursor:pointer;font-size:1.4em;height:2.8em;line-height:2.8em;overflow:hidden;padding:0 .4em;white-space:normal}.single-pane-selector .button .label,.split-pane-selector .button .label{display:inline-block;line-height:1.3em;vertical-align:middle}.single-pane-selector .subtitled-button,.split-pane-selector .subtitled-button{line-height:1.5em}.single-pane-selector .button.no-model,.split-pane-selector .button.no-model{visibility:hidden}.split-pane-selector .list{display:inline-block;vertical-align:top;width:47%}.split-pane-selector .list:first-child{border-right:.1em solid rgba(255,255,255,.2);margin-right:.5em;padding-right:.5em}.single-pane-selector .button:hover,.single-pane-selector .list:not(.focused) .button.selected,.split-pane-selector .button:hover,.split-pane-selector .list:not(.focused) .button.selected{background-color:#444;color:#fff}.single-pane-selector .button.focused,.single-pane-selector .button.focused:hover,.split-pane-selector .button.focused,.split-pane-selector .button.focused:hover{background-color:#fff;color:black}.single-pane-selector .subtitled-button span.subtitle,.split-pane-selector .subtitled-button span.subtitle{color:#666;display:block;font-size:.7em;line-height:1.4em}.color-button .preview{border-width:2px;border-color:#000;border-style:solid;color:#868686;display:inline-block;height:1em;margin:0 .2em .2em .2em;vertical-align:middle;width:1em}.color-button .preview.rounded{border-radius:50%}.preview.black{background-color:#000;border-width:1px;border-color:#fff;border-style:solid}.preview.red{background-color:#f00}.preview.magenta{background-color:#f0f}.preview.blue{background-color:#00f}.preview.cyan{background-color:#0ff}.preview.green{background-color:#0f0}.preview.yellow{background-color:#ff0}.preview.white{background-color:#fff}.debug-dialog{font-size:.9em}.debug-dialog span.label{font-weight:bold}#dialog.browse-sets .video-upload-dialog-contents{display:inline-block;font-size:1.6em;margin:1em 3% 0 3%;text-align:left;vertical-align:top;width:55%}#dialog.browse-sets .modify-video .video-upload-dialog-contents{margin-top:2em;text-align:center}.video-upload-status .video-url{color:#2793e6}.delete-video{padding-bottom:6em}.modify-video .list .button{background-position:50% 20%;background-repeat:no-repeat;background-size:60% 60%;color:#848484;display:inline-block;height:8em;margin-right:1em;text-align:center;width:8em}.modify-video .list .button.focused{background-color:#fff;color:#282828}.modify-video .list .button span{display:block;font-size:1.2em;margin:4.6em .5em .5em .5em;overflow:hidden;white-space:nowrap}.modify-video .modify-edit-button{background-image:url('img/edit_tile_light.png')}.modify-video .modify-edit-button.focused{background-image:url('img/edit_tile_dark.png')}.modify-video .modify-delete-button{background-image:url('img/trash_tile_light.png')}.modify-video .modify-delete-button.focused{background-image:url('img/trash_tile_dark.png')}.delete-video-dialog .video-tile .details,.modify-video .video-tile .details{margin-top:-.1em}.browse-sets #modify-list .button{height:7.5em;margin-right:.9em;width:7.5em}.browse-sets #modify-list .button span{font-size:1.1em;margin-top:5.2em}.delete-video-dialog{margin-bottom:14em}.browse-sets .delete-video-dialog{margin-bottom:1em}.video-processing,.video-upload-error{font-size:1.5em}.video-upload-error .error-container{color:#aaa;margin-top:1em}#dialog .buttons .upload-terms,#dialog .buttons .upload-terms:hover{background-color:#000;color:#555;display:block;font-size:.6em;margin-left:1.5em;text-align:left}.upload-progress{margin-bottom:1em;width:100%}.upload-progress-value{text-align:left;width:100%}.upload-progress span{margin-left:-1em;position:relative;width:4em}.upload-progress .upload-progress-bar{background-color:#aaa;width:100%}.upload-progress .upload-progress-bar .completed{background-color:#2793e6;height:1em}.privacy-button{background:.4em 50% no-repeat;background-size:1.5em;cursor:pointer;position:relative}.privacy-button .checkbox{background-position:100%;background-size:2em;height:2em;left:85%;position:absolute;top:0;width:2em}.privacy-button.checked .checkbox{background-image:url(img/icon-privacy-check-light.png)}.privacy-button.focused.checked .checkbox{background-image:url(img/icon-privacy-check-dark.png)}.privacy-button .label .name{background-position:0 .5em;background-size:2em;line-height:1.5em;text-indent:1.8em}.privacy-button .description{font-size:.6em;line-height:.8em;padding-left:2.9em}.privacy-button .name{font-size:1em;line-height:1.2em;padding-left:1.7em}.private-state,.video-tile .private{background-image:url(img/icon-privacy-private-light.png)}.private-state.focused{background-image:url(img/icon-privacy-private-dark.png)}.public-state,.video-tile .public{background-image:url(img/icon-privacy-public-light.png)}.public-state.focused{background-image:url(img/icon-privacy-public-dark.png)}.unlisted-state,.video-tile .unlisted{background-image:url(img/icon-privacy-unlisted-light.png)}.unlisted-state.focused{background-image:url(img/icon-privacy-unlisted-dark.png)}.video-tile .private,.video-tile .public,.video-tile .unlisted{background-position:left;background-repeat:no-repeat;background-size:1.5em;min-height:1.5em;min-width:1.5em;padding-left:1.5em}.video-privacy .button,.video-overview .button{display:inline-block;height:2em;line-height:2em;margin:.1em 0;overflow:hidden;padding:.1em .5em;vertical-align:top;white-space:nowrap;width:65%}.video-privacy .button{width:85%}.video-overview .button:first-child{width:20%}.video-privacy .button.focused,.video-privacy .button:not(.disabled):hover,.video-overview .button.focused,.video-overview .button:not(.disabled):hover{background-color:#fff;color:#676767}#dialog.browse-sets .video-privacy .button:nth-child(2){width:11em}#dialog.browse-sets .video-uploads{margin:3em 1em 2em}#dialog.browse-sets .video-uploads .carousel{overflow:hidden}#dialog.browse-sets .video-uploads .carousel .video-tile .details{text-align:left}.video-overview .title-button{line-height:1em;white-space:normal}#dialog.browse-sets .video-overview .title-button .label{display:inline-block;line-height:2em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:95%}.video-overview .channel-button{background-position:.35em 50%;background-repeat:no-repeat;background-size:1.5em;line-height:2em;overflow:hidden;text-indent:1.8em;text-overflow:ellipsis}.video-uploads .carousel{height:20em;position:relative;white-space:nowrap}.video-tile-container{display:inline-block;margin-top:1.7em;text-align:right;width:35%}.video-tile-container .video-tile{border:.1em rgba(255,255,255,.2) solid;display:inline-block;height:22em;position:static;text-align:left;width:20em}.video-tile-container .video-tile .tile-top{height:51%}.video-tile-container .video-tile .tile-bottom .details{height:inherit}.video-uploads .carousel .video-tile{height:20em;width:18em}.video-uploads .video-tile .decoration{top:7em}.video-tile-container .video-tile .tile-bottom,.video-uploads .video-tile .tile-bottom{width:initial}.dialog.closed-captions #dialog-wrapper{margin-top:5em}#dialog.closed-captions-language-only #dialog-wrapper{padding:1.6em 26%}#dialog.closed-captions-language-only #options-list{display:none}#legend.legend-for-dialog-closedCaptionsDialog{bottom:24%}#dialog.closed-captions-language-only~#legend{right:29%}.simple-dialog{margin:3em;font-size:1.6em}.lang-ja_JP .connection-instructions .step1,.lang-ja_JP .connection-instructions .step2,.lang-ko_KR .connection-instructions .step1,.lang-ko_KR .connection-instructions .step2,.lang-zh_CN .connection-instructions .step1,.lang-zh_CN .connection-instructions .step2,.lang-zh_HK .connection-instructions .step1,.lang-zh_HK .connection-instructions .step2,.lang-zh_TW .connection-instructions .step1,.lang-zh_TW .connection-instructions .step2{font-size:.8em}.lang-de_DE .action-tile .content .title,.lang-el_GR .action-tile .content .title,.lang-es_ES .action-tile .content .title,.lang-es_MX .action-tile .content .title,.lang-fr_FR .action-tile .content .title,.lang-fr_CA .action-tile .content .title,.lang-ko_KR .action-tile .content .title,.lang-nl_NL .action-tile .content .title,.lang-pl_PL .action-tile .content .title,.lang-pt_BR .action-tile .content .title,.lang-pt_PT .action-tile .content .title,.lang-ru_RU .action-tile .content .title,.lang-uk_UA .action-tile .content .title{font-size:2em}.lang-it_IT .action-tile .content .title{font-size:1.8em}.lang-es_ES .action-tile .improve-yt-tile .title,.lang-fr_CA .action-tile .history-tile .title,.lang-fr_FR .action-tile .history-tile .title,.lang-de_DE .action-tile .terms-tile .title,.lang-fr_CA .action-tile .terms-tile .title,.lang-fr_FR .action-tile .terms-tile .title{font-size:1.7em}.lang-es_ES .action-tile .videoinfo-tile .title,.lang-es_MX .action-tile .videoinfo-tile .title,.lang-fr_CA .action-tile .videoinfo-tile .title,.lang-fr_FR .action-tile .videoinfo-tile .title,.lang-pt_BR .action-tile .videoinfo-tile .title{font-size:1.5em;white-space:normal}.lang-de_DE .action-tile .videoinfo-tile .title{font-size:1.45em;padding-left:.5em;padding-right:.5em;white-space:normal}.lang-es_ES .action-tile .videoinfo-tile .label,.lang-es_MX .action-tile .videoinfo-tile .label,.lang-fr_CA .action-tile .videoinfo-tile .label,.lang-fr_FR .action-tile .videoinfo-tile .label,.lang-pt_BR .action-tile .videoinfo-tile .label{padding-top:.6em}.lang-de_DE .action-tile .videoinfo-tile .label{font-size:1.6em;padding-top:.7em}.lang-ja_JP .action-tile .terms-tile .title{font-size:2em}.lang-ja_JP #transliteration .list{font-size:1.2em}.lang-ja_JP #keyboard-grid{font-size:1.5em}.lang-ja_JP #keyboard-spacebar{margin-left:5.5em}.lang-zh_CN #search .horizontal-list,.lang-zh_HK #search .horizontal-list,.lang-zh_TW #search .horizontal-list,.lang-ja_JP #search .horizontal-list{-o-transform:translateY(9.5em);-webkit-transform:translateY(9.5em);transform:translateY(9.5em)}.lang-ko_KR #search .horizontal-list{-o-transform:translateY(10.5em);-webkit-transform:translateY(10.5em);transform:translateY(10.5em)}.lang-ko_KR #search-keyboard{font-size:1.82em}.lang-ko_KR #letter-suggest .button{width:1em}.lang-ko_KR #keyboard-grid,.lang-ru_RU #keyboard-grid,.lang-uk_UA #keyboard-grid{margin-top:0.3em}.lang-ko_KR #keyboard-grid.lang-ko .numbers-toggle-tile.button,.lang-ru_RU #keyboard-grid.lang-ru .numbers-toggle-tile.button,.lang-uk_UA #keyboard-grid.lang-ua .numbers-toggle-tile.button{font-size:0.75em}.lang-ko_KR #keyboard-grid .button,.lang-ru_RU #keyboard-grid .button,.lang-uk_UA #keyboard-grid .button{height:1.2em;line-height:1.1em;margin-top:0.6em}.lang-ko_KR #letter-suggest .button,.lang-ru_RU #letter-suggest .button,.lang-uk_UA #letter-suggest .button{height:1.2em;line-height:1.1em;width:1.2em}.lang-ko_KR .search-state #spinner,.lang-ru_RU .search-state #spinner,.lang-uk_UA .search-state #spinner,.lang-ja_JP .search-state #spinner{top:25em}.lang-ko_KR .search-state .application-message,.lang-ru_RU .search-state .application-message,.lang-uk_UA .search-state .application-message,.lang-ja_JP .search-state .application-message{top:55%}.lang-ru_RU #keyboard-grid.lang-ru .button,.lang-uk_UA #keyboard-grid.lang-ua .button,.lang-ko_KR #keyboard-grid,.lang-ko_KR #letter-suggest,.lang-ko_KR #keyboard-spacebar{font-size:1em}.lang-ru_RU #keyboard-spacebar,.lang-uk_UA #keyboard-spacebar{margin-left:4.2em}.lang-de_DE .countdown-ad-callout .time-left-label,.lang-de_DE .countdown-ad-callout .skip-time-label{font-size:1.1em}.lang-cs_CZ .action-tile .description,.lang-de_DE .action-tile .description,.lang-hi_IN .action-tile .description,.lang-pl_PL .action-tile .description,.lang-pt_BR .action-tile .description,.lang-pt_PT .action-tile .description,.lang-ru_RU .action-tile .description,.lang-uk_UA .action-tile .description{font-size:1.3em}.lang-de_DE .guide-button.footer .guide-button-title{width:27.81em}.lang-de_DE .guide-user-name{width:13.5em}.lang-nl_NL .guide-button.disabled .guide-button-title,.lang-de_DE .guide-button.disabled .guide-button-title,.lang-fr_FR .guide-button.disabled .guide-button-title,.lang-pt_PT .guide-button.disabled .guide-button-title{width:13em}.lang-tr_TR #search #keyboard-grid .button.clear-query-tile,.lang-tr_TR .action-tile .title,.lang-tr_TR .guide-button-icon,.lang-tr_TR #keyboard-grid .button,.lang-tr_TR .tile-top .badge,.lang-tr_TR .tile-top .duration,.lang-tr_TR .title-card .badges span .lang-tr_TR.lang-case-sensitive .player-controls .button span:first-letter,.lang-tr_TR.lang-case-sensitive .player-controls .toggle-button span:first-letter,.lang-tr_TR.lang-case-sensitive .snap-controls .speakable span:first-letter,.lang-tr_TR.lang-case-sensitive .voice-command:first-letter{text-transform:none}.voice-command{display:none}.lang-case-sensitive .voice-command:first-letter{text-transform:uppercase}.engaged .voice-command{background-color:rgba(22,22,22,.7);color:#5dc21e;display:block;font-size:1em}.engaged .horizontal-list .carousel .voice-command{display:none}.engaged .horizontal-list.focused .carousel .voice-command{display:block}.engaged .pivot-video-tile .voice-command,.engaged .pivot-channel-tile .voice-command{display:none}.engaged .pivot-video-tile.speakable .voice-command,.engaged .pivot-channel-tile.speakable .voice-command{display:block}.engaged .video-tile .voice-command,.engaged .pivot-video-tile .voice-command,.engaged .pivot-channel-tile .voice-command,.engaged .playlist-tile .voice-command,.engaged .channel-tile .voice-command{bottom:50%;font-size:1.5em;margin-top:-2.17em;padding:.5em .9em;opacity:0.999}.engaged .video-tile.disabled .voice-command,.engaged .pivot-video-tile.disabled .voice-command,.engaged .pivot-channel-tile.disabled .voice-command{display:none}.engagement-indicator{bottom:0.8em;display:none;font-size:1.5em;left:1.8em;position:absolute;width:16em}.engaged .engagement-indicator{background-color:transparent;color:#5dc21e;display:block}.engagement-indicator .icon{background:no-repeat center;display:inline-block;height:2em;vertical-align:middle;width:2em}.engagement-indicator .stop-listening{padding:.5em}.engagement-indicator .stop-listening .icon{background-image:url('img/icon-xboxone-engaged.png')}.engagement-indicator .text{text-align:center}.engagement-indicator .title{display:inline-block;font-size:0.9em}.browse-sets-state.engaged .engagement-indicator,.browse-state.engaged .engagement-indicator,.post-play-state.engaged .engagement-indicator,.post-play-state.engaged .engagement-indicator,.settings-state.engaged .engagement-indicator,.search-state.engaged .engagement-indicator{display:block}.watch-state.engaged .engagement-indicator{display:block;height:3em;left:0;margin-left:auto;margin-right:auto;right:0;text-align:center;top:20%}.watch-focused .engagement-indicator .stop-listening{background-color:rgba(22,22,22,.7)}.sliding-highlighter .select,.engaged .legend-item,.engaged #dialog .speakable.button,.engaged .context-menu .speakable.button,.engaged .speakable.action-tile .title,.engaged .modify-video .speakable,.engaged .modify-video .speakable.focused{color:#5dc21e}.voice-footer{background-color:rgba(22,22,22,.7);bottom:0;color:#5dc21e;font-size:1.5em;height:3em;padding:1em 0 0.6em 0;position:absolute;text-align:center;width:100%}.voice-footer .list{font-size:0.65em;margin:auto;margin-top:-1.3em;padding-top:1em;width:29em}.voice-footer .component{display:inline-block;padding-right:1em}.engaged .voice-footer{color:#5dc21e}.engaged .voice-footer li{display:inline;padding:0 2%}.engaged .player-controls .button span,.engaged .player-controls .toggle-button span{color:#5dc21e;display:block}.engaged .player-controls .button.disabled span,.engaged .player-controls .toggle-button.disabled span{display:none}.engaged #transport-controls.ad-active .player-controls #button-list div.skip-ad-button.canskip .label,.engaged .skip-ad-button.canskip .label{color:#5dc21e}.engaged .player-controls-widget{margin-top:7.4em}.engaged .player-controls .voice-command.transport{top:1em}.legend{bottom:5.5%;color:#f1f1f1;position:absolute;right:5.5%;text-shadow:2px 2px 4px #000;display:none;background:-webkit-radial-gradient(ellipse closest-side,rgba(0,0,0,0.2) 25%,rgba(0,0,0,0.1) 60%,rgba(0,0,0,0));background:-o-radial-gradient(ellipse closest-side,rgba(0,0,0,0.2) 25%,rgba(0,0,0,0.1) 60%,rgba(0,0,0,0));background:-moz-radial-gradient(ellipse closest-side,rgba(0,0,0,0.2) 25%,rgba(0,0,0,0.1) 60%,rgba(0,0,0,0));background:radial-gradient(ellipse closest-side,rgba(0,0,0,0.2) 25%,rgba(0,0,0,0.1) 60%,rgba(0,0,0,0))}.limited-memory .legend{background:none}.legend-item{cursor:pointer;display:none;margin:0 0 0 .5em}.legend-item span{vertical-align:middle}.legend-item .icon{background-size:100%;display:block;height:2.5em;margin:auto;max-width:100%;text-align:center;width:2.5em}.legend-item.more>.icon.icon-player-more{background-size:0}.legend-item.more>.icon:before{font-family:'youtube-icons';color:#fff;font-size:1.9em;margin:auto;position:relative;top:.2em}.legend-item .title{display:block;font-size:1.1em;margin-top:0;text-align:center;text-transform:none}#legend.back .back,#legend.close-guide .close-guide,#legend.delete .delete,#legend.exit .exit,#legend.guide .guide,#legend.search .search,#legend.space .space,#legend.home .home,#legend.modify .modify,#legend.more .more,.reversed-keys #legend.back .reversed-back{display:inline-block}.reversed-keys #legend.back .back{display:none}.desktop .legend,.game-console .legend,.tv .legend{display:inline-block}.wiiu .legend{font-size:1.2em}.desktop .legend-item .icon{background-image:url(img/legend-sprite-desktop.png)}.game-console.sony .legend-item .icon{background-image:url(img/legend-sprite-ps3.png)}.roku #legend .legend-item .icon{background-image:url(img/legend-sprite-roku.png)}.skip-ad-callout .icon,.tv .legend-item .icon{background-image:url(img/legend-sprite-tv.png)}.wiiu .legend-item .icon{background-image:url(img/legend-sprite-wiiu.png)}.wiiu #user-info-background{-webkit-transform:translateZ(0)}.wiiu #search .horizontal-list{top:30%;-webkit-transform:none;transform:none}.wiiu .search-state #spinner{top:20em}.xboxone .legend-item .icon{background-image:url(img/legend-sprite-xboxone.png)}.xbox360 .legend-item .icon{background-image:url(img/legend-sprite-xbox360.png)}.desktop .legend-item.back .icon,.desktop .legend-item.exit .icon{background-position:0 47.4%;background-size:240%}.desktop .legend-item.search .icon{background-position:0 100%;background-size:240%}.desktop .legend-item.close-guide .icon,.desktop .legend-item.guide .icon,.desktop .legend-item.home .icon,.desktop .legend-item.space .icon{background-position:0 73.7%;background-size:240%}.desktop .skip-ad-callout .icon{background-position:31% 67.5%;background-size:520%;width:6.6em}.game-console.sony .legend-item .icon,.tv .legend-item .icon,.wiiu .legend-item .icon{background-repeat:no-repeat;height:1.5em;position:relative;bottom:.5em;width:1.5em}.game-console.sony .legend-item.more>.icon:before,.tv .legend-item.more>.icon:before,.wiiu .legend-item.more>.icon:before{top:initial}.game-console.microsoft .legend-item{margin-left:1.4em}.game-console.microsoft .legend-item.back .icon,.game-console.microsoft .legend-item.exit .icon,.game-console.microsoft .legend-item.reversed-back .icon{background-position:0 27.5%}.game-console.microsoft .legend-item.search .icon,.game-console.microsoft .legend-item.space .icon{background-position:0 82%}.game-console.microsoft .legend-item.close-guide .icon,.game-console.microsoft .legend-item.delete .icon,.game-console.microsoft .legend-item.guide .icon,.game-console.microsoft .legend-item.home .icon,.game-console.microsoft .legend-item.modify .icon{background-position:0 54.9%}.roku #legend .legend-item.back .icon,.roku #legend .legend-item.exit .icon{background-position:0 105%}.game-console.sony .legend-item.back .icon,.game-console.sony .legend-item.exit .icon{background-position:0 0%}.game-console.sony .legend-item.reversed-back .icon{background-position:0 100%}.game-console.sony .legend-item.search .icon,.game-console.sony .legend-item.space .icon{background-position:0 87.5%}.game-console.sony .legend-item.close-guide .icon,.game-console.sony .legend-item.delete .icon,.game-console.sony .legend-item.guide .icon,.game-console.sony .legend-item.home .icon{background-position:0 75%}.game-console.sony #dialog .logout-authenticated-info,.game-console.microsoft #dialog .logout-authenticated-info{padding-top:0}.game-console.sony .action-tile .platform-container,.game-console.microsoft .action-tile .platform-container{margin:1em;text-align:center}.game-console.sony .login-user-info .platform-user-name,.game-console.sony .platform-user-name,.game-console.microsoft .login-user-info .platform-user-name,.game-console.microsoft .platform-user-name{vertical-align:middle}.game-console.sony .login-user-info .platform-user-icon,.game-console.sony .platform-user-icon,.game-console.microsoft .platform-user-icon,.game-console.microsoft .login-user-info .platform-user-icon{background-size:cover;display:inline-block;height:3em;vertical-align:middle;width:3em}.game-console.sony #dialog .login-user-info .platform-container>div,.game-console.microsoft #dialog .login-user-info .platform-container>div{font-size:1em}.wiiu .advertisement-callout,.wiiu .advertisement-info,.wiiu #leanback-player-container,.wiiu .skip-ad-button,.wiiu .title-card,.wiiu #watch,.wiiu .toaster{-h5vcc-target-screen:screen-all}.wiiu .pivot-shelf-list{opacity:1}.wiiu .legend-item.back .icon,.wiiu .legend-item.exit .icon{background-position:0 33.3%}.wiiu .legend-item.search .icon{background-position:0 100%}.wiiu .legend-item.close-guide .icon,.wiiu .legend-item.delete .icon,.wiiu .legend-item.guide .icon,.wiiu .legend-item.home .icon{background-position:0 66.7%}.wiiu .qr-code-wrapper{display:none}.wiiu #search .search-pairing{display:none}.wiiu #search-suggestions{font-size:1.6em;height:1.6em}.wiiu .search-state .application-message{top:35%}.tv .legend-item.guide .icon,.tv .legend-item.close-guide .icon,.tv .skip-ad-callout .icon{background-position:0 100%}.lg .legend-item.back,.lg .legend-item.exit{cursor:pointer}.tv .legend-item.back .icon,.tv .legend-item.exit .icon{background-position:0% 0%}.lg .legend-item.back .icon,.lg .legend-item.exit .icon{opacity:0.8}.lg .legend-item.back:hover .icon,.lg .legend-item.exit:hover .icon{opacity:1}body.samsung{background-color:transparent!important}body.lg{background-color:transparent!important;background-image:url(tv:)!important}body.limited-memory{background-color:#111}.limited-memory .bg,.eureka .bg{background-image:none;background-color:#2e2e2e}.limited-animation .loading-indicator,.opera .loading-indicator,.lg .loading-indicator{display:none}.limited-animation .fallback-loading-indicator,.opera .fallback-loading-indicator,.lg .fallback-loading-indicator{display:block}.limited-animation .video-tile .video-thumb{opacity:1}.limited-memory .video-tile .video-thumb{background-size:cover}.limited-memory .video-tile .video-thumb.preloaded{background-size:auto}.roku.limited-memory .video-tile .video-thumb{background-size:100%;opacity:1}.limited-animation.playlist-tile .count-overlay{background-color:#000}.search .placeholder-tile,.settings .placeholder-tile,.limited-animation .browse-content .list .placeholder-tile{height:24em;width:20.75em}.guide .placeholder-tile{width:100%;height:2em}.limited-animation .action-tile,.limited-animation .channel-tile,.limited-animation .playlist-tile,.limited-animation .auto-play-tile,.limited-animation .recent-search-tile,.limited-animation .video-tile,.limited-animation .browse-content .list .placeholder-tile,.search .placeholder-tile,.settings .placeholder-tile,.shelf .placeholder-tile{display:inline-block;margin-right:1.1em;position:relative;vertical-align:top}.limited-animation .shelves{margin-top:2.5%}.limited-animation .playlist-tile .overlay,.limited-animation .video-tile .overlay,.limited-memory .playlist-tile .overlay,.limited-memory .video-tile .overlay{opacity:1}.limited-memory .auto-play-tile .video-tile{margin:0}.limited-animation .auto-play-tile .post-play-countdown{top:-4em}.limited-animation .hide-background.video-tile .video-thumb{background-image:url(img/icon-playbutton.png)!important;background-repeat:no-repeat;opacity:1}.limited-animation .action-tile.focused .content{text-shadow:none}.limited-animation .post-play-countdown{text-shadow:none}.limited-animation #keyboard-grid .button.disabled,.limited-animation #keyboard-grid .button.focused,.limited-animation #letter-suggest .button{background-color:rgba(153,153,153,1)}.limited-animation #search #text-box-background,.limited-animation #search #search-text-entry{background-color:#000}.limited-animation #search-keyboard,.limited-animation #letter-suggest{text-shadow:none}.limited-animation #search-keyboard .disabled,.limited-animation #letter-suggest .button{color:#000;text-shadow:none}.limited-animation #letter-suggest .button.focused,.limited-animation #search-keyboard .button.focused{background-color:#e1e1e1;color:#212121}.limited-animation #transliteration .list .button{border-right-color:#f1f1f1}.limited-animation #transliteration .list .button.focused{background-color:rgba(153,153,153,1)}.limited-animation .toaster .toast-container{background-color:rgba(27,25,26,1)}.limited-animation .title-card,.limited-memory.limited-animation.sets-ui .title-card{background:#000;height:20%}.opera .focused,.opera :focus{outline:invert none medium}.eureka #browse-sets,.eureka #dialog .buttons,.eureka .legend,.eureka #transport-controls{display:none}#eureka-player-controls-container{display:none;position:absolute;top:17em;width:100%}.eureka #eureka-player-controls-container{display:block}.eureka .loading #eureka-player-controls-container{opacity:0}#eureka-player-controls{background-size:100%;border-radius:1em;height:11.5em;margin:0 auto;overflow:hidden;width:11.5em}.eureka #eureka-player-controls{opacity:0}@-webkit-keyframes showAndShrinkPause{from{-webkit-transform:scale(1.5);opacity:0}to{opacity:.7}}@-webkit-keyframes hideAndGrowPlay{from{opacity:.7}to{-webkit-transform:scale(1.5);opacity:0}}.eureka #watch.play #eureka-player-controls{background-image:url(img/player-play.png);-webkit-animation:hideAndGrowPlay linear 0.25s 0s 1 normal none}.eureka #watch.pause #eureka-player-controls{background-image:url(img/player-pause.png);-webkit-animation:showAndShrinkPause linear 0.25s 0s 1 normal none;opacity:.7}.xboxone .action-tile,.xboxone .legend-item.back,.xboxone .legend-item.delete,.xboxone .legend-item.exit,.xboxone .legend-item.home,.xboxone .legend-item.modify,.xboxone .legend-item.reversed-back,.xboxone .legend-item.search,.xboxone .player-controls div,.xboxone .auto-play-tile,.xboxone .video-stream,.xboxone .video-tile,.xboxone #browse-search-bar,.xboxone #guide.focused .guide-button,.xboxone #player-controls .item,.xboxone #snap-buttons>div{-h5vcc-gesturable:gesture-clickable}.xboxone #browse-sets{-h5vcc-gesturable:gesture-scroll-both}.xboxone #guide.focused .carousel{-h5vcc-gesturable:gesture-scroll-vertical}.xboxone .settings-shelf{-h5vcc-gesturable:gesture-scroll-horizontal}.xboxone #transliteration .button:hover,.xboxone #keyboard-grid .button:hover{background:none;cursor:default}.search-hint{display:none}.xboxone .search-hint,.xbox360 .search-hint{color:#6b6b6b;display:block;font-size:1.4em;line-height:2em}.context-menu-defocuser{background-color:rgba(0,0,0,0.5);height:100%;left:0;position:absolute;top:0;width:100%}.context-menu-list{background-color:#000;height:initial;left:50%;padding-top:2.5em;position:relative;top:50%;-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:30%}.context-menu-list .button{-h5vcc-gesturable:gesture-clickable;border:#000 solid;border-width:0.5em 1em 0.5em 1em;color:#e1e1e1;cursor:pointer;font-family:roboto-regular;font-size:1.5em;height:auto;line-height:2.5em;margin:0;text-align:left;text-indent:1em;transition-duration:200ms;transition-property:background-color,color;transition-timing-function:cubic-bezier(0.4,0,0.2,1);-webkit-transition-duration:200ms;-webkit-transition-property:background-color,color;-webkit-transition-timing-function:cubic-bezier(0.4,0,0.2,1)}.context-menu-list .button:before{font-family:youtube-icons;padding-right:1em}.context-menu-list .button.icon-platform-switch-users{background:#1f1f1f url() no-repeat;background-position:0.5em center;background-size:2em 2em;border:solid #1f1f1f;border-width:2em 1em 2em 1em;height:initial;line-height:initial;margin-top:1em;padding:0.5em 0 0.5em 3em;text-indent:0}.context-menu-list .button.focused{background-color:#e1e1e1;color:#000}.call-to-cast{display:none}.call-to-cast.focused{bottom:0;display:block;left:0;position:absolute;right:0;top:0}.call-to-cast-text{color:#f1f1f1;font-weight:normal;text-shadow:#000 .06em .06em;width:38%}h2.call-to-cast-text{font-size:3.2em;margin-bottom:0.3em;margin-top:0;padding-top:1.5em}h3.call-to-cast-text{font-size:1.7em}.call-to-cast .end-screen{background-position:center center;background-repeat:no-repeat;background-size:cover;display:none;height:100%}.call-to-cast .end-screen.active{display:block}.call-to-cast .end-screen .call-to-cast-text{color:#fff;width:40%}.call-to-cast .end-screen .call-to-cast-text em{color:#0090ff;font-style:normal}.call-to-cast .end-screen h2.call-to-cast-text{margin-bottom:0.5em;padding-top:2em}.call-to-cast .end-screen h3.call-to-cast-text{line-height:1.5em}.call-to-cast .end-screen.left .call-to-cast-text{margin-left:5%}.call-to-cast .end-screen.right .call-to-cast-text{margin-left:50%}.call-to-cast .end-screen .yt-logo,.call-to-cast .end-screen .yt-kids-logo{background-image:url(img/call-to-cast-yt-logo.png);background-repeat:no-repeat;background-size:contain;bottom:8%;height:13.88%;position:fixed;width:100%}.call-to-cast .end-screen.left .yt-logo,.call-to-cast .end-screen.left .yt-kids-logo{background-position:left center;left:4%}.call-to-cast .end-screen.right .yt-logo,.call-to-cast .end-screen.right .yt-kids-logo{background-position:right center;right:4%}.call-to-cast .end-screen .yt-kids-logo{background-image:url(img/yt-kids-logo.png);height:20%}.call-to-cast .end-screen.multi-user{background-image:url(img/call-to-cast-end-screen-multi-user.jpg)}.call-to-cast .end-screen.yt-mix{background-image:url(img/call-to-cast-end-screen-yt-mix.jpg)}.call-to-cast .end-screen.tv-queue{background-image:url(img/call-to-cast-end-screen-tv-queue.jpg)}.call-to-cast .end-screen.kids-promo{background-image:url(img/call-to-cast-end-screen-kids-promo.jpg)}.call-to-cast .end-screen.kids-mother-goose{background-image:url(img/call-to-cast-end-screen-kids-mother-goose.jpg)}.call-to-cast .end-screen.kids-rainbow{background-image:url(img/call-to-cast-end-screen-kids-rainbow.jpg)}.call-to-cast .end-screen.kids-sesame{background-image:url(img/call-to-cast-end-screen-kids-sesame.jpg)}.call-to-cast .end-screen.kids-talking-tom{background-image:url(img/call-to-cast-end-screen-kids-talking-tom.jpg)}.call-to-cast .end-screen.kids-wonderquest{background-image:url(img/call-to-cast-end-screen-kids-wonderquest.jpg)}.call-to-cast .THEME-cl.end-screen.kids-promo h2.call-to-cast-text{width:80%}.call-to-cast .THEME-k.end-screen h3.call-to-cast-text{font-size:3em;line-height:1.4em;margin-top:0;padding-top:10%;padding-left:5%;width:45%}.call-to-cast .end-screen.gaming-heart{background-image:url(img/call-to-cast-end-screen-gaming-heart.jpg)}.call-to-cast .THEME-g.end-screen h3.call-to-cast-text{font-size:2.2em;padding-top:0%;width:100%}.call-to-cast .end-screen.loki{background-image:url(img/call-to-cast-end-screen-loki.jpg)}.call-to-cast .THEME-up.end-screen h3.call-to-cast-text{font-size:2.2em;margin-left:0%;padding-top:17em;text-align:center;width:100%}.call-to-cast .THEME-m.end-screen h2.call-to-cast-text{font-size:2.2em;margin-bottom:0;text-align:center;width:100%}.call-to-cast .THEME-m.end-screen h3.call-to-cast-text{margin-top:0;text-align:center;width:100%}.call-to-cast .THEME-m.end-screen.music-ready{background-image:url(img/call-to-cast-music.jpg)}.call-to-cast .THEME-m.end-screen.music-ready .call-to-cast-logo{background:url(img/yt-music-logo.png) no-repeat center bottom;height:60%}.call-to-cast .THEME-m.end-screen.music-ready h2.call-to-cast-text{padding-top:10%}.call-to-cast .THEME-m.end-screen.music-party{background-image:url(img/call-to-cast-music.jpg);height:100%}.call-to-cast .THEME-m.end-screen.music-party .call-to-cast-logo{background:url(img/call-to-cast-music-party-logo.png) no-repeat center bottom;height:55%}.call-to-cast .THEME-m.end-screen.music-party .footer{background:url(img/yt-music-logo-small.png) no-repeat center top;height:10%}.snap-controls{height:90%;padding:.5em;position:relative}.snapped.blurred #snap-buttons,.snapped.blurred #unsupported-mode,.snapped.blurred #ad-callout,.snapped.blurred .logo-container,.snapped.blurred .title-card,.snapped.blurred .up-next{opacity:.25!important}.snapped #dialog,.snapped #guide,.snapped #search,.snapped #settings,.snapped #title-tray,.snapped #transport-controls,.snapped .ad-showing .video-ads,.snapped .advertisement-info,.snapped .application-message,.snapped .browse,.snapped .browse-sets,.snapped .caption-window,.snapped .countdown-ad-callout,.snapped .html5-video-info-panel,.snapped .legend,.snapped .player-video-avatar,.snapped .quality-status,.snapped .skip-ad-button,.snapped .skip-ad-callout,.snapped .toaster,.snapped.blurred.browse-sets-state .title-card,.snapped.blurred.search-state .title-card,.snapped.blurred.settings-state .title-card,.snapped.dialog-focused #snap-progress-bar,.snapped.dialog-focused #watch{display:none!important}.snapped .advertisement-tooltip{color:#a0a0a0;font-size:.4em;left:0;top:0}.snapped .advertisement-tooltip .remaining_duration{color:#717171}.snapped #ad-callout{left:5%;top:18%}.snapped .debug-watermark{font-size:.2em;width:100%}#app-markup.snapped{background-color:#231f20}.snapped #background{display:none}.snapped{font-size:2em}.snapped.watch-state .logo-container{opacity:inherit}.snapped .icon-youtube-logo:before{content:''}.snap-controls .logo-container{background:url(img/yt-logo-fullcolor.png) no-repeat center top;display:inherit;height:2.5em;left:0;position:absolute;right:0;top:5%}.snapped .ad-video,.snapped .ad-created .video-stream{height:270px!important;width:480px!important}.snapped .video-stream,.snapped .html5-video-content{-webkit-transform:scale(.9)!important;max-height:5.6em;top:4.4em!important}.snapped .html5-video-controls{top:9.8em!important}.snapped .player-video-title{color:#a0a0a0;font-size:.7em;line-height:1.1em;margin:0;max-height:2.2em;white-space:normal;width:12em}.snapped .player-meta{left:0;margin:0;position:inherit;top:0}.snapped .player-meta .player-video-text{padding-left:0}.snapped .player-meta .player-video-details{color:#717171;font-size:.5em;line-height:1.1em}.snapped .player-meta .player-video-details>div{margin-left:0}.snapped .player-video-details .uploaded-date,.snapped .player-video-details .set-context,.snapped .player-video-details .view-count{font-size:.9em;margin-top:0}.watch-state.snapped #snap-progress-bar{display:block}#snap-progress-bar{background-position:top left;display:none;height:.1em;left:0;margin-top:9.25em;padding:0;position:relative;top:0;width:100%}#snap-progress-bar .progress-bar-disc,#snap-progress-bar .progress-bar-playhead{display:none}#snap-progress-bar div{height:5px;top:0}.snapped .title-card{background:none;border:none;height:initial;padding-top:.3em;position:inherit}#unsupported-mode{color:#fff;font-size:.9em;line-height:1.2em;padding:80% 1em 0;width:8em}.snap-controls .mute{background-image:url(img/icon-mute.png)}.snap-controls .mute.toggle-selected{background-image:url(img/icon-unmute.png)}.snap-controls .fullscreen{background-image:url(img/icon-fullscreen.png)}.snapped .loading-indicator{height:5em;width:5em}.snapped #spinner{top:19%;-o-transform:scale(.5);-webkit-transform:scale(.5);transform:scale(.5)}.engaged.snapped .engagement-indicator{display:inline-block;font-size:.6em!important;left:0;margin-left:auto;margin-right:auto;position:absolute;right:0;text-align:center;top:4.2em!important}.engaged.snapped .engagement-indicator .stop-listening{background:transparent}.snap-controls #snap-buttons{bottom:0;position:absolute}.snap-controls #snap-buttons .focused,.snap-controls #snap-buttons :hover{-webkit-border-radius:.15em;background-color:#fff;color:#000}.snap-controls #snap-buttons .button,.snap-controls #snap-buttons .toggle-button{display:inline-block;font-size:.8em;height:1em;margin-left:.5em;padding:1em;position:relative;text-align:center;top:0;width:1em}.snap-controls #snap-buttons div{color:#fff;cursor:pointer;vertical-align:middle}.snap-controls #snap-buttons div.disabled:hover{background-color:transparent;color:#fff}.snap-controls #snap-buttons div.focused{opacity:1}.snap-controls #snap-buttons div.disabled{opacity:.2}.snap-controls .speakable span,.snap-controls .disabled span{display:none}.engaged .snap-controls .speakable:not(.disabled) span{color:#5dc21e;display:block;font-size:.6em;left:0;overflow:hidden;pointer-events:none;position:absolute;text-align:center;top:-1.5em;width:100%;word-break:break-all}.lang-case-sensitive .snap-controls .speakable span:first-letter{text-transform:uppercase}.snap-controls .icon-player-play{font-family:'youtube-icons'}.snap-controls .icon-mute,.snap-controls .icon-fullscreen{background-position:center center;background-repeat:no-repeat;background-size:3em}.snap-controls .icon-mute,.snap-controls .icon-mute.disabled{background-image:url(img/button-unmute-active.png)}.snap-controls .icon-mute.focused,.snap-controls .icon-mute:hover:not(.disabled){background-image:url(img/button-unmute-onhover-active.png)}.snap-controls .icon-mute.toggle-selected{background-image:url(img/button-mute-active.png)}.snap-controls .icon-mute.toggle-selected.focused,.snap-controls .icon-mute.toggle-selected:hover{background-image:url(img/button-mute-onhover-active.png)}.snap-controls .icon-fullscreen{background-image:url(img/button-fullscreen-active.png)}.snap-controls .icon-fullscreen.focused,.snap-controls .icon-fullscreen:hover{background-image:url(img/button-fullscreen-onhover-active.png)}.up-next{height:3em;padding-top:1em}.up-next div{color:#a0a0a0;font-size:.6em}.up-next .video-title{height:1.2em;line-height:1.2em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.up-next .video-thumb{background:no-repeat center/100%;display:inline-block;height:100%;margin-top:.2em;max-height:2.5em;vertical-align:top;width:5em}#browse-sets{background-color:#222;height:100%;left:0;overflow:hidden;position:absolute;right:0}#browse-sets.no-background,.limited-memory #browse-sets{background-color:rgba(0,0,0,0)}#browse-search-bar{background-color:rgba(153,153,153,.2);cursor:pointer;height:3em;left:8em;margin-right:18em;position:absolute;right:2.5em;top:2.5em}.limited-animation #browse-search-bar{background-color:#4f575a}#browse-search-bar.focused,#browse-search-bar:hover{background:#fff}#browse-search-bar .icon{color:rgba(255,255,255,.4);display:block;font-family:'youtube-icons';font-size:1.8em;margin:0;padding:.35em 0 0 .5em;text-align:left}.limited-animation #browse-search-bar .icon{color:#e1e1e1}.youtube-logo-top{height:3.4em;position:absolute;right:9.5em;top:2.3em;width:8.4em;font-family:'youtube-icons'}#browse-sets.has-header-content .youtube-logo-top{display:none}.youtube-logo:before{color:rgba(153,153,153,.5);display:block;font-size:3.4em}.youtube-unlimited-logo:before{color:rgba(153,153,153,.5);display:none;font-size:3.4em;position:relative;right:.5em}.unlimited .youtube-logo:before{display:none}.unlimited .youtube-unlimited-logo:before{display:block}.limited-animation .youtube-unlimited-logo:before,.limited-animation .youtube-logo:before{color:#4f575a}#browse-search-bar.focused .icon,#browse-search-bar:hover .icon{color:#444}#platform-user-icon{background-position:center;background-repeat:no-repeat;background-size:contain;height:4em;position:absolute;right:3em;top:2em;width:4em}#browse-header{background-position:0 -8em;background-size:cover;height:60%;position:relative}.limited-memory.limited-animation #browse-header{background-position:6em 0;background-repeat:no-repeat;background-size:contain}.no-background #browse-header{background-image:none!important}.browse-sets #browse-header.collapsed{-o-transform:translateY(-27%);-webkit-transform:translateY(-27%);transform:translateY(-27%)}.limited-memory .browse-sets #browse-header.collapsed{top:-7em;-o-transform:none;-webkit-transform:none;transform:none}#browse-header .title{color:#e1e1e1;display:inline-block;font-size:2.25em;margin-bottom:-.23em;overflow:hidden;text-overflow:ellipsis;-o-transform-origin:left;-webkit-transform-origin:left;transform-origin:left;white-space:nowrap;width:23.7em}#browse-header.one-button .title{width:18.7em}#browse-header.two-buttons .title{width:14em}#browse-header.collapsed .title{overflow:visible;-o-transform:scale(.8,.8) translateY(-5em) translateX(-1.5em);-webkit-transform:scale(.8,.8) translateY(-5em) translateX(-1.5em);transform:scale(.8,.8) translateY(-5em) translateX(-1.5em)}.browse-header-gradient{background:-o-linear-gradient(top,rgba(34,34,34,0) 0%,rgba(34,34,34,0) 15%,rgba(34,34,34,1) 100%);background:-webkit-linear-gradient(top,rgba(34,34,34,0) 0%,rgba(34,34,34,0) 15%,rgba(34,34,34,1) 100%);background:linear-gradient(to bottom,rgba(34,34,34,0) 0%,rgba(34,34,34,0) 15%,rgba(34,34,34,1) 100%);height:100%;width:100%}.limited-memory .browse-header-gradient{display:none}.no-background .browse-header-gradient{visibility:hidden}.browse-header-metadata{left:8em;position:absolute;-o-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0)}.limited-memory.limited-animation .browse-header-metadata{top:11.6em}.limited-memory.limited-animation #browse-header.collapsed .browse-header-metadata{font-size:inherit;left:8em;top:11em}.limited-memory.limited-animation #browse-header.collapsed .browse-header-metadata .browse-header-avatar{height:4em;margin-right:1em;width:4em}.browse-header-avatar{background-size:contain;display:inline-block;height:5em;margin-right:1.3em;-o-transform-origin:left;-webkit-transform-origin:left;transform-origin:left;width:5em}#browse-header.collapsed .browse-header-avatar{-o-transform:scale(.61,.61) translateY(-13.5em);-webkit-transform:scale(.61,.61) translateY(-13.5em);transform:scale(.61,.61) translateY(-13.5em)}#browse-header.collapsed .browse-header-button-bar{-o-transform:translateY(-6.25em);-webkit-transform:translateY(-6.25em);transform:translateY(-6.25em);opacity:0}.browse-header-button-bar{background:rgba(0,0,0,.4);border-radius:.15em;font-size:1.1em;height:2.4em;margin-bottom:-.59em;padding:.59em;position:absolute;right:3.5em}.limited-animation .browse-header-button-bar{background:#1f2426}.limited-memory.limited-animation .browse-header-button-bar{top:13em}.browse-header-button-bar,.browse-header-metadata{bottom:3.9em}.browse-header-button-bar .button{border-radius:.12em;color:#e1e1e1;cursor:default;display:inline-block;height:2.4em;min-width:8.2em;overflow:hidden;padding-right:1em;white-space:nowrap}.browse-header-button-bar .button span{line-height:2.4em;vertical-align:middle}.browse-header-button-bar .button.focused,.browse-header-button-bar .button.focused:hover{background:#e1e1e1;color:#212121}.browse-header-button-bar .button:hover{background-color:#666}.browse-header-button-bar .button .icon{display:inline-block;font-family:'youtube-icons';height:2.4em;margin:0 1em 0 1em}.browse-header-subscribe .icon:before{font-size:2em}.browse-header-subscribe.toggle-selected .icon:before{content:"\00e602";font-size:1em}.browse-header-subscribe.toggle-selected.focused{color:#ce292d}.browse-header-subscribe.disabled{background-color:rgba(0,0,0,0)}.browse-content{height:80%;left:8em;position:absolute;top:14.5%;width:100%}.browse-sets.collapsed .browse-content{-o-transform:translateY(44%);-webkit-transform:translateY(44%);transform:translateY(44%)}.limited-memory .browse-sets.collapsed .browse-content{top:20em;-o-transform:none;-webkit-transform:none;transform:none}#browse-header,.browse-header-avatar,.browse-header-button-bar,.browse-content,#browse-header .title{-o-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0);-o-transition:-o-transform .25s;-webkit-transition:-webkit-transform .25s;transition:-webkit-transform .25s}.browse-header-button-bar{-o-transition:opacity .25s -o-transform .25s;-webkit-transition:opacity .25s,-webkit-transform .25s;transition:opacity .25s,transform .25s}.limited-animation #browse-header,.limited-animation .browse-header-avatar,.limited-animation #browse-header.collapsed .browse-header-avatar,.limited-animation .browse-content,.limited-animation .browse-header-button-bar,.limited-animation #browse-header .title,.limited-animation .browse-content .shelves,.limited-animation .browse-header-metadata,.limited-animation .shelf #content-container,.limited-animation .shelves>.title,.limited-animation .shelf>.title,.limited-animation .horizontal-list>.content,.limited-animation .horizontal-list,.limited-animation .shelves .carousel{-o-transition:all 0;-webkit-transition:none;transition:none;-o-transform:none;-webkit-transform:none;transform:none}.limited-animation #browse-header.collapsed .browse-header-metadata{font-size:.6em;left:13.25em;top:17.75em}.limited-animation #browse-header.collapsed .browse-header-metadata .title{font-size:3em}.limited-memory #browse-header.collapsed .browse-header-metadata .title{font-size:1.8em}.limited-animation .browse-content .list{margin-left:-9.5em;width:126em}.limited-animation .browse-content .shelf>.title{margin-left:6em}.limited-animation.sets-ui .action-tile:not(.focused),.limited-animation.sets-ui .auto-play-tile:not(.focused) .video-tile,.limited-animation.sets-ui .channel-tile:not(.focused),.limited-animation.sets-ui .playlist-tile:not(.focused),.limited-animation.sets-ui .recent-search-tile:not(.focused),.limited-animation.sets-ui .video-tile:not(.focused),.roku.limited-animation.sets-ui .action-tile:hover:not(.focused),.roku.limited-animation.sets-ui .auto-play-tile:hover:not(.focused) .video-tile,.roku.limited-animation.sets-ui .channel-tile:hover:not(.focused),.roku.limited-animation.sets-ui .playlist-tile:hover:not(.focused),.roku.limited-animation.sets-ui .video-tile:hover:not(.focused){background-color:#212121}.limited-animation.sets-ui .action-tile:hover:not(.focused),.limited-animation.sets-ui .auto-play-tile:hover:not(.focused) .video-tile,.limited-animation.sets-ui .channel-tile:hover:not(.focused),.limited-animation.sets-ui .playlist-tile:hover:not(.focused),.limited-animation.sets-ui .recent-search-tile:hover:not(.focused),.limited-animation.sets-ui .video-tile:hover:not(.focused){background-color:#414141}.browse-content .shelves{margin-left:0em;-o-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0)}.browse-content .shelves>.no-content-message,.browse-content .horizontal-list>.no-content-message{margin-left:-8em}.shelves>.no-content-message,.horizontal-list>.no-content-message{display:none;position:absolute;top:8em;width:100%}.shelves.no-content>.no-content-message,.horizontal-list.no-content>.no-content-message{display:block}.shelves>.no-content-message .text,.horizontal-list>.no-content-message .text{color:#f1f1f1;font-size:1.8em;text-align:center;text-shadow:#000 .04em .04em}.shelf{width:100%}.limited-animation .shelf{margin-bottom:1.8em}.carousel .shelf{position:absolute}.shelf #content-container{-o-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0)}.shelves>.title,.shelf>.title{color:#999;font-size:1.6em;margin-bottom:1.0em;margin-top:.2em;-o-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0);white-space:nowrap}.shelves>.title,.shelf.selected>.title{color:#fff}.shelf>.title .annotation{color:#777;font-size:70%;margin-left:.5em}.shelf.selected>.title .annotation{color:#ddd}.horizontal-list.no-model,.shelf.no-model,.survey-shelf.no-model{display:none}.shelf>.icon{display:none}.horizontal-list>.content{font-size:79%;height:26em;opacity:1;-o-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0)}.horizontal-list.focused>.content{opacity:1}.horizontal-list,.shelves .carousel,.browse-header-metadata{-o-transform:translateZ(0);-webkit-transform:translateZ(0);transform:translateZ(0)}.shelf0to0{opacity:1;-webkit-transform:translateY(0%) scale(1);-o-transform:translateY(0%) scale(1)}@-webkit-keyframes shelf0to1-anim{from{-webkit-transform:translateY(0%)}to{-webkit-transform:translateY(100%)}}@-o-keyframes shelf0to1-anim{from{-o-transform:translateY(0%)}to{-o-transform:translateY(100%)}}.shelf0to1{-webkit-animation:shelf0to1-anim 200ms forwards;-o-animation:shelf0to1-anim 200ms forwards}@-webkit-keyframes shelf0to2-anim{from{opacity:1;-webkit-transform:translateX(0%) translateY(0%) scale(1.0)}100%{opacity:0;-webkit-transform:translateX(-2%) translateY(-11%) scale(0.75)}}@-o-keyframes shelf0to2-anim{from{opacity:1;-o-transform:translateX(0%) translateY(0%) scale(1.0)}100%{opacity:0;-o-transform:translateX(-2%) translateY(-11%) scale(0.75)}}.shelf0to2{-webkit-animation:shelf0to2-anim 200ms forwards;-o-animation:shelf0to2-anim 200ms forwards}@-webkit-keyframes shelf1to0-anim{from{-webkit-transform:translateX(0%) translateY(100%)}to{-webkit-transform:translateX(0%) translateY(0%)}}@-o-keyframes shelf1to0-anim{from{-o-transform:translateX(0%) translateY(100%)}to{-o-transform:translateX(0%) translateY(0%)}}.shelf1to0{-webkit-animation:shelf1to0-anim 200ms forwards;-o-animation:shelf1to0-anim 200ms forwards}.shelf1to1{opacity:1;-webkit-transform:translateX(0%) translateY(100%) scale(1);-o-transform:translateX(0%) translateY(100%) scale(1)}@-webkit-keyframes shelf1to2-anim{from{-webkit-transform:translateX(0%) translateY(100%)}99%{-webkit-transform:translateX(0%) translateY(200%)}100%{opacity:0;-webkit-transform:translateX(-2%) translateY(-11%) scale(0.75)}}@-o-keyframes shelf1to2-anim{from{-o-transform:translateX(0%) translateY(100%)}99%{-o-transform:translateX(0%) translateY(200%)}100%{opacity:0;-o-transform:translateX(-2%) translateY(-11%) scale(0.75)}}.shelf1to2{-webkit-animation:shelf1to2-anim 200ms forwards;-o-animation:shelf1to2-anim 200ms forwards}@-webkit-keyframes shelf2to0-anim{from{opacity:0;-webkit-transform:translateX(-2%) translateY(-11%) scale(0.75)}to{opacity:1;-webkit-transform:translateX(0%) translateY(0%) scale(1.0)}}@-o-keyframes shelf2to0-anim{from{opacity:0;-o-transform:translateX(-2%) translateY(-11%) scale(0.75)}to{opacity:1;-o-transform:translateX(0%) translateY(0%) scale(1.0)}}.shelf2to0{-webkit-animation:shelf2to0-anim 200ms forwards;-o-animation:shelf2to0-anim 200ms forwards}@-webkit-keyframes shelf2to1-anim{from{opacity:1;-webkit-transform:translateX(0%) translateY(200%)}to{opacity:1;-webkit-transform:translateX(0%) translateY(100%)}}@-o-keyframes shelf2to1-anim{from{opacity:1;-o-transform:translateX(0%) translateY(200%)}to{opacity:1;-o-transform:translateX(0%) translateY(100%)}}.shelf2to1{-webkit-animation:shelf2to1-anim 200ms forwards;-o-animation:shelf2to1-anim 200ms forwards}.shelf2to2{opacity:0;-webkit-transform:translateX(-2%) translateY(-11%) scale(0.75);-o-transform:translateX(-2%) translateY(-11%) scale(0.75)}.limited-memory .shelves .list .video-tile:nth-child(1) .video-thumb,.limited-memory .shelves .list .channel-tile:nth-child(1) .video-thumb,.limited-memory.sets-ui #search .horizontal-list .list .video-tile:nth-child(1) .video-thumb,.limited-memory.sets-ui #search .horizontal-list .list .channel-tile:nth-child(1) .video-thumb,.limited-memory.sets-ui #browse .list .video-tile:nth-child(1) .video-thumb,.limited-memory.sets-ui #browse .list .channel-tile:nth-child(1) .video-thumb,.limited-memory.sets-ui #browse .list .video-tile:last-child .video-thumb,.limited-memory.sets-ui #browse .list .channel-tile:last-child .video-thumb{background:none!important}.survey-shelf{position:absolute}.survey-shelf>.title{color:#fff;display:inline-block;font-size:1.6em;margin-bottom:1.0em;margin-top:0.2em}.survey-shelf .action-tile .content>.title{display:none}.survey-shelf .horizontal-list>.content{font-size:79%;height:26em}.survey-shelf .description{color:#fff;visibility:visible}.survey-shelf .button{display:inline-block;margin-bottom:1em;margin-left:2em}.survey-shelf .sliding-highlighter{height:8em;width:8em}.survey-shelf .action-tile,.exp-densityBrowse .survey-shelf .action-tile{border:0;height:8em;width:8em}.survey-shelf .action-tile .content{height:8em;width:8em}.survey-shelf .action-tile .description{color:#777;font-size:1.2em;margin-top:-1.3em;opacity:1;white-space:nowrap}.exp-densityBrowse .survey-shelf.focused .action-tile .description{display:block}.exp-densityBrowse .survey-shelf .action-tile .description{display:none}.survey-shelf .action-tile .large-action-icon,.exp-densityBrowse .survey-shelf .action-tile .large-action-icon{background-color:transparent;font-size:5em;margin-top:.26em;padding-right:.2em}.survey-shelf .action-tile.selected .large-action-icon,.exp-densityBrowse .survey-shelf .action-tile.selected .large-action-icon{color:#fff}.survey-shelf .action-tile.focused .large-action-icon,.exp-densityBrowse .survey-shelf .action-tile.focused .large-action-icon{color:#222}.survey-shelf .button.focused{background-color:#fff;border-radius:.1em;color:#222;padding:.2em}.survey-shelf .button{color:#777}.limited-animation .survey-shelf{margin-bottom:5em;position:relative}.limited-animation .survey-shelf>.title{margin-left:6em}.limited-animation .exp-densityBrowse .survey-shelf>.title{margin-left:5em}.limited-animation .survey-shelf .horizontal-list{margin-left:17.5em}.limited-animation .exp-densityBrowse .survey-shelf .horizontal-list{margin-left:13.5em}.limited-animation .exp-densityBrowse .survey-shelf .action-tile .large-action-icon{margin-top:.12em}.limited-animation .exp-densityBrowse .survey-shelf .action-tile .description{display:block}#guide{box-shadow:.1em 0 1em 0em black;height:100%;left:0;overflow:hidden;position:absolute;-o-transform:translateX(-23em);-webkit-transform:translateX(-23em) translateZ(0);transform:translateX(-23em) translateZ(0);-o-transition:-o-transform 400ms cubic-bezier(0.4,0.0,0.2,1);-webkit-transition:-webkit-transform 400ms cubic-bezier(0.4,0.0,0.2,1);transition:transform 400ms cubic-bezier(0.4,0.0,0.2,1);width:28em}.limited-memory.limited-animation #guide{box-shadow:none;-o-transform:none;-webkit-transform:none;transform:none}.limited-memory #guide.focused{border-right:none}#guide.focused{-o-transform:translateX(0);-webkit-transform:translateX(0);transform:translateX(0)}#guide:hover{background-color:rgba(255,255,255,.2)}.limited-animation #guide:hover{background:none}.limited-animation #guide,.limited-animation #guide #user-info-background,.limited-animation .guide-carousel-background{-o-transition:none;-webkit-transition:none;transition:none}.guide-carousel-background{background-color:rgba(0,0,0,.2);height:100%;left:0em;position:absolute;top:0em;width:100%;-o-transition:background-color 400ms;-webkit-transition:background-color 400ms;transition:background-color 400ms}.limited-animation .guide-carousel-background,.limited-animation #guide #user-info-background{background-color:#1f2426}.limited-animation #guide:hover .guide-carousel-background,.limited-animation #guide:hover #user-info-background{background-color:#384145}.limited-animation.limited-memory .guide-carousel-background,.limited-animation.limited-memory #guide #user-info-background{background-color:#df2323}.limited-memory .guide-carousel-background,.limited-memory #guide #user-info-background,#guide .list{display:none}.limited-memory #guide.focused .guide-carousel-background,.limited-memory #guide.focused.logged-in #user-info-background,#guide.focused .list{display:block}.logged-in .guide-carousel-background{top:8.5em}#guide.focused .guide-carousel-background,#guide.focused:hover .guide-carousel-background{background-color:#df2323}.collapsed-guide,#guide.focused .collapsed-guide{display:none}.collapsed-guide-icons{color:#85888a;font-size:1.6em;left:15em;opacity:1;position:absolute;top:7.5em}.collapsed-guide-icon{font-family:'youtube-icons';margin-top:1em;margin-bottom:1em;text-align:center;width:2em}#guide .collapsed-guide-icons{-o-transition:opacity 150ms 450ms;-webkit-transition:opacity 150ms 450ms;transition:opacity 150ms 450ms}.limited-memory .collapsed-guide-icons{left:1em}.limited-animation #guide .collapsed-guide-icons{-o-transition:none;-webkit-transition:none;transition:none}#guide.focused .collapsed-guide-icons{opacity:0;-o-transition:none;-webkit-transition:none;transition:none}#guide .collapsed-guide-icon.icon-guide-my-subs{display:none}#guide.logged-in .collapsed-guide-icon.icon-guide-my-subs{display:block}#guide.logged-in .collapsed-guide-icon.icon-popular{display:none}.collapsed-guide-icon.icon-music{font-size:.925em;padding-left:.0375em}.limited-memory .collapsed-guide{background-color:#1f2426;border-right:.2em solid #111;display:block;height:100%;left:0;width:6em}#error-message{display:none}#guide.error.focused #error-message{color:#fff;display:block;font-size:2em;padding:2em;position:absolute;text-align:center;top:12em}#guide .sliding-highlighter{display:none;width:100%;height:4.2em;opacity:0}#guide.focused .sliding-highlighter{opacity:1}#guide.focused .sliding-highlighter{display:block}#guide.focused #user-info-background{visibility:visible}#guide #user-info-background{background-color:rgba(0,0,0,.2);-o-transition:background-color 400ms;-webkit-transition:background-color 400ms;transition:background-color 400ms}#guide.focused #user-info-background,#guide.focused:hover #user-info-background{background-color:#931717}.logged-in #user-info-background{display:block}#guide.focused .guide-user-text{visibility:visible}#guide .carousel,#guide .list,#guide .sliding-highlighter{color:#fff;margin-top:2em}#guide.logged-in .carousel,#guide.logged-in .list,#guide.logged-in .sliding-highlighter{margin-top:1em}#guide .carousel.hidden{display:block!important;visibility:hidden}#guide .list{position:relative}.carousel .guide-button{position:absolute}.list .guide-button{margin-bottom:.1em}.guide-button{font-size:1.6em;height:1.83em;overflow:hidden;padding:.5em .27em .3em 2.9em;white-space:nowrap}.guide-button:hover{background:#900;cursor:pointer;padding-right:1.78em}.guide-button.selected:hover{background:transparent}.guide-button.disabled:hover{background:transparent;cursor:inherit;padding-right:inherit}.guide-button.disabled{padding-left:2.1em;text-transform:uppercase}.guide-button.disabled.footer{text-transform:none}.guide-button-icon{color:#ef9191;display:inline-block;font-family:'youtube-icons';font-size:1.2em;margin-top:.2em;text-align:center;width:1.8em}.guide-button.disabled .guide-button-icon{display:none}.guide-user-text,.guide-button-title{color:#fbdada;display:inline-block;line-height:1.7em;overflow:hidden;padding-left:.5em;text-overflow:ellipsis;vertical-align:top}.guide-button.disabled .guide-button-title{color:#ef9191}.guide-user-text{visibility:hidden;margin-left:-0.4em;position:relative;top:30%;text-overflow:ellipsis;width:9.5em}.guide-button-title{width:11em}.engaged .guide-button-title{width:8em}.guide-button.footer .guide-button-title{font-size:75%;padding-top:.8em;width:21.15em}.guide-button-icon .image,#guide-user-avatar{background:no-repeat center;background-size:100%;height:1em;width:1em}.guide-button-icon .image{background-color:#fff;box-shadow:0 0 0 1px #ef9191;margin:0 .4em 0 .4em}.guide-button.focused .guide-button-icon .image{box-shadow:none}.guide-button .image{display:none}.guide-button.has-image .image{display:block}#guide-user-avatar{border-radius:50%;box-shadow:0 0 0 .05em rgba(239,145,145,.4),0 0 .05em #ef9191;display:inline-block;font-size:2.31em;margin:.2em .2em .2em .4em}#guide-user-avatar,.guide-user-text,.guide-button-icon,.guide-button-title{-o-transition:color 50ms;-webkit-transition:color 50ms;transition:color 50ms;transition-delay:25ms}.no-transition .guide-button .guide-button-icon,.no-transition .guide-button .guide-button-title,.limited-animation .guide-button .guide-button-icon,.limited-animation .guide-button .guide-button-title,.limited-animation #guide-user-avatar,.limited-animation .guide-user-text{-o-transition:none;-webkit-transition:none;transition:none}.guide-button.focused .guide-button-icon,.guide-button.focused .guide-button-title{color:#df2323}.limited-animation .guide-button.focused{background-color:#fff}.user-info-container{height:2.6em;padding:1.1em 0em 0em 1.8em;font-size:1.6em;white-space:nowrap}#user-info-background{display:none;height:8.53em;position:relative;width:inherit;z-index:1}.sliding-highlighter .select{background-color:rgba(0,0,0,0.8);display:none;height:2.9em;min-width:3.5em;padding:1.3em 0.6em 0em 0.6em;position:absolute;right:0;text-align:center}.engaged .guide .sliding-highlighter .select{display:block}.unlimited .guide-user-text{line-height:1.0em}.guide-user-unlimited{font-size:0.8em;color:#a88;text-transform:uppercase}#settings{height:100%;overflow:visible;position:absolute;right:0;left:4.5em}.settings-shelf{height:24em;margin-left:3.5em;margin-top:1em;position:absolute;top:19%;width:100%}.settings-title{color:#fff;font-size:1.2em;line-height:3em;white-space:nowrap}.limited-animation .settings .content .list{width:130em}.limited-animation #settings-items{margin-left:-17em}.settings-horizontal-list>.content{font-size:79%}.settings-horizontal-list>.no-content-message{display:none}.pointer-overlay{display:block}.pointer-overlay .nav-arrow{background-image:url(img/motion-control-sprite.png);background-repeat:no-repeat;background-size:100%;cursor:pointer;display:none;height:5em;opacity:.5;position:absolute;width:5em}.pointer-overlay.enabled .nav-arrow{display:block}.pointer-overlay .nav-arrow:hover{opacity:1}.pointer-overlay .up-arrow{background-position:0 100%;left:45%;top:18%}.pointer-overlay .down-arrow{background-position:0 0%;bottom:11%;left:45%}.pointer-overlay .left-arrow{background-position:0 33.3%;top:50%;left:5%}.settings-focused .pointer-overlay .left-arrow,.browse-sets-state .pointer-overlay .left-arrow,.search-state .pointer-overlay .left-arrow{left:7%}.pointer-overlay .right-arrow{background-position:0 66.7%;top:50%;right:5%}#search.input-open+.pointer-overlay .up-arrow,.post-play-state .pointer-overlay .up-arrow,.post-play-state .pointer-overlay .down-arrow{display:none}.watch-state .pointer-overlay .down-arrow{bottom:2%}.search-state.guide-focused .pointer-overlay .up-arrow{top:20%}@media screen and (aspect-ratio:5/4){#dialog.browse-sets #dialog-wrapper{padding:1.3em 2em}.flag-list-container.flag-options-dialog{font-size:.875em}}@media screen and (max-aspect-ratio:4/3){.player-controls #button-list{font-size:.875em}#transport-controls.ad-active .player-controls-widget .player-controls #button-list{font-size:1em}.fresh-transport-controls .progress-bar{width:70%}.fresh-transport-controls #player-time-elapsed,.fresh-transport-controls .player-time-total{font-size:1.1em;width:10%}}@media screen and (aspect-ratio:4/3){#browse-header .title{width:18.3em}#browse-header.one-button .title{width:13.2em}#browse-header.two-buttons .title{width:8.5em}.sets-ui .flag-list.grid{font-size:0.8em}.flag-claim{font-size:1.4em}#search .search-pairing{font-size:0.7em}.sets-ui .debug-dialog{font-size:0.8em}.voice-footer .list{padding-top:0;width:16em}}@media screen and (min-width:3840px){.player-controls{top:21px}}@media screen and (min-width:1919px){.opera .video-stream{height:1080px;width:1920px}.watch-video-tile,.watch-list .button{padding:10px}}@media screen and (min-width:640px) and (max-width:1024px) and (max-height:576px){.countdown-ad-callout{font-size:1.3em;right:10%}.opera .video-stream{height:576px;width:1024px}#keyboard-grid .button{width:.7em}#dialog-wrapper{padding-left:4em;padding-right:4em}.pairing{-moz-transform-origin:0 50%;-ms-transform-origin:0 50%;-o-transform-origin:0 50%;-webkit-transform-origin:0 50%;-moz-transform:scale(.7);-ms-transform:scale(.7);-o-transform:scale(.7);-webkit-transform:scale(.7)}.browse-sets #browse-header.collapsed{-o-transform:translateY(-19%);-webkit-transform:translateY(-19%);transform:translateY(-19%)}}@media screen and (max-width:720px) and (max-height:480px){.countdown-ad-callout{font-size:.9em;right:5%}.skip-ad-callout{right:3%}.opera .video-stream{height:480px;width:720}#search .pairing .alternatives{margin:0 0 0 1em}#keyboard-grid .button{width:.8em}#search .pairing .search-message .title{margin-top:0.7em}#dialog-view .pairing{font-size:0.8em;margin-top:2em}.watch-list .list{margin-left:-4em}}@media screen and (max-width:640px) and (max-height:480px){.opera .video-stream{height:480px;width:640px}#keyboard-grid .button{width:.7em}#dialog-view .reset-help{display:block;width:27em}.watch-video-tile,.watch-list .button{padding:4px}.browse-header-metadata{bottom:3.9em}.browse-sets #browse-header.collapsed{-o-transform:translateY(-27%);-webkit-transform:translateY(-27%);transform:translateY(-27%)}.voice-footer .list{font-size:.6em;margin-left:35%;padding-top:-3em;width:35%}.engaged .engagement-indicator{display:inline-block;font-size:1.3em;height:3em;margin-bottom:1.5em}.engaged .engagement-indicator .title{display:inline-block}.engagement-indicator .stop-listening .icon{display:inline-block;height:3em;left:0px;top:0px;width:15%}}@media screen and (min-height:1080px) and (max-width:1440px){.video-tile-container{-moz-transform:scale(.7);-ms-transform:scale(.7);-o-transform:scale(.7);-webkit-transform:scale(.7);transform:scale(.7);-moz-transform-origin:top right;-ms-transform-origin:top right;-o-transform-origin:top right;-webkit-transform-origin:top right;transform-origin:top right}.player-controls #button-list .button,.player-controls #button-list .toggle-button{margin-right:.2em;margin-left:.2em}.fresh-transport-controls .progress-bar{width:59%}.fresh-transport-controls #player-time-elapsed,.fresh-transport-controls .player-time-total{font-size:1em;width:14%}.fresh-transport-controls .button,.fresh-transport-controls .toggle-button{font-size:1.1em}.fresh-transport-controls #transport-more-button{font-size:1.7em}#dialog-wrapper{padding:1.3em 3em}.dialog-contents{font-size:95%}#dialog-wrapper .connection-steps{padding:0}#dialog-wrapper .pairing .qr-code,#dialog-wrapper .pairing .connected-list{margin:.2em}.context-menu-list{left:30%;right:30%}.voice-footer .list{font-size:0.65em;padding-left:22em;padding-right:18em;padding-top:1.3em}}.sets-ui .carousel .item,.sets-ui .carousel .channel-tile,.sets-ui .carousel .auto-play-tile{background-color:inherit!important}.sets-ui .carousel .item:hover,.sets-ui .carousel .channel-tile:hover,.sets-ui .carousel .auto-play-tile:hover{background-color:rgba(255,255,255,.1)!important}.sets-ui .tile .channel-bottom>.title,.sets-ui .tile .tile-bottom>.title{color:#e1e1e1}.sets-ui .tile .channel-bottom>.details,.sets-ui .tile .tile-bottom>.details{color:#646464}.sets-ui .tile.focused.selected .channel-bottom>.title,.sets-ui .tile.focused.selected .tile-bottom>.title{color:#212121}.sets-ui .tile.focused.selected .channel-bottom>.details,.sets-ui .tile.focused.selected .tile-bottom>.details{color:#8d8d8d}.sets-ui #transport-controls .player-controls #button-list div.icon-player-more,.sets-ui #transport-controls .player-controls #button-list div.icon-player-less{color:#fff}.sets-ui #transport-controls .player-controls #button-list div.icon-player-more.focused,.sets-ui #transport-controls .player-controls #button-list div.icon-player-less.focused{color:#222}.sets-ui .settings-title{font-size:1.5em}.sets-ui .action-tile .title{font-size:2.4em;margin-left:.1em;margin-right:.1em}.sets-ui .flag-list.grid{margin:3.25em}.sets-ui .flag-list .list{text-align:left}.sets-ui .flag-list .button{width:14em;text-align:center}.sets-ui .flag-example{top:20%}.sets-ui .flag-video{margin-left:2em;text-align:left}.sets-ui .flag-claim .privacy-invasion{margin:auto;width:50%}.sets-ui .authentication-error-dialog,.sets-ui .delete-video-error,.sets-ui .missing-channel-error,.sets-ui .server-unavailable,.sets-ui .network-error-dialog{margin-top:1em}.sets-ui .eureka-authorization-dialog .icon,.sets-ui .eureka-player-error-dialog .icon{margin-left:3em}.sets-ui .eureka-authorization-dialog .info,.sets-ui .eureka-player-error-dialog .info{width:50%}.sets-ui .debug-dialog{padding:0 1em;text-align:left}.sets-ui .text-dialog #dialog-view{width:auto}.sets-ui #dialog .platform-container{font-size:.6em;margin-bottom:.5em}.sets-ui .paid-channel-dialog{margin:1em}.sets-ui #dialog .connection-instructions .icon-settings-pair{display:none}.sets-ui .closed-captions-dialog{text-align:left;padding-left:1em}.sets-ui .delete-video-error,.sets-ui .paid-scope-dialog,.sets-ui .video-edit-error,.sets-ui .video-processing,.sets-ui .video-upload-error{margin:3em;font-size:1.6em}.limited-animation .auto-play-tile.focused .video-tile{background-color:#f1f1f1}.limited-animation.sets-ui .title-card{background:-o-linear-gradient(top,rgba(0,0,0,0.9),rgba(0,0,0,0.8),transparent);background:-webkit-linear-gradient(top,rgba(0,0,0,0.9),rgba(0,0,0,0.8),transparent);background:linear-gradient(to bottom,rgba(0,0,0,0.9),rgba(0,0,0,0.8),transparent)}.limited-animation.sets-ui #search #text-box-background,.limited-animation.sets-ui #search #search-text-entry{background-color:rgba(0,0,0,0)}.sets-ui .scrolling-text{text-align:left;padding-left:1em;height:20em}.sets-ui #dialog .scrollbar{right:11em}.sets-ui #dialog-view .reset-help{width:20em}.sets-ui #dialog.remote-reset-dialog .buttons{position:inherit}.sets-ui #dialog.remote-reset-dialog .reset-help{height:11em;padding-left:1em;text-align:left}.sets-ui #dialog.remote-reset-dialog .connected-list{margin-right:2em}.sets-ui .dialog-focused #legend{bottom:17%;right:16%}.exp-densityFiveTiles .horizontal-list>.content{font-size:59%}.exp-densityFiveTiles .shelf>.title{font-size:1.5em;margin-bottom:.75em;margin-top:0}.exp-densityFiveTiles .channel-bottom .title,.exp-densityFiveTiles .tile-bottom .title{font-size:1.75em}.exp-densityFiveTiles .tile-bottom .details{font-size:1.5em;height:50%;margin:.2em 1em 0 0}.exp-densityFiveTiles .channel-top .video-thumb{border-radius:50%}.limited-animation .exp-densityFiveTiles .browse-content .list{margin-left:-8em;width:155em}.exp-densityFourTiles .horizontal-list>.content{font-size:67%}.exp-densityFourTiles .shelf>.title{font-size:1.5em;margin-bottom:.75em;margin-top:0}.exp-densityFourTiles .channel-bottom .title,.exp-densityFourTiles .tile-bottom .title{font-size:1.75em}.exp-densityFourTiles .tile-bottom .details{font-size:1.5em;height:50%;margin:.2em 1em 0 0}.limited-animation .exp-densityFourTiles .browse-content .list{margin-left:-8.5em;width:155em}.exp-densityFourTiles .channel-top .video-thumb{border-radius:50%}.exp-densityHideMetadata .shelf .horizontal-list .tile-bottom,.exp-densityHideMetadata .shelf .horizontal-list .channel-bottom{display:none}.exp-densityHideMetadata .shelf.selected .horizontal-list .tile-bottom,.exp-densityHideMetadata .shelf.selected .horizontal-list .channel-bottom{display:block}.exp-densityHideMetadata .horizontal-list .video-tile .tile-top .decoration{display:none}.exp-densityHideMetadata #search .tile-top .decoration,.exp-densityHideMetadata #post-play-list .tile-top .decoration,.exp-densityHideMetadata .shelf.selected .horizontal-list .tile-top .decoration{display:block}.exp-densityHideMetadata .shelf:not(.selected) .channel-tile .video-thumb{height:70%;width:70%}.sets-ui .exp-densityHideMetadata .shelf:not(.selected) .carousel .item:hover,.sets-ui .exp-densityHideMetadata .shelf:not(.selected) .carousel .channel-tile:hover{background-color:inherit!important}.limited-animation .exp-densityHideMetadata .browse-content .list .shelf:nth-child(1){margin-bottom:9.5em}.limited-animation.sets-ui .exp-densityHideMetadata .channel-tile:not(.focused),.limited-animation.sets-ui .exp-densityHideMetadata .video-tile:not(.focused){background-color:inherit}.roku.limited-animation.sets-ui .exp-densityHideMetadata .channel-tile:hover:not(.focused),.roku.limited-animation.sets-ui .exp-densityHideMetadata .video-tile:hover:not(.focused){background-color:inherit}
\ No newline at end of file
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-active.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-active.png
new file mode 100644
index 0000000..14a8c41
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-active.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-onhover-active.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-onhover-active.png
new file mode 100644
index 0000000..79b4fbb
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-fullscreen-onhover-active.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-active.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-active.png
new file mode 100644
index 0000000..1022073
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-active.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-onhover-active.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-onhover-active.png
new file mode 100644
index 0000000..a1cb606
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-mute-onhover-active.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-active.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-active.png
new file mode 100644
index 0000000..6e017dc
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-active.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-onhover-active.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-onhover-active.png
new file mode 100644
index 0000000..2efdf75
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/button-unmute-onhover-active.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-gaming-heart.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-gaming-heart.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-gaming-heart.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-mother-goose.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-mother-goose.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-mother-goose.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-promo.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-promo.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-promo.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-rainbow.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-rainbow.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-rainbow.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-sesame.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-sesame.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-sesame.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-talking-tom.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-talking-tom.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-talking-tom.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-wonderquest.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-wonderquest.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-kids-wonderquest.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-loki.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-loki.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-loki.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-multi-user.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-multi-user.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-multi-user.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-tv-queue.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-tv-queue.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-tv-queue.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-yt-mix.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-yt-mix.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-end-screen-yt-mix.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music-party-logo.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music-party-logo.png
new file mode 100644
index 0000000..bae7f19
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music-party-logo.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music.jpg
new file mode 100644
index 0000000..4cf9844
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-music.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-yt-logo.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-yt-logo.png
new file mode 100644
index 0000000..fdd416d
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/call-to-cast-yt-logo.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/cast_disconnected_blue.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/cast_disconnected_blue.png
new file mode 100644
index 0000000..da20b33
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/cast_disconnected_blue.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/circle.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/circle.png
new file mode 100644
index 0000000..9222c60
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/circle.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/default_bg.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/default_bg.jpg
new file mode 100644
index 0000000..a55be3c
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/default_bg.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/dial-sprite.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/dial-sprite.png
new file mode 100644
index 0000000..6c86373
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/dial-sprite.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_dark.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_dark.png
new file mode 100644
index 0000000..fbafd90
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_dark.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_light.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_light.png
new file mode 100644
index 0000000..1bbade8
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/edit_tile_light.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/flag.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/flag.png
new file mode 100644
index 0000000..0f17309
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/flag.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-aaa-engaged.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-aaa-engaged.png
new file mode 100644
index 0000000..35a3db2
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-aaa-engaged.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-feedback.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-feedback.png
new file mode 100644
index 0000000..426b4b3
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-feedback.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-fullscreen.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-fullscreen.png
new file mode 100644
index 0000000..c708e76
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-fullscreen.png
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang=en>
+  <meta charset=utf-8>
+  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
+  <title>Error 404 (Not Found)!!1</title>
+  <style>
+    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
+  </style>
+  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
+  <p><b>404.</b> <ins>That’s an error.</ins>
+  <p>The requested URL <code>/s/tv/html5/f0d770f4/img/icon-fullscreen.png</code> was not found on this server.  <ins>That’s all we know.</ins>
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-help.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-help.png
new file mode 100644
index 0000000..21839e2
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-help.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-mute.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-mute.png
new file mode 100644
index 0000000..999078d
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-mute.png
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang=en>
+  <meta charset=utf-8>
+  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
+  <title>Error 404 (Not Found)!!1</title>
+  <style>
+    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
+  </style>
+  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
+  <p><b>404.</b> <ins>That’s an error.</ins>
+  <p>The requested URL <code>/s/tv/html5/f0d770f4/img/icon-mute.png</code> was not found on this server.  <ins>That’s all we know.</ins>
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-playbutton.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-playbutton.png
new file mode 100644
index 0000000..8ac546c
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-playbutton.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-dark.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-dark.png
new file mode 100644
index 0000000..e6f1240
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-dark.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-light.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-light.png
new file mode 100644
index 0000000..b39bd87
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-check-light.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-dark.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-dark.png
new file mode 100644
index 0000000..2a16694
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-dark.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-light.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-light.png
new file mode 100644
index 0000000..c7b3d38
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-private-light.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-dark.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-dark.png
new file mode 100644
index 0000000..87b0492
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-dark.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-light.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-light.png
new file mode 100644
index 0000000..42faaa1
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-public-light.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-dark.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-dark.png
new file mode 100644
index 0000000..248782d
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-dark.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-light.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-light.png
new file mode 100644
index 0000000..9f37410
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-privacy-unlisted-light.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-unmute.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-unmute.png
new file mode 100644
index 0000000..70da26b
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icon-unmute.png
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang=en>
+  <meta charset=utf-8>
+  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
+  <title>Error 404 (Not Found)!!1</title>
+  <style>
+    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
+  </style>
+  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
+  <p><b>404.</b> <ins>That’s an error.</ins>
+  <p>The requested URL <code>/s/tv/html5/f0d770f4/img/icon-unmute.png</code> was not found on this server.  <ins>That’s all we know.</ins>
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icons.ttf b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icons.ttf
new file mode 100644
index 0000000..929a78f
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/icons.ttf
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-bbb.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-bbb.png
new file mode 100644
index 0000000..ea9e5b8
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-bbb.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ccc.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ccc.png
new file mode 100644
index 0000000..7727e8c
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ccc.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ddd.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ddd.png
new file mode 100644
index 0000000..f6b0382
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ddd.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-desktop.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-desktop.png
new file mode 100644
index 0000000..99979f0
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-desktop.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-eee.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-eee.png
new file mode 100644
index 0000000..1d2930b
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-eee.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-fff.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-fff.png
new file mode 100644
index 0000000..056ccf9
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-fff.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ggg.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ggg.png
new file mode 100644
index 0000000..8d846cb
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/legend-sprite-ggg.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/motion-control-sprite.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/motion-control-sprite.png
new file mode 100644
index 0000000..0ecee6d
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/motion-control-sprite.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/pair_promo.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/pair_promo.png
new file mode 100644
index 0000000..7bbb8ba
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/pair_promo.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/pairing-promo-combo.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/pairing-promo-combo.png
new file mode 100644
index 0000000..7442d55
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/pairing-promo-combo.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/player-pause.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/player-pause.png
new file mode 100644
index 0000000..afab54d
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/player-pause.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/player-play.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/player-play.png
new file mode 100644
index 0000000..bdd2471
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/player-play.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_dark.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_dark.png
new file mode 100644
index 0000000..495f00f
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_dark.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_light.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_light.png
new file mode 100644
index 0000000..049ef34
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/trash_tile_light.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_0_pressed.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_0_pressed.png
new file mode 100644
index 0000000..7abd5c6
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_0_pressed.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_1_pressed.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_1_pressed.png
new file mode 100644
index 0000000..d283c5a
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_1_pressed.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_2_pressed.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_2_pressed.png
new file mode 100644
index 0000000..8eb2ac0
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_2_pressed.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_mute_pressed.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_mute_pressed.png
new file mode 100644
index 0000000..b867b7f
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/volume_mute_pressed.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-kids-logo.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-kids-logo.png
new file mode 100644
index 0000000..2de9041
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-kids-logo.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-logo-fullcolor.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-logo-fullcolor.png
new file mode 100644
index 0000000..1fa0d1a
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-logo-fullcolor.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo-small.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo-small.png
new file mode 100644
index 0000000..e73e0fc
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo-small.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo.png b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo.png
new file mode 100644
index 0000000..8e60577
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/f0d770f4/img/yt-music-logo.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/misc/fonts/Roboto-Regular-20140804.ttf b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/misc/fonts/Roboto-Regular-20140804.ttf
new file mode 100644
index 0000000..0e58508
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/www.youtube.com/s/tv/html5/misc/fonts/Roboto-Regular-20140804.ttf
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/yt3.ggpht.com/-dL2jeHlm2Ok/AAAAAAAAAAI/AAAAAAAAAAA/ZCMMkRj-hrw/s88-c-k-no/photo.jpg b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/yt3.ggpht.com/-dL2jeHlm2Ok/AAAAAAAAAAI/AAAAAAAAAAA/ZCMMkRj-hrw/s88-c-k-no/photo.jpg
new file mode 100644
index 0000000..56b34fe
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/benchmarks/youtube-2015-q3/yt3.ggpht.com/-dL2jeHlm2Ok/AAAAAAAAAAI/AAAAAAAAAAA/ZCMMkRj-hrw/s88-c-k-no/photo.jpg
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/cobalt/1000-nested-elements-expected.png b/src/cobalt/layout_tests/testdata/cobalt/1000-nested-elements-expected.png
new file mode 100644
index 0000000..0a80611
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/cobalt/1000-nested-elements-expected.png
Binary files differ
diff --git a/src/cobalt/layout_tests/testdata/cobalt/1000-nested-elements.html b/src/cobalt/layout_tests/testdata/cobalt/1000-nested-elements.html
new file mode 100644
index 0000000..bc583e3
--- /dev/null
+++ b/src/cobalt/layout_tests/testdata/cobalt/1000-nested-elements.html
@@ -0,0 +1,1020 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <style>
+    body {
+      background-color: white;
+      font-family: Roboto;
+      font-size: 30px;
+    }
+  </style>
+</head>
+<body>
+
+  <!-- 1000 nested <span>s, closing tags are implied. -->
+  <!-- Cobalt should only attach 29 <span>s, since there're the document, <html>
+  and <body> in the stack, given that max depth is 32. -->
+
+  <span>1
+  <span>2
+  <span>3
+  <span>4
+  <span>5
+  <span>6
+  <span>7
+  <span>8
+  <span>9
+  <span>10
+  <span>11
+  <span>12
+  <span>13
+  <span>14
+  <span>15
+  <span>16
+  <span>17
+  <span>18
+  <span>19
+  <span>20
+  <span>21
+  <span>22
+  <span>23
+  <span>24
+  <span>25
+  <span>26
+  <span>27
+  <span>28
+  <span>29
+  <span>30
+  <span>31
+  <span>32
+  <span>33
+  <span>34
+  <span>35
+  <span>36
+  <span>37
+  <span>38
+  <span>39
+  <span>40
+  <span>41
+  <span>42
+  <span>43
+  <span>44
+  <span>45
+  <span>46
+  <span>47
+  <span>48
+  <span>49
+  <span>50
+  <span>51
+  <span>52
+  <span>53
+  <span>54
+  <span>55
+  <span>56
+  <span>57
+  <span>58
+  <span>59
+  <span>60
+  <span>61
+  <span>62
+  <span>63
+  <span>64
+  <span>65
+  <span>66
+  <span>67
+  <span>68
+  <span>69
+  <span>70
+  <span>71
+  <span>72
+  <span>73
+  <span>74
+  <span>75
+  <span>76
+  <span>77
+  <span>78
+  <span>79
+  <span>80
+  <span>81
+  <span>82
+  <span>83
+  <span>84
+  <span>85
+  <span>86
+  <span>87
+  <span>88
+  <span>89
+  <span>90
+  <span>91
+  <span>92
+  <span>93
+  <span>94
+  <span>95
+  <span>96
+  <span>97
+  <span>98
+  <span>99
+  <span>100
+  <span>101
+  <span>102
+  <span>103
+  <span>104
+  <span>105
+  <span>106
+  <span>107
+  <span>108
+  <span>109
+  <span>110
+  <span>111
+  <span>112
+  <span>113
+  <span>114
+  <span>115
+  <span>116
+  <span>117
+  <span>118
+  <span>119
+  <span>120
+  <span>121
+  <span>122
+  <span>123
+  <span>124
+  <span>125
+  <span>126
+  <span>127
+  <span>128
+  <span>129
+  <span>130
+  <span>131
+  <span>132
+  <span>133
+  <span>134
+  <span>135
+  <span>136
+  <span>137
+  <span>138
+  <span>139
+  <span>140
+  <span>141
+  <span>142
+  <span>143
+  <span>144
+  <span>145
+  <span>146
+  <span>147
+  <span>148
+  <span>149
+  <span>150
+  <span>151
+  <span>152
+  <span>153
+  <span>154
+  <span>155
+  <span>156
+  <span>157
+  <span>158
+  <span>159
+  <span>160
+  <span>161
+  <span>162
+  <span>163
+  <span>164
+  <span>165
+  <span>166
+  <span>167
+  <span>168
+  <span>169
+  <span>170
+  <span>171
+  <span>172
+  <span>173
+  <span>174
+  <span>175
+  <span>176
+  <span>177
+  <span>178
+  <span>179
+  <span>180
+  <span>181
+  <span>182
+  <span>183
+  <span>184
+  <span>185
+  <span>186
+  <span>187
+  <span>188
+  <span>189
+  <span>190
+  <span>191
+  <span>192
+  <span>193
+  <span>194
+  <span>195
+  <span>196
+  <span>197
+  <span>198
+  <span>199
+  <span>200
+  <span>201
+  <span>202
+  <span>203
+  <span>204
+  <span>205
+  <span>206
+  <span>207
+  <span>208
+  <span>209
+  <span>210
+  <span>211
+  <span>212
+  <span>213
+  <span>214
+  <span>215
+  <span>216
+  <span>217
+  <span>218
+  <span>219
+  <span>220
+  <span>221
+  <span>222
+  <span>223
+  <span>224
+  <span>225
+  <span>226
+  <span>227
+  <span>228
+  <span>229
+  <span>230
+  <span>231
+  <span>232
+  <span>233
+  <span>234
+  <span>235
+  <span>236
+  <span>237
+  <span>238
+  <span>239
+  <span>240
+  <span>241
+  <span>242
+  <span>243
+  <span>244
+  <span>245
+  <span>246
+  <span>247
+  <span>248
+  <span>249
+  <span>250
+  <span>251
+  <span>252
+  <span>253
+  <span>254
+  <span>255
+  <span>256
+  <span>257
+  <span>258
+  <span>259
+  <span>260
+  <span>261
+  <span>262
+  <span>263
+  <span>264
+  <span>265
+  <span>266
+  <span>267
+  <span>268
+  <span>269
+  <span>270
+  <span>271
+  <span>272
+  <span>273
+  <span>274
+  <span>275
+  <span>276
+  <span>277
+  <span>278
+  <span>279
+  <span>280
+  <span>281
+  <span>282
+  <span>283
+  <span>284
+  <span>285
+  <span>286
+  <span>287
+  <span>288
+  <span>289
+  <span>290
+  <span>291
+  <span>292
+  <span>293
+  <span>294
+  <span>295
+  <span>296
+  <span>297
+  <span>298
+  <span>299
+  <span>300
+  <span>301
+  <span>302
+  <span>303
+  <span>304
+  <span>305
+  <span>306
+  <span>307
+  <span>308
+  <span>309
+  <span>310
+  <span>311
+  <span>312
+  <span>313
+  <span>314
+  <span>315
+  <span>316
+  <span>317
+  <span>318
+  <span>319
+  <span>320
+  <span>321
+  <span>322
+  <span>323
+  <span>324
+  <span>325
+  <span>326
+  <span>327
+  <span>328
+  <span>329
+  <span>330
+  <span>331
+  <span>332
+  <span>333
+  <span>334
+  <span>335
+  <span>336
+  <span>337
+  <span>338
+  <span>339
+  <span>340
+  <span>341
+  <span>342
+  <span>343
+  <span>344
+  <span>345
+  <span>346
+  <span>347
+  <span>348
+  <span>349
+  <span>350
+  <span>351
+  <span>352
+  <span>353
+  <span>354
+  <span>355
+  <span>356
+  <span>357
+  <span>358
+  <span>359
+  <span>360
+  <span>361
+  <span>362
+  <span>363
+  <span>364
+  <span>365
+  <span>366
+  <span>367
+  <span>368
+  <span>369
+  <span>370
+  <span>371
+  <span>372
+  <span>373
+  <span>374
+  <span>375
+  <span>376
+  <span>377
+  <span>378
+  <span>379
+  <span>380
+  <span>381
+  <span>382
+  <span>383
+  <span>384
+  <span>385
+  <span>386
+  <span>387
+  <span>388
+  <span>389
+  <span>390
+  <span>391
+  <span>392
+  <span>393
+  <span>394
+  <span>395
+  <span>396
+  <span>397
+  <span>398
+  <span>399
+  <span>400
+  <span>401
+  <span>402
+  <span>403
+  <span>404
+  <span>405
+  <span>406
+  <span>407
+  <span>408
+  <span>409
+  <span>410
+  <span>411
+  <span>412
+  <span>413
+  <span>414
+  <span>415
+  <span>416
+  <span>417
+  <span>418
+  <span>419
+  <span>420
+  <span>421
+  <span>422
+  <span>423
+  <span>424
+  <span>425
+  <span>426
+  <span>427
+  <span>428
+  <span>429
+  <span>430
+  <span>431
+  <span>432
+  <span>433
+  <span>434
+  <span>435
+  <span>436
+  <span>437
+  <span>438
+  <span>439
+  <span>440
+  <span>441
+  <span>442
+  <span>443
+  <span>444
+  <span>445
+  <span>446
+  <span>447
+  <span>448
+  <span>449
+  <span>450
+  <span>451
+  <span>452
+  <span>453
+  <span>454
+  <span>455
+  <span>456
+  <span>457
+  <span>458
+  <span>459
+  <span>460
+  <span>461
+  <span>462
+  <span>463
+  <span>464
+  <span>465
+  <span>466
+  <span>467
+  <span>468
+  <span>469
+  <span>470
+  <span>471
+  <span>472
+  <span>473
+  <span>474
+  <span>475
+  <span>476
+  <span>477
+  <span>478
+  <span>479
+  <span>480
+  <span>481
+  <span>482
+  <span>483
+  <span>484
+  <span>485
+  <span>486
+  <span>487
+  <span>488
+  <span>489
+  <span>490
+  <span>491
+  <span>492
+  <span>493
+  <span>494
+  <span>495
+  <span>496
+  <span>497
+  <span>498
+  <span>499
+  <span>500
+  <span>501
+  <span>502
+  <span>503
+  <span>504
+  <span>505
+  <span>506
+  <span>507
+  <span>508
+  <span>509
+  <span>510
+  <span>511
+  <span>512
+  <span>513
+  <span>514
+  <span>515
+  <span>516
+  <span>517
+  <span>518
+  <span>519
+  <span>520
+  <span>521
+  <span>522
+  <span>523
+  <span>524
+  <span>525
+  <span>526
+  <span>527
+  <span>528
+  <span>529
+  <span>530
+  <span>531
+  <span>532
+  <span>533
+  <span>534
+  <span>535
+  <span>536
+  <span>537
+  <span>538
+  <span>539
+  <span>540
+  <span>541
+  <span>542
+  <span>543
+  <span>544
+  <span>545
+  <span>546
+  <span>547
+  <span>548
+  <span>549
+  <span>550
+  <span>551
+  <span>552
+  <span>553
+  <span>554
+  <span>555
+  <span>556
+  <span>557
+  <span>558
+  <span>559
+  <span>560
+  <span>561
+  <span>562
+  <span>563
+  <span>564
+  <span>565
+  <span>566
+  <span>567
+  <span>568
+  <span>569
+  <span>570
+  <span>571
+  <span>572
+  <span>573
+  <span>574
+  <span>575
+  <span>576
+  <span>577
+  <span>578
+  <span>579
+  <span>580
+  <span>581
+  <span>582
+  <span>583
+  <span>584
+  <span>585
+  <span>586
+  <span>587
+  <span>588
+  <span>589
+  <span>590
+  <span>591
+  <span>592
+  <span>593
+  <span>594
+  <span>595
+  <span>596
+  <span>597
+  <span>598
+  <span>599
+  <span>600
+  <span>601
+  <span>602
+  <span>603
+  <span>604
+  <span>605
+  <span>606
+  <span>607
+  <span>608
+  <span>609
+  <span>610
+  <span>611
+  <span>612
+  <span>613
+  <span>614
+  <span>615
+  <span>616
+  <span>617
+  <span>618
+  <span>619
+  <span>620
+  <span>621
+  <span>622
+  <span>623
+  <span>624
+  <span>625
+  <span>626
+  <span>627
+  <span>628
+  <span>629
+  <span>630
+  <span>631
+  <span>632
+  <span>633
+  <span>634
+  <span>635
+  <span>636
+  <span>637
+  <span>638
+  <span>639
+  <span>640
+  <span>641
+  <span>642
+  <span>643
+  <span>644
+  <span>645
+  <span>646
+  <span>647
+  <span>648
+  <span>649
+  <span>650
+  <span>651
+  <span>652
+  <span>653
+  <span>654
+  <span>655
+  <span>656
+  <span>657
+  <span>658
+  <span>659
+  <span>660
+  <span>661
+  <span>662
+  <span>663
+  <span>664
+  <span>665
+  <span>666
+  <span>667
+  <span>668
+  <span>669
+  <span>670
+  <span>671
+  <span>672
+  <span>673
+  <span>674
+  <span>675
+  <span>676
+  <span>677
+  <span>678
+  <span>679
+  <span>680
+  <span>681
+  <span>682
+  <span>683
+  <span>684
+  <span>685
+  <span>686
+  <span>687
+  <span>688
+  <span>689
+  <span>690
+  <span>691
+  <span>692
+  <span>693
+  <span>694
+  <span>695
+  <span>696
+  <span>697
+  <span>698
+  <span>699
+  <span>700
+  <span>701
+  <span>702
+  <span>703
+  <span>704
+  <span>705
+  <span>706
+  <span>707
+  <span>708
+  <span>709
+  <span>710
+  <span>711
+  <span>712
+  <span>713
+  <span>714
+  <span>715
+  <span>716
+  <span>717
+  <span>718
+  <span>719
+  <span>720
+  <span>721
+  <span>722
+  <span>723
+  <span>724
+  <span>725
+  <span>726
+  <span>727
+  <span>728
+  <span>729
+  <span>730
+  <span>731
+  <span>732
+  <span>733
+  <span>734
+  <span>735
+  <span>736
+  <span>737
+  <span>738
+  <span>739
+  <span>740
+  <span>741
+  <span>742
+  <span>743
+  <span>744
+  <span>745
+  <span>746
+  <span>747
+  <span>748
+  <span>749
+  <span>750
+  <span>751
+  <span>752
+  <span>753
+  <span>754
+  <span>755
+  <span>756
+  <span>757
+  <span>758
+  <span>759
+  <span>760
+  <span>761
+  <span>762
+  <span>763
+  <span>764
+  <span>765
+  <span>766
+  <span>767
+  <span>768
+  <span>769
+  <span>770
+  <span>771
+  <span>772
+  <span>773
+  <span>774
+  <span>775
+  <span>776
+  <span>777
+  <span>778
+  <span>779
+  <span>780
+  <span>781
+  <span>782
+  <span>783
+  <span>784
+  <span>785
+  <span>786
+  <span>787
+  <span>788
+  <span>789
+  <span>790
+  <span>791
+  <span>792
+  <span>793
+  <span>794
+  <span>795
+  <span>796
+  <span>797
+  <span>798
+  <span>799
+  <span>800
+  <span>801
+  <span>802
+  <span>803
+  <span>804
+  <span>805
+  <span>806
+  <span>807
+  <span>808
+  <span>809
+  <span>810
+  <span>811
+  <span>812
+  <span>813
+  <span>814
+  <span>815
+  <span>816
+  <span>817
+  <span>818
+  <span>819
+  <span>820
+  <span>821
+  <span>822
+  <span>823
+  <span>824
+  <span>825
+  <span>826
+  <span>827
+  <span>828
+  <span>829
+  <span>830
+  <span>831
+  <span>832
+  <span>833
+  <span>834
+  <span>835
+  <span>836
+  <span>837
+  <span>838
+  <span>839
+  <span>840
+  <span>841
+  <span>842
+  <span>843
+  <span>844
+  <span>845
+  <span>846
+  <span>847
+  <span>848
+  <span>849
+  <span>850
+  <span>851
+  <span>852
+  <span>853
+  <span>854
+  <span>855
+  <span>856
+  <span>857
+  <span>858
+  <span>859
+  <span>860
+  <span>861
+  <span>862
+  <span>863
+  <span>864
+  <span>865
+  <span>866
+  <span>867
+  <span>868
+  <span>869
+  <span>870
+  <span>871
+  <span>872
+  <span>873
+  <span>874
+  <span>875
+  <span>876
+  <span>877
+  <span>878
+  <span>879
+  <span>880
+  <span>881
+  <span>882
+  <span>883
+  <span>884
+  <span>885
+  <span>886
+  <span>887
+  <span>888
+  <span>889
+  <span>890
+  <span>891
+  <span>892
+  <span>893
+  <span>894
+  <span>895
+  <span>896
+  <span>897
+  <span>898
+  <span>899
+  <span>900
+  <span>901
+  <span>902
+  <span>903
+  <span>904
+  <span>905
+  <span>906
+  <span>907
+  <span>908
+  <span>909
+  <span>910
+  <span>911
+  <span>912
+  <span>913
+  <span>914
+  <span>915
+  <span>916
+  <span>917
+  <span>918
+  <span>919
+  <span>920
+  <span>921
+  <span>922
+  <span>923
+  <span>924
+  <span>925
+  <span>926
+  <span>927
+  <span>928
+  <span>929
+  <span>930
+  <span>931
+  <span>932
+  <span>933
+  <span>934
+  <span>935
+  <span>936
+  <span>937
+  <span>938
+  <span>939
+  <span>940
+  <span>941
+  <span>942
+  <span>943
+  <span>944
+  <span>945
+  <span>946
+  <span>947
+  <span>948
+  <span>949
+  <span>950
+  <span>951
+  <span>952
+  <span>953
+  <span>954
+  <span>955
+  <span>956
+  <span>957
+  <span>958
+  <span>959
+  <span>960
+  <span>961
+  <span>962
+  <span>963
+  <span>964
+  <span>965
+  <span>966
+  <span>967
+  <span>968
+  <span>969
+  <span>970
+  <span>971
+  <span>972
+  <span>973
+  <span>974
+  <span>975
+  <span>976
+  <span>977
+  <span>978
+  <span>979
+  <span>980
+  <span>981
+  <span>982
+  <span>983
+  <span>984
+  <span>985
+  <span>986
+  <span>987
+  <span>988
+  <span>989
+  <span>990
+  <span>991
+  <span>992
+  <span>993
+  <span>994
+  <span>995
+  <span>996
+  <span>997
+  <span>998
+  <span>999
+  <span>1000
+
+</body>
+</html>
diff --git a/src/cobalt/layout_tests/testdata/cobalt/layout_tests.txt b/src/cobalt/layout_tests/testdata/cobalt/layout_tests.txt
index 7ada83e..93e5eda 100644
--- a/src/cobalt/layout_tests/testdata/cobalt/layout_tests.txt
+++ b/src/cobalt/layout_tests/testdata/cobalt/layout_tests.txt
@@ -1,3 +1,4 @@
+1000-nested-elements
 block-and-inline-block-display
 changing-css-text-triggers-layout
 cobalt-oxide, file:///cobalt/browser/testdata/cobalt-oxide/cobalt-oxide.html
diff --git a/src/cobalt/media/can_play_type_handler.h b/src/cobalt/media/can_play_type_handler.h
new file mode 100644
index 0000000..7fdf060
--- /dev/null
+++ b/src/cobalt/media/can_play_type_handler.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2016 Google Inc. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef COBALT_MEDIA_CAN_PLAY_TYPE_HANDLER_H_
+#define COBALT_MEDIA_CAN_PLAY_TYPE_HANDLER_H_
+
+#include <string>
+
+namespace cobalt {
+namespace media {
+
+class CanPlayTypeHandler {
+ public:
+  virtual std::string CanPlayType(const std::string& mime_type,
+                                  const std::string& key_system) = 0;
+
+ protected:
+  CanPlayTypeHandler() {}
+  ~CanPlayTypeHandler() {}
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(CanPlayTypeHandler);
+};
+
+}  // namespace media
+}  // namespace cobalt
+
+#endif  // COBALT_MEDIA_CAN_PLAY_TYPE_HANDLER_H_
diff --git a/src/cobalt/media/media.gyp b/src/cobalt/media/media.gyp
index a61b8a8..0713216 100644
--- a/src/cobalt/media/media.gyp
+++ b/src/cobalt/media/media.gyp
@@ -21,6 +21,7 @@
       'target_name': 'media',
       'type': 'static_library',
       'sources': [
+        'can_play_type_handler.h',
         'fetcher_buffered_data_source.cc',
         'fetcher_buffered_data_source.h',
         'media_module.h',
diff --git a/src/cobalt/media/media_module.h b/src/cobalt/media/media_module.h
index 933b214..c055bd6 100644
--- a/src/cobalt/media/media_module.h
+++ b/src/cobalt/media/media_module.h
@@ -26,6 +26,7 @@
 #include "base/memory/scoped_ptr.h"
 #include "cobalt/base/user_log.h"
 #include "cobalt/math/size.h"
+#include "cobalt/media/can_play_type_handler.h"
 #include "cobalt/media/web_media_player_factory.h"
 #include "cobalt/render_tree/image.h"
 #include "cobalt/render_tree/resource_provider.h"
@@ -38,17 +39,20 @@
 namespace media {
 
 // TODO: Collapse MediaModule into ShellMediaPlatform.
-class MediaModule : public WebMediaPlayerFactory,
+class MediaModule : public CanPlayTypeHandler,
+                    public WebMediaPlayerFactory,
                     public ::media::WebMediaPlayerDelegate {
  public:
   struct Options {
     Options()
         : use_audio_decoder_stub(false),
           use_null_audio_streamer(false),
-          use_video_decoder_stub(false) {}
+          use_video_decoder_stub(false),
+          disable_webm_vp9(false) {}
     bool use_audio_decoder_stub;
     bool use_null_audio_streamer;
     bool use_video_decoder_stub;
+    bool disable_webm_vp9;
   };
 
   typedef ::media::WebMediaPlayer WebMediaPlayer;
diff --git a/src/cobalt/media/media_module_starboard.cc b/src/cobalt/media/media_module_starboard.cc
index e8c2368..5e388a1 100644
--- a/src/cobalt/media/media_module_starboard.cc
+++ b/src/cobalt/media/media_module_starboard.cc
@@ -30,6 +30,7 @@
 #include "media/filters/shell_raw_video_decoder_stub.h"
 #include "media/filters/shell_video_decoder_impl.h"
 #include "media/player/web_media_player_impl.h"
+#include "starboard/media.h"
 
 namespace cobalt {
 namespace media {
@@ -45,6 +46,21 @@
                        const Options& options)
       : options_(options), media_platform_(resource_provider) {}
 
+  std::string CanPlayType(const std::string& mime_type,
+                          const std::string& key_system) OVERRIDE {
+    SbMediaSupportType type =
+        SbMediaCanPlayMimeAndKeySystem(mime_type.c_str(), key_system.c_str());
+    switch (type) {
+      case kSbMediaSupportTypeNotSupported:
+        return "";
+      case kSbMediaSupportTypeMaybe:
+        return "maybe";
+      case kSbMediaSupportTypeProbably:
+        return "probably";
+    }
+    NOTREACHED();
+    return "";
+  }
   scoped_ptr<WebMediaPlayer> CreateWebMediaPlayer(
       ::media::WebMediaPlayerClient* client) OVERRIDE {
     scoped_ptr<MessageLoopFactory> message_loop_factory(new MessageLoopFactory);
diff --git a/src/cobalt/media/media_module_stub.cc b/src/cobalt/media/media_module_stub.cc
index e2ddcfd..90813e1 100644
--- a/src/cobalt/media/media_module_stub.cc
+++ b/src/cobalt/media/media_module_stub.cc
@@ -16,6 +16,8 @@
 
 #include "cobalt/media/media_module_stub.h"
 
+#include <string>
+
 #include "base/compiler_specific.h"
 
 namespace cobalt {
@@ -95,6 +97,13 @@
 
 using ::media::WebMediaPlayer;
 
+std::string MediaModuleStub::CanPlayType(const std::string& mime_type,
+                                         const std::string& key_system) {
+  UNREFERENCED_PARAMETER(mime_type);
+  UNREFERENCED_PARAMETER(key_system);
+  return "";  // Cannot play.
+}
+
 scoped_ptr<WebMediaPlayer> MediaModuleStub::CreateWebMediaPlayer(
     ::media::WebMediaPlayerClient* client) {
   UNREFERENCED_PARAMETER(client);
diff --git a/src/cobalt/media/media_module_stub.h b/src/cobalt/media/media_module_stub.h
index 7be421c..a9b1036 100644
--- a/src/cobalt/media/media_module_stub.h
+++ b/src/cobalt/media/media_module_stub.h
@@ -17,6 +17,8 @@
 #ifndef COBALT_MEDIA_MEDIA_MODULE_STUB_H_
 #define COBALT_MEDIA_MEDIA_MODULE_STUB_H_
 
+#include <string>
+
 #include "cobalt/media/media_module.h"
 
 namespace cobalt {
@@ -26,6 +28,8 @@
  public:
   MediaModuleStub() {}
 
+  std::string CanPlayType(const std::string& mime_type,
+                          const std::string& key_system) OVERRIDE;
   scoped_ptr<WebMediaPlayer> CreateWebMediaPlayer(
       ::media::WebMediaPlayerClient* client) OVERRIDE;
 };
diff --git a/src/cobalt/renderer/rasterizer/skia/software_resource_provider.cc b/src/cobalt/renderer/rasterizer/skia/software_resource_provider.cc
index ee59b76..04ca7c1 100644
--- a/src/cobalt/renderer/rasterizer/skia/software_resource_provider.cc
+++ b/src/cobalt/renderer/rasterizer/skia/software_resource_provider.cc
@@ -28,7 +28,6 @@
 #include "third_party/skia/include/core/SkData.h"
 #include "third_party/skia/include/core/SkStream.h"
 #include "third_party/skia/include/core/SkTypeface.h"
-#include "third_party/skia/include/ports/SkFontMgr.h"
 
 using cobalt::render_tree::ImageData;
 
diff --git a/src/cobalt/script/mozjs/conversion_helpers.h b/src/cobalt/script/mozjs/conversion_helpers.h
index cf0206e..5aa53ed 100644
--- a/src/cobalt/script/mozjs/conversion_helpers.h
+++ b/src/cobalt/script/mozjs/conversion_helpers.h
@@ -34,6 +34,7 @@
 #include "cobalt/script/mozjs/union_type_conversion_forward.h"
 #include "third_party/mozjs/js/src/jsapi.h"
 #include "third_party/mozjs/js/src/jsproxy.h"
+#include "third_party/mozjs/js/src/jsstr.h"
 
 namespace cobalt {
 namespace script {
@@ -72,9 +73,21 @@
 // std::string -> JSValue
 inline void ToJSValue(JSContext* context, const std::string& in_string,
                       JS::MutableHandleValue out_value) {
+  size_t length = in_string.length();
+  jschar* inflated_buffer =
+      js::InflateUTF8String(context, in_string.c_str(), &length);
+  DCHECK(inflated_buffer);
+
+  if (!inflated_buffer) {
+    LOG(ERROR) << "Failed to inflate UTF8 string.";
+    out_value.setNull();
+    return;
+  }
+
   JS::RootedString rooted_string(
-      context,
-      JS_NewStringCopyN(context, in_string.c_str(), in_string.length()));
+      context, JS_NewUCStringCopyN(context, inflated_buffer, length));
+  js_free(inflated_buffer);
+
   out_value.set(JS::StringValue(rooted_string));
 }
 
@@ -380,7 +393,7 @@
   DCHECK_EQ(conversion_flags & ~kConversionFlagsObject, 0)
       << "Unexpected conversion flags found.";
   JS::RootedObject js_object(context);
-  if (value.isNull()) {
+  if (value.isNull() || value.isUndefined()) {
     if (!(conversion_flags & kConversionFlagNullable)) {
       exception_state->SetSimpleException(ExceptionState::kTypeError,
                                           kNotNullableType);
diff --git a/src/cobalt/script/mozjs/mozjs_global_object_proxy.cc b/src/cobalt/script/mozjs/mozjs_global_object_proxy.cc
index c56be2c..d25e1b7 100644
--- a/src/cobalt/script/mozjs/mozjs_global_object_proxy.cc
+++ b/src/cobalt/script/mozjs/mozjs_global_object_proxy.cc
@@ -208,9 +208,19 @@
   last_error_message_ = &error_message;
   JS::RootedObject global_object(
       context_, js::GetProxyTargetObject(global_object_proxy_));
-  bool success = JS_EvaluateScript(
-      context_, global_object, script.c_str(), script.size(),
-      location.file_path.c_str(), location.line_number, result_value.address());
+
+  size_t length = script.size();
+  jschar* inflated_buffer =
+      js::InflateUTF8String(context_, script.c_str(), &length);
+  DCHECK(inflated_buffer);
+  bool success = false;
+  if (inflated_buffer) {
+    success = JS_EvaluateUCScript(context_, global_object, inflated_buffer,
+                                  length, location.file_path.c_str(),
+                                  location.line_number, result_value.address());
+    js_free(inflated_buffer);
+  }
+
   if (out_result_utf8) {
     if (success) {
       MozjsExceptionState exception_state(context_);
diff --git a/src/cobalt/script/mozjs/util/exception_helpers.cc b/src/cobalt/script/mozjs/util/exception_helpers.cc
index 1c4b8ad..030f45a 100644
--- a/src/cobalt/script/mozjs/util/exception_helpers.cc
+++ b/src/cobalt/script/mozjs/util/exception_helpers.cc
@@ -46,10 +46,15 @@
     if (stack_trace[i].fun) {
       JS::RootedString rooted_string(context,
                                      JS_GetFunctionId(stack_trace[i].fun));
-      JS::RootedValue rooted_value(context, STRING_TO_JSVAL(rooted_string));
-      MozjsExceptionState exception_state(context);
-      FromJSValue(context, rooted_value, kNoConversionFlags, &exception_state,
-                  &sf.function_name);
+      if (rooted_string) {
+        JS::RootedValue rooted_value(context, STRING_TO_JSVAL(rooted_string));
+        MozjsExceptionState exception_state(context);
+        FromJSValue(context, rooted_value, kNoConversionFlags, &exception_state,
+                    &sf.function_name);
+      } else {
+        // anonymous function
+        sf.function_name = "(anonymous function)";
+      }
     }
     if (stack_trace[i].script) {
       sf.source_url = stack_trace[i].script->filename();
diff --git a/src/cobalt/system_window/starboard/system_window.cc b/src/cobalt/system_window/starboard/system_window.cc
index 111cf8b..7cd1178 100644
--- a/src/cobalt/system_window/starboard/system_window.cc
+++ b/src/cobalt/system_window/starboard/system_window.cc
@@ -35,8 +35,19 @@
 }  // namespace
 
 SystemWindowStarboard::SystemWindowStarboard(
+    base::EventDispatcher* event_dispatcher)
+    : SystemWindow(event_dispatcher),
+      window_(kSbWindowInvalid),
+      key_down_(false) {
+  window_ = SbWindowCreate(NULL);
+  DCHECK(SbWindowIsValid(window_));
+  DCHECK(!g_the_window) << "TODO: Support multiple SystemWindows.";
+  g_the_window = this;
+}
+
+SystemWindowStarboard::SystemWindowStarboard(
     base::EventDispatcher* event_dispatcher, const math::Size& window_size)
-    : SystemWindow(event_dispatcher, window_size),
+    : SystemWindow(event_dispatcher),
       window_(kSbWindowInvalid),
       key_down_(false) {
   SbWindowOptions options;
@@ -57,6 +68,12 @@
   SbWindowDestroy(window_);
 }
 
+math::Size SystemWindowStarboard::GetWindowSize() const {
+  SbWindowSize window_size;
+  SbWindowGetSize(window_, &window_size);
+  return math::Size(window_size.width, window_size.height);
+}
+
 SbWindow SystemWindowStarboard::GetSbWindow() { return window_; }
 
 void* SystemWindowStarboard::GetWindowHandle() {
@@ -140,9 +157,15 @@
 }
 
 scoped_ptr<SystemWindow> CreateSystemWindow(
-    base::EventDispatcher* event_dispatcher, const math::Size& window_size) {
-  return scoped_ptr<SystemWindow>(
-      new SystemWindowStarboard(event_dispatcher, window_size));
+    base::EventDispatcher* event_dispatcher,
+    const base::optional<math::Size>& window_size) {
+  if (window_size) {
+    return scoped_ptr<SystemWindow>(
+        new SystemWindowStarboard(event_dispatcher, *window_size));
+  } else {
+    return scoped_ptr<SystemWindow>(
+        new SystemWindowStarboard(event_dispatcher));
+  }
 }
 
 // Returns true if the event was handled.
diff --git a/src/cobalt/system_window/starboard/system_window.h b/src/cobalt/system_window/starboard/system_window.h
index efc6caa..7d6a76e 100644
--- a/src/cobalt/system_window/starboard/system_window.h
+++ b/src/cobalt/system_window/starboard/system_window.h
@@ -30,10 +30,13 @@
 
 class SystemWindowStarboard : public SystemWindow {
  public:
-  explicit SystemWindowStarboard(base::EventDispatcher* event_dispatcher,
-                                 const math::Size& window_size);
+  explicit SystemWindowStarboard(base::EventDispatcher* event_dispatcher);
+  SystemWindowStarboard(base::EventDispatcher* event_dispatcher,
+                        const math::Size& window_size);
   ~SystemWindowStarboard() OVERRIDE;
 
+  math::Size GetWindowSize() const OVERRIDE;
+
   // Returns a handle to the Starboard window object.
   SbWindow GetSbWindow();
 
diff --git a/src/cobalt/system_window/system_window.h b/src/cobalt/system_window/system_window.h
index 4054bc0..4695652 100644
--- a/src/cobalt/system_window/system_window.h
+++ b/src/cobalt/system_window/system_window.h
@@ -21,6 +21,7 @@
 
 #include "base/callback.h"
 #include "base/memory/scoped_ptr.h"
+#include "base/optional.h"
 #include "cobalt/base/event_dispatcher.h"
 #include "cobalt/math/size.h"
 
@@ -63,29 +64,32 @@
     DialogCallback callback;
   };
 
-  SystemWindow(base::EventDispatcher* event_dispatcher,
-               const math::Size& window_size)
-      : event_dispatcher_(event_dispatcher), window_size_(window_size) {}
+  explicit SystemWindow(base::EventDispatcher* event_dispatcher)
+      : event_dispatcher_(event_dispatcher) {}
   virtual ~SystemWindow();
 
   // Launches a system dialog.
   virtual void ShowDialog(const DialogOptions& options);
 
-  base::EventDispatcher* event_dispatcher() const { return event_dispatcher_; }
+  // Returns the dimensions of the window.
+  virtual math::Size GetWindowSize() const = 0;
 
-  const math::Size& window_size() const { return window_size_; }
+  base::EventDispatcher* event_dispatcher() const { return event_dispatcher_; }
 
  private:
   base::EventDispatcher* event_dispatcher_;
-  const math::Size window_size_;
 };
 
 // The implementation of this function should be platform specific, and will
 // create and return a platform-specific system window object. The system
 // window object routes callbacks for user input and provides the information
 // necessary to create a display render target for a graphics system.
-scoped_ptr<SystemWindow> CreateSystemWindow(base::EventDispatcher*,
-                                            const math::Size& window_size);
+// Explicitly setting a window size will result in the system attempting to
+// accommmodate the preferred size, but not all systems may be able to
+// fulfill the request.  |window_size| can be left blank to let the system
+// choose a default window size.
+scoped_ptr<SystemWindow> CreateSystemWindow(
+    base::EventDispatcher*, const base::optional<math::Size>& window_size);
 
 }  // namespace system_window
 }  // namespace cobalt
diff --git a/src/cobalt/system_window/win/system_window.cc b/src/cobalt/system_window/win/system_window.cc
index 4fc1029..09e4217 100644
--- a/src/cobalt/system_window/win/system_window.cc
+++ b/src/cobalt/system_window/win/system_window.cc
@@ -68,12 +68,22 @@
 }
 }  // namespace
 
-SystemWindowWin::SystemWindowWin(base::EventDispatcher* event_dispatcher,
-                                 const math::Size& window_size)
-    : SystemWindow(event_dispatcher, window_size),
+SystemWindowWin::SystemWindowWin(base::EventDispatcher* event_dispatcher)
+    : SystemWindow(event_dispatcher),
       thread(kThreadName),
       window_initialized(true, false),
-      window_handle_(NULL) {
+      window_handle_(NULL),
+      window_size_(math::Size(1920, 1080)) {
+  StartWindow();
+}
+
+SystemWindowWin::SystemWindowWin(base::EventDispatcher* event_dispatcher,
+                                 const math::Size& window_size)
+    : SystemWindow(event_dispatcher),
+      thread(kThreadName),
+      window_initialized(true, false),
+      window_handle_(NULL),
+      window_size_(window_size) {
   StartWindow();
 }
 
@@ -160,8 +170,8 @@
   window_handle_ = CreateWindowEx(
       WS_EX_APPWINDOW | WS_EX_WINDOWEDGE, kClassName, kWindowTitle,
       WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_OVERLAPPEDWINDOW, 0, 0,
-      window_size().width(), window_size().height(), NULL, NULL,
-      module_instance, NULL);
+      window_size_.width(), window_size_.height(), NULL, NULL, module_instance,
+      NULL);
   CHECK(window_handle_);
 
   ShowWindow(window_handle_, SW_SHOW);
@@ -181,9 +191,14 @@
 }
 
 scoped_ptr<SystemWindow> CreateSystemWindow(
-    base::EventDispatcher* event_dispatcher, const math::Size& window_size) {
-  return scoped_ptr<SystemWindow>(
-      new SystemWindowWin(event_dispatcher, window_size));
+    base::EventDispatcher* event_dispatcher,
+    const base::optional<math::Size>& window_size) {
+  if (window_size) {
+    return scoped_ptr<SystemWindow>(
+        new SystemWindowWin(event_dispatcher, *window_size));
+  } else {
+    return scoped_ptr<SystemWindow>(new SystemWindowWin(event_dispatcher));
+  }
 }
 
 }  // namespace system_window
diff --git a/src/cobalt/system_window/win/system_window.h b/src/cobalt/system_window/win/system_window.h
index 7025f00..69ac4e5 100644
--- a/src/cobalt/system_window/win/system_window.h
+++ b/src/cobalt/system_window/win/system_window.h
@@ -34,11 +34,14 @@
 // received and processed.
 class SystemWindowWin : public SystemWindow {
  public:
-  explicit SystemWindowWin(base::EventDispatcher* event_dispatcher,
-                           const math::Size& window_size);
+  explicit SystemWindowWin(base::EventDispatcher* event_dispatcher);
+  SystemWindowWin(base::EventDispatcher* event_dispatcher,
+                  const math::Size& window_size);
 
   ~SystemWindowWin() OVERRIDE;
 
+  math::Size GetWindowSize() const OVERRIDE { return window_size_; }
+
   HWND window_handle() const { return window_handle_; }
 
  protected:
@@ -56,6 +59,7 @@
   base::Thread thread;
   base::WaitableEvent window_initialized;
   HWND window_handle_;
+  math::Size window_size_;
 };
 
 }  // namespace system_window
diff --git a/src/cobalt/web_animations/animation.cc b/src/cobalt/web_animations/animation.cc
index 258854d..0c8a578 100644
--- a/src/cobalt/web_animations/animation.cc
+++ b/src/cobalt/web_animations/animation.cc
@@ -26,7 +26,9 @@
     : effect_(effect) {
   const KeyframeEffectReadOnly* keyframe_effect =
       base::polymorphic_downcast<const KeyframeEffectReadOnly*>(effect.get());
-  keyframe_effect->target()->Register(this);
+  if (keyframe_effect) {
+    keyframe_effect->target()->Register(this);
+  }
   set_timeline(timeline);
 }
 
@@ -34,17 +36,22 @@
   if (timeline_) {
     timeline_->Deregister(this);
   }
-  timeline->Register(this);
+
+  if (timeline) {
+    timeline->Register(this);
+  }
+
   timeline_ = timeline;
 }
 
 // https://www.w3.org/TR/2015/WD-web-animations-1-20150707/#playing-an-animation-section
 void Animation::Play() {
   // This is currently a simplified version of steps 8.2.
-  DCHECK(timeline_);
-  DCHECK(timeline_->current_time());
-  if (!data_.start_time()) {
-    set_start_time(timeline_->current_time());
+  if (timeline_) {
+    DCHECK(timeline_->current_time());
+    if (!data_.start_time()) {
+      set_start_time(timeline_->current_time());
+    }
   }
 
   UpdatePendingTasks();
@@ -103,7 +110,9 @@
   if (timeline_) {
     timeline_->Deregister(this);
   }
-  keyframe_effect->target()->Deregister(this);
+  if (keyframe_effect) {
+    keyframe_effect->target()->Deregister(this);
+  }
 }
 
 void Animation::UpdatePendingTasks() {
@@ -114,17 +123,24 @@
     // the "after phase".
     on_enter_after_phase_.reset();
   } else {
+    if (!effect_) {
+      return;
+    }
+
     base::TimeDelta local_time =
         base::TimeDelta::FromMillisecondsD(*local_time_in_ms);
+
     base::TimeDelta time_to_after_phase =
         effect_->timing()->data().time_until_after_phase(local_time);
     if (time_to_after_phase >= base::TimeDelta() &&
         time_to_after_phase != base::TimeDelta::Max()) {
       // Setup the "upon entering the after phase" event to fire at the
       // specified timeline time.
-      on_enter_after_phase_ = timeline_->QueueTask(
-          *data_.start_time() + time_to_after_phase,
-          base::Bind(&Animation::OnEnterAfterPhase, base::Unretained(this)));
+      if (timeline_) {
+        on_enter_after_phase_ = timeline_->QueueTask(
+            *data_.start_time() + time_to_after_phase,
+            base::Bind(&Animation::OnEnterAfterPhase, base::Unretained(this)));
+      }
     } else {
       // We are already in the after phase, so clear this task.
       on_enter_after_phase_.reset();
diff --git a/src/cobalt/webdriver/get_element_text_test.cc b/src/cobalt/webdriver/get_element_text_test.cc
index 07f2ce3..fd9881b 100644
--- a/src/cobalt/webdriver/get_element_text_test.cc
+++ b/src/cobalt/webdriver/get_element_text_test.cc
@@ -43,7 +43,8 @@
       : css_parser_(css_parser::Parser::Create()),
         dom_stat_tracker_(new dom::DomStatTracker("GetElementTextTest")),
         html_element_context_(NULL, css_parser_.get(), NULL, NULL, NULL, NULL,
-                              NULL, NULL, NULL, dom_stat_tracker_.get(), "") {}
+                              NULL, NULL, NULL, NULL, dom_stat_tracker_.get(),
+                              "") {}
 
   void SetUp() OVERRIDE {
     dom::Document::Options options;
diff --git a/src/cobalt/webdriver/is_displayed_test.cc b/src/cobalt/webdriver/is_displayed_test.cc
index 1b613f3..8953ec5 100644
--- a/src/cobalt/webdriver/is_displayed_test.cc
+++ b/src/cobalt/webdriver/is_displayed_test.cc
@@ -58,6 +58,7 @@
         dom_stat_tracker_(new dom::DomStatTracker("IsDisplayedTest")),
         html_element_context_(
             &fetcher_factory_, css_parser_.get(), dom_parser_.get(),
+            NULL /* can_play_type_handler  */,
             NULL /* web_media_player_factory */, &script_runner_,
             NULL /* media_source_registry */, resource_provider_stub_.get(),
             image_cache_.get(), NULL /* remote_font_cache */,
diff --git a/src/media/base/sbplayer_pipeline.cc b/src/media/base/sbplayer_pipeline.cc
index 7248c25..edc8565 100644
--- a/src/media/base/sbplayer_pipeline.cc
+++ b/src/media/base/sbplayer_pipeline.cc
@@ -582,8 +582,12 @@
   DCHECK(message_loop_->BelongsToCurrentThread());
 
   if (status == PIPELINE_OK) {
-    DCHECK(!audio_read_in_progress_);
-    DCHECK(!video_read_in_progress_);
+    if (audio_read_in_progress_ || video_read_in_progress_) {
+      message_loop_->PostTask(
+          FROM_HERE,
+          base::Bind(&SbPlayerPipeline::OnDemuxerSeeked, this, status));
+      return;
+    }
     ++ticket_;
     SbPlayerSeek(player_, seek_time_, ticket_);
   }
diff --git a/src/media/mp4/mp4_stream_parser.cc b/src/media/mp4/mp4_stream_parser.cc
index dbbc07b..a001872 100644
--- a/src/media/mp4/mp4_stream_parser.cc
+++ b/src/media/mp4/mp4_stream_parser.cc
@@ -502,10 +502,6 @@
     StreamParserBuffer::CopyFrom(&frame_buf[0], frame_buf.size(),
                                  runs_->is_keyframe());
 #endif
-  if (!stream_buf) {
-    DLOG(WARNING) << "Failed to create StreamParserBuffer";
-    return false;
-  }
 
   if (decrypt_config)
     stream_buf->SetDecryptConfig(decrypt_config.Pass());
diff --git a/src/media/player/can_play_type.cc b/src/media/player/can_play_type.cc
index 5dc1883..d3880ae 100644
--- a/src/media/player/can_play_type.cc
+++ b/src/media/player/can_play_type.cc
@@ -24,32 +24,9 @@
 #include "media/audio/shell_audio_streamer.h"
 #include "media/player/crypto/key_systems.h"
 #include "media/player/mime_util.h"
-#if defined(OS_STARBOARD)
-#include "starboard/media.h"
-#endif  // defined(OS_STARBOARD)
 
 namespace media {
 
-#if defined(OS_STARBOARD)
-
-std::string CanPlayType(const std::string& content_type,
-                        const std::string& key_system) {
-  SbMediaSupportType type =
-      SbMediaCanPlayMimeAndKeySystem(content_type.c_str(), key_system.c_str());
-  switch (type) {
-    case kSbMediaSupportTypeNotSupported:
-      return "";
-    case kSbMediaSupportTypeMaybe:
-      return "maybe";
-    case kSbMediaSupportTypeProbably:
-      return "probably";
-  }
-  NOTREACHED();
-  return "";
-}
-
-#else  // defined(OS_STARBOARD)
-
 namespace {
 
 bool ContainsAAC51(const std::vector<std::string>& codecs) {
@@ -177,6 +154,4 @@
   return kProbably;
 }
 
-#endif  // defined(OS_STARBOARD)
-
 }  // namespace media
diff --git a/src/media/webm/webm_cluster_parser.cc b/src/media/webm/webm_cluster_parser.cc
index 035963e..1bb9042 100644
--- a/src/media/webm/webm_cluster_parser.cc
+++ b/src/media/webm/webm_cluster_parser.cc
@@ -311,11 +311,6 @@
       StreamParserBuffer::CopyFrom(data, size, is_keyframe);
 #endif  // defined(__LB_SHELL__) || defined(COBALT)
 
-  if (!buffer) {
-    DLOG(WARNING) << "Failed to create StreamParserBuffer";
-    return false;
-  }
-
   // Every encrypted Block has a signal byte and IV prepended to it. Current
   // encrypted WebM request for comments specification is here
   // http://wiki.webmproject.org/encryption/webm-encryption-rfc
@@ -379,21 +374,24 @@
     buffer = StreamParserBuffer::CopyFrom(data + data_offset,
                                           size - data_offset, is_keyframe);
 #endif  // defined(__LB_SHELL__) || defined(COBALT)
-    if (!buffer) {
-      DLOG(WARNING) << "Failed to create StreamParserBuffer";
-      return false;
-    }
 
     // TODO(fgalligan): Revisit if DecryptConfig needs to be set on unencrypted
     // frames after the CDM API is finalized.
     // Unencrypted frames of potentially encrypted streams currently set
     // DecryptConfig.
-    buffer->SetDecryptConfig(scoped_ptr<DecryptConfig>(
-        new DecryptConfig(encryption_key_id, counter_block,
-#if !defined(__LB_SHELL__) && !defined(COBALT)
-                          data_offset,
-#endif  // !defined(__LB_SHELL__) && !defined(COBALT)
-                          subsample_entries)));
+    if (buffer) {
+      buffer->SetDecryptConfig(scoped_ptr<DecryptConfig>(
+          new DecryptConfig(encryption_key_id, counter_block,
+  #if !defined(__LB_SHELL__) && !defined(COBALT)
+                            data_offset,
+  #endif  // !defined(__LB_SHELL__) && !defined(COBALT)
+                            subsample_entries)));
+    }
+  }
+
+  if (!buffer) {
+    DLOG(WARNING) << "Failed to create StreamParserBuffer";
+    return false;
   }
 
   buffer->SetTimestamp(timestamp);
diff --git a/src/net/http/http_stream_factory.cc b/src/net/http/http_stream_factory.cc
index db13935..139083d 100644
--- a/src/net/http/http_stream_factory.cc
+++ b/src/net/http/http_stream_factory.cc
@@ -81,7 +81,7 @@
   if (protocol == ALTERNATE_PROTOCOL_BROKEN) {
     // This warning is not important for LbShell so we are going to disable it
     // since it produces considerable console spam
-#if !defined(__LB_SHELL__)
+#if !defined(__LB_SHELL__) && !defined(COBALT)
     // Currently, we only recognize the npn-spdy protocol.
     DLOG(WARNING) << kAlternateProtocolHeader
                   << " header has unrecognized protocol: "
diff --git a/src/starboard/client_porting/poem/string_poem.h b/src/starboard/client_porting/poem/string_poem.h
index 93cbcd2..1d9ee57 100644
--- a/src/starboard/client_porting/poem/string_poem.h
+++ b/src/starboard/client_porting/poem/string_poem.h
@@ -94,7 +94,7 @@
 #if defined(POEM_FULL_EMULATION) && (POEM_FULL_EMULATION)
 
 #define strlen(s) SbStringGetLength(s)
-#define strcpy(o, s) SbStringCopyUnsafe(dst, src)
+#define strcpy(o, s) SbStringCopyUnsafe(o, s)
 #define strncpy(o, s, ds) SbStringCopy(o, s, ds)
 #define strcat(o, s) PoemConcatUnsafe(o, s)
 #define strncat(o, s, ds) PoemConcat(o, s, ds)
diff --git a/src/starboard/event.h b/src/starboard/event.h
index 5c1db49..c602259 100644
--- a/src/starboard/event.h
+++ b/src/starboard/event.h
@@ -68,8 +68,8 @@
 
   // A navigational link has come from the system, and the application should
   // consider handling it by navigating to the corresponding application
-  // location. The contents of the link are application-specific.
-  // SbEventLinkData is passed as the data argument.
+  // location. The data argument is an application-specific, null-terminated
+  // string.
   kSbEventTypeLink,
 
   // The beginning of a vertical sync has been detected. This event is very
@@ -114,16 +114,6 @@
 // An ID that can be used to refer to a scheduled event.
 typedef uint32_t SbEventId;
 
-// Event data for kSbEventTypeLink and kSbEventTypeStart events.
-typedef struct SbEventLinkData {
-  // A buffer of data comprising the link information. The format of this data
-  // will be platform-specific.
-  const void* link_data;
-
-  // The number of bytes of data provided in link_data.
-  int link_data_size;
-} SbEventLinkData;
-
 // Event data for kSbEventTypeStart events.
 typedef struct SbEventStartData {
   // The command-line argument values (argv).
@@ -132,8 +122,8 @@
   // The command-line argument count (argc).
   int argument_count;
 
-  // The startup link data, if any.
-  SbEventLinkData link_data;
+  // The startup link, if any.
+  const char* link;
 } SbEventStartData;
 
 #define kSbEventIdInvalid (SbEventId)0
diff --git a/src/starboard/linux/shared/system_has_capability.cc b/src/starboard/linux/shared/system_has_capability.cc
index 2cad7c4..8503ef4 100644
--- a/src/starboard/linux/shared/system_has_capability.cc
+++ b/src/starboard/linux/shared/system_has_capability.cc
@@ -20,6 +20,8 @@
   switch (capability_id) {
     case kSbSystemCapabilityReversedEnterAndBack:
       return false;
+    case kSbSystemCapabilityCanQueryGPUMemoryStats:
+      return false;
   }
 
   SB_DLOG(WARNING) << "Unrecognized capability: " << capability_id;
diff --git a/src/starboard/linux/x64directfb/starboard_platform.gyp b/src/starboard/linux/x64directfb/starboard_platform.gyp
index bea20b6..9d95ec2 100644
--- a/src/starboard/linux/x64directfb/starboard_platform.gyp
+++ b/src/starboard/linux/x64directfb/starboard_platform.gyp
@@ -141,7 +141,8 @@
         '<(DEPTH)/starboard/shared/linux/socket_get_local_interface_address.cc',
         '<(DEPTH)/starboard/shared/linux/system_get_random_data.cc',
         '<(DEPTH)/starboard/shared/linux/system_get_stack.cc',
-        '<(DEPTH)/starboard/shared/linux/system_get_total_memory.cc',
+        '<(DEPTH)/starboard/shared/linux/system_get_total_cpu_memory.cc',
+        '<(DEPTH)/starboard/shared/linux/system_get_used_cpu_memory.cc',
         '<(DEPTH)/starboard/shared/linux/system_is_debugger_attached.cc',
         '<(DEPTH)/starboard/shared/linux/system_symbolize.cc',
         '<(DEPTH)/starboard/shared/linux/thread_get_id.cc',
@@ -305,6 +306,8 @@
         '<(DEPTH)/starboard/shared/stub/system_clear_platform_error.cc',
         '<(DEPTH)/starboard/shared/stub/system_hide_splash_screen.cc',
         '<(DEPTH)/starboard/shared/stub/system_raise_platform_error.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_total_gpu_memory.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_used_gpu_memory.cc',
       ],
       'include_dirs': [
         '/usr/include/directfb',
diff --git a/src/starboard/linux/x64x11/starboard_platform.gyp b/src/starboard/linux/x64x11/starboard_platform.gyp
index 3200d13..932e00e 100644
--- a/src/starboard/linux/x64x11/starboard_platform.gyp
+++ b/src/starboard/linux/x64x11/starboard_platform.gyp
@@ -104,7 +104,8 @@
         '<(DEPTH)/starboard/shared/linux/socket_get_local_interface_address.cc',
         '<(DEPTH)/starboard/shared/linux/system_get_random_data.cc',
         '<(DEPTH)/starboard/shared/linux/system_get_stack.cc',
-        '<(DEPTH)/starboard/shared/linux/system_get_total_memory.cc',
+        '<(DEPTH)/starboard/shared/linux/system_get_total_cpu_memory.cc',
+        '<(DEPTH)/starboard/shared/linux/system_get_used_cpu_memory.cc',
         '<(DEPTH)/starboard/shared/linux/system_is_debugger_attached.cc',
         '<(DEPTH)/starboard/shared/linux/system_symbolize.cc',
         '<(DEPTH)/starboard/shared/linux/thread_get_id.cc',
@@ -196,8 +197,8 @@
         '<(DEPTH)/starboard/shared/pthread/thread_join.cc',
         '<(DEPTH)/starboard/shared/pthread/thread_set_local_value.cc',
         '<(DEPTH)/starboard/shared/pthread/thread_yield.cc',
-        '<(DEPTH)/starboard/shared/signal/crash_signals_sigaction.cc',
         '<(DEPTH)/starboard/shared/signal/crash_signals.h',
+        '<(DEPTH)/starboard/shared/signal/crash_signals_sigaction.cc',
         '<(DEPTH)/starboard/shared/starboard/application.cc',
         '<(DEPTH)/starboard/shared/starboard/audio_sink/audio_sink_create.cc',
         '<(DEPTH)/starboard/shared/starboard/audio_sink/audio_sink_destroy.cc',
@@ -264,6 +265,8 @@
         '<(DEPTH)/starboard/shared/stub/drm_update_session.cc',
         '<(DEPTH)/starboard/shared/stub/media_is_supported.cc',
         '<(DEPTH)/starboard/shared/stub/system_clear_platform_error.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_total_gpu_memory.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_used_gpu_memory.cc',
         '<(DEPTH)/starboard/shared/stub/system_hide_splash_screen.cc',
         '<(DEPTH)/starboard/shared/stub/system_raise_platform_error.cc',
         '<(DEPTH)/starboard/shared/x11/application_x11.cc',
diff --git a/src/starboard/nplb/memory_map_test.cc b/src/starboard/nplb/memory_map_test.cc
index 7d84c50..53ccd50 100644
--- a/src/starboard/nplb/memory_map_test.cc
+++ b/src/starboard/nplb/memory_map_test.cc
@@ -50,9 +50,9 @@
 
 TEST(SbMemoryMapTest, DoesNotLeak) {
   // Map 4x the amount of system memory (sequentially, not at once).
-  int64_t bytes_mapped = SbSystemGetTotalMemory() / 4;
+  int64_t bytes_mapped = SbSystemGetTotalCPUMemory() / 4;
   for (int64_t total_bytes_mapped = 0;
-       total_bytes_mapped < SbSystemGetTotalMemory() * 4;
+       total_bytes_mapped < SbSystemGetTotalCPUMemory() * 4;
        total_bytes_mapped += bytes_mapped) {
     void* memory = SbMemoryMap(bytes_mapped, kSbMemoryMapProtectWrite, "test");
     ASSERT_NE(kFailed, memory);
diff --git a/src/starboard/nplb/nplb.gyp b/src/starboard/nplb/nplb.gyp
index ff62b59..5b66821 100644
--- a/src/starboard/nplb/nplb.gyp
+++ b/src/starboard/nplb/nplb.gyp
@@ -24,12 +24,12 @@
         'atomic_test.cc',
         'audio_sink_create_test.cc',
         'audio_sink_destroy_test.cc',
+        'audio_sink_get_max_channels_test.cc',
+        'audio_sink_get_nearest_supported_sample_frequency_test.cc',
         'audio_sink_helpers.cc',
         'audio_sink_helpers.h',
         'audio_sink_is_audio_frame_storage_type_supported_test.cc',
         'audio_sink_is_audio_sample_type_supported_test.cc',
-        'audio_sink_get_max_channels_test.cc',
-        'audio_sink_get_nearest_supported_sample_frequency_test.cc',
         'audio_sink_test.cc',
         'blitter_blit_rect_to_rect_test.cc',
         'blitter_blit_rect_to_rect_tiled_test.cc',
@@ -189,7 +189,10 @@
         'system_get_random_data_test.cc',
         'system_get_random_uint64_test.cc',
         'system_get_stack_test.cc',
-        'system_get_total_memory_test.cc',
+        'system_get_total_cpu_memory_test.cc',
+        'system_get_total_gpu_memory_test.cc',
+        'system_get_used_cpu_memory_test.cc',
+        'system_get_used_gpu_memory_test.cc',
         'system_has_capability_test.cc',
         'system_hide_splash_screen_test.cc',
         'system_is_debugger_attached_test.cc',
diff --git a/src/starboard/nplb/string_parse_double_test.cc b/src/starboard/nplb/string_parse_double_test.cc
index 1197167..600931a 100644
--- a/src/starboard/nplb/string_parse_double_test.cc
+++ b/src/starboard/nplb/string_parse_double_test.cc
@@ -166,7 +166,9 @@
   EXPECT_EQ(kDouble + 7, end);
 }
 
-TEST(SbStringParseDoubleTest, Small) {
+// Some platforms do not support denormals
+// Denormal support is unnecessary for Cobalt as of Sep 7, 2016
+TEST(SbStringParseDoubleTest, DISABLED_Small) {
   const char kDouble[] = "1e-310";
   const double kExpected = DBL_MIN;
   char* end = NULL;
@@ -176,7 +178,9 @@
   EXPECT_EQ(kDouble + 6, end);
 }
 
-TEST(SbStringParseDoubleTest, SmallNeg) {
+// Some platforms do not support denormals
+// Denormal support is unnecessary for Cobalt as of Sep 7, 2016
+TEST(SbStringParseDoubleTest, DISABLED_SmallNeg) {
   const char kDouble[] = "-1e-310";
   const double kExpected = -DBL_MIN;
   char* end = NULL;
diff --git a/src/starboard/nplb/system_get_total_memory_test.cc b/src/starboard/nplb/system_get_total_cpu_memory_test.cc
similarity index 82%
rename from src/starboard/nplb/system_get_total_memory_test.cc
rename to src/starboard/nplb/system_get_total_cpu_memory_test.cc
index e9b1762..591fd6f 100644
--- a/src/starboard/nplb/system_get_total_memory_test.cc
+++ b/src/starboard/nplb/system_get_total_cpu_memory_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
+// Copyright 2016 Google Inc. All Rights Reserved.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -19,9 +19,9 @@
 namespace nplb {
 namespace {
 
-TEST(SbSystemGetTotalMemoryTest, SunnyDay) {
+TEST(SbSystemGetTotalCPUMemoryTest, SunnyDay) {
   // We are currently expecting this number to be over 80 megabytes.
-  EXPECT_LE(SB_INT64_C(80) * 1024 * 1024, SbSystemGetTotalMemory());
+  EXPECT_LE(SB_INT64_C(80) * 1024 * 1024, SbSystemGetTotalCPUMemory());
 }
 
 }  // namespace
diff --git a/src/starboard/nplb/system_get_total_memory_test.cc b/src/starboard/nplb/system_get_total_gpu_memory_test.cc
similarity index 69%
copy from src/starboard/nplb/system_get_total_memory_test.cc
copy to src/starboard/nplb/system_get_total_gpu_memory_test.cc
index e9b1762..0cd7d9b 100644
--- a/src/starboard/nplb/system_get_total_memory_test.cc
+++ b/src/starboard/nplb/system_get_total_gpu_memory_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
+// Copyright 2016 Google Inc. All Rights Reserved.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -19,9 +19,12 @@
 namespace nplb {
 namespace {
 
-TEST(SbSystemGetTotalMemoryTest, SunnyDay) {
-  // We are currently expecting this number to be over 80 megabytes.
-  EXPECT_LE(SB_INT64_C(80) * 1024 * 1024, SbSystemGetTotalMemory());
+TEST(SbSystemGetTotalGPUMemoryTest, SunnyDay) {
+  if (SbSystemHasCapability(kSbSystemCapabilityCanQueryGPUMemoryStats)) {
+    // If we claim to have GPU memory reporting capabilities, then this value
+    // should be larger than 0.
+    EXPECT_LT(0, SbSystemGetTotalCPUMemory());
+  }
 }
 
 }  // namespace
diff --git a/src/starboard/nplb/system_get_total_memory_test.cc b/src/starboard/nplb/system_get_used_cpu_memory_test.cc
similarity index 75%
copy from src/starboard/nplb/system_get_total_memory_test.cc
copy to src/starboard/nplb/system_get_used_cpu_memory_test.cc
index e9b1762..35f0301 100644
--- a/src/starboard/nplb/system_get_total_memory_test.cc
+++ b/src/starboard/nplb/system_get_used_cpu_memory_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
+// Copyright 2016 Google Inc. All Rights Reserved.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -19,9 +19,10 @@
 namespace nplb {
 namespace {
 
-TEST(SbSystemGetTotalMemoryTest, SunnyDay) {
-  // We are currently expecting this number to be over 80 megabytes.
-  EXPECT_LE(SB_INT64_C(80) * 1024 * 1024, SbSystemGetTotalMemory());
+TEST(SbSystemGetUsedCPUMemoryTest, SunnyDay) {
+  // We expect this number to be larger than 0, since at least this test is
+  // resident in process memory.
+  EXPECT_LT(0, SbSystemGetUsedCPUMemory());
 }
 
 }  // namespace
diff --git a/src/starboard/nplb/system_get_total_memory_test.cc b/src/starboard/nplb/system_get_used_gpu_memory_test.cc
similarity index 76%
copy from src/starboard/nplb/system_get_total_memory_test.cc
copy to src/starboard/nplb/system_get_used_gpu_memory_test.cc
index e9b1762..45c5d3e 100644
--- a/src/starboard/nplb/system_get_total_memory_test.cc
+++ b/src/starboard/nplb/system_get_used_gpu_memory_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
+// Copyright 2016 Google Inc. All Rights Reserved.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -19,9 +19,10 @@
 namespace nplb {
 namespace {
 
-TEST(SbSystemGetTotalMemoryTest, SunnyDay) {
-  // We are currently expecting this number to be over 80 megabytes.
-  EXPECT_LE(SB_INT64_C(80) * 1024 * 1024, SbSystemGetTotalMemory());
+TEST(SbSystemGetUsedGPUMemoryTest, SunnyDay) {
+  if (SbSystemHasCapability(kSbSystemCapabilityCanQueryGPUMemoryStats)) {
+    EXPECT_LE(0, SbSystemGetUsedGPUMemory());
+  }
 }
 
 }  // namespace
diff --git a/src/starboard/nplb/system_has_capability_test.cc b/src/starboard/nplb/system_has_capability_test.cc
index 64382a4..6711150 100644
--- a/src/starboard/nplb/system_has_capability_test.cc
+++ b/src/starboard/nplb/system_has_capability_test.cc
@@ -26,11 +26,18 @@
   // Ensure that this doesn't crash, but we don't know if it should legitimately
   // be true or false.
   SbSystemHasCapability(kSbSystemCapabilityReversedEnterAndBack);
+  SbSystemHasCapability(kSbSystemCapabilityCanQueryGPUMemoryStats);
 }
 
 TEST(SbSystemHasCapabilityTest, SunnyDayNoChange) {
-  bool a = SbSystemHasCapability(kSbSystemCapabilityReversedEnterAndBack);
+  bool a;
+
+  a = SbSystemHasCapability(kSbSystemCapabilityReversedEnterAndBack);
   EXPECT_EQ(a, SbSystemHasCapability(kSbSystemCapabilityReversedEnterAndBack));
+
+  a = SbSystemHasCapability(kSbSystemCapabilityCanQueryGPUMemoryStats);
+  EXPECT_EQ(a,
+            SbSystemHasCapability(kSbSystemCapabilityCanQueryGPUMemoryStats));
 }
 
 TEST(SbSystemHasCapabilityTest, RainyDayNoSuchCapability) {
diff --git a/src/starboard/raspi/1/starboard_platform.gyp b/src/starboard/raspi/1/starboard_platform.gyp
index e66dd31..d1b864c 100644
--- a/src/starboard/raspi/1/starboard_platform.gyp
+++ b/src/starboard/raspi/1/starboard_platform.gyp
@@ -111,7 +111,8 @@
         '<(DEPTH)/starboard/shared/linux/socket_get_local_interface_address.cc',
         '<(DEPTH)/starboard/shared/linux/system_get_random_data.cc',
         '<(DEPTH)/starboard/shared/linux/system_get_stack.cc',
-        '<(DEPTH)/starboard/shared/linux/system_get_total_memory.cc',
+        '<(DEPTH)/starboard/shared/linux/system_get_total_cpu_memory.cc',
+        '<(DEPTH)/starboard/shared/linux/system_get_used_cpu_memory.cc',
         '<(DEPTH)/starboard/shared/linux/system_is_debugger_attached.cc',
         '<(DEPTH)/starboard/shared/linux/system_symbolize.cc',
         '<(DEPTH)/starboard/shared/linux/thread_get_id.cc',
@@ -271,6 +272,8 @@
         '<(DEPTH)/starboard/shared/stub/drm_update_session.cc',
         '<(DEPTH)/starboard/shared/stub/media_is_supported.cc',
         '<(DEPTH)/starboard/shared/stub/system_clear_platform_error.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_total_gpu_memory.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_used_gpu_memory.cc',
         '<(DEPTH)/starboard/shared/stub/system_hide_splash_screen.cc',
         '<(DEPTH)/starboard/shared/stub/system_raise_platform_error.cc',
       ],
diff --git a/src/starboard/shared/linux/system_get_total_memory.cc b/src/starboard/shared/linux/system_get_total_cpu_memory.cc
similarity index 90%
rename from src/starboard/shared/linux/system_get_total_memory.cc
rename to src/starboard/shared/linux/system_get_total_cpu_memory.cc
index 5d2dfa9..53e4ab4 100644
--- a/src/starboard/shared/linux/system_get_total_memory.cc
+++ b/src/starboard/shared/linux/system_get_total_cpu_memory.cc
@@ -1,4 +1,4 @@
-// Copyright 2015 Google Inc. All Rights Reserved.
+// Copyright 2016 Google Inc. All Rights Reserved.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@
 
 #include "starboard/log.h"
 
-int64_t SbSystemGetTotalMemory() {
+int64_t SbSystemGetTotalCPUMemory() {
   long pages = sysconf(_SC_PHYS_PAGES);     // NOLINT[runtime/int]
   long page_size = sysconf(_SC_PAGE_SIZE);  // NOLINT[runtime/int]
   if (pages == -1 || page_size == -1) {
diff --git a/src/starboard/shared/linux/system_get_used_cpu_memory.cc b/src/starboard/shared/linux/system_get_used_cpu_memory.cc
new file mode 100644
index 0000000..57c2b17
--- /dev/null
+++ b/src/starboard/shared/linux/system_get_used_cpu_memory.cc
@@ -0,0 +1,118 @@
+// Copyright 2016 Google Inc. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "starboard/system.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/sysinfo.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "starboard/file.h"
+#include "starboard/log.h"
+#include "starboard/string.h"
+
+// We find the current amount of used memory on Linux by opening
+// '/proc/self/status' and scan the file for its "VmRSS" entry.  Essentially,
+// we need to parse a buffer that has the following format:
+//
+// xxxxxx:       45327 kB
+// yyyyyy:          23 kB
+// VmRSS:        87432 kB
+// zzzzzz:        3213 kB
+// ...
+//
+// And here, we would want to return the value 87432 * 1024.
+// See http://man7.org/linux/man-pages/man5/proc.5.html for more details.
+
+// Searches for the value of VmRSS and returns it.  Will modify |buffer| in
+// order to do so quickly and easily.
+int64_t SearchForVmRSSValue(char* buffer, size_t length) {
+  // Search for the string ""VmRSS:".
+  const char kSearchString[] = "\nVmRSS:";
+  enum State {
+    // We are currently searching for kSearchString
+    kSearchingForSearchString,
+    // We found the search string and are advancing through spaces/tabs until
+    // we see a number.
+    kAdvancingSpacesToNumber,
+    // We found the number and are now searching for the end of it.
+    kFindingEndOfNumber,
+  };
+  State state = kSearchingForSearchString;
+  const char* number_start = NULL;
+  for (size_t i = 0; i < length - sizeof(kSearchString); ++i) {
+    if (state == kSearchingForSearchString) {
+      if (SbStringCompare(&buffer[i], kSearchString,
+                          sizeof(kSearchString) - 1) == 0) {
+        // Advance until we find a number.
+        state = kAdvancingSpacesToNumber;
+        i += sizeof(kSearchString) - 2;
+      }
+    } else if (state == kAdvancingSpacesToNumber) {
+      if (buffer[i] >= '0' && buffer[i] <= '9') {
+        // We found the start of the number, record where that is and then
+        // continue searching for the end of the number.
+        number_start = &buffer[i];
+        state = kFindingEndOfNumber;
+      }
+    } else {
+      SB_DCHECK(state == kFindingEndOfNumber);
+      if (buffer[i] < '0' || buffer[i] > '9') {
+        // Drop a null at the end of the number so that we can call atoi() on
+        // it and return.
+        buffer[i] = '\0';
+        return SbStringAToI(number_start);
+      }
+    }
+  }
+
+  SB_LOG(ERROR) << "Could not find 'VmRSS:' in /proc/self/status.";
+  return 0;
+}
+
+int64_t SbSystemGetUsedCPUMemory() {
+  // Read our process' current physical memory usage from /proc/self/status.
+  // This requires a bit of parsing through the output to find the value for
+  // the "VmRSS" field which indicates used physical memory.
+  starboard::ScopedFile status_file("/proc/self/status",
+                                    kSbFileOpenOnly | kSbFileRead);
+  if (!status_file.IsValid()) {
+    SB_LOG(ERROR)
+        << "Error opening /proc/self/status in order to query self memory "
+           "usage.";
+    return 0;
+  }
+
+  // Read the entire file into memory.
+  const int kBufferSize = 2048;
+  char buffer[kBufferSize];
+  int remaining = kBufferSize;
+  char* output_pointer = buffer;
+  do {
+    int result = status_file.Read(output_pointer, remaining);
+    if (result <= 0)
+      break;
+
+    remaining -= result;
+    output_pointer += result;
+  } while (remaining);
+
+  // Return the result, multiplied by 1024 because it is given in kilobytes.
+  return SearchForVmRSSValue(buffer,
+                             static_cast<size_t>(output_pointer - buffer)) *
+         1024;
+}
diff --git a/src/starboard/shared/posix/socket_receive_from.cc b/src/starboard/shared/posix/socket_receive_from.cc
index e5d4747..6acea4c 100644
--- a/src/starboard/shared/posix/socket_receive_from.cc
+++ b/src/starboard/shared/posix/socket_receive_from.cc
@@ -58,7 +58,8 @@
       return static_cast<int>(bytes_read);
     }
 
-    if (errno != EAGAIN && errno != EWOULDBLOCK) {
+    if (errno != EAGAIN && errno != EWOULDBLOCK &&
+        socket->error != sbposix::TranslateSocketErrno(errno)) {
       SB_DLOG(ERROR) << "recv failed, errno = " << errno;
     }
     socket->error = sbposix::TranslateSocketErrno(errno);
@@ -81,7 +82,8 @@
       return static_cast<int>(bytes_read);
     }
 
-    if (errno != EAGAIN && errno != EWOULDBLOCK) {
+    if (errno != EAGAIN && errno != EWOULDBLOCK &&
+        socket->error != sbposix::TranslateSocketErrno(errno)) {
       SB_DLOG(ERROR) << "recvfrom failed, errno = " << errno;
     }
     socket->error = sbposix::TranslateSocketErrno(errno);
diff --git a/src/starboard/shared/starboard/application.cc b/src/starboard/shared/starboard/application.cc
index 7904ece..1482b1a 100644
--- a/src/starboard/shared/starboard/application.cc
+++ b/src/starboard/shared/starboard/application.cc
@@ -43,8 +43,7 @@
   SbEventStartData start_data;
   start_data.argument_values = argv;
   start_data.argument_count = argc;
-  start_data.link_data.link_data = NULL;
-  start_data.link_data.link_data_size = 0;
+  start_data.link = NULL;
   Dispatch(kSbEventTypeStart, &start_data, NULL);
 }
 
diff --git a/src/starboard/shared/stub/system_get_total_memory.cc b/src/starboard/shared/stub/system_get_total_cpu_memory.cc
similarity index 94%
rename from src/starboard/shared/stub/system_get_total_memory.cc
rename to src/starboard/shared/stub/system_get_total_cpu_memory.cc
index 8fb7b53..534b5c4 100644
--- a/src/starboard/shared/stub/system_get_total_memory.cc
+++ b/src/starboard/shared/stub/system_get_total_cpu_memory.cc
@@ -14,6 +14,6 @@
 
 #include "starboard/system.h"
 
-int64_t SbSystemGetTotalMemory() {
+int64_t SbSystemGetTotalCPUMemory() {
   return 0;
 }
diff --git a/src/starboard/shared/stub/system_get_total_memory.cc b/src/starboard/shared/stub/system_get_total_gpu_memory.cc
similarity index 94%
copy from src/starboard/shared/stub/system_get_total_memory.cc
copy to src/starboard/shared/stub/system_get_total_gpu_memory.cc
index 8fb7b53..93d35a1 100644
--- a/src/starboard/shared/stub/system_get_total_memory.cc
+++ b/src/starboard/shared/stub/system_get_total_gpu_memory.cc
@@ -14,6 +14,6 @@
 
 #include "starboard/system.h"
 
-int64_t SbSystemGetTotalMemory() {
+int64_t SbSystemGetTotalGPUMemory() {
   return 0;
 }
diff --git a/src/starboard/shared/stub/system_get_total_memory.cc b/src/starboard/shared/stub/system_get_used_cpu_memory.cc
similarity index 94%
copy from src/starboard/shared/stub/system_get_total_memory.cc
copy to src/starboard/shared/stub/system_get_used_cpu_memory.cc
index 8fb7b53..4849b4e 100644
--- a/src/starboard/shared/stub/system_get_total_memory.cc
+++ b/src/starboard/shared/stub/system_get_used_cpu_memory.cc
@@ -14,6 +14,6 @@
 
 #include "starboard/system.h"
 
-int64_t SbSystemGetTotalMemory() {
+int64_t SbSystemGetUsedCPUMemory() {
   return 0;
 }
diff --git a/src/starboard/shared/stub/system_get_total_memory.cc b/src/starboard/shared/stub/system_get_used_gpu_memory.cc
similarity index 94%
copy from src/starboard/shared/stub/system_get_total_memory.cc
copy to src/starboard/shared/stub/system_get_used_gpu_memory.cc
index 8fb7b53..6e19b85 100644
--- a/src/starboard/shared/stub/system_get_total_memory.cc
+++ b/src/starboard/shared/stub/system_get_used_gpu_memory.cc
@@ -14,6 +14,6 @@
 
 #include "starboard/system.h"
 
-int64_t SbSystemGetTotalMemory() {
+int64_t SbSystemGetUsedGPUMemory() {
   return 0;
 }
diff --git a/src/starboard/stub/starboard_platform.gyp b/src/starboard/stub/starboard_platform.gyp
index 21054dc..e07af31 100644
--- a/src/starboard/stub/starboard_platform.gyp
+++ b/src/starboard/stub/starboard_platform.gyp
@@ -184,7 +184,10 @@
         '<(DEPTH)/starboard/shared/stub/system_get_random_data.cc',
         '<(DEPTH)/starboard/shared/stub/system_get_random_uint64.cc',
         '<(DEPTH)/starboard/shared/stub/system_get_stack.cc',
-        '<(DEPTH)/starboard/shared/stub/system_get_total_memory.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_total_cpu_memory.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_total_gpu_memory.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_used_cpu_memory.cc',
+        '<(DEPTH)/starboard/shared/stub/system_get_used_gpu_memory.cc',
         '<(DEPTH)/starboard/shared/stub/system_has_capability.cc',
         '<(DEPTH)/starboard/shared/stub/system_hide_splash_screen.cc',
         '<(DEPTH)/starboard/shared/stub/system_is_debugger_attached.cc',
diff --git a/src/starboard/system.h b/src/starboard/system.h
index 957719a..c52a4e1 100644
--- a/src/starboard/system.h
+++ b/src/starboard/system.h
@@ -142,6 +142,12 @@
 typedef enum SbSystemCapabilityId {
   // Whether this system has reversed Enter and Back keys.
   kSbSystemCapabilityReversedEnterAndBack,
+
+  // Whether this system has the ability to report on GPU memory usage.
+  // If (and only if) a system has this capcability will
+  // SbSystemGetTotalGPUMemory() and SbSystemGetUsedGPUMemory() be valid to
+  // call.
+  kSbSystemCapabilityCanQueryGPUMemoryStats,
 } SbSystemCapabilityId;
 
 // Enumeration of possible values for the |type| parameter passed to  the
@@ -241,10 +247,27 @@
 // sandboxed limit.
 SB_EXPORT int SbSystemGetNumberOfProcessors();
 
-// Gets the total memory potentially available to this application. If the
-// process is sandboxed to a maximum allowable limit, it will return the lesser
-// of the physical and sandbox limits.
-SB_EXPORT int64_t SbSystemGetTotalMemory();
+// Gets the total CPU memory (in bytes) potentially available to this
+// application. If the process is sandboxed to a maximum allowable limit, it
+// will return the lesser of the physical and sandbox limits.
+SB_EXPORT int64_t SbSystemGetTotalCPUMemory();
+
+// Returns the total physical CPU memory (in bytes) used by this application.
+// This value should always be less than (or in particularly exciting
+// situations, equal to) SbSystemGetTotalCPUMemory().
+SB_EXPORT int64_t SbSystemGetUsedCPUMemory();
+
+// Returns the total GPU memory available (in bytes) for use by this
+// application.
+// This function may only be called if true is the return value for calls to
+// SbSystemHasCapability(kSbSystemCapabilityCanQueryGPUMemoryStats).
+SB_EXPORT int64_t SbSystemGetTotalGPUMemory();
+
+// Returns the current amount of GPU memory (in bytes) that is currently being
+// used by this application.
+// This function may only be called if true is the return value for calls to
+// SbSystemHasCapability(kSbSystemCapabilityCanQueryGPUMemoryStats).
+SB_EXPORT int64_t SbSystemGetUsedGPUMemory();
 
 // Returns the type of the device.
 SB_EXPORT SbSystemDeviceType SbSystemGetDeviceType();
diff --git a/src/starboard/user.h b/src/starboard/user.h
index bf9a5d4..04443ee 100644
--- a/src/starboard/user.h
+++ b/src/starboard/user.h
@@ -108,55 +108,6 @@
                                  SbUserPropertyId property_id,
                                  char* out_value,
                                  int value_size);
-
-#if SB_HAS(USER_APPLICATION_LINKING_SUPPORT)
-// Initiates a process to link |user| with a per-application authentication
-// token. On success, |out_token| is populated with the authentication token
-// and |out_expiry| is set to the number of seconds until the token expires. An
-// expiration of 0 indicates that the token never expires.
-// This call will block until the linking process is complete, which may involve
-// user input.
-// After this call completes successfully, subsequent calls to
-// SbUserRequestAuthenticationToken will return valid tokens.
-// Returns false if |user| is invalid, |token_results| is NULL,
-// |token_results.token_buffer| is NULL or if the token is larger than
-// |token_results.token_buffer_size|.
-// Returns true if process to link the token succeeded, and false if the process
-// failed for any reason including user cancellation.
-SB_EXPORT bool SbUserRequestApplicationLinking(
-    SbUser user,
-    SbUserApplicationTokenResults* token_results);
-
-// Remove the link between |user| and the per-application authentication token.
-// This call will block until the linking process is complete, which may involve
-// user input.
-// After this call completes successfully, subsequent calls to
-// SbUserRequestAuthenticationToken will fail.
-// Returns false if |user| is invalid.
-// Returns true if the process to unlink the token succeeded. Returns false if
-// the process failed for any reason including user cancellation.
-SB_EXPORT bool SbUserRequestApplicationUnlinking(SbUser user);
-
-// Requests a new per-application authentication token. On success, |out_token|
-// is populated with the authentication token and |out_expiry| is set to the
-// number of seconds until the token expires. An expiration of 0 indicates that
-// the token never expires.
-// This call will block until the token has been received.
-// Returns false if |user| is invalid, |out_token| or |out_expiration| are NULL,
-// or if the token is larger than |out_token_size|.
-// Returns false if the user account is not linked with an application. In this
-// case, SbUserRequestApplicationLinking should be called.
-// Returns true if process to link the token succeeded, and false if the process
-// failed for any reason including user cancellation.
-SB_EXPORT bool SbUserRequestAuthenticationToken(
-    SbUser user,
-    SbUserApplicationTokenResults* token_results);
-
-// Gets the maximum size of an authentication token as returned by
-// SbUserRequestApplicationLinking and SbUserRequestAuthenticationToken.
-SB_EXPORT size_t SbUserMaxAuthenticationTokenSizeInBytes();
-#endif  // SB_HAS(USER_APPLICATION_LINKING_SUPPORT)
-
 #ifdef __cplusplus
 }  // extern "C"
 #endif
diff --git a/src/third_party/WebKit/Source/WTF/wtf/RAMSize.cpp b/src/third_party/WebKit/Source/WTF/wtf/RAMSize.cpp
index 5a4c3b8..97f3c55 100644
--- a/src/third_party/WebKit/Source/WTF/wtf/RAMSize.cpp
+++ b/src/third_party/WebKit/Source/WTF/wtf/RAMSize.cpp
@@ -98,7 +98,7 @@
         return ramSizeGuess;
     return mst.st_size;
 #elif OS(STARBOARD)
-    return SbSystemGetTotalMemory();
+    return SbSystemGetTotalCPUMemory();
 #endif
 }
 
diff --git a/src/third_party/mozjs/js/src/shell/js.cpp b/src/third_party/mozjs/js/src/shell/js.cpp
index cc11b09..7b1cf6b 100644
--- a/src/third_party/mozjs/js/src/shell/js.cpp
+++ b/src/third_party/mozjs/js/src/shell/js.cpp
@@ -80,6 +80,15 @@
 #include "TraceLogging.h"
 #endif
 
+#if defined(DEBUG) && defined(STARBOARD)
+// On Starboard platforms, DEBUG will get #undef'd when we #include zlib.h
+#define STARBOARD_DEBUG
+#endif
+
+#ifdef USE_ZLIB
+#include "zlib.h"
+#endif
+
 using namespace js;
 using namespace js::cli;
 
@@ -172,7 +181,7 @@
 static bool compileOnly = false;
 static bool fuzzingSafe = false;
 
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
 static bool OOM_printAllocationCount = false;
 #endif
 
@@ -1684,7 +1693,7 @@
     return true;
 }
 
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
 
 static void
 UpdateSwitchTableBounds(JSContext *cx, HandleScript script, unsigned offset,
@@ -3172,7 +3181,7 @@
     ParseNode *pn = parser.parse(NULL);
     if (!pn)
         return false;
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
     DumpParseTree(pn);
     fputc('\n', stderr);
 #endif
@@ -3510,7 +3519,7 @@
         return false;
     }
 
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
     cx->stackIterAssertionEnabled = JSVAL_TO_BOOLEAN(JS_ARGV(cx, vp)[0]);
 #endif
 
@@ -3649,7 +3658,7 @@
 "throwError()",
 "  Throw an error from JS_ReportError."),
 
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
     JS_FN_HELP("disassemble", DisassembleToString, 1, 0,
 "disassemble([fun])",
 "  Return the disassembly for the given function."),
@@ -3751,7 +3760,7 @@
 "  Create object with resolve hook that copies properties\n"
 "  from src. If proto is omitted, use Object.prototype."),
 
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
     JS_FN_HELP("arrayInfo", js_ArrayInfo, 1, 0,
 "arrayInfo(a1, a2, ...)",
 "  Report statistics about arrays."),
@@ -4531,7 +4540,7 @@
 static JSBool
 dom_genericMethod(JSContext *cx, unsigned argc, JS::Value *vp);
 
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
 static JSClass *GetDomClass();
 #endif
 
@@ -4622,7 +4631,7 @@
     JSCLASS_NO_INTERNAL_MEMBERS
 };
 
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
 static JSClass *GetDomClass() {
     return &dom_class;
 }
@@ -5245,7 +5254,7 @@
         || !op.addBoolOption('a', "always-mjit", "No-op (still used by fuzzers)")
         || !op.addBoolOption('D', "dump-bytecode", "Dump bytecode with exec count for all scripts")
         || !op.addBoolOption('b', "print-timing", "Print sub-ms runtime for each file that's run")
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
         || !op.addBoolOption('O', "print-alloc", "Print the number of allocations at exit")
 #endif
         || !op.addOptionalStringArg("script", "A script to execute (after all options)")
@@ -5325,7 +5334,7 @@
     if (op.getHelpOption())
         return EXIT_SUCCESS;
 
-#ifdef DEBUG
+#if defined(DEBUG) || defined(STARBOARD_DEBUG)
     /*
      * Process OOM options as early as possible so that we can observe as many
      * allocations as possible.
@@ -5376,7 +5385,7 @@
 
     result = Shell(cx, &op, envp);
 
-#ifdef DEBUG
+#if defined(DEBUG) && !defined(JS_USE_CUSTOM_ALLOCATOR)
     if (OOM_printAllocationCount)
         printf("OOM max count: %u\n", OOM_counter);
 #endif