/* ==========================================================================
   Silnoręcy — motyw panelu (czerń + magenta, wzorowany na silnorecy.pl)
   Nadpisuje zmienne Pico v2. Zero zależności zewnętrznych.
   ========================================================================== */

:root {
    /* --- paleta marki (magenta pobrana ze strony: rgb(227,47,116)) --- */
    --sr-magenta: #e32f74;
    --sr-magenta-jasna: #f4508e;
    --sr-magenta-mgla: rgba(227, 47, 116, 0.12);

    /* --- czernie: nie czysty #000, bo męczy przy długim czytaniu tabel --- */
    --sr-tlo: #0b0b0d;
    --sr-powierzchnia: #141418;
    --sr-powierzchnia-2: #1c1c22;
    --sr-obwodka: #2a2a33;
    --sr-obwodka-mocna: #3a3a46;

    --sr-tekst: #f4f4f6;
    --sr-tekst-cichy: #9a9aa6;

    --sr-zielony: #3fbf7f;
    --sr-czerwony: #ff5c6c;
    --sr-zolty: #f5a623;

    --sr-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --sr-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
}

/* --- mapowanie na zmienne Pico ------------------------------------------
   Selektor MUSI być mocniejszy niż `:root:not([data-theme])`, którym Pico
   definiuje swój ciemny motyw — samo `:root` przegrywa specyficznością
   i zostają niebieskie przyciski Pico. Stąd `data-theme="dark"` na <html>
   i selektor z atrybutem.                                                  */
:root[data-theme="dark"] {
    color-scheme: dark;

    --pico-font-family: var(--sr-sans);
    --pico-border-radius: 0.5rem;
    --pico-line-height: 1.55;

    --pico-background-color: var(--sr-tlo);
    --pico-color: var(--sr-tekst);
    --pico-h1-color: #fff;
    --pico-h2-color: #fff;
    --pico-h3-color: var(--sr-tekst);
    --pico-h4-color: var(--sr-tekst);
    --pico-h5-color: var(--sr-tekst);
    --pico-h6-color: var(--sr-tekst-cichy);

    --pico-muted-color: var(--sr-tekst-cichy);
    --pico-muted-border-color: var(--sr-obwodka);

    --pico-primary: var(--sr-magenta);
    --pico-primary-background: var(--sr-magenta);
    --pico-primary-border: var(--sr-magenta);
    --pico-primary-underline: var(--sr-magenta-mgla);
    --pico-primary-hover: var(--sr-magenta-jasna);
    --pico-primary-hover-background: var(--sr-magenta-jasna);
    --pico-primary-hover-border: var(--sr-magenta-jasna);
    --pico-primary-focus: rgba(227, 47, 116, 0.4);
    --pico-primary-inverse: #fff;

    --pico-secondary: var(--sr-tekst-cichy);
    --pico-secondary-background: var(--sr-powierzchnia-2);
    --pico-secondary-border: var(--sr-obwodka-mocna);
    --pico-secondary-hover: var(--sr-tekst);
    --pico-secondary-hover-background: var(--sr-obwodka);
    --pico-secondary-inverse: #fff;

    --pico-card-background-color: var(--sr-powierzchnia);
    --pico-card-border-color: var(--sr-obwodka);
    --pico-card-sectioning-background-color: var(--sr-powierzchnia-2);

    --pico-form-element-background-color: var(--sr-powierzchnia-2);
    --pico-form-element-border-color: var(--sr-obwodka-mocna);
    --pico-form-element-color: var(--sr-tekst);
    --pico-form-element-placeholder-color: var(--sr-tekst-cichy);
    --pico-form-element-active-background-color: var(--sr-powierzchnia-2);
    --pico-form-element-active-border-color: var(--sr-magenta);
    --pico-form-element-focus-color: var(--sr-magenta);

    --pico-table-border-color: var(--sr-obwodka);
    --pico-table-row-stripped-background-color: rgba(255, 255, 255, 0.02);

    --pico-ins-color: var(--sr-zielony);
    --pico-del-color: var(--sr-czerwony);
    --pico-mark-background-color: var(--sr-magenta-mgla);
    --pico-mark-color: var(--sr-tekst);

    --pico-code-background-color: var(--sr-powierzchnia-2);
    --pico-code-color: var(--sr-tekst-cichy);
    --pico-blockquote-border-color: var(--sr-magenta);
}

