/* ============================ Imposanter Wein-Ladescreen ============================ */
#app-loader {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background:
    radial-gradient(120% 80% at 50% 0%, var(--accent) 0%, var(--accent-700) 55%, #2a0a16 100%);
  color: #fff;
  overflow: hidden;
  transition: opacity 0.6s var(--ease), visibility 0.6s;
}
#app-loader.hide { opacity: 0; visibility: hidden; }

/* Schwebende Lichtpunkte im Hintergrund */
#app-loader .orb {
  position: absolute;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.25), transparent 70%);
  filter: blur(2px);
  animation: orb-float 7s ease-in-out infinite;
}
#app-loader .orb.o1 { width: 220px; height: 220px; top: -60px; right: -40px; animation-delay: 0s; }
#app-loader .orb.o2 { width: 160px; height: 160px; bottom: -30px; left: -30px; animation-delay: 1.5s; opacity: .7; }
#app-loader .orb.o3 { width: 90px; height: 90px; top: 30%; left: 12%; animation-delay: .8s; opacity: .5; }
@keyframes orb-float {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(0, -22px) scale(1.06); }
}

.loader-glass { width: 168px; height: 224px; position: relative; z-index: 1; filter: drop-shadow(0 18px 30px rgba(0,0,0,.35)); }

/* Wein steigt im Glas */
.loader-glass .wine-body {
  transform: translateY(150px);
  animation: wine-fill 2.6s var(--ease-out) infinite;
}
@keyframes wine-fill {
  0%   { transform: translateY(150px); }
  55%  { transform: translateY(30px); }
  70%  { transform: translateY(26px); }
  100% { transform: translateY(30px); }
}

/* Wellen-Oberfläche */
.loader-glass .wave { animation: wave-move 2.4s linear infinite; transform-origin: center; }
@keyframes wave-move {
  0%   { transform: translateX(0) rotate(0deg); }
  50%  { transform: translateX(-6px) rotate(1.5deg); }
  100% { transform: translateX(0) rotate(0deg); }
}

/* Glanzlicht am Glas */
.loader-glass .shine { animation: shine-pulse 2.6s ease-in-out infinite; }
@keyframes shine-pulse { 0%,100% { opacity: .25; } 50% { opacity: .6; } }

/* Aufsteigende Bläschen */
.loader-glass .bubble { opacity: 0; animation: bubble-rise 2.4s ease-in infinite; }
.loader-glass .b1 { animation-delay: 1.1s; }
.loader-glass .b2 { animation-delay: 1.5s; }
.loader-glass .b3 { animation-delay: 1.8s; }
.loader-glass .b4 { animation-delay: 2.1s; }
@keyframes bubble-rise {
  0%   { transform: translateY(0); opacity: 0; }
  20%  { opacity: .9; }
  100% { transform: translateY(-58px); opacity: 0; }
}

.loader-logo {
  position: relative; z-index: 1;
  margin-top: 24px;
  height: 64px; width: auto; max-width: 74%;
  object-fit: contain;
  opacity: 0;
  animation: word-in 0.9s var(--ease-out) 0.5s forwards;
}
.loader-wordmark {
  position: relative; z-index: 1;
  margin-top: 22px;
  font-size: 1.7rem; font-weight: 800; letter-spacing: 0.22em;
  text-indent: 0.22em;
  text-transform: uppercase;
  opacity: 0;
  animation: word-in 0.9s var(--ease-out) 0.5s forwards;
}
.loader-tagline {
  position: relative; z-index: 1;
  font-size: 0.85rem; letter-spacing: 0.12em; opacity: 0;
  color: rgba(255,255,255,.82);
  animation: word-in 0.9s var(--ease-out) 0.8s forwards;
}
@keyframes word-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }

.loader-progress {
  position: relative; z-index: 1;
  margin-top: 26px;
  width: 150px; height: 4px; border-radius: 999px;
  background: rgba(255,255,255,.22);
  overflow: hidden;
}
.loader-progress::after {
  content: ""; position: absolute; inset: 0;
  width: 40%; border-radius: 999px;
  background: rgba(255,255,255,.9);
  animation: progress-slide 1.4s var(--ease) infinite;
}
@keyframes progress-slide {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(320%); }
}

@media (prefers-reduced-motion: reduce) {
  #app-loader .wine-body, #app-loader .wave, #app-loader .bubble, #app-loader .orb,
  #app-loader .loader-progress::after { animation: none; }
  .loader-glass .wine-body { transform: translateY(34px); }
}
