/* Карта клиента (р0.3а): обзор, программы и обмены, элемент, поиск. Только var(--…) токенов пакета, классы rd-map-*. */

.page:has(.rd-map) { padding-left: 0; padding-right: 0; padding-top: 12px; }
.rd-map { display: flex; flex-direction: column; gap: var(--gap); min-width: 0; box-sizing: border-box; font-family: var(--font); font-size: var(--fs-body); color: var(--text-body); }
.rd-map *, .rd-map *::before, .rd-map *::after { box-sizing: border-box; }
.rd-map button { font-family: inherit; }
.rd-map-note { margin: 0; font-size: var(--fs-meta); color: var(--text-secondary); }
.rd-map-lead { margin-bottom: 10px; }
.rd-map-text { margin: 0; font-size: var(--fs-body); color: var(--text-body); line-height: 1.45; }
.rd-map-err { margin: 0 0 10px; color: var(--state-late-text); font-size: var(--fs-body); }
.rd-map .rd-card.rd-map-err { padding: 14px 18px; margin: 0; }
.rd-map-err b { display: block; margin-bottom: 2px; }

/* Выбор клиента */
.rd-map-bar { display: flex; align-items: center; gap: 12px; }
.rd-map-title { margin: 0; font-size: var(--fs-page-title); font-weight: var(--fw-page-title); letter-spacing: var(--ls-page-title); color: var(--text-primary); }
.rd-map-field { display: block; width: 100%; min-height: var(--btn-h); margin-bottom: 8px; padding: 9px 14px; border: 0; border-radius: var(--r-button); background: var(--bg-page); color: var(--text-primary); font: inherit; font-size: var(--fs-body); }
.rd-map-field::placeholder { color: var(--text-muted); }
.rd-map-pick { display: flex; align-items: center; gap: 12px; width: 100%; min-height: var(--row-min-h); padding: 6px 0; border: 0; border-top: 1px solid var(--line); background: none; text-align: left; color: var(--text-primary); cursor: pointer; }
.rd-map-pick:hover .rd-map-pick__name { color: var(--brand-blue-text); }
.rd-map-pick__name { min-width: 0; overflow-wrap: anywhere; }

/* Шапка: клиент, слои, поиск */
.rd-map-head { display: flex; flex-direction: column; gap: 14px; }
.rd-map-head__top { display: flex; align-items: center; gap: 18px; min-width: 0; }
.rd-map-head__body { flex: 1; min-width: 0; }
.rd-map-head__aside { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.rd-map-head__aside--num { text-align: right; }
.rd-map-head__row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; }
.rd-map-tabs { display: flex; flex-wrap: wrap; gap: 4px; padding: 3px; background: var(--bg-page); border-radius: 11px; }
.rd-map-tab { height: 30px; padding: 0 12px; border: 0; border-radius: 8px; background: transparent; font-size: var(--fs-meta); color: var(--text-secondary); cursor: pointer; white-space: nowrap; display: inline-flex; align-items: center; }
.rd-map-tab:hover { color: var(--text-primary); }
.rd-map-tab[aria-current="page"] { background: var(--bg-surface); color: var(--text-primary); font-weight: 600; box-shadow: 0 1px 2px color-mix(in srgb, var(--brand-black) 12%, transparent); }
.rd-map-tab--off, .rd-map-tab--off:hover { color: var(--text-disabled); cursor: not-allowed; }
.rd-map-search { display: flex; align-items: center; gap: 8px; min-width: 240px; padding: 0 12px; border-radius: var(--r-button); background: var(--bg-page); color: var(--text-muted); }
.rd-map-search__in { flex: 1; min-width: 0; height: 34px; border: 0; background: none; color: var(--text-primary); font: inherit; font-size: var(--fs-body); }
.rd-map-search__in::placeholder { color: var(--text-muted); }
.rd-map-search__in:focus-visible { outline: none; }
.rd-map-search:focus-within { outline: 2px solid var(--brand-blue); outline-offset: 2px; }
.rd-map-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 0 4px; font-size: var(--fs-meta); color: var(--text-muted); }
.rd-map-crumb { padding: 0; border: 0; background: none; font-size: var(--fs-meta); color: var(--brand-blue-text); cursor: pointer; }
.rd-map-crumb:hover { text-decoration: underline; }
.rd-map-count { display: flex; flex-direction: column; align-items: flex-end; }
.rd-map-count b { font-size: 28px; font-weight: 700; color: var(--text-primary); font-variant-numeric: tabular-nums; line-height: 1.1; }
.rd-map-count span { font-size: var(--fs-meta); font-weight: 400; color: var(--text-muted); }
.rd-map-acts { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-start; }
.rd-map-head__aside .rd-map-acts { justify-content: flex-end; }
.rd-map .rd-btn__why { font-size: var(--fs-meta); font-weight: 400; }
.rd-map .rd-fx .rd-btn__why { color: var(--fx-sub); }

