/* Список клиентов: длинные контакты и условия переносятся, на mobile таблица прокручивается. */
.table-responsive:has(.client-list-details) {
    position: relative;
}

.client-list-details {
    min-width: 14rem;
    max-width: 24rem;
    white-space: normal;
    overflow-wrap: anywhere;
}

/* Навигация: перенос длинных подписей и отступы якорных переходов. */
.admin-section-navigation .nav-link {
    white-space: normal;
    overflow-wrap: anywhere;
}

[data-admin-section] {
    scroll-margin-top: 1rem;
}

.navbar-vertical .nav-link {
    white-space: normal;
    height: auto;
    min-height: 2.5rem;
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
}

.navbar-vertical .nav-link-title {
    white-space: normal;
    word-break: break-word;
}

/* Смысловые разделы спецификации без дополнительных карточек внутри модального окна. */
.order-spec-editor:not([hidden]),
.order-spec-editor > form {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
}

/* Кнопки календаря и часов не должны перекрываться иконкой ошибки Tabler. */
.order-spec-editor input[type="date"].is-invalid,
.order-spec-editor input[type="time"].is-invalid,
.order-spec-editor input[type="datetime-local"].is-invalid {
    background-image: none;
    padding-right: 1rem;
}

.spec-form-section {
    padding-top: 0.75rem;
    border-top: var(--tblr-border-width, 1px) solid var(--tblr-border-color);
}

.spec-form-section + .spec-form-section {
    margin-top: 1.25rem;
}

/* Карточка любой услуги: общие показатели отделены от контекстных полей. */
.spec-summary-facts {
    border-left: var(--tblr-border-width, 1px) solid var(--tblr-border-color);
    padding-left: 1rem;
}

.spec-summary-facts > div {
    min-width: 8rem;
}

.spec-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
    gap: 1rem;
}

.spec-summary-assignees {
    margin-right: -1rem;
    margin-left: -1rem;
}

.spec-summary-actions {
    margin: 0 -1rem -1rem;
}

@media (max-width: 767.98px) {
    .spec-summary-facts {
        border-top: var(--tblr-border-width, 1px) solid var(--tblr-border-color);
        border-left: 0;
        padding-top: 0.75rem;
        padding-left: 0;
        width: 100%;
    }
}

.admin-list-loading {
    position: absolute;
    z-index: 2;
    top: 0.75rem;
    right: 0.75rem;
}

.switch-user-dropdown {
    z-index: 1050;
    display: none;
    max-height: 12.5rem;
    bottom: 100%;
}

.schedule-calendar {
    min-height: 37.5rem;
}

/* Базовая раскладка TomSelect: стандартные темы отключены, оформление дополняет Tabler vendor CSS. */
select.ts-hidden-accessible,
input.ts-hidden-accessible {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: 0;
    padding: 0;
    overflow: hidden;
    border: 0;
    clip-path: inset(50%);
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
}

.ts-wrapper.form-control,
.ts-wrapper.form-select {
    position: relative;
    height: auto;
    min-height: 0;
    padding: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
}

.input-hidden .ts-control > input {
    position: absolute;
    left: -10000px;
    opacity: 0;
}

.ts-wrapper .ts-control {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    align-items: center;
    width: 100%;
    min-height: 2.5rem;
    padding: 0.3125rem 0.5rem;
    background-color: var(--tblr-bg-forms);
    border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    box-shadow: var(--tblr-shadow-input);
    color: var(--tblr-body-color);
}

/* Компактный TomSelect должен совпадать по высоте с form-select-sm Tabler. */
.ts-wrapper.form-select-sm .ts-control {
    min-height: 2rem;
}

.ts-wrapper.focus .ts-control {
    border-color: var(--tblr-primary);
    box-shadow: 0 0 0 .25rem rgba(var(--tblr-primary-rgb), .25);
}

.ts-wrapper.multi .ts-control .item {
    display: block;
    min-width: 0;
    max-width: 100%;
    padding: 0.125rem 0.375rem;
    overflow: hidden;
    line-height: 1.4;
    text-overflow: ellipsis;
    white-space: nowrap;
    background: var(--tblr-bg-surface-secondary);
    border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
    border-radius: calc(var(--tblr-border-radius) - 1px);
}

.ts-wrapper.multi.plugin-remove_button .ts-control .item {
    position: relative;
    padding-right: 1.75rem;
}

.ts-wrapper.plugin-remove_button .item .remove {
    position: absolute;
    inset: 0 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    border-left: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
    color: var(--tblr-secondary);
    text-decoration: none;
}

