/* Оформление W1: design.css несёт словарь и базовые правила страницы платформы (заказ Design,
   KisaPs/Planville#113 -> #114) — подключён первым стилем в App.razor. Здесь — то, что design.css
   не знает: своя раскладка (.pv-main, узкий экран, формы кабинета). Цветовых литералов и своего
   @media (prefers-color-scheme) в файле больше нет (заказ №114, пункт 3 — «Литералы»): второго
   списка цветов у платформы нет (docs/brand/adoption.md §5 в Center), палитра — design.css.

   ЧЕГО ЭТОТ ФАЙЛ БОЛЬШЕ НЕ ПИШЕТ (adoption.md §1, «Чего хост больше не пишет сам») — сняты этим PR:
   body{margin/background/color/font} (design.css: --ds-bg/--ds-text/--ds-font), цвет голой <a>
   (design.css: --ds-accent), .pv-header* (шапка теперь PlatformHeader, MainLayout.razor — класс
   .ds-top). Своего :focus-visible/h1-h3 здесь не было и не заводилось, снимать нечего. */

/* Две заплатки на чужой пакет, стоявшие здесь для Center.Design 0.31.24 (.ds-theme-menu игнорировал
   [hidden]; теснота шапки на 390 из-за .ds-who), сняты этим PR — обе исправлены апстримом:
   KisaPs/Center#844 и #847, выпущены пакетом 0.31.26 (приёмка PR #116, живая проверка дизайнера
   на стенде, 2026-09-19). Комментарии с разбором причины и замерами — в истории git на строках,
   которые их держали (git blame/log app.css вокруг PR #116, #843). Здесь заплаток больше нет. */

/* СЛОВАРЬ (заказ №114, пункт 2; docs/brand/adoption.md §3 в Center): кнопки, поля ввода, плашки
   состояния и уведомления переведены на .ds-btn/.ds-input/.ds-label/.ds-badge/.ds-notice прямо в
   разметке страниц (Projects/Project/Floor/CopyFloor/PurgeFloor/PurgeProject.razor) — здесь снята
   их прежняя копия: .pv-complaint (→ .ds-notice.ds-tone-danger), .pv-floors__badge
   (→ .ds-badge.ds-tone-accent), .pv-projects__state/.pv-floors__state (→ .ds-badge.ds-tone-danger).
   Раздел корзины (.pv-trash) остался СВОИМ именем — пунктирная граница у него не входит ни в одно
   из шести имён словаря, — но занял место ВНУТРИ карточки (.ds-panel): коробку, тень и заливку
   теперь даёт пакет, здесь только пунктир и верхний отступ. Своё имя — .pv-projects__purge/
   .pv-floors__purge (цветная ссылка на необратимое удаление) и .pv-purge__cost — в словаре нет
   ни ссылки такого рода, ни списка цены: седьмое имя заводится заказом, а не подстановкой
   похожего. MarkSrc/иконки вкладки — отдельно, в App.razor и MainLayout.razor. */

/* Своих цветовых переменных здесь больше нет: --pv-ink/--pv-paper не читал никто (мертвы с PR
   #116 — body ушёл на design.css: --ds-bg/--ds-text), а --pv-line/--pv-accent, которые
   действительно использовались, заменены на var(--ds-line)/var(--ds-accent) прямо в местах
   употребления — вторая тёмная тема своими значениями (adoption.md §5, «Тёмная тема снимается
   своя») не заводится, обе схемы несёт пакет. */
:root {
    color-scheme: light dark;
}

.pv-skip {
    position: absolute;
    left: -9999px;
}

.pv-skip:focus {
    position: static;
    display: inline-block;
    padding: 0.5rem 1rem;
}

.pv-main {
    max-width: 62rem;
    margin: 0 auto;
    padding: 1.5rem 1.25rem 3rem;
    /* Длинные значения без пробелов — имя проекта, адрес, идентификатор — иначе задают ширину колонки
       самым длинным словом, и страница едет вбок на телефоне. */
    overflow-wrap: anywhere;
}

/* Строка плашки сборки над подвалом платформы (PlatformFooter): та же колонка, что и у содержимого. Ширина повторена, а не унаследована,
   намеренно — .pv-main задаёт ещё и вертикальные отступы содержимого, которые плашке не нужны;
   разъедься эти две ширины, плашка на телефоне уехала бы вбок вместе со своим длинным номером. */
.pv-build {
    max-width: 62rem;
    margin: 0 auto;
    padding: 0 1.25rem 1.5rem;
    overflow-wrap: anywhere;
}

