/* ============================================================================
   Базовый слой темы photographer — фаза 1 TASK-005.
   Раздаётся ОБЕИМ сторонам: публике (wp_enqueue_style) и полотну редактора
   (add_editor_style, WP инлайнит в iframe — доказано пробой dz-opsz-probe,
   materials/design/редактор-поверхность-разбор-2026-08-23.md, шаг 5.3).

   Здесь только СИСТЕМНЫЕ правила уровня темы. Числа не объявляются — всё через
   var() из tokens.css (единый источник). Компонентные стили — фаза 2.
   ============================================================================ */

/* --- БАЗОВЫЙ СБРОС РАЗМЕРНОЙ МОДЕЛИ ------------------------------------------
   Принятый образец нёс `*{box-sizing:border-box}` глобально. Без него
   собственная разметка обвязки (wp:html) считалась по content-box, а блоки
   ядра — по border-box: у `.head .shell` padding уходил ЗА max-width (ширина
   1280 вместо 1240), и содержимое шапки вставало на 20px левее контента —
   логотип и колонка документа не совпадали по левому краю. Сброс выравнивает
   обе стороны на одну модель.                                                */
*, *::before, *::after{ box-sizing: border-box; }

/* --- КАНАЛ C: ось оптического размера ---------------------------------------
   Ядро WordPress `font-variation-settings` в theme.json не пишет и молча
   отбрасывает (проверено на wp-s1). Ось применяет тема — этим листом.
   ВНИМАНИЕ (P0 от 01.08.2026): font-variation-settings наследуется и
   перекрывает font-weight у потомков. Здесь задаётся ТОЛЬКО opsz; вес —
   обычным font-weight (в theme.json / компонентах). Golos Text оси opsz не
   имеет — правило для аппарата безвредно (ось игнорируется).                 */
h1{ font-variation-settings:"opsz" var(--opsz-display) }
h2{ font-variation-settings:"opsz" var(--opsz-head2) }
h3{ font-variation-settings:"opsz" var(--opsz-head3) }
body, p, li{ font-variation-settings:"opsz" var(--opsz-body) }
/* --opsz-deck и --opsz-quote применяются на своих классах в фазе 2. */

/* --- СИСТЕМНОЕ БАЗОВОЕ ПРАВИЛО ФОКУСА (OPEN-064, критерий 7) ----------------
   :where() не даёт специфичности — компонент может усилить кольцо, но не
   остаётся без него по умолчанию. Кольцо строится чернилами (--accent = --ink).
   Перенесено из витрины TASK-002 в базовый слой темы, как и предполагала
   отметка OPEN-064.                                                          */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible{
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

/* --- СБРОСЫ ДЛЯ СОБСТВЕННОЙ РАЗМЕТКИ ОБВЯЗКИ ---------------------------------
   Шапка, служебная строка и подвал набраны в wp:html и НЕ получают сбросов
   блочных стилей ядра, а принятый образец нёс их глобально (`ul,ol{list-style:
   none}`, `button{border:0;background:none}`). Отсюда на публике всплыли:
   маркеры и отступ ~40px у служебного списка (уезжал вправо от логотипа) и
   рамка браузера у кнопок-кареток подменю. Сбрасываем — в границах обвязки.
   `:where()` = нулевая специфичность: свою рамку .switch и .search__go
   сохраняют собственным правилом.                                            */
:where(.util, .head, .foot) ul{ list-style: none; margin: 0; padding: 0; }
:where(.util, .head, .foot) button{ border: 0; background: none; font: inherit; color: inherit; cursor: pointer; padding: 0; }

/* --- ЦЕЛЬ НАЖАТИЯ ПОД ГРУБЫМ УКАЗАТЕЛЕМ (OPEN-065) --------------------------
   Решение владельца 26.08.2026: --tap-min системным правилом, тема применяет
   единообразно ко всем КОНТРОЛАМ. Строчные ссылки в тексте под ориентир не
   подпадают (inline-исключение) и здесь не трогаются.                        */
@media (pointer: coarse){
  button,
  input:not([type="hidden"]),
  select,
  textarea,
  summary,
  [role="button"]{
    min-height: var(--tap-min);
  }
}
