ui: Minor visual refresh

The focus is on:
1. Increasing information density
2. Decreasing visual noise / increasing consistency
It's by no means done but it's a step in the right direction.

For 1. we:
- Decrease font size
- Remove excessive padding
- Reduce topbar height
- Reduce sidebar width
- Reduce the minimum track height
- Reduce the thread state track

For 2. we:
- Reduce the number of typefaces
- Reduce the number of weights in use
- Reduce the number of non-semantic colors
- Use the same border-radius everywhere
- Replace some custom buttons with with the button widget

Before/after for the various surfaces:

- Welcome:
  - https://screenshot.googleplex.com/5Vg3Dcckjq2h8Rf
  - https://screenshot.googleplex.com/6Wop2quyztZ7Nno
- Timeline:
  - https://screenshot.googleplex.com/5sahBHEhqaB7F8X
  - https://screenshot.googleplex.com/382giTGsEnga33T
- Query:
  - https://screenshot.googleplex.com/5ozS5m5Jzo3rrtn
  - https://screenshot.googleplex.com/9fTHeyVyG4XHmN8
- Metrics:
  - https://screenshot.googleplex.com/mGsFtDLJeC6BVGy
  - https://screenshot.googleplex.com/VsowCEdrBYUHCJR
- Flags:
  - https://screenshot.googleplex.com/BjtWjNpg969Y8YZ
  - https://screenshot.googleplex.com/ZAkfSzD3kCNbLDg
- RecordingV2:
  - https://screenshot.googleplex.com/3jUgxhmpLGoF3YV
  - https://screenshot.googleplex.com/9HDoY7kEnkZ9C5S
- Recording:
  - https://screenshot.googleplex.com/3C5RB3U3rdQusNb
  - https://screenshot.googleplex.com/9U7bYTxfeWgtP43
- Tabs:
  - https://screenshot.googleplex.com/C8BoNPFr9DLiYy8
  - https://screenshot.googleplex.com/5y2g9tAi6L59Djb

Change-Id: I8e22bdc694b8e0846e839daf9aaab4e447414885
diff --git a/ui/src/assets/analyze_page.scss b/ui/src/assets/analyze_page.scss
index 4a700a3..92814d2 100644
--- a/ui/src/assets/analyze_page.scss
+++ b/ui/src/assets/analyze_page.scss
@@ -15,6 +15,8 @@
 .analyze-page {
   overflow-y: auto;
   overflow-x: hidden;
+  display: flex;
+  flex-direction: column;
   .query-input {
     width: 100%;
     background-color: #111;
@@ -29,5 +31,6 @@
     padding: 0.5em;
     overflow: auto;
     resize: vertical;
+    outline: none;
   }
 }
