/* ErpGrid — замена DevExpress GridView. Оформление приближено к теме Moderno. */

.erp-grid {
    position: relative;
    font-family: var(--erp-grid-font-family, Montserrat, Arial, sans-serif);
    font-size: var(--erp-grid-font-size, 8pt);
    color: #333;
}

/* Ширина приходит из настроек грида на сервере (ErpGridSettings.Width). */
.erp-grid--sized {
    width: var(--erp-grid-width);
}

/* Панель поиска, как в DevExpress Moderno на проде: слева, широкое поле. */
.erp-grid-toolbar {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding: 4px 0 8px;
}

.erp-grid-search {
    display: flex;
    align-items: center;
    flex: 0 1 615px;
    width: 615px;
    max-width: 100%;
}

.erp-grid-search input {
    width: 100%;
    height: 30px;
    padding: 4px 8px;
    border: 1px solid #c6c6c6;
    border-radius: 2px;
    font-size: 9pt;
    background-color: #f5f5f5;
}

.erp-grid-search .erp-grid-search-clear {
    margin-left: -20px;
    cursor: pointer;
    color: #999;
    visibility: hidden;
}

.erp-grid-search.has-text .erp-grid-search-clear {
    visibility: visible;
}

.erp-grid-grouppanel {
    min-height: 30px;
    padding: 4px 8px;
    margin-bottom: 2px;
    background: #f2f2f2;
    border: 1px solid #dcdcdc;
    color: #777;
}

.erp-grid-grouppanel.erp-grid-dropzone {
    background: #e3f0fb;
    border-color: #7ab0e0;
}

.erp-grid-groupitem {
    display: inline-block;
    padding: 1px 6px;
    margin-right: 6px;
    background: #fff;
    border: 1px solid #c6c6c6;
    border-radius: 2px;
    cursor: pointer;
    user-select: none;
}

.erp-grid-groupitem .erp-grid-groupitem-remove {
    margin-left: 6px;
    color: #999;
}

.erp-grid-groupitem .erp-grid-sortmark {
    margin-left: 4px;
    color: #666;
}

.erp-grid-viewport {
    overflow: auto;
    border: 1px solid #dcdcdc;
    background: #fff;
}

.erp-grid-viewport--capped {
    max-height: var(--erp-grid-viewport-max-height);
}

.erp-grid-viewport--no-hscroll {
    overflow-x: hidden;
}

.erp-grid-table {
    border-collapse: separate;
    border-spacing: 0;
    table-layout: fixed;
    width: 100%;
}

/* На время замера естественной ширины колонок. */
.erp-grid-table.erp-grid-table--measuring {
    table-layout: auto;
}

