/* ===========================================================================
   Globální font Nunito (sjednocení s design vzorem Member modulu, 2026-06-29).
   --tblr-font-sans-serif řídí celý Tabler; common.css se načítá v app i Auth layoutu.
   Samotné webfonty se načítají přes <link> v _styles.latte a Auth/@layout.latte.
   =========================================================================== */
:root {
    --tblr-font-sans-serif: 'Nunito', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
}
body {
    font-family: var(--tblr-font-sans-serif);
}

table.SimpleCalendar {
    font-family: Arial;
    border-collapse: collapse; }
table.SimpleCalendar th {
    background: #C9E9F0;
    color: #0092B4;
    font-size: 11px;
    padding: 3px;
    border: 1px solid #bbb;
    border-top: none; }
table.SimpleCalendar tbody td {
    vertical-align: top;
    width: 90px;
    height: 90px;
    border: 1px solid #bbb;
    background: #e6e6e6; }
table.SimpleCalendar tbody td time {
    font-size: .7em;
    display: block;
    background: white;
    padding: 2px;
    text-align: right;
    font-weight: bold; }
table.SimpleCalendar tbody td.SCsuffix, table.SimpleCalendar tbody td.SCprefix {
    background: white; }
table.SimpleCalendar tbody td div.event {
    color: #355;
    font-size: .65em;
    padding: 5px;
    line-height: 1em;
    border-bottom: 1px solid #bbb;
    background: #858585;
    color: white; }
table.SimpleCalendar tbody td.today {
    background: #d2d2d2; }

/* Styl pro přepínač */
.simpleToggler {
    width: 60px;
    height: 34px;
    background-color: #ffc107; /* Výchozí barva pro absent (warning) */
    border-radius: 34px;
    position: relative;
    cursor: pointer;
    transition: background-color 0.4s;
}

/* Výchozí styl (absent a null) */
.simpleToggler {
    background-color: #ffc107; /* Bootstrap warning barva */
}

.simpleToggler:checked {
    background-color: #28a745; /* Bootstrap success barva */
}

/* Specifický styl pro stav 'null' */
.simpleToggler[data-status="null"] {
    background-color: #ffc107; /* Stejná jako absent */
}

.status-selector {
    display: flex;
    gap: 10px;
}

.status-option {
    padding: 10px 20px;
    border: 1px solid #ccc;
    cursor: pointer;
    text-align: center;
    border-radius: 5px;
    user-select: none;
    transition: background-color 0.3s, color 0.3s;
}

.status-option[data-status="present"] {
    background-color: #d4edda; /* Bootstrap 'success' color */
    color: #155724;
}

.status-option[data-status="absent"] {
    background-color: #f8d7da; /* Bootstrap 'danger' color */
    color: #721c24;
}

.status-option.active {
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
    font-weight: bold;
    transform: scale(1.05);
}

.status-option.inactive {
    opacity: 0.6;
}

.warning-icon {
    margin-left: 10px;
    font-size: 14px;
    vertical-align: middle;
    color: red;
    display: inline-flex;
    align-items: center;
}
.status-summary {
    font-size: 16px;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 5px;
    background-color: #f9f9f9;
    display: inline-block;
}
.status-summary p {
    margin: 0;
    padding: 5px 0;
}

/* ===========================================================================
   Member modul — sjednocený vzhled (changeset 2026-06-29_member-module-unification)
   =========================================================================== */

/* Profil — overlay tlačítko pro nahrání profilové fotky */
.profile-photo-btn {
    position: absolute;
    bottom: 2px;
    right: 2px;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #066fd1;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border: 2px solid #fff;
    font-size: 12px;
    transition: background-color .15s;
}
.profile-photo-btn:hover {
    background: #0559a7;
}

/* Profil — horizontální taby (mobil) */
.profile-tab {
    padding: 7px 13px;
    border-radius: 100rem;
    background: #fff;
    border: 1px solid #dce1e7;
    color: #49566c;
    font-weight: 500;
    font-size: 12.5px;
    text-decoration: none;
    transition: background-color .15s, color .15s, border-color .15s;
}
.profile-tab:hover {
    border-color: #066fd1;
    color: #066fd1;
}
.profile-tab.active {
    background: #066fd1;
    border-color: #066fd1;
    color: #fff;
}

/* Dashboard / profil — akční dlaždice na kartě osoby */
.action-tile {
    display: flex;
    flex-direction: column;
    height: 100%;
    border: 1px solid #dce1e7;
    border-radius: 8px;
    background: #fff;
    overflow: hidden;
    transition: box-shadow .15s, border-color .15s;
}
.action-tile:hover {
    border-color: #c2cbd8;
    box-shadow: rgba(24, 36, 51, .08) 0 2px 6px;
}
.action-tile__body {
    padding: 14px 14px 10px;
    flex: 1;
}
.action-tile__icon {
    width: 40px;
    height: 40px;
    border-radius: 9px;
    background: #e9f2fc;
    color: #066fd1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
}

/* Auth — segmentovaný přepínač jazyka (vlajky) dle design vzoru */
.langrow {
    display: flex;
    justify-content: center;
}
.langsw {
    display: inline-flex;
    border: 1px solid #dce1e7;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}
.langsw button,
.langsw a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 0;
    background: #fff;
    padding: 7px 13px;
    font-weight: 600;
    font-size: 12px;
    color: #6c7a91;
    cursor: pointer;
    text-decoration: none;
    border-right: 1px solid #eef1f5;
}
.langsw button:last-child,
.langsw a:last-child {
    border-right: 0;
}
.langsw button.on,
.langsw a.on {
    background: rgba(6, 111, 209, .08);
    color: #066fd1;
}
.langsw .fi {
    border-radius: 2px;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .05);
}

/* Profil — definiční tabulka (label/hodnota) dle design vzoru (.deftbl) */
.deftbl {
    width: 100%;
    border-collapse: collapse;
}
.deftbl td {
    padding: 8px 0;
    border-bottom: 1px solid #eef1f5;
    font-size: 13.5px;
    vertical-align: top;
}
.deftbl td.k {
    color: #6c7a91;
    width: 42%;
}
.deftbl tr:last-child td {
    border-bottom: 0;
}

/* Kurzy/tréninky — karta zápisu (flat, dle wizardových karet z design vzoru) */
.enroll-card {
    position: relative;
    background: #fff;
    border: 1px solid #dce1e7;
    border-radius: 8px;
    padding: 15px;
}
.enroll-card__schedule {
    border-top: 1px solid #e6ebf1;
    padding-top: 11px;
    margin-top: 4px;
}
.enroll-card__state {
    background: #f6f8fb;
    border: 1px solid #eef1f5;
    border-radius: 6px;
    padding: 9px 11px;
}

/* Karate — členská známka (perforovaná hrana) */
.member-stamp {
    text-align: center;
    border: 2px dashed currentColor;
    border-radius: 8px;
    padding: 7px 5px 6px;
    background: #fff;
}
.member-stamp--paid {
    opacity: .92;
}

/* ===========================================================================
   Levý svislý sidebar (Tabler navbar-vertical) — oprava překryvu obsahu
   ---------------------------------------------------------------------------
   V našich layoutech je `aside.navbar-vertical` vnořený UVNITŘ `.page-wrapper`
   (viz app/Presentation/{Module}/@layout.latte). Tablerovo pravidlo, které posouvá
   obsah o šířku sidebaru, ale cílí na PŘEDCHÁZEJÍCÍHO SOUROZENCE
   (`.navbar-vertical ~ .page-wrapper` / `~ .navbar`) — u vnořeného sidebaru se
   proto NEuplatní. Fixovaný sidebar (position:fixed; width:15rem) pak při
   šířkách ~992–1500px překrýval levý okraj obsahu i brand v horní liště
   (na velmi širokých displejích obsah „uhýbal" jen náhodou díky vycentrovanému
   .container-xl). Posun doplňujeme ručně — jen ≥992px a jen když sidebar
   skutečně existuje (přes :has()), aby stránky bez menu zůstaly na plnou šířku.
   =========================================================================== */
@media (min-width: 992px) {
    /* Obsah (page-body) uhne fixovanému sidebaru. */
    .page-wrapper:has(> .navbar-vertical.navbar-expand-lg) {
        margin-inline-start: 15rem;
    }
    /* Horní lišta (brand vlevo) uhne stejně, aby ji sidebar nepřekrýval. */
    .navbar:has(~ .page-wrapper > .navbar-vertical.navbar-expand-lg) {
        margin-inline-start: 15rem;
    }
}

/* ===========================================================================
   Navigace mezi kroky průvodce (.wizard-nav)
   ---------------------------------------------------------------------------
   Design systém: docs/design/system/elements/wizard-steps.md.

   Dřív to byla obyčejná karta na konci stránky — u dlouhého kroku (tabulka
   stupňů, výpis platebních plánů) tak „Dokončit" zmizelo pod přehybem a nebylo
   poznat, že se dá pokračovat. Pruh je proto přilepený u spodního okraje, stejně
   jako tlačítko Uložit v settings-shellu.

   Není to karta: má vlastní pozadí, rámeček a stín, aby se odlišil od obsahu
   pod ním, přes který se posouvá.
   =========================================================================== */
.wizard-nav {
    position: sticky;
    bottom: 16px;
    z-index: 20;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 24px;
    padding: 14px 16px;
    background: #fff;
    border: 1px solid #dce1e7;
    border-radius: 8px;
    box-shadow: 0 6px 18px rgba(24, 36, 51, .10);
}

/* Primární akce (a u posledního kroku celý finishForm) drží vpravo. */
.wizard-nav-end {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
}

/* finishForm uvnitř pruhu je běžný Nette formulář — ať se neroztahuje na blok
   a checkbox „vytvořit jako skrytou" sedí v jedné řadě s tlačítkem. */
.wizard-nav-end form {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    margin: 0;
}

.wizard-nav-end .form-group,
.wizard-nav-end .form-check {
    margin-bottom: 0;
}

/* Zamčený řádek v tabulce zkoušených stupňů — stupeň, na který je někdo
   přihlášen, nejde odebrat. Tint je záměrně neutrální, ne varovný: není to chyba. */
.grade-row-locked {
    background: #f6f9fc;
}
