/* =========================================================
   Vánoční dárky 2026 (rituals.cz, stránka s obalem .xmas)
   Vzor: rituals.com/en-nl/lp/christmas-gifting
   Vše je omezené na .xmas. Mimo obal jen úprava layoutu stránky
   přes body:has(.xmas), takže na jiných stránkách se nic nemění.
   Produktové karty vykresluje doplněk Produkty v článcích (.dmproducts).
   ========================================================= */

/* ---------- Layout stránky Shoptetu ---------- */
body:has(.xmas) #content-wrapper {
  max-width: 100%;
  margin: 0 auto;
  padding-left: 0;
  padding-right: 0;
}

/* nadpis stránky i drobečkovou navigaci nahrazuje hero (stejně jako na Adventním rituálu) */
body:has(.xmas) #content header h1,
body:has(.xmas) .breadcrumbs-wrapper {
  display: none;
}

.xmas {
  --xmas-ink: #1a1919;
  --xmas-muted: #666;
  --xmas-brown: #816356;
  --xmas-tile-ink: #453f3f;
  --xmas-card: #fff;
  --xmas-img-bg: #f6f4f2;
  --xmas-line: rgba(26, 25, 25, .16);
  --xmas-serif: "EB Garamond", eb-garamond, "Times New Roman", serif;
  --xmas-sans: alegreya-sans, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  --xmas-gutter: 20px;
  --xmas-gap: 8px;
  --xmas-max: 1320px;
  color: var(--xmas-ink);
  font-family: var(--xmas-sans);
}

.xmas *,
.xmas *::before,
.xmas *::after {
  box-sizing: border-box;
}

/* atribut hidden (záložky, „Zobrazit více“, ovládání karuselu) musí vyhrát nad display tlačítek */
.xmas [hidden] {
  display: none !important;
}

/* zdrojové seznamy produktů a popisky záložek zpracuje vanoce-lp.js */
.xmas .xmas-products,
.xmas .xmas-tab__label {
  display: none;
}

/* doplněk neodpověděl: místo prázdných zástupek aspoň zdrojové odkazy */
.xmas .xmas-products.is-fallback {
  display: block;
  margin-top: 24px;
}

.xmas .xmas-products.is-fallback a {
  display: block;
  padding: 8px 0;
  color: var(--xmas-ink);
  font-family: var(--xmas-serif);
  font-size: 18px;
  line-height: 24px;
}

.xmas .is-failed .detail:not(.loaded) {
  display: none;
}

.xmas .xmas-only-desktop {
  display: none;
}

.xmas .xmas-only-mobile {
  display: block;
}

/* ---------- Společné prvky ---------- */
.xmas .xmas-pretitle {
  display: block;
  color: var(--xmas-ink);
  font-family: var(--xmas-serif);
  font-size: 14px;
  line-height: 24px;
  letter-spacing: 2px;
  text-transform: uppercase;
}

.xmas .xmas-pretitle--brown {
  color: var(--xmas-brown);
}

.xmas .xmas-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  margin: 0;
  padding: 0 24px;
  border: 1px solid transparent;
  border-radius: 2px;
  background-color: transparent;
  color: var(--xmas-ink);
  font-family: var(--xmas-sans);
  font-size: 14px;
  font-weight: 400;
  line-height: 14px;
  letter-spacing: 2px;
  text-decoration: none;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color .2s ease, border-color .2s ease, color .2s ease;
}

.xmas .xmas-btn--dark {
  background-color: var(--xmas-ink);
  border-color: var(--xmas-ink);
  color: #fff;
}

.xmas .xmas-btn--dark:focus-visible {
  background-color: transparent;
  color: var(--xmas-ink);
}

.xmas .xmas-btn--secondary {
  border-color: var(--xmas-muted);
}

.xmas .xmas-btn--secondary:focus-visible {
  background-color: var(--xmas-ink);
  border-color: var(--xmas-ink);
  color: #fff;
}