/* Pico skaluje bazowy font-size w górę na szerokich ekranach (do 125%).
   Dla panelu z gęstymi tabelami to strata miejsca — kolumny zaczynają się
   zawijać i włącza się przewijanie w poziomie. Przypinamy 16px, żeby
   wymiary w rem były przewidywalne. */
html {
    font-size: 100%;
}

body {
    background: var(--sr-tlo);
    min-height: 100vh;
}

/* ==========================================================================
   Marka
   ========================================================================== */
.brand {
    font-weight: 800;
    font-size: 1.15rem;
    letter-spacing: -0.02em;
    color: #fff;
    text-decoration: none;
    white-space: nowrap;
}

.brand:hover {
    color: #fff;
}

.brand-tld {
    color: var(--sr-magenta);
}

/* ==========================================================================
   Układ: menu boczne + treść
   ========================================================================== */
.uklad {
    display: flex;
    min-height: 100vh;
    align-items: stretch;
}

.menu {
    /* w px, nie w rem — szerokość menu nie może zależeć od skalowania fontu */
    flex: 0 0 240px;
    width: 240px;
    background: #000;
    border-right: 1px solid var(--sr-obwodka);
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    height: 100vh;
    overflow-y: auto;
}

.menu-marka {
    padding: 1.1rem 1.25rem;
    border-bottom: 1px solid var(--sr-obwodka);
}

.menu-nawigacja {
    flex: 1 1 auto;
    padding: 0.75rem 0;
}

/* nagłówek kategorii */
.menu-grupa {
    padding: 1rem 1.25rem 0.35rem;
    font-family: var(--sr-mono);
    font-size: 0.63rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--sr-tekst-cichy);
}

.menu-nawigacja > .menu-grupa:first-child {
    padding-top: 0.25rem;
}

/* Pozycje menu jako wypukłe przyciski 3D.
   Wrażenie głębi robią trzy warstwy naraz: gradient (światło pada z góry),
   wewnętrzna jasna kreska u szczytu (odblask krawędzi) i ciemny cień pod
   spodem (grubość klawisza). Bez któregokolwiek z nich przycisk wygląda
   płasko. */
.menu-link {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.25rem 0.75rem;
    padding: 0.5rem 0.85rem;
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--sr-tekst-cichy);
    text-decoration: none;
    border: 1px solid var(--sr-obwodka-mocna);
    border-radius: 0.45rem;
    background: linear-gradient(180deg, #23232b 0%, #17171c 100%);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.07),
        0 2px 0 #08080a,
        0 3px 4px rgba(0, 0, 0, 0.45);
    transition: transform 0.1s ease, box-shadow 0.1s ease, color 0.12s ease;
}

.menu-link:hover {
    color: #fff;
    text-decoration: none;
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.1),
        0 3px 0 #08080a,
        0 5px 7px rgba(0, 0, 0, 0.5);
}

/* wciśnięcie — przycisk siada na swoim cieniu */
.menu-link:active {
    transform: translateY(2px);
    box-shadow:
        inset 0 2px 4px rgba(0, 0, 0, 0.5),
        0 0 0 #08080a;
}

.menu-aktywna,
.menu-aktywna:hover {
    color: #fff;
    font-weight: 600;
    border-color: var(--sr-magenta);
    background: linear-gradient(180deg, var(--sr-magenta-jasna) 0%, var(--sr-magenta) 100%);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.25),
        0 2px 0 #7a1440,
        0 3px 6px rgba(227, 47, 116, 0.35);
}

.menu-aktywna:hover {
    transform: translateY(-1px);
}

