/* ── Боковое меню: перенос длинных названий ── */
.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;
}

/* ── Системная панель содержимого поверх Tabler card-токенов ── */
.content-panel {
    background: var(--tblr-card-bg, #fff);
    border: var(--tblr-border-width, 1px) solid var(--tblr-border-color, #dadfe5);
    border-radius: var(--tblr-border-radius, 4px);
    box-shadow: var(--tblr-card-box-shadow, none);
}

.content-panel-header {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    padding: 0.75rem 1rem;
    border-bottom: var(--tblr-border-width, 1px) solid var(--tblr-border-color, #dadfe5);
}

.content-panel-title {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.4;
}

.content-panel-body {
    padding: 1rem;
}

.admin-list-loading {
    position: absolute;
    z-index: 2;
    top: 0.75rem;
    right: 0.75rem;
    display: flex;
    gap: 0.5rem;
    align-items: center;
    padding: 0.375rem 0.625rem;
    color: var(--tblr-secondary-color);
    background: var(--tblr-bg-surface);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    box-shadow: var(--tblr-box-shadow-sm);
}

.switch-user-dropdown {
    z-index: 1050;
    display: none;
    max-height: 12.5rem;
    margin-bottom: 0.25rem;
    overflow-y: auto;
    bottom: 100%;
    border-radius: 0.375rem;
    background: var(--tblr-bg-surface);
    color: var(--tblr-body-color);
}

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

select.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.375rem;
    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: inline-flex;
    gap: 0.25rem;
    align-items: center;
    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.plugin-remove_button .item .remove {
    color: var(--tblr-secondary);
    text-decoration: none;
}

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

.ts-wrapper.single .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.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(.disabled) .ts-control {
    cursor: pointer;
}

.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 {
    border-bottom: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
}

.ts-wrapper.plugin-dropdown_input .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 {
    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);
}

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

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

.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 {
    align-items: center;
    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);
    height: 2.375rem;
    min-height: 2.375rem;
    overflow: hidden;
    padding: .4375rem 2.25rem .4375rem .75rem;
    width: 100%;
}

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

.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%;
    display: flex;
    gap: 0.5rem;
    align-items: center;
    padding: 0.375rem 0.625rem;
    color: var(--tblr-secondary-color);
    background: var(--tblr-bg-surface);
    border: var(--tblr-border-width) solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    box-shadow: var(--tblr-box-shadow-sm);
    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-field > .form-control,
.admin-filter-field > .form-select:not(.ts-hidden-accessible),
.admin-filter-field > .input-group {
    width: 100%;
}

.admin-filter-actions {
    flex: 0 0 auto;
}

.admin-filter-reset {
    white-space: nowrap;
}

.admin-filter-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    margin-top: 0.5rem;
}

.admin-filter-chip {
    display: inline-flex;
    gap: 0.25rem;
    align-items: center;
    max-width: 100%;
    padding: 0.25rem 0.375rem 0.25rem 0.5rem;
    text-align: left;
    white-space: normal;
}

.admin-filter-chip-label,
.admin-filter-chip-remove {
    flex: 0 0 auto;
}

.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-filter-field > .form-control,
    .admin-filter-field > .form-select:not(.ts-hidden-accessible) {
        width: 100%;
    }

    .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));
    }
}

.oral-rate-modifiers {
    display: grid;
    gap: 0.75rem;
}

.oral-rate-section {
    background: var(--tblr-bg-surface);
    border: var(--tblr-border-width) var(--tblr-border-style) var(--tblr-border-color);
    border-radius: 0.5rem;
    padding: 0.75rem;
}

.oral-rate-section-title {
    color: var(--tblr-body-color);
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.2;
}

.oral-rate-section-note {
    color: var(--tblr-secondary);
    font-size: 0.75rem;
    margin-top: 0.125rem;
}

.contractor-form .oral-rate-modifier-row {
    align-items: start;
    background: var(--tblr-bg-surface-secondary);
    border-left: .1875rem solid var(--tblr-border-color);
    border-radius: var(--tblr-border-radius);
    display: grid;
    gap: .75rem;
    margin-top: .5rem;
    padding: .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-row > .mb-3,
.contractor-form .oral-rate-modifier-row > div > .mb-3 {
    margin-bottom: 0;
}

.contractor-form .oral-rate-modifier-actions {
    align-items: start;
    display: flex;
    padding-top: 1.75rem;
}

.contractor-form .oral-rate-modifier-actions .btn-icon {
    flex: 0 0 auto;
    height: 2rem;
    min-width: 2rem;
    padding: 0;
    width: 2rem;
}

.contractor-form .oral-rate-modifier-actions .btn-icon .icon {
    height: 1rem;
    margin: 0;
    width: 1rem;
}

.contractor-form .oral-rate-modifier-coefficient-cell {
    color: var(--tblr-secondary);
    font-size: .75rem;
}

.oral-rate-preview {
    align-items: center;
    display: flex;
    font-size: .75rem;
    line-height: 1.25;
    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-heading {
    color: var(--tblr-secondary);
    font-size: .75rem;
    font-weight: 600;
    margin-bottom: .35rem;
    text-transform: uppercase;
}

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

.contractor-overview-list dt {
    color: var(--tblr-secondary);
    font-weight: 400;
}

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

.contractor-profile-table th,
.contractor-profile-table td {
    vertical-align: top;
}

@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. */
[data-controller~="row-click"] {
    cursor: pointer;
}

.admin-sidebar-office {
    font-size: 0.6875rem;
}

.admin-form-control-auto {
    width: auto;
}

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

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

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

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

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

.perchik-application-comment {
    max-width: 21.25rem;
}

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

.order-file-upload-input {
    max-width: 20rem;
}

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

.contractor-selected {
    display: none;
}

.schedule-legend-offered {
    background: #1976d2;
}

.schedule-legend-accepted {
    background: #388e3c;
}

.schedule-legend-done {
    background: #757575;
}

.schedule-legend-busy {
    background: #ff8a65;
}

.schedule-legend-vacation {
    background: #b39ddb;
}

.contractor-news-item {
    border-left: 0.125rem 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;
}
