/* Элементы выбора и попапы (2026-09-22): РОВНО ДВЕ формы элемента выбора приложения —
 *  чип     (--dj-radius-chip)    — «привязать к чему-то» (тэг/камень/проект/контакт) и одиночный
 *                                  переключатель вкл/выкл (не отдельная третья форма — частный
 *                                  случай чипа). Раньше пилюля (14px) была третьей формой — больше нет.
 *  сегмент (0 у кнопок внутри, --dj-radius-chip у контейнера) — выбор ОДНОГО из N взаимоисключающих
 *                                  вариантов (Сумма/За раз, ≥/≤).
 * И один общий радиус для КОНТЕЙНЕРА всплывающего меню/попапа (--dj-radius-popup) — раньше был
 * россыпью значений 7-18px по ревизиям (первый найденный конкретный случай — .v40-manual-rules/
 * .r27-critical в форме «Ручная цель с цифрами»; полный список — DESIGN_STANDARDS.md §5).
 * Значения — одни и те же на Desktop/Tablet/Phone СЕЙЧАС (визуальной причины различать не нашли),
 * но токен существует именно для того, чтобы завести per-breakpoint отличие без переписывания
 * каждого места — так же, как typography-tokens.css уже делает для шрифтов: переопределить здесь,
 * в :root внутри тех же двух @media из typography-tokens.css. */
:root{
  --dj-radius-chip:8px;
  --dj-radius-popup:10px;
  /* Full-width menu-row buttons INSIDE a popup (context menu items, picker rows) — a third, legitimate shape:
     list-item navigation/action, not a form's "element of choice" (chip/segment stays exactly those two, see §4
     above). 7px was already the plurality value found by audit (5 of 9 checked popups), kept as the standard. */
  --dj-radius-popup-row:7px;
  /* Row HEIGHT and hover-fill for the same popup-row buttons (DESIGN_STANDARDS.md §5, 2026-09-22 pass):
     36px was the plurality of the explicit min-height values already in use (3 of 5 that had one at all);
     var(--accent-soft) was the plurality hover color (6 of 11 rows already used it — the others were three
     near-identical hand-picked grays: #f4f1ed/#f4f2ee/#f2f2f2, clearly the same intent drifted by revision,
     not a deliberate distinction). One documented exception: `.v76-header-menu>button` (mobile top-nav) keeps
     its own 44px — the iOS/Android minimum touch-target size for a primary nav menu, not a stray leftover. */
  --dj-minheight-popup-row:36px;
}

/* Единый стандарт кнопок приложения (см. ANDROID_TASKMENU_PORT_PROMPT.md §192-193).
 * Форма — часть КАРКАСА приложения, а не темы: круглая кнопка-значок работает
 * одинаково в любой теме (classic/claude/modern/drunk), не только там, где
 * тема сама решила её включить (раньше форма была спрятана в design/theme-claude.css,
 * видна только в теме claude — см. §192).
 *
 * Три существующих класса кнопки-без-подписи в кодовой базе — НОВЫЕ места
 * должны использовать один из них, не изобретать четвёртый:
 *  .v22-icon-button — основной, используется в меню задачи и списках (v22.css
 *                     задаёт ему размер 34px/30px(.small) — здесь только форма)
 *  .icon-btn        — используется в редакторах Стены/Проекта/Идеи (v17-v21.js)
 *                     для кнопок закрыть(×)/подтвердить(✓) в шапке формы
 *  .icon-only       — добавляется ДИНАМИЧЕСКИ (v11.js) любой кнопке с текстом
 *                     "×"/"✓" — универсальный перехватчик для старых мест
 */
:is(.v22-icon-button,.icon-btn,.icon-only){border-radius:50%;aspect-ratio:1/1}

/* button logic (2026-09-22): round icon buttons never show a text label (DESIGN_STANDARDS.md §3.1 —
 * "круглая кнопка" = icon-only). .v18-state-label is shared with the state-action LIST (Провалить/
 * Отменить/В Мысли/Удалить), where text IS wanted next to the icon — that context re-shows it with a
 * more specific, !important rule in task-menu-r19.css, so it still wins there. Found via the round
 * "Отмена" button in "Цель с цифрами" spilling its label text outside the circle. */