/* Panel administracyjny w stopce — ten sam klawisz, żeby stopka nie odstawała */
.menu-admin {
    display: block;
    margin-bottom: 0.6rem;
    padding: 0.4rem 0.85rem;
    font-size: 0.82rem;
    text-align: center;
    color: var(--sr-tekst-cichy);
    text-decoration: none;
    border: 1px solid var(--sr-obwodka-mocna);
    border-radius: 0.45rem;
    background: linear-gradient(180deg, #23232b 0%, #17171c 100%);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.07),
        0 2px 0 #08080a;
}

.menu-admin:hover {
    color: #fff;
    text-decoration: none;
}

/* stopka menu: konto + wylogowanie */
.menu-stopka {
    border-top: 1px solid var(--sr-obwodka);
    padding: 0.9rem 1.25rem;
}

.konto-login {
    display: block;
    color: var(--sr-tekst);
    font-weight: 600;
    font-size: 0.85rem;
    line-height: 1.2;
}

.konto-rola {
    display: block;
    font-family: var(--sr-mono);
    font-size: 0.63rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--sr-magenta);
    margin-bottom: 0.6rem;
}

.menu-stopka form {
    margin: 0;
}

.menu-stopka button {
    margin: 0;
    padding: 0.35rem 0.7rem;
    font-size: 0.78rem;
    width: 100%;
}

/* prawa kolumna */
.tresc {
    flex: 1 1 auto;
    min-width: 0;
}

/* pasek mobilny z hamburgerem — na desktopie ukryty */
.pasek-mobilny {
    display: none;
    align-items: center;
    gap: 0.75rem;
    background: #000;
    border-bottom: 1px solid var(--sr-obwodka);
    padding: 0.6rem 1rem;
}

.hamburger {
    cursor: pointer;
    font-size: 1.4rem;
    line-height: 1;
    color: var(--sr-tekst);
    padding: 0.1rem 0.4rem;
    border: 1px solid var(--sr-obwodka-mocna);
    border-radius: var(--pico-border-radius);
    user-select: none;
}

.zaslona {
    display: none;
}

/* ==========================================================================
   Nagłówek sekcji
   ========================================================================== */
main.container {
    padding-block: 1.5rem 3rem;
}

/* Wewnątrz układu z menu treść wypełnia prawą kolumnę — bez auto-marginesów
   Pico, bo centrowałyby ją względem całego okna, licząc też szerokość menu.
   POZA układem (logowanie — niezalogowany nie ma menu) auto-marginesy Pico
   muszą zostać, inaczej formularz przykleja się do lewej krawędzi. */
.uklad main.container {
    margin-inline: 0;
    max-width: 78rem;
    padding-inline: 1.75rem;
}

.naglowek-sekcji {
    margin-bottom: 1.25rem;
}

.naglowek-sekcji h1 {
    margin-bottom: 0.15rem;
    font-size: 1.6rem;
    letter-spacing: -0.02em;
}

.naglowek-sekcji p {
    margin: 0;
    color: var(--sr-tekst-cichy);
    font-size: 0.9rem;
}

.etykieta {
    font-family: var(--sr-mono);
    font-size: 0.68rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--sr-magenta);
}

/* ==========================================================================
   Kafelki na pulpicie
   ========================================================================== */
.kafelki {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 0.9rem;
    margin-bottom: 2rem;
}

.kafelek {
    background: var(--sr-powierzchnia);
    border: 1px solid var(--sr-obwodka);
    border-radius: var(--pico-border-radius);
    padding: 1rem;
    text-decoration: none;
    display: block;
    transition: border-color 0.12s ease, transform 0.12s ease;
}

a.kafelek:hover {
    border-color: var(--sr-magenta);
    text-decoration: none;
    transform: translateY(-1px);
}

.kafelek-liczba {
    font-size: 1.9rem;
    font-weight: 800;
    line-height: 1.1;
    color: #fff;
    letter-spacing: -0.02em;
}

.kafelek-opis {
    color: var(--sr-tekst-cichy);
    font-size: 0.85rem;
    margin-top: 0.2rem;
}

/* ==========================================================================
   Tabele
   ========================================================================== */
.tabela-otoczka {
    overflow-x: auto;
    border: 1px solid var(--sr-obwodka);
    border-radius: var(--pico-border-radius);
    background: var(--sr-powierzchnia);
}

.tabela-otoczka table {
    margin: 0;
}

table thead th {
    font-family: var(--sr-mono);
    font-size: 0.68rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sr-tekst-cichy);
    font-weight: 600;
    white-space: nowrap;
}

