/* TVK Labs runtime safety layer.
   Critical content remains readable before JavaScript, after JavaScript failure,
   with reduced motion, and in forced-colour/high-contrast environments. */

.section {
  opacity: 1 !important;
  transform: none !important;
}

/* Progressive enhancement only: a section is hidden for reveal animation
   after JavaScript has successfully registered it with IntersectionObserver. */
.section.reveal-ready:not(.is-visible) {
  opacity: 0 !important;
  transform: translateY(18px) !important;
  transition: opacity .55s ease, transform .55s ease !important;
}

.section.is-visible {
  opacity: 1 !important;
  transform: none !important;
}

.lab-core-logo,
.lab-core-logo-v2,
.brand-logo,
.footer-brand img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  object-fit: cover;
}

.lab-core-logo,
.lab-core-logo-v2,
.brand-logo {
  width: 100%;
  height: 100%;
}

.hero-lab-visual img {
  max-width: 100%;
}

:where(a, button, select, [role="button"]):focus-visible {
  outline: 2px solid #5ce1ff !important;
  outline-offset: 3px !important;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
  }

  .section,
  .section.reveal-ready,
  .section.reveal-ready:not(.is-visible) {
    opacity: 1 !important;
    transform: none !important;
  }
}

@media (forced-colors: active) {
  :where(a, button, select, [role="button"]) {
    forced-color-adjust: auto;
  }

  .lab-core,
  .lab-core-v2,
  .domain-card,
  .labs-portfolio-card,
  .command-panel,
  .prototype-card,
  .pipeline-track,
  .constellation-wrap {
    border: 1px solid CanvasText !important;
    box-shadow: none !important;
  }
}

@media (max-width: 640px) {
  .lab-core {
    width: min(180px, 54vw);
    height: min(180px, 54vw);
  }
}
