/* Pantalla de arranque PWA / primer paint (móvil). Carga con index.html antes del bundle. */
.app-splash-screen {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100dvh;
  min-height: 100vh;
  padding: max(1rem, env(safe-area-inset-top)) 1.25rem max(1.5rem, env(safe-area-inset-bottom));
  box-sizing: border-box;
  background: radial-gradient(120% 80% at 50% 0%, #1a1a1a 0%, #0b0b0b 45%, #050505 100%);
  color: #f5f5f5;
  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  transition: opacity 0.45s ease, visibility 0.45s ease;
}

.app-splash-screen.app-splash--exit {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.app-splash-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.75rem;
  width: 100%;
  max-width: 22rem;
  text-align: center;
}

.app-splash-logos {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.5rem 0.75rem;
  animation: app-splash-logo-in 0.85s cubic-bezier(0.22, 1, 0.36, 1) both;
}

.app-splash-logos img {
  height: clamp(2rem, 8vw, 2.35rem);
  width: auto;
  max-height: 2.35rem;
  object-fit: contain;
  filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.45));
}

@keyframes app-splash-logo-in {
  from {
    opacity: 0;
    transform: translateY(-12px) scale(0.96);
    filter: blur(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
    filter: blur(0);
  }
}

/* Loader Uiverse (andrew-manzyk), prefijo app-splash- */
.app-splash-loader {
  --asl-main-size: clamp(2.5rem, 10vw, 3.25rem);
  --asl-text-color: #ffffff;
  --asl-shine-color: #ffffff40;
  --asl-shadow-color: #888888;

  display: flex;
  justify-content: center;
  align-items: center;
  overflow: visible;
  user-select: none;
  position: relative;
  font-size: var(--asl-main-size);
  font-weight: 900;
  text-transform: uppercase;
  color: var(--asl-text-color);
  width: 7.3em;
  height: 1em;
  margin-top: 0.35rem;
  filter: drop-shadow(0 0 0.05em var(--asl-shine-color));
}

.app-splash-loader .asl-text {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  position: absolute;
}

.app-splash-loader .asl-text:nth-child(1) {
  clip-path: polygon(0% 0%, 11.11% 0%, 11.11% 100%, 0% 100%);
  font-size: calc(var(--asl-main-size) / 20);
  margin-left: -2.1em;
  opacity: 0.6;
}

.app-splash-loader .asl-text:nth-child(2) {
  clip-path: polygon(11.11% 0%, 22.22% 0%, 22.22% 100%, 11.11% 100%);
  font-size: calc(var(--asl-main-size) / 16);
  margin-left: -0.98em;
  opacity: 0.7;
}

.app-splash-loader .asl-text:nth-child(3) {
  clip-path: polygon(22.22% 0%, 33.33% 0%, 33.33% 100%, 22.22% 100%);
  font-size: calc(var(--asl-main-size) / 13);
  margin-left: -0.33em;
  opacity: 0.8;
}

.app-splash-loader .asl-text:nth-child(4) {
  clip-path: polygon(33.33% 0%, 44.44% 0%, 44.44% 100%, 33.33% 100%);
  font-size: calc(var(--asl-main-size) / 11);
  margin-left: -0.05em;
  opacity: 0.9;
}

.app-splash-loader .asl-text:nth-child(5) {
  clip-path: polygon(44.44% 0%, 55.55% 0%, 55.55% 100%, 44.44% 100%);
  font-size: calc(var(--asl-main-size) / 10);
  margin-left: 0;
  opacity: 1;
}

.app-splash-loader .asl-text:nth-child(6) {
  clip-path: polygon(55.55% 0%, 66.66% 0%, 66.66% 100%, 55.55% 100%);
  font-size: calc(var(--asl-main-size) / 11);
  margin-left: 0.05em;
  opacity: 0.9;
}

.app-splash-loader .asl-text:nth-child(7) {
  clip-path: polygon(66.66% 0%, 77.77% 0%, 77.77% 100%, 66.66% 100%);
  font-size: calc(var(--asl-main-size) / 13);
  margin-left: 0.33em;
  opacity: 0.8;
}

.app-splash-loader .asl-text:nth-child(8) {
  clip-path: polygon(77.77% 0%, 88.88% 0%, 88.88% 100%, 77.77% 100%);
  font-size: calc(var(--asl-main-size) / 16);
  margin-left: 0.98em;
  opacity: 0.7;
}

.app-splash-loader .asl-text:nth-child(9) {
  clip-path: polygon(88.88% 0%, 100% 0%, 100% 100%, 88.88% 100%);
  font-size: calc(var(--asl-main-size) / 20);
  margin-left: 2.1em;
  opacity: 0.6;
}

.app-splash-loader .asl-text span {
  animation:
    asl-scrolling 2s cubic-bezier(0.1, 0.6, 0.9, 0.4) infinite,
    asl-shadow 2s cubic-bezier(0.1, 0.6, 0.9, 0.4) infinite;
}

.app-splash-loader .asl-text:nth-child(1) span {
  background: linear-gradient(to right, var(--asl-text-color) 4%, var(--asl-shadow-color) 7%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.app-splash-loader .asl-text:nth-child(2) span {
  background: linear-gradient(to right, var(--asl-text-color) 9%, var(--asl-shadow-color) 13%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.app-splash-loader .asl-text:nth-child(3) span {
  background: linear-gradient(to right, var(--asl-text-color) 15%, var(--asl-shadow-color) 18%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.app-splash-loader .asl-text:nth-child(4) span {
  background: linear-gradient(to right, var(--asl-text-color) 20%, var(--asl-shadow-color) 23%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.app-splash-loader .asl-text:nth-child(6) span {
  background: linear-gradient(to right, var(--asl-shadow-color) 29%, var(--asl-text-color) 32%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.app-splash-loader .asl-text:nth-child(7) span {
  background: linear-gradient(to right, var(--asl-shadow-color) 34%, var(--asl-text-color) 37%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.app-splash-loader .asl-text:nth-child(8) span {
  background: linear-gradient(to right, var(--asl-shadow-color) 39%, var(--asl-text-color) 42%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.app-splash-loader .asl-text:nth-child(9) span {
  background: linear-gradient(to right, var(--asl-shadow-color) 45%, var(--asl-text-color) 48%);
  background-size: 200% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.app-splash-loader .asl-line {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  height: 0.05em;
  width: calc(var(--asl-main-size) / 2);
  margin-top: 0.9em;
  border-radius: 0.05em;
}

.app-splash-loader .asl-line::before {
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  background-color: var(--asl-text-color);
  opacity: 0.3;
}

.app-splash-loader .asl-line::after {
  content: '';
  position: absolute;
  height: 100%;
  width: 100%;
  background-color: var(--asl-text-color);
  border-radius: 0.05em;
  transform: translateX(-90%);
  animation: asl-wobble 2s cubic-bezier(0.5, 0.8, 0.5, 0.2) infinite;
}

@keyframes asl-wobble {
  0% {
    transform: translateX(-90%);
  }
  50% {
    transform: translateX(90%);
  }
  100% {
    transform: translateX(-90%);
  }
}

@keyframes asl-scrolling {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

@keyframes asl-shadow {
  0% {
    background-position: -98% 0;
  }
  100% {
    background-position: 102% 0;
  }
}