table td {
    vertical-align: middle;
}

.kwota {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    font-weight: 600;
}

/* ==========================================================================
   Znaczniki statusów
   ========================================================================== */
.znacznik {
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-family: var(--sr-mono);
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border: 1px solid var(--sr-obwodka-mocna);
    color: var(--sr-tekst-cichy);
    white-space: nowrap;
}

.znacznik-ok {
    border-color: var(--sr-zielony);
    color: var(--sr-zielony);
}

.znacznik-uwaga {
    border-color: var(--sr-zolty);
    color: var(--sr-zolty);
}

.znacznik-zle {
    border-color: var(--sr-czerwony);
    color: var(--sr-czerwony);
}

.znacznik-marka {
    border-color: var(--sr-magenta);
    color: var(--sr-magenta);
    background: var(--sr-magenta-mgla);
}

/* pusty stan listy */
.pusto {
    text-align: center;
    padding: 2.5rem 1rem;
    color: var(--sr-tekst-cichy);
    border: 1px dashed var(--sr-obwodka-mocna);
    border-radius: var(--pico-border-radius);
}

/* ==========================================================================
   Komunikaty Django messages
   ========================================================================== */
.komunikaty article {
    border-left: 3px solid var(--sr-magenta);
    padding: 0.7rem 1rem;
    margin-bottom: 0.6rem;
}

.komunikaty article.error {
    border-left-color: var(--sr-czerwony);
}

.komunikaty article.success {
    border-left-color: var(--sr-zielony);
}

.komunikaty article.warning {
    border-left-color: var(--sr-zolty);
}

/* ==========================================================================
   Komponenty przeniesione ze starego app.css
   ========================================================================== */
.badge {
    background: var(--sr-magenta);
    color: #fff;
    border-radius: 1rem;
    padding: 0 0.5rem;
    font-size: 0.75rem;
    font-weight: 700;
}

/* Dyspozycyjność — siatka kalendarza (mobile-first: 7 kolumn mieści się od razu na wąskim ekranie) */
.calendar-nav ul {
    margin-bottom: 0;
}

.calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 0.25rem;
    margin-block: 1rem;
}

.calendar-weekday {
    text-align: center;
    font-family: var(--sr-mono);
    font-size: 0.68rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--sr-tekst-cichy);
}

.day-empty {
    visibility: hidden;
}

.day-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.15rem;
    padding: 0.5rem 0.1rem;
    line-height: 1.1;
    font-size: 0.8rem;
    cursor: pointer;
    border: 1px solid var(--sr-obwodka-mocna);
    border-radius: var(--pico-border-radius);
    background: var(--sr-powierzchnia);
    color: var(--sr-tekst);
}

.day-btn:hover {
    border-color: var(--sr-magenta);
}

.day-btn .day-num {
    font-weight: 700;
}

.day-btn .day-label {
    font-size: 0.65rem;
}

.day-btn-dostepny {
    border-color: var(--sr-zielony);
    color: var(--sr-zielony);
}

.day-btn-niedostepny {
    border-color: var(--sr-czerwony);
    color: var(--sr-czerwony);
}

/* Powiadomienia — wyróżnienie nieprzeczytanych (tylko przy tym wejściu na listę) */
.notification-unread {
    border-left: 0.25rem solid var(--sr-magenta);
}

.notification-date {
    float: right;
    color: var(--sr-tekst-cichy);
    font-size: 0.8rem;
}

/* ==========================================================================
   Logowanie
   ========================================================================== */
.logowanie {
    max-width: 25rem;
    margin: 3rem auto;
}

.logowanie-marka {
    display: block;
    text-align: center;
    font-size: 1.7rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #fff;
    margin-bottom: 1.5rem;
}

/* ==========================================================================
   Telefon i tablet: menu chowa się w szufladzie
   Przełącznik to ukryty checkbox + <label> — bez JS, bo ekipa wchodzi
   z telefonów i nawigacja nie może zależeć od skryptu.
   ========================================================================== */
