/**
 * Vzhled hráčské sekce (/hrac/).
 *
 * Sekce stojí na stejné šabloně jako pokuty (www/adminhmd-1.0.0/assets/css/style.css) -
 * levý panel, horní lišta a obsah. Tenhle soubor se načítá až za ní a jen přebarvuje
 * její proměnné na klubové barvy (tmavě modrošedá + žlutý akcent, stejně jako detail
 * hráče v player-detail.css), aby se hráčská sekce od pokut na první pohled odlišila.
 * Do adminhmd/style.css se proto nesahá - používají ji i pokuty.
 *
 * Druhá část souboru jsou komponenty .pz-* (karta, dlaždice, formulář, hlášky), které
 * používají šablony hráčské sekce - App\PlayerzoneModule\...\templates.
 */


/* ==========================================================================
   1. Klubové barvy šablony
   ========================================================================== */

:root
{
    /* Levý panel v klubové modrošedé místo výchozí černomodré */
    --admin-sidebar: #2c334c;
    --admin-sidebar-soft: #3d4763;

    /* Odkazy, zaškrtnutí a rámečky při psaní do formuláře */
    --admin-primary: #3d4763;
    --admin-primary-dark: #2c334c;
    --admin-ring: 0 0 0 4px rgba(232, 197, 28, 0.25);

    /* Vlastní proměnné hráčské sekce - žlutý akcent klubu */
    --pz-accent: #E8C51C;
    --pz-accent-dark: #c9a913;
    --pz-on-accent: #20263a;
    --pz-navy: #2c334c;
}

/* Šablona se sama přepíná do tmavého režimu podle nastavení systému
   (www/adminhmd-1.0.0/assets/js/main.js), klubové barvy proto musí platit i tam */
html[data-theme="dark"]
{
    --admin-sidebar: #20263a;
    --admin-sidebar-soft: #2c334c;

    --admin-primary: #E8C51C;
    --admin-primary-dark: #c9a913;
    --admin-ring: 0 0 0 4px rgba(232, 197, 28, 0.22);

    --pz-accent: #E8C51C;
    --pz-accent-dark: #c9a913;
    --pz-on-accent: #20263a;
    --pz-navy: #20263a;
}


/* ==========================================================================
   2. Přihlašovací stránky - bez levého menu
   ========================================================================== */

/* Na přihlášení (zadání e-mailu a kódu) se levý panel vůbec nevykresluje - třídu
   nastavuje App\PlayerzoneModule\templates\@layout.latte podle $isNarrow, který si
   zapínají presentery přihlášení. Obsah proto nesmí být odsazený o šířku panelu. */
.pz-no-sidebar .admin-main
{
    margin-left: 0;
}

/* Jediný formulář uprostřed obrazovky, ne přes celou šířku */
.pz-no-sidebar .dashboard-content > .container-fluid
{
    max-width: 560px;
    margin-inline: auto;
}