.ts-wrapper.single .ts-control {
    position: relative;
    flex-wrap: nowrap;
    padding-right: 2.25rem;
}

/* Очистка закреплена перед стрелкой и не перемещается при смене фокуса. */
.ts-wrapper.single.plugin-clear_button .ts-control {
    padding-right: 4rem;
}

.ts-wrapper.single.plugin-clear_button .ts-control > .item {
    min-width: 0;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ts-wrapper.plugin-clear_button .clear-button {
    position: absolute;
    top: 50%;
    right: 0.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    padding: 0;
    transform: translateY(-50%);
    border: 0;
    border-radius: var(--tblr-border-radius);
    background: transparent;
    color: var(--tblr-secondary);
    font: inherit;
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
}

.ts-wrapper.single.plugin-clear_button .clear-button {
    right: 2.125rem;
}

/* У поиска по справочнику нет стрелки; очистка занимает её место справа. */
.ts-wrapper.single.autocomplete-search .ts-control {
    flex-wrap: nowrap;
    padding-right: 0.5rem;
}

.ts-wrapper.single.autocomplete-search.plugin-clear_button .ts-control {
    padding-right: 2.75rem;
}

.ts-wrapper.single.autocomplete-search.plugin-clear_button .clear-button {
    right: 0.5rem;
}

.ts-wrapper.plugin-clear_button:not(.has-items) .clear-button,
.ts-wrapper.plugin-clear_button.disabled .clear-button,
.ts-wrapper.plugin-clear_button.locked .clear-button {
    display: none;
}

.ts-wrapper.plugin-clear_button .clear-button:hover {
    background: var(--tblr-bg-surface-secondary);
    color: var(--tblr-body-color);
}

.ts-wrapper.plugin-clear_button .clear-button:focus-visible {
    outline: 2px solid var(--tblr-primary);
    outline-offset: 1px;
}

.ts-wrapper.single:not(.autocomplete-search) .ts-control::after {
    position: absolute;
    top: 50%;
    right: 0.875rem;
    width: 0;
    height: 0;
    margin-top: -0.125rem;
    pointer-events: none;
    content: "";
    border-color: var(--tblr-secondary) transparent transparent;
    border-style: solid;
    border-width: 0.3125rem 0.3125rem 0;
}

.ts-wrapper.single:not(.autocomplete-search).dropdown-active .ts-control::after {
    margin-top: -0.25rem;
    border-color: transparent transparent var(--tblr-secondary);
    border-width: 0 0.3125rem 0.3125rem;
}

.ts-wrapper .ts-control > input {
    flex: 1 1 auto;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
    outline: 0;
    background: transparent;
    box-shadow: none;
    color: inherit;
    font: inherit;
    line-height: inherit;
}

.ts-wrapper .ts-control > input:focus {
    outline: 0;
    box-shadow: none;
}

.ts-wrapper.single:not(.autocomplete-search):not(.disabled) .ts-control {
    cursor: pointer;
}

.ts-wrapper.single.autocomplete-search:not(.disabled) .ts-control,
.ts-wrapper.single.input-active:not(.plugin-dropdown_input) .ts-control,
.ts-wrapper.single.input-active:not(.plugin-dropdown_input) .ts-control input {
    cursor: text;
}

.ts-wrapper.plugin-dropdown_input .dropdown-input-wrap,
.ts-dropdown .dropdown-input-wrap {
    border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
}

.ts-wrapper.plugin-dropdown_input .dropdown-input,
.ts-dropdown .dropdown-input {
    display: block;
    width: 100%;
    min-height: 2.375rem;
    padding: 0.4375rem 0.75rem;
    background: var(--tblr-bg-forms);
    border: 0;
    color: var(--tblr-body-color);
    font: inherit;
    line-height: 1.4285714286;
    outline: 0;
    cursor: text;
}

.ts-wrapper.plugin-dropdown_input .dropdown-input::placeholder,
.ts-dropdown .dropdown-input::placeholder {
    color: var(--tblr-tertiary);
}

.ts-wrapper.plugin-dropdown_input.has-items .items-placeholder,
.ts-wrapper.plugin-dropdown_input.dropdown-active .items-placeholder {
    display: none;
}

.ts-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    margin-top: 0.25rem;
    border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
}

.modal .ts-wrapper.dropdown-active {
    z-index: 1060;
}

.modal > .autocomplete-modal-dropdown {
    z-index: 1060;
    margin: 0;
}

