body {
    font-family: 'Roboto Condensed', sans-serif;
}

/* Строка-пояснение в PDF-вьювере скана (выбор страниц) — «пилюля» в фирменном
   оранжевом акценте сайта (#FF7000): оранжевый текст на светло-оранжевом фоне
   со светлой рамкой того же тона.
   fit-content + margin auto центрирует пилюлю; :empty прячет её, пока текста нет. */
.scan-info {
    display: block;
    width: fit-content;
    max-width: 100%;
    margin: .5rem auto 0;
    padding: .4rem .95rem;
    background: #fff1e6;
    color: #FF7000;
    border: 1px solid #ffcfa8;
    border-radius: 999px;
    font-weight: 600;
    font-size: 1rem;
}
.scan-info:empty { display: none; }



.btn-primary:hover {
  color: #004E64;
  background-color: #fff;
  border-color: #004E64;
}

.btn-success {
  color: #fff;
}

.btn-success:hover {
  color: #FF7000;
  background-color: #fff;
  border-color: #FF7000;
}

.btn-success:disabled {
  color: #fff;
}

.btn-success:focus {
  color: #fff;
}

.btn-success:active {
  color: #fff;
}

/* Cancel и т.п.: инверсия при наведении, как у btn-primary/btn-success — белый фон,
   цветные текст и рамка (у secondary — собственный серый). */
.btn-secondary:hover {
  color: #6c757d;
  background-color: #fff;
  border-color: #6c757d;
}



.footer-link {
    text-decoration: none;
}

.footer-link:hover {
    color: #FF7000;
}

.page-content {
    min-height: calc(100vh - 107px);
}

.header-background {
    background-color: #0084a9;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 304 304' width='304' height='304'%3E%3Cpath fill='%23004e64' fill-opacity='0.67' d='M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z'%3E%3C/path%3E%3C/svg%3E");
}

.t-shadow {
    text-shadow: black 0.05em 0.05em 0.05em;
}

.fast-launch-icon {
    background: #ffffff;
    width: 160px;
    height: 160px;
    border: 2px solid #0084a9;
    border-radius: 4px;
    margin: 4px;
    cursor: pointer;
    box-shadow: #D3D3D3 0.2em 0.2em 0.2em;
}

.fast-launch-icon:hover {
    border: 2px solid #FF7000;
    box-shadow: #a0a0a0 0.2em 0.2em 0.2em;
}

.fixed-width-icon-cont {
    flex: 0 0 0px;
}

.f-l-icon-pic {
    width: 100%;
    height: 73%;
}

.f-l-icon-text {
    border-top: 1px solid #9E9E9E;
    width: 100%;
    height: 27%;
    background: #E9ECEF;
}

.cl-rqs {
    background: #ffffff;
    width: 60px;
    height: 28px;
    border: 1px solid #d9d9d9;
    margin: 6px;
    cursor: pointer;
}

.pcl-rqs:hover {
    border: 1px solid #999999;
}

.cl-pck {
    background: #ffffff;
    width: 30px;
    height: 30px;
    border: 1px solid #d9d9d9;
    margin: 3px;
    cursor: pointer;
}

.cl-pck:hover {
    border: 1px solid #999999;
}

.cl-pck-res {
    background: #ffffff;
    width: 100%;
    height: 45px;
    border: 1px solid #d9d9d9;
    cursor: pointer;
}

/* override placeholder color */
.form-control::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */
            color: #cccccc;
            opacity: 1; /* Firefox */
}
.form-control:-ms-input-placeholder { /* Internet Explorer 10-11 */
            color: #cccccc;
}
.form-control::-ms-input-placeholder { /* Microsoft Edge */
            color: #cccccc;
}


/* Dimension fields style -------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------------------------------- */
/* Оба крайних — одинаковая ширина и фон */
.dim-row .dim-label,
.dim-row .dim-auto-wrap {
    width: 36px;
    min-width: 36px;
    max-width: 36px;
    background-color: #e9ecef;  /* ← gray-200 */
    border-color: #ced4da;
    justify-content: center;
    padding: 0;
}
.dim-row .dim-label {
    font-size: 14px;
    font-weight: 500;
}

