diff --git a/core/lib/Drupal/Core/Breadcrumb/Breadcrumb.php b/core/lib/Drupal/Core/Breadcrumb/Breadcrumb.php
new file mode 100644
index 0000000..8414154
--- /dev/null
+++ b/core/lib/Drupal/Core/Breadcrumb/Breadcrumb.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\Breadcrumb\Breadcrumb.
+ */
+
+namespace Drupal\Core\Breadcrumb;
+
+use Drupal\Core\Cache\CacheableMetadata;
+
+/**
+ * Used to return generated breadcrumbs, along with associated cacheability metadata.
+ */
+class Breadcrumb extends CacheableMetadata {
+
+  /**
+   * An array of links for the breadcrumb.
+   *
+   * @var \Drupal\Core\Link[]
+   */
+  protected $links = [];
+
+  /**
+   * Gets the breadcrumb links.
+   *
+   * @return \Drupal\Core\Link[]
+   */
+  public function getLinks() {
+    return $this->links ;
+  }
+
+  /**
+   * Sets the breadcrumb links.
+   *
+   * @param \Drupal\Core\Link[] $links
+   *   The breadcrumb links.
+   *
+   * @return $this
+   */
+  public function setLinks(array $links) {
+    $this->links = $links;
+
+    return $this;
+  }
+
+}
diff --git a/core/lib/Drupal/Core/Breadcrumb/BreadcrumbBuilderInterface.php b/core/lib/Drupal/Core/Breadcrumb/BreadcrumbBuilderInterface.php
index ebdfa55..e566f54 100644
--- a/core/lib/Drupal/Core/Breadcrumb/BreadcrumbBuilderInterface.php
+++ b/core/lib/Drupal/Core/Breadcrumb/BreadcrumbBuilderInterface.php
@@ -32,9 +32,8 @@ public function applies(RouteMatchInterface $route_match);
    * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
    *   The current route match.
    *
-   * @return \Drupal\Core\Link[]
-   *   An array of links for the breadcrumb. Returning an empty array will
-   *   suppress all breadcrumbs.
+   * @return \Drupal\Core\Breadcrumb\Breadcrumb
+   *   A breadcrumb.
    */
   public function build(RouteMatchInterface $route_match);
 
diff --git a/core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php b/core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php
index 0099897..6cb2420 100644
--- a/core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php
+++ b/core/lib/Drupal/Core/Breadcrumb/BreadcrumbManager.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Breadcrumb;
 
+use \Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
@@ -88,9 +89,10 @@ public function build(RouteMatchInterface $route_match) {
 
       $build = $builder->build($route_match);
 
-      if (is_array($build)) {
+      if ($build instanceof Breadcrumb) {
         // The builder returned an array of breadcrumb links.
-        $breadcrumb = $build;
+        $breadcrumb['contexts'] = $build->getCacheContexts();
+        $breadcrumb['links'] = $build->getLinks();
         $context['builder'] = $builder;
         break;
       }
@@ -99,7 +101,7 @@ public function build(RouteMatchInterface $route_match) {
       }
     }
     // Allow modules to alter the breadcrumb.
-    $this->moduleHandler->alter('system_breadcrumb', $breadcrumb, $route_match, $context);
+    $this->moduleHandler->alter('system_breadcrumb', $breadcrumb['links'], $route_match, $context);
     // Fall back to an empty breadcrumb.
     return $breadcrumb;
   }
diff --git a/core/modules/book/src/BookBreadcrumbBuilder.php b/core/modules/book/src/BookBreadcrumbBuilder.php
index be0e63a..b1ece44 100644
--- a/core/modules/book/src/BookBreadcrumbBuilder.php
+++ b/core/modules/book/src/BookBreadcrumbBuilder.php
@@ -8,6 +8,7 @@
 namespace Drupal\book;
 
 use Drupal\Core\Access\AccessManagerInterface;
