From 889e9880f516ac1cf04aedb95a9161fb061d4695 Mon Sep 17 00:00:00 2001
From: Harry Rein <hrein@edx.org>
Date: Mon, 23 Oct 2017 16:02:56 -0400
Subject: [PATCH] Responsive dashboard and learner profile.

---
 common/djangoapps/terrain/steps.py            |    6 +-
 .../courseware/features/registration.py       |    4 +-
 lms/static/sass/_header.scss                  |   11 +-
 lms/static/sass/features/_course-search.scss  |    7 +-
 .../sass/features/_learner-profile.scss       |    5 +
 lms/static/sass/multicourse/_dashboard.scss   | 1710 ++++++++---------
 lms/static/sass/search/_search.scss           |   22 +-
 lms/templates/dashboard.html                  |  187 +-
 .../js/spec/course_search_spec.js             |   25 +-
 .../js/views/dashboard_search_results_view.js |    2 -
 .../dashboard_search_results.underscore       |    1 -
 themes/edx.org/lms/templates/dashboard.html   |   10 +-
 12 files changed, 906 insertions(+), 1084 deletions(-)

diff --git a/common/djangoapps/terrain/steps.py b/common/djangoapps/terrain/steps.py
index 9c91474ff06..7016a6b752a 100644
--- a/common/djangoapps/terrain/steps.py
+++ b/common/djangoapps/terrain/steps.py
@@ -53,12 +53,12 @@ def i_visit_the_homepage(step):
 @step(u'I (?:visit|access|open) the dashboard$')
 def i_visit_the_dashboard(step):
     world.visit('/dashboard')
-    assert world.is_css_present('.container.dashboard')
+    assert world.is_css_present('.dashboard')
 
 
 @step('I should be on the dashboard page$')
 def i_should_be_on_the_dashboard(step):
-    assert world.is_css_present('.container.dashboard')
+    assert world.is_css_present('.dashboard')
     assert 'Dashboard' in world.browser.title
 
 
@@ -166,7 +166,7 @@ def i_am_logged_in(step):
     world.create_user('robot', 'test')
     world.log_in(username='robot', password='test')
     world.browser.visit(lettuce.django.django_url('/'))
-    dash_css = '.container.dashboard'
+    dash_css = '.dashboard'
     assert world.is_css_present(dash_css)
 
 
diff --git a/lms/djangoapps/courseware/features/registration.py b/lms/djangoapps/courseware/features/registration.py
index b83ed5dd6f0..d1baaaf3056 100644
--- a/lms/djangoapps/courseware/features/registration.py
+++ b/lms/djangoapps/courseware/features/registration.py
@@ -11,7 +11,7 @@ def i_register_for_the_course(_step, course):
     url = django_url('courses/%s/about' % world.scenario_dict['COURSE'].id.to_deprecated_string())
     world.browser.visit(url)
     world.css_click('.intro a.register')
-    assert world.is_css_present('.container.dashboard')
+    assert world.is_css_present('.dashboard')
 
 
 @step('I register to audit the course$')
@@ -27,7 +27,7 @@ def i_register_to_audit_the_course(_step):
         ignored_exceptions=AttributeError
     )
     time.sleep(1)
-    assert world.is_css_present('.container.dashboard')
+    assert world.is_css_present('.dashboard')
 
 
 @step(u'I should see an empty dashboard message')
