/* КОЛЬЦО ФОКУСА У ПОЛЕЙ ВВОДА ИДЁТ РОВНО ПО КОНТУРУ ПОЛЯ.

   Просьба владельца 09.09.2026, со снимком: «этот border должен соответствовать его родному
   дефолтному бордеру... Он должен точно попасть в его очертания, не больше, не меньше. И
   border-radius добавить». Требование объявлено ШИРЕ снимка - «так должно быть во всех
   input'ах по всему сайту».

   ПОЧЕМУ ЭТО ОТДЕЛЬНЫЙ ФАЙЛ, А НЕ ПРАВКА `parts/forms.css`. Файлы в `parts/` и `base/` -
   побайтовые срезы проекта Claude Design, и их шапки объявляют это прямо: «расхождение
   репозитория с проектом считается дефектом, а не локальной правкой». Правка внутри среза
   потерялась бы при следующем срезе, и потерялась бы молча - тот же довод, по которому
   правки для зеркала `agents.css` живут в `cabinet.css`.

   ПОЧЕМУ ПЕРЕМЕННАЯ, А НЕ ВТОРОЕ ПРАВИЛО ФОКУСА. Кольцо рисует срез (`parts/forms.css`), и
   хозяин у него один. Здесь меняется ЗНАЧЕНИЕ, которое он читает, - отступ, - а не сам
   рисунок. Второе правило поверх среза завело бы двух хозяев у одного кольца, и разошлись
   бы они при первом же новом срезе.

   РАДИУС НЕ ЗАДАЁТСЯ НИГДЕ И НИКОГДА: `outline` наследует скругление самого элемента, и это
   единственный способ попасть в контур любого поля, не зная его радиуса. Всякое число в
   правиле фокуса - второй хозяин у формы поля; все найденные расхождения именно оттуда.

   КНОПКИ И ССЫЛКИ НЕ ЗАДЕТЫ - решение владельца: у них кольцо остаётся снаружи, вплотную к
   заливке кнопки чёрное кольцо почти не видно. Правило называет теги полей, а не общий
   `:focus-visible`, и флажков с тумблерами не касается: там кольцо рисуется на СОСЕДНЕМ
   узле (`input:focus-visible + .sc-choice__box`), который переменную от поля не наследует. */

input,
select,
textarea,
/* Правимая область - то же поле, только без тега `input`. Кольцо у неё обязано идти по
   контуру по той же причине. Голубая рамка правимого текста сайта (`.sc-se__edit`) сюда не
   попадает: её правило ставит отступ ЧИСЛОМ, а не переменной, и остаётся как было. */
[contenteditable="true"],
/* Обёртки, несущие кольцо ЗА поле. Названы поимённо, потому что «коробка вокруг поля»
   селектором не выражается: у бегущего кольца лендинга видимая рамка на `.sc-l-ring`, у
   области загрузки мастера - на `.sc-w__drop`, а сами поля внутри кольца не рисуют вовсе
   (`.sc-w__area:focus{outline:0}`). Что список не отстанет, сторожит проверка набора. */
.sc-l-ring,
.sc-w__drop {
  --sc-focus-ring-offset: 0px;
}

/* ПОЛЕ ТЕЛЕФОНА: ОТСТУП СНИМАЕТСЯ ВЕСОМ, А НЕ ПОРЯДКОМ.

   `intl-tel-input` приносит своё `.iti__tel-input:focus{outline-offset:1px}` - вес (0,2,0),
   ровно как у нашего правила из `parts/forms.css`, и подключается ПОЗЖЕ него, поэтому
   выигрывает. Замерено живьём: у поля имени отступ стал 0, у телефона остался 1px при
   правильно посчитанной переменной.

   Спорить порядком подключения нельзя: лист библиотеки приходит по условию страницы, и
   порядок разошёлся бы на первом же экране, где условие другое. Поэтому селектор назван
   так, чтобы весить (0,3,0) - он выигрывает независимо от очереди.

   Правило нужно и на сайтах клиентов, когда библиотека приедет туда: код страны стоит
   ВНУТРИ поля (`separateDialCode`), то есть кольцо охватывает его само - требование
   владельца «код страны тоже находится внутри фокусного состояния» держится этим, а не
   вторым кольцом на обёртке. */

.iti .iti__tel-input:focus,
.iti .iti__tel-input:focus-visible {
  outline-offset: 0;
}

/* КОЛЬЦО ФОКУСА ИДЁТ ВОКРУГ ВСЕЙ КОРОБКИ ПОЛЯ, А НЕ ВОКРУГ ТЕКСТА ВНУТРИ НЕЁ.

   Требование владельца 21.09.2026, со снимком строки поиска клиентов: «рамка, внутри
   которой есть иконка увеличительного стекла и какой-то текст... в состоянии фокуса рамка
   должна быть выделена вокруг всего этого объекта, а она сейчас выделена только вокруг
   текста». Объявлено ШИРЕ снимка: «таких ситуаций по всему сайту огромное множество».

   ПОЧЕМУ ПРИЗНАК, А НЕ СЕЛЕКТОР ПО СТРУКТУРЕ. Выше в этом же файле записано честно:
   «коробка вокруг поля селектором не выражается», и список обёрток назван поимённо. Ровно
   этот список и отстал - строки поиска клиентов в нём нет, что владелец и увидел. Но
   заменить его `:has(input)` нельзя: под такое правило попадает и форма отбора, где поля
   лежат без общей рамки, и кольцо охватило бы половину экрана.

   Разница между «коробкой» и «просто формой с полем» - ВИЗУАЛЬНАЯ: у коробки своя рамка и
   свой фон. CSS такого вопроса не задаёт, а разметка знает ответ - поэтому коробка говорит
   о себе сама, одним признаком. Забытый признак виден глазом в тот же миг: кольца нет там,
   где рамка есть.

   ПОЛЕ ВНУТРИ КОРОБКИ СВОЕГО КОЛЬЦА НЕ РИСУЕТ - иначе колец стало бы два, вложенных. Вес
   селектора поэтому выше, чем у правила среза (0,2,0 против 0,1,1 у `.sc-input`).

   КЛИК ПО ЛЮБОМУ МЕСТУ КОРОБКИ ставит каретку в поле - это вторая половина требования, и
   она живёт в `cabinet.js`: разметке для неё пришлось бы стать `<label>` везде, а `<form>`
   и `<label>` вложить друг в друга нельзя. */