.xmas .xmas-btn--outline {
  padding: 0 32px;
  border-color: var(--xmas-line);
  font-size: 12px;
  line-height: 16px;
}

.xmas a:focus-visible,
.xmas button:focus-visible {
  outline: 2px solid var(--xmas-ink);
  outline-offset: 2px;
}

/* lišta záložek a dráha karuselu ořezávají vše za svým okrajem, rámeček fokusu proto dovnitř */
.xmas .xmas-tabs__tab:focus-visible,
.xmas .xmas-carousel__track :focus-visible {
  outline-offset: -4px;
}

.xmas .xmas-round-btn {
  display: inline-flex;
  flex: 0 0 40px;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(0, 0, 0, .2);
  border-radius: 50%;
  background-color: rgba(255, 255, 255, .8);
  color: var(--xmas-ink);
  cursor: pointer;
}

.xmas .xmas-round-btn svg {
  width: 16px;
  height: 16px;
}

.xmas .xmas-round-btn:disabled {
  background-color: #e6e6e6;
  color: var(--xmas-muted);
  cursor: default;
}

/* ---------- Sekce (odsazení podle en-nl) ---------- */
.xmas .xmas-section {
  max-width: var(--xmas-max);
  margin: 0 auto;
  padding: 32px var(--xmas-gutter);
  box-sizing: content-box;
}

/* dárkové sady a dlaždice leží jako na .com na bílém pruhu přes celou šířku;
   stín pruh rozšíří bez přetečení stránky, clip-path ho ořízne na výšku sekce */
.xmas .xmas-sets,
.xmas .xmas-tiles {
  background-color: #fff;
  box-shadow: 0 0 0 100vmax #fff;
  clip-path: inset(0 -100vmax);
}

.xmas .xmas-sets {
  padding-top: 24px;
  padding-bottom: 24px;
}

.xmas .xmas-tiles {
  padding-top: 40px;
  padding-bottom: 40px;
}

.xmas .xmas-seo {
  padding-top: 48px;
  padding-bottom: 64px;
}

.xmas .xmas-section__head {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 24px;
  text-align: left;
}

.xmas .xmas-section__head--center {
  align-items: center;
  text-align: center;
}

.xmas .xmas-section__title {
  margin: 0;
  color: var(--xmas-ink);
  font-family: var(--xmas-serif);
  font-size: 24px;
  font-weight: 400;
  line-height: 32px;
}

/* odskok pod fixní hlavičku při kliknutí na CTA v hero */
.xmas #darkove-sady {
  scroll-margin-top: 100px;
}

/* ---------- Hero ---------- */
.xmas .xmas-hero {
  position: relative;
  padding: 60px var(--xmas-gutter) 0;
  background: linear-gradient(rgba(194, 174, 153, .2), rgba(194, 174, 153, 0));
  text-align: center;
}

/* barevný proužek pod hlavičkou jako na .com */
.xmas .xmas-hero::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  left: 0;
  height: 12px;
  background: linear-gradient(90deg, #fff, #c2ae99);
}

.xmas .xmas-hero__text {
  display: flex;
  flex-direction: column;
  align-items: center;
  max-width: 872px;
  margin: 0 auto;
}

.xmas .xmas-hero__title {
  margin: 0;
  color: var(--xmas-ink);
  font-family: var(--xmas-serif);
  font-size: 32px;
  font-weight: 400;
  line-height: 40px;
  text-wrap: balance;
}

.xmas .xmas-hero__text .xmas-btn {
  margin-top: 24px;
}

.xmas .xmas-hero__media {
  position: relative;
  max-width: var(--xmas-max);
  margin: 48px auto 0;
  overflow: hidden;
  aspect-ratio: 3 / 4;
  background-color: #e9e4dd;
}

.xmas .xmas-hero__media img,
.xmas .xmas-hero__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* mírné zvětšení schová tenký tmavý okraj videa při ořezu na výšku */
.xmas .xmas-hero__video {
  opacity: 0;
  transform: scale(1.02);
  transition: opacity .6s ease;
}