diff --git a/lms/static/sass/_header.scss b/lms/static/sass/_header.scss
index 81f5faf489b..68bfd50fee3 100644
--- a/lms/static/sass/_header.scss
+++ b/lms/static/sass/_header.scss
@@ -20,14 +20,14 @@
 
     a {
       @include float(left);
-      @include margin($baseline/2, 0, 0, $baseline);
+      @include margin($baseline*0.75, 0, 0, $baseline*2);
 
       display: block;
 
       .logo {
         @include float(left);
 
-        width: $header-logo-width;
+        height: $header-logo-height;
       }
 
       @include media-breakpoint-down(sm) {
@@ -90,7 +90,7 @@
 
           a {
             color: theme-color("secondary");
-            padding: $baseline*0.35 $baseline*1.25 $baseline*0.75;
+            padding: $baseline*0.35 $baseline*1.25 $baseline;
             font-weight: $font-weight-normal;
             display: inline-block;
             margin-bottom: -1*$baseline/2;
@@ -112,8 +112,7 @@
 
       .secondary {
         @include float(right);
-
-        margin: $baseline*0.6 $baseline 0 0;
+        @include margin($baseline*0.75, $baseline*2, 0, 0);
 
         // All navigation items
         .nav-item {
@@ -230,7 +229,7 @@
     .hamburger-menu {
       @include left(22px);
       position: absolute;
-      top: $baseline;
+      top: $baseline*1.25;
       width: 30px;
       height: 20px;
       -webkit-transform: rotate(0deg);
diff --git a/lms/static/sass/features/_course-search.scss b/lms/static/sass/features/_course-search.scss
index 3a6629052e4..f09987201bf 100644
--- a/lms/static/sass/features/_course-search.scss
+++ b/lms/static/sass/features/_course-search.scss
@@ -23,8 +23,6 @@
   }
 
   .search-results-item {
-    @include padding-right(140px);
-
     position: relative;
     border-top: 1px solid $border-color;
     padding: $baseline ($baseline/2);
@@ -52,10 +50,9 @@
   }
 
   .result-link {
-    @include right($baseline/2);
+    @include float(right);
+    @include padding-left($baseline/4);
 
-    position: absolute;
-    top: $baseline;
     line-height: 1.6em;
   }
 
diff --git a/lms/static/sass/features/_learner-profile.scss b/lms/static/sass/features/_learner-profile.scss
index 95659a93daa..62a1fdeebf7 100644
--- a/lms/static/sass/features/_learner-profile.scss
+++ b/lms/static/sass/features/_learner-profile.scss
@@ -273,6 +273,11 @@
         border: none;
         box-shadow: none;
         padding: 0;
+
+        @media (max-width: $learner-profile-container-flex) { // Switch to map-get($grid-breakpoints,md) for bootstrap
+          max-width: calc(100% - 40px);
+          min-width: auto;
+        }
       }
 
       .u-field-title {
diff --git a/lms/static/sass/multicourse/_dashboard.scss b/lms/static/sass/multicourse/_dashboard.scss
index 213115da65a..67c58d23b78 100644
--- a/lms/static/sass/multicourse/_dashboard.scss
+++ b/lms/static/sass/multicourse/_dashboard.scss
@@ -1,1214 +1,1074 @@
 // lms - views - user/student dashboard
 // ====================
 
-// Table of Contents
-// * +Dashboard - Sidebar
-// * +Dashboard - Course Listing
-// * +Dashboard - Course Item
-// * +Misc - Uncategorized
-// * +Dashboard - Banner
-
-
-// +Dashboard - Sidebar
+// +Dashboard
 // ====================
 .dashboard {
   @include clearfix();
 
-  padding: ($baseline*2) 0 $baseline 0;
+  display: flex;
+  flex-direction: row;
+  width: 100%;
 
-  .wrapper-find-courses {
-    @include float(right);
-    @include margin-left(flex-gutter());
+  // Contains main course card listings
+  .main-container {
+    @include padding($baseline*2, $baseline, $baseline, $baseline*2);
 
-    width: flex-grid(3);
+    flex-grow: 8;
+    order: 1;
 
-    .course-advertise {
-      @include clearfix();
-
-      box-sizing: border-box;
-      padding: $baseline;
-      border: 1px solid $border-color-l3;
-
-      .advertise-message {
-        @include font-size(12);
-
-        color: $gray-d4;
-        margin-bottom: $baseline;
+    .my-courses {
+      &:focus {
+        outline: none;
       }
 
-      .ad-link {
-        @include text-align(center);
+      .wrapper-header-courses {
+        margin-bottom: $baseline/2;
 
-        .btn-neutral {
-          padding-bottom: 12px;
-          padding-top: 12px;
-        }
+        .header-courses {
+          @extend %t-title5;
 
-        a {
-          @include font-size(16);
-          @include line-height(17);
+          @include padding-right($baseline/2);
+        }
+      }
 
-          padding: $baseline * 0.5;
-          border: 1px solid $blue;
-          color: $blue;
-          text-decoration: none;
-          display: block;
+      // UI: course list
+      .listing-courses {
+        @extend %ui-no-list;
 
-          &:hover,
-          &:focus,
-          &:active {
-            color: $white;
-            background-color: $blue;
-          }
+        .course-item {
+          margin-bottom: $baseline;
+          padding-bottom: $baseline;
 
-          span {
-            @include margin-left($baseline*0.25);
+          .course-container {
+            border: 1px solid theme-color("light");
+            border-radius: 3px;
           }
 
-          .icon {
-            @include margin-right($baseline*0.25);
+          &:last-of-type {
+            margin-bottom: 0;
+            border-bottom: none;
+            padding-bottom: 0;
           }
         }
       }
-    }
-  }
-
-  .profile-sidebar {
-    background: transparent;
-
-    @include float(right);
-    @include margin-left(flex-gutter());
-
-    width: flex-grid(3);
-    margin-top: ($baseline*2);
 
-    .user-info {
-      @include clearfix();
-
-      > ul {
-        @include box-sizing(border-box);
+      // UI: individual course item
+      .course {
+        @include box-sizing(box);
+        @include transition(all 0.15s linear 0s);
         @include clearfix();
 
-        margin: 0;
-        padding: 0;
-        width: flex-grid(12);
+        @extend %ui-depth2;
 
-        li {
+        .details {
           @include clearfix();
 
-          border-bottom: 1px dotted $border-color-2;
-          list-style: none;
-          margin-bottom: ($baseline*0.75);
-          padding-bottom: 17px;
+          .wrapper-course-image {
+            @include float(left);
+            @include margin-right(flex-gutter());
 
-          &:hover, &:focus {
-            .title .icon {
-              opacity: 1;
-            }
-          }
+            width: flex-grid(3);
+            max-height: 150px;
+            overflow: hidden;
 
-          span {
-            display: block;
-            margin-bottom: ($baseline/4);
-          }
+            .cover {
+              @include box-sizing(border-box);
+              @include transition(all 0.15s linear 0s);
+              @include float(left);
 
-          span.title {
-            @extend %t-title6;
-            @extend %t-strong;
+              position: relative;
 
-            a {
-              text-transform: none;
+              .course-image {
+                width: 100%;
+              }
             }
-          }
 
-          span.copy {
-            @extend %t-copy-sub1;
-          }
+            // "enrolled as" status
+            .sts-enrollment {
+              @include float(left);
 
-          span.data {
-            color: $base-font-color;
-            font-weight: 600;
-            white-space: nowrap;
-            text-overflow: ellipsis;
-            overflow: hidden;
+              width: 100%;
+              position: relative;
+              bottom: 15px;
+              display: inline-block;
+              text-align: center;
 
-            .third-party-auth {
-              color: inherit;
-              font-weight: inherit;
-            }
+              .label {
+                @extend %text-sr;
+              }
 
-          }
-        }
+              .deco-graphic {
+                position: absolute;
+                top: -5px;
 
-        li.order-history {
-          span a {
-            font-size: 13px;
-            line-height: 20px;
-          }
-        }
+                @include right(0);
+              }
 
-        .heads-up {
-          .title {
-            display: inline;
-          }
+              .sts-enrollment-value {
+                @extend %ui-depth1;
+                @extend %copy-badge;
+                @extend %t-demi-strong;
 
-          .copy {
-            @extend %t-copy-sub2;
+                font-size: 0.6em;
+                line-height: 1.5em;
+                border-radius: 0;
+                padding: 1px ($baseline/4);
+                color: white;
+              }
+            }
 
-            display: inline;
+            // Responsive behavior
+            @include media-breakpoint-down(sm) {
+              display: none;
+            }
           }
-        }
-      }
-
-      .reverify-status-list {
-        padding: 0 0 0 ($baseline/2);
-        margin: ($baseline/4) 0;
 
-        .status-item {
-          @extend %t-copy-sub2;
+          .wrapper-course-details {
+            display: block;
 
-          margin-bottom: 7px;
-          border-bottom: 0;
-          padding: 0;
+            @include float(left);
 
-          .icon {
-            display: inline-block;
-            vertical-align: top;
-            margin: ($baseline/10) ($baseline/4) 0 0;
-          }
+            width: flex-grid(9);
+            padding: 0;
+            margin: $baseline/2 0;
 
-          &.is-open .icon {
-            color: $action-primary-bg;
-          }
+            .course-title {
+              a, span {
+                @extend %t-title3;
+                @extend %t-light;
 
-          &.is-pending .icon {
-            color: $warning-color;
-          }
+                display: inline-block;
+                margin-bottom: ($baseline/2);
+                text-decoration: none;
 
-          &.is-approved .icon {
-            color: $success-color;
-          }
+                // Responsive behavior
+                @include media-breakpoint-down(sm) {
+                  @extend %t-title4;
+                }
+              }
+            }
 
-          &.is-denied .icon {
-            color: $alert-color;
-          }
+            .course-info {
+              display: block;
 
-          .label {
-            @extend %text-sr;
-          }
+              @include float(left);
 
-          .course-name {
-            @include line-height(12);
+              padding: 0;
+              margin-top: ($baseline/2);
 
-            display: inline-block;
-            vertical-align: top;
-            width: 80%;
-            color: inherit;
-          }
-        }
-      }
+              [class*="info-"] {
+                color: $gray-d1;
 
-      // status
-      .status {
-        @include clearfix();
+                @extend %t-title7;
 
-        box-sizing: border-box;
-        padding: $baseline;
-        border: 1px solid $border-color-l3;
+                display: inline-block;
+              }
 
-        .list--nav {
-          margin: ($baseline/2) 0 0 0;
-          padding: 0;
-        }
+              .info-date-block {
+                @extend %t-title7;
 
-        .nav__item {
-          @extend %t-weight4;
+                color: $gray; // WCAG 2.0 AA compliant
+                display: block;
+              }
+            }
 
-          @include font-size(13);
+            .wrapper-course-actions {
+              @include margin-right($baseline);
 
-          margin-left: 26px;
-        }
-      }
-    }
-  }
-}
+              margin-top: $baseline/2;
+            }
 
-// CASE: empty dashboard
-.empty-dashboard-message {
-  border: 3px solid $gray-l4;
-  background: $gray-l6;
-  padding: ($baseline*2) 0;
-  text-align: center;
 
-  p {
-    @include font-size(24);
+            // Responsive behavior
+            @include media-breakpoint-down(sm) {
+              width: 100%;
+            }
+          }
 
-    color: $lighter-base-font-color;
-    margin-bottom: $baseline;
-    text-shadow: 0 1px rgba(255,255,255, 0.6);
-  }
+          .course-actions {
 
-  a {
-    background-color: $blue;
-    border: 1px solid $blue;
-    box-shadow: 0 1px 8px 0 $shadow-l1;
+            // UI: course item actions
+            .action {
+              @include box-sizing(border-box);
+              @include margin-right($baseline/2);
+              @include float(right);
 
-    @include box-sizing(border-box);
+              min-width: ($baseline*2);
+              color: $gray-d3;
+              border-radius: 3px;
+              padding: 12px;
+              border: 1px solid $white;
+              text-align: center;
 
-    color: $white;
-    font-family: $sans-serif;
-    display: inline-block;
-    letter-spacing: 1px;
-    margin-top: ($baseline/4);
-    margin-left: ($baseline/4);
-    padding: 15px 20px;
+              &:hover, &:focus {
+                color: $gray-d3;
+                border: 1px solid $gray-l4;
+              }
 
-    &:hover, &:focus {
-      background: $blue-l2;
-      text-decoration: none;
-    }
-  }
-}
+              // STATE: is-disabled
+              &.is-disabled {
+                color: $gray-l4;
+              }
 
-// +Dashboard - Course Listing
-// ====================
-.dashboard {
-  .my-courses {
-    @include float(left);
+              // TYPE: facebook share
+              &.action-facebook {
+                color: $facebook-blue;
+              }
 
-    margin: 0;
-    margin-bottom: $baseline * 2;
-    width: flex-grid(9);
+              // TYPE: twitter share
+              &.action-twitter {
+                color: $twitter-blue;
+              }
+            }
 
+            // UI: general actions dropdown layout
+            .wrapper-action-more {
+              display: inline-block;
+              position: relative;
 
-    .wrapper-header-courses {
-      border-bottom: 4px solid $border-color-l4;
-      margin-bottom: $baseline;
+              @include float(right);
 
-      .header-courses {
-        @extend %t-title5;
+              .action-more {
+                @include font-size(14);
 
-        @include padding-right($baseline/2);
-      }
-    }
+                box-shadow: none;
+                background: $white;
+                background-image: none;
+                color: $gray;
+                line-height: 16px;
+                text-shadow: none;
+              }
 
-    // UI: course list
-    .listing-courses {
-      @extend %ui-no-list;
+              .actions-dropdown {
+                @extend %ui-no-list;
+                @extend %ui-depth1;
 
-      .course-item {
-        margin-bottom: $baseline;
-        padding-bottom: $baseline;
+                display: none;
+                position: absolute;
+                top: ($baseline*2);
 
-        .course-container {
-          border: 2px solid $border-color-l4;
-          border-radius: 3px;
-        }
+                @include right(19px);
 
-        &:last-child {
-          margin-bottom: 0;
-          border-bottom: none;
-          padding-bottom: 0;
-        }
-      }
-    }
-  }
-}
+                pointer-events: none;
+                min-width: ($baseline*7);
 
-// +Dashboard - Course
-// ====================
-.dashboard .my-courses {
-  &:focus {
-    outline: none;
-  }
+                &.is-visible {
+                  display: block;
+                  pointer-events: auto;
+                }
 
-  // UI: individual course item
-  .course {
-    @include box-sizing(box);
-    @include transition(all 0.15s linear 0s);
-    @include clearfix();
+                .actions-dropdown-list {
+                  @extend %ui-no-list;
+
+                  @include box-sizing(border-box);
+
+                  display: table;
+                  box-shadow: 0 1px 1px $shadow-l1;
+                  position: relative;
+                  width: 100%;
+                  border-radius: 3px;
+                  margin: ($baseline/4) 0 0 0;
+                  border: 1px solid $gray-l3;
+                  padding: ($baseline/4) ($baseline/2);
+                  background: $white;
+
+                  // ui triangle/nub
+                  &::after,
+                  &::before {
+                    bottom: 100%;
+
+                    @include right(6px);
+
+                    border: solid transparent;
+                    content: " ";
+                    height: 0;
+                    width: 0;
+                    position: absolute;
+                    pointer-events: none;
+                  }
 
-    @extend %ui-depth2;
+                  &::after {
+                    border-color: $transparent;
+                    border-bottom-color: $white;
+                    border-width: 6px;
 
-    margin: ($baseline/2);
+                    @include margin-right(1px);
+                  }
 
-    .details {
-      @include clearfix();
+                  &::before {
+                    border-color: $transparent;
+                    border-bottom-color: $gray-l3;
+                    border-width: 7px;
+                  }
+                }
 
-      .wrapper-course-image {
-        @include float(left);
-        @include margin-right(flex-gutter());
+                .actions-item {
+                  @extend %t-title7;
 
-        width: flex-grid(3);
+                  display: block;
+                  margin: 0;
 
-        .cover {
-          @include box-sizing(border-box);
-          @include transition(all 0.15s linear 0s);
-          @include float(left);
+                  &.is-hidden {
+                    display: none;
+                  }
 
-          overflow: hidden;
-          position: relative;
-          max-height: 120px;
-          border-radius: ($baseline/5);
-          border: 1px solid $dashboard-course-cover-border;
-          border-bottom: 4px solid $dashboard-course-cover-border;
+                  .action {
+                    @include margin-right(0);
 
-          .course-image {
-            width: 100%;
+                    &:hover, &:focus {
+                      border: 1px solid transparent;
+                    }
+                  }
+                }
+              }
+            }
           }
-        }
-
-        // "enrolled as" status
-        .sts-enrollment {
-          @include float(left);
 
-          width: 100%;
-          position: relative;
-          bottom: 15px;
-          display: inline-block;
-          text-align: center;
+          .course-status {
+            background: $yellow;
+            border: 1px solid $border-color-2;
+            box-shadow: 0 1px 0 0 rgba(255,255,255, 0.6);
+            margin-top: 17px;
 
-          .label {
-            @extend %text-sr;
-          }
+            @include margin-right(flex-gutter());
 
-          .deco-graphic {
-            position: absolute;
-            top: -5px;
+            padding: ($baseline/4);
+            width: flex-grid(8);
 
-            @include right(0);
-          }
+            @include float(left);
+            @include box-sizing(border-box);
 
-          .sts-enrollment-value {
-            @extend %ui-depth1;
-            @extend %copy-badge;
-            @extend %t-demi-strong;
-
-            font-size: 0.6em;
-            line-height: 1.5em;
-            border-radius: 0;
-            padding: 1px ($baseline/4);
-            color: white;
+            p {
+              color: $lighter-base-font-color;
+              font-style: italic;
+              letter-spacing: 1px;
+              text-align: center;
+            }
           }
-        }
-      }
 
-      .wrapper-course-details {
-        display: block;
+          .course-status-completed {
+            background: $gray-l3;
+            color: $very-light-text;
 
-        @include float(left);
+            p {
+              color: $gray-d4;
 
-        width: flex-grid(9);
-        padding: 0;
-      }
-
-      .course-title {
-        a, span {
-          @extend %t-title3;
-          @extend %t-light;
-
-          display: inline-block;
-          margin-bottom: ($baseline/2);
-
-          &:hover, &:focus {
-            text-decoration: none;
+              span {
+                font-weight: bold;
+              }
+            }
           }
-        }
-      }
-
-      .course-info {
-        display: block;
-
-        @include float(left);
-
-        width: flex-grid(4);
-        padding: 0;
-        margin-top: ($baseline/2);
-
-        [class*="info-"] {
-          color: $gray-d1;
-
-          @extend %t-title6;
-
-          display: inline-block;
-        }
 
-        .info-date-block {
-          @extend %t-title7;
+          .enter-course {
+            @extend %btn-pl-white-base;
 
-          color: $gray; // WCAG 2.0 AA compliant
-          display: block;
-        }
-      }
-
-      .wrapper-course-actions {
-        display: block;
-
-        @include float(right);
-
-        width: flex-grid(8);
-        padding: 0;
-        margin-top: ($baseline/2);
-      }
-
-      .course-actions {
-
-        // UI: course item actions
-        .action {
-          @include box-sizing(border-box);
-          @include margin-right($baseline/2);
-          @include float(right);
-
-          min-width: ($baseline*2);
-          color: $gray-d3;
-          border-radius: 3px;
-          padding: 12px;
-          border: 1px solid $white;
-          text-align: center;
-
-          &:hover, &:focus {
-            color: $gray-d3;
-            border: 1px solid $gray-l4;
-          }
-
-          // STATE: is-disabled
-          &.is-disabled {
-            color: $gray-l4;
-          }
+            @include float(right);
 
-          // TYPE: facebook share
-          &.action-facebook {
-            color: $facebook-blue;
+            &.archived {
+              @extend %btn-pl-default-base;
+            }
           }
 
-          // TYPE: twitter share
-          &.action-twitter {
-            color: $twitter-blue;
+          // Responsive behavior
+          @include media-breakpoint-down(md) {
+            @include padding-left($baseline/2);
           }
         }
 
-        // UI: general actions dropdown layout
-        .wrapper-action-more {
-          display: inline-block;
-          position: relative;
-
-          @include float(right);
+        // ====================
 
-          .action-more {
-            @include font-size(14);
+        // UI: messages
+        .wrapper-messages-primary {
+          @include clearfix();
 
-            box-shadow: none;
-            background: $white;
-            background-image: none;
-            color: $gray;
-            line-height: 16px;
-            text-shadow: none;
+          .messages-list {
+            margin: 0;
+            padding: 0;
+            background-color: theme-color("lightest");
           }
 
-          .actions-dropdown {
-            @extend %ui-no-list;
+          .message {
             @extend %ui-depth1;
 
+            border-radius: 3px;
             display: none;
-            position: absolute;
-            top: ($baseline*2);
-
-            @include right(19px);
+            padding: ($baseline/2) $baseline;
+            border-top: 1px solid $gray-l4;
+            color: $base-font-color; // Overrides the normal white color in this one case
 
-            pointer-events: none;
-            min-width: ($baseline*7);
+            // STATE: shown
+            &.is-shown {
+              @include clearfix();
 
-            &.is-visible {
               display: block;
-              pointer-events: auto;
             }
 
-            .actions-dropdown-list {
-              @extend %ui-no-list;
-
-              @include box-sizing(border-box);
-
-              display: table;
-              box-shadow: 0 1px 1px $shadow-l1;
-              position: relative;
-              width: 100%;
-              border-radius: 3px;
-              margin: ($baseline/4) 0 0 0;
-              border: 1px solid $gray-l3;
-              padding: ($baseline/4) ($baseline/2);
-              background: $white;
-
-              // ui triangle/nub
-              &::after,
-              &::before {
-                bottom: 100%;
-
-                @include right(6px);
-
-                border: solid transparent;
-                content: " ";
-                height: 0;
-                width: 0;
-                position: absolute;
-                pointer-events: none;
-              }
-
-              &::after {
-                border-color: $transparent;
-                border-bottom-color: $white;
-                border-width: 6px;
+            a {
+              font-family: $font-family-sans-serif;
+            }
 
-                @include margin-right(1px);
-              }
+            strong {
+              font-weight: 700;
 
-              &::before {
-                border-color: $transparent;
-                border-bottom-color: $gray-l3;
-                border-width: 7px;
+              a {
+                font-weight: 700;
               }
             }
 
-            .actions-item {
-              @extend %t-title7;
+            .actions {
+              @include clearfix();
 
-              display: block;
+              list-style: none;
               margin: 0;
-
-              &.is-hidden {
-                display: none;
-              }
-
-              .action {
-                @include margin-right(0);
-
-                &:hover, &:focus {
-                  border: 1px solid transparent;
-                }
-              }
+              padding: 0;
             }
-          }
-        }
-      }
-
-      .course-status {
-        background: $yellow;
-        border: 1px solid $border-color-2;
-        box-shadow: 0 1px 0 0 rgba(255,255,255, 0.6);
-        margin-top: 17px;
-
-        @include margin-right(flex-gutter());
 
-        padding: ($baseline/4);
-        width: flex-grid(8);
-
-        @include float(left);
-        @include box-sizing(border-box);
-
-        p {
-          color: $lighter-base-font-color;
-          font-style: italic;
-          letter-spacing: 1px;
-          text-align: center;
-        }
-      }
-
-      .course-status-completed {
-        background: $gray-l3;
-        color: $very-light-text;
-
-        p {
-          color: $gray-d4;
+            .message-title,
+            .message-copy .title {
+              @extend %t-title6;
+              @extend %t-weight4;
 
-          span {
-            font-weight: bold;
-          }
-        }
-      }
+              line-height: 1em;
+              margin-bottom: ($baseline/4);
+            }
 
-      .enter-course {
-        @extend %btn-pl-white-base;
+            .message-copy,
+            .message-copy .copy {
+              @extend %t-copy-sub1;
 
-        @include float(right);
+              margin: 2px 0 0 0;
+            }
 
-        &.archived {
-          @extend %btn-pl-default-base;
-        }
-      }
-    }
+            // CASE: expandable
+            &.is-expandable {
+              .wrapper-tip {
+                .message-title, .message-copy {
+                  margin-bottom: 0;
+                  display: inline-block;
+                }
 
-    // ====================
+                .message-title .value, .message-copy {
+                  @include transition(color $tmg-f2 ease-in-out 0s);
+                }
 
-    // UI: messages
-    .wrapper-messages-primary {
-      @include clearfix();
+                // STATE: hover
+                &:hover {
+                  cursor: pointer;
 
-      .messages-list {
-        margin: 0;
-        padding: 0;
-      }
+                  .message-title .value, .message-copy, .ui-toggle-expansion {
+                    color: $link-color;
+                  }
+                }
+              }
 
-      .message {
-        @extend %ui-depth1;
+              .wrapper-extended {
+                @include transition(opacity $tmg-f2 ease-in-out 0);
 
-        border-radius: 3px;
-        display: none;
-        margin: $baseline 0 ($baseline/2) 0;
-        padding: ($baseline/2) $baseline;
-        border-top: 1px solid $gray-l4;
-        color: $base-font-color; // Overrides the normal white color in this one case
+                display: none;
+                opacity: 0;
+              }
+            }
 
-        // STATE: shown
-        &.is-shown {
-          @include clearfix();
+            // STATE: is expanded
+            &.is-expanded {
+              .ui-toggle-expansion {
+                @include rtl {
+                  @include transform(rotate(-90deg));
+                }
 
-          display: block;
-        }
+                @include ltr {
+                  @include transform(rotate(90deg));
+                }
 
-        a {
-          font-family: $sans-serif;
-        }
+                @include transform-origin(50% 50%);
+              }
 
-        strong {
-          font-weight: 700;
+              .wrapper-extended {
+                display: block;
+                opacity: 1;
+              }
+            }
 
-          a {
-            font-weight: 700;
-          }
-        }
+            // TYPE: upsell
+            &.message-upsell {
+              .wrapper-tip {
+                @include clearfix();
 
-        .actions {
-          @include clearfix();
+                .message-title {
+                  @include float(left);
+                }
 
-          list-style: none;
-          margin: 0;
-          padding: 0;
-        }
+                .ui-toggle-expansion {
+                  @include transition(all $tmg-f2 ease-in-out 0s);
+                  @include font-size(18);
 
-        .message-title,
-        .message-copy .title {
-          @extend %t-title6;
-          @extend %t-weight4;
+                  display: inline-block;
+                  vertical-align: middle;
 
-          line-height: 1em;
-          margin-bottom: ($baseline/4);
-        }
+                  @include margin-right($baseline/4);
+                }
 
-        .message-copy,
-        .message-copy .copy {
-          @extend %t-copy-sub1;
+                .message-copy {
+                  @include float(right);
+                }
+              }
 
-          margin: 2px 0 0 0;
-        }
+              .wrapper-extended {
+                padding: ($baseline/4) 0;
 
-        // CASE: expandable
-        &.is-expandable {
-          .wrapper-tip {
-            .message-title, .message-copy {
-              margin-bottom: 0;
-              display: inline-block;
-            }
+                .message-copy {
+                  display: inline-block;
 
-            .message-title .value, .message-copy {
-              @include transition(color $tmg-f2 ease-in-out 0s);
-            }
+                  .message-copy-bold {
+                    font-weight: 600;
+                  }
+                }
+              }
 
-            // STATE: hover
-            &:hover {
-              cursor: pointer;
+              .action-upgrade-container {
+                @include float(right);
 
-              .message-title .value, .message-copy, .ui-toggle-expansion {
-                color: $link-color;
+                display: inline-block;
+                margin-top: ($baseline/2);
               }
-            }
-          }
 
-          .wrapper-extended {
-            @include transition(opacity $tmg-f2 ease-in-out 0);
+              .action-upgrade {
+                @extend %btn-primary-green;
 
-            display: none;
-            opacity: 0;
-          }
-        }
+                @include clearfix();
 
-        // STATE: is expanded
-        &.is-expanded {
-          .ui-toggle-expansion {
-            @include rtl {
-              @include transform(rotate(-90deg));
-            }
+                position: relative;
 
-            @include ltr {
-              @include transform(rotate(90deg));
-            }
+                @include left($baseline/2);
+                @include padding(($baseline * 0.4), 0, ($baseline * 0.4), ($baseline * 0.75));
 
-            @include transform-origin(50% 50%);
-          }
+                .action-upgrade-icon {
+                  @include float(left);
 
-          .wrapper-extended {
-            display: block;
-            opacity: 1;
-          }
-        }
+                  display: inline;
 
-        // TYPE: upsell
-        &.message-upsell {
-          .wrapper-tip {
-            @include clearfix();
+                  @include margin-right($baseline*0.4);
 
-            .message-title {
-              @include float(left);
-            }
+                  margin-top: ($baseline/4);
+                  background: url('#{$static-path}/images/icon-sm-verified.png') no-repeat;
+                  background-position: -($baseline*0.3);
+                  background-color: white;
+                  width: ($baseline*0.8);
+                  height: ($baseline*0.7);
+                }
 
-            .ui-toggle-expansion {
-              @include transition(all $tmg-f2 ease-in-out 0s);
-              @include font-size(18);
+                .deco-graphic {
+                  position: absolute;
+                  top: -($baseline/4);
 
-              display: inline-block;
-              vertical-align: middle;
+                  @include left(-($baseline*0.75));
 
-              @include margin-right($baseline/4);
-            }
+                  width: ($baseline*2);
+                }
 
-            .message-copy {
-              @include float(right);
-            }
-          }
+                span {
+                  color: $white; // nasty but needed override for poor <span> styling
+                }
 
-          .wrapper-extended {
-            padding: ($baseline/4) 0;
+                .copy, .copy-sub {
+                  display: inline-block;
+                  vertical-align: middle;
+                }
 
-            .message-copy {
-              width: flex-grid(9, 12);
-              display: inline-block;
+                .copy {
+                  @extend %t-action3;
+                  @extend %t-weight4;
 
-              .message-copy-bold {
-                font-weight: 600;
+                  @include margin-right($baseline);
+                }
+
+                .copy-sub {
+                  @extend %t-action4;
+
+                  opacity: 0.875;
+                }
               }
             }
-          }
-
-          .action-upgrade-container {
-            @include float(right);
 
-            display: inline-block;
-            margin-top: ($baseline/2);
-          }
+            // TYPE: status
+            &.message-status {
+              border-color: $gray-l4;
 
-          .action-upgrade {
-            @extend %btn-primary-green;
+              .wrapper-message-primary {
+                @include clearfix();
+              }
 
-            @include clearfix();
+              .message-copy {
+                @extend %t-copy-sub1;
 
-            position: relative;
+                margin: 0;
+              }
 
-            @include left($baseline/2);
-            @include padding(($baseline * 0.4), 0, ($baseline * 0.4), ($baseline * 0.75));
+              .credit-action {
+                .credit-btn {
+                  @extend %btn-pl-yellow-base;
 
-            .action-upgrade-icon {
-              @include float(left);
+                  @include float(right);
+                  @include margin-right(5px);
 
-              display: inline;
+                  background-image: none ;
+                  text-shadow: none;
+                  box-shadow: none;
+                  text-transform: none;
+                }
+              }
 
-              @include margin-right($baseline*0.4);
+              .actions {
+                .action {
+                  @include float(left);
+                  @include margin(0, 15px, 0, 0);
 
-              margin-top: ($baseline/4);
-              background: url('#{$static-path}/images/icon-sm-verified.png') no-repeat;
-              background-position: -($baseline*0.3);
-              background-color: white;
-              width: ($baseline*0.8);
-              height: ($baseline*0.7);
-            }
+                  .btn {
+                    display: inline-block;
+                  }
 
-            .deco-graphic {
-              position: absolute;
-              top: -($baseline/4);
+                  .btn {
+                    @include box-sizing(border-box);
+                    @include float(left);
 
-              @include left(-($baseline*0.75));
+                    border-radius: 3px;
+                    font: normal 0.8rem/1.2rem $font-family-sans-serif;
+                    letter-spacing: 1px;
+                    padding: 6px 12px;
+                    text-align: center;
 
-              width: ($baseline*2);
-            }
+                    &.disabled {
+                      cursor: default !important;
 
-            span {
-              color: $white; // nasty but needed override for poor <span> styling
-            }
+                      &:hover, &:focus {
+                        @include background-image(linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%));
 
-            .copy, .copy-sub {
-              display: inline-block;
-              vertical-align: middle;
-            }
+                        background: #eee;
+                      }
+                    }
+                  }
 
-            .copy {
-              @extend %t-action3;
-              @extend %t-weight4;
+                  .btn {
+                    @include float(left);
 
-              @include margin-right($baseline);
-            }
+                    font: normal 0.8rem/1.2rem $font-family-sans-serif;
+                    letter-spacing: 1px;
+                    padding: 6px 12px;
+                    text-align: center;
+                  }
+                }
+              }
 
-            .copy-sub {
-              @extend %t-action4;
+              .exam-registration-number {
+                font-family: $font-family-sans-serif;
+                font-size: 18px;
 
-              opacity: 0.875;
-            }
-          }
-        }
+                a {
+                  font-family: $font-family-sans-serif;
+                }
+              }
 
-        // TYPE: status
-        &.message-status {
-          border-color: $gray-l4;
+              &.exam-register {
+                .message-copy {
+                  margin-top: ($baseline/4);
+                  width: 55%;
+                }
+              }
 
-          .wrapper-message-primary {
-            @include clearfix();
-          }
+              &.exam-schedule {
+                .exam-button {
+                  margin-top: ($baseline/4);
+                }
+              }
 
-          .message-copy {
-            @extend %t-copy-sub1;
+              .exam-button {
+                @include button(simple, $pink);
+                @include float(right);
 
-            margin: 0;
-          }
+                margin-top: 0;
+              }
 
-          .credit-action {
-            .credit-btn {
-              @extend %btn-pl-yellow-base;
+              .contact-button {
+                @include button(simple, $pink);
+              }
 
-              @include float(right);
-              @include margin-right(5px);
+              .button {
+                display: inline-block;
+                margin-top: ($baseline/2);
+                padding: 9px 18px 10px;
+                font-size: 13px;
+                font-weight: bold;
+                letter-spacing: 0;
 
-              background-image: none ;
-              text-shadow: none;
-              box-shadow: none;
-              text-transform: none;
-            }
-          }
+                &:hover, &:focus {
+                  text-decoration: none;
+                }
+              }
 
-          .actions {
-            .action {
-              @include float(left);
-              @include margin(0, 15px, 0, 0);
 
-              .btn {
-                display: inline-block;
+              &.course-status-certrendering {
+                .btn {
+                  margin-top: 2px;
+                }
               }
 
-              .btn {
-                @include box-sizing(border-box);
-                @include float(left);
+              &.course-status-certavailable {
+                .message-copy {
+                  width: flex-grid(6, 12);
+                  position: relative;
 
-                border-radius: 3px;
-                font: normal 0.8rem/1.2rem $sans-serif;
-                letter-spacing: 1px;
-                padding: 6px 12px;
-                text-align: center;
+                  @include float(left);
+                }
 
-                &.disabled {
-                  cursor: default !important;
+                .actions-primary {
+                  @include float(right);
 
-                  &:hover, &:focus {
-                    @include background-image(linear-gradient(top, #EEE 0%, #C2C2C2 50%, #ABABAB 50%, #B0B0B0 100%));
+                  .action {
+                    @include margin(0, 0, ($baseline/2), ($baseline*.75));
 
-                    background: #eee;
-                  }
-                }
-              }
+                    float: none;
+                    text-align: center;
 
-              .btn {
-                @include float(left);
+                    &:last-child {
+                      margin-bottom: 0;
+                    }
 
-                font: normal 0.8rem/1.2rem $sans-serif;
-                letter-spacing: 1px;
-                padding: 6px 12px;
-                text-align: center;
-              }
-            }
-          }
+                    .btn {
+                      float: none;
+                    }
+                  }
 
-          .exam-registration-number {
-            font-family: $sans-serif;
-            font-size: 18px;
+                  .action-certificate .btn {
+                    @extend %btn-inherited-primary;
 
-            a {
-              font-family: $sans-serif;
-            }
-          }
+                    @include box-sizing(border-box);
 
-          &.exam-register {
-            .message-copy {
-              margin-top: ($baseline/4);
-              width: 55%;
-            }
-          }
+                    float: none;
+                    border-radius: 3px;
+                    display: block;
 
-          &.exam-schedule {
-            .exam-button {
-              margin-top: ($baseline/4);
-            }
-          }
+                    @include padding(7px, ($baseline*.75), 7px, ($baseline*.75));
 
-          .exam-button {
-            @include button(simple, $pink);
-            @include float(right);
+                    text-align: center;
 
-            margin-top: 0;
-          }
+                    a:link, a:visited {
+                      color: #fff;
+                    }
+                  }
 
-          .contact-button {
-            @include button(simple, $pink);
-          }
+                  .action-share .btn {
+                    display: inline;
+                    letter-spacing: 0;
+                  }
+                }
+              }
 
-          .button {
-            display: inline-block;
-            margin-top: ($baseline/2);
-            padding: 9px 18px 10px;
-            font-size: 13px;
-            font-weight: bold;
-            letter-spacing: 0;
+              .actions-secondary {
+                margin-top: ($baseline/2);
+                border-top: 1px solid $gray-l4;
+                padding-top: ($baseline/2);
 
-            &:hover, &:focus {
-              text-decoration: none;
-            }
-          }
+                .action-share {
+                  @include float(right);
 
+                  margin: 0;
+                }
+              }
 
-          &.course-status-certrendering {
-            .btn {
-              margin-top: 2px;
-            }
-          }
+              .certificate-explanation {
+                @extend %t-copy-sub1;
 
-          &.course-status-certavailable {
-            .message-copy {
-              width: flex-grid(6, 12);
-              position: relative;
+                margin-top: ($baseline/2);
+                border-top: 1px solid $gray-l4;
+                padding-top: ($baseline/2);
+              }
 
-              @include float(left);
-            }
+              .verification-reminder {
+                width: flex-grid(8, 12);
 
-            .actions-primary {
-              @include float(right);
+                @include float(left);
 
-              .action {
-                @include margin(0, 0, ($baseline/2), ($baseline*.75));
+                position: relative;
+              }
 
-                float: none;
-                text-align: center;
+              .verification-cta {
+                width: flex-grid(4, 12);
 
-                &:last-child {
-                  margin-bottom: 0;
-                }
+                @include float(left);
+
+                position: relative;
 
                 .btn {
-                  float: none;
+                  @extend %btn-pl-green-base;
+
+                  @include float(right);
                 }
               }
+            }
 
-              .action-certificate .btn {
-                @extend %btn-inherited-primary;
+            &.message-related-programs {
+              background: none;
+              border: none;
+              margin-top: ($baseline/4);
+              padding-bottom: 0;
 
-                @include box-sizing(border-box);
+              .related-programs-preface {
+                @include float(left);
 
-                float: none;
-                border-radius: 3px;
-                display: block;
+                font-weight: bold;
+              }
 
-                @include padding(7px, ($baseline*.75), 7px, ($baseline*.75));
+              ul {
+                display: inline;
+                padding: 0;
+                margin: 0;
+              }
 
-                text-align: center;
+              li {
+                @include float(left);
 
-                a:link, a:visited {
-                  color: #fff;
+                display: inline;
+                padding: 0 0.5em;
+                border-right: 1px solid;
+
+                .category-icon {
+                  @include float(left);
+                  @include margin-right($baseline/4);
+
+                  margin-top: ($baseline/10);
+                  background-color: transparent;
+                  background-size: 100%;
+                  width: ($baseline*0.7);
+                  height: ($baseline*0.7);
                 }
               }
 
-              .action-share .btn {
-                display: inline;
-                letter-spacing: 0;
+              // Remove separator from last list item.
+              li:last-child {
+                border: 0;
               }
             }
-          }
-
-          .actions-secondary {
-            margin-top: ($baseline/2);
-            border-top: 1px solid $gray-l4;
-            padding-top: ($baseline/2);
 
-            .action-share {
-              @include float(right);
+            // TYPE: pre-requisites
+            .prerequisites {
+              @include clearfix;
 
-              margin: 0;
+              .tip {
+                font-family: $font-family-sans-serif;
+                font-size: 1em;
+                color: $lighter-base-font-color;
+                margin-top: ($baseline/2);
+              }
             }
-          }
-
-          .certificate-explanation {
-            @extend %t-copy-sub1;
 
-            margin-top: ($baseline/2);
-            border-top: 1px solid $gray-l4;
-            padding-top: ($baseline/2);
+            @include media-breakpoint-down(md) {
+              @include padding($baseline/2, $baseline, $baseline/2, $baseline/2);
+            }
           }
+        }
 
-          .verification-reminder {
-            width: flex-grid(8, 12);
+        // ====================
 
-            @include float(left);
+        // CASE: "enrolled as" status - professional ed
+        &.professional {
 
-            position: relative;
+          // changes to cover
+          .wrapper-course-image .cover {
+            border-color: $professional-color-lvl3;
+            padding: ($baseline/10);
           }
 
-          .verification-cta {
-            width: flex-grid(4, 12);
-
-            @include float(left);
-
-            position: relative;
-
-            .btn {
-              @extend %btn-pl-green-base;
+          // course enrollment status message
+          .sts-enrollment {
+            .label {
+              @extend %text-sr;
+            }
 
-              @include float(right);
+            // status message
+            .sts-enrollment-value {
+              background: $professional-color-lvl3;
             }
           }
         }
 
-        &.message-related-programs {
-          background: none;
-          border: none;
-          margin-top: ($baseline/4);
-          padding-bottom: 0;
-
-          .related-programs-preface {
-            @include float(left);
+        // CASE: "enrolled as" status - verified
+        &.verified {
 
-            font-weight: bold;
+          // changes to cover
+          .wrapper-course-image .cover {
+            border-color: $verified-color-lvl1;
+            padding: ($baseline/10);
           }
 
-          ul {
-            display: inline;
-            padding: 0;
-            margin: 0;
-          }
+          // course enrollment status message
+          .sts-enrollment {
+            .label {
+              @extend %text-sr;
+            }
 
-          li {
-            @include float(left);
+            .deco-graphic {
+              @extend %ui-depth3;
 
-            display: inline;
-            padding: 0 0.5em;
-            border-right: 1px solid;
+              width: 40px;
+              position: absolute;
+              top: -5px;
 
-            .category-icon {
-              @include float(left);
-              @include margin-right($baseline/4);
+              @include right(0);
+            }
 
-              margin-top: ($baseline/10);
-              background-color: transparent;
-              background-size: 100%;
-              width: ($baseline*0.7);
-              height: ($baseline*0.7);
+            // status message
+            .sts-enrollment-value {
+              background: $verified-color-lvl1;
             }
           }
+        }
+
+        // CASE: "enrolled as" status - honor code
+        &.honor {
+
+          // changes to cover
+          .wrapper-course-image .cover {
+            border-color: $honorcode-color-lvl2;
+            padding: ($baseline/10);
+          }
 
-          // Remove separator from last list item.
-          li:last-child {
-            border: 0;
+          // status message
+          .sts-enrollment-value {
+            background: $honorcode-color-lvl1;
           }
         }
 
-        // TYPE: pre-requisites
-        .prerequisites {
-          @include clearfix;
+        // CASE: "enrolled as" status - auditing
+        &.audit {
+
+          // changes to cover
+          .wrapper-course-image .cover {
+            border-color: $audit-color-lvl2;
+            padding: ($baseline/10);
+          }
 
-          .tip {
-            font-family: $sans-serif;
-            font-size: 1em;
-            color: $lighter-base-font-color;
-            margin-top: ($baseline/2);
+          // status message
+          .sts-enrollment-value {
+            background: $audit-color-lvl1;
           }
         }
       }
     }
 
-    // ====================
+    // Responsive behavior
+    @include media-breakpoint-down(md) {
+      padding: $baseline;
+    }
+  }
 
-    // CASE: "enrolled as" status - professional ed
-    &.professional {
+  // Secondary functionality
+  .side-container {
+    @include padding($baseline*2, $baseline*2, $baseline, $baseline);
 
-      // changes to cover
-      .wrapper-course-image .cover {
-        border-color: $professional-color-lvl3;
-        padding: ($baseline/10);
-      }
+    max-width: $baseline*20;
+    flex-grow: 1;
+    order: 2;
 
-      // course enrollment status message
-      .sts-enrollment {
-        .label {
-          @extend %text-sr;
-        }
+    .wrapper-find-courses {
+      .course-advertise {
+        @include clearfix();
+
+        box-sizing: border-box;
+        padding: $baseline;
+        border: 1px solid $border-color-l3;
 
-        // status message
-        .sts-enrollment-value {
-          background: $professional-color-lvl3;
+        .advertise-message {
+          @include font-size(12);
+
+          color: $gray-d4;
+          margin-bottom: $baseline;
         }
-      }
-    }
 
-    // CASE: "enrolled as" status - verified
-    &.verified {
+        .ad-link {
+          @include text-align(center);
 
-      // changes to cover
-      .wrapper-course-image .cover {
-        border-color: $verified-color-lvl1;
-        padding: ($baseline/10);
-      }
+          .btn-neutral {
+            padding-bottom: 12px;
+            padding-top: 12px;
+          }
 
-      // course enrollment status message
-      .sts-enrollment {
-        .label {
-          @extend %text-sr;
-        }
+          a {
+            @include font-size(16);
+            @include line-height(17);
 
-        .deco-graphic {
-          @extend %ui-depth3;
+            padding: $baseline * 0.5;
+            border: 1px solid theme-color('primary');
+            color: theme-color('primary');
+            text-decoration: none;
+            display: block;
 
-          width: 40px;
-          position: absolute;
-          top: -5px;
+            &:hover,
+            &:focus,
+            &:active {
+              color: $white;
+              background-color: theme-color('primary');
+            }
 
-          @include right(0);
-        }
+            span {
+              @include margin-left($baseline*0.25);
+            }
 
-        // status message
-        .sts-enrollment-value {
-          background: $verified-color-lvl1;
+            .icon {
+              @include margin-right($baseline*0.25);
+            }
+          }
         }
       }
     }
 
-    // CASE: "enrolled as" status - honor code
-    &.honor {
+    // Responsive behavior
+    @include media-breakpoint-down(md) {
+      margin: 0 $baseline $baseline*2;
+      padding: 0;
+      max-width: 100%;
+    }
+  }
+
+  // Responsive behavior
+  @include media-breakpoint-down(md) {
+    flex-direction: column;
+  }
+}
 
-      // changes to cover
-      .wrapper-course-image .cover {
-        border-color: $honorcode-color-lvl2;
-        padding: ($baseline/10);
-      }
+// CASE: empty dashboard
+.empty-dashboard-message {
+  border: 3px solid $gray-l4;
+  background: $gray-l6;
+  padding: ($baseline*2) 0;
+  text-align: center;
 
-      // status message
-      .sts-enrollment-value {
-        background: $honorcode-color-lvl1;
-      }
-    }
+  p {
+    @include font-size(24);
+
+    color: $lighter-base-font-color;
+    margin-bottom: $baseline;
+    text-shadow: 0 1px rgba(255,255,255, 0.6);
+  }
 
-    // CASE: "enrolled as" status - auditing
-    &.audit {
+  a {
+    background-color: theme-color('primary');
+    border: 1px solid theme-color('primary');
+    box-shadow: 0 1px 8px 0 $shadow-l1;
 
-      // changes to cover
-      .wrapper-course-image .cover {
-        border-color: $audit-color-lvl2;
-        padding: ($baseline/10);
-      }
+    @include box-sizing(border-box);
 
-      // status message
-      .sts-enrollment-value {
-        background: $audit-color-lvl1;
-      }
+    color: $white;
+    font-family: $font-family-sans-serif;
+    display: inline-block;
+    letter-spacing: 1px;
+    margin-top: ($baseline/4);
+    margin-left: ($baseline/4);
+    padding: $baseline*0.75 $baseline;
+
+    &:hover, &:focus {
+      background: theme-color('primary')-l2;
+      text-decoration: none;
     }
   }
 }
@@ -1417,7 +1277,7 @@ p.course-block {
   @include float(left);
 
   display: block;
-  font: normal 15px/1.6rem $sans-serif;
+  font: normal 15px/1.6rem $font-family-sans-serif;
   letter-spacing: 0;
   padding: 6px 32px 7px;
   text-align: center;
@@ -1431,7 +1291,7 @@ p.course-block {
   &.archived {
     @include button(simple, $button-archive-color);
 
-    font: normal 15px/1.6rem $sans-serif;
+    font: normal 15px/1.6rem $font-family-sans-serif;
     padding: 6px 32px 7px;
 
     &:hover, &:focus {
@@ -1464,7 +1324,7 @@ a.fade-cover {
     .msg {
       @include clearfix();
 
-      font-family: $sans-serif;
+      font-family: $font-family-sans-serif;
       padding-bottom: $baseline;
       border-bottom: thin solid $gray;
 
diff --git a/lms/static/sass/search/_search.scss b/lms/static/sass/search/_search.scss
index 1af315ae20f..f2c0a2329f5 100644
--- a/lms/static/sass/search/_search.scss
+++ b/lms/static/sass/search/_search.scss
@@ -81,8 +81,6 @@
   }
 
   .search-results-item {
-    @include padding-right(140px);
-
     position: relative;
     border-bottom: 1px solid $gray-l4;
     padding: $baseline ($baseline/2);
@@ -119,12 +117,10 @@
     }
 
     .result-link {
-      @include right($baseline/2);
+      @include float(right);
+      @include padding-left($baseline/4);
 
-      position: absolute;
-      top: $baseline;
       line-height: 1.6em;
-      text-transform: uppercase;
     }
 
     .search-results-ellipsis {
@@ -155,12 +151,8 @@
 
 
 .dashboard-search-bar  {
-  @include float(right);
-  @include margin-left(flex-gutter());
-
-  margin-bottom: $baseline;
-  padding: 0;
-  width: flex-grid(3);
+  margin: 0 0 $baseline;
+  display: block;
 
   label {
     @extend %t-regular;
@@ -181,12 +173,8 @@
 }
 
 .dashboard-search-results {
-  @include float(left);
-
-  margin: 0;
+  margin: 0 0 $baseline;
   padding: 0;
-  width: flex-grid(9);
-  min-height: 300px;
 
   .search-info {
     padding-bottom: lh(1.75);
diff --git a/lms/templates/dashboard.html b/lms/templates/dashboard.html
index 13765bdd021..8d25b23b793 100644
--- a/lms/templates/dashboard.html
+++ b/lms/templates/dashboard.html
@@ -102,115 +102,116 @@ from openedx.core.djangolib.markup import HTML, Text
 </div>
 
 <main id="main" aria-label="Content" tabindex="-1">
-    <div class="container dashboard" id="dashboard-main">
-      <div class="my-courses" id="my-courses">
-        <%include file="learner_dashboard/_dashboard_navigation_courses.html"/>
+    <div class="dashboard" id="dashboard-main">
 
-        % if len(course_enrollments) > 0:
-          <ul class="listing-courses">
-          <%
-              share_settings = configuration_helpers.get_value(
-                  'SOCIAL_SHARING_SETTINGS',
-                  getattr(settings, 'SOCIAL_SHARING_SETTINGS', {})
-              )
-          %>
-          % for dashboard_index, enrollment in enumerate(course_enrollments):
-            <% show_courseware_link = (enrollment.course_id in show_courseware_links_for) %>
-            <% cert_status = cert_statuses.get(enrollment.course_id) %>
-            <% can_unenroll = (not cert_status) or cert_status.get('can_unenroll') %>
-            <% credit_status = credit_statuses.get(enrollment.course_id) %>
-            <% show_email_settings = (enrollment.course_id in show_email_settings_for) %>
-            <% course_mode_info = all_course_modes.get(enrollment.course_id) %>
-            <% is_paid_course = (enrollment.course_id in enrolled_courses_either_paid) %>
-            <% is_course_blocked = (enrollment.course_id in block_courses) %>
-            <% course_verification_status = verification_status_by_course.get(enrollment.course_id, {}) %>
-            <% course_requirements = courses_requirements_not_met.get(enrollment.course_id) %>
-            <% related_programs = inverted_programs.get(unicode(enrollment.course_id)) %>
-            <%include file='dashboard/_dashboard_course_listing.html' args='course_overview=enrollment.course_overview, enrollment=enrollment, show_courseware_link=show_courseware_link, cert_status=cert_status, can_unenroll=can_unenroll, credit_status=credit_status, show_email_settings=show_email_settings, course_mode_info=course_mode_info, is_paid_course=is_paid_course, is_course_blocked=is_course_blocked, verification_status=course_verification_status, course_requirements=course_requirements, dashboard_index=dashboard_index, share_settings=share_settings, user=user, related_programs=related_programs, display_course_modes_on_dashboard=display_course_modes_on_dashboard' />
-          % endfor
+      <div class="main-container">
+        <div class="my-courses" id="my-courses">
+          <%include file="learner_dashboard/_dashboard_navigation_courses.html"/>
 
-          </ul>
-        % else:
-          <div class="empty-dashboard-message">
-            <p>${_("You are not enrolled in any courses yet.")}</p>
+          % if len(course_enrollments) > 0:
+            <ul class="listing-courses">
+            <%
+                share_settings = configuration_helpers.get_value(
+                    'SOCIAL_SHARING_SETTINGS',
+                    getattr(settings, 'SOCIAL_SHARING_SETTINGS', {})
+                )
+            %>
+            % for dashboard_index, enrollment in enumerate(course_enrollments):
+              <% show_courseware_link = (enrollment.course_id in show_courseware_links_for) %>
+              <% cert_status = cert_statuses.get(enrollment.course_id) %>
+              <% can_unenroll = (not cert_status) or cert_status.get('can_unenroll') %>
+              <% credit_status = credit_statuses.get(enrollment.course_id) %>
+              <% show_email_settings = (enrollment.course_id in show_email_settings_for) %>
+              <% course_mode_info = all_course_modes.get(enrollment.course_id) %>
+              <% is_paid_course = (enrollment.course_id in enrolled_courses_either_paid) %>
+              <% is_course_blocked = (enrollment.course_id in block_courses) %>
+              <% course_verification_status = verification_status_by_course.get(enrollment.course_id, {}) %>
+              <% course_requirements = courses_requirements_not_met.get(enrollment.course_id) %>
+              <% related_programs = inverted_programs.get(unicode(enrollment.course_id)) %>
+              <%include file='dashboard/_dashboard_course_listing.html' args='course_overview=enrollment.course_overview, enrollment=enrollment, show_courseware_link=show_courseware_link, cert_status=cert_status, can_unenroll=can_unenroll, credit_status=credit_status, show_email_settings=show_email_settings, course_mode_info=course_mode_info, is_paid_course=is_paid_course, is_course_blocked=is_course_blocked, verification_status=course_verification_status, course_requirements=course_requirements, dashboard_index=dashboard_index, share_settings=share_settings, user=user, related_programs=related_programs, display_course_modes_on_dashboard=display_course_modes_on_dashboard' />
+            % endfor
 
-            % if settings.FEATURES.get('COURSES_ARE_BROWSABLE'):
-              <a href="${marketing_link('COURSES')}">
-                ${_("Explore courses")}
-              </a>
-
-            %endif
-        </div>
-        % endif
+            </ul>
+          % else:
+            <div class="empty-dashboard-message">
+              <p>${_("You are not enrolled in any courses yet.")}</p>
 
-        % if staff_access and len(errored_courses) > 0:
-          <div id="course-errors">
-            <h2>${_("Course-loading errors")}</h2>
+              % if settings.FEATURES.get('COURSES_ARE_BROWSABLE'):
+                <a href="${marketing_link('COURSES')}">
+                  ${_("Explore courses")}
+                </a>
 
-          % for course_dir, errors in errored_courses.items():
-             <h3>${course_dir}</h3>
-                 <ul>
-               % for (msg, err) in errors:
-                   <li>${msg}
-                     <ul><li><pre>${err}</pre></li></ul>
-                   </li>
-               % endfor
-                 </ul>
-          % endfor
+              %endif
           </div>
-        % endif
-    </div>
+          % endif
 
-      %if sidebar_account_activation_message:
-        <div class="sidebar-notification">
-          ${sidebar_account_activation_message | n, decode.utf8}
-        </div>
-      %endif
+          % if staff_access and len(errored_courses) > 0:
+            <div id="course-errors">
+              <h2>${_("Course-loading errors")}</h2>
 
-      % if settings.FEATURES.get('ENABLE_DASHBOARD_SEARCH'):
-        <div id="dashboard-search-bar" class="search-bar dashboard-search-bar" role="search" aria-label="Dashboard">
-          <form class="search-form">
-            <label for="dashboard-search-input">${_('Search Your Courses')}</label>
-            <div class="search-field-wrapper">
-              <input id="dashboard-search-input" type="text" class="search-field"/>
-              <button type="submit" class="search-button" title="${_('Search')}">
-                <span class="icon fa fa-search" aria-hidden="true"></span>
-              </button>
-              <button type="button" class="cancel-button" title="${_('Clear search')}">
-                <span class="icon fa fa-remove" aria-hidden="true"></span>
-              </button>
+            % for course_dir, errors in errored_courses.items():
+               <h3>${course_dir}</h3>
+                   <ul>
+                 % for (msg, err) in errors:
+                     <li>${msg}
+                       <ul><li><pre>${err}</pre></li></ul>
+                     </li>
+                 % endfor
+                   </ul>
+            % endfor
             </div>
-          </form>
+          % endif
         </div>
-      % endif
+      </div>
+      <div class="side-container">
+        %if sidebar_account_activation_message:
+          <div class="sidebar-notification">
+            ${sidebar_account_activation_message | n, decode.utf8}
+          </div>
+        %endif
 
-      % if settings.FEATURES.get('ENABLE_DASHBOARD_SEARCH'):
-        <div id="dashboard-search-results" class="search-results dashboard-search-results"></div>
-      % endif
+        % if settings.FEATURES.get('ENABLE_DASHBOARD_SEARCH'):
+          <div id="dashboard-search-bar" class="search-bar dashboard-search-bar" role="search" aria-label="Dashboard">
+            <form class="search-form">
+              <label for="dashboard-search-input">${_('Search Your Courses')}</label>
+              <div class="search-field-wrapper">
+                <input id="dashboard-search-input" type="text" class="search-field"/>
+                <button type="submit" class="search-button" title="${_('Search')}">
+                  <span class="icon fa fa-search" aria-hidden="true"></span>
+                </button>
+                <button type="button" class="cancel-button" title="${_('Clear search')}">
+                  <span class="icon fa fa-remove" aria-hidden="true"></span>
+                </button>
+              </div>
+            </form>
+          </div>
+          <div id="dashboard-search-results" class="search-results dashboard-search-results"></div>
+        % endif
 
-      % if display_sidebar_on_dashboard:
-        <div class="profile-sidebar" id="profile-sidebar" role="region" aria-label="Account Status Info">
-          <header class="profile">
-            <h2 class="account-status-title sr">${_("Account Status Info")}: </h2>
-          </header>
-          <div class="user-info">
-            <ul>
+        % if display_sidebar_on_dashboard:
+          <div class="profile-sidebar" id="profile-sidebar" role="region" aria-label="Account Status Info">
+            <header class="profile">
+              <h2 class="account-status-title sr">${_("Account Status Info")}: </h2>
+            </header>
+            <div class="user-info">
+              <ul>
 
-              % if len(order_history_list):
-              <li class="order-history">
-                <span class="title">${_("Order History")}</span>
-                % for order_history_item in order_history_list:
-                  <span><a href="${order_history_item['receipt_url']}" target="_blank" class="edit-name">${order_history_item['order_date']}</a></span>
-                % endfor
-              </li>
-              % endif
+                % if len(order_history_list):
+                <li class="order-history">
+                  <span class="title">${_("Order History")}</span>
+                  % for order_history_item in order_history_list:
+                    <span><a href="${order_history_item['receipt_url']}" target="_blank" class="edit-name">${order_history_item['order_date']}</a></span>
+                  % endfor
+                </li>
+                % endif
 
-              <%include file="${static.get_template_path('dashboard/_dashboard_status_verification.html')}" />
+                <%include file="${static.get_template_path('dashboard/_dashboard_status_verification.html')}" />
 
-            </ul>
+              </ul>
+            </div>
           </div>
-        </div>
-      % endif
+        % endif
+      </div>
     </div>
 </main>
 
diff --git a/openedx/features/course_search/static/course_search/js/spec/course_search_spec.js b/openedx/features/course_search/static/course_search/js/spec/course_search_spec.js
index c51b00a8b45..edcf323421d 100644
--- a/openedx/features/course_search/static/course_search/js/spec/course_search_spec.js
+++ b/openedx/features/course_search/static/course_search/js/spec/course_search_spec.js
@@ -351,23 +351,18 @@ define([
         describe('SearchResultsView', function() {
             function showsLoadingMessage() {
                 this.resultsView.showLoadingMessage();
-                expect(this.resultsView.$contentElement).toBeHidden();
                 expect(this.resultsView.$el).toBeVisible();
                 expect(this.resultsView.$el).not.toBeEmpty();
             }
 
             function showsErrorMessage() {
                 this.resultsView.showErrorMessage();
-                expect(this.resultsView.$contentElement).toBeHidden();
                 expect(this.resultsView.$el).toBeVisible();
                 expect(this.resultsView.$el).not.toBeEmpty();
             }
 
             function returnsToContent() {
                 this.resultsView.clear();
-                expect(this.resultsView.$contentElement).toHaveCss({
-                    display: this.contentElementDisplayValue
-                });
                 expect(this.resultsView.$el).toBeHidden();
                 expect(this.resultsView.$el).toBeEmpty();
             }
@@ -484,16 +479,6 @@ define([
                 it('shows a link to load more results', showsMoreResultsLink);
                 it('triggers an event for next page', triggersNextPageEvent);
                 it('shows a spinner when loading more results', showsLoadMoreSpinner);
-                it('returns back to courses', function() {
-                    var onReset = jasmine.createSpy('onReset');
-                    this.resultsView.on('reset', onReset);
-                    this.resultsView.render();
-                    expect(this.resultsView.$el.find('a.search-back-to-courses')).toExist();
-                    this.resultsView.$el.find('.search-back-to-courses').click();
-                    expect(onReset).toHaveBeenCalled();
-                    expect(this.resultsView.$contentElement).toBeVisible();
-                    expect(this.resultsView.$el).toBeHidden();
-                });
             });
         });
 
@@ -502,9 +487,6 @@ define([
             function showsLoadingMessage() {
                 $('.search-field').val('search string');
                 $('.search-button').trigger('click');
-                if (this.$contentElement) {
-                    expect(this.$contentElement).toBeHidden();
-                }
                 expect(this.$searchResults).toBeVisible();
                 expect(this.$searchResults).not.toBeEmpty();
             }
@@ -556,13 +538,11 @@ define([
                 $('.cancel-button').trigger('click');
                 AjaxHelpers.skipResetRequest(requests);
                 // there should be no results
-                expect(this.$contentElement).toHaveCss({display: this.contentElementDisplayValue});
                 expect(this.$searchResults).toBeHidden();
             }
 
             function clearsResults() {
                 $('.cancel-button').trigger('click');
-                expect(this.$contentElement).toHaveCss({display: this.contentElementDisplayValue});
                 expect(this.$searchResults).toBeHidden();
             }
 
@@ -636,7 +616,6 @@ define([
                     DashboardSearchFactory();
 
                     spyOn(Backbone.history, 'navigate');
-                    this.$contentElement = $('#my-courses');
                     this.contentElementDisplayValue = 'block';
                     this.$searchResults = $('.search-results');
                 });
@@ -670,9 +649,7 @@ define([
                             }
                         }]
                     });
-                    expect($('.search-back-to-courses')).toExist();
-                    $('.search-back-to-courses').trigger('click');
-                    expect(this.$contentElement).toBeVisible();
+                    $('.search-form .cancel-button').trigger('click');
                     expect(this.$searchResults).toBeHidden();
                     expect(this.$searchResults).toBeEmpty();
                 });
diff --git a/openedx/features/course_search/static/course_search/js/views/dashboard_search_results_view.js b/openedx/features/course_search/static/course_search/js/views/dashboard_search_results_view.js
index 50d7a37130f..5d78c275152 100644
--- a/openedx/features/course_search/static/course_search/js/views/dashboard_search_results_view.js
+++ b/openedx/features/course_search/static/course_search/js/views/dashboard_search_results_view.js
@@ -12,12 +12,10 @@
     ) {
         return SearchResultsView.extend({
             el: '.search-results',
-            contentElement: '#my-courses, #profile-sidebar',
             resultsTemplate: dashboardSearchResultsTemplate,
             itemTemplate: dashboardSearchItemTemplate,
             events: {
                 'click .search-load-next': 'loadNext',
-                'click .search-back-to-courses': 'backToCourses'
             },
 
             backToCourses: function() {
diff --git a/openedx/features/course_search/static/course_search/templates/dashboard_search_results.underscore b/openedx/features/course_search/static/course_search/templates/dashboard_search_results.underscore
index 3e34a6df9ea..8a7b9416330 100644
--- a/openedx/features/course_search/static/course_search/templates/dashboard_search_results.underscore
+++ b/openedx/features/course_search/static/course_search/templates/dashboard_search_results.underscore
@@ -1,5 +1,4 @@
 <header class="search-info">
-    <a class="search-back-to-courses" href="#"><%- gettext("Back to Dashboard") %></a>
     <h2><%- gettext("Search Results") %></h2>
     <div class="search-count"><%- totalCountMsg %></div>
 </header>
diff --git a/themes/edx.org/lms/templates/dashboard.html b/themes/edx.org/lms/templates/dashboard.html
index 5c8d3881a10..4b1df0c2875 100644
--- a/themes/edx.org/lms/templates/dashboard.html
+++ b/themes/edx.org/lms/templates/dashboard.html
@@ -102,8 +102,8 @@ from openedx.core.djangoapps.theming import helpers as theming_helpers
 
 </div>
 
-<section class="container dashboard" id="dashboard-main">
-<main id="main" aria-label="Content" tabindex="-1">
+<section class="dashboard" id="dashboard-main">
+<main class="main-container" id="main" aria-label="Content" tabindex="-1">
   <section class="my-courses" id="my-courses">
     <header class="wrapper-header-courses">
       <h2 class="header-courses">${_("My Courses")}</h2>
@@ -159,7 +159,7 @@ from openedx.core.djangoapps.theming import helpers as theming_helpers
     % endif
   </section>
 </main>
-
+<div class="side-container">
   %if sidebar_account_activation_message:
     <div class="sidebar-notification">
       ${sidebar_account_activation_message | n, decode.utf8}
@@ -181,9 +181,6 @@ from openedx.core.djangoapps.theming import helpers as theming_helpers
         </div>
       </form>
     </div>
-  % endif
-
-  % if settings.FEATURES.get('ENABLE_DASHBOARD_SEARCH'):
     <section id="dashboard-search-results" class="search-results dashboard-search-results"></section>
   % endif
 
@@ -226,6 +223,7 @@ from openedx.core.djangoapps.theming import helpers as theming_helpers
       </section>
     </section>
   % endif
+</div>
 </section>
 
 <section id="email-settings-modal" class="modal" aria-hidden="true">
-- 
GitLab