/* М25 «дизайн v2» (флаг W_DESIGN_V2, класс body.dv2 ставит widget.js по config.design_v2). ТОЛЬКО стили: ни логики, ни денег, ни текстов.
   Выводы дизайнера-продуктолога (сравнение с Mindbody / ClassPass / Glofox / Arketa / YCLIENTS):
   1) иерархия карточки занятия — время и название главные, остальное тише; 2) одна главная кнопка на экран — коралловая, крупная, с тенью;
   3) нижнее меню читается (подпись ≥ 11 px (на 375 px шесть пунктов иначе не помещаются), цель ≥ 44 px, активный пункт — пилюля); 4) день недели — крупная цель с датой;
   5) шторки: ручка-«грабер», крупный крестик; 6) состояния «загрузка/пусто» — спокойный шиммер и воздух; 7) единые радиусы/тени, фокус виден.
   Контраст AA: цвета только из токенов темы (в светлой коралл #c73416 на белом = 5.6:1). */
body.dv2 { --r-lg: 22px; --dv2-gap: 14px; letter-spacing: .002em; }
body.dv2 :focus-visible { outline: 3px solid var(--amber); outline-offset: 3px; }
/* программный фокус (экран #view с tabindex=-1, заголовки шторок) — без кольца: правило выше сильнее общего .view:focus-visible
   из widget.css, и после касания (шторка вернула фокус экрану) весь блок расписания обводился жёлтой рамкой (владелец 31.10).
   Кольцо остаётся у кнопок, ссылок и полей при работе с клавиатуры. */
body.dv2 [tabindex="-1"]:focus, body.dv2 [tabindex="-1"]:focus-visible, body.dv2 .view:focus, body.dv2 .view:focus-visible { outline: none; box-shadow: none; }

/* --- верхняя шапка и заголовки --- */
body.dv2 .top { border-radius: 20px; }
body.dv2 .view > h2, body.dv2 .view > .ph h2 { font-size: 26px; letter-spacing: -.02em; margin: 6px 0 14px; }
body.dv2 .view h3 { letter-spacing: -.01em; }

/* --- нижнее меню (телефон) --- */
@media (max-width: 767px) {
  :root:not(.embed) body.dv2 .tabs button {   /* М148: класс embed у <html>, не у body — «body.dv2:not(.embed)» сжимал меню на сайте */
    min-height: 56px; min-width: 44px; font-size: 11px; letter-spacing: -.025em; padding: 6px 0 4px; }
  :root:not(.embed) body.dv2 .tabs button[aria-selected="true"] { color: var(--text); font-weight: 750; }
  :root:not(.embed) body.dv2 .tabs button[aria-selected="true"] .ic { color: var(--coral); transform: translateY(-1px); }
  :root:not(.embed) body.dv2 .tabs button span { line-height: 1.15; }
  :root:not(.embed) body.dv2 .tabs { box-shadow: 0 -10px 30px -18px rgba(0, 0, 0, .5); }
}

/* --- переключатель «Группы | Персональные» и подвкладки: цель 44, плотнее к содержимому --- */
body.dv2 .kind { border-radius: 16px; }
body.dv2 .kind button { min-height: 44px; }
body.dv2 .kind button[aria-selected="true"] { box-shadow: 0 8px 18px -10px var(--coral); }
body.dv2 .seg button, body.dv2 .subtabs button, body.dv2 [role="tablist"].seg button { min-height: 44px; }

/* --- дни недели: крупнее, дата — главная --- */
body.dv2 .days { gap: 8px; padding: 4px 2px 14px; }
body.dv2 .day { width: 60px; min-height: 72px; border-radius: 18px; padding: 8px 0; }
body.dv2 .day small { text-transform: uppercase; letter-spacing: .06em; font-size: 11.5px; }
body.dv2 .day b { font-size: 22px; }
body.dv2 .day[aria-pressed="true"] { transform: translateY(-2px); box-shadow: 0 12px 22px -10px var(--coral); }