.xmas .xmas-hero__media.is-playing .xmas-hero__video {
  opacity: 1;
}

/* ---------- Produktová karta (výstup doplňku Produkty v článcích) ---------- */
.xmas .dmproducts {
  margin: 0;
  padding: 0;
}

.xmas .dmproducts .detail {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  border: 0;
  background-color: var(--xmas-card);
  text-align: left;
}

/* zástupná karta, než doplněk produkt načte */
.xmas .dmproducts .detail:not(.loaded) {
  aspect-ratio: 4 / 7;
  overflow: hidden;
  background: linear-gradient(var(--xmas-img-bg) 0 62%, var(--xmas-card) 62%);
  color: transparent;
  font-size: 0;
}

/* doplněk blok při načítání vyjme z DOM, místo drží kontejner s proužkem */
.xmas .is-loading {
  position: relative;
}

.xmas .xmas-grid:empty,
.xmas .xmas-carousel__track.is-loading:empty {
  min-height: 480px;
}

.xmas .is-loading::after {
  content: "";
  position: absolute;
  bottom: -24px;
  left: 50%;
  width: 160px;
  height: 2px;
  margin-left: -80px;
  background: linear-gradient(90deg, transparent, var(--xmas-ink), transparent) 0 0 / 200% 100%;
  animation: xmas-loading 1s linear infinite;
}

.xmas .is-loading:empty::after {
  bottom: 50%;
}

@keyframes xmas-loading {
  from { background-position: 100% 0; }
  to { background-position: -100% 0; }
}

@media (prefers-reduced-motion: reduce) {
  .xmas .is-loading::after {
    animation: none;
  }
}

.xmas .dmproducts .p {
  display: flex;
  flex: 1;
  flex-direction: column;
  width: auto;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
}

.xmas .dmproducts .image {
  position: relative;
  display: block;
  margin: 0;
  padding: 0;
  overflow: hidden;
  aspect-ratio: 4 / 5;
  background-color: var(--xmas-img-bg);
}

.xmas .dmproducts .image img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  object-fit: cover;
  mix-blend-mode: multiply;
  transition: transform .6s ease;
}

.xmas .dmproducts .flags {
  position: absolute;
  top: 12px;
  right: 12px;
  bottom: auto;
  left: 12px;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 8px;
  width: auto;
  height: auto;
  margin: 0;
}

.xmas .dmproducts .flag {
  position: static;
  display: inline-block;
  width: auto;
  margin: 0;
  padding: 4px 8px;
  border-radius: 2px;
  background-color: #fff !important;
  color: var(--xmas-ink) !important;
  font-size: 12px;
  line-height: 16px;
  letter-spacing: .3px;
  text-transform: none;
}

/* na kartě stačí dva štítky, jako na .com */
.xmas .dmproducts .flag:nth-child(n+3) {
  display: none;
}

.xmas .dmproducts .p-in {
  display: grid;
  flex: 1;
  grid-template-areas: "name name" "desc desc" "price cart";
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto auto 1fr;
  gap: 4px 12px;
  margin: 0;
  padding: 16px;
  border: 0;
  text-align: left;
}

.xmas .dmproducts .p-in-in,
.xmas .dmproducts .p-bottom,
.xmas .dmproducts [data-micro="offer"] {
  display: contents;
}

.xmas .dmproducts .name {
  grid-area: name;
  display: block;
  margin: 0;
  color: var(--xmas-ink);
  font-family: var(--xmas-serif);
  font-size: 18px;
  font-weight: 400;
  line-height: 24px;
  text-decoration: none;
  text-transform: none;
}

.xmas .dmproducts .name span {
  font: inherit;
}

