<?xml version="1.0" encoding="utf-8"?><!--
 * Copyright (c) 2021, 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.
*/
-->
<!-- Applies to small tablet screens -->
<resources>
    <dimen name="navigation_key_padding">25dp</dimen>

    <!--  Overview Task Views  -->
    <!--  A touch target for icons, sometimes slightly larger than the icons themselves  -->
    <dimen name="task_thumbnail_icon_size">48dp</dimen>
    <!--  The icon size for the focused task, placed in center of touch target  -->
    <dimen name="task_thumbnail_icon_drawable_size">44dp</dimen>
    <!--  The space under the focused task icon  -->
    <dimen name="overview_task_margin">12dp</dimen>
    <!--  The icon size of all non-focused task icons, placed in center of touch target  -->
    <dimen name="task_thumbnail_icon_drawable_size_grid">44dp</dimen>
    <!--  The space between grid rows (when there's 2 rows of thumbnails)  -->
    <dimen name="overview_grid_row_spacing">28dp</dimen>
    <!--  The horizontal space between tasks  -->
    <dimen name="overview_page_spacing">36dp</dimen>
    <!--  The space to the left and to the right of the "Clear all" button  -->
    <dimen name="overview_grid_side_margin">64dp</dimen>
    <!-- The top margin above the top row of tasks in grid only overview -->
    <dimen name="overview_top_margin_grid_only">80dp</dimen>
    <!-- The bottom margin above the bottom row of tasks in grid only overview -->
    <dimen name="overview_bottom_margin_grid_only">80dp</dimen>
    <!--  Overview actions  -->
    <dimen name="overview_actions_top_margin">24dp</dimen>

    <!-- All Set page -->
    <dimen name="allset_page_margin_horizontal">120dp</dimen>
    <dimen name="allset_page_allset_text_size">38sp</dimen>
    <dimen name="allset_page_swipe_up_text_size">15sp</dimen>

</resources>