/* Три поля — строго равные */
.dim-row .dim-inp {
    flex: 1 1 0;
    min-width: 0;
    transition: background-color .12s, color .12s;
}
.dim-row .dim-inp-nom {
    border-left-color: #adb5bd;
    border-right-color: #adb5bd;
    font-weight: 500;
}

/* Auto-состояние */
.dim-row.is-auto .dim-inp {
    background-color: #e9ecef;
    /* color: #adb5bd; */
    pointer-events: none;
}
/* .dim-row.is-auto .dim-label { color: #adb5bd; } */
.dim-auto-label {
    font-size: 9px;
    letter-spacing: .04em;
    /* color: #6c757d; */
    cursor: pointer;
    line-height: 1.2;
    margin-top: 1px;
    user-select: none;
}
/* .dim-row.is-auto .dim-auto-label { color: #0d6efd; } */

/* Заголовки MIN / NOM / MAX */
.dim-headers {
    display: flex;
    margin-bottom: 3px;
    font-size: 9px;
    font-weight: 500;
    letter-spacing: .06em;
    color: #adb5bd;
    text-transform: uppercase;
}
.dim-headers .dh-side  { width: 36px; min-width: 36px; }
.dim-headers .dh-field { flex: 1 1 0; text-align: center; }


.dim-row-invalid .dim-inp {
    border-top-color: #dc3545 !important;
    border-bottom-color: #dc3545 !important;
}
.dim-row-invalid .dim-inp:nth-of-type(1) {
    border-left-color: #dc3545 !important;
}
.dim-row-invalid .dim-inp:last-of-type {
    border-right-color: #dc3545 !important;
}

/* Таблица пинов в модалке Create Symbol — та же раскладка, что Dimensions -------------------------- */
/* Строка = input-group.dim-row.pin-row; торцы dim-label/dim-auto-wrap; ширины колонок ниже.          */
/* Правила идут ПОСЛЕ .dim-row .dim-inp (flex:1 1 0) и той же специфичности — перекрывают по порядку. */
.pin-row .pin-num  { flex: 0 0 3.4rem; min-width: 0; }
.pin-row .pin-name { flex: 1 1 0; min-width: 0; }
.pin-row .pin-type { flex: 0 0 8.5rem; min-width: 0; }
.pin-row .pin-sub  { flex: 0 0 4.6rem; min-width: 0; }
/* Subsymbol — кастомный дропдаун (высоту раскрытого списка нативный select не даёт). */
/* Общий кастомный дропдаун (Pin Type и Subsymbol) — chevron как у нативного .form-select. */
.pw-select { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
    padding-right: 1.75rem; cursor: pointer; user-select: none; -webkit-user-select: none;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 16px 12px; }
