/*
 * Vánoční festival zlozvyků 2026 — design systém a styly webu.
 *
 * Návrh je kreslený na šířku 1440 px. Od 900 px se rozměry z návrhu zapisují
 * jako calc(N * var(--u)) a pod 1440 px se stránka plynule zmenšuje (stejně
 * jako upoutávka). Mobil a tablet mají vlastní hodnoty v px.
 *
 * Komponenty se skládají z tokenů níže; jejich přehled je na /styleguide.
 */

@font-face {
    font-family: 'Topol';
    src: url('../fonts/topol-regular.woff2') format('woff2');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Topol';
    src: url('../fonts/topol-bold.woff2') format('woff2');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

/* ── Tokeny ──────────────────────────────────── */

:root {
    /* barvy */
    --cervena:    #d12229;
    --cerna:      #000000;
    --bila:       #ffffff;
    --seda:       #e6e6e6;   /* pozadí podstránek */
    --seda-tmava: #454545;   /* nadpisy podstránek */
    --seda-linka: #b3b3b3;   /* oddělovače */

    --pismo: 'Topol', 'Helvetica Neue', Helvetica, Arial, sans-serif;

    /* typografická škála – v návrhu 75 / 50 / 30 / 25 / 20 / 15 px */
    --t-75: 44px;
    --t-50: 34px;
    --t-30: 24px;
    --t-25: 15px;
    --t-20: 17px;
    --t-15: 13px;

    /* mřížka – v návrhu okraj 160, obsah 1120, mezera 50 */
    --u:      1px;
    --okraj:  16px;
    --mezera: 16px;
    --rohy:   16px;

    /* tlačítko – v návrhu výška 39, písmo 20 */
    --tlacitko-vyska: 40px;
    --tlacitko-okraj: 18px;

    --hlavicka-vyska: 88px;
}

@media (min-width: 600px) {
    :root {
        --t-75: 56px;
        --t-50: 42px;
        --t-30: 26px;
        --t-25: 18px;
        --t-20: 18px;
        --t-15: 14px;

        --okraj:  24px;
        --mezera: 24px;
        --rohy:   18px;

        --hlavicka-vyska: 104px;
    }
}

@media (min-width: 900px) {
    :root {
        --u: min(1px, 100vw / 1440);

        /* běžný text se pod 1440 px nezmenšuje pod čitelnou mez */
        --t-75: calc(75 * var(--u));
        --t-50: calc(50 * var(--u));
        --t-30: calc(30 * var(--u));
        --t-25: calc(25 * var(--u));
        --t-20: max(15px, calc(20 * var(--u)));
        --t-15: max(12px, calc(15 * var(--u)));

        --okraj:  calc(160 * var(--u));
        --mezera: calc(50 * var(--u));
        --rohy:   calc(20 * var(--u));

        --tlacitko-vyska: calc(39.3 * var(--u));
        --tlacitko-okraj: calc(23 * var(--u));

        --hlavicka-vyska: calc(130 * var(--u));
    }
}

/* ── Základ ──────────────────────────────────── */

*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    -webkit-text-size-adjust: 100%;
}

body {
    background: var(--seda);
    color: var(--cerna);
    font-family: var(--pismo);
    font-size: var(--t-20);
    line-height: 1.2;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
}

.stranka--cervena {
    background: var(--cervena);
    color: var(--bila);
}

img, svg {
    display: block;
    max-width: 100%;
    height: auto;
}

a {
    color: inherit;
}

button {
    font: inherit;
    color: inherit;
    background: none;
    border: 0;
    cursor: pointer;
}

ul[class], ol[class] {
    list-style: none;
}

:focus-visible {
    outline: 3px solid currentColor;
    outline-offset: 3px;
}

/* nadpisy, na které skript přesouvá fokus kvůli čtečkám */
[tabindex="-1"]:focus {
    outline: none;
}

[hidden] {
    display: none !important;
}

