diff --git a/OWNERS b/OWNERS
index 3c22c9a..14bb338 100644
--- a/OWNERS
+++ b/OWNERS
@@ -4,8 +4,6 @@
 rlagos@google.com # OWNER for SUW related code
 alexstetson@google.com # OWNER for Car Settings related code
 
-# TV Settings
-leifhendrik@google.com
-
 # Mobile Settings
-tmfang@google.com
+stanleytfwang@google.com
+chiujason@google.com
diff --git a/res/drawable/search_bar_selected_background.xml b/res/drawable/search_bar_selected_background.xml
new file mode 100644
index 0000000..494302a
--- /dev/null
+++ b/res/drawable/search_bar_selected_background.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="?android:attr/colorControlHighlight">
+    <item android:drawable="@color/search_bar_background"/>
+</ripple>
diff --git a/res/layout/search_panel.xml b/res/layout/search_panel.xml
index 5f621cd..990d11a 100644
--- a/res/layout/search_panel.xml
+++ b/res/layout/search_panel.xml
@@ -25,7 +25,6 @@
         android:id="@+id/search_bar_container"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:background="@color/search_panel_background"
         android:elevation="4dp">
         <androidx.cardview.widget.CardView
             android:id="@+id/search_bar"
@@ -33,7 +32,6 @@
             android:layout_height="wrap_content"
             android:layout_margin="@dimen/search_bar_margin"
             app:cardCornerRadius="2dp"
-            app:cardBackgroundColor="?android:attr/colorBackground"
             app:cardElevation="2dp">
             <Toolbar
                 android:id="@+id/search_toolbar"
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index a7a52b3..db9af8b 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="applications_settings" msgid="3446736638853404682">"Звесткі аб праграме"</string>
+    <string name="applications_settings" msgid="3446736638853404682">"Інфармацыя пра праграму"</string>
     <string name="accessibility_settings_classname" msgid="973410590374198997">"com.android.settings.accessibility.AccessibilitySettings"</string>
     <string name="accessibility_settings" msgid="1488998032020612740">"Спецыяльныя магчымасці"</string>
     <string name="physical_keyboard_title" msgid="3955072245281785000">"Фізічная клавіятура"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 55c1bdc..b209564 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -20,7 +20,7 @@
     <string name="applications_settings" msgid="3446736638853404682">"ຂໍ້ມູນແອັບ"</string>
     <string name="accessibility_settings_classname" msgid="973410590374198997">"com.android.settings.accessibility.AccessibilitySettings"</string>
     <string name="accessibility_settings" msgid="1488998032020612740">"ການຊ່ວຍເຂົ້າເຖິງ"</string>
-    <string name="physical_keyboard_title" msgid="3955072245281785000">"ແປ້ນພິມພາຍນອກ"</string>
+    <string name="physical_keyboard_title" msgid="3955072245281785000">"ແປ້ນພິມແທ້"</string>
     <string name="add_virtual_keyboard" msgid="542703692821933851">"ຈັດການແປ້ນພິມ"</string>
     <string name="app_name_settings_intelligence" msgid="8701735500346011661">"ການແນະນຳການຕັ້ງຄ່າ"</string>
     <string name="search_clear_history" msgid="6232116698940067519">"ລຶບລ້າງປະຫວັດ"</string>
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
new file mode 100644
index 0000000..3be2c99
--- /dev/null
+++ b/res/values-night/colors.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2017 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+  -->
+
+<resources
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+
+    <color name="search_bar_background">?androidprv:attr/colorSurfaceVariant</color>
+
+</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index ab0504c..61f1404 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -21,8 +21,8 @@
     <string name="accessibility_settings_classname" msgid="973410590374198997">"com.android.settings.accessibility.AccessibilitySettings"</string>
     <string name="accessibility_settings" msgid="1488998032020612740">"Accesibilitate"</string>
     <string name="physical_keyboard_title" msgid="3955072245281785000">"Tastatură fizică"</string>
-    <string name="add_virtual_keyboard" msgid="542703692821933851">"Gestionează tastaturile"</string>
+    <string name="add_virtual_keyboard" msgid="542703692821933851">"Gestionați tastaturile"</string>
     <string name="app_name_settings_intelligence" msgid="8701735500346011661">"Sugestii de setări"</string>
-    <string name="search_clear_history" msgid="6232116698940067519">"Șterge istoricul"</string>
+    <string name="search_clear_history" msgid="6232116698940067519">"Ștergeți istoricul"</string>
     <string name="search_no_results" msgid="6855095945475439835">"Niciun rezultat"</string>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index a2105f0..5c3b05c 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -18,5 +18,5 @@
 <resources>
     <color name="launcher_background_color">#ff008577</color>
 