@media (max-width: 900px) {
    .pasek-mobilny {
        display: flex;
    }

    .menu {
        position: fixed;
        top: 0;
        left: 0;
        z-index: 40;
        transform: translateX(-100%);
        transition: transform 0.18s ease;
        box-shadow: 0 0 2rem rgba(0, 0, 0, 0.6);
    }

    #menu-przelacznik:checked ~ .uklad .menu {
        transform: translateX(0);
    }

    /* kliknięcie w tło zamyka szufladę */
    #menu-przelacznik:checked ~ .uklad .zaslona {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 39;
        background: rgba(0, 0, 0, 0.6);
    }

    main.container {
        padding-inline: 1rem;
    }
}

@media (max-width: 480px) {
    .naglowek-sekcji h1 {
        font-size: 1.35rem;
    }

    main.container {
        padding-block: 1.25rem 2.5rem;
    }
}

/* ==========================================================================
   Wykres kołowy udziału klientów (czysty SVG, bez bibliotek)
   ========================================================================== */
.wykres-kolowy {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2rem;
    background: var(--sr-powierzchnia);
    border: 1px solid var(--sr-obwodka);
    border-radius: var(--pico-border-radius);
    padding: 1.25rem;
    margin-block: 0.5rem 2rem;
}

.wykres-kolowy svg {
    flex: 0 0 200px;
    width: 200px;
    height: 200px;
}

.legenda {
    flex: 1 1 16rem;
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.4rem;
}

.legenda li {
    display: grid;
    grid-template-columns: auto 1fr auto auto;
    align-items: center;
    gap: 0.6rem;
    font-size: 0.9rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid var(--sr-obwodka);
}

.legenda li:last-child {
    border-bottom: none;
}

.legenda-kropka {
    width: 0.8rem;
    height: 0.8rem;
    border-radius: 3px;
}

.legenda-nazwa {
    color: var(--sr-tekst);
    min-width: 0;
    overflow-wrap: anywhere;
}

.legenda-procent {
    font-weight: 700;
    color: #fff;
    font-variant-numeric: tabular-nums;
}

.legenda-kwota {
    color: var(--sr-tekst-cichy);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* ==========================================================================
   Formularze — te same karty i etykiety co reszta panelu
   ========================================================================== */
.formularz {
    max-width: 46rem;
}

.karta-formularza {
    background: var(--sr-powierzchnia);
    border: 1px solid var(--sr-obwodka);
    border-radius: var(--pico-border-radius);
    padding: 1.25rem;
    margin-bottom: 1rem;
}

.karta-formularza label {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--sr-tekst);
}

.pola-obok {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
    gap: 0 1rem;
}

.podpowiedz {
    display: block;
    color: var(--sr-tekst-cichy);
    font-size: 0.78rem;
    margin-top: -0.6rem;
    margin-bottom: 0.9rem;
}

.blad {
    display: block;
    color: var(--sr-czerwony);
    font-size: 0.78rem;
    margin-top: -0.6rem;
    margin-bottom: 0.9rem;
}

/* Checkboxy profesji w rzędzie, nie jedna pod drugą.
   Django renderuje CheckboxSelectMultiple jako zagnieżdżone <div>, nie <ul> —
   stąd selektor na bezpośrednie dziecko, a nie na listę. */
.profesje-wybor > div {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.5rem;
}

.profesje-wybor > div > div {
    margin: 0;
}

.profesje-wybor label {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
    padding: 0.3rem 0.7rem;
    font-size: 0.85rem;
    font-weight: 500;
    border: 1px solid var(--sr-obwodka-mocna);
    border-radius: 999px;
    background: var(--sr-powierzchnia-2);
    cursor: pointer;
}

.profesje-wybor label:hover {
    border-color: var(--sr-magenta);
}

.profesje-wybor input[type="checkbox"] {
    margin: 0;
}

/* dwie drogi obsadzenia zmiany: zaproszenie albo tablica jobów */
.dwie-drogi {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    background: var(--sr-powierzchnia);
    border: 1px solid var(--sr-obwodka);
    border-left: 3px solid var(--sr-magenta);
    border-radius: var(--pico-border-radius);
    padding: 1rem 1.25rem;
    margin-bottom: 2rem;
}

.dwie-drogi p {
    flex: 1 1 22rem;
    margin: 0;
    font-size: 0.9rem;
    color: var(--sr-tekst-cichy);
}