.vizualne-skryte {
    position: absolute !important;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.preskocit {
    position: absolute;
    z-index: 300;
    top: 8px;
    left: 8px;
    padding: 8px 14px;
    background: var(--cerna);
    color: var(--bila);
    font-weight: 700;
    text-decoration: none;
    transform: translateY(-200%);
}

.preskocit:focus {
    transform: none;
}

/* obsahový sloupec 1120 px s okraji 160 px */
.obal {
    width: 100%;
    max-width: calc(1440 * var(--u));
    margin-inline: auto;
    padding-inline: var(--okraj);
}

main {
    display: block;
    padding-bottom: calc(var(--okraj) * 1.5);
}

/* ── Typografie ──────────────────────────────── */

.nadpis-stranky {
    color: var(--seda-tmava);
    font-size: var(--t-50);
    font-weight: 700;
    line-height: 1;
    text-transform: uppercase;
    letter-spacing: -0.01em;
}

.perex-stranky {
    max-width: 20em;
    margin-top: 0.4em;
    font-size: var(--t-30);
    line-height: 1;
    letter-spacing: -0.01em;
}

.nadpis-karty {
    font-size: var(--t-30);
    font-weight: 700;
    line-height: 1.125;
    letter-spacing: -0.01em;
}

.datum {
    display: block;
    font-size: var(--t-15);
    font-weight: 700;
}

/* text z Panelu (textarea / bloky) */
.text {
    font-size: var(--t-20);
    line-height: 1.3;
    hyphens: auto;
    -webkit-hyphens: auto;
}

.text > * + * {
    margin-top: 1em;
}

.text h2,
.text h3 {
    font-size: var(--t-30);
    font-weight: 700;
    line-height: 1.125;
    text-transform: uppercase;
}

.text * + h2,
.text * + h3 {
    margin-top: 1.4em;
}

.text strong {
    font-weight: 700;
}

.text ul,
.text ol {
    padding-left: 1.2em;
}

.text li + li {
    margin-top: 0.3em;
}

.text a:hover {
    color: var(--cervena);
}

.text blockquote {
    padding-left: 1em;
    border-left: 3px solid var(--cervena);
    font-weight: 700;
}

.text figure img {
    width: 100%;
    border-radius: var(--rohy);
}

.text figcaption {
    margin-top: 0.5em;
    font-size: var(--t-15);
}

/* ── Tlačítko ────────────────────────────────── */

.tlacitko {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: var(--tlacitko-vyska);
    padding: 0.1em var(--tlacitko-okraj) 0;
    border-radius: 999px;
    background: var(--cerna);
    color: var(--bila);
    font-size: var(--t-20);
    font-weight: 700;
    line-height: 1;
    text-transform: uppercase;
    text-decoration: none;
    white-space: nowrap;
    transition: transform 0.15s ease;
}

.tlacitko:hover {
    transform: scale(1.05);
}

.tlacitko--bila {
    background: var(--bila);
    color: var(--cerna);
}

.tlacitko--cervena {
    background: var(--cervena);
    color: var(--bila);
}

/* ── Ikony ───────────────────────────────────── */

.ikona {
    display: block;
    width: 100%;
    height: auto;
    fill: currentColor;
}

.sipka {
    display: block;
    width: 36px;
    padding: 4px;
    line-height: 0;
    transition: transform 0.15s ease;
}

.sipka--vlevo:hover  { transform: translateX(-4px); }
.sipka--vpravo:hover { transform: translateX(4px); }

.socialni {
    display: flex;
    gap: 8px;
}

.socialni a {
    display: block;
    width: 44px;
    transition: transform 0.15s ease;
}

.socialni a:hover {
    transform: scale(1.06);
}

.socialni .ikona {
    fill: var(--cerna);
}

/* ── Hlavička ────────────────────────────────── */

.hlavicka {
    position: relative;
    z-index: 100;
    display: flex;
    align-items: center;
    gap: 12px;
    max-width: calc(1440 * var(--u));
    height: var(--hlavicka-vyska);
    margin-inline: auto;
    padding: 0 var(--okraj);
}

.hlavicka__logo {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-right: auto;
    color: var(--cerna);
    font-size: var(--t-25);
    font-weight: 700;
    line-height: 0.96;
    letter-spacing: -0.02em;
    text-decoration: none;
}

.hlavicka__logo img {
    width: 64px;
}

.menu__polozky a {
    font-size: var(--t-20);
    font-weight: 700;
    text-transform: uppercase;
    text-decoration: none;
    letter-spacing: -0.03em;
}

/* podstránky: položky červené, aktuální černá */
.menu__polozky a {
    color: var(--cervena);
}

.hlavicka--cervena .menu__polozky a {
    color: var(--bila);
}

.menu__polozky a:hover,
.menu__polozky a[aria-current] {
    color: var(--cerna) !important;
}

.hlavicka__rezervace[aria-current] {
    background: var(--cervena);
    color: var(--bila);
}

.hlavicka__prepinac {
    height: var(--tlacitko-vyska);
    padding: 0.1em 4px 0;
    font-size: var(--t-20);
    font-weight: 700;
    text-transform: uppercase;
}

.hlavicka--cervena .hlavicka__prepinac {
    color: var(--bila);
}

.hlavicka__prepinac[aria-expanded="true"] .hlavicka__prepinac-text,
.hlavicka__prepinac[aria-expanded="false"] .hlavicka__prepinac-zavrit {
    display: none;
}

/* mobil a tablet: menu přes celou obrazovku */
@media (max-width: 899px) {
    .menu {
        display: none;
        position: fixed;
        inset: 0;
        z-index: -1;
        padding: calc(var(--hlavicka-vyska) + 24px) var(--okraj) 40px;
        overflow-y: auto;
        background: var(--cervena);
    }

    .menu-otevrene .menu {
        display: block;
    }

    .menu-otevrene body {
        overflow: hidden;
    }

    .menu-otevrene .hlavicka__prepinac {
        color: var(--bila);
    }

    .menu__polozky li + li {
        margin-top: 14px;
    }

    .menu__polozky a {
        color: var(--bila);
        font-size: 30px;
        line-height: 1;
    }
}

/* ── Patička ─────────────────────────────────── */

.paticka {
    overflow: hidden;
    background: var(--bila);
    color: var(--cerna);
}

.paticka__obsah {
    display: flex;
    flex-direction: column-reverse;
    gap: 40px;
    max-width: calc(1440 * var(--u));
    margin-inline: auto;
    padding: 40px var(--okraj) 0;
}

.paticka__nadpis {
    width: 100%;
    max-width: 647px;
    margin-bottom: -1%;
}

.paticka__velke {
    font-size: 22px;
    font-weight: 700;
    line-height: 1.04;
}

.paticka__velke + .paticka__velke {
    margin-top: 0.75em;
}

.paticka__velke a {
    text-decoration: none;
}

.paticka__velke a:hover,
.paticka__poradatele a:hover {
    text-decoration: underline;
}

.paticka__poradatele {
    margin-top: 10px;
    font-size: var(--t-15);
    font-weight: 700;
    line-height: 1.33;
}

.paticka__poradatele ul {
    list-style: none;
}

.paticka__socialni {
    margin-top: 14px;
}

.paticka__socialni a {
    width: 42px;
}

.paticka__copy {
    margin-top: 14px;
    font-size: var(--t-15);
    font-weight: 700;
}

/* ── Mřížka a karty ──────────────────────────── */

.mrizka {
    display: grid;
    gap: var(--mezera);
}

/* karty v jedné řadě mají stejnou výšku */
.mrizka > li > .karta {
    height: 100%;
}

.karta {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border-radius: var(--rohy);
    background: var(--bila);
    color: var(--cerna);
}

/* overflow: hidden – jinak by vysoká fotka poměr stran přetáhla */
.karta__foto {
    position: relative;
    overflow: hidden;
    aspect-ratio: 340.8 / 235.9;
    background: var(--cervena);
}

.karta__foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.karta__telo {
    padding: 14px 14px 18px;
}

.karta .nadpis-karty {
    text-transform: uppercase;
}

.karta__perex {
    display: -webkit-box;
    margin-top: 0.7em;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 6;
    hyphens: auto;
    -webkit-hyphens: auto;
}

a.karta {
    text-decoration: none;
}

a.karta:hover .nadpis-karty {
    text-decoration: underline;
    text-decoration-thickness: 0.06em;
    text-underline-offset: 0.1em;
}

/* ── Úvod: erby dnů ──────────────────────────── */

.uvod {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    justify-items: center;
    max-width: calc(1440 * var(--u));
    margin-inline: auto;
    padding: 8px var(--okraj) 48px;
}

.uvod__nadpis {
    grid-column: 1 / -1;
    width: 100%;
}

.uvod__nadpis img {
    width: 100%;
}

/* jeden den = erb + text; skrytý přes [hidden] */
.dny__den {
    display: contents;
}

.dny__stit {
    grid-row: 2;
    grid-column: 2;
    z-index: 1;
    width: min(62vw, 300px);
    margin-top: calc((100vw - 2 * var(--okraj)) * -0.045);
}

.dny__text {
    grid-row: 3;
    grid-column: 1 / -1;
    margin-top: 12px;
    font-size: var(--t-30);
    font-weight: 700;
    line-height: 1.125;
    text-align: center;
    text-transform: uppercase;
}

.dny__tema {
    display: block;
    margin-top: 0.5em;
    font-size: var(--t-15);
    text-transform: none;
}

.dny__sipka {
    grid-row: 2;
    color: var(--bila);
}

.dny__sipka--vlevo {
    grid-column: 1;
    justify-self: start;
}

.dny__sipka--vpravo {
    grid-column: 3;
    justify-self: end;
}

/* mobil: dvě řady po dvanácti */
.dny__cisla {
    grid-row: 4;
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(12, auto);
    gap: 6px 8px;
    margin-top: 24px;
}

.dny__cislo {
    min-width: 1.1em;
    font-size: var(--t-20);
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
}

.dny__cislo:hover,
.dny__cislo[aria-current] {
    color: var(--cerna);
}

.uvod__socialni {
    grid-row: 5;
    grid-column: 1 / -1;
    margin-top: 28px;
}

/* ── Výpis aktualit ──────────────────────────── */

.aktuality {
    padding-top: 8px;
}

/* ── Detail aktuality ────────────────────────── */

.clanek__foto {
    overflow: hidden;
    aspect-ratio: 1120 / 714;
    border-radius: var(--rohy);
    background: var(--bila);
}

.clanek__foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.clanek__hlava {
    margin-top: 24px;
    text-align: center;
}

.clanek__hlava .nadpis-karty {
    text-transform: uppercase;
}

.clanek__hlava .datum {
    margin-top: 0.2em;
}

.clanek__text {
    max-width: 727px;
    margin: 20px auto 0;
}

.galerie {
    display: grid;
    gap: var(--mezera);
    margin-top: 40px;
}

.galerie a {
    display: block;
    overflow: hidden;
    aspect-ratio: 535 / 360;
    border-radius: var(--rohy);
    background: var(--bila);
    cursor: zoom-in;
}

.galerie img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.4s ease;
}

