/* Схема узла — общие стили Mini App и веба (Z-0394 п. 2; код — skhema.js, правила — skill shemy).
   Цвет — только токенами темы (--list-shemy, --ring-watch, --na-ohre, --steel, --pale, --line, --soft, --grass, --brick…):
   у Mini App и веба они свои, а имена одни. Подключается раньше app.css / rabota.css. */

/* Окно — ширина × 1,5, не выше видимой части (А-1322); лист — обёртка zch-list с пропорцией картинки, рамки и выноски —
   в её долях. Масштаб — размером листа (Skhema), выноски того же вида при любом увеличении. */
.skh { position: relative; width: 100%; background: var(--list-shemy); border-radius: 6px; overflow: hidden;
  overflow: clip; touch-action: pan-y; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.skh.uvel { touch-action: none; }
.skh .zch-mesto { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: hidden; overflow: clip; }
.skh .zch-list { position: absolute; container-type: inline-size; }
.skh img.l { display: block; width: 100%; height: 100%; object-fit: contain; }
.skh .zch-sosed { position: absolute; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none;
  overflow: hidden; overflow: clip; }
.skh .zch-sosed-list { position: absolute; container-type: inline-size; }
.skh .zch-sosed img { display: block; width: 100%; height: 100%; object-fit: contain; }
.skh .zch-sosed.pred { transform: translateX(-100%); }
.skh .zch-sosed.sled { transform: translateX(100%); }
.skh .zch-kraj { position: absolute; top: 50%; width: 14px; height: 32px; margin-top: -16px; pointer-events: none;
  font: 600 22px/30px 'IBM Plex Mono', monospace; text-align: center; color: var(--list-shemy-liniya); opacity: .45; }
.skh .zch-kraj.pred { left: 0; }
.skh .zch-kraj.sled { right: 0; }
.skh.uvel .zch-kraj { display: none; }

/* Выноска — плашка на месте печатного номера (Т53–Т56, п. 9). Крышка zch-kr закрывает печатный номер; размер шрифта
   считает Skhema от высоты плашки (--fs в cqw листа): все выноски листа одной высоты. Цвет плашки стороны не меняется
   ни в каком состоянии (А-1363). */
.skh .zch-kr { position: absolute; background: var(--list-shemy); pointer-events: none; }
/* Знак сноски ※ — обводка охрой (Z-0373 п. 4); только у номера детали (Z-0392 п. 3). */
.skh .zch-sn { position: absolute; border: 2px solid var(--ring-watch); border-radius: 50%; pointer-events: none;
  box-sizing: border-box; transform: scale(1.4); }
.skh .vn { position: absolute; box-sizing: border-box; display: flex; align-items: stretch; font-size: calc(var(--fs) * 1cqw);
  cursor: pointer; touch-action: manipulation; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none;
  font-family: 'IBM Plex Mono', monospace; font-weight: 700; line-height: 1; white-space: nowrap; }
.skh .vn * { pointer-events: none; }
.skh .vn .pl { position: relative; flex: 1; min-width: 0; display: flex; align-items: stretch; border-radius: .2em; overflow: hidden;
  background: var(--list-shemy); box-shadow: inset 0 0 0 .09em var(--pale); color: var(--soft); }
.skh .vn .ch7 { position: relative; flex: 1; display: flex; align-items: center; justify-content: center; padding: 0 .42em .16em; }
.skh .vn .w7 { display: inline-block; text-align: right; }
.skh .vn .a7 { color: var(--ac, var(--steel)); }
.skh .vn .a7.x { color: var(--soft); font-weight: 500; }
.skh .vn .b7 { display: inline-block; text-align: left; color: var(--soft); }
.skh .vn .st13 { position: absolute; left: .36em; right: .36em; bottom: .1em; height: .14em; display: flex; border-radius: .08em; overflow: hidden; }
.skh .vn .st13 i { display: block; height: 100%; }
.skh .vn .sd7 { flex: none; display: flex; align-items: center; padding: 0 .36em 0 .62em; margin-left: -.2em;
  font: 700 .74em/1 'IBM Plex Sans', system-ui, sans-serif; letter-spacing: .02em; background: var(--steel); color: var(--on-steel);
  clip-path: polygon(.42em 0, 100% 0, 100% 100%, 0 100%); }
/* Склад — зелёная кромка слева внутри рамки; держится во всех состояниях и размера не меняет (Т72). */
.skh .vn .ske { position: absolute; left: 0; top: 0; bottom: 0; width: .34em; background: var(--grass); z-index: 3; }
/* Не выбранные фильтром — спокойные, но читаются; выбранный столбик — рамка и заливка его цветом (А-1331, Т69). */
.skh .vn.dim .pl { box-shadow: inset 0 0 0 .09em var(--line); }
.skh .vn.dim .a7, .skh .vn.dim .b7 { color: var(--pale); }
.skh .vn.hl .pl { box-shadow: inset 0 0 0 .16em var(--hc); background: color-mix(in srgb, var(--hc) 16%, var(--list-shemy)); }
.skh .vn.pzl .pl { box-shadow: inset 0 0 0 .16em var(--brick); background: color-mix(in srgb, var(--brick) 16%, var(--list-shemy)); }
/* Сборка в корзине — детали погашены штриховкой «⊂»; не для этой машины — зачёркнута. */
.skh .vn.vsb2 .pl { background: repeating-linear-gradient(135deg, var(--list-shemy) 0 .25em,
  color-mix(in srgb, var(--steel) 22%, var(--list-shemy)) .25em .45em); }
.skh .vn.np .ch7 { text-decoration: line-through; }
.skh .vn.np .a7, .skh .vn.np .b7 { color: var(--pale); }
.skh .vn.np .sd7 { opacity: .5; }
/* Чужая выноска — все её детали не подходят выбору (А-1422): бледная; выбранная — в полную силу. */
.skh .vn.chuzh { opacity: .4; }
.skh .vn.chuzh.sel3 { opacity: 1; }
/* Ссылка «REFER TO FIG» на другой узел (Z-0341 А3) — пунктир, видна всегда; открывает узел, а не выбирает деталь. */
.skh .vn.ss { box-shadow: none; outline: 1.5px dashed var(--steel); outline-offset: -1.5px; }
.skh .vn.ss:focus-visible { outline: 2px solid var(--steel); }
/* Состав выбранной (её детали и сборки, куда она входит) — кольцо охры без заливки, не дышит. */
.skh .vn.sv9 .pl { box-shadow: inset 0 0 0 .2em var(--ring-watch); }
/* Каталог не знает штук — «×?» бледнее (Z-0392 п. 3); на выбранной цвет — правилом sel3 ниже. */
.skh .vn .pl.nk .a7, .skh .vn .pl.nk .b7 { color: var(--pale); }
/* Выбранная — охра, цифры и надписи тёмные; пульс свечения 1,8 с от момента выбора, не перезапускается при
   перерисовке (--dd — сдвиг фазы, считает вызывающий по метке выбора; А-1352, А-1362, А-1367). */
.skh .vn.sel3 .pl { background: var(--ring-watch); box-shadow: none; }
.skh .vn.sel3 .pl .a7, .skh .vn.sel3 .pl .b7, .skh .vn.sel3 .pl .ch7 { color: var(--na-ohre); }
.skh .vn.sel3::before { content: ''; position: absolute; inset: 0; border-radius: .2em; pointer-events: none; z-index: 0;
  animation: zchDysh 1.8s ease-in-out infinite; animation-delay: var(--dd, 0ms); }
@keyframes zchDysh {
  0%, 100% { box-shadow: 0 0 0 0 transparent; }
  50% { box-shadow: 0 0 6px 3px color-mix(in srgb, var(--ring-watch) 55%, transparent); }
}
@media (prefers-reduced-motion: reduce) { .skh .vn.sel3::before { animation: none; } }

/* Голая рамка (веб, выноска без плашки): линия — сталь, ВНУТРИ рамки (inset): у соседей не сливается, на цифры не
   заходит. Выбранная — залита охрой (--zal: лист в палитре «охра + текст на охре», цифры листа остаются), обводка
   охра, дышит свечение (.vn.sel3::before). Соседи не притушены; размер и место те же. */
.skh .vn.gol { border: 0; border-radius: 3px; background: transparent; background-repeat: no-repeat; padding: 0;
  font: inherit; box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--steel) 80%, transparent); }
.skh .vn.gol:hover { background-color: color-mix(in srgb, var(--steel) 18%, transparent); }
.skh .vn.gol.sel3 { background-image: var(--zal); box-shadow: none; outline: 1.5px solid var(--ring-watch); outline-offset: -1.5px; }
.skh .vn.gol.sel3::before { border-radius: 3px; }
/* Состав выбранной (её рамка сборки, Z-0407 п. 3) — тонкая охра контуром и лёгкий залив. */
.skh .vn.gol.sv9 { outline: 1px solid var(--ring-watch); outline-offset: -1px;
  background-color: color-mix(in srgb, var(--ring-watch) 16%, transparent); }
.skh .vn.gol.ss { box-shadow: none; outline: 1.5px dashed color-mix(in srgb, var(--steel) 80%, transparent); outline-offset: -1.5px; }
