.was-validated .form-control:invalid,
.form-control.is-invalid {
    border-color: var(--bs-form-invalid-border-color) !important;
    padding-right: calc(1.5em + 1.55rem) !important;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23F8285A'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23F8285A' stroke='none'/%3e%3c/svg%3e") !important;
    background-repeat: no-repeat !important;
    background-position: right calc(0.375em + 0.3875rem) center !important;
    background-size: calc(0.75em + 0.775rem) calc(0.75em + 0.775rem) !important;
}

.was-validated .form-control:invalid:focus,
.form-control.is-invalid:focus {
    border-color: var(--bs-form-invalid-border-color) !important;
    box-shadow: false, 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25) !important;
}

.was-validated textarea.form-control:invalid,
textarea.form-control.is-invalid {
    padding-right: calc(1.5em + 1.55rem) !important;
    background-position: top calc(0.375em + 0.3875rem) right calc(0.375em + 0.3875rem) !important;
}

.was-validated .form-select:invalid,
.form-select.is-invalid {
    border-color: var(--bs-form-invalid-border-color) !important;
}

.daterangepicker tr .active.start-date,
.daterangepicker tr .active.end-date,
.daterangepicker .in-range {
    background-color: #ef9300 !important;
    color: #ffffff !important;
}

.dtfh-floatingparent {
    box-shadow: none !important;
}

.list-footer {
    margin-top: 0.5rem;
}

@media (max-width: 575.98px) {
    .card-flush.list-search-expanded .card-header {
        flex-wrap: wrap !important;
    }
    .card-flush.list-search-expanded .card-title {
        flex: 0 0 100%;
        max-width: 100%;
    }
    .card-flush.list-search-expanded .card-toolbar {
        flex: 0 0 100%;
        max-width: 100%;
        justify-content: flex-end;
    }
    .card-flush.list-search-expanded .card-title > div {
        width: 100%;
        max-width: 100%;
        margin-right: 0 !important;
    }
    .card-flush.list-search-expanded .card-title > div input {
        width: 100% !important;
    }
    .card-flush.list-search-expanded .d-none.d-sm-inline {
        display: inline !important;
    }
    .card-flush.list-search-expanded [data-kt-filter-count] {
        display: none !important;
    }
    .card-flush.list-search-expanded .card-toolbar .btn {
        white-space: nowrap;
    }
    th.colvis_false,
    td.colvis_false {
        padding: 0 !important;
        width: 0 !important;
        min-width: 0 !important;
    }
    th.colvis_false + th,
    td.colvis_false + td {
        padding-left: 0 !important;
    }
}

@media (max-width: 409px) {
    .card-flush.list-search-expanded .card-toolbar .btn {
        --bs-btn-padding-x: 1rem;
        --bs-btn-padding-y: 0.55rem;
    }
}

/* PMC — pole wykonawcy (Tagify) na formularzu zadania: sztywna wysokość jak input,
   bez skoku po wyborze osoby */
#kt_pmc_task_create_fields .tagify {
    min-height: 44px;
    height: 44px;
    align-items: center;
    flex-wrap: nowrap;
}

#kt_pmc_task_create_fields .tagify__tag {
    margin-top: 0;
    margin-bottom: 0;
    flex-shrink: 0;
}

/* Nazwa wykonawcy w jednej linii (domyślnie Tagify używa pre-wrap → zawijanie) */
#kt_pmc_task_create_fields .tagify__tag .tagify__tag-text {
    white-space: nowrap;
}

/* Ramki w polach formularzy — sterowane ustawieniem klienta ui.forms.borders.
   Klasa app-forms-bordered jest nakładana na <body> tylko gdy ustawienie jest włączone.
   Selektor 2-klasowy + !important wygrywa z wariantem solid (bez ramki). */
.app-forms-bordered .form-control,
.app-forms-bordered .form-select,
.app-forms-bordered textarea {
    border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important;
}

/* PMC — wiersz zadania zamkniętego (ukończone/anulowane) przekreślony.
   Klasa pmc-task-closed nakładana w createdRow DataTables. */
#kt_table_pmc_project_tasks tr.pmc-task-closed td,
#kt_table_pmc_tasks tr.pmc-task-closed td {
    text-decoration: line-through;
}

/* PMC — wcięcie zadania podrzędnego w widoku zagnieżdżonym (data-depth = poziom). */
#kt_table_pmc_project_tasks tr[data-depth] td.pmc-task-summary-cell {
    padding-left: calc(0.75rem + var(--pmc-task-depth, 0) * 1.5rem);
}

/* Lista presetów daterangepicker — 7 stałych pozycji mieści się bez scrolla.
   Zdejmujemy limit 260px narzucony przez motyw Metronic (powodował zbędny pionowy scroll). */
.daterangepicker .ranges ul {
    max-height: none;
    overflow: visible;
}

/* Filtry zakresu dat (daterangepicker w wąskim dropdownie filtra) — w trybie „Własny zakres"
   wymuszamy szerokość na listę presetów + dwa kalendarze obok siebie. Popup jest doczepiany do
   wąskiego parentEl i bez tego shrink-wrapuje się do rodzica, zawijając kalendarze pod presety. */
#data-kt-pmc-task-sessions-my-table-filter .daterangepicker.show-calendar,
#data-kt-pmc-tasks-table-filter .daterangepicker.show-calendar,
#kt_pmc_project_tasks_table_filter .daterangepicker.show-calendar,
#kt_pmc_timereport_table_filter .daterangepicker.show-calendar,
#kt_notif_timeline_filter_form .daterangepicker.show-calendar,
#kt_deploys_table_filter_form .daterangepicker.show-calendar,
#kt_app_log_table_filter_form .daterangepicker.show-calendar,
#data-kt-table-filter .daterangepicker.show-calendar,
#data-kt-communication-mails-table-filter .daterangepicker.show-calendar,
#data-kt-communication-sms-table-filter .daterangepicker.show-calendar {
    min-width: 720px;
}

/* PMC — kolumna „Opis" wpisów czasu (lista „mój czas" + zakładka projektu): domyślnie jedna
   linia z wielokropkiem; po kliknięciu pełna treść rozwija się w polu w wielu liniach (bez popupa). */
.pmc-desc-ellipsis {
    display: block;
    max-width: 280px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
}
.pmc-desc-ellipsis.pmc-desc-expanded {
    overflow: visible;
    white-space: normal;
    word-break: break-word;
}