.galerie a:hover img {
    transform: scale(1.03);
}

/* ── Dárky ───────────────────────────────────── */

.hlava-stranky {
    margin-bottom: 32px;
}

.darek__foto {
    position: relative;
    overflow: hidden;
    aspect-ratio: 535.8 / 354;
    background: var(--bila);
}

.darek__foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.darek__dalsi {
    position: absolute;
    top: 50%;
    right: 10px;
    width: 40px;
    padding: 4px;
    color: var(--cervena);
    transform: translateY(-50%);
    transition: transform 0.15s ease;
}

.darek__dalsi:hover {
    transform: translate(4px, -50%);
}

.darek .karta__telo {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 16px 18px 20px;
}

.darek__hlava {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
}

.darek__cena {
    flex: none;
    font-size: var(--t-30);
    font-weight: 700;
}

.darek__podnazev {
    margin-top: 0.15em;
    font-weight: 700;
}

.darek__text {
    margin-top: 1.1em;
    hyphens: auto;
    -webkit-hyphens: auto;
}

/* tlačítko drží u spodního okraje, ať jsou v řadě karet na stejné výšce */
.darek__koupit-obal {
    margin-top: auto;
    padding-top: 24px;
}

/* ── Program ─────────────────────────────────── */

.dny-seznam {
    display: grid;
    gap: var(--mezera);
    grid-template-columns: repeat(2, 1fr);
}

