:root {
    color-scheme: light;
    --bg: #f1f4f9;
    --panel: #ffffff;
    --panel-2: #f8fafd;
    --panel-3: #eef2f7;
    --border: #cfd7e3;
    --border-soft: #dae1eb;
    --text: #1b2433;
    --muted: #607088;
    --blue: #2563eb;
    --blue-hover: #1d4ed8;
    --green: #16a34a;
    --orange: #b45309;
    --red: #dc2626;
    --purple: #7c3aed;
    --surface: #ffffff;
    --surface-color: #ffffff;
    --line-color: #dae1eb;
    --shadow: 0 16px 44px rgba(15, 23, 42, .14);
    font-family: "Segoe UI", Arial, sans-serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; background: var(--bg); color: var(--text); }
body { min-width: 320px; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 220px minmax(0, 1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; display: flex; flex-direction: column; padding: 18px 12px; background: #f8fafd; border-right: 1px solid #dae1eb; }
.brand { display: flex; align-items: center; gap: 11px; padding: 2px 8px 20px; }
.brand-mark { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; background: linear-gradient(145deg, #2563eb, #2563eb); font-weight: 800; letter-spacing: .5px; }
.brand-icon { width: 38px; height: 38px; flex: 0 0 auto; border-radius: 9px; object-fit: contain; }
.brand-icon.large { width: 58px; height: 58px; border-radius: 14px; }
.brand strong, .brand span { display: block; }
.brand span { margin-top: 2px; color: var(--muted); font-size: 12px; }
.side-nav a { display: flex; align-items: center; gap: 10px; padding: 11px 12px; border-radius: 7px; color: var(--text); text-decoration: none; }
.side-nav a.active { background: #e6effc; box-shadow: inset 3px 0 0 var(--blue); }
.nav-icon { font-size: 18px; color: #1848a4; }
.sidebar-bottom { margin-top: auto; padding: 12px 9px; color: var(--muted); font-size: 12px; }
.sidebar-bottom span, .sidebar-bottom small { display: block; }
.sidebar-bottom small { margin-top: 3px; opacity: .7; }
.main-content { min-width: 0; }

.workspace { min-height: 100vh; display: grid; grid-template-rows: auto auto auto auto auto minmax(0, 1fr) auto; padding: 14px 16px 10px; gap: 9px; }
.source-workspace { display: flex; flex-direction: column; }
.source-workspace > .content-grid { flex: 1 1 520px; }
.workspace-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.workspace-header h1 { margin: 0; font-size: 22px; font-weight: 650; }
.workspace-header p { margin: 3px 0 0; color: var(--muted); font-size: 13px; }
.mode-badge { padding: 5px 9px; border: 1px solid #b5d1ff; border-radius: 5px; color: #1848a4; background: #e6effc; font-size: 11px; font-weight: 700; letter-spacing: .12em; }

.toolbar, .filterbar, .tabs, .statusbar { display: flex; align-items: center; gap: 6px; background: var(--panel); border: 1px solid var(--border-soft); }
.toolbar { flex-wrap: wrap; padding: 7px; border-radius: 6px; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 31px; padding: 6px 11px; border: 1px solid #cfd7e3; border-radius: 4px; background: #eef2f7; color: var(--text); text-decoration: none; cursor: pointer; transition: background .12s, border-color .12s; white-space: nowrap; }
.button:hover:not(:disabled):not(.disabled) { background: #e8edf5; border-color: #cfd7e3; }
.button.primary { background: #2563eb; border-color: #b5d1ff; }
.button.primary:hover:not(:disabled) { background: #2563eb; }
.button.success { background: #ecfdf3; border-color: #86efac; }
.button.warning { background: #fff7e6; border-color: #f4c56b; }
.button.danger { background: #fff1f2; border-color: #fca5a5; color: #991b1b; }
.button.small { min-height: 27px; padding: 4px 9px; font-size: 12px; }
.button:disabled, .button.disabled { opacity: .42; cursor: default; pointer-events: none; }
.local-only { margin-left: auto; }

.filterbar { padding: 7px; border-radius: 6px; flex-wrap: wrap; }
.filterbar input, .filterbar select, .form-grid input, .form-grid select, .form-grid textarea { border: 1px solid #cfd7e3; border-radius: 4px; background: #f5f7fb; color: var(--text); outline: none; }
.filterbar input:focus, .filterbar select:focus, .form-grid input:focus, .form-grid select:focus, .form-grid textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(37, 99, 235, .07); }
.search-box { min-width: 280px; flex: 1 1 320px; display: flex; align-items: center; gap: 7px; padding: 0 9px; height: 32px; border: 1px solid #cfd7e3; border-radius: 4px; background: #f5f7fb; color: var(--muted); }
.search-box input { width: 100%; border: 0; background: transparent; box-shadow: none !important; }
.filterbar > select { min-width: 150px; height: 32px; padding: 0 8px; }
.check-filter { display: flex; align-items: center; gap: 5px; padding: 0 5px; color: #435167; font-size: 13px; white-space: nowrap; }

.notice { white-space: pre-line; display: flex; justify-content: space-between; align-items: center; min-height: 34px; padding: 7px 10px; border-radius: 5px; font-size: 13px; }
.notice.ok { color: #166534; background: #ecfdf3; border: 1px solid #86efac; }
.notice.error { color: #991b1b; background: #fff1f2; border: 1px solid #fca5a5; }
.notice button { border: 0; background: transparent; color: inherit; cursor: pointer; font-size: 18px; }

.tabs { align-items: stretch; padding: 0 7px; border-radius: 6px 6px 0 0; border-bottom-color: var(--border); }
.tabs button { position: relative; padding: 10px 13px 9px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: #435167; cursor: pointer; }
.tabs button:hover { color: var(--text); }
.tabs button.active { color: var(--text); border-bottom-color: var(--blue); background: rgba(37, 99, 235, .05); }
.tabs button span { margin-left: 5px; padding: 1px 5px; border-radius: 9px; background: #eef2f7; font-size: 10px; color: #435167; }

.task-stage-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.task-stage-tabs button { min-width: 0; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 9px; padding: 9px 11px; border: 1px solid var(--border-soft); border-radius: 6px; background: #f5f7fb; color: #435167; text-align: left; cursor: pointer; }
.task-stage-tabs button:hover { border-color: #cfd7e3; background: #f3f6fb; color: var(--text); }
.task-stage-tabs button.active { border-color: #b5d1ff; background: linear-gradient(135deg, #e6effc, #e6effc); color: var(--text); box-shadow: inset 3px 0 var(--blue); }
.task-stage-tabs button > span:nth-child(2) { min-width: 0; }
.task-stage-tabs strong, .task-stage-tabs small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.task-stage-tabs strong { font-size: 13px; }
.task-stage-tabs small { margin-top: 2px; color: var(--muted); font-size: 10px; }
.task-stage-tabs b { min-width: 24px; padding: 3px 6px; border-radius: 12px; background: #eef2f7; color: #1848a4; text-align: center; font-size: 10px; }
.task-stage-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 6px; background: #eef2f7; color: #1848a4; font-size: 17px; }

.content-grid { min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 310px; gap: 9px; }
.table-panel, .details-panel { min-height: 0; }
.table-panel { display: flex; min-width: 0; overflow: hidden; background: var(--panel); border: 1px solid var(--border); border-radius: 0 0 6px 6px; }
.fragment-root { min-width: 0; width: 100%; min-height: 0; display: flex; flex-direction: column; }
.table-actions { min-height: 37px; display: flex; align-items: center; gap: 6px; padding: 5px 7px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; }
.selection-count { margin-right: 4px; color: var(--muted); font-size: 12px; }
.table-action-separator { width: 1px; align-self: stretch; margin: 1px 2px; background: var(--border); }
.history-button { min-width: 82px; }
.table-scroll { min-height: 0; overflow: auto; flex: 1; scrollbar-color: #cfd7e3 #dae1eb; }
.data-table { width: 100%; min-width: 900px; border-collapse: separate; border-spacing: 0; font-size: 12px; }
.data-table.dense { min-width: 1800px; }
.data-table th, .data-table td { padding: 6px 8px; border-right: 1px solid #dae1eb; border-bottom: 1px solid #dae1eb; text-align: left; vertical-align: top; }
.data-table th { white-space: nowrap; }
.data-table td { white-space: normal; overflow-wrap: anywhere; word-break: break-word; line-height: 1.35; }
.data-table th { position: sticky; top: 0; z-index: 2; background: #eef2f7; color: #1b2433; font-weight: 600; box-shadow: inset 0 -1px rgba(15, 23, 42, .16); }
.data-table tbody tr { background: #f5f7fb; cursor: default; }
.data-table tbody tr:nth-child(even) { background: #f3f6fb; }
.data-table tbody tr:hover { background: #e6effc; }
.data-table tbody tr.selected { background: #e6effc; }
.data-table tbody tr.confirmed { box-shadow: inset 3px 0 rgba(22, 163, 74, .16); }
.data-table tbody tr.has-change td:first-child { box-shadow: inset 3px 0 rgba(180, 83, 9, .16); }
.data-table tbody tr.has-remark td:nth-child(2) { color: #92400e; }
.strong-cell { color: #1848a4; font-weight: 600; }
.old-value { color: #991b1b; max-width: 300px; overflow: hidden; text-overflow: ellipsis; }
.new-value { color: #166534; max-width: 300px; overflow: hidden; text-overflow: ellipsis; }
.status-pill, .row-state, .change-type, .severity { display: inline-flex; align-items: center; min-height: 20px; padding: 2px 7px; border: 1px solid; border-radius: 10px; font-size: 11px; white-space: nowrap; }
.blue { color: #1848a4; background: #e6effc; border-color: #b5d1ff; }
.green { color: #166534; background: #ecfdf3; border-color: #86efac; }
.orange { color: #92400e; background: #fff7e6; border-color: #f4c56b; }
.red { color: #991b1b; background: #fff1f2; border-color: #fca5a5; }
.purple { color: #6d28d9; background: #eef2f7; border-color: #cfd7e3; }
.gray { color: #435167; background: #eef2f7; border-color: #cfd7e3; }
.critical { color: #1b2433; background: #dc2626; border-color: #fca5a5; }
.empty-state { display: grid; place-items: center; min-height: 180px; padding: 24px; color: var(--muted); text-align: center; }

.details-panel { overflow: auto; display: flex; flex-direction: column; gap: 9px; }
.detail-card { background: var(--panel); border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.detail-card-title { display: flex; justify-content: space-between; align-items: center; padding: 9px 11px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; }
.detail-card-title h3 { margin: 0; font-size: 13px; }
.detail-card-title span { color: var(--muted); font-size: 11px; }
.detail-card dl { margin: 0; display: grid; grid-template-columns: 105px minmax(0, 1fr); font-size: 12px; }
.detail-card dt, .detail-card dd { margin: 0; padding: 6px 9px; border-bottom: 1px solid #dae1eb; }
.detail-card dt { color: var(--muted); background: #f3f6fb; }
.detail-card dd { min-width: 0; overflow-wrap: anywhere; }
.detail-card-hint { margin: 0; padding: 8px 10px; color: var(--muted); font-size: 11px; border-top: 1px solid var(--border-soft); background: #f3f6fb; }
.source-text { max-height: 110px; overflow: auto; white-space: pre-wrap; }
.empty-card { padding: 20px 11px; color: var(--muted); font-size: 12px; }
.version-list { display: flex; flex-direction: column; gap: 4px; padding: 8px; }
.version-list button { display: grid; grid-template-columns: 32px 1fr auto; align-items: center; gap: 7px; padding: 7px; border: 1px solid #cfd7e3; border-radius: 4px; background: #f3f6fb; color: var(--text); text-align: left; cursor: pointer; }
.version-list button:hover, .version-list button.active { border-color: #b5d1ff; background: #e6effc; }
.version-list small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); }
.version-list b { color: var(--green); }

.statusbar { min-height: 28px; padding: 5px 8px; border-radius: 5px; flex-wrap: wrap; color: #435167; font-size: 11px; }
.statusbar span:not(:last-child)::after { content: ""; display: inline-block; height: 12px; margin-left: 9px; border-right: 1px solid #cfd7e3; vertical-align: -2px; }

.modal-backdrop { position: fixed; z-index: 100; inset: 0; display: grid; place-items: center; padding: 20px; background: rgba(27, 36, 51, .42); backdrop-filter: blur(2px); }
.modal { width: min(680px, 100%); max-height: calc(100vh - 40px); overflow: auto; border: 1px solid #cfd7e3; border-radius: 7px; background: #f3f6fb; box-shadow: var(--shadow); }
.modal.compact { width: min(480px, 100%); }
.modal.wide { width: min(920px, 100%); }
.modal-header { position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between; padding: 11px 14px; border-bottom: 1px solid var(--border); background: #f3f6fb; }
.modal-header h2 { margin: 0; font-size: 16px; }
.modal-header button { width: 28px; height: 28px; border: 0; background: transparent; color: var(--muted); cursor: pointer; font-size: 20px; }
.form-grid { display: grid; grid-template-columns: 1fr; gap: 11px; padding: 15px; }
.form-grid.two-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.form-grid.three-columns { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.form-grid label { display: flex; flex-direction: column; gap: 5px; color: #435167; font-size: 12px; }
.form-grid input, .form-grid select, .form-grid textarea { width: 100%; min-height: 34px; padding: 7px 8px; }
.form-grid textarea { min-height: 76px; resize: vertical; }
.form-grid .full { grid-column: 1 / -1; }
.form-grid .span-two { grid-column: span 2; }
.file-chip { margin: -3px 15px 0; padding: 7px 9px; border: 1px solid #b5d1ff; border-radius: 4px; background: #e6effc; color: #1848a4; font-size: 12px; }
.modal-actions { position: sticky; bottom: 0; display: flex; justify-content: flex-end; gap: 7px; padding: 10px 14px; border-top: 1px solid var(--border); background: #f3f6fb; }
.error-panel { min-height: 100vh; }

@media (max-width: 1050px) {
    .app-shell { grid-template-columns: 64px minmax(0, 1fr); }
    .sidebar { padding: 14px 8px; align-items: center; }
    .brand { padding: 0 0 18px; }
    .brand > div:last-child, .side-nav a span:last-child, .sidebar-bottom { display: none; }
    .side-nav a { justify-content: center; width: 46px; }
    .content-grid { grid-template-columns: minmax(0, 1fr) 270px; }
}

@media (max-width: 760px) {
    .app-shell { display: block; }
    .sidebar { position: static; width: 100%; height: 54px; flex-direction: row; justify-content: space-between; padding: 7px 10px; border-right: 0; border-bottom: 1px solid #dae1eb; }
    .brand { padding: 0; }
    .brand-mark { width: 36px; height: 36px; }
    .side-nav a { width: auto; padding: 8px 11px; }
    .side-nav a span:last-child { display: inline; }
    .workspace { min-height: calc(100vh - 54px); padding: 10px 8px 8px; }
    .workspace-header p { display: none; }
    .toolbar { overflow-x: auto; flex-wrap: nowrap; }
    .toolbar .button { flex: 0 0 auto; }
    .local-only { margin-left: 0; }
    .search-box { min-width: 100%; }
    .filterbar > select { flex: 1; min-width: 135px; }
    .tabs { overflow-x: auto; }
    .tabs button { flex: 0 0 auto; }
    .task-stage-tabs { grid-template-columns: minmax(0, 1fr); }
    .task-stage-tabs button { padding: 7px 9px; }
    .content-grid { display: block; min-height: 500px; }
    .table-panel { min-height: 470px; }
    .details-panel { margin-top: 9px; max-height: none; }
    .form-grid.two-columns, .form-grid.three-columns { grid-template-columns: 1fr; }
    .form-grid .full, .form-grid .span-two { grid-column: auto; }
    .modal-backdrop { padding: 8px; }
    .modal { max-height: calc(100vh - 16px); }
    .work-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); overflow-x: auto; }
    .work-summary > div { min-width: 130px; }
    .work-summary-note { grid-column: 1 / -1; min-width: 100% !important; }
    .work-filterbar { overflow: visible; flex-wrap: wrap; }
    .work-filterbar .button { flex: 1 1 auto; }
    .table-actions { overflow-x: auto; }
    .table-actions > * { flex: 0 0 auto; }
}

.settings-list { display: grid; gap: 1px; padding: 14px; }
.settings-list > div { display: grid; grid-template-columns: 145px minmax(0,1fr); gap: 10px; padding: 9px; background: #f3f6fb; border-bottom: 1px solid #dae1eb; }
.settings-list span { color: var(--muted); }
.settings-list code { white-space: normal; overflow-wrap: anywhere; color: #1848a4; }

.content-grid.no-details { grid-template-columns: minmax(0, 1fr); }

.data-layout { min-height: 0; flex: 1; display: grid; grid-template-columns: 220px minmax(0, 1fr); }
.structure-panel { min-height: 0; overflow: auto; padding: 7px; border-right: 1px solid var(--border-soft); background: #f5f7fb; }
.structure-title { position: sticky; top: 0; z-index: 1; margin: -7px -7px 6px; padding: 9px 10px; background: #f3f6fb; color: #1b2433; font-size: 12px; font-weight: 600; }
.structure-panel button { display: block; width: 100%; margin: 0 0 3px; padding: 7px 8px; overflow: hidden; border: 1px solid transparent; border-radius: 4px; background: transparent; color: #435167; text-align: left; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.structure-panel button:hover { background: #f3f6fb; color: #1b2433; }
.structure-panel button.active { border-color: #b5d1ff; background: #e6effc; color: #1b2433; }
.data-table-area { min-width: 0; min-height: 0; display: flex; flex-direction: column; }
.mobile-structure-picker { display: none; }
@media (max-width: 900px) {
    .data-layout { grid-template-columns: minmax(0, 1fr); }
    .structure-panel { display: none; }
    .mobile-structure-picker { display: flex; align-items: center; gap: 8px; padding: 7px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; color: var(--muted); font-size: 11px; }
    .mobile-structure-picker select { min-width: 0; flex: 1; height: 34px; padding: 5px 7px; border: 1px solid #cfd7e3; border-radius: 4px; background: #f8fafd; color: var(--text); }
}

.work-board { min-height: 0; flex: 1 1 520px; display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; gap: 9px; }
.work-summary { display: grid; grid-template-columns: repeat(3, minmax(130px, 1fr)) minmax(260px, 2fr); gap: 7px; }
.work-summary > div { min-width: 0; padding: 10px 12px; border: 1px solid var(--border-soft); border-radius: 6px; background: linear-gradient(145deg, #f3f6fb, #f5f7fb); }
.work-summary span { display: block; color: var(--muted); font-size: 10px; }
.work-summary strong { display: block; margin-top: 4px; color: #1848a4; font-size: 20px; }
.work-summary-note { border-color: #b5d1ff !important; background: linear-gradient(145deg, #e6effc, #e6effc) !important; }
.work-summary-note p { margin: 5px 0 0; color: #1848a4; font-size: 11px; line-height: 1.4; }
.work-filterbar { flex-wrap: nowrap; }
.work-table-panel { min-height: 0; border-radius: 6px; }
.work-data-table { min-width: 1900px; }
.work-document-number { display: block; margin-bottom: 2px; color: #1848a4; font-size: 9px; font-weight: 500; }
.work-version { color: #1848a4; font-weight: 600; }
.work-empty { gap: 7px; }
.work-empty strong { color: #1848a4; font-size: 14px; }
.work-empty span { max-width: 520px; }

.resizable-table { table-layout: fixed; }
.resizable-table th { position: sticky; overflow: hidden; text-overflow: ellipsis; }
.column-resizer { position: absolute; top: 0; right: -3px; width: 7px; height: 100%; cursor: col-resize; touch-action: none; user-select: none; }
.column-resizer:hover { background: rgba(37, 99, 235, .13); }

/* Authentication, navigation, chat and developer tools */
.startup-screen { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: 14px; color: var(--muted); }
.brand-mark.large { width: 58px; height: 58px; border-radius: 14px; font-size: 20px; }
.login-page { min-height: 100vh; display: grid; place-items: center; padding: 18px; background: radial-gradient(circle at 50% 20%, #e6effc 0, #f8fafd 48%, #f8fafd 100%); }
.login-card { width: min(430px, 100%); padding: 24px; border: 1px solid #cfd7e3; border-radius: 10px; background: #f5f7fb; box-shadow: var(--shadow); }
.login-brand { display: flex; align-items: center; gap: 14px; margin-bottom: 22px; }
.login-brand h1 { margin: 0; font-size: 25px; }
.login-brand p { margin: 3px 0 0; color: var(--muted); }
.login-fields { display: grid; gap: 13px; }
.login-fields label { display: grid; gap: 6px; color: #435167; font-size: 13px; }
.login-fields input { min-height: 40px; width: 100%; padding: 8px 10px; border: 1px solid #cfd7e3; border-radius: 5px; background: #f8fafd; color: var(--text); outline: 0; }
.login-fields input:focus { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(37, 99, 235, .08); }
.password-field { position: relative; display: block; width: 100%; }
.password-field input { padding-right: 43px !important; }
.password-field button { position: absolute; top: 50%; right: 4px; width: 34px; height: 30px; padding: 0; transform: translateY(-50%); border: 0; border-radius: 4px; background: transparent; color: #435167; cursor: pointer; }
.password-field button:hover { background: #eef2f7; }
.login-button { width: 100%; min-height: 40px; margin-top: 16px; }
.login-error { margin-top: 13px; padding: 9px 10px; border: 1px solid #fca5a5; border-radius: 5px; background: #fff1f2; color: #991b1b; font-size: 13px; }
.login-footer { margin-top: 18px; padding-top: 13px; border-top: 1px solid #cfd7e3; color: var(--muted); font-size: 11px; line-height: 1.5; }
.login-note { display: grid; gap: 4px; margin-bottom: 14px; padding: 10px; border-radius: 5px; font-size: 12px; }
.login-note span { color: #435167; }
.warning-note { border: 1px solid #f4c56b; background: #fff7e6; }

.side-nav { display: grid; gap: 4px; }
.side-nav button { width: 100%; display: flex; align-items: center; gap: 10px; padding: 11px 12px; border: 0; border-radius: 7px; background: transparent; color: var(--text); text-align: left; cursor: pointer; }
.side-nav button:hover { background: #f5f7fb; }
.side-nav button.active { background: #e6effc; box-shadow: inset 3px 0 0 var(--blue); }
.nav-group { padding: 3px 0 5px; }
.nav-group-title { display: flex; align-items: center; gap: 10px; padding: 8px 12px 5px; color: #435167; font-size: 13px; }
.side-nav button.sub { min-height: 31px; padding: 7px 10px 7px 42px; color: #435167; font-size: 12px; }
.side-nav button.sub.active { color: #1b2433; }
.nav-group > button:first-child { position: relative; }
.nav-chevron { margin-left: auto; color: var(--muted); font-size: 10px; font-style: normal; }
.nav-unread, .unread-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 10px; background: #2563eb; color: #1b2433; font-size: 10px; line-height: 1; }
.nav-unread { margin-left: auto; }
.nav-unread + .nav-chevron { margin-left: 0; }
.nav-unread.small { min-width: 17px; height: 17px; margin-left: auto; font-size: 9px; }
.sidebar-user { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 8px 0; border-top: 1px solid #dae1eb; }
.sidebar-user strong, .sidebar-user span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-user span { margin-top: 2px; color: var(--muted); font-size: 10px; }
.sidebar-user button { width: 31px; height: 31px; flex: 0 0 auto; border: 1px solid #cfd7e3; border-radius: 4px; background: #f3f6fb; color: #435167; cursor: pointer; }
.sidebar-user button:hover { background: #eef2f7; }

.chat-workspace { grid-template-rows: auto auto minmax(0, 1fr); }
.chat-layout { min-height: 0; display: grid; grid-template-columns: 260px minmax(0, 1fr); border: 1px solid var(--border); border-radius: 7px; overflow: hidden; background: var(--panel); }
.chat-layout.single-chat { grid-template-columns: minmax(0, 1fr); }
.chat-list-panel { min-height: 0; display: flex; flex-direction: column; border-right: 1px solid var(--border); background: #f5f7fb; }
.private-user-picker { display: grid; gap: 5px; padding: 9px 10px; border-bottom: 1px solid var(--border-soft); background: #f5f7fb; }
.private-user-picker label { color: var(--muted); font-size: 10px; }
.private-user-picker select { width: 100%; min-height: 32px; padding: 5px 7px; border: 1px solid #cfd7e3; border-radius: 4px; background: #f8fafd; color: var(--text); }
.chat-list-header { min-height: 46px; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 10px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; }
.chat-list-header span { color: var(--muted); font-size: 11px; }
.mini-button { width: 28px; height: 28px; border: 1px solid #cfd7e3; border-radius: 4px; background: #eef2f7; color: #1b2433; cursor: pointer; }
.chat-list-scroll { min-height: 0; overflow: auto; flex: 1; padding: 6px; }
.chat-list-item { position: relative; width: 100%; display: grid; gap: 4px; margin-bottom: 4px; padding: 9px 10px; border: 1px solid transparent; border-radius: 5px; background: transparent; color: var(--text); text-align: left; cursor: pointer; }
.chat-list-item:hover { background: #f3f6fb; }
.chat-list-item.active { border-color: #b5d1ff; background: #e6effc; }
.chat-list-item strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.chat-list-item span { color: var(--muted); font-size: 10px; }
.chat-list-item .unread-badge { position: absolute; top: 7px; right: 7px; }
.chat-list-item em { position: absolute; bottom: 7px; right: 8px; color: #92400e; font-size: 9px; font-style: normal; }
.empty-list { padding: 20px 9px; color: var(--muted); text-align: center; font-size: 12px; }
.topic-create { display: grid; gap: 7px; padding: 8px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; }
.topic-create input { min-width: 0; padding: 7px 8px; border: 1px solid #cfd7e3; border-radius: 4px; background: #f8fafd; color: var(--text); }
.topic-create > div { display: flex; gap: 5px; }
.topic-create .button { min-height: 27px; padding: 4px 8px; font-size: 11px; }
.chat-panel { min-width: 0; min-height: 0; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; background: #f5f7fb; }
.chat-panel-header { min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 11px; border-bottom: 1px solid var(--border); background: #f3f6fb; }
.chat-panel-header strong, .chat-panel-header span { display: block; }
.chat-panel-header span { margin-top: 3px; color: var(--muted); font-size: 10px; }
.chat-header-actions { display: flex; gap: 5px; }
.chat-header-actions .button { min-height: 28px; padding: 4px 8px; font-size: 11px; }
.message-list { min-height: 0; overflow: auto; padding: 13px; }
.chat-message { position: relative; width: min(760px, 88%); margin: 0 auto 10px 0; padding: 9px 11px; border: 1px solid #cfd7e3; border-radius: 7px 7px 7px 2px; background: #f3f6fb; }
.chat-message.own { margin-left: auto; margin-right: 0; border-color: #b5d1ff; border-radius: 7px 7px 2px 7px; background: #e6effc; }
.message-meta { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; color: var(--muted); font-size: 10px; }
.message-meta strong { color: #1848a4; font-size: 11px; }
.message-meta time { margin-left: auto; }
.developer-label { padding: 1px 5px; border-radius: 8px; background: #f5f3ff; color: #6d28d9; }
.message-text { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.45; font-size: 13px; }
.message-image-link { display: block; margin-top: 8px; }
.message-image { display: block; max-width: min(100%, 680px); max-height: 480px; border: 1px solid #cfd7e3; border-radius: 5px; object-fit: contain; background: #f8fafd; }
.attachment-caption { margin-top: 4px; color: var(--muted); font-size: 10px; }
.message-actions { display: flex; gap: 8px; margin-top: 7px; }
.message-actions button { padding: 0; border: 0; background: transparent; color: #1848a4; cursor: pointer; font-size: 10px; }
.message-actions button:last-child { color: #991b1b; }
.deleted-message { color: #607088; font-style: italic; font-size: 12px; }
.message-edit { display: grid; gap: 6px; }
.message-edit textarea { min-height: 76px; padding: 7px; border: 1px solid #cfd7e3; border-radius: 4px; background: #f8fafd; color: #1b2433; resize: vertical; }
.message-edit > div { display: flex; justify-content: flex-end; gap: 5px; }
.message-edit .button { min-height: 26px; padding: 3px 8px; font-size: 11px; }
.chat-empty { display: grid; place-items: center; min-height: 150px; padding: 20px; color: var(--muted); text-align: center; }
.chat-composer { padding: 8px; border-top: 1px solid var(--border); background: #f3f6fb; }
.chat-composer textarea { width: 100%; min-height: 72px; max-height: 190px; padding: 8px 9px; border: 1px solid #cfd7e3; border-radius: 5px; background: #f8fafd; color: var(--text); resize: vertical; outline: 0; }
.chat-composer textarea:focus { border-color: var(--blue); }
.composer-actions { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
.composer-actions > span { flex: 1; color: var(--muted); font-size: 10px; }
.file-button { position: relative; overflow: hidden; }
.file-button input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.pending-attachment { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 6px; padding: 6px 8px; border: 1px solid #b5d1ff; border-radius: 4px; background: #e6effc; color: #1848a4; font-size: 11px; }
.pending-attachment button { border: 0; background: transparent; color: inherit; cursor: pointer; font-size: 17px; }

.developer-workspace { grid-template-rows: auto auto auto auto minmax(0, 1fr); }
.mode-badge.developer { border-color: #b5d1ff; background: #f5f3ff; color: #6d28d9; }
.admin-summary { display: grid; grid-template-columns: repeat(3, minmax(130px, 1fr)) minmax(260px, 2fr); gap: 7px; }
.admin-summary > div { min-width: 0; display: grid; gap: 4px; padding: 9px 11px; border: 1px solid var(--border-soft); border-radius: 5px; background: var(--panel); }
.admin-summary span { color: var(--muted); font-size: 10px; }
.admin-summary strong { font-size: 18px; }
.admin-summary code { overflow: hidden; color: #1848a4; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.admin-tabs { border-radius: 6px; }
.admin-grid { min-height: 0; display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 9px; }
.admin-card { min-width: 0; min-height: 0; border: 1px solid var(--border); border-radius: 6px; overflow: hidden; background: var(--panel); }
.admin-card-header { min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; }
.admin-card-header .button { min-height: 27px; padding: 4px 8px; font-size: 11px; }
.static-actions { position: static; }
.admin-hint { padding: 10px 13px; border-top: 1px solid var(--border-soft); color: var(--muted); font-size: 11px; line-height: 1.5; }
.user-list-card, .activity-card { display: flex; flex-direction: column; }
.admin-table-scroll { min-height: 0; overflow: auto; flex: 1; }
.admin-table { min-width: 920px; }
.activity-table { min-width: 800px; }
.disabled-row { opacity: .6; }
.inline-actions { display: flex; gap: 8px; }
.inline-actions button { padding: 0; border: 0; background: transparent; color: #1848a4; cursor: pointer; font-size: 11px; }
.inline-actions button.danger-link { color: #991b1b; }
.issued-password { display: inline-block; min-width: 72px; color: #1848a4; font-family: Consolas, monospace; }
.password-protected { color: var(--muted); font-size: 10px; }
.password-eye-inline { margin-left: 4px; padding: 2px 4px; border: 0; background: transparent; color: #1b2433; cursor: pointer; }
.storage-card { align-self: start; }
.storage-warning { margin: 0 14px 14px; padding: 10px; border: 1px solid #f4c56b; border-radius: 5px; background: #fff7e6; color: #92400e; font-size: 12px; line-height: 1.5; }

@media (max-width: 1050px) {
    .side-nav button { justify-content: center; width: 46px; }
    .side-nav button span:last-child, .nav-group-title span:last-child, .side-nav button.sub { display: none; }
    .sidebar-user > div { display: none; }
    .sidebar-user { justify-content: center; padding-left: 0; padding-right: 0; }
    .admin-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .admin-grid { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 760px) {
    .side-nav { display: flex; align-items: center; }
    .side-nav button { width: auto; min-height: 36px; padding: 8px 10px; }
    .side-nav button span:last-child { display: inline; }
    .nav-group { display: flex; padding: 0; }
    .nav-group-title { display: none; }
    .side-nav button.sub { display: inline-flex; padding: 8px 10px; }
    .sidebar-user { margin: 0 0 0 auto; padding: 0; border: 0; }
    .chat-workspace, .developer-workspace { min-height: calc(100vh - 54px); }
    .chat-layout { grid-template-columns: minmax(0, 1fr); }
    .chat-list-panel { max-height: 180px; border-right: 0; border-bottom: 1px solid var(--border); }
    .chat-panel { min-height: 520px; }
    .chat-message { width: 96%; }
    .composer-actions { flex-wrap: wrap; }
    .composer-actions > span { order: 3; flex-basis: 100%; }
    .admin-summary { grid-template-columns: minmax(0, 1fr); }
}
.load-image-button { margin-top: 8px; }
#blazor-error-ui { display: none !important; }

/* ===== v2.4: функциональные коды и формирование проектных позиций ===== */
.mode-badge.rules { border-color: #cfd7e3; background: #f3f6fb; color: #166534; }
.mode-badge.position { border-color: #f4c56b; background: #fff7e6; color: #92400e; }
.rules-workspace, .position-workspace { min-height: 100vh; }
.rules-tabs { border-radius: 6px; }
.rules-layout { min-height: 0; flex: 1; display: grid; grid-template-columns: minmax(0, 1fr) 410px; gap: 9px; }
.rules-list-card, .rule-editor-card, .position-table-card, .position-editor-card { min-width: 0; min-height: 0; border: 1px solid var(--border); border-radius: 7px; overflow: hidden; background: var(--panel); }
.rules-list-card { display: grid; grid-template-rows: auto auto minmax(0,1fr); }
.rules-toolbar { display: flex; align-items: center; gap: 7px; padding: 8px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; }
.rules-toolbar .search-box { min-width: 260px; }
.rules-summary { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1px; border-bottom: 1px solid var(--border-soft); background: #eef2f7; }
.rules-summary > div { padding: 8px 11px; background: #f5f7fb; }
.rules-summary span, .cell-subtitle { display: block; color: var(--muted); font-size: 10px; }
.rules-summary strong { display: block; margin-top: 3px; font-size: 17px; }
.rules-code-table { min-width: 1420px; }
.rules-code-table td:nth-child(5) { min-width: 260px; }
.code-chip { display: inline-flex; min-width: 44px; justify-content: center; padding: 3px 7px; border: 1px solid #b5d1ff; border-radius: 4px; background: #e6effc; color: #1848a4; font-family: Consolas, monospace; font-weight: 700; letter-spacing: .04em; }
.cell-subtitle { margin-top: 3px; }
.rule-editor-card { display: flex; flex-direction: column; }
.rule-editor-card .admin-card-header > div span { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; }
.rules-empty-card, .position-empty-card { display: grid; place-items: center; align-content: center; gap: 6px; min-height: 260px; padding: 28px; color: var(--muted); text-align: center; }
.rules-empty-card strong, .position-empty-card strong { color: var(--text); font-size: 16px; }
.rule-editor-form, .position-editor-form { min-height: 0; overflow: auto; display: grid; gap: 10px; padding: 12px; }
.rule-editor-form label, .position-editor-form label, .position-context-bar label { display: flex; flex-direction: column; gap: 5px; color: #435167; font-size: 11px; }
.rule-editor-form input, .rule-editor-form textarea, .rule-editor-form select,
.position-editor-form input, .position-editor-form textarea, .position-editor-form select,
.position-context-bar input, .position-context-bar select, .position-toolbar select { width: 100%; min-height: 34px; padding: 6px 8px; border: 1px solid #cfd7e3; border-radius: 4px; background: #f8fafd; color: var(--text); outline: none; }
.rule-editor-form textarea { min-height: 70px; resize: vertical; }
.rule-editor-form input:focus, .rule-editor-form textarea:focus, .rule-editor-form select:focus,
.position-editor-form input:focus, .position-editor-form select:focus, .position-context-bar input:focus, .position-context-bar select:focus { border-color: var(--blue); box-shadow: 0 0 0 2px rgba(37, 99, 235, .06); }
.rule-editor-form input:disabled, .rule-editor-form textarea:disabled, .rule-editor-form select:disabled { opacity: .72; color: #435167; cursor: default; }
.rule-editor-form label small, .position-editor-form label small { color: var(--muted); font-size: 9px; line-height: 1.35; }
.two-field-row { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; }
.rule-editor-actions, .position-editor-actions { display: flex; flex-wrap: wrap; gap: 7px; padding: 10px 12px; border-top: 1px solid var(--border-soft); background: #f3f6fb; }
.rule-audit { display: grid; gap: 4px; padding: 9px 12px; border-top: 1px solid var(--border-soft); color: var(--muted); font-size: 10px; }
.rule-catalog { min-height: 0; overflow: auto; flex: 1; padding: 10px; border: 1px solid var(--border); border-radius: 7px; background: var(--panel); }
.rule-hero { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 17px 19px; border: 1px solid #b5d1ff; border-radius: 8px; background: linear-gradient(135deg, #e6effc, #f3f6fb); }
.rule-hero > div { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 2px 12px; }
.rule-number { grid-row: 1 / span 2; display: grid; place-items: center; width: 46px; height: 46px; border-radius: 8px; background: #2563eb; color: white; font-size: 18px; font-weight: 800; }
.rule-hero h2 { margin: 0; font-size: 18px; }
.rule-hero code { color: #1848a4; font-size: 12px; }
.rule-hero p { max-width: 480px; margin: 0; color: #1848a4; font-size: 12px; line-height: 1.5; }
.rule-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; margin-top: 9px; }
.rule-card { display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 9px; padding: 11px; border: 1px solid var(--border-soft); border-radius: 6px; background: #f3f6fb; }
.rule-card > span { display: grid; place-items: center; align-self: start; min-height: 28px; border-radius: 5px; background: #e8edf5; color: #1848a4; font-size: 10px; font-weight: 700; }
.rule-card h3 { margin: 0; font-size: 13px; }
.rule-card p { margin: 5px 0 0; color: #435167; font-size: 11px; line-height: 1.45; }
.normative-note { display: flex; gap: 9px; margin-top: 9px; padding: 10px 12px; border: 1px solid #f4c56b; border-radius: 5px; background: #fff7e6; color: #92400e; font-size: 11px; }

.position-workspace { display: flex; flex-direction: column; gap: 9px; }
.position-context-bar, .position-toolbar { display: flex; align-items: end; gap: 7px; padding: 8px; border: 1px solid var(--border-soft); border-radius: 6px; background: var(--panel); }
.position-context-bar label:first-child { min-width: 280px; flex: 1; }
.position-context-bar label:nth-child(2) { min-width: 115px; }
.position-context-bar label { min-width: 105px; }
.position-prefix { max-width: 130px; }
.position-context-bar .button { margin-bottom: 1px; }
.position-summary { display: grid; grid-template-columns: repeat(4, minmax(105px, .7fr)) minmax(270px, 2fr); gap: 7px; }
.position-summary > div { min-width: 0; padding: 9px 11px; border: 1px solid var(--border-soft); border-radius: 6px; background: linear-gradient(145deg, #f3f6fb, #f5f7fb); }
.position-summary span { display: block; color: var(--muted); font-size: 10px; }
.position-summary strong { display: block; margin-top: 4px; font-size: 20px; }
.position-summary-wide { border-color: #b5d1ff !important; background: linear-gradient(145deg, #e6effc, #e6effc) !important; }
.position-summary-wide p { margin: 5px 0 0; color: #1848a4; font-size: 10px; line-height: 1.4; }
.position-toolbar { align-items: center; }
.position-toolbar .search-box { min-width: 320px; flex: 1; }
.position-toolbar > select { width: 150px; }
.position-layout { min-height: 0; flex: 1 1 520px; display: grid; grid-template-columns: minmax(0,1fr) 390px; gap: 9px; }
.position-table-card { display: flex; }
.position-table { min-width: 1550px; }
.position-table th:nth-child(4), .position-table td:nth-child(4) { min-width: 230px; }
.position-table th:nth-child(9), .position-table td:nth-child(9) { min-width: 300px; }
.position-table tbody tr.has-conflict { box-shadow: inset 3px 0 rgba(220, 38, 38, .16); }
.source-position-cell { color: #92400e; font-family: Consolas, monospace; }
.project-tag-cell { color: #1848a4; font-family: Consolas, monospace; letter-spacing: .02em; }
.muted-value { color: #607088; }
.input-kind { display: inline-flex; padding: 2px 6px; border: 1px solid; border-radius: 4px; font-size: 10px; white-space: nowrap; }
.position-editor-card { display: flex; flex-direction: column; }
.position-editor-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; }
.position-editor-header strong, .position-editor-header span { display: block; }
.position-editor-header > div > span { margin-top: 3px; color: var(--muted); font-size: 10px; }
.source-position-box { margin: 10px 11px 0; padding: 10px; border: 1px solid #f4c56b; border-radius: 5px; background: #f3f6fb; }
.source-position-box span { display: block; color: #92400e; font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.source-position-box strong { display: block; margin-top: 5px; color: #92400e; font-family: Consolas, monospace; font-size: 15px; }
.source-position-box p { margin: 5px 0 0; color: #435167; font-size: 10px; line-height: 1.4; }
.functional-code-meaning { display: grid; gap: 4px; padding: 8px 9px; border: 1px solid #b5d1ff; border-radius: 5px; background: #e6effc; }
.functional-code-meaning strong { color: #1848a4; font-size: 11px; }
.functional-code-meaning span { color: #1848a4; font-size: 10px; line-height: 1.35; }
.functional-code-meaning small { color: #607088; font-size: 9px; }
.accept-check { flex-direction: row !important; align-items: center; gap: 7px !important; padding: 7px 0; }
.accept-check input { width: auto !important; min-height: 0 !important; }
.tag-preview { display: grid; gap: 4px; margin: 0 11px 10px; padding: 10px; border: 1px solid #86efac; border-radius: 6px; background: #f3f6fb; }
.tag-preview.conflict { border-color: #fca5a5; background: #fff1f2; }
.tag-preview span { color: #435167; font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.tag-preview strong { color: #166534; font-family: Consolas, monospace; font-size: 19px; letter-spacing: .04em; }
.tag-preview small { color: #607088; font-size: 9px; }
.tag-preview.conflict strong, .tag-preview.conflict small { color: #991b1b; }
.position-editor-note { margin: 0 11px 11px; padding: 8px 9px; border-left: 3px solid #b5d1ff; background: #f3f6fb; color: #435167; font-size: 10px; line-height: 1.45; }

@media (max-width: 1180px) {
    .rules-layout { grid-template-columns: minmax(0,1fr) 340px; }
    .position-layout { grid-template-columns: minmax(0,1fr) 340px; }
    .position-summary { grid-template-columns: repeat(4, minmax(95px,1fr)); }
    .position-summary-wide { grid-column: 1 / -1; }
    .position-context-bar { flex-wrap: wrap; }
}

@media (max-width: 860px) {
    .rules-layout, .position-layout { grid-template-columns: minmax(0,1fr); overflow: visible; }
    .rule-editor-card, .position-editor-card { min-height: 420px; }
    .rule-card-grid { grid-template-columns: minmax(0,1fr); }
    .rule-hero { align-items: flex-start; flex-direction: column; }
    .position-context-bar, .position-toolbar { align-items: stretch; flex-wrap: wrap; }
    .position-context-bar label, .position-context-bar label:first-child, .position-context-bar label:nth-child(2) { min-width: 140px; flex: 1 1 180px; }
    .position-context-bar .button, .position-toolbar .button { flex: 1 1 auto; }
    .position-toolbar .search-box { min-width: 100%; }
    .position-summary { display: flex; overflow-x: auto; }
    .position-summary > div { min-width: 130px; }
    .position-summary-wide { min-width: 290px !important; }
}

@media (max-width: 560px) {
    .rules-summary { grid-template-columns: repeat(3, minmax(90px,1fr)); overflow-x: auto; }
    .rules-toolbar { flex-wrap: wrap; }
    .rules-toolbar .search-box { min-width: 100%; }
    .two-field-row { grid-template-columns: minmax(0,1fr); }
    .position-context-bar label { min-width: 100% !important; }
    .position-toolbar > select { width: 100%; }
}

/* Новые разделы не ломают мобильную боковую навигацию: кнопки можно прокрутить по горизонтали. */
@media (max-width: 760px) {
    .sidebar { overflow: hidden; }
    .side-nav { min-width: 0; overflow-x: auto; overflow-y: hidden; scrollbar-width: thin; }
    .side-nav .nav-button { flex: 0 0 auto; }
}

/* v2.4: роли, распознавание документов/узлов и мягкие состояния таблиц */
.read-only-banner { padding: 9px 12px; border: 1px solid #cfd7e3; border-radius: 6px; background: rgba(37, 99, 235, .18); color: #1848a4; font-size: 11px; }
.disabled-tab { opacity: .45; cursor: not-allowed !important; filter: grayscale(.4); }
.compact-context { display: flex; gap: 8px; align-items: center; padding: 6px 9px; border: 1px solid var(--border-soft); border-radius: 5px; background: #f3f6fb; }
.context-value { color: #1848a4; font-weight: 600; }
.activity-filters { display: grid; grid-template-columns: minmax(180px,2fr) repeat(3,minmax(125px,1fr)); gap: 7px; align-items: end; }
.role-select { min-width: 128px; }
.ip-cell { white-space: nowrap; color: #1848a4; }

.data-table tr.row-confirmed-soft > td { background-color: rgba(22, 163, 74, .06); }
.data-table tr.row-not-recognized-soft > td { background-color: rgba(180, 83, 9, .07); }
.data-table tr.row-review-soft > td { background-color: rgba(180, 83, 9, .06); }
.data-table tr.selected.row-confirmed-soft > td { background-color: rgba(22, 163, 74, .12); }
.data-table tr.selected.row-not-recognized-soft > td { background-color: rgba(180, 83, 9, .13); }
.data-table tr.selected.row-review-soft > td { background-color: rgba(180, 83, 9, .12); }
.column-filter-row input, .column-filter-row select { min-width: 72px; width: 100%; height: 25px; padding: 2px 5px; font-size: 9px; }
.column-filter-row th { padding: 3px !important; background: #f5f7fb; }
.danger-link { color: #991b1b; border: 0; background: transparent; cursor: pointer; text-decoration: underline; }

.work-node-section { display: grid; gap: 7px; }
.section-heading { display: flex; align-items: center; justify-content: space-between; }
.section-heading strong, .section-heading span { display: block; }
.section-heading span { margin-top: 2px; color: var(--muted); font-size: 10px; }
.node-card-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(260px,1fr)); gap: 7px; }
.node-summary-card { min-width: 0; padding: 10px; text-align: left; border: 1px solid var(--border-soft); border-radius: 7px; background: #f3f6fb; color: var(--text); cursor: pointer; }
.node-summary-card.confirmed { border-color: #86efac; background: rgba(22, 163, 74, .17); }
.node-summary-card.review { border-color: #f4c56b; background: rgba(180, 83, 9, .13); }
.node-summary-card.not-recognized { border-color: #fca5a5; background: rgba(220, 38, 38, .14); }
.node-summary-card.selected { box-shadow: 0 0 0 2px rgba(37, 99, 235, .16) inset; }
.node-summary-card strong, .node-summary-card small { display: block; }
.node-summary-card small { margin-top: 3px; color: var(--muted); }
.node-summary-card dl { display: grid; grid-template-columns: 86px minmax(0,1fr); gap: 3px 6px; margin: 8px 0 0; font-size: 9px; }
.node-summary-card dt { color: #607088; }
.node-summary-card dd { margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.node-card-state { float: right; padding: 2px 5px; border-radius: 4px; background: rgba(96, 112, 136, .05); color: #1848a4; font-size: 8px; text-transform: uppercase; }
.node-table { min-width: 2100px; }
.node-detail-card .source-text { white-space: pre-wrap; max-height: 180px; overflow: auto; }
.project-tag-cell { min-width: 135px; }
.work-version { white-space: nowrap; }

@media (max-width: 860px) {
    .activity-filters { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
    .node-card-grid { grid-template-columns: minmax(0,1fr); }
}

/* v2.6 — единая таблица: Excel-подобные фильтры, мультивыбор и контекстное меню */
.smart-table th { padding-right: 31px; }
.smart-table th.select-column { padding-right: 6px; width: 38px !important; min-width: 38px !important; max-width: 38px !important; text-align: center; }
.smart-table .select-cell { width: 38px; min-width: 38px; max-width: 38px; text-align: center; }
.smart-table input[data-row-select], .smart-table input[data-select-all] { width: 16px; height: 16px; accent-color: var(--blue); cursor: pointer; }
.table-filter-button { position: absolute; top: 50%; right: 8px; width: 20px; height: 22px; display: grid; place-items: center; padding: 0; transform: translateY(-50%); border: 1px solid transparent; border-radius: 4px; background: transparent; color: #607088; cursor: pointer; }
.table-filter-button:hover { border-color: #cfd7e3; background: #e8edf5; color: #1b2433; }
.table-filter-button.active { border-color: #b5d1ff; background: #e6effc; color: #1848a4; box-shadow: 0 0 0 1px rgba(37, 99, 235, .1); }
.data-table tbody tr.multi-selected > td { background-color: rgba(37, 99, 235, .16) !important; box-shadow: inset 0 1px rgba(37, 99, 235, .05); }
.data-table tbody tr.multi-selected > td:first-child { box-shadow: inset 3px 0 rgba(37, 99, 235, .16); }
.table-filter-popup, .table-context-menu { position: fixed; z-index: 10020; border: 1px solid #cfd7e3; border-radius: 8px; background: #f5f7fb; color: var(--text); box-shadow: 0 18px 48px rgba(15, 23, 42, .16); }
.table-filter-popup { width: min(380px, calc(100vw - 16px)); max-height: min(560px, calc(100vh - 16px)); display: grid; grid-template-rows: auto auto auto auto minmax(90px,1fr) auto; overflow: hidden; }
.table-filter-popup[hidden], .table-context-menu[hidden] { display: none !important; }
.table-filter-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 11px; border-bottom: 1px solid var(--border); background: #f3f6fb; }
.table-filter-head strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.table-filter-head button { width: 28px; height: 28px; border: 0; border-radius: 4px; background: transparent; color: #435167; font-size: 20px; cursor: pointer; }
.table-filter-head button:hover { background: #e8edf5; }
.table-filter-sort, .table-filter-tools { display: flex; flex-wrap: wrap; gap: 5px; padding: 7px 9px 0; }
.table-filter-sort button, .table-filter-tools button, .table-filter-footer button, .table-context-menu button { min-height: 30px; padding: 5px 9px; border: 1px solid #cfd7e3; border-radius: 4px; background: #eef2f7; color: var(--text); cursor: pointer; }
.table-filter-sort button:hover, .table-filter-tools button:hover, .table-filter-footer button:hover, .table-context-menu button:hover { background: #e8edf5; }
.table-filter-search { display: flex; align-items: center; gap: 6px; margin: 8px 9px 0; padding: 0 8px; border: 1px solid #cfd7e3; border-radius: 5px; background: #f8fafd; color: var(--muted); }
.table-filter-search input { min-width: 0; width: 100%; min-height: 34px; border: 0; outline: 0; background: transparent; color: var(--text); }
.table-filter-values { min-height: 100px; overflow: auto; margin: 8px 9px; border: 1px solid #cfd7e3; border-radius: 5px; background: #f5f7fb; }
.table-filter-value { display: grid; grid-template-columns: 22px minmax(0,1fr); align-items: start; gap: 6px; padding: 7px 8px; border-bottom: 1px solid #dae1eb; cursor: pointer; }
.table-filter-value:last-child { border-bottom: 0; }
.table-filter-value:hover { background: #f3f6fb; }
.table-filter-value input { width: 16px; height: 16px; margin-top: 1px; accent-color: var(--blue); }
.table-filter-value span { overflow-wrap: anywhere; line-height: 1.3; }
.table-filter-footer { display: flex; align-items: center; justify-content: flex-end; gap: 6px; padding: 9px; border-top: 1px solid var(--border); background: #f3f6fb; }
.table-filter-footer [data-summary] { min-width: 0; margin-right: auto; color: var(--muted); font-size: 11px; }
.table-filter-footer button.primary { border-color: #b5d1ff; background: #2563eb; }
.table-context-menu { min-width: 220px; max-width: min(320px, calc(100vw - 16px)); padding: 5px; }
.table-context-menu button { width: 100%; display: block; border-color: transparent; background: transparent; text-align: left; }
.table-context-menu button:hover { border-color: #cfd7e3; background: #eef2f7; }
.table-context-separator { height: 1px; margin: 4px 3px; background: #e8edf5; }
.smart-table-meta { display: flex; align-items: center; gap: 9px; margin-left: auto; color: var(--muted); font-size: 11px; white-space: nowrap; }

/* «Задание в работе»: один контейнер, узлы — группы строк, а не конкурирующие карточки. */
.work-board { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.work-board.work-top-both { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.work-board.work-top-one { grid-template-rows: auto minmax(0, 1fr) auto; }
.work-board.work-top-none { grid-template-rows: minmax(0, 1fr) auto; }
.work-group-header > td { position: sticky; top: 31px; z-index: 1; padding: 0 !important; border-top: 1px solid #cfd7e3; border-bottom-color: #cfd7e3 !important; background: linear-gradient(90deg,#e6effc,#f3f6fb) !important; }
.work-group-header[hidden] { display: none; }
.work-group-bar { width: 100%; display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 8px; padding: 8px 10px; border: 0; background: transparent; color: var(--text); text-align: left; cursor: pointer; }
.work-group-bar:hover { background: rgba(37, 99, 235, .05); }
.work-group-toggle { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 4px; background: #eef2f7; color: #1848a4; }
.work-group-title { min-width: 0; }
.work-group-title strong, .work-group-title small { display: block; }
.work-group-title strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.work-group-title small { margin-top: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #435167; font-size: 9px; }
.work-group-badges { display: flex; align-items: center; gap: 5px; }
.work-group-badges span { padding: 3px 6px; border: 1px solid #cfd7e3; border-radius: 10px; background: rgba(37, 99, 235, .18); color: #1848a4; font-size: 9px; white-space: nowrap; }
.work-mobile-list { display: none; }
.work-mobile-node { overflow: hidden; border: 1px solid #cfd7e3; border-radius: 8px; background: #f5f7fb; }
.work-mobile-node > summary { list-style: none; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px; padding: 11px; cursor: pointer; background: linear-gradient(135deg,#e6effc,#f3f6fb); }
.work-mobile-node > summary::-webkit-details-marker { display: none; }
.work-mobile-node > summary strong, .work-mobile-node > summary small { display: block; }
.work-mobile-node > summary small { margin-top: 4px; color: var(--muted); font-size: 10px; }
.work-mobile-node > summary span { align-self: start; padding: 3px 6px; border-radius: 10px; background: #e6effc; color: #1848a4; font-size: 9px; }
.work-mobile-rows { display: grid; gap: 7px; padding: 8px; }
.work-mobile-row { display: grid; gap: 7px; padding: 10px; border: 1px solid #cfd7e3; border-radius: 7px; background: #f5f7fb; }
.work-mobile-row.selected { border-color: #b5d1ff; box-shadow: 0 0 0 1px rgba(37, 99, 235, .11); }
.work-mobile-row-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.work-mobile-row-head strong { color: #1848a4; }
.work-mobile-row-head span { color: #1848a4; font-size: 10px; white-space: nowrap; }
.work-mobile-row p { margin: 0; color: #435167; line-height: 1.35; }
.work-mobile-row dl { display: grid; grid-template-columns: 82px minmax(0,1fr); gap: 4px 7px; margin: 0; font-size: 10px; }
.work-mobile-row dt { color: #607088; }
.work-mobile-row dd { margin: 0; overflow-wrap: anywhere; }
.work-mobile-actions { display: flex; gap: 6px; }
.work-mobile-actions .button { flex: 1; }

@media (max-width: 760px) {
    .table-filter-popup { left: 8px !important; right: 8px !important; top: auto !important; bottom: 8px !important; width: auto !important; max-height: calc(100vh - 16px); border-radius: 12px; }
    .table-context-menu { left: 8px !important; right: 8px !important; top: auto !important; bottom: 8px !important; max-width: none; border-radius: 12px; }
    .table-context-menu button { min-height: 42px; font-size: 14px; }
    .smart-table th { padding-right: 29px; }
    .table-filter-button { width: 24px; height: 26px; right: 4px; }
    .table-scroll { -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
    .data-table { font-size: 11px; }
    .data-table th, .data-table td { padding: 7px 8px; }
    .data-table th:first-child, .data-table td:first-child { position: sticky; left: 0; z-index: 3; background: inherit; }
    .data-table th:first-child { z-index: 5; background: #eef2f7; }
    .work-desktop-table { display: none; }
    .work-mobile-list { min-height: 0; display: grid; gap: 8px; overflow: auto; padding-bottom: 4px; }
    .work-board { display: flex; flex-direction: column; min-height: 0; }
    .work-summary { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .work-summary-note { grid-column: 1 / -1; }
    .work-summary > div { padding: 8px; }
    .work-summary strong { font-size: 16px; }
    .work-filterbar { align-items: stretch; }
    .work-filterbar > * { flex: 1 1 100%; }
    .smart-table-meta { width: 100%; margin-left: 0; justify-content: space-between; padding: 3px 1px; }
}

/* v2.7 — индивидуальные таблицы, скрытие столбцов, удобное редактирование и навигация */
.table-columns-popup { position: fixed; z-index: 10025; width: min(390px, calc(100vw - 16px)); max-height: min(620px, calc(100vh - 16px)); display: grid; grid-template-rows: auto auto auto minmax(120px,1fr) auto; overflow: hidden; border: 1px solid #cfd7e3; border-radius: 8px; background: #f5f7fb; color: var(--text); box-shadow: 0 18px 48px rgba(15, 23, 42, .16); }
.table-columns-popup[hidden] { display: none !important; }
.table-columns-values { min-height: 120px; overflow: auto; margin: 8px 9px; border: 1px solid #cfd7e3; border-radius: 5px; background: #f5f7fb; }
.table-columns-button { white-space: nowrap; }
.table-columns-button.active { border-color: #b5d1ff; background: #e6effc; color: #1848a4; }
.table-inline-tools { display: flex; justify-content: flex-end; gap: 6px; padding: 5px 6px; border-bottom: 1px solid var(--border-soft); background: #f5f7fb; }
.auto-grow-textarea { min-height: 76px !important; max-height: 48vh; overflow-y: auto; resize: vertical; line-height: 1.4; }
.parameter-name-editor { min-height: 110px !important; font-size: 13px; }
.edit-large-field { align-self: stretch; }
.delete-confirm-body { display: grid; gap: 8px; padding: 16px; color: #435167; }
.delete-confirm-body strong { color: #991b1b; font-size: 15px; }
.delete-confirm-body p { margin: 0; line-height: 1.5; }
.position-table-card { min-width: 0; flex-direction: column; }
.position-table-actions { flex-wrap: wrap; }
.position-row-navigation { display: flex !important; align-items: center; gap: 5px; margin-left: auto; }
.position-row-navigation .button { width: 34px; min-width: 34px; height: 30px; padding: 0; font-size: 16px; }
.position-table th:nth-child(5), .position-table td:nth-child(5) { min-width: 230px; }
.position-table th:nth-child(10), .position-table td:nth-child(10) { min-width: 300px; }
.work-group-header[data-group-collapsed="true"] { display: table-row !important; }
.work-group-header[data-group-collapsed="true"] .work-group-bar { background: linear-gradient(90deg, #e6effc, #f3f6fb); }

@media (max-width: 760px) {
    .table-columns-popup { left: 8px !important; right: 8px !important; top: auto !important; bottom: 8px !important; width: auto !important; max-height: calc(100vh - 16px); border-radius: 12px; }
    .table-columns-values { min-height: 170px; }
    .table-columns-button { min-height: 38px; }
    .modal.wide { width: 100%; max-height: calc(100vh - 16px); }
    .modal.wide .form-grid.three-columns { grid-template-columns: minmax(0,1fr); }
    .modal.wide .form-grid .span-two, .modal.wide .form-grid .full { grid-column: 1; }
    .parameter-name-editor { min-height: 150px !important; }
    .position-layout { display: flex; flex-direction: column; gap: 8px; min-height: 0; }
    .position-table-card { min-height: 300px; max-height: 46vh; }
    .position-table-card .table-scroll { min-height: 0; flex: 1; }
    .position-editor-card { min-height: auto; }
    .position-editor-header { position: sticky; top: 0; z-index: 4; display: grid; grid-template-columns: minmax(0,1fr) auto; }
    .position-editor-header > .status-pill { grid-column: 1 / -1; justify-self: start; }
    .position-row-navigation { margin-left: 0; }
    .position-row-navigation .button { width: 44px; min-width: 44px; height: 40px; font-size: 20px; }
    .position-table-actions { position: sticky; top: 0; z-index: 5; background: #f3f6fb; }
    .position-table-actions .button { flex: 1 1 130px; }
    .work-mobile-node:not([open]) > summary { border-bottom: 0; }
    .work-mobile-node > summary { min-height: 58px; }
}

/* v2.8 — шторка навигации, классическое меню и мобильная прокрутка таблиц */
.app-shell { min-height: 100dvh; display: block; }
.shell-bar { position: sticky; top: 0; z-index: 1100; height: 43px; display: flex; align-items: center; gap: 8px; padding: 0 12px; border-bottom: 1px solid #dae1eb; background: #f8fafd; box-shadow: 0 2px 8px rgba(15, 23, 42, .11); }
.shell-bar-icon { width: 23px; height: 23px; border-radius: 5px; object-fit: contain; }
.shell-bar strong { font-size: 13px; letter-spacing: .02em; }
.shell-page-label { min-width: 0; overflow: hidden; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.drawer-toggle, .drawer-close { display: grid; place-items: center; border: 0; background: transparent; color: #1848a4; cursor: pointer; }
.drawer-toggle { width: 32px; height: 32px; border-radius: 5px; font-size: 21px; }
.drawer-toggle:hover, .drawer-close:hover { background: #eef2f7; }
.drawer-close { width: 30px; height: 30px; margin-left: auto; border-radius: 5px; font-size: 21px; }
.drawer-overlay { position: fixed; z-index: 1070; inset: 43px 0 0; border: 0; background: rgba(37, 99, 235, .18); cursor: default; }
.sidebar { position: fixed; z-index: 1090; top: 43px; bottom: 0; left: 0; width: 220px; height: auto; align-items: stretch; padding: 14px 12px; overflow: hidden auto; transform: translateX(-102%); transition: transform .18s ease; box-shadow: 14px 0 32px rgba(15, 23, 42, .14); }
.app-shell.drawer-open .sidebar { transform: translateX(0); }
.sidebar .brand { width: 100%; padding: 2px 2px 15px; }
.sidebar .brand > div { display: block; min-width: 0; }
.sidebar .side-nav { width: 100%; display: grid; overflow: visible; }
.sidebar .side-nav button { width: 100%; justify-content: flex-start; }
.sidebar .side-nav button span:last-child { display: inline; }
.sidebar .side-nav button.sub { display: flex; }
.sidebar .nav-group { display: block; }
.sidebar .sidebar-user { width: 100%; }
.main-content { min-width: 0; margin-left: 0; transition: margin-left .18s ease; }

.application-menu-bar { position: relative; z-index: 30; min-height: 31px; display: flex; align-items: stretch; gap: 1px; margin: -14px -16px 0; padding: 0 7px; border-bottom: 1px solid #dae1eb; background: #f5f7fb; }
.application-menu { position: relative; }
.application-menu > summary { height: 30px; display: flex; align-items: center; padding: 0 10px; list-style: none; border: 1px solid transparent; color: #1b2433; cursor: pointer; font-size: 12px; user-select: none; }
.application-menu > summary::-webkit-details-marker { display: none; }
.application-menu > summary:hover, .application-menu[open] > summary { border-color: #cfd7e3; background: #f3f6fb; color: #1b2433; }
.application-menu-popup { position: absolute; top: calc(100% + 1px); left: 0; z-index: 40; min-width: 245px; display: grid; gap: 2px; padding: 5px; border: 1px solid #cfd7e3; border-radius: 0 0 6px 6px; background: #f3f6fb; box-shadow: 0 15px 35px rgba(15, 23, 42, .16); }
.application-menu-popup button { min-height: 31px; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 16px; padding: 5px 9px; border: 1px solid transparent; border-radius: 4px; background: transparent; color: var(--text); text-align: left; cursor: pointer; }
.application-menu-popup button:hover:not(:disabled) { border-color: #cfd7e3; background: #eef2f7; }
.application-menu-popup button:disabled { opacity: .4; cursor: default; }
.application-menu-popup small { color: var(--muted); font-size: 9px; }
.application-menu-separator { height: 1px; margin: 3px 4px; background: #eef2f7; }

.document-row-actions { display: flex; align-items: center; gap: 7px; white-space: nowrap; }
.row-action { padding: 0; border: 0; background: transparent; cursor: pointer; font-size: 10px; text-decoration: underline; }
.row-action.accept { color: #166534; }
.row-action.clarify { color: #92400e; }
.row-action.delete { color: #991b1b; }
.row-action:disabled { opacity: .38; cursor: default; text-decoration: none; }
.document-card-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; padding: 9px 10px; border-top: 1px solid var(--border-soft); }

.data-table-fragment { min-height: 0; }
.mobile-table-scroll { touch-action: pan-x pan-y; }

@media (min-width: 761px) {
    .app-shell.drawer-open .main-content { margin-left: 220px; }
    .drawer-overlay { display: none; }
}

@media (max-width: 760px) {
    .shell-bar { padding: 0 8px; }
    .shell-page-label { margin-left: auto; }
    .sidebar { top: 43px; width: min(86vw, 310px); height: auto; flex-direction: column; justify-content: flex-start; padding: 13px 11px; border-right: 1px solid #cfd7e3; border-bottom: 0; }
    .sidebar .brand { padding: 2px 2px 14px; }
    .sidebar .side-nav { display: grid; align-items: stretch; overflow: visible; }
    .sidebar .side-nav button { width: 100%; min-height: 42px; padding: 9px 11px; }
    .sidebar .nav-group { display: block; }
    .sidebar .side-nav button.sub { min-height: 36px; padding-left: 42px; }
    .sidebar .sidebar-user { margin-top: auto; padding: 10px 8px 0; border-top: 1px solid #dae1eb; }
    .sidebar .sidebar-user > div { display: block; }

    .workspace { min-height: calc(100dvh - 43px); }
    .source-workspace { height: calc(100dvh - 43px); min-height: 0; overflow: hidden; padding: 10px 8px 7px; }
    .application-menu-bar { flex: 0 0 auto; margin: -10px -8px 0; padding-left: 5px; }
    .application-menu-popup { position: fixed; top: 74px; right: 8px; left: 8px; min-width: 0; border-radius: 7px; }
    .workspace-header, .task-stage-tabs, .notice, .read-only-banner, .filterbar, .tabs, .statusbar { flex: 0 0 auto; }
    .source-workspace > .content-grid { flex: 1 1 auto; min-height: 0; }
    .content-grid { display: flex; flex-direction: column; min-height: 0; }
    .table-panel { min-height: 0; flex: 1 1 auto; overflow: hidden; }
    .fragment-root { min-height: 0; height: 100%; }
    .table-scroll { min-height: 0; flex: 1 1 auto; overflow-x: auto; overflow-y: auto; -webkit-overflow-scrolling: touch; overscroll-behavior: auto; touch-action: pan-x pan-y; }
    .table-scroll table, .table-scroll tbody, .table-scroll tr, .table-scroll td { touch-action: pan-x pan-y; }
    .column-resizer { display: none; }
    .details-panel { min-height: 0; overflow: auto; }
    .document-row-actions { gap: 10px; }
    .document-card-actions { grid-template-columns: minmax(0,1fr); }
}

/* v2.9 — компактные рабочие вкладки, независимые столбцы и пиктограмма датчика */
.compact-workspace-header { min-height: 27px; padding: 1px 0; }
.compact-workspace-header h1 { font-size: 16px; line-height: 1.2; }
.compact-workspace-header p { display: none; }
.compact-task-stage-tabs { gap: 4px; }
.compact-task-stage-tabs button { grid-template-columns: 22px minmax(0, 1fr) auto; gap: 6px; min-height: 32px; padding: 4px 8px; }
.compact-task-stage-tabs .task-stage-icon { width: 21px; height: 21px; border-radius: 4px; background: transparent; font-size: 14px; }
.compact-task-stage-tabs strong { font-size: 11px; }
.compact-task-stage-tabs small { display: none; }
.compact-task-stage-tabs b { min-width: 21px; padding: 2px 5px; }

.nav-icon.sensor-nav-icon { width: 20px; height: 20px; display: inline-grid; place-items: center; flex: 0 0 20px; }
.sensor-nav-icon svg { width: 20px; height: 20px; overflow: visible; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

.position-summary.principle-only { grid-template-columns: minmax(0, 1fr); }
.position-summary.principle-only .position-summary-wide { grid-column: 1; }

/* Размер одного столбца не перераспределяется на остальные столбцы. */
.data-table.resizable-table { width: auto; min-width: 0 !important; max-width: none; table-layout: fixed; }
.data-table.dense.resizable-table,
.node-table.resizable-table { min-width: 0 !important; }
.position-table.resizable-table th:nth-child(5),
.position-table.resizable-table td:nth-child(5),
.position-table.resizable-table th:nth-child(10),
.position-table.resizable-table td:nth-child(10) { min-width: 0; }

@media (max-width: 760px) {
    .compact-workspace-header { min-height: 24px; }
    .compact-workspace-header h1 { font-size: 14px; }
    .compact-task-stage-tabs button { min-height: 30px; padding: 3px 7px; }
    .compact-task-stage-tabs strong { font-size: 10px; }
}
.rules-list-card { display: flex; flex-direction: column; }
.rules-list-card > .table-scroll { flex: 1 1 auto; }
.rules-code-table.resizable-table td:nth-child(5),
.position-table.resizable-table th:nth-child(4),
.position-table.resizable-table td:nth-child(4),
.position-table.resizable-table th:nth-child(9),
.position-table.resizable-table td:nth-child(9),
.resizable-table .project-tag-cell { min-width: 0; }

/* v2.10 — постоянная левая панель и компактная таблица «Задание в работе» */
:root {
    --fan-sidebar-collapsed: 58px;
    --fan-sidebar-expanded: 220px;
}

.drawer-toggle, .drawer-close { display: none !important; }
.sidebar {
    top: 43px;
    bottom: 0;
    width: var(--fan-sidebar-collapsed);
    height: auto;
    padding: 9px 6px;
    overflow: hidden;
    transform: none !important;
    transition: width .18s ease, box-shadow .18s ease;
    box-shadow: 5px 0 18px rgba(15, 23, 42, .07);
}
.app-shell.drawer-open .sidebar {
    width: var(--fan-sidebar-expanded);
    transform: none !important;
    box-shadow: 12px 0 28px rgba(15, 23, 42, .12);
}
.main-content {
    margin-left: var(--fan-sidebar-collapsed) !important;
    transition: margin-left .18s ease;
}
.app-shell.drawer-open .main-content { margin-left: var(--fan-sidebar-expanded) !important; }
.sidebar-head {
    min-height: 42px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 0 2px 9px;
    border-bottom: 1px solid #dae1eb;
}
.sidebar-brand-copy { min-width: 0; display: flex; align-items: center; gap: 9px; overflow: hidden; }
.sidebar-brand-copy .brand-icon { width: 30px; height: 30px; border-radius: 6px; }
.sidebar-brand-copy strong, .sidebar-brand-copy span { display: block; white-space: nowrap; }
.sidebar-brand-copy strong { font-size: 12px; }
.sidebar-brand-copy span { margin-top: 1px; color: var(--muted); font-size: 9px; }
.sidebar-toggle {
    width: 36px;
    height: 36px;
    flex: 0 0 36px;
    display: grid;
    place-items: center;
    padding: 0;
    border: 1px solid #cfd7e3;
    border-radius: 6px;
    background: #f3f6fb;
    color: #1848a4;
    cursor: pointer;
}
.sidebar-toggle:hover { border-color: #cfd7e3; background: #eef2f7; color: #1848a4; }
.sidebar-toggle svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .18s ease; }
.sidebar-toggle.expanded svg { transform: rotate(180deg); }
.sidebar .side-nav { min-height: 0; margin-top: 8px; overflow-x: hidden; overflow-y: auto; scrollbar-width: thin; }
.sidebar .side-nav button { min-height: 42px; flex: 0 0 auto; }
.sidebar .nav-icon { width: 24px; min-width: 24px; display: inline-grid; place-items: center; }
.app-shell.drawer-closed .sidebar-head { justify-content: center; }
.app-shell.drawer-closed .sidebar-brand-copy,
.app-shell.drawer-closed .sidebar .nav-label,
.app-shell.drawer-closed .sidebar .nav-chevron,
.app-shell.drawer-closed .sidebar .side-nav button.sub,
.app-shell.drawer-closed .sidebar-user > div { display: none !important; }
.app-shell.drawer-closed .sidebar .side-nav button {
    width: 46px;
    justify-content: center;
    gap: 0;
    padding: 8px 0;
}
.app-shell.drawer-closed .sidebar .nav-group { padding: 0; }
.app-shell.drawer-closed .sidebar .nav-group > button:first-child { width: 46px; }
.app-shell.drawer-closed .sidebar .nav-unread {
    position: absolute;
    top: 3px;
    right: 1px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    margin: 0;
    font-size: 8px;
}
.app-shell.drawer-open .sidebar .side-nav button { width: 100%; justify-content: flex-start; gap: 10px; padding: 9px 10px; }
.app-shell.drawer-open .sidebar .side-nav button.sub { display: flex; min-height: 34px; padding: 7px 10px 7px 42px; }
.app-shell.drawer-open .sidebar .nav-label { display: inline; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.app-shell.drawer-open .sidebar-user > div { display: block; }
.sidebar-user { padding: 9px 2px 0; }
.app-shell.drawer-closed .sidebar-user { justify-content: center; }
.app-shell.drawer-closed .sidebar-user button { width: 40px; height: 36px; }
.drawer-overlay { left: var(--fan-sidebar-collapsed); }

.work-data-table { min-width: 0 !important; }
.work-info-cell, .work-name-cell, .work-parameters-cell, .work-notes-cell { vertical-align: top !important; }
.work-info-card { display: grid; gap: 3px; line-height: 1.25; }
.work-info-card > div { min-width: 0; display: grid; grid-template-columns: 78px minmax(0,1fr); gap: 6px; align-items: start; }
.work-info-card span:first-child { color: #607088; font-size: 9px; font-weight: 500; }
.work-info-card strong, .work-info-card b { min-width: 0; overflow-wrap: anywhere; color: #1848a4; font-size: 10px; font-weight: 600; }
.work-info-card .work-document-number { display: inline; margin: 0 4px 0 0; color: #1848a4; font-size: 9px; }
.work-info-card .work-version { color: #1848a4; }
.work-info-card .work-project-position { color: #1848a4; font-size: 11px; font-weight: 750; }
.work-name-cell { min-width: 0; white-space: normal !important; overflow-wrap: anywhere; line-height: 1.35; }
.work-parameter-grid { min-width: 0; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 7px; }
.work-parameter-grid section { min-width: 0; padding-left: 7px; border-left: 1px solid #cfd7e3; }
.work-parameter-grid section:first-child { padding-left: 0; border-left: 0; }
.work-parameter-grid section > strong { display: block; margin-bottom: 4px; color: #435167; font-size: 9px; font-weight: 700; }
.work-parameter-grid dl { display: grid; grid-template-columns: minmax(28px,auto) minmax(0,1fr); gap: 2px 5px; margin: 0; font-size: 9px; line-height: 1.25; }
.work-parameter-grid dt { color: #607088; }
.work-parameter-grid dd { min-width: 0; margin: 0; overflow-wrap: anywhere; color: #1b2433; }
.work-system-mark { width: 18px; height: 16px; display: inline-grid; place-items: center; border-radius: 8px; color: #607088; background: #f3f6fb; font-size: 10px; font-weight: 700; }
.work-system-mark.enabled { color: #166534; background: #ecfdf3; }
.work-notes-cell { white-space: pre-wrap !important; overflow-wrap: anywhere; line-height: 1.35; }

@media (min-width: 761px) {
    .drawer-overlay { display: none !important; }
}

@media (max-width: 760px) {
    :root {
        --fan-sidebar-collapsed: 54px;
        --fan-sidebar-expanded: min(82vw, 280px);
    }
    .sidebar {
        top: 43px;
        bottom: 0;
        width: var(--fan-sidebar-collapsed);
        height: auto;
        padding: 8px 4px;
        border-right: 1px solid #cfd7e3;
        border-bottom: 0;
    }
    .app-shell.drawer-open .sidebar { width: var(--fan-sidebar-expanded); }
    .main-content, .app-shell.drawer-open .main-content { margin-left: var(--fan-sidebar-collapsed) !important; }
    .app-shell.drawer-closed .sidebar .side-nav button,
    .app-shell.drawer-closed .sidebar .nav-group > button:first-child { width: 46px; }
    .app-shell.drawer-open .sidebar .side-nav button { min-height: 42px; }
    .drawer-overlay { display: block; inset: 43px 0 0 var(--fan-sidebar-collapsed); }
    .work-parameter-grid { grid-template-columns: minmax(0,1fr); gap: 5px; }
    .work-parameter-grid section { padding: 5px 0 0; border-top: 1px solid #cfd7e3; border-left: 0; }
    .work-parameter-grid section:first-child { padding-top: 0; border-top: 0; }
}

/* v2.11 — редактирование в ячейках, исполнительные устройства и отдельное рабочее задание */
.tab-count-pair { display: inline-flex; align-items: center; gap: 4px; margin-left: 5px; vertical-align: middle; }
.tab-count { display: inline-grid !important; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; font-size: 10px; font-weight: 800; line-height: 1; }
.tab-count.confirmed { color: #166534; background: #ecfdf3; border: 1px solid #86efac; }
.tab-count.pending { color: #92400e; background: #fff7e6; border: 1px solid #f4c56b; }
.inline-cell-editor { width: 100%; min-width: 0; border: 1px solid transparent; border-radius: 5px; background: transparent; color: inherit; font: inherit; padding: 5px 6px; box-sizing: border-box; }
.inline-cell-editor:hover:not(:disabled), .inline-cell-editor:focus { border-color: #b5d1ff; background: #f5f7fb; color: var(--text); outline: none; box-shadow: 0 0 0 2px rgba(37, 99, 235, .06); }
.inline-cell-editor:disabled { opacity: 1; color: inherit; cursor: default; }
.inline-cell-editor.compact { min-width: 54px; text-align: center; }
.inline-cell-textarea { min-height: 48px; resize: vertical; line-height: 1.25; }
.inline-cell-textarea.notes { min-width: 260px; }
.find-replace-modal .form-grid { gap: 12px; }
.executive-device-table { min-width: 1180px; }
.executive-device-grid { display: grid; gap: 5px; }
.executive-device-line { display: grid; grid-template-columns: minmax(88px, .7fr) minmax(190px, 1.7fr); align-items: center; gap: 8px; }
.executive-device-line code { font-weight: 800; color: #1848a4; white-space: nowrap; }
.executive-device-line select { width: 100%; min-width: 0; border: 1px solid #cfd7e3; border-radius: 5px; padding: 5px 7px; background: #f5f7fb; color: var(--text); }
.executive-notes-cell, .work-executive-cell { white-space: pre-wrap; line-height: 1.35; }
.work-executive-cell { font-size: 11px; min-width: 250px; }
.work-only-workspace .compact-workspace-header { padding-bottom: 4px; }
.work-nav-icon { font-weight: 900; }
.grouped-position-card { min-width: 0; }
.compact-position-table { min-width: 1020px; }
.position-name-cell { display: flex; align-items: flex-start; gap: 8px; }
.position-name-cell input { flex: 0 0 auto; margin-top: 2px; }
.position-name-cell span { min-width: 0; white-space: normal; }
.position-executive-caption td { padding: 7px 14px !important; background: #e6effc; border-top: 2px solid #b5d1ff; }
.position-executive-caption strong { margin-right: 10px; color: #1848a4; }
.position-executive-caption span { color: var(--muted); font-size: 11px; }
.position-executive-row td:first-child { display: grid; gap: 3px; }
.position-executive-row td:first-child small { color: var(--muted); }
.executive-position-label { font-weight: 800; color: #1848a4; }
.position-executive-row code { font-weight: 800; color: #1848a4; }

@media (max-width: 760px) {
    .tab-count-pair { margin-left: 2px; }
    .tab-count { min-width: 18px; height: 18px; font-size: 9px; }
    .executive-device-line { grid-template-columns: 1fr; }
    .inline-cell-editor { min-height: 34px; }
}

/* v2.11.1 — уникальные исполнительные устройства, ручной ввод позиций и редактор данных */
.sidebar .side-nav button { font-size: 12px; }
.sidebar .side-nav button.sub { font-size: 11px; }
.sidebar .nav-label { line-height: 1.2; }

.position-inline-tag-editor {
    width: 100%;
    min-width: 150px;
    padding: 5px 7px;
    border: 1px solid #cfd7e3;
    border-radius: 5px;
    background: #f5f7fb;
    color: #1848a4;
    font: 600 12px Consolas, monospace;
    letter-spacing: .02em;
    box-sizing: border-box;
}
.position-inline-tag-editor:focus {
    border-color: #b5d1ff;
    outline: none;
    box-shadow: 0 0 0 2px rgba(37, 99, 235, .06);
}
.position-inline-tag-editor:disabled {
    border-color: transparent;
    background: transparent;
    opacity: 1;
}
.manual-position-field { padding: 8px; border: 1px solid #b5d1ff; border-radius: 6px; background: #e6effc; }
.manual-position-field input { font-family: Consolas, monospace; font-weight: 700; letter-spacing: .03em; }
.field-validation-error { color: #991b1b !important; font-weight: 700; }
.data-notes-cell { white-space: pre-wrap !important; }

.work-executive-list { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.work-executive-item {
    display: grid;
    grid-template-columns: minmax(76px, auto) minmax(0, 1fr);
    align-items: start;
    gap: 8px;
    padding-bottom: 5px;
    border-bottom: 1px solid #dae1eb;
}
.work-executive-item:last-child { padding-bottom: 0; border-bottom: 0; }
.work-executive-item code { color: #1848a4; font-weight: 800; white-space: nowrap; }
.work-executive-item span { min-width: 0; overflow-wrap: anywhere; }

@media (max-width: 760px) {
    .sidebar .side-nav button { font-size: 11px; }
    .work-executive-item { grid-template-columns: 1fr; gap: 2px; }
}

/* v2.12 — ПВВ: перечень входных/выходных сигналов */
.pvv-nav-icon {
    width: 26px !important;
    min-width: 26px !important;
    height: 22px;
    display: inline-grid !important;
    place-items: center;
    border: 0;
    border-radius: 0;
    font-size: 8px !important;
    font-weight: 800;
    letter-spacing: -.03em;
    line-height: 1;
}
.app-shell.drawer-closed .pvv-nav-icon { width: 31px !important; min-width: 31px !important; font-size: 9px !important; }

.pvv-workspace { display: flex; flex-direction: column; min-height: 100vh; gap: 9px; }
.pvv-header-status { display: flex; align-items: center; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.pvv-context-bar {
    display: grid;
    grid-template-columns: minmax(260px, 1.25fr) minmax(150px, .45fr) minmax(260px, 1fr);
    gap: 8px;
    padding: 8px;
    border: 1px solid var(--border-soft);
    border-radius: 6px;
    background: var(--panel);
}
.pvv-context-bar label { min-width: 0; display: grid; gap: 4px; color: var(--muted); font-size: 10px; }
.pvv-context-bar select, .pvv-context-bar input,
.pvv-editor-card input, .pvv-editor-card select, .pvv-editor-card textarea {
    width: 100%; min-width: 0; min-height: 34px; padding: 6px 8px;
    border: 1px solid #cfd7e3; border-radius: 4px; background: #f8fafd; color: var(--text); outline: none;
}
.pvv-context-bar select:focus, .pvv-context-bar input:focus,
.pvv-editor-card input:focus, .pvv-editor-card select:focus, .pvv-editor-card textarea:focus {
    border-color: var(--blue); box-shadow: 0 0 0 2px rgba(37, 99, 235, .06);
}
.pvv-toolbar { flex: 0 0 auto; }
.pvv-toolbar .button.active { border-color: #b5d1ff; background: #e6effc; color: #1848a4; }
.pvv-toolbar-note { margin-left: auto; color: var(--muted); font-size: 10px; }

.pvv-legend-panel, .pvv-issues-panel {
    flex: 0 0 auto; border: 1px solid var(--border); border-radius: 7px; overflow: hidden; background: var(--panel);
}
.pvv-legend-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 8px; padding: 9px; }
.pvv-legend-group { min-width: 0; padding: 9px; border: 1px solid var(--border-soft); border-radius: 6px; background: #f5f7fb; }
.pvv-legend-group > strong { display: block; margin-bottom: 7px; color: #1848a4; font-size: 12px; }
.pvv-legend-group > div { display: grid; grid-template-columns: minmax(52px, auto) minmax(0, 1fr); align-items: start; gap: 7px; margin: 4px 0; font-size: 11px; line-height: 1.3; }
.pvv-issues-list { max-height: 230px; overflow: auto; padding: 7px; display: grid; gap: 5px; }
.pvv-issue { width: 100%; display: grid; grid-template-columns: 92px minmax(190px, .7fr) minmax(0, 1.8fr); align-items: center; gap: 8px; padding: 7px 9px; border: 1px solid; border-radius: 5px; text-align: left; cursor: pointer; }
.pvv-issue span { font-size: 9px; font-weight: 800; text-transform: uppercase; }
.pvv-issue strong { font-size: 10px; }
.pvv-issue em { min-width: 0; color: #1b2433; font-size: 11px; font-style: normal; }
.pvv-issue.error, .pvv-editor-issues .error { border-color: #fca5a5; background: #fff1f2; color: #991b1b; }
.pvv-issue.warning, .pvv-editor-issues .warning { border-color: #f4c56b; background: #fff7e6; color: #92400e; }
.pvv-issue.info, .pvv-editor-issues .info { border-color: #b5d1ff; background: #e6effc; color: #1848a4; }
.empty-state.good { color: #166534; }

.pvv-empty { min-height: 320px; display: grid; place-items: center; }
.pvv-layout { min-height: 520px; flex: 1 1 620px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 9px; }
.pvv-layout.editor-open { grid-template-columns: minmax(0, 1fr) 390px; }
.pvv-layout.editor-open.editor-expanded { grid-template-columns: minmax(420px, .82fr) minmax(560px, 1.18fr); }
.pvv-table-card, .pvv-editor-card { min-width: 0; min-height: 0; border: 1px solid var(--border); border-radius: 7px; overflow: hidden; background: var(--panel); }
.pvv-table-card { display: flex; flex-direction: column; }
.pvv-table-tools { min-height: 34px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 5px 9px; border-bottom: 1px solid var(--border-soft); background: #f3f6fb; color: var(--muted); font-size: 10px; }
.pvv-table-tools-info { min-width: 0; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.pvv-table-tools-info span:first-child { color: #435167; font-weight: 700; }
.pvv-editor-visibility-button { flex: 0 0 auto; max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pvv-table-scroll { width: 100%; height: 100%; }
.pvv-table { width: auto; min-width: 0; max-width: none; table-layout: fixed; font-size: 10px; }
.pvv-table th, .pvv-table td { padding: 5px 6px; text-align: center; vertical-align: middle; }
.pvv-table.resizable-table td { width: auto !important; min-width: 0 !important; max-width: none !important; }
.pvv-table td:nth-child(3), .pvv-table td:nth-child(4), .pvv-table td:last-child { text-align: left; }
.pvv-table th { white-space: normal; line-height: 1.15; }
.pvv-table thead th,
.pvv-table .pvv-group-head th,
.pvv-table .pvv-sub-head th,
.pvv-table .pvv-number-head th { background: #eef2f7; color: #1848a4; }
.pvv-table .pvv-group-head th { top: 0; height: 70px; z-index: 4; }
.pvv-table .pvv-sub-head th { top: 70px; height: 30px; z-index: 4; }
.pvv-table .vertical-head { height: 100px; padding: 3px; writing-mode: vertical-rl; transform: rotate(180deg); white-space: normal; }
.pvv-table.resizable-table .vertical-head { width: auto; min-width: 0; max-width: none; }
.pvv-table th:nth-child(1), .pvv-table td:nth-child(1) { width: 108px; min-width: 108px; }
.pvv-table th:nth-child(2), .pvv-table td:nth-child(2) { width: 118px; min-width: 118px; }
.pvv-table th:nth-child(3), .pvv-table td:nth-child(3) { width: 250px; min-width: 250px; }
.pvv-table th:nth-child(4), .pvv-table td:nth-child(4) { width: 170px; min-width: 170px; }
.pvv-table th:nth-child(n+5):nth-child(-n+14), .pvv-table td:nth-child(n+5):nth-child(-n+14) { width: 61px; min-width: 61px; }
.pvv-table th:nth-child(25), .pvv-table td:nth-child(25) { width: 76px; min-width: 76px; }
.pvv-table th:nth-child(26), .pvv-table td:nth-child(26) { width: 100px; min-width: 100px; }
.pvv-table th:nth-child(27), .pvv-table td:nth-child(27) { width: 220px; min-width: 220px; }
.pvv-table tbody tr.pvv-row-error > td { background-color: rgba(220, 38, 38, .08); }
.pvv-table tbody tr.pvv-row-warning > td { background-color: rgba(180, 83, 9, .07); }
.pvv-table tbody tr.selected > td { background-color: rgba(37, 99, 235, .18) !important; }

.pvv-editor-card { display: flex; flex-direction: column; }
.pvv-editor-card .admin-card-header { flex: 0 0 auto; }
.pvv-editor-header > div:first-child { min-width: 0; }
.pvv-editor-header > div:first-child strong, .pvv-editor-header > div:first-child span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pvv-editor-header > div:first-child span { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; }
.pvv-editor-header-actions { flex: 0 0 auto; display: flex; align-items: center; gap: 5px; }
.icon-button { width: 30px; height: 30px; display: grid; place-items: center; padding: 0; border: 1px solid #cfd7e3; border-radius: 4px; background: #eef2f7; color: #1b2433; cursor: pointer; font-size: 19px; }
.icon-button:hover { background: #e8edf5; }
.pvv-editor-scroll { min-height: 0; flex: 1 1 auto; overflow: auto; padding: 9px; display: grid; align-content: start; gap: 9px; }
.pvv-editor-card fieldset { min-width: 0; margin: 0; padding: 9px; border: 1px solid var(--border-soft); border-radius: 6px; }
.pvv-editor-card legend { padding: 0 5px; color: #1848a4; font-size: 11px; font-weight: 700; }
.pvv-editor-card label { min-width: 0; display: grid; gap: 4px; color: #435167; font-size: 10px; }
.pvv-editor-card textarea { min-height: 64px; resize: vertical; }
.pvv-editor-card .two-field-row, .pvv-editor-card .three-field-row { display: grid; gap: 7px; margin-bottom: 7px; }
.pvv-editor-card .two-field-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pvv-editor-card .three-field-row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pvv-check-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin: 4px 0 9px; }
.pvv-check-grid label { display: flex; align-items: flex-start; gap: 6px; padding: 6px; border: 1px solid #cfd7e3; border-radius: 4px; background: #f5f7fb; line-height: 1.25; }
.pvv-check-grid input { width: 15px; min-width: 15px; height: 15px; min-height: 15px; margin: 0; }
.pvv-editor-issues { display: grid; gap: 5px; }
.pvv-editor-issues > div { display: grid; gap: 2px; padding: 7px; border: 1px solid; border-radius: 5px; font-size: 10px; }
.pvv-editor-issues span { color: #1b2433; }

@media (max-width: 1180px) {
    .pvv-layout.editor-open, .pvv-layout.editor-open.editor-expanded { grid-template-columns: minmax(0, 1fr); }
    .pvv-editor-card { min-height: 620px; }
}

@media (max-width: 760px) {
    .pvv-workspace { min-height: calc(100vh - 54px); }
    .pvv-context-bar { grid-template-columns: 1fr; }
    .pvv-header-status { justify-content: flex-start; }
    .pvv-toolbar { overflow-x: auto; flex-wrap: nowrap; }
    .pvv-toolbar-note { display: none; }
    .pvv-table-tools { align-items: stretch; flex-direction: column; }
    .pvv-table-tools-info { gap: 4px; }
    .pvv-editor-visibility-button { max-width: none; width: 100%; }
    .pvv-layout { min-height: 470px; }
    .pvv-issue { grid-template-columns: 1fr; gap: 3px; }
    .pvv-editor-card .two-field-row, .pvv-editor-card .three-field-row, .pvv-check-grid { grid-template-columns: 1fr; }
    .pvv-legend-grid { grid-template-columns: 1fr; }
}
.pvv-reference-table { min-width: 980px; }
.pvv-reference-table th:nth-child(1), .pvv-reference-table td:nth-child(1) { width: 190px; }
.pvv-reference-table th:nth-child(2), .pvv-reference-table td:nth-child(2) { width: 110px; }
.pvv-reference-table th:nth-child(3), .pvv-reference-table td:nth-child(3) { width: 250px; }
.pvv-reference-note { display: grid; align-content: start; gap: 10px; padding: 14px; color: #435167; font-size: 12px; line-height: 1.5; }
.pvv-reference-note p { margin: 0; }
.pvv-table .pvv-number-head th { top: 100px; height: 30px; padding: 3px 28px 3px 5px; z-index: 5; font-size: 9px; }
.pvv-table .pvv-number-head .pvv-column-number { display: inline-block; min-width: 14px; color: #435167; font-weight: 700; }
.pvv-table .pvv-number-head .table-filter-button { right: 4px; width: 20px; height: 22px; color: #435167; }
.pvv-table .pvv-number-head .column-resizer { z-index: 7; }

/* Developer activity time correction */
.developer-time-controls { display: flex; align-items: end; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.developer-time-controls label { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 12px; white-space: nowrap; }
.developer-time-controls input { width: 72px; min-height: 30px; padding: 4px 7px; }
@media (max-width: 760px) {
    .developer-time-controls { width: 100%; justify-content: flex-start; }
}

/* v2.12.6 — исполнительные устройства, действия и индивидуальное состояние узлов */
.executive-group-bar { display: flex; align-items: center; gap: 8px; width: 100%; }
.work-group-main-button { min-width: 0; flex: 1 1 auto; display: flex; align-items: center; gap: 10px; padding: 0; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
.executive-add-button { flex: 0 0 auto; margin-right: 6px; }
.executive-row-actions { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.work-executive-action-select { width: 100%; min-width: 150px; min-height: 28px; padding: 3px 6px; font-size: 10px; }
.executive-actions-layout .rule-editor-card { min-width: 330px; }
.executive-device-table .work-group-header td { padding: 0; }
.executive-device-table .work-group-bar { padding: 6px 8px; }

@media (max-width: 760px) {
    .executive-group-bar { align-items: stretch; flex-direction: column; }
    .executive-add-button { width: 100%; margin: 0; }
    .work-executive-action-select { min-width: 125px; }
}

.executive-empty-node-row td {
    padding: 12px 18px;
    color: var(--muted);
    font-style: italic;
    background: color-mix(in srgb, var(--panel) 92%, transparent);
}


/* v2.12.7 — актуальная трёхстрочная шапка задания технологов из Excel */
.technologist-excel-table {
    table-layout: fixed;
    min-width: 4700px;
}
.technologist-excel-table thead {
    position: sticky;
    top: 0;
    z-index: 8;
}
.technologist-excel-table thead th {
    position: relative;
    top: auto;
    min-height: 34px;
    padding: 6px 24px 6px 6px;
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    text-align: center;
    vertical-align: middle;
    line-height: 1.2;
}
.technologist-excel-table thead .excel-header-group {
    padding-right: 6px;
    background: color-mix(in srgb, var(--panel) 78%, #e6effc 22%);
    font-weight: 700;
}
.technologist-excel-table tbody td {
    vertical-align: top;
    white-space: normal;
    overflow-wrap: anywhere;
}
.technologist-excel-table .data-notes-cell {
    line-height: 1.35;
}
.technologist-excel-table .table-filter-button {
    top: 4px;
    right: 3px;
}
.technologist-excel-table .column-resizer {
    z-index: 10;
}
.technologist-row-editor .span-two {
    grid-column: span 2;
}

/* v2.14.6 — карточки-стопки и переключение колесом мыши */
.work-toggle-column {
    width: 42px !important;
    min-width: 42px !important;
    max-width: 42px !important;
    padding: 0 !important;
}
.work-row-leading {
    width: 42px;
    min-width: 42px;
    max-width: 42px;
    display: grid;
    place-items: center;
    padding: 0 !important;
}
.work-table-actions { min-height: 30px; }
.work-table-hint { color: #607088; font-size: 10px; }
.position-document-toggle {
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    padding: 0;
    border: 1px solid #b5d1ff;
    border-radius: 9px;
    background: linear-gradient(145deg, #e6effc, #e6effc);
    box-shadow: inset 0 1px 0 rgba(37, 99, 235, .05), 0 4px 10px rgba(15, 23, 42, .07);
    color: #1848a4;
    cursor: pointer;
    transition: transform .16s ease, border-color .16s ease, background .16s ease, box-shadow .16s ease;
}
.position-document-toggle:hover {
    transform: translateY(-1px);
    border-color: #b5d1ff;
    background: linear-gradient(145deg, #e6effc, #e6effc);
    box-shadow: inset 0 1px 0 rgba(37, 99, 235, .05), 0 6px 14px rgba(15, 23, 42, .09);
}
.position-document-toggle:active { transform: translateY(0) scale(.96); }
.position-document-toggle:focus-visible {
    outline: 2px solid #b5d1ff;
    outline-offset: 2px;
}
.position-document-toggle-icon {
    width: 8px;
    height: 8px;
    display: block;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(-45deg);
    transition: transform .2s ease;
}
.position-document-toggle.expanded .position-document-toggle-icon { transform: rotate(45deg) translate(-1px, -1px); }
.position-document-host-row > td {
    padding: 0 !important;
    border-top: 0 !important;
    border-bottom: 1px solid #b5d1ff !important;
    background: #e6effc !important;
}
.position-document-host-row:hover > td { background: #e6effc !important; }
.position-documents-shell {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
    box-sizing: border-box;
    padding: 8px 10px 10px;
    background: radial-gradient(circle at 48% 0%, rgba(37, 99, 235, .05), transparent 42%),
        linear-gradient(180deg, #e6effc 0%, #e6effc 100%);
}
.position-document-desktop-layout {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr);
    align-items: stretch;
    gap: 0;
}
.position-document-rail {
    position: relative;
    width: 104px;
    min-width: 104px;
    max-width: 104px;
    min-height: 350px;
    overflow: hidden;
    isolation: isolate;
}
.position-document-rail.empty { width: 0; min-width: 0; max-width: 0; }
.position-document-tab {
    --tab-level: 0;
    position: absolute;
    top: calc(8px + (var(--tab-level) * 29px));
    width: 100px;
    min-width: 0;
    height: 34px;
    min-height: 34px;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 5px;
    padding: 0 8px;
    border: 1px solid #b5d1ff;
    background: linear-gradient(180deg, #e6effc, #e6effc);
    box-shadow: inset 0 1px 0 rgba(37, 99, 235, .05), 0 4px 10px rgba(15, 23, 42, .07);
    color: #1848a4;
    cursor: pointer;
    overflow: hidden;
    z-index: calc(100 - var(--tab-level));
    transition: transform .16s ease, border-color .16s ease, background .16s ease, filter .16s ease;
}
.position-document-tab.left {
    right: 0;
    border-right: 0;
    border-radius: 8px 0 0 8px;
    padding-right: 10px;
}
.position-document-tab.active {
    z-index: 220 !important;
    border-color: #b5d1ff;
    background: linear-gradient(180deg, #e6effc, #e6effc);
    box-shadow: inset 0 1px 0 rgba(37, 99, 235, .06), -3px 5px 13px rgba(15, 23, 42, .09);
    color: #1848a4;
    transform: translateX(1px);
}
.position-document-tab.active::before {
    content: "";
    position: absolute;
    top: 6px;
    bottom: 6px;
    right: 0;
    width: 3px;
    border-radius: 3px 0 0 3px;
    background: #2563eb;
    box-shadow: 0 0 8px rgba(37, 99, 235, .16);
}
.position-document-tab.active .position-document-tab-title { color: #1848a4; }
.position-document-tab.right {
    left: 0;
    border-left: 0;
    border-radius: 0 7px 7px 0;
    padding-left: 9px;
}
.position-document-tab::after {
    content: "";
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: 3px;
    border-radius: 2px;
    background: rgba(37, 99, 235, .12);
}
.position-document-tab.left::after { right: 3px; }
.position-document-tab.right::after { left: 3px; }
.position-document-tab:hover {
    z-index: 200 !important;
    border-color: #b5d1ff;
    background: linear-gradient(180deg, #e6effc, #e6effc);
    filter: brightness(1.05);
}
.position-document-tab.left:hover { transform: translateX(-4px); }
.position-document-tab.right:hover { transform: translateX(4px); }
.position-document-tab-title {
    min-width: 0;
    flex: 1 1 auto;
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    writing-mode: horizontal-tb;
    text-orientation: mixed;
    color: #1848a4;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: .02em;
    text-align: left;
}
.position-document-tab-counts {
    min-width: 0;
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 3px;
}
.position-document-tab-counts:empty { display: none; }
.position-document-card {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    border: 1px solid #b5d1ff;
    border-radius: 7px;
    background: linear-gradient(145deg, #e6effc, #e6effc);
    box-shadow: inset 0 1px 0 rgba(37, 99, 235, .05), 0 7px 18px rgba(15, 23, 42, .06);
}
.position-document-card-header {
    min-height: 42px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 9px;
    padding: 6px 10px;
    border-bottom: 1px solid #b5d1ff;
    background: linear-gradient(180deg, #e6effc, rgba(37, 99, 235, .18));
}
.position-document-card-title {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 7px;
}
.position-document-card-title strong {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #1848a4;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.1;
}
.position-document-icon { color: #1848a4; font-size: 18px; line-height: 1; }
.position-document-status-badges { display: flex; align-items: center; gap: 5px; }
.doc-count {
    min-width: 12px;
    height: auto;
    display: inline-block;
    flex: 0 0 auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    font-size: 10px;
    font-weight: 700;
    line-height: 1;
    font-style: normal;
    font-variant-numeric: tabular-nums;
    text-align: center;
}
.doc-count.missing { color: #92400e; }
.doc-count.hold { color: #1848a4; }
.doc-count.error { color: #991b1b; }
.position-document-card-hold {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 8px;
    padding: 5px 10px;
    border-bottom: 1px solid #b5d1ff;
    background: rgba(37, 99, 235, .05);
}
.position-document-card-hold span { color: #1848a4; font-size: 10px; font-weight: 600; line-height: 1.05; }
.position-document-card-hold-clear {
    height: 26px;
    padding: 0 9px;
    border: 1px solid #6d98d3;
    border-radius: 3px;
    background: #ffffff;
    color: #174a88;
    font-size: 10px;
    cursor: pointer;
}
.position-document-card-hold-clear:hover { border-color: #1d5fc4; background: #f3f7fd; }
.position-document-card-hold-clear:disabled { opacity: .5; cursor: default; }
.position-document-card-hold input,
.position-document-field-hold-reason input {
    width: 100%;
    min-width: 0;
    height: 26px;
    border: 0;
    border-radius: 3px;
    background: rgba(37, 99, 235, .18);
    color: #1848a4;
    padding: 0 8px;
    outline: none;
    line-height: 1.1;
}
.position-document-card-hold input:focus,
.position-document-field-hold-reason input:focus { background: #e6effc; box-shadow: inset 0 -1px rgba(37, 99, 235, .16); }
.position-document-development {
    min-height: 188px;
    display: grid;
    place-items: center;
    padding: 28px 18px;
    color: #1848a4;
    text-align: center;
}
.position-document-development strong {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 0 18px;
    border: 1px solid #b5d1ff;
    border-radius: 5px;
    background: rgba(37, 99, 235, .18);
    color: #1848a4;
    font-size: 13px;
    font-weight: 650;
    letter-spacing: .02em;
}
.position-document-fields {
    min-height: 0;
    padding: 3px 10px 7px;
}
.position-document-fields-heading,
.position-document-field {
    display: grid;
    grid-template-columns: minmax(170px, 32%) minmax(0, 1fr);
    column-gap: 10px;
    align-items: center;
}
.position-document-fields-heading {
    min-height: 24px;
    color: #607088;
    font-size: 9px;
    line-height: 1;
}
.position-document-field {
    min-height: 34px;
    padding: 2px 0;
    border-top: 1px solid #b5d1ff;
}
.position-document-field:first-of-type { border-top-color: #b5d1ff; }
.position-document-field > label {
    color: #1848a4;
    font-size: 10.5px;
    line-height: 1.08;
}
.position-document-editor {
    min-width: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 24px;
    gap: 5px;
    align-items: center;
}
.position-document-editor input,
.position-document-editor select,
.position-document-editor textarea {
    width: 100%;
    min-width: 0;
    border: 0;
    border-radius: 3px;
    background: rgba(37, 99, 235, .18);
    color: #1848a4;
    outline: none;
    font-size: 10.5px;
    line-height: 1.12;
}
.position-document-editor input,
.position-document-editor select { height: 27px; padding: 0 8px; }
.position-document-editor textarea { min-height: 38px; resize: vertical; padding: 5px 8px; }
.position-document-editor input:hover,
.position-document-editor select:hover,
.position-document-editor textarea:hover { background: #e6effc; }
.position-document-editor input:focus,
.position-document-editor select:focus,
.position-document-editor textarea:focus { background: #e6effc; box-shadow: inset 0 -1px rgba(37, 99, 235, .16); }
.position-document-editor input:disabled,
.position-document-editor select:disabled,
.position-document-editor textarea:disabled { opacity: .72; color: #435167; }
.position-document-editor.checkbox-editor {
    grid-template-columns: minmax(0, 1fr) 24px;
    justify-items: start;
}
.position-document-editor input.position-document-checkbox {
    width: 18px;
    min-width: 18px;
    height: 18px;
    margin: 0 0 0 2px;
    padding: 0;
    accent-color: #4d91aa;
    cursor: pointer;
}
.position-document-editor input.position-document-checkbox:disabled { cursor: default; }
.position-document-field-hold {
    width: 24px;
    height: 24px;
    display: grid;
    place-items: center;
    padding: 0;
    border: 1px solid #b5d1ff;
    border-radius: 50%;
    background: #e6effc;
    color: #607088;
    font-size: 9px;
    cursor: pointer;
    opacity: .18;
    transition: opacity .15s ease, color .15s ease, border-color .15s ease;
}
.position-document-field:hover .position-document-field-hold,
.position-document-field-hold.active { opacity: 1; }
.position-document-field-hold.active { border-color: #b5d1ff; color: #1848a4; background: rgba(37, 99, 235, .11); }
.position-document-field-hold:disabled { cursor: default; }
.position-document-field.on-hold > label { color: #1848a4; }
.position-document-field-hold-reason {
    grid-column: 2;
    padding: 2px 29px 1px 0;
}

/* ПО: пять вертикальных групп параметров по эталонному макету «ПО карточка.png». */
.position-document-fields.po-reference-layout {
    min-width: 0;
    display: grid;
    grid-template-columns:
        minmax(176px, 1.06fr)
        minmax(168px, 1fr)
        minmax(176px, 1.04fr)
        minmax(172px, 1.02fr)
        minmax(164px, .98fr);
    gap: 0;
    align-items: start;
    overflow-x: auto;
    padding: 7px 10px 10px;
}
.position-document-fields.po-reference-layout .position-document-po-column {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
    align-self: stretch;
    padding: 0 12px;
    border-left: 1px solid #b5d1ff;
}
.position-document-fields.po-reference-layout .position-document-po-column:first-child {
    padding-left: 0;
    border-left: 0;
}
.position-document-fields.po-reference-layout .position-document-po-column:last-child { padding-right: 0; }
.position-document-fields.po-reference-layout .position-document-field {
    min-width: 0;
    min-height: 72px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 5px;
    padding: 8px;
    border: 1px solid #b5d1ff;
    border-radius: 3px;
    background: rgba(37, 99, 235, .18);
}
.position-document-fields.po-reference-layout .position-document-field > label {
    min-width: 0;
    min-height: 15px;
    display: flex;
    align-items: flex-end;
    color: #1848a4;
    font-size: 9px;
    line-height: 1.08;
    overflow-wrap: anywhere;
}
.position-document-fields.po-reference-layout .position-document-editor {
    grid-template-columns: minmax(0, 1fr) 22px;
    gap: 4px;
}
.position-document-fields.po-reference-layout .position-document-editor input,
.position-document-fields.po-reference-layout .position-document-editor select,
.position-document-fields.po-reference-layout .position-document-editor textarea {
    font-size: 9.6px;
}
.position-document-fields.po-reference-layout .position-document-editor input,
.position-document-fields.po-reference-layout .position-document-editor select {
    height: 28px;
    padding: 0 7px;
}
.position-document-fields.po-reference-layout .position-document-editor textarea {
    min-height: 28px;
    height: 28px;
    resize: vertical;
    padding: 6px 7px;
}
.position-document-fields.po-reference-layout .position-document-field-hold {
    width: 22px;
    height: 22px;
    font-size: 8px;
}
.position-document-fields.po-reference-layout .position-document-field-hold-reason {
    width: 100%;
    padding: 0;
}
.position-document-fields.po-reference-layout .position-document-field-hold-reason input {
    height: 24px;
    padding: 0 6px;
    font-size: 9px;
}

/* Смысловые вертикальные группы параметров для ПВВ, ПСБ, ПСД, СЭП2, КЖ и СО. */
.position-document-fields.position-document-grouped-layout {
    --document-group-count: 1;
    --document-group-min-width: 178px;
    min-width: 0;
    display: grid;
    grid-template-columns: repeat(var(--document-group-count), minmax(var(--document-group-min-width), 1fr));
    gap: 0;
    align-items: start;
    overflow-x: auto;
    padding: 7px 10px 10px;
}
.position-document-card[data-document-type="PSB"] .position-document-grouped-layout { --document-group-min-width: 215px; }
.position-document-card[data-document-type="PSD"] .position-document-grouped-layout { --document-group-min-width: 250px; }
.position-document-card[data-document-type="SEP2"] .position-document-grouped-layout { --document-group-min-width: 190px; }
.position-document-card[data-document-type="KJ"] .position-document-grouped-layout { --document-group-min-width: 185px; }
.position-document-card[data-document-type="SO"] .position-document-grouped-layout { --document-group-min-width: 215px; }
.position-document-field-group {
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-self: stretch;
    padding: 0 12px;
    border-left: 1px solid #b5d1ff;
}
.position-document-field-group:first-child {
    padding-left: 0;
    border-left: 0;
}
.position-document-field-group:last-child { padding-right: 0; }
.position-document-field-group-title {
    min-height: 25px;
    display: flex;
    align-items: center;
    margin: 0 0 8px;
    padding: 0 2px 5px;
    border-bottom: 1px solid #b5d1ff;
    color: #1848a4;
    font-size: 9.4px;
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: .02em;
    text-transform: uppercase;
}
.position-document-field-group-fields {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.position-document-fields.position-document-grouped-layout .position-document-field {
    min-width: 0;
    min-height: 69px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 5px;
    padding: 7px;
    border: 1px solid #b5d1ff;
    border-radius: 3px;
    background: rgba(37, 99, 235, .18);
}
.position-document-fields.position-document-grouped-layout .position-document-field > label {
    min-width: 0;
    min-height: 15px;
    display: flex;
    align-items: flex-end;
    color: #1848a4;
    font-size: 9px;
    line-height: 1.08;
    overflow-wrap: anywhere;
}
.position-document-fields.position-document-grouped-layout .position-document-editor {
    grid-template-columns: minmax(0, 1fr) 22px;
    gap: 4px;
}
.position-document-fields.position-document-grouped-layout .position-document-editor input,
.position-document-fields.position-document-grouped-layout .position-document-editor select,
.position-document-fields.position-document-grouped-layout .position-document-editor textarea {
    font-size: 9.5px;
}
.position-document-fields.position-document-grouped-layout .position-document-editor input,
.position-document-fields.position-document-grouped-layout .position-document-editor select {
    height: 27px;
    padding: 0 6px;
}
.position-document-fields.position-document-grouped-layout .position-document-editor textarea {
    min-height: 43px;
    padding: 5px 6px;
}
.position-document-fields.position-document-grouped-layout .position-document-field-hold {
    width: 22px;
    height: 22px;
    font-size: 8px;
}
.position-document-fields.position-document-grouped-layout .position-document-field-hold-reason {
    width: 100%;
    padding: 0;
}
.position-document-fields.position-document-grouped-layout .position-document-field-hold-reason input {
    height: 24px;
    padding: 0 6px;
    font-size: 9px;
}

/* ПСБ: компактная раскладка параметров по двум строкам. */
.position-document-fields.psb-two-row {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    column-gap: 8px;
    row-gap: 0;
    padding: 5px 8px 8px;
}
.position-document-fields.psb-two-row .position-document-fields-heading { display: none; }
.position-document-fields.psb-two-row .position-document-field {
    min-width: 0;
    min-height: 78px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    padding: 5px 0 6px;
    border-top-color: #b5d1ff;
}
.position-document-fields.psb-two-row .position-document-field:nth-child(n+8) {
    border-top-color: #b5d1ff;
}
.position-document-fields.psb-two-row .position-document-field > label {
    min-width: 0;
    min-height: 26px;
    display: flex;
    align-items: flex-end;
    color: #1848a4;
    font-size: 9px;
    line-height: 1.05;
    overflow-wrap: anywhere;
}
.position-document-fields.psb-two-row .position-document-editor {
    grid-template-columns: minmax(0, 1fr) 20px;
    gap: 3px;
}
.position-document-fields.psb-two-row .position-document-editor input,
.position-document-fields.psb-two-row .position-document-editor select,
.position-document-fields.psb-two-row .position-document-editor textarea {
    font-size: 9.3px;
}
.position-document-fields.psb-two-row .position-document-editor input,
.position-document-fields.psb-two-row .position-document-editor select {
    height: 25px;
    padding: 0 5px;
}
.position-document-fields.psb-two-row .position-document-editor textarea {
    min-height: 48px;
    padding: 5px 6px;
}
.position-document-fields.psb-two-row .position-document-field-hold {
    width: 20px;
    height: 20px;
    font-size: 8px;
}
.position-document-fields.psb-two-row .position-document-field-hold-reason {
    width: 100%;
    padding: 0;
}
.position-document-fields.psb-two-row .position-document-field-hold-reason input {
    height: 23px;
    padding: 0 5px;
    font-size: 9px;
}

/* КЖ: компактная раскладка параметров по двум строкам. */
.position-document-fields.kj-two-row {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    column-gap: 8px;
    row-gap: 0;
    padding: 5px 8px 8px;
}
.position-document-fields.kj-two-row .position-document-fields-heading { display: none; }
.position-document-fields.kj-two-row .position-document-field {
    min-width: 0;
    min-height: 76px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    padding: 5px 0 6px;
    border-top-color: #b5d1ff;
}
.position-document-fields.kj-two-row .position-document-field:nth-child(n+9) {
    border-top-color: #b5d1ff;
}
.position-document-fields.kj-two-row .position-document-field > label {
    min-width: 0;
    min-height: 24px;
    display: flex;
    align-items: flex-end;
    color: #1848a4;
    font-size: 9px;
    line-height: 1.05;
    overflow-wrap: anywhere;
}
.position-document-fields.kj-two-row .position-document-editor {
    grid-template-columns: minmax(0, 1fr) 20px;
    gap: 3px;
}
.position-document-fields.kj-two-row .position-document-editor input,
.position-document-fields.kj-two-row .position-document-editor select,
.position-document-fields.kj-two-row .position-document-editor textarea {
    font-size: 9.3px;
}
.position-document-fields.kj-two-row .position-document-editor input,
.position-document-fields.kj-two-row .position-document-editor select {
    height: 25px;
    padding: 0 5px;
}
.position-document-fields.kj-two-row .position-document-editor textarea {
    min-height: 44px;
    padding: 5px 6px;
}
.position-document-fields.kj-two-row .position-document-field-hold {
    width: 20px;
    height: 20px;
    font-size: 8px;
}
.position-document-fields.kj-two-row .position-document-field-hold-reason {
    width: 100%;
    padding: 0;
}
.position-document-fields.kj-two-row .position-document-field-hold-reason input {
    height: 23px;
    padding: 0 5px;
    font-size: 9px;
}

/* СО: компактная раскладка параметров по двум строкам. */
.position-document-fields.so-two-row {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    column-gap: 8px;
    row-gap: 0;
    padding: 5px 8px 8px;
}
.position-document-fields.so-two-row .position-document-fields-heading { display: none; }
.position-document-fields.so-two-row .position-document-field {
    min-width: 0;
    min-height: 82px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    padding: 5px 0 6px;
    border-top-color: #b5d1ff;
}
.position-document-fields.so-two-row .position-document-field:nth-child(n+7) {
    border-top-color: #b5d1ff;
}
.position-document-fields.so-two-row .position-document-field > label {
    min-width: 0;
    min-height: 26px;
    display: flex;
    align-items: flex-end;
    color: #1848a4;
    font-size: 9px;
    line-height: 1.05;
    overflow-wrap: anywhere;
}
.position-document-fields.so-two-row .position-document-editor {
    grid-template-columns: minmax(0, 1fr) 20px;
    gap: 3px;
}
.position-document-fields.so-two-row .position-document-editor input,
.position-document-fields.so-two-row .position-document-editor select,
.position-document-fields.so-two-row .position-document-editor textarea {
    font-size: 9.3px;
}
.position-document-fields.so-two-row .position-document-editor input,
.position-document-fields.so-two-row .position-document-editor select {
    height: 25px;
    padding: 0 5px;
}
.position-document-fields.so-two-row .position-document-editor textarea {
    min-height: 48px;
    padding: 5px 6px;
}
.position-document-fields.so-two-row .position-document-field-hold {
    width: 20px;
    height: 20px;
    font-size: 8px;
}
.position-document-fields.so-two-row .position-document-field-hold-reason {
    width: 100%;
    padding: 0;
}
.position-document-fields.so-two-row .position-document-field-hold-reason input {
    height: 23px;
    padding: 0 5px;
    font-size: 9px;
}

/* СЭП2: компактная раскладка параметров по двум строкам. */
.position-document-fields.sep2-two-row {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    column-gap: 8px;
    row-gap: 0;
    padding: 5px 8px 8px;
}
.position-document-fields.sep2-two-row .position-document-fields-heading { display: none; }
.position-document-fields.sep2-two-row .position-document-field {
    min-width: 0;
    min-height: 80px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    padding: 5px 0 6px;
    border-top-color: #b5d1ff;
}
.position-document-fields.sep2-two-row .position-document-field:nth-child(n+6) {
    border-top-color: #b5d1ff;
}
.position-document-fields.sep2-two-row .position-document-field > label {
    min-width: 0;
    min-height: 26px;
    display: flex;
    align-items: flex-end;
    color: #1848a4;
    font-size: 9px;
    line-height: 1.05;
    overflow-wrap: anywhere;
}
.position-document-fields.sep2-two-row .position-document-editor {
    grid-template-columns: minmax(0, 1fr) 20px;
    gap: 3px;
}
.position-document-fields.sep2-two-row .position-document-editor input,
.position-document-fields.sep2-two-row .position-document-editor select,
.position-document-fields.sep2-two-row .position-document-editor textarea {
    font-size: 9.3px;
}
.position-document-fields.sep2-two-row .position-document-editor input,
.position-document-fields.sep2-two-row .position-document-editor select {
    height: 25px;
    padding: 0 5px;
}
.position-document-fields.sep2-two-row .position-document-editor textarea {
    min-height: 44px;
    padding: 5px 6px;
}
.position-document-fields.sep2-two-row .position-document-field-hold {
    width: 20px;
    height: 20px;
    font-size: 8px;
}
.position-document-fields.sep2-two-row .position-document-field-hold-reason {
    width: 100%;
    padding: 0;
}
.position-document-fields.sep2-two-row .position-document-field-hold-reason input {
    height: 23px;
    padding: 0 5px;
    font-size: 9px;
}
.position-document-mobile-tabs { display: none; }

@media (prefers-reduced-motion: reduce) {
    .position-document-tab { transition: none; }
}

@media (max-width: 1100px) {
    .position-document-desktop-layout { grid-template-columns: 88px minmax(0, 1fr); }
    .position-document-rail { width: 88px; min-width: 88px; max-width: 88px; }
    .position-document-tab { width: 84px; padding-left: 6px; padding-right: 7px; }
    .position-document-tab-title { font-size: 10px; }
}

@media (max-width: 760px) {
    .position-documents-shell { padding: 8px 0 0; background: transparent; }
    .position-document-desktop-layout { display: block; }
    .position-document-rail { display: none; }
    .position-document-mobile-tabs {
        display: flex;
        gap: 6px;
        overflow-x: auto;
        padding: 0 8px 8px;
        scrollbar-width: thin;
    }
    .position-document-mobile-tab {
        flex: 0 0 auto;
        min-width: 54px;
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: center;
        gap: 4px;
        padding: 5px 6px;
        border: 1px solid #b5d1ff;
        border-radius: 6px;
        background: #e6effc;
        color: #1848a4;
    }
    .position-document-mobile-tab > span { flex: 0 0 100%; font-size: 11px; font-weight: 600; }
    .position-document-mobile-tab.active { border-color: #b5d1ff; background: #e6effc; }
    .position-document-mobile-tab .doc-count { min-width: 10px; width: auto; height: auto; flex-basis: auto; font-size: 8px; }
    .position-document-card { border-right: 0; border-left: 0; border-radius: 0; }
    .position-document-status-badges { display: none; }
    .position-document-card-hold { grid-template-columns: minmax(0, 1fr); }
    .position-document-card-hold-clear { justify-self: end; }
    .position-document-fields { padding: 3px 9px 7px; }
    .position-document-fields-heading { display: none; }
    .position-document-field {
        grid-template-columns: minmax(0, 1fr);
        gap: 4px;
        align-items: stretch;
        padding: 4px 0;
    }
    .position-document-field > label { font-size: 10px; }
    .position-document-field-hold-reason { grid-column: 1; padding: 2px 29px 0 0; }
    .position-document-fields.po-reference-layout {
        min-width: 0;
        grid-template-columns: minmax(0, 1fr);
        gap: 10px;
        overflow-x: visible;
        padding: 4px 9px 8px;
    }
    .position-document-fields.po-reference-layout .position-document-po-column {
        gap: 7px;
        padding: 0 0 10px;
        border-left: 0;
        border-bottom: 1px solid #b5d1ff;
    }
    .position-document-fields.po-reference-layout .position-document-po-column:last-child {
        padding-bottom: 0;
        border-bottom: 0;
    }
    .position-document-fields.po-reference-layout .position-document-field {
        min-height: 62px;
        padding: 7px;
    }
    .position-document-fields.po-reference-layout .position-document-field > label { min-height: 16px; }
    .position-document-fields.position-document-grouped-layout {
        min-width: 0;
        grid-template-columns: minmax(0, 1fr);
        gap: 10px;
        overflow-x: visible;
        padding: 4px 9px 8px;
    }
    .position-document-field-group {
        padding: 0 0 10px;
        border-left: 0;
        border-bottom: 1px solid #b5d1ff;
    }
    .position-document-field-group:last-child {
        padding-bottom: 0;
        border-bottom: 0;
    }
    .position-document-field-group-title {
        min-height: 22px;
        margin-bottom: 7px;
        padding-bottom: 4px;
        font-size: 9.5px;
    }
    .position-document-field-group-fields { gap: 7px; }
    .position-document-fields.position-document-grouped-layout .position-document-field {
        min-height: 62px;
        padding: 7px;
    }
    .position-document-fields.position-document-grouped-layout .position-document-field > label { min-height: 16px; }
    .position-document-fields.psb-two-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 7px;
        padding: 4px 9px 8px;
    }
    .position-document-fields.psb-two-row .position-document-field {
        min-height: 70px;
        display: flex;
        padding: 4px 0 5px;
    }
    .position-document-fields.psb-two-row .position-document-field > label { min-height: 20px; }
    .position-document-fields.psb-two-row .position-document-field-hold-reason { padding: 0; }
    .position-document-fields.kj-two-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 7px;
        padding: 4px 9px 8px;
    }
    .position-document-fields.kj-two-row .position-document-field {
        min-height: 70px;
        display: flex;
        padding: 4px 0 5px;
    }
    .position-document-fields.kj-two-row .position-document-field > label { min-height: 20px; }
    .position-document-fields.kj-two-row .position-document-field-hold-reason { padding: 0; }
    .position-document-fields.so-two-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 7px;
        padding: 4px 9px 8px;
    }
    .position-document-fields.so-two-row .position-document-field {
        min-height: 72px;
        display: flex;
        padding: 4px 0 5px;
    }
    .position-document-fields.so-two-row .position-document-field > label { min-height: 20px; }
    .position-document-fields.so-two-row .position-document-field-hold-reason { padding: 0; }
    .position-document-fields.sep2-two-row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        column-gap: 7px;
        padding: 4px 9px 8px;
    }
    .position-document-fields.sep2-two-row .position-document-field {
        min-height: 72px;
        display: flex;
        padding: 4px 0 5px;
    }
    .position-document-fields.sep2-two-row .position-document-field > label { min-height: 20px; }
    .position-document-fields.sep2-two-row .position-document-field-hold-reason { padding: 0; }
    .position-document-card-hold { grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 5px 9px; }
    .position-document-mobile-host { margin: 4px -10px -10px; }
}

/* v2.14.19 — состояние каждого параметра в карточках документов позиции. */
.position-document-field.state-filled,
.position-document-field.state-missing,
.position-document-field.state-hold,
.position-document-field.state-error {
    border-radius: 4px;
    transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.position-document-field.state-filled {
    background: rgba(22, 163, 74, .05);
    box-shadow: inset 3px 0 rgba(22, 163, 74, .16);
}
.position-document-field.state-missing {
    background: rgba(180, 83, 9, .05);
    box-shadow: inset 3px 0 rgba(180, 83, 9, .16);
}
.position-document-field.state-hold {
    background: rgba(37, 99, 235, .05);
    box-shadow: inset 3px 0 rgba(37, 99, 235, .16);
}
.position-document-field.state-error {
    background: rgba(220, 38, 38, .05);
    box-shadow: inset 3px 0 rgba(220, 38, 38, .16);
}
.position-document-field.state-filled > label { color: #166534; }
.position-document-field.state-missing > label { color: #92400e; }
.position-document-field.state-hold > label { color: #1848a4; }
.position-document-field.state-error > label { color: #991b1b; }
.position-document-field.state-filled .position-document-editor input,
.position-document-field.state-filled .position-document-editor select,
.position-document-field.state-filled .position-document-editor textarea {
    box-shadow: inset 0 0 0 1px rgba(22, 163, 74, .09);
}
.position-document-field.state-missing .position-document-editor input,
.position-document-field.state-missing .position-document-editor select,
.position-document-field.state-missing .position-document-editor textarea {
    box-shadow: inset 0 0 0 1px rgba(180, 83, 9, .11);
}
.position-document-field.state-hold .position-document-editor input,
.position-document-field.state-hold .position-document-editor select,
.position-document-field.state-hold .position-document-editor textarea {
    box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .11);
}
.position-document-field.state-error .position-document-editor input,
.position-document-field.state-error .position-document-editor select,
.position-document-field.state-error .position-document-editor textarea {
    box-shadow: inset 0 0 0 1px rgba(220, 38, 38, .14);
}
.position-document-field.state-filled .position-document-editor input:focus,
.position-document-field.state-filled .position-document-editor select:focus,
.position-document-field.state-filled .position-document-editor textarea:focus,
.position-document-field.state-missing .position-document-editor input:focus,
.position-document-field.state-missing .position-document-editor select:focus,
.position-document-field.state-missing .position-document-editor textarea:focus,
.position-document-field.state-hold .position-document-editor input:focus,
.position-document-field.state-hold .position-document-editor select:focus,
.position-document-field.state-hold .position-document-editor textarea:focus,
.position-document-field.state-error .position-document-editor input:focus,
.position-document-field.state-error .position-document-editor select:focus,
.position-document-field.state-error .position-document-editor textarea:focus {
    background: #e6effc;
    box-shadow: inset 0 -1px rgba(37, 99, 235, .16);
}
.position-document-fields.po-reference-layout .position-document-field.state-filled,
.position-document-fields.position-document-grouped-layout .position-document-field.state-filled {
    border-color: #86efac;
    background: rgba(22, 163, 74, .07);
}
.position-document-fields.po-reference-layout .position-document-field.state-missing,
.position-document-fields.position-document-grouped-layout .position-document-field.state-missing {
    border-color: #f4c56b;
    background: rgba(180, 83, 9, .08);
}
.position-document-fields.po-reference-layout .position-document-field.state-hold,
.position-document-fields.position-document-grouped-layout .position-document-field.state-hold {
    border-color: #b5d1ff;
    background: rgba(37, 99, 235, .08);
}
.position-document-fields.po-reference-layout .position-document-field.state-error,
.position-document-fields.position-document-grouped-layout .position-document-field.state-error {
    border-color: #fca5a5;
    background: rgba(220, 38, 38, .08);
}

/* v2.14.21 — группировка рабочих карточек и заглушки разделов в разработке. */

/* v2.14.24 — разделы рабочей документации по форматам «Разделы РД» */
.nav-section-caption {
    min-height: 23px;
    display: flex;
    align-items: end;
    padding: 8px 11px 3px;
    color: #607088;
    font-size: 9px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.app-shell.drawer-closed .nav-section-caption { height: 8px; min-height: 8px; padding: 0; border-top: 1px solid #dae1eb; }
.app-shell.drawer-closed .nav-section-caption .nav-label { display: none; }
.rd-nav-icon {
    width: 31px !important;
    min-width: 31px !important;
    height: 22px;
    display: inline-grid !important;
    place-items: center;
    border: 0 !important;
    border-radius: 0 !important;
    font-size: 8px !important;
    font-weight: 900;
    letter-spacing: -.04em;
    line-height: 1;
}
.app-shell.drawer-closed .rd-nav-icon { width: 31px !important; min-width: 31px !important; font-size: 8px !important; }

.rd-workspace { min-width: 0; }
.rd-toolbar .button { white-space: nowrap; }
.rd-layout { min-height: 540px; }
.rd-table-card { min-width: 0; }
.rd-table-scroll { width: 100%; height: 100%; }
.rd-table {
    width: auto;
    min-width: 0;
    max-width: none;
    table-layout: fixed;
    font-size: 10px;
}
.rd-table th,
.rd-table td {
    padding: 5px 6px;
    text-align: center;
    vertical-align: middle;
}
.rd-table.resizable-table td { width: auto !important; min-width: 0 !important; max-width: none !important; }
.rd-table th { white-space: normal; line-height: 1.15; }
.rd-table td { max-height: 74px; overflow: hidden; text-overflow: ellipsis; white-space: pre-wrap; }
.rd-table thead th,
.rd-table .rd-format-head th,
.rd-table .rd-number-head th {
    position: sticky;
    background: #eef2f7;
    color: #1848a4;
    border-color: #cfd7e3;
}
.rd-table .rd-format-head th {
    height: 46px;
    z-index: 4;
    font-size: 9px;
    font-weight: 700;
}
.rd-table .rd-format-head:first-child th { border-top: 0; }
.rd-table .rd-number-head th {
    height: 30px;
    padding: 3px 28px 3px 5px;
    z-index: 6;
    font-size: 9px;
    background: #f3f6fb;
}
.rd-table .rd-number-head .pvv-column-number { display: inline-block; min-width: 14px; color: #435167; font-weight: 800; }
.rd-table .rd-number-head .table-filter-button { right: 4px; width: 20px; height: 22px; color: #435167; }
.rd-table .rd-number-head .column-resizer { z-index: 8; }
.rd-table tbody tr { cursor: pointer; }
.rd-table tbody tr:hover > td { background-color: rgba(37, 99, 235, .08); }
.rd-table tbody tr.pvv-row-error > td { background-color: rgba(220, 38, 38, .08); }
.rd-table tbody tr.pvv-row-warning > td { background-color: rgba(180, 83, 9, .07); }
.rd-table tbody tr.selected > td { background-color: rgba(37, 99, 235, .18) !important; }
.rd-table .rd-required-cell:first-child { font-weight: 800; }
.rd-table .rd-psd-cause { background: linear-gradient(13deg, #eef2f7 49.4%, #d6dee9 50%, #eef2f7 50.6%); }
.rd-table .rd-psd-effect { background: linear-gradient(167deg, #eef2f7 49.4%, #d6dee9 50%, #eef2f7 50.6%); }

.rd-editor-card { min-width: 0; }
.rd-editor-scroll { padding: 9px; }
.rd-sequence-field { width: min(180px, 100%); margin-bottom: 9px; }
.rd-editor-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.rd-editor-grid label.wide { grid-column: 1 / -1; }
.rd-editor-grid label > span { min-height: 24px; line-height: 1.2; }
.rd-editor-grid textarea { min-height: 82px; }
.rd-required-mark { color: #991b1b; }

.rd-development-workspace { display: flex; min-height: calc(100vh - 54px); flex-direction: column; gap: 12px; }
.rd-development-card {
    min-height: 360px;
    display: grid;
    place-items: center;
    align-content: center;
    gap: 10px;
    padding: 30px;
    border: 1px dashed #cfd7e3;
    border-radius: 9px;
    background: linear-gradient(145deg, #f5f7fb, #f5f7fb);
    color: #435167;
    text-align: center;
}
.rd-development-card strong { font-size: 28px; color: #92400e; }
.rd-development-card p { max-width: 700px; margin: 0; color: #607088; line-height: 1.55; }
.rd-development-code {
    display: grid;
    place-items: center;
    min-width: 72px;
    height: 50px;
    padding: 0 14px;
    border: 1px solid #cfd7e3;
    border-radius: 7px;
    background: #f3f6fb;
    color: #1848a4;
    font-size: 18px;
    font-weight: 900;
}

@media (max-width: 760px) {
    .rd-editor-grid { grid-template-columns: 1fr; }
    .rd-editor-grid label.wide { grid-column: auto; }
    .rd-table .rd-format-head th { height: 40px; font-size: 8px; }
}


/* ПСД — специальная матричная форма, а не обычная таблица. */
.psd-matrix-shell {
    display: flex;
    flex-direction: column;
    gap: 0;
    min-width: max-content;
}
.psd-top-header {
    display: flex;
    align-items: stretch;
    min-width: max-content;
    border: 1px solid #cfd7e3;
    border-bottom: 0;
    background: #eef2f7;
}
.psd-diagonal-area {
    position: relative;
    min-height: 312px;
    flex: 0 0 auto;
    overflow: hidden;
    border-right: 1px solid #cfd7e3;
    background: #eef2f7;
}
.psd-diagonal-line {
    position: absolute;
    inset: 0;
    background: linear-gradient(33deg, transparent calc(50% - 1px), #d6dee9 50%, transparent calc(50% + 1px));
    pointer-events: none;
}
.psd-diagonal-cause,
.psd-diagonal-effect {
    position: absolute;
    color: #1b2433;
    font-size: 20px;
    font-weight: 500;
}
.psd-diagonal-cause { left: 16%; top: 55%; transform: translate(-10%, -50%); }
.psd-diagonal-effect { right: 14%; top: 24%; transform: translate(10%, -50%); }
.psd-diagonal-legend {
    position: absolute;
    right: 18px;
    top: 40%;
    display: flex;
    flex-direction: column;
    gap: 3px;
    max-width: 170px;
    padding: 8px 10px;
    border: 1px dashed #adbbcf;
    border-radius: 8px;
    background: rgba(96, 112, 136, .12);
    color: #1848a4;
    font-size: 11px;
    line-height: 1.15;
}
.psd-consequence-header {
    display: grid;
    grid-auto-rows: auto;
    align-items: stretch;
    flex: 1 1 auto;
    min-width: max-content;
}
.psd-consequence-header > div {
    min-width: 0;
    min-height: 44px;
    display: grid;
    place-items: center;
    padding: 4px 3px;
    border-left: 1px solid #cfd7e3;
    border-top: 1px solid #cfd7e3;
    color: #1848a4;
    background: #eef2f7;
    text-align: center;
    box-sizing: border-box;
}
.psd-consequence-header > div:nth-child(-n + 1000) { border-top: 0; }
.psd-side-label {
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .02em;
}
.psd-top-number {
    min-height: 38px !important;
    font-size: 13px;
    font-weight: 800;
}
.psd-vertical-cell {
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    text-orientation: mixed;
    font-size: 10px;
    line-height: 1.05;
}
.psd-vertical-desc { font-size: 9px; }
.psd-body-scroll {
    border: 1px solid #cfd7e3;
    border-top: 0;
}
.psd-body-table { min-width: max-content; }
.psd-body-table thead th {
    top: 0 !important;
    z-index: 5;
}
.psd-body-table .psd-body-head th {
    height: 52px;
    font-size: 9px;
}
.psd-body-table td.psd-action-cell {
    min-width: 56px;
    max-width: 56px;
    font-weight: 700;
    letter-spacing: .02em;
}
.psd-editor-actions-block {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid #b5d1ff;
}
.psd-editor-actions-title {
    margin-bottom: 10px;
    color: #1848a4;
    font-size: 12px;
    font-weight: 700;
}
.psd-editor-actions-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 8px;
}
.psd-editor-actions-grid label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 8px;
    border: 1px solid #b5d1ff;
    border-radius: 4px;
    background: rgba(37, 99, 235, .18);
}
.psd-editor-actions-grid label span {
    min-height: 0;
    color: #1848a4;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.15;
}
.psd-editor-actions-grid label small {
    color: #435167;
    font-size: 10px;
    line-height: 1.15;
}
.psd-action-input { width: 100%; }
@media (max-width: 900px) {
    .psd-diagonal-area { min-height: 250px; }
    .psd-diagonal-cause, .psd-diagonal-effect { font-size: 16px; }
    .psd-diagonal-legend { position: absolute; right: 12px; top: 44%; max-width: 140px; font-size: 10px; }
}


/* ПСД — горизонтальная компоновка «Причина | Параметр | Следствие». */
.psd-horizontal-scroll {
    width: 100%;
    height: 100%;
    overflow: auto;
    border: 1px solid #cfd7e3;
    background: #f3f6fb;
}
.psd-horizontal-groups {
    display: flex;
    align-items: flex-start;
    min-width: max-content;
}
.psd-split-table {
    flex: 0 0 auto;
    margin: 0;
    border: 0;
    border-collapse: collapse;
    table-layout: fixed;
    background: #f3f6fb;
}
.psd-split-table + .psd-split-table { border-left: 0; }
.psd-split-table th,
.psd-split-table td {
    border-color: #cfd7e3;
    box-sizing: border-box;
}
.psd-group-title-row th {
    position: sticky;
    top: 0;
    z-index: 8;
    height: 38px;
    padding: 7px 8px;
    background: #eef2f7;
    color: #1848a4;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .02em;
    text-align: center;
}
.psd-field-title-row th {
    position: sticky;
    top: 38px;
    z-index: 7;
    height: 88px;
    padding: 5px 6px;
    background: #f3f6fb;
    color: #1848a4;
    font-size: 9px;
    font-weight: 700;
    line-height: 1.15;
    white-space: normal;
    text-align: center;
    vertical-align: middle;
}
.psd-split-table tbody tr { height: 54px; }
.psd-split-table tbody td {
    height: 54px;
    max-height: 54px;
    padding: 5px 6px;
    overflow: hidden;
    color: #1848a4;
    font-size: 10px;
    line-height: 1.16;
    text-overflow: ellipsis;
    white-space: pre-wrap;
    vertical-align: middle;
}
.psd-cause-table { border-right: 0; }
.psd-cause-table .psd-group-title-row th {
    background: linear-gradient(180deg, #eef2f7, #eef2f7);
}
.psd-parameter-table {
    width: 180px;
    border-left: 3px solid #adbbcf;
    border-right: 3px solid #adbbcf;
    background: #f5f7fb;
}
.psd-parameter-table .psd-group-title-row th {
    background: #e8edf5;
    color: #1b2433;
}
.psd-parameter-table .psd-field-title-row th {
    background: #eef2f7;
    color: #1848a4;
}
.psd-parameter-cell {
    background: rgba(37, 99, 235, .18) !important;
    color: #1848a4 !important;
    font-weight: 800;
    text-align: center;
}
.psd-effect-table .psd-group-title-row th {
    background: linear-gradient(180deg, #eef2f7, #eef2f7);
}
.psd-device-header {
    min-width: 56px;
    max-width: 56px;
    padding: 4px 2px !important;
}
.psd-device-header span {
    display: inline-block;
    max-height: 76px;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    text-orientation: mixed;
    overflow: hidden;
    font-size: 8.5px;
    line-height: 1;
}
.psd-effect-table td.psd-action-cell {
    min-width: 56px;
    max-width: 56px;
    padding: 4px 2px;
    font-size: 11px;
    font-weight: 900;
    text-align: center;
}
.psd-split-table tbody tr:hover > td { background-color: rgba(37, 99, 235, .08); }
.psd-split-table tbody tr.selected > td { background-color: rgba(37, 99, 235, .18) !important; }
.psd-parameter-table tbody tr.selected > .psd-parameter-cell { background-color: rgba(37, 99, 235, .18) !important; }
@media (max-width: 760px) {
    .psd-group-title-row th { height: 34px; font-size: 12px; }
    .psd-field-title-row th { top: 34px; height: 76px; font-size: 8px; }
    .psd-parameter-table { width: 150px; }
}

/* v2.14.28 — единые источники, подтверждение и конфликты общих полей позиции. */
.position-document-field.state-reconfirmation {
    border-color: #f4c56b;
    outline: 1px dashed #f4c56b;
    outline-offset: -2px;
}
.position-document-field.state-conflict {
    border-color: #fca5a5;
}
.position-document-field > label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
}
.position-shared-conflict {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 5px 7px;
    border: 1px solid #fca5a5;
    border-radius: 5px;
    background: rgba(220, 38, 38, .08);
    color: #991b1b;
    font-size: 9px;
}
.position-shared-conflict > div { display: flex; gap: 5px; }
.position-shared-conflict button {
    min-height: 24px;
    padding: 2px 7px;
    border: 1px solid #fca5a5;
    border-radius: 4px;
    background: rgba(220, 38, 38, .18);
    color: #991b1b;
    font-size: 8.5px;
    cursor: pointer;
}
.position-shared-conflict button:hover:not(:disabled) { background: rgba(220, 38, 38, .18); }
.position-shared-conflict button:disabled { opacity: .5; cursor: default; }
.rd-position-link-field {
    display: grid;
    gap: 4px;
    margin: 0 0 10px;
    padding: 8px;
    border: 1px solid #b5d1ff;
    border-radius: 6px;
    background: rgba(37, 99, 235, .06);
}
.rd-position-link-field small { color: #607088; font-size: 9px; line-height: 1.25; }
@media (max-width: 760px) {
    .position-shared-conflict { align-items: stretch; flex-direction: column; }
    .position-shared-conflict > div { flex-wrap: wrap; }
}


/* v2.14.30 — мягкие связи: поля редактируются свободно, расхождения показываются как ошибки. */
.rd-field-error input,
.rd-field-error textarea,
.rd-field-error select {
    border-color: #fca5a5 !important;
    box-shadow: 0 0 0 1px rgba(220, 38, 38, .08);
}
.rd-field-error-text {
    display: block;
    margin-top: 4px;
    color: #991b1b;
    font-size: 11px;
    line-height: 1.25;
}

/* v2.14.32 — поклеточное сравнение соседних версий задания. */
.technologist-excel-table tbody td.version-cell-changed {
    background-color: rgba(220, 38, 38, .08) !important;
    box-shadow: inset 0 0 0 1px rgba(220, 38, 38, .08);
}
.technologist-excel-table tbody tr:hover td.version-cell-changed,
.technologist-excel-table tbody tr.selected td.version-cell-changed {
    background-color: rgba(220, 38, 38, .11) !important;
}
.cell-changes-modal { max-width: min(980px, calc(100vw - 34px)); }
.cell-change-list {
    display: grid;
    gap: 10px;
    max-height: min(62vh, 620px);
    overflow: auto;
    padding: 2px 3px 8px;
}
.cell-change-card {
    overflow: hidden;
    border: 1px solid #adbbcf;
    border-radius: 8px;
    background: rgba(37, 99, 235, .18);
}
.cell-change-card > header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 10px;
    border-bottom: 1px solid #adbbcf;
}
.cell-change-values {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 34px minmax(0, 1fr);
    align-items: stretch;
}
.cell-change-values section { min-width: 0; padding: 10px; }
.cell-change-values section > span {
    display: block;
    margin-bottom: 6px;
    color: #607088;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.cell-change-values section > div {
    min-height: 42px;
    padding: 8px;
    border-radius: 5px;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    line-height: 1.35;
}
.cell-change-before > div { background: rgba(220, 38, 38, .05); }
.cell-change-after > div { background: rgba(22, 163, 74, .05); }
.cell-change-arrow {
    display: grid;
    place-items: center;
    color: #607088;
    font-size: 18px;
}
.cell-change-empty { margin: 8px 0 2px; }
@media (max-width: 680px) {
    .cell-change-values { grid-template-columns: 1fr; }
    .cell-change-arrow { height: 28px; transform: rotate(90deg); }
}

/* 2.14.34: редактируемая секция задания и отображение связанной секции */
.detail-inline-input {
    width: 100%;
    min-width: 120px;
    padding: 5px 7px;
    border: 1px solid var(--border, #b5d1ff);
    border-radius: 6px;
    background: var(--surface, #ffffff);
    color: inherit;
    font: inherit;
}
.detail-inline-input:disabled {
    border-color: transparent;
    background: transparent;
    padding-left: 0;
    opacity: 1;
}
.work-title-code {
    font-size: 11px;
    font-weight: 600;
    opacity: .72;
}

/* 2.14.36 — справочник кабелей КИП */
.cable-directory-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(310px, 390px);
    gap: 14px;
    min-height: 0;
}
.cable-directory-list { min-width: 0; }
.cable-directory-toolbar { flex-wrap: wrap; }
.cable-directory-toolbar .search-box { min-width: 280px; flex: 1 1 360px; }
.cable-directory-toolbar select { min-width: 145px; }
.cable-directory-summary {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    padding: 8px 12px;
    border-bottom: 1px solid var(--line-color, #adbbcf);
    font-size: 12px;
}
.column-picker { margin-left: auto; position: relative; }
.column-picker summary { cursor: pointer; user-select: none; font-weight: 600; }
.column-picker[open] {
    z-index: 20;
    background: var(--surface-color, #ffffff);
    border: 1px solid var(--line-color, #adbbcf);
    border-radius: 8px;
    padding: 7px 10px;
    box-shadow: 0 10px 28px rgba(37, 99, 235, .06);
}
.column-picker label { display: block; white-space: nowrap; margin-top: 5px; }
.cable-directory-table-scroll { max-height: calc(100vh - 315px); }
.cable-directory-table { min-width: 1220px; }
.cable-directory-table th { cursor: pointer; }
.cable-editor-card { min-height: 0; overflow: auto; max-height: calc(100vh - 205px); }
.cable-editor-form textarea { min-height: 58px; }
.cable-import-card {
    display: grid;
    gap: 8px;
    padding: 12px;
    border-top: 1px solid var(--line-color, #adbbcf);
    background: rgba(96, 112, 136, .04);
}
.cable-import-card strong { font-size: 13px; }
.cable-directory-notice { margin-top: 10px; }
.cable-reference-editor { display: grid; gap: 5px; width: 100%; }
.cable-reference-editor select,
.cable-reference-editor input { width: 100%; }
.cable-reference-status {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 11px;
}
.cable-reference-status.changed { color: #92400e; }
.cable-reference-status.manual { color: #1848a4; }
.cable-reference-status.inactive { color: #991b1b; }
.cable-reference-status button {
    border: 0;
    border-radius: 6px;
    padding: 3px 7px;
    cursor: pointer;
}
@media (max-width: 1100px) {
    .cable-directory-layout { grid-template-columns: 1fr; }
    .cable-editor-card { max-height: none; }
}

/* 2.14.36 — выбор кабеля из справочника в карточках КЖ/СЭП. */
.position-cable-reference {
    display: grid;
    gap: 5px;
    width: 100%;
    min-width: 0;
}
.position-cable-reference select,
.position-cable-reference input,
.position-cable-reference textarea { width: 100%; min-width: 0; }
.position-cable-reference-status {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 9px;
    line-height: 1.2;
}
.position-cable-reference-status.linked { color: #166534; }
.position-cable-reference-status.changed { color: #92400e; }
.position-cable-reference-status.manual { color: #1848a4; }
.position-cable-reference-status.inactive { color: #991b1b; }
.position-cable-reference-status button {
    min-height: 21px;
    padding: 2px 6px;
    border: 1px solid #adbbcf;
    border-radius: 4px;
    background: rgba(37, 99, 235, .18);
    color: inherit;
    font-size: 8px;
    cursor: pointer;
}
.position-cable-reference-status button:disabled { opacity: .5; cursor: default; }
.cable-directory-toolbar .cable-type-filter {
    min-width: 190px;
    flex: 0 1 240px;
}


/* 2.14.38 — светлая тема в палитре «Менеджера проектов Fan». */
html, body { background: var(--bg); color: var(--text); }
button, input, select, textarea { color-scheme: light; }
input::placeholder, textarea::placeholder { color: #8795a8; opacity: 1; }
option { background: #ffffff; color: #1b2433; }
.sidebar { background: #ffffff; border-color: #cfd7e3; }
.brand-mark { background: linear-gradient(145deg, #2563eb, #1848a4); color: #ffffff; }
.button.primary, .button.success, .button.danger,
.critical, .nav-unread, .unread-badge, .rule-number { color: #ffffff; }
.button.primary { background: #2563eb; border-color: #2563eb; }
.button.primary:hover:not(:disabled) { background: #1d4ed8; border-color: #1d4ed8; }
.button.success { background: #16a34a; border-color: #16a34a; }
.button.danger { background: #dc2626; border-color: #dc2626; }
.button.warning { background: #fff7e6; border-color: #f4c56b; color: #92400e; }
.critical { background: #dc2626; border-color: #dc2626; }
.modal-backdrop, .drawer-overlay { background: rgba(27, 36, 51, .38); }
.data-table tbody tr.selected > td,
.data-table tbody tr.multi-selected > td,
.pvv-table tbody tr.selected > td,
.rd-table tbody tr.selected > td,
.psd-split-table tbody tr.selected > td { background-color: #d6e6ff !important; color: #152b4b; }
.data-table tbody tr:hover > td { background-color: #eef4ff; }
.data-table th { color: #1b2433; }
.position-document-host-row > td,
.position-document-host-row:hover > td { background: #eef4fb !important; border-bottom-color: #cfd7e3 !important; }
.position-document-tab.active,
.position-section-tab.active { color: #152b4b; }
.position-document-tab.active .position-document-tab-title { color: #152b4b; }

/* 2.14.39 — строгая инженерная компоновка форм и элементов.
   Светлая палитра сохранена; декоративные эффекты заменены ясной геометрией. */
:root {
    --shadow: 0 4px 14px rgba(15, 23, 42, .12);
    --ui-radius: 2px;
    --ui-radius-panel: 3px;
    --ui-control-height: 30px;
}

/* Более плотный рабочий ритм. */
.workspace { gap: 7px; padding: 12px 14px 8px; }
.workspace-header h1 { font-size: 20px; font-weight: 650; }
.workspace-header p { font-size: 12px; }
.toolbar,
.filterbar { padding: 5px 6px; }
.toolbar,
.filterbar,
.tabs,
.statusbar,
.table-panel,
.detail-card,
.chat-layout,
.pvv-summary,
.pvv-table-card,
.pvv-editor-card,
.rd-table-card,
.rd-editor-card,
.cable-editor-card {
    border-radius: var(--ui-radius-panel);
}
.table-actions { min-height: 34px; padding: 4px 6px; }
.details-panel { gap: 7px; }
.detail-card-title { padding: 7px 9px; }
.detail-card dt,
.detail-card dd { padding: 5px 8px; }

/* Кнопки и поля — одинаковая высота, прямые границы, без «пузырей». */
.button {
    min-height: var(--ui-control-height);
    padding: 5px 10px;
    border-radius: var(--ui-radius);
    font-weight: 500;
}
.button.small { min-height: 26px; padding: 3px 8px; }
.icon-button,
.mini-button,
.drawer-toggle,
.drawer-close,
.sidebar-user button,
.table-filter-button {
    border-radius: var(--ui-radius);
}
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
select,
textarea,
.search-box,
.detail-inline-input,
.inline-cell-editor {
    border-radius: var(--ui-radius) !important;
}
.search-box,
.filterbar > select { height: var(--ui-control-height); }
.form-grid { gap: 8px; padding: 12px; }
.form-grid label,
.login-fields label { gap: 4px; }
.form-grid input,
.form-grid select,
.form-grid textarea { min-height: 32px; padding: 6px 7px; }
.form-grid textarea { min-height: 68px; }
.filterbar input:focus,
.filterbar select:focus,
.form-grid input:focus,
.form-grid select:focus,
.form-grid textarea:focus,
.login-fields input:focus,
.inline-cell-editor:focus {
    box-shadow: 0 0 0 1px rgba(37, 99, 235, .28);
}

/* Панели, диалоги и выпадающие формы. */
.modal-backdrop { backdrop-filter: none; }
.modal,
.login-card,
.table-filter-popup,
.table-context-menu,
.table-columns-popup,
.column-picker[open] {
    border-radius: var(--ui-radius-panel);
    box-shadow: var(--shadow);
}
.modal-header { padding: 9px 12px; }
.modal-actions { padding: 8px 12px; }
.login-page { background: #f1f4f9; }
.login-card { padding: 20px; }
.login-fields { gap: 10px; }
.login-fields input { min-height: 36px; border-radius: var(--ui-radius); }
.login-button { min-height: 36px; }
.notice,
.login-error,
.login-note,
.file-chip,
.rd-position-link-field,
.position-shared-conflict {
    border-radius: var(--ui-radius);
}

/* Навигация: активный раздел обозначается полосой, а не объёмной карточкой. */
.shell-bar,
.sidebar { box-shadow: none; }
.brand-mark,
.brand-icon,
.brand-icon.large,
.shell-bar-icon,
.sidebar-brand-copy .brand-icon { border-radius: var(--ui-radius-panel); }
.side-nav { gap: 2px; }
.side-nav a,
.side-nav button,
.side-nav button.sub,
.structure-panel button {
    border-radius: var(--ui-radius);
}
.side-nav a.active,
.side-nav button.active {
    background: #e8eef7;
    box-shadow: inset 3px 0 0 var(--blue);
}
.application-menu-popup {
    border-radius: 0 0 var(--ui-radius-panel) var(--ui-radius-panel);
    box-shadow: var(--shadow);
}
.application-menu-popup button { border-radius: var(--ui-radius); }

/* Таблицы — плотнее, с явной сеткой и нейтральной шапкой. */
.data-table th,
.data-table td { padding: 5px 7px; }
.data-table th {
    background: #e9eef5;
    font-weight: 650;
    box-shadow: inset 0 -1px #bcc7d5;
}
.data-table tbody tr,
.data-table tbody tr:nth-child(even) { background: #ffffff; }
.data-table tbody tr:nth-child(even) { background: #f8fafc; }
.status-pill,
.row-state,
.change-type,
.severity,
.tabs button span,
.task-stage-tabs b,
.tab-count,
.nav-unread,
.unread-badge,
.work-group-badges span,
.work-mobile-node > summary span {
    border-radius: var(--ui-radius);
}
.technologist-excel-table thead th { padding-top: 5px; padding-bottom: 5px; }

/* Карточки этапов и сводки без градиентов и плавающих теней. */
.task-stage-tabs { gap: 5px; }
.task-stage-tabs button {
    padding: 7px 9px;
    border-radius: var(--ui-radius-panel);
    background: #ffffff;
}
.task-stage-tabs button.active {
    background: #e8eef7;
    box-shadow: inset 3px 0 var(--blue);
}
.task-stage-icon { border-radius: var(--ui-radius); }
.work-summary { gap: 5px; }
.work-summary > div {
    padding: 8px 10px;
    border-radius: var(--ui-radius-panel);
    background: #ffffff;
}
.work-summary-note { background: #edf3fc !important; }
.work-group-header > td,
.work-group-header[data-group-collapsed="true"] .work-group-bar,
.work-mobile-node > summary {
    background-image: none !important;
    background-color: #edf3f9 !important;
}
.work-mobile-node,
.work-mobile-row { border-radius: var(--ui-radius-panel); }
.work-mobile-row.selected { box-shadow: inset 3px 0 var(--blue); }

/* Карточки документов позиции — строгая плоская форма. */
.position-documents-shell {
    padding: 7px 9px 9px;
    background: #edf3f9;
}
.position-document-toggle {
    width: 28px;
    height: 28px;
    border-radius: var(--ui-radius);
    background: #edf3fc;
    box-shadow: none;
    transition: background .12s, border-color .12s;
}
.position-document-toggle:hover {
    transform: none;
    background: #e2ebf8;
    box-shadow: none;
}
.position-document-tab,
.position-document-tab.active,
.position-document-tab:hover {
    border-radius: var(--ui-radius) 0 0 var(--ui-radius);
    background: #edf3fc;
    box-shadow: none;
    filter: none;
}
.position-document-tab.active { background: #dfeaf8; }
.position-document-tab.active::before { border-radius: 0; box-shadow: none; }
.position-document-card {
    border-radius: var(--ui-radius-panel);
    background: #ffffff;
    box-shadow: none;
}
.position-document-card-header {
    min-height: 38px;
    padding: 5px 9px;
    background: #e9eff7;
}
.position-document-development strong,
.position-document-field-hold,
.position-document-card-hold-clear,
.position-document-card-hold input,
.position-document-field-hold-reason input,
.position-document-editor input,
.position-document-editor select,
.position-document-editor textarea {
    border-radius: var(--ui-radius);
}
.position-document-field-hold { border-radius: 50%; }
.position-document-field { min-height: 32px; }

/* Редакторы разделов и справочников. */
.pvv-editor-card fieldset,
.pvv-check-grid label,
.pvv-issue,
.pvv-editor-issues > div,
.rd-development-card,
.rd-development-code,
.psd-diagonal-legend,
.cell-change-card,
.cell-change-values section > div,
.column-picker[open] {
    border-radius: var(--ui-radius-panel);
}
.rd-development-card {
    background: #f8fafc;
    box-shadow: none;
}
.cell-change-card { background: #ffffff; }
.column-picker[open] { box-shadow: var(--shadow); }

@media (max-width: 760px) {
    .workspace { padding: 8px 7px 7px; }
    .table-filter-popup,
    .table-context-menu,
    .table-columns-popup,
    .application-menu-popup {
        border-radius: var(--ui-radius-panel);
    }
}

/* 2.14.40 — контрастная инженерная палитра.
   Рабочие состояния различаются не только цветом, но также рамкой и полосой состояния. */
:root {
    --bg: #eef2f6;
    --panel: #ffffff;
    --panel-2: #f7f9fc;
    --panel-3: #e7edf4;
    --border: #b7c1cd;
    --border-soft: #d2d9e2;
    --text: #172033;
    --muted: #536277;
    --blue: #1d5fc4;
    --blue-hover: #164ea6;
    --green: #16813d;
    --orange: #a75b00;
    --red: #c62828;
}

html,
body,
.login-page { background: var(--bg); color: var(--text); }

input::placeholder,
textarea::placeholder { color: #748399; }

.shell-bar,
.sidebar,
.toolbar,
.filterbar,
.tabs,
.statusbar,
.table-panel,
.detail-card,
.position-document-card { border-color: var(--border); }

.button {
    border-color: #aeb9c6;
    background: #f4f6f8;
    color: #172033;
}
.button:hover:not(:disabled):not(.disabled) {
    border-color: #8795a6;
    background: #e8edf2;
}
.button.primary {
    border-color: #1d5fc4;
    background: #1d5fc4;
    color: #ffffff;
}
.button.primary:hover:not(:disabled) {
    border-color: #164ea6;
    background: #164ea6;
}
.button.success {
    border-color: #16813d;
    background: #16813d;
    color: #ffffff;
}
.button.warning {
    border-color: #c98916;
    background: #fff4d8;
    color: #744209;
}
.button.danger {
    border-color: #c62828;
    background: #c62828;
    color: #ffffff;
}

.filterbar input,
.filterbar select,
.form-grid input,
.form-grid select,
.form-grid textarea,
.search-box,
.login-fields input,
.position-context-bar input,
.position-context-bar select,
.position-editor-form input,
.position-editor-form select,
.position-editor-form textarea,
.pvv-context-bar input,
.pvv-context-bar select,
.pvv-editor-card input,
.pvv-editor-card select,
.pvv-editor-card textarea {
    border-color: #aeb9c6;
    background: #ffffff;
    color: #172033;
}

.filterbar input:focus,
.filterbar select:focus,
.form-grid input:focus,
.form-grid select:focus,
.form-grid textarea:focus,
.search-box:focus-within,
.login-fields input:focus,
.position-context-bar input:focus,
.position-context-bar select:focus,
.position-editor-form input:focus,
.position-editor-form select:focus,
.position-editor-form textarea:focus,
.pvv-context-bar input:focus,
.pvv-context-bar select:focus,
.pvv-editor-card input:focus,
.pvv-editor-card select:focus,
.pvv-editor-card textarea:focus {
    border-color: #1d5fc4;
    box-shadow: 0 0 0 2px rgba(29, 95, 196, .16);
}

.data-table th {
    border-color: #c4cdd8;
    background: #e3e9f0;
    color: #172033;
    box-shadow: inset 0 -1px #9eabb9;
}
.data-table td { border-color: #cbd3dd; color: #172033; }
.data-table tbody tr,
.data-table tbody tr:nth-child(even) { background: #ffffff; }
.data-table tbody tr:nth-child(even) { background: #f7f9fb; }
.data-table tbody tr:hover > td { background: #eaf2fc; }
.data-table tbody tr.selected > td,
.data-table tbody tr.multi-selected > td,
.pvv-table tbody tr.selected > td,
.rd-table tbody tr.selected > td,
.psd-split-table tbody tr.selected > td {
    background: #d9e8fa !important;
    color: #172b45;
}
.data-table tbody tr.selected > td:first-child,
.data-table tbody tr.multi-selected > td:first-child {
    box-shadow: inset 3px 0 #1d5fc4;
}
.strong-cell,
.work-info-card strong,
.work-info-card b,
.work-info-card .work-document-number,
.work-info-card .work-version,
.work-info-card .work-project-position { color: #1f4778; }
.work-info-card span:first-child,
.work-parameter-grid dt,
.work-table-hint { color: #536277; }
.work-parameter-grid dd,
.work-name-cell,
.work-notes-cell { color: #172033; }
.work-group-header > td,
.work-group-header[data-group-collapsed="true"] .work-group-bar,
.work-mobile-node > summary {
    border-color: #aeb9c6 !important;
    background: #e4ebf3 !important;
    color: #172033;
}

.blue {
    border-color: #78a5e3;
    background: #e5effc;
    color: #174a88;
}
.green {
    border-color: #6cb785;
    background: #edf8f1;
    color: #14532d;
}
.orange {
    border-color: #d8a23a;
    background: #fff6df;
    color: #744209;
}
.red {
    border-color: #d75c5c;
    background: #ffeded;
    color: #7d1717;
}
.gray {
    border-color: #aeb9c6;
    background: #eef2f6;
    color: #354256;
}

.position-document-host-row > td,
.position-document-host-row:hover > td {
    border-bottom-color: #aeb9c6 !important;
    background: #e9eef4 !important;
}
.position-documents-shell {
    border-color: #aeb9c6;
    background: #e9eef4;
}
.position-document-rail { background: #e9eef4; }
.position-document-tab,
.position-document-tab:hover {
    border-color: #aeb9c6;
    background: #eef2f6;
    color: #243b57;
    filter: none;
}
.position-document-tab::after { background: #9aa8b8; }
.position-document-tab-title { color: #243b57; }
.position-document-tab.active,
.position-document-tab.active:hover {
    border-color: #5f8fcf;
    background: #ffffff;
    color: #123a6b;
}
.position-document-tab.active::before {
    background: #1d5fc4;
    box-shadow: none;
}
.position-document-tab.active .position-document-tab-title { color: #123a6b; }

.position-document-card {
    border-color: #aebac8;
    background: #ffffff;
}
.position-document-card-header {
    border-color: #b9c4d0;
    background: #e8edf3;
}
.position-document-card-title strong,
.position-document-icon { color: #233c59; }
.position-document-card-hold {
    border-color: #6d98d3;
    background: #eaf2fd;
}
.position-document-card-hold span { color: #174a88; }
.position-document-card-hold input,
.position-document-field-hold-reason input {
    border: 1px solid #6d98d3;
    background: #ffffff;
    color: #173b68;
}
.position-document-fields-heading { color: #536277; }
.position-document-field { border-color: #c8d1dc; }
.position-document-field > label {
    color: #29384c;
    font-weight: 600;
}
.position-document-fields.po-reference-layout .position-document-po-column,
.position-document-fields.position-document-grouped-layout .position-document-field-group {
    border-color: #c4ced9;
}

.position-document-editor input,
.position-document-editor select,
.position-document-editor textarea {
    border: 1px solid #aeb9c6;
    background: #ffffff;
    color: #172033;
}
.position-document-editor input:hover,
.position-document-editor select:hover,
.position-document-editor textarea:hover { background: #f7f9fb; }
.position-document-editor input:focus,
.position-document-editor select:focus,
.position-document-editor textarea:focus {
    border-color: #1d5fc4;
    background: #ffffff;
    box-shadow: 0 0 0 2px rgba(29, 95, 196, .16);
}
.position-document-editor input:disabled,
.position-document-editor select:disabled,
.position-document-editor textarea:disabled {
    border-color: #b8c2cd;
    background: #e7ecf2;
    color: #4e5e72;
    -webkit-text-fill-color: #4e5e72;
    opacity: 1;
}
.position-document-field-hold {
    border-color: #aeb9c6;
    background: #ffffff;
    color: #536277;
    opacity: .42;
}
.position-document-field:hover .position-document-field-hold,
.position-document-field-hold:focus-visible,
.position-document-field-hold.active { opacity: 1; }
.position-document-field-hold.active {
    border-color: #4f83c6;
    background: #e5effc;
    color: #174a88;
}

.position-document-field.state-filled,
.position-document-fields.po-reference-layout .position-document-field.state-filled,
.position-document-fields.position-document-grouped-layout .position-document-field.state-filled {
    border-color: #6cb785;
    background: #f1f8f3;
    box-shadow: inset 3px 0 #16813d;
}
.position-document-field.state-missing,
.position-document-fields.po-reference-layout .position-document-field.state-missing,
.position-document-fields.position-document-grouped-layout .position-document-field.state-missing {
    border-color: #d8a23a;
    background: #fff8e8;
    box-shadow: inset 3px 0 #b66a00;
}
.position-document-field.state-hold,
.position-document-fields.po-reference-layout .position-document-field.state-hold,
.position-document-fields.position-document-grouped-layout .position-document-field.state-hold {
    border-color: #6d98d3;
    background: #eef4fd;
    box-shadow: inset 3px 0 #2f6db8;
}
.position-document-field.state-error,
.position-document-fields.po-reference-layout .position-document-field.state-error,
.position-document-fields.position-document-grouped-layout .position-document-field.state-error {
    border-color: #d75c5c;
    background: #fff0f0;
    box-shadow: inset 3px 0 #c62828;
}
.position-document-field.state-filled > label { color: #14532d; }
.position-document-field.state-missing > label { color: #744209; }
.position-document-field.state-hold > label { color: #174a88; }
.position-document-field.state-error > label { color: #7d1717; }

.position-document-field.state-filled .position-document-editor input,
.position-document-field.state-filled .position-document-editor select,
.position-document-field.state-filled .position-document-editor textarea {
    border-color: #76b98c;
    background: #ffffff;
    box-shadow: none;
}
.position-document-field.state-missing .position-document-editor input,
.position-document-field.state-missing .position-document-editor select,
.position-document-field.state-missing .position-document-editor textarea {
    border-color: #d8a23a;
    background: #fffdf7;
    box-shadow: none;
}
.position-document-field.state-hold .position-document-editor input,
.position-document-field.state-hold .position-document-editor select,
.position-document-field.state-hold .position-document-editor textarea {
    border-color: #6d98d3;
    background: #f8fbff;
    box-shadow: none;
}
.position-document-field.state-error .position-document-editor input,
.position-document-field.state-error .position-document-editor select,
.position-document-field.state-error .position-document-editor textarea {
    border-color: #d75c5c;
    background: #fff8f8;
    box-shadow: none;
}
.position-document-field.state-filled .position-document-editor input:disabled,
.position-document-field.state-filled .position-document-editor select:disabled,
.position-document-field.state-filled .position-document-editor textarea:disabled,
.position-document-field.state-missing .position-document-editor input:disabled,
.position-document-field.state-missing .position-document-editor select:disabled,
.position-document-field.state-missing .position-document-editor textarea:disabled,
.position-document-field.state-hold .position-document-editor input:disabled,
.position-document-field.state-hold .position-document-editor select:disabled,
.position-document-field.state-hold .position-document-editor textarea:disabled,
.position-document-field.state-error .position-document-editor input:disabled,
.position-document-field.state-error .position-document-editor select:disabled,
.position-document-field.state-error .position-document-editor textarea:disabled {
    background: #e7ecf2;
    color: #405166;
    -webkit-text-fill-color: #405166;
    opacity: 1;
}
.position-document-field.state-reconfirmation {
    border-color: #c27a10;
    outline-color: #c27a10;
}
.position-document-field.state-conflict { border-color: #c93e3e; }

.position-shared-conflict {
    border-color: #c93e3e;
    background: #fde7e7;
    color: #7d1717;
}
.position-shared-conflict button {
    border-color: #b83b3b;
    background: #ffffff;
    color: #7d1717;
}
.position-shared-conflict button:hover:not(:disabled) {
    border-color: #8f2525;
    background: #f8d4d4;
}

.doc-count.missing { color: #8a4d00; }
.doc-count.hold { color: #174a88; }
.doc-count.error { color: #a51f1f; }

@media (max-width: 760px) {
    .position-document-mobile-tab {
        border-color: #aeb9c6;
        background: #eef2f6;
        color: #243b57;
    }
    .position-document-mobile-tab.active {
        border-color: #5f8fcf;
        background: #ffffff;
        color: #123a6b;
        box-shadow: inset 3px 0 #1d5fc4;
    }
}

/* 2.14.41 — компактные параметры раскрытых карточек.
   Компоновка повторяет инженерную сводку «Уставки / Диапазон»:
   название и значение читаются как таблица, редактор проявляется при работе. */
.position-document-fields {
    padding: 5px 10px 8px;
}
.position-document-fields-heading {
    display: none;
}
.position-document-fields.po-reference-layout,
.position-document-fields.position-document-grouped-layout {
    padding: 6px 10px 9px;
}
.position-document-fields.po-reference-layout {
    grid-template-columns:
        minmax(190px, 1.05fr)
        minmax(175px, .95fr)
        minmax(205px, 1.08fr)
        minmax(190px, 1fr)
        minmax(190px, 1fr);
}
.position-document-fields.position-document-grouped-layout {
    --document-group-min-width: 195px;
}
.position-document-card[data-document-type="PVV"] .position-document-grouped-layout {
    --document-group-min-width: 200px;
}

.position-document-fields.po-reference-layout .position-document-po-column,
.position-document-field-group {
    gap: 0;
    padding: 0 10px;
    border-left-color: #c9d2dc;
}
.position-document-field-group-fields {
    gap: 0;
}
.position-document-field-group-title {
    min-height: 23px;
    margin: 0 0 3px;
    padding: 0 2px 4px;
    border-bottom: 1px solid #b8c3cf;
    color: #243b57;
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
}

.position-document-field,
.position-document-fields.po-reference-layout .position-document-field,
.position-document-fields.position-document-grouped-layout .position-document-field {
    position: relative;
    min-width: 0;
    min-height: 27px;
    display: grid;
    grid-template-columns: minmax(58px, 40%) minmax(0, 1fr);
    align-items: center;
    gap: 4px;
    padding: 1px 2px 1px 5px;
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid transparent;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    outline: 0;
}
.position-document-field:hover,
.position-document-fields.po-reference-layout .position-document-field:hover,
.position-document-fields.position-document-grouped-layout .position-document-field:hover {
    background: #f4f7fa;
}
.position-document-field > label,
.position-document-fields.po-reference-layout .position-document-field > label,
.position-document-fields.position-document-grouped-layout .position-document-field > label {
    min-width: 0;
    min-height: 0;
    display: block;
    align-self: center;
    color: #536277;
    font-size: 9px;
    font-weight: 500;
    line-height: 1.12;
    overflow-wrap: anywhere;
}
.position-document-field > label > span {
    display: block;
}

.position-document-editor,
.position-document-fields.po-reference-layout .position-document-editor,
.position-document-fields.position-document-grouped-layout .position-document-editor {
    min-width: 0;
    grid-template-columns: minmax(0, 1fr) 18px;
    gap: 3px;
}
.position-document-editor input,
.position-document-editor select,
.position-document-editor textarea,
.position-document-fields.po-reference-layout .position-document-editor input,
.position-document-fields.po-reference-layout .position-document-editor select,
.position-document-fields.po-reference-layout .position-document-editor textarea,
.position-document-fields.position-document-grouped-layout .position-document-editor input,
.position-document-fields.position-document-grouped-layout .position-document-editor select,
.position-document-fields.position-document-grouped-layout .position-document-editor textarea {
    min-width: 0;
    border: 1px solid transparent;
    border-radius: 2px;
    background: transparent;
    color: #172033;
    font-size: 9.5px;
    font-weight: 500;
    box-shadow: none;
}
.position-document-editor input,
.position-document-editor select,
.position-document-fields.po-reference-layout .position-document-editor input,
.position-document-fields.po-reference-layout .position-document-editor select,
.position-document-fields.position-document-grouped-layout .position-document-editor input,
.position-document-fields.position-document-grouped-layout .position-document-editor select {
    height: 24px;
    padding: 0 5px;
}
.position-document-editor textarea,
.position-document-fields.po-reference-layout .position-document-editor textarea,
.position-document-fields.position-document-grouped-layout .position-document-editor textarea {
    min-height: 30px;
    padding: 4px 5px;
}
.position-document-field:hover .position-document-editor input:not(:disabled),
.position-document-field:hover .position-document-editor select:not(:disabled),
.position-document-field:hover .position-document-editor textarea:not(:disabled) {
    border-color: #b7c1cd;
    background: #ffffff;
}
.position-document-editor input:focus,
.position-document-editor select:focus,
.position-document-editor textarea:focus,
.position-document-fields.po-reference-layout .position-document-editor input:focus,
.position-document-fields.po-reference-layout .position-document-editor select:focus,
.position-document-fields.po-reference-layout .position-document-editor textarea:focus,
.position-document-fields.position-document-grouped-layout .position-document-editor input:focus,
.position-document-fields.position-document-grouped-layout .position-document-editor select:focus,
.position-document-fields.position-document-grouped-layout .position-document-editor textarea:focus {
    border-color: #1d5fc4;
    background: #ffffff;
    box-shadow: 0 0 0 1px rgba(29, 95, 196, .14);
}
.position-document-editor input:disabled,
.position-document-editor select:disabled,
.position-document-editor textarea:disabled {
    border-color: transparent;
    background: transparent;
    color: #4e5e72;
    -webkit-text-fill-color: #4e5e72;
    opacity: 1;
}


/* 2.14.48 — многострочные значения в компактных карточках.
   Только поля с потенциально длинным инженерным текстом увеличивают высоту строки. */
.position-document-field.auto-height-value,
.position-document-fields.po-reference-layout .position-document-field.auto-height-value,
.position-document-fields.position-document-grouped-layout .position-document-field.auto-height-value {
    align-items: start;
    padding-top: 2px;
    padding-bottom: 2px;
}
.position-document-field.auto-height-value > label,
.position-document-fields.po-reference-layout .position-document-field.auto-height-value > label,
.position-document-fields.position-document-grouped-layout .position-document-field.auto-height-value > label {
    align-self: start;
    padding-top: 6px;
}
.position-document-editor textarea.position-document-auto-height,
.position-document-fields.po-reference-layout .position-document-editor textarea.position-document-auto-height,
.position-document-fields.position-document-grouped-layout .position-document-editor textarea.position-document-auto-height,
.position-cable-reference textarea.position-document-auto-height {
    box-sizing: border-box;
    width: 100%;
    height: 24px;
    min-height: 24px;
    max-height: 96px;
    padding: 5px;
    overflow-y: hidden;
    resize: none;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    word-break: break-word;
    line-height: 1.25;
}
.position-cable-reference textarea.position-document-auto-height {
    font: inherit;
}

.position-document-field-hold,
.position-document-fields.po-reference-layout .position-document-field-hold,
.position-document-fields.position-document-grouped-layout .position-document-field-hold {
    width: 18px;
    height: 18px;
    border-radius: 2px;
    font-size: 7.5px;
    opacity: 0;
}
.position-document-field:hover .position-document-field-hold,
.position-document-field-hold:focus-visible,
.position-document-field-hold.active {
    opacity: 1;
}
.position-document-field-hold-reason,
.position-document-fields.po-reference-layout .position-document-field-hold-reason,
.position-document-fields.position-document-grouped-layout .position-document-field-hold-reason {
    grid-column: 1 / -1;
    width: 100%;
    padding: 2px 21px 2px 0;
}

.position-document-field.state-filled,
.position-document-field.state-missing,
.position-document-field.state-hold,
.position-document-field.state-error,
.position-document-fields.po-reference-layout .position-document-field.state-filled,
.position-document-fields.po-reference-layout .position-document-field.state-missing,
.position-document-fields.po-reference-layout .position-document-field.state-hold,
.position-document-fields.po-reference-layout .position-document-field.state-error,
.position-document-fields.position-document-grouped-layout .position-document-field.state-filled,
.position-document-fields.position-document-grouped-layout .position-document-field.state-missing,
.position-document-fields.position-document-grouped-layout .position-document-field.state-hold,
.position-document-fields.position-document-grouped-layout .position-document-field.state-error {
    background: transparent;
    box-shadow: none;
}
.position-document-field.state-filled,
.position-document-fields.po-reference-layout .position-document-field.state-filled,
.position-document-fields.position-document-grouped-layout .position-document-field.state-filled {
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid #16813d;
}
.position-document-field.state-missing,
.position-document-fields.po-reference-layout .position-document-field.state-missing,
.position-document-fields.position-document-grouped-layout .position-document-field.state-missing {
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid #b66a00;
}
.position-document-field.state-hold,
.position-document-fields.po-reference-layout .position-document-field.state-hold,
.position-document-fields.position-document-grouped-layout .position-document-field.state-hold {
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid #2f6db8;
}
.position-document-field.state-error,
.position-document-fields.po-reference-layout .position-document-field.state-error,
.position-document-fields.position-document-grouped-layout .position-document-field.state-error {
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid #c62828;
}
.position-document-field.state-reconfirmation {
    outline: 1px dashed #c27a10;
    outline-offset: -1px;
}
.position-document-field.state-conflict {
    border-left-color: #c62828;
}

.position-document-field.state-filled .position-document-editor input,
.position-document-field.state-filled .position-document-editor select,
.position-document-field.state-filled .position-document-editor textarea,
.position-document-field.state-missing .position-document-editor input,
.position-document-field.state-missing .position-document-editor select,
.position-document-field.state-missing .position-document-editor textarea,
.position-document-field.state-hold .position-document-editor input,
.position-document-field.state-hold .position-document-editor select,
.position-document-field.state-hold .position-document-editor textarea,
.position-document-field.state-error .position-document-editor input,
.position-document-field.state-error .position-document-editor select,
.position-document-field.state-error .position-document-editor textarea {
    border-color: transparent;
    background: transparent;
    box-shadow: none;
}
.position-document-field.state-filled .position-document-editor input:disabled,
.position-document-field.state-filled .position-document-editor select:disabled,
.position-document-field.state-filled .position-document-editor textarea:disabled,
.position-document-field.state-missing .position-document-editor input:disabled,
.position-document-field.state-missing .position-document-editor select:disabled,
.position-document-field.state-missing .position-document-editor textarea:disabled,
.position-document-field.state-hold .position-document-editor input:disabled,
.position-document-field.state-hold .position-document-editor select:disabled,
.position-document-field.state-hold .position-document-editor textarea:disabled,
.position-document-field.state-error .position-document-editor input:disabled,
.position-document-field.state-error .position-document-editor select:disabled,
.position-document-field.state-error .position-document-editor textarea:disabled {
    border-color: transparent;
    background: transparent;
    color: #4e5e72;
    -webkit-text-fill-color: #4e5e72;
    opacity: 1;
}
.position-document-field.state-filled:hover .position-document-editor input:not(:disabled),
.position-document-field.state-filled:hover .position-document-editor select:not(:disabled),
.position-document-field.state-filled:hover .position-document-editor textarea:not(:disabled) {
    border-color: #6cb785;
    background: #ffffff;
}
.position-document-field.state-missing:hover .position-document-editor input:not(:disabled),
.position-document-field.state-missing:hover .position-document-editor select:not(:disabled),
.position-document-field.state-missing:hover .position-document-editor textarea:not(:disabled) {
    border-color: #d8a23a;
    background: #ffffff;
}
.position-document-field.state-hold:hover .position-document-editor input:not(:disabled),
.position-document-field.state-hold:hover .position-document-editor select:not(:disabled),
.position-document-field.state-hold:hover .position-document-editor textarea:not(:disabled) {
    border-color: #6d98d3;
    background: #ffffff;
}
.position-document-field.state-error:hover .position-document-editor input:not(:disabled),
.position-document-field.state-error:hover .position-document-editor select:not(:disabled),
.position-document-field.state-error:hover .position-document-editor textarea:not(:disabled) {
    border-color: #d75c5c;
    background: #ffffff;
}
.position-document-field.state-filled .position-document-editor input:focus,
.position-document-field.state-filled .position-document-editor select:focus,
.position-document-field.state-filled .position-document-editor textarea:focus,
.position-document-field.state-missing .position-document-editor input:focus,
.position-document-field.state-missing .position-document-editor select:focus,
.position-document-field.state-missing .position-document-editor textarea:focus,
.position-document-field.state-hold .position-document-editor input:focus,
.position-document-field.state-hold .position-document-editor select:focus,
.position-document-field.state-hold .position-document-editor textarea:focus,
.position-document-field.state-error .position-document-editor input:focus,
.position-document-field.state-error .position-document-editor select:focus,
.position-document-field.state-error .position-document-editor textarea:focus {
    border-color: #1d5fc4;
    background: #ffffff;
    box-shadow: 0 0 0 1px rgba(29, 95, 196, .14);
}

.position-shared-conflict {
    margin: 3px 0 2px;
    padding: 4px 6px;
    border-radius: 2px;
    font-size: 8.5px;
}
.position-shared-conflict button {
    border-radius: 2px;
    font-size: 8px;
}

@media (max-width: 760px) {
    .position-document-fields.po-reference-layout,
    .position-document-fields.position-document-grouped-layout {
        grid-template-columns: minmax(0, 1fr);
        overflow-x: visible;
        padding: 5px 8px 8px;
    }
    .position-document-fields.po-reference-layout .position-document-po-column,
    .position-document-field-group {
        padding: 7px 0 0;
        border-top: 1px solid #c9d2dc;
        border-left: 0;
    }
    .position-document-fields.po-reference-layout .position-document-po-column:first-child,
    .position-document-field-group:first-child {
        padding-top: 0;
        border-top: 0;
    }
    .position-document-field,
    .position-document-fields.po-reference-layout .position-document-field,
    .position-document-fields.position-document-grouped-layout .position-document-field {
        grid-template-columns: minmax(92px, 38%) minmax(0, 1fr);
        min-height: 30px;
    }
    .position-document-field-hold {
        opacity: .25;
    }
}

/* Настраиваемые размеры шрифтов v2.14.43. Значения задаются на .app-shell. */
.app-shell {
    --fan-font-ui: 13px;
    --fan-font-heading: 16px;
    --fan-font-table: 12px;
    --fan-font-card: 10px;
    --fan-font-input: 12px;
    --fan-card-status-stripe: 2px;
    font-size: var(--fan-font-ui);
}

.app-shell .side-nav button,
.app-shell .application-menu > summary,
.app-shell .application-menu-popup button,
.app-shell .tabs button,
.app-shell .task-stage-tabs strong,
.app-shell .notice,
.app-shell .statusbar,
.app-shell .selection-count,
.app-shell .check-filter,
.app-shell .shell-page-label,
.app-shell .sidebar-user {
    font-size: var(--fan-font-ui) !important;
}

.app-shell h1,
.app-shell h2,
.app-shell .workspace-header h1,
.app-shell .compact-workspace-header h1,
.app-shell .modal-header h2,
.app-shell .section-heading h2 {
    font-size: var(--fan-font-heading) !important;
}

.app-shell input,
.app-shell select,
.app-shell textarea,
.app-shell .button {
    font-size: var(--fan-font-input);
}

.app-shell table,
.app-shell table th,
.app-shell table td,
.app-shell table input,
.app-shell table select,
.app-shell table textarea,
.app-shell .data-table,
.app-shell .pvv-table,
.app-shell .rd-table {
    font-size: var(--fan-font-table) !important;
}

.app-shell .position-document-field > label,
.app-shell .position-document-field-group-title,
.app-shell .position-document-fields-heading,
.app-shell .position-document-editor input,
.app-shell .position-document-editor select,
.app-shell .position-document-editor textarea,
.app-shell .position-document-field-hold-reason input,
.app-shell .position-document-card-hold span,
.app-shell .position-document-card-hold input {
    font-size: var(--fan-font-card) !important;
}

.interface-settings-workspace {
    max-width: 1120px;
}
.font-settings-card {
    overflow: hidden;
    border: 1px solid #cfd7e3;
    border-radius: 3px;
    background: #ffffff;
}
.font-settings-card-head {
    min-height: 54px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 9px 12px;
    border-bottom: 1px solid #cfd7e3;
    background: #f3f6fb;
}
.font-settings-card-head > div {
    min-width: 0;
    display: grid;
    gap: 2px;
}
.font-settings-card-head strong {
    color: #1b2433;
    font-size: var(--fan-font-ui);
}
.font-settings-card-head span {
    color: #607088;
    font-size: 11px;
}
.font-settings-grid {
    display: grid;
    padding: 4px 12px;
}
.font-setting-row {
    min-height: 64px;
    display: grid;
    grid-template-columns: minmax(220px, 1fr) minmax(180px, 1.6fr) 64px;
    align-items: center;
    gap: 16px;
    border-bottom: 1px solid #e1e6ed;
}
.font-setting-row:last-child {
    border-bottom: 0;
}
.font-setting-row > span:first-child {
    min-width: 0;
    display: grid;
    gap: 3px;
}
.font-setting-row strong {
    color: #1b2433;
    font-size: var(--fan-font-ui);
}
.font-setting-row small {
    color: #607088;
    font-size: 11px;
    line-height: 1.3;
}
.font-setting-row input[type="range"] {
    width: 100%;
    accent-color: #2563eb;
    cursor: pointer;
}
.font-setting-value {
    min-width: 58px;
    padding: 5px 7px;
    border: 1px solid #b7c2d0;
    border-radius: 2px;
    background: #f5f7fb;
    color: #1b2433;
    font-size: 12px;
    font-weight: 700;
    text-align: center;
    font-variant-numeric: tabular-nums;
}
.font-settings-preview {
    margin: 8px 12px 12px;
    padding: 12px;
    border: 1px solid #b7c2d0;
    border-left: 3px solid #2563eb;
    background: #f8fafc;
    color: #1b2433;
    font-size: var(--preview-ui);
}
.font-settings-preview > strong {
    display: block;
    margin-bottom: 8px;
    color: #435167;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .05em;
}
.font-settings-preview h2 {
    margin: 0 0 5px;
    font-size: var(--preview-heading) !important;
}
.font-settings-preview p {
    margin: 0 0 8px;
    font-size: var(--preview-ui);
}
.font-preview-table {
    display: grid;
    grid-template-columns: minmax(150px, .7fr) minmax(180px, 1fr);
    margin-bottom: 8px;
    border: 1px solid #cfd7e3;
    font-size: var(--preview-table);
}
.font-preview-table > * {
    padding: 6px 8px;
}
.font-preview-table > b {
    border-left: 1px solid #cfd7e3;
    background: #ffffff;
}
.font-settings-preview label {
    display: grid;
    grid-template-columns: minmax(150px, .7fr) minmax(180px, 1fr);
    align-items: center;
    font-size: var(--preview-card);
}
.font-settings-preview .font-preview-card-parameter {
    padding-left: 7px;
    border-left: var(--preview-status-stripe, 2px) solid #b66a00;
}
.font-settings-preview input {
    min-height: 29px;
    padding: 4px 7px;
    border: 1px solid #b7c2d0;
    border-radius: 2px;
    background: #ffffff;
    color: #1b2433;
    font-size: var(--preview-input);
}
.font-settings-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-top: 1px solid #cfd7e3;
    background: #f3f6fb;
}
.font-settings-actions span {
    color: #607088;
    font-size: 11px;
}

@media (max-width: 760px) {
    .font-settings-card-head,
    .font-settings-actions {
        align-items: stretch;
        flex-direction: column;
    }
    .font-setting-row {
        grid-template-columns: minmax(0, 1fr) 58px;
        gap: 8px 12px;
        padding: 10px 0;
    }
    .font-setting-row > span:first-child {
        grid-column: 1 / -1;
    }
    .font-settings-preview label,
    .font-preview-table {
        grid-template-columns: minmax(0, 1fr);
    }
    .font-preview-table > b {
        border-top: 1px solid #cfd7e3;
        border-left: 0;
    }
}

/* 2.14.58 — уточнённая компактная карточка «Создание прибора СЭП». */
.sep-instrument-card-editor {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
    color: #18243a;
}
.sep-editor-error {
    padding: 4px 6px;
    border: 1px solid #d95d5d;
    border-radius: 2px;
    background: #fff4f4;
    color: #9e1111;
    font-size: 9px;
}
.sep-instrument-toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: 4px;
    min-width: 0;
}
.sep-instrument-main-fields {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.sep-compact-field {
    display: grid;
    grid-template-columns: 82px minmax(0, 1fr);
    align-items: center;
    gap: 3px;
    min-width: 0;
    font-size: 8px;
    font-weight: 600;
    white-space: nowrap;
}
.sep-compact-field > span { color: #3c4b62; }
.sep-compact-field input,
.sep-compact-field textarea,
.sep-compact-field select {
    width: 100%;
    min-width: 0;
    min-height: 21px;
    max-height: 42px;
    padding: 1px 4px;
    border: 1px solid #9eacbf;
    border-radius: 1px;
    background: #fff;
    color: #172235;
    font-size: 8px;
    line-height: 1.1;
    resize: vertical;
}
.sep-compact-field select {
    resize: none;
    cursor: pointer;
}
.sep-common-position input { font-weight: 700; }
.sep-add-signal {
    align-self: flex-start;
    min-height: 21px !important;
    padding: 1px 6px !important;
    white-space: nowrap;
    font-size: 8px !important;
}
.sep-instrument-layout {
    display: grid;
    grid-template-columns: minmax(720px, 2fr) minmax(260px, .62fr);
    gap: 4px;
    align-items: stretch;
    min-width: 0;
}
.sep-signal-editor-panel,
.sep-fancad-preview-panel {
    min-width: 0;
    border: 1px solid #aeb9c8;
    border-radius: 1px;
    background: #fff;
}
.sep-signal-editor-panel {
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.sep-signal-table-scroll {
    overflow: auto;
    max-height: 460px;
}
.sep-signal-table,
.sep-terminal-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 7.7px;
}
.sep-signal-table > thead > tr > th {
    position: sticky;
    top: 0;
    z-index: 3;
    padding: 2px 3px;
    border: 1px solid #9eacbf;
    background: #e5ebf3;
    color: #223149;
    text-align: left;
    line-height: 1.0;
    white-space: nowrap;
}
.sep-signal-table > thead > tr > th .column-resizer {
    right: -2px;
    width: 6px;
}
.sep-signal-table > thead > tr > th .column-resizer:hover,
.sep-signal-table > thead > tr > th .column-resizer:active {
    background: rgba(37, 99, 235, .22);
}
.sep-signal-table > tbody > tr > td {
    padding: 2px;
    border: 1px solid #b8c2cf;
    vertical-align: top;
    background: #fff;
}
.sep-signal-table > tbody > tr:nth-child(even) > td {
    background: #fbfcfe;
}
.sep-signal-table > tbody > tr:hover > td {
    background: #f5f8fc;
}
.sep-signal-table input,
.sep-signal-table textarea,
.sep-signal-table select,
.sep-terminal-table input {
    width: 100%;
    min-width: 0;
    min-height: 19px;
    padding: 1px 3px;
    border: 1px solid #a8b4c4;
    border-radius: 1px;
    background: #fff;
    color: #172235;
    font-size: 7.7px;
    line-height: 1.05;
}
.sep-signal-table textarea {
    resize: vertical;
    min-height: 32px;
}
.sep-signal-table input:disabled,
.sep-signal-table textarea:disabled,
.sep-signal-table select:disabled,
.sep-terminal-table input:disabled {
    background: #f2f4f7;
    color: #667287;
}
.sep-order-column { width: 30px; text-align: center !important; }
.sep-signal-position-column { width: 170px; }
.sep-ugo-column { width: 190px; }
.sep-cable-column { width: 160px; }
.sep-ugo-cell { vertical-align: top !important; }
.sep-ugo-picker {
    display: block;
    min-width: 0;
}
.sep-ugo-picker select {
    display: block;
    width: 100%;
    min-width: 0;
    height: 21px;
    padding-right: 22px;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.sep-ugo-picker.has-warning select {
    border-color: #d69a38;
    background: #fffaf0;
}
.sep-actions-column { width: 30px; text-align: center !important; }
.sep-terminal-column { width: 760px; }
.sep-terminal-cell { padding: 1px !important; }
.sep-terminal-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 2px;
    min-height: 16px;
    padding: 0 1px 1px;
    color: #4e5d72;
    line-height: 1;
}
.sep-terminal-toolbar span { font-size: 7px; }
.sep-terminal-toolbar button,
.sep-remove-terminal,
.sep-remove-signal {
    min-height: 16px;
    height: 16px;
    padding: 0 3px;
    border: 1px solid #9eacbf;
    border-radius: 1px;
    background: #f1f4f8;
    color: #29466f;
    cursor: pointer;
    font-size: 9px;
    line-height: 1;
}
.sep-remove-terminal,
.sep-remove-signal {
    width: 17px;
    padding: 0;
    color: #a51212;
    font-size: 12px;
}
.sep-terminal-toolbar button:disabled,
.sep-remove-terminal:disabled,
.sep-remove-signal:disabled { opacity: .45; cursor: default; }
.sep-terminal-table th,
.sep-terminal-table td {
    padding: 1px;
    border: 1px solid #bdc6d2;
    vertical-align: middle;
}
.sep-terminal-table th {
    background: #eef2f6;
    color: #3f4d62;
    font-size: 6.8px;
    font-weight: 600;
    line-height: 1;
    white-space: normal;
}
.sep-terminal-table th:nth-child(1) { width: 47px; }
.sep-terminal-table th:nth-child(2) { width: 58px; }
.sep-terminal-table th:nth-child(5) { width: 21px; }
.sep-terminal-connected { text-align: center; }
.sep-terminal-connected input {
    width: 13px;
    min-height: 13px;
    height: 13px;
    padding: 0;
}
.sep-empty-signals,
.sep-empty-terminals {
    padding: 8px 4px !important;
    color: #758196;
    text-align: center;
    font-style: italic;
}
.sep-empty-terminals { padding: 4px !important; }
.sep-instrument-options {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    min-height: 22px;
    padding: 2px 4px;
    border-top: 1px solid #aeb9c8;
    background: #eef2f6;
    font-size: 8px;
}
.sep-instrument-options label { display: flex; align-items: center; gap: 3px; }
.sep-instrument-options input[type="number"] {
    width: 52px;
    min-height: 18px;
    padding: 1px 3px;
    border: 1px solid #9eacbf;
    border-radius: 1px;
    font-size: 8px;
}
.sep-fancad-preview-panel {
    display: grid;
    grid-template-rows: auto minmax(190px, 1fr) auto;
    overflow: hidden;
}
.sep-fancad-preview-panel > header {
    display: flex;
    justify-content: space-between;
    gap: 4px;
    padding: 2px 5px;
    border-bottom: 1px solid #aeb9c8;
    background: #e5ebf3;
}
.sep-fancad-preview-panel > header div { display: flex; align-items: baseline; gap: 5px; }
.sep-fancad-preview-panel > header strong { font-size: 8px; }
.sep-fancad-preview-panel > header small,
.sep-fancad-preview-panel > footer { color: #657288; font-size: 6.9px; }
.sep-fancad-preview {
    min-height: 190px;
    padding: 3px;
    overflow: auto;
    background-color: #f8fafc;
    background-image:
        linear-gradient(#e8edf4 1px, transparent 1px),
        linear-gradient(90deg, #e8edf4 1px, transparent 1px);
    background-size: 10px 10px;
}
.sep-fancad-preview svg {
    display: block;
    width: 100%;
    min-width: 255px;
    min-height: 184px;
    max-height: 430px;
    background: #fff;
    box-shadow: 0 1px 3px rgba(25, 40, 65, .10);
}
.sep-fancad-preview-panel > footer {
    padding: 2px 5px;
    border-top: 1px solid #aeb9c8;
    background: #eef2f6;
}

/* Настройки геометрии СЭП. */
.sep-settings-card { margin-top: 12px; }
.sep-size-settings-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(260px, 1fr));
    gap: 10px;
    padding: 12px;
}
.sep-size-settings-grid label {
    display: grid;
    grid-template-columns: minmax(170px, 1fr) 100px 24px;
    align-items: center;
    gap: 8px;
}
.sep-size-settings-grid label > span { display: flex; flex-direction: column; gap: 2px; }
.sep-size-settings-grid small { color: #657288; font-size: 10px; }
.sep-size-settings-grid input {
    width: 100%;
    min-height: 31px;
    padding: 4px 7px;
    border: 1px solid #b8c4d5;
    border-radius: 4px;
}
.sep-size-preview {
    display: flex;
    align-items: center;
    gap: 14px;
    min-height: 70px;
    margin: 0 12px 12px;
    padding: 12px;
    border: 1px dashed #aab7c9;
    background: #f8fafc;
}
.sep-size-preview > span {
    display: grid;
    place-items: center;
    min-width: 20px;
    min-height: 20px;
    max-width: 400px;
    max-height: 250px;
    border: 1px solid #1f2d3d;
    background: #fff;
    font-size: 11px;
}
.sep-size-preview small { color: #526176; }

@media (max-width: 1180px) {
    .sep-instrument-layout { grid-template-columns: 1fr; }
    .sep-fancad-preview-panel { grid-template-rows: auto minmax(230px, auto) auto; }
}
@media (max-width: 760px) {
    .sep-instrument-toolbar { grid-template-columns: 1fr; }
    .sep-add-signal { width: 100%; }
    .sep-compact-field { grid-template-columns: 92px minmax(0, 1fr); }
    .sep-signal-table-scroll { max-height: none; }
    .sep-signal-table { min-width: 720px; }
    .sep-size-settings-grid { grid-template-columns: 1fr; }
    .sep-size-settings-grid label { grid-template-columns: 1fr 100px 24px; }
}

/* 2.14.55 — отдельная вкладка редактора прибора СЭП. */
.sep-inline-card-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-height: 26px;
    margin-bottom: 3px;
    padding: 2px 4px;
    border: 1px solid #b8c2cf;
    background: #eef2f6;
    font-size: 8px;
}
.sep-inline-card-toolbar > span {
    color: #3c4b62;
    font-weight: 600;
}
.sep-inline-card-toolbar .button {
    min-height: 20px;
    padding: 1px 6px;
    font-size: 8px;
}
.sep-standalone-workspace {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100%;
    gap: 5px;
}
.sep-standalone-tabs {
    flex: 0 0 auto;
    border-radius: 5px;
}
.sep-standalone-tabs .sep-tab-close {
    margin-left: auto;
    padding-inline: 12px;
    color: #a51212;
    font-size: 16px;
    line-height: 1;
}
.sep-standalone-header {
    min-height: 38px;
    padding: 5px 8px;
}
.sep-standalone-header > div {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.sep-standalone-header strong {
    font-size: 12px;
}
.sep-standalone-header span {
    overflow: hidden;
    color: #657288;
    font-size: 9px;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.sep-standalone-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    padding: 5px;
    border: 1px solid #b8c2cf;
    background: #f8fafc;
}
.sep-standalone-body .sep-instrument-layout {
    grid-template-columns: minmax(760px, 2.15fr) minmax(320px, .75fr);
}
@media (max-width: 1050px) {
    .sep-standalone-body .sep-instrument-layout,
    .sep-instrument-layout {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* 2.14.56 — в отдельной вкладке таблица сверху, крупное превью FanCad снизу. */
.sep-standalone-body .sep-instrument-layout {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
}
.sep-standalone-body .sep-signal-editor-panel,
.sep-standalone-body .sep-fancad-preview-panel {
    width: 100%;
    min-width: 0;
}
.sep-standalone-body .sep-signal-table-scroll {
    max-height: 430px;
}
.sep-standalone-body .sep-fancad-preview-panel {
    grid-template-rows: auto minmax(430px, auto) auto;
}
.sep-standalone-body .sep-fancad-preview {
    min-height: 430px;
    padding: 6px;
}
.sep-standalone-body .sep-fancad-preview svg {
    width: 100%;
    height: 430px;
    min-width: 0;
    min-height: 430px;
    max-height: none;
}
@media (max-height: 760px) {
    .sep-standalone-body .sep-fancad-preview-panel {
        grid-template-rows: auto minmax(340px, auto) auto;
    }
    .sep-standalone-body .sep-fancad-preview,
    .sep-standalone-body .sep-fancad-preview svg {
        height: 340px;
        min-height: 340px;
    }
}

/* 2.14.61 — УГО типов приборов и отдельная вкладка FanCad. */
.instrument-type-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}
.instrument-type-toolbar .search-box { flex: 1 1 360px; }
.instrument-types-grid th:nth-child(1) { width: 190px; }
.instrument-types-grid th:nth-child(2) { width: 80px; }
.instrument-types-grid th:nth-child(3) { width: 360px; }
.instrument-types-grid th:nth-child(4) { width: 150px; }
.instrument-types-grid th:nth-child(5) { width: 100px; }
.instrument-types-grid th:nth-child(6) { width: 92px; }
.instrument-types-grid tr { cursor: pointer; }
.instrument-types-grid tr.selected-row > td { background: #e9f2ff; }
.instrument-ugo-preview-cell {
    height: 72px;
    padding: 3px !important;
    text-align: center;
    vertical-align: middle !important;
    background: #fbfcfe;
}
.instrument-ugo-preview-cell img {
    display: block;
    width: 100%;
    height: 64px;
    object-fit: contain;
    margin: 0 auto;
    background: #161922;
    border: 1px solid #c5cfdd;
}
.instrument-ugo-empty {
    color: #7a8798;
    font-size: 10px;
    font-style: italic;
}
.instrument-ugo-action-cell {
    text-align: center;
    vertical-align: middle !important;
}
.instrument-ugo-workspace {
    min-height: 0;
    overflow: hidden;
}
.instrument-ugo-header {
    flex: 0 0 auto;
}
.instrument-ugo-header .workspace-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}
.instrument-ugo-editor-host {
    min-height: 0;
    height: calc(100vh - 150px);
    margin: 0 4px 4px;
    border: 1px solid #aeb9c8;
    background: #161922;
    overflow: hidden;
}
.fancad-ugo-frame {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 620px;
    border: 0;
    background: #161922;
}
@media (max-height: 800px) {
    .instrument-ugo-editor-host { height: calc(100vh - 132px); }
    .fancad-ugo-frame { min-height: 520px; }
}

/* 2.14.62 — отдельный справочник УГО. */
.instrument-types-simple-grid th:nth-child(1) { width: 220px; }
.instrument-types-simple-grid th:nth-child(2) { width: 90px; }
.instrument-types-simple-grid th:nth-child(3) { width: auto; }
.instrument-types-simple-grid th:nth-child(4) { width: 110px; }
.ugo-directory-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}
.ugo-directory-toolbar .search-box { flex: 1 1 360px; }
.ugo-directory-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}
.ugo-directory-grid th:nth-child(1) { width: 260px; }
.ugo-directory-grid th:nth-child(2) { width: auto; }
.ugo-directory-grid th:nth-child(3) { width: 190px; }
.ugo-directory-grid th:nth-child(4) { width: 120px; }
.ugo-directory-grid tr { cursor: pointer; }
.ugo-directory-grid tr.selected-row > td { background: #e9f2ff; }
.ugo-silhouette-preview-cell {
    height: 86px;
    padding: 4px !important;
    text-align: center;
    vertical-align: middle !important;
    background: #fff;
}
.ugo-silhouette-preview-cell img {
    display: block;
    width: 100%;
    height: 76px;
    margin: 0 auto;
    object-fit: contain;
    background: #fff;
    border: 1px solid #c5cfdd;
}
.ugo-editor-meta {
    display: grid;
    grid-template-columns: minmax(240px, .55fr) minmax(420px, 1.45fr);
    gap: 8px;
    padding: 6px 8px;
    border-top: 1px solid #c3ccd8;
    border-bottom: 1px solid #c3ccd8;
    background: #f5f7fa;
}
.ugo-editor-meta label {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 6px;
    min-width: 0;
    font-size: 10px;
    font-weight: 600;
}
.ugo-editor-meta input,
.ugo-editor-meta textarea {
    width: 100%;
    min-width: 0;
    min-height: 30px;
    padding: 4px 7px;
    border: 1px solid #aeb9c8;
    border-radius: 3px;
    background: #fff;
    color: #172235;
    font: inherit;
    font-weight: 400;
}
.ugo-editor-meta textarea { resize: vertical; }
.ugo-editor-host { height: calc(100vh - 205px); }
@media (max-width: 900px) {
    .ugo-directory-toolbar,
    .ugo-directory-actions { align-items: stretch; flex-direction: column; }
    .ugo-editor-meta { grid-template-columns: 1fr; }
    .ugo-editor-meta label { grid-template-columns: 130px minmax(0, 1fr); }
}

/* 2.14.73 — увеличенное превью СЭП поверх интерфейса. */
.sep-fancad-preview-trigger {
    display: block;
    width: 100%;
    border: 0;
    border-radius: 0;
    color: inherit;
    text-align: initial;
    cursor: zoom-in;
    font: inherit;
}
.sep-fancad-preview-trigger:hover {
    box-shadow: inset 0 0 0 1px #6e8fb8;
}
.sep-fancad-preview-trigger:focus-visible {
    outline: 2px solid #2f6fc7;
    outline-offset: -2px;
}
.sep-preview-modal {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 28px;
    background: rgba(18, 28, 43, .58);
}
.sep-preview-modal-surface {
    position: relative;
    width: min(94vw, 1600px);
    height: min(90vh, 980px);
    min-width: 320px;
    min-height: 240px;
    overflow: hidden;
    border: 1px solid #8f9caf;
    border-radius: 4px;
    background: #fff;
    box-shadow: 0 18px 55px rgba(10, 20, 36, .32);
}
.sep-preview-modal-close {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 2;
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    padding: 0;
    border: 1px solid #8f9caf;
    border-radius: 3px;
    background: rgba(255, 255, 255, .94);
    color: #8d1111;
    cursor: pointer;
    font-size: 24px;
    line-height: 1;
}
.sep-preview-modal-close:hover {
    background: #fff1f1;
    border-color: #b54a4a;
}
.sep-preview-modal-drawing {
    width: 100%;
    height: 100%;
    overflow: auto;
    padding: 24px;
    background: #fff;
}
.sep-preview-modal-drawing svg {
    display: block;
    width: 100%;
    height: 100%;
    min-width: 720px;
    min-height: 420px;
    max-width: none;
    max-height: none;
    background: #fff;
}
@media (max-width: 760px) {
    .sep-preview-modal {
        padding: 10px;
    }
    .sep-preview-modal-surface {
        width: 100%;
        height: 94vh;
    }
    .sep-preview-modal-drawing {
        padding: 12px;
    }
}

/* 2.14.74 — раздел МТС в исходных данных и открытие DWG в FanCad. */
.mts-source-section {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 0;
    padding: 8px;
}
.mts-section-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 9px 11px;
    border: 1px solid #b9c5d4;
    background: #eef3f8;
}
.mts-section-header h2 { margin: 0; font-size: 15px; }
.mts-section-header p { margin: 2px 0 0; color: #66758b; font-size: 10px; }
.mts-section-actions,
.mts-upload-actions,
.mts-row-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}
.mts-section-actions .file-button.disabled { opacity: .5; pointer-events: none; }
.mts-upload-card {
    display: grid;
    grid-template-columns: minmax(190px, .55fr) minmax(220px, .8fr) minmax(260px, 1fr) auto;
    align-items: end;
    gap: 9px;
    padding: 9px;
    border: 1px solid #9fb4d0;
    background: #f8fbff;
}
.mts-upload-file { display: flex; flex-direction: column; gap: 2px; }
.mts-upload-file strong { overflow-wrap: anywhere; }
.mts-upload-file span { color: #64738a; font-size: 9px; }
.mts-upload-card label { display: grid; gap: 3px; font-size: 9px; font-weight: 600; color: #40516a; }
.mts-upload-card input {
    min-height: 28px;
    padding: 4px 6px;
    border: 1px solid #aab7c8;
    background: #fff;
}
.mts-table-wrap {
    width: 100%;
    overflow: auto;
    border: 1px solid #b8c4d2;
    background: #fff;
}
.mts-table { table-layout: fixed; }
.mts-table th,
.mts-table td { box-sizing: border-box; vertical-align: middle; }
.mts-table td:first-child { display: table-cell; }
.mts-table td:first-child strong { display: block; overflow-wrap: anywhere; }
.mts-name-cell { font-weight: 600; color: #1d2f4a; }
.mts-checksum { display: block; margin-top: 2px; color: #78869a; font-size: 8px; }
.mts-actions-header { text-align: center !important; }
.mts-row-actions-cell {
    padding: 4px 6px !important;
    white-space: nowrap !important;
    overflow: hidden;
}
.mts-row-actions {
    display: grid;
    grid-template-columns: minmax(132px, 1fr) 76px;
    align-items: stretch;
    justify-content: stretch;
    gap: 6px;
    width: 100%;
    min-width: 0;
}
.mts-row-actions .button {
    width: 100%;
    min-width: 0;
    min-height: 28px;
    padding: 3px 7px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.mts-delete-button { min-width: 76px !important; }
.mts-empty { min-height: 180px; }
@media (max-width: 980px) {
    .mts-upload-card { grid-template-columns: 1fr 1fr; }
    .mts-upload-actions { justify-content: flex-end; }
}
.mts-fancad-workspace { display: flex; flex-direction: column; min-height: 0; }
.mts-fancad-header { flex: 0 0 auto; }
.mts-fancad-host {
    position: relative;
    flex: 1 1 auto;
    min-height: 560px;
    border-top: 1px solid #aeb9c8;
    background: #161922;
}
.mts-fancad-frame { width: 100%; height: calc(100vh - 145px); min-height: 560px; border: 0; display: block; }
.mts-fancad-host.loading { opacity: .38; pointer-events: none; }
.mts-fancad-loading {
    position: absolute;
    z-index: 25;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 18px 24px;
    border: 1px solid #92a4bc;
    background: rgba(255,255,255,.96);
    box-shadow: 0 12px 36px rgba(20,34,55,.22);
    color: #18243a;
}
.mts-fancad-loading span { color: #637188; font-size: 10px; }
@media (max-width: 900px) {
    .mts-section-header { align-items: flex-start; flex-direction: column; }
    .mts-upload-card { grid-template-columns: 1fr; }
    .mts-fancad-frame { height: calc(100vh - 180px); min-height: 480px; }
}

/* Fan_ATX 2.14.82 — карточка МТС под позициями: 4 колонки */
.mts-position-card-grid {
    display: grid;
    grid-template-columns: minmax(210px, 1.05fr) minmax(190px, 1fr) minmax(210px, 1.05fr) minmax(220px, 1.1fr);
    align-items: stretch;
    min-width: 860px;
    border-top: 1px solid var(--border, #ccd5e1);
    background: var(--panel, #fff);
}

.mts-position-card-column {
    min-width: 0;
    border-right: 1px solid var(--border, #ccd5e1);
    background: var(--panel, #fff);
}

.mts-position-card-column:last-child { border-right: 0; }

.mts-position-card-column > header {
    display: flex;
    align-items: baseline;
    gap: 6px;
    min-height: 30px;
    padding: 6px 9px;
    border-bottom: 1px solid var(--border, #ccd5e1);
    background: var(--panel-muted, #f5f7fa);
}

.mts-position-card-column > header span {
    color: var(--muted, #68778c);
    font-size: 9px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.mts-position-card-column > header strong {
    color: var(--text, #17263d);
    font-size: 11px;
}

.mts-position-card-control {
    display: flex;
    flex-direction: column;
    gap: 7px;
    min-height: 152px;
    padding: 9px;
}

.mts-position-card-control input,
.mts-position-card-control select,
.mts-position-card-control textarea {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    min-height: 30px;
    border: 1px solid var(--border-strong, #b8c3d2);
    border-radius: 3px;
    background: var(--input-bg, #fff);
    color: var(--text, #17263d);
    font: inherit;
    font-size: 11px;
    padding: 5px 7px;
}

.mts-position-card-control textarea {
    min-height: 112px;
    resize: vertical;
}

.mts-position-card-control input[readonly] {
    background: var(--panel-muted, #f5f7fa);
    font-weight: 700;
}

.mts-position-card-control small {
    color: var(--muted, #68778c);
    font-size: 9px;
    line-height: 1.25;
    overflow-wrap: anywhere;
}

.mts-position-card-empty { color: #9a5a00 !important; }

.mts-placement-button {
    min-height: 30px;
    border: 1px solid #c5ceda;
    border-radius: 3px;
    padding: 5px 8px;
    font-size: 10px;
    font-weight: 700;
    cursor: pointer;
}

.mts-placement-button.pending {
    border-color: #d28a1c;
    background: #fff8ea;
    color: #8a4d00;
}

.mts-placement-button.placed {
    border-color: #2e9d5b;
    background: #eefaf2;
    color: #18733d;
}

.mts-placement-button:disabled {
    opacity: .5;
    cursor: default;
}

.mts-position-preview-placeholder {
    display: flex;
    flex: 1 1 auto;
    min-height: 55px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    border: 1px dashed #c5ceda;
    border-radius: 3px;
    background: var(--panel-muted, #f7f9fb);
    color: var(--muted, #68778c);
}

.mts-position-preview-placeholder span { font-size: 10px; font-weight: 700; }
.mts-position-preview-placeholder small { font-size: 9px; }

.position-document-card[data-document-type="MTS"] {
    overflow-x: auto;
}

@media (max-width: 980px) {
    .mts-position-card-grid {
        grid-template-columns: repeat(2, minmax(220px, 1fr));
        min-width: 520px;
    }
    .mts-position-card-column:nth-child(2) { border-right: 0; }
    .mts-position-card-column:nth-child(-n+2) { border-bottom: 1px solid var(--border, #ccd5e1); }
}

@media (max-width: 620px) {
    .mts-position-card-grid {
        grid-template-columns: minmax(260px, 1fr);
        min-width: 0;
    }
    .mts-position-card-column,
    .mts-position-card-column:nth-child(2) {
        border-right: 0;
        border-bottom: 1px solid var(--border, #ccd5e1);
    }
    .mts-position-card-column:last-child { border-bottom: 0; }
}

/* Fan_ATX 2.14.83 — раздельные поля Верх/Низ и круглое превью МТС. */
.mts-symbol-card-control {
    min-height: 286px;
}

.mts-split-fields {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 5px;
}

.mts-split-field.position-document-field {
    grid-template-columns: 42px minmax(0, 1fr);
    min-height: 38px;
    column-gap: 6px;
    padding: 3px 5px;
    border: 1px solid var(--border, #ccd5e1);
    border-radius: 4px;
}

.mts-split-field.position-document-field > label {
    min-width: 0;
    color: var(--muted, #68778c);
    font-size: 9px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .035em;
}

.mts-split-field .position-document-editor {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
}

.mts-split-field .position-document-editor input {
    height: 29px;
    border: 1px solid var(--border-strong, #b8c3d2);
    background: var(--input-bg, #fff);
    color: var(--text, #17263d);
    padding: 0 7px;
    font-size: 10.5px;
    font-weight: 650;
}

.mts-split-field.state-filled .position-document-editor input {
    border-color: rgba(22, 163, 74, .48);
    background: rgba(22, 163, 74, .055);
}

.mts-split-field.state-missing .position-document-editor input,
.mts-split-field.state-reconfirmation .position-document-editor input {
    border-color: rgba(180, 83, 9, .48);
    background: rgba(245, 158, 11, .07);
}

.mts-split-field.state-hold .position-document-editor input {
    border-color: rgba(37, 99, 235, .48);
    background: rgba(37, 99, 235, .07);
}

.mts-split-field.state-error .position-document-editor input,
.mts-split-field.state-conflict .position-document-editor input {
    border-color: rgba(220, 38, 38, .52);
    background: rgba(220, 38, 38, .06);
}

.mts-round-preview-host {
    display: grid;
    place-items: center;
    flex: 1 1 auto;
    min-height: 116px;
    padding: 4px 0 1px;
}

.mts-round-preview {
    width: 104px;
    height: 104px;
    display: grid;
    grid-template-rows: 1fr 1fr;
    overflow: hidden;
    border: 1.5px solid var(--text, #17263d);
    border-radius: 50%;
    background: var(--input-bg, #fff);
    color: var(--text, #17263d);
    box-shadow: 0 1px 3px rgba(20, 34, 55, .1);
}

.mts-round-preview-half {
    min-width: 0;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4px 8px;
    text-align: center;
}

.mts-round-preview-half.bottom {
    border-top: 1.5px solid var(--text, #17263d);
}

.mts-round-preview-half span {
    display: block;
    max-width: 86px;
    overflow: hidden;
    color: inherit;
    font-size: 10.5px;
    font-weight: 700;
    line-height: 1.05;
    overflow-wrap: anywhere;
    word-break: break-word;
}

@media (max-width: 620px) {
    .mts-symbol-card-control { min-height: 270px; }
    .mts-round-preview { width: 96px; height: 96px; }
}

/* Fan_ATX 2.14.84 — МТС: общие параметры, выбор РСУ/ПАЗ и условные обозначения. */
.mts-position-card-grid {
    grid-template-columns: minmax(250px, 1.16fr) minmax(215px, 1fr) minmax(240px, 1.08fr) minmax(220px, .96fr);
    min-width: 950px;
}

.mts-position-source-control,
.mts-symbol-card-control {
    min-height: 334px;
}

.mts-position-source-control {
    gap: 5px;
    padding: 7px;
}

.mts-position-source-control .position-document-field {
    min-height: 43px;
    grid-template-columns: 64px minmax(0, 1fr);
    column-gap: 6px;
    padding: 3px 5px;
    border: 1px solid var(--border, #ccd5e1);
    border-left: 4px solid #9aa8b8;
    border-radius: 4px;
    background: var(--panel, #fff);
}

.mts-position-source-control .position-document-field > label {
    min-width: 0;
    color: var(--muted, #68778c);
    font-size: 9px;
    font-weight: 750;
    line-height: 1.08;
    text-transform: uppercase;
    letter-spacing: .03em;
}

.mts-position-source-control .position-document-editor {
    grid-template-columns: minmax(0, 1fr) 24px;
    gap: 4px;
}

.mts-position-source-control .position-document-editor input,
.mts-position-source-control .position-document-editor select {
    height: 30px;
    border: 1px solid var(--border-strong, #b8c3d2);
    background: var(--input-bg, #fff);
    color: var(--text, #17263d);
    font-size: 10.5px;
    font-weight: 650;
}

.mts-position-source-control .position-document-field.state-filled { border-left-color: #16a34a; }
.mts-position-source-control .position-document-field.state-missing,
.mts-position-source-control .position-document-field.state-reconfirmation { border-left-color: #d97706; }
.mts-position-source-control .position-document-field.state-hold { border-left-color: #2563eb; }
.mts-position-source-control .position-document-field.state-error,
.mts-position-source-control .position-document-field.state-conflict { border-left-color: #dc2626; }

.mts-position-selected-file {
    display: block;
    margin-top: auto;
    padding: 5px 7px;
    border: 1px dashed var(--border, #ccd5e1);
    border-radius: 3px;
    background: var(--panel-muted, #f7f9fb);
}

.mts-split-field.position-document-field {
    border-left: 4px solid #9aa8b8;
}
.mts-split-field.position-document-field.state-filled { border-left-color: #16a34a; }
.mts-split-field.position-document-field.state-missing,
.mts-split-field.position-document-field.state-reconfirmation { border-left-color: #d97706; }
.mts-split-field.position-document-field.state-hold { border-left-color: #2563eb; }
.mts-split-field.position-document-field.state-error,
.mts-split-field.position-document-field.state-conflict { border-left-color: #dc2626; }

.mts-system-preview-host {
    display: grid;
    place-items: center;
    flex: 1 1 auto;
    min-height: 156px;
    padding: 3px 0 0;
}

.mts-system-preview-empty {
    min-width: 128px;
    min-height: 92px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    border: 1px dashed var(--border-strong, #b8c3d2);
    border-radius: 4px;
    background: var(--panel-muted, #f7f9fb);
    color: var(--muted, #68778c);
    text-align: center;
}
.mts-system-preview-empty strong { font-size: 10px; }
.mts-system-preview-empty span { font-size: 9px; }

.mts-system-preview-stage {
    display: flex;
    align-items: stretch;
    justify-content: center;
    gap: 8px;
    min-width: 132px;
}

.mts-symbol-geometry {
    position: relative;
    width: 122px;
    height: 122px;
    flex: 0 0 122px;
    box-sizing: border-box;
    background: var(--input-bg, #fff);
    color: var(--text, #17263d);
}

.mts-system-preview-stage.system-rsu .mts-symbol-geometry.function-symbol,
.mts-system-preview-stage.system-paz .mts-symbol-geometry {
    border: 1.6px solid currentColor;
}

.mts-heating-ring {
    position: absolute;
    inset: -8px;
    z-index: 0;
    box-sizing: border-box;
    border-radius: 50%;
    pointer-events: none;
}

.mts-heating-ring::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: repeating-conic-gradient(
        from 0deg,
        currentColor 0deg 15deg,
        transparent 15deg 24deg
    );
    -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 1.8px), #000 calc(100% - 1.8px));
    mask: radial-gradient(farthest-side, transparent calc(100% - 1.8px), #000 calc(100% - 1.8px));
}

.mts-system-preview-stage.system-paz .mts-symbol-geometry.has-heating .mts-heating-ring {
    inset: -12px;
}

.mts-rsu-circle {
    position: absolute;
    inset: 10px;
    display: grid;
    grid-template-rows: 1fr 1.5px 1fr;
    overflow: hidden;
    border: 1.6px solid currentColor;
    border-radius: 50%;
    background: inherit;
}

.mts-system-preview-stage.system-rsu.position .mts-rsu-circle {
    inset: 4px;
}

.mts-paz-diamond {
    position: absolute;
    inset: 18px;
    border: 1.6px solid currentColor;
    transform: rotate(45deg);
    transform-origin: center;
}

.mts-paz-labels {
    position: absolute;
    inset: 13px 18px;
    z-index: 1;
    display: grid;
    grid-template-rows: 1fr 1.5px 1fr;
}

.mts-symbol-divider {
    align-self: center;
    width: 100%;
    height: 1.5px;
    background: currentColor;
}

.mts-symbol-text {
    min-width: 0;
    min-height: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4px 7px;
    overflow: hidden;
    color: inherit;
    font-size: 10.5px;
    font-weight: 750;
    line-height: 1.04;
    text-align: center;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.mts-limit-markers {
    width: 42px;
    min-height: 122px;
    display: grid;
    grid-template-rows: 1fr 1fr;
    align-items: center;
    color: var(--text, #17263d);
    font-size: 10px;
    font-weight: 750;
    line-height: 1.1;
}

.mts-limit-markers span {
    display: block;
    min-height: 12px;
    white-space: nowrap;
}
.mts-limit-markers .high { align-self: center; }
.mts-limit-markers .low { align-self: center; }

@media (max-width: 1040px) {
    .mts-position-card-grid {
        grid-template-columns: repeat(2, minmax(260px, 1fr));
        min-width: 600px;
    }
}

@media (max-width: 620px) {
    .mts-position-card-grid {
        grid-template-columns: minmax(280px, 1fr);
        min-width: 0;
    }
    .mts-position-source-control,
    .mts-symbol-card-control { min-height: 312px; }
    .mts-symbol-geometry { width: 112px; height: 112px; flex-basis: 112px; }
    .mts-limit-markers { min-height: 112px; }
}

/* Fan_ATX 2.14.85 — корректировка условных обозначений МТС. */
.mts-system-preview-stage.position .mts-rsu-circle,
.mts-system-preview-stage.position .mts-paz-labels {
    grid-template-rows: 1fr 1fr;
}

.mts-system-preview-stage.system-rsu.function .mts-rsu-circle {
    inset: 0;
}

/* Fan_ATX 2.14.86: temporary local AutoCAD module banner. */
.mts-local-autocad-banner {
    position: fixed;
    z-index: 2600;
    left: 50%;
    bottom: 28px;
    transform: translateX(-50%);
    max-width: min(520px, calc(100vw - 32px));
    padding: 10px 15px;
    border: 1px solid #315f9f;
    border-radius: 8px;
    background: #17365f;
    color: #fff;
    box-shadow: 0 10px 28px rgba(15, 34, 58, .30);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.35;
    text-align: center;
    pointer-events: none;
    animation: mts-local-autocad-banner-in .16s ease-out;
}

@keyframes mts-local-autocad-banner-in {
    from { opacity: 0; transform: translate(-50%, 8px); }
    to { opacity: 1; transform: translate(-50%, 0); }
}

/* Fan_ATX 2.14.87 — МТС: автоматическое обозначение позиции и конструктор позиции функции. */
.mts-position-derived-control {
    gap: 8px;
}

.mts-derived-position {
    display: grid;
    gap: 4px;
    min-height: 66px;
    padding: 8px 9px;
    border: 1px solid var(--border, #ccd5e1);
    border-left: 4px solid #16a34a;
    border-radius: 4px;
    background: var(--panel-muted, #f7f9fb);
}

.mts-derived-position > span {
    color: var(--muted, #68778c);
    font-size: 9px;
    font-weight: 750;
    text-transform: uppercase;
    letter-spacing: .035em;
}

.mts-derived-position > strong {
    color: var(--text, #17263d);
    font-size: 12px;
    overflow-wrap: anywhere;
}

.mts-derived-position > small {
    color: var(--muted, #68778c);
    font-size: 9px;
    line-height: 1.25;
}

.mts-function-position-field.position-document-field {
    min-height: 47px;
    grid-template-columns: 74px minmax(0, 1fr);
    column-gap: 6px;
    padding: 4px 5px;
    border: 1px solid var(--border, #ccd5e1);
    border-left: 4px solid #9aa8b8;
    border-radius: 4px;
    background: var(--panel, #fff);
}

.mts-function-position-field.position-document-field.state-filled { border-left-color: #16a34a; }
.mts-function-position-field.position-document-field.state-missing,
.mts-function-position-field.position-document-field.state-reconfirmation { border-left-color: #d97706; }
.mts-function-position-field.position-document-field.state-hold { border-left-color: #2563eb; }
.mts-function-position-field.position-document-field.state-error,
.mts-function-position-field.position-document-field.state-conflict { border-left-color: #dc2626; }

.mts-function-position-field > label {
    color: var(--muted, #68778c);
    font-size: 9px;
    font-weight: 750;
    line-height: 1.08;
    text-transform: uppercase;
    letter-spacing: .025em;
}

.mts-function-position-editor {
    grid-template-columns: minmax(0, 1fr) 34px 24px !important;
    gap: 4px !important;
}

.mts-function-position-editor input {
    height: 31px;
    font-size: 10.5px;
    font-weight: 700;
}

.mts-function-builder-button {
    width: 34px;
    height: 31px;
    border: 1px solid #2368b5;
    border-radius: 4px;
    background: #eaf3ff;
    color: #174f91;
    font-size: 13px;
    font-weight: 800;
    cursor: pointer;
}

.mts-function-builder-button:hover:not(:disabled) {
    background: #d8eaff;
}

.mts-function-builder-button:disabled {
    opacity: .48;
    cursor: default;
}

.mts-function-builder-modal {
    width: min(960px, calc(100vw - 28px));
    max-height: calc(100vh - 36px);
    overflow: hidden;
}

.mts-function-builder-modal .modal-header > div {
    display: grid;
    gap: 2px;
}

.mts-function-builder-modal .modal-header small {
    color: var(--muted, #68778c);
    font-size: 10px;
}

.mts-function-builder-body {
    display: grid;
    gap: 12px;
    max-height: calc(100vh - 178px);
    padding: 12px 14px;
    overflow: auto;
}

.mts-function-builder-required,
.mts-function-builder-rows,
.mts-function-builder-result {
    border: 1px solid var(--border, #ccd5e1);
    border-radius: 6px;
    background: var(--panel, #fff);
}

.mts-function-builder-required {
    border-top: 4px solid #dc2626;
}

.mts-function-builder-required > header,
.mts-function-builder-rows > header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 11px;
    border-bottom: 1px solid var(--border, #ccd5e1);
    background: var(--panel-muted, #f7f9fb);
}

.mts-function-builder-required > header,
.mts-function-builder-rows > header > div {
    min-width: 0;
}

.mts-function-builder-required > header strong,
.mts-function-builder-rows > header strong {
    display: block;
    color: var(--text, #17263d);
    font-size: 12px;
}

.mts-function-builder-required > header span,
.mts-function-builder-rows > header span {
    display: block;
    margin-top: 2px;
    color: var(--muted, #68778c);
    font-size: 9.5px;
    line-height: 1.25;
}

.mts-function-builder-head-grid {
    display: grid;
    grid-template-columns: minmax(160px, 1fr) minmax(150px, .8fr) minmax(190px, 1fr);
    gap: 9px;
    padding: 11px;
}

.mts-function-builder-head-grid label {
    display: grid;
    gap: 4px;
    color: var(--muted, #68778c);
    font-size: 10px;
    font-weight: 700;
}

.mts-function-builder-head-grid input,
.mts-function-builder-table-row input,
.mts-function-builder-table-row select {
    min-width: 0;
    height: 32px;
    border: 1px solid var(--border-strong, #b8c3d2);
    border-radius: 4px;
    background: var(--input-bg, #fff);
    color: var(--text, #17263d);
    padding: 0 8px;
    font: inherit;
    font-size: 11px;
}

.mts-function-builder-measured-row {
    display: grid;
    grid-template-columns: minmax(260px, 1.7fr) 58px minmax(210px, 1fr);
    align-items: stretch;
    gap: 8px;
    padding: 0 11px 11px;
}

.mts-function-builder-check {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    padding: 7px 9px;
    border: 1px solid var(--border, #ccd5e1);
    border-radius: 4px;
    background: var(--panel-muted, #f7f9fb);
    color: var(--text, #17263d);
    font-size: 10px;
    font-weight: 650;
}

.mts-function-builder-check input {
    width: 15px;
    height: 15px;
    margin: 0;
}

.mts-function-builder-code-chip {
    display: grid;
    place-items: center;
    border: 2px solid #2563eb;
    border-radius: 4px;
    background: #eef5ff;
    color: #174f91;
    font-size: 16px;
    font-weight: 850;
}

.mts-function-builder-measured-name {
    display: grid;
    align-content: center;
    gap: 2px;
    min-width: 0;
    padding: 6px 9px;
    border: 1px solid var(--border, #ccd5e1);
    border-radius: 4px;
}

.mts-function-builder-measured-name span {
    color: var(--muted, #68778c);
    font-size: 9px;
}

.mts-function-builder-measured-name strong {
    overflow: hidden;
    color: var(--text, #17263d);
    font-size: 10.5px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mts-function-builder-rows {
    border-top: 4px solid #2563eb;
}

.mts-function-builder-empty {
    padding: 18px;
    color: var(--muted, #68778c);
    font-size: 10px;
    text-align: center;
}

.mts-function-builder-table {
    display: grid;
    padding: 8px 10px 10px;
}

.mts-function-builder-table-head,
.mts-function-builder-table-row {
    display: grid;
    grid-template-columns: 70px 100px minmax(190px, 1fr) 34px;
    align-items: center;
    gap: 6px;
}

.mts-function-builder-table-head {
    min-height: 28px;
    color: var(--muted, #68778c);
    font-size: 9px;
    font-weight: 750;
    text-transform: uppercase;
}

.mts-function-builder-table-row {
    min-height: 40px;
    border-top: 1px solid var(--border, #e0e5ec);
}

.mts-function-builder-table-row .only-check {
    justify-content: center;
    padding: 0;
    border: 0;
    background: transparent;
}

.mts-function-builder-table-row .button.icon {
    width: 32px;
    height: 30px;
    padding: 0;
}

.mts-function-builder-result {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 112px;
    align-items: center;
    gap: 14px;
    padding: 11px 13px;
    border-left: 4px solid #16a34a;
}

.mts-function-builder-result-code {
    display: grid;
    gap: 3px;
    min-width: 0;
}

.mts-function-builder-result-code span,
.mts-function-builder-result-code small {
    color: var(--muted, #68778c);
    font-size: 9.5px;
}

.mts-function-builder-result-code strong {
    overflow-wrap: anywhere;
    color: var(--text, #17263d);
    font-size: 16px;
}

.mts-function-builder-mini-preview {
    width: 92px;
    height: 92px;
    display: grid;
    grid-template-rows: 1fr 1fr;
    overflow: hidden;
    border: 1.5px solid var(--text, #17263d);
    border-radius: 50%;
    background: var(--input-bg, #fff);
}

.mts-function-builder-mini-preview span {
    display: grid;
    place-items: center;
    min-width: 0;
    padding: 4px 6px;
    overflow: hidden;
    color: var(--text, #17263d);
    font-size: 9.5px;
    font-weight: 750;
    overflow-wrap: anywhere;
    text-align: center;
}

.mts-function-builder-mini-preview span + span {
    border-top: 1.5px solid var(--text, #17263d);
}

@media (max-width: 720px) {
    .mts-function-builder-head-grid,
    .mts-function-builder-measured-row,
    .mts-function-builder-result {
        grid-template-columns: 1fr;
    }
    .mts-function-builder-table-head { display: none; }
    .mts-function-builder-table-row {
        grid-template-columns: 46px 80px minmax(120px, 1fr) 34px;
    }
    .mts-function-builder-result { justify-items: center; }
    .mts-function-builder-result-code { width: 100%; }
}

/* 2.14.88 — конструктор позиции функции по матрице обозначений измеряемых параметров. */
.mts-function-builder-head-grid select {
    min-width: 0;
    height: 32px;
    border: 1px solid var(--border-strong, #b8c3d2);
    border-radius: 4px;
    background: var(--input-bg, #fff);
    color: var(--text, #17263d);
    padding: 0 8px;
    font: inherit;
    font-size: 11px;
}

.mts-function-builder-measured-name small {
    overflow: hidden;
    color: var(--muted, #68778c);
    font-size: 8.5px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mts-function-builder-table-head,
.mts-function-builder-table-row {
    grid-template-columns: 70px 90px 108px minmax(230px, 1fr) 34px;
}

.mts-function-builder-designation {
    display: grid;
    place-items: center;
    min-height: 30px;
    border: 1px solid #8fb0da;
    border-radius: 4px;
    background: #eef5ff;
    color: #174f91;
    font-size: 12px;
    letter-spacing: .04em;
}

.mts-function-builder-function-name {
    min-width: 0;
    overflow: hidden;
    color: var(--text, #17263d);
    font-size: 10px;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mts-function-builder-empty.warning {
    color: #8a4b00;
    background: #fff8e7;
}

.mts-function-builder-notes {
    display: grid;
    gap: 3px;
    padding: 8px 11px 10px;
    border-top: 1px solid var(--border, #e0e5ec);
    color: var(--muted, #68778c);
    font-size: 8.8px;
    line-height: 1.3;
}

.mts-function-builder-notes b {
    color: var(--text, #17263d);
}

@media (max-width: 720px) {
    .mts-function-builder-table-row {
        grid-template-columns: 42px 72px 82px minmax(120px, 1fr) 34px;
    }
    .mts-function-builder-function-name {
        white-space: normal;
    }
}

/* 2.14.89 — форма создания функции в виде матрицы по исходному изображению. */
.mts-function-builder-modal {
    width: min(1480px, calc(100vw - 24px));
}

.mts-function-builder-matrix-section {
    overflow: hidden;
    border: 1px solid var(--border, #ccd5e1);
    border-top: 4px solid #dc2626;
    border-radius: 6px;
    background: var(--panel, #fff);
}

.mts-function-builder-matrix-section > header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 9px 11px;
    border-bottom: 1px solid var(--border, #ccd5e1);
    background: var(--panel-muted, #f7f9fb);
}

.mts-function-builder-matrix-section > header strong {
    display: block;
    color: var(--text, #17263d);
    font-size: 12px;
}

.mts-function-builder-matrix-section > header span {
    display: block;
    margin-top: 2px;
    color: var(--muted, #68778c);
    font-size: 9.5px;
    line-height: 1.25;
}

.mts-function-matrix-wrap {
    width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    background: var(--input-bg, #fff);
}

.mts-function-matrix {
    width: 100%;
    min-width: 1320px;
    border-collapse: collapse;
    table-layout: fixed;
    color: var(--text, #17263d);
    font-size: 9px;
}

.mts-function-matrix th,
.mts-function-matrix td {
    border: 1px solid #8d98a8;
    padding: 0;
    text-align: center;
    vertical-align: middle;
}

.mts-function-matrix thead th {
    background: var(--panel, #fff);
    font-weight: 750;
}

.mts-function-matrix-measured-title {
    width: 292px;
    min-width: 292px;
    padding: 12px 14px !important;
    border-top: 2px solid #dc2626 !important;
    border-left: 2px solid #dc2626 !important;
    text-align: left !important;
    font-size: 11px;
    line-height: 1.5;
}

.mts-function-matrix-functions-title {
    height: 30px;
    border-top: 2px solid #dc2626 !important;
    border-right: 2px solid #dc2626 !important;
    font-size: 11px;
    letter-spacing: .02em;
}

.mts-function-matrix-description-row th {
    width: 60px;
    height: 150px;
    border-bottom: 1px solid #8d98a8;
}

.mts-function-matrix-description-row th:last-child {
    border-right: 2px solid #dc2626 !important;
}

.mts-function-matrix-description-row th span {
    display: inline-block;
    max-height: 142px;
    padding: 6px 2px;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    color: var(--text, #17263d);
    font-size: 8.5px;
    font-weight: 700;
    line-height: 1.05;
    text-align: left;
}

.mts-function-matrix-code-row th {
    height: 34px;
    padding: 4px 3px;
    background: var(--panel-muted, #f7f9fb);
    font-size: 9px;
}

.mts-function-matrix-code-row th:first-child {
    width: 244px;
    padding-left: 10px;
    border-left: 2px solid #dc2626 !important;
    text-align: left;
}

.mts-function-matrix-symbol-head {
    width: 48px;
    border-right: 2px solid #2563eb !important;
    border-left: 2px solid #2563eb !important;
}

.mts-function-matrix-code-row th:last-child {
    border-right: 2px solid #dc2626 !important;
}

.mts-function-matrix tbody td {
    height: 58px;
    background: var(--input-bg, #fff);
}

.mts-function-matrix-parameter-cell {
    width: 244px;
    min-width: 244px;
    padding: 6px 8px !important;
    text-align: left !important;
}

.mts-function-matrix-parameter-cell label {
    display: flex;
    align-items: center;
    gap: 7px;
    color: var(--text, #17263d);
    font-size: 10px;
    font-weight: 750;
    cursor: pointer;
}

.mts-function-matrix-parameter-cell input {
    width: 15px;
    height: 15px;
    margin: 0;
    flex: 0 0 auto;
}

.mts-function-matrix-parameter-cell small {
    display: block;
    margin: 4px 0 0 22px;
    overflow: hidden;
    color: var(--muted, #68778c);
    font-size: 8px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mts-function-matrix-symbol-cell {
    width: 48px;
    min-width: 48px;
    border-right: 2px solid #2563eb !important;
    border-left: 2px solid #2563eb !important;
    background: #eef5ff !important;
    color: #174f91;
    font-size: 15px;
    font-weight: 850;
}

.mts-function-matrix-function-cell {
    width: 60px;
    min-width: 60px;
}

.mts-function-matrix-function-cell.unavailable {
    background: repeating-linear-gradient(-45deg, transparent, transparent 5px, rgba(100, 116, 139, .055) 5px, rgba(100, 116, 139, .055) 10px) !important;
}

.mts-function-matrix-function-cell.available {
    background: #fbfdff !important;
}

.mts-function-matrix-function-cell.selected {
    background: #e8f7ed !important;
    box-shadow: inset 0 0 0 2px #16a34a;
}

.mts-function-matrix-cell-button {
    position: relative;
    width: 100%;
    height: 100%;
    min-height: 56px;
    display: grid;
    place-items: center;
    border: 0;
    background: transparent;
    color: var(--text, #17263d);
    padding: 4px 2px;
    font: inherit;
    font-size: 10px;
    font-weight: 760;
    cursor: pointer;
}

.mts-function-matrix-cell-button:hover {
    background: #eaf3ff;
}

.mts-function-matrix-cell-button b {
    position: absolute;
    right: 3px;
    top: 2px;
    color: #15803d;
    font-size: 10px;
}

@media (max-width: 720px) {
    .mts-function-builder-modal {
        width: calc(100vw - 10px);
    }

    .mts-function-matrix {
        min-width: 1260px;
    }
}

/* 2.14.90 — компактная вертикальная форма создания позиции функции. */
.mts-function-builder-modal-compact {
    width: min(660px, calc(100vw - 20px));
    max-height: calc(100vh - 20px);
}

.mts-function-builder-modal-compact .modal-header {
    min-height: 42px;
    padding: 8px 12px;
}

.mts-function-builder-modal-compact .modal-header h2 {
    margin: 0;
    font-size: 15px;
}

.mts-function-builder-body-compact {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 8px;
    padding: 8px 10px;
    overflow: hidden;
}

.mts-function-vertical-wrap {
    max-height: min(58vh, 540px);
    overflow: auto;
    border: 1px solid var(--border, #cbd5e1);
    border-radius: 5px;
    background: var(--input-bg, #fff);
}

.mts-function-vertical-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    color: var(--text, #17263d);
    font-size: 10px;
}

.mts-function-vertical-table th,
.mts-function-vertical-table td {
    height: 28px;
    padding: 3px 7px;
    border: 1px solid var(--border, #cbd5e1);
    vertical-align: middle;
}

.mts-function-vertical-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--panel-muted, #f3f6f9);
    color: var(--text, #17263d);
    font-size: 9px;
    font-weight: 800;
    text-align: left;
}

.mts-function-vertical-table .mts-function-vertical-check {
    width: 38px;
    padding: 0;
    text-align: center;
}

.mts-function-vertical-table .mts-function-vertical-symbol {
    width: 56px;
    text-align: center;
    font-weight: 800;
}

.mts-function-vertical-table .mts-function-vertical-code {
    width: 72px;
    text-align: center;
    font-weight: 850;
    letter-spacing: .02em;
}

.mts-function-vertical-table input[type="checkbox"] {
    width: 15px;
    height: 15px;
    margin: 0;
    vertical-align: middle;
    cursor: pointer;
}

.mts-function-vertical-table tbody tr.available {
    cursor: pointer;
}

.mts-function-vertical-table tbody tr.available:hover td {
    background: #eef6ff;
}

.mts-function-vertical-table tbody tr.selected td {
    background: #e9f8ee;
}

.mts-function-vertical-table tbody tr.selected td:first-child {
    box-shadow: inset 3px 0 0 #16a34a;
}

.mts-function-vertical-table tbody tr.unavailable td {
    color: var(--muted, #7a8798);
    background: repeating-linear-gradient(-45deg, transparent, transparent 5px, rgba(100, 116, 139, .045) 5px, rgba(100, 116, 139, .045) 10px);
}

.mts-function-vertical-measured td {
    background: #eef5ff;
    border-top: 2px solid #2563eb;
    border-bottom: 2px solid #2563eb;
}

.mts-function-vertical-measured strong {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 10px;
}

.mts-function-vertical-measured small {
    display: block;
    overflow: hidden;
    color: var(--muted, #68778c);
    font-size: 8px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.mts-function-builder-result-compact {
    display: block;
    min-height: 0;
    padding: 9px 12px;
    border-left: 4px solid #16a34a;
}

.mts-function-builder-result-compact .mts-function-builder-result-code {
    width: 100%;
}

.mts-function-builder-result-compact .mts-function-builder-result-code strong {
    margin-top: 2px;
    font-size: 16px;
}

.mts-function-builder-modal-compact .modal-actions {
    padding: 8px 10px;
}

@media (max-width: 560px) {
    .mts-function-builder-modal-compact {
        width: calc(100vw - 8px);
        max-height: calc(100vh - 8px);
    }

    .mts-function-vertical-table th,
    .mts-function-vertical-table td {
        padding-inline: 5px;
    }

    .mts-function-vertical-table .mts-function-vertical-symbol {
        width: 48px;
    }

    .mts-function-vertical-table .mts-function-vertical-code {
        width: 62px;
    }
}


/* 2.14.93 — МТС использует ровно тот же компактный шаблон параметров, что и ПО. */
.position-document-card[data-document-type="MTS"] .mts-reference-layout {
    grid-template-columns:
        minmax(190px, 1.05fr)
        minmax(175px, .95fr)
        minmax(205px, 1.08fr)
        minmax(190px, 1fr);
    min-width: 780px;
}

/* Никаких отдельных карточек/подложек МТС: поля наследуют общий шаблон ПО. */
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-po-column {
    min-width: 0;
    gap: 0;
    padding: 0 10px;
    border: 0;
    border-left: 1px solid #c9d2dc;
    background: transparent;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-po-column:first-child {
    padding-left: 0;
    border-left: 0;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-po-column:last-child {
    padding-right: 0;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field-group-title {
    min-height: 23px;
    margin: 0 0 3px;
    padding: 0 2px 4px;
    border: 0;
    border-bottom: 1px solid #b8c3cf;
    background: transparent;
    color: #243b57;
    font-size: 9.5px;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
}

.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-function-position-field,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-derived-position-field {
    position: relative;
    min-width: 0;
    min-height: 27px;
    display: grid;
    grid-template-columns: minmax(58px, 40%) minmax(0, 1fr);
    align-items: center;
    gap: 4px;
    padding: 1px 2px 1px 5px;
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid transparent;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field:hover,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-function-position-field:hover,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-derived-position-field:hover {
    background: #f4f7fa;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field > label {
    min-width: 0;
    min-height: 0;
    display: block;
    align-self: center;
    color: #536277;
    font-size: 9px;
    font-weight: 500;
    line-height: 1.12;
    overflow-wrap: anywhere;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor {
    min-width: 0;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 18px;
    gap: 3px;
    align-items: center;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor input,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor select,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor textarea {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    border: 1px solid transparent;
    border-radius: 2px;
    background: transparent;
    color: #172033;
    font-size: 9.5px;
    font-weight: 500;
    box-shadow: none;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor input,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor select {
    height: 24px;
    min-height: 24px;
    padding: 0 5px;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor textarea {
    min-height: 30px;
    padding: 4px 5px;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field:hover .position-document-editor input:not(:disabled),
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field:hover .position-document-editor select:not(:disabled),
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field:hover .position-document-editor textarea:not(:disabled) {
    border-color: #b7c1cd;
    background: #fff;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor input:focus,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor select:focus,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor textarea:focus {
    border-color: #1d5fc4;
    background: #fff;
    box-shadow: 0 0 0 1px rgba(29,95,196,.14);
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor input:disabled,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor select:disabled,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-editor textarea:disabled,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-derived-position-editor input[readonly] {
    border-color: transparent;
    background: transparent;
    color: #4e5e72;
    -webkit-text-fill-color: #4e5e72;
    opacity: 1;
}

.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field-hold {
    width: 18px;
    height: 18px;
    border-radius: 2px;
    font-size: 7.5px;
    opacity: 0;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field:hover .position-document-field-hold,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field-hold:focus-visible,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field-hold.active {
    opacity: 1;
}

/* Состояния — только цветовая полоса, как в ПО. */
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field.state-filled {
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid #16813d;
    background: transparent;
    box-shadow: none;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field.state-missing,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field.state-reconfirmation {
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid #b66a00;
    background: transparent;
    box-shadow: none;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field.state-hold,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field.on-hold {
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid #2f6db8;
    background: transparent;
    box-shadow: none;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field.state-error,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-field.state-conflict {
    border: 0;
    border-left: var(--fan-card-status-stripe, 2px) solid #c62828;
    background: transparent;
    box-shadow: none;
}

/* Специальные элементы МТС подогнаны под компактную строку ПО. */
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-function-position-editor {
    grid-template-columns: minmax(0, 1fr) 24px 18px;
    gap: 3px;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-function-builder-button {
    width: 24px;
    height: 22px;
    padding: 0;
    border: 1px solid #b7c1cd;
    border-radius: 2px;
    background: #fff;
    color: #243b57;
    font-size: 10px;
    font-weight: 700;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-derived-position-editor {
    grid-template-columns: minmax(0, 1fr);
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-placement-button {
    min-height: 24px;
    margin: 4px 5px 2px;
    padding: 3px 7px;
    border-radius: 2px;
    font-size: 9px;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-system-preview-host {
    min-height: 138px;
    margin-top: 3px;
    padding-top: 2px;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-position-selected-file,
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-position-card-empty {
    display: block;
    margin: 3px 5px 0;
    padding: 0;
    border: 0;
    background: transparent;
    color: #607088;
    font-size: 8.5px;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-position-card-interlock .position-document-field {
    align-items: start;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-position-card-interlock .position-document-field > label {
    padding-top: 6px;
}
.position-document-card[data-document-type="MTS"] .mts-reference-layout .mts-position-card-interlock textarea {
    min-height: 54px;
}

@media (max-width: 1040px) {
    .position-document-card[data-document-type="MTS"] .mts-reference-layout {
        grid-template-columns: repeat(2, minmax(260px, 1fr));
        min-width: 600px;
    }
    .position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-po-column:nth-child(3) {
        padding-left: 0;
        border-left: 0;
    }
}
@media (max-width: 620px) {
    .position-document-card[data-document-type="MTS"] .mts-reference-layout {
        grid-template-columns: minmax(280px, 1fr);
        min-width: 0;
    }
    .position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-po-column {
        padding: 0 0 10px;
        border-left: 0;
        border-bottom: 1px solid #c9d2dc;
    }
    .position-document-card[data-document-type="MTS"] .mts-reference-layout .position-document-po-column:last-child {
        padding-bottom: 0;
        border-bottom: 0;
    }
}

/* Fan_ATX 2.14.99 — раздел «Задание ЭМ» */
.em-task-workspace .workspace-header {
    align-items: center;
}

.em-task-context-bar {
    grid-template-columns: minmax(260px, 1.2fr) minmax(190px, .7fr) minmax(240px, 1fr) auto;
    align-items: end;
}

.em-task-table-panel {
    min-height: 0;
}

.em-task-table {
    min-width: 1360px;
}

.em-task-table th {
    white-space: normal;
    line-height: 1.15;
}

.em-task-table td {
    padding: 3px 5px;
    vertical-align: middle;
}

.em-task-position {
    white-space: nowrap;
}

.em-task-cell-editor {
    width: 100%;
    min-width: 0;
    height: 30px;
    box-sizing: border-box;
    border: 1px solid transparent;
    border-radius: 3px;
    padding: 3px 7px;
    background: transparent;
    color: var(--text, #17263d);
    font: inherit;
}

.em-task-cell-editor:hover {
    border-color: var(--border, #cbd5e1);
    background: var(--input-bg, #fff);
}

.em-task-cell-editor:focus {
    outline: none;
    border-color: var(--accent, #2563eb);
    background: var(--input-bg, #fff);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent, #2563eb) 15%, transparent);
}

.em-task-cell-editor:disabled {
    opacity: .75;
    cursor: default;
}

.em-task-table select.em-task-cell-editor {
    cursor: pointer;
}

@media (max-width: 900px) {
    .em-task-context-bar {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 620px) {
    .em-task-context-bar {
        grid-template-columns: 1fr;
    }
}
