/* Static boot shell: visible until Leptos mounts and calls mlRemoveBootShell(). */

body.ml-boot-active {
  overflow-x: hidden;
}

body.ml-boot-active.ml-app-ready #ml-boot-shell {
  display: none;
}

#ml-boot-shell {
  min-height: 100dvh;
  display: grid;
  grid-template-rows: auto 1fr auto;
}

#ml-boot-shell .ml-boot-main {
  outline: none;
}

.ml-boot-section--hidden {
  display: none !important;
}

.ml-boot-grid {
  display: grid;
  gap: var(--ml-space-6);
}

.ml-boot-grid--home {
  grid-template-columns: repeat(2, 1fr);
}

@media (min-width: 768px) {
  .ml-boot-grid--home {
    grid-template-columns: repeat(4, 1fr);
  }
}

.ml-boot-grid--catalog {
  grid-template-columns: repeat(2, 1fr);
}

@media (min-width: 900px) {
  .ml-boot-grid--catalog {
    grid-template-columns: repeat(4, 1fr);
  }
}

.ml-boot-grid--skeleton .ml-product-card--skeleton {
  animation: ml-boot-pulse 1.2s ease-in-out infinite;
}

@keyframes ml-boot-pulse {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.55;
  }
}

.ml-boot-catalog-head {
  margin-bottom: var(--ml-space-6);
}

.ml-boot-catalog-head h1 {
  font-family: var(--ml-font-family-display);
  font-size: var(--ml-font-size-2xl);
  font-weight: var(--ml-font-weight-medium);
  margin: 0 0 var(--ml-space-2);
}

.ml-boot-product-hero {
  max-width: 1280px;
  margin: 0 auto;
  padding: var(--ml-space-6);
  display: grid;
  gap: var(--ml-space-6);
}

@media (min-width: 900px) {
  .ml-boot-product-hero {
    grid-template-columns: 1fr 1fr;
    align-items: start;
  }
}

.ml-boot-product-hero__media {
  aspect-ratio: 1;
  background: var(--ml-color-surface-paper);
  border-radius: var(--ml-radius-md);
  overflow: hidden;
}

.ml-boot-product-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ml-boot-product-hero__media--skeleton {
  animation: ml-boot-pulse 1.2s ease-in-out infinite;
}

.ml-boot-product-hero__title {
  font-family: var(--ml-font-family-display);
  font-size: var(--ml-font-size-2xl);
  margin: 0 0 var(--ml-space-4);
}

.ml-boot-loading-hint {
  text-align: center;
  color: var(--ml-color-text-tertiary);
  font-size: var(--ml-font-size-sm);
  padding: var(--ml-space-4);
}