:is(.v22-icon-button,.icon-btn,.icon-only) .v18-state-label{display:none}
:is(.icon-btn,.icon-only){display:inline-grid;place-items:center;width:34px;height:34px;padding:0;border:0;background:transparent}

/* Первичное значковое действие (шапка формы, FAB) — залитый акцентом круг.
 * Раньше .icon-btn.primary ничего не задавал (кнопка "✓" выглядела как "×") —
 * см. §193, живой баг, найденный при разборе кнопок Стены. */
:is(.icon-btn,.v22-icon-button).primary{background:var(--accent);color:#fff}

/* Разрушительное действие (Удалить) — НЕ отдельный цвет (--accent уже
 * фирменный розово-красный, "красный=опасно" тут не создаёт контраста, см.
 * §192), а та же форма/заполненность, что у обычного действия в этом же
 * контексте, плюс перекраска в --accent — так кнопка отличается от нейтральных
 * (серых) кнопок рядом, но не выглядит "ещё одной primary". НИКОГДА не
 * комбinировать .danger с .primary (заливкой).
 * Реальный пример: кнопка "Удалить" в редакторе Стены уже имела класс
 * "btn danger" в разметке (v19.js), но это ничего не стилизовало — класс
 * .danger нигде не был определён. Теперь определён. */
.danger{color:var(--accent)}
.btn.danger{border-color:var(--accent)}
:is(.btn,.icon-btn,.v22-icon-button).danger:hover{background:var(--accent-soft)}

/* §196 — единая "создать новый Х" кнопка в шапке вкладки (Входящие/Сегодня/
 * Накопительные/Проекты/Ритуалы/Привычки/Действия/Тэги/Идеи/Заметки).
 * До этого правила это были ЧЕТЫРЕ независимые, несогласованные системы:
 *  - .v82-create-button (Проекты/Ритуалы/Привычки/Действия/Тэги) — задумана
 *    залитой (v82.css), но mobile-client.css/v84.css поверх делали её
 *    прозрачной и 32px — уже частично починено в §195 (32→44px), здесь
 *    добавляется заливка, которой не хватало.
 *  - .btn.primary.v22-icon-button (Входящие/Сегодня/Накопительные) — уже
 *    залита правильно (см. правило .primary выше), но 34px, не 44px.
 *  - .v76-header-button[data-idea-action="new"] (Идеи) — прозрачная, 44px.
 *  - .notes-button[data-note-action="quick-new"] (Заметки) — прозрачная,
 *    чёрная (не акцентная), 42px.
 * Единый результат для всех: круг 44px, заливка --accent, белый значок 25px —
 * "Первичное значковое действие (шапка/FAB)" из уже утверждённой таблицы
 * (см. DESIGN_STANDARDS.md §3.2 / ANDROID_TASKMENU_PORT_PROMPT.md §192-196).
 * Правило намеренно НЕ трогает другие кнопки той же шапки без явного
 * признака "это кнопка создания" (Фокус/Настройки/Выбрать и т.п. остаются
 * тихими/прозрачными — это их собственная, отдельная роль). */
:is(
  .v82-create-button,
  [data-idea-action="new"],
  .notes-button[data-note-action="new"],
  .notes-button[data-note-action="quick-new"]
),
:is(.topbar .actions,.v76-mobile-main-row,.v76-mobile-actions) .btn.primary.v22-icon-button{
  width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;
  border-radius:50%!important;background:var(--accent)!important;border-color:var(--accent)!important;
  color:#fff!important;
}
:is(
  .v82-create-button,
  [data-idea-action="new"],
  .notes-button[data-note-action="new"],
  .notes-button[data-note-action="quick-new"]
) .v22-icon,
:is(.topbar .actions,.v76-mobile-main-row,.v76-mobile-actions) .btn.primary.v22-icon-button .v22-icon{
  width:25px!important;height:25px!important;color:#fff!important;
}
