
/* «Добро пожаловать» — restore air between carousel block and video (Figma: 1900×1040) */
.index-welcome__block {
  margin-bottom: 100px;
  padding-bottom: 90px;
}

/* Mobile footer — restore natural bottom padding (style.min.css overrides to 120px on ≤768px) */
@media (max-width: 768px) {
  .footer {
    padding-bottom: 40px !important;
  }
}

/* "Подробнее о Grand Premier" — force visible regardless of animation state */
.index-for-create__more {
  right: 0 !important;
  opacity: 1 !important;
}

/* "Наши услуги" — Option C: block entrance, carousel appears as one unit */
@keyframes gpSectionReveal {
  from { opacity: 0; transform: translateY(40px); }
  to   { opacity: 1; transform: translateY(0); }
}
.index-offer__carousel {
  opacity: 0;
}
.index-offer__carousel.gp-inview {
  animation: 1.4s forwards cubic-bezier(0.22, 1, 0.36, 1) gpSectionReveal;
}

/* «Работаем с 2005» — contained parallax: container clips, image pans inside */
.index-experience__image {
  overflow: hidden;
}
.index-experience__image img {
  position: absolute !important;
  top: -7.5% !important;
  left: 0 !important;
  width: 100% !important;
  height: 115% !important;
  object-fit: cover !important;
}

/* GRAND PREMIER — Motion Renovation 2026, v4
   Selective override: hero and "Мы создаём свадьбы" match production.
   Signature effects preserved. Noise removed. */


/* ═══════════════════════════════════════════════
   1. «РАБОТАЕМ С 2005» — Grand Premier статичен
   Название уже не нуждается в представлении.
═══════════════════════════════════════════════ */

.index-experience__title {
  overflow: visible !important;
}
.index-experience__title i {
  animation: none !important;
  -webkit-animation: none !important;
  opacity: 1 !important;
  bottom: 0 !important;
}


/* ═══════════════════════════════════════════════
   2. HEADER — immediate visibility, no animations
   Logo, phone, burger appear instantly on load.
═══════════════════════════════════════════════ */

.header-svg-animate,
.header-logo-animate,
.header-text-animate {
  animation: none !important;
  -webkit-animation: none !important;
  transition: none !important;
}

.header .header-nav__logo {
  width: auto !important;
  overflow: visible !important;
}

.header .header-nav__phone strong {
  overflow: visible !important;
}
.header .header-nav__phone strong i {
  margin-left: 0 !important;
  transition: none !important;
}

.header .header-nav__menu .header-svg span {
  width: 100% !important;
  transition: none !important;
}


/* ═══════════════════════════════════════════════
   3. HERO TEXT — staggered entrance
   .gp-hero-hidden: element starts invisible.
   .gp-hero-reveal: JS adds this after delay —
   triggers transition from hidden to visible.
   !important beats the fadeInCustom animation.
═══════════════════════════════════════════════ */

.gp-hero-hidden {
  opacity: 0 !important;
  transform: translateY(10px) !important;
  animation: none !important;
  -webkit-animation: none !important;
  transition: none !important;
}

.gp-hero-reveal {
  opacity: 1 !important;
  transform: translateY(0) !important;
  transition: opacity 1.1s ease, transform 1.1s ease !important;
}


/* ═══════════════════════════════════════════════
   4. HERO REVEAL — frame appears, not interface
   Section starts invisible + slightly zoomed.
   On window.load JS adds body.gp-loaded.
   CSS transition: opacity 1.4s, scale 2.4s.
   Different durations = organic feel.
   Opacity and scale independent curves.
═══════════════════════════════════════════════ */

.main-animate,
.single-main.main-animate,
.portfolio-main.main-animate,
.project-main.main-animate {
  opacity: 0 !important;
  transform: scale(1.04) !important;
  animation: none !important;
  -webkit-animation: none !important;
  transition:
    opacity 0.9s ease,
    transform 2.4s cubic-bezier(0.190, 1.000, 0.220, 1.000) !important;
}

body.gp-loaded .main-animate,
body.gp-loaded .single-main.main-animate,
body.gp-loaded .portfolio-main.main-animate,
body.gp-loaded .project-main.main-animate {
  opacity: 1 !important;
  transform: scale(1) !important;
}


/* ═══════════════════════════════════════════════
   5. HERO TEXT — appears after the image
   All <i> inside .main-animate start hidden.
   On gp-loaded: fade + slide up with 0.7s delay
   so the background image reveals first.
═══════════════════════════════════════════════ */

.main-animate i {
  opacity: 0 !important;
  transform: translateY(12px) !important;
  animation: none !important;
  -webkit-animation: none !important;
  bottom: 0 !important;
  transition: none !important;
}

/* wedding-in-the-palace: venue photo cards shown statically, no slide-in */
.page-palace .single-righttexts__imgovr img,
.page-palace .single-lefttexts__imgovr img {
  transform: translateX(0) !important;
  animation: none !important;
  -webkit-animation: none !important;
}


body.gp-loaded .main-animate i {
  opacity: 1 !important;
  transform: translateY(0) !important;
  transition:
    opacity 1.4s cubic-bezier(0.190, 1.000, 0.220, 1.000) 0.7s,
    transform 1.4s cubic-bezier(0.190, 1.000, 0.220, 1.000) 0.7s !important;
}
