.sidebar-header .logo {
    overflow: hidden;
    text-overflow: ellipsis;
}

.header-info {
    margin: 20px 0;
    padding: 0 50px;
}

.main-container>header {
    margin-bottom: 0;
}

.form-control {
    border-color: #868e96;
}

.dynamic-api-form {
    position: relative;
}

.modal-content .alert,
.dynamic-api-form .alert {
    position: absolute;
    z-index: 10;
    left: 0;
    right: 0;
    top: 0;
}

input[type="file"] {
    display: none;
}

.has-validation-errors .invalid-feedback {
    display: block;
}

.sidebar-header .logo img {
    max-height: 50px;
}

.sidebar-header .logo {
    text-align: center;
}

.sidebar-header {
    padding: 0 5px;
    background-color: #e7e7e7;
}

.sidebar-header a {
    color: #333;
    font-size: 18px;
}

.modal-content {
    position: relative;
}

.main-content a {
    color: #000000;
    text-decoration: underline;
}

a.btn {
    text-decoration: none;
}

.modal .alert.api-banner {
    position: absolute;
    z-index: 10;
    top: 0;
    left: 0;
    right: 0;
}

.ui-sortable-handle {
    cursor: grab;
}

.f-right {
    float: right;
}

.admin-menu .menu-submenu,
.admin-menu.menu-item {
    background-color: #2f2f2f;
    padding: 0;
}

.admin-menu.menu-item>.menu-link {
    height: 40px;
}

.text-bold {
    font-weight: 400;
}

