/**
 * Wienges Page Transitions
 * Slide + Overlay steuern wir selbst (CSS/JS), nicht Framer —
 * sonst sterben die Transitions nach React-Detach.
 */

:root {
  --c-blue: var(--wienges-brand, #163f34);
  --wienges-ease: cubic-bezier(0.76, 0, 0.24, 1);
  --wienges-duration: 0.9s;
  --wienges-splash-delay: 0.55s;
}

.appWrap {
  overflow-x: clip;
}

/* Template: .appShell */
main .appShell,
.appShell {
  position: absolute;
  inset: 0 0 auto;
  background-color: var(--color-background, var(--wienges-paper, #f4efe6));
}

/* Template: .appShell-overlay */
.appShell-overlay {
  pointer-events: none;
  background-color: var(--c-blue);
  position: absolute;
  inset: 0;
  z-index: 3;
}

.wienges-splash-brand {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(1.25rem, 3.5vw, 2rem);
  width: 100%;
  margin: 0 auto;
  text-align: center;
}

.wienges-splash-logo {
  display: block !important;
  width: clamp(12rem, 46vw, 19rem);
  height: auto;
  margin-inline: auto;
  filter: none !important;
  opacity: 1 !important;
  mix-blend-mode: normal;
}

.wienges-splash-wordmark {
  font-family: var(--wienges-font-body, "Source Sans 3", sans-serif) !important;
  font-weight: 700;
  font-size: clamp(3.5rem, 14vw, 6.5rem);
  line-height: 0.95;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--wienges-gold, #b08d43) !important;
  display: block;
  text-align: center;
  margin: 0;
}

body.wienges-initial-load {
  overflow: clip;
}

/* Route-Change: alte Seite ausblenden, aber Navigation bleibt sichtbar */
body.wienges-route-transition
  .appShell.wienges-route-exiting
  > :not(.appShell-overlay):not(.appDesk):not(.appBurger) {
  opacity: 0 !important;
  pointer-events: none;
}

/* Navigation während Transition / Home-Enter immer sichtbar */
body.wienges-route-transition .appDesk,
body.wienges-route-transition .appDesk-nav > *,
body.wienges-route-transition .appBurger,
body.wienges-route-transition .appBurger-container,
body.wienges-route-to-home .appDesk,
body.wienges-route-to-home .appDesk-nav > *,
body.wienges-route-to-home .appBurger,
body.wienges-route-to-home .appBurger-container,
html.wienges-pending-home .appDesk,
html.wienges-pending-home .appDesk-nav > *,
html.wienges-pending-home .appBurger,
html.wienges-pending-home .appBurger-container,
body.wienges-page-exiting .appDesk,
body.wienges-page-exiting .appBurger,
body.wienges-page-exiting .appBurger-container {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  pointer-events: auto !important;
}

/* Framer-Overlay (Marke) bei Page-Transitions komplett aus */
.appShell-overlay,
body.wienges-route-transition .appShell-overlay,
body.wienges-route-transition .appShell.wienges-route-exiting > .appShell-overlay,
body.wienges-page-exiting .appShell-overlay,
body.wienges-page-entering .appShell-overlay {
  opacity: 0 !important;
  visibility: hidden !important;
  background: transparent !important;
  pointer-events: none !important;
}

@keyframes wienges-page-slide-in {
  from {
    transform: translate3d(0, 100vh, 0);
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}

/* SPA: neue Seite von unten (nicht Richtung Home — dort Hero-Entrance) */
body.wienges-route-transition:not(.wienges-route-to-home)
  main
  .appShell:not(.wienges-route-exiting),
body.wienges-page-entering main .appShell,
.appShell.wienges-page-enter {
  animation: wienges-page-slide-in var(--wienges-duration) var(--wienges-ease) both;
  will-change: transform;
}

/* Full-page: vor erstem Paint schon unten, dann Slide */
html.wienges-pending-enter main .appShell,
html.wienges-pending-enter .appShell {
  transform: translate3d(0, 100vh, 0) !important;
}

html.wienges-pending-enter body {
  overflow: clip;
}

/* Full-Page-Exit: kurz blocken, ohne Farbfläche */
body.wienges-page-exiting {
  pointer-events: none;
}

/*
 * appHero-overlay zeigt kurz Logo+Schrift und wischt sie weg.
 * Das ist nur für den First-Splash gedacht — bei Rückkehr zur Home stört der Flash.
 * Die echte Hero-Entrance (Logo von unten + Media) bleibt erhalten.
 */
.appHero-overlay {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Statisches Home-HTML: Logo unsichtbar bis JS/Framer die Entrance starten */
html.wienges-pending-home .wienges-hero-logo,
html.wienges-pending-home .appHero-logo,
html.wienges-pending-home .wienges-hero-siegel,
html.wienges-pending-home .wienges-hero-wordmark {
  opacity: 0 !important;
  visibility: hidden !important;
}
