/* Kalendář akcí - frontend styly.
/* Kalendář akcí - frontend styly.
 *
 * Vzhled je záměrně SAMOSTATNÝ: klíčové hodnoty drží CSS proměnné na obalu
 * .ka-kalendar (příprava na uživatelské nastavení - stačí je přepsat) a
 * typografie karet je uzamčena !important proti stylům šablony/Divi.
 * Z webu se dědí pouze font-family, aby kalendář ladil se zbytkem webu.
 */

/* Výchozí hodnoty proměnných - stránka Vzhled v administraci je přepisuje
   inline stylem (kalendar_akci_inline_styly), tento soubor se needituje */
.ka-kalendar {
    --ka-nadpis-barva: #b40000;      /* volitelný nadpis nad kalendářem */
    --ka-nadpis-velikost: 30px;
    --ka-nadpis-tloustka: 600;
    --ka-nadpis-zarovnani: center;
    --ka-nadpis-linka-sirka: 0px;    /* 0 = bez spodní linky */
    --ka-nadpis-linka-styl: solid;
    --ka-nadpis-linka-barva: #b40000;
    --ka-mezera: 30px;               /* mezera mezi kartami (gap) */
    --ka-okraj-sirka: 1px;           /* šířka rámečku karty (0 = bez rámečku) */
    --ka-okraj-karty: #dedede;       /* barva rámečku karty */
    --ka-pozadi-karty: #fff;
    --ka-zaobleni: 14px;
    --ka-stin: 0 2px 10px rgba(15, 23, 42, 0.08);
    --ka-stin-hover: 0 6px 22px rgba(15, 23, 42, 0.14);
    --ka-pomer-nahledu: 1 / 1;       /* poměr stran náhledu */
    --ka-nazev-barva: #b40000;
    --ka-nazev-velikost: 20px;
    --ka-nazev-tloustka: 600;
    --ka-nazev-transform: none;      /* uppercase = název akce velkými písmeny */
    --ka-datum-barva: #333;
    --ka-datum-velikost: 14px;
    --ka-datum-tloustka: 600;
    --ka-misto-barva: #0069ff;
    --ka-misto-velikost: 18px;
    --ka-misto-tloustka: 400;
}

.ka-kalendar,
.ka-kalendar * {
    box-sizing: border-box;
}

/* Volitelný nadpis nad kalendářem (karta Nadpis na stránce Nastavení, prázdné
   pole = nevypisuje se). Vlastní styl uzamčený proti šabloně/Divi stejně jako
   typografie karet - z webu se dědí jen font-family (Vaškovo pravidlo: nic
   nepřebírat ze šablony, uživatel si vzhled řídí sám) */
.ka-kalendar .ka-kalendar-nadpis {
    margin: 0 0 20px !important;
    padding: 0 0 10px !important;
    text-align: var(--ka-nadpis-zarovnani) !important;
    font-size: var(--ka-nadpis-velikost) !important;
    color: var(--ka-nadpis-barva) !important;
    font-weight: var(--ka-nadpis-tloustka) !important;
    line-height: 1.3 !important;
    border-bottom: var(--ka-nadpis-linka-sirka) var(--ka-nadpis-linka-styl) var(--ka-nadpis-linka-barva) !important;
}

/* ---------- Filtrovací lišta ---------- */

.ka-filtry {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    align-items: center;
    margin: 0 0 30px;
    padding: 0;
}

.ka-filtry input[type="search"],
.ka-filtry select {
    margin: 0;
    padding: 8px 12px;
    border: 1px solid #cbd5e1;
    /* Kulaté rohy zavřených prvků (Vaškovo rozhodnutí - vypadá moderně);
       rozbalená nativní roletka je hranatá a nastylovat nejde */
    border-radius: 6px;
    background: #f7f7f7;
    font-size: 15px;
    line-height: 1.4;
    color: #1e293b;
}

.ka-filtry input[type="search"] {
    flex: 1 1 220px;
    min-width: 180px;
}

