/* M12: страница модуля Blueprint в дизайн-каноне easykawa.
   Только токены styles/themes.css — литералов цвета нет. */
body.blueprint-page {
    display: flex;
    flex-direction: column;
    height: 100vh;
    margin: 0;
    background: var(--bg-secondary);
    color: var(--text-primary);
}
body.blueprint-page > header {
    flex: 0 0 auto;
}
body.blueprint-page .bp-toolbar {
    flex: 0 0 auto;
}
.bp-toolbar.ek-right-panel__split-host {
    flex-wrap: nowrap;
}
.bp-toolbar .toolbar-group {
    display: flex;
    align-items: center;
    gap: var(--app-toolbar-gap);
    flex: 0 0 auto;
}
.bp-toolbar .toolbar-divider {
    flex: 0 0 1px;
    height: 20px;
    margin-inline: var(--space-1);
    background: var(--border-primary);
}
.bp-toolbar .bp-saved-tool {
    color: var(--brand-primary-text);
}
.bp-app {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: auto;
}
.bp-body {
    flex: 1 1 auto;
    display: flex;
    position: relative;
    min-width: 0;
    min-height: 0;
    overflow: hidden;
}
.bp-canvas {
    flex: 1 1 auto;
    min-width: 0;
    position: relative;
    background: var(--bg-tertiary);
}
/* [2026-10-25] Пустой лист импорта: на бумаге — почему на ней ничего нет (файл 02-…GAS LET DOWN STATION-K02.dwg — только
   3D-тела, лист был пуст без объяснения). Надпись — на месте действия, не модалкой. Ref:
   docs/TZ_FISHBONE_CAD_IMPORT_DWG_DGN_2026-10-23.md §6.4. Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-empty-note {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    max-width: min(560px, 80%);
    padding: var(--space-4);
    color: var(--document-paper-ink);
    text-align: center;
    pointer-events: none;
}
.bp-empty-note p {
    margin: 0 0 var(--space-2);
    font-weight: 600;
}
.bp-empty-note ul {
    margin: 0;
    padding: 0;
    list-style: none;
    color: var(--document-paper-muted);
}
.bp-aside {
    position: relative;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    width: var(--ek-right-panel-width, 340px);
    flex: 0 0 auto;
    overflow: visible;
    padding: 0;
    background: var(--bg-primary);
    border-left: 1px solid var(--border-primary);
}
.bp-aside[hidden] {
    display: none;
}
.bp-aside-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    padding: var(--space-3);
}
.bp-aside.ek-right-panel--drawer {
    position: absolute;
    inset: 0 0 0 auto;
    width: 100%;
    height: 100%;
    z-index: var(--z-sticky);
}
.bp-aside h2 {
    font-size: var(--font-size-xs);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
    margin: var(--space-3, 12px) 0 var(--space-1, 4px);
}
.bp-field {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: var(--space-1);
    margin-top: var(--space-2, 8px);
    font-size: var(--font-size-xs);
    color: var(--text-secondary);
}
.bp-field .input-field {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}
.bp-layers label {
    font-size: var(--font-size-sm);
}
.bp-sheet-info {
    font-size: var(--font-size-sm);
}
.bp-statusbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    min-width: 0;
    gap: var(--space-1) var(--space-3);
    padding: var(--space-1) var(--space-3);
    font-size: var(--font-size-xs);
    color: var(--text-secondary);
    background: var(--bg-primary);
    border-top: 1px solid var(--border-primary);
}
.bp-statusbar > span {
    min-width: 0;
    overflow-wrap: anywhere;
}
.bp-statusbar .bp-file {
    color: var(--text-primary);
    font-size: var(--font-size-sm);
}
.bp-statusbar .bp-save {
    color: var(--text-secondary);
}
.bp-error {
    color: var(--color-error-text);
}
.bp-empty {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-3, 12px);
    padding: var(--space-6, 24px);
    text-align: center;
    background: var(--bg-secondary);
    color: var(--text-secondary);
}
.bp-empty.hidden {
    display: none;
}
.bp-empty h2 {
    margin: 0;
    color: var(--text-primary);
    font-size: var(--font-size-lg);
}
.bp-empty p {
    margin: 0;
    max-width: 520px;
    line-height: 1.5;
}

/* M14: поля штампа ГОСТ 2.104 в правой панели. Только токены темы. */
.bp-aside .bp-tb-row {
    display: flex;
    gap: var(--space-2, 8px);
}
.bp-aside .bp-tb-row .bp-field {
    flex: 1 1 0;
    min-width: 0;
}
.bp-aside .bp-field .input-field {
    width: 100%;
    min-width: 0;
}
.bp-aside .bp-tb-row .input-field {
    width: 100%;
}