.dny-seznam__den {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 18px 12px 20px;
    border-radius: var(--rohy);
    background: var(--cervena);
    color: var(--bila);
    font-weight: 700;
    text-align: center;
}

.dny-seznam__den img {
    width: 72%;
    margin-bottom: 12px;
}

.dny-seznam__slogan {
    margin-top: 0.2em;
    font-size: var(--t-20);
    line-height: 1.1;
    text-transform: uppercase;
}

.dny-seznam__tema {
    margin-top: 0.4em;
    font-size: var(--t-15);
}

/* ── Textová stránka ─────────────────────────── */

.stranka-text__foto {
    overflow: hidden;
    margin-bottom: 32px;
    border-radius: var(--rohy);
}

.stranka-text__foto img {
    width: 100%;
}

.stranka-text .text {
    max-width: 727px;
}

/* ── Rezervace ───────────────────────────────── */
/* Návrh rezervace je kreslený na 1024 px; rozměry jsou převedené na škálu webu. */

.stranka--bila {
    background: var(--bila);
}

.rez-nadpis {
    color: var(--cerna);
}

.rez-upozorneni {
    margin-bottom: 24px;
    padding: 12px 16px;
    border-radius: var(--rohy);
    background: var(--seda);
    font-size: var(--t-15);
    font-weight: 700;
}

.rez-zprava {
    margin-top: 16px;
    font-size: var(--t-15);
    font-weight: 700;
}

.rez-zprava:empty {
    display: none;
}

.rez-zprava--chyba {
    color: var(--cervena);
}

.rez-zpet {
    margin-top: 16px;
    color: var(--cervena);
    font-size: var(--t-20);
    font-weight: 700;
    text-transform: uppercase;
}

.rez-zpet::before {
    content: '← ';
}

/* kalendář */

.rez-dvojice {
    display: grid;
    gap: 32px;
}

.kalendar__mesic {
    margin-bottom: 0.7em;
    font-size: var(--t-30);
    text-transform: uppercase;
}

.kalendar__mrizka {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
}

.kalendar__mrizka > * {
    border-bottom: 1px solid var(--cervena);
}

.kalendar__mrizka > :not(:nth-child(7n + 1)) {
    border-left: 1px solid var(--cervena);
}

.kalendar__hlavicka,
.kalendar__den {
    padding: 0 0 4px 6px;
    font-size: var(--t-30);
    line-height: 1;
    text-align: left;
}

.kalendar__den {
    display: flex;
    align-items: flex-end;
    aspect-ratio: 1 / 1.05;
    font-variant-numeric: tabular-nums;
}

.kalendar__den:disabled {
    color: var(--seda-linka);
    cursor: default;
}

.kalendar__den:not(:disabled):hover {
    color: var(--cervena);
}