+use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
@@ -72,6 +73,8 @@ public function applies(RouteMatchInterface $route_match) {
    */
   public function build(RouteMatchInterface $route_match) {
     $book_nids = array();
+    $breadcrumb = new Breadcrumb();
+
     $links = array(Link::createFromRoute($this->t('Home'), '<front>'));
     $book = $route_match->getParameter('node')->book;
     $depth = 1;
@@ -92,7 +95,9 @@ public function build(RouteMatchInterface $route_match) {
         $depth++;
       }
     }
-    return $links;
+    $breadcrumb->setLinks($links);
+    $breadcrumb->setCacheContexts(['route.book_navigation']);
+    return $breadcrumb;
   }
 
 }
diff --git a/core/modules/comment/src/CommentBreadcrumbBuilder.php b/core/modules/comment/src/CommentBreadcrumbBuilder.php
index 8bc2f25..94817af 100644
--- a/core/modules/comment/src/CommentBreadcrumbBuilder.php
+++ b/core/modules/comment/src/CommentBreadcrumbBuilder.php
@@ -8,6 +8,7 @@
 namespace Drupal\comment;
 
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
+use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
 use Drupal\Core\Routing\RouteMatchInterface;
@@ -47,19 +48,21 @@ public function applies(RouteMatchInterface $route_match) {
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
-    $breadcrumb = [Link::createFromRoute($this->t('Home'), '<front>')];
+    $breadcrumb = new Breadcrumb();
+    $breadcrumb = $breadcrumb->setCacheContexts(['route']);
+    $links = [Link::createFromRoute($this->t('Home'), '<front>')];
 
     $entity = $route_match->getParameter('entity');
-    $breadcrumb[] = new Link($entity->label(), $entity->urlInfo());
+    $links[] = new Link($entity->label(), $entity->urlInfo());
 
     if (($pid = $route_match->getParameter('pid')) && ($comment = $this->storage->load($pid))) {
       /** @var \Drupal\comment\CommentInterface $comment */
       // Display link to parent comment.
       // @todo Clean-up permalink in https://www.drupal.org/node/2198041
-      $breadcrumb[] = new Link($comment->getSubject(), $comment->urlInfo());
+      $links[] = new Link($comment->getSubject(), $comment->urlInfo());
     }
 
-    return $breadcrumb;
+    return $breadcrumb->setLinks($links);
   }
 
 }
diff --git a/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php b/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php
index f595ee8..d15478f 100644
--- a/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php
+++ b/core/modules/forum/src/Breadcrumb/ForumBreadcrumbBuilderBase.php
@@ -8,6 +8,7 @@
 namespace Drupal\forum\Breadcrumb;
 
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
+use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
@@ -65,14 +66,17 @@ public function __construct(EntityManagerInterface $entity_manager, ConfigFactor
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
-    $breadcrumb[] = Link::createFromRoute($this->t('Home'), '<front>');
+    $breadcrumb = new Breadcrumb();
+    $breadcrumb->setCacheContexts(['route']);
+
+    $links[] = Link::createFromRoute($this->t('Home'), '<front>');
 
     $vocabulary = $this->entityManager
       ->getStorage('taxonomy_vocabulary')
       ->load($this->config->get('vocabulary'));
-    $breadcrumb[] = Link::createFromRoute($vocabulary->label(), 'forum.index');
+    $links[] = Link::createFromRoute($vocabulary->label(), 'forum.index');
 
-    return $breadcrumb;
+    return $breadcrumb->setLinks($links);
   }
 
 }
diff --git a/core/modules/forum/src/Breadcrumb/ForumNodeBreadcrumbBuilder.php b/core/modules/forum/src/Breadcrumb/ForumNodeBreadcrumbBuilder.php
index 0e0bd04..3fb421b 100644
--- a/core/modules/forum/src/Breadcrumb/ForumNodeBreadcrumbBuilder.php
+++ b/core/modules/forum/src/Breadcrumb/ForumNodeBreadcrumbBuilder.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\forum\Breadcrumb;
 
+use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Link;
 use Drupal\Core\Routing\RouteMatchInterface;
 
