/* AUTOGENEROVANO CORALEM, neupravovat.
 * Zdroj pravdy je stejnojmenny .less soubor, tento .css se pri kazde
 * synchronizaci prepisuje. Upravy delej v .less souboru. */
/* Zlatá hodinka, objednávka (bod 46). Celá stránka roluje jako jedna: na
   počítači je formulář vlevo a kalendář vpravo stojí (sticky uvnitř pravého
   sloupce), na telefonu je kalendář v toku formuláře před souhrnem. Formulář
   je position: relative, takže skrytá pole (výběr balíčku, nahrání fotek)
   z něj neutečou a nenatahují stránku. */
/* Zlatá hodinka 173: hladký roh, násobek --roh-hladky drží zh-plast. */
body.zh .zh-obj {
  --zh-obj-pravy: clamp(380px, 44vw, 720px);
  --zh-obj-okraj: clamp(24px, 6vw, 96px);
  position: relative;
  min-height: 100vh;
  background: radial-gradient(70% 50% at 100% 0%, rgba(136, 83, 137, 0.35) 0%, transparent 60%), radial-gradient(60% 40% at 0% 100%, rgba(250, 129, 185, 0.18) 0%, transparent 60%), #080410;
}
/* Pilulka zpět na web je v jádře (.zh-zpet v zh-plast.less, bod 91). */
/* ─────────────────────────────  formulář  ────────────────────────── */
.zh-obj__formular {
  position: relative;
  min-height: 100vh;
  padding: 0 calc(var(--zh-obj-pravy) + clamp(24px, 4vw, 64px)) 64px var(--zh-obj-okraj);
}
.zh-obj__hlava {
  padding-top: 104px;
  margin-bottom: 34px;
}
.zh-obj__hlava h1,
.zh-obj__detail-karta h1,
.zh-obj__detail-karta h2 {
  font-size: clamp(34px, calc(3vw + 18px), 60px);
  background: linear-gradient(96deg, #FDE0B5 0%, #FAB08E 42%, #FA81B9 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.zh-obj__hlava p {
  max-width: 34em;
  color: #F3D9E4;
}
/* Zlatá hodinka 128: fieldset má v prohlížeči min-width: min-content, dlouhý
   nadpis nebo pole by ho na úzkém telefonu roztáhly přes okraj okna. */
.zh-obj__blok {
  min-width: 0;
  margin: 0 0 24px;
  padding: 22px 22px 20px;
  border: 0;
  border-radius: calc(20px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: linear-gradient(160deg, rgba(42, 24, 52, 0.88), rgba(27, 18, 36, 0.88));
  box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.22);
}
.zh-obj__blok legend,
.zh-obj__kal-uvod .zh-stitek {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 0 8px 0 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #FA81B9;
  text-shadow: none;
}
/* Číslo kroku: formulář čte jako cesta, ne jako hromada polí.
   Zlatá hodinka 133: vyplněný blok (je-hotovo z 001-objednavka.js) vymění
   číslo za fajfku, odznak poskočí, rozsvítí se zlatě a pustí vlnu světla;
   hrana bloku se na chvíli prohřeje. */
.zh-obj__krok {
  position: relative;
  display: inline-grid;
  place-items: center;
  flex: none;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: linear-gradient(135deg, #FAB08E, #FA81B9);
  color: #2A1230;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0;
  transition: background 0.3s ease, box-shadow 0.3s ease;
}
.zh-obj__krok-cislo,
.zh-obj__krok-fajfka {
  grid-area: 1 / 1;
  transition: opacity 0.2s ease, scale 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.zh-obj__krok-fajfka {
  display: grid;
  opacity: 0;
  scale: 0.4;
}
.zh-obj__krok-fajfka svg {
  display: block;
  stroke-dasharray: 24;
  stroke-dashoffset: 24;
}
.je-hotovo .zh-obj__krok {
  background: radial-gradient(circle at 35% 30%, #FFF0D6, #FDE0B5 55%, #fbc36f);
  box-shadow: 0 0 14px -2px rgba(253, 224, 181, 0.8);
  animation: zh-krok-hotovo 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.je-hotovo .zh-obj__krok-cislo {
  opacity: 0;
  scale: 0.4;
}
.je-hotovo .zh-obj__krok-fajfka {
  opacity: 1;
  scale: 1;
}
.je-hotovo .zh-obj__krok-fajfka svg {
  animation: zh-fajfka 0.4s 0.12s ease-out forwards;
}
/* vlna světla, která z odznaku vyběhne a zhasne */
.je-hotovo .zh-obj__krok::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  box-shadow: 0 0 0 2px #FDE0B5;
  opacity: 0;
  animation: zh-krok-vlna 0.8s ease-out;
  pointer-events: none;
}
.zh-obj__blok.je-hotovo {
  animation: zh-blok-hotovo 1.1s ease-out;
}
@keyframes zh-krok-hotovo {
  0% {
    scale: 0.7;
  }
  45% {
    scale: 1.28;
  }
  100% {
    scale: 1;
  }
}
@keyframes zh-krok-vlna {
  0% {
    opacity: 0.9;
    scale: 1;
  }
  100% {
    opacity: 0;
    scale: 2.4;
  }
}
@keyframes zh-blok-hotovo {
  0% {
    box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.22);
  }
  25% {
    box-shadow: inset 0 0 0 2px rgba(253, 224, 181, 0.75), inset 0 0 26px -10px rgba(253, 224, 181, 0.55);
  }
  100% {
    box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.22);
  }
}
@media (prefers-reduced-motion: reduce) {
  .je-hotovo .zh-obj__krok,
  .je-hotovo .zh-obj__krok::after,
  .zh-obj__blok.je-hotovo {
    animation: none;
  }
  .je-hotovo .zh-obj__krok-fajfka svg {
    animation: none;
    stroke-dashoffset: 0;
  }
}
.zh-obj label,
.zh-obj__popisek {
  display: block;
  margin-bottom: 12px;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: #FDE0B5;
}
.zh-obj label .zh-pole,
.zh-obj label .zh-pole-vyber,
.zh-obj label .zh-obj__gps {
  margin-top: 7px;
}
.zh-obj__mrizka {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
  gap: 4px 14px;
}
/* balíčky: tři vedle sebe na každé šířce, jsou krátké */
.zh-obj__balicky {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.zh-obj .zh-obj__balicek {
  margin: 0;
}
.zh-obj__balicek input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.zh-obj__balicek-karta {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-height: 100%;
  padding: 14px 16px;
  border-radius: calc(14px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: rgba(87, 51, 91, 0.22);
  box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.22);
  cursor: pointer;
  transition: box-shadow 0.25s ease, background 0.25s ease;
}
.zh-obj__balicek-karta:hover {
  background: rgba(250, 129, 185, 0.1);
  box-shadow: inset 0 0 0 2px rgba(250, 129, 185, 0.5);
}
.zh-obj__balicek-karta b {
  font-size: 18px;
  color: #F3D9E4;
}
.zh-obj__balicek-cena {
  font-size: 13px;
  color: #FDE0B5;
}
.zh-obj__balicek-hvezdy {
  font-size: 12px;
  letter-spacing: 0.2em;
  color: #FDE0B5;
}
.zh-obj__balicek input:checked + .zh-obj__balicek-karta {
  background: linear-gradient(140deg, rgba(250, 176, 142, 0.22), rgba(250, 129, 185, 0.24));
  box-shadow: inset 0 0 0 2px #FA81B9, var(--zh-stin-karta-vybrana);
}
/* fajfka u vybraného balíčku (bod 60) */
.zh-obj__balicek-karta {
  position: relative;
}
.zh-obj__balicek-fajfka {
  position: absolute;
  right: 10px;
  top: 10px;
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: linear-gradient(135deg, #FAB08E, #FA81B9);
  color: #2A1230;
  opacity: 0;
  scale: 0.6;
  transition: opacity 0.2s ease, scale 0.25s cubic-bezier(0.22, 1, 0.36, 1);
}
.zh-obj__balicek input:checked + .zh-obj__balicek-karta .zh-obj__balicek-fajfka {
  opacity: 1;
  scale: 1;
}
.zh-obj p.zh-obj__vybrano-z {
  margin: -2px 0 12px;
  max-width: none;
  font-size: 13px;
  color: #FDE0B5;
}
/* co je ve vybraném balíčku */
.zh-obj__balicek-obsah {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr));
  gap: 4px 18px;
  margin: 14px 0 0;
  padding: 12px 14px;
  border-radius: calc(14px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: rgba(250, 129, 185, 0.08);
  box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.18);
  list-style: none;
}
.zh-obj__balicek-obsah li {
  position: relative;
  margin: 0;
  padding: 3px 0 3px 18px;
  font-size: 13px;
  line-height: 1.4;
  color: #F3D9E4;
}
.zh-obj__balicek-obsah li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 8px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: linear-gradient(135deg, #FDE0B5, #FAB08E);
  box-shadow: 0 0 0 3px rgba(250, 176, 142, 0.22);
}
.zh-obj__balicek-obsah.je-nove li {
  animation: zh-obsah-prijd 0.35s ease both;
}
@keyframes zh-obsah-prijd {
  from {
    opacity: 0;
    translate: 0 4px;
  }
  to {
    opacity: 1;
    translate: 0 0;
  }
}
.zh-obj__balicek input:focus-visible + .zh-obj__balicek-karta {
  box-shadow: inset 0 0 0 2px #FA81B9, 0 0 0 3px rgba(250, 129, 185, 0.35);
}
/* fotky */
.zh-obj__nahrat input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.zh-obj__nahrat .zh-tl {
  gap: 10px;
}
.zh-obj__nahrat small {
  display: block;
  margin-top: 8px;
  font-weight: 400;
  color: rgba(201, 166, 188, 0.8);
}
.zh-obj__nahledy {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.zh-obj__nahled {
  position: relative;
  width: 74px;
  height: 74px;
  border-radius: calc(10px * var(--roh-hladky, 1));
  corner-shape: squircle;
  overflow: hidden;
  box-shadow: inset 0 0 0 1px rgba(255, 144, 182, 0.22);
}
.zh-obj__nahled img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.zh-obj__nahled--ceka img {
  opacity: 0.4;
}
.zh-obj__nahled button {
  position: absolute;
  right: 3px;
  top: 3px;
  width: 24px;
  height: 24px;
  border: 0;
  border-radius: 50%;
  background: rgba(18, 8, 24, 0.8);
  color: #FDE0B5;
  font-size: 13px;
  line-height: 24px;
  cursor: pointer;
}
/* poloha: pole a tlačítko polohy jsou jedno pole, tlačítko neleží přes text */
.zh-obj__gps {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 2px;
  border: var(--coral-hrana-hlavni, 2px) solid transparent;
  border-radius: calc(14px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: var(--zh-pole-pozadi);
  box-shadow: var(--zh-pole-hrana);
  transition: box-shadow 0.3s ease;
}
@media (hover: hover) {
  .zh-obj__gps:hover {
    background: var(--zh-pole-pozadi-najeti);
    box-shadow: var(--zh-pole-najeti);
  }
}
.zh-obj__gps:focus-within {
  background: var(--zh-pole-pozadi-fokus);
  box-shadow: var(--zh-pole-fokus);
}
/* Zlatá hodinka 162: pole polohy má plnou výšku klikacího cíle i na telefonu. */
.zh-obj__gps input {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 40px;
  padding: 10px 6px 10px 14px;
  border: 0;
  outline: none;
  background: transparent;
  color: #F3D9E4;
  font-family: 'Sora', sans-serif;
  font-size: 15px;
  caret-color: #FDE0B5;
}
/* Fokus kreslí celé pole (focus-within), vnitřní políčko vlastní kroužek nemá. */
body.zh .zh-obj__gps input:focus-visible {
  box-shadow: none;
}
.zh-obj__gps input::placeholder {
  color: rgba(201, 166, 188, 0.6);
}
.zh-obj__gps-tl {
  display: grid;
  place-items: center;
  flex: none;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 0;
  border-radius: calc(12px * var(--roh-hladky, 1) - 4px);
  corner-shape: squircle;
  background: rgba(250, 129, 185, 0.16);
  color: #FA81B9;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease;
}
.zh-obj__gps-tl:hover {
  background: rgba(250, 129, 185, 0.28);
}
.zh-obj__lokace {
  margin-top: 10px;
}
.zh-obj__lokace-radek {
  margin-bottom: 8px;
}
/* Zlatá hodinka 158: Přidat další lokaci je malé vedlejší tlačítko ze skla
   jádra jako šipky (proměnné --zh-sklo v zh-plast.less). */
.zh-obj__pridat {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 0 16px 0 12px;
  border: 0;
  border-radius: 999px;
  outline: none;
  background: var(--zh-sklo);
  box-shadow: var(--zh-sklo-prstenec), var(--zh-sklo-pad);
  color: #FDE0B5;
  font-family: inherit;
  font-size: 13px;
  letter-spacing: 0.04em;
  cursor: pointer;
  transition: background 0.2s ease, box-shadow 0.2s ease, translate 0.2s ease, scale 0.2s ease;
}
@media (hover: hover) {
  .zh-obj__pridat:hover {
    background: var(--zh-sklo-najeti-plne);
    box-shadow: var(--zh-sklo-prstenec-najeti), var(--zh-sklo-pad);
  }
}
body.zh .zh-obj__pridat:focus-visible {
  background: var(--zh-sklo-najeti-plne);
  box-shadow: var(--zh-sklo-prstenec-najeti), var(--zh-sklo-pad);
}
.zh-obj__pridat:active {
  translate: 0 1px;
  scale: 0.97;
  background: var(--zh-sklo-najeti-plne);
  box-shadow: var(--zh-sklo-prstenec-stisk);
  transition-duration: 0.06s;
}
/* Zlatá hodinka 120: kód se vyzkouší a uplatní se až objednávkou. Platný kód
   rozsvítí pole korálově a výsledek světlem zlaté hodinky, chyba je malinová
   a s polem jednou zatřese. Žádná zelená. Pohyby jsou v jádře (zh-plast). */
.zh-obj__kod {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
}
.zh-obj__kod .zh-pole {
  font-family: monospace;
  font-size: 16px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.zh-obj .zh-obj__kod--ok .zh-pole {
  background: var(--zh-pole-pozadi-ok);
  box-shadow: var(--zh-pole-zar-ok);
}
.zh-obj .zh-obj__kod--chyba .zh-pole {
  background: var(--zh-pole-pozadi-chyba);
  box-shadow: var(--zh-pole-zar-chyba);
}
.zh-obj__kod--chyba.zh-obj__kod--novy .zh-pole {
  animation: zh-kod-tres 0.5s cubic-bezier(0.36, 0.07000000000000001, 0.19, 0.97);
}
.zh-obj .zh-obj__kod-tl {
  min-height: 48px;
}
.zh-obj p.zh-obj__kod-popis {
  margin: 0 0 14px;
  max-width: 36em;
  font-size: 14px;
  color: #F3D9E4;
}
/* skrytá možnost při koupi voucheru: tichý odkaz pod posledním krokem */
.zh-obj p.zh-obj__prodlouzit {
  margin: -10px 0 18px;
}
/* výsledek pod polem přes celou šířku: ikona, nadpis, věta z pluginu a
   u platného kódu poznámka, že se uplatní až objednávkou */
.zh-obj__kod-vysledek {
  position: relative;
  grid-column: 1 / -1;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px 16px 13px 12px;
  border-radius: calc(14px * var(--roh-hladky, 1));
  corner-shape: squircle;
  overflow: hidden;
  background: rgba(42, 24, 52, 0.7);
  box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.22);
  font-size: 14px;
  line-height: 1.45;
}
.zh-obj__kod-ikona {
  display: inline-grid;
  flex: none;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: calc(12px * var(--roh-hladky, 1));
  corner-shape: squircle;
  color: #2A1230;
}
.zh-obj__kod-ikona > .zh-ikona {
  grid-area: 1 / 1;
}
.zh-obj .zh-obj__kod-ikona-ok,
.zh-obj .zh-obj__kod-ikona-chyba,
.zh-obj .zh-obj__kod--overuju .zh-obj__kod-ikona {
  display: none !important;
}
.zh-obj .zh-obj__kod--ok .zh-obj__kod-ikona-ok,
.zh-obj .zh-obj__kod--chyba .zh-obj__kod-ikona-chyba {
  display: inline-grid !important;
}
.zh-obj__kod-texty {
  display: grid;
  flex: 1;
  gap: 2px;
  min-width: 0;
}
.zh-obj__kod-titulek {
  font-size: clamp(15px, calc(0.3vw + 13.9px), 17px);
  font-weight: 700;
  letter-spacing: 0.02em;
  color: #FDE0B5;
}
.zh-obj .zh-obj__kod-stav {
  font-size: 14px;
  color: #F3D9E4;
}
.zh-obj .zh-obj__kod--overuju .zh-obj__kod-stav {
  color: #C9A6BC;
}
.zh-obj small.zh-obj__kod-pozn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #FA81B9;
}
.zh-obj small.zh-obj__kod-pozn::before {
  content: "";
  flex: none;
  width: 18px;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, #FAB08E, #FA81B9);
}
.zh-obj__kod--ok .zh-obj__kod-vysledek {
  background: linear-gradient(100deg, rgba(253, 224, 181, 0.2) 0%, rgba(250, 176, 142, 0.15) 45%, rgba(250, 129, 185, 0.18) 100%), rgba(42, 24, 52, 0.8);
  box-shadow: inset 0 0 0 1px rgba(250, 129, 185, 0.65), 0 0 0 4px rgba(250, 129, 185, 0.1);
}
.zh-obj__kod--ok .zh-obj__kod-ikona {
  background: linear-gradient(135deg, #FAB08E 0%, #FA81B9 55%, #885389 100%);
  box-shadow: inset 0 0 0 1px rgba(253, 224, 181, 0.7), 0 0 0 4px rgba(250, 129, 185, 0.2);
}
.zh-obj__kod--chyba .zh-obj__kod-vysledek {
  background: linear-gradient(100deg, rgba(215, 38, 94, 0.26), rgba(215, 38, 94, 0.12)), rgba(42, 24, 52, 0.8);
  box-shadow: inset 0 0 0 1px rgba(255, 107, 149, 0.7), 0 0 0 4px rgba(215, 38, 94, 0.14);
}
.zh-obj__kod--chyba .zh-obj__kod-ikona {
  background: linear-gradient(135deg, #FF6B95, #D7265E);
  box-shadow: 0 0 0 4px rgba(215, 38, 94, 0.22);
}
.zh-obj__kod--chyba .zh-obj__kod-titulek {
  color: #FF6B95;
}
/* platný kód: výsledek vjede a jednou přes něj přejede světlo zlaté hodinky */
.zh-obj__kod--novy .zh-obj__kod-vysledek {
  animation: zh-kod-prijezd 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}
.zh-obj__kod-vysledek::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, transparent 30%, rgba(253, 224, 181, 0.3) 48%, rgba(253, 224, 181, 0) 66%);
  transform: translateX(-110%);
  pointer-events: none;
}
.zh-obj__kod--ok.zh-obj__kod--novy .zh-obj__kod-vysledek::after {
  animation: zh-kod-odlesk 1.1s ease 0.2s;
}
@media (prefers-reduced-motion: reduce) {
  .zh-obj__kod--chyba.zh-obj__kod--novy .zh-pole,
  .zh-obj__kod--novy .zh-obj__kod-vysledek,
  .zh-obj__kod--ok.zh-obj__kod--novy .zh-obj__kod-vysledek::after {
    animation: none;
  }
}
/* souhrn a odeslání */
.zh-obj__souhrn-box {
  margin: 8px 0 18px;
  padding: 18px 22px;
  border-radius: calc(20px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: linear-gradient(120deg, rgba(87, 51, 91, 0.45), rgba(136, 83, 137, 0.3));
  box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.3);
}
.zh-obj__souhrn-box div {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 6px 0;
  color: #C9A6BC;
}
.zh-obj__souhrn-box b {
  color: #F3D9E4;
  text-align: right;
}
/* Zlatá hodinka 121: termín v souhrnu je tlačítko. Bez termínu svítí jako
   výzva Vybrat termín a vede ke kalendáři, s termínem ukazuje den a jde jím
   termín změnit. */
.zh-obj__souhrn-box .zh-obj__souhrn-termin {
  align-items: center;
}
.zh-obj__termin-volba {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 0 16px 0 12px;
  border: 0;
  border-radius: 999px;
  background: linear-gradient(120deg, rgba(250, 176, 142, 0.22), rgba(250, 129, 185, 0.26));
  box-shadow: inset 0 0 0 1px rgba(250, 129, 185, 0.7), 0 0 18px -6px rgba(250, 129, 185, 0.8);
  color: #FDE0B5;
  font-family: inherit;
  font-size: 14px;
  cursor: pointer;
  transition: background 0.2s ease, box-shadow 0.2s ease;
}
.zh-obj__termin-volba:hover {
  background: linear-gradient(120deg, rgba(250, 176, 142, 0.34), rgba(250, 129, 185, 0.4));
}
.zh-obj__termin-volba .zh-ikona {
  color: #FA81B9;
}
.zh-obj__souhrn-box .zh-obj__termin-volba b {
  font-weight: 700;
  color: #FDE0B5;
}
.zh-obj__termin-volba.je-vybrany {
  background: transparent;
  box-shadow: inset 0 0 0 1px rgba(255, 144, 182, 0.3);
}
.zh-obj__souhrn-hlavni {
  margin-top: 6px;
  box-shadow: 0 -1px 0 rgba(255, 144, 182, 0.22);
  font-size: 18px;
}
.zh-obj__souhrn-box .zh-obj__souhrn-hlavni b {
  color: #FDE0B5;
}
.zh-obj__souhrn-box small {
  display: block;
  margin-top: 8px;
  font-size: 12px;
  color: rgba(201, 166, 188, 0.8);
}
.zh-obj .zh-obj__odeslat {
  width: 100%;
}
/* hláška formuláře je karta z jádra (.zh-hlaska), tady jen odsazení */
/* pravý okraj hlášky drží linku souhrnu nad ní */
.zh-obj .zh-obj__hlaska {
  margin-top: 14px;
  padding-right: 22px;
}
.zh-obj p.zh-obj__pozn {
  margin-top: 12px;
  max-width: none;
  font-size: 12px;
  color: rgba(201, 166, 188, 0.8);
}
/* ─────────────────────────────  kalendář  ────────────────────────── */
/* Pravý sloupec přes celou výšku formuláře, vnitřek stojí při rolování. */
.zh-obj__kalendar {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: var(--zh-obj-pravy);
  background: linear-gradient(180deg, rgba(27, 18, 36, 0.9399999999999999), rgba(18, 8, 24, 0.96));
  box-shadow: -1px 0 0 rgba(255, 144, 182, 0.22);
}
.zh-obj__kal-vnitrek {
  position: sticky;
  top: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  height: 100vh;
  padding: 44px clamp(24px, 4vw, 64px) 32px;
  overflow: hidden;
  background: radial-gradient(80% 42% at 50% 104%, rgba(250, 176, 142, 0.26) 0%, rgba(250, 129, 185, 0.12) 45%, transparent 72%), radial-gradient(60% 30% at 88% 0%, rgba(136, 83, 137, 0.3) 0%, transparent 70%);
}
.zh-obj__kal-uvod h2 {
  margin: 10px 0 0;
  font-size: clamp(28px, calc(1.6vw + 16px), 42px);
  background: linear-gradient(96deg, #FDE0B5 0%, #FAB08E 45%, #FA81B9 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}
.zh-obj__kal-uvod p {
  margin: 4px 0 0;
  max-width: 30em;
  font-size: 14px;
  color: #C9A6BC;
}
/* nejbližší volné dny */
.zh-obj__kal-rychle {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 18px 0 16px;
}
.zh-obj__kal-rychle:empty {
  display: none;
}
.zh-obj__kal-rychly {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  min-height: 40px;
  padding: 0 14px;
  border: 0;
  border-radius: 999px;
  background: rgba(250, 129, 185, 0.12);
  box-shadow: inset 0 0 0 1px rgba(255, 144, 182, 0.38);
  color: #FDE0B5;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  line-height: 40px;
  cursor: pointer;
  transition: background 0.2s ease, box-shadow 0.2s ease;
}
.zh-obj__kal-rychly small {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #FA81B9;
}
.zh-obj__kal-rychly:hover {
  background: rgba(250, 129, 185, 0.24);
  box-shadow: inset 0 0 0 1px rgba(253, 224, 181, 0.6);
}
.zh-obj__kal-rychly.je-vybrany {
  background: linear-gradient(120deg, #FAB08E, #FA81B9);
  box-shadow: var(--zh-stin-tl-najeti);
  color: #2A1230;
}
.zh-obj__kal-rychly.je-vybrany small {
  color: #2A1230;
}
.zh-obj__kal-karta {
  width: min(100%, 540px, calc((100vh - 470px) * 1.05 + 60px));
  min-width: min(100%, 300px);
  padding: 16px 18px 14px;
  border-radius: calc(22px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: rgba(27, 18, 36, 0.72);
  box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.26), var(--zh-stin-karta);
}
/* Zlatá hodinka 121: když chybí termín nebo zákazník klikne na Vybrat
   termín, kalendář se dvakrát rozsvítí korálově a nad ním se ukáže výzva. */
.zh-obj__kalendar--hledej .zh-obj__kal-karta,
.zh-obj__kalendar--hledej .zh-obj__kal-rychle {
  animation: zh-kal-hledej 0.9s ease-in-out 2;
}
@keyframes zh-kal-hledej {
  0%,
  100% {
    box-shadow: inset 0 0 0 2px rgba(255, 144, 182, 0.26), var(--zh-stin-karta);
  }
  50% {
    box-shadow: inset 0 0 0 2px #FA81B9, 0 0 0 6px rgba(250, 129, 185, 0.22), 0 0 44px rgba(250, 129, 185, 0.45);
  }
}
.zh-obj__kalendar--hledej .zh-obj__kal-rychle {
  border-radius: 24px;
}
.zh-obj p.zh-obj__kal-vyzva {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 14px 0 0;
  padding: 8px 16px 8px 12px;
  border-radius: 999px;
  background: linear-gradient(120deg, rgba(158, 20, 70, 0.4), rgba(87, 51, 91, 0.5));
  box-shadow: inset 0 0 0 1px rgba(255, 107, 149, 0.65);
  color: #FDE0B5;
  font-size: 14px;
  font-weight: 600;
  animation: zh-kod-prijezd 0.35s ease both;
}
.zh-obj__kal-vyzva .zh-ikona {
  color: #FF6B95;
  animation: zh-kal-sipka 1.2s ease-in-out infinite;
}
@keyframes zh-kal-sipka {
  0%,
  100% {
    translate: 0 -2px;
  }
  50% {
    translate: 0 3px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .zh-obj__kalendar--hledej .zh-obj__kal-karta,
  .zh-obj__kalendar--hledej .zh-obj__kal-rychle,
  .zh-obj__kal-vyzva .zh-ikona {
    animation: none;
  }
}
.zh-obj__kal-hlava {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}
.zh-obj__kal-hlava b {
  font-size: 20px;
  font-weight: 800;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #FDE0B5;
}
/* šipky měsíců jsou kulaté ikony jádra (.zh-tl-ikona, sklo z bodu 158),
   v kalendáři jen o kousek menší */
.zh-obj__kal-tl {
  width: 44px;
  height: 44px;
}
.zh-obj__kal-dny,
.zh-obj__kal-mrizka {
  --zh-kal-mezera: 6px;
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: var(--zh-kal-mezera);
}
.zh-obj__kal-dny span {
  padding: 4px 0;
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #C9A6BC;
}
/* Volný den svítí: teplá výplň, vanilkové číslo a růžová hrana. */
.zh-obj__kal-den {
  aspect-ratio: 1;
  min-width: 0;
  border: 0;
  border-radius: calc(12px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: linear-gradient(150deg, rgba(250, 176, 142, 0.26), rgba(250, 129, 185, 0.28));
  box-shadow: inset 0 0 0 1px rgba(255, 144, 182, 0.6);
  color: #FDE0B5;
  font-family: inherit;
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s ease, box-shadow 0.2s ease;
  position: relative;
}
/* Zlatá hodinka 128: plocha pro prst sahá do poloviny mezery k sousedům,
   takže den na úzkém telefonu bere ťuknutí aspoň na 40 px. Chrome bere bod
   ťuknutí jako čtvereček 1 px vpravo dolů od něj, každá plocha tak chytá
   o 1 px víc vlevo a nahoře; o ten pixel je proto vlevo a nahoře kratší
   a leží na dni souměrně. */
.zh-obj__kal-den::before {
  content: '';
  position: absolute;
  inset: calc(var(--zh-kal-mezera) / -2 + 1px) calc(var(--zh-kal-mezera) / -2) calc(var(--zh-kal-mezera) / -2) calc(var(--zh-kal-mezera) / -2 + 1px);
}
/* Zlatá hodinka 23: najetí rozsvítí den, nic neposkočí. */
.zh-obj__kal-den:hover {
  background: linear-gradient(150deg, rgba(250, 176, 142, 0.4), rgba(250, 129, 185, 0.42));
  box-shadow: inset 0 0 0 1px rgba(253, 224, 181, 0.75);
}
.zh-obj__kal-den--mimo {
  visibility: hidden;
}
.zh-obj__kal-den--minuly,
.zh-obj__kal-den--minuly:hover {
  background: transparent;
  box-shadow: none;
  color: rgba(201, 166, 188, 0.28);
  font-weight: 400;
  cursor: default;
}
.zh-obj__kal-den--obsazeno,
.zh-obj__kal-den--obsazeno:hover {
  background: repeating-linear-gradient(135deg, rgba(42, 18, 48, 0.8) 0 5px, rgba(87, 51, 91, 0.3) 5px 10px);
  box-shadow: inset 0 0 0 1px rgba(201, 166, 188, 0.16);
  color: rgba(201, 166, 188, 0.55);
  font-weight: 400;
  text-decoration: line-through;
  cursor: default;
}
.zh-obj__kal-den--dnes {
  box-shadow: inset 0 0 0 2px rgba(253, 224, 181, 0.7);
}
.zh-obj__kal-den--vybrano,
.zh-obj__kal-den--vybrano:hover {
  background: linear-gradient(120deg, #FAB08E, #FA81B9);
  box-shadow: var(--zh-stin-tl-mrizka);
  color: #2A1230;
  font-weight: 800;
}
.zh-obj__kal-legenda {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-top: 14px;
  font-size: 12px;
  color: #C9A6BC;
}
.zh-obj__kal-b {
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-right: 7px;
  border-radius: 4px;
  vertical-align: -1px;
}
.zh-obj__kal-b--volno {
  background: linear-gradient(150deg, rgba(250, 176, 142, 0.3), rgba(250, 129, 185, 0.3));
  box-shadow: inset 0 0 0 1px rgba(255, 144, 182, 0.6);
}
.zh-obj__kal-b--obsazeno {
  background: repeating-linear-gradient(135deg, rgba(42, 18, 48, 0.9) 0 3px, rgba(87, 51, 91, 0.5) 3px 6px);
  box-shadow: inset 0 0 0 1px rgba(201, 166, 188, 0.3);
}
.zh-obj__kal-b--vybrano {
  background: linear-gradient(120deg, #FAB08E, #FA81B9);
}
.zh-obj__kalendar--voucher .zh-obj__kal-vnitrek {
  align-items: center;
}
.zh-obj__kalendar--voucher img {
  width: min(100%, 520px);
  height: auto;
  border-radius: calc(16px * var(--roh-hladky, 1));
  corner-shape: squircle;
  box-shadow: var(--zh-stin-plovouci);
  rotate: -3deg;
}
.zh-obj__kalendar--voucher p {
  max-width: 30em;
  margin-top: 30px;
  color: #F3D9E4;
}
/* Na nízkém okně se kalendář vejde celý: úvodní věta ustoupí. */
@media (min-width: 768px) and (max-height: 760px) {
  .zh-obj__kal-uvod p {
    display: none;
  }
}
/* ─────────────────────────────  detail a hotovo  ─────────────────── */
.zh-obj__detail,
.zh-obj__hotovo {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  padding: 90px 6vw 60px;
}
.zh-obj__hotovo {
  position: absolute;
  inset: 0;
  z-index: 10;
  background: #080410;
}
/* atribut hidden musí vyhrát nad display: flex */
.zh-obj [hidden] {
  display: none !important;
}
.zh-obj__detail-karta {
  width: min(680px, 100%);
  padding: clamp(22px, 3.4vw, 40px);
  border-radius: calc(24px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: rgba(27, 18, 36, 0.9);
  box-shadow: inset 0 0 0 1px rgba(255, 144, 182, 0.22), var(--zh-stin-plovouci);
}
.zh-obj__detail-karta h1 {
  margin: 8px 0 0;
}
/* Zlatá hodinka 121: detail čte jako příběh objednávky. Zelená nikde, úspěch
   a aktuální krok nesou světle modrou z loga, hotové kroky přechod zlaté
   hodinky. */
/* karta úspěchu hned po zaplacení: fajfka se nakreslí, karta vjede */
.zh-obj__uspech {
  display: flex;
  align-items: center;
  gap: clamp(14px, 2vw, 20px);
  margin: 0 0 clamp(22px, 3vw, 30px);
  padding: clamp(16px, 2.2vw, 22px);
  border-radius: calc(20px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: radial-gradient(120% 160% at 0% 0%, rgba(111, 227, 222, 0.18) 0%, transparent 55%), linear-gradient(120deg, rgba(87, 51, 91, 0.55), rgba(250, 129, 185, 0.12));
  box-shadow: inset 0 0 0 1px rgba(111, 227, 222, 0.42), 0 22px 44px -26px rgba(111, 227, 222, 0.7);
  animation: zh-uspech-prijezd 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.zh-obj__uspech-ikona {
  display: grid;
  place-items: center;
  flex: none;
  width: clamp(52px, 5vw, 62px);
  height: clamp(52px, 5vw, 62px);
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #a2edea, #25bdb6);
  color: #120818;
  box-shadow: 0 0 0 6px rgba(111, 227, 222, 0.14), 0 0 32px rgba(111, 227, 222, 0.55);
  animation: zh-uspech-bod 0.7s 0.12s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}
.zh-obj__uspech-ikona path,
.zh-obj__uspech-ikona polyline {
  stroke-width: 3;
  stroke-dasharray: 26;
  stroke-dashoffset: 26;
  animation: zh-fajfka 0.45s 0.5s ease-out forwards;
}
/* Zlatá hodinka 165: když se fajfka dokreslí, vyletí z ní jiskry v barvách
   zlaté hodinky a kartou přejede světlo. Jiskry jsou stíny jedné tečky,
   po doběhnutí zmizí úplně (výplň jen dozadu). */
.zh-obj__uspech {
  position: relative;
}
.zh-obj__uspech-ikona {
  position: relative;
}
.zh-obj__uspech-ikona::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 6px;
  height: 6px;
  margin: -3px 0 0 -3px;
  border-radius: 50%;
  opacity: 0;
  pointer-events: none;
  animation: zh-jiskry 0.95s 0.62s cubic-bezier(0.15, 0.8, 0.3, 1) backwards;
}
.zh-obj__uspech::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  corner-shape: inherit;
  background: linear-gradient(105deg, transparent 38%, rgba(253, 224, 181, 0.45) 47%, rgba(111, 227, 222, 0.35) 54%, transparent 63%) no-repeat;
  background-size: 260% 100%;
  background-position: 100% 0;
  opacity: 0;
  pointer-events: none;
  animation: zh-listek-zablesk 1.1s 0.7s cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes zh-jiskry {
  0% {
    opacity: 1;
    box-shadow: 0 0 0 0 #FDE0B5, 0 0 0 0 #FA81B9, 0 0 0 0 #6FE3DE, 0 0 0 0 #FDE0B5, 0 0 0 0 #FA81B9, 0 0 0 0 #6FE3DE, 0 0 0 0 #FDE0B5, 0 0 0 0 #FA81B9, 0 0 0 0 #6FE3DE, 0 0 0 0 #FDE0B5, 0 0 0 0 #FA81B9, 0 0 0 0 #6FE3DE;
  }
  70% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    box-shadow: 0 -58px 0 -1px #FDE0B5, 29px -50px 0 -2px #FA81B9, 50px -29px 0 -1px #6FE3DE, 58px 0 0 -2px #FDE0B5, 50px 29px 0 -1px #FA81B9, 29px 50px 0 -2px #6FE3DE, 0 58px 0 -1px #FDE0B5, -29px 50px 0 -2px #FA81B9, -50px 29px 0 -1px #6FE3DE, -58px 0 0 -2px #FDE0B5, -50px -29px 0 -1px #FA81B9, -29px -50px 0 -2px #6FE3DE;
  }
}
.zh-obj__detail-karta .zh-obj__uspech h2 {
  margin: 0;
  font-size: clamp(22px, calc(0.8vw + 18px), 30px);
  line-height: 1.15;
}
.zh-obj .zh-obj__uspech p {
  margin: 6px 0 0;
  font-size: 15px;
  line-height: 1.45;
  color: #F3D9E4;
}
@keyframes zh-uspech-prijezd {
  0% {
    opacity: 0;
    translate: 0 14px;
    scale: 0.97;
  }
  100% {
    opacity: 1;
    translate: 0 0;
    scale: 1;
  }
}
@keyframes zh-uspech-bod {
  0% {
    scale: 0.3;
    opacity: 0;
  }
  100% {
    scale: 1;
    opacity: 1;
  }
}
@keyframes zh-fajfka {
  100% {
    stroke-dashoffset: 0;
  }
}
/* štítek stavu jen u voucheru a zrušené objednávky */
.zh-obj p.zh-obj__stav {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  margin: 14px 0 20px;
  padding: 6px 14px;
  border-radius: 999px;
  background: rgba(250, 129, 185, 0.14);
  box-shadow: inset 0 0 0 1px rgba(250, 129, 185, 0.45);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #FA81B9;
}
.zh-obj p.zh-obj__stav--zaplacena,
.zh-obj p.zh-obj__stav--potvrzena,
.zh-obj p.zh-obj__stav--hotova {
  background: rgba(111, 227, 222, 0.12);
  box-shadow: inset 0 0 0 1px rgba(111, 227, 222, 0.45);
  color: #6FE3DE;
}
.zh-obj p.zh-obj__stav--zrusena {
  background: rgba(158, 20, 70, 0.3);
  box-shadow: inset 0 0 0 1px rgba(255, 107, 149, 0.45);
  color: #FF6B95;
}
/* cesta: objednáno, záloha, potvrzení, focení */
.zh-obj__cesta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: clamp(18px, 2.4vw, 26px) 0 clamp(20px, 2.6vw, 28px);
  padding: 0;
  list-style: none;
}
.zh-obj__cesta-krok {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  margin: 0;
  text-align: center;
  font-size: clamp(11px, calc(0.25vw + 10px), 13px);
  font-weight: 500;
  line-height: 1.25;
  color: #C9A6BC;
  animation: zh-kod-prijezd 0.4s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.zh-obj__cesta-krok:nth-child(2) {
  animation-delay: 0.08s;
}
.zh-obj__cesta-krok:nth-child(3) {
  animation-delay: 0.16s;
}
.zh-obj__cesta-krok:nth-child(4) {
  animation-delay: 0.24s;
}
/* spojnice k předchozímu kroku, pod puntíkem */
.zh-obj__cesta-krok + .zh-obj__cesta-krok::before {
  content: "";
  position: absolute;
  top: 16px;
  left: -50%;
  right: 50%;
  height: 2px;
  margin-top: -1px;
  border-radius: 2px;
  background: rgba(255, 144, 182, 0.2);
}
.zh-obj__cesta-krok.je-hotovo::before,
.zh-obj__cesta-krok.je-ted::before {
  background: linear-gradient(90deg, #FAB08E, #FA81B9);
}
.zh-obj__cesta-bod {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #1B1224;
  box-shadow: inset 0 0 0 1.5px rgba(255, 144, 182, 0.32);
  font-size: 13px;
  font-weight: 700;
  color: #C9A6BC;
}
.je-hotovo .zh-obj__cesta-bod {
  background: linear-gradient(135deg, #FAB08E, #FA81B9);
  box-shadow: 0 0 14px -4px rgba(250, 129, 185, 0.8);
  color: #120818;
}
.je-ted .zh-obj__cesta-bod {
  background: #1B1224;
  box-shadow: inset 0 0 0 2px #6FE3DE, 0 0 0 5px rgba(111, 227, 222, 0.14), 0 0 22px rgba(111, 227, 222, 0.45);
  color: #6FE3DE;
}
.zh-obj__cesta-krok.je-hotovo {
  color: #F3D9E4;
}
.zh-obj__cesta-krok.je-ted {
  font-weight: 700;
  color: #FDE0B5;
}
/* dlaždice: balíček, termín, cena */
.zh-obj__dlazdice {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(170px, 100%), 1fr));
  gap: 10px;
  margin: 0 0 18px;
}
.zh-obj__dlazdice-kus {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
  padding: 14px 16px 15px;
  border-radius: calc(16px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: linear-gradient(160deg, rgba(42, 24, 52, 0.88), rgba(27, 18, 36, 0.88));
  box-shadow: inset 0 0 0 1px rgba(255, 144, 182, 0.22);
}
.zh-obj__dlazdice-kus small {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 4px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #C9A6BC;
}
.zh-obj__dlazdice-kus small .zh-ikona {
  color: #FA81B9;
}
.zh-obj__dlazdice-kus b {
  font-size: clamp(17px, calc(0.3vw + 15px), 19px);
  font-weight: 700;
  line-height: 1.25;
  color: #FDE0B5;
}
.zh-obj__dlazdice-hvezdy {
  margin-left: 2px;
  font-size: 13px;
  letter-spacing: 1px;
  color: #FDE0B5;
}
.zh-obj__dlazdice-kus > span {
  font-size: 13px;
  line-height: 1.4;
  color: #C9A6BC;
}
/* Zlatá hodinka 163: záloha, která čeká, svítí korálově s dýchající tečkou,
   zaplacená modře jako úspěch. Oranžová je jen část přechodu v logu, na
   text ani stav se nepoužívá. */
.zh-obj__dlazdice-kus > span.zh-obj__dlazdice-zaloha {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 2px;
  font-weight: 600;
  color: #FA81B9;
}
.zh-obj__dlazdice-zaloha::before,
.zh-obj p.zh-obj__stav--nova::before {
  content: "";
  flex: none;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
  animation: zh-zaloha-dech 2.4s ease-out infinite;
}
.zh-obj__dlazdice-kus > span.zh-obj__dlazdice-zaloha.je-zaplaceno {
  color: #6FE3DE;
}
.zh-obj__dlazdice-zaloha.je-zaplaceno::before {
  animation: none;
}
@keyframes zh-zaloha-dech {
  0% {
    box-shadow: 0 0 0 0 rgba(250, 129, 185, 0.6);
  }
  70%,
  100% {
    box-shadow: 0 0 0 7px rgba(250, 129, 185, 0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .zh-obj__dlazdice-zaloha::before,
  .zh-obj p.zh-obj__stav--nova::before {
    animation: none;
  }
}
/* kód koupeného voucheru jako ústřižek */
.zh-obj__voucher-kod {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  margin: 0 0 18px;
  padding: 20px 18px;
  border: 1.5px dashed rgba(253, 224, 181, 0.45);
  border-radius: calc(18px * var(--roh-hladky, 1));
  corner-shape: squircle;
  text-align: center;
  background: radial-gradient(120% 150% at 50% 0%, rgba(250, 176, 142, 0.16) 0%, transparent 60%), rgba(8, 4, 16, 0.55);
}
.zh-obj__voucher-kod small {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #FA81B9;
}
.zh-obj__voucher-kod b {
  font-family: monospace;
  font-size: clamp(18px, calc(0.9vw + 14px), 24px);
  letter-spacing: 0.08em;
  overflow-wrap: anywhere;
  user-select: all;
  color: #FDE0B5;
}
.zh-obj__voucher-kod > span {
  max-width: 30em;
  font-size: 13px;
  color: #C9A6BC;
}
/* Zlatá hodinka 165: dopad voucheru do lístku hned po zaplacení. Karta
   voucheru (.zh-obj__let) přiletí doprostřed obrazovky a dopadne sem;
   do té doby lístek čeká prázdný (je-ceka), pak poskočí, pustí modrou
   vlnu, kód se vypíše znak po znaku a lístkem přejede světlo zlaté hodinky
   s modrou jako karta v Balíčcích. */
.zh-obj__let {
  position: fixed;
  z-index: 60;
  margin: 0;
  border-radius: calc(14px * var(--roh-hladky, 1));
  corner-shape: squircle;
  box-shadow: 0 24px 44px -18px rgba(8, 4, 16, 0.8), 0 0 40px -6px rgba(111, 227, 222, 0.6);
  transform-origin: 50% 50%;
  pointer-events: none;
  will-change: transform, opacity;
}
.zh-obj__voucher-kod[data-zh-listek] {
  position: relative;
}
.zh-obj__voucher-kod.je-ceka > * {
  visibility: hidden;
}
.zh-obj__voucher-kod.je-dopad {
  animation: zh-listek-dopad 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.zh-obj__voucher-kod.je-dopad::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  corner-shape: inherit;
  background: linear-gradient(105deg, transparent 38%, rgba(253, 224, 181, 0.7) 47%, rgba(111, 227, 222, 0.5) 54%, transparent 63%) no-repeat;
  background-size: 260% 100%;
  background-position: 100% 0;
  opacity: 0;
  pointer-events: none;
  animation: zh-listek-zablesk 1s 0.45s cubic-bezier(0.4, 0, 0.2, 1);
}
.je-dopad .zh-obj__kod-znak {
  animation: zh-kod-znak 0.5s calc(var(--i) * 0.04s + 0.15s) ease-out backwards;
}
@keyframes zh-listek-dopad {
  0% {
    scale: 0.92;
    box-shadow: 0 0 0 0 rgba(111, 227, 222, 0.75), 0 0 0 0 rgba(253, 224, 181, 0.5);
  }
  35% {
    scale: 1.04;
  }
  100% {
    scale: 1;
    box-shadow: 0 0 0 20px rgba(111, 227, 222, 0), 0 0 40px 10px rgba(253, 224, 181, 0);
  }
}
@keyframes zh-listek-zablesk {
  0% {
    opacity: 1;
    background-position: 100% 0;
  }
  100% {
    opacity: 1;
    background-position: 0 0;
  }
}
@keyframes zh-kod-znak {
  0% {
    opacity: 0;
    filter: blur(6px);
    color: #6FE3DE;
    text-shadow: 0 0 14px #6FE3DE;
  }
  60% {
    opacity: 1;
    filter: blur(0);
    color: #FFF4E0;
    text-shadow: 0 0 12px #FDE0B5;
  }
  100% {
    opacity: 1;
    filter: blur(0);
    color: #FDE0B5;
    text-shadow: none;
  }
}
@media (prefers-reduced-motion: reduce) {
  .zh-obj__voucher-kod.je-dopad,
  .zh-obj__voucher-kod.je-dopad::after,
  .je-dopad .zh-obj__kod-znak {
    animation: none;
  }
}
/* Zlatá hodinka 133: Honzův telefon a mail jako pilulky z jádra (.zh-kontakt),
   v detailu pod větou, kdy se ozve, pod formulářem a v poděkování. */
.zh-obj__ozvu {
  margin: 0 0 18px;
}
.zh-obj .zh-obj__ozvu p {
  margin: 0 0 12px;
  font-size: 15px;
  line-height: 1.5;
  color: #F3D9E4;
}
/* Zlatá hodinka 200: řada z jádra (.zh-kontakt-rada), e-mail dostane
   šířku pro plné písmo, jinak celý řádek pod telefonem. */
.zh-obj__pozn + .zh-obj__kontakty {
  margin-top: 14px;
}
/* přání a lokace */
.zh-obj__detail-prani {
  display: grid;
  gap: 14px;
  margin: 0 0 18px;
  padding: 16px 18px;
  border-radius: calc(16px * var(--roh-hladky, 1));
  corner-shape: squircle;
  background: rgba(8, 4, 16, 0.45);
  box-shadow: inset 0 0 0 1px rgba(255, 144, 182, 0.14);
}
.zh-obj__detail-prani small {
  display: block;
  margin-bottom: 4px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #FA81B9;
}
.zh-obj .zh-obj__detail-prani p {
  margin: 0;
  color: #F3D9E4;
}
.zh-obj__detail-prani ul {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.zh-obj__detail-prani li {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  overflow-wrap: anywhere;
  color: #F3D9E4;
}
.zh-obj__detail-prani li .zh-ikona {
  flex: none;
  margin-top: 3px;
  color: #FA81B9;
}
/* záloha k zaplacení */
.zh-obj__platba {
  margin-top: 6px;
  padding-top: 18px;
  box-shadow: inset 0 1px 0 rgba(255, 144, 182, 0.14);
}
.zh-obj .zh-obj__platba > p {
  margin: 0 0 14px;
  font-size: 14px;
  color: #C9A6BC;
}
.zh-obj__platba-tl {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.zh-obj__platba .zh-tl[disabled] {
  cursor: progress;
  opacity: 0.75;
}
/* děkovná karta po odeslání bez zálohy: stejná fajfka jako po zaplacení */
.zh-obj__hotovo .zh-obj__uspech-ikona {
  margin: 0 0 18px;
}
@media (prefers-reduced-motion: reduce) {
  .zh-obj__uspech,
  .zh-obj__uspech::after,
  .zh-obj__uspech-ikona,
  .zh-obj__uspech-ikona::before,
  .zh-obj__cesta-krok {
    animation: none;
  }
  .zh-obj__uspech-ikona path,
  .zh-obj__uspech-ikona polyline {
    animation: none;
    stroke-dashoffset: 0;
  }
}
/* ─────────────────────────────  telefon  ─────────────────────────── */
@media (max-width: 767px) {
  /* Zlatá hodinka 128: kraj stránky a vnitřní kraj karet tečou od 320 px
     (12 a 8 px) k 375 px (20 a 16 px), ať se na úzký telefon vejde týden
     v kalendáři s plochou pro prst aspoň 40 px na den. */
  .zh-obj {
    --zh-obj-kraj-tel: clamp(12px, calc(12px + (100vw - 320px) * 0.1455), 20px);
    --zh-obj-vnitrek-tel: clamp(8px, calc(8px + (100vw - 320px) * 0.1455), 16px);
  }
  .zh-obj__formular {
    padding: 0 var(--zh-obj-kraj-tel) 40px;
  }
  .zh-obj__hlava {
    padding-top: 84px;
    margin-bottom: 26px;
  }
  .zh-obj__blok {
    padding: 18px clamp(12px, calc(12px + (100vw - 320px) * 0.0727), 16px) 16px;
  }
  .zh-obj__balicky {
    gap: 8px;
  }
  .zh-obj__balicek-karta {
    padding: 12px 10px;
  }
  .zh-obj__balicek-karta b {
    font-size: 15px;
  }
  .zh-obj__balicek-cena {
    font-size: 12px;
  }
  .zh-obj__kod {
    grid-template-columns: minmax(0, 1fr);
  }
  .zh-obj__kalendar {
    position: static;
    width: auto;
    margin: 0 0 24px;
    background: none;
    box-shadow: none;
  }
  .zh-obj__kal-vnitrek {
    position: static;
    height: auto;
    padding: 0;
    overflow: visible;
    background: none;
  }
  /* Zlatá hodinka 128: nadpis bloku zůstává na jednom řádku i na 320 px,
     písmo a prostrkání pod 375 px ubývají s oknem. */
  .zh-obj__blok legend,
  .zh-obj__kal-uvod .zh-stitek {
    font-size: clamp(11px, calc(11px + (100vw - 320px) * 0.0182), 12px);
    letter-spacing: clamp(0.6px, calc(0.6px + (100vw - 320px) * 0.0196), 1.68px);
    white-space: nowrap;
  }
  /* Zlatá hodinka 187, 128: kalendář i souhrn mají stejný vnitřní kraj (karta
     o 1 px menší), ať pravé okraje dnů a termínu v souhrnu lícují; den má
     i s plochou pro prst aspoň 40 px. */
  .zh-obj__kal-karta {
    width: auto;
    min-width: 0;
    padding: 14px calc(var(--zh-obj-vnitrek-tel) - 1px) 12px;
  }
  .zh-obj__souhrn-box {
    padding: 16px var(--zh-obj-vnitrek-tel);
  }
  .zh-obj__kal-dny,
  .zh-obj__kal-mrizka {
    --zh-kal-mezera: 4px;
  }
  .zh-obj__kal-den {
    font-size: 14px;
    border-radius: calc(10px * var(--roh-hladky, 1));
    corner-shape: squircle;
  }
  .zh-obj__kalendar--voucher .zh-obj__kal-vnitrek {
    padding: 10px 0 0;
  }
  .zh-obj__kal-uvod {
    scroll-margin-top: 76px;
  }
  .zh-obj__detail,
  .zh-obj__hotovo {
    padding: 84px 14px 40px;
  }
}