.kalendar__den.is-dnes,
.kalendar__den.is-vybrany {
    background: var(--cervena);
    color: var(--bila) !important;
}

.kalendar__den.is-vybrany {
    box-shadow: inset 0 0 0 2px var(--cerna);
}

.rez-nahled {
    display: none;
}

.rez-nahled__tema {
    font-size: var(--t-30);
    text-align: center;
}

.rez-nahled__stit {
    width: 100%;
    max-width: 300px;
    margin: 12px auto 0;
}

/* čas, kdo, bio */

.rez-hlava {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
}

.rez-hlava__stit {
    flex: none;
    width: 72px;
}

.rez-sloupce {
    display: grid;
    gap: 28px;
    margin-top: 24px;
}

.rez-sloty__popis,
.rez-sloupec-nadpis {
    margin-bottom: 6px;
    font-size: var(--t-15);
    line-height: 1;
}

.rez-sloty__popis {
    padding-right: 14px;
    text-align: right;
}

.rez-sloupec-nadpis {
    font-weight: 700;
}

.rez-seznam {
    display: grid;
    gap: 10px;
}

.pilulka {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: var(--tlacitko-vyska);
    padding: 0.1em 16px 0;
    border-radius: 999px;
    background: #d9d9d9;
    font-size: var(--t-15);
    line-height: 1.1;
    text-align: center;
    transition: background-color 0.15s ease;
}

.pilulka--svetla {
    background: var(--seda);
}

.pilulka:not(:disabled):hover {
    background: #c9c9c9;
}

.pilulka[aria-pressed="true"],
.pilulka[aria-pressed="true"]:hover {
    background: var(--cervena);
    color: var(--bila);
    box-shadow: inset 0 0 0 2px var(--cerna);
}

.pilulka:disabled {
    background: none;
    box-shadow: inset 0 0 0 1px #d9d9d9;
    color: var(--seda-linka);
    cursor: default;
}

.slot {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    padding-inline: 16px 14px;
}

.slot__cas,
.slot__pocet {
    font-size: var(--t-30);
    font-variant-numeric: tabular-nums;
}

.slot__cas {
    text-align: left;
}

.slot__akce {
    text-transform: uppercase;
}

.slot__pocet {
    text-align: right;
}

.rez-bio {
    font-size: var(--t-15);
}

.rez-bio__jmeno {
    font-size: var(--t-30);
    line-height: 1.1;
    text-align: center;
}

.rez-bio__popis {
    margin-top: 0.2em;
    text-align: center;
}

.rez-bio__body {
    margin-top: 14px;
    list-style: none;
    line-height: 1.25;
}

.rez-bio__body li {
    position: relative;
    padding-left: 0.8em;
}

.rez-bio__body li::before {
    content: '·';
    position: absolute;
    left: 0;
}

.rez-bio__kde {
    margin-top: 16px;
    font-weight: 700;
}

.rez-bio__dal {
    width: 100%;
    margin-top: 12px;
}

/* shrnutí a formulář */

.rez-shrnuti {
    margin: 28px 0;
    font-size: var(--t-50);
    font-weight: 700;
    line-height: 1.04;
    letter-spacing: -0.01em;
}

.rez-shrnuti span {
    display: block;
}

.rez-shrnuti__den,
.rez-shrnuti__kde {
    text-transform: uppercase;
}

.rez-shrnuti__kdo {
    color: var(--cervena);
}

.rez-formular {
    display: grid;
    gap: 10px;
    max-width: 420px;
}

.pole input {
    width: 100%;
    height: var(--tlacitko-vyska);
    padding: 0.1em 18px 0;
    border: 0;
    border-radius: 999px;
    background: var(--seda);
    color: var(--cerna);
    font: inherit;
    font-size: max(16px, var(--t-15));   /* pod 16 px iOS při psaní zvětšuje stránku */
}

.pole input::placeholder {
    color: var(--cerna);
    opacity: 1;
}

.pole input:focus-visible {
    outline: 2px solid var(--cerna);
    outline-offset: 2px;
}

.pole input[aria-invalid="true"] {
    box-shadow: inset 0 0 0 2px var(--cervena);
}

.pole__chyba,
.souhlas .pole__chyba {
    display: block;
    margin: 4px 18px 0;
    color: var(--cervena);
    font-size: var(--t-15);
    font-weight: 700;
}

.pole-past {
    position: absolute;
    left: -9999px;
}

.souhlas {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
    font-size: 12px;
    line-height: 1.25;
}

.souhlas input {
    flex: none;
    width: 16px;
    height: 16px;
    margin-top: 1px;
    accent-color: var(--cerna);
}

.souhlas span {
    flex: 1;
}

.souhlas .pole__chyba {
    flex-basis: 100%;
    margin: 0 0 0 26px;
}

.rez-odeslat {
    width: 100%;
    margin-top: 8px;
}

.rez-odeslat:disabled {
    opacity: 0.5;
}