/* Отступ - НОЛЬ ЧИСЛОМ, а не переменной: переменная здесь читала отступ кабинета по
   умолчанию (3px), и кольцо стояло над рамкой коробки, а не на ней - найдено 02.10.2026 при
   сверке всех составных полей. Объявить переменной ноль на самой коробке нельзя: её
   унаследовали бы кнопки внутри коробки, а у кнопок кольцо остаётся снаружи. */
[data-sc-box]:focus-within {
  outline: var(--sc-focus-ring-w, 2px) solid var(--sc-focus-ring, #1f6feb);
  outline-offset: 0;
}

/* ВЕС ПОДНЯТ ПОВТОРОМ ПРИЗНАКА, И ЭТО НЕ УКРАШЕНИЕ - ЗАМЕР.

   Раздел кабинета живёт внутри оболочки `.sg`, а `seo.css` объявляет
   `.sg input:focus-visible{outline:...}` весом (0,2,0) и подключается ПОЗЖЕ этого файла.
   При равном весе выигрывает поздний: замерено живьём - кольцо появилось и на коробке, и
   на поле сразу, то есть стало ДВОЙНЫМ, хуже прежнего.

   Спорить порядком подключения нельзя: листы приходят по условию экрана. Поэтому признак
   назван дважды - (0,3,0), - и правило выигрывает независимо от очереди. Тем же приёмом и
   по тому же доводу выше решён спор с листом `intl-tel-input`. */

[data-sc-box][data-sc-box] :is( input, textarea, select ):focus,
[data-sc-box][data-sc-box] :is( input, textarea, select ):focus-visible {
  outline: none;
}

/* ПОДЧЁРКИВАНИЯ НЕТ У ОРГАНОВ, И ЕСТЬ У ССЫЛОК В ТЕКСТЕ.

   Требование владельца 21.09.2026, со снимками крестика, кнопки «Scan again» и пунктов
   чеклиста: «не должно быть вот таких вот подчёркиваний... по всему сайту я вижу у
   элементов, у которых подчёркиваний вообще быть не должно, они есть».

   ОТКУДА ОНИ БЕРУТСЯ. Никакое наше правило их не ставит: подчёркивает сам браузер, всякий
   `<a href>`. А кнопкой в кабинете сплошь и рядом работает именно ссылка - переход не
   выдумывается скриптом, он настоящий, и это записанное правило проекта. Поэтому кнопка,
   пункт списка и крестик приезжают с подчёркиванием «бесплатно».

   ПРИЗНАК РАЗЛИЧЕНИЯ - НАЛИЧИЕ КЛАССА, и это не уловка, а замер. Обойдены экраны кабинета и
   правовые страницы: у ВСЕХ двадцати двух подчёркнутых органов раздела класс есть, у всех
   двадцати шести ссылок внутри текста политики - нет ни одного. Оформленная ссылка - это
   орган; голая - это ссылка в предложении, и подчёркивание ей нужно: без него читатель не
   отличит её от обычного слова.

   Список имён тут не заводится намеренно: он устаревал бы на каждой новой кнопке, а правило
   по наличию класса не устаревает никогда.

   ССЫЛКЕ В ТЕКСТЕ, У КОТОРОЙ КЛАСС ВСЁ ЖЕ ЕСТЬ, подчёркивание возвращается признаком
   `data-sc-underline` - на сегодня таких нет ни одной, но выход объявлен заранее. */

a[class] {
  text-decoration: none;
}

a[class][data-sc-underline] {
  text-decoration: underline;
}

/* КНОПКА НЕ ПОДЧЁРКИВАЕТСЯ НИКОГДА - продолжение того же требования владельца 21.09.2026.

   Ссылки он закрыл правилом выше, и осталось две кнопки, которым подчёркивание рисует кит:
   «Learn more» и «View all» (`.sg-lnk` в зеркале SEO). Владелец сказал убрать и их.

   ПОЧЕМУ НЕ ПРАВКОЙ ЗЕРКАЛА. `seo.css` собирается прогоном из кита и руками не правится;
   отступление пришлось бы объявлять в инструменте сборки, и оно осталось бы местным - на
   следующей такой кнопке в другом разделе всё повторилось бы. Правило здесь общее.

   ВЕС ПОДНЯТ ПОВТОРОМ КЛАССА по той же причине, что и у полей выше: `.sg-lnk` весит (0,1,0)
   и приезжает ПОЗЖЕ этого файла, то есть при равном весе выигрывает. Повтор даёт (0,2,0).

   `<a>` здесь не упомянут намеренно: ссылки закрыты правилом выше, и второй хозяин у одного
   вида разошёлся бы с первым при первой правке. */

button[class][class] {
  text-decoration: none;
}