.erp-grid-table th,
.erp-grid-table td {
    padding: 3px 6px;
    vertical-align: middle;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.erp-grid-table thead th {
    position: sticky;
    top: 0;
    z-index: 3;
    background: #f2f2f2;
    font-weight: normal;
    text-align: left;
    color: #444;
    border-bottom: 1px solid #c6c6c6;
    user-select: none;
}

.erp-grid-table thead th.erp-grid-sortable {
    cursor: pointer;
}

.erp-grid-table thead th .erp-grid-headercaption {
    display: inline-block;
    max-width: calc(100% - 26px);
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
}

.erp-grid-sortmark {
    font-size: 9px;
    margin-left: 3px;
}

.erp-grid-filterbtn {
    float: right;
    cursor: pointer;
    color: #888;
    padding: 0 2px;
}

.erp-grid-filterbtn.active {
    color: #1e73be;
}

.erp-grid-resizer {
    position: absolute;
    top: 0;
    right: 0;
    width: 5px;
    height: 100%;
    cursor: col-resize;
    z-index: 4;
}

.erp-grid-table thead th {
    position: sticky;
}

.erp-grid-table th.erp-grid-resizable {
    position: sticky;
}

.erp-grid-table th .erp-grid-resizer {
    position: absolute;
}

/* Закреплённые слева колонки */
.erp-grid-table th.erp-grid-frozen,
.erp-grid-table td.erp-grid-frozen {
    position: sticky;
    z-index: 2;
    background: #fff;
}

.erp-grid-table thead th.erp-grid-frozen {
    z-index: 5;
    background: #f2f2f2;
}

.erp-grid-table tr.erp-grid-alt td.erp-grid-frozen {
    background: #fafafa;
}

.erp-grid-table td.erp-grid-frozen-last,
.erp-grid-table th.erp-grid-frozen-last {
    border-right: 1px solid #c6c6c6;
}

/* Линии сетки */
.erp-grid-lines-horizontal .erp-grid-table td,
.erp-grid-lines-both .erp-grid-table td {
    border-bottom: 1px solid #e4e4e4;
}

.erp-grid-lines-vertical .erp-grid-table td,
.erp-grid-lines-both .erp-grid-table td,
.erp-grid-lines-vertical .erp-grid-table th,
.erp-grid-lines-both .erp-grid-table th {
    border-right: 1px solid #e4e4e4;
}

.erp-grid-table tr.erp-grid-alt > td {
    background-color: #fafafa;
}

.erp-grid-table tbody tr:hover > td {
    background-color: #eef5fc;
}

.erp-grid-grouprow > td {
    background: #eaeaea !important;
    font-weight: bold;
    cursor: pointer;
}

.erp-grid-groupexpander {
    display: inline-block;
    width: 12px;
    color: #666;
}

/* ----------------------------------------------------------------------------
   Условное форматирование.
   Значения (цвет/градиент/отступ группировки) вычисляются на сервере и
   приходят в разметку только как CSS Custom Property — см. erp-grid.js.
   Специфичность подобрана так, чтобы правила перекрывали чередование строк
   и :hover — ровно так же, как это делал вытесненный inline-стиль.
   Порядок важен: оформление ячейки должно перекрывать оформление строки.
   -------------------------------------------------------------------------- */

.erp-grid-table th.erp-grid-th--tinted {
    color: var(--erp-grid-th-color);
}

.erp-grid-table td.erp-grid-groupcell {
    padding-left: var(--erp-grid-group-indent, 6px);
}

.erp-grid-table tbody tr.erp-grid-row--tinted-bg > td {
    background-color: var(--erp-grid-row-bg);
}

.erp-grid-table tbody tr.erp-grid-row--tinted-fg > td {
    color: var(--erp-grid-row-fg);
}

.erp-grid-table tbody tr > td.erp-grid-cell--tinted-bg {
    background: var(--erp-grid-cell-bg);
}

.erp-grid-table tbody tr > td.erp-grid-cell--tinted-fg {
    color: var(--erp-grid-cell-fg);
}

.erp-grid-groupsummary {
    font-weight: normal;
    color: #555;
    margin-left: 12px;
}

.erp-grid-table tfoot td {
    position: sticky;
    bottom: 0;
    z-index: 3;
    background: #f2f2f2;
    border-top: 1px solid #c6c6c6;
    font-weight: bold;
}

.erp-grid-empty {
    padding: 12px;
    text-align: center;
    color: #999;
}

.erp-grid-pager {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 4px 6px;
    background: #f2f2f2;
    border: 1px solid #dcdcdc;
    border-top: none;
}

.erp-grid-pager-pages a {
    display: inline-block;
    min-width: 20px;
    padding: 1px 5px;
    margin-right: 2px;
    text-align: center;
    color: #1e73be;
    cursor: pointer;
    border: 1px solid transparent;
}

.erp-grid-pager-pages a.current {
    font-weight: bold;
    color: #333;
    background: #fff;
    border-color: #c6c6c6;
    cursor: default;
}

.erp-grid-pager-pages a.disabled {
    color: #aaa;
    cursor: default;
}

.erp-grid-pager-size select {
    height: 22px;
    font-size: 8pt;
    border: 1px solid #c6c6c6;
}

.erp-grid-pager-info {
    color: #777;
}

.erp-grid-filterpopup {
    position: absolute;
    z-index: 1000;
    min-width: 180px;
    max-width: 320px;
    background: #fff;
    border: 1px solid #b5b5b5;
    box-shadow: 0 2px 6px rgba(0, 0, 0, .2);
    font-size: 8pt;
}

.erp-grid-filterpopup .erp-grid-filterlist {
    max-height: 240px;
    overflow: auto;
    padding: 4px 6px;
}

.erp-grid-filterpopup label {
    display: block;
    font-weight: normal;
    margin: 0 0 2px;
    cursor: pointer;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.erp-grid-filterpopup label input {
    margin-right: 4px;
}

.erp-grid-filterpopup .erp-grid-filterbuttons {
    padding: 4px 6px;
    border-top: 1px solid #e0e0e0;
    text-align: right;
}

.erp-grid-filterpopup .erp-grid-filterbuttons button {
    font-size: 8pt;
    padding: 1px 8px;
    margin-left: 4px;
}

.erp-grid-dragging {
    opacity: .5;
}