.rez-hotovo-text {
    max-width: 727px;
    margin: 24px 0;
}

[data-krok="hotovo"] .perex-stranky {
    max-width: none;
    margin-bottom: 32px;
}

@media (min-width: 900px) {
    .rez-dvojice {
        grid-template-columns: calc(535 * var(--u)) 1fr;
        gap: calc(50 * var(--u));
    }

    .kalendar__hlavicka,
    .kalendar__den {
        padding: 0 0 calc(6 * var(--u)) calc(9 * var(--u));
    }

    .rez-nahled {
        display: block;
        padding-top: calc(10 * var(--u));
    }

    .rez-nahled__stit {
        width: calc(330 * var(--u));
        max-width: none;
        margin-top: calc(16 * var(--u));
    }

    .rez-hlava__stit {
        width: calc(140 * var(--u));
        margin-top: calc(-10 * var(--u));
    }

    .rez-sloupce {
        grid-template-columns: repeat(3, 1fr);
        align-items: start;
        gap: calc(50 * var(--u));
        margin-top: calc(40 * var(--u));
    }

    .rez-seznam {
        gap: calc(12 * var(--u));
    }

    .rez-sloupec-nadpis {
        margin-bottom: calc(6 * var(--u));
        padding-top: calc(15 * var(--u));
    }

    .rez-bio {
        padding-top: calc(21 * var(--u));
    }

    .rez-shrnuti {
        margin: calc(60 * var(--u)) 0 calc(56 * var(--u));
    }

    .rez-formular {
        width: calc(400 * var(--u));
        min-width: 340px;
        gap: calc(12 * var(--u));
    }

    .souhlas {
        font-size: max(11px, calc(13 * var(--u)));
    }
}

/* ── Přehled rezervací (admin) ───────────────── */

.prehled__hlava {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 24px;
}

.prehled__akce {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
}

.prehled__panel {
    font-weight: 700;
}

.prehled__dny {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 24px;
}

.prehled__dny a {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 54px;
    padding: 6px 8px;
    border-radius: 12px;
    background: var(--seda);
    font-size: var(--t-15);
    font-weight: 700;
    text-decoration: none;
}

.prehled__dny a[aria-current] {
    background: var(--cervena);
    color: var(--bila);
}

.prehled__dny small {
    font-weight: 400;
}

.prehled__den {
    margin-bottom: 12px;
    font-size: var(--t-30);
}

.prehled__den small {
    font-size: var(--t-15);
    font-weight: 400;
}

.prehled__obal {
    overflow-x: auto;
}

.prehled__tabulka {
    width: 100%;
    min-width: 900px;
    border-collapse: collapse;
    font-size: 13px;
    line-height: 1.3;
}

.prehled__tabulka th,
.prehled__tabulka td {
    padding: 6px 8px;
    border: 1px solid var(--seda-linka);
    text-align: left;
    vertical-align: top;
}

.prehled__tabulka thead th {
    background: var(--seda);
}

.prehled__tabulka small {
    display: block;
    font-weight: 400;
}

.prehled__tabulka td > * {
    display: block;
}

.prehled__tabulka td.je-obsazeno {
    background: #fbe3e4;
}

.prehled__kdo {
    color: #6b6b6b;
}

.prehled__volno {
    color: #2a7a3b;
}

.prehled__zmena {
    margin-top: 4px;
    color: var(--cervena);
    font-weight: 700;
}

.prehled__zrusit {
    margin-top: 4px;
    color: var(--cervena);
    text-decoration: underline;
}

.prehled__zrusene-nadpis {
    margin: 32px 0 8px;
}

.prehled__zrusene {
    font-size: var(--t-15);
}

@media print {
    .hlavicka,
    .paticka,
    .prehled__akce,
    .prehled__dny,
    .prehled__zrusit,
    .rez-upozorneni {
        display: none !important;
    }

    .prehled__tabulka {
        min-width: 0;
        font-size: 10px;
    }

    .prehled__tabulka td.je-obsazeno {
        background: none;
        font-weight: 700;
    }
}

/* ── Lightbox (z upoutávky) ──────────────────── */

.lightbox {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 200;
    background: rgba(0, 0, 0, 0.96);
    align-items: center;
    justify-content: center;
}

.lightbox.is-open {
    display: flex;
}

.lightbox__img {
    max-width: 92vw;
    max-height: 90vh;
    max-height: 90dvh;
    width: auto;
    object-fit: contain;
    user-select: none;
    pointer-events: none;
}

.lightbox__btn {
    position: absolute;
    z-index: 1;
    width: 56px;
    padding: 12px;
    line-height: 1;
    color: var(--bila);
    opacity: 0.75;
    transition: opacity 0.15s ease;
}

.lightbox__btn:hover {
    opacity: 1;
}

.lightbox__close {
    top: 8px;
    right: 8px;
}

