/* === CRITICAL: zapobieganie CLS dla bannerów/hero === */
/* dopasuj selektor .hero jeśli Twój hero ma inną klasę */
.hero, .top-banner, .main-banner {
  width: 100%;
  /* używamy aspect-ratio aby zarezerwować miejsce - zmień 16/6 na właściwy stosunek jeśli wiesz */
  aspect-ratio: 16 / 6;
  min-height: 120px; /* bezpieczny minimum, zmień jeśli potrzebne */
  background-color: #f8f8f8; /* neutralny kolor zapasowy, zapobiega skokowi */
  display: block;
  overflow: hidden;
}

/* obrazki wewnątrz bannerów - niech skalują się bez shift */
.hero img, .top-banner img, .main-banner img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* dla wszystkich pozostałych obrazów: jeśli nie mają wymiarów - ogranicz 'shift' */
img {
  max-width: 100%;
  height: auto;
  display: inline-block;
}

/* lazy-loading: klasa przypisywana skryptem poniżej */
img[data-lazy="true"] {
  opacity: 0;
  transition: opacity .25s ease-in;
}
img[data-lazy="true"].loaded {
  opacity: 1;
}

/* === font-display dla @font-face (jeśli masz własne fonty) === */
@font-face {
  font-family: 'SiteSans';
  src: url('/fonts/SiteSans.woff2') format('woff2');
  font-display: swap;
}

/* drobne poprawki mobilne */
@media (max-width: 768px) {
  .hero, .top-banner, .main-banner { aspect-ratio: 12 / 5; min-height: 100px; }
}