/* --- карточка занятия: время/название сильнее, строка «кто» тише; свободных мест видно сразу --- */
body.dv2 .row { border-radius: 22px; padding: 16px 16px 16px 16px; gap: 6px 14px; min-height: 92px;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 12px 28px -18px rgba(0, 0, 0, .45); }
body.dv2 .row .time { font-size: 24px; letter-spacing: -.03em; }
body.dv2 .row .what b { font-size: 17px; line-height: 1.22; letter-spacing: -.005em; }
body.dv2 .row .what > span { font-size: 14px; color: var(--muted); }
body.dv2 .row:hover { border-color: var(--soft-line); }
body.dv2 .row:active { transform: scale(.98); }
body.dv2 .row.mine::before { top: 12px; bottom: 12px; width: 5px; }
body.dv2 .row.isfull { opacity: 1; }
body.dv2 .row.isfull .time, body.dv2 .row.isfull .what b { color: var(--text2); }
body.dv2 .seats.low { color: var(--amber); }
@media (max-width: 480px) { body.dv2 .row .time { font-size: 20px; } body.dv2 .row { padding: 14px 12px; } }

/* --- плитки «Абонемент/Бонусы», карточки: единая тень и радиус --- */
body.dv2 .card, body.dv2 .h5-stat, body.dv2 .pass, body.dv2 .bkcard { border-radius: 22px; }
body.dv2 .card, body.dv2 .pass { box-shadow: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 14px 30px -20px rgba(0, 0, 0, .45); }
body.dv2 .card .btn, body.dv2 .bkcard .btn { min-height: 48px; }
body.dv2 .card .big { letter-spacing: -.03em; }

/* --- кнопки: одна главная — крупная коралловая; вторичные — спокойный контур; нажатие ощутимо --- */
body.dv2 .btn { min-height: 50px; border-radius: 16px; font-size: 16px; }
body.dv2 .btn.primary { background: linear-gradient(180deg, var(--coral2) -40%, var(--coral) 60%); border-color: var(--coral);
  box-shadow: 0 14px 26px -14px var(--coral), 0 1px 0 rgba(255, 255, 255, .25) inset; font-weight: 750; }
body.dv2 .btn.primary:active { transform: translateY(1px) scale(.985); box-shadow: 0 6px 14px -10px var(--coral); }
body.dv2 .btn.danger { font-weight: 700; }
body.dv2 .btn[disabled], body.dv2 .btn[aria-busy="true"] { opacity: .62; }
body.dv2 .link { min-height: 44px; }

/* --- шторки: ручка и крупный крестик, больше воздуха --- */
body.dv2 .sheet { border-radius: 26px 26px 0 0; }
body.dv2 .sheet-in { padding-top: 26px; }
body.dv2 .sheet h2 { font-size: 24px; margin-bottom: 8px; }
body.dv2 .sheet .x { min-width: 44px; min-height: 44px; background: var(--raise2); }
@media (min-width: 561px) { body.dv2 .sheet { border-radius: 26px; } }

/* --- пустые состояния и загрузка --- */
body.dv2 .empty-state { padding: 36px 22px; border-radius: 22px; background: linear-gradient(180deg, var(--soft), transparent 70%); border-style: solid; border-color: var(--line); }
body.dv2 .empty-state b { font-size: 18px; margin-bottom: 8px; }
body.dv2 .skel { gap: 12px; }
body.dv2 .skel i { height: 92px; border-radius: 22px; }
body.dv2 .chip { min-height: 26px; }

/* --- поля формы: цель 48, подпись видна, фокус кораллом --- */
body.dv2 input:not([type="checkbox"]):not([type="radio"]), body.dv2 select, body.dv2 textarea { min-height: 48px; border-radius: 14px; }
body.dv2 input:focus-visible, body.dv2 select:focus-visible, body.dv2 textarea:focus-visible { border-color: var(--coral); outline-offset: 1px; }
body.dv2 label { font-weight: 600; }

@media (prefers-reduced-motion: reduce) { body.dv2 .day[aria-pressed="true"] { transform: none; } body.dv2 .btn.primary:active { transform: none; } }