-    <color name="search_panel_background">#f2f2f2</color>
+    <color name="search_bar_background">?android:attr/colorBackground</color>
 </resources>
diff --git a/src/com/android/settings/intelligence/search/SearchFragment.java b/src/com/android/settings/intelligence/search/SearchFragment.java
index c76eda3..97445ff 100644
--- a/src/com/android/settings/intelligence/search/SearchFragment.java
+++ b/src/com/android/settings/intelligence/search/SearchFragment.java
@@ -23,6 +23,7 @@
 import android.content.Context;
 import android.os.Bundle;
 import androidx.annotation.VisibleForTesting;
+import androidx.cardview.widget.CardView;
 import androidx.loader.content.Loader;
 import androidx.loader.app.LoaderManager;
 import androidx.recyclerview.widget.LinearLayoutManager;
@@ -149,6 +150,9 @@
 
         mNoResultsView = view.findViewById(R.id.no_results_layout);
 
+        final CardView cardView = view.findViewById(R.id.search_bar);
+        cardView.setBackgroundResource(R.drawable.search_bar_selected_background);
+
         final Toolbar toolbar = view.findViewById(R.id.search_toolbar);
         activity.setActionBar(toolbar);
         activity.getActionBar().setDisplayHomeAsUpEnabled(true);
diff --git a/src/com/android/settings/intelligence/suggestions/model/CandidateSuggestion.java b/src/com/android/settings/intelligence/suggestions/model/CandidateSuggestion.java
index 2502e2a..c04e7d4 100644
--- a/src/com/android/settings/intelligence/suggestions/model/CandidateSuggestion.java
+++ b/src/com/android/settings/intelligence/suggestions/model/CandidateSuggestion.java
@@ -230,8 +230,8 @@
                 .setSummary(summary)
                 .setFlags(flags)
                 .setIcon(icon)
-                .setPendingIntent(PendingIntent
-                        .getActivity(mContext, 0 /* requestCode */, mIntent, 0 /* flags */));
+                .setPendingIntent(PendingIntent.getActivity(
+                        mContext, 0 /* requestCode */, mIntent, PendingIntent.FLAG_IMMUTABLE));
     }
 
     /**
diff --git a/src/com/android/settings/intelligence/suggestions/ranking/SuggestionRanker.java b/src/com/android/settings/intelligence/suggestions/ranking/SuggestionRanker.java
index 61c08e9..f8faba0 100644
--- a/src/com/android/settings/intelligence/suggestions/ranking/SuggestionRanker.java
+++ b/src/com/android/settings/intelligence/suggestions/ranking/SuggestionRanker.java
@@ -40,15 +40,14 @@
     // relevance metric for ranking the suggestion items. This model is learned with off-line data
     // by training a binary classifier to detect the clicked items. The higher the obtained
     // relevance metric, the higher chance of getting clicked.
-    private static final Map<String, Double> WEIGHTS = new HashMap<String, Double>() {{
-        put(SuggestionFeaturizer.FEATURE_IS_SHOWN, 5.05140842519);
-        put(SuggestionFeaturizer.FEATURE_IS_DISMISSED, 2.29641455171);
-        put(SuggestionFeaturizer.FEATURE_IS_CLICKED, -2.98812233623);
-        put(SuggestionFeaturizer.FEATURE_TIME_FROM_LAST_SHOWN, 5.02807250202);
-        put(SuggestionFeaturizer.FEATURE_TIME_FROM_LAST_DISMISSED, 2.49589700842);
-        put(SuggestionFeaturizer.FEATURE_TIME_FROM_LAST_CLICKED, -4.3377039948);
-        put(SuggestionFeaturizer.FEATURE_SHOWN_COUNT, -2.35993512546);
-    }};
+    private static final Map<String, Double> WEIGHTS = Map.of(
+            SuggestionFeaturizer.FEATURE_IS_SHOWN, 5.05140842519,
+            SuggestionFeaturizer.FEATURE_IS_DISMISSED, 2.29641455171,
+            SuggestionFeaturizer.FEATURE_IS_CLICKED, -2.98812233623,
+            SuggestionFeaturizer.FEATURE_TIME_FROM_LAST_SHOWN, 5.02807250202,
+            SuggestionFeaturizer.FEATURE_TIME_FROM_LAST_DISMISSED, 2.49589700842,
+            SuggestionFeaturizer.FEATURE_TIME_FROM_LAST_CLICKED, -4.3377039948,
+            SuggestionFeaturizer.FEATURE_SHOWN_COUNT, -2.35993512546);
 
     private final long mMaxSuggestionsDisplayCount;
     private final SuggestionFeaturizer mSuggestionFeaturizer;