.xmas .dmproducts .detail .p-desc {
  grid-area: desc;
  display: -webkit-box;
  margin: 0;
  overflow: hidden;
  color: var(--xmas-muted);
  font-size: 14px;
  line-height: 20px;
  letter-spacing: .3px;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.xmas .dmproducts .prices {
  grid-area: price;
  align-self: end;
  margin: 12px 0 0;
  padding: 0;
  text-align: left;
}

.xmas .dmproducts .price-final,
.xmas .dmproducts .price-final strong {
  margin: 0;
  color: var(--xmas-ink);
  font-family: var(--xmas-serif);
  font-size: 18px;
  font-weight: 400;
  line-height: 24px;
}

.xmas .dmproducts .price-standard,
.xmas .dmproducts .price-save {
  color: var(--xmas-muted);
  font-size: 14px;
}

.xmas .dmproducts .p-tools {
  grid-area: cart;
  align-self: end;
  display: flex;
  margin: 0;
  padding: 0;
}

.xmas .dmproducts .p-tools form {
  margin: 0;
}

/* tlačítko do košíku jako kulatá ikona; text zůstává pro čtečky v aria-label */
.xmas .dmproducts .p-tools .btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  min-width: 0;
  height: 40px;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 1px solid rgba(0, 0, 0, .2);
  border-radius: 50%;
  background: rgba(255, 255, 255, .8) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a1919' stroke-width='1.2' stroke-linejoin='round'%3E%3Cpath d='M5 8.5h14l-1.2 11.5H6.2z'/%3E%3Cpath d='M9 8.5V7a3 3 0 0 1 6 0v1.5'/%3E%3Cpath d='M12 11.5v5m-2.5-2.5h5'/%3E%3C/svg%3E") center / 20px no-repeat;
  color: transparent;
  font-size: 0;
  box-shadow: none;
  transition: border-color .2s ease, background-color .2s ease;
}

.xmas .dmproducts .p-tools .btn span {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.xmas .dmproducts .p-tools .btn:focus-visible {
  border-color: var(--xmas-ink);
  background-color: #fff;
}

.xmas .dmproducts .availability {
  grid-column: 1 / -1;
  margin: 0;
  font-size: 14px;
}

/* ---------- Karusel bestsellerů ---------- */
/* šířku karet počítá z šířky sekce (cqw), ne ze 100vw, které na Windows zahrnuje posuvník */
.xmas .xmas-best {
  container-type: inline-size;
}

.xmas .xmas-carousel {
  --xmas-card-w: 68vw;
}

.xmas .xmas-carousel__track {
  margin-right: calc(-1 * var(--xmas-gutter));
  padding-right: var(--xmas-gutter);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}

.xmas .xmas-carousel__track::-webkit-scrollbar {
  display: none;
}

.xmas .xmas-carousel__track .dmproducts {
  display: flex;
  align-items: stretch;
  gap: var(--xmas-gap);
  width: max-content;
}

.xmas .xmas-carousel__track .detail {
  flex: 0 0 var(--xmas-card-w);
  width: var(--xmas-card-w);
  scroll-snap-align: start;
}

.xmas .xmas-carousel__controls {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 24px;
}

.xmas .xmas-carousel__progress {
  position: relative;
  flex: 1;
  height: 2px;
  margin-right: 12px;
  background-color: rgba(0, 0, 0, .1);
}

.xmas .xmas-carousel__bar {
  position: absolute;
  top: 0;
  left: 0;
  height: 2px;
  background-color: var(--xmas-ink);
  transition: left .15s linear, width .15s linear;
}

/* ---------- Dárkové sady: záložky a mřížka ---------- */
.xmas .xmas-tabs__bar {
  display: flex;
  margin: 0 calc(-1 * var(--xmas-gutter)) 24px;
  padding: 0 var(--xmas-gutter);
  overflow-x: auto;
  border-bottom: 1px solid var(--xmas-line);
  scrollbar-width: none;
}

.xmas .xmas-tabs__bar::-webkit-scrollbar {
  display: none;
}

.xmas .xmas-tabs__tab {
  flex: 0 0 auto;
  margin: 0 0 -1px;
  padding: 16px 20px;
  border: 0;
  border-bottom: 1px solid transparent;
  border-radius: 0;
  background: none;
  color: var(--xmas-muted);
  font-family: var(--xmas-sans);
  font-size: 14px;
  font-weight: 400;
  line-height: 14px;
  letter-spacing: 2px;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
  transition: color .2s ease;
}

.xmas .xmas-tabs__tab[aria-selected="true"] {
  border-bottom-color: var(--xmas-ink);
  box-shadow: inset 0 -1px 0 var(--xmas-ink);
  color: var(--xmas-ink);
}

.xmas .xmas-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--xmas-gap);
  margin: 0 calc(-1 * var(--xmas-gutter));
}