.sidebar {
    background: linear-gradient(181deg, #013c6e, #039ab4);
}

.menu-submenu {
    background: rgba(0, 0, 0, 0.15);
}

.topbar-inverse {
    background-color: #174a76;
}

.sidebar .menu:not(.menu-bordery)>.menu-item.active>.menu-link {
    background: rgba(255, 255, 255, 0.15);
}

.alert.api-banner {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
}

@media (max-width: 767px) {
    .header-info {
        padding: 0 10px;
    }

    .topbar {
        padding: 0 10px;
    }

    .topbar-btn {
        padding-left: 0;
    }
}
@keyframes borderGlow {
    0% { box-shadow: 0 0 5px #ffffff; }
    50% { box-shadow: 0 0 20px #ffffff; }
    100% { box-shadow: 0 0 5px #ffffff; }
}
#credit-online-menu-item:not(.active){
    animation: borderGlow 2s infinite;
}
.anaf-links{
    list-style: none;
    padding: 0;
    margin: 0;
    display: inline-block;
}
.anaf-links li {
    display: inline-block;
    margin-right: 5px;
}
.anaf-links img {
    max-width: 140px;
    /* filter: grayscale(100%); */
    margin-bottom: 10px;
    opacity: 0.8;
}
.responsive-table-wrapper{
    overflow: auto;
}
.normal-text > *{
    font-size: inherit;
    font-weight: 300;
}

/* Textul legal lung din pasul 2 / pagina girantului. Marimea era stil inline pe element,
   dar stilul inline nu poate fi micsorat dintr-o media query - de aceea e o clasa. */
.legal-note {
    font-size: 14px;
}

/* Previzualizarea unui document (pasul 2 + pagina girantului): iframe-ul e chiar
   .modal-body, deci inaltimea lui se da de aici, nu din atribut style. */
#document-preview .modal-body {
    min-height: 60vh;
    border: 0;
    width: 100%;
}


/* =========================================================================
 * MOBIL (<= 767.98px)
 * Tot ce urmeaza exista DOAR pe ecran mic; desktopul ramane neschimbat.
 * ========================================================================= */
@media (max-width: 767.98px) {

    /* ---------- Shell: topbar, banda de titlu, carduri ---------- */

    /* Topbar la 48px. Tema presupune 48px in mai multe locuri (inaltime, line-height,
       padding-top pe container), deci toate se schimba impreuna. */
    .topbar {
        height: 48px;
    }
    body .topbar + .main-container,
    body .topbar + main {
        padding-top: 48px;
    }
    .topbar-btn {
        line-height: 48px;
        min-width: 40px;
        padding: 0 8px;
    }
    .topbar-btn img {
        max-height: 48px;
    }
    .topbar-divider {
        margin: 0 4px;
    }
    /* Numele clientului nu are voie sa impinga clopotelul si avatarul afara din ecran. */
    .topbar-left {
        min-width: 0;
        overflow: hidden;
    }
    .topbar-user-label {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        font-size: 14px;
    }

    /* Latimea utila: padding-ul paginii si gutterele Bootstrap trebuie sa fie egale,
       altfel randurile ies in afara containerului si apare scroll orizontal
       (tema lasa .main-content la 5px, dar .row la -15px). */
    .main-content {
        padding-left: 8px;
        padding-right: 8px;
    }
    .row {
        margin-left: -8px;
        margin-right: -8px;
    }
    .row > [class*="col-"],
    .row > .col {
        padding-left: 8px;
        padding-right: 8px;
    }
    .row.no-gutters,
    .row.no-margin {
        margin-left: 0;
        margin-right: 0;
    }
    .row.no-gutters > [class*="col-"] {
        padding-left: 0;
        padding-right: 0;
    }

    .header-info {
        margin: 10px 0;
        padding: 0 8px;
    }
    .header-title {
        font-size: 18px;
        line-height: 1.3;
    }
    .header-title small {
        font-size: 12.5px;
        line-height: 1.35;
        padding-top: 4px;
    }

    .card {
        margin-bottom: 12px;
    }
    .card-body {
        padding: 12px 8px;
    }
    .card-title {
        padding: 10px 12px;
        font-size: 15px;
        display: flex;
        flex-wrap: wrap;
        align-items: center;
    }
    /* Butonul din titlul cardului ("Solicitare noua", "Adauga girant") nu mai e float:
       intr-un titlu flex ar iesi din curgere si ar suprapune textul. */
    .card-title .f-right {
        float: none;
    }
    .card-title > a,
    .card-title > .btn {
        margin-left: auto;
    }
    /* Carduri imbricate (pasul 4 pune carduri in card-body-ul wizardului): plate. */
    .card .card {
        box-shadow: none;
        border: 1px solid #e9edf0;
    }
    /* .col-wrapper marcheaza randurile care contin carduri intregi. Cand un astfel de
       rand e deja in interiorul unui card, gutterele coloanei ar fi al treilea rand de
       padding lateral peste cel al cardului parinte. */
    .card-body .row.col-wrapper {
        margin-left: 0;
        margin-right: 0;
    }
    .card-body .row.col-wrapper > [class*="col-"] {
        padding-left: 0;
        padding-right: 0;
    }

    .site-footer {
        padding: 10px 8px;
    }
    .site-footer .row > [class*="col-"] {
        text-align: center !important;
    }
    .site-footer .nav {
        justify-content: center !important;
    }
    .site-footer .nav-link {
        padding: 2px 8px;
        font-size: 12px;
    }
    /* Logourile ANPC / SOL / Netopia pe un singur rand. */
    .anaf-links {
        display: block;
        text-align: center;
    }
    .anaf-links li {
        display: inline-block;
        margin: 8px 3px 0;
        padding: 0;
        text-align: center;
    }
    .anaf-links img {
        max-width: 85px;
        margin-bottom: 0;
    }

    /* ---------- Bara de pasi a creditului online ---------- */

    /* Tema randeaza titlul deasupra fiecarui cerc si nu are nicio media query, deci pe
       ecran mic titlurile se suprapun. Pe mobil raman doar cercurile, numerotate; titlul
       pasului curent e pe un rand separat (.loan-step-current, din pasul/body.inc.php). */
    .nav-process.nav-process-circle {
        margin-bottom: 0;
    }
    .nav-process.nav-process-circle .nav-title {
        display: none;
    }
    .nav-process.nav-process-circle .nav-item {
        padding: 0 4px;
    }
    /* Numarul pasului, centrat peste cerc. .nav-link are margin: 10px 0 si 29px
       inaltime, deci acestea sunt coordonatele. */
    .nav-process.nav-process-circle .nav-item[data-step]::after {
        content: attr(data-step);
        position: absolute;
        top: 10px;
        left: 0;
        right: 0;
        height: 29px;
        line-height: 29px;
        text-align: center;
        font-size: 13px;
        font-weight: 400;
        color: #8b95a5;
        z-index: 2;
        pointer-events: none;
    }
    /* Pasii terminati pastreaza bifa temei, deci acolo numarul nu se mai afiseaza. */
    .nav-process.nav-process-circle .nav-item.complete[data-step]::after {
        content: none;
    }
    /* Pasul curent: cerc plin cu numarul in alb. Punctul mic cu care tema marcheaza
       "processing" ar fi doar zgomot sub numar. */
    .nav-process.nav-process-circle .nav-item.processing .nav-link {
        background-color: #33cabb;
    }
    .nav-process.nav-process-circle .nav-item.processing .nav-link::after {
        display: none;
    }
    .nav-process.nav-process-circle .nav-item.processing[data-step]::after {
        color: #ffffff;
    }
    .loan-step-current {
        font-size: 14px;
        line-height: 1.35;
        margin: 6px 0 0;
        color: #4d5259;
    }

    /* ---------- Tabele ca fise (opt-in: .table-mobile-cards) ---------- */

    /* Scoatem tot tabelul din layout-ul de tabel: altfel latimea ramane data de
       continutul coloanelor, iar randurile-bloc ar primi wrappere anonime de tabel. */
    .table-mobile-cards,
    .table-mobile-cards tbody {
        display: block;
        width: 100%;
        border: 0;
        margin-bottom: 0;
    }
    /* Capul de tabel ramane pentru cititoarele de ecran, dar nu se mai vede. */
    .table-mobile-cards thead {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
    }
    .table-mobile-cards tbody tr {
        display: block;
        border: 1px solid #e5e9ee;
        border-radius: 3px;
        margin-bottom: 10px;
        padding: 2px 10px;
        background-color: #ffffff;
    }
    .table-mobile-cards tbody tr:last-child {
        margin-bottom: 0;
    }
    /* table-striped / table-bordered deseneaza pe celule: peste fise ar fi o grila. */
    .table-mobile-cards.table-striped tbody tr:nth-of-type(odd),
    .table-mobile-cards.table-striped tbody tr:nth-of-type(even) {
        background-color: #ffffff;
    }
    .table-mobile-cards.table-bordered,
    .table-mobile-cards.table-bordered tbody td {
        border: 0;
    }
    .table-mobile-cards tbody td {
        display: flex;
        width: 100%;
        gap: 10px;
        align-items: flex-start;
        border: 0;
        border-top: 1px solid #f1f2f3;
        padding: 6px 0;
        font-size: 13px;
        line-height: 1.35;
        text-align: left !important;
        word-break: break-word;
    }
    .table-mobile-cards tbody tr > td:first-child {
        border-top: 0;
    }
    .table-mobile-cards tbody td::before {
        content: attr(data-label);
        flex: 0 0 40%;
        max-width: 40%;
        color: #8b95a5;
        font-size: 12px;
        line-height: 1.35;
    }
    /* Celule fara eticheta: randul de mesaj ("Se incarca datele…", "Nu exista...", care
       vine cu colspan) si coloanele marcate cu data-mobile-label="" pe <th>. */
    .table-mobile-cards tbody td[colspan],
    .table-mobile-cards tbody td[data-label=""],
    .table-mobile-cards tbody td:not([data-label]) {
        display: block;
    }
    .table-mobile-cards tbody td[colspan]::before,
    .table-mobile-cards tbody td[data-label=""]::before,
    .table-mobile-cards tbody td:not([data-label])::before {
        content: none;
    }
    /* Celula de actiuni: vine dupa regulile de mai sus, ca sa le bata la specificitate
       egala. Butoanele umplu randul; doua scurte incap alaturi. */
    .table-mobile-cards tbody td.cell-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        padding-top: 8px;
        padding-bottom: 8px;
    }
    .table-mobile-cards tbody td.cell-actions::before {
        content: none;
    }
    .table-mobile-cards tbody td.cell-actions > .btn,
    .table-mobile-cards tbody td.cell-actions > a {
        flex: 1 1 130px;
        margin: 0;
    }
    .table-mobile-cards tbody td.cell-actions > a > .btn {
        width: 100%;
    }
    /* Celulele fara eticheta care amesteca text si butoane (coloana "Alte informatii"
       din lista de cereri): butonul ia tot randul. */
    .table-mobile-cards tbody td[data-label=""] > a {
        display: block;
    }
    .table-mobile-cards tbody td[data-label=""] > a > .btn,
    .table-mobile-cards tbody td[data-label=""] > .btn {
        width: 100%;
    }
    /* Ultimele, ca sa bata si regula de celula de actiuni (specificitate egala):
       o celula goala sau ascunsa de toggle_column() nu trebuie sa lase un rand gol. */
    .table-mobile-cards tbody td:empty {
        display: none;
    }
    .table-mobile-cards tbody td.d-none {
        display: none !important;
    }
    /* Randurile marcate de aplicatie isi pastreaza culoarea peste fundalul alb al fisei:
       in graficul de rate .table-warning inseamna "rata scadenta si neachitata", deci nu
       are voie sa se piarda pe mobil. */
    .table-mobile-cards.table-striped tbody tr.table-warning,
    .table-mobile-cards tbody tr.table-warning {
        background-color: #ffeeba;
        border-color: #f3d783;
    }

    /* ---------- Tabele ramase tabele, doar mai dense (.table-mobile-compact) ----------
     * Pentru grilele pur numerice, unde compararea pe verticala conteaza mai mult decat
     * eticheta fiecarei celule. Trebuie sa stea intr-un .responsive-table-wrapper, care
     * le lasa sa fie mai late decat ecranul fara sa strice pagina. */
    .table-mobile-compact {
        font-size: 12px;
    }
    .table-mobile-compact td,
    .table-mobile-compact th {
        padding: 4px 5px;
        white-space: nowrap;
    }
    /* Prima coloana e eticheta randului, nu o cifra: daca se poate rupe, tabelul incape
       de multe ori fara scroll orizontal. */
    .table-mobile-compact td:first-child,
    .table-mobile-compact th:first-child {
        white-space: normal;
    }

    /* ---------- Formulare ---------- */

    .form-group {
        margin-bottom: 10px;
    }
    label {
        margin-bottom: 2px;
        font-size: 13px;
    }
    /* 16px = pragul sub care iOS mareste automat pagina la focus. Doar pe campurile in
       care chiar se scrie: eticheta .file-browser e si ea .form-control, dar are
       inaltime fixa si textul ei lung s-ar taia la 16px. */
    input.form-control,
    select.form-control,
    textarea.form-control,
    .custom-select {
        font-size: 16px;
    }
    .input-group-text {
        font-size: 13px;
        padding: 5px 8px;
    }
    /* Butoanele principale de actiune, pe toata latimea: mai usor de nimerit cu degetul. */
    #simulate-loan-btn,
    #next-step-top {
        width: 100%;
        float: none;
    }
    .capture-options .btn[data-role="main"] {
        width: 100%;
        white-space: normal;
    }
    .legal-note {
        font-size: 13px;
        padding: 10px 12px;
    }
    .legal-note ul {
        padding-left: 18px;
        margin-bottom: 0;
    }

    /* Tabelele simularii raman tabele (cifre pe coloane), doar mai dense. */
    #simulation-area .table {
        font-size: 12px;
    }
    #simulation-area .table td,
    #simulation-area .table th {
        padding: 4px 5px;
    }
    /* Doar scadentarul: e in .responsive-table-wrapper, deci poate fi mai lat decat
       ecranul fara sa strice pagina. Tabelul-rezumat nu are wrapper, acolo textul
       trebuie sa se poata rupe. */
    #simulation-area .responsive-table-wrapper .table td,
    #simulation-area .responsive-table-wrapper .table th {
        white-space: nowrap;
    }

    /* ---------- Bara de navigare a pasului, lipita jos ---------- */

    .loan-step-hr {
        display: none;
    }
    .loan-step-actions {
        flex-wrap: wrap;
        gap: 6px;
        /* <hr>-ul de dinainte e ascuns pe mobil; separarea o face bara insasi. */
        border-top: 1px solid #e9edf0;
        margin-top: 8px;
        padding-top: 10px;
    }
    .loan-step-actions > div {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
    }
    /* Lipita jos doar in pasii cu "Continua" (1-3): acolo butonul e actiunea principala
       si pasul e lung. In pasii 4-5 bara are doar "Inapoi", deci ar acoperi degeaba
       chat-ul si tabelele pana la capatul paginii. */
    .loan-step-actions-sticky {
        position: sticky;
        bottom: 0;
        z-index: 900; /* sub .topbar (995) si sub modale (1050), peste continut */
        background-color: #ffffff;
        border-top: 1px solid #e9edf0;
        /* pana la marginile .card-body (padding 12px 8px pe mobil) */
        margin: 8px -8px -12px;
        padding: 8px 8px calc(8px + env(safe-area-inset-bottom, 0px));
    }
    /* "Reveniti la <pasul>" poate fi lung: are voie sa se rupa, nu sa largeasca bara. */
    #return-back-to-step {
        white-space: normal;
        text-align: left;
    }

    /* ---------- Previzualizarea documentului pe tot ecranul ---------- */

    #document-preview .modal-dialog {
        margin: 0;
        width: 100%;
        max-width: 100%;
        height: 100%;
    }
    #document-preview .modal-content {
        height: 100vh;
        height: 100dvh;
        border-radius: 0;
    }
    #document-preview .modal-header,
    #document-preview .modal-footer {
        padding: 8px 12px;
        flex-shrink: 0;
    }
    #document-preview .modal-title {
        font-size: 15px;
    }
    #document-preview .modal-body {
        flex: 1 1 auto;
        min-height: 0;
    }
}

/* Ecrane foarte inguste (<= 575.98px) */
@media (max-width: 575.98px) {
    .nav-process.nav-process-circle .nav-item {
        padding: 0 2px;
    }
    .table-mobile-cards tbody td::before {
        flex-basis: 45%;
        max-width: 45%;
    }
    .header-title {
        font-size: 17px;
    }
}