.ka-filtry select {
    flex: 0 1 auto;
    cursor: pointer;
}

.ka-prepinac {
    display: flex;
    gap: 4px;
    margin-left: auto;
}

.ka-prepinac button {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    margin: 0;
    padding: 0;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    background: #fff;
    color: #64748b;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.ka-prepinac button:hover {
    background: #fff0d4;
}

.ka-prepinac button.aktivni {
    background: #1e293b;
    border-color: #1e293b;
    color: #fff;
}

/* Tisk je akce, ne přepínač - drobný odstup od dvojice karty/řádky */
.ka-prepinac .ka-prepinac-tisk {
    margin-left: 8px;
}

/* Zrušení filtrů je akce, ne přepínač - odstup zrcadlí tiskovou ikonu */
.ka-prepinac .ka-prepinac-zrusit {
    margin-right: 8px;
}

/* ---------- Karty (výchozí zobrazení) ---------- */

.ka-seznam--karty {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: var(--ka-mezera);
}

.ka-seznam--karty .ka-akce {
    display: flex;
    flex-direction: column;
    background: var(--ka-pozadi-karty);
    border: var(--ka-okraj-sirka) solid var(--ka-okraj-karty);
    border-radius: var(--ka-zaobleni);
    overflow: hidden;
    box-shadow: var(--ka-stin);
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.ka-seznam--karty .ka-akce:hover {
    transform: scale(1.025);
    box-shadow: var(--ka-stin-hover);
}

/* Celá karta s přílohou je klikací, ne jen náhled - klik mimo náhled
   (název, datum, místo…) přeposílá JS na a.ka-nahled (viz frontend.js) */
.ka-seznam--karty .ka-akce:has(a.ka-nahled) {
    cursor: pointer;
}

.ka-nahled {
    display: block;
    line-height: 0;
    text-decoration: none;
}

.ka-seznam--karty .ka-nahled img {
    width: 100%;
    height: auto;
    aspect-ratio: var(--ka-pomer-nahledu);
    object-fit: cover;
    /* Kdyby CSS musel dořezávat (jiný poměr souboru), řeže odspoda jako server */
    object-position: center top;
    display: block;
    margin: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

.ka-nahled--pdf,
.ka-nahled--prazdny {
    display: flex;
    align-items: center;
    justify-content: center;
    background: #f1f5f9;
    color: #94a3b8;
}

.ka-seznam--karty .ka-nahled--pdf,
.ka-seznam--karty .ka-nahled--prazdny {
    aspect-ratio: var(--ka-pomer-nahledu);
}

.ka-info {
    padding: 0 16px 16px;
    text-align: center;
}

/* Štítek druhu akce - v kartě sedí přes spodní hranu obrázku (viz vzor) */
.ka-stitek {
    display: inline-block;
    padding: 1px 10px !important;
    margin: 0 0 8px;
    border-radius: 999px;
    font-size: 12px !important;
    font-weight: 600 !important;
    line-height: 1.7 !important;
    letter-spacing: 0.02em !important;
    position: relative;
    z-index: 1;
}

.ka-seznam--karty .ka-stitek {
    /* Štítek sedí půlkou přes spodní hranu fotky. Inline-block by záporný
       margin-top ignoroval (baseline), proto display: table + margin auto. */
    display: table;
    margin: -11px auto 8px;
}

/* Důležitá akce (meta dulezita) - JEN červený rámeček karty (přebíjí rámeček
   z Nastavení); štítek si nechává pastelovou barvu druhu (Vaškovo rozhodnutí
   2026-07-19). Řádkový výpis zůstává záměrně černobílý, mřížka barvami druhů. */
.ka-seznam--karty .ka-akce--dulezita {
    border: var(--ka-dulezita-okraj-sirka) solid var(--ka-dulezita-okraj-barva);
}

/* Pastelové barvy druhů akcí (slugy výchozích termů) */
.ka-stitek--kulturni    { background: #dbeafe; color: #1d4ed8; border: 2px solid white; }
.ka-stitek--sportovni   { background: #dcfce7; color: #15803d; border: 2px solid white; }
.ka-stitek--spolecenska { background: #fde047; color: #713f12; border: 2px solid white; }
.ka-stitek--prednaska   { background: #f3e8ff; color: #7e22ce; border: 2px solid white; }
.ka-stitek--ostatni     { background: #fecdd3; color: #be123c; border: 2px solid white; }

.ka-nazev {
    margin: 15px 0 10px !important;
    padding: 0 !important;
    font-size: var(--ka-nazev-velikost) !important;
    font-weight: var(--ka-nazev-tloustka) !important;
    letter-spacing: -0.5px !important;
    line-height: 1.2 !important;
    color: var(--ka-nazev-barva) !important;
    text-transform: var(--ka-nazev-transform) !important;
    text-align: center;
}

.ka-datum {
    margin: 0;
    padding: 0;
    font-weight: var(--ka-datum-tloustka) !important;
    color: var(--ka-datum-barva) !important;
    font-size: var(--ka-datum-velikost) !important;
    line-height: 1.4 !important;
    text-align: center;
}

.ka-misto {
    margin: 5px 0 0;
    padding: 0;
    color: var(--ka-misto-barva) !important;
    font-size: var(--ka-misto-velikost) !important;
    font-weight: var(--ka-misto-tloustka) !important;
    line-height: 1.4 !important;
    text-align: center;
}

.ka-zadne-akce {
    padding: 24px 0;
    color: #64748b;
}

/* ---------- Načítání (AJAX filtry) ---------- */

.ka-seznam {
    position: relative;
}

/* Položky zešednou, nad seznamem se točí kolečko. Třídu ka-nacita přidává
   JS na obal .ka-kalendar po dobu AJAX požadavku. */
.ka-nacita .ka-seznam {
    min-height: 120px;
    pointer-events: none;
}

.ka-nacita .ka-seznam > * {
    opacity: 0.4;
}

.ka-nacita .ka-seznam::after {
    content: "";
    /* fixed = střed OKNA prohlížeče při libovolném rozlišení, zoomu
       i pozici scrollu (ne střed stránky/seznamu) */
    position: fixed;
    top: 50%;
    left: 50%;
    width: 42px;
    height: 42px;
    margin: -21px 0 0 -21px;
    border: 4px solid rgba(30, 41, 59, 0.15);
    border-top-color: #1e293b;
    border-radius: 50%;
    animation: ka-tocitko 0.7s linear infinite;
    z-index: 9999;
}

@keyframes ka-tocitko {
    to { transform: rotate(360deg); }
}

/* ---------- Řádkový výpis = prostý textový seznam (od 2026-07-18) ----------
   Datum | Místo | Název akce. Markup je stejný jako u karet - náhled a štítek
   se jen schovají. Černobílé, jednotná tloušťka 500, vzdušné řádky (Vaškovo
   zadání, varianta A z návrhu) - slouží i pro přehledný tisk seznamu akcí.
   Jen desktop; na mobilu se řádkový výpis mění na karty (přepínač je skrytý). */

.ka-seznam--radky {
    display: flex;
    flex-direction: column;
}

@media (min-width: 768px) {
    .ka-seznam--radky .ka-akce {
        display: grid;
        grid-template-columns: 150px 170px 1fr auto;
        gap: 0 24px;
        align-items: baseline;
        background: none;
        padding: 10px 12px;
		margin: 5px 0 5px;
		border-radius: 6px;
        position: relative; /* kotva pro oddělovací linku ::after */
    }

    /* Oddělovací linka je pevně šedá - záměrně nepřebírá barvu rámečku
       z nastavení. Kreslí se ::after DOPROSTŘED mezery mezi bloky (margin
       5px + 5px), takže se jí podbarvení řádku nedotýká. */
    .ka-seznam--radky .ka-akce::after {
        content: '';
        position: absolute;
        left: 0;
        right: 0;
        bottom: -5px;
        border-bottom: 1px solid #dedede;
    }

    .ka-seznam--radky .ka-akce:last-child::after {
        content: none;
    }

    /* Důležitá akce v řádcích - trvalé světle červené pozadí bloku
       (hover má vyšší specificitu a řádek normálně podbarví) */
    .ka-seznam--radky .ka-akce--dulezita {
        background: #fdecec;
    }

    /* Najetí myší podbarví celý řádek (čtecí pomůcka jako u tabulek) */
    .ka-seznam--radky .ka-akce:hover {
        background: #ffeecd;
    }

    /* Řádek s přílohou je celý klikací - klik přeposílá JS na skrytý
       odkaz náhledu (obrázek -> lightbox, PDF -> nové okno) */
    .ka-seznam--radky .ka-akce:has(a.ka-nahled) {
        cursor: pointer;
    }

    /* Náhledy do textového seznamu nepatří */
    .ka-seznam--radky .ka-nahled {
        display: none;
    }

    /* Obal textů se "rozpustí", aby datum/místo/název byly buňkami mřížky */
    .ka-seznam--radky .ka-info {
        display: contents;
    }

    .ka-seznam--radky .ka-datum { grid-row: 1; grid-column: 1; }
    .ka-seznam--radky .ka-misto { grid-row: 1; grid-column: 2; }
    .ka-seznam--radky .ka-nazev { grid-row: 1; grid-column: 3; }

    /* Typ akce jako poslední sloupec - jen text menším písmem, bez barevného
       štítku (přebíjí pill styly včetně barev druhů .ka-stitek--{slug}) */
    .ka-seznam--radky .ka-stitek {
        grid-row: 1;
        grid-column: 4;
        display: block;
        margin: 0 !important;
        padding: 0 !important;
        background: none !important;
		border: none !important;
        border-radius: 0;
        font-size: 14px !important;
        font-weight: 500 !important;
        line-height: 1.6 !important;
        letter-spacing: 0 !important;
        color: #777 !important;
    }

    /* Jednotná černobílá typografie - záměrně NEpřebírá nastavitelné
       proměnné karet (seznam má být prostý a tiskový) */
    .ka-seznam--radky .ka-nazev,
    .ka-seznam--radky .ka-datum,
    .ka-seznam--radky .ka-misto {
        margin: 0 !important;
        padding: 0 !important;
        font-size: 17px !important;
        font-weight: 500 !important;
        line-height: 1.6 !important;
        letter-spacing: 0 !important;
        text-align: left !important;
        text-transform: none !important;
        color: #1a1a1a !important;
    }

    .ka-seznam--radky .ka-misto {
        color: #444 !important;
    }

    .ka-seznam--radky .ka-datum {
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
    }
}

/* Zamčený kalendář JEDNÉ OBCE (?zamek=1, viz shortcodes.php) - místo konání
   je pak u každé akce triviální informace, schová se. Karty i řádky sdílí
   stejný markup, takže stačí jedno pravidlo; sloupec řádků se navíc zúží,
   ať po zmizelém místě nezůstane prázdná mezera. */
.ka-kalendar--bez-mista .ka-misto {
    display: none;
}

@media (min-width: 768px) {
    .ka-kalendar--bez-mista .ka-seznam--radky .ka-akce {
        grid-template-columns: 150px 1fr auto;
    }

    .ka-kalendar--bez-mista .ka-seznam--radky .ka-datum { grid-column: 1; }
    .ka-kalendar--bez-mista .ka-seznam--radky .ka-nazev { grid-column: 2; }
    .ka-kalendar--bez-mista .ka-seznam--radky .ka-stitek { grid-column: 3; }
}

/* ---------- Měsíční mřížka (třetí zobrazení, vzor sluzebky-dovca) ---------- */

.ka-seznam--mrizka {
    display: block;
    margin-top: 40px;
}

.ka-mrizka-navigace {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin: 0 0 14px;
}

.ka-mrizka-titulek {
    min-width: 170px;
    font-size: 20px;
    font-weight: 600;
    color: #1e293b;
    text-align: center;
}

.ka-mrizka-krok {
    width: 34px;
    height: 34px;
    padding: 0;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    background: #fff;
    color: #64748b;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s;
}

.ka-mrizka-krok:hover {
    background: #f1f5f9;
}

.ka-mrizka-tabulka {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    border: 1px solid #c9c9c9;
    border-radius: 6px;
    overflow: hidden;
    background: #fff;
}

.ka-mrizka-zahlavi {
    padding: 10px 4px;
    background: #e0f0ff;
    border-bottom: 1px solid #c9c9c9;
    color: #1e293b;
    font-size: 13px;
    font-weight: 600;
    text-align: center;
}

/* Bílé oddělovače mezi buňkami záhlaví (Vaškovo doladění) - jen mezi nimi,
   levý+pravý na každé buňce by se u krajů pral s rámečkem tabulky */
.ka-mrizka-zahlavi + .ka-mrizka-zahlavi {
    border-left: 1px solid #fff;
}

.ka-mrizka-den {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-height: 110px;
    min-width: 0; /* jinak CSS Grid nechá sloupec narůst na šířku nejdelšího
                     nezalomeného názvu akce (automatic minimum size = min-
                     content, dokud je overflow: visible) - text-overflow:
                     ellipsis na .ka-mrizka-akce se tak nikdy nestihne
                     uplatnit a sloupce jsou nestejně široké */
    padding: 6px;
    border-right: 1px solid #ededed;
    border-bottom: 1px solid #ededed;
}

.ka-mrizka-tabulka > *:nth-child(7n) {
    border-right: 0;
}

.ka-mrizka-den--prazdny {
    background: #f9f9f9;
}

.ka-mrizka-den--vikend {
    background: #fffcf2;
}

.ka-mrizka-den--dnes {
    background: #fff9ce;
}

.ka-mrizka-cislo {
    margin: 0 0 2px;
    font-size: 13px;
    font-weight: 600;
    color: #333;
}

.ka-mrizka-akce {
    display: block;
    padding: 5px 6px;
    border-radius: 4px;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-decoration: none;
}

/* Pastelové pozadí dle druhu akce (paleta štítků karet), tmavší texty
   pro čitelnost (Vaškovo doladění) */
/* Důležitá akce - okraj proužku (box-sizing border-box, rozměry proužku se
   borderem nemění); platí i přes hover plné barvy. Stejná proměnná jako
   u karet (--ka-dulezita-okraj-*) - jedno nastavení pro obě zobrazení. */
.ka-mrizka-akce--dulezita {
    border: var(--ka-dulezita-okraj-sirka) solid var(--ka-dulezita-okraj-barva);
}

.ka-mrizka-akce--kulturni    { background: #dbeafe; color: #0040ED !important; }
.ka-mrizka-akce--sportovni   { background: #dcfce7; color: #00782C !important; }
.ka-mrizka-akce--spolecenska { background: #fde047; color: #5C2C00 !important; }
.ka-mrizka-akce--prednaska   { background: #f3e8ff; color: #6900C4 !important; }
.ka-mrizka-akce--ostatni     { background: #fecdd3; color: #A30F2F !important; }

/* Hover = plná barva s bílým textem - jen u ODKAZŮ (a...), akce bez přílohy
   je span a klikat na ni nejde, tak ať klikatelně nevypadá */
a.ka-mrizka-akce:hover {
    color: #fff !important;
    text-decoration: none;
}

a.ka-mrizka-akce--kulturni:hover    { background: #005ED9; }
a.ka-mrizka-akce--sportovni:hover   { background: #008F32; }
a.ka-mrizka-akce--spolecenska:hover { background: #ff6c00; }
a.ka-mrizka-akce--prednaska:hover   { background: #8B4ACF; }
a.ka-mrizka-akce--ostatni:hover     { background: #A61224; }

/* ---------- Mobil: pouze karty, přepínač skrytý ---------- */

@media (max-width: 767px) {
    /* Přepínače zobrazení a tisk na mobilu nejsou; zrušení filtrů ZŮSTÁVÁ
       (skrývají se jednotlivá tlačítka, ne celá lišta) */
    .ka-prepinac button {
        display: none;
    }

    .ka-prepinac .ka-prepinac-zrusit {
        display: flex;
        margin-right: 0; /* odstup od skrytých sousedů nedává smysl */
    }

    /* Řádkový výpis se na mobilu nepoužívá - vynutit karty */
    .ka-seznam--radky {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
        gap: 14px;
    }

    .ka-seznam--radky .ka-akce {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 0;
        border: var(--ka-okraj-sirka) solid var(--ka-okraj-karty);
        border-radius: var(--ka-zaobleni);
        overflow: hidden;
        box-shadow: var(--ka-stin);
    }

    .ka-seznam--radky .ka-nahled {
        flex: none;
    }

    .ka-seznam--radky .ka-nahled img,
    .ka-seznam--radky .ka-nahled--pdf,
    .ka-seznam--radky .ka-nahled--prazdny {
        width: 100%;
        height: auto;
        aspect-ratio: var(--ka-pomer-nahledu);
        border-radius: 0;
    }

    .ka-seznam--radky .ka-info {
        display: block;
        padding: 0 14px 14px;
        text-align: center;
    }

    .ka-seznam--radky .ka-stitek {
        display: table;
        margin: -11px auto 8px;
    }

    .ka-seznam--karty {
        grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
        gap: 14px;
    }
}

/* ---------- Lightbox (vlastní, vzhled dle pluginu Moje Galerie) ---------- */

.ka-lightbox {
    display: none;
    position: fixed;
    z-index: 999999;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.85);
    animation: ka-fadein 0.3s;
}

.ka-lightbox.aktivni {
    display: flex;
    align-items: center;
    justify-content: center;
}

@keyframes ka-fadein {
    from { opacity: 0; }
    to { opacity: 1; }
}

.ka-lightbox-obsah {
    position: relative;
    background: #fff;
    padding: 0;
    box-shadow: 0 0 25px rgba(0, 0, 0, 0.5);
    max-width: 85%;
    max-height: 85%;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto;
    border: 6px solid white;
}

.ka-lightbox-obrazek {
    max-width: 100%;
    max-height: 80vh;
    object-fit: contain;
    display: block;
    margin: 0;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

/* Dvojice tlačítek je vycentrovaná na střed monitoru: křížek kousek
   vpravo od středu, nové okno kousek vlevo (40px tlačítka, 16px mezera) */
.ka-lightbox-zavrit {
    position: absolute;
    top: 25px;
    left: calc(50% + 8px);
    right: auto;
    color: #fff;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 1000000;
    transition: transform 0.3s;
    line-height: 0; /* ikona je SVG, flex ji centruje přesně */
    background-color: #890000;
    border-radius: 50px;
    /*border: 2px solid gray;*/
}

.ka-lightbox-zavrit:hover {
    transform: scale(1.1);
    background-color: red;
    border: 0;
}

/* Otevření v novém okně (tisk plakátu) - kolečko vedle křížku */
.ka-lightbox-nove-okno {
    position: absolute;
    top: 25px;
    left: calc(50% - 48px);
    right: auto;
    color: #fff !important;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 1000000;
    transition: transform 0.3s, background-color 0.3s;
    background-color: #0080ff;
    border-radius: 50px;
    /*border: 2px solid gray;*/
    text-decoration: none;
}

.ka-lightbox-nove-okno:hover {
    transform: scale(1.1);
    background-color: #0069ff;
    border: 0;
    color: #fff;
}

.ka-lightbox-predchozi,
.ka-lightbox-dalsi {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    color: #fff;
    font-size: 50px;
    cursor: pointer;
    width: 60px;
    height: 100px;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
    z-index: 1000000;
    user-select: none;
    text-shadow: 0 2px 5px rgba(0, 0, 0, 0.5);
}

.ka-lightbox-predchozi { left: 30px; }
.ka-lightbox-dalsi { right: 30px; }

.ka-lightbox-predchozi:hover,
.ka-lightbox-dalsi:hover {
    transform: translateY(-50%) scale(1.2);
}

/* Na první/poslední fotce se krajní šipka schová (bez nekonečné smyčky) */
.ka-lightbox-predchozi.ka-sipka-skryta,
.ka-lightbox-dalsi.ka-sipka-skryta {
    display: none;
}

/* Počítadlo "aktuální / celkem" dole uprostřed */
.ka-lightbox-pocitadlo {
    position: absolute;
    bottom: 25px;
    left: 50%;
    transform: translateX(-50%);
    color: #fff;
    font-size: 15px;
    letter-spacing: 1px;
    background: rgba(0, 0, 0, 0.55);
    padding: 6px 16px;
    border-radius: 20px;
    z-index: 1000000;
    user-select: none;
    pointer-events: none;
}

@media (max-width: 767px) {
    .ka-lightbox-predchozi,
    .ka-lightbox-dalsi {
        width: 40px;
        height: 60px;
        font-size: 30px;
        background: rgba(0, 0, 0, 0.3);
        border-radius: 4px;
        left: 10px;
    }

    .ka-lightbox-dalsi {
        left: auto;
        right: 10px;
    }

    .ka-lightbox-zavrit {
        top: 10px;
        left: calc(50% + 8px);
        width: 40px;
        height: 40px;
    }

    .ka-lightbox-nove-okno {
        top: 10px;
        left: calc(50% - 48px);
        width: 40px;
        height: 40px;
    }

    .ka-lightbox-obsah {
        max-width: 95%;
        max-height: 80%;
    }

    .ka-lightbox-pocitadlo {
        bottom: 12px;
        font-size: 13px;
        padding: 4px 12px;
    }
}

/* ---------- Tisk (ikona tiskárny v liště volá window.print) ----------
   Tiskne se JEN kalendář v aktuálním stavu - vyfiltrované akce v aktivním
   zobrazení (karty/seznam). Zbytek stránky (hlavička/patička webu) se
   skrývá. Velikosti jsou proti obrazovce zmenšené, ať se toho na A4 vejde
   hodně. POZOR: tisková stránka A4 je široká jen ~190 mm (~718 px), platila
   by tedy mobilní větev (< 768 px) - proto se tu layouty definují znovu
   a naplno (tiskový blok je v souboru POSLEDNÍ, přebíjí mobilní pravidla). */

@media print {
    @page {
        size: A4 portrait;
        /* nahoře víc vzduchu, po stranách úsporně (Vaškovo doladění) */
        margin: 10mm 0mm 10mm;
    }

    /* Z celé stránky se tiskne jen kalendář */
    body * {
        visibility: hidden;
    }

    .ka-kalendar,
    .ka-kalendar * {
        visibility: visible;
    }

    .ka-kalendar {
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
    }

    .ka-filtry {
        display: none !important;
    }

    .ka-kalendar .ka-kalendar-nadpis {
        font-size: 18px !important;
        margin: 0 0 6mm !important;
        padding: 0 0 3mm !important;
    }

    .ka-akce {
        break-inside: avoid;
    }

    /* Karty: menší a hustší - 4 sloupce na A4 */
    .ka-seznam--karty {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        gap: 5mm;
    }

    .ka-seznam--karty .ka-akce {
        box-shadow: none;
        border: 1px solid var(--ka-okraj-karty);
    }

    .ka-seznam--karty .ka-info  { padding: 0 8px 8px; }
    .ka-seznam--karty .ka-nazev { font-size: 12px !important; margin: 8px 0 4px !important; }
    .ka-seznam--karty .ka-datum { font-size: 10px !important; }
    .ka-seznam--karty .ka-misto { font-size: 11px !important; margin: 2px 0 0; }
    .ka-seznam--karty .ka-stitek { font-size: 9px !important; margin: -9px auto 4px; }

    /* Textový seznam: kompaktní tabulka (kompletní definice - mobilní
       pravidla by ho na šířce tisku přemapovala na karty) */
    .ka-seznam--radky {
        display: flex;
        flex-direction: column;
        gap: 0;
    }

    .ka-seznam--radky .ka-akce {
        display: grid;
        grid-template-columns: 26mm 34mm 1fr auto;
        gap: 0 5mm;
        align-items: baseline;
        background: none;
        padding: 2.2mm 0;
        border: 0;
        border-bottom: 1px solid #dedede;
        border-radius: 0;
        box-shadow: none;
        overflow: visible;
    }

    .ka-seznam--radky .ka-akce:last-child {
        border-bottom: 0;
    }

    .ka-seznam--radky .ka-nahled {
        display: none !important;
    }

    .ka-seznam--radky .ka-info {
        display: contents;
    }

    .ka-seznam--radky .ka-datum { grid-row: 1; grid-column: 1; }
    .ka-seznam--radky .ka-misto { grid-row: 1; grid-column: 2; }
    .ka-seznam--radky .ka-nazev { grid-row: 1; grid-column: 3; }

    .ka-seznam--radky .ka-nazev,
    .ka-seznam--radky .ka-datum,
    .ka-seznam--radky .ka-misto {
        margin: 0 !important;
        padding: 0 !important;
        font-size: 11px !important;
        font-weight: 500 !important;
        line-height: 1.5 !important;
        letter-spacing: 0 !important;
        text-align: left !important;
        text-transform: none !important;
        color: #1a1a1a !important;
    }

    .ka-seznam--radky .ka-misto {
        color: #444 !important;
    }

    .ka-seznam--radky .ka-datum {
        font-variant-numeric: tabular-nums;
        white-space: nowrap;
    }

    .ka-seznam--radky .ka-stitek {
        grid-row: 1;
        grid-column: 4;
        display: block;
        margin: 0 !important;
        padding: 0 !important;
        background: none !important;
        border-radius: 0;
        font-size: 9.5px !important;
        font-weight: 500 !important;
        line-height: 1.5 !important;
        letter-spacing: 0 !important;
        color: #777 !important;
    }

    /* Zamčený kalendář jedné obce - stejná úprava sloupců jako na obrazovce */
    .ka-kalendar--bez-mista .ka-seznam--radky .ka-akce {
        grid-template-columns: 26mm 1fr auto;
    }

    .ka-kalendar--bez-mista .ka-seznam--radky .ka-datum { grid-column: 1; }
    .ka-kalendar--bez-mista .ka-seznam--radky .ka-nazev { grid-column: 2; }
    .ka-kalendar--bez-mista .ka-seznam--radky .ka-stitek { grid-column: 3; }

    /* Měsíční mřížka: kompaktní tisk, šipky pryč, texty se lámou */
    .ka-mrizka-krok {
        display: none;
    }

    .ka-mrizka-navigace {
        margin: 0 0 4mm;
    }

    .ka-mrizka-titulek {
        font-size: 15px;
    }

    .ka-mrizka-zahlavi {
        padding: 2mm 1mm;
        font-size: 10px;
    }

    .ka-mrizka-den {
        min-height: 22mm;
        padding: 1.5mm;
        break-inside: avoid;
    }

    .ka-mrizka-cislo {
        font-size: 10px;
    }

    .ka-mrizka-akce {
        padding: 0.5mm 1mm;
        font-size: 8.5px;
        white-space: normal;
    }

    /* Barevné prvky se tisknou barevně */
    .ka-seznam--karty .ka-stitek,
    .ka-mrizka-akce,
    .ka-mrizka-den--dnes,
    .ka-mrizka-den--vikend,
    .ka-nahled--pdf,
    .ka-nahled--prazdny {
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
}
