/*
Theme Name: GRID Hotel — Divi 5 Child
Theme URI: https://www.garry.cz
Author: GARRY Promotion
Author URI: https://www.garry.cz
Description: Prémiová child šablona pro Divi 5 vytvořená na míru pro GRID Hotel — **** hotel a restauraci přímo v areálu Autodromu Brno u Masarykova okruhu. Designový systém „Circuit Line": vlastní barevná paleta a typografie s plnou českou diakritikou, karbonová textura tmavých sekcí, živý telemetry widget (čas + teplota trati), sekce Sezóna s čekacím listem a obsah řízený přes ACF. Navrhla a vyvinula fluidní marketingová agentura GARRY Promotion.
Version: 3.38.0
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 8.0
License: Proprietary — Copyright © GARRY Promotion. Všechna práva vyhrazena.
License URI: https://www.garry.cz
Template: Divi
Text Domain: grid-divi5-child
*/

/* ============================================================
   GRID HOTEL — DESIGN TOKENY + KOMPONENTY
   Šířka webu: uprav --maxw (1200 / 1280 / 1320)
   ============================================================ */
:root{
    --graphite:#16181B;
    --graphite-deep:#0E0F11;
    --graphite-soft:#1D2025;
    --red:#C20E1A;
    --red-bright:#E11622;
    --gold:#caa75f;
    --gold-deep:#b8954a;
    --offwhite:#F4F2F0;
    --paper:#F4F2F0;
    --ink:#16181B;
    --grey:#B9B7B9;
    --grey-dim:#8F8E90;
    --ink-muted:#5b5f66;
    --line:rgba(185,183,185,.14);
    --f-head:'Saira Condensed',sans-serif;
    --f-mono:'JetBrains Mono',monospace;
    --f-body:'Inter',sans-serif;
    --maxw:1280px;  /* šířka webu: 1200 | 1280 | 1320 */
    --rail:190px;   /* prostor pro sekční navigaci vpravo (.track-progress) */
    /* Doplňkový levý odstup od HUD "situace na trati" (.telemetry-hud) se
       počítá dynamicky (viz .wrap,.entries níže), ne pevnou hodnotou –
       .wrap je sám vycentrovaný (max-width:1280px;margin:auto), takže
       přirozená mezera od okraje viewportu se mění s šířkou okna a pevné
       číslo by na širokém displeji zbytečně ukrajovalo desítky px navíc a
       na užším displeji (blízko 1280px) by nestačilo. */
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{
    background:var(--graphite-deep);
    color:var(--offwhite);
    font-family:var(--f-body);
    font-weight:400;
    line-height:1.65;
    overflow-x:hidden;
    -webkit-font-smoothing:antialiased;
  }
  a{color:inherit;text-decoration:none}
  img{display:block;max-width:100%}
  ::selection{background:var(--red);color:#fff}

  /* ===== SECTION THEMING (alternating light / dark) ===== */
  /* position:relative je nutné, aby se .sec-tag (position:absolute) přišpendlil
     k rohu KAŽDÉ sekce – vlastní `section{position:relative}` níže platí jen pro
     doslovný <section> tag, ne pro sekce, které Divi builder atomizoval na
     <div class="et_pb_section ...">. .sec je na obou variantách vždy přítomná. */
  .sec{position:relative;--fg:var(--offwhite);--muted:var(--grey);--line-c:var(--line);--card:var(--graphite);--card-line:var(--line);--stroke:rgba(185,183,185,.12);color:var(--fg)}
  /* Diviho vlastní .et_flex_section má row-gap podle --module-gutter mezi
     přímými potomky (sec-tag modul, řádky sekce) – u T2/T7 to dělalo mezeru
     nad bezokrajovou fotkou, přestože samotný sec-tag modul má výšku 0. */
  .et_flex_section{row-gap:0 !important}
  .sec-dark{
    background:var(--graphite-deep);
    --fg:var(--offwhite);--muted:var(--grey);--line-c:rgba(255,255,255,.11);
    --card:#16181B;--card-line:rgba(255,255,255,.09);--stroke:rgba(185,183,185,.12);
    color:var(--fg);
  }
  /* subtle carbon-fibre texture for dark sections */
  .carbon{
    background-color:#0d0f12;
    background-image:
      linear-gradient(27deg,#16181c 5px,transparent 5px) 0 5px,
      linear-gradient(207deg,#16181c 5px,transparent 5px) 10px 0,
      linear-gradient(27deg,#1b1e22 5px,transparent 5px) 0 10px,
      linear-gradient(207deg,#1b1e22 5px,transparent 5px) 10px 5px,
      linear-gradient(90deg,#14161a 10px,transparent 10px),
      linear-gradient(#191c20 25%,#141619 25%,#141619 50%,transparent 50%,transparent 75%,#1d2024 75%,#1d2024);
    background-size:20px 20px;
  }
  .sec-light{
    background:var(--paper);
    --fg:#16181B;--muted:#5b5f66;--line-c:rgba(20,22,25,.12);
    --card:#ffffff;--card-line:rgba(20,22,25,.10);--stroke:rgba(20,22,25,.10);
    color:var(--fg);
  }

  /* ===== TYPOGRAPHY HELPERS ===== */
  .kicker{
    font-family:var(--f-mono);font-size:.72rem;letter-spacing:.32em;text-transform:uppercase;
    color:var(--red);display:inline-flex;align-items:center;gap:.7em;
  }
  .kicker::before{content:"";width:30px;height:1px;background:linear-gradient(90deg,var(--red),var(--gold))}
  /* GLOBÁLNÍ pravidlo: kicker na tmavém pozadí = zlatá (jako patička), na světlém = brandová červená (default). Hero má bílý (výjimka). */
  .sec-dark:not(.hero) .kicker{color:var(--gold)}
  .sec-dark:not(.hero) .kicker::before{background:linear-gradient(90deg,var(--gold),rgba(202,167,95,.25))}
  h1,h2,h3{font-family:var(--f-head);text-transform:uppercase;line-height:.95;font-weight:700;letter-spacing:.01em;color:var(--fg)}
  /* Divi 5 dává atomickým modulům (Heading/Text) vlastní typografii přes
     --et_global_heading_font/--et_global_body_font (výchozí 'Open Sans',
     různé od naší --f-head/--f-body) — jde o konkrétní, specifičtější
     pravidla na .et_pb_module_header/.et_pb_text_inner, takže náš výše
     uvedený obecný h1,h2,h3/body selektor bez !important prohrává. Jakmile
     je stránka poskládaná z atomických Divi modulů, nadpisy i text tak tiše
     přepadnou na Divi výchozí písmo. Vynucujeme font-family bez ohledu na
     to, v jakém Divi obalu se prvek nachází. */
  h1,h2,h3{font-family:var(--f-head) !important}
  p{font-family:var(--f-body) !important}
  /* Výjimky: nadpisy, které nejsou nadpisy „na pohled" — jsou to drobné
     verzálkové popisky ve stejném duchu jako .kicker nebo klíč skupiny
     v jídelníčku, a proto patří do mono. Vynucené pravidlo výš je přebíjelo
     na Saira Condensed, takže se rozcházely se zbytkem mikropopisků. */
  .amenity-groups h3,
  .foot-col h2,.foot-col h3,
  .menu-stala-h{font-family:var(--f-mono) !important}
  .data{font-family:var(--f-mono);letter-spacing:.06em}

  /* ===== TOP NAV ===== */
  header{
    position:fixed;top:0;left:0;right:0;z-index:120;
    display:flex;align-items:center;justify-content:space-between;
    padding:18px var(--gutter);
    transition:background .4s ease,padding .4s ease,border-color .4s ease;
    border-bottom:1px solid transparent;
  }
  header.scrolled{background:rgba(14,15,17,.88);backdrop-filter:blur(14px);padding:12px var(--gutter);border-bottom:1px solid var(--line)}
  header .brand img{height:38px;width:auto}
  /* Úvodní stránka: po načtení logo přeteče z menu (~3×), scrollem se plynule vrátí do menu */
  body.home #topbar .brand img{transform-origin:left top;transition:transform .55s cubic-bezier(.22,.61,.36,1);will-change:transform}
  body.home #topbar:not(.scrolled) .brand img{transform:scale(3);filter:drop-shadow(0 6px 24px rgba(0,0,0,.35))}
  @media(max-width:1279px){ body.home #topbar:not(.scrolled) .brand img{transform:scale(2)} }
  @media(max-width:640px){ body.home #topbar:not(.scrolled) .brand img{transform:scale(1.6)} }
  /* Diviho Text modul pouští syrové HTML hlavičky přes wpautop, které kolem
     "osamocených" prvků (odkaz .brand, náš [grid_lang_switch] shortcode než
     se rozbalí) vkládá prázdné <p></p> – prohlížeč je při parsování oddělí
     jako vlastní (nulově široké) sourozence uvnitř #topbar/.topnav. Protože
     obojí je display:flex, tyhle prázdné odstavce se počítají jako další
     flex položky a justify-content:space-between/gap kvůli nim posouvá
     tlačítko doprava jinak podle délky textu menu (jinak dlouhý text v
     různých jazycích) – proto tlačítko nesedělo na stejném místě napříč
     CZ/EN/DE. Řešíme jejich úplným vyřazením z layoutu, ne opravou zdroje
     (ten je mimo náš control – Diviho vlastní zpracování Text modulu). */
  /* wpautop obaluje kusy hlavičky do prázdných <p> — ty se schovávají. Odstavec,
     ve kterém skončilo tlačítko nebo odkaz, se ale schovat nesmí: hamburger v něm
     byl kvůli tomu na mobilu neviditelný a nešlo mobilní menu vůbec otevřít.
     display:contents obal vyřadí z rozvržení a jeho obsah nechá naživu. */
  #topbar > p, .topnav > p{display:none !important}
  #topbar > p:has(button), #topbar > p:has(a),
  .topnav > p:has(button), .topnav > p:has(a){display:contents !important}
  .topnav{display:flex !important;flex-direction:row !important;align-items:center;gap:clamp(16px,2vw,30px)}
  .topnav nav{display:flex !important;flex-direction:row !important;gap:clamp(14px,1.6vw,26px)}
  .topnav nav a{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--grey);transition:color .25s;position:relative;padding:4px 0}
  .topnav nav a::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:1px;background:var(--red);transition:width .3s}
  .topnav nav a:hover{color:#fff}
  .topnav nav a:hover::after{width:100%}

  /* Dvouúrovňové menu. Položka s podmenu je flex prvek uvnitř .topnav nav,
     ne <ul><li> — na ty tu žádné flex pravidlo necílí a menu by spadlo pod sebe. */
  .topnav nav .ma-item{position:relative;display:flex;align-items:center;gap:4px}
  .topnav nav .ma-toggle{display:flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;background:none;border:none;cursor:pointer;color:var(--grey);transition:color .25s,transform .25s}
  .topnav nav .ma-toggle svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
  .topnav nav .ma-item:hover .ma-toggle,
  .topnav nav .ma-item:focus-within .ma-toggle{color:#fff;transform:rotate(180deg)}
  .topnav nav .ma-sub{
    position:absolute;top:100%;left:0;z-index:120;min-width:250px;
    display:flex;flex-direction:column;gap:0;
    padding:10px 0;margin-top:10px;
    background:var(--graphite-deep);border:1px solid var(--line);border-radius:3px;
    box-shadow:0 22px 50px rgba(0,0,0,.45);
    opacity:0;visibility:hidden;transform:translateY(-6px);
    transition:opacity .2s,transform .2s,visibility .2s;
  }
  /* Neviditelný můstek přes mezeru mezi položkou a panelem — bez něj podmenu
     zmizí, jakmile myš opustí text a ještě nedorazí na panel. */
  .topnav nav .ma-sub::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
  .topnav nav .ma-item:hover .ma-sub,
  .topnav nav .ma-item:focus-within .ma-sub{opacity:1;visibility:visible;transform:translateY(0)}
  .topnav nav .ma-sub a{display:block;padding:9px 18px;letter-spacing:.08em;white-space:nowrap;color:var(--grey)}
  .topnav nav .ma-sub a::after{display:none}
  .topnav nav .ma-sub a:hover{color:#fff;background:rgba(255,255,255,.05)}
  .lang{display:flex;gap:6px;font-family:var(--f-mono);font-size:.72rem;color:var(--grey-dim)}
  .lang a{padding:2px 4px;transition:color .2s}
  .lang a.active{color:var(--offwhite)}
  .lang a:hover{color:var(--gold)}
  /* Tlačítka řeší jednotný systém níže — hledej „TLAČÍTKA“. */
  .hamburger{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:6px;min-width:44px;min-height:44px;align-items:center;justify-content:center}
  .hamburger span{width:26px;height:2px;background:var(--offwhite);transition:.3s}
  .mobile-menu{display:none}

  /* ===== TRACK PROGRESS (right) ===== */
  .track-progress{position:fixed;top:0;right:0;height:100vh;width:200px;z-index:90;display:flex;align-items:center;pointer-events:none}
  .track-progress .tp-inner{position:relative;height:72vh;margin:auto 0;padding:48px 0 10px;pointer-events:auto}
  .tp-rail{position:absolute;left:7px;top:48px;bottom:10px;width:2px;background:rgba(150,150,150,.38);border-radius:2px}
  .tp-fill{position:absolute;left:7px;top:48px;width:2px;height:0;background:linear-gradient(180deg,var(--red),var(--red-bright));border-radius:2px;transition:height .15s linear;box-shadow:0 0 12px rgba(194,14,26,.6)}
  .tp-label{position:absolute;top:0;left:0;font-family:var(--f-mono);font-size:.58rem;letter-spacing:.18em;color:var(--grey-dim);text-transform:uppercase;line-height:1.5;transition:color .2s}
  .tp-points{position:relative;height:100%;display:flex;flex-direction:column;justify-content:space-between}
  .tp-point{position:relative;display:block;cursor:pointer;background:none;border:none;text-align:left;padding:0;color:inherit;min-height:24px}
  .tp-dot{position:absolute;left:1px;top:calc(50% - 6px);width:12px;height:12px;border-radius:50%;background:var(--graphite-deep);border:2px solid var(--grey-dim);transition:.3s;z-index:2}
  .tp-text{display:flex;flex-direction:column;line-height:1.1;transition:.3s;opacity:.55;margin-left:30px}
  .tp-num{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.18em;color:var(--grey-dim)}
  .tp-name{font-family:var(--f-head);font-size:.86rem;text-transform:uppercase;color:#c9c7c9;letter-spacing:.04em}
  .tp-point:hover .tp-text{opacity:1}
  .tp-point:hover .tp-dot{border-color:var(--red)}
  .tp-point.active .tp-dot{border-color:var(--red);background:var(--red);box-shadow:0 0 14px rgba(194,14,26,.8);transform:scale(1.25)}
  .tp-point.active .tp-text{opacity:1}
  .tp-point.active .tp-num{color:var(--gold)}
  .tp-point.active .tp-name{color:#fff}

  /* ===== LIVE TELEMETRY WIDGET (from V2) ===== */
  .telemetry-hud{
    position:fixed;left:clamp(14px,2vw,26px);bottom:clamp(14px,2vw,26px);z-index:100;
    width:224px;background:rgba(14,15,17,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
    border:1px solid rgba(255,255,255,.14);border-radius:3px;
    font-family:var(--f-mono);color:var(--grey);
    box-shadow:0 24px 60px -22px rgba(0,0,0,.8);
    transform:translateY(0);transition:transform .45s cubic-bezier(.16,1,.3,1),opacity .35s;
  }
  .telemetry-hud::before,.telemetry-hud::after{content:"";position:absolute;width:9px;height:9px;border:1px solid var(--red);pointer-events:none}
  .telemetry-hud::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
  .telemetry-hud::after{bottom:-1px;right:-1px;border-left:none;border-top:none}
  .telemetry-hud.hidden{transform:translateY(140%);opacity:0}
  .hud-head{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.1)}
  .hud-title{font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:700}
  .hud-x{background:none;border:none;color:var(--grey-dim);font-size:1rem;line-height:1;cursor:pointer;padding:0 2px}
  .hud-x:hover{color:#fff}
  .hud-body{padding:8px 12px 11px}
  .hud-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:4px 0;font-size:.7rem}
  .hud-row .k{color:var(--grey-dim);letter-spacing:.08em;white-space:nowrap;flex:none}
  .hud-row .v{color:var(--offwhite);font-weight:700;letter-spacing:.04em;white-space:nowrap;text-align:right;margin-left:auto}
  .hud-row .v.hot{color:var(--red)}
  .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#2ecc71;margin-right:6px;box-shadow:0 0 7px rgba(46,204,113,.9);animation:blink 1.8s infinite;vertical-align:middle}
  @keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
  .hud-reopen{position:fixed;left:0;bottom:clamp(14px,2vw,26px);z-index:100;background:var(--graphite);color:var(--offwhite);border:1px solid rgba(255,255,255,.16);border-left:none;border-radius:0 4px 4px 0;font-family:var(--f-mono);font-size:.58rem;letter-spacing:.2em;text-transform:uppercase;padding:10px 8px;cursor:pointer;writing-mode:vertical-rl;transform:rotate(180deg) translateX(120%);transition:transform .4s;display:none}
  .hud-reopen.show{display:block;transform:rotate(180deg) translateX(0)}
  .hud-reopen:hover{background:var(--red)}

  /* ===== SECTION FRAME ===== */
  section{position:relative}
  .wrap{max-width:var(--maxw) !important;margin:0 auto !important;padding:0 var(--gutter)}
  /* Divi dává každému nevnořenému řádku width:var(--content-width), což je
     ve výchozím nastavení 80 %. Samotné max-width na .wrap proto nestačí —
     řádek je na 1280px obrazovce široký jen 1024 px a .wrap se k --maxw
     nikdy nedostane. Ke ztrátě 20 % šířky se navíc UVNITŘ řádku přičítá
     ještě levá rezervace za HUD, takže se obojí sčítá: obsah na 1280 px
     vycházel na 683 px a byl posunutý o 239 px doprava.
     Nastavujeme jen width (ne max-width). .entries a .reviews jsou z
     pravidla VYJMUTÉ — ty si šířku počítají samy z vlastních okrajů
     (width: calc(100% − levý − pravý)), a plná šířka by se k jejich
     marginům přičetla, takže by úvodní stránka přetekla. */
  .sec .et_pb_row.et_flex_row:not(.et_pb_row_nested):not(.et_pb_row_inner):not(.entries):not(.reviews){width:100% !important}
  /* Divi generuje pro každou stránku vlastní CSS cache (wp-content/et-cache/),
     kde konkrétní řádky (podle pořadí v obsahu, např. .et_pb_row_5) dostanou
     vlastní max-width:100% !important – při stejné specificitě/důležitosti
     vyhrává to, co se v HTML načte později, a Diviho cache se u atomizovaných
     sekcí načítá až po tomhle souboru. Řešíme vyšší specificitou (dvě třídy
     místo jedné), ne bojem o pořadí načtení, které se navíc mění při každém
     přegenerování cache. */
  .et_pb_row.wrap,.et_pb_column.wrap{max-width:var(--maxw) !important;margin:0 auto !important}
  /* Divi dává poslednímu sloupci v řádku margin-right:0 !important
     (.et_pb_column.et-last-child). U sloupce, který je zároveň .wrap, tím
     zbylo margin-left:auto — box se přilepil doprava (na Rezervaci začínal
     na x=320 místo 160). Vyšší specificita to vrací na střed. */
  .et_pb_row>.et_pb_column.wrap,.et_pb_row_inner>.et_pb_column.wrap{margin-left:auto !important;margin-right:auto !important}
  /* Levý obsahový sloupec musí zůstat mimo HUD widget "situace na trati"
     (.telemetry-hud, position:fixed;left:...;width:224px – viz níže), na
     každé stránce webu, ne jen na homepage (HUD je vidět všude). Stejný
     princip jako --rail vpravo (viz níže) pro sekční navigaci, jen zrcadlově
     a bez body.home vazby. .sp-media (fotky T2/T7) je záměrně vyjmutá –
     ty mají jít až od úplně levého okraje, HUD nad nimi jen plave (z-index). */
  /* Levý padding musí garantovat, že obsah začne alespoň ~15px napravo od
     pravého okraje HUD widgetu (situace na trati), ať je okno jakkoli
     široké. .wrap je sám vycentrovaný (max-width:1280px;margin:auto), takže
     jeho vlastní odstup od okraje viewportu (--wrap-inset) roste se šířkou
     okna – kolik navíc paddingu je potřeba, se proto dopočítává (--hud-pad),
     a použije se buď to, nebo běžný základní padding, podle toho, co je větší. */
  /* ============================================================================
     ZLATÉ PRAVIDLO OBSAHOVÉHO SLOUPCE — platí pro celý web, ne jen homepage.
     Levá vodicí hranice = 40px napravo od pravého okraje HUD widgetu
     "situace na trati" (ten je vidět na každé stránce). Pravá vodicí
     hranice = 45px nalevo od levého okraje boční sekční navigace (ta se dnes
     zobrazuje jen tam, kde je zapnutá — výchozí je homepage, ale mechanismus
     (proměnné níže) je stejný a připravený i pro libovolnou další stránku,
     kde se posuvník do budoucna zapne). Žádný obsah nesmí tyto dvě hranice
     přesahovat; jediná výjimka jsou fotky T2/T7 (jdou úplně od levého
     okraje, widget nad nimi jen plave přes z-index) a sekce CÍL (zůstává
     striktně na střed, bez ohledu na tyto hranice).
     ============================================================================ */
  /* ---------------------------------------------------------------------
     ZÁVAZNÉ VZORCE KORIDORU (zadání klienta, září 2026)

     Pro návrh se HUD považuje za trvale rozbalený, nezavíratelný objekt.
     Hlavní obsah proto vždy začíná až za jeho pravým okrajem plus 40 px.
     HUD nesmí překrývat hlavní text, formuláře ani karty.
     Pravý rail je jediná fixed navigace; obsah končí 45 px před jeho osou.

       režim            HUD    obsah začíná   obsah končí
       ≥ 960 px         224px, rezervuje   hud+40    osa railu − 45 (= 100vw − 260)
       641–959 px       190px, NEREZERVUJE clamp(24,4vw,32)   100vw − clamp(24,4vw,32)
       ≤ 640 px         sbalený            20px               100vw − 20

     Na tabletu na výšku je HUD rozbalený, ale šířku nerezervuje — plave nad
     obsahem v dolním rohu.

     Kontrolní body: 1600 → 290..1340 · 1024 → 284..764 · 768 → 31..737
                     641 → 26..615   ·  390 → 20..370
     --------------------------------------------------------------------- */
  :root{
    /* Jediné postranní odsazení obsahu. Na mobilu je pevných 20 px (závazný
       vzorec), jinak roste s šířkou okna. Dřív se na různých místech psalo
       var(--gutter) natvrdo, takže na hranici 640 px se okraje
       kontejnerů rozešly o 6 px. */
    --gutter: clamp(20px,4vw,52px);
    --hud-left: clamp(14px,2vw,26px);
    --hud-width: 224px;
    --hud-right-edge: calc(var(--hud-left) + var(--hud-width));
    --content-left: calc(var(--hud-right-edge) + 40px);

    --rail-axis: calc(100vw - 215px);
    --content-right-inset: 260px;      /* = 215 osa + 45 mezera */

    /* .wrap je vycentrovaný box s max-width, takže si část odstupu od okraje
       drží sám; dopočítáváme jen to, co chybí. .entries/.reviews vycentrované
       nejsou a počítají se přímo ve viewportu. */
    --wrap-inset: max(0px, calc((100vw - var(--maxw)) / 2));
    --hud-pad:  calc(var(--content-left) - var(--wrap-inset));
    --rail-pad: calc(var(--content-right-inset) - var(--wrap-inset));

    --entries-left: var(--content-left);
    --entries-right-base: var(--gutter);
    /* Dřív tu byla ruční korekce −9 px, kterou si vyžádala nepřesná geometrie
       koridoru. Po přepsání na závazné vzorce už není potřeba a posouvala
       .entries/.reviews o 9 px za pravou hranici. */
    --entries-right-match-wrap: calc(var(--wrap-inset) + max(0px, var(--rail-pad)));
  }
  .wrap{padding-left:max(var(--gutter), var(--hud-pad))}
  /* Na tabletu na výšku a níž je rail skrytý, ale pravá bezpečná hranice
     platí dál — drží ji inset, ne rezerva na lištu. */
  @media(max-width:959px){
    .wrap{padding-right:var(--content-right-inset)}
  }

  /* ============================================================================
     MOBIL A TABLET NA VÝŠKU — reset rezervace za HUD widgetem.

     HUD "situace na trati" je plovoucí panel 224×223 px ukotvený k LEVÉMU
     DOLNÍMU rohu viewportu, ne postranní sloupec přes celou výšku stránky.
     Rezervovat mu 264 px vlevo po celé výšce je na velkých obrazovkách
     přijatelná daň; na úzkých je to fatální — na 390px displeji vycházel
     --hud-pad na 278 px, takže obsahu zbývalo 92 px a každá stránka
     přetékala o 70–300 px.

     Na tabletu na výšku je HUD 190 px, na mobilu žádnou šířku rezervovat
     nesmí. Reset patří sem, do globálního koridoru — kompenzace v
     jednotlivých sekcích jsou zakázané (GRID-RESPONSIVE-10 §Implementační
     zásahy bod 1).
     ============================================================================ */
  /* 641–959 px: HUD zůstává rozbalený, ale NEREZERVUJE šířku (rozhodnutí
     klienta, září 2026). Na tabletu na výšku by koridor 245 px ukrojil
     z 768px displeje třetinu obsahu, což je nepřiměřené panelu, který leží
     v dolním rohu. Obsah proto začíná na bezpečném insetu stejně jako končí
     vpravo. Pravý rail je tu skrytý, takže vpravo stačí inset, ne rezerva. */
  @media(max-width:959px){
    :root{
      --hud-width: 190px;
      /* Postranní odsazení musí být v tomhle pásmu jedna hodnota pro všechno.
         Kdyby si .wrap bral --gutter (clamp 20,4vw,52) a mřížky --content-left
         (clamp 24,4vw,32), rozešly by se na 959 px o 6 px. */
      --gutter: clamp(24px,4vw,32px);
      --content-left: clamp(24px,4vw,32px);
      --content-right-inset: clamp(24px,4vw,32px);
    }
  }
  /* ≤ 640 px: HUD je ve sbaleném režimu a nesmí rezervovat žádnou šířku. */
  @media(max-width:640px){
    :root{
      --gutter: 20px;
      --content-left: 20px;
      --content-right-inset: 20px;
      --hud-pad: 0px;
      --rail-pad: 0px;
      --entries-left: 20px;
      --entries-right-base: 20px;
      --entries-right-match-wrap: 20px;
    }
    .wrap{padding-left:20px;padding-right:20px}
  }
  /* Sekce CÍL zůstává vycentrovaná na celou šířku (i pod HUD) – vlastní
     kompenzační pravidlo pro pravou lištu (--rail) níže na ni platí dál. */
  .final .wrap{padding-left:var(--gutter)}
  /* Rezervační lišta je nahoře nad HUD → nemusí rezervovat levý prostor (viz i
     analogické pravidlo pro --rail vpravo o pár řádků níže). */
  /* Rezervační lišta je formulář, takže na ni platí stejné pravidlo jako na
     ostatní obsah — HUD ji nesmí překrývat. Původní výjimka („lišta je nahoře
     nad HUD") platila jen na desktopu; na tabletu na výšku je hero nižší,
     lišta se dostane do dolní části okna a HUD jí kryl pole „Příjezd"
     i tlačítko. Změřeno testem překryvu. */
  .booking .wrap{padding-left:max(var(--gutter), var(--hud-pad)) !important}
  /* .split nese kvůli původnímu markupu i třídu .wrap ("wrap split") – bez
     vyjmutí by tak dostal stejný levý padding jako .wrap, a fotka T2/T7 by
     nikdy nebyla bezokrajová. .split žádný levý padding nemá mít vůbec. */
  .split.wrap{padding-left:0 !important}
  /* Sekce, které mají zůstat striktně na střed (bez levé HUD ani pravé rail
     kompenzace) mimo .final (CÍL) – použití: přidat tuto třídu vedle .wrap. */
  /* .wrap-centered dřív rušila levý koridor kvůli jedné stránce. Koridor
     ale platí všude; třída teď jen ruší pravou rezervu na lištu, aby blok
     zůstal opticky na střed dostupné šířky. */
  .wrap.wrap-centered{padding-right:var(--gutter) !important}
  /* Sekce na homepage (T1–T7 i CÍL) byly v Divi builderu převedené z
     jednoho syrového <section> (kde měl nadpis inline
     style="font-size:clamp(2rem,4vw,3.6rem)") na atomické
     Section/Row/Column/Heading moduly — inline velikost se při tom
     ztratila, takže KAŽDÝ nadpis sekce spadl na Divi výchozí (větší)
     velikost. Na živém webu mají VŠECHNY sekce stejnou hodnotu (ověřeno
     přímo v jeho HTML), takže jde o jedno obecné pravidlo, ne
     patchování sekci po sekci. */
  /* Nadpis stránky musí být největší. Divi má holé h1{font-size:30px} a child
     theme dlouho stylovalo jen h2 — když se kvůli SEO doplňovaly H1 na landing
     stránky, spadly na Diviho 30 px a byly menší než H2 pod nimi. Stránky
     s vlastní inline velikostí (titulní hero, detail pokoje) si ji ponechají,
     inline styl je silnější. */
  .sec h1{font-size:clamp(2.4rem,5vw,4.4rem) !important;line-height:.95}
  .sec h2{font-size:clamp(2rem,4vw,3.6rem) !important}
  .sec-pad{padding:clamp(80px,12vh,150px) 0}
  .sec-tag{position:absolute;top:clamp(40px,7vh,80px);left:var(--gutter);font-family:var(--f-head);font-size:clamp(3rem,9vw,7rem);font-weight:800;color:transparent;-webkit-text-stroke:1px var(--stroke);line-height:.8;z-index:0;pointer-events:none}
  /* První sekce podstránky začíná hned pod fixní hlavičkou, takže se do ní
     vodoznak opíral. Odsazení se počítá od její výšky, ne od horní hrany
     stránky — u dalších sekcí je nad značkou přirozeně místo. */
  body:not(.home) .et_pb_section:first-of-type .sec-tag{top:calc(69px + clamp(40px,7vh,80px))}
  /* Když je .sec-tag vložený jako vlastní Divi Text modul (atomizované
     sekce), Diviho vlastní .et_pb_text_inner/.et_pb_text mají
     position:relative – to je BLÍŽ než .sec, takže se watermark přišpendlí
     jen k malému boxu textového modulu, ne k celé sekci. Modul, který drží
     .sec-tag, proto necháváme staticky. */
  .et_pb_text:has(> .et_pb_text_inner > p > .sec-tag),
  .et_pb_text:has(> .et_pb_text_inner > p > .sec-tag) .et_pb_text_inner{position:static !important}
  /* Watermark je position:absolute, ale modul kolem něj (Diviho vlastní
     margin-bottom mezi moduly) pořád zabíral místo v běžném toku – proto
     byl třeba u T2/T7 mezi horním okrajem sekce a fotkou. */
  .et_pb_text:has(> .et_pb_text_inner > p > .sec-tag){height:0 !important;margin:0 !important;overflow:visible}
  .reveal{opacity:0;transform:translateY(38px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1)}
  .reveal.in{opacity:1;transform:none}
  .reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}.reveal.d4{transition-delay:.32s}

  /* ===== HERO ===== */
  /* height:auto + min-height — delší překlady (EN/DE) nesmí přetéct přes menu */
  .hero{height:auto;min-height:max(100vh,640px);position:relative;overflow:hidden;display:flex;align-items:flex-end}
  .hero-bg{position:absolute;inset:-8% 0;background:url('assets/foto/okruh-zapad-slunce.jpg') center/cover no-repeat;will-change:transform;z-index:0}
  .hero-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(14,15,17,.55) 0%,rgba(14,15,17,.2) 35%,rgba(14,15,17,.55) 70%,rgba(14,15,17,.96) 100%)}
  .hero-track{position:absolute;inset:0;z-index:2;pointer-events:none}
  .hero-track svg{width:100%;height:100%}
  .hero-content{position:relative;z-index:3;width:100%;max-width:var(--maxw);margin:0 auto;padding:clamp(180px,24vh,260px) var(--gutter) clamp(150px,20vh,200px)}
  .hero-content .kicker{margin-bottom:22px}
  /* Hero na titulní straně je záměrně největší nadpis webu; obecné .sec h1 níž
     používá !important (kvůli Diviho holému h1{30px}), takže hero potřebuje
     !important taky, jinak by ho obecné pravidlo srazilo na velikost podstránky. */
  .hero h1{font-size:clamp(3rem,9vw,8.5rem) !important;font-weight:800;max-width:15ch;letter-spacing:0;color:#fff}
  .hero h1 em{font-style:normal;color:var(--red)}
  .hero-sub{margin-top:22px;max-width:52ch;color:var(--grey);font-size:clamp(1rem,1.5vw,1.18rem)}
  .hero-actions{margin-top:34px;display:flex;gap:14px;flex-wrap:wrap}
  /* meta řádek je součást obsahu těsně nad kickerem (drží spolu), odstup od H1 řeší margin kickeru */
  .hero-meta{margin-bottom:10px;font-family:var(--f-mono);font-size:clamp(.88rem,1.05vw,1.02rem);font-weight:600;letter-spacing:.22em;color:#fff;text-transform:uppercase;text-shadow:0 2px 14px rgba(0,0,0,.75)}
  /* Hero — kicker (GRID HOTEL · **** · Masarykův okruh) výrazně bílý přes fotku */
  .hero-content .kicker{color:#fff;font-size:clamp(1rem,1.3vw,1.25rem);font-weight:600;text-shadow:0 2px 14px rgba(0,0,0,.7)}
  .hero-content .kicker::before{background:rgba(255,255,255,.95)}
  /* Menu na homepage před scrollem (přes fotku) — čitelně bílé */
  body.home #topbar:not(.scrolled) .topnav nav a,
  body.home #topbar:not(.scrolled) .lang a{color:#fff}
  body.home #topbar:not(.scrolled) .topnav nav a{text-shadow:0 1px 6px rgba(0,0,0,.45)}
  body.home #topbar:not(.scrolled) .lang a:not(.active){color:rgba(255,255,255,.7)}
  .scroll-cue{position:absolute;bottom:26px;right:clamp(40px,16vw,260px);z-index:3;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.2em;color:var(--grey-dim);writing-mode:vertical-rl;text-transform:uppercase;display:flex;align-items:center;gap:10px}
  .scroll-cue::after{content:"";width:1px;height:46px;background:linear-gradient(var(--red),transparent);animation:cue 1.8s infinite}
  @keyframes cue{0%{opacity:0;transform:scaleY(.3)}50%{opacity:1}100%{opacity:0;transform:scaleY(1)}}

  /* ===== BOOKING BAR ===== */
  .booking{position:sticky;top:0;z-index:110;background:var(--graphite);border-top:2px solid var(--red);border-bottom:1px solid var(--line)}
  .booking .wrap{display:flex;align-items:stretch;gap:0;flex-wrap:wrap}
  .bk-field{flex:1;min-width:150px;padding:16px clamp(14px,2vw,26px);border-right:1px solid var(--line);display:flex;flex-direction:column;gap:4px}
  .bk-field label{font-family:var(--f-mono);font-size:.62rem;letter-spacing:.18em;text-transform:uppercase;color:var(--grey-dim)}
  .bk-field input,.bk-field select{background:transparent;border:none;color:var(--offwhite);font-family:var(--f-body);font-size:.95rem;outline:none}
  .bk-field input::-webkit-calendar-picker-indicator{filter:invert(.7)}
  .bk-field select option{background:var(--graphite);color:var(--offwhite)}
  .bk-note{display:flex;align-items:center;padding:0 clamp(14px,2vw,26px);font-family:var(--f-mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);border-right:1px solid var(--line)}
  .bk-submit{display:flex;align-items:center;padding:0 6px}
  .bk-submit .btn{height:100%;display:flex;align-items:center;white-space:nowrap}

  /* ===== VSTUPY (channels) ===== */
  /* Nadpisy sekcí se dřív držely na půlce šířky. Na přání klienta jdou
     na všech rozlišeních přes celou šířku — proto tu žádné max-width není. */
  /* .entries má na rozdíl od .wrap/.exp vlastní viditelný rámeček kolem
     celé karetní řady (border+overflow:hidden, karty se dotýkají, gap:0) –
     kdyby dostal levý/pravý odstup jako padding (jako .wrap), vznikla by
     uvnitř rámečku prázdná díra místo toho, aby se celý rámeček zúžil a
     posunul. Proto se odsazení řeší přes margin, ne padding – Diviho
     obecné pravidlo `.et_pb_row{max-width:...;margin:auto}` navíc pro
     tenhle řádek musíme přebít na vlastní míru (viz .et_pb_row.entries níže). */
  /* Šířka natvrdo přes calc(), ne margin+max-width – margin-left a
     margin-right zároveň nenulové spolu s Diviho max-width:1280px z jeho
     obecného pravidla pro řádky se chovaly nepředvídatelně (prohlížeč si
     šířku dopočítal jinak, než jsme čekali). width:calc() je jednoznačné. */
  .entries{display:grid !important;grid-template-columns:repeat(4,1fr) !important;gap:0;border:1px solid var(--line-c);border-radius:2px;overflow:hidden}
  .et_pb_row.entries{
    max-width:none !important;
    margin-left:var(--entries-left) !important;
    margin-right:var(--entries-right-base) !important;
    width:calc(100% - var(--entries-left) - var(--entries-right-base)) !important;
  }
  /* Diviho vlastní per-instance CSS (et-cache/.../deferred-*.min.css) dává
     každému sloupci vlastní šířku/flex-basis podle columnStructure – to
     přebíjí naše grid-template-columns a karty vyjdou nerovnoměrně (viz
     stejná oprava a vysvětlení u .split výše). Reset napříč všemi
     kartovými mřížkami sekcí T1/T4/T5/T7/T8. */
  .entries > *,.exp > *,.gastro > *,.b2b-grid > *,.reviews > *{
    width:auto !important;max-width:none !important;flex:none !important;min-width:0 !important;
  }
  .entry{position:relative;padding:clamp(34px,4vw,52px) clamp(22px,2.4vw,34px);border-right:1px solid var(--line-c);min-height:300px;display:flex;flex-direction:column;justify-content:flex-start;overflow:hidden;transition:background .35s}
  .entry:last-child{border-right:none}
  .entry::before{content:"";position:absolute;inset:0;background:var(--red);transform:translateY(100%);transition:transform .45s cubic-bezier(.16,1,.3,1);z-index:0}
  .entry:hover::before{transform:translateY(0)}
  .entry>*{position:relative;z-index:1;transition:color .35s}
  .entry .e-num{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.18em;color:var(--red);transition:color .35s}
  .entry:hover .e-num{color:#fff}
  .entry h3{font-size:clamp(1.5rem,2.3vw,2.1rem);margin:14px 0 10px}
  .entry p{font-size:.9rem;color:var(--muted);transition:color .35s}
  .entry:hover p,.entry:hover :is(h2,h3){color:#fff}
  /* karta je div + overlay odkaz (bloky v <a> rozbíjel wpautop) */
  .entry{cursor:pointer}
  .entry .entry-link{position:absolute;inset:0;z-index:2;font-size:0}
  /* Odkaz „Prohlédnout pokoje →" má u všech karet sedět stejně vysoko nad
     spodní hranou. Flex kontejnerem je .entry a jeho položkami jsou moduly
     Divi, ne samotný <span> — margin-top:auto na spanu proto nic nedělal
     a odkaz plaval podle délky perexu (57 / 89 / 113 / 87 px odspodu).
     Volný prostor si proto bere poslední modul karty. */
  .entry > .et_pb_module:last-child{margin-top:auto}
  .entry .e-arrow{padding-top:18px;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;color:var(--muted);transition:color .35s}
  .entry:hover .e-arrow{color:#fff}

  /* ===== SPLIT SCREEN ===== */
  .split{display:grid !important;grid-template-columns:1fr 1fr !important;justify-content:stretch !important;min-height:88vh;column-gap:0 !important;row-gap:0 !important}
  /* Divi svým vlastním .et_flex_row/.et_flex_column dává column-gap podle
     --module-gutter (30px) – i v grid layoutu je column-gap platná
     vlastnost, takže bez nulování vznikala mezera mezi fotkou a okrajem
     sekce (fotka měla být bezokrajová). */
  .sp-media{margin:0 !important}
  .split.reverse .sp-media{order:2}
  /* Když je .split zároveň Divi řádek (et_pb_row/et_flex_row), Divi ke každé
     instanci generuje vlastní CSS (et-cache/.../deferred-*.min.css) s
     explicitní šířkou/flex-basis pro každý sloupec podle jeho columnStructure
     – to pak souboj o šířku s naší grid();grid-template-columns:1fr 1fr
     vyhrává a sloupce vyjdou nerovnoměrně (např. 68px/zbytek). Přímé děti
     .split proto natvrdo resetujeme, ať šířku sloupců řídí čistě grid. */
  /* min-width:0 je nutné navíc – grid položky mají výchozí min-width:auto,
     které respektuje minimální obsahovou šířku (u T7 např. formulář/karty
     b2b-grid uvnitř .sp-content), takže by se 1fr/1fr nerozdělilo rovnoměrně
     bez ohledu na width/flex reset výše. */
  .split > *{width:auto !important;max-width:none !important;flex:none !important;min-width:0 !important}
  .et_pb_row.split > .et_pb_column{width:auto !important;max-width:none !important;flex:none !important;min-width:0 !important}
  .sp-media{position:relative;overflow:hidden;min-height:340px}
  .sp-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.16,1,.3,1)}
  /* Když je fotka vložená jako nativní Divi Image modul (ne prosté <img>),
     Divi obalí <img> do <span class="et_pb_image_wrap"> s position:relative a
     width:fit-content – tenhle span se pak stane skutečným kontejnerem pro výše
     absolutně pozicovaný <img>, ne .sp-media. Protože jeho jediné dítě (img) je
     samo position:absolute a nepřispívá do fit-content výpočtu, span se smrskne
     na 0×0 a fotka "zmizí". Oprava: span necháváme staticky a vyplněný na celou
     plochu .sp-media, aby <img> správně dosáhl na .sp-media jako svůj kontejner. */
  .sp-media .et_pb_image_wrap{position:static !important;display:block !important;width:100% !important;height:100% !important}
  /* Řetězec height:100% musí projít i skrz Diviho vlastní modulový obal
     (.et_pb_image), jinak se o kus výš přeruší na "auto" a schová fotku. */
  .sp-media .et_pb_image{height:100% !important}
  .sp-media:hover img{transform:scale(1.05)}
  /* Levý padding zúžený (blíž k hraně fotky, ne symetricky jako pravý,
     který je řízen zvlášť kvůli boční navigaci – viz --entries-right-match-wrap
     přiřazené k padding-right níže). z-index:2 drží text nad fotkou
     (fotka je z-index:0 přes .sp-media), ale pod HUD widgetem (z-index:100). */
  .sp-content{display:flex;flex-direction:column;justify-content:center;padding:clamp(50px,7vw,110px) clamp(28px,5vw,90px) clamp(50px,7vw,110px) clamp(24px,3vw,44px);position:relative;z-index:2}
  .sp-content h2{font-size:clamp(2.4rem,5vw,5rem);margin:20px 0}
  .sp-content p{color:var(--muted);max-width:52ch;margin-bottom:14px}
  .sp-content .lead{color:var(--fg);font-size:1.12rem}
  .stat-row{display:flex;gap:clamp(14px,2vw,22px);margin-top:30px;flex-wrap:nowrap}
  .stat{flex:1 1 0;min-width:0;background:var(--card);border:1px solid var(--card-line);border-radius:2px;padding:clamp(10px,1.2vw,16px)}
  /* clamp() místo pevných 2rem – karta je úzká (3 karty vedle sebe bez
     zalamování), takže "5,4 km" se do ní při 32px tučně nevešlo a
     zděděné overflow-wrap:break-word ho lámalo doprostřed slova
     ("K"/"M" na dvou řádcích). white-space:nowrap navíc garantuje, že se
     už nikdy nezalomí uprostřed – nanejvýš by (teoreticky) přeteklo, ne
     vypadalo rozbitě. */
  .stat .data{font-size:clamp(1.3rem,2.2vw,2rem);color:var(--fg);font-weight:700;display:block;white-space:nowrap}
  .stat .data b,.stat .data strong{color:var(--gold)}
  .stat span{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

  /* ===== ROOMS ===== */
  .rooms{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(16px,2vw,26px)}
  .room{position:relative;overflow:hidden;border:1px solid var(--line-c);min-height:430px;display:flex;align-items:flex-end}
  .room img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;transition:transform 1s cubic-bezier(.16,1,.3,1)}
  .room:hover img{transform:scale(1.06)}
  /* Přechod musí unést i světlé fotky pokojů (sada od klienta, 2026-09). S původním
     zlomem v 25 % byl kicker i řádek štítků na světlém snímku prakticky nečitelný —
     střední zastávka drží text nad kontrastem, horní část snímku zůstává vidět. */
  .room::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(14,15,17,.06) 0%,rgba(14,15,17,.22) 45%,rgba(14,15,17,.55) 100%)}
  /* Fotky pokojů od klienta (2026-09) jsou světlé — samotný přechod přes kartu
     nestačil, změřený kontrast textu klesal až na 1,0:1. Textový blok má proto
     vlastní scrim, který nahoře doběhne do průhledna, aby zůstal vidět snímek. */
  .room .r-body{position:relative;z-index:2;padding:clamp(24px,3vw,38px);width:100%;color:var(--offwhite);
    background:linear-gradient(180deg,rgba(14,15,17,.84) 0%,rgba(14,15,17,.93) 100%)}
  /* Náběh scrimu leží NAD textovým blokem, ne v něm — jinak první řádek (kicker)
     u nižších karet padne do průhledné části a kontrast spadne pod 2:1. */
  .room .r-body::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:96px;
    background:linear-gradient(180deg,rgba(14,15,17,0) 0%,rgba(14,15,17,.84) 100%);pointer-events:none}
  /* Na tmavém povrchu se drobný červený text píše #FF5A50, ne #C20E1A —
     viz barevná zásada webu. Tmavá varianta má na fotce kontrast pod 2:1. */
  .room .r-num{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.16em;color:#FF5A50}
  /* Nadpis karty je od verze 3.9 <h2> (dřív <h3>) — pravidlo musí platit pro
     obě úrovně, jinak nadpis spadne na obecné h1,h2,h3{color:var(--fg)}
     a na světlé sekci zčerná. Platí i pro odsazení, na kterém stojí vysunutí
     nadpisu při hoveru. */
  .room :is(h2,h3){font-size:clamp(1.6rem,2.6vw,2.3rem);margin:8px 0 6px;color:#fff}
  .room .r-desc{font-size:.9rem;color:#D8D6D4;max-width:44ch;margin-bottom:14px}
  .room .r-feat{display:flex;gap:10px;flex-wrap:wrap;font-family:var(--f-mono);font-size:.66rem;letter-spacing:.08em;color:var(--offwhite);text-transform:uppercase;margin:6px 0 16px}
  .room .r-feat span{padding:4px 9px;border:1px solid rgba(255,255,255,.30);border-radius:2px}
  .room .r-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
  .room .r-price{font-family:var(--f-mono);color:var(--offwhite);font-size:.82rem}
  .room .r-price b{color:var(--gold)}
  .room.feat{grid-column:span 2;min-height:480px}
  /* Kategorií pokojů je pět, mřížka je dvousloupcová — poslední karta by jinak
     zůstala sama v levém sloupci a řádek by působil nedokončeně. Roztáhne se
     tedy přes obě pole, stejně jako karta .feat. */
  .rooms>.room:last-child:nth-child(odd){grid-column:1 / -1;min-height:480px}
  .rooms-note{margin-top:22px;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.06em;color:var(--muted)}
  /* Štítky se zalamují do dalšího řádku místo vodorovného posuvu. Posuv
     schovával štítky mimo obrazovku bez viditelného vodítka a v němčině
     navíc přetékal ven z vlastního rámu (délka slov > šířka kontejneru). */
  .pobyt-chips{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0 0;padding:0 0 4px}
  .pobyt-chips span{flex:0 1 auto;min-width:0;list-style:none;font-family:var(--f-mono);font-size:.68rem;letter-spacing:.04em;color:var(--muted);border:1px solid var(--line-c);border-radius:2px;padding:5px 10px;white-space:nowrap}
  .sec-dark .pobyt-chips span{border-color:rgba(255,255,255,.14)}
  /* Jemný CTA odkaz na detailní podstránku z landing sekce */
  /* .sec-more = terciární varianta, viz systém tlačítek. */
  .sec-more{margin-top:26px}
  /* ===== MASARYKŮV OKRUH ===== */
  /* Úvod: text vlevo, obrys trati vpravo. Obrys je SVG s jedinou čárou, takže
     snese libovolnou velikost bez ztráty ostrosti. */
  .okruh-uvod{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(28px,4vw,60px);align-items:center}
  .okruh-uvod__text{min-width:0}
  .okruh-obrys{margin:0}
  .okruh-obrys img{width:100%;height:auto;display:block}

  /* Dráha v číslech: dvojice popisek/hodnota vedle plánku s čísly zatáček. */
  .okruh-draha{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(28px,4vw,54px);align-items:start;margin-top:clamp(24px,3vw,40px)}
  .okruh-cisla{display:grid;grid-template-columns:1fr;gap:0;margin:0}
  .okruh-cisla div{display:flex;justify-content:space-between;align-items:baseline;gap:18px;padding:11px 0;border-bottom:1px solid var(--line-c)}
  .okruh-cisla dt{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
  .okruh-cisla dd{margin:0;color:var(--fg);font-size:.98rem;font-variant-numeric:tabular-nums;text-align:right}
  .okruh-mapa{margin:0}
  .okruh-mapa img{width:100%;height:auto;display:block}
  /* Textová alternativa k plánku — čísla zatáček jsou v kresbě, ne v textu. */
  .okruh-mapa-popis{margin-top:12px;color:var(--muted);font-size:.86rem;line-height:1.7}

  /* Historie: svislá osa s letopočty. Číslo roku nese orientaci, proto je
     v brandové barvě a monospace jako ostatní číselné údaje na webu. */
  /* Zdvojená třída schválně: Divi má na `.et-l--body ol` číslování, které by
     jinak vyhrálo a nad každým letopočtem svítilo „1.", „2." — vedle vlastních
     puntíků na časové ose. */
  .okruh-milniky.okruh-milniky{list-style:none;margin:clamp(24px,3vw,40px) 0 0;padding:0;display:grid;gap:0}
  .okruh-milniky li{position:relative;padding:0 0 26px 30px;border-left:1px solid var(--line-c)}
  .okruh-milniky li:last-child{padding-bottom:0}
  /* Puntík i letopočet drží brandovou červenou i na tmavé sekci — na webu má
     být jen jedna červená (dřív tu byla světlejší varianta #FF5A50). */
  .okruh-milniky li::before{content:"";position:absolute;left:-5px;top:9px;width:9px;height:9px;border-radius:50%;background:var(--red)}
  /* Letopočet je stejně velký jako název milníku, jen červený a v monu. */
  .okruh-milniky .ok-rok{display:block;font-family:var(--f-mono);font-size:1.15rem;line-height:1.2;letter-spacing:.08em;color:var(--red)}
  .okruh-milniky h3{font-size:1.15rem;margin:4px 0 6px;color:var(--fg)}
  .okruh-milniky p{margin:0;color:var(--muted);font-size:.92rem;line-height:1.6;max-width:74ch}

  /* Vítězové: hustý sloupcový výpis, čte se jako listina. */
  .okruh-vitezove{list-style:none;margin:clamp(20px,2.4vw,32px) 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(24px,4vw,60px)}
  .okruh-vitezove li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:9px 0;border-bottom:1px solid var(--line-c)}
  .okruh-vitezove .ok-rok{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.1em;color:var(--muted);font-variant-numeric:tabular-nums}
  .okruh-vitezove li span:last-child{color:var(--fg);font-size:.95rem}

  .okruh-zdroje{margin-top:clamp(24px,3vw,36px);font-family:var(--f-mono);font-size:.72rem;line-height:1.6;letter-spacing:.04em;color:var(--muted);max-width:80ch}

  @media(max-width:959px){
    .okruh-uvod,.okruh-draha{grid-template-columns:1fr}
    .okruh-obrys{order:-1}
    .okruh-vitezove{grid-template-columns:1fr}
  }

  /* O nás — sekce „Okolí hotelu". Vedoucí blok patří Motodromu (důvod, proč hotel
     stojí právě tady), zbytek jsou karty s možností filtrovat podle typu místa.
     Filtr běží v prohlížeči nad už vykreslenými kartami — seznam je krátký
     a stránka nemá kvůli filtrování dělat další dotaz na server. */
  .okoli-lead{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(24px,3vw,48px);align-items:start;margin:6px 0 clamp(34px,4vw,56px)}
  .okoli-lead__text{min-width:0}
  .okoli-lead__dist{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--red)}
  .okoli-lead__text h3{font-size:clamp(1.5rem,2.6vw,2.1rem);color:var(--ink,#16181B);margin:10px 0 14px}
  .okoli-lead__text p{color:var(--muted);font-size:.95rem;line-height:1.65;margin:0 0 12px}
  /* Fotka začíná až u nadpisu, ne u popisku „0 km · přímo v areálu" nad ním.
     Odsazení odpovídá výšce bloku popisku i s mezerou pod ním; v úzkém
     koridoru se sloupce skládají pod sebe (fotka jde první), tam neplatí. */
  .okoli-lead__foto{margin:0;overflow:hidden;border-radius:4px}
  @media(min-width:960px){ .okoli-lead__foto{margin-top:53px} }
  .okoli-lead__foto img{display:block;width:100%;height:100%;max-height:420px;object-fit:cover}
  .okoli-filtr{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 clamp(20px,2.4vw,30px)}
  .okoli-filtr .gh-filter span{opacity:.55;margin-left:6px;font-variant-numeric:tabular-nums}
  .okoli-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.8vw,22px)}
  .okoli-card{min-width:0;padding:clamp(18px,2vw,24px);border:1px solid rgba(20,22,25,.12);border-radius:4px;background:#fff}
  .okoli-card[hidden]{display:none}
  .okoli-card__dist{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--red)}
  .okoli-card h3{font-size:1.02rem;color:var(--ink,#16181B);margin:8px 0 7px;line-height:1.3}
  .okoli-card p{color:var(--muted);font-size:.87rem;line-height:1.55;margin:0}
  .et_pb_text .okoli-card p,.et_pb_text .okoli-lead__text p{margin:0 0 12px}
  .et_pb_text .okoli-card p{margin:0}
  @media(max-width:959px){
    .okoli-lead{grid-template-columns:1fr}
    .okoli-lead__foto{order:-1}
    .okoli-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  }
  @media(max-width:640px){
    .okoli-grid{grid-template-columns:minmax(0,1fr)}
  }
  /* O nás — přehledová mřížka */
  .onas-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2vw,26px)}
  .onas-card{padding:clamp(20px,2.2vw,30px);border:1px solid rgba(20,22,25,.12);border-radius:4px;background:#fff}
  .onas-card h3{font-size:1.15rem;color:var(--ink,#16181B);margin:0 0 8px}
  .onas-card p{color:var(--muted);font-size:.92rem;line-height:1.55;margin:0 0 12px}
  .onas-card .sec-more{margin-top:0}
  @media(max-width:959px){.onas-grid{grid-template-columns:1fr 1fr}}
  @media(max-width:640px){.onas-grid{grid-template-columns:1fr}}
  /* Ubytování — přehled pokojů, vybavení, dobré vědět */
  /* Přehledová tabulka pokojů drží stejnou paletu jako karty na titulní straně:
     výplň jako .exp-item po najetí, rámeček jako .exp-item, podtržení názvu
     zlatou (barva odkazů na tmavém povrchu) a řádek pod myší jako .ev-row. */
  /* Divi stylizuje tabulky v obsahu pravidlem .entry-content table:not(.variations)
     (rámeček #eee) o specificitě 0,2,1. Zdvojená třída ji přebije bez !important,
     které by znemožnilo pozdější přepsání v Divi Builderu. */
  .sec .room-table.room-table,.room-table{width:100%;border-collapse:collapse;font-size:.95rem;background:rgba(255,255,255,.03);border:1px solid var(--line-c);border-radius:2px;overflow:hidden}
  .sec-light .room-table{background:rgba(20,22,25,.02)}
  /* Pevné rozložení: bez něj si sloupce prohazují šířku podle obsahu a při
     najetí (tučný název + nápověda) celá tabulka poskočí. Název dostane
     necelou polovinu, aby se i „Superior s terasou" vešel s nápovědou. */
  .sec .room-table.room-table{table-layout:fixed}
  .room-table th,.room-table td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line-c);overflow-wrap:anywhere}
  .room-table th:nth-child(1),.room-table td:nth-child(1){width:46%}
  .room-table th:nth-child(2),.room-table td:nth-child(2){width:16%}
  .room-table th:nth-child(3),.room-table td:nth-child(3){width:18%}
  .room-table th:nth-child(4),.room-table td:nth-child(4){width:20%}
  .room-table thead th{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
  .room-table td a{position:relative;display:inline-block;color:var(--fg);border-bottom:1px solid var(--gold)}
  .sec-light .room-table td a{border-bottom-color:var(--red)}
  .room-table tfoot td{font-weight:700;color:var(--fg);border-top:2px solid var(--fg)}
  /* hover řádku + zvýraznění názvu s nápovědou (text z data-hint — lokalizovaný) */
  .room-table tbody tr{transition:background .2s}
  .room-table tbody tr:hover{background:rgba(194,14,26,.06)}
  /* Stejná červená jako zvýrazněný sloupec na detailu pokoje. Na tmavém
     povrchu je 7% červená proti tmavému podkladu prakticky neviditelná,
     proto se tam sytost zvedá. */
  .sec-dark{--zvyrazneni-radku:rgba(255,90,80,.14)}
  .sec-light{--zvyrazneni-radku:rgba(194,14,26,.07)}
  .room-table td a{transition:font-weight .1s}
  .room-table td a:hover{font-weight:700}
  /* Nápověda leží mimo tok, aby v klidovém stavu podtržení končilo za názvem;
     vlastní spodní čáru má navázanou na tu pod názvem, takže po najetí vypadají
     jako jedna souvislá linka. */
  .room-table td a::after{content:attr(data-hint);position:absolute;left:100%;bottom:-1px;padding-left:10px;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);opacity:0;border-bottom:1px solid var(--gold);transition:opacity .2s;white-space:nowrap;pointer-events:none}
  .sec-light .room-table td a::after{color:var(--red);border-bottom-color:var(--red)}
  .room-table td a:hover::after{opacity:1}
  /* minmax(0,1fr) místo 1fr: holé 1fr nikdy neklesne pod min-content buňky,
     takže dlouhá německá slova roztáhla mřížku přes rodiče. Matice parametrů
     je 3 / 2 / 2 / 1. */
  .amenity-grid{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 24px;padding:0;margin:0}
  .amenity-grid li{min-width:0;overflow-wrap:anywhere}
  .amenity-grid li{position:relative;padding-left:26px;color:var(--muted);font-size:.92rem}
  .amenity-grid li::before{content:"✓";position:absolute;left:0;color:var(--red);font-weight:700}
  /* Divi text modul přidává vlastní odrážky — v našich seznamech jen červená ✓ */
  .et_pb_text .amenity-grid,.et_pb_text .amenity-grid li,
  .et_pb_text .check-list,.et_pb_text .check-list li,
  .et_pb_text .g-list,.et_pb_text .g-list li{list-style:none !important}
  .et_pb_text .amenity-grid,.et_pb_text .check-list,.et_pb_text .g-list{padding-left:0 !important}
  /* Vybavení hotelu po skupinách (Ubytování). Seznam z Booking.com je dlouhý,
     proto se člení do tematických skupin — plochý výčet 60 položek se nedá číst. */
  .amenity-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,2.4vw,34px);margin:26px 0 0}
  .amenity-groups section{min-width:0}
  .amenity-groups h3{display:flex;align-items:center;gap:9px;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--fg);margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--line-c)}
  /* Piktogram skupiny — stejná role jako na Bookingu: zrychluje orientaci
     v dlouhém výčtu. Nese ho ikona, ne text, proto aria-hidden. */
  /* Ikony drží brandovou červenou i na tmavé sekci — jedna červená na webu. */
  .amenity-groups .ag-ikona{flex:none;width:18px;height:18px;fill:none;stroke:var(--red);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
  .amenity-groups ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
  .amenity-groups li{min-width:0;overflow-wrap:anywhere;position:relative;padding-left:20px;color:var(--muted);font-size:.88rem;line-height:1.45}
  .amenity-groups li::before{content:"·";position:absolute;left:6px;color:var(--red);font-weight:700}
  .et_pb_text .amenity-groups ul,.et_pb_text .amenity-groups li{padding-left:0 !important;list-style:none !important}
  .et_pb_text .amenity-groups li{padding-left:20px !important}
  .know-list{display:grid;grid-template-columns:1fr 1fr;gap:14px 30px;margin:0}
  .know-list div{display:flex;flex-direction:column;gap:2px;padding-bottom:10px;border-bottom:1px solid rgba(20,22,25,.08)}
  .know-list dt{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
  .know-list dd{margin:0;color:var(--fg);font-size:.92rem}
  /* Dobré vědět s ikonami — ikona nese význam řádku na první pohled, proto je
     v brandové červené i na světlém povrchu. Text zůstává hlavním nositelem
     informace, ikona je jen návěstí (aria-hidden). */
  .know-list--ikony dt{display:flex;align-items:center;gap:9px}
  .know-list--ikony .kl-ikona{flex:none;width:17px;height:17px;fill:none;stroke:var(--red);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

  /* Dva terciární odkazy vedle sebe (titulní strana pod kartami pokojů). */
  .sec-more-radek{display:flex;flex-wrap:wrap;align-items:center;gap:14px clamp(20px,3vw,44px);margin-top:26px}
  .sec-more-radek .sec-more{margin-top:0}

  /* Skok na kotvu sekce musí skončit POD fixní hlavičkou, jinak se nadpis
     sekce schová za menu. Platí pro každou sekci s kotvou, ne jen pro tu,
     u které se to zrovna řešilo. */
  .sec[id]{scroll-margin-top:calc(var(--gh-header-h,86px) + 12px)}

  /* Úvodní sekce stránky Firemní akce & svatby je full-bleed split: fotka
     v levém sloupci má sahat až k horní hraně, takže odsadit celou sekci
     nejde — posunul by se i obraz a nad ním by zbyl světlý pruh. Odsazení
     proto dostane textový sloupec, a jen dokud jsou sloupce vedle sebe;
     po zalomení pod 960 px je text až pod fotkou a s hlavičkou nekoliduje. */
  @media(min-width:960px){
    .sec-split-uvod .split > .et_pb_column:last-child{padding-top:clamp(120px,16vh,180px)}
  }

  /* Přehled vybavení hotelu nad kartami pokojů (Ubytování, sekce T1). */
  .amenity-uvod{margin:0 0 clamp(30px,3.5vw,46px)}
  @media(max-width:959px){
    /* Široká srovnávací tabulka se skládá do řádkových karet už na tabletu
       na výšku — na 768 px se šest sloupců nevejde ani se zalomením. */
    /* Přehled pokojů se pod 960 px rozpadá do karet. Řádková podoba tady dávala
       pět čar na jeden pokoj a čtenář v nich ztrácel, kde jeden typ končí
       a druhý začíná. Karta má jednu hranici a uvnitř jen dvojice popisek/hodnota. */
    .sec .room-table.room-table{table-layout:auto;min-width:0;background:none;border:none;border-radius:0}
    .room-table thead{display:none}
    .room-table tbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(12px,1.8vw,18px)}
    .room-table tbody tr{display:block;padding:clamp(16px,2vw,20px) clamp(16px,2vw,20px) clamp(12px,1.6vw,16px);border:1px solid var(--line-c);border-radius:3px;background:rgba(255,255,255,.03)}
    .sec-light .room-table tbody tr{background:rgba(20,22,25,.02)}
    .room-table tbody td{display:flex;justify-content:space-between;align-items:baseline;gap:14px;width:auto;border:none;padding:4px 0}
    .room-table tbody td::before{content:attr(data-l);font-family:var(--f-mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);flex:none}
    /* Název pokoje je nadpis karty, ne další dvojice popisek/hodnota. */
    .room-table tbody td:first-child{display:block;width:auto;padding:0 0 12px;margin-bottom:8px;border-bottom:1px solid var(--line-c)}
    .room-table tbody td:first-child::before{content:none}
    .room-table tbody td:first-child a{font-size:1.06rem;border-bottom:none}
    /* Nápověda „zobrazit detail" míří vodorovně mimo kartu — v úzké kartě
       nemá kam, a dotykové zařízení hover stejně nemá. */
    .room-table tbody td a::after{display:none}
    .room-table tbody td a:hover{font-weight:inherit}
    .room-table tfoot{display:block;margin-top:clamp(12px,1.8vw,18px)}
    .room-table tfoot tr{display:flex;justify-content:space-between;gap:16px}
    .room-table tfoot td{border:none;padding:10px 2px}
    .room-table tfoot td:empty{display:none}
    .room-table tfoot td::before{content:""}
  }

  /* ===== EXPERIENCES ===== */
  .exp{display:grid !important;grid-template-columns:repeat(3,1fr) !important;gap:clamp(14px,1.6vw,22px);max-width:var(--maxw) !important;margin:0 auto !important;padding:0 var(--gutter)}
  .exp-item{padding:clamp(24px,2.6vw,36px) clamp(18px,1.8vw,28px);border:1px solid var(--line-c);position:relative;transition:background .35s;min-height:220px;display:flex;flex-direction:column}
  .exp-item:hover{background:rgba(255,255,255,.03)}
  .exp-item .x-num{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.16em;color:var(--red)}
  /* Horní odsazení nadpisu dřív oddělovalo číslo zážitku; bez něj by karta
     nahoře jen zbytečně dýchala, proto je nula. */
  .exp-item h2,.exp-item h3{font-size:1.35rem;margin:0 0 10px;line-height:1.18}
  .sez-cards :is(h2,h3){line-height:1.18}
  .exp-item p{font-size:.85rem;color:var(--muted)}
  /* Karta poskládaná z modulů Divi (sekce „Proč GRID") má jako flex položky
     moduly, ne samotný <span> — margin-top:auto na odkazu proto nefungoval
     a odkazy plavaly podle délky perexu. Volný prostor bere poslední modul. */
  .exp-item > .et_pb_module:last-child{margin-top:auto}
  .exp-item .x-link{margin-top:auto;padding-top:16px;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.12em;color:var(--muted);transition:color .25s}
  .exp-item:hover .x-link{color:var(--red)}
  /* karty zážitků: overlay odkaz na detail + řádek odkazů (nad overlayem) */
  .exp-item .entry-link{position:absolute;inset:0;z-index:2;font-size:0}
  .exp-item:has(.entry-link){cursor:pointer}
  /* Overlay odkaz musí vyplnit celou kartu. Divi dává modulu i jeho vnitřnímu
     obalu position:relative, takže by se absolutní odkaz natáhl jen přes ten
     jeden textový modul (proklik fungoval jen na řádku s číslem). Modul, který
     overlay obsahuje, proto vracíme na static — pozicuje se pak podle karty. */
  .entry .et_pb_module:has(>.et_pb_text_inner>p>.entry-link),
  .entry .et_pb_text_inner:has(>p>.entry-link),
  .exp-item .et_pb_module:has(>.et_pb_text_inner>p>.entry-link),
  .exp-item .et_pb_text_inner:has(>p>.entry-link){position:static}
  .exp-links{display:flex;gap:16px;flex-wrap:wrap;margin-top:auto;padding-top:16px;position:relative;z-index:3}
  .exp-links .sec-more{margin-top:0}
  /* PRIME zážitek (MotoGP): první karta přes celou šířku mřížky, červené podbarvení a rámeček */
  .exp-item--prime{grid-column:1 / -1;background:linear-gradient(135deg,rgba(194,14,26,.20) 0%,rgba(194,14,26,.07) 55%,rgba(194,14,26,0) 100%);border-color:rgba(194,14,26,.55)}
  .exp-item--prime:hover{background:linear-gradient(135deg,rgba(194,14,26,.28) 0%,rgba(194,14,26,.10) 55%,rgba(194,14,26,0) 100%)}
  .exp-item--prime h3{font-size:clamp(1.5rem,2.6vw,2.1rem)}
  .exp-item--prime p{max-width:62ch;font-size:.95rem}
  /* Obrys trati v pravé třetině karty MotoGP. SVG je už v brandové červené,
     takže se nepřebarvuje. Pod 960 px se karta skládá pod sebe a plánek
     přirozeně padne pod text — proto je v pořadí až za odkazy. */
  .exp-mapa img{display:block;width:100%;height:auto;transition:filter .45s}
  /* Při hoveru se karta přelije červenou, ve které brandově červený obrys
     zanikne — přebarvíme ho na bílou. Je to <img> se SVG, takže na `fill`
     zvenčí nedosáhneme; filtr ho udělá plně bílým bez ohledu na výchozí barvu. */
  .exp-item--prime:hover .exp-mapa img{filter:brightness(0) invert(1)}
  @media(min-width:960px){
    .exp-item--prime{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);
      column-gap:clamp(20px,2.6vw,40px);align-items:center}
    .exp-item--prime > :not(.exp-mapa):not(.entry-link){grid-column:1}
    /* Plánek se roztáhne přes všechny řádky a obrázek v něm centruje flex.
       Kdyby se centroval sám (align-self:center), nafoukl by si první řádek
       mřížky na svou výšku a zůstal by přilepený nahoře. */
    /* `1 / -1` by tu nefungovalo: řádky mřížky jsou implicitní, takže -1 míří
       na konec explicitní mřížky a plánek by zůstal jen v prvním řádku. */
    .exp-item--prime .exp-mapa{grid-column:2;grid-row:1 / span 99;align-self:stretch;
      display:flex;align-items:center;min-height:0}
  }
  @media(max-width:959px){
    /* Pod textem stačí plánek jako doplněk — přes celou šířku karty by
       přebil samotný obsah. */
    .exp-mapa{margin-top:20px;max-width:min(300px,60%)}
  }
  /* Značka karty sedí v pravém horním rohu, mimo tok — karta tím nepřišla
     o řádek navíc po odebrání čísla zážitku. Odsazení kopíruje padding karty. */
  .x-prime{position:absolute;top:clamp(14px,1.6vw,22px);right:clamp(14px,1.6vw,22px);z-index:2;
    padding:3px 9px;border:1px solid rgba(194,14,26,.65);border-radius:2px;background:rgba(194,14,26,.18);
    font-family:var(--f-mono);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--fg);
    line-height:1.6;pointer-events:none}
  .x-prime--voucher{border-color:rgba(202,167,95,.65);background:rgba(202,167,95,.18)}
  /* karta dárkových poukazů: není to zážitek, jen rozcestník na sekci poukazů —
     drží velikost běžné karty, ale odlišuje se zlatým akcentem místo červeného */
  .exp-item--voucher{border-color:rgba(202,167,95,.55);
    background:linear-gradient(135deg,rgba(202,167,95,.16) 0%,rgba(202,167,95,.05) 60%,rgba(202,167,95,0) 100%)}
  .exp-item--voucher:hover{background:linear-gradient(135deg,rgba(202,167,95,.24) 0%,rgba(202,167,95,.08) 60%,rgba(202,167,95,0) 100%)}
  .exp-item--voucher .x-num{color:var(--gold);letter-spacing:.22em;text-transform:uppercase}
  .exp-item--voucher .sec-more{color:var(--gold)}
  .exp-item--voucher .sec-more::after{background:rgba(202,167,95,.75)}
  /* světlá sekce (/zazitky/): bílé karty s T1 hover efektem (červená výplň, WCAG bílé texty) */
  .sec-light .exp-item{background:#fff;border:1px solid var(--line-c);overflow:hidden}
  .sec-light .exp-item::before{content:"";position:absolute;inset:0;background:var(--red);transform:translateY(100%);transition:transform .45s cubic-bezier(.16,1,.3,1);z-index:0}
  .sec-light .exp-item:hover::before{transform:translateY(0)}
  .sec-light .exp-item:hover{background:#fff}
  /* Přímé potomky karty zvedá nad červenou výplň hoveru — značka v rohu si ale
     musí nechat absolutní pozici, jinak spadne zpátky do toku. */
  .sec-light .exp-item>*{position:relative;z-index:1;transition:color .35s}
  .sec-light .exp-item>.x-prime{position:absolute}
  .sec-light .exp-item .entry-link{z-index:2}
  .sec-light .exp-item .exp-links{z-index:3}
  .sec-light .exp-item h2,.sec-light .exp-item h3{color:var(--ink)}
  .sec-light .exp-item p{color:var(--ink-muted)}
  .sec-light .exp-item .x-num{color:var(--red)}
  .sec-light .exp-item:hover :is(h2,h3),.sec-light .exp-item:hover p,.sec-light .exp-item:hover .x-num{color:#fff}
  .sec-light .exp-item:hover .sec-more{color:#fff}
  .sec-light .exp-item:hover .sec-more::after{background:rgba(255,255,255,.75)}
  .sec-light .exp-item:hover .sec-more span{color:#fff}
  /* Zvýrazněné karty ve světlé sekci — musí stát až za pravidly výše, která
     kartám nastavují bílé pozadí a šedý rámeček přes zkratku `border`. */
  .sec-light .exp-item--prime{background:linear-gradient(135deg,rgba(194,14,26,.15) 0%,rgba(194,14,26,.05) 55%,#fff 100%) !important;border-color:rgba(194,14,26,.55)}
  .sec-light .exp-item--prime .x-prime,.sec-light .exp-item--voucher .x-prime{color:var(--ink)}
  .sec-light .exp-item--prime:hover .x-prime,.sec-light .exp-item--voucher:hover .x-prime{color:#fff;border-color:rgba(255,255,255,.6);background:rgba(255,255,255,.18)}
  .sec-light .exp-item--voucher{background:linear-gradient(135deg,rgba(202,167,95,.16) 0%,rgba(202,167,95,.05) 60%,#fff 100%) !important;border-color:rgba(202,167,95,.6)}
  .sec-light .exp-item--voucher .x-num{color:#8a6f2e}
  .sec-light .exp-item--voucher .sec-more{color:#8a6f2e}
  .sec-light .exp-item--voucher .sec-more::after{background:rgba(138,111,46,.6)}
  .sec-light .exp-item--voucher:hover .x-num,.sec-light .exp-item--voucher:hover .sec-more{color:#fff}
  .sec-light .exp-item--voucher:hover .sec-more::after{background:rgba(255,255,255,.75)}

  /* ===== GASTRO (cards) ===== */
  .gastro{display:grid !important;grid-template-columns:repeat(3,1fr) !important;gap:clamp(16px,2vw,24px)}
  .gcard{border:1px solid var(--line-c);background:var(--card);border-radius:2px;overflow:hidden;display:flex;flex-direction:column}
  /* Divi 5 dává KAŽDÉMU modulu (Heading/Text/Image…) vlastní margin-bottom:30px
     (viz .et_pb_module ve vlastním Divi CSS) — jakmile je karta poskládaná z
     atomických Divi modulů místo jednoho shortcode bloku, tenhle výchozí odstup
     se sčítá s náší vlastní typografií a vznikají obří mezery. Uvnitř karty ho
     proto vždy vynulujeme, ať řídí odstupy jen naše h3/.g-hours/p pravidla níže. */
  .gcard .et_pb_module{margin-bottom:0 !important}
  .gcard .g-img{position:relative;aspect-ratio:16/10;overflow:hidden}
  .gcard .g-img img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
  .gcard:hover .g-img img{transform:scale(1.06)}
  /* !important nutné – .g-body je Divi řádek (et_pb_row) a Divi na řádky
     sám aplikuje padding:0 se stejnou/vyšší prioritou, takže bez !important
     text ležel přímo na okraji karty. */
  .gcard .g-body{padding:clamp(22px,2.4vw,30px) !important;display:flex;flex-direction:column;flex:1}
  .gcard h2,.gcard h3{font-size:1.6rem;margin:0 0 6px !important}
  .gcard .g-hours{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.08em;color:var(--red);margin:0 0 12px !important}
  .gcard p{font-size:.9rem;color:var(--muted);margin:0 !important}
  .gcard .g-list{list-style:none;margin-top:14px;font-family:var(--f-mono);font-size:.78rem;color:var(--muted)}
  .gcard .g-list li{padding:6px 0;border-top:1px dashed var(--line-c);display:flex;justify-content:space-between;gap:12px}
  .gcard .g-list li b{color:var(--fg)}

  /* ===== SEASON 2026 / WAITLIST ===== */
  /* Karty akcí sezóny (horní část stránky Sezóna) */
  .sez-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.8vw,24px);margin-bottom:clamp(40px,6vh,64px)}
  .sez-card{background:var(--card);border:1px solid var(--card-line);border-radius:2px;padding:clamp(20px,2.2vw,30px);display:flex;flex-direction:column;gap:10px}
  .sez-card-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
  .sez-card h2,.sez-card h3{font-size:clamp(1.2rem,1.8vw,1.5rem)}
  .sez-card p{font-size:.9rem;color:var(--muted);flex:1}
  /* Karta akce byla zbytečně vysoká: oba odkazy si nesly odsazení 26 px shora
     (obecné .sec-more), mezi sebou měly 18 px a pod druhým zůstával plný
     spodní padding. Blok odkazů má teď vlastní, menší rozestupy. */
  .sez-card-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
  .sez-card-links .sec-more{margin-top:0}
  .sez-card{padding-bottom:clamp(16px,1.6vw,22px)}
  /* světlá sekce: karty jako T1 — bílé, hover = červená výplň zespodu, texty bílé (WCAG AA) */
  .sec-light .sez-card{background:#fff;border:1px solid var(--line-c);position:relative;overflow:hidden}
  .sec-light .sez-card::before{content:"";position:absolute;inset:0;background:var(--red);transform:translateY(100%);transition:transform .45s cubic-bezier(.16,1,.3,1);z-index:0}
  .sec-light .sez-card:hover::before{transform:translateY(0)}
  .sec-light .sez-card>*{position:relative;z-index:1;transition:color .35s}
  .sec-light .sez-card h2,.sec-light .sez-card h3{color:var(--ink)}
  .sec-light .sez-card:hover :is(h2,h3),.sec-light .sez-card:hover p{color:#fff}
  .sec-light .sez-card:hover .ev-date{color:#fff}
  .sec-light .sez-card:hover .ev-status{color:#fff !important;border-color:rgba(255,255,255,.75) !important}
  .sec-light .sez-card:hover .sec-more{color:#fff}
  .sec-light .sez-card:hover .sec-more::after{background:rgba(255,255,255,.75)}
  .sec-light .sez-card:hover .sec-more span{color:#fff}
  @media(max-width:1279px){.sez-cards{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:640px){.sez-cards{grid-template-columns:1fr}}
  .ev-ext{display:inline-block;margin-left:8px;color:var(--gold);font-weight:700}
  .ev-ext:hover{color:var(--red-hi,#FF5A50)}
  .season{display:grid;grid-template-columns:3fr 2fr;gap:clamp(24px,4vw,56px);align-items:start}
  /* grid položky se nesmí roztáhnout na min-content (přetékaly na mobilu) */
  .season>*{min-width:0}
  .ev-name{min-width:0}
  .ev-list{display:flex;flex-direction:column}
  .ev-row{display:grid;grid-template-columns:auto 1fr auto;gap:clamp(14px,2vw,28px);align-items:center;padding:20px 14px;border-bottom:1px solid var(--line-c);cursor:pointer;transition:padding-left .3s,background .3s;text-align:left;background:none;border-left:none;border-right:none;border-top:none;color:inherit;width:100%;font:inherit}
  .ev-meta{display:flex;flex-direction:column;align-items:flex-end;gap:7px;text-align:right}
  .ev-row:first-child{border-top:1px solid var(--line-c)}
  .ev-row:hover{padding-left:22px;background:rgba(194,14,26,.06)}
  .ev-row.sel{background:rgba(194,14,26,.1);box-shadow:inset 3px 0 0 var(--red)}
  .ev-date{font-family:var(--f-mono);font-size:.8rem;color:var(--red);white-space:nowrap}
  .ev-name{font-family:var(--f-head);text-transform:uppercase;font-size:clamp(1.2rem,2vw,1.7rem);color:var(--fg);line-height:1.22}
  .ev-name small{display:block;font-family:var(--f-body);font-size:.78rem;color:var(--muted);text-transform:none;font-weight:400;letter-spacing:0;margin-top:2px}
  .ev-status{font-family:var(--f-mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;padding:5px 10px;border-radius:2px;white-space:nowrap;border:1px solid var(--line-c);color:var(--muted)}
  .ev-status.free{color:#2ecc71;border-color:rgba(46,204,113,.5)}
  .ev-status.few{color:var(--gold);border-color:rgba(202,167,95,.5)}
  .ev-status.full{color:var(--red);border-color:rgba(194,14,26,.55)}
  .ev-cta{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.1em;color:var(--muted);white-space:nowrap}
  .ev-row:hover .ev-cta{color:var(--red)}
  .waitbox{background:var(--card);border:1px solid var(--card-line);border-radius:2px;padding:clamp(26px,3vw,38px);position:relative;overflow:hidden}
  .waitbox::before{content:"";position:absolute;top:0;left:0;width:100%;height:3px;background:linear-gradient(90deg,var(--red),var(--gold))}
  .waitbox h3{font-size:1.7rem;margin:8px 0 6px}
  .waitbox .wb-sub{font-size:.9rem;color:var(--muted);margin-bottom:20px}
  .wb-field{margin-bottom:14px}
  .wb-field label{display:block;font-family:var(--f-mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
  .wb-field input,.wb-field select{width:100%;background:transparent;border:1px solid var(--line-c);color:var(--fg);font-family:var(--f-body);font-size:.92rem;padding:10px 12px;outline:none;transition:border-color .2s}
  .wb-field input:focus,.wb-field select:focus{border-color:var(--red)}
  .wb-field select option{background:var(--graphite);color:var(--offwhite)}
  .sec-light .wb-field select option{background:#fff;color:var(--ink)}
  .wb-ok{margin-top:8px;padding:12px 14px;border:1px solid rgba(46,204,113,.5);background:rgba(46,204,113,.08);color:#2ecc71;font-family:var(--f-mono);font-size:.76rem;display:none}
  .wb-ok.show{display:block}

  /* ===== B2B / EVENTS ===== */
  /* Odsazení/mezery sladěné s .stat (T2/T7 – "64/5,4 km/0 m") na výslovné
     přání – stejný padding karty, stejný responzivní clamp() na čísle
     a stejné white-space:nowrap jako pojistka proti zalomení uprostřed
     slova. Barva čísla zůstává var(--red) (BEZ (--fg)) – to je zavedený
     akcent T7 na světlé sekci, není součástí požadavku na sladění. */
  .b2b-grid{display:grid !important;grid-template-columns:repeat(2,1fr) !important;gap:clamp(14px,2vw,22px);margin:22px 0}
  /* Číslo i popisek sedí na vodorovném i svislém středu rámečku. Dřív bylo
     centrování jen v úzkém koridoru, na širokém rozlišení text vlevo nahoře. */
  .b2b-card{background:var(--card);border:1px solid var(--card-line);padding:clamp(10px,1.2vw,16px);border-radius:2px;
    display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px}
  .b2b-card .et_pb_text_inner,.b2b-card p{text-align:center;width:100%;margin:0}
  .b2b-card .data{font-size:clamp(1.3rem,2.2vw,2rem);color:var(--red);display:block;font-weight:700;line-height:1;margin-bottom:10px;white-space:nowrap}
  .b2b-card span{font-family:var(--f-mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
  .b2b-tags{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 4px}
  .b2b-tags span{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.06em;color:var(--muted);border:1px solid var(--line-c);padding:6px 12px;border-radius:2px}
  .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px}
  .form-grid .full{grid-column:1/-1}
  .form-grid label{display:block;font-family:var(--f-mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
  .form-grid input,.form-grid select,.form-grid textarea{width:100%;background:transparent;border:1px solid var(--line-c);color:var(--fg);font-family:var(--f-body);font-size:.92rem;padding:10px 12px;outline:none;transition:border-color .2s}
  .form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:var(--red)}
  .form-grid select option{background:var(--graphite);color:var(--offwhite)}
  .sec-light .form-grid select option{background:#fff;color:var(--ink)}
  .form-grid textarea{resize:vertical;min-height:90px}

  /* ===== REVIEWS ===== */
  /* .reviews je (stejně jako .entries u T1) samostatný řádek vedle .wrap,
     ne uvnitř něj – bez vlastního odsazení ho Divi jen vycentruje na
     max-width:1280px bez ohledu na HUD/lištu. Stejná oprava jako .entries. */
  .reviews{display:grid !important;grid-template-columns:repeat(3,1fr) !important;gap:clamp(16px,2vw,26px)}
  .et_pb_row.reviews{
    max-width:none !important;
    margin-left:var(--entries-left) !important;
    margin-right:var(--entries-right-base) !important;
    width:calc(100% - var(--entries-left) - var(--entries-right-base)) !important;
  }
  /* Stejná pojistka jako u .wrap výše (Diviho per-řádková cache max-width/
     display se stejnou specificitou a nepředvídatelným pořadím načtení) –
     dvě třídy místo jedné napříč všemi kartovými mřížkami sekcí. */
  .et_pb_row.entries{display:grid !important;grid-template-columns:repeat(4,1fr) !important}
  /* Stejný problém jako .wrap/.entries – Diviho vlastní cache (per-řádková
     pravidla podle et_pb_row_N) dávala .split max-width menší, než měl mít
     (obsah/fotka byly zbytečně zúžené na ~550px místo poloviny sekce). */
  .et_pb_row.split{display:grid !important;grid-template-columns:1fr 1fr !important;max-width:none !important;width:100% !important}
  .et_pb_row.exp{display:grid !important;grid-template-columns:repeat(3,1fr) !important;max-width:var(--maxw) !important;margin:0 auto !important}
  .et_pb_row.gastro{display:grid !important;grid-template-columns:repeat(3,1fr) !important}
  .et_pb_row.b2b-grid{display:grid !important;grid-template-columns:repeat(2,1fr) !important}
  .et_pb_row.reviews{display:grid !important;grid-template-columns:repeat(3,1fr) !important}
  .et_pb_row.season{display:grid !important;grid-template-columns:3fr 2fr !important}
  .review{background:var(--card);border:1px solid var(--card-line);padding:clamp(26px,2.6vw,38px);border-radius:2px;display:flex;flex-direction:column;gap:16px}
  .review .stars{color:var(--red);font-size:.9rem;letter-spacing:3px}
  .review p{font-size:.96rem;color:var(--fg);font-style:italic}
  .review .r-who{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.1em;color:var(--muted);text-transform:uppercase;margin-top:auto}
  .partners{margin-top:60px;display:flex;align-items:center;gap:clamp(24px,4vw,56px);flex-wrap:wrap;justify-content:center;padding-top:40px;border-top:1px solid var(--line-c)}
  .partners .p-label{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
  .partners .p-name{font-family:var(--f-head);text-transform:uppercase;font-size:1.3rem;color:var(--muted);letter-spacing:.02em}

  /* ===== FINAL CTA ===== */
  .final{position:relative;text-align:center;padding:clamp(90px,16vh,180px) 0;overflow:hidden}
  .final::before{content:"";position:absolute;inset:0;background:url('assets/foto/okruh-letecky-2.jpg') center/cover;opacity:.22;z-index:0}
  .final::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(14,15,17,.4),var(--graphite-deep) 75%);z-index:1}
  .final .wrap{position:relative;z-index:2}
  .final h2{font-size:clamp(2.6rem,7vw,6.5rem);font-weight:800;color:#fff}
  .final p{color:var(--grey);max-width:52ch;margin:18px auto 32px}
  /* Řada akčních tlačítek: vedle sebe a na střed, s přirozeným zalomením pod
     sebe, jakmile se do šířky nevejdou. Divi jinak dává každému tlačítku
     vlastní sloupec přes celou šířku, takže stála pod sebou i na desktopu.
     V úzkém koridoru (≤959 px) je přebíjí blok níž, kde jdou na plnou šířku. */
  .final .fc-actions,.et_pb_row.fc-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;align-items:center}
  .et_pb_row.fc-actions>.et_pb_column{width:auto !important;flex:0 0 auto;margin:0 !important}
  .et_pb_row.fc-actions .et_pb_button_module_wrapper{width:auto}

  /* ===== FOOTER ===== */
  footer{background:var(--graphite-deep);border-top:1px solid var(--line);padding:clamp(60px,8vh,90px) 0 30px;color:var(--grey)}
  .foot-top{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:clamp(24px,3vw,50px);padding-bottom:50px;border-bottom:1px solid var(--line)}
  .foot-brand img{height:42px;margin-bottom:20px}
  .foot-brand p{color:var(--grey);font-size:.9rem;max-width:36ch}
  .foot-brand .data{display:block;margin-top:16px;font-size:.78rem;color:var(--grey-dim);letter-spacing:.04em;line-height:1.9}
  .foot-col h2,.foot-col h3,.foot-col h4{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:18px;font-weight:700}
  .foot-col ul{list-style:none;display:flex;flex-direction:column;gap:11px}
  .foot-col a,.foot-col .fc-line{font-size:.86rem;color:var(--grey);transition:color .2s}
  .foot-col a:hover{color:var(--offwhite)}
  .newsletter{display:flex;margin-top:14px;border:1px solid var(--line)}
  .newsletter input{flex:1;background:transparent;border:none;padding:11px 14px;color:var(--offwhite);font-size:.85rem;outline:none}
  .newsletter button{background:var(--red);border:none;color:#fff;padding:0 16px;cursor:pointer;font-family:var(--f-mono);font-size:.78rem;letter-spacing:.1em}
  .socials{display:flex;gap:14px;margin-top:18px}
  .socials a{width:38px;height:38px;border:1px solid var(--line);border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--f-mono);font-size:.72rem;color:var(--grey);transition:.25s}
  .socials a:hover{border-color:var(--red);color:var(--red)}
  .foot-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding-top:26px}
  .foot-bottom .legal{display:flex;gap:20px;flex-wrap:wrap;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.08em;color:var(--grey-dim);text-transform:uppercase}
  .foot-bottom .legal a:hover{color:var(--offwhite)}
  .build-tag{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.12em;color:var(--grey-dim);border:1px solid var(--line);padding:6px 12px;border-radius:2px}

  /* ============================================================
     RESPONSIVE — ČTYŘI REŽIMY (GRID-RESPONSIVE-02 §1)
     Desktop           ≥ 1280 px   lišta viditelná, HUD 224 px
     Tablet na šířku   960–1279    lišta viditelná, HUD 224 px
     Tablet na výšku   641–959     lišta skrytá,   HUD 190 px
     Mobil             ≤ 640 px    lišta skrytá,   HUD bez rezervace šířky
     Hranice 1280, 960 a 641 jsou atomické. Nové mezihodnoty se nezavádějí —
     dvanáct ad-hoc breakpointů byl důvod, proč nešlo nic opravit globálně.
     ============================================================ */

  /* --- TABLET NA ŠÍŘKU a níž (≤ 1279 px) --- */
  @media(max-width:1279px){
    .amenity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .amenity-groups{grid-template-columns:repeat(2,minmax(0,1fr))}
    .entries,.et_pb_row.entries{grid-template-columns:repeat(2,1fr) !important}
    .entry:nth-child(2){border-right:none}
    .exp,.et_pb_row.exp{grid-template-columns:repeat(2,1fr) !important}
    .exp-item:nth-child(2n){border-right:none}
    /* T5 gastronomie: na obou tabletech tři vodorovné řádky.
       Přepis MUSÍ nést i tvar .et_pb_row.gastro — základ (.et_pb_row.gastro)
       má vyšší specificitu i !important, holé .gastro neprojde a karty
       zůstávaly třísloupcové až do 20 px šířky na mobilu. */
    .gastro,.et_pb_row.gastro{grid-template-columns:1fr !important}
    .b2b-grid{grid-template-columns:repeat(2,1fr) !important}
    .reviews,.et_pb_row.reviews{grid-template-columns:1fr !important}
    .season,.et_pb_row.season{grid-template-columns:1fr !important}
    .foot-top{grid-template-columns:1fr 1fr}
  }
  /* --- ÚZKÝ KORIDOR (960–1024 px) ---
     V tomhle pásmu je obsahový sloupec jen 417–480 px široký (vlevo HUD
     224 px + 40, vpravo osa railu − 45). Dvousloupcové rozvržení by tu
     dávalo poloviny po zhruba 200 px, což je pod hranicí 220 px, kterou
     zadání pro buňku dvousloupcové mřížky vyžaduje. Karty, dělené sekce
     T2/T7 i dvojice formulářových polí proto přecházejí na jeden sloupec
     dřív než ostatní mřížky. Geometrie koridoru se tím nemění. */
  @media (min-width:960px) and (max-width:1024px){
    .entries,.et_pb_row.entries,
    .rooms,.et_pb_row.rooms,
    .exp,.et_pb_row.exp,
    .split,.et_pb_row.split,
    .b2b-grid,
    .form-grid,.et_pb_row.form-grid,
    .amenity-grid,
    .k-grid,
    .dp-cols,.dp-air-grid,
    .rd-aside,.rd-amen{grid-template-columns:minmax(0,1fr) !important}
    .k-form .fluentform form,#firemni .fluentform form{grid-template-columns:minmax(0,1fr)}
    .split.reverse .sp-media{order:0}
    .entry,.exp-item{border-right:none}
  }

  /* --- TABLET NA VÝŠKU a níž (≤ 959 px) --- */
  @media(max-width:959px){
    /* Rezervační lišta: na obou tabletech 3 x 2 (zadání GRID-RESPONSIVE-03).
       Šest polí vedle sebe se do zúženého koridoru nevejde. */
    .booking .wrap{flex-wrap:wrap}
    .bk-field{flex:1 1 calc(33.333% - 1px);min-width:0}
    .bk-submit{flex:1 1 100%}
    .track-progress{display:none}
    .telemetry-hud{width:190px}
    /* Hlavní navigace se sbaluje do hamburgeru už na tabletu na výšku —
       na 768 px se plná nabídka i s CTA a jazyky nevejde. Dřív byla hranice
       780 px, což bylo mezi režimy; posunuto na hranici režimu. */
    .topnav nav{display:none !important}
    .topnav .btn{display:none}
    .hamburger{display:flex}
    .lang{display:none}
    .mobile-menu.open,.mobile-menu.is-open{display:flex}
    .mobile-menu{position:fixed;inset:0;z-index:130;background:var(--graphite-deep);flex-direction:column;align-items:center;justify-content:center;gap:24px}
    .mobile-menu a{font-family:var(--f-head);text-transform:uppercase;font-size:1.6rem;color:var(--offwhite)}
    .mobile-menu .mm-close{position:absolute;top:24px;right:28px;font-size:2rem;background:none;border:none;color:var(--offwhite);cursor:pointer}
    .mobile-menu .lang{display:flex;margin-top:10px}
    /* Na mobilu musí jít na rodiče proklikat i ho rozbalit, proto jsou odkaz
       a rozbalovadlo dva samostatné cíle vedle sebe. */
    .mobile-menu{overflow-y:auto;justify-content:flex-start;padding:84px 24px 40px;gap:0}
    .mobile-menu .ma-item{width:100%;max-width:420px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0;border-bottom:1px solid var(--line)}
    .mobile-menu .ma-item .ma-link{flex:1 1 auto;padding:15px 0}
    .mobile-menu > a{width:100%;max-width:420px;padding:15px 0;border-bottom:1px solid var(--line);text-align:left}
    .mobile-menu .ma-toggle{flex:none;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;color:var(--grey);transition:transform .25s,color .25s}
    .mobile-menu .ma-toggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
    .mobile-menu .ma-toggle[aria-expanded="true"]{transform:rotate(180deg);color:var(--red)}
    .mobile-menu .ma-sub{flex:1 0 100%;display:none;flex-direction:column;padding:0 0 10px 16px}
    .mobile-menu .ma-item.je-otevrena .ma-sub{display:flex}
    .mobile-menu .ma-sub a{font-size:1rem;font-family:var(--f-mono);letter-spacing:.06em;color:var(--grey);padding:11px 0;border-bottom:none}
    .mobile-menu .ma-sub a:hover{color:#fff}
    .mobile-menu .btn{margin-top:22px}
    /* T2/T7 dělená sekce se od tabletu na výšku skládá pod sebe.
       Přepis MUSÍ nést i tvar .et_pb_row.split — základ (.et_pb_row.split)
       má vyšší specificitu i !important, holé .split by neprošlo. */
    .split,.et_pb_row.split{grid-template-columns:1fr !important}
    .split.reverse .sp-media{order:0}
    .sp-media{min-height:54vh}
    .scroll-cue{display:none}
  }

  /* --- MOBIL (≤ 640 px) --- */
  @media(max-width:640px){
    /* Mřížky se skládají na jeden sloupec až tady. Do 640 px platí tabletová
       matice (T1 a T3 dva sloupce, patička dva sloupce) — dřív se skládaly
       už na 780 px, takže tablet na výšku dostával mobilní rozvržení. */
    .amenity-grid{grid-template-columns:minmax(0,1fr)}
    .amenity-groups{grid-template-columns:minmax(0,1fr)}
    /* Na mobilu jedna karta pod druhou — dvě vedle sebe by měly na hodnoty
       méně místa než na popisky. */
    .room-table tbody{grid-template-columns:minmax(0,1fr)}
    .know-list{grid-template-columns:minmax(0,1fr)}
    .rooms,.et_pb_row.rooms{grid-template-columns:1fr !important}
    .room.feat,.rooms>.room:last-child:nth-child(odd){grid-column:span 1}
    .entries,.et_pb_row.entries{grid-template-columns:1fr !important}
    .entry{border-right:none;min-height:auto}
    .exp,.et_pb_row.exp{grid-template-columns:1fr !important}
    .exp-item{border-right:none;min-height:auto}
    .b2b-grid{grid-template-columns:1fr !important}
    .form-grid,.et_pb_row.form-grid{grid-template-columns:1fr !important}
    /* Řádek akce sezóny: datum + název + stav/CTA. Na úzkém mobilu se tři
       sloupce s nezalomitelným textem (white-space:nowrap na stavu a CTA)
       nevejdou — proto pod sebe. */
    .ev-row{grid-template-columns:minmax(0,1fr);gap:6px;text-align:left}
    .ev-meta{display:flex;flex-wrap:wrap;gap:8px 14px}
    .ev-status,.ev-cta{white-space:normal}
    .foot-top{grid-template-columns:1fr}
    .booking .wrap{flex-direction:column}   /* mobil: 1 x 6 */
    .bk-field,.bk-note{border-right:none;border-bottom:1px solid var(--line)}
  }

/* ============================================================
   TEXTOVÝ TOK — dlouhá slova nesmí rozšířit kontejner
   ============================================================
   Německé složeniny („Beherbergungs- und Reklamationsordnung",
   „Unterkunftsvereinbarung") jsou v nadpisu na mobilu širší než celý
   obsahový sloupec. Divi dává nadpisovým modulům vlastní pravidla, kde je
   overflow-wrap: normal, takže se slovo nezalomí a roztáhne řádek —
   výsledkem bylo přetečení celé stránky o desítky pixelů jen v němčině.

   Dělení spojovníkem se nepoužívá (přání klienta): slovo, které se na řádek
   nevejde, se celé přesune na nový řádek. break-word zůstává jako pojistka
   pro slovo delší než celý řádek — jinak by přeteklo stránku.
   ============================================================ */
.et_pb_module_header,
.et_pb_heading .et_pb_heading_container > :where(h1,h2,h3,h4,h5,h6),
.sec :where(h1,h2,h3,h4,h5,h6),
.legal-body :where(h1,h2,h3,h4,h5,h6){
  overflow-wrap:break-word;
  word-break:normal;
  -webkit-hyphens:none;
  hyphens:none;
}
/* Odkazy, e-maily a URL nemají kde zalomit — smí se lámat kdekoli. */
.sec a[href^="mailto:"],.sec a[href^="tel:"],.sec a[href^="http"],
.legal-body a,.foot-col a,.k-block a{overflow-wrap:anywhere}

/* Sloupce a moduly Divi jsou flex položky. Bez min-width:0 nikdy neklesnou
   pod min-content svého obsahu, takže jediné dlouhé slovo nebo široká
   tabulka roztáhne celou sekci. (GRID-RESPONSIVE-01 §7) */
.sec .et_pb_column,.sec .et_pb_module,.sec .et_pb_text_inner{min-width:0}

/* ============================================================================
   TLAČÍTKA — jednotný systém pro celý web
   Závazná specifikace: GPT/GRID-TLACITKA-SPECIFIKACE-A-CSS-2026-09-06.md

   Jedno místo pro celý web, včetně obsahu vykresleného z pluginů a včetně
   nativního Divi 5 modulu Tlačítko. V editoru stačí u modulu Tlačítko nechat
   výchozí stav (primární), nebo přidat třídu modulu gh-btn--secondary,
   gh-btn--tertiary či gh-filter.

   Barvu sekundární a terciární akce NEURČUJE třída tlačítka, ale povrch,
   na kterém leží. Proto tu není žádné globální `.btn{color:#fff}` — to
   rozbíjelo sekundární tlačítko na světlé sekci a muselo se přebíjet dalším
   !important. Zůstává jen tam, kde Divi vnucuje vlastní generované hodnoty
   (padding a rámeček při hoveru, jeho vlastní šipka ::after).
   ============================================================================ */
:root{
  --gh-red:#C20E1A;
  --gh-red-bright:#E11622;
  --gh-ink:#17181B;
  --gh-white:#FFFFFF;
  --gh-focus-blue:#005FCC;
  --gh-transition:200ms ease;
  --gh-button-lift:translateY(-1px) scale(1.012);
  /* Výchozí povrch je světlý; sekce si ho přepíší podle sebe. */
  --gh-action-fg:var(--gh-ink);
  --gh-action-border:#A3A19D;
}

/* --- Povrch určuje barvu akce -------------------------------------------- */
.gh-surface--light,.sec-light{--gh-action-fg:var(--gh-ink);--gh-action-border:#A3A19D}
.gh-surface--dark,.gh-surface--photo,.sec-dark,.hero,.sp-media,footer,.booking,.mobile-menu,
.room--m1,.room--m2,.room--m4,.hover-card2{
  --gh-action-fg:var(--gh-white);--gh-action-border:rgb(255 255 255 / 55%)
}

/* --- Společný základ ------------------------------------------------------
   Mapování historických tříd: .btn → primární, .btn.btn-ghost → sekundární,
   .sec-more → terciární, .gal-fbtn → filtr, odesílací tlačítko Fluent Forms
   → primární. Nativní Divi tlačítko (.et_pb_button) je ve výchozím stavu
   primární. */
.gh-btn,.gh-filter,
.btn,.sec-more,.gal-fbtn,
.et_pb_button,
.fluentform .ff-btn-submit,.fluentform button[type=submit]{
  align-items:center;
  box-sizing:border-box;
  cursor:pointer;
  display:inline-flex;
  font-family:var(--f-mono);
  justify-content:center;
  letter-spacing:.13em;
  line-height:1.2;
  min-height:44px;
  text-decoration:none;
  text-transform:uppercase;
  transition:
    background-color var(--gh-transition),
    border-color var(--gh-transition),
    color var(--gh-transition),
    box-shadow 250ms ease,
    transform var(--gh-transition);
}

/* Divi kreslí vlastní šipku přes ::after a při hoveru mění padding i rámeček.
   Obojí musí ustoupit, jinak tlačítko na hover poskočí a změní velikost. */
.et_pb_button::after,.et_pb_button::before{display:none !important;content:none !important}
.et_pb_button,.et_pb_button:hover{
  padding:11px 20px !important;
  border-width:1px !important;
  border-style:solid !important;
}

/* --- Primární ------------------------------------------------------------- */
.gh-btn--primary,
.btn:not(.btn-ghost):not(.gh-btn--secondary):not(.gh-btn--tertiary),
.et_pb_button:not(.btn-ghost):not(.gh-btn--secondary):not(.gh-btn--tertiary):not(.gh-filter),
.fluentform .ff-btn-submit,.fluentform button[type=submit]{
  background:var(--gh-red);
  border:1px solid var(--gh-red);
  color:var(--gh-white) !important;   /* jen na červené ploše — kontrast je daný, ne kontextový */
  font-size:.74rem;
  font-weight:800;
  padding:11px 20px;
}

/* --- Sekundární — barva podle povrchu ------------------------------------- */
.gh-btn--secondary,
.btn.btn-ghost,
.et_pb_button.btn-ghost,.et_pb_button.gh-btn--secondary{
  background:transparent;
  border:1px solid var(--gh-action-border);
  color:var(--gh-action-fg) !important;
  font-size:.74rem;
  font-weight:800;
  padding:11px 20px;
}

/* --- Terciární ------------------------------------------------------------
   Text s červeným podtržením; šipka je dekorativní a objeví se až při
   interakci. Podporuje značku .gh-btn__arrow i historický holý <span>. */
.gh-btn--tertiary,.sec-more{
  background:none;
  border:0;
  color:var(--gh-action-fg);
  font-size:.74rem;
  font-weight:780;
  gap:0;
  justify-content:flex-start;
  padding:0 0 6px;
  position:relative;
  transform-origin:left center;
}
.gh-btn--tertiary::after,.sec-more::after{
  background:var(--gh-red);
  bottom:8px;
  content:"";
  height:1px;
  left:0;
  position:absolute;
  transition:width var(--gh-transition);
  width:calc(100% - 2px);
}
.gh-btn__arrow,.sec-more>span,.gh-btn--tertiary>span{
  display:inline-block;
  font-size:1.05em;
  line-height:1;
  margin-left:8px;
  opacity:0;
  transform:translateX(-7px);
  transition:opacity var(--gh-transition),transform var(--gh-transition);
}

/* --- Filtry --------------------------------------------------------------- */
.gh-filter,.gal-fbtn{
  background:transparent;
  border:1px solid var(--gh-action-border);
  color:var(--gh-action-fg);
  font-size:.72rem;
  font-weight:750;
  padding:0 14px;
}
.gh-filter[aria-pressed="true"],.gal-fbtn[aria-pressed="true"],.gal-fbtn.active{
  background:var(--gh-red);
  border-color:var(--gh-red);
  color:var(--gh-white);
}

/* --- Hover pouze tam, kde ho zařízení umí --------------------------------- */
@media (hover:hover) and (pointer:fine){
  .gh-btn--primary:hover,
  .btn:not(.btn-ghost):not(.gh-btn--secondary):not(.gh-btn--tertiary):hover,
  .et_pb_button:not(.btn-ghost):not(.gh-btn--secondary):not(.gh-btn--tertiary):not(.gh-filter):hover,
  .fluentform .ff-btn-submit:hover,.fluentform button[type=submit]:hover{
    background:var(--gh-red-bright);
    border-color:var(--gh-red-bright) !important;
    box-shadow:0 0 22px rgb(194 14 26 / 50%);
    color:var(--gh-white) !important;
    transform:var(--gh-button-lift);
  }
  /* Sekundární NIKDY nezískává plnou červenou plochu — jen červený rámeček. */
  .gh-btn--secondary:hover,
  .btn.btn-ghost:hover,
  .et_pb_button.btn-ghost:hover,.et_pb_button.gh-btn--secondary:hover{
    background:transparent;
    border-color:var(--gh-red) !important;
    box-shadow:none;
    color:var(--gh-action-fg) !important;
    transform:var(--gh-button-lift);
  }
  .gh-btn--tertiary:hover,.sec-more:hover{transform:translateX(4px) scale(1.012)}
  .gh-btn--tertiary:hover::after,.sec-more:hover::after{width:calc(100% - 25px)}
  .gh-btn--tertiary:hover .gh-btn__arrow,.gh-btn--tertiary:hover>span,.sec-more:hover>span{
    opacity:1;transform:translateX(0)
  }
  .gh-filter:hover,.gal-fbtn:hover{border-color:var(--gh-red);transform:var(--gh-button-lift)}
}

/* --- Focus: až za hoverem, ať nezmizí při kombinaci myši a klávesnice ----- */
.gh-btn:focus-visible,.gh-filter:focus-visible,
.btn:focus-visible,.sec-more:focus-visible,.gal-fbtn:focus-visible,
.et_pb_button:focus-visible,
.fluentform .ff-btn-submit:focus-visible,.fluentform button[type=submit]:focus-visible{
  /* Bílý vnitřní a modrý vnější kroužek jsou čitelné na světlém, tmavém
     i červeném podkladu a nad fotografií. */
  box-shadow:0 0 0 3px var(--gh-white),0 0 0 6px var(--gh-focus-blue);
  outline:none;
}
/* Klávesnice dostane u terciárního odkazu stejnou informaci jako hover. */
.gh-btn--tertiary:focus-visible,.sec-more:focus-visible{transform:translateX(4px) scale(1.012)}
.gh-btn--tertiary:focus-visible::after,.sec-more:focus-visible::after{width:calc(100% - 25px)}
.gh-btn--tertiary:focus-visible .gh-btn__arrow,
.gh-btn--tertiary:focus-visible>span,.sec-more:focus-visible>span{opacity:1;transform:translateX(0)}

/* --- Mobil: tlačítko nesmí zmenšit aktivní plochu, jen odsazení ----------- */
@media(max-width:640px){
  .gh-btn--primary,.gh-btn--secondary,.btn,.et_pb_button{padding:11px 16px}
  .et_pb_button,.et_pb_button:hover{padding:11px 16px !important}
  .gh-filter,.gal-fbtn{padding:0 12px}
}

@media (prefers-reduced-motion:reduce){
  .gh-btn,.gh-btn::after,.gh-btn__arrow,.gh-filter,
  .btn,.sec-more,.sec-more::after,.sec-more>span,.gal-fbtn,.et_pb_button{
    transition-duration:.01ms;
  }
  /* !important je tu na místě: hover pravidla výše mají kvůli řetězcům
     :not() vyšší specificitu, a uživatelské nastavení omezeného pohybu je
     musí přebít vždy. */
  .gh-btn:hover,.gh-btn:focus-visible,.gh-filter:hover,
  .btn:hover,.sec-more:hover,.sec-more:focus-visible,.gal-fbtn:hover,.et_pb_button:hover{
    transform:none !important;
  }
}

/* ============================================================
   WCAG 2.2 AA — přístupnost (kontrast, focus, cílová velikost)
   ============================================================ */

/* 1.4.3 Kontrast textu: červený TEXT na tmavém pozadí zesvětlen na AA (≥4.5:1).
   Značková #C20E1A se drží na tlačítkách, výplních a světlých sekcích. */
:root{ --red-hi:#FF5A50; } /* přístupná červená pro text na grafitu (≈5.7:1) */
.hero .kicker,
.sec-dark .kicker,
.final .kicker,
.waitbox .kicker,
.room .r-num,
.sec-dark .x-num,
.exp-item .x-num,
.exp-item:hover .x-link,
/* .ev-date sem nepatří — datum termínu má být brandová červená (#C20E1A),
   ne světlejší varianta pro tmavé plochy. Padá tím na .ev-date výš. */
.ev-row:hover .ev-cta,
.review .stars,
.ev-status.full{ color:var(--red-hi); }
.ev-status.full{ border-color:rgba(255,90,80,.6); }
/* Světlá varianta závěrečné sekce (stránka „O nás") je na papírovém pozadí —
   tam patří brandová červená, ne světlejší varianta pro tmavé plochy. */
.sec-light.final .kicker{ color:var(--red); }
/* Hero kicker zůstává BÍLÝ a výrazný (přes fotku) — má přednost před a11y červenou */
.hero .hero-content .kicker{ color:#fff; }
.socials a:hover{ border-color:var(--red-hi); color:var(--red-hi); }

/* 1.4.11 Kontrast netextových prvků: hranice formulářových polí na tmavém ≥3:1 */
.sec-dark .wb-field input, .sec-dark .wb-field select,
.sec-dark .form-grid input, .sec-dark .form-grid select, .sec-dark .form-grid textarea{
  border-color:rgba(255,255,255,.42);
}
/* placeholdery s dostatečným kontrastem */
input::placeholder, textarea::placeholder{ color:var(--grey); opacity:1; }
.sec-light input::placeholder, .sec-light textarea::placeholder{ color:#6b6f76; }

/* 2.4.7 + 2.4.13 Viditelný focus (klávesnice) — zlatá na tmavém, červená na světlém */
:focus-visible{ outline:3px solid var(--red); outline-offset:2px; border-radius:1px; }
.sec-dark :focus-visible, .hero :focus-visible, header :focus-visible,
footer :focus-visible, .booking :focus-visible, .telemetry-hud :focus-visible{
  outline-color:var(--gold);
}

/* 2.5.8 Cílová velikost (min 24×24 px) pro drobné ovládací prvky */
.lang a{ min-width:24px; min-height:24px; display:inline-flex; align-items:center; justify-content:center; }
.hud-x, .mm-close{ min-width:44px; min-height:44px; display:inline-flex; align-items:center; justify-content:center; }
.topnav nav a{ padding:8px 0; }

/* 2.3.3 Omezení pohybu — respektuje systémové nastavení */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
  .reveal{ opacity:1 !important; transform:none !important; }
  #trackLine{ stroke-dashoffset:0 !important; }
}

/* ============================================================
   DIVI INTEGRACE — plnošířkové řady se shortcody sekcí
   (Text modul v řadě .grid-fullrow → sekce spanuje 100 %)
   ============================================================ */
.et_pb_row.grid-fullrow{ width:100% !important; max-width:100% !important; padding:0 !important; margin:0 auto !important; }
.grid-fullrow .et_pb_column{ width:100% !important; margin:0 !important; padding:0 !important; }
.grid-fullrow .et_pb_text,
.et_pb_text.grid-shortcode,
.et_pb_text.grid-html{ margin:0 !important; padding:0 !important; }
.et_pb_text.grid-shortcode > .et_pb_text_inner,
.et_pb_text.grid-html > .et_pb_text_inner{ margin:0 !important; }
/* wpautop nechť neláme naše sekce */
.et_pb_text.grid-shortcode > .et_pb_text_inner > p:empty,
.et_pb_text.grid-html > .et_pb_text_inner > p:empty{ display:none; }
/* Divi obal nesmí přebít pozadí našich sekcí */
.et_pb_section:has(.grid-shortcode),
.et_pb_section:has(.grid-html){ padding:0 !important; background:transparent !important; }

/* ============================================================
   JAZYKOVÉ VARIANTY (Polylang) — hlavička/patička nese CS+EN+DE
   markup vedle sebe; CSS ukáže variantu dle <html lang>, grid.js
   pak neaktivní varianty odstraní z DOMu (duplicitní id).
   ============================================================ */
.grid-lang{ display:none; }
html[lang^="cs"] .grid-lang-cs,
html[lang^="en"] .grid-lang-en,
html[lang^="de"] .grid-lang-de{ display:block; }
/* fallback: neznámý jazyk → čeština */
html:not([lang^="cs"]):not([lang^="en"]):not([lang^="de"]) .grid-lang-cs{ display:block; }

/* ============================================================
   WP ADMIN BAR — fixní hlavička nesmí mizet pod administrační lištu
   ============================================================ */
.admin-bar #topbar{ top:32px; }
@media screen and (max-width:782px){ .admin-bar #topbar{ top:46px; } }
/* fixní widget a trať se nekryjí s admin lištou (jsou dole/vpravo), ale pro jistotu */
.admin-bar .track-progress{ height:calc(100vh - 32px); top:32px; }
@media screen and (max-width:782px){ .admin-bar .track-progress{ height:calc(100vh - 46px); top:46px; } }

/* ============================================================
   REZERVACE PRAVÉHO PROSTORU pro boční posuvník (bez překryvu)
   Posuvník je fixní vpravo (~200px). Na velkých obrazovkách posuneme
   obsah sekcí doleva, aby nešel pod něj. Pozadí sekcí zůstává přes celou šířku.
   ============================================================ */
/* Lišta je viditelná od 960 px (GRID-RESPONSIVE-02: tablet na šířku ji má
   mít taky). Dřív se rezervace zapínala až od 1081 px, takže na 1024 px
   lišta zmizela úplně místo toho, aby jí obsah ustoupil. */
@media (min-width:960px){
  :root{ --rail:190px; }
  /* .wrap/.exp/.entries nahlášené jako moc konzervativní (velká prázdná
     mezera k liště) – přepnuté na dynamický --rail-pad (viz definice výše u
     --hud-pad), který zohledňuje, že .wrap už má vlastní přirozený odstup
     od okraje z vycentrování (max-width:1280px;margin:auto). .hero-content/
     .sp-content/.final .wrap NEHLÁŠENÉ jako špatné, zůstávají na původním
     pevném --rail, aby se náhodou nezměnilo něco, co už bylo v pořádku. */
  /* Rezervace pravého prostoru platí jen tam, kde se boční navigace
     SKUTEČNĚ vykreslí. Třídu .has-section-nav dává plugin GARRY Boční
     posuvník (1.5.0) podle stejné podmínky jako vykreslení. Nahradilo to
     ruční výčet 45 page-id selektorů, který se musel doplňovat u každé
     nové stránky a hlavně ubíral až 245 px obsahu i na stránkách, kde
     žádná lišta není (dnes běží jen na úvodní stránce). */
body.has-section-nav .wrap{ padding-right: max(0px, var(--rail-pad)); }
  /* CÍL má být striktně na střed, ne kompenzovaně vyvážená kvůli boční
     liště jako ostatní sekce – proto žádná zvláštní pravá/levá úprava,
     jen symetrický základní padding z .final .wrap výše na obou stranách. */
  /* CÍL zůstává striktně na střed — symetrický základní padding. */
body.has-section-nav .final .wrap{ padding-left: var(--gutter) !important; padding-right: var(--gutter) !important; }
  /* Vlastní striktně-na-střed třída (mimo .final) – viz .wrap-centered výše. */
  .wrap.wrap-centered{ padding-right: var(--gutter) !important; }
  /* .sp-content má stejnou "100%=viewport" referenci jako .entries/.reviews
     (ne vycentrovaný .wrap box), takže používá stejný vzorec
     --entries-right-match-wrap, jen jako padding (ne margin+width), protože
     .sp-content nemá viditelný rámeček, který by paddingem vytvořil díru. */
  /* -51px: změřená korekce – .sp-content sám má i po resetu výše menší
     skutečnou šířku, než by čistě 50/50 dělení řádku dávalo (zbytkový
     Diviho vlastní obal kolem sloupce, který nejde přebít stejným trikem
     jako .split > * kvůli jinému místu v DOM stromu). */
  /* Textová půlka dělené sekce — stejná reference jako .entries. */
body.has-section-nav .sp-content{ padding-right: calc(var(--entries-right-match-wrap) - 39px) !important; }
  /* Mřížka zážitků T4. */
body.has-section-nav .exp{ padding-right: max(0px, var(--rail-pad)); }               /* mřížka zážitků */


  body.has-section-nav .entries,body.has-section-nav .et_pb_row.entries{
    margin-right: var(--entries-right-match-wrap) !important;
    width: calc(100% - var(--entries-left) - var(--entries-right-match-wrap)) !important;
  }  /* karty T1 vstupy */
  body.has-section-nav .reviews,body.has-section-nav .et_pb_row.reviews{
    margin-right: var(--entries-right-match-wrap) !important;
    width: calc(100% - var(--entries-left) - var(--entries-right-match-wrap)) !important;
  } /* karty T8 recenze */
  body.has-section-nav .hero-content{ padding-right: calc(var(--gutter) + var(--rail)); }
}

/* ============================================================================
   LEVÝ KORIDOR I PRO KONTEJNERY MIMO .wrap

   Pravidlo „obsah vždy začíná až za pravým okrajem HUD + 40 px" platí pro
   všechen obsah, ne jen pro ten uvnitř .wrap. Tři kontejnery si drží vlastní
   vycentrování s pouhým základním odsazením, takže jejich text končil uvnitř
   pásma HUD (změřeno: hero H1 na x=212 při 1600 px, mřížka zážitků rovněž
   212, textová půlka složené dělené sekce 24–31 px na tabletu).

   .sp-media (fotka T2/T7) zůstává schválenou výjimkou a jde od nuly dál.
   ============================================================================ */
.hero-content{ padding-left: max(var(--gutter), var(--hud-pad)) !important; }
.exp{ padding-left: max(var(--gutter), var(--hud-pad)) !important; }
/* Na detailech zážitků leží mřížka uvnitř .wrap, který koridor i postranní
   odsazení drží už sám — mřížka proto uvnitř nemá přidávat žádné vlastní,
   jinak by se sečetla dvakrát. */
.wrap .exp{ padding-left:0 !important; padding-right:0 !important; }

/* Dokud je dělená sekce dvousloupcová, leží text v pravé polovině a koridoru
   se nedotkne. Jakmile se složí pod sebe (≤1024 px, viz úzký koridor), začíná
   textový sloupec u levého okraje stránky a musí koridor respektovat sám. */
@media(max-width:1024px){
  .split .sp-content{ padding-left: var(--content-left) !important; }
}


/* ============================================================
   POSUVNÍK — dynamická čitelnost nad světlým pozadím
   Třídu .tp-on-light přidává grid.js podle sekce za daným bodem.
   ============================================================ */
.tp-point.tp-on-light .tp-num{ color:#6b6f76; }
.tp-point.tp-on-light .tp-name{ color:#33363a; }
.tp-point.tp-on-light .tp-dot{ border-color:#9a9da2; background:var(--paper); }
.tp-label.tp-on-light{ color:#6b6f76; }
.tp-point.tp-on-light:hover .tp-dot{ border-color:var(--red); }
.tp-point.tp-on-light.active .tp-name{ color:#16181B; }
.tp-point.tp-on-light.active .tp-num{ color:var(--gold-deep); }
.tp-point.tp-on-light.active .tp-dot{ border-color:var(--red); background:var(--red); }

/* Rezervační lišta je nahoře (nad viditelnou částí trati) → nemusí rezervovat pravý prostor */
@media (min-width:960px){
  /* Pravá hranice platí pro rezervační lištu stejně jako pro ostatní obsah —
     je to formulář, ne dekorace. */
  body.has-section-nav .booking .wrap{ padding-right: max(0px, var(--rail-pad)) !important; }
}

/* ============================================================
   DETAIL TYPU POKOJE (taxonomy-grid_room_cat)
   ============================================================ */
.roomdetail .rd-back{display:inline-block;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:16px;transition:color .2s}
.roomdetail .rd-back:hover{color:var(--red-hi)}
/* štítky na detailu pokoje — plnohodnotné chips (mimo .room kontext) */
.rd-chips{display:flex;gap:10px;flex-wrap:wrap;font-family:var(--f-mono);font-size:.66rem;letter-spacing:.08em;color:var(--grey);text-transform:uppercase;margin:0 0 22px}
.rd-chips span{padding:4px 9px;border:1px solid rgba(255,255,255,.18);border-radius:2px}
/* Vybavení pokoje + V soukromé koupelně — dva sloupce pod náhledovou fotkou */
.rd-aside{display:grid;grid-template-columns:1fr 1fr;gap:0 26px;align-items:start}
.rd-aside .rd-photo{grid-column:1/-1}
.rd-aside .rd-col h2,.rd-aside .rd-col h3{margin-top:20px}
@media(max-width:640px){.rd-aside{grid-template-columns:1fr}}
.rd-facts{display:flex;flex-wrap:wrap;gap:10px 22px;margin:0 0 20px;font-family:var(--f-mono);font-size:.82rem;color:var(--grey)}
.rd-facts span{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid rgba(255,255,255,.16);border-radius:2px;max-width:100%;min-width:0;overflow-wrap:anywhere}
.rd-facts b{color:#fff;font-weight:700}
.rd-popis{max-width:74ch;color:var(--muted)}
/* Detail zážitku: obsah rozložený do matice dvou sloupců, na úzkém displeji
   pod sebe. Text tak využije celou šířku stránky místo poloviny. */
.rd-popis:has(.rd-mrizka){max-width:none}
.rd-mrizka{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(38px,4.5vw,68px) clamp(28px,4vw,60px);align-items:start;margin-bottom:clamp(28px,3vw,44px)}
.rd-blok{min-width:0}
.sec .rd-blok>h2{font-size:clamp(1.2rem,1.8vw,1.55rem) !important;line-height:1.25;
  margin:0 0 16px !important;padding-bottom:12px;border-bottom:1px solid var(--line-c);hyphens:manual}
.rd-blok>p{margin-bottom:16px}
.rd-blok>*:last-child{margin-bottom:0}
.rd-blok ul{margin:0 0 16px;padding-left:1.1em}
.rd-blok li{margin-bottom:8px}
.rd-mapa{margin:0;align-self:center}
.rd-popis .okruh-zdroje{margin:0;padding-top:22px;border-top:1px solid var(--line-c);
  font-size:.82rem;color:var(--muted)}
@media(max-width:959px){.rd-mrizka{grid-template-columns:minmax(0,1fr);gap:clamp(30px,6vw,44px)}}
.rd-popis p{margin-bottom:14px}
.rd-popis strong{color:var(--fg)}
.rd-amen{display:grid;grid-template-columns:1fr 1fr;gap:22px 40px;margin-top:30px;max-width:820px}
.rd-amen h3{font-size:1.05rem;color:#fff;margin:0 0 12px}
.check-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.check-list li{position:relative;padding-left:26px;color:var(--grey);font-size:.92rem}
.check-list li::before{content:"✓";position:absolute;left:0;color:var(--red-hi);font-weight:700}
.rd-smoke{margin-top:22px;font-family:var(--f-mono);font-size:.76rem;color:var(--grey-dim)}
@media(max-width:640px){.rd-amen{grid-template-columns:1fr}}
/* detail typu — 2 sloupce: text vlevo + (náhledová foto & výbava) vpravo */
.rd-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:clamp(28px,4vw,58px);align-items:start}
.rd-photo{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:6px;border:1px solid rgba(255,255,255,.12);display:block;margin-bottom:22px}
.rd-aside h3{font-size:1rem;color:#fff;margin:20px 0 10px}
.rd-aside h3:first-of-type{margin-top:0}
@media(max-width:959px){.rd-grid{grid-template-columns:minmax(0,1fr)}.rd-photo{max-width:440px}}
.rd-actions{margin-top:28px;display:flex;gap:14px;flex-wrap:wrap}
/* srovnávací tabulka */
.rd-tablewrap{overflow-x:auto}
.rd-table{width:100%;border-collapse:collapse;font-size:.94rem;min-width:660px}
.rd-table th,.rd-table td{padding:12px 14px;border-bottom:1px solid var(--line-c);text-align:center;color:var(--muted)}
.rd-table thead th{font-family:var(--f-head);text-transform:uppercase;font-size:1.02rem;color:var(--fg);border-bottom:2px solid var(--ink)}
.rd-table td:first-child,.rd-table th:first-child{text-align:left;color:var(--fg);font-weight:600}
.rd-table .is-current{background:rgba(194,14,26,.07)}
/* Řádek pod myší se zvýrazní stejně jako aktuální sloupec — u sedmnácti
   řádků a šesti sloupců je bez vodítka snadné ztratit řádek očima. */
.rd-table tbody tr{transition:background .18s}
.rd-table tbody tr:hover td{background:var(--zvyrazneni-radku,rgba(194,14,26,.07))}
.rd-table tbody tr:hover td.is-current{background:rgba(194,14,26,.14)}
.rd-table thead th.is-current{color:var(--red)}
/* galerie */
.roomgallery{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(10px,1.4vw,18px)}
.roomgallery .rg-item{overflow:hidden;border:1px solid var(--line-c);display:block}
.roomgallery img{width:100%;height:240px;object-fit:cover;transition:transform .5s;display:block}
.roomgallery .rg-item:hover img{transform:scale(1.06)}
@media(max-width:959px){.roomgallery{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.roomgallery{grid-template-columns:1fr}}
/* lightbox */

/* ============================================================
   T3 POKOJE — 4 styly karet na výběr (jedna metoda na typ)
   Texty vždy čitelné; štítky a CTA viditelné, popis na hover.
   Po výběru klienta se ponechá jen jedna metoda + smaže .room-style-tag.
   ============================================================ */
.room{min-height:480px}
/* .room-style-tag odstraněn — klient vybral styl 2, štítky stylů už se nezobrazují */
.room .r-desc{max-height:0;opacity:0;overflow:hidden;margin:0;transition:max-height .45s cubic-bezier(.16,1,.3,1),opacity .35s,margin .35s}
.room:hover .r-desc{max-height:220px;opacity:1;margin-bottom:14px}
.room .r-body{transition:transform .45s cubic-bezier(.16,1,.3,1),background .45s}
.room .r-feat{opacity:1}

/* STYL 1 — spodní pruh: název + štítky vidět, hover vysune + ukáže popis */
.room--m1::after{background:linear-gradient(180deg,rgba(14,15,17,0) 30%,rgba(14,15,17,.6) 60%,rgba(14,15,17,.96) 100%)}

/* STYL 2 — hover: fotka se přebarví (prosvítá pod barvou) + popis.
   GLOBÁLNÍ PRVEK `.hover-card2` — vybraný klientem, použitelný i mimo pokoje:
   stačí kartě s fotkou dát třídy `hover-card2` (+ position:relative a <img>). */
/* Přechody přes fotku vedou shora dolů a rozdělují kartu na pětiny: prvních
   20 % drží plnou barvu, pak se plynule přelévá a posledních 20 % je zase
   jednolitých. Dřív začínal přechod až v polovině výšky a na úzké kartě
   vznikala přes fotku viditelná dělicí čára. */
.room--m2::before,.hover-card2::before{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,
    rgba(194,14,26,.85) 0%,rgba(194,14,26,.85) 20%,
    rgba(14,15,17,.93) 80%,rgba(14,15,17,.93) 100%);
  opacity:0;transition:opacity .45s}
.room--m2:hover::before,.hover-card2:hover::before{opacity:1}
.room--m2:hover img,.hover-card2:hover img{transform:scale(1.05);filter:saturate(.5)}
.room--m2::after,.hover-card2::after{background:linear-gradient(180deg,
  rgba(14,15,17,0) 0%,rgba(14,15,17,0) 20%,
  rgba(14,15,17,.9) 80%,rgba(14,15,17,.9) 100%)}
.hover-card2{position:relative;overflow:hidden}
.hover-card2 img{transition:transform .45s cubic-bezier(.16,1,.3,1),filter .45s}

/* STYL 3 — editorial: fotka nahoře, plný panel dole (text vždy na plné ploše) */
.room--m3{display:flex;flex-direction:column;align-items:stretch;min-height:0;background:var(--card)}
.room--m3 img{position:relative;height:250px}
.room--m3::after{display:none}
.room--m3 .r-body{background:var(--card);color:var(--ink)}
.room--m3 :is(h2,h3){color:var(--ink)}
.room--m3 .r-desc{color:var(--ink-muted);max-width:none}
.room--m3 .r-feat{color:var(--ink-muted)}
.room--m3 .r-feat span{border-color:rgba(20,22,25,.16)}
.room--m3 .r-price{color:var(--ink)}

/* STYL 4 — frosted glass panel (prémiové sklo, čitelné přes rozostření) */
.room--m4::after{display:none}
.room--m4 .r-body{background:rgba(14,15,17,.42);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid rgba(255,255,255,.16)}
.room--m4:hover .r-body{background:rgba(14,15,17,.62)}
/* Styl 4 — štítky (vybavení) v ne-hover skryté, vysunou se až na hover */
.room--m4 .r-feat{max-height:0;opacity:0;margin:0;overflow:hidden;transition:max-height .45s cubic-bezier(.16,1,.3,1),opacity .3s ease,margin .45s ease}
.room--m4:hover .r-feat{max-height:90px;opacity:1;margin:6px 0 16px}
/* T3 polish — kód a CTA čitelné i na fotce (styly 1,2,4) */
.room--m1 .r-num,.room--m2 .r-num,.room--m4 .r-num{color:var(--red-hi);text-shadow:0 1px 6px rgba(0,0,0,.75)}
/* Karty s fotkou jsou fotografický povrch — deklarují ho proměnnými, aby
   platila stejná pravidla jako jinde. Dřív si tu barvu tlačítka vynucovaly
   natvrdo přes !important, což je přesně to, co má systém tlačítek nahradit. */
.room--m1,.room--m2,.room--m4,.hover-card2{
  --gh-action-fg:var(--gh-white);
  --gh-action-border:rgb(255 255 255 / 55%);
}

/* ============================================================
   DOPRAVA (jak se k nám dostanete) + PRÁVNÍ STRÁNKY
   ============================================================ */
.doprava-map{margin:26px 0;border:1px solid var(--line-c);overflow:hidden;border-radius:2px}
.doprava-map iframe{width:100%;height:clamp(320px,50vh,480px);border:0;display:block;filter:grayscale(.15)}
.doprava-actions{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:34px}
.doprava-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(20px,3vw,40px)}
.dp-col h3{font-size:1.3rem;margin-bottom:12px}
.dp-col ul{list-style:none;display:flex;flex-direction:column;gap:10px}
.dp-col li{font-size:.92rem;color:var(--muted);padding-left:16px;position:relative}
.dp-col li::before{content:"›";position:absolute;left:0;color:var(--red)}
.dp-col li b{color:var(--fg)}
@media(max-width:959px){.doprava-grid{grid-template-columns:1fr}}
/* právní texty — čitelná dlouhá forma */
.grid-legal .legal-body{color:var(--muted);font-size:.98rem;line-height:1.75}
.grid-legal .legal-body h2{font-size:1.5rem;margin:28px 0 12px;color:var(--ink)}
.grid-legal .legal-body h3{font-size:1.2rem;margin:22px 0 10px;color:var(--ink)}
.grid-legal .legal-body p{margin-bottom:14px}
.grid-legal .legal-body ul,.grid-legal .legal-body ol{margin:0 0 14px 22px;display:flex;flex-direction:column;gap:6px}
.grid-legal .legal-body strong{color:var(--ink)}
.grid-legal .legal-body a{color:var(--red);text-decoration:underline}

/* ============================================================
   COMPLIANZ — cookie lišta/modal v designu GRID
   ============================================================ */
.cmplz-cookiebanner{
  background:#0d0f12 !important; color:var(--offwhite) !important;
  border:1px solid rgba(255,255,255,.14) !important; border-radius:4px !important;
  font-family:var(--f-body) !important; box-shadow:0 30px 80px -20px rgba(0,0,0,.82) !important;
}
.cmplz-cookiebanner .cmplz-header .cmplz-title,
.cmplz-cookiebanner .cmplz-title{ font-family:var(--f-head) !important; text-transform:uppercase !important; color:#fff !important; letter-spacing:.02em !important; }
.cmplz-cookiebanner .cmplz-body,
.cmplz-cookiebanner .cmplz-message,
.cmplz-cookiebanner p{ color:var(--grey) !important; font-size:.95rem !important; }
.cmplz-cookiebanner a{ color:var(--red-hi,#FF5A50) !important; }
.cmplz-cookiebanner .cmplz-close{ color:var(--grey) !important; }
.cmplz-cookiebanner .cmplz-close:hover{ color:#fff !important; }
/* tlačítka */
.cmplz-cookiebanner .cmplz-buttons .cmplz-btn,
.cmplz-cookiebanner .cmplz-btn{ font-family:var(--f-mono) !important; text-transform:uppercase !important; letter-spacing:.08em !important; font-size:.8rem !important; border-radius:2px !important; min-height:44px !important; transition:background .25s,border-color .25s,color .25s,transform .2s,box-shadow .25s !important; }
.cmplz-cookiebanner .cmplz-btn.cmplz-accept{ background:var(--red) !important; color:#fff !important; border:1px solid var(--red) !important; }
.cmplz-cookiebanner .cmplz-btn.cmplz-accept:hover{ background:var(--red-bright) !important; box-shadow:0 0 22px rgba(194,14,26,.5) !important; transform:translateY(-1px) scale(1.012); }
.cmplz-cookiebanner .cmplz-btn.cmplz-deny,
.cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences,
.cmplz-cookiebanner .cmplz-btn.cmplz-save-preferences,
.cmplz-cookiebanner .cmplz-btn.cmplz-manage-options{ background:transparent !important; color:var(--offwhite) !important; border:1px solid rgba(255,255,255,.3) !important; }
.cmplz-cookiebanner .cmplz-btn.cmplz-deny:hover,
.cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences:hover,
.cmplz-cookiebanner .cmplz-btn.cmplz-save-preferences:hover{ border-color:var(--red) !important; color:#fff !important; }
.cmplz-cookiebanner .cmplz-btn.cmplz-deny:hover,
.cmplz-cookiebanner .cmplz-btn.cmplz-view-preferences:hover,
.cmplz-cookiebanner .cmplz-btn.cmplz-save-preferences:hover,
.cmplz-cookiebanner .cmplz-btn.cmplz-manage-options:hover{ transform:translateY(-1px) scale(1.012); }
/* předvolby / kategorie */
.cmplz-cookiebanner .cmplz-categories .cmplz-category,
.cmplz-cookiebanner .cmplz-category{ background:rgba(255,255,255,.04) !important; border:1px solid rgba(255,255,255,.1) !important; border-radius:3px !important; }
.cmplz-cookiebanner .cmplz-category .cmplz-title{ color:#fff !important; }
.cmplz-cookiebanner .cmplz-divider,.cmplz-cookiebanner hr{ border-color:rgba(255,255,255,.1) !important; }
/* přepínače — aktivní červené */
.cmplz-cookiebanner input:checked + .cmplz-slider,
.cmplz-cookiebanner .cmplz-slider.cmplz-active,
.cmplz-cookiebanner .cmplz-cookietype-header input:checked ~ .cmplz-slider{ background-color:var(--red) !important; }
/* plovoucí „Spravovat souhlas" tlačítko */
#cmplz-manage-consent .cmplz-manage-consent{ background:var(--graphite) !important; color:#fff !important; border:1px solid var(--red) !important; font-family:var(--f-mono) !important; }

/* --- kontrast + font uvnitř modalu „Spravovat souhlas" (kategorie/popisy) --- */
/* Complianz některým kategoriím ztlumuje text (barva/opacita) — přebijeme na čitelné */
.cmplz-cookiebanner .cmplz-categories,
.cmplz-cookiebanner .cmplz-category,
.cmplz-cookiebanner .cmplz-category *{ opacity:1 !important; font-family:var(--f-body) !important; }
/* název kategorie (Funkční / Statistiky / Marketing) */
.cmplz-cookiebanner .cmplz-category .cmplz-title,
.cmplz-cookiebanner .cmplz-category .cmplz-category-title,
.cmplz-cookiebanner .cmplz-category-name,
.cmplz-cookiebanner .cmplz-category label,
.cmplz-cookiebanner .cmplz-category .cmplz-banner-checkbox-title{
  color:#fff !important; font-family:var(--f-head) !important; text-transform:uppercase !important;
  letter-spacing:.04em !important; font-size:1rem !important;
}
/* popis kategorie + odrážky/spany — čitelná šedá na tmavém pozadí (WCAG AA) */
.cmplz-cookiebanner .cmplz-description,
.cmplz-cookiebanner .cmplz-description *,
.cmplz-cookiebanner .cmplz-category p,
.cmplz-cookiebanner .cmplz-category .cmplz-description span,
.cmplz-cookiebanner .cmplz-category li{
  color:#CFCDCE !important; font-size:.9rem !important; line-height:1.55 !important;
}
/* „Vždy aktivní" ať zůstává zeleně a čitelně */
.cmplz-cookiebanner .cmplz-always-active,
.cmplz-cookiebanner .cmplz-category .cmplz-always-active{ color:#4ADE80 !important; font-family:var(--f-mono) !important; opacity:1 !important; }
/* horní úvodní text modalu */
.cmplz-cookiebanner .cmplz-title.cmplz-hidden{ display:none !important; }
.cmplz-cookiebanner .cmplz-body,
.cmplz-cookiebanner .cmplz-message,
.cmplz-cookiebanner > p{ color:#D6D4D5 !important; }
/* rám kategorie o něco kontrastnější, ať jsou boxy vidět */
.cmplz-cookiebanner .cmplz-categories .cmplz-category,
.cmplz-cookiebanner .cmplz-category{ background:rgba(255,255,255,.055) !important; border:1px solid rgba(255,255,255,.16) !important; }
/* přepínače v barvě značky (místo modré), šipky/zavření a odsazení hlaviček */
.cmplz-cookiebanner .cmplz-category-header,
.cmplz-cookiebanner .cmplz-cookietype-header{ padding:12px 14px !important; gap:10px !important; align-items:center !important; }
.cmplz-cookiebanner input[type="checkbox"]:checked + .cmplz-slider,
.cmplz-cookiebanner input[type="checkbox"]:checked ~ .cmplz-slider,
.cmplz-cookiebanner .cmplz-switch input:checked + span,
.cmplz-cookiebanner .cmplz-toggle input:checked ~ .cmplz-slider,
.cmplz-cookiebanner label input:checked ~ .cmplz-slider{ background-color:var(--red) !important; border-color:var(--red) !important; }
.cmplz-cookiebanner .cmplz-icon,
.cmplz-cookiebanner .cmplz-open-category,
.cmplz-cookiebanner .cmplz-close{ color:var(--grey) !important; opacity:1 !important; }
.cmplz-cookiebanner .cmplz-open-category:hover,
.cmplz-cookiebanner .cmplz-close:hover{ color:#fff !important; }
.cmplz-cookiebanner .cmplz-categories{ scrollbar-width:thin; scrollbar-color:var(--red) transparent; }

/* ===== DÁRKOVÉ POUKAZY ===== */
.vou-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.vou-card{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-left:3px solid var(--red);border-radius:4px;padding:20px 18px;
  transition:background .3s,border-color .3s}
/* Karta předvyplňuje druh poukazu ve formuláři níž, chová se tedy jako
   ovládací prvek — hover i fokus to musí dát najevo. */
.vou-card[role="button"]{cursor:pointer}
.vou-card[role="button"]:hover,.vou-card[role="button"]:focus-visible{
  background:linear-gradient(135deg,rgba(194,14,26,.28) 0%,rgba(194,14,26,.10) 60%,rgba(194,14,26,.04) 100%);
  border-color:rgba(194,14,26,.55)}
.vou-card[role="button"]:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.vou-card.je-vybrana{border-color:var(--red);background:rgba(194,14,26,.16)}
@media(prefers-reduced-motion:reduce){.vou-card{transition:none}}
.vou-price{font-family:var(--f-head);font-size:1.7rem;font-weight:800;color:#fff;display:block;line-height:1}
.vou-card h4{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin:10px 0 6px}
.vou-card p{color:var(--muted);font-size:.86rem;line-height:1.5;margin:0}
.vou-order{margin-top:28px;padding-top:18px;border-top:1px solid rgba(255,255,255,.12)}
.vou-order p{margin:0 0 8px}
.vou-order a{color:var(--red-hi,#FF5A50)}
.vou-note{color:var(--grey-dim);font-size:.82rem}
@media(max-width:640px){.vou-grid{grid-template-columns:1fr}}

/* Odstavce, které mají v obsahu inline max-width:50%, drží polovinu šířky i na
   úzkém displeji — tam je z toho sloupec na polovinu obrazovky. Inline styl
   přebije jen !important. Nadpisů se to netýká, ty mají poloviční šířku
   záměrně (viz .sec-light.final h2). */
@media(max-width:959px){
  .et_pb_text_inner p[style*="max-width:50%"]{max-width:100% !important}
}

/* ===== REZERVACE — zástupný prvek ===== */
.rezervace-box{border:1px dashed rgba(202,167,95,.5);border-radius:6px;padding:clamp(30px,5vw,64px) 24px;background:rgba(255,255,255,.03);margin-top:10px}
.rezervace-ico{font-size:2.6rem;line-height:1;display:block;margin-bottom:14px;color:var(--gold)}
.rezervace-lead{font-size:clamp(1.1rem,2.6vw,1.55rem);color:#fff;margin:0 0 10px}
.rezervace-note{font-family:var(--f-mono);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:0}

/* ukázka Bookolo rezervace (statická, nefunkční, s watermarkem) */
.bkmock{position:relative;border:1px solid #e2e2e4;border-radius:8px;background:#f6f6f7;overflow:hidden;color:#16181B;user-select:none}
.bkmock *{pointer-events:none}
.bkmock-wm{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-8deg);text-align:center;padding:20px}
.bkmock-wm span{font-family:var(--f-head);font-weight:800;font-size:clamp(2.6rem,10vw,7rem);letter-spacing:.1em;color:rgba(194,14,26,.16);text-transform:uppercase;line-height:1}
.bkmock-wm small{font-family:var(--f-mono);font-size:clamp(.68rem,1.6vw,1rem);letter-spacing:.2em;color:rgba(20,22,25,.42);text-transform:uppercase;margin-top:10px}
.bkmock-topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 18px;background:#fff;border-bottom:1px solid #ececee}
.bkmock-tab{border:1px solid var(--red);color:var(--red);border-radius:4px;padding:6px 16px;font-size:.85rem;font-weight:600}
.bkmock-topright{font-size:.8rem;color:#666}
.bkmock-head{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 18px;background:#fff;border-bottom:1px solid #ececee}
.bkmock-head h2,.bkmock-head h3{margin:0;font-size:1.15rem;text-transform:none;color:#16181B}
.bkmock-promo{display:flex;gap:8px;align-items:center}
.bkmock-promo input{border:1px solid #d5d5d7;border-radius:4px;padding:8px 12px;font-size:.85rem;background:#fff;max-width:200px}
.bkmock-datebar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:14px 18px;background:#fafafa;border-bottom:1px solid #ececee}
.bkmock-date.red{background:var(--red);color:#fff;border-radius:4px;padding:8px 16px;font-size:.85rem;font-weight:600}
.bkmock-dbox{background:#fff;border:1px solid #e2e2e4;border-radius:4px;padding:6px 14px;font-size:.8rem;color:#333}
.bkmock-dbox b{font-size:1.2rem;color:#16181B;margin-right:6px}
.bkmock-pill{background:#fff;border:1px solid #e2e2e4;border-radius:20px;padding:7px 14px;font-size:.8rem;color:#333}
.bkmock-layout{display:grid;grid-template-columns:1fr 240px;gap:22px;padding:22px 18px}
.bkmock-rooms{display:flex;flex-direction:column;gap:8px}
.bkmock-card{display:grid;grid-template-columns:280px 1fr;gap:18px;background:#fff;border:1px solid #ececee;border-radius:6px 6px 0 0;padding:16px}
.bkmock-cimg{border-radius:4px;min-height:170px;background-size:cover;background-position:center;position:relative}
.bkmock-unavail{position:absolute;inset:0;background:rgba(20,22,25,.55);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;border-radius:4px;padding:16px}
.bkmock-unavail span{color:#fff;font-weight:600}
.bkmock-unavail em{background:var(--red);color:#fff;font-style:normal;padding:8px 14px;border-radius:4px;font-size:.8rem}
.bkmock-cbody h3,.bkmock-cbody h4{margin:0 0 6px;font-size:1.3rem;text-transform:none;color:#16181B}
.bkmock-cmeta{font-size:.82rem;color:#666;margin-bottom:10px}
.bkmock-cbody ul{list-style:none;padding:0;margin:0 0 12px;display:grid;gap:5px}
.bkmock-cbody li{position:relative;padding-left:18px;font-size:.85rem;color:#444}
.bkmock-cbody li::before{content:"•";position:absolute;left:0;color:var(--red)}
.bkmock-detail{display:inline-block;border:1px solid #d5d5d7;border-radius:4px;padding:7px 14px;font-size:.82rem;color:#333}
.bkmock-rates{display:flex;flex-direction:column;border:1px solid #ececee;border-top:none;border-radius:0 0 6px 6px;background:#fff;margin-bottom:18px}
.bkmock-rate{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:14px 16px;border-top:1px solid #f0f0f0}
.bkmock-rinfo{flex:1;min-width:200px}
.bkmock-rinfo b{display:block;font-size:.9rem;color:#16181B}
.bkmock-rinfo span{font-size:.78rem;color:#888}
.bkmock-rinfo u{color:var(--red)}
.bkmock-price{font-weight:700;font-size:1rem;white-space:nowrap;color:#16181B}
.bkmock-btn{background:#eee;border-radius:4px;padding:8px 16px;font-size:.85rem;color:#333;white-space:nowrap}
.bkmock-btn.red{background:var(--red);color:#fff}
.bkmock-side{display:flex;flex-direction:column;gap:14px}
.bkmock-sbox{background:#fff;border:1px solid #ececee;border-radius:6px;padding:14px;font-size:.82rem;display:flex;flex-direction:column;gap:8px}
.bkmock-srange{color:#333}
.bkmock-smuted{color:#999;font-size:.78rem}
.bkmock-guar span{color:#444}
.bkmock-foot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;padding:14px 18px;background:#fff;border-top:1px solid #ececee;font-size:.78rem;color:#777}
@media(max-width:959px){.bkmock-layout{grid-template-columns:1fr}.bkmock-card{grid-template-columns:1fr}}

/* ===== TÝDENNÍ JÍDELNÍČEK ===== */
.menu-week{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px}
/* 8 karet (Po–Ne + celotýdenní) v matici 4×2 */
.menu-week--8{grid-template-columns:repeat(4,1fr)}
@media(max-width:1279px){.menu-week--8{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.menu-week--8{grid-template-columns:1fr}}
/* ===== FLUENT FORMS — můstek na design GRID ===== */
.fluentform .ff-el-group{margin-bottom:16px}
.fluentform .ff-el-input--label label{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600}
.fluentform .ff-el-form-control{width:100%;max-width:100%;min-width:0}
/* Formulář ani jeho buňky nesmí být širší než rodič (GRID-RESPONSIVE-01 §9).
   Bez min-width:0 drží grid buňka min-content pole a přeteče na 320 px ven. */
.fluentform,.fluentform form,.fluentform .ff-el-group,.fluentform .ff-el-input--content,
.fluentform .ff-t-container,.fluentform .ff-t-cell{min-width:0;max-width:100%}
.fluentform .ff-t-container{flex-wrap:wrap}
.fluentform .error.text-danger{font-size:.78rem;color:var(--red)}
.fluentform .ff-btn-submit{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;border:1px solid var(--red);cursor:pointer;padding:12px 22px;transition:background .25s,transform .2s;max-width:100%;white-space:normal;min-height:44px}
/* Na mobilu je tlačítko přes celou šířku (GRID-RESPONSIVE-01 §9). Na 320 px
   ho jinak rozšířilo dlouhé anglické/německé znění popisku plus letter-spacing
   a stránka přetekla. */
@media(max-width:640px){
  .fluentform .ff-btn-submit,.fluentform .ff_submit_btn_wrapper button{width:100%;letter-spacing:.08em;padding:12px 14px}
}
.fluentform .ff-btn-submit:hover{transform:translateY(-1px)}
.fluentform .ff-message-success{font-family:var(--f-mono);font-size:.85rem;border:1px solid #1d7a3c;background:rgba(29,122,60,.08);color:#1d7a3c;padding:12px 16px;margin-top:10px}
/* FF obaluje pole do <fieldset> — zprůhlednit pro grid/flex layouty */
.fluentform form>fieldset{display:contents;border:0;padding:0;margin:0;min-width:0}
.fluentform form>fieldset>legend{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
/* nápovědné ikonky (tooltips) v brandových barvách, ne modré */
.fluentform .ff-el-tooltip{color:var(--muted)}
.fluentform .ff-el-tooltip svg{fill:currentColor;width:14px;height:14px}
/* Dvousloupcový layout (kontakt, firemní poptávka) jako původní .form-grid */
.k-form .fluentform form,#firemni .fluentform form{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;align-items:start}
.k-form .fluentform .ff-el-group,#firemni .fluentform .ff-el-group{margin-bottom:14px}
.k-form .fluentform .ff-el-group:has(textarea),.k-form .fluentform .ff_submit_btn_wrapper,
#firemni .fluentform .ff-el-group:has(select),#firemni .fluentform .ff_submit_btn_wrapper{grid-column:1/-1}
@media(max-width:640px){.k-form .fluentform form,#firemni .fluentform form{grid-template-columns:1fr}}
/* Dotazník — škála 1–5 jako rámečkové boxy */
.fluentform .ff-el-form-check{display:inline-block;margin:4px 8px 4px 0}
.fluentform .ff-el-form-check-label{border:1px solid rgba(20,22,25,.25);border-radius:3px;padding:9px 15px;cursor:pointer;font-family:var(--f-mono);display:inline-flex;align-items:center;gap:7px;transition:border-color .2s,background .2s,color .2s}
.fluentform .ff-el-form-check-label:hover{border-color:var(--red)}
.fluentform .ff-el-form-check-label:has(input:checked){background:var(--red);border-color:var(--red);color:#fff}
.fluentform .ff-el-form-check-input{accent-color:var(--red)}
/* FF v tmavých sekcích (čekací list, poukazy) */
.waitbox .fluentform .ff-el-form-control,.vou-form .fluentform .ff-el-form-control{background:rgba(255,255,255,.04);border:1px solid var(--line);color:var(--offwhite)}
.waitbox .fluentform .ff-el-input--label label,.vou-form .fluentform .ff-el-input--label label{color:var(--grey)}
.waitbox .fluentform .ff-btn-submit{width:100%;text-align:center}
.waitbox .fluentform .ff-el-group{margin-bottom:13px}
.vou-form .fluentform form{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.vou-form .fluentform .ff-el-group{margin-bottom:14px}
.vou-form .fluentform .ff-el-group:has(select),.vou-form .fluentform .ff-el-group:has(input[type=email]),.vou-form .fluentform .ff_submit_btn_wrapper{grid-column:1/-1}
@media(max-width:640px){.vou-form .fluentform form{grid-template-columns:1fr}}
/* Kariéra — karty pracovních pozic */
.job-list{display:grid;gap:18px;margin:26px 0}
.job-card{padding:26px;border:1px solid var(--line-c);border-radius:2px;background:var(--card);transition:border-color .25s}
.job-card:hover{border-color:var(--red)}
.job-card h3{font-size:1.4rem;color:var(--ink);margin-bottom:8px;line-height:1.15}
.job-meta{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.job-meta b{color:var(--red);font-weight:600}
.job-popis{color:var(--muted);font-size:.94rem;margin-bottom:16px}
.job-popis p{margin-bottom:10px}
/* srovnávací tabulka: názvy pokojů jako odkazy na detail */
.rd-table th a{color:inherit;text-decoration:none;border-bottom:1px dotted currentColor;transition:color .2s}
.rd-table th a:hover{color:var(--red);border-bottom-color:var(--red)}
.fluentform .ff-el-form-check-label:has(input:checked) .ff-el-form-check-input{accent-color:#fff}
.fluentform .ff-el-form-control:focus{border-color:var(--red)!important;box-shadow:none!important;outline:none}
.fluentform input:focus-visible,.fluentform textarea:focus-visible,.fluentform select:focus-visible{outline:1px solid var(--red);outline-offset:0}
/* Newsletter v patičce — kompaktní řádek bez labelu */
.foot-col .fluentform .ff-el-input--label{display:none}
.foot-col .fluentform{width:100%}
/* E-mail, souhlas a tlačítko jdou pod sebou — do jednoho řádku se ve sloupci
   patičky vejde jen pole s tlačítkem, na souhlas už místo není. Rámeček proto
   nese samotné pole, ne celý formulář. */
.foot-col .fluentform form{display:flex;flex-direction:column;align-items:stretch;width:100%;gap:10px;margin-top:14px}
.foot-col .fluentform .ff-el-group{margin:0;width:100%}
.foot-col .fluentform .ff_submit_btn_wrapper{width:100%}
.foot-col .fluentform .ff-el-form-control{width:100%;background:transparent;border:1px solid var(--line)!important;box-shadow:none!important;padding:11px 14px;color:var(--offwhite);font-size:.85rem}
.foot-col .fluentform .ff-btn-submit{width:100%;background:var(--red);border:none;color:#fff;padding:12px 16px;font-size:.78rem;letter-spacing:.1em}
/* Souhlas je souvislá věta, ne popisek pole — drobnější text a menší mezera. */
.foot-col .fluentform .ff-el-tc label.ff_tc_label > .ff_t_c{font-size:.76rem;line-height:1.5;color:var(--grey-dim)}
.foot-col .fluentform .ff-el-form-check.ff-el-tc{margin:0}
.foot-col .fluentform .ff-message-success{border-color:var(--gold);background:rgba(202,167,95,.1);color:var(--gold)}
/* Stálá nabídka (jídelní lístek) — 4 vyrovnané sloupce dle počtu položek */
.menu-stala-h{font-family:var(--f-mono);font-size:.8rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--red);margin:48px 0 18px}
/* Mezi jednotlivými nabídkami (stálá / večerní / nápoje) musí být vidět předěl —
   nadpis další nabídky si odstup nese sám shora, karta pod ním ho potřebuje zdola. */
.menu-stala{margin-bottom:clamp(28px,3.5vw,48px)}
.menu-stala:last-child{margin-bottom:0}
/* Sazba jídelníčku do sloupců (počet sloupců, vyrovnání výšek, zalomení
   položek a klíčů) je součástí pluginu GARRY – Denní menu:
   garry-denni-menu/assets/jidelnicek.css + jidelnicek.js. */

.menu-day{border:1px solid rgba(20,22,25,.1);border-radius:6px;padding:18px 18px 10px;background:#fff}
.menu-day h3{font-size:1.1rem;color:var(--ink,#16181B);margin:0 0 12px;padding-bottom:8px;border-bottom:2px solid var(--red)}
.menu-grp{margin-bottom:12px}
.menu-grp-l{display:block;font-family:var(--f-mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.menu-item{display:flex;justify-content:space-between;gap:12px;padding:4px 0;align-items:baseline}
/* Jídelníček je <dl> (jídlo = dt, cena = dd); vizuál zůstává beze změny. */
.menu-polozky{margin:0}
.menu-polozky dt,.menu-polozky dd{margin:0}
.menu-n{color:var(--ink,#16181B);font-size:.9rem}
.menu-n small{display:block;color:var(--muted);font-size:.78rem}
.menu-a{color:var(--muted);font-style:normal;font-size:.72rem}
.menu-c{color:var(--ink,#16181B);font-weight:700;font-size:.88rem;white-space:nowrap}

/* ===== DOTAZNÍK SPOKOJENOSTI (bodová škála 1–5) ===== */
.dotaznik-form{max-width:640px}
.df-scale-legend{font-family:var(--f-mono);font-size:.8rem;color:var(--muted);margin:0 0 22px;padding:10px 14px;border:1px solid rgba(20,22,25,.14);border-radius:4px}
.df-q{border:none;padding:0;margin:0 0 22px;min-width:0}
.df-q legend{font-weight:700;font-size:1rem;color:var(--ink,#16181B);margin-bottom:10px;padding:0}
.df-q > label{display:block;font-weight:700;color:var(--ink,#16181B);margin-bottom:8px}
.df-scale-row{display:flex;gap:14px;flex-wrap:wrap}
.df-opt{display:inline-flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;font-family:var(--f-mono);font-size:.8rem;color:var(--muted)}
.df-opt input{width:20px;height:20px;accent-color:var(--red);cursor:pointer}
.df-sub{display:flex;align-items:center;gap:18px;margin:10px 0}
.df-sublabel{min-width:96px;font-size:.9rem;color:var(--ink,#16181B)}
.df-q textarea{width:100%;background:#fff;border:1px solid rgba(20,22,25,.18);border-radius:4px;padding:10px 12px;font-family:var(--f-body);color:var(--ink,#16181B);outline:none}
.df-optional{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin:26px 0 12px}
.df-thanks{margin-top:16px;color:var(--muted);font-style:italic}
@media(max-width:640px){.df-sub{flex-direction:column;align-items:flex-start;gap:6px}}

/* ===== KONTAKTNÍ STRÁNKA ===== */
.kontakt-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,54px);margin-top:30px;align-items:start}
.k-info{display:grid;grid-template-columns:1fr 1fr;gap:22px 30px}
/* Nadpisy kontaktních bloků byly původně H3; kvůli správné osnově stránky
   (H1 → H2) jsou dnes H2, vzhled ale zůstává stejný jako u karty. Bez tohohle
   by je chytlo obecné .sec h2 a „Adresa" by byla stejně velká jako nadpis sekce. */
.k-block h2,.k-block h3{font-size:1.15rem;margin-bottom:6px}
.sec .k-block h2{font-size:1.15rem !important}
.k-block p,.k-block address{color:var(--muted);font-size:.95rem;line-height:1.7}
/* <address> nese kontaktní údaje sémanticky, vizuálně ale zůstává běžný text. */
address{font-style:normal;margin:0}
.k-block a{color:var(--red)}
.k-block a:hover{color:var(--red-bright)}
.k-block .btn-ghost{margin-top:10px}
.k-block.k-full{grid-column:1/-1}
.k-block .data{font-family:var(--f-mono);font-size:.8rem;color:var(--muted)}
.k-form h3{font-size:1.4rem;margin-bottom:16px}
@media(max-width:1279px){.kontakt-grid{grid-template-columns:1fr}}
@media(max-width:640px){.k-info{grid-template-columns:1fr}}

/* ===== DOPRAVA — karty tras + letiště ===== */
.dp-cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,48px)}
.dp-card h3{font-size:1.4rem;margin-bottom:12px;display:flex;align-items:center;gap:12px}
.dp-card h3::before{content:"";width:26px;height:2px;background:var(--red);flex:none}
.dp-route{padding:12px 0;border-bottom:1px solid var(--line-c)}
.dp-route:last-child{border-bottom:none}
.dp-route b{display:block;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--red);margin-bottom:4px}
.dp-route span{color:var(--muted);font-size:.94rem;line-height:1.6}
.dp-air-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(16px,2vw,24px);margin-top:26px}
/* Štítek vzdálenosti sedí v pravém horním rohu karty, ne v jednom řádku
   s názvem — dlouhé názvy letišť ho jinak tlačily dolů a řádky se rozjížděly. */
.dp-airport{position:relative;border:1px solid var(--card-line);padding:22px;border-radius:2px;background:var(--card)}
.dp-airport .dp-head{display:block;margin-bottom:10px;padding-right:96px}
.dp-airport .dp-badge{position:absolute;top:18px;right:18px}
/* Karta je poskládaná z modulů Divi a ty si nastavují position:relative —
   štítek by se pak umístil vůči svému modulu, ne vůči kartě. */
.dp-airport .et_pb_text:has(.dp-badge),
.dp-airport .et_pb_text:has(.dp-badge) .et_pb_text_inner,
.dp-airport .et_pb_column:has(.dp-badge),
.dp-airport .et_pb_row:has(.dp-badge){position:static}
/* Sloupec, ve kterém štítek původně seděl, už nemá co držet. */
.dp-airport .dp-head .et_pb_column:has(.dp-badge){flex:0 0 0;min-width:0;padding:0}
.dp-airport h4{font-family:var(--f-head);text-transform:uppercase;font-size:1.15rem;color:var(--fg);letter-spacing:.02em}
.dp-badge{font-family:var(--f-mono);font-size:.7rem;color:var(--red-hi);border:1px solid rgba(255,90,80,.45);padding:3px 9px;border-radius:2px;white-space:nowrap}
.dp-airport p{color:var(--muted);font-size:.9rem;margin-bottom:6px;line-height:1.6}
.dp-airport .dp-vign{display:inline-block;margin-top:6px;font-family:var(--f-mono);font-size:.66rem;color:var(--grey-dim);text-transform:uppercase;letter-spacing:.08em}
/* Navigace a web letiště — dva odkazy v patě karty, na úzkém pod sebou. */
.dp-airport .dp-akce{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:14px}
.dp-airport .dp-akce .sec-more{margin-top:0}
@media(max-width:959px){.dp-cols,.dp-air-grid{grid-template-columns:1fr}}

/* ===== GALERIE — filtr + mřížka ===== */
.galerie-filter{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:24px}
/* .gal-fbtn = varianta filtr, viz systém tlačítek. */
.galerie-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(8px,1vw,14px)}
.gal-item{overflow:hidden;border:1px solid var(--card-line);display:block;aspect-ratio:4/3}
.gal-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.gal-item:hover img{transform:scale(1.07)}
.gal-item.hide{display:none}
/* Matice galerie je 4/2/2/2 — třísloupcový mezistupeň v ní není. */
@media(max-width:1279px){.galerie-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.galerie-grid{grid-template-columns:repeat(2,1fr)}}

/* ============================================================
   FLUENT FORMS — sladění s designem GRID (světlý i tmavý podklad)
   ============================================================ */
.fluentform .ff-el-group{ margin-bottom:16px; }
.fluentform label,.fluentform .ff-el-input--label label{ font-family:var(--f-mono)!important; font-size:.66rem!important; letter-spacing:.1em; text-transform:uppercase; color:var(--muted)!important; margin-bottom:5px; }
.fluentform input[type=text],.fluentform input[type=email],.fluentform input[type=tel],.fluentform input[type=number],.fluentform input[type=date],.fluentform select,.fluentform textarea{
  width:100%; background:transparent!important; border:1px solid var(--line-c)!important; color:var(--fg)!important;
  font-family:var(--f-body)!important; font-size:.92rem!important; padding:10px 12px!important; border-radius:2px!important; box-shadow:none!important;
}
.fluentform input:focus,.fluentform select:focus,.fluentform textarea:focus{ border-color:var(--red)!important; outline:none!important; }
.fluentform .ff-btn-submit,.fluentform button[type=submit]{
  font-family:var(--f-mono)!important; text-transform:uppercase!important; letter-spacing:.14em!important; font-size:.78rem!important;
  background:var(--red)!important; color:#fff!important; border:1px solid var(--red)!important; border-radius:2px!important; padding:12px 24px!important; min-height:44px!important; box-shadow:none!important; transition:background .25s,transform .2s,box-shadow .25s!important;
}
.fluentform .ff-btn-submit:hover,.fluentform button[type=submit]:hover{ background:var(--red-bright)!important; box-shadow:0 0 22px rgba(194,14,26,.5)!important; transform:translateY(-1px) scale(1.012); }
.fluentform ::placeholder{ color:var(--grey-dim); }
/* na tmavém podkladu (čekací list v Sezóně, newsletter v patičce) */
.sec-dark .fluentform label,.waitbox .fluentform label,footer .fluentform label{ color:var(--grey)!important; }
.sec-dark .fluentform input,.sec-dark .fluentform select,.sec-dark .fluentform textarea,
.waitbox .fluentform input,.waitbox .fluentform select,.waitbox .fluentform textarea,
footer .fluentform input,footer .fluentform textarea{ color:var(--offwhite)!important; border-color:rgba(255,255,255,.3)!important; }
.sec-dark .fluentform select option,.waitbox .fluentform select option{ background:var(--graphite); color:var(--offwhite); }

/* ============================================================
   HLAVIČKA — plná (tmavá) hned od načtení mimo titulní stránku
   (podstránky mají často světlou první sekci → potřeba kontrast)
   ============================================================ */
body:not(.home) #topbar{
  background:rgba(14,15,17,.92);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);
  padding:12px var(--gutter);
}
body:not(.home) #topbar .topnav nav a{ color:var(--grey); }

/* ===== JEDNOTNÁ ČERVENÁ: brandová (#C20E1A) na světlém, ZLATÁ na tmavém. Světlejší odstín jen hover tlačítek. ===== */
/* akcentní texty na tmavém pozadí → zlatá (žádná světlá červená #FF5A50) */
.sec-dark .x-num, .sec-dark .e-num, .sec-dark .ev-date,
.sec-dark .exp-item:hover .x-link, .sec-dark .ev-row:hover .ev-cta,
.sec-dark .review .stars,
.room--m1 .r-num, .room--m2 .r-num, .room--m4 .r-num,
.roomdetail .rd-back:hover, .roomdetail .check-list li::before,
.vou-order a, .cmplz-cookiebanner a,
.telemetry-hud .v.hot{ color:var(--gold) !important; }
footer .socials a:hover{ color:var(--gold) !important; border-color:var(--gold) !important; }
/* status „Čekací list" = plná zlatá (bez červené na černém) */
.ev-status.full{ background:var(--gold) !important; color:#0E0F11 !important; border-color:var(--gold) !important; }
/* badge na dopravě → jednotná brandová červená (světlý kontext) */
.dp-badge{ color:var(--red) !important; border-color:rgba(194,14,26,.45) !important; }
/* detail zážitku bez náhledové fotky = jeden sloupec */
.rd-grid--single{ grid-template-columns:minmax(0,1fr) }

/* Divi Visual Builder: reveal obsah nikdy neskrývat (jinak sekce v editoru vypadají prázdné) */
.et-fb .reveal, .et-bfb .reveal, .et-fb-preview .reveal, body.et-fb .reveal{ opacity:1 !important; transform:none !important; }

/* Gastronomie — tři provozy jídelníčku a přístupný filtr. */
.gcard-menu-link{ margin-top:22px; align-self:flex-start; }
.gastro-more{ display:flex; flex-wrap:wrap; gap:18px 26px; align-items:center; }
.gastro-menu-filter{ display:flex; flex-wrap:wrap; gap:10px; margin:0 0 clamp(28px,4vw,48px); }
.gastro-menu-filter .gal-fbtn{ min-height:44px; }
.gastro-menu-panel{ scroll-margin-top:120px; padding:clamp(32px,5vw,68px) 0; border-top:1px solid var(--line); }
.gastro-menu-panel:first-of-type{ border-top:0; padding-top:0; }
.gastro-menu-panel[hidden]{ display:none!important; }
@media(max-width:640px){ .gastro-menu-filter .gal-fbtn{ width:100%; text-align:left; } .gcard-menu-link{ margin-top:18px; } }

/* ============================================================================
   KARTY GASTRO PROVOZŮ — tlačítko na jídelníček na spodní hraně

   Karty v řádku jsou stejně vysoké (mřížka je natahuje), ale tlačítko plavalo
   podle délky textu — u kratší karty skončilo o 50 px výš. Sloupec karty se
   proto roztáhne na celou výšku a tlačítko se odsune dolů automatickým horním
   okrajem. Text tím zůstává nahoře a tlačítka sedí v jedné lince.
   ============================================================================ */
.gastro .gcard{display:flex;flex-direction:column}
.gastro .gcard>.g-body{flex:1 1 auto;display:flex;flex-direction:column}
.gastro .g-body>.et_pb_column{flex:1 1 auto;display:flex;flex-direction:column}
/* Poslední modul ve sloupci je tlačítko — odsune se dolů a vycentruje. */
.gastro .g-body .et_pb_button_module_wrapper:last-child{
  margin-top:auto;
  display:flex;
  justify-content:center;
  padding-top:26px;
}
/* Na mobilu je karta sama o sobě jen tak vysoká, jak je obsah — tam se
   tlačítko nikam odsouvat nemá, jinak by vznikla prázdná díra. */
@media(max-width:640px){
  .gastro .g-body .et_pb_button_module_wrapper:last-child{margin-top:0;padding-top:20px}
}

/* ============================================================================
   JÍDELNÍČEK PROVOZŮ — sekce generované shortcodem [grid_menu_provozy]
   Vzhled patří do child theme, obsah a jeho výběr do pluginu.
   ============================================================================ */
.gastro-menu-panel{margin:0 0 clamp(48px,7vh,86px);scroll-margin-top:calc(var(--gh-header-h,86px) + 16px)}
.gastro-menu-panel:last-child{margin-bottom:0}
.gastro-menu-nadpis{margin:0 0 22px;padding-bottom:14px;border-bottom:1px solid var(--line-c)}
.gastro-menu-prazdno{color:var(--muted);font-family:var(--f-mono);font-size:.86rem;margin:0}

/* ============================================================
   ÚZKÉ REŽIMY — tablet na výšku (≤ 959 px) a mobil (≤ 640 px)
   Zadání 7. 9. 2026. Vše je uvnitř těchto dvou dotazů, širší
   rozlišení se nemění. Blok je záměrně na konci souboru, aby
   přebil dřívější pravidla stejné specificity.
   ============================================================ */
@media(max-width:959px){

  /* --- NADPISY -------------------------------------------------
     Na širokém rozlišení se nadpisy sekcí drží na půlce šířky.
     V úzkém koridoru to nechává skoro prázdný pravý sloupec,
     takže se pouští na celou šířku. Zároveň se ruší vynucené
     zalomení <br> (psané pro široký layout) a dělení slov
     spojovníkem — nadpis se láme po celých slovech. */
  /* Zalomení v nadpisu (<span class="zlom">) se na mobilu chová jako mezera —
     viz definice u .zlom níž. Ostatní <br> v nadpisech se schovají. */
  .sec:not(.hero) :where(h1,h2,h3) br{display:none}

  /* --- REZERVAČNÍ LIŠTA ---------------------------------------
     Datum se v prohlížeči centruje samo, výběry hostů a pokoje
     zůstávaly vlevo. Sjednoceno na střed, CTA přes celou šířku. */
  .bk-field{align-items:center;text-align:center}
  .bk-field label{text-align:center}
  .bk-field input,.bk-field select{text-align:center;text-align-last:center}
  .bk-note{justify-content:center;text-align:center}
  .bk-submit{flex:1 1 100%;padding:12px 0}
  .bk-submit .btn{width:100%;max-width:none !important;height:auto;justify-content:center;text-align:center;padding:15px 18px}

  /* --- DĚLENÉ SEKCE (T2, T7, catering, o nás, firemní) --------
     Řádek měl vpravo odsazení o šířku okraje, takže za fotkou
     vykukoval pruh pozadí. Fotka jde od kraje ke kraji, odsazení
     přebírá textová část. */
  .split,.et_pb_row.split{padding-left:0 !important;padding-right:0 !important}
  .split>.sp-media{width:100%;max-width:100%}
  .split>.sp-content{padding-left:var(--gutter) !important;padding-right:var(--gutter) !important}

  /* --- KARTY: celý rámeček ------------------------------------
     Na širokém rozlišení se pravý okraj karet schovává záměrně
     (karty na sebe navazují). V jednom nebo dvou sloupcích to ale
     vypadá jako uříznutá karta, proto se rámeček vrací. */
  .entry,.exp-item,.entry:nth-child(2),.exp-item:nth-child(2n){border-right:1px solid var(--line-c)}

  /* --- ODKAZY NA KONCI SEKCÍ na střed --------------------------
     Nejdřív se vycentrují všechny, pak se výjimky uvnitř karet
     vrátí doleva (v kartě má odkaz zůstat u textu). */
  .sec .sec-more-radek{justify-content:center;text-align:center}
  .sec .et_pb_text_inner>p:has(>.sec-more),
  .sec .et_pb_text_inner>.wrap:has(>.sec-more),
  .sec .et_pb_text_inner>div:has(>.sec-more){text-align:center}
  .sec :is(.onas-card,.exp-item,.b2b-card,.sez-card,.room,.entry,.gcard)
    .et_pb_text_inner>p:has(>.sec-more){text-align:left}

  /* --- ŘÁDKY TLAČÍTEK ------------------------------------------
     Dvojice tlačítek vedle sebe se do úzkého sloupce nevejde a
     zůstávala u levého okraje. Skládají se pod sebe přes celou
     šířku; závěrečná CTA sekce (.final) si nechává svoje tři
     tlačítka vycentrovaná vedle sebe. */
  .sec .fc-actions{justify-content:center}
  .sec .rd-actions,.sec .doprava-actions,.sec:not(.final) .fc-actions{
    display:flex !important;flex-direction:column;align-items:stretch;gap:12px}
  .sec .rd-actions>*,.sec .doprava-actions>*,.sec:not(.final) .fc-actions>*{
    width:100% !important;max-width:100% !important;flex:none !important;margin:0 !important}
  /* Divi drží tlačítkům `max-width:max-content` (.et_pb_button:not(.et_block_module)),
     takže samotné width:100% nic neudělá — musí se uvolnit i max-width. */
  .sec .rd-actions .et_pb_button_module_wrapper,.sec .doprava-actions .et_pb_button_module_wrapper,
  .sec:not(.final) .fc-actions .et_pb_button_module_wrapper{width:100% !important}
  .sec .rd-actions .btn,.sec .doprava-actions .btn,.sec:not(.final) .fc-actions .btn{
    width:100% !important;max-width:none !important;justify-content:center;text-align:center}

  /* Vodoznak sekce (velké „T1") u první sekce podstránky mizel pod
     napevno umístěnou hlavičkou — posune se pod ni. */
  body:not(.home) .et_pb_section:first-of-type .sec-tag{top:104px}

  /* --- SROVNÁVACÍ TABULKA (T3) ---------------------------------
     Tabulka je širší než displej. První sloupec s vlastnostmi zůstává
     přilepený vlevo, ostatní se posouvají prstem nebo šipkami nad
     tabulkou (ovládání dokresluje grid.js). */
  .rd-tablewrap{position:relative;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}
  .rd-table :is(th,td):first-child{position:sticky;left:0;z-index:2;background:var(--paper)}
  .sec-dark .rd-table :is(th,td):first-child,
  .sec-dark.carbon .rd-table :is(th,td):first-child{background:var(--graphite-deep)}
  .rd-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px}
  .rd-pager-btn{width:44px;height:44px;flex:none;display:flex;align-items:center;justify-content:center;
    background:none;border:1px solid var(--line-c);border-radius:2px;color:var(--fg);
    font-size:1.1rem;line-height:1;cursor:pointer;transition:border-color .2s,color .2s}
  .rd-pager-btn:hover{border-color:var(--red);color:var(--red)}
  .rd-pager-btn[hidden]{display:flex;visibility:hidden}
  .rd-pager-stav{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.14em;color:var(--muted)}

  /* Srovnávací tabulka v režimu karet: pevné šířky sloupců z desktopu
     dělaly z hodnot 50px sloupečky a text se lámal po znacích. */
  .room-table tbody td:nth-child(n){width:auto}

  /* Karta pokoje: „Detail & vybavení" přes celou šířku karty. */
  .room .r-foot{display:block}
  .room .r-foot .btn{width:100% !important;max-width:none !important;justify-content:center;text-align:center}

  /* --- STATISTICKÉ KARTY 50 / 64 / BAR / P ---------------------
     Číslo i popisek na vodorovný i svislý střed rámečku. */
  .b2b-card{min-height:104px}
  .b2b-card .data{white-space:normal}

  /* Stejné zarovnání i pro trojici .stat v T2/T7 — a hlavně zrušené
     white-space:nowrap, kvůli kterému „5,4 km" přetékalo přes rámeček. */
  .stat{display:flex;flex-direction:column;align-items:center;justify-content:center;
    text-align:center;gap:4px;min-height:104px}
  .stat .data{white-space:normal}

  /* Dvojice tlačítek na konci dělené sekce (T2) na střed. */
  .sp-content .et_pb_text_inner div:has(>.btn){justify-content:center}
}

/* --- MOBIL (≤ 640 px) ---------------------------------------- */
@media(max-width:640px){
  /* Řádek akce sezóny: štítek obsazenosti vlevo, rezervace vpravo
     na jednom řádku — místo dvou samostatných řádků pod sebou. */
  .ev-meta{flex-direction:row;flex-wrap:nowrap;justify-content:space-between;
    align-items:center;width:100%;gap:12px;text-align:left;margin-top:4px}
  .ev-cta{font-size:.8rem;letter-spacing:.06em;color:var(--red);white-space:nowrap}
  .ev-status{flex:none}

  /* Kontakt: bloky pod sebou přes celou šířku, ne dva sloupce. */
  /* Kontaktní bloky pod sebou: řádek má nowrap, bez povolení zalomení
     by se sloupce jen zúžily. */
  .sec .k-blockrow{flex-wrap:wrap}
  .sec .k-block{flex:1 1 100% !important;max-width:100% !important;width:100% !important}
}

/* Zalomení nadpisu psané pro široký layout: na širokém rozlišení se chová
   jako <br>, na tabletu na výšku a na mobilu jako obyčejná mezera, aby se
   nadpis lámal po slovech přes celou šířku. */
.zlom{display:block;height:0;overflow:hidden}
@media(max-width:959px){ .zlom{display:inline;height:auto;overflow:visible} }

/* Zalomení, které se má projevit jen na úzkém displeji (opak .zlom):
   na širokém rozlišení je to obyčejná mezera, na tabletu na výšku
   a na mobilu zalomí řádek. */
.zlom-uzky{display:inline}
@media(max-width:959px){ .zlom-uzky{display:block;height:0;overflow:hidden} }

/* Ovládání srovnávací tabulky patří jen do úzkých režimů — nad 959 px
   je vidět celá tabulka a šipky by mátly. */
@media(min-width:960px){ .rd-pager{display:none} }

/* Karty letišť (stránka Jak se k nám dostanete) jsou vnořené Divi řádky
   a těm Divi nastavuje `padding:0` pravidlem o vyšší specificitě, takže
   text seděl natěsno na rámečku. Platí na všech rozlišeních. */
.et_flex_row .dp-airport.dp-airport{padding:clamp(18px,2vw,26px)}

/* ============================================================
   ROZBALENÉ HAMBURGER MENU (≤ 959 px)
   Logo vlevo nahoře, jemné červené světlo z pravého horního rohu
   (od křížku) a pevná spodní lišta s akcemi. Položky menu se rolují
   pod lištou, takže delší menu nic neschová.
   ============================================================ */
@media(max-width:959px){
  .mobile-menu{
    /* radiální nádech červené od rohu s křížkem, mizí zhruba ve třetině šířky */
    background:
      radial-gradient(circle at 100% 0%,
        rgba(194,14,26,.30) 0%,
        rgba(194,14,26,.14) 12%,
        rgba(194,14,26,.05) 22%,
        rgba(194,14,26,0) 34%),
      var(--graphite-deep);
    padding-top:96px;
    padding-bottom:calc(190px + env(safe-area-inset-bottom,0px));
  }
  .mm-logo{position:absolute;top:24px;left:var(--gutter);display:block;z-index:2}
  .mm-logo img{height:30px;width:auto;display:block}
  .mobile-menu .mm-close{top:26px;right:var(--gutter);z-index:2}
  .mm-obsah{width:100%;max-width:420px;display:flex;flex-direction:column}

  /* spodní lišta */
  .mm-spodek{position:fixed;left:0;right:0;bottom:0;z-index:3;
    display:flex;flex-direction:column;gap:10px;
    padding:14px var(--gutter) calc(14px + env(safe-area-inset-bottom,0px));
    background:linear-gradient(180deg,rgba(14,15,17,.86) 0%,var(--graphite-deep) 42%);
    border-top:1px solid var(--line)}
  .mm-radek{display:flex;align-items:center;gap:10px}
  .mm-spodek .btn{margin:0;max-width:none !important;justify-content:center;text-align:center}
  /* Rezervovat přes celou šířku, písmem i řezem jako položky menu */
  /* Základ primárního tlačítka je .btn:not(...):not(...):not(...), tedy čtyři
     třídy. Aby velikost písma prošla, musí být selektor ještě konkrétnější. */
  .mobile-menu .mm-spodek .mm-rezervovat.mm-rezervovat.mm-rezervovat{width:100%;font-family:var(--f-head);font-size:1.6rem;
    letter-spacing:.06em;padding:14px 18px;line-height:1.1}
  /* Ghost tlačítka stojí na tmavém povrchu — barvu textu i rámečku musí nést
     samy, jinak zdědí tmavou variantu a na černém pozadí zmizí. */
  .mobile-menu .mm-navigovat.mm-navigovat,.mobile-menu .mm-volat.mm-volat{flex:0 0 30%;width:30%;
    padding:13px 6px;font-size:.72rem;letter-spacing:.1em;color:var(--offwhite);
    border-color:rgba(255,255,255,.35)}
  .mm-navigovat:hover,.mm-volat:hover{color:#fff;border-color:var(--red)}
  /* jazyky mezi tlačítky */
  .mm-radek .lang{flex:1 1 auto;display:flex;justify-content:center;gap:14px;margin:0}
  .mm-radek .lang a,.mm-radek .lang span{font-family:var(--f-mono);font-size:.78rem;letter-spacing:.12em;
    text-transform:uppercase;color:var(--grey)}
  .mm-radek .lang .active{color:var(--red)}
  /* původní volné tlačítko a jazyky uvnitř seznamu položek už nejsou potřeba */
  .mobile-menu>.btn,.mobile-menu>.lang{display:none}
}

/* ============================================================
   PŘÍSTUPNOST — odkaz na přeskočení navigace (WCAG 2.4.1)
   Skrytý mimo obrazovku, při fokusu naskočí nad hlavičku.
   ============================================================ */
.skip-nav{position:fixed;top:0;left:0;z-index:200}
.skip-link{position:fixed;top:0;left:0;z-index:200;transform:translateY(-120%);
  display:inline-block;padding:14px 22px;background:var(--red);color:#fff;
  font-family:var(--f-mono);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;
  border-bottom-right-radius:2px;transition:transform .15s ease-out}
.skip-link:focus{transform:translateY(0);outline:2px solid #fff;outline-offset:-6px}
main#obsah:focus{outline:none}
@media (prefers-reduced-motion:reduce){.skip-link{transition:none}}

/* ============================================================
   PŘÍSTUPNOST — kontrast a fokus (audit 7. 9. 2026)
   ============================================================ */

/* Hamburger byl jediný ovládací prvek bez viditelného fokusu (WCAG 2.4.7). */
.hamburger:focus-visible{outline:2px solid var(--red);outline-offset:3px}

/* Boční lišta nad světlou sekcí: aktivní bod měl zlatou #b8954a = 2,52:1
   na papírovém podkladu (WCAG 1.4.3). Ztmaveno na hodnotu ≥ 4,5:1.
   Neaktivní body už správné barvy měly (#6b6f76 a #33363a). */
.tp-point.tp-on-light.active .tp-num{color:#755C22}
.tp-label.tp-on-light{color:#5B5F66}

/* Počty u filtrů byly ztlumené na 55 % krytí — na červené i papírové ploše
   tím spadly pod 4,5:1. */
.okoli-filtr .gh-filter span,.gh-filter span,.gal-fbtn span{opacity:.82}

/* Poznámka k auditu: „Rezervovat →" u akce sezóny, štítky vzdálenosti a další
   drobné červené prvky mají na černém pozadí kontrast pod 4,5:1. Ponecháváme
   je v brandové červené — web má mít jednu červenou, rozhodnutí klienta. */

/* Popisky HUD (šedá na tmavě šedé, 3,49–3,60:1). */
.telemetry-hud .hud-row .k,.hud-row .k{color:#B5B3B0}



/* Hláška zablokovaného obsahu (Complianz) — bílá na #808080 = 3,94:1. */
.cmplz-blocked-content-notice{background:#3A3B3D !important;color:#fff !important}
.cmplz-blocked-content-notice a{color:#FFB3AE !important}

/* Ukázkový rezervační widget na /rezervace/. */
.bkmock-wm span{color:#E9C9CC}
.bkmock small,.sec .bkmock small{color:#6B6E74}

/* Cíle dotyku pod 24 × 24 px (WCAG 2.2 — 2.5.8). */
.ev-ext{display:inline-flex;align-items:center;justify-content:center;
  min-width:24px;min-height:24px;padding:4px}
/* Datumová pole přebírá flatpickr a mění je na type="text" — cíl dotyku
   (WCAG 2.5.8) i vyrovnání s výběry proto musí platit i pro ně. */
.bk-field input[type="date"],.bk-field input.flatpickr-input,.bk-field select{min-height:40px}
.cmplz-cookiebanner .cmplz-close{min-width:24px;min-height:24px;display:flex;
  align-items:center;justify-content:center}
.fluentform .ff-el-form-check input[type="radio"],
.fluentform .ff-el-form-check input[type="checkbox"]{width:20px;height:20px}
.fluentform .ff-el-form-check label{min-height:24px;display:inline-flex;align-items:center;padding:4px 6px}

/* Karty se při zvětšených rozestupech textu ořezávaly (WCAG 1.4.12).
   Popis pokoje je ale záměrně schovaný do hoveru — max-height:none by tenhle
   mechanismus vypnul a nadpis by přestal vyjíždět nahoru. Řeší se proto jen
   rozvinutý stav: strop je v em, takže roste spolu s velikostí i rozestupy
   textu, a nemá tedy co oříznout. */
.entry{overflow:visible}
.room:hover .r-desc{max-height:32em}

/* Název akce v řádku sezóny je od verze 2.8.0 tlačítko (dřív byl řádek
   role="button" s odkazem uvnitř — vnořené interaktivní prvky). Vizuálně
   zůstává textem. */
.ev-vybrat{display:inline;padding:0;margin:0;background:none;border:none;
  font:inherit;color:inherit;letter-spacing:inherit;text-align:left;cursor:pointer}
.ev-vybrat:hover{color:var(--red)}
.ev-vybrat:focus-visible{outline:2px solid var(--red);outline-offset:3px}

/* Vizuálně skrytý text pro čtečky (upozornění na nové okno, popisky). */
.vh{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* Nadpisy karet přešly z h3 na h2 (přeskakovaly úroveň pod h1 podstránky).
   Vizuálně musí zůstat jako dřív — globální `.sec h2` je s !important. */
.sec :is(.exp-item,.gcard,.room,.sez-card,.rd-col,.b2b-card,.onas-card) h2{
  font-size:inherit !important;text-transform:none}
.sec .exp-item h2{font-size:1.35rem !important}
.sec .exp-item--prime h2{font-size:clamp(1.5rem,2.6vw,2.1rem) !important}
.sec .gcard h2{font-size:1.6rem !important}
.sec .room .r-body h2{font-size:clamp(1.6rem,2.6vw,2.3rem) !important;margin:8px 0 6px;color:#fff}
.sec .sez-card h2{font-size:1.5rem !important}
.sec .rd-col h2{font-size:1.15rem !important}

/* ============================================================
   SOUHLAS SE ZPRACOVÁNÍM ÚDAJŮ (pole s třídou ff_gdpr_field)
   ============================================================
   Fluent Forms vykresluje GDPR souhlas stejnou strukturou jako škálu 1–5
   (.ff-el-form-check-label), takže po ní dědil rámeček kolem celého bloku
   i červenou výplň přes celou plochu po zaškrtnutí. Souhlas ale není volba
   ze sady: rámeček nemá, jde přes celou šířku formuláře a barevné je jen
   samotné zaškrtávátko. Text souhlasu je souvislá věta, ne popisek pole —
   proto běžné písmo místo verzálek v monu.
   ============================================================ */

/* přes oba sloupce mřížky (kontakt, firemní poptávka, poukazy) */
.k-form .fluentform .ff-el-group:has(.ff_gdpr_field),
#firemni .fluentform .ff-el-group:has(.ff_gdpr_field),
.vou-form .fluentform .ff-el-group:has(.ff_gdpr_field){grid-column:1/-1}

.fluentform .ff-el-form-check.ff-el-tc{display:block;margin:2px 0 6px}
.fluentform .ff-el-tc label.ff_tc_label,
.fluentform .ff-el-form-check label.ff_tc_label{display:flex;align-items:flex-start;gap:11px;
  border:0;border-radius:0;background:none;padding:0;min-height:0;cursor:pointer}
.fluentform .ff-el-form-check label.ff_tc_label:hover{border:0}
.fluentform .ff-el-form-check label.ff_tc_label:has(input:checked){background:none;border:0;color:inherit}
.fluentform .ff-el-tc label.ff_tc_label > .ff_tc_checkbox{display:block;flex:0 0 auto;padding:0;line-height:1}
.fluentform .ff-el-tc label.ff_tc_label > .ff_t_c{display:block;padding:0;
  font-family:var(--f-body) !important;font-size:.86rem;font-weight:400;
  letter-spacing:normal;text-transform:none;line-height:1.6;color:var(--muted)}

/* Vlastní zaškrtávátko: v klidu stejný rámeček jako ostatní pole formuláře
   (--line-c, tedy i na tmavé sekci správně), po zaškrtnutí plná červená plocha.
   Nativní accent-color umí jen výplň, obrys by zůstal v barvě prohlížeče. */
.fluentform .ff-el-form-check-input.ff_gdpr_field{appearance:none;-webkit-appearance:none;
  width:20px;height:20px;flex:0 0 20px;margin:2px 0 0;position:relative;cursor:pointer;
  border:1px solid var(--line-c);border-radius:2px;background:#fff;
  transition:background .2s,border-color .2s}
.fluentform .ff-el-form-check-input.ff_gdpr_field:hover{border-color:var(--red)}
.fluentform .ff-el-form-check-input.ff_gdpr_field:checked{background:var(--red);border-color:var(--red)}
.fluentform .ff-el-form-check-input.ff_gdpr_field:checked::after{content:"";position:absolute;
  left:6px;top:2px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;
  transform:rotate(45deg)}
.fluentform .ff-el-form-check-input.ff_gdpr_field:focus-visible{outline:2px solid var(--red);outline-offset:2px}

/* tmavé sekce (čekací list, poukazy) — políčko musí zůstat vidět na grafitu */
.sec-dark .fluentform .ff-el-form-check-input.ff_gdpr_field{background:rgba(255,255,255,.06)}
.sec-dark .fluentform .ff-el-form-check-input.ff_gdpr_field:checked{background:var(--red)}

/* ============================================================
   KALENDÁŘ VE FORMULÁŘÍCH (flatpickr) — brandové barvy
   ============================================================
   Výchozí flatpickr má modrý výběr a šedý kroužek u dnešního dne. Selektory
   jsou o třídu specifičtější než jeho vlastní, takže není potřeba !important.
   ============================================================ */
.flatpickr-calendar .flatpickr-day:hover,
.flatpickr-calendar .flatpickr-day:focus{background:var(--red);border-color:var(--red);color:#fff}
.flatpickr-calendar .flatpickr-day.today{border-color:var(--red)}
.flatpickr-calendar .flatpickr-day.today:hover,
.flatpickr-calendar .flatpickr-day.today:focus{background:var(--red);border-color:var(--red);color:#fff}
.flatpickr-calendar .flatpickr-day.selected,
.flatpickr-calendar .flatpickr-day.selected:hover,
.flatpickr-calendar .flatpickr-day.selected:focus{background:var(--red);border-color:var(--red);color:#fff}
/* dny mimo zobrazený měsíc a nedostupné termíny zůstávají tlumené */
.flatpickr-calendar .flatpickr-day.prevMonthDay:hover,
.flatpickr-calendar .flatpickr-day.nextMonthDay:hover{background:rgba(194,14,26,.55);border-color:transparent;color:#fff}
.flatpickr-calendar .flatpickr-day.flatpickr-disabled:hover{background:transparent;border-color:transparent;color:inherit}
/* šipky na přepínání měsíce */
.flatpickr-calendar .flatpickr-months .flatpickr-prev-month:hover svg,
.flatpickr-calendar .flatpickr-months .flatpickr-next-month:hover svg{fill:var(--red)}

/* ============================================================
   ROZBALOVACÍ SEZNAM V REZERVAČNÍ LIŠTĚ
   ============================================================
   Nativní <select> otevírá panel kreslený operačním systémem, který se nedá
   obarvit — v tmavé liště svítil bíle s modrým výběrem. Vlastní komponenta
   (viz assets/js/rezervacni-lista.js) drží stejné barvy jako zbytek lišty;
   původní <select> zůstává v DOMu jako zdroj hodnot, jen se schová.
   ============================================================ */
/* Rezervační lišta leží uvnitř Divi sekce, která nemá vlastní z-index —
   sekce pod ní jsou v DOMu později, takže by jejich nadpisy překryly rozbalený
   seznam bez ohledu na to, jak vysoký z-index má samotná lišta. Vrstvení se
   proto musí zvednout až na úrovni celé sekce. */
.et_pb_section:has(.booking){position:relative;z-index:120}
.gsel{position:relative}
.gsel .gsel-nativni{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;border:0}
.gsel-tlacitko{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  min-height:40px;padding:0;background:transparent;border:none;cursor:pointer;
  font-family:var(--f-body);font-size:.95rem;color:var(--offwhite);text-align:left}
.gsel-tlacitko:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.gsel-sipka{flex:0 0 auto;width:9px;height:9px;border-right:1.5px solid var(--grey);
  border-bottom:1.5px solid var(--grey);transform:rotate(45deg) translate(-2px,-2px);transition:border-color .2s}
.gsel-tlacitko:hover .gsel-sipka,.gsel-tlacitko[aria-expanded="true"] .gsel-sipka{border-color:var(--red)}

/* Dvě třídy v selektoru schválně — Divi má na `.et-l--body ul` odrážky
   a odsazení, které by jinak vyhrálo nad jednotřídním pravidlem. */
.gsel .gsel-seznam{position:absolute;top:calc(100% + 10px);left:-14px;right:-14px;z-index:200;margin:0;padding:6px;
  list-style:none;background:var(--graphite);border:1px solid var(--line);border-radius:3px;
  box-shadow:0 18px 40px rgba(0,0,0,.5);max-height:min(52vh,320px);overflow-y:auto}
.gsel .gsel-volba{padding:9px 12px;list-style:none;border-radius:2px;cursor:pointer;white-space:nowrap;
  font-family:var(--f-body);font-size:.92rem;color:var(--offwhite);transition:background .15s,color .15s}
.gsel-volba.je-aktivni{background:var(--red);color:#fff}
.gsel-volba[aria-selected="true"]{font-weight:700}
.gsel-volba[aria-selected="true"]::after{content:"✓";float:right;margin-left:14px;color:var(--gold)}
.gsel-volba.je-aktivni[aria-selected="true"]::after{color:#fff}
@media(prefers-reduced-motion:reduce){.gsel-volba,.gsel-sipka{transition:none}}

/* Vlastní rozbalovací seznam na světlém povrchu (poptávka firemních akcí).
   Barvu určuje povrch, ne třída — tmavá varianta výš zůstává výchozí a tahle
   ji přebíjí jen uvnitř .sec-light. */
.sec-light .gsel-tlacitko{color:var(--fg)}
.sec-light .gsel-sipka{border-color:var(--muted)}
.sec-light .gsel-tlacitko:hover .gsel-sipka,
.sec-light .gsel-tlacitko[aria-expanded="true"] .gsel-sipka{border-color:var(--red)}
.sec-light .gsel .gsel-seznam{background:#fff;border-color:var(--line-c);box-shadow:0 18px 40px rgba(20,22,25,.16)}
.sec-light .gsel .gsel-volba{color:var(--fg)}
.sec-light .gsel-volba.je-aktivni{background:var(--red);color:#fff}
.sec-light .gsel-volba[aria-selected="true"]::after{color:var(--red)}
.sec-light .gsel-volba.je-aktivni[aria-selected="true"]::after{color:#fff}

/* Fluent Forms na světlém povrchu — poptávka firemních akcí stojí v sekci
   sec-light, zatímco čekací list a poukazy jsou v tmavých. */
.sec-light .fluentform .ff-el-form-control{background:rgba(20,22,25,.03);border:1px solid var(--line-c);color:var(--fg)}
.sec-light .fluentform .ff-el-input--label label{color:var(--muted)}

/* Závěrečná výzva na světlém pozadí (stránka „O nás"): nadpis je dlouhá věta,
   přes celou šířku sekce se čte špatně. Drží se na polovině a zalomí se; sekce
   na titulní straně (tmavá varianta) zůstává beze změny. */
.sec-light.final h2{max-width:50%;margin-inline:auto}
@media(max-width:959px){ .sec-light.final h2{max-width:none} }

/* Divi drží modulům nadpisu `max-width:max-content` (stejně jako tlačítkům),
   takže se nadpis sekce nemohl roztáhnout na šířku sloupce a zalomil se dřív,
   než bylo potřeba. Nadpisy sekcí jdou po celé šířce — viz zásada výš. */
.sec .et_pb_heading{max-width:none}

/* ============================================================
   JÍDELNÍČEK NA TMAVÉ SEKCI
   ============================================================
   Stránka Gastronomie má menu rozdělené na tři sekce a prostřední
   (Paddock) sedí na tmavém podkladu. Karty jsou původně navržené pro
   papírové pozadí — na černé by svítily jako bílé bloky, proto se
   překlápějí do tmavé varianty. Červené podtržení skupin zůstává.
   ============================================================ */
.sec-dark .menu-day,
.sec-dark .menu-stala{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12)}
.sec-dark .menu-day h3,
.sec-dark .menu-stala .menu-grp-l{color:var(--offwhite)}
.sec-dark .menu-n,
.sec-dark .menu-c,
.sec-dark .menu-polozky dt,
.sec-dark .menu-polozky dd{color:var(--offwhite)}
.sec-dark .menu-n small{color:var(--grey)}
.sec-dark .menu-a{color:var(--gold)}
.sec-dark .menu-grp-l{color:var(--grey)}
.sec-dark .gastro-menu-panel{border-top-color:rgba(255,255,255,.12)}
.sec-dark .menu-pozn,.sec-dark .gastro-menu-prazdno{color:var(--grey)}

/* ============================================================
   VLAJKOVÁ AKCE SEZÓNY (prime)
   ============================================================
   Karta se chová jako prime karta zážitků: jde přes celou šířku mřížky,
   má červené podbarvení, značku v rohu a obrys trati v pravé třetině.
   V úzkém koridoru se plánek zalomí pod text.
   ============================================================ */
.sez-cards .sez-card--prime{grid-column:1 / -1;position:relative;
  background:linear-gradient(135deg,rgba(194,14,26,.20) 0%,rgba(194,14,26,.07) 55%,rgba(194,14,26,0) 100%);
  border-color:rgba(194,14,26,.55)}
.sec-light .sez-cards .sez-card--prime{
  background:linear-gradient(135deg,rgba(194,14,26,.15) 0%,rgba(194,14,26,.05) 55%,#fff 100%)}
.sez-card--prime h2,.sez-card--prime h3{font-size:clamp(1.5rem,2.6vw,2.1rem)}
.sez-card--prime p{max-width:62ch}
/* Text tvoří vlastní sloupec (.sez-card-obsah), plánek druhý — dva flex prvky
   v poměru 2 : 1. Mřížka by tu byla vratká: karta má proměnný počet prvků
   (datum a značka jen někdy) a plánek přes všechny řádky by si výšku
   dopočítával sám ze sebe. */
.sez-card--prime{flex-direction:row;align-items:center;gap:clamp(20px,2.6vw,40px)}
.sez-card--prime .sez-card-obsah{flex:2 1 0;min-width:0;display:flex;flex-direction:column;gap:10px}
.sez-card--prime .exp-mapa{flex:1 1 0;min-width:0}
/* Značka v rohu — přebít pravidlo, které dává přímým potomkům karty relative. */
.sez-card--prime>.x-prime,.sec-light .sez-card--prime>.x-prime{position:absolute}
/* Horní řádek karty: datum a obsazenost vedle sebe vlevo, vpravo zůstává
   místo pro značku. Datum zatím chybí (ročník bez termínu) a až se doplní,
   řádek se jen rozšíří — nic se nepřeskládá. */
.sez-card--prime .sez-card-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding-right:90px;margin-bottom:4px}
/* Hover přelije kartu červenou: obrys trati by v ní zanikl a značka ztratila
   čitelnost, oboje se proto překlápí do bílé. */
.sez-card--prime .exp-mapa img{transition:filter .45s}
.sez-card--prime:hover .exp-mapa img{filter:brightness(0) invert(1)}
.sez-card--prime:hover>.x-prime,
.sec-light .sez-card--prime:hover>.x-prime{color:#fff;border-color:rgba(255,255,255,.65);
  background:rgba(255,255,255,.18)}
@media(max-width:959px){
  .sez-card--prime{flex-direction:column;align-items:flex-start}
  .sez-card--prime .exp-mapa{max-width:min(300px,60%)}
}

/* Řádek vlajkové akce v seznamu termínů — decentní zvýraznění, ne druhá karta. */
.ev-row--prime{background:rgba(194,14,26,.08);border-left:3px solid var(--red)}
.sec-light .ev-row--prime{background:rgba(194,14,26,.06)}
.ev-row--prime .ev-name .ev-vybrat{font-weight:700}

/* Sloupce patičky jsou od verze 3.29 menu WordPressu. Divi dává seznamům
   v obsahu odrážky a odsazení (`.et-l--footer ul`), takže položky odskakovaly
   od nadpisu sloupce — zdvojená třída to přebíjí bez !important. */
.foot-col .foot-menu.foot-menu,
.foot-col ul{list-style:none;margin:0;padding:0}
.foot-col .foot-menu li{margin:0;padding:0}

/* Kontakty v patičce (telefony, e-mail) jsou odkazy — dokud se na ně nenajede,
   nejsou od okolního textu k rozeznání. Podtržení se ukáže na hover i při
   fokusu z klávesnice, aby signál nebyl jen pro myš. */
.foot-brand .data a{text-decoration:none;transition:color .2s}
.foot-brand .data a:hover,
.foot-brand .data a:focus-visible{color:var(--offwhite);text-decoration:underline;text-underline-offset:3px}
/* Odkazy ve sloupcích menu se chovají stejně. */
.foot-col a:hover,.foot-col a:focus-visible{text-decoration:underline;text-underline-offset:3px}

/* ============================================================
   DOPRAVA — bloky s kartami (stránka Jak se k nám dostanete)
   ============================================================
   Trasy byly dřív pod sebou v jednom sloupci. Teď jsou to karty:
   první řádek nese čtyři trasy autem, druhý dva bloky vedle sebe
   (hromadná doprava, parkování a taxi) po dvou kartách — na širokém
   rozlišení jsou tedy v obou řádcích čtyři karty vedle sebe.
   ============================================================ */
.dp-bloky{display:flex;flex-direction:column;gap:clamp(32px,4vw,56px)}
.dp-radek2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,2.6vw,40px)}
.dp-blok > h2{font-size:clamp(1.5rem,2.6vw,2.1rem);margin:0 0 clamp(14px,1.6vw,22px)}
.dp-mrizka{display:grid;gap:clamp(14px,1.6vw,22px)}
.dp-mrizka--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.dp-mrizka--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.dp-karta{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--card-line);
  border-radius:2px;padding:clamp(18px,2vw,26px);min-width:0}
.dp-karta h3{font-family:var(--f-head);text-transform:uppercase;font-size:1.05rem;color:var(--fg);
  letter-spacing:.02em;margin:0 0 10px;line-height:1.2}
.dp-karta p{color:var(--muted);font-size:.9rem;line-height:1.6;margin:0 0 8px}
.dp-karta p:last-of-type{margin-bottom:0}
.dp-karta .sec-more{margin-top:auto;padding-top:14px}

@media(max-width:1279px){
  .dp-mrizka--4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:959px){
  .dp-radek2{grid-template-columns:1fr}
}
@media(max-width:640px){
  .dp-mrizka--4,.dp-mrizka--2{grid-template-columns:1fr}
}
