/* Gitastic landing — custom styles.
   The base reset and scrollbar rules are extracted verbatim from the prototype's
   inline style block. Tailwind utilities keep coming from the Play CDN + inline
   tailwind.config in index.html; everything below is the small custom layer. */

@layer base {
  html,
  body {
    margin: 0;
    padding: 0;
  }
  body {
    overscroll-behavior: none;
  }
  main > :first-child {
    margin-top: 0 !important;
  }
  main > :last-child {
    margin-bottom: 0 !important;
  }
}

::-webkit-scrollbar {
  display: none;
}

/* Smooth in-page navigation (CSS only, no JS) */
html {
  scroll-behavior: smooth;
}

/* Anchor targets come to rest below the fixed header */
[id] {
  scroll-margin-top: 5rem;
}

/* Visible keyboard focus on interactive elements */
a:focus-visible,
button:focus-visible,
img[role="button"]:focus-visible {
  outline: 2px solid #4cd7f6;
  outline-offset: 2px;
}

/* Disabled download CTAs — no releases exist yet */
a[aria-disabled="true"] {
  opacity: 0.6;
  cursor: not-allowed;
}

/* Screenshot lightbox — click any screenshot in the showcase to inspect it full size */
#screenshots img,
#screenshots video {
  cursor: zoom-in;
}

#lightbox img {
  animation: lightbox-in 160ms ease-out;
}

@keyframes lightbox-in {
  from {
    opacity: 0;
    transform: scale(0.97);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}


/* Hero emblem — monochrome logo watermark breathing behind the headline.
   Static opacity lives inline on the element; the animation drives it while active. */
.hero-emblem {
  animation: emblem-breathe 9s ease-in-out infinite;
}

@keyframes emblem-breathe {
  0%,
  100% {
    opacity: 0.055;
  }
  50% {
    opacity: 0.11;
  }
}

/* Respect users who prefer reduced motion */
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  .animate-pulse,
  .animate-ping,
  .animate-spin,
  .hero-emblem,
  #lightbox img {
    animation: none !important;
  }
}
