/* Podgląd pliku na pełnym ekranie - wspólny dla menedżera plików i galerii przy
   formularzach (`core/file_viewer.html`, `js/file_viewer.js`). Klasy mają przedrostek
   `file-viewer-`, a nie `fm-`, właśnie dlatego, że to już nie jest część jednego
   ekranu. */

/* --- podgląd na pełnym ekranie ------------------------------------------------ */

.file-viewer {
    position: fixed;
    inset: 0;
    z-index: 1080;                  /* nad oknem modalnym Bootstrapa nic nie stoi */
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(20, 22, 28, .92);
}

/* Strona pod spodem nie ma się przewijać, kiedy przewijamy dokument w podglądzie */
body.file-viewer-open { overflow: hidden; }

.file-viewer-bar {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .5rem .75rem;
    background: rgba(0, 0, 0, .35);
    color: #fff;
    font-size: .875rem;
}

.file-viewer-name { font-weight: 600; }
.file-viewer-position { color: rgba(255, 255, 255, .7); font-size: .8125rem; }
.file-viewer-tools { margin-left: auto; display: flex; gap: .25rem; }

/* Obszar dokumentu przewija się w PIONIE: wielostronicowy PDF rysujemy w całości,
   jedna strona pod drugą */
.file-viewer-stage {
    max-width: 92vw;
    max-height: calc(100vh - 3rem);
    margin-top: 2.5rem;
    overflow: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .5rem;
}

.file-viewer-page,
.file-viewer-image {
    max-width: 100%;
    background: #fff;
    box-shadow: 0 .25rem 1rem rgba(0, 0, 0, .35);
}

.file-viewer-image { max-height: calc(100vh - 4rem); object-fit: contain; }

.file-viewer-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 46px;
    height: 46px;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .12);
    color: #fff;
    font-size: 1.5rem;
    line-height: 1;
}
.file-viewer-nav:hover { background: rgba(255, 255, 255, .25); }
.file-viewer-prev { left: 1rem; }
.file-viewer-next { right: 1rem; }

.file-viewer-fallback {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
    padding: 3rem;
    color: #fff;
    text-align: center;
}
.file-viewer-fallback i { font-size: 3rem; opacity: .6; }


/* --- pole pliku z podglądem (`apps/core/file_preview.py`) --------------------- */

/* Wgrany plik nad polem wyboru: nazwa otwiera podgląd, ikona obok pobiera.
   Jeden wiersz, bo pole ma zostać polem formularza, a nie urosnąć w kartę. */
.fp-current {
    display: flex;
    align-items: center;
    gap: .4rem;
    flex-wrap: wrap;
    font-size: .8125rem;
}

.fp-link {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    min-width: 0;
    color: var(--bs-body-color);
    text-decoration: none;
    cursor: zoom-in;
}
.fp-link:hover { color: var(--bs-primary); text-decoration: underline; }

/* Nazwy plików ze skanera bywają dłuższe niż pole - przycinamy zamiast rozpychać */
.fp-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 22rem;
}

.fp-download { color: var(--bs-secondary-color, #74788d); }
.fp-download:hover { color: var(--bs-primary); }

.fp-clear { margin-left: auto; font-size: .75rem; }

/* Kolumna z plikiem w tabelach (`datatables_columns_file`).

   Ikona zamiast adresu: kolumna „Dowód zakupu" niosła całą ścieżkę do pliku, więc
   rozpychała tabelę i nic nie mówiła. Klik otwiera podgląd na miejscu, dzięki czemu
   skan porównuje się z kwotą w tym samym wierszu. */
.dt-file {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    line-height: 1;
}

.dt-file .mdi {
    /* Wielkość na oko wiersza tabeli: ikona ma być widoczna, ale nie może rozpychać
       wysokości wiersza, bo przy pięćdziesięciu kosztach naraz to cała strona więcej */
    font-size: 1.35rem;
    transition: transform .12s ease;
}

.dt-file:hover .mdi {
    transform: scale(1.15);
}