.dwie-drogi form {
    margin: 0;
}

.dwie-drogi button {
    margin: 0;
    white-space: nowrap;
}

/* przycisk akcji nad tabelą (np. Nowe zlecenie) */
.naglowek-z-akcja {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.naglowek-z-akcja a[role="button"] {
    margin: 0;
    white-space: nowrap;
}

/* formularz dodatku w wierszu tabeli zamknięcia — pola obok siebie, nie pod */
.dodatek-form {
    display: flex;
    gap: 0.35rem;
    align-items: center;
    margin: 0;
}

.dodatek-form input {
    margin: 0;
    padding: 0.3rem 0.5rem;
    font-size: 0.85rem;
    height: auto;
}

.dodatek-form input[name="dodatek"] {
    width: 5.5rem;
}

.dodatek-form input[name="dodatek_opis"] {
    width: 9rem;
}

.dodatek-form button {
    margin: 0;
    padding: 0.3rem 0.6rem;
    font-size: 0.8rem;
    white-space: nowrap;
}

/* ==========================================================================
   Tryb demonstracyjny — wejście bez hasła
   ========================================================================== */
.demo-pasek {
    max-width: 46rem;
    margin: 0 auto 1rem;
    padding: 0.8rem 1.1rem;
    border: 1px solid var(--sr-magenta);
    border-left-width: 3px;
    border-radius: var(--pico-border-radius);
    background: var(--sr-magenta-mgla);
    font-size: 0.88rem;
    color: var(--sr-tekst);
}

.demo-pasek strong {
    display: block;
    color: #fff;
    margin-bottom: 0.15rem;
}

.demo-konta {
    max-width: 46rem;
    margin: 0 auto 2rem;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
    gap: 0.5rem;
}

.demo-konta form {
    margin: 0;
}

/* ten sam wypukły klawisz co w menu — spójność panelu */
.demo-konto {
    width: 100%;
    margin: 0;
    padding: 0.55rem 0.85rem;
    text-align: left;
    line-height: 1.25;
    color: var(--sr-tekst);
    border: 1px solid var(--sr-obwodka-mocna);
    border-radius: 0.45rem;
    background: linear-gradient(180deg, #23232b 0%, #17171c 100%);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.07),
        0 2px 0 #08080a,
        0 3px 4px rgba(0, 0, 0, 0.45);
    transition: transform 0.1s ease, box-shadow 0.1s ease, border-color 0.12s ease;
}

.demo-konto:hover {
    border-color: var(--sr-magenta);
    transform: translateY(-1px);
}

.demo-konto:active {
    transform: translateY(2px);
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5);
}

.demo-konto-imie {
    display: block;
    font-weight: 600;
    font-size: 0.9rem;
    color: #fff;
}

.demo-konto-rola {
    display: block;
    font-family: var(--sr-mono);
    font-size: 0.63rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sr-magenta);
}

/* karta z danymi kontaktowymi — odsłania się dopiero po dodaniu do zmiany */
.kontakt-karta {
    background: var(--sr-powierzchnia);
    border: 1px solid var(--sr-obwodka);
    border-left: 3px solid var(--sr-magenta);
    border-radius: var(--pico-border-radius);
    padding: 1rem 1.25rem;
    margin-block: 1.5rem;
    max-width: 26rem;
}

.kontakt-osoba {
    margin: 0.3rem 0 0.1rem;
    font-weight: 600;
    color: #fff;
}

.kontakt-telefon {
    margin: 0 0 0.5rem;
    font-family: var(--sr-mono);
    font-size: 1.15rem;
}

/* --- trzy postacie do wyboru w demo --- */
.demo-postac-form {
    margin: 0 0 0.5rem;
}

.demo-postac {
    width: 100%;
    margin: 0;
    padding: 0.7rem 0.95rem;
    text-align: left;
    line-height: 1.35;
    color: var(--sr-tekst);
    border: 1px solid var(--sr-obwodka-mocna);
    border-radius: 0.45rem;
    background: linear-gradient(180deg, #23232b 0%, #17171c 100%);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.07),
        0 2px 0 #08080a,
        0 3px 4px rgba(0, 0, 0, 0.45);
    transition: transform 0.1s ease, border-color 0.12s ease;
}

.demo-postac:hover {
    border-color: var(--sr-magenta);
    transform: translateY(-1px);
}

.demo-postac:active {
    transform: translateY(2px);
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5);
}