.xmas .xmas-grid .dmproducts {
  display: contents;
}

.xmas .xmas-tab__foot {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  margin-top: 24px;
}

/* průběh nad počtem „12 z 21“ jako na .com */
.xmas .xmas-tab__progress {
  position: relative;
  width: 160px;
  height: 2px;
  overflow: hidden;
  border-radius: 1px;
  background-color: #e6e6e6;
}

.xmas .xmas-tab__progress span {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  border-radius: 1px;
  background-color: var(--xmas-ink);
  transition: width .3s ease;
}

.xmas .xmas-tab__count {
  margin: 0;
  color: var(--xmas-muted);
  font-size: 16px;
  line-height: 24px;
  letter-spacing: .6px;
}

/* ---------- Jedinečné dárky (dlaždice) ---------- */
.xmas .xmas-tiles .xmas-pretitle {
  font-size: 14px;
  line-height: 16px;
}

.xmas .xmas-tiles__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 32px var(--xmas-gap);
}

.xmas .xmas-tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  color: var(--xmas-tile-ink);
  text-align: center;
  text-decoration: none;
}

.xmas .xmas-tile__media {
  display: block;
  width: 100%;
  overflow: hidden;
  aspect-ratio: 1 / 1;
  background-color: var(--xmas-img-bg);
}

.xmas .xmas-tile__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .6s ease;
}

.xmas .xmas-tile__title {
  font-family: var(--xmas-serif);
  font-size: 20px;
  line-height: 32px;
}

/* ---------- SEO texty ---------- */
.xmas .xmas-seo .xmas-section__title {
  margin-bottom: 24px;
}

.xmas .xmas-seo__body {
  display: grid;
  gap: 24px;
}

