/* Behaviour that the original site rendered from JS: the intro overlay and the
   scroll-revealed mobile product cards. Everything else lives in styles.css. */

/* --- intro overlay ------------------------------------------------------ */

#preloader {
  background: radial-gradient(ellipse at center, #ffffff 0%, color-mix(in oklab, #2E3689 10%, #ffffff) 100%);
}

#preloader[hidden] { display: none; }

#preloader.is-fading { opacity: 0; }

.preloader-halo {
  background: radial-gradient(circle, color-mix(in oklab, #2E3689 35%, transparent), transparent 70%);
  animation: halo-pulse 2.4s ease-in-out infinite;
}

.preloader-deer { animation: deer-float 4s ease-in-out 1.4s infinite; }

.preloader-deer-ghost { opacity: .18; filter: blur(0.5px); }

.preloader-deer-reveal {
  clip-path: inset(100% 0 0 0);
  animation: deer-reveal 1.6s cubic-bezier(0.65, 0, 0.35, 1) forwards;
}

.preloader-deer-shimmer {
  -webkit-mask-image: url(../img/deer-DfHJwlUn.png);
  mask-image: url(../img/deer-DfHJwlUn.png);
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-size: contain;
  mask-size: contain;
  background: linear-gradient(115deg, transparent 35%, rgba(255, 255, 255, 0.85) 50%, transparent 65%);
  background-size: 250% 250%;
  animation: deer-shimmer 2.6s ease-in-out 1.2s infinite;
}

.preloader-bar {
  background: linear-gradient(90deg, #2E3689, #725291, #2E3689);
  background-size: 200% 100%;
  transform-origin: left;
  --target: 1;
  animation: shimmer 1.4s linear infinite, bar-grow 2200ms linear forwards;
}

@keyframes deer-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}

@keyframes deer-reveal {
  0%   { clip-path: inset(100% 0 0 0); filter: drop-shadow(0 0 0 rgba(46, 54, 137, 0)); }
  60%  { filter: drop-shadow(0 0 18px rgba(114, 82, 145, 0.55)); }
  100% { clip-path: inset(0 0 0 0); filter: drop-shadow(0 0 6px rgba(46, 54, 137, 0.25)); }
}

@keyframes deer-shimmer {
  0%   { background-position: 200% 0; opacity: 0; }
  20%  { opacity: 1; }
  80%  { opacity: 1; }
  100% { background-position: -100% 0; opacity: 0; }
}

@keyframes halo-pulse {
  0%, 100% { opacity: .45; transform: scale(1); }
  50%      { opacity: .85; transform: scale(1.08); }
}

/* --- mobile product cards ---------------------------------------------- */

.scroll-reveal {
  opacity: 0;
  transform: translateY(60px) scale(0.96);
  transition: opacity 900ms cubic-bezier(0.2, 0.8, 0.2, 1),
              transform 900ms cubic-bezier(0.2, 0.8, 0.2, 1);
}

.scroll-reveal.is-visible {
  opacity: 1;
  transform: translateY(0) scale(1);
}

/* --- testimonial carousel ---------------------------------------------- */
/* All five voices ship in the HTML; one is on screen at a time. */

.voice { display: none; }

.voice.is-active { display: block; }

/* --- Demján Sándor Program kötelező arculati blokk ----------------------- */
/* A program arculati irányelvei kötik meg: a szöveg szó szerint kötelező, a két
   logó együtt kötelező, torzítani vagy átszínezni tilos (innen a width:auto),
   és a legkisebb biztonsági méret 50 mm ≈ 141 px magasság, a védjegy és a
   Neumann-logó között 10X ≈ 141 px távolsággal. Szűk mobilon a 141 px fizikailag
   nem fér ki — ott 96 px a Zengo-oldalakon bevett méret. */

.dsp-block {
  padding: 5rem 1.5rem 0;
}

.dsp-block__inner {
  max-width: 80rem;
  margin: 0 auto;
  padding-top: 4rem;
  border-top: 1px solid color-mix(in oklab, var(--foreground) 10%, transparent);
}

.dsp-block__text {
  margin: 0 0 3.5rem;
  text-align: center;
  font-size: .875rem;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 70%, transparent);
}

.dsp-block__logos {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 141px;
}

.dsp-block__logos img {
  display: block;
  height: 141px;
  width: auto;
}

@media (max-width: 900px) {
  .dsp-block__logos { gap: 3rem; }
  .dsp-block__logos img { height: 96px; }
  .dsp-block { padding-top: 3rem; }
  .dsp-block__inner { padding-top: 3rem; }
  .dsp-block__text { margin-bottom: 2.5rem; }
}