.lightbox__prev,
.lightbox__next {
    top: 50%;
    transform: translateY(-50%);
}

.lightbox__prev { left: 4px; }
.lightbox__next { right: 4px; }

@media (max-width: 599px) {
    .lightbox__img {
        max-height: calc(100dvh - 160px);
    }

    .lightbox__prev,
    .lightbox__next {
        top: auto;
        bottom: 16px;
        transform: none;
    }

    .lightbox__prev { left: calc(50% - 72px); }
    .lightbox__next { right: calc(50% - 72px); }
}

/* ── Design systém (/styleguide) ─────────────── */

.sg section + section {
    margin-top: 56px;
}

.sg > section > h2 {
    margin-bottom: 16px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--seda-linka);
    font-size: var(--t-15);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.sg__barvy {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: var(--mezera);
}

.sg__barva {
    overflow: hidden;
    border-radius: var(--rohy);
    background: var(--bila);
    font-size: var(--t-15);
}

.sg__barva span {
    display: block;
    height: 90px;
    border-bottom: 1px solid var(--seda);
}

.sg__barva p {
    padding: 10px 12px 12px;
}

.sg__barva code,
.sg__pismo code {
    font-family: ui-monospace, Menlo, monospace;
    font-size: 12px;
    font-weight: 400;
}

.sg__pismo > div {
    display: grid;
    gap: 4px 24px;
    padding: 12px 0;
    border-bottom: 1px solid var(--seda-linka);
}

.sg__ukazka {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 16px;
}

.sg__plocha {
    padding: 24px;
    border-radius: var(--rohy);
    background: var(--cervena);
    color: var(--bila);
}

.sg__plocha--bila {
    background: var(--bila);
    color: var(--cerna);
}

/* ── Tablet ──────────────────────────────────── */

@media (min-width: 600px) {
    .hlavicka__logo img {
        width: 84px;
    }

    .sipka {
        width: 48px;
    }

    .socialni a {
        width: 50px;
    }

    .mrizka--3,
    .mrizka--2,
    .galerie {
        grid-template-columns: repeat(2, 1fr);
    }

    .dny-seznam {
        grid-template-columns: repeat(3, 1fr);
    }

    .paticka__velke {
        font-size: 26px;
    }

    .lightbox__prev { left: 16px; }
    .lightbox__next { right: 16px; }
}

/* ── Desktop: rozměry podle návrhu ───────────── */