.xmas .xmas-seo__body.is-collapsed {
  max-height: 216px;
  overflow: hidden;
  -webkit-mask-image: linear-gradient(#000 55%, transparent);
  mask-image: linear-gradient(#000 55%, transparent);
}

.xmas .xmas-seo__body h3 {
  margin: 32px 0 0;
  color: var(--xmas-ink);
  font-family: var(--xmas-serif);
  font-size: 20px;
  font-weight: 400;
  line-height: 28px;
}

.xmas .xmas-seo__body h3:first-child {
  margin-top: 0;
}

.xmas .xmas-seo__body p {
  max-width: 648px;
  margin: 16px 0 0;
  color: var(--xmas-muted);
  font-size: 16px;
  line-height: 24px;
  letter-spacing: .6px;
}

.xmas .xmas-seo__body a {
  color: var(--xmas-brown);
  text-decoration: underline;
}

.xmas .xmas-seo__toggle {
  margin-top: 24px;
}

/* sbalený text končí přímo nad tlačítkem, do ztracena ho schová maska */
.xmas .xmas-seo__body.is-collapsed + .xmas-seo__toggle {
  margin-top: 0;
}

/* ---------- Hover jen pro myš (na dotyku by stav po klepnutí zůstal viset) ---------- */
@media (hover: hover) {
  .xmas .xmas-btn--dark:hover {
    background-color: transparent;
    color: var(--xmas-ink);
  }

  .xmas .xmas-btn--secondary:hover {
    background-color: var(--xmas-ink);
    border-color: var(--xmas-ink);
    color: #fff;
  }

  .xmas .dmproducts .detail:hover .image img,
  .xmas .xmas-tile:hover .xmas-tile__media img {
    transform: scale(1.03);
  }

  .xmas .dmproducts .p-tools .btn:hover {
    border-color: var(--xmas-ink);
    background-color: #fff;
  }

  .xmas .xmas-tabs__tab:hover {
    color: var(--xmas-ink);
  }

  .xmas .xmas-tile:hover .xmas-btn--outline {
    border-color: var(--xmas-ink);
  }
}

/* ---------- Tablet ---------- */
@media (min-width: 768px) {
  .xmas {
    --xmas-gutter: 40px;
    --xmas-gap: 24px;
  }

  .xmas .xmas-only-desktop {
    display: block;
  }

  .xmas .xmas-only-mobile {
    display: none;
  }

  .xmas .xmas-pretitle {
    font-size: 16px;
  }

  .xmas .xmas-section {
    padding-top: 48px;
    padding-bottom: 48px;
  }

  .xmas .xmas-sets {
    padding-top: 40px;
    padding-bottom: 40px;
  }

  .xmas .xmas-tiles {
    padding-top: 96px;
    padding-bottom: 96px;
  }

  .xmas .xmas-seo {
    padding-top: 64px;
    padding-bottom: 80px;
  }

  .xmas .xmas-section__title {
    font-size: 32px;
    line-height: 40px;
  }

  .xmas .xmas-hero {
    padding-top: 76px;
  }

  .xmas .xmas-hero__title {
    font-size: 48px;
    line-height: 56px;
  }

  .xmas .xmas-hero__media {
    margin-top: 64px;
    aspect-ratio: 2640 / 1132;
  }

  .xmas .dmproducts .p-in {
    padding: 24px;
  }

  .xmas .dmproducts .name,
  .xmas .dmproducts .price-final,
  .xmas .dmproducts .price-final strong {
    font-size: 24px;
    line-height: 32px;
  }

  .xmas .dmproducts .p-desc {
    font-size: 16px;
    line-height: 24px;
    letter-spacing: .6px;
  }

  .xmas .dmproducts .flag {
    font-size: 14px;
    line-height: 24px;
  }

  .xmas .xmas-carousel {
    --xmas-card-w: calc((min(100vw - 2 * var(--xmas-gutter), var(--xmas-max)) - 2 * var(--xmas-gap)) / 2.4);
  }

  @supports (width: 1cqw) {
    .xmas .xmas-carousel {
      --xmas-card-w: calc((100cqw - 2 * var(--xmas-gap)) / 2.4);
    }
  }

  .xmas .xmas-carousel__track {
    margin-right: calc(50% - 50vw);
    padding-right: calc(50vw - 50%);
  }

  .xmas .xmas-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin: 0;
  }

  .xmas .xmas-tabs__bar {
    margin-left: 0;
    margin-right: 0;
    padding: 0;
  }

  .xmas .xmas-tiles .xmas-section__head {
    margin-bottom: 48px;
  }

  .xmas .xmas-tiles .xmas-section__title {
    font-size: 36px;
    line-height: 48px;
  }

  .xmas .xmas-tile {
    gap: 0;
  }

  .xmas .xmas-tile__title {
    margin-top: 24px;
    font-size: 24px;
    line-height: 32px;
  }

  .xmas .xmas-tile .xmas-btn {
    margin-top: 32px;
  }

  .xmas .xmas-seo .xmas-section__title {
    margin-bottom: 48px;
  }

  .xmas .xmas-seo__body h3 {
    margin-top: 48px;
  }
}

/* ---------- Desktop ---------- */
@media (min-width: 1200px) {
  .xmas {
    --xmas-gutter: 60px;
  }

  .xmas .xmas-carousel {
    --xmas-card-w: calc((min(100vw - 2 * var(--xmas-gutter), var(--xmas-max)) - 3 * var(--xmas-gap)) / 4);
  }

  @supports (width: 1cqw) {
    .xmas .xmas-carousel {
      --xmas-card-w: calc((100cqw - 3 * var(--xmas-gap)) / 4);
    }
  }

  .xmas .xmas-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .xmas .xmas-tiles__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--xmas-gap);
  }

  .xmas .xmas-tile__media {
    aspect-ratio: 31 / 48;
  }

  .xmas .xmas-seo__body {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 48px;
  }

  .xmas .xmas-seo__body h3 {
    font-size: 24px;
    line-height: 32px;
  }
}