/* Список — как нативный .dropdown-menu/.dropdown-item Bootstrap (единый стиль с сайтом). */
.sub-pop { position: fixed; z-index: 3000; padding: .5rem 0; font-size: .875rem; color: #212529;
    text-align: left; background-color: #fff; background-clip: padding-box;
    border: 1px solid rgba(0,0,0,.15); border-radius: .25rem;
    box-shadow: 0 .5rem 1rem rgba(0,0,0,.175); max-height: 12.5rem; overflow-y: auto;
    scrollbar-width: thin; scrollbar-color: #c1c1c1 #f1f1f1; }   /* Firefox: непрозрачный трек */
/* WebKit/Chrome: явный непрозрачный трек и бегунок (иначе трек прозрачный — сквозь него
   видно таблицу под попапом). */
.sub-pop::-webkit-scrollbar { width: 12px; }
.sub-pop::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 0 .25rem .25rem 0; }
.sub-pop::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 6px; border: 3px solid #f1f1f1; }
.sub-pop::-webkit-scrollbar-thumb:hover { background: #a8a8a8; }
.sub-opt { display: block; width: 100%; padding: .25rem 1rem; font-weight: 400; color: #212529;
    text-align: left; white-space: nowrap; background-color: transparent; cursor: pointer; }
.sub-opt:hover { color: #1e2125; background-color: #e9ecef; }
.sub-opt.sel { background-color: #eef4ff; }

/* Вид таблицы: без вертикальных зазоров, соседние рамки схлопнуты в одну линию.  */
.pin-row { margin-bottom: -1px; }               /* перекрыть 1px нижней рамки верхней строки */
.pin-row:last-child { margin-bottom: 0; }
.pin-row:hover, .pin-row:focus-within { position: relative; z-index: 1; }  /* активная рамка поверх соседних */
/* Лёгкая подсветка всего ряда при наведении — легче читать данные пина целиком.
   Тонируем сами поля (.dim-inp), т.к. они заполняют строку и лежат поверх её фона.
   Убираем анимацию фона (.dim-inp по умолчанию имеет transition background-color),
   иначе при быстром движении курсора подсветка «затухает» с задержкой — тормозит. */
.pin-row .dim-inp { transition: none; }
.pin-row:hover .dim-inp { background-color: #eef4ff; }
/* убрать скругление на стыках строк — скруглены только нижние углы последней строки.
   Верх таблицы всегда прямой: он стыкуется с прямым низом заголовков (единый блок).
   Целим первый/последний элемент строки (input-group скругляет только их края). */
.pin-row > :first-child,
.pin-row > :last-child { border-top-left-radius: 0; border-top-right-radius: 0; }
.pin-row:not(:last-child) > :first-child,
.pin-row:not(:last-child) > :last-child { border-bottom-left-radius: 0; border-bottom-right-radius: 0; }

/* Заголовки колонок пинов — в стиле заголовков Left/Right Side (.plc-col-title),
   ширины совпадают с полями строки. */
.pin-headers {
    display: flex;
    position: sticky; top: 0;
    z-index: 2;
    margin-bottom: -1px;   /* стык с первой строкой: общая граница, рамка сливается */
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .04em;
    color: #495057;
    text-transform: uppercase;
}
/* каждая ячейка-заголовок = обрамлённый бокс, сливающийся с таблицей ниже
   (как строка-заголовок колонки Left/Right Side): скруглены только верхние углы */
.pin-headers > span {
    text-align: center; padding: .35rem;
    background: #f8f9fa;
    border: 1px solid #dee2e6;
}
.pin-headers > span:not(:first-child) { margin-left: -1px; }  /* стыковать рамки */
.pin-headers > span:first-child { border-top-left-radius: 6px; }
.pin-headers > span:last-child  { border-top-right-radius: 6px; }
.pin-headers .ph-num  { flex: 0 0 3.4rem; }
.pin-headers .ph-name { flex: 1 1 0; }
.pin-headers .ph-type { flex: 0 0 8.5rem; }
.pin-headers .ph-sub  { flex: 0 0 4.6rem; }

/* Placement on Symbol — редактор раскладки пинов (drag & drop + пробелы) ------------------------------ */
/* Хост со скроллом: сабсимволы (несколько .plc-group) идут один за одним вниз.
   flex-колонка нужна, чтобы в single-режиме единственная группа растягивалась на всю высоту. */
.plc-host { height: 100%; overflow-y: auto; display: flex; flex-direction: column; }
/* Раздел раскладки недоступен (тип != Integrated Circuits): по центру «Coming Soon». */
.plc-host.plc-coming { align-items: center; justify-content: center;
    border: 1px dashed #dee2e6; border-radius: 6px; }
/* Тот же вид, что у подписи «Coming Soon» на карточках главной (index-label.html):
   h6-типографика, вес 600, приглушённый серый #9aa0a6. */
.plc-coming-msg { font-size: 1rem; font-weight: 600; color: #9aa0a6; }
/* Один сабсимвол: заголовок "Subsymbol A" + пара колонок Left/Right. */
.plc-group { margin-bottom: .6rem; }
.plc-group:last-child { margin-bottom: 0; }
.plc-group-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
    color: #495057; margin: 0 0 .25rem; text-align: center; }
.plc-wrap { display: flex; gap: .5rem; }
/* один символ (без сабсимволов) — единственная группа растягивается на всю высоту хоста
   (flex:1 0 auto: заполняет при коротком содержимом, растёт вместе с содержимым при
   длинном; shrink:0 => при переполнении скроллит ОДНА общая полоса хоста). */
.plc-host.plc-single .plc-group { flex: 1 0 auto; display: flex; flex-direction: column; }
.plc-host.plc-single .plc-wrap  { flex: 1 0 auto; }
.plc-col { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column;
    background: #fff; border: 1px solid #dee2e6; border-radius: 6px; overflow: hidden; }
.plc-col-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;
    color: #495057; text-align: center; padding: .35rem; background: #f8f9fa; border-bottom: 1px solid #e9ecef; }
.plc-list { flex: 1 1 0; overflow-y: auto; padding: .35rem; min-height: 1.6rem; }
/* Сабсимволы: списки по содержимому, скроллит весь хост (одна общая полоса).
   Колонки в паре растягиваются до высоты самой высокой (align-items:stretch). */
.plc-list { flex: 0 0 auto; overflow: visible; }
/* Один символ: список заполняет колонку до низа (растянутую на всю высоту хоста);
   при длинном содержимом растёт вместе с ней, скроллит общая полоса хоста. */
.plc-host.plc-single .plc-list { flex: 1 1 auto; }
/* лёгкая подсветка при наведении (пины и пробелы) — тот же голубой, что у строк
   Pinout Table (.pin-row:hover .dim-inp -> #eef4ff), в стиле primary-акцента сайта.
   Выше по файлу, чем .drop-hover, чтобы оранжевая drag-подсветка цели (та же
   специфичность) перебивала hover при перетаскивании. */
.plc-item:hover { background: #eef4ff; border-color: #b6d4fe; }
/* подсветка наводимого при drag элемента — на его место встанет перетаскиваемый */
.plc-item.drop-hover  { background: #fff3e6; border-color: #ff7000; box-shadow: inset 0 0 0 1px #ff7000; }
.plc-item { display: flex; align-items: center; gap: .4rem; padding: .22rem .4rem; margin-bottom: .25rem;
    background: #eef2f7; border: 1px solid #cfd8e3; border-radius: 4px; font-size: .85rem; cursor: grab;
    transition: none; }   /* подсветка при наведении — мгновенная, без анимации/задержки */
.plc-item:last-child { margin-bottom: 0; }
.plc-item.dragging { opacity: .4; }
.plc-item, .plc-item * { user-select: none; -webkit-user-select: none; -moz-user-select: none; }
.plc-grip { color: #98a6b5; cursor: grab; font-size: .9rem; line-height: 1; }
.plc-label { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.plc-gap { background: #fff; border-style: dashed; color: #8a97a5; }
.plc-addgap, .plc-delgap { flex: 0 0 auto; width: 1.2rem; height: 1.2rem; line-height: 1; padding: 0;
    border: none; background: transparent; color: #6c757d; cursor: pointer; border-radius: 3px; font-weight: 700; }
.plc-addgap:hover { background: #d5e0ec; color: #0d6efd; }
.plc-delgap:hover { background: #f8d7da; color: #dc3545; }

/* --------------------------------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------------------------------- */

.form-control.is-invalid {
    background-image: none !important;
}

.form-control.is-invalid {
    background-image: none !important;
    padding-right: 0.5rem !important; /* то же что обычный form-control-sm */
}


.variant-radio-item {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 12px;
    border-radius: 6px;
    border: 1px solid #dee2e6;
    cursor: pointer;
    background: #fff;
    transition: border-color 0.12s, background 0.12s;
    margin-bottom: 6px;
}
.variant-radio-item.active { border-color: #0d6efd; background: #e8f0fe; }
.variant-radio-item:hover:not(.active) { background: #f8f9fa; }
.variant-radio-dot {
    width: 16px; height: 16px; border-radius: 50%;
    border: 1.5px solid #adb5bd;
    flex-shrink: 0; display: flex; align-items: center; justify-content: center;
}
.variant-radio-item.active .variant-radio-dot { border-color: #0d6efd; }
.variant-radio-inner { width: 8px; height: 8px; border-radius: 50%; background: #0d6efd; display: none; }
.variant-radio-item.active .variant-radio-inner { display: block; }
.variant-radio-text { font-size: 14px; font-weight: 500; color: #212529; }
.variant-radio-item.active .variant-radio-text { color: #0d6efd; }


@keyframes scan-flash {
    0%   { outline: 2px solid transparent; outline-offset: 1px; }
    20%  { outline: 2px solid #FF7000;     outline-offset: 1px; box-shadow: 0 0 0 4px rgba(255, 112, 0, 0.15); }
    100% { outline: 2px solid transparent; outline-offset: 1px; box-shadow: none; }
}
.dim-scan-highlight {
    animation: scan-flash 3.0s ease-out forwards;
    border-radius: 4px;
}