/**
 * Отклик интерфейса (этап 1 «по Apple»): реакция на нажатие, области нажатия 44px, тихое движение
 * для тех, кто его не хочет, интервалы заголовков. Только добавки поверх style-desk.css / style-mobi.css:
 * вид покоя не меняется. Подключён в site/themes/mastershop/index.html после основных стилей.
 */

/* ---- значения, общие для всех «движущихся» мест ---- */
:root {
    --vv-press-scale: .97;          /* во сколько сжимается нажатая кнопка */
    --vv-press-time: 90ms;          /* нажатие мгновенное, отпускание мягкое (его время — у самой кнопки) */
}

/* ---- нажатие: отклик на касание, а не на отпускание ---- */
/* Большие кнопки: «Сделать заказ», «Заказать» в окне блюда, «Оформить заказ» (только когда активна) */
a.__prace_sale:is(:active, .vv-pressed),
.add2cart-button:is(:active, .vv-pressed),
.js-submit-order-button.vv-submit-ready:is(:active, .vv-pressed) {
    opacity: 1;
    transform: scale(var(--vv-press-scale));
    transition-duration: var(--vv-press-time);
}
/* «+» и «−» количества в окне блюда */
.js-qty .js-qty-action:is(:active, .vv-pressed) {
    transform: scale(.9);
    transition-duration: var(--vv-press-time);
}
/* Оранжевый «+» на карточке блюда: сжимается значок, а не сама (абсолютно позиционированная) кнопка */
.__item__linck_product_plus:is(:active, .vv-pressed) i {
    transform: scale(.88);
    transition-duration: var(--vv-press-time);
}
/* Нижнее меню телефона: сжимается только сама ссылка (значок и подпись). Нельзя ставить transform на
   .__fixed__ico_box: внутри него лежит боковое меню (position:fixed), и при нажатии на пункт меню оно
   «съезжало» (transform у предка делает его контейнером для fixed). */
.__fixed_menu__footer .__fixed__ico_box > a {
    transition: transform .25s cubic-bezier(.2, .8, .2, 1);
}
.__fixed_menu__footer .__fixed__ico_box > a:is(:active, .vv-pressed) {
    opacity: 1;
    transform: scale(.94);
    transition-duration: var(--vv-press-time);
}
/* «подробнее» и подобные ссылки-кнопки: слегка тускнеют, пока палец на них */
.products-panel-trigger.__item__linck_detal:is(:active, .vv-pressed) {
    opacity: .55;
}

/* ---- единый отклик на нажатие вместо голубой подкраски браузера ----
   В universal.css есть `*,html*{-webkit-tap-highlight-color:transparent}`, но `html*` — неверный селектор,
   и браузер отбрасывает ВСЕ правило целиком; поэтому Android рисовал свою голубую подкраску
   (rgba(51,181,229,.4)) на ссылках, кнопках и подписях. Свойство не наследуется — нужен именно `*`. */
*, *::before, *::after {
    -webkit-tap-highlight-color: transparent;
}
/* Без задержки двойного тапа и без выделения текста/меню на долгом нажатии у кнопок и пунктов меню */
:where(a, button, label, summary, [role="button"], input[type="submit"], input[type="button"], select) {
    touch-action: manipulation;
}
:where(button, [role="button"], input[type="submit"], input[type="button"], .button, .btn, .wa-button) {
    -webkit-user-select: none;
    user-select: none;
    -webkit-touch-callout: none;
}
/* Общее правило отклика (низкая специфичность — частные правила выше его переопределяют):
   кнопки сжимаются, как «+» в меню; ссылки и подписи (радио, чипы, пункты меню) слегка тускнеют.
   Только листовые элементы: transform на предке окна/меню ломает его position:fixed. */
:where(button, input[type="submit"], input[type="button"], .button, .btn, .wa-button):not(:disabled):is(:active, .vv-pressed) {
    transform: scale(var(--vv-press-scale));
    transition: transform var(--vv-press-time) ease-out;
}
:where(a[href], label, summary, [role="button"]):is(:active, .vv-pressed) {
    opacity: .6;
}
:where(a[href], label, summary, [role="button"], button, .button, .btn, .wa-button) {
    transition: opacity .25s ease, transform .25s cubic-bezier(.2, .8, .2, 1);
}

/* ---- области нажатия: вид прежний, цель не меньше ~44px ---- */
.__item__linck_product_plus::after,
.__item__linck_detal::after {
    content: "";
    position: absolute;
    top: -7px;
    right: -7px;
    bottom: -7px;
    left: -7px;
}
.__item__linck_detal {
    position: relative;
}

/* ---- интервалы заголовков: крупный текст плотнее (одно значение на все размеры — ошибка) ---- */
h1 { letter-spacing: -.015em; }
h2 { letter-spacing: -.01em; }

/* ---- без повторного «проявления» при каждой загрузке страницы ----
   index.html вешает animation: fadeIn .3s на блоки страницы, как только появился класс page-loaded
   (он стоит с первого байта). Получался не вход, а мигание: контент гас и 0,3 с проявлялся заново. */
body.page-loaded .wa-content,
body.page-loaded .wa-sidebar,
body.page-loaded .wa-order-cart-wrapper .wa-products .wa-product,
body.page-loaded .__menu_setup__category_product .product_keis .s-radio,
body.page-loaded .__fixed_menu__footer .__footer_grid__item,
body.page-loaded .__menu_setup__category_block .categories-list-wrap .categories-icons__inner,
body.page-loaded .categories-icons-wrap.js-categories-list .categories-icons__inner,
body.page-loaded .__menu_setup__block .product-list.product-list--tile .product-tile__outer {
    animation: none !important;
}

/* ---- уменьшенное движение: без заездов и пружин, остаётся смена прозрачности и цвета ---- */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-property: opacity, color, background-color, border-color, box-shadow, visibility !important;
    }
}