/* ---------- Vláček s adventním kalendářem (vkládá vanoce-lp.js) ---------- */
.xmas-train {
  --xmas-train-w: 240px;
  position: fixed;
  right: 0;
  bottom: env(safe-area-inset-bottom, 0);
  left: 0;
  z-index: 80;
  pointer-events: none;
}

/* mezi jízdami a během přednačítání obrázků vláček ani odkaz nejsou vidět */
.xmas-train[hidden],
.xmas-train__link[hidden] {
  display: none;
}

.xmas-train__link {
  position: absolute;
  bottom: 0;
  left: 0;
  width: var(--xmas-train-w);
  height: calc(var(--xmas-train-w) / 2);
  pointer-events: none;
  transform: translate3d(100vw, 0, 0);
}

/* klikací je jen tělo vlaku, ne průhledné okolí spritu, které by překrývalo karty u spodního okraje */
.xmas-train__link::after {
  content: "";
  position: absolute;
  inset: 38% 4% 0;
  pointer-events: auto;
}

.xmas-train__link:focus-visible {
  outline: 2px solid #1a1919;
  outline-offset: 4px;
}

.xmas-train__sprite {
  display: block;
  width: 100%;
  height: 100%;
  background: url("../../upload/vanoce-lp/train-sprite.webp") 0 50% / 1200% 100% no-repeat;
  animation: xmas-train-frame 1.1s steps(11) infinite;
}

.xmas-train__snow {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 40px;
  background: url("../../upload/vanoce-lp/snow-layer.webp") center bottom / cover no-repeat;
  pointer-events: none;
  animation: xmas-snow-enter .6s ease-out both;
}

.xmas-train__snow.is-leaving {
  animation: xmas-snow-leave .45s ease-in both;
}

.xmas-train__link.is-travel {
  animation: xmas-train-travel 12s linear 1 both;
}

.xmas-train__link.is-enter {
  animation: xmas-train-enter 5.7s linear 1 both;
}

.xmas-train__link.is-pause {
  animation: xmas-train-pause .6s linear 1 both;
}

.xmas-train__link.is-exit {
  animation: xmas-train-exit 5.7s linear 1 both;
}

@media (min-width: 768px) {
  .xmas-train {
    --xmas-train-w: 560px;
  }
}

@media (min-width: 768px) and (hover: hover) and (pointer: fine) {
  .xmas-train__link:hover,
  .xmas-train__link:focus-visible {
    animation-play-state: paused;
  }
}

@media (prefers-reduced-motion: reduce) {
  .xmas-train {
    display: none;
  }
}

@keyframes xmas-train-travel {
  from { transform: translate3d(100vw, 0, 0); }
  to { transform: translate3d(calc(-1 * var(--xmas-train-w)), 0, 0); }
}

@keyframes xmas-train-enter {
  from { transform: translate3d(100vw, 0, 0); }
  to { transform: translate3d(calc(50vw - var(--xmas-train-w) / 2), 0, 0); }
}

@keyframes xmas-train-pause {
  from, to { transform: translate3d(calc(50vw - var(--xmas-train-w) / 2), 0, 0); }
}

@keyframes xmas-train-exit {
  from { transform: translate3d(calc(50vw - var(--xmas-train-w) / 2), 0, 0); }
  to { transform: translate3d(calc(-1 * var(--xmas-train-w)), 0, 0); }
}

@keyframes xmas-train-frame {
  to { background-position: 100% 50%; }
}

@keyframes xmas-snow-enter {
  from { transform: translate3d(0, 100%, 0); }
  to { transform: none; }
}

@keyframes xmas-snow-leave {
  from { transform: none; }
  to { transform: translate3d(0, 100%, 0); }
}