.ts-dropdown [data-selectable],
.ts-dropdown .option {
    cursor: pointer;
}

.ts-dropdown-content {
    max-height: 12.5rem;
    overflow-x: hidden;
    overflow-y: auto;
}

/* Группы и состояния нужны и для панелей, вынесенных в корень модалки. */
.ts-dropdown .optgroup-header {
    padding: 0.375rem 0.75rem;
    background: var(--tblr-bg-surface-secondary);
    color: var(--tblr-secondary);
    font-weight: 600;
}

.ts-dropdown .optgroup + .optgroup {
    border-top: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
}

.ts-dropdown .create,
.ts-dropdown .no-results {
    padding: 0.5rem 0.75rem;
}

.ts-dropdown .option.selected {
    background: var(--tblr-bg-surface-secondary);
}

.ts-dropdown .option.active,
.ts-dropdown .create.active {
    background: rgba(var(--tblr-primary-rgb), 0.1);
    color: var(--tblr-primary);
}

.ts-wrapper.is-invalid .ts-control,
.ts-hidden-accessible.is-invalid + .ts-wrapper .ts-control {
    border-color: var(--tblr-danger);
}

.contractor-form .ts-wrapper.dropdown-active {
    position: relative;
    z-index: 1070;
}

.contractor-form .ts-wrapper.dropdown-active .ts-dropdown {
    z-index: 1070;
}

.contractor-form .role-item:has(.ts-wrapper.dropdown-active),
.contractor-form .written-profile-section:has(.ts-wrapper.dropdown-active),
.contractor-form .oral-profile-section:has(.ts-wrapper.dropdown-active),
.contractor-form .lp-item:has(.ts-wrapper.dropdown-active),
.contractor-form .oral-rate-item:has(.ts-wrapper.dropdown-active) {
    position: relative;
    z-index: 1060;
}

.ts-wrapper.timezone-select {
    display: block;
    width: 100%;
}

.ts-wrapper.timezone-select.single .ts-control {
    height: 2.375rem;
    overflow: hidden;
    padding: .4375rem 2.25rem .4375rem .75rem;
}

.ts-wrapper.timezone-select.single .ts-control .item {
    display: block;
    line-height: 1.4285714286;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ts-wrapper.timezone-select.single .ts-control input {
    min-width: 1px;
}

.ts-wrapper.timezone-select .ts-dropdown {
    max-height: 18rem;
    overflow: hidden;
}

.ts-wrapper.timezone-select .ts-dropdown-content {
    max-height: 18rem;
}

.ts-wrapper.timezone-select .optgroup-header {
    display: none;
}

.ts-wrapper.timezone-select .option {
    line-height: 1.4285714286;
    min-height: 2rem;
    white-space: nowrap;
}

.ts-dropdown .option {
    overflow: hidden;
    text-overflow: ellipsis;
}

.contractor-form .rate-toggle .rate-toggle-count {
    --tblr-badge-color: var(--tblr-body-color);
    background-color: var(--tblr-bg-surface);
    border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
    color: var(--tblr-body-color);
}

.contractor-form .rate-toggle:hover .rate-toggle-count,
.contractor-form .rate-toggle:focus-visible .rate-toggle-count,
.contractor-form .rate-toggle[aria-expanded="true"] .rate-toggle-count {
    --tblr-badge-color: var(--tblr-white);
    background-color: transparent;
    border-color: var(--tblr-white);
    color: var(--tblr-white);
}

.contractor-form .oral-rate-minimum-hours-ignored {
    background-color: var(--tblr-bg-surface-secondary);
    color: var(--tblr-secondary);
    cursor: not-allowed;
}

/* ── Фильтры админ-списков ── */
.admin-filter-fields {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: flex-end;
}

.admin-filter-loading {
    position: absolute;
    z-index: 3;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.admin-filter-bar-updating {
    opacity: 0.5;
    pointer-events: none;
}

.admin-contractor-filter-set-fields {
    display: contents;
}

.admin-filter-bar-contractor .admin-filter-fields {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(11rem, 100%), 1fr));
}

.admin-filter-bar-contractor .admin-contractor-filter-set-panel {
    grid-column: 1 / -1;
}

.admin-filter-bar-contractor .admin-filter-field,
.admin-filter-bar-contractor .admin-filter-field-search {
    width: 100%;
    max-width: none;
}

.admin-filter-bar-contractor .admin-filter-field-search {
    grid-column: span 2;
}

.admin-filter-field {
    flex: 0 1 12rem;
    min-width: 0;
}