/* УЗКИЙ ЭКРАН: ОБОЛОЧКА УСТУПАЕТ МЕСТО СОДЕРЖИМОМУ.

   Замерено живым Chromium с эмуляцией телефона на СВОЕЙ прежней шапке (.pv-header): она занимала
   121 пкс — три строки, — а отступ колонки добавлял 24 сверху; на странице редактора это половина
   того, что стои́т над чертежом. Ничего не убрано: ссылки, имя вошедшего и выход остаются на месте.

   ШАПКА С #114 — PlatformHeader (.ds-top), и её узкий бюджет — забота design.css, не этого файла:
   правила .pv-header/.pv-header__user, писавшие обрезку имени и тесноту полосы для своей разметки,
   сняты вместе с самой разметкой (MainLayout.razor). Правило ниже — про то, что своим остаётся:
   колонка содержимого (.pv-main) на узком экране теснее, а не про высоту шапки. Живой бюджет холста
   над чертежом стережёт PlanNarrowScreenLiveTests, а не число здесь.

   ЗАМЕР ЭМУЛЯЦИИ НЕ 390×844, А ЧТО-ТО ШИРЕ — тоже прежний урок, полезный и для PlatformHeader: имя
   вошедшего без пробелов раздвигало видовой экран у Chromium на телефоне (сам расширял и уменьшал
   масштаб), пока .pv-header__user не резал его многоточием. design.css несёт то же правило для
   .ds-who — тем же правилом (`text-overflow: ellipsis`, замерено в design.css). PlatformHeader
   `title` на `.ds-who` не печатает: полное имя, в отличие от прежней своей разметки, подсказкой
   больше не всплывает — предел, а не довод молчать о нём. */
@media (max-width: 47rem) {
    .pv-main {
        padding: .5rem .8rem 2rem;
    }

    .pv-main > h1 {
        font-size: 1.35rem;
        margin: .3rem 0;
    }

    .pv-main > p {
        margin: .3rem 0;
    }
}

.pv-projects {
    padding-left: 1.1rem;
}

.pv-board {
    margin-top: 2rem;
    padding: 1rem 1.25rem;
    border: 1px solid var(--ds-line);
    border-radius: 0.6rem;
}

.pv-board__state {
    margin-left: 0.6rem;
    opacity: 0.8;
}

/* Кабинет: список проектов, оглавление этажей и формы правки. Оформление ровно настолько, чтобы
   строка читалась и кнопки не слипались; визуальный язык по-прежнему приезжает своим PR. */

.pv-projects__item,
.pv-floors__item {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: baseline;
    padding: 0.4rem 0;
    border-bottom: 1px solid var(--ds-line);
}

.pv-projects__name,
.pv-floors__name {
    font-weight: 600;
    margin-right: auto;
}

.pv-floors__item--current {
    /* Текущий этаж отмечен И полосой, И словом «текущий» рядом: цвет один остался бы незаметен
       тому, кто его не различает. */
    border-left: 3px solid var(--ds-accent);
    padding-left: 0.5rem;
}

.pv-form {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: baseline;
    margin: 1rem 0;
}

.pv-form--inline {
    margin: 0;
}

/* Коробку, тень и заливку несёт .ds-panel (разметка); здесь — только то, что делает корзину
   корзиной на глаз: пунктир вместо сплошной линии .ds-panel, и свой верхний отступ от списка выше. */
.pv-trash {
    margin-top: 2rem;
    border-style: dashed;
}

/* Окончательное удаление — ССЫЛКА, и выглядит она НЕ как «Восстановить» рядом. Совпади они по
   виду — вернулась бы ровно та беда, ради которой заведён отдельный экран: необратимое действие,
   отличимое от обратимого только надписью. */
.pv-projects__purge,
.pv-floors__purge {
    font-size: 0.9rem;
    color: var(--ds-danger);
}

.pv-purge__cost {
    margin: 1rem 0;
    padding-left: 1.2rem;
}

.pv-facts dt {
    font-weight: 600;
}

.pv-facts dd {
    margin: 0 0 0.5rem;
}
.pv-copy-form { display: grid; gap: .75rem; max-width: 36rem; }

/* .ds-input/.ds-btn сами по себе дают 44 только под @media (pointer: coarse) — на обычной мыши
   это 40 (design.css: --ds-tap 32 против --ds-control 40, max() берёт большее). Строка формы
   копирования несёт поле и кнопку рядом с чекбоксами (.pv-copy-options), у которых свой класс уже
   держит палец на 44 БЕЗ оглядки на указатель — найдено живым гейтом (FloorCopyLiveTests,
   2026-09-20): без этих двух строк поле и кнопка на мыши мельче соседних чекбоксов, и единый ряд
   формы перестаёт быть единым по высоте. Отступ и шрифт поля по-прежнему несёт .ds-input; здесь —
   своя раскладка (полная ширина грида, явный box-sizing, без которых border/padding поля
   раздвинули бы колонку вбок) и палец. */
.pv-copy-form > input { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; }
.pv-copy-form > button { min-height: 44px; }
.pv-copy-options { display: grid; gap: .3rem; min-width: 0; margin: 0; }
.pv-copy-options label { display: flex; align-items: center; gap: .7rem; min-height: 44px; }
.pv-copy-options input { width: 24px; height: 24px; flex: 0 0 24px; }