@@ -28,20 +29,23 @@ public function applies(RouteMatchInterface $route_match) {
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
-    $breadcrumb = parent::build($route_match);
+    $breadcrumb = new Breadcrumb();
+    $breadcrumb->setCacheContexts(['route']);
+    $links = parent::build($route_match);
 
     $parents = $this->forumManager->getParents($route_match->getParameter('node')->forum_tid);
     if ($parents) {
       $parents = array_reverse($parents);
       foreach ($parents as $parent) {
-        $breadcrumb[] = Link::createFromRoute($parent->label(), 'forum.page',
+        $links[] = Link::createFromRoute($parent->label(), 'forum.page',
           array(
             'taxonomy_term' => $parent->id(),
           )
         );
       }
     }
-    return $breadcrumb;
+
+    return $breadcrumb->setLinks($links);
   }
 
 }
diff --git a/core/modules/system/src/PathBasedBreadcrumbBuilder.php b/core/modules/system/src/PathBasedBreadcrumbBuilder.php
index 45418a7b..c5b1ef4 100644
--- a/core/modules/system/src/PathBasedBreadcrumbBuilder.php
+++ b/core/modules/system/src/PathBasedBreadcrumbBuilder.php
@@ -9,7 +9,9 @@
 
 use Drupal\Component\Utility\Unicode;
 use Drupal\Core\Access\AccessManagerInterface;
+use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
+use Drupal\Core\Cache\CacheableMetadata;
 use Drupal\Core\Config\ConfigFactoryInterface;
 use Drupal\Core\Controller\TitleResolverInterface;
 use Drupal\Core\Link;
