/* =====================================================================
   /promotions — страница акций + диалог участника.
   Только цвета палитры MudBlazor (--mud-palette-*): работают все стили
   тем (ThemeService) и оба режима. Подключён ПОСЛЕ MudBlazor.min.css
   (App.razor), поэтому при равной специфичности побеждает этот файл.
   ===================================================================== */

:root {
    --promo-radius: 10px;
    --promo-mono: ui-monospace, 'Cascadia Mono', 'JetBrains Mono', Consolas, monospace;
}

.promo-page {
    display: flex;
    flex-direction: column;
    gap: 12px;
    /* вся страница — ровно вьюпорт: аппбар 64px + паддинг контейнера pa-4 32px.
       Таблица забирает остаток (flex:1 ниже) — низ не вылезает за экран
       при любой высоте шапки/сводки. */
    height: calc(100vh - 96px);
}

/* ---------- общие мелочи ---------- */

.promo-dot {
    display: inline-block;
    flex: none;
    width: 8px;
    height: 8px;
    margin-right: 6px;
    border-radius: 50%;
    vertical-align: middle;
    background: var(--mud-palette-text-disabled);
}

.promo-dot--new { background: rgba(var(--mud-palette-text-primary-rgb), .35); }
.promo-dot--checked { background: var(--mud-palette-info); }
.promo-dot--approved { background: var(--mud-palette-success); }
.promo-dot--rejected { background: var(--mud-palette-error); }

.promo-label {
    margin: 0 0 8px;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.promo-sublabel {
    margin: 0 0 6px;
    font-size: .75rem;
    font-weight: 600;
    color: var(--mud-palette-text-primary);
}

.promo-sublabel span {
    font-weight: 400;
    color: var(--mud-palette-text-secondary);
}

.promo-muted { color: var(--mud-palette-text-disabled); font-weight: 400; }
.promo-warn-text { color: var(--mud-palette-warning); font-weight: 400; }
.promo-mono { font-family: var(--promo-mono); font-size: .72rem; letter-spacing: -.01em; }
.promo-empty-note { font-size: .8rem; color: var(--mud-palette-text-disabled); margin-bottom: 14px; }
.is-warn { color: var(--mud-palette-warning); }

/* Сброс bootstrap/браузерных стилей для «голых» кнопок страницы */
.promo-switcher,
.promo-seg__btn,
.promo-chip,
.promo-copy,
.promo-status,
.promo-q,
.promo-paid,
.promo-cal__promo,
.promo-history__item,
.promo-history-box__item,
.promo-addtag,
.promo-iconbtn,
.promo-linkbtn,
.promo-dsec__action,
.promo-tag {
    appearance: none;
    margin: 0;
    font: inherit;
    color: inherit;
    background: none;
    border: 0;
    border-radius: 0;
    text-align: left;
}

.promo-switcher:focus-visible,
.promo-seg__btn:focus-visible,
.promo-chip:focus-visible,
.promo-copy:focus-visible,
.promo-status:focus-visible,
.promo-q:focus-visible,
.promo-paid:focus-visible,
.promo-cal__promo:focus-visible,
.promo-history__item:focus-visible,
.promo-history-box__item:focus-visible,
.promo-tag:focus-visible,
.promo-addtag:focus-visible,
.promo-iconbtn:focus-visible,
.promo-linkbtn:focus-visible,
.promo-dsec__action:focus-visible {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 1px;
}

/* ---------- шапка ---------- */

.promo-head,
.promo-ledger {
    background: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--promo-radius);
}

/* ledger — flex-ребёнок .promo-page: занимает весь остаток после шапки/сводки.
   min-height 400px: если шапка слишком высокая — скроллится вся страница, а не сплющенная таблица. */
.promo-ledger {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 400px;
}

.promo-head {
    padding: 14px 18px 14px 16px;
    /* кромка в цвете типа акции (--promo-accent выставляется из разметки) */
    border-left: 3px solid var(--promo-accent, transparent);
}

/* паспорт акции — полоса фактов «метка/значение» с тонкими разделителями */
.promo-facts {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    row-gap: 8px;
    margin-top: 10px;
}

.promo-fact {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
    padding: 0 14px;
    border-left: 1px solid var(--mud-palette-lines-inputs);
}

.promo-fact:first-child { padding-left: 0; border-left: none; }

.promo-fact__label {
    font-size: .58rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--mud-palette-text-disabled);
}

.promo-fact__value {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    max-width: 34ch;
    overflow: hidden;
    font-size: .82rem;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: var(--mud-palette-text-primary);
}

.promo-fact__value--strong { font-weight: 650; }
.promo-fact__value--clip { max-width: 40ch; }
.promo-fact__value.is-muted { color: var(--mud-palette-text-secondary); }
.promo-fact__value.is-warn { color: var(--mud-palette-warning); white-space: normal; }

.promo-fact__link { color: var(--mud-palette-info); text-decoration: none; }
.promo-fact__link:hover { text-decoration: underline; }
.promo-fact__link .mud-icon-root { font-size: 1rem; }

.promo-fact .promo-state { margin-right: 0; }

.promo-head__row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 12px 16px;
}

.promo-head__main { flex: 1 1 460px; min-width: 0; }

.promo-head__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
}

.promo-eyebrow {
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.promo-head .mud-menu { max-width: 100%; }

.promo-switcher {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    max-width: 100%;
    padding: 0 6px 0 0;
    border-radius: 6px;
    color: var(--mud-palette-text-primary);
    cursor: pointer;
}

.promo-switcher__name {
    overflow: hidden;
    font-size: 1.55rem;
    font-weight: 650;
    line-height: 1.3;
    letter-spacing: -.015em;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.promo-switcher:hover .promo-switcher__name {
    text-decoration: underline;
    text-decoration-color: var(--mud-palette-lines-inputs);
    text-underline-offset: 5px;
}

.promo-switcher__icon { color: var(--mud-palette-text-secondary); }

.promo-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    row-gap: 4px;
    margin-top: 4px;
    font-size: .8125rem;
    color: var(--mud-palette-text-secondary);
}

.promo-meta--rules { margin-top: 2px; }
.promo-meta__item { display: inline-flex; align-items: center; }

.promo-meta__item + .promo-meta__item::before {
    content: "·";
    margin: 0 8px;
    color: var(--mud-palette-text-disabled);
}

.promo-meta__link {
    gap: 4px;
    color: var(--mud-palette-info);
    text-decoration: none;
}

.promo-meta__link:hover { text-decoration: underline; }
.promo-meta__link .mud-icon-root { font-size: 1rem; }

.promo-state {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-right: 10px;
    padding: 2px 9px;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 700;
}

.promo-state::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
}

.promo-state--active { color: var(--mud-palette-success); background: rgba(var(--mud-palette-success-rgb), .13); }
.promo-state--finished { color: var(--mud-palette-info); background: rgba(var(--mud-palette-info-rgb), .13); }
.promo-state--archived { color: var(--mud-palette-text-secondary); background: rgba(var(--mud-palette-text-primary-rgb), .08); }