.admin-filter-field-search {
    flex: 1 1 15rem;
    max-width: 32rem;
}

.admin-contractor-filter-set-panel {
    flex: 1 0 100%;
    min-width: 0;
    margin: 0;
    padding: 0 0 0.125rem;
    border: 0;
}

.admin-contractor-filter-set-label {
    margin-bottom: 0.375rem;
    font-size: var(--tblr-font-size-sm);
    font-weight: 600;
    color: var(--tblr-secondary);
}

.admin-contractor-filter-set-options {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.375rem;
}

.admin-contractor-filter-set-options .btn {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 2.25rem;
    white-space: normal;
}

.admin-filter-chips {
    gap: 0.375rem;
}

.admin-filter-chip {
    padding: 0.25rem 0.375rem 0.25rem 0.5rem;
}

.admin-filter-chip-value {
    min-width: 0;
    overflow-wrap: anywhere;
}

.admin-filter-chip-remove {
    width: 2rem;
    height: 2rem;
    margin: -0.25rem -0.375rem -0.25rem 0;
    border-radius: var(--tblr-border-radius);
    opacity: 0.8;
}

.admin-filter-chip-remove:focus-visible {
    outline: 2px solid var(--tblr-primary);
    outline-offset: 1px;
    opacity: 1;
}

@media (max-width: 575.98px) {
    .admin-filter-field,
    .admin-filter-field-search {
        flex-basis: 100%;
        max-width: none;
    }

    .admin-contractor-filter-set-options {
        grid-template-columns: 1fr;
    }

    .admin-filter-bar-contractor .admin-filter-field-search {
        grid-column: 1 / -1;
    }
}

@media (min-width: 576px) and (max-width: 991.98px) {
    .admin-contractor-filter-set-options {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.contractor-form .oral-rate-modifier-row {
    gap: .75rem;
}

.contractor-form .oral-rate-modifier-row-condition {
    grid-template-columns: minmax(14rem, 1fr) minmax(13rem, .55fr) auto;
}

.contractor-form .oral-rate-modifier-row-hours {
    grid-template-columns: minmax(8rem, .5fr) minmax(13rem, .55fr) auto;
}

.contractor-form .oral-rate-modifier-row:focus-within {
    border-left-color: var(--tblr-primary);
}

.contractor-form .oral-rate-modifier-actions {
    padding-top: 1.75rem;
}

.oral-rate-preview {
    min-height: 1.75rem;
}

.contractor-overview-photo {
    flex: 0 0 72px;
    height: 72px;
    object-fit: cover;
    width: 72px;
}

.contractor-overview-identity {
    min-width: 0;
}

.contractor-overview-list {
    display: grid;
    gap: .25rem .75rem;
    grid-template-columns: max-content minmax(0, 1fr);
}

.contractor-overview-list dd {
    min-width: 0;
}

@media (max-width: 991.98px) {
    .contractor-form .oral-rate-modifier-row,
    .contractor-form .oral-rate-modifier-row-condition,
    .contractor-form .oral-rate-modifier-row-hours {
        grid-template-columns: 1fr;
    }

    .contractor-form .oral-rate-modifier-actions {
        justify-content: flex-end;
        padding-top: 0;
    }
}

/* Повторяемые размеры и состояния интерфейса не должны жить в Twig inline-style. */
.admin-sidebar-office {
    font-size: 0.6875rem;
}

.dashboard-chart-panel {
    height: 13.75rem;
}

.contractor-rate-index {
    min-width: 1.75rem;
}

.contractor-form-photo {
    max-height: 7.5rem;
}

.assignment-chat-scroll {
    max-height: 25rem;
    overflow-y: auto;
}

.assignment-chat-message {
    max-width: 80%;
}

.text-pre-wrap {
    white-space: pre-wrap;
}

.contractor-search-results {
    display: none;
    max-height: 13.75rem;
    overflow-y: auto;
}

.contractor-match {
    padding: 0.875rem 1rem;
}

@media (min-width: 576px) {
    .contractor-match-quality {
        border-left: 1px solid var(--tblr-border-color);
    }
}

.contractor-news-marker {
    height: 0.5rem;
    left: -0.3125rem;
    top: 0.25rem;
    width: 0.5rem;
}

.admin-order-col-number {
    width: 5.625rem;
}

.admin-order-col-date {
    width: 6.875rem;
}

.admin-order-col-client {
    width: 12.5rem;
}

.admin-order-col-status {
    width: 6.25rem;
}

.admin-order-col-actions {
    width: 5rem;
}