/* M20: список листов документа. */
.bp-sheets {
    display: flex;
    flex-direction: column;
    gap: var(--space-1, 4px);
    margin-top: var(--space-1, 4px);
}
.bp-sheet-item {
    text-align: left;
    padding: var(--space-1, 4px) var(--space-2, 8px);
    border: 1px solid var(--border-primary);
    border-radius: var(--radius-sm, 4px);
    background: var(--bg-secondary);
    color: var(--text-primary);
    font: inherit;
    font-size: var(--font-size-xs);
    cursor: pointer;
    transition:
        background-color var(--transition-base),
        border-color var(--transition-base),
        color var(--transition-base);
}

.bp-sheet-item:hover:not(.is-active) {
    background: var(--bg-hover);
}

.bp-sheet-item:focus-visible {
    outline: 1px solid var(--border-hover);
    outline-offset: -1px;
    box-shadow: none;
}
.bp-sheet-item.is-active {
    border-color: var(--brand-primary);
    background: var(--brand-primary-bg);
    color: var(--brand-primary-text);
}
.bp-sheet-actions {
    display: flex;
    gap: var(--space-2, 8px);
    margin-top: var(--space-2, 8px);
    flex-wrap: wrap;
}
.bp-sheet-actions .btn {
    font-size: var(--font-size-xs);
}

/* M24: перенесено из устаревшего styles/blueprint.css (BP-06). */
/* [2026-10-24] Возвращены display:flex и align-items из blueprint.css:12 — M24 (6ae9c6579a) перенёс только gap и
   padding, без flex подписи слоёв шли сплошной строкой («0 ☑ AXE ☑ BOOM», живой импорт Liebherr-LTM1250-5.1.dwg).
   Ref: CLAUDE.md «СПИСКИ — ТОЛЬКО СТРОКАМИ». Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-layers label {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 2px 0;
}

/* [2026-10-26] Строка слоя как в AutoCAD (слово PO 2026-10-26): кнопки-иконки «глаз», «замок», «текущий», цвет и имя
   (`js/layers.js` `renderLayerPanel`). Кнопки компактнее кнопок панели инструментов; текущий слой — цвет успеха,
   недоступные (чертёж только для чтения) — приглушены. Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-layer-row {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    min-width: 0;
    font-size: var(--font-size-sm);
}
.bp-layer-row .bp-layer-button {
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
}
.bp-layer-row .bp-layer-button .material-symbols-outlined {
    font-size: 18px;
}
.bp-layer-row .bp-layer-button[data-layer-action='current'][aria-pressed='true'] {
    color: var(--color-success);
}
.bp-layer-row .bp-layer-button:disabled {
    opacity: 0.4;
    cursor: default;
}
.bp-layer-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* [2026-10-24] Полоса импорта CAD в нижней панели (BreadcrumbPath status host): текст и действия в одну строку,
   на узком экране действия переносятся под текст; без своей рамки, тени и фона (DESIGN: статус документа в нижней
   панели без отдельной карточки). Ref: docs/UX_CAD_IMPORT_EXPORT_2026-10-24.md §3.1, §3.6.
   Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-import-status {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2) var(--space-3);
    min-width: 0;
    font-size: var(--font-size-sm);
    color: var(--text-primary);
}
.bp-import-status.is-error .bp-import-status__text {
    color: var(--color-error-text);
}
.bp-import-status__text {
    min-width: 0;
    flex: 1 1 240px;
}
.bp-import-status__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}
/* [2026-10-25] Галочка «Поддерживать исходный формат при экспорте» в ряду действий полосы импорта (решение PO D1 (б)).
   Ref: docs/UX_CAD_IMPORT_EXPORT_2026-10-24.md §9. Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-import-status__keep {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    cursor: pointer;
}

/* [2026-10-24] Образец цвета слоя импорта (A5 «имена и цвета = dwg-table»): квадрат цвета слоя с рамкой токена, чтобы
   чёрный и белый слои были видны на любой теме. Ref: docs/TZ_FISHBONE_CAD_IMPORT_DWG_DGN_2026-10-23.md §10 A5.
   Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-layer-swatch {
    flex: 0 0 auto;
    width: 12px;
    height: 12px;
    border: 1px solid var(--border-color);
    border-radius: 2px;
}

/* M24: активный сохраняемый инструмент (BP-11). */
.bp-toolbar .icon-button.is-active {
    background: var(--bg-hover);
    color: var(--brand-primary);
}