.demo-postac-rola {
    display: block;
    font-family: var(--sr-mono);
    font-size: 0.65rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--sr-magenta);
}

.demo-postac-imie {
    display: block;
    font-weight: 700;
    font-size: 1rem;
    color: #fff;
}

.demo-postac-opis {
    display: block;
    font-size: 0.78rem;
    color: var(--sr-tekst-cichy);
}

/* --- pobieranie danych po NIP --- */
.nip-wiersz {
    display: flex;
    gap: 0.6rem;
    align-items: flex-end;
}

.nip-pole {
    flex: 1 1 auto;
}

.nip-wiersz button {
    margin: 0 0 1rem;
    white-space: nowrap;
}

.nip-sugestia {
    border: 1px solid var(--sr-magenta);
    border-left-width: 3px;
    border-radius: var(--pico-border-radius);
    background: var(--sr-magenta-mgla);
    padding: 0.8rem 1rem;
    margin-bottom: 1rem;
    font-size: 0.85rem;
}

.nip-sugestia strong {
    display: block;
    color: #fff;
    margin-bottom: 0.35rem;
}

.nip-sugestia ul {
    margin: 0;
    padding-left: 1.1rem;
    color: var(--sr-tekst-cichy);
}

/* karta informacyjna na ekranie zmiany pracownika */
.karta-info {
    background: var(--sr-powierzchnia);
    border: 1px solid var(--sr-obwodka);
    border-radius: var(--pico-border-radius);
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
}

.karta-info-tresc {
    margin: 0.35rem 0 0;
    color: var(--sr-tekst);
}

.karta-info a[role="button"] {
    margin: 0.8rem 0 0;
    width: auto;
}

/* ==========================================================================
   Portfel — karta zamiast tabelki z liczbami
   ========================================================================== */
.karta-portfela {
    position: relative;
    max-width: 27rem;
    padding: 1.35rem 1.5rem 1.25rem;
    margin-bottom: 2rem;
    border: 1px solid var(--sr-obwodka-mocna);
    border-radius: 1rem;
    overflow: hidden;
    /* poświata magenty w rogu + skos gradientu = wrażenie karty płatniczej,
       a nie kolejnego prostokąta z liczbą */
    background:
        radial-gradient(120% 130% at 100% 0%, rgba(227, 47, 116, 0.32) 0%, rgba(227, 47, 116, 0) 55%),
        linear-gradient(155deg, #1e1e25 0%, #0f0f13 100%);
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.45), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

.karta-portfela-gora {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.portfel-godlo {
    width: 2.4rem;
    height: 2.4rem;
    flex: 0 0 auto;
    filter: drop-shadow(0 3px 6px rgba(227, 47, 116, 0.35));
}

.karta-portfela-marka {
    font-weight: 700;
    font-size: 0.95rem;
    letter-spacing: -0.01em;
    color: #fff;
}

.karta-portfela-saldo {
    margin: 1.1rem 0 0;
    font-size: 2.5rem;
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -0.03em;
    color: #fff;
}

.karta-portfela-podpis {
    margin: 0.1rem 0 0;
    font-family: var(--sr-mono);
    font-size: 0.7rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--sr-tekst-cichy);
}

.karta-portfela-wlasciciel {
    margin: 1.1rem 0 0;
    font-family: var(--sr-mono);
    font-size: 0.8rem;
    letter-spacing: 0.06em;
    color: var(--sr-tekst);
}

.naglowek-historii {
    font-size: 1.05rem;
    margin-bottom: 0.6rem;
}

.operacja-opis {
    display: block;
}

.operacja-szczegol {
    display: block;
    font-size: 0.78rem;
    color: var(--sr-tekst-cichy);
}

.kwota-plus {
    color: var(--sr-zielony);
}

.kwota-minus {
    color: var(--sr-tekst-cichy);
}

.akcje-wiersza a + a {
    margin-left: 0.9rem;
}