diff --git a/ui/src/assets/common.scss b/ui/src/assets/common.scss
index 9e26d09..82a9569 100644
--- a/ui/src/assets/common.scss
+++ b/ui/src/assets/common.scss
@@ -12,12 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+@import "widgets/theme";
 @import "typefaces";
 @import "fonts";
 
 :root {
-  --sidebar-width: 256px;
-  --topbar-height: 48px;
+  --sidebar-width: 230px;
+  --topbar-height: 44px;
   --monospace-font: "Roboto Mono", monospace;
   --track-shell-width: 250px;
   --track-border-color: #00000025;
@@ -51,7 +52,7 @@
   overflow-wrap: break-word;
   font-family: "Roboto Condensed", sans-serif;
   font-weight: 300;
-  letter-spacing: -0.25px;
+  letter-spacing: -0.5px;
 }
 
 * {
@@ -175,12 +176,13 @@
   grid-area: alerts;
   background-color: #f2f2f2;
   > div {
-    font-family: "Raleway", sans-serif;
+    font-family: "Roboto", sans-serif;
     font-weight: 400;
     letter-spacing: 0.25px;
     padding: 1rem;
     display: flex;
     justify-content: space-between;
+    align-items: center;
     button {
       width: 24px;
       height: 24px;
@@ -377,7 +379,7 @@
 
   .track-shell {
     @include transition();
-    padding-left: 10px;
+    padding-left: 5px;
     display: grid;
     cursor: grab;
     grid-template-areas: "title buttons";
@@ -408,7 +410,7 @@
 
     .chip {
       background-color: #bed6ff;
-      border-radius: 3px;
+      border-radius: $pf-border-radius;
       font-size: smaller;
       padding: 0 0.1rem;
       margin-left: 1ch;
@@ -441,6 +443,7 @@
       display: flex;
       height: 100%;
       align-items: center;
+      justify-content: center;
 
       &:hover {
         background-color: #ebeef9;
@@ -469,6 +472,7 @@
 }
 
 .details-panel-container {
+  box-shadow: #0000003b 0px 0px 3px 1px;
   position: relative;
   overflow-x: hidden;
   overflow-y: auto;
@@ -533,7 +537,7 @@
 }
 
 .overview-timeline {
-  height: 100px;
+  height: 70px;
 }
 
 .time-axis-panel {
diff --git a/ui/src/assets/details.scss b/ui/src/assets/details.scss
index 3a007c6..034a967 100644
--- a/ui/src/assets/details.scss
+++ b/ui/src/assets/details.scss
@@ -41,14 +41,14 @@
         padding: 3px 10px 0 10px;
         margin-top: 3px;
         font-size: 13px;
-        border-radius: 5px 5px 0 0;
-        background-color: hsla(0, 0%, 75%, 1);
-        border-top: solid 1px hsla(0, 0%, 75%, 1);
-        border-left: solid 1px hsla(0, 0%, 75%, 1);
+        border-radius: 3px 3px 0 0;
+        background-color: #0000000f;
         border-right: solid 1px hsla(0, 0%, 75%, 1);
         overflow: hidden;
         white-space: nowrap;
         text-overflow: ellipsis;
+        z-index: 5;
+        box-shadow: #0000003b 0px 0px 3px 1px;
 
         &[active] {
           background-color: white;
@@ -62,6 +62,10 @@
           cursor: pointer;
           background-color: hsla(0, 0%, 85%, 1);
         }
+
+        &:nth-child(1) {
+          margin-left: 3px;
+        }
       }
     }
 
diff --git a/ui/src/assets/flags_page.scss b/ui/src/assets/flags_page.scss
index a23c60f..d65b678 100644
--- a/ui/src/assets/flags_page.scss
+++ b/ui/src/assets/flags_page.scss
@@ -12,31 +12,34 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+@import "widgets/theme";
+
 .flags-page {
   overflow-y: scroll;
 }
 
 .flags-content {
-  max-width: 90ch;
+  max-width: 100ch;
   width: 60%;
   margin: 0 auto;
   padding: 3rem;
   display: grid;
-  grid-row-gap: 1rem;
 
   h1 {
     font-size: larger;
+    margin: 1rem 1rem;
   }
 
   button {
     background: none;
     border: 1px solid rgb(218, 220, 224);
-    border-radius: 3px;
+    border-radius: $pf-border-radius;
     color: rgb(25, 103, 210);
     font-size: 0.8125rem;
     padding: 8px 12px;
     cursor: pointer;
     font-weight: 500;
+    margin: 3px 0.5rem;
   }
 }
 
@@ -45,9 +48,9 @@
   grid-template:
     "title control" auto
     "description control" auto / 1fr auto;
-
-  row-gap: 0.5rem;
-  align-content: center;
+  row-gap: 0.3rem;
+  padding: 1rem 1rem;
+  align-items: center;
 
   select {
     grid-area: control;
@@ -70,3 +73,8 @@
     font-size: smaller;
   }
 }
+
+.flag-widget:nth-child(2n+1) {
+  background-color: #0000000a;
+}
+
diff --git a/ui/src/assets/hiring_banner.scss b/ui/src/assets/hiring_banner.scss
index a6807df..3e3b46d 100644
--- a/ui/src/assets/hiring_banner.scss
+++ b/ui/src/assets/hiring_banner.scss
@@ -1,5 +1,5 @@
 .hiring-banner {
-  font-family: "Raleway", sans-serif;
+  font-family: "Roboto", sans-serif;
   font-size: 12px;
   background: #db4634;
   box-shadow: 0 0 3px rgba(0, 0, 0, 30%);
diff --git a/ui/src/assets/home_page.scss b/ui/src/assets/home_page.scss
index 4d3f5a8..f421b83 100644
--- a/ui/src/assets/home_page.scss
+++ b/ui/src/assets/home_page.scss
@@ -12,6 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+@import "widgets/theme";
+
 .home-page {
   text-align: center;
   align-items: center;
@@ -31,15 +33,15 @@
       font-size: 60px;
       margin: 25px;
       text-align: center;
-      font-family: "Raleway", sans-serif;
-      font-weight: 100;
+      font-family: "Roboto", sans-serif;
+      font-weight: 400;
       color: #333;
     }
 
     .channel-select {
       font-family: "Roboto", sans-serif;
       font-size: 1.2rem;
-      font-weight: 200;
+      font-weight: 400;
       margin-top: 3em;
       --chan-width: 100px;
       --chan-num: 2;
@@ -69,7 +71,7 @@
         padding: 0;
         position: relative;
         background-color: hsl(218, 8%, 30%);
-        border-radius: 3px;
+        border-radius: $pf-border-radius;
         box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.4);
         border: 0;
         width: calc(var(--chan-width) * var(--chan-num));
@@ -88,7 +90,7 @@
         z-index: 2;
         text-transform: uppercase;
         font-size: 16px;
-        font-family: "Raleway";
+        font-family: "Roboto";
         font-weight: 400;
         letter-spacing: 0.3px;
       }
@@ -106,7 +108,7 @@
         left: 0;
         z-index: 1;
         border-radius: inherit;
-        @include transition();
+        @include transition(0.2s);
       }
 
       .home-page-reload {
@@ -114,7 +116,7 @@
         opacity: 0;
         color: #da4534;
         font-weight: 400;
-        @include transition();
+        @include transition(0.2s);
         &.show {
           opacity: 1;
         }
@@ -126,7 +128,7 @@
     grid-area: footer;
     text-decoration: none;
     font-family: "Roboto", sans-serif;
-    font-weight: 200;
+    font-weight: 400;
     color: #333;
     font-size: 15px;
   }
diff --git a/ui/src/assets/metrics_page.scss b/ui/src/assets/metrics_page.scss
index 3ed881c..1487e34 100644
--- a/ui/src/assets/metrics_page.scss
+++ b/ui/src/assets/metrics_page.scss
@@ -12,9 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+@import "widgets/theme";
+
 .metrics-page {
   padding: 30px;
-  font-family: "Raleway", sans-serif;
+  font-family: "Roboto", sans-serif;
   overflow-y: auto;
 
   .metric-run-button {
@@ -23,12 +25,12 @@
     border-radius: 4px;
     padding: 5px 10px;
     font-weight: bold;
-    font-family: "Raleway";
+    font-family: "Roboto";
   }
 
   select {
     margin: 10px;
-    font-family: "Raleway";
+    font-family: "Roboto";
     font-size: 1em;
     border: 1px solid black;
     background-color: #eee;
@@ -39,7 +41,7 @@
     padding: 20px;
     font-family: "Roboto Mono";
     line-height: 1.5em;
-    border-radius: 5px;
+    border-radius: $pf-border-radius;
     overflow-x: auto;
     &.metric-error {
       color: #ef6c00;
diff --git a/ui/src/assets/modal.scss b/ui/src/assets/modal.scss
index 76d3cea..ee575f0 100644
--- a/ui/src/assets/modal.scss
+++ b/ui/src/assets/modal.scss
@@ -12,6 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+@import "widgets/theme";
+
 // The opacity changes are only transitional. Once the `modalFadeOut` animation
 // reaches the end, the Mithril component that renders .modal-backdrop
 // (and .modal-dialog) is fully destroyed and removed from the DOM.
@@ -57,7 +59,6 @@
 .modal-dialog {
   position: absolute;
   z-index: 100;
-  border: 1px solid #333;
   background-color: #fff;
   margin: auto;
   min-width: 25vw;
@@ -65,7 +66,7 @@
   padding: 30px;
   max-width: 90vw;
   max-height: 90vh;
-  border-radius: 4px;
+  border-radius: $pf-border-radius;
   overflow-y: auto;
   top: 50%;
   left: 50%;
@@ -86,7 +87,7 @@
     h2 {
       margin-top: 0;
       margin-bottom: 0;
-      font-family: "Raleway", sans-serif;
+      font-family: "Roboto", sans-serif;
       font-weight: 600;
       font-size: 1.25rem;
       line-height: 1.25;
diff --git a/ui/src/assets/record.scss b/ui/src/assets/record.scss
index 529e57e..43cf635 100644
--- a/ui/src/assets/record.scss
+++ b/ui/src/assets/record.scss
@@ -12,6 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+@import "widgets/theme";
+
 :root {
   --record-text-color: #333;
 }
@@ -30,7 +32,7 @@
   max-width: 900px;
   min-height: 500px;
   margin: auto;
-  border-radius: 5px;
+  border-radius: $pf-border-radius;
   box-shadow: 0 1px 2px 0 #aaa, 0 1px 3px 1px #eee;
   background-color: #fff;
   display: grid;
@@ -53,7 +55,7 @@
     height: 100%;
     text-align: center;
     padding: 180px 30px;
-    font-family: "Raleway", sans-serif;
+    font-family: "Roboto", sans-serif;
     font-size: 25px;
   }
 }
@@ -72,8 +74,6 @@
     flex-direction: row;
 
     .logo-wrapping {
-      border-radius: 50%;
-      background-color: #f0f0f0;
       width: 150px;
       height: 150px;
       display: inline-block;
@@ -81,7 +81,7 @@
       align-self: center;
 
       i.material-icons {
-        color: #0000ff;
+        color: #16161d;
         font-size: 150px;
       }
     }
@@ -127,7 +127,7 @@
 
       input[type="text"] {
         flex-grow: 1;
-        border-radius: 4px;
+        border-radius: $pf-border-radius;
         border: 1px solid #dcdcdc;
         padding: 3px;
         margin: 0 10px;
@@ -169,7 +169,7 @@
 
   .record-modal-button,
   .record-modal-button-high {
-    border-radius: 0.25rem;
+    border-radius: $pf-border-radius;
     border-style: none;
     border-width: 0;
   }
@@ -234,7 +234,7 @@
         margin: 10px;
         text-align: center;
         background-color: #eee;
-        font-family: "Raleway", sans-serif;
+        font-family: "Roboto", sans-serif;
         font-size: 17px;
         @media (max-width: 1280px) {
           font-size: 1.6vw;
@@ -366,7 +366,7 @@
     padding: 0 1em;
     font-size: 15px;
     letter-spacing: 0.5px;
-    font-family: "Raleway", sans-serif;
+    font-family: "Roboto", sans-serif;
     font-weight: 600;
     color: #666;
     display: grid;
@@ -378,12 +378,10 @@
 
     i {
       margin: auto;
-      border-radius: 100%;
       font-size: 32px;
       width: 38px;
       height: 38px;
       padding: 3px;
-      background: #eee;
       grid-area: icon;
     }
 
@@ -476,7 +474,7 @@
     margin-right: 10px;
     text-align: center;
     justify-items: center;
-    font-family: "Raleway", sans-serif;
+    font-family: "Roboto", sans-serif;
     padding: 7px;
 
     &:hover:enabled {
@@ -542,7 +540,7 @@
       }
       &::placeholder {
         color: #b4b7ba;
-        font-family: "Raleway", sans-serif;
+        font-family: "Roboto", sans-serif;
         font-weight: 400;
       }
     }
@@ -564,7 +562,7 @@
 
   > header {
     text-align: center;
-    font-family: "Raleway", sans-serif;
+    font-family: "Roboto", sans-serif;
     font-size: 20px;
     padding: 15px 10px;
     color: #333;
@@ -801,7 +799,7 @@
       margin: 5px;
       text-align: center;
       background-color: #eee;
-      font-family: "Raleway", sans-serif;
+      font-family: "Roboto", sans-serif;
       font-size: 20px;
       @media (max-width: 1280px) {
         font-size: 1.6vw;
@@ -1175,7 +1173,7 @@
         text-align: center;
         margin: 3px;
         background-color: #eee;
-        font-family: "Raleway", sans-serif;
+        font-family: "Roboto", sans-serif;
         flex-grow: 1;
         font-size: 17px;
         @media (max-width: 1280px) {
@@ -1202,7 +1200,7 @@
       border-radius: 10px;
       text-align: center;
       justify-items: center;
-      font-family: "Raleway", sans-serif;
+      font-family: "Roboto", sans-serif;
       padding: 7px;
       background-color: hsl(88, 50%, 67%);
 
diff --git a/ui/src/assets/sidebar.scss b/ui/src/assets/sidebar.scss
index b0a7092..6fedf61 100644
--- a/ui/src/assets/sidebar.scss
+++ b/ui/src/assets/sidebar.scss
@@ -12,6 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+@import "widgets/theme";
+
 .sidebar {
   --sidebar-padding-bottom: 40px;
   --sidebar-timing: 0.15s;
@@ -38,11 +40,11 @@
     height: var(--topbar-height);
     line-height: var(--topbar-height);
     vertical-align: middle;
-    padding: 0 20px;
+    padding: 0 12px;
     color: #fff;
     overflow: visible;
     .brand {
-      height: 40px;
+      height: 36px;
       margin-top: 4px;
     }
     &::before {
@@ -54,7 +56,7 @@
       position: absolute;
       font-size: 10px;
       line-height: 10px;
-      font-family: "Raleway", sans-serif;
+      font-family: "Roboto", sans-serif;
       left: 155px;
       top: 7px;
     }
@@ -121,17 +123,15 @@
           cursor: pointer;
           > h1,
           > h2 {
-            font-family: "Raleway", sans-serif;
             letter-spacing: 0.25px;
             overflow: hidden;
             text-overflow: ellipsis;
             white-space: nowrap;
-            margin: 0 24px;
+            margin: 0 12px;
           }
           > h1 {
             color: #fff;
             font-size: 15px;
-            font-weight: 500;
           }
           > h2 {
             @include transition();
@@ -189,10 +189,8 @@
           a {
             line-height: 24px;
             font-size: 14px;
-            font-weight: 400;
-            font-family: "Raleway", sans-serif;
             letter-spacing: 0.5px;
-            padding: 5px 24px;
+            padding: 4px 12px;
             text-decoration: none;
             display: block;
             &.pending {
@@ -225,6 +223,7 @@
           }
           .material-icons {
             margin-right: 10px;
+            font-size: 20px
           }
           &:hover {
             background-color: #373f4b;
@@ -265,13 +264,19 @@
     }
 
     > .dbg-info-square {
+      font-family: "Roboto Condensed", sans-serif;
       width: 24px;
-      height: 22px;
-      line-height: 22px;
+      height: 24px;
+      line-height: 24px;
+      display: flex;
+      justify-content: center;
+      flex-direction: column;
+      align-items: center;
+
       margin: 1px 0;
       background: #12161b;
       color: #4e71b3;
-      border-radius: 5px;
+      border-radius: $pf-border-radius;
       font-size: 12px;
       text-align: center;
       &.green {
diff --git a/ui/src/assets/topbar.scss b/ui/src/assets/topbar.scss
index 561c9364..7742b5a 100644
--- a/ui/src/assets/topbar.scss
+++ b/ui/src/assets/topbar.scss
@@ -11,6 +11,9 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
+
+@import "widgets/theme";
+
 @mixin omnibox-width() {
   width: 90%;
   max-width: 600px;
@@ -22,7 +25,7 @@
   z-index: 3;
   overflow: visible;
   background-color: hsl(215, 1%, 95%);
-  box-shadow: 0 -3px 14px 2px #bbb;
+  box-shadow: 0px 1px 2px 1px #00000026;
   min-height: var(--topbar-height);
   display: flex;
   justify-content: center;
@@ -33,7 +36,7 @@
     display: grid;
     grid-template-areas: "icon input stepthrough";
     grid-template-columns: 34px auto max-content;
-    border-radius: 20px;
+    border-radius: $pf-border-radius;
     background-color: #fcfcfc;
     border: 0;
     line-height: 34px;
@@ -83,14 +86,14 @@
     }
     &.message-mode {
       background-color: hsl(0, 0%, 89%);
-      border-radius: 4px;
+      border-radius: $pf-border-radius;
       input::placeholder {
         font-weight: 400;
         font-family: var(--monospace-font);
         color: hsl(213, 40%, 50%);
       }
       &:before {
-        content: "bubble_chart";
+        content: "info";
       }
     }
     .stepthrough {
diff --git a/ui/src/assets/trace_info_page.scss b/ui/src/assets/trace_info_page.scss
index 69baaaf..3846b7a 100644
--- a/ui/src/assets/trace_info_page.scss
+++ b/ui/src/assets/trace_info_page.scss
@@ -36,7 +36,7 @@
     }
 
     h2 {
-      font-family: "Raleway", sans-serif;
+      font-family: "Roboto", sans-serif;
       font-weight: 400;
       letter-spacing: 0.25px;
       font-size: 2rem;
diff --git a/ui/src/assets/typefaces.scss b/ui/src/assets/typefaces.scss
index d0c4b82..02ef5e8 100644
--- a/ui/src/assets/typefaces.scss
+++ b/ui/src/assets/typefaces.scss
@@ -1,27 +1,5 @@
 /* latin */
 @font-face {
-  font-family: "Raleway";
-  font-style: normal;
-  font-weight: 100;
-  src: url(assets/Raleway-Thin.woff2) format("woff2");
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
-    U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
-    U+FEFF, U+FFFD;
-}
-
-/* latin */
-@font-face {
-  font-family: "Raleway";
-  font-style: normal;
-  font-weight: 400;
-  src: url(assets/Raleway-Regular.woff2) format("woff2");
-  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
-    U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
-    U+FEFF, U+FFFD;
-}
-
-/* latin */
-@font-face {
   font-family: "Roboto";
   font-style: normal;
   font-weight: 100;
diff --git a/ui/src/assets/widgets/theme.scss b/ui/src/assets/widgets/theme.scss
index 3902dc4..2a49642 100644
--- a/ui/src/assets/widgets/theme.scss
+++ b/ui/src/assets/widgets/theme.scss
@@ -15,7 +15,7 @@
 // Standard theme settings for widgets
 
 $pf-font: "Roboto Condensed", sans-serif;
-$pf-border-radius: 3px;
+$pf-border-radius: 2px;
 $pf-anim-timing: 250ms cubic-bezier(0.4, 0, 0.2, 1);
 
 // Here we describe two colour schemes: primary and minimal
diff --git a/ui/src/frontend/icons.ts b/ui/src/frontend/icons.ts
index 0725a41..2fc19b0 100644
--- a/ui/src/frontend/icons.ts
+++ b/ui/src/frontend/icons.ts
@@ -20,3 +20,4 @@
 export const EXPAND_UP = 'expand_less';
 
 export const PIN = 'push_pin';
+export const STAR = 'star';
diff --git a/ui/src/frontend/metrics_page.ts b/ui/src/frontend/metrics_page.ts
index 1eabd99..606236f 100644
--- a/ui/src/frontend/metrics_page.ts
+++ b/ui/src/frontend/metrics_page.ts
@@ -17,6 +17,7 @@
 import {Actions} from '../common/actions';
 import {globals} from './globals';
 import {createPage} from './pages';
+import {Button} from './widgets/button';
 
 function getCurrSelectedMetric() {
   const {availableMetrics, selectedIndex} = globals.state.metrics;
@@ -64,9 +65,10 @@
         },
         availableMetrics.map(
             (metric) => m('option', {value: metric, key: metric}, metric))),
-      m('button.metric-run-button',
-        {onclick: () => globals.dispatch(Actions.requestSelectedMetric({}))},
-        'Run'),
+      m(Button, {
+        onclick: () => globals.dispatch(Actions.requestSelectedMetric({})),
+        label: 'Run',
+      }),
     ]);
   }
 }
diff --git a/ui/src/frontend/notes_panel.ts b/ui/src/frontend/notes_panel.ts
index 295c893..52cec48 100644
--- a/ui/src/frontend/notes_panel.ts
+++ b/ui/src/frontend/notes_panel.ts
@@ -232,7 +232,7 @@
     const prevBaseline = ctx.textBaseline;
     ctx.textBaseline = 'alphabetic';
     // Adjust height for icon font.
-    ctx.font = '24px Material Icons';
+    ctx.font = '24px Material Symbols Sharp';
     ctx.fillStyle = color;
     ctx.strokeStyle = color;
     // The ligatures have padding included that means the icon is not drawn
diff --git a/ui/src/frontend/overview_timeline_panel.ts b/ui/src/frontend/overview_timeline_panel.ts
index adc06d9..2e351f3 100644
--- a/ui/src/frontend/overview_timeline_panel.ts
+++ b/ui/src/frontend/overview_timeline_panel.ts
@@ -34,7 +34,7 @@
 import {TimeScale} from './time_scale';
 
 export class OverviewTimelinePanel extends Panel {
-  private static HANDLE_SIZE_PX = 7;
+  private static HANDLE_SIZE_PX = 5;
 
   private width = 0;
   private gesture?: DragGestureHandler;
@@ -79,7 +79,7 @@
   renderCanvas(ctx: CanvasRenderingContext2D, size: PanelSize) {
     if (this.width === undefined) return;
     if (this.timeScale === undefined) return;
-    const headerHeight = 25;
+    const headerHeight = 20;
     const tracksHeight = size.height - headerHeight;
     const timeSpan = new TimeSpan(0, this.totTime.duration);
 
@@ -147,18 +147,18 @@
     ctx.fillRect(vizEndPx, headerHeight, 1, tracksHeight);
 
     const hbarWidth = OverviewTimelinePanel.HANDLE_SIZE_PX;
-    const hbarDivisionFactor = 3.5;
+    const hbarHeight = tracksHeight * 0.4;
     // Draw handlebar
     ctx.fillRect(
         vizStartPx - Math.floor(hbarWidth / 2) - 1,
         headerHeight,
         hbarWidth,
-        tracksHeight / hbarDivisionFactor);
+        hbarHeight);
     ctx.fillRect(
         vizEndPx - Math.floor(hbarWidth / 2),
         headerHeight,
         hbarWidth,
-        tracksHeight / hbarDivisionFactor);
+        hbarHeight);
   }
 
   private onMouseMove(e: MouseEvent) {
diff --git a/ui/src/frontend/query_history.ts b/ui/src/frontend/query_history.ts
index e2e503c..a50627a 100644
--- a/ui/src/frontend/query_history.ts
+++ b/ui/src/frontend/query_history.ts
@@ -17,6 +17,8 @@
 import {Actions} from '../common/actions';
 
 import {globals} from './globals';
+import {STAR} from './icons';
+
 import {
   arrayOf,
   bool,
@@ -60,15 +62,17 @@
     return m(
         '.history-item',
         m('.history-item-buttons',
-          m('button',
-            {
-              onclick: () => {
-                queryHistoryStorage.setStarred(
-                    vnode.attrs.index, !vnode.attrs.entry.starred);
-                globals.rafScheduler.scheduleFullRedraw();
+          m(
+              'button',
+              {
+                onclick: () => {
+                  queryHistoryStorage.setStarred(
+                      vnode.attrs.index, !vnode.attrs.entry.starred);
+                  globals.rafScheduler.scheduleFullRedraw();
+                },
               },
-            },
-            m(Icon, {icon: 'star', filled: vnode.attrs.entry.starred})),
+              m(Icon, {icon: STAR, filled: vnode.attrs.entry.starred}),
+              ),
           m('button',
             {
               onclick: () => {
diff --git a/ui/src/frontend/record_page.ts b/ui/src/frontend/record_page.ts
index d142ee6..d6d574a 100644
--- a/ui/src/frontend/record_page.ts
+++ b/ui/src/frontend/record_page.ts
@@ -711,7 +711,7 @@
             m('.sub', 'Buffer mode, size and duration'))),
         m('a[href="#!/record/instructions"]',
           m(`li${routePage === 'instructions' ? '.active' : ''}`,
-            m('i.material-icons.rec', 'fiber_manual_record'),
+            m('i.material-icons-filled.rec', 'fiber_manual_record'),
             m('.title', 'Recording command'),
             m('.sub', 'Manually record trace'))),
         PERSIST_CONFIG_FLAG.get() ?
diff --git a/ui/src/frontend/record_page_v2.ts b/ui/src/frontend/record_page_v2.ts
index 105411d..70ab452 100644
--- a/ui/src/frontend/record_page_v2.ts
+++ b/ui/src/frontend/record_page_v2.ts
@@ -466,7 +466,7 @@
             m('.sub', 'Buffer mode, size and duration'))),
         m('a[href="#!/record/instructions"]',
           m(`li${routePage === 'instructions' ? '.active' : ''}`,
-            m('i.material-icons.rec', 'fiber_manual_record'),
+            m('i.material-icons-filled.rec', 'fiber_manual_record'),
             m('.title', 'Recording command'),
             m('.sub', 'Manually record trace'))),
         PERSIST_CONFIG_FLAG.get() ?
diff --git a/ui/src/frontend/recording/reset_target_modal.ts b/ui/src/frontend/recording/reset_target_modal.ts
index a50cce8..5e34c7b 100644
--- a/ui/src/frontend/recording/reset_target_modal.ts
+++ b/ui/src/frontend/recording/reset_target_modal.ts
@@ -69,7 +69,6 @@
       m('.logo-wrapping', m('i.material-icons', 'usb')),
       m('.record-modal-description',
         m('h3', 'Android device over WebUSB'),
-        m('h4', 'JustWorks from the browser with one click'),
         m('text',
           'Android developers: this option cannot co-operate ' +
               'with the adb host on your machine. Only one entity between ' +
diff --git a/ui/src/frontend/track_panel.ts b/ui/src/frontend/track_panel.ts
index b76eeed..0aa518a 100644
--- a/ui/src/frontend/track_panel.ts
+++ b/ui/src/frontend/track_panel.ts
@@ -245,7 +245,7 @@
         '.track',
         {
           style: {
-            height: `${Math.max(24, attrs.track.getHeight())}px`,
+            height: `${Math.max(18, attrs.track.getHeight())}px`,
           },
           id: 'track_' + attrs.trackState.id,
         },
diff --git a/ui/src/tracks/chrome_slices/index.ts b/ui/src/tracks/chrome_slices/index.ts
index 00c475a..23f9a5e 100644
--- a/ui/src/tracks/chrome_slices/index.ts
+++ b/ui/src/tracks/chrome_slices/index.ts
@@ -29,7 +29,7 @@
 
 export const SLICE_TRACK_KIND = 'ChromeSliceTrack';
 const SLICE_HEIGHT = 18;
-const TRACK_PADDING = 4;
+const TRACK_PADDING = 2;
 const CHEVRON_WIDTH_PX = 10;
 const HALF_CHEVRON_WIDTH_PX = CHEVRON_WIDTH_PX / 2;
 const INNER_CHEVRON_OFFSET = -3;
diff --git a/ui/src/tracks/thread_state/index.ts b/ui/src/tracks/thread_state/index.ts
index 475d8b1..3713999 100644
--- a/ui/src/tracks/thread_state/index.ts
+++ b/ui/src/tracks/thread_state/index.ts
@@ -167,8 +167,8 @@
   }
 }
 
-const MARGIN_TOP = 4;
-const RECT_HEIGHT = 14;
+const MARGIN_TOP = 3;
+const RECT_HEIGHT = 12;
 const EXCESS_WIDTH = 10;
 
 class ThreadStateTrack extends Track<Config, Data> {