/* Horní lišta - vpravo na konci odchod zpět na web klubu */
.navbar-actions
{
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.pz-back-link
{
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.5rem 0.9rem;
    border: 1px solid var(--admin-border);
    border-radius: 8px;
    background: var(--admin-surface);
    color: var(--admin-text);
    font-weight: 600;
    white-space: nowrap;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.pz-back-link:hover,
.pz-back-link:focus
{
    border-color: var(--pz-accent);
    background: var(--pz-accent);
    color: var(--pz-on-accent);
}


/* ==========================================================================
   3. Levý panel - klubové doladění
   ========================================================================== */

/* Logo klubu v hlavičce panelu */
.pz-brand-logo
{
    width: 42px;
    height: 42px;
    flex: 0 0 auto;
    border-radius: 8px;
    background: #ffffff;
    object-fit: contain;
    padding: 3px;
}

/* Aktivní položka menu se pozná podle žlutého proužku a ikony */
.sidebar-nav .nav-link.active
{
    box-shadow: inset 3px 0 0 var(--pz-accent);
}

.sidebar-nav .nav-link.active .nav-icon
{
    background: var(--pz-accent);
    color: var(--pz-on-accent);
}

/* Části sekce, které se teprve dodělávají - v menu jsou vidět, ale nikam nevedou */
.sidebar-nav .nav-link.pz-soon
{
    cursor: default;
    opacity: 0.55;
}

.sidebar-nav .nav-link.pz-soon:hover,
.sidebar-nav .nav-link.pz-soon:focus
{
    background: transparent;
    transform: none;
}

.sidebar-nav .pz-soon-badge
{
    margin-left: auto;
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.14);
    font-size: 0.66rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

/* Ve zúženém panelu (tlačítko v horní liště) se popisky schovávají, ať se neschovává
   jen text a štítek "připravujeme" nezůstal viset sám */
@media (min-width: 992px)
{
    body.sidebar-mini .sidebar-nav .pz-soon-badge
    {
        width: 0;
        opacity: 0;
        overflow: hidden;
        padding: 0;
    }
}


/* ==========================================================================
   4. Komponenty stránek hráčské sekce (.pz-*)
   ========================================================================== */

/* Karta - základní blok obsahu (uvítání, přihlašovací formulář) */
.pz-card
{
    padding: 1.75rem;
    border: 1px solid var(--admin-border);
    border-radius: 12px;
    background: var(--admin-surface);
    box-shadow: var(--admin-shadow-sm);
}

.pz-card + .pz-tiles
{
    margin-top: 1.5rem;
}

.pz-card h1
{
    margin: 0 0 0.75rem;
    font-size: 1.55rem;
    font-weight: 800;
}

/* Žlutě zvýrazněné slovo v nadpisu nebo v textu */
.pz-accent
{
    color: var(--pz-accent-dark);
}

html[data-theme="dark"] .pz-accent
{
    color: var(--pz-accent);
}

.pz-lead
{
    margin: 0;
    color: var(--admin-muted);
    line-height: 1.6;
}

.pz-note
{
    margin: 1.25rem 0 0;
    color: var(--admin-muted);
    font-size: 0.85rem;
    line-height: 1.55;
}

/* Formulářové pole */
.pz-field
{
    margin: 1.5rem 0 1.25rem;
}

.pz-field label
{
    display: block;
    margin-bottom: 0.4rem;
    font-weight: 600;
}

.pz-field input
{
    width: 100%;
    padding: 0.7rem 0.9rem;
    border: 1px solid var(--admin-border);
    border-radius: 8px;
    background: var(--admin-surface-soft);
    color: var(--admin-text);
    font-size: 1rem;
}

.pz-field input:focus
{
    outline: none;
    border-color: var(--pz-accent);
    box-shadow: var(--admin-ring);
}

/* Přihlašovací kód - jedno krátké pole na šest číslic */
.pz-field input.pz-code
{
    max-width: 220px;
    font-size: 1.6rem;
    font-weight: 700;
    letter-spacing: 0.35em;
    text-align: center;
}

/* Hlavní tlačítko */
.pz-btn
{
    padding: 0.7rem 1.6rem;
    border: none;
    border-radius: 8px;
    background: var(--pz-accent);
    color: var(--pz-on-accent);
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.15s ease;
}

.pz-btn:hover,
.pz-btn:focus
{
    background: var(--pz-accent-dark);
    transform: translateY(-1px);
}

/* Dvojice tlačítek prvního kroku přihlášení - na mobilu pod sebou */
.pz-actions
{
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.pz-actions .pz-btn
{
    flex: 1 1 14rem;
}

/* Vedlejší tlačítko - stejný tvar, jen bez výplně (zadání kódu, který hráč už má) */
.pz-btn-secondary
{
    /* O rámeček nižší výplň, ať mají obě tlačítka stejnou výšku */
    padding: calc(0.7rem - 2px) calc(1.6rem - 2px);
    background: transparent;
    border: 2px solid var(--pz-accent);
    color: var(--pz-accent);
}

.pz-btn-secondary:hover,
.pz-btn-secondary:focus
{
    background: var(--pz-accent);
    color: var(--pz-on-accent);
}

/* Hlášky formuláře (chybné kódy, zavřená sekce) */
.pz-alert
{
    margin-bottom: 1.25rem;
    padding: 0.8rem 1rem;
    border-radius: 8px;
    border: 1px solid transparent;
    font-size: 0.92rem;
}

.pz-alert ul
{
    margin: 0;
    padding-left: 1.1rem;
}

.pz-alert-danger
{
    border-color: rgba(220, 38, 38, 0.35);
    background: rgba(220, 38, 38, 0.08);
    color: var(--admin-danger);
}

.pz-alert-success
{
    border-color: rgba(15, 118, 110, 0.35);
    background: rgba(15, 118, 110, 0.08);
    color: var(--admin-success);
}

/* Upozornění - platný kód, vyčerpaný denní limit e-mailů */
.pz-alert-warning
{
    border-color: rgba(217, 119, 6, 0.35);
    background: rgba(217, 119, 6, 0.1);
    color: #b45309;
}

html[data-theme="dark"] .pz-alert-warning
{
    color: #fbbf24;
}

/* Vedlejší odkazy pod formulářem (poslat nový kód, zrušit přihlášení) */
.pz-links
{
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
    margin-top: 1.5rem;
}

.pz-link
{
    color: var(--admin-primary);
    font-weight: 600;
}

.pz-link:hover,
.pz-link:focus
{
    color: var(--pz-accent-dark);
}

html[data-theme="dark"] .pz-link:hover,
html[data-theme="dark"] .pz-link:focus
{
    color: var(--pz-accent);
}

/* Rozcestník sekce - dlaždice jednotlivých částí */
.pz-tiles
{
    display: grid;
    gap: 1.25rem;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

.pz-tile
{
    padding: 1.5rem;
    border: 1px solid var(--admin-border);
    border-radius: 12px;
    background: var(--admin-surface);
    box-shadow: var(--admin-shadow-sm);
}

.pz-tile i
{
    display: inline-grid;
    place-items: center;
    width: 46px;
    height: 46px;
    margin-bottom: 0.9rem;
    border-radius: 10px;
    background: var(--pz-navy);
    color: var(--pz-accent);
    font-size: 1.2rem;
}

.pz-tile h2
{
    margin: 0 0 0.5rem;
    font-size: 1.12rem;
    font-weight: 700;
}

.pz-tile p
{
    margin: 0 0 1rem;
    color: var(--admin-muted);
    font-size: 0.9rem;
    line-height: 1.55;
}

/* Štítek "Připravujeme" u dlaždice */
.pz-badge
{
    display: inline-block;
    padding: 0.22rem 0.7rem;
    border-radius: 999px;
    background: var(--pz-accent);
    color: var(--pz-on-accent);
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* Dlaždice, která už někam vede */
.pz-tile--link
{
    display: block;
    color: inherit;
    transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease;
}

.pz-tile--link:hover,
.pz-tile--link:focus
{
    transform: translateY(-2px);
    border-color: var(--pz-accent);
    box-shadow: var(--admin-shadow);
    color: inherit;
}

.pz-badge--open
{
    background: var(--pz-navy);
    color: var(--pz-accent);
}


/* ==========================================================================
   5. Správa profilu (/hrac/profile/)
   ========================================================================== */

.pz-card + .pz-card
{
    margin-top: 1.5rem;
}

.pz-card-title
{
    margin: 0 0 0.75rem;
    font-size: 1.25rem;
    font-weight: 800;
}

/* Souhrn statistik v hlavičce profilu */
.pz-stats
{
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    margin-top: 1.5rem;
}

.pz-stat
{
    padding: 1rem;
    border: 1px solid var(--admin-border);
    border-radius: 10px;
    background: var(--admin-surface-soft);
    text-align: center;
}

.pz-stat strong
{
    display: block;
    color: var(--pz-accent-dark);
    font-size: 1.7rem;
    line-height: 1.1;
}

html[data-theme="dark"] .pz-stat strong
{
    color: var(--pz-accent);
}

.pz-stat span
{
    display: block;
    margin-top: 0.3rem;
    color: var(--admin-muted);
    font-size: 0.8rem;
}

/* Fotky hráče */
.pz-photos
{
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    margin-bottom: 1rem;
}

.pz-photo
{
    margin: 0;
    padding: 0.6rem;
    border: 1px solid var(--admin-border);
    border-radius: 10px;
    background: var(--admin-surface-soft);
}

.pz-photo img
{
    display: block;
    width: 100%;
    height: 210px;
    border-radius: 8px;
    background: var(--pz-navy);
    object-fit: contain;
}

/* Akční fotka nemá pevný ořez na výšku jako dresová */
.pz-photo--wide
{
    grid-column: span 2;
}

.pz-photo--wide img
{
    height: 210px;
    object-fit: cover;
}

.pz-photo figcaption
{
    margin-top: 0.5rem;
    color: var(--admin-muted);
    font-size: 0.8rem;
    text-align: center;
}

/* Pole formuláře a vedle něj hodnota, která čeká na schválení */
.pz-field-row
{
    display: grid;
    gap: 0.75rem;
    align-items: start;
}

.pz-field-row--pending
{
    grid-template-columns: 1fr 1fr;
}

.pz-field-row textarea
{
    width: 100%;
    min-height: 130px;
    padding: 0.7rem 0.9rem;
    border: 1px solid var(--admin-border);
    border-radius: 8px;
    background: var(--admin-surface-soft);
    color: var(--admin-text);
    font-family: inherit;
    font-size: 1rem;
}

.pz-field-row textarea:focus
{
    outline: none;
    border-color: var(--pz-accent);
    box-shadow: var(--admin-ring);
}

/* Čekající hodnota - vypadá jako zamčené pole, aby bylo poznat, že se do ní nepíše */
.pz-pending input,
.pz-pending textarea
{
    width: 100%;
    padding: 0.7rem 0.9rem;
    border: 1px dashed var(--pz-accent);
    border-radius: 8px;
    background: rgba(232, 197, 28, 0.1);
    color: var(--admin-text);
    font-family: inherit;
    font-size: 1rem;
    cursor: not-allowed;
}

.pz-pending textarea
{
    min-height: 130px;
}

.pz-pending-note
{
    display: block;
    margin-top: 0.35rem;
    color: var(--pz-accent-dark);
    font-size: 0.78rem;
    font-weight: 600;
}

html[data-theme="dark"] .pz-pending-note
{
    color: var(--pz-accent);
}

/* Na užším displeji se čekající hodnota schová pod pole, ne vedle něj */
@media (max-width: 767.98px)
{
    .pz-field-row--pending
    {
        grid-template-columns: 1fr;
    }
}

/* Tabulky statistik a vyřízených žádostí */
.pz-table-wrap
{
    overflow-x: auto;
}

.pz-table
{
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.pz-table th,
.pz-table td
{
    padding: 0.6rem 0.7rem;
    border-bottom: 1px solid var(--admin-border);
    text-align: left;
    vertical-align: top;
}

.pz-table th
{
    color: var(--admin-muted);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    white-space: nowrap;
}

.pz-table tbody tr:hover
{
    background: var(--admin-surface-soft);
}

/* Štítek ve výpisu (výsledek zápasu, výsledek žádosti) */
.pz-tag
{
    display: inline-block;
    padding: 0.1rem 0.5rem;
    border-radius: 6px;
    background: var(--admin-surface-soft);
    border: 1px solid var(--admin-border);
    font-size: 0.78rem;
    font-weight: 700;
    white-space: nowrap;
}

.pz-tag--ok
{
    border-color: rgba(15, 118, 110, 0.35);
    background: rgba(15, 118, 110, 0.1);
    color: var(--admin-success);
}

.pz-tag--no
{
    border-color: rgba(220, 38, 38, 0.35);
    background: rgba(220, 38, 38, 0.1);
    color: var(--admin-danger);
}


/* Fotka hráče v liště u přihlášeného uživatele - 24x24 v kolečku. Který typ fotky
   se použije, řeší App\PlayerzoneModule\Presenters\LoginPresenter::displayPhotoKey. */
.pz-avatar
{
    display: inline-block;
    width: 24px;
    height: 24px;
    margin-right: 0.35rem;
    border-radius: 50%;
    overflow: hidden;
    vertical-align: middle;
    background: var(--admin-surface-soft);
}

.pz-avatar img
{
    width: 100%;
    height: 100%;
    object-fit: cover;
    /* Dresová fotka je celá postava. Na webu je stejný ořez na kolečku 340 px, kde je to
       čitelné - do 24 px by se ale postava scvrkla na flek s několikapixelovou hlavou,
       proto se tady přibližuje na hlavu, která je v horní části fotky. */
    object-position: center top;
    transform: scale(2.8);
    transform-origin: center 16%;
}

/* Hlavička rozcestníku poskládaná jako detail hráče na webu - hráč v kolečku a vedle něj
   pozdrav, pod tím statistiky a kolečka s oblíbenými věcmi */
.pz-hero-head
{
    display: flex;
    gap: 1.25rem;
    align-items: center;
}

.pz-hero-photo
{
    flex: 0 0 auto;
    width: 96px;
    height: 96px;
    border-radius: 50%;
    overflow: hidden;
    border: 3px solid var(--pz-accent);
    background: var(--admin-surface-soft);
}

.pz-hero-photo img
{
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
}

.pz-hero-intro { min-width: 0; }

.pz-hero-intro h1
{
    margin: 0 0 0.35rem;
    font-size: 1.5rem;
}

.pz-hero-intro .pz-lead { margin-bottom: 0; }

/* Kolečka s oblíbenými věcmi - stejný číselník jako na webu, jen menší */
.pz-circles
{
    display: grid;
    gap: 0.85rem;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    margin-top: 1.5rem;
}

.pz-circle
{
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.3rem;
    padding: 0.85rem 0.5rem;
    border: 1px solid var(--admin-border);
    border-radius: 10px;
    background: var(--admin-surface-soft);
    text-align: center;
}

.pz-circle-icon
{
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--pz-accent);
    color: var(--pz-on-accent);
    font-size: 1rem;
}

.pz-circle strong
{
    font-size: 0.95rem;
    line-height: 1.25;
    word-break: break-word;
}

.pz-circle-label
{
    font-size: 0.75rem;
    color: var(--admin-muted);
}

/* Pokuty - dva koláče vedle sebe. Bez knihovny: kružnice s poloměrem 15.915 má obvod přesně
   100, takže procenta jdou rovnou do stroke-dasharray. Posun dasharray o 25 (dashoffset)
   začíná výseč nahoře - proto se s kružnicí nesmí ještě otáčet přes transform. */
.pz-donut-grid
{
    display: grid;
    gap: 1.25rem;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    margin-top: 1.5rem;
}

.pz-donut-box
{
    padding: 1.25rem 1rem;
    border: 1px solid var(--admin-border);
    border-radius: 10px;
    background: var(--admin-surface-soft);
    text-align: center;
}

.pz-fines-chart
{
    position: relative;
    width: 168px;
    margin: 0 auto;
}

.pz-donut
{
    display: block;
    width: 168px;
    height: 168px;
}

.pz-donut-track
{
    stroke: var(--admin-border);
    stroke-width: 4;
}

.pz-donut-value
{
    stroke: var(--pz-accent);
    stroke-width: 4;
    stroke-linecap: round;
}

.pz-donut-value--share { stroke: var(--admin-primary); }

.pz-donut-label
{
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.pz-donut-label strong
{
    font-size: 1.4rem;
    font-weight: 800;
}

.pz-donut-title
{
    margin: 0.85rem 0 0.25rem;
    font-size: 1rem;
    font-weight: 800;
}

.pz-donut-sub
{
    margin: 0;
    font-size: 0.85rem;
    color: var(--admin-muted);
}

.pz-fines-summary
{
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 1.5rem;
    padding: 0.85rem 1rem;
    border: 1px solid var(--admin-border);
    border-radius: 10px;
}

.pz-fines-summary span { color: var(--admin-muted); }

.pz-fines-summary strong { font-size: 1.15rem; }

.pz-fines-debt { color: var(--admin-danger); }

.pz-fines-clear { color: var(--admin-success); }

.pz-table-right { text-align: right; }

.pz-table-note
{
    display: block;
    color: var(--admin-muted);
    font-size: 0.8rem;
}

.pz-fines-message p
{
    margin: 0;
    /* Zpráva se píše v administraci jako prostý text, konce řádků mají zůstat */
    white-space: pre-line;
}

@media (max-width: 575.98px)
{
    .pz-hero-head
    {
        flex-direction: column;
        text-align: center;
    }

    .pz-fines-chart, .pz-donut { width: 140px; }

    .pz-donut { height: 140px; }
}


/* Hlavička sekce s nástroji vpravo (přepínač sezon, tlačítko na modál se zápasy) */
.pz-section-head
{
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    justify-content: space-between;
}

.pz-section-head .pz-card-title { margin-bottom: 0; }

.pz-section-tools
{
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
}

.pz-season-form
{
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.pz-season-label
{
    margin: 0;
    font-size: 0.85rem;
    color: var(--admin-muted);
}

/* Klubová "pilulka" místo obyčejného selectu - appearance: none sundá nativní šipku,
   nahrazuje ji vlastní (SVG na pozadí, barva #20263a = --pz-on-accent napevno, protože
   je stejná ve světlém i tmavém režimu). Otevřený seznam voleb je nativní prvek prohlížeče
   a CSS ho neovládne úplně - option se aspoň obarví do klubové modré, kde to prohlížeč
   respektuje (desktop Chrome/Firefox/Edge ano, mobilní nabídky často ne). */
.pz-season-select
{
    appearance: none;
    -webkit-appearance: none;
    padding: 0.45rem 2.25rem 0.45rem 1rem;
    border: 1px solid var(--pz-accent-dark);
    border-radius: 999px;
    background-color: var(--pz-accent);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2320263a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.9rem center;
    color: var(--pz-on-accent);
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1.3;
    cursor: pointer;
    transition: background-color 0.15s ease, box-shadow 0.15s ease;
    /* Nabídne prohlížeči tmavé schéma jen pro tenhle prvek - kde to jde, obarví i vlastní
       nativní seznam voleb (scrollbar, plocha kolem) do tmava místo výchozí bílé */
    color-scheme: dark;
}

.pz-season-select:hover { background-color: var(--pz-accent-dark); }

.pz-season-select:focus
{
    outline: none;
    box-shadow: 0 0 0 3px rgba(232, 197, 28, 0.35);
}

/* Volby v otevřeném seznamu - klubová modrá s bílým textem tam, kde to prohlížeč umí obarvit */
.pz-season-select option
{
    background: var(--pz-navy);
    color: #fff;
}

.pz-team-title
{
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: baseline;
    margin: 1.5rem 0 0.75rem;
    font-size: 1.05rem;
    font-weight: 800;
}

.pz-team-title small
{
    font-size: 0.8rem;
    font-weight: 400;
    color: var(--admin-muted);
}

/* Dlaždice s procenty - stejná mřížka jako souhrn statistik, jen s podrobností pod číslem */
.pz-pct-grid
{
    display: grid;
    gap: 0.85rem;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}

.pz-pct
{
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.9rem;
    border: 1px solid var(--admin-border);
    border-radius: 10px;
    background: var(--admin-surface-soft);
    text-align: center;
}

.pz-pct strong
{
    font-size: 1.25rem;
    font-weight: 800;
}

.pz-pct-label
{
    font-size: 0.8rem;
    line-height: 1.3;
}

.pz-pct-detail
{
    font-size: 0.72rem;
    color: var(--admin-muted);
}

/* Dlaždice s přepínatelným limitem minut (čisté konto na hřišti) - malé šipky nad číslem
   přepínají mezi variantami, pod podrobností je vysvětlivka drobným písmem */
.pz-pct-switchable
{
    position: relative;
}

.pz-cs-switch
{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: center;
    width: 18px;
    height: 18px;
    margin: -0.25rem 0 0;
    padding: 0;
    border: 1px solid var(--admin-border);
    border-radius: 50%;
    background: var(--admin-surface);
    color: var(--admin-muted);
    font-size: 10px;
    line-height: 1;
    cursor: pointer;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.pz-cs-switch:hover,
.pz-cs-switch:focus-visible
{
    color: var(--admin-primary);
    border-color: var(--admin-primary);
    outline: none;
}

.pz-cs-variant
{
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.pz-pct-hint
{
    margin-top: 0.2rem;
    font-size: 0.65rem;
    line-height: 1.3;
    color: var(--admin-muted);
    opacity: 0.85;
}

/* Série v minutách - mřížka dlaždic pod týmy, v hlavičce nadpis a přepínač týmu */
.pz-streaks-head
{
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    margin: 1.25rem 0 0.5rem;
}

.pz-streaks-title
{
    margin: 0;
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--admin-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.pz-streaks-head + .pz-streaks
{
    margin-top: 0;
}

/* Nejčastější spoluhráči - žebříček pod procenty týmu */
.pz-mates
{
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-top: 0.85rem;
    padding: 0.9rem;
    border: 1px solid var(--admin-border);
    border-radius: 10px;
    background: var(--admin-surface-soft);
}

.pz-mates-title
{
    margin: 0;
    font-size: 0.8rem;
    font-weight: 700;
}

.pz-mates-list
{
    display: grid;
    gap: 0.3rem 1.25rem;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-mate
{
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    font-size: 0.85rem;
}

.pz-mate-rank
{
    flex: 0 0 1.4rem;
    color: var(--admin-muted);
    font-size: 0.75rem;
}

.pz-mate-name
{
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pz-mate-value
{
    flex: 0 0 auto;
    font-weight: 700;
    white-space: nowrap;
}

/* Jména soupeřů při shodě u oblíbeného/zakletého soupeře a speciality na tým (App\PlayerzoneModule\Models\PlayerMatchStats::opponentTop) -
   čím víc jich je v závorce, tím menším písmem; nad deset už se nevypisují všechna */
.pz-opp-ties
{
    display: block;
    margin-top: 0.15rem;
    font-size: 0.72rem;
    color: var(--admin-muted);
}

.pz-opp-ties--sm
{
    font-size: 0.65rem;
}

.pz-opp-ties--xs
{
    font-size: 0.58rem;
    line-height: 1.25;
}

/* Přepínač týmu nad žebříčky - skupina pilulek, aktivní v barvě akcentu */
.pz-switch
{
    display: inline-flex;
    gap: 2px;
    padding: 2px;
    border: 1px solid var(--admin-border);
    border-radius: 999px;
    background: var(--admin-surface);
}

.pz-switch-item
{
    padding: 0.3rem 0.85rem;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--admin-muted);
    text-decoration: none;
    white-space: nowrap;
}

.pz-switch-item:hover
{
    color: var(--admin-text);
    text-decoration: none;
}

.pz-switch-item.is-active
{
    background: var(--pz-accent);
    color: var(--pz-on-accent);
}

/* Menší varianta přepínače v hlavičce sérií */
.pz-switch--small .pz-switch-item
{
    padding: 0.2rem 0.65rem;
    font-size: 0.72rem;
}

/* Přepínač "jen aktivní hráči" - jedna pilulka, zapnutá v barvě akcentu */
.pz-switch--toggle
{
    text-decoration: none;
}

.pz-switch--toggle:hover
{
    text-decoration: none;
}

.pz-switch--toggle.is-on .pz-switch-item
{
    background: var(--pz-accent);
    color: var(--pz-on-accent);
}

/* Neaktivní osoba v žebříčku - už není v klubu, řádek je zašedlý */
.pz-board-row.is-inactive
{
    opacity: 0.45;
}

.pz-board-row.is-inactive .pz-board-name
{
    font-style: italic;
}

/* Žebříčky "Kompletní statistiky" - pět seznamů vedle sebe, na užším displeji pod sebou */
.pz-boards
{
    display: grid;
    gap: 0.85rem;
    grid-template-columns: repeat(auto-fit, minmax(185px, 1fr));
}

.pz-board
{
    padding: 0.9rem;
    border: 1px solid var(--admin-border);
    border-radius: 10px;
    background: var(--admin-surface-soft);
}

.pz-board-title
{
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 0.5rem;
    margin: 0 0 0.5rem;
    font-size: 0.85rem;
    font-weight: 700;
}

.pz-board-title small
{
    font-size: 0.7rem;
    font-weight: 400;
    color: var(--admin-muted);
    white-space: nowrap;
}

.pz-board-list
{
    margin: 0;
    padding: 0;
    list-style: none;
}

.pz-board-row
{
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    padding: 0.2rem 0.3rem;
    border-radius: 6px;
    font-size: 0.82rem;
}

/* Přihlášený hráč - zvýrazněný řádek, i když je až pod výpustkou za patnáctkou */
.pz-board-row.is-me
{
    background: rgba(232, 197, 28, 0.18);
    font-weight: 700;
}

.pz-board-rank
{
    flex: 0 0 1.8rem;
    color: var(--admin-muted);
    font-size: 0.72rem;
    text-align: right;
}

.pz-board-name
{
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pz-board-value
{
    flex: 0 0 auto;
    font-weight: 700;
    white-space: nowrap;
}

.pz-board-gap
{
    padding: 0 0.3rem 0 2.5rem;
    color: var(--admin-muted);
    line-height: 1;
}

/* Karty ve výpisu zápasů */
.pz-card-yellow,
.pz-card-red
{
    display: inline-block;
    width: 9px;
    height: 13px;
    border-radius: 2px;
    vertical-align: -1px;
}

.pz-card-yellow { background: #eab308; }

.pz-card-red { background: var(--admin-danger); }


/* Příspěvky - tři okna vedle sebe (dva koláče + QR platba), App\PlayerzoneModule\ContributionModule.
   Na širokém displeji napevno tři sloupce, aby QR neodskočilo samo na další řádek;
   užší displeje nechávají automatické skládání z .pz-donut-grid. */
@media (min-width: 1200px)
{
    .pz-donut-grid--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

.pz-qr-box
{
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.6rem;
}

/* Bílý podklad i v tmavém režimu - QR má průhledné pozadí a banky ho na tmavém nečtou */
.pz-qr-wrap
{
    padding: 6px;
    border-radius: 8px;
    background: #fff;
    line-height: 0;
}

.pz-qr-wrap img
{
    max-width: 100%;
    height: auto;
}

.pz-qr-details
{
    display: grid;
    grid-template-columns: auto auto;
    gap: 0.15rem 0.6rem;
    margin: 0;
    font-size: 0.85rem;
    text-align: left;
}

.pz-qr-details dt
{
    color: var(--admin-muted);
    font-weight: 600;
}

.pz-qr-details dd
{
    margin: 0;
    font-weight: 700;
}

.pz-qr-amount
{
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--admin-muted);
}

.pz-qr-amount-field
{
    display: flex;
    align-items: center;
    gap: 0.35rem;
    color: var(--admin-text);
}

.pz-qr-amount-field input
{
    width: 7.5rem;
    text-align: right;
    font-weight: 700;
}

.pz-qr-error { color: var(--admin-danger); }

/* Stav platby v seznamu - připsaná zeleně, čekající na potvrzení oranžově */
.pz-pay-state
{
    display: inline-block;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    background: rgba(15, 118, 110, 0.1);
    color: var(--admin-success);
    font-size: 0.78rem;
    font-weight: 700;
}

.pz-pay-state--pending
{
    background: rgba(217, 119, 6, 0.12);
    color: var(--admin-warning);
}

/* Hláška nahoře uprostřed (přegenerovaný QR kód) - zobrazí a schová ji JavaScript šablony */
.pz-toast
{
    position: fixed;
    top: 1rem;
    left: 50%;
    z-index: 1080;
    padding: 0.7rem 1.2rem;
    border-radius: 10px;
    background: var(--pz-navy);
    color: #fff;
    font-size: 0.92rem;
    font-weight: 600;
    box-shadow: var(--admin-shadow);
    transform: translate(-50%, -0.5rem);
    opacity: 0;
    transition: opacity 0.2s ease, transform 0.2s ease;
}

.pz-toast i { color: var(--pz-accent); margin-right: 0.35rem; }

.pz-toast.is-visible
{
    opacity: 1;
    transform: translate(-50%, 0);
}


/* Příspěvky - větší koláče než u pokut (tři okna vedle sebe mají místa dost) */
.pz-donut-grid--three .pz-fines-chart,
.pz-donut-grid--three .pz-donut
{
    width: 220px;
}

.pz-donut-grid--three .pz-donut { height: 220px; }

.pz-donut-grid--three .pz-donut-track,
.pz-donut-grid--three .pz-donut-value
{
    stroke-width: 4.5;
}

.pz-donut-grid--three .pz-donut-label strong { font-size: 2rem; }

@media (max-width: 575.98px)
{
    .pz-donut-grid--three .pz-fines-chart,
    .pz-donut-grid--three .pz-donut
    {
        width: 180px;
    }

    .pz-donut-grid--three .pz-donut { height: 180px; }
}

/* Na velkých monitorech mají okna přes 400 px, koláč jde o kus zvětšit */
@media (min-width: 1400px)
{
    .pz-donut-grid--three .pz-fines-chart,
    .pz-donut-grid--three .pz-donut
    {
        width: 260px;
    }

    .pz-donut-grid--three .pz-donut { height: 260px; }

    .pz-donut-grid--three .pz-donut-label strong { font-size: 2.3rem; }
}

@media (min-width: 1800px)
{
    .pz-donut-grid--three .pz-fines-chart,
    .pz-donut-grid--three .pz-donut
    {
        width: 290px;
    }

    .pz-donut-grid--three .pz-donut { height: 290px; }

    .pz-donut-grid--three .pz-donut-label strong { font-size: 2.5rem; }
}

/* Barva výseče podle zaplaceného - App\Model\Contribution::progressStep. Kroky 0-23 jdou po
   stejných dílech pod 100 % plynule odstínem od červené (0) přes oranžovou a žlutou do zelené
   (125), krok 24 je modrá pro 100 % a víc. Počet tříd musí sedět s Contribution::PROGRESS_STEPS. */
.pz-donut-step-0 { stroke: hsl(0, 82%, 47%); }
.pz-donut-step-1 { stroke: hsl(5.4, 82%, 47%); }
.pz-donut-step-2 { stroke: hsl(10.9, 82%, 47%); }
.pz-donut-step-3 { stroke: hsl(16.3, 82%, 47%); }
.pz-donut-step-4 { stroke: hsl(21.7, 82%, 47%); }
.pz-donut-step-5 { stroke: hsl(27.2, 82%, 47%); }
.pz-donut-step-6 { stroke: hsl(32.6, 82%, 47%); }
.pz-donut-step-7 { stroke: hsl(38, 82%, 47%); }
.pz-donut-step-8 { stroke: hsl(43.5, 82%, 47%); }
.pz-donut-step-9 { stroke: hsl(48.9, 82%, 47%); }
.pz-donut-step-10 { stroke: hsl(54.3, 82%, 47%); }
.pz-donut-step-11 { stroke: hsl(59.8, 82%, 47%); }
.pz-donut-step-12 { stroke: hsl(65.2, 82%, 47%); }
.pz-donut-step-13 { stroke: hsl(70.7, 82%, 47%); }
.pz-donut-step-14 { stroke: hsl(76.1, 82%, 47%); }
.pz-donut-step-15 { stroke: hsl(81.5, 82%, 47%); }
.pz-donut-step-16 { stroke: hsl(87, 82%, 47%); }
.pz-donut-step-17 { stroke: hsl(92.4, 82%, 47%); }
.pz-donut-step-18 { stroke: hsl(97.8, 82%, 47%); }
.pz-donut-step-19 { stroke: hsl(103.3, 82%, 47%); }
.pz-donut-step-20 { stroke: hsl(108.7, 82%, 47%); }
.pz-donut-step-21 { stroke: hsl(114.1, 82%, 47%); }
.pz-donut-step-22 { stroke: hsl(119.6, 82%, 47%); }
.pz-donut-step-23 { stroke: hsl(125, 82%, 47%); }
.pz-donut-step-24 { stroke: hsl(214, 85%, 52%); }


/* Příspěvky - letošní rok v hlavičce (hráč roky nepřepíná, jen vidí, o který jde) */
.pz-year-badge
{
    padding: 0.4rem 1rem;
    border: 1px solid var(--pz-accent-dark);
    border-radius: 999px;
    background: var(--pz-accent);
    color: var(--pz-on-accent);
    font-size: 0.9rem;
    font-weight: 700;
}

/* Pole částky s odpočtem do přegenerování QR - proužek dole v poli ubíhá 1,5 s k začátku
   (délka musí sedět s časovačem v Contribution/Default/default.latte) */
.pz-qr-input
{
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: 0.375rem;
}

.pz-qr-countdown
{
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 4px;
    background: var(--pz-accent-dark);
    transform-origin: left center;
    opacity: 0;
    pointer-events: none;
}

.pz-qr-countdown.is-running
{
    opacity: 1;
    animation: pz-qr-countdown 1.5s linear forwards;
}

/* Odpočet doběhl a čeká se na server - celý proužek tiše pulzuje */
.pz-qr-countdown.is-loading
{
    opacity: 1;
    animation: pz-qr-loading 0.8s ease-in-out infinite alternate;
}

@keyframes pz-qr-countdown
{
    from { transform: scaleX(1); }
    to   { transform: scaleX(0); }
}

@keyframes pz-qr-loading
{
    from { transform: scaleX(1); opacity: 0.25; }
    to   { transform: scaleX(1); opacity: 0.9; }
}

@media (prefers-reduced-motion: reduce)
{
    .pz-qr-countdown.is-running { animation-timing-function: steps(3, end); }
    .pz-qr-countdown.is-loading { animation: none; opacity: 0.6; }
}

/* Hláška o přegenerování pod polem a stažení QR - jen na mobilu a užších displejích.
   Horní hláška (.pz-toast) je tam při otevřené klávesnici často mimo pohled. */
.pz-qr-status
{
    margin: 0;
    color: var(--admin-success);
    font-size: 0.85rem;
    font-weight: 700;
}

.pz-qr-status[hidden] { display: none; }

.pz-qr-download
{
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 1.2rem;
    font-size: 0.92rem;
    text-decoration: none;
}

.pz-qr-download:hover,
.pz-qr-download:focus
{
    color: var(--pz-on-accent);
}

@media (min-width: 1000px)
{
    .pz-qr-status,
    .pz-qr-download
    {
        display: none !important;
    }
}
