/* Styly statického webu nad CSS Quasaru (app.css, komponenty.css). */

/* Křivky animací (Material): co se objevuje, zpomaluje do klidu (enter); co odchází, zrychluje
   pryč (exit); pohyb mezi dvěma stavy na obrazovce má standard; pomalé prolnutí fotek sine. */
:root {
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-enter: cubic-bezier(0, 0, 0.2, 1);
  --ease-exit: cubic-bezier(0.4, 0, 1, 1);
  --ease-prolnuti: cubic-bezier(0.37, 0, 0.63, 1);
}

/* Hlavička: obě varianty z Layout.vue jsou v HTML, přepínají je třídy Quasaru gt-sm / lt-md
   (hranice 1024 px, dřív $q.screen.lt.md). Pod 1024 px hamburger a panel zleva (q-drawer).
   Panel přijede za 0,25 s (enter) a odjede za 0,2 s (exit). */
.q-drawer {
  visibility: hidden;
  transition: transform 0.2s var(--ease-exit), visibility 0.2s !important;
}
body.menu-open .q-drawer {
  transform: none;
  visibility: visible;
  transition: transform 0.25s var(--ease-enter), visibility 0.25s !important;
}
.q-drawer__backdrop {
  visibility: hidden;
  background-color: transparent;
  transition: background-color 0.2s var(--ease-exit), visibility 0.2s !important;
}
body.menu-open .q-drawer__backdrop {
  visibility: visible;
  background-color: rgba(0, 0, 0, 0.4);
  transition: background-color 0.25s var(--ease-enter), visibility 0.25s !important;
}

/* q-header reveal: web.js hlavičku při scrollu dolů schová třídou q-header--hidden (app.css) */
@media (prefers-reduced-motion: no-preference) {
  .q-header {
    transition: transform 0.25s var(--ease-enter);
  }
  .q-header.q-header--hidden {
    transition: transform 0.2s var(--ease-exit);
  }
}

/* Horní fotka: rámeček drží místo už před načtením (všechny mají 1798 × 814) a do načtení
   v něm běží jemný shimmer. web.js nad nenačtenou fotku položí .foto-zaslepka a po načtení
   ji rozpustí, takže se fotka do rámečku prolne. */
.top-image {
  aspect-ratio: 1798 / 814;
  height: auto;
  background-color: #ece8e1;
}
.foto-zaslepka {
  position: absolute;
  border-radius: 25px;
  pointer-events: none;
  background: #ece8e1 linear-gradient(100deg, transparent 30%, rgba(255, 255, 255, 0.55) 50%, transparent 70%) no-repeat;
  background-size: 200% 100%;
  transition: opacity 0.6s var(--ease-enter);
}
.foto-zaslepka.pryc {
  opacity: 0;
}
@media (prefers-reduced-motion: no-preference) {
  .foto-zaslepka {
    animation: shimmer 1.6s var(--ease-standard) infinite;
  }
}
@keyframes shimmer {
  from {
    background-position: 150% 0;
  }
  to {
    background-position: -50% 0;
  }
}

/* Prolnutí horní fotky při přechodu na jinou stránku: vložený skript za fotkou v HTML položí
   přes ni fotku z předchozí stránky (.foto-predchozi, stejné třídy, takže stejná velikost a místo)
   a po dekódování nové fotky ji rozpustí. Obyčejný prvek ve stránce, takže menu, odkazy i hover
   fungují po celou dobu prolnutí a prolnutí funguje ve všech prohlížečích. Stejně (bez View
   Transitions) dojede proužek pod položkou menu z předchozí stránky. */
.foto-predchozi {
  position: absolute;
  z-index: 1;
  pointer-events: none;
  transition: opacity 1.5s var(--ease-prolnuti);
}
.foto-predchozi.prolnout {
  opacity: 0;
}

/* Fotogalerie (JidelnaGallery.vue): náhled místo q-img, výřez na střed jako background-size cover.
   Rozměry, zaoblení a okraje dává scoped .gek-screenshots z komponenty.css. */
.gallery-item {
  display: block;
}
.js-gallery .gek-screenshots {
  display: inline-block;
  vertical-align: middle;
  object-fit: cover;
}
/* Hover: místo světlého pozadí odkazu (a:hover z app.css) se fotka lehce přiblíží */
.gallery-item:hover {
  background-color: transparent;
}
@media (prefers-reduced-motion: no-preference) {
  .js-gallery .gek-screenshots {
    transition: transform 0.45s var(--ease-enter);
  }
  .gallery-item:hover .gek-screenshots,
  .gallery-item:focus-visible .gek-screenshots {
    transform: scale(1.05);
  }
}

/* Lightbox (náhrada TinyBox.vue) */
.lightbox {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 4000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.9);
}
.lightbox[hidden] {
  display: none;
}
.lightbox img {
  max-width: 95vw;
  max-height: 90vh;
  /* Zoom v detailu (web.js): gesta obsluhuje skript, počítá s počátkem vlevo nahoře */
  transform-origin: 0 0;
  cursor: zoom-in;
  -webkit-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
}
.lightbox {
  touch-action: none;
}
.lightbox img.priblizeno {
  cursor: grab;
}
.lightbox button {
  z-index: 1;
  text-shadow: 0 0 6px rgba(0, 0, 0, 0.8);
  position: absolute;
  border: 0;
  background: none;
  color: #fff;
  font-size: 48px;
  line-height: 1;
  cursor: pointer;
  padding: 16px;
}
.lb-close {
  top: 8px;
  right: 8px;
}
.lb-prev {
  left: 8px;
}
.lb-next {
  right: 8px;
}
body.lightbox-open {
  overflow: hidden;
}

/* Animace galerie (web.js je zapíná jen bez prefers-reduced-motion) */
.js-odhal .gallery-item {
  opacity: 0;
  transform: translateY(16px);
}
.js-odhal .gallery-item.videt {
  opacity: 1;
  transform: none;
  transition: opacity 0.45s var(--ease-enter), transform 0.45s var(--ease-enter);
  transition-delay: var(--zpozdeni, 0ms);
}
/* Detail: fotka přeletí z náhledu do lightboxu a zpět, tmavé pozadí se prolne */
::view-transition-group(foto) {
  animation-duration: 0.35s;
  animation-timing-function: var(--ease-standard);
}
html.vt-lokal::view-transition-old(root),
html.vt-lokal::view-transition-new(root) {
  animation-duration: 0.35s;
  animation-timing-function: var(--ease-standard);
}