@@ -125,6 +127,7 @@ public function applies(RouteMatchInterface $route_match) {
    * {@inheritdoc}
    */
   public function build(RouteMatchInterface $route_match) {
+    $breadcrumb = new Breadcrumb();
     $links = array();
 
     // General path-based breadcrumbs. Use the actual request path, prior to
@@ -139,17 +142,21 @@ public function build(RouteMatchInterface $route_match) {
     // /user is just a redirect, so skip it.
     // @todo Find a better way to deal with /user.
     $exclude['user'] = TRUE;
+    // Because this breadcrumb builder is entirely path-based, vary by the 'url'
+    // cache context.
+    $breadcrumb->setCacheContexts(['url']);
     while (count($path_elements) > 1) {
       array_pop($path_elements);
       // Copy the path elements for up-casting.
       $route_request = $this->getRequestForPath(implode('/', $path_elements), $exclude);
       if ($route_request) {
         $route_match = RouteMatch::createFromRequest($route_request);
-        $access = $this->accessManager->check($route_match, $this->currentUser);
-        if ($access) {
+        $access = $this->accessManager->check($route_match, $this->currentUser, NULL, TRUE);
+        // The set of breadcrumb links depends on the access result, so merge
+        // the access result's cacheability metadata.
+        $breadcrumb = $breadcrumb->merge(CacheableMetadata::createFromObject($access));
+        if ($access->isAllowed()) {
           $title = $this->titleResolver->getTitle($route_request, $route_match->getRouteObject());
-        }
-        if ($access) {
           if (!isset($title)) {
             // Fallback to using the raw path component as the title if the
             // route is missing a _title or _title_callback attribute.
@@ -165,7 +172,8 @@ public function build(RouteMatchInterface $route_match) {
       // Add the Home link, except for the front page.
       $links[] = Link::createFromRoute($this->t('Home'), '<front>');
     }
-    return array_reverse($links);
+
+    return $breadcrumb->setLinks(array_reverse($links));
   }
 
   /**
diff --git a/core/modules/system/src/Plugin/Block/SystemBreadcrumbBlock.php b/core/modules/system/src/Plugin/Block/SystemBreadcrumbBlock.php
index c7629f0..8e6a102 100644
--- a/core/modules/system/src/Plugin/Block/SystemBreadcrumbBlock.php
+++ b/core/modules/system/src/Plugin/Block/SystemBreadcrumbBlock.php
@@ -79,18 +79,12 @@ public function build() {
       // $breadcrumb is expected to be an array of rendered breadcrumb links.
       return array(
         '#theme' => 'breadcrumb',
-        '#links' => $breadcrumb,
+        '#links' => $breadcrumb['links'],
+        '#cache' => [
+          'contexts' => $breadcrumb['contexts'],
+        ],
       );
     }
   }
 
-  /**
-   * {@inheritdoc}
-   *
-   * @todo Make cacheable in https://www.drupal.org/node/2483183
-   */
-  public function getCacheMaxAge() {
-    return 0;
-  }
-
 }
diff --git a/core/modules/system/src/Tests/Menu/MenuRouterTest.php b/core/modules/system/src/Tests/Menu/MenuRouterTest.php
index 4089931..d75bd6c 100644
--- a/core/modules/system/src/Tests/Menu/MenuRouterTest.php
+++ b/core/modules/system/src/Tests/Menu/MenuRouterTest.php
@@ -296,19 +296,19 @@ protected function doTestThemeCallbackMaintenanceMode() {
    */
   protected function doTestThemeCallbackOptionalTheme() {
     // Request a theme that is not installed.
-    $this->drupalGet('menu-test/theme-callback/use-stark-theme');
+    $this->drupalGet('menu-test/theme-callback/use-test-theme');
     $this->assertText('Active theme: bartik. Actual theme: bartik.', 'The theme negotiation system falls back on the default theme when a theme that is not installed is requested.');
     $this->assertRaw('bartik/css/base/elements.css', "The default theme's CSS appears on the page.");
 
     // Now install the theme and request it again.
     $theme_handler = $this->container->get('theme_handler');
-    $theme_handler->install(array('stark'));
+    $theme_handler->install(array('test_theme'));
 
-    $this->drupalGet('menu-test/theme-callback/use-stark-theme');
-    $this->assertText('Active theme: stark. Actual theme: stark.', 'The theme negotiation system uses an optional theme once it has been installed.');
-    $this->assertRaw('stark/css/layout.css', "The optional theme's CSS appears on the page.");
+    $this->drupalGet('menu-test/theme-callback/use-test-theme');
+    $this->assertText('Active theme: test_theme. Actual theme: test_theme.', 'The theme negotiation system uses an optional theme once it has been installed.');
+    $this->assertRaw('test_theme/kitten.css', "The optional theme's CSS appears on the page.");
 
-    $theme_handler->uninstall(array('stark'));
+    $theme_handler->uninstall(array('test_theme'));
   }
 
   /**
diff --git a/core/modules/system/src/Tests/Theme/ThemeInfoTest.php b/core/modules/system/src/Tests/Theme/ThemeInfoTest.php
index 3d376ed..55c71e6 100644
--- a/core/modules/system/src/Tests/Theme/ThemeInfoTest.php
+++ b/core/modules/system/src/Tests/Theme/ThemeInfoTest.php
@@ -94,13 +94,13 @@ public function testChanges() {
     $active_theme = $this->themeManager->getActiveTheme();
     // Make sure we are not testing the wrong theme.
     $this->assertEqual('test_theme', $active_theme->getName());
-    $this->assertEqual(['classy/base'], $active_theme->getLibraries());
+    $this->assertEqual(['classy/base', 'test_theme/global-styling'], $active_theme->getLibraries());
 
     // @see theme_test_system_info_alter()
     $this->state->set('theme_test.modify_info_files', TRUE);
     drupal_flush_all_caches();
     $active_theme = $this->themeManager->getActiveTheme();
-    $this->assertEqual(['classy/base', 'core/backbone'], $active_theme->getLibraries());
+    $this->assertEqual(['classy/base', 'test_theme/global-styling', 'core/backbone'], $active_theme->getLibraries());
   }
 
 }
diff --git a/core/modules/system/tests/modules/menu_test/src/Theme/TestThemeNegotiator.php b/core/modules/system/tests/modules/menu_test/src/Theme/TestThemeNegotiator.php
index b4cdd0a..2d8c5f3 100644
--- a/core/modules/system/tests/modules/menu_test/src/Theme/TestThemeNegotiator.php
+++ b/core/modules/system/tests/modules/menu_test/src/Theme/TestThemeNegotiator.php
@@ -35,8 +35,8 @@ public function determineActiveTheme(RouteMatchInterface $route_match) {
       return \Drupal::config('system.theme')->get('admin');
     }
     // Test using a theme that exists, but may or may not be installed.
-    elseif ($argument == 'use-stark-theme') {
-      return 'stark';
+    elseif ($argument == 'use-test-theme') {
+      return 'test_theme';
     }
     // Test using a theme that does not exist.
     elseif ($argument == 'use-fake-theme') {
diff --git a/core/modules/system/tests/themes/test_theme/test_theme.info.yml b/core/modules/system/tests/themes/test_theme/test_theme.info.yml
index 7ddcb2d..e9d6602 100644
--- a/core/modules/system/tests/themes/test_theme/test_theme.info.yml
+++ b/core/modules/system/tests/themes/test_theme/test_theme.info.yml
@@ -16,6 +16,8 @@ base theme: classy
 core: 8.x
 stylesheets-remove:
   - '@system/css/system.module.css'
+libraries:
+  - test_theme/global-styling
 regions:
   content: Content
   left: Left
diff --git a/core/modules/system/tests/themes/test_theme/test_theme.libraries.yml b/core/modules/system/tests/themes/test_theme/test_theme.libraries.yml
new file mode 100644
index 0000000..c1fe4a5
--- /dev/null
+++ b/core/modules/system/tests/themes/test_theme/test_theme.libraries.yml
@@ -0,0 +1,5 @@
+global-styling:
+  version: VERSION
+  css:
+    base:
+      kitten.css: {}
diff --git a/core/modules/taxonomy/src/TermBreadcrumbBuilder.php b/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
index 7c4cc89..818f51d 100644
--- a/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
+++ b/core/modules/taxonomy/src/TermBreadcrumbBuilder.php
@@ -8,6 +8,7 @@
 namespace Drupal\taxonomy;
 
 use Drupal\Core\Breadcrumb\BreadcrumbBuilderInterface;
+use Drupal\Core\Breadcrumb\Breadcrumb;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Link;
 use Drupal\Core\Routing\RouteMatchInterface;
@@ -67,9 +68,14 @@ public function build(RouteMatchInterface $route_match) {
       $breadcrumb[] = Link::createFromRoute($term->getName(), 'entity.taxonomy_term.canonical', array('taxonomy_term' => $term->id()));
     }
     $breadcrumb[] = Link::createFromRoute($this->t('Home'), '<front>');
-    $breadcrumb = array_reverse($breadcrumb);
+    $links = array_reverse($breadcrumb);
 
-    return $breadcrumb;
+    $breadcrumb = new Breadcrumb();
+    // This breadcrumb builder is based on a route parameter, and hence it
+    // depends on the 'route' cache context.
+    $breadcrumb->setCacheContexts(['route']);
+
+    return $breadcrumb->setLinks($links);
   }
 
 }
diff --git a/core/themes/stark/README.txt b/core/themes/stark/README.txt
index 141a3d0..552261a 100644
--- a/core/themes/stark/README.txt
+++ b/core/themes/stark/README.txt
@@ -10,9 +10,7 @@ default markup without the interference of changes commonly made by more
 complex themes.
 
 To avoid obscuring CSS added to the page by Drupal or a contrib module, the
-Stark theme itself has no styling, except just enough CSS to arrange the page
-in a traditional "Header, sidebars, content, and footer" layout. See the
-layout.css file for more information.
+Stark theme itself has no styling.
 
 
 ABOUT DRUPAL THEMING
diff --git a/core/themes/stark/config/schema/stark.schema.yml b/core/themes/stark/config/schema/stark.schema.yml
deleted file mode 100644
index 2b7f958..0000000
--- a/core/themes/stark/config/schema/stark.schema.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-# Schema for the configuration files of the Stark theme.
-
-stark.settings:
-  type: theme_settings
-  label: 'Stark settings'
diff --git a/core/themes/stark/css/layout.css b/core/themes/stark/css/layout.css
index 486014b..e69de29 100644
--- a/core/themes/stark/css/layout.css
+++ b/core/themes/stark/css/layout.css
@@ -1,123 +0,0 @@
-/**
- * @file
- * Stark layout method
- *
- * To avoid obscuring CSS added to the page by Drupal or a contrib module, the
- * Stark theme itself has no styling, except just enough CSS to arrange the page
- * in a traditional "Header, sidebars, content, and footer" layout.
- *
- * This layout method works reasonably well, but shouldn't be used on a
- * production site because it can break. For example, if an over-large image
- * (one that is wider than 20% of the viewport) is in the left sidebar, the
- * image will overlap with the .layout-content to the right.
- */
-img {
-  height: auto;
-  max-width: 100%;
-}
-main:after {
-  content: "";
-  display: table;
-  clear: both;
-}
-
-.layout-content,
-.layout-sidebar-first,
-.layout-sidebar-second {
-  display: inline;
-  position: relative;
-}
-
-details,
-summary {
-  display: block;
-}
-
-@media all and (min-width: 480px) and (max-width: 959px) {
-  .layout-content {
-    width: 67%;
-    float: right; /* LTR */
-  }
-  [dir="rtl"] .layout-content {
-    float: left;
-  }
-
-  .layout-sidebar-first {
-    width: 33%;
-    float: left; /* LTR */
-  }
-  [dir="rtl"] .layout-sidebar-first {
-    float: right;
-  }
-
-  .layout-sidebar-second {
-    float: right; /* LTR */
-    clear: both;
-    width: 100%;
-  }
-  [dir="rtl"] .layout-sidebar-second {
-    float: right;
-    clear: right;
-  }
-
-  .layout-sidebar-second .block {
-    float: left; /* LTR */
-    width: 33%;
-  }
-  [dir="rtl"] .layout-sidebar-second .block {
-    float: right;
-  }
-  .layout-sidebar-second .block:nth-child(3n+1) {
-    clear: both;
-  }
-}
-
-@media all and (min-width: 960px) {
-  .layout-content {
-    width: 60%;
-    float: left; /* LTR */
-    left: 20%; /* LTR */
-  }
-  [dir="rtl"] .layout-content {
-    float: right;
-    left: 0;
-    right: 20%;
-  }
-
-  .layout-sidebar-first {
-    width: 20%;
-    float: left; /* LTR */
-    left: -60%; /* LTR */
-  }
-  [dir="rtl"] .layout-sidebar-first {
-    float: right;
-    left: 0;
-    right: -60%;
-  }
-
-  .layout-sidebar-second {
-    float: right; /* LTR */
-    width: 20%;
-  }
-  [dir="rtl"] .layout-sidebar-second {
-    float: left;
-  }
-}
-
-/**
- * Responsive tables.
- */
-@media screen and (max-width:28.125em) { /* 450px */
-  th.priority-low,
-  td.priority-low,
-  th.priority-medium,
-  td.priority-medium {
-    display: none;
-  }
-}
-@media screen and (max-width:45em) { /* 720px */
-  th.priority-low,
-  td.priority-low {
-    display: none;
-  }
-}
diff --git a/core/themes/stark/stark.breakpoints.yml b/core/themes/stark/stark.breakpoints.yml
deleted file mode 100644
index 92d33b2..0000000
--- a/core/themes/stark/stark.breakpoints.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-stark.mobile:
-  label: mobile
-  mediaQuery: '(min-width: 0px)'
-  weight: 2
-  multipliers:
-   - 1x
-stark.narrow:
-  label: narrow
-  mediaQuery: 'all and (min-width: 480px) and (max-width: 959px)'
-  weight: 1
-  multipliers:
-    - 1x
-stark.wide:
-  label: wide
-  mediaQuery: 'all and (min-width: 960px)'
-  weight: 0
-  multipliers:
-    - 1x
diff --git a/core/themes/stark/stark.info.yml b/core/themes/stark/stark.info.yml
index 69337d5..e513ca8 100644
--- a/core/themes/stark/stark.info.yml
+++ b/core/themes/stark/stark.info.yml
@@ -4,7 +4,3 @@ description: 'An intentionally plain theme with almost no styling to demonstrate
 package: Core
 version: VERSION
 core: 8.x
-libraries:
-  - stark/global-styling
-stylesheets-remove:
-  - core/assets/vendor/normalize-css/normalize.css
diff --git a/core/themes/stark/stark.libraries.yml b/core/themes/stark/stark.libraries.yml
deleted file mode 100644
index 7655147..0000000
--- a/core/themes/stark/stark.libraries.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-global-styling:
-  version: VERSION
-  css:
-    base:
-      css/layout.css: {}