/* Две колонки: основное и правая */
.rd-map-cols { display: grid; grid-template-columns: minmax(0, 1fr) var(--aside-w); gap: var(--gap); align-items: start; }
.rd-map-col { display: flex; flex-direction: column; gap: var(--gap); min-width: 0; }

/* Полнота по слоям */
.rd-map-dom { display: grid; grid-template-columns: 190px minmax(60px, 1fr) 48px 110px 220px; align-items: center; gap: 14px; min-height: var(--row-min-h); border-top: 1px solid var(--line); padding: 6px 0; }
.rd-map-dom:first-of-type { border-top: 0; }
.rd-map-dom__name { height: auto; padding: 0; border: 0; background: none; text-align: left; font-size: var(--fs-body); color: var(--text-primary); cursor: pointer; }
.rd-map-dom__name:hover { color: var(--brand-blue-text); }
.rd-map-dom__pct { font-variant-numeric: tabular-nums; text-align: right; color: var(--text-primary); }
.rd-map-dom__n { font-size: var(--fs-meta); color: var(--text-muted); }

/* Процессы и чем они закрыты */
.rd-map-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; margin: 0 0 8px; font-size: var(--fs-meta); color: var(--text-muted); }
.rd-map-procs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; }
.rd-map-proc { height: auto; font-size: var(--fs-body); display: grid; grid-template-columns: 8px minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: var(--row-min-h); padding: 6px 0; border: 0; border-top: 1px solid var(--line); background: none; text-align: left; color: var(--text-primary); cursor: pointer; }
.rd-map-proc:hover .rd-map-proc__name { color: var(--brand-blue-text); }
.rd-map-proc__name { min-width: 0; overflow-wrap: anywhere; }
.rd-map-proc__by { max-width: 200px; text-align: right; font-size: var(--fs-meta); color: var(--text-muted); overflow-wrap: anywhere; }
.rd-map-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--state-idle); }
.rd-map-dot--ok { background: var(--state-ok); }
.rd-map-dot--wait { background: var(--state-wait); }
.rd-map-dot--late { background: var(--state-late); }