.promo-desc {
    display: -webkit-box;
    max-width: 100ch;
    margin-top: 6px;
    overflow: hidden;
    font-size: .8125rem;
    white-space: pre-line;
    color: var(--mud-palette-text-secondary);
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

/* переключатель акции (popover MudMenu) */
.promo-sw-list { min-width: 380px; max-width: 480px; }

.promo-sw-group {
    padding: 12px 16px 4px;
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.promo-sw-item {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-width: 0;
}

.promo-sw-item__body { flex: 1; min-width: 0; }

.promo-sw-item__name,
.promo-sw-item__sub {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.promo-sw-item__name { font-weight: 500; }
.promo-sw-item__sub { font-size: .75rem; color: var(--mud-palette-text-secondary); }
.promo-sw-item.is-current .promo-sw-item__name { font-weight: 700; color: var(--mud-palette-primary); }

.promo-sw-item__counts {
    display: flex;
    gap: 8px;
    font-size: .75rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.promo-sw-toggle { font-size: .8125rem; color: var(--mud-palette-text-secondary); }

/* сводка по всем акциям */
.promo-summary {
    display: grid;
    gap: 14px;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid var(--mud-palette-lines-default);
}

.promo-summary .promo-label { margin: 0 0 -6px; }

/* ---------- сводка: «Все участники» (люди по всем акциям) ---------- */

.promo-people__head { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 14px; }

.promo-people__tools { display: inline-flex; align-items: center; gap: 8px; }

.promo-people__casino,
.promo-people__search {
    font: inherit;
    font-size: .78rem;
    padding: 3px 8px;
    border: 1px solid var(--mud-palette-lines-inputs);
    border-radius: 6px;
    color: var(--mud-palette-text-primary);
    background: var(--mud-palette-surface);
}
.promo-people__search { width: 180px; }
.promo-people__search:focus-visible,
.promo-people__casino:focus-visible { outline: 2px solid var(--mud-palette-primary); outline-offset: 1px; }

.promo-people {
    display: grid;
    gap: 2px;
    max-height: 420px;
    overflow-y: auto;
    margin-top: 2px;
}

.promo-people__row {
    display: grid;
    grid-template-columns: minmax(180px, .9fr) minmax(0, 2fr) minmax(200px, .8fr);
    align-items: center;
    gap: 14px;
    padding: 6px 10px;
    border-radius: 6px;
    cursor: pointer;
    font-size: .8125rem;
}
.promo-people__row:hover { background: rgba(var(--mud-palette-text-primary-rgb), .05); }

.promo-people__who { min-width: 0; line-height: 1.3; }
.promo-people__name { font-weight: 600; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.promo-people__sub {
    display: block; font-size: .72rem; color: var(--mud-palette-text-secondary);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.promo-people__promos { display: flex; flex-wrap: wrap; gap: 4px; min-width: 0; }

.promo-people__promo {
    appearance: none;
    display: inline-flex; align-items: center; gap: 5px;
    padding: 2px 8px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 999px;
    font: inherit; font-size: .75rem;
    color: var(--mud-palette-text-primary);
    background: none;
    cursor: pointer;
    max-width: 100%;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.promo-people__promo:hover { border-color: var(--mud-palette-text-secondary); background: rgba(var(--mud-palette-text-primary-rgb), .05); }
.promo-people__promo .promo-dot { flex: none; }

.promo-people__totals { display: flex; align-items: baseline; gap: 12px; justify-content: flex-end; white-space: nowrap; font-variant-numeric: tabular-nums; }
.promo-people__usd { font-weight: 600; }
.promo-people__paid { color: var(--mud-palette-success); }

/* «?» — в прошлом участии были вопросы (маркер, в текущую строку не переносится) */
.promo-history__q,
.promo-people__q {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 15px; height: 15px; padding: 0 3px;
    border-radius: 999px;
    font-size: .66rem; font-weight: 700; line-height: 1;
    color: var(--mud-palette-warning);
    border: 1px solid var(--mud-palette-warning);
}

@media (max-width: 900px) {
    .promo-people__row { grid-template-columns: 1fr; gap: 4px; }
    .promo-people__totals { justify-content: flex-start; }
}

.promo-kpis {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 12px 28px;
}

.promo-kpi__label { font-size: .75rem; color: var(--mud-palette-text-secondary); }

.promo-kpi__value {
    font-size: 1.4rem;
    font-weight: 650;
    line-height: 1.3;
    font-variant-numeric: tabular-nums;
}

.promo-kpi__value.is-success { color: var(--mud-palette-success); }
.promo-kpi__sub { font-size: .75rem; color: var(--mud-palette-text-secondary); }

.promo-cal {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 10px;
}

.promo-cal__month {
    min-width: 0;
    padding: 10px 12px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 8px;
}

.promo-cal__head {
    display: flex;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 6px;
    font-size: .8rem;
    font-weight: 600;
    text-transform: capitalize;
}

.promo-cal__paid { font-weight: 600; font-variant-numeric: tabular-nums; color: var(--mud-palette-success); }

.promo-cal__promo {
    display: flex;
    align-items: center;
    width: calc(100% + 8px);
    margin: 0 -4px;
    padding: 3px 4px;
    border-radius: 4px;
    font-size: .8rem;
    cursor: pointer;
}

.promo-cal__promo:hover { background: var(--mud-palette-action-default-hover); }
.promo-cal__promo.is-dim { color: var(--mud-palette-text-secondary); }
.promo-cal__name { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.promo-cal__empty { font-size: .8rem; color: var(--mud-palette-text-disabled); }

/* ---------- рабочая поверхность: тулбар ---------- */

.promo-ledger { position: relative; }

.promo-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 12px 14px 10px;
}

.promo-toolbar .mud-input-control { margin: 0; }
.promo-search { flex: 1 1 280px; max-width: 440px; }
.promo-toolbar__spacer { flex: 1 1 auto; }
.promo-toolbar__right { margin-left: auto; }

/* Чип «идёт сверка · осталось ~N» — фоновые резолвы (импорт, «Сверить новых»), виден всем */
.promo-resolve-progress {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

/* /promotions/all — заголовок без интерактива и ссылка-назад в eyebrow */
.promo-title-plain { display: inline-block; }
.promo-backlink { color: inherit; text-decoration: none; }
.promo-backlink:hover { color: var(--mud-palette-text-primary); text-decoration: underline; }

.promo-menu-hint {
    font-size: .72rem;
    color: var(--mud-palette-text-secondary);
}

/* ---------- конвейер: полоса стадий + фильтры ---------- */

.promo-pipe { padding: 0 14px 12px; }

.promo-pipe__bar {
    display: flex;
    gap: 2px;
    height: 6px;
    margin-bottom: 10px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(var(--mud-palette-text-primary-rgb), .07);
}

.promo-pipe__seg { flex: 1 1 0; min-width: 4px; }
.promo-pipe__seg--new { background: rgba(var(--mud-palette-text-primary-rgb), .3); }
.promo-pipe__seg--checked { background: var(--mud-palette-info); }
.promo-pipe__seg--approved { background: rgba(var(--mud-palette-success-rgb), .5); }
.promo-pipe__seg--paid { background: var(--mud-palette-success); }
.promo-pipe__seg--rejected { background: rgba(var(--mud-palette-error-rgb), .6); }

.promo-pipe__filters {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 14px;
}

.promo-seg {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 2px;
    padding: 3px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 9px;
    background: rgba(var(--mud-palette-text-primary-rgb), .04);
}

.promo-seg__btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: 6px;
    font-size: .8125rem;
    font-weight: 500;
    line-height: 1.4;
    color: var(--mud-palette-text-secondary);
    cursor: pointer;
}

.promo-seg__btn .promo-dot { margin-right: 0; }
.promo-seg__btn:hover { color: var(--mud-palette-text-primary); background: var(--mud-palette-action-default-hover); }

.promo-seg__btn.is-active {
    color: var(--mud-palette-text-primary);
    background: var(--mud-palette-surface);
    box-shadow: 0 0 0 1px var(--mud-palette-lines-inputs), 0 1px 3px rgba(0, 0, 0, .18);
}

.promo-seg__count {
    font-size: .75rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.promo-seg__btn.is-active .promo-seg__count { color: var(--mud-palette-text-primary); font-weight: 600; }

.promo-chips { display: inline-flex; flex-wrap: wrap; gap: 6px; }

.promo-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 11px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 999px;
    font-size: .8125rem;
    line-height: 1.4;
    color: var(--mud-palette-text-secondary);
    cursor: pointer;
}

.promo-chip:hover { color: var(--mud-palette-text-primary); border-color: var(--mud-palette-lines-inputs); }

.promo-chip.is-active {
    color: var(--mud-palette-text-primary);
    border-color: rgba(var(--mud-palette-primary-rgb), .6);
    background: rgba(var(--mud-palette-primary-rgb), .12);
}

.promo-chip__count { font-weight: 600; font-variant-numeric: tabular-nums; color: var(--mud-palette-text-primary); }
.promo-chip__money { font-weight: 600; font-variant-numeric: tabular-nums; color: var(--mud-palette-success); }
.promo-chip__money.is-muted { font-weight: 500; color: var(--mud-palette-text-secondary); }
.promo-chip .promo-chip__icon { font-size: 15px; }

.promo-chip .promo-chip__icon--end { margin: 0 -5px 0 -3px; font-size: 18px; }

/* меню фильтра по тегам */
.promo-menu-tag { display: flex; align-items: center; gap: 8px; width: 100%; min-width: 200px; }
.promo-menu-tag__check.mud-icon-root { color: var(--mud-palette-text-secondary); }

.promo-menu-tag__count {
    margin-left: auto;
    padding-left: 12px;
    font-size: .75rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.promo-menu-empty { padding: 10px 16px; font-size: .8125rem; color: var(--mud-palette-text-secondary); }

.promo-chip__q {
    display: inline-grid;
    place-items: center;
    width: 16px;
    height: 16px;
    border: 1px dashed var(--mud-palette-lines-inputs);
    border-radius: 50%;
    font-size: .65rem;
    font-weight: 800;
}

.promo-chip__q.is-on {
    border: 0;
    color: var(--mud-palette-warning-text);
    background: var(--mud-palette-warning);
}

/* ---------- таблица ---------- */

.promo-table.mud-table {
    background: transparent;
    /* остаток .promo-ledger после тулбара/фильтров; min-height:0 — обязателен,
       иначе flex-элемент не даст себя ужать ниже контента */
    flex: 1 1 auto;
    min-height: 0;
}
.promo-table .mud-table-container { border-top: 1px solid var(--mud-palette-lines-default); }

.promo-table.mud-table-dense .mud-table-row .mud-table-cell {
    padding: 6px 10px;
    vertical-align: middle;
}

.promo-table.mud-table-dense .mud-table-row .mud-table-cell:first-child { padding-left: 12px; }
.promo-table.mud-table-dense .mud-table-row .mud-table-cell:last-child { padding-right: 10px; }

.promo-table .mud-table-head .mud-table-cell {
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .01em;
    white-space: nowrap;
    color: var(--mud-palette-text-secondary);
}

.promo-table .mud-table-body .mud-table-cell { font-weight: 400; }
.promo-table .mud-table-cell.promo-col-right { text-align: right; }
.promo-table .mud-table-cell.promo-col-center { text-align: center; }
.promo-table .mud-table-cell.promo-col-num { width: 52px; }
.promo-table .mud-table-cell.promo-col-actions { width: 76px; }

.promo-th-sep { margin: 0 3px; color: var(--mud-palette-text-disabled); }

/* Иконка сортировки занимает место только у активной колонки — иначе «Kick / TG» разъезжаются */
.promo-table .mud-table-sort-label-icon { width: 0; margin: 0; }

.promo-table .mud-table-sort-label-icon.mud-direction-asc,
.promo-table .mud-table-sort-label-icon.mud-direction-desc { width: 16px; margin-left: 2px; }

.promo-rownum {
    display: inline-flex;
    align-items: center;
    font-size: .78rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
}

.promo-chev.mud-icon-root {
    font-size: 18px;
    color: var(--mud-palette-text-disabled);
    transition: transform .15s ease;
}

.promo-chev.is-open { transform: rotate(90deg); color: var(--mud-palette-text-primary); }

.promo-cell-promo {
    display: inline-block;
    max-width: 180px;
    overflow: hidden;
    font-size: .8rem;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: var(--mud-palette-text-secondary);
}

/* строки: состояние = полоска слева; «вопросы» ещё и заливкой (как красные строки в гугл-таблице).
   Ручной цвет (inline background на tr) перекрывает заливку, полоска остаётся. */
.promo-table .mud-table-body .mud-table-row.promo-row-paid > td:first-child { box-shadow: inset 3px 0 0 var(--mud-palette-success); }
.promo-table .mud-table-body .mud-table-row.promo-row-q > td:first-child { box-shadow: inset 3px 0 0 var(--mud-palette-error); }
.promo-table .mud-table-body .mud-table-row.promo-row-q:not(.promo-row-tinted) { background-color: rgba(var(--mud-palette-error-rgb), .09); }
.promo-table .mud-table-body .mud-table-row.promo-row-selected:not(.promo-row-tinted) { background-color: rgba(var(--mud-palette-primary-rgb), .1); }
.promo-table .mud-table-body .mud-table-row.promo-row-rejected > td:not(:first-child) { opacity: .5; }

/* ячейки идентичности (Kick/TG, казино) */
.promo-id { min-width: 0; line-height: 1.3; }

.promo-id__main {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: .875rem;
    font-weight: 500;
}

.promo-id__nick {
    max-width: 220px;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.promo-id__sub {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 1px;
    font-size: .75rem;
    white-space: nowrap;
    color: var(--mud-palette-text-secondary);
}

.promo-tg { color: var(--mud-palette-info); text-decoration: none; }
.promo-tg:hover { text-decoration: underline; }

.promo-copy { padding: 0; border-radius: 3px; cursor: copy; }
.promo-copy:hover { color: var(--mud-palette-primary); }

/* сверка: реф / условия / флаги */
.promo-signals { display: flex; flex-wrap: nowrap; align-items: center; gap: 4px; }

.promo-pill {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    height: 20px;
    padding: 0 7px;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
}

.promo-pill .mud-icon-root { width: 13px; height: 13px; font-size: 13px; }

.promo-pill--ref { color: var(--mud-palette-success); background: rgba(var(--mud-palette-success-rgb), .14); }
.promo-pill--notref { color: var(--mud-palette-error); background: rgba(var(--mud-palette-error-rgb), .14); }
.promo-pill--unknown { color: var(--mud-palette-text-secondary); border: 1px dashed var(--mud-palette-lines-inputs); }
.promo-pill--off { color: var(--mud-palette-text-disabled); border-color: var(--mud-palette-lines-default); }
.promo-pill--rule-met { color: var(--mud-palette-success); border-color: rgba(var(--mud-palette-success-rgb), .45); }
.promo-pill--rule-notmet { color: var(--mud-palette-warning); border-color: rgba(var(--mud-palette-warning-rgb), .5); }
.promo-pill--rule-pending { color: var(--mud-palette-text-secondary); border-color: var(--mud-palette-lines-default); }
.promo-pill--block { color: var(--mud-palette-error); background: rgba(var(--mud-palette-error-rgb), .14); }
.promo-pill--warn { color: var(--mud-palette-warning); background: rgba(var(--mud-palette-warning-rgb), .14); }

.promo-tip { display: grid; gap: 2px; max-width: 340px; text-align: left; }
.promo-tip__title { margin-bottom: 2px; font-weight: 600; }
.promo-tip__note { margin-top: 4px; opacity: .8; }

/* теги / комментарии (как колонка «пометка» в гугл-таблице) */
.promo-table .mud-table-cell.promo-col-notes { min-width: 170px; }

.promo-tagline { display: flex; flex-wrap: wrap; align-items: center; gap: 3px; }

/* Тег — outline-чип: цвет из БД идёт в рамку и оттенок текста через color-mix,
   поэтому любой кастомный цвет остаётся читаемым в обеих темах (--tag задаётся инлайн) */
.promo-tag {
    display: inline-flex;
    align-items: center;
    max-width: 140px;
    height: 18px;
    padding: 0 6px;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--tag, var(--mud-palette-lines-inputs)) 70%, transparent);
    border-radius: 4px;
    font-size: .7rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: color-mix(in srgb, var(--tag, var(--mud-palette-text-secondary)) 72%, var(--mud-palette-text-primary));
    background: color-mix(in srgb, var(--tag, transparent) 12%, transparent);
    cursor: pointer;
}

button.promo-tag:hover { border-color: var(--tag, var(--mud-palette-text-secondary)); }
.promo-tag.is-filter { box-shadow: 0 0 0 2px var(--mud-palette-surface), 0 0 0 3px var(--mud-palette-primary); }
.promo-tag-more { font-size: .7rem; color: var(--mud-palette-text-secondary); }

.promo-noteline {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 3px;
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
}

.promo-noteline:first-child { margin-top: 0; }
.promo-noteline .mud-icon-root { flex: none; width: 13px; height: 13px; font-size: 13px; }
.promo-noteline__count { flex: none; font-weight: 600; font-variant-numeric: tabular-nums; }

/* Одна строка без жёсткого потолка: текст переносимый, но видна только первая строка (line-clamp).
   Так авто-раскладка таблицы отдаёт колонке свободное место под весь комментарий (max-content — весь текст),
   а сжать её можно до пары символов (min-content) — длинный комментарий не раздувает таблицу до скролла */
.promo-noteline__text {
    display: -webkit-box;
    min-width: 0;
    overflow: hidden;
    overflow-wrap: anywhere;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 1;
    line-clamp: 1;
}

/* вагер / депы / комиссия */
.promo-num-main { font-size: .875rem; font-weight: 500; font-variant-numeric: tabular-nums; }
.promo-num-sub { font-size: .72rem; font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--mud-palette-text-secondary); }

.promo-prize { display: flex; justify-content: flex-end; }

/* статус-пилюля + «?» */
.promo-status-cell { display: inline-flex; align-items: center; gap: 6px; }

.promo-status {
    display: inline-flex;
    align-items: center;
    height: 24px;
    padding: 0 2px 0 10px;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
}

.promo-status .mud-icon-root { width: 18px; height: 18px; font-size: 18px; opacity: .7; }
.promo-status.is-static { padding-right: 10px; cursor: default; }
.promo-status--new { color: var(--mud-palette-text-secondary); border-color: var(--mud-palette-lines-inputs); }
.promo-status--checked { color: var(--mud-palette-info); background: rgba(var(--mud-palette-info-rgb), .14); }
.promo-status--approved { color: var(--mud-palette-success); background: rgba(var(--mud-palette-success-rgb), .14); }
.promo-status--rejected { color: var(--mud-palette-error); background: rgba(var(--mud-palette-error-rgb), .12); }
.promo-status:not(.is-static):hover { box-shadow: 0 0 0 1px currentColor inset; }

.promo-menu-status { display: inline-flex; align-items: center; }

.promo-q {
    display: inline-grid;
    place-items: center;
    width: 22px;
    height: 22px;
    padding: 0;
    border: 1px dashed var(--mud-palette-lines-inputs);
    border-radius: 50%;
    font-size: .75rem;
    font-weight: 800;
    color: var(--mud-palette-text-disabled);
    cursor: pointer;
    opacity: .55;
}

.promo-table .mud-table-row:hover .promo-q,
.promo-q:focus-visible { opacity: 1; }

.promo-q.is-on,
.promo-table .mud-table-row .promo-q.is-on {
    border-color: transparent;
    color: var(--mud-palette-warning-text);
    background: var(--mud-palette-warning);
    opacity: 1;
}

.promo-q.is-static { cursor: default; }

/* выплата */
.promo-paid {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 5px;
    border-radius: 6px;
    font-size: .72rem;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-disabled);
    cursor: pointer;
}

.promo-paid:not(:disabled):hover { color: var(--mud-palette-success); background: rgba(var(--mud-palette-success-rgb), .1); }
.promo-paid.is-on { font-weight: 600; color: var(--mud-palette-success); }
.promo-paid:disabled { cursor: default; }

.promo-actions { display: inline-flex; align-items: center; justify-content: flex-end; width: 100%; }

/* ---------- раскрытая строка: досье ----------
   Строка + досье — одна карточка: строка — шапка (верх и бока), досье — тело (бока и низ).
   Левый край продолжает полоску состояния строки: выплачен — зелёная, «?»/block-флаг — красная. */

.promo-row-paid,
.promo-dossier-row.is-paid { --promo-edge: var(--mud-palette-success); }

.promo-row-q,
.promo-dossier-row.is-q { --promo-edge: var(--mud-palette-error); }

.promo-table .mud-table-body tr.mud-table-row.promo-row-open > td {
    border-bottom-color: transparent;
    box-shadow: inset 0 1px 0 var(--mud-palette-primary);
}

.promo-table .mud-table-body tr.mud-table-row.promo-row-open > td:first-child {
    box-shadow: inset 0 1px 0 var(--mud-palette-primary), inset 3px 0 0 var(--promo-edge, var(--mud-palette-primary));
}

.promo-table .mud-table-body tr.mud-table-row.promo-row-open > td:last-child {
    box-shadow: inset 0 1px 0 var(--mud-palette-primary), inset -2px 0 0 var(--mud-palette-primary);
}

/* досье — не строка данных: без hover-подсветки (app.css красит строки с !important) */
.promo-table .mud-table-body .mud-table-row.promo-dossier-row,
.promo-table .mud-table-body .mud-table-row.promo-dossier-row:hover { background: transparent !important; }

.promo-table .mud-table-body .promo-dossier-cell {
    padding: 0 2px 2px 3px; /* место под контур: фон паспорта не перекрывает inset-тени */
    border: 0;
    background: rgba(var(--mud-palette-text-primary-rgb), .028);
    box-shadow:
        inset 3px 0 0 var(--promo-edge, var(--mud-palette-primary)),
        inset -2px 0 0 var(--mud-palette-primary),
        inset 0 -2px 0 var(--mud-palette-primary);
    cursor: default;
}

/* Раскладка — по ширине самой таблицы, а не окна (дровер, скрытые колонки):
   стопка → паспорт во всю ширину над «сверка | пометки» → три колонки.
   Паспорт — главная карточка, ему львиная доля; пометки/история обычно пустые — им узкая колонка.
   Тело занимает всю ширину строки — пустого хвоста справа нет. */
.promo-dossier { container: promo-dossier / inline-size; }

.promo-dossier__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "pass" "check" "side";
}

.promo-pass { grid-area: pass; }
.promo-dsec--check { grid-area: check; }
.promo-dsec--side { grid-area: side; }

.promo-pass,
.promo-dsec { min-width: 0; padding: 14px 18px 16px; }

.promo-dsec {
    display: flex;
    flex-direction: column;
    border-top: 1px solid var(--mud-palette-lines-default);
}

@container promo-dossier (min-width: 760px) {
    .promo-dossier__grid {
        grid-template-columns: minmax(0, 1.4fr) minmax(260px, 1fr);
        grid-template-areas: "pass pass" "check side";
    }
    .promo-dsec--check { border-right: 1px solid var(--mud-palette-lines-default); }
}

@container promo-dossier (min-width: 1280px) {
    .promo-dossier__grid {
        grid-template-columns: minmax(580px, 1.25fr) minmax(0, 1.1fr) minmax(280px, .7fr);
        grid-template-areas: "pass check side";
    }
    .promo-pass { border-right: 1px solid var(--mud-palette-lines-default); }
    .promo-dsec--check,
    .promo-dsec--side { border-top: 0; }
}

/* --- паспорт: действия, личность | статус/приз/выплата + гейт, аудит --- */
.promo-pass {
    container: promo-pass / inline-size;
    display: flex;
    flex-direction: column;
    gap: 14px;
    background: rgba(var(--mud-palette-text-primary-rgb), .035);
}

.promo-pass__body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.promo-pass__state { display: grid; align-content: start; gap: 14px; min-width: 0; }

/* широкая карточка: «кто это» слева, «что решили» справа — короче по высоте, всё на одном уровне глаз */
@container promo-pass (min-width: 500px) {
    .promo-pass__body { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 24px; }
    .promo-pass__state { padding-left: 22px; border-left: 1px dashed var(--mud-palette-lines-default); }
    .promo-pass__fields--state { padding-top: 0; border-top: 0; }
}

.promo-pass__bar { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.promo-pass__bar .mud-button-root { text-transform: none; letter-spacing: 0; font-weight: 600; }

.promo-pass__nav { display: inline-flex; align-items: center; gap: 2px; }

.promo-pass__pos {
    min-width: 52px;
    font-size: .72rem;
    text-align: center;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    color: var(--mud-palette-text-secondary);
}

.promo-pass__nav .promo-iconbtn {
    width: 28px;
    height: 28px;
    border: 1px solid var(--mud-palette-lines-inputs);
    border-radius: 6px;
    color: var(--mud-palette-text-secondary);
    background: var(--mud-palette-surface);
}

.promo-pass__nav .promo-iconbtn:hover:not(:disabled) { color: var(--mud-palette-text-primary); border-color: var(--mud-palette-text-secondary); }
.promo-pass__nav .promo-iconbtn:disabled { opacity: .35; cursor: default; }
.promo-pass__nav .promo-iconbtn .mud-icon-root { width: 18px; height: 18px; font-size: 18px; }

/* поля паспорта: подпись слева на базовой линии значения — сканируется сверху вниз, как документ */
.promo-pass__fields {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    align-items: baseline;
    gap: 12px 10px;
    margin: 0;
}

.promo-pass__fields dt {
    min-width: 0;
    margin: 0;
    overflow: hidden;
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: var(--mud-palette-text-secondary);
}

.promo-pass__fields dd { min-width: 0; margin: 0; }
.promo-pass__fields--state { padding-top: 14px; border-top: 1px dashed var(--mud-palette-lines-default); }

.promo-pass__value {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    min-width: 0;
    font-size: .95rem;
    font-weight: 600;
    line-height: 1.35;
}

a.promo-pass__value:hover { text-decoration: underline; }
.promo-pass__value.promo-muted { font-weight: 400; }
.promo-pass__value.promo-warn-text { font-weight: 500; }
.promo-pass__text { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

.promo-pass__sub {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2px 10px;
    margin-top: 2px;
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
    overflow-wrap: anywhere;
}

.promo-pass__sub .promo-copy { display: inline-flex; align-items: center; }

.promo-pass__warn {
    display: flex;
    align-items: flex-start;
    gap: 4px;
    margin-top: 4px;
    font-size: .75rem;
    line-height: 1.35;
    color: var(--mud-palette-warning);
}

.promo-pass__warn .mud-icon-root { flex: none; width: 15px; height: 15px; font-size: 15px; margin-top: 1px; }

/* иконка «скопировать / открыть» — проявляется при наведении, на тач-экранах видна всегда */
.promo-copy__icon.mud-icon-root {
    flex: none;
    width: 13px;
    height: 13px;
    margin-left: 4px;
    font-size: 13px;
    opacity: 0;
    transition: opacity .12s ease;
}

.promo-copy:hover .promo-copy__icon,
.promo-copy:focus-visible .promo-copy__icon,
a:hover > .promo-copy__icon,
a:focus-visible > .promo-copy__icon { opacity: .75; }

@media (hover: none) {
    .promo-copy__icon.mud-icon-root { opacity: .5; }
}

.promo-pass__status { display: inline-flex; align-items: center; gap: 6px; }
.promo-pass .promo-q { opacity: 1; }

.promo-pass__prize { display: flex; align-items: center; gap: 8px; min-width: 0; }

/* CurrencyField в табличном режиме рисует себя inline-стилями (min-width, padding, выравнивание вправо) —
   в паспорте он строчный, вровень с остальными значениями */
.promo-pass__prize > .currency-field-label {
    min-width: 0 !important;
    margin-left: -6px;
    padding: 1px 6px !important;
    font-size: .95rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    text-align: left !important;
}

.promo-pass__prize > .currency-field-label.mud-ripple:hover { background: var(--mud-palette-action-default-hover); }

/* редактор приза (select валюты + input) — ужимаем, чтобы влезал в колонку статуса */
.promo-pass__prize > .d-flex { min-width: 0 !important; }
.promo-pass__prize select { width: 66px !important; }
.promo-pass__prize input { min-width: 64px !important; }
.promo-pass__hint { font-size: .72rem; white-space: nowrap; color: var(--mud-palette-text-secondary); }

.promo-pass .promo-paid { margin-left: -5px; font-size: .8125rem; }
.promo-pass .promo-paid:not(.is-on) { color: var(--mud-palette-text-secondary); }
.promo-pass .promo-paid .mud-icon-root { width: 18px; height: 18px; font-size: 18px; }

/* гейт выплаты: сегмент на условие — зелёный пройден, красный блокирует, пунктир — ждём данных (как «реф ?») */
.promo-gate { display: grid; gap: 8px; }

.promo-gate__verdict {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: .78rem;
    color: var(--mud-palette-text-secondary);
}

.promo-gate__verdict b { font-weight: 600; color: var(--mud-palette-text-primary); }
.promo-gate__verdict .mud-icon-root { width: 16px; height: 16px; font-size: 16px; }
.promo-gate.is-ready .promo-gate__verdict { font-weight: 600; color: var(--mud-palette-success); }

.promo-gate__track { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 3px; }
.promo-gate__step { display: grid; gap: 5px; min-width: 0; cursor: help; }
.promo-gate__bar { height: 4px; border-radius: 2px; background: var(--mud-palette-lines-default); }

/* перенос по пробелам: «ник казино» в узкой колонке встаёт в две строки, а не обрезается */
.promo-gate__label {
    font-size: .64rem;
    line-height: 1.2;
    color: var(--mud-palette-text-disabled);
}

.promo-gate__step--ok .promo-gate__bar { background: var(--mud-palette-success); }
.promo-gate__step--ok .promo-gate__label { color: var(--mud-palette-text-secondary); }
.promo-gate__step--bad .promo-gate__bar { background: var(--mud-palette-error); }
.promo-gate__step--bad .promo-gate__label { font-weight: 700; color: var(--mud-palette-error); }

.promo-gate__step--wait .promo-gate__bar {
    background: repeating-linear-gradient(90deg, var(--mud-palette-lines-inputs) 0 5px, transparent 5px 8px);
}

.promo-pass__audit {
    display: grid;
    gap: 1px;
    margin-top: auto; /* когда паспорт выше соседей — аудит уходит вниз */
    font-size: .7rem;
    line-height: 1.45;
    color: var(--mud-palette-text-disabled);
}

.promo-pass__audit .promo-mono { font-size: .68rem; }

/* --- секции справа --- */
.promo-dsec__head { display: flex; align-items: center; gap: 8px; min-height: 26px; margin-bottom: 10px; }
.promo-dsec__head .promo-label { margin: 0; }

.promo-dsec__count {
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    font-variant-numeric: tabular-nums;
    color: var(--mud-palette-text-secondary);
    background: rgba(var(--mud-palette-text-primary-rgb), .08);
}

.promo-dsec__action {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
    padding: 3px 8px;
    border-radius: 6px;
    font-size: .75rem;
    font-weight: 500;
    color: var(--mud-palette-text-secondary);
    cursor: pointer;
}

.promo-dsec__action:hover:not(:disabled) { color: var(--mud-palette-text-primary); background: var(--mud-palette-action-default-hover); }
.promo-dsec__action:disabled { opacity: .5; cursor: default; }
.promo-dsec__action .mud-icon-root { width: 15px; height: 15px; font-size: 15px; }

.promo-dsec__block { margin-top: 16px; }
.promo-dsec .promo-empty-note { margin: 0; }

/* боковая колонка: теги / комментарии / другие акции — короткие ряды через пунктир;
   пустой ряд = одна строка «ЗАГОЛОВОК · пусто» */
.promo-dsec__row + .promo-dsec__row {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px dashed var(--mud-palette-lines-default);
}

.promo-dsec__row > .promo-dsec__head { margin-bottom: 8px; }
.promo-dsec__row > .promo-dsec__head:last-child { margin-bottom: 0; }
.promo-dsec__empty { font-size: .78rem; color: var(--mud-palette-text-disabled); }

.promo-dsec__inline { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; min-height: 26px; }
.promo-dsec__inline .promo-label { margin: 0; }

.promo-dsec__foot {
    margin-top: 16px;
    padding-top: 10px;
    border-top: 1px dashed var(--mud-palette-lines-default);
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
    overflow-wrap: anywhere;
}

.promo-dsec__foot > span { margin-right: 6px; font-weight: 600; color: var(--mud-palette-text-primary); }

/* вердикт по реферальности — заголовок сверки */
.promo-verdict {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    padding: 10px 12px;
    border-radius: 8px;
    font-size: .875rem;
    font-weight: 500;
    line-height: 1.4;
    background: rgba(var(--mud-palette-text-primary-rgb), .04);
    box-shadow: inset 3px 0 0 var(--mud-palette-lines-inputs);
}

.promo-verdict .mud-icon-root { flex: none; margin-top: 1px; color: var(--mud-palette-text-secondary); }
.promo-verdict--ref { background: rgba(var(--mud-palette-success-rgb), .1); box-shadow: inset 3px 0 0 var(--mud-palette-success); }
.promo-verdict--ref .mud-icon-root { color: var(--mud-palette-success); }
.promo-verdict--notref { background: rgba(var(--mud-palette-error-rgb), .1); box-shadow: inset 3px 0 0 var(--mud-palette-error); }
.promo-verdict--notref .mud-icon-root { color: var(--mud-palette-error); }
.promo-verdict--off { font-weight: 400; color: var(--mud-palette-text-secondary); }

/* цифры чекпоинта — плитки; разделители тенями, чтобы при переносе плиток не было двойных линий */
.promo-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
    margin-top: 12px;
    overflow: hidden;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 8px;
}

.promo-stat {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    padding: 8px 12px 9px;
    box-shadow: -1px 0 0 var(--mud-palette-lines-default), 0 -1px 0 var(--mud-palette-lines-default);
}

.promo-stat__label {
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.promo-stat__value {
    overflow: hidden;
    font-size: 1.05rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
    text-overflow: ellipsis;
    font-variant-numeric: tabular-nums;
}

.promo-stat__sub { font-size: .7rem; white-space: nowrap; color: var(--mud-palette-text-secondary); }
.promo-stats__src { margin-top: 5px; font-size: .7rem; color: var(--mud-palette-text-disabled); overflow-wrap: anywhere; }

.promo-period {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 2px 8px;
    margin-top: 10px;
    font-size: .8125rem;
}

.promo-period b { font-weight: 600; font-variant-numeric: tabular-nums; }

.promo-period__label {
    font-size: .64rem;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.promo-period__range { font-size: .72rem; color: var(--mud-palette-text-disabled); }

.promo-rules {
    display: grid;
    gap: 3px;
    max-width: 440px; /* значение «4 из 1» — рядом с подписью, а не у дальнего края широкой колонки */
    margin: 0 0 4px;
    padding: 0;
    list-style: none;
    font-size: .8125rem;
}

.promo-rules li { display: flex; align-items: center; gap: 6px; }
.promo-rules .mud-icon-root { width: 16px; height: 16px; font-size: 16px; }
.promo-rules__value { margin-left: auto; font-variant-numeric: tabular-nums; color: var(--mud-palette-text-secondary); }
.promo-rules .is-ok .mud-icon-root { color: var(--mud-palette-success); }
.promo-rules .is-bad .mud-icon-root { color: var(--mud-palette-warning); }
.promo-rules .is-na .mud-icon-root { color: var(--mud-palette-text-disabled); }

.promo-flags { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; }

.promo-flag {
    padding: 2px 8px;
    border-radius: 4px;
    font-size: .72rem;
    font-weight: 600;
}

.promo-flag--block { color: var(--mud-palette-error); background: rgba(var(--mud-palette-error-rgb), .12); }
.promo-flag--warn { color: var(--mud-palette-warning); background: rgba(var(--mud-palette-warning-rgb), .12); }

.promo-note { margin-top: 2px; font-size: .75rem; color: var(--mud-palette-text-secondary); overflow-wrap: anywhere; }

/* комментарии: реплики модераторов — с линейкой слева, системные события — тихой однострочной лентой */
.promo-thread {
    display: grid;
    gap: 10px;
    max-height: 300px;
    padding-right: 4px;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.promo-comment {
    padding-left: 10px;
    font-size: .8125rem;
    box-shadow: inset 2px 0 0 var(--mud-palette-lines-inputs);
}

.promo-comment__meta {
    display: flex;
    align-items: center;
    gap: 6px;
    min-height: 20px;
    font-size: .72rem;
    color: var(--mud-palette-text-secondary);
}

.promo-comment__author { font-weight: 600; color: var(--mud-palette-text-primary); }
.promo-comment__text { margin-top: 1px; line-height: 1.45; white-space: pre-wrap; overflow-wrap: anywhere; }

.promo-comment__tools { display: inline-flex; margin-left: auto; opacity: 0; transition: opacity .12s ease; }
.promo-comment:hover .promo-comment__tools,
.promo-comment:focus-within .promo-comment__tools { opacity: 1; }

@media (hover: none) {
    .promo-comment__tools { opacity: 1; }
}

.promo-comment.is-system {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0 6px;
    font-size: .72rem;
    color: var(--mud-palette-text-secondary);
    box-shadow: none;
}

.promo-comment.is-system .promo-comment__meta { min-height: 0; font-size: inherit; }
.promo-comment.is-system .promo-comment__author { font-weight: 500; color: var(--mud-palette-text-secondary); }
.promo-comment.is-system .promo-comment__text { margin: 0; line-height: 1.35; }

.promo-iconbtn {
    display: inline-grid;
    place-items: center;
    padding: 2px;
    border-radius: 4px;
    color: var(--mud-palette-text-disabled);
    cursor: pointer;
}

.promo-iconbtn:hover { color: var(--mud-palette-text-primary); background: var(--mud-palette-action-default-hover); }
.promo-iconbtn--danger:hover { color: var(--mud-palette-error); background: var(--mud-palette-error-hover); }
.promo-iconbtn .mud-icon-root { width: 14px; height: 14px; font-size: 14px; }

.promo-compose { display: flex; align-items: center; gap: 4px; }
.promo-compose .mud-input-control { margin: 0; }
/* в досье поле ввода — сразу под заголовком/тредом, а не прижато к низу растянутой колонки */
.promo-dsec .promo-compose { margin-top: 0; }
.promo-dsec .promo-thread + .promo-compose { margin-top: 10px; }

/* теги, прошлые участия */
.promo-tags { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.promo-tags .mud-chip { margin: 0; }

.promo-addtag {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    height: 24px;
    padding: 0 10px 0 6px;
    border: 1px dashed var(--mud-palette-lines-inputs);
    border-radius: 999px;
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
    cursor: pointer;
}

.promo-addtag:hover { color: var(--mud-palette-text-primary); border-color: var(--mud-palette-text-secondary); }
.promo-addtag .mud-icon-root { width: 16px; height: 16px; font-size: 16px; }

.promo-history { display: grid; gap: 6px; }

.promo-history__item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 7px 8px 7px 10px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 8px;
    font-size: .8rem;
    cursor: pointer;
}

.promo-history__item:hover { border-color: var(--mud-palette-lines-inputs); background: var(--mud-palette-action-default-hover); }
.promo-history__item .promo-dot { margin: 0; }
.promo-history__body { display: grid; flex: 1; gap: 1px; min-width: 0; }
.promo-history__body .promo-history__name { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.promo-history__go.mud-icon-root { flex: none; width: 18px; height: 18px; font-size: 18px; color: var(--mud-palette-text-disabled); }
.promo-history__item:hover .promo-history__go { color: var(--mud-palette-text-primary); }
.promo-history__name { font-weight: 500; }
.promo-history__sub { font-size: .72rem; color: var(--mud-palette-text-secondary); }

/* пусто */
.promo-empty {
    display: grid;
    justify-items: center;
    gap: 6px;
    padding: 40px 16px;
    font-size: .875rem;
    color: var(--mud-palette-text-secondary);
}

.promo-empty__hint { font-size: .8rem; color: var(--mud-palette-text-disabled); }

.promo-linkbtn {
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: 600;
    color: var(--mud-palette-primary);
    cursor: pointer;
}

.promo-linkbtn:hover { text-decoration: underline; }

/* ---------- плавающая панель действий с выделенными ---------- */

.promo-bulk {
    position: sticky;
    bottom: 16px;
    z-index: 5;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2px;
    width: fit-content;
    max-width: calc(100% - 24px);
    margin: 10px auto 12px;
    padding: 5px 6px 5px 14px;
    border: 1px solid var(--mud-palette-lines-inputs);
    border-radius: 12px;
    background: var(--mud-palette-surface);
    box-shadow: 0 10px 28px rgba(0, 0, 0, .28), 0 2px 6px rgba(0, 0, 0, .16);
}

.promo-bulk__count { margin-right: 4px; font-size: .8125rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.promo-bulk .mud-button-root { text-transform: none; font-weight: 600; letter-spacing: 0; }

.promo-bulk__sep {
    align-self: stretch;
    width: 1px;
    margin: 4px 6px;
    background: var(--mud-palette-lines-default);
}

/* ---------- диалог участника ---------- */

.promo-pdlg__title { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.promo-pdlg__title-text { font-size: 1.15rem; font-weight: 600; }
.promo-pdlg__promo { font-size: .8125rem; color: var(--mud-palette-text-secondary); }

.promo-pdlg__check {
    height: 100%;
    padding: 14px 16px;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--promo-radius);
    background: rgba(var(--mud-palette-text-primary-rgb), .025);
}

.promo-pdlg__check-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.promo-pdlg__check-head .promo-label { margin: 0; }
.promo-pdlg__hint { font-size: .8rem; color: var(--mud-palette-text-secondary); }

.promo-check-list { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; }

.promo-check-row {
    display: grid;
    grid-template-columns: 18px 70px 1fr;
    align-items: start;
    gap: 8px;
    font-size: .8125rem;
}

.promo-check-row > .mud-icon-root { width: 18px; height: 18px; font-size: 18px; }
.promo-check-row.is-ok > .mud-icon-root { color: var(--mud-palette-success); }
.promo-check-row.is-bad > .mud-icon-root { color: var(--mud-palette-error); }
.promo-check-row.is-warn > .mud-icon-root { color: var(--mud-palette-warning); }
.promo-check-row.is-na > .mud-icon-root { color: var(--mud-palette-text-disabled); }
.promo-check-row__label { color: var(--mud-palette-text-secondary); }
.promo-check-row__value { min-width: 0; overflow-wrap: anywhere; }
.promo-check-row__sub { font-size: .75rem; color: var(--mud-palette-text-secondary); }

.promo-check-errors { margin-top: 10px; font-size: .78rem; color: var(--mud-palette-error); }

.promo-pdlg__questions {
    margin-top: 14px;
    padding-top: 10px;
    border-top: 1px solid var(--mud-palette-lines-default);
}

.promo-history-box {
    margin-top: 12px;
    padding: 10px 12px;
    border: 1px solid rgba(var(--mud-palette-info-rgb), .35);
    border-radius: 8px;
    background: rgba(var(--mud-palette-info-rgb), .06);
}

.promo-history-box .promo-label { margin-bottom: 6px; color: var(--mud-palette-info); }

.promo-history-box__item {
    display: block;
    width: 100%;
    padding: 3px 0;
    font-size: .8rem;
    cursor: pointer;
}

.promo-history-box__item:hover .promo-history__name { text-decoration: underline; }

.promo-pdlg__fieldlabel { margin: 2px 0 6px; font-size: .75rem; color: var(--mud-palette-text-secondary); }
.promo-swatches { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }

/* свой цвет — системная палитра браузера под прозрачным <input type=color> */
.promo-color-custom {
    position: relative;
    display: inline-grid;
    place-items: center;
    width: 30px;
    height: 30px;
    margin: 0;
    overflow: hidden;
    border: 2px dashed var(--mud-palette-lines-inputs);
    border-radius: 6px;
    color: var(--mud-palette-text-secondary);
    cursor: pointer;
}

.promo-color-custom:hover { border-color: var(--mud-palette-text-secondary); }
.promo-color-custom.selected { border: 2px solid var(--mud-palette-text-primary); }
.promo-color-custom:focus-within { outline: 2px solid var(--mud-palette-primary); outline-offset: 1px; }
.promo-color-custom .mud-icon-root { width: 16px; height: 16px; font-size: 16px; }

.promo-color-custom input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    opacity: 0;
    cursor: pointer;
}

/* диалог тегов: все теги outline-чипами-переключателями; рядом — мини-кнопки правки/удаления */
.promo-tagpick { display: flex; flex-wrap: wrap; gap: 6px; }

.promo-tagpick__row { display: inline-flex; align-items: center; gap: 2px; }

.promo-tagpick__item {
    appearance: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 28px;
    margin: 0;
    padding: 0 8px 0 6px;
    border: 1px solid color-mix(in srgb, var(--tag, var(--mud-palette-lines-inputs)) 65%, transparent);
    border-radius: 6px;
    font: inherit;
    font-size: .8125rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    background: transparent;
    cursor: pointer;
}

.promo-tagpick__item:hover { background: rgba(var(--mud-palette-text-primary-rgb), .06); }
.promo-tagpick__item:focus-visible { outline: 2px solid var(--mud-palette-primary); outline-offset: 1px; }
.promo-tagpick__item .mud-icon-root { width: 15px; height: 15px; font-size: 15px; opacity: .6; }
.promo-tagpick__item.is-on {
    color: color-mix(in srgb, var(--tag, var(--mud-palette-text-primary)) 70%, var(--mud-palette-text-primary));
    border-color: color-mix(in srgb, var(--tag, var(--mud-palette-lines-inputs)) 85%, transparent);
    background: color-mix(in srgb, var(--tag, var(--mud-palette-text-primary)) 15%, transparent);
}
.promo-tagpick__item.is-on .mud-icon-root { opacity: 1; }
.promo-tagpick__count { font-size: .7rem; font-weight: 500; font-variant-numeric: tabular-nums; opacity: .65; }

.promo-tagpick__tools { display: inline-flex; gap: 0; }
.promo-tagpick__tools .promo-iconbtn { width: 20px; height: 20px; }
.promo-tagpick__tools .mud-icon-root { width: 13px; height: 13px; font-size: 13px; }

.promo-newtag { display: flex; align-items: center; gap: 8px; }
.promo-newtag .mud-input-control { margin: 0; }
.promo-newtag__colors { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 10px; }

/* диалог типов акций */
.promo-typelist {
    display: grid;
    overflow: hidden;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 8px;
}

.promo-typelist__row { display: flex; align-items: center; gap: 8px; min-height: 40px; padding: 2px 6px 2px 12px; }
.promo-typelist__row + .promo-typelist__row { border-top: 1px solid var(--mud-palette-lines-default); }
.promo-typelist__row.is-editing { background: rgba(var(--mud-palette-primary-rgb), .08); }
.promo-typelist__row .promo-dot { margin-right: 0; }

.promo-typelist__name {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    font-size: .875rem;
    font-weight: 500;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.promo-typelist__row.is-inactive .promo-typelist__name { color: var(--mud-palette-text-secondary); }

.promo-typelist__badge {
    padding: 1px 6px;
    border-radius: 4px;
    font-size: .7rem;
    color: var(--mud-palette-text-secondary);
    background: rgba(var(--mud-palette-text-primary-rgb), .08);
}

.promo-typelist__count { font-size: .75rem; font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--mud-palette-text-secondary); }

.promo-form-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }

.promo-swatch-preview {
    width: 46px;
    height: 20px;
    border: 1px solid var(--mud-palette-divider);
    border-radius: 4px;
}

/* чипы тегов в досье — тот же outline-вид, что у .promo-tag (цвет из --tag) */
.promo-tags .mud-chip.mud-chip-outlined {
    color: color-mix(in srgb, var(--tag, var(--mud-palette-text-secondary)) 72%, var(--mud-palette-text-primary));
    border-color: color-mix(in srgb, var(--tag, var(--mud-palette-lines-inputs)) 70%, transparent);
    background: color-mix(in srgb, var(--tag, transparent) 10%, transparent);
}

/* «Показано X из N» — заметность активного среза между фильтрами и таблицей */
.promo-shown {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 14px;
    border-top: 1px solid var(--mud-palette-lines-default);
    font-size: .75rem;
    color: var(--mud-palette-text-secondary);
}

/* кликабельный «уже у #N» внутри пояснения к флагам */
.promo-dupref {
    appearance: none;
    margin: 0;
    padding: 0 2px;
    border: 0;
    border-radius: 3px;
    font: inherit;
    font-weight: 700;
    color: var(--mud-palette-primary);
    background: none;
    cursor: pointer;
    text-decoration: underline dotted;
    text-underline-offset: 2px;
}
.promo-dupref:hover { background: rgba(var(--mud-palette-primary-rgb), .15); }

/* краткая подсветка строки после перехода по кросс-референсу/навигации */
tr.promo-row-flash > td { animation: promo-flash 1.4s ease-out; }
@keyframes promo-flash {
    0% { background-color: rgba(var(--mud-palette-primary-rgb), .3); }
    100% { background-color: transparent; }
}

/* диалог выплат: кто не пройдёт гейт и почему */
.promo-paygate { margin-top: 10px; font-size: .78rem; }
.promo-paygate__head { display: flex; align-items: center; gap: 6px; color: var(--mud-palette-text-secondary); }
.promo-paygate__head .mud-icon-root { width: 15px; height: 15px; font-size: 15px; }
.promo-paygate__list { margin-top: 4px; }
.promo-paygate__row { display: flex; justify-content: space-between; gap: 10px; padding: 1px 0; color: var(--mud-palette-text-secondary); }
.promo-paygate__row b { font-weight: 600; color: var(--mud-palette-text-primary); font-variant-numeric: tabular-nums; }

/* диалог участника: кнопка «подставить известные» под историей */
.promo-fill-known { margin-top: 8px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.promo-fill-known__note { font-size: .75rem; color: var(--mud-palette-text-secondary); }

/* колонка «Приз»: значение, равное призу акции, прячем за призрачную точку — клик открывает редактор */
.promo-prize__ghost {
    border: 0; background: none; padding: 2px 10px;
    color: var(--mud-palette-text-disabled); font-size: 1rem; line-height: 1;
    cursor: pointer; border-radius: 4px; min-width: 28px;
}
.promo-prize__ghost:hover:not(:disabled) { color: var(--mud-palette-primary); background: rgba(var(--mud-palette-primary-rgb), .1); }
.promo-prize__ghost:disabled { cursor: default; }

/* выбор колонок в ряду фильтров */
.promo-cols { display: inline-flex; gap: 4px; margin-left: auto; }
.promo-chip--eye { padding: 2px 8px; }

/* диалог участника, секция «Проверить»: цифры сверки важны — крупнее */
.promo-check-row { font-size: .92rem; grid-template-columns: 22px 78px 1fr; gap: 10px; }
.promo-check-row > .mud-icon-root { width: 20px; height: 20px; font-size: 20px; }
.promo-check-row__sub { font-size: .82rem; }
.promo-check-row__value { font-weight: 500; }

/* TG-инбокс в диалоге участника: подсказка записи (ник · имя / id · время) */
/* Автокомплит TG: RelativeWidth=Adaptive снимает cap «не шире поля», но потолок нужен — длинные подписи */
.promo-tgpop { max-width: min(560px, 92vw); }
.promo-tgsug { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.promo-tgsug__lock { color: var(--mud-palette-warning); align-self: center; }
.promo-tgsug__main { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.promo-tgsug__sub { margin-left: auto; padding-left: 8px; font-size: .75rem; color: var(--mud-palette-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* Текст пересланного сообщения под TG-полем — для ручного копирования нераспознанного */
.promo-tgmsg {
    margin-top: 8px;
    border: 1px dashed var(--mud-palette-lines-inputs);
    border-radius: 8px;
    padding: 6px 10px 8px;
    background: var(--mud-palette-background-gray);
}
.promo-tgmsg__head {
    display: flex; align-items: center; justify-content: space-between;
    font-size: .72rem; letter-spacing: .04em; text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}
.promo-tgmsg__copy {
    border: none; background: none; padding: 2px; cursor: pointer;
    color: var(--mud-palette-text-secondary); display: inline-flex;
}
.promo-tgmsg__copy:hover { color: var(--mud-palette-text-primary); }
.promo-tgmsg__text {
    margin-top: 2px; font-size: .82rem; white-space: pre-wrap; word-break: break-word;
    user-select: text; max-height: 110px; overflow-y: auto;
}
.promo-tgmsg__unparsed { margin-top: 4px; font-size: .75rem; color: var(--mud-palette-warning); }

@media (prefers-reduced-motion: reduce) {
    .promo-chev.mud-icon-root,
    .promo-copy__icon.mud-icon-root,
    .promo-comment__tools { transition: none; }
    tr.promo-row-flash > td { animation: none; }
}