/* [2026-10-27] Правка на листе импорта (Э4 ТЗ docs/TZ_CAD_EDIT_WRITEBACK_DWG_DGN_2026-10-26.md §2.3): слой подсветки выбора,
   ручки вершин и нить инструмента поверх листа (мышь не принимает); поле текста — на месте щелчка, без модалки.
   Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-edit-overlay {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 2;
}
/* [2026-10-31] Выбранная фигура — пунктиром, как выделение AutoCAD (SELECTIONEFFECT = 0), янтарным токеном: прежний
   `--brand-primary` (бирюзовый) на синем виде Blueprint почти не виден (живой снимок выбора рамкой 2026-10-31).
   Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-edit-overlay .bp-edit-selected {
    fill: none;
    stroke: var(--ann-preset-amber);
    stroke-width: 2;
    stroke-dasharray: 6 4;
}
.bp-edit-overlay .bp-edit-rubber {
    fill: none;
    stroke: var(--brand-primary);
    stroke-width: 1.5;
    stroke-dasharray: 6 4;
}
.bp-edit-overlay .bp-edit-grip {
    fill: var(--bg-primary);
    stroke: var(--brand-primary);
    stroke-width: 1.5;
}
/* [2026-10-31] Значок объектной привязки и её вид словом (ТЗ своего движка §7.2 Э9). Цвет — янтарный токен темы
   (`--ann-preset-amber`, styles/themes.css), как маркер привязки AutoCAD: виден на синем, белом и чёрном видах чертежа.
   Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-edit-overlay .bp-edit-snap {
    fill: none;
    stroke: var(--ann-preset-amber);
    stroke-width: 2;
}
.bp-edit-overlay .bp-edit-snap-label {
    fill: var(--ann-preset-amber);
    font-family: inherit;
}
/* [2026-10-31] Отслеживание (ТЗ §7.2 Э9): линия отслеживания — пунктир, захваченная привязка — малый крест, точка на
   линии — косой крест; тот же янтарный токен, что у привязок. Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-edit-overlay .bp-edit-guide {
    fill: none;
    stroke: var(--ann-preset-amber);
    stroke-width: 1;
    stroke-dasharray: 2 4;
}
/* [2026-10-31] Рамка выбора как в AutoCAD: слева направо — синяя, сплошная граница; справа налево (секущая) — зелёная,
   пунктирная; обе с полупрозрачной заливкой. Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-edit-overlay .bp-edit-window {
    fill: var(--ann-preset-blue);
    fill-opacity: 0.2;
    stroke: var(--ann-preset-blue);
    stroke-width: 1;
}
.bp-edit-overlay .bp-edit-crossing {
    fill: var(--ann-preset-green);
    fill-opacity: 0.2;
    stroke: var(--ann-preset-green);
    stroke-width: 1;
    stroke-dasharray: 6 4;
}
.bp-edit-overlay .bp-edit-track,
.bp-edit-overlay .bp-edit-guide-mark {
    fill: none;
    stroke: var(--ann-preset-amber);
    stroke-width: 1.5;
}
.bp-edit-text {
    position: absolute;
    z-index: 3;
    min-width: 160px;
    padding: var(--space-1, 4px) var(--space-2, 8px);
    font: inherit;
    color: var(--text-primary);
    background: var(--bg-primary);
    border: 1px solid var(--brand-primary);
    border-radius: 4px;
    transform: translateY(-100%);
}
/* [2026-10-29] Новый текст DGN: поле текста и поле высоты в одной рамке (importEditor.js `askNewText`, решение PO
   2026-10-29 «Вводит пользователь»). Ref: docs/TZ_CAD_EDIT_WRITEBACK_DWG_DGN_2026-10-26.md §14.
   Chat: Blueprint-app.html — продолжение работы 2026-10-23. */
.bp-edit-text--new {
    display: flex;
    gap: var(--space-1, 4px);
}
.bp-edit-text--new input {
    font: inherit;
    color: var(--text-primary);
    background: transparent;
    border: 0;
    outline: none;
}
.bp-edit-text--new .bp-edit-text__value {
    min-width: 160px;
}
.bp-edit-text--new .bp-edit-text__height {
    width: 80px;
    border-left: 1px solid var(--border-color);
    padding-left: var(--space-1, 4px);
}