/* Разрывы, утверждения, подтверждение, поиск, элементы слоя, связи */
.rd-map-gap, .rd-map-claim, .rd-map-hit, .rd-map-el, .rd-map-rel, .rd-map-base { display: grid; align-items: center; width: 100%; min-height: var(--row-min-h); padding: 8px 0; border: 0; border-top: 1px solid var(--line); background: none; text-align: left; color: var(--text-primary); cursor: pointer; height: auto; font-size: var(--fs-body); }
.rd-map-gap:first-of-type, .rd-map-claim:first-of-type, .rd-map-hit:first-of-type, .rd-map-el:first-of-type, .rd-map-rel:first-of-type, .rd-map-base:first-of-type { border-top: 0; }
.rd-map-gap:disabled, .rd-map-claim:disabled, .rd-map-hit:disabled { cursor: default; color: var(--text-primary); opacity: 1; }
.rd-map-gap:not(:disabled):hover .rd-map-gap__text, .rd-map-claim:not(:disabled):hover .rd-map-claim__text, .rd-map-hit:not(:disabled):hover .rd-map-hit__title, .rd-map-el:hover .rd-map-el__name, .rd-map-rel:hover .rd-map-rel__name, .rd-map-base:hover .rd-map-base__name { color: var(--brand-blue-text); }
.rd-map-gap { grid-template-columns: 110px minmax(0, 1fr) minmax(0, auto); gap: 14px; }
.rd-map-gap__text { min-width: 0; overflow-wrap: anywhere; }
.rd-map-gap__to { max-width: 300px; text-align: right; font-size: var(--fs-meta); color: var(--text-muted); overflow-wrap: anywhere; }
.rd-map-claim { grid-template-columns: minmax(0, 1fr); gap: 2px; }
.rd-map-claim--row { grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
.rd-map-claim__text { min-width: 0; overflow-wrap: anywhere; }
.rd-map-claim__ev { font-size: var(--fs-meta); color: var(--text-muted); overflow-wrap: anywhere; }
.rd-map-hit { grid-template-columns: 76px minmax(0, 1fr) auto; gap: 14px; }
.rd-map-hit__body { display: flex; flex-direction: column; min-width: 0; }
.rd-map-hit__title { overflow-wrap: anywhere; }
.rd-map-hit__text, .rd-map-hit__dom { font-size: var(--fs-meta); color: var(--text-muted); overflow-wrap: anywhere; }
.rd-map-el { grid-template-columns: minmax(0, 1fr) 160px auto; gap: 14px; }
.rd-map-el__name { min-width: 0; overflow-wrap: anywhere; }
.rd-map-el__kind { font-size: var(--fs-meta); color: var(--text-muted); }
.rd-map-el--d1 { padding-left: 20px; }
.rd-map-el--d2 { padding-left: 40px; }
.rd-map-el--d3, .rd-map-el--d4, .rd-map-el--d5 { padding-left: 60px; }
.rd-map-rel { grid-template-columns: 96px minmax(0, 1fr) auto; gap: 12px; }
.rd-map-rel__name { min-width: 0; overflow-wrap: anywhere; }
.rd-map-tag { justify-self: start; padding: 3px 8px; border-radius: var(--r-chip); background: var(--bg-page); color: var(--text-secondary); font-size: var(--fs-label); white-space: nowrap; }

/* Схема программ */
.rd-map-scheme { display: block; width: 100%; max-width: 900px; height: auto; margin: 4px auto 0; }
.rd-map-syslist { display: none; }
.rd-map-nd { cursor: pointer; }
.rd-map-nd__box { fill: var(--bg-page); stroke: none; }
.rd-map-nd--base .rd-map-nd__box { fill: var(--bg-surface); stroke: var(--line-strong); stroke-width: 1.5; }
.rd-map-nd--manual .rd-map-nd__box { fill: var(--bg-surface); stroke: var(--text-disabled); stroke-width: 1.5; stroke-dasharray: 5 4; }
.rd-map-nd:hover .rd-map-nd__box { stroke: var(--brand-blue); stroke-width: 1.5; }
.rd-map-nd__name { font-family: var(--font); font-size: var(--fs-body); font-weight: 600; fill: var(--text-primary); }
.rd-map-nd__note { font-family: var(--font); font-size: var(--fs-label); fill: var(--text-muted); }
.rd-map-nd__tag { fill: var(--bg-surface); }
.rd-map-nd--base .rd-map-nd__tag { fill: var(--dir-none-bg); }
.rd-map-nd__tagt { font-family: var(--font); font-size: var(--fs-label); font-weight: 500; fill: var(--text-secondary); }
.rd-map-nd .rd-map-nd__tag--erp { fill: var(--dir-erp-bg); }
.rd-map-nd .rd-map-nd__tag--buh { fill: var(--dir-buh-bg); }
.rd-map-nd .rd-map-nd__tag--zup { fill: var(--dir-zup-bg); }
.rd-map-nd .rd-map-nd__tag--roz { fill: var(--dir-roz-bg); }
.rd-map-nd .rd-map-nd__tagt--erp { fill: var(--dir-erp-fg); }
.rd-map-nd .rd-map-nd__tagt--buh { fill: var(--dir-buh-fg); }
.rd-map-nd .rd-map-nd__tagt--zup { fill: var(--dir-zup-fg); }
.rd-map-nd .rd-map-nd__tagt--roz { fill: var(--dir-roz-fg); }
.rd-map-edge { stroke: var(--state-idle); stroke-width: 1.5; }
.rd-map-edge--fail { stroke: var(--brand-blue); stroke-width: 2; }
.rd-map-tip--idle { fill: var(--text-faint); }
.rd-map-tip--fail { fill: var(--brand-blue); }
.rd-map-edge__t { font-family: var(--font); font-size: var(--fs-label); fill: var(--text-secondary); stroke: var(--bg-surface); stroke-width: 5px; paint-order: stroke; }
.rd-map-edge__t--fail { font-weight: 600; fill: var(--state-late-text); }

/* Таблица обменов */
.rd-map-tr { cursor: pointer; }
.rd-map-tr:hover td { background: var(--bg-subtle); }
.rd-map-tr--on td { background: var(--brand-blue-soft); }
.rd-map-rowbtn { padding: 0; border: 0; background: none; text-align: left; font: inherit; color: var(--text-primary); cursor: pointer; }

/* Карточка обмена */
.rd-map-xtitle { margin: 2px 0 6px; font-size: var(--fs-card-title); font-weight: 700; color: var(--text-primary); line-height: 1.25; overflow-wrap: anywhere; }
.rd-map-xstate { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-bottom: 14px; font-size: var(--fs-meta); }
.rd-map-base { grid-template-columns: 34px minmax(0, 1fr) auto; gap: 12px; }
.rd-map-base__body { display: flex; flex-direction: column; min-width: 0; }
.rd-map-base__sub { font-size: var(--fs-meta); color: var(--text-muted); }
.rd-map-acts { margin-top: 14px; }

/* Факты элемента */
.rd-map-attr { color: var(--text-muted); white-space: nowrap; }
.rd-map-val { color: var(--text-primary); overflow-wrap: anywhere; }
.rd-map-conf { white-space: nowrap; }
.rd-map-conf .rd-map-link { margin-left: 10px; }
.rd-map-link { padding: 0; border: 0; background: none; font-size: var(--fs-body); color: var(--brand-blue-text); cursor: pointer; }
.rd-map-link:hover { text-decoration: underline; }

.rd-map-desk { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; }

/* Планшет: правая колонка под основной */
@media (max-width: 1279px) {
  .rd-map { padding-left: 24px; padding-right: 24px; }
  .rd-map-dom { grid-template-columns: 170px minmax(60px, 1fr) 44px 110px minmax(130px, auto); }
}
@media (max-width: 1023px) {
  .rd-map-cols { grid-template-columns: minmax(0, 1fr); }
}

/* Телефон, §4 пакета: одна колонка, поля 16, промежутки 12, строки не ниже 48 */
@media (max-width: 767px) {
  .rd-map { gap: 12px; padding: 0 16px 24px; }
  .rd-map-col, .rd-map-cols { gap: 12px; }
  .rd-map-desk { display: none; }
  .rd-map-head__top { flex-wrap: wrap; align-items: flex-start; gap: 12px; }
  .rd-map-head__aside { width: 100%; align-items: stretch; }
  .rd-map-head__aside .rd-seg { display: flex; }
  .rd-map-head__aside .rd-seg__opt { flex: 1; padding: 0 8px; }
  .rd-map-head__aside--num, .rd-map-count { align-items: flex-start; text-align: left; }
  .rd-map-tabs { width: 100%; }
  .rd-map-tab { flex: 1 1 auto; justify-content: center; height: 36px; }
  .rd-map-search { width: 100%; min-width: 0; }
  .rd-map-search__in { height: 46px; font-size: 16px; }
  .rd-map-field { min-height: 48px; font-size: 16px; border-radius: 12px; }
  .rd-map-dom { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; padding: 10px 0; }
  .rd-map-dom .rd-bar { grid-column: 1 / -1; grid-row: 2; }
  .rd-map-dom__n { grid-column: 1; grid-row: 3; }
  .rd-map-dom .rd-state { grid-column: 2; grid-row: 3; justify-self: end; }
  .rd-map-dom__pct { grid-column: 2; grid-row: 1; }
  .rd-map-procs { grid-template-columns: minmax(0, 1fr); }
  .rd-map-proc { min-height: 48px; }
  .rd-map-gap { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .rd-map-gap__to { max-width: none; text-align: left; }
  .rd-map-hit { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .rd-map-el { grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; }
  .rd-map-el__kind { grid-column: 1; grid-row: 2; }
  .rd-map-el .rd-state, .rd-map-el .rd-map-tag { grid-column: 2; grid-row: 1 / span 2; }
  .rd-map-rel { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; }
  .rd-map-rel .rd-map-tag { grid-column: 1; }
  .rd-map-rel__name { grid-column: 1; }
  .rd-map-rel .rd-state, .rd-map-rel .rd-map-note { grid-column: 2; grid-row: 1 / span 2; }
  .rd-map-scheme { display: none; }
  .rd-map-syslist { display: block; }
  .rd-map-facts thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .rd-map-facts, .rd-map-facts tbody { display: block; }
  .rd-map-facts tr { display: flex; flex-direction: column; gap: 2px; padding: 10px 0; border-top: 1px solid var(--line); }
  .rd-map-facts tr:first-child { border-top: 0; }
  .rd-map-facts td { display: block; padding: 0; border: 0; white-space: normal; }
  .rd-map-conf { white-space: normal; }
}

/* Формы правки: окно поверх, на телефоне шторка */
.rd-map-form { display: flex; flex-direction: column; gap: 12px; max-width: 560px; }
.rd-map-label { display: flex; flex-direction: column; gap: 6px; }
.rd-map-label__t { font-size: var(--fs-meta); font-weight: 600; color: var(--text-primary); }
.rd-map-form .rd-map-field { margin-bottom: 0; }
.rd-map-field--area { min-height: 76px; resize: vertical; line-height: 1.4; }
select.rd-map-field { appearance: auto; }
.rd-map-field:disabled { color: var(--text-muted); cursor: not-allowed; }
.rd-map-check { display: flex; align-items: center; gap: 10px; font-size: var(--fs-body); color: var(--text-primary); }
.rd-map-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-top: 4px; }
.rd-map-why { font-size: var(--fs-meta); color: var(--text-secondary); }
.rd-map-link--quiet { color: var(--text-muted); }
.rd-map-conf .rd-map-link--quiet { margin-left: 8px; }
@media (max-width: 767px) {
  .rd-map-form .rd-btn { width: 100%; min-height: 48px; }
  .rd-map-check { min-height: 48px; }
  .rd-map-card-acts .rd-btn { min-height: 40px; }
}