@media (min-width: 900px) {
    main {
        padding-bottom: calc(160 * var(--u));
    }

    /* Hlavička */

    .hlavicka {
        align-items: flex-start;
        gap: 0;
        padding: calc(28.7 * var(--u)) calc(22.5 * var(--u)) 0 calc(27 * var(--u));
    }

    .hlavicka__logo {
        align-items: flex-start;
        gap: calc(10.3 * var(--u));
        line-height: calc(24.1 * var(--u));
    }

    .hlavicka__logo img {
        width: calc(123 * var(--u));
        margin-top: calc(7.8 * var(--u));
    }

    .hlavicka__logo span {
        margin-top: calc(8.4 * var(--u));
    }

    .menu {
        display: flex;
        align-items: center;
        height: var(--tlacitko-vyska);
        margin-right: calc(25.5 * var(--u));
    }

    .menu__polozky {
        display: flex;
        gap: calc(28.3 * var(--u));
    }

    .menu__polozky a {
        font-size: calc(20 * var(--u));
    }

    .hlavicka__rezervace {
        width: calc(137.4 * var(--u));
        padding-inline: 0;
        font-size: calc(20 * var(--u));
    }

    .hlavicka__prepinac {
        display: none;
    }

    /* Patička */

    .paticka__obsah {
        display: grid;
        grid-template-columns: calc(780 * var(--u)) 1fr;
        align-items: start;
        gap: 0;
        padding-top: calc(40 * var(--u));
    }

    .paticka__nadpis {
        width: calc(646.9 * var(--u));
        max-width: none;
        margin-bottom: calc(-4 * var(--u));
    }

    .paticka__info {
        padding-bottom: calc(37 * var(--u));
    }

    .paticka__velke {
        font-size: calc(28 * var(--u));
        line-height: calc(29 * var(--u));
    }

    .paticka__velke + .paticka__velke {
        margin-top: calc(21 * var(--u));
    }

    .paticka__poradatele {
        margin-top: calc(8 * var(--u));
        line-height: calc(20 * var(--u));
    }

    .paticka__socialni {
        gap: calc(7.2 * var(--u));
        margin-top: calc(12 * var(--u));
    }

    .paticka__socialni a {
        width: calc(42 * var(--u));
    }

    .paticka__copy {
        margin-top: calc(13 * var(--u));
    }

    /* Ikony */

    .sipka {
        width: calc(52.4 * var(--u));
        padding: 0;
    }

    .socialni {
        gap: calc(9.4 * var(--u));
    }

    .socialni a {
        width: calc(54.5 * var(--u));
    }

    /* Karty */

    .mrizka--3 {
        grid-template-columns: repeat(3, 1fr);
        gap: calc(51 * var(--u)) calc(49.2 * var(--u));
    }

    .mrizka--2 {
        grid-template-columns: repeat(2, 1fr);
        gap: calc(60 * var(--u)) calc(49.2 * var(--u));
    }

    .karta__telo {
        padding: calc(10 * var(--u)) calc(13 * var(--u)) calc(20 * var(--u));
    }

    .karta .nadpis-karty {
        font-size: calc(30.4 * var(--u));
        line-height: calc(34.2 * var(--u));
    }

    .karta__perex {
        margin-top: calc(14 * var(--u));
        line-height: calc(24 * var(--u));
    }

    /* Úvod – pozice v souřadnicích návrhu (od spodku hlavičky, tj. y − 130) */

    .uvod {
        display: block;
        position: relative;
        height: calc(700 * var(--u));
        padding: 0;
    }

    .uvod > *,
    .dny__den > * {
        position: absolute;
    }

    .uvod__nadpis {
        left: calc(157.8 * var(--u));
        top: calc(58.9 * var(--u));
        width: calc(1141.6 * var(--u));
    }

    .dny__stit {
        left: calc(564.5 * var(--u));
        top: calc(154.4 * var(--u));
        width: calc(310.9 * var(--u));
        margin: 0;
    }

    .dny__text {
        left: calc(414 * var(--u));
        top: calc(368 * var(--u));
        width: calc(310 * var(--u));
        margin: 0;
        font-size: calc(30.4 * var(--u));
        line-height: calc(34.2 * var(--u));
        transform: translate(-50%, -50%);
    }

    .dny__tema {
        margin-top: calc(12 * var(--u));
        font-size: calc(15 * var(--u));
    }

    .dny__sipka {
        top: calc(340.5 * var(--u));
    }

    .dny__sipka--vlevo  { left: calc(163.8 * var(--u)); }
    .dny__sipka--vpravo { left: calc(1227.6 * var(--u)); }

    .dny__cisla {
        left: 50%;
        top: calc(553.6 * var(--u));
        display: flex;
        gap: calc(7 * var(--u));
        max-width: none;
        margin: 0;
        transform: translateX(-50%);
    }

    .dny__cislo {
        min-width: 0;
        font-size: calc(20 * var(--u));
    }

    .uvod__socialni {
        left: calc(1181.1 * var(--u));
        top: calc(518.8 * var(--u));
        margin: 0;
    }

    /* Aktuality */

    .aktuality {
        padding-top: calc(90 * var(--u));
    }

    /* Detail aktuality */

    .clanek {
        padding-top: calc(56 * var(--u));
    }

    .clanek__hlava {
        margin-top: calc(35 * var(--u));
    }

    .clanek__hlava .nadpis-karty {
        font-size: calc(30.4 * var(--u));
        line-height: calc(34.2 * var(--u));
    }

    .clanek__text {
        max-width: calc(727 * var(--u));
        margin-top: calc(30 * var(--u));
        line-height: calc(26 * var(--u));
    }

    .galerie {
        gap: calc(54.8 * var(--u)) calc(50 * var(--u));
        margin-top: calc(66 * var(--u));
    }

    /* Podstránky s nadpisem (Dárky, textové stránky) */

    .hlava-stranky {
        padding-top: calc(30 * var(--u));
        margin-bottom: calc(57 * var(--u));
    }

    .perex-stranky {
        max-width: calc(520 * var(--u));
        margin-top: calc(16 * var(--u));
        line-height: calc(30 * var(--u));
    }

    /* Dárky */

    .darek .karta__telo {
        padding: calc(17 * var(--u)) calc(27.5 * var(--u)) calc(19.7 * var(--u)) calc(19.8 * var(--u));
    }

    .darek__podnazev {
        margin-top: calc(2 * var(--u));
    }

    .darek__text {
        margin-top: calc(28 * var(--u));
        line-height: calc(24 * var(--u));
    }

    .darek__koupit-obal {
        padding-top: calc(39 * var(--u));
    }

    .darek__dalsi {
        right: calc(15.8 * var(--u));
        width: calc(37.8 * var(--u));
        padding: 0;
    }

    /* Program */

    .dny-seznam {
        grid-template-columns: repeat(4, 1fr);
    }

    .dny-seznam__den {
        padding: calc(24 * var(--u)) calc(16 * var(--u)) calc(26 * var(--u));
    }

    /* Textová stránka */

    .stranka-text .text {
        max-width: calc(727 * var(--u));
    }

    /* Design systém */

    .sg__pismo > div {
        grid-template-columns: calc(260 * var(--u)) 1fr;
        align-items: baseline;
    }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        transition: none !important;
    }
}
