<?xml version="1.0" encoding="utf-8"?>
<!--
/*
 * Copyright 2010, 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>
    <drawable name="notification_number_text_color">#ffffffff</drawable>
    <drawable name="ticker_background_color">#ff1d1d1d</drawable>
    <drawable name="system_bar_background">@color/system_bar_background_opaque</drawable>
    <color name="system_bar_background_opaque">#ff000000</color>
    <color name="system_bar_background_transparent">#00000000</color>
    <color name="notification_panel_solid_background">#ff000000</color>
    <drawable name="status_bar_notification_row_background_color">#ff090909</drawable>
    <color name="notification_list_shadow_top">#80000000</color>
    <drawable name="heads_up_notification_bg_pressed">#ff33B5E5</drawable>
    <color name="qs_batterymeter_frame_color">#FF404040</color>
    <color name="qs_tile_divider">#29ffffff</color><!-- 16% white -->
    <color name="qs_subhead">#99FFFFFF</color><!-- 60% white -->
    <color name="qs_detail_button">@*android:color/quaternary_device_default_settings</color>
    <color name="qs_detail_button_white">#B3FFFFFF</color><!-- 70% white -->
    <color name="qs_detail_transition">#66FFFFFF</color>
    <color name="status_bar_clock_color">#FFFFFFFF</color>
    <color name="qs_user_detail_icon_muted">#FFFFFFFF</color> <!-- not so muted after all -->
    <color name="qs_tile_disabled_color">#9E9E9E</color> <!-- 38% black -->

    <!-- Tint color for the content on the notification overflow card. -->
    <color name="keyguard_overflow_content_color">#ff686868</color>

    <!-- The disabled recents task bar background color. -->
    <color name="recents_task_bar_disabled_background_color">#ff676767</color>
    <!-- The default recents task bar background color. -->
    <color name="recents_task_bar_default_background_color">#ffe6e6e6</color>
    <!-- The default recents task view background color. -->
    <color name="recents_task_view_default_background_color">#fff3f3f3</color>
    <!-- The recents task bar light text color to be drawn on top of dark backgrounds. -->
    <color name="recents_task_bar_light_text_color">#ffeeeeee</color>
    <!-- The recents task bar dark text color to be drawn on top of light backgrounds. -->
    <color name="recents_task_bar_dark_text_color">#cc000000</color>
    <!-- The recents task bar light dismiss icon color to be drawn on top of dark backgrounds. -->
    <color name="recents_task_bar_light_icon_color">#ccffffff</color>
    <!-- The recents task bar dark dismiss icon color to be drawn on top of light backgrounds. -->
    <color name="recents_task_bar_dark_icon_color">#99000000</color>
    <!-- The lock to task button background color. -->
    <color name="recents_task_view_lock_to_app_button_background_color">#ffe6e6e6</color>
    <!-- The lock to task button foreground color. -->
    <color name="recents_task_view_lock_to_app_button_color">#ff666666</color>
    <!-- The background color for the freeform workspace. -->
    <color name="recents_freeform_workspace_bg_color">#33FFFFFF</color>

    <color name="keyguard_affordance">#ffffffff</color>

    <!-- The color of the legacy notification background -->
    <color name="notification_legacy_background_color">#ff1a1a1a</color>

    <!-- The color of the material notification background -->
    <color name="notification_material_background_color">@*android:color/notification_material_background_color</color>

    <!-- The color of the material notification background when dimmed -->
    <color name="notification_material_background_dimmed_color">#ccffffff</color>

    <!-- The color of the material notification background when dark -->
    <color name="notification_material_background_dark_color">#ff333333</color>

    <!-- The color of the material notification background when low priority -->
    <color name="notification_material_background_low_priority_color">#fff5f5f5</color>

    <!-- The color of the dividing line between grouped notifications. -->
    <color name="notification_divider_color">#FF616161</color>

    <!-- The background color of the notification shade -->
    <color name="notification_shade_background_color">#ffeeeeee</color>

    <!-- The color of the ripples on the untinted notifications -->
    <color name="notification_ripple_untinted_color">#28000000</color>

    <!-- The color of the ripples on the low priority notifications -->
    <color name="notification_ripple_color_low_priority">#30000000</color>

    <!-- The color of the ripples on the tinted notifications -->
    <color name="notification_ripple_tinted_color">#30ffffff</color>

    <!-- The color of the gear shown behind a notification -->
    <color name="notification_gear_color">#ff757575</color>

    <!-- The "inside" of a notification, reached via longpress -->
    <color name="notification_guts_bg_color">#eeeeee</color>

    <color name="assist_orb_color">#ffffff</color>

    <color name="keyguard_user_switcher_background_gradient_color">#77000000</color>

    <!-- The color of the navigation bar icons. Need to be in sync with ic_sysbar_* -->
    <color name="navigation_bar_icon_color">#E5FFFFFF</color>

    <!-- Shadow color for the first pixels around the fake shadow for recents. -->
    <color name="fake_shadow_start_color">#44000000</color>

    <!-- Shadow color for the furthest pixels around the fake shadow for recents. -->
    <color name="fake_shadow_end_color">#03000000</color>

    <color name="screen_pinning_request_window_bg">#80000000</color>

    <color name="segmented_buttons_background">#14FFFFFF</color><!-- 8% white -->

    <color name="dark_mode_icon_color_single_tone">#99000000</color>
    <color name="dark_mode_icon_color_dual_tone_background">#3d000000</color>
    <color name="dark_mode_icon_color_dual_tone_fill">#7a000000</color>

    <color name="light_mode_icon_color_single_tone">#ffffff</color>
    <color name="light_mode_icon_color_dual_tone_background">#4dffffff</color>
    <color name="light_mode_icon_color_dual_tone_fill">#ffffff</color>

    <color name="volume_settings_icon_color">#7fffffff</color>
    <color name="volume_slider_inactive">@*android:color/quaternary_device_default_settings</color>

    <color name="docked_divider_background">#ff000000</color>
    <color name="docked_divider_handle">#ffffff</color>
    <drawable name="forced_resizable_background">#59000000</drawable>
    <color name="minimize_dock_shadow_start">#60000000</color>
    <color name="minimize_dock_shadow_end">#00000000</color>

    <color name="default_remote_input_background">@*android:color/notification_default_color</color>
    <color name="remote_input_text_enabled">#ffffffff</color>
    <color name="remote_input_hint">#99ffffff</color>

    <color name="remote_input_accent">#eeeeee</color>

    <!-- Keyboard shortcuts colors -->
    <color name="ksh_application_group_color">#fff44336</color>
    <color name="ksh_keyword_color">#d9000000</color>
    <color name="ksh_key_item_color">@color/material_grey_600</color>
    <color name="ksh_key_item_background">@color/material_grey_100</color>

    <color name="instant_apps_color">#ff4d5a64</color>

    <color name="zen_introduction">#ffffffff</color>

</resources>
