body {
  font-family: "Geist", "Inter", sans-serif;
  background-color: #0b0f14;
  color: #aeb9c8;
  scroll-behavior: smooth;
}

/* Custom Scrollbar */
::-webkit-scrollbar {
  width: 6px;
}

::-webkit-scrollbar-track {
  background: #0b0f14;
}

::-webkit-scrollbar-thumb {
  background: #29323d;
  border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
  background: #465363;
}

/* Alpha Mask Text Utility */
.text-gradient-mask {
  background: linear-gradient(to bottom,
      #ffffff 30%,
      rgba(255, 255, 255, 0.3) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.reveal-on-scroll {
  opacity: 0;
  transform: translateY(30px);
  filter: blur(10px);
  transition: all 1s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform, opacity, filter;
}

.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

.grid-bg {
  background-image:
    linear-gradient(to right,
      rgba(255, 255, 255, 0.02) 1px,
      transparent 1px),
    linear-gradient(to bottom,
      rgba(255, 255, 255, 0.02) 1px,
      transparent 1px);
  background-size: 40px 40px;
  mask-image: radial-gradient(circle at center,
      black 40%,
      transparent 100%);
  -webkit-mask-image: radial-gradient(circle at center,
      black 40%,
      transparent 100%);
}

.beam-border-h {
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  background: rgba(255, 255, 255, 0.03);
  overflow: hidden;
  z-index: 10;
}

.beam-border-h.top {
  top: 0;
}

.beam-border-h::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: linear-gradient(to right,
      transparent,
      #36c995,
      transparent);
  transform: translateX(-100%);
  animation: beam-slide 8s cubic-bezier(0.45, 0, 0.55, 1) infinite;
  opacity: 0;
  box-shadow: 0 0 15px 1px rgba(46, 196, 182, 0.15);
}

@keyframes beam-slide {
  0% {
    transform: translateX(-100%);
    opacity: 0;
  }

  10% {
    opacity: 0.8;
  }

  85% {
    transform: translateX(100%);
    opacity: 0.8;
  }

  86% {
    opacity: 0;
  }

  100% {
    transform: translateX(100%);
    opacity: 0;
  }
}

.glass-card {
  transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
  background: #0b0f14;
  border: 1px solid rgba(255, 255, 255, 0.1);
}

/* Apply the emerald brand mark consistently to every public header and footer logo. */
img[src$="stock-haven.png"],
img[src$="stock-heaven-icon.png"] {
  filter: hue-rotate(-20deg) saturate(1.25);
}

.glass-card.bg-dark {
  background: #0b0f14 !important;
}

.glass-card:hover {
  transform: translateY(-4px);
  background: #0e1319;
  border-color: rgba(255, 255, 255, 0.15);
  box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.5);
}

/* Shared graphite palette for every public Tailwind page. */
.bg-dark { background-color: #0b0f14 !important; }
.text-white { color: #f5f7fa !important; }
.text-white\/80 { color: #d7dee7 !important; }
.text-white\/70, .text-white\/60 { color: #aeb9c8 !important; }
.text-white\/50, .text-white\/40 { color: #7f8b9b !important; }
.text-white\/30 { color: #657182 !important; }
.border-white\/5, .border-white\/10, .border-white\/20, .border-white\/\[0\.05\], .border-white\/\[0\.08\] {
  border-color: rgba(255, 255, 255, 0.1) !important;
}
.bg-white\/5, .bg-white\/10, .bg-white\/\[0\.03\], .bg-white\/\[0\.06\], .bg-white\/\[0\.08\] {
  background-color: rgba(255, 255, 255, 0.055) !important;
}
.from-dark { --tw-gradient-from: #0b0f14 var(--tw-gradient-from-position) !important; }
.to-\[\#0B0C15\] { --tw-gradient-to: #0b0f14 var(--tw-gradient-to-position) !important; }

/* Legacy near-black footer utilities now follow the graphite canvas. */
.bg-\[\#050505\] { background-color: #0b0f14 !important; }

@media (max-width: 767px) {
  .public-desktop-cta { display: none !important; }
  .public-mobile-toggle { display: inline-flex; align-items: center; justify-content: center; width: 2.75rem; height: 2.75rem; border: 1px solid rgba(255,255,255,.12); border-radius: 999px; color: #f5f7fa; background: transparent; }
  .public-mobile-toggle svg { width: 1.25rem; height: 1.25rem; transition: transform 220ms ease; }
  .public-mobile-toggle.is-active svg { transform: rotate(90deg); }
  .public-mobile-nav { position: fixed; z-index: 100; inset: 0; width: 100vw; min-height: 100svh; height: 100dvh; padding: 1.25rem; display: flex; flex-direction: column; background: #0b0f14; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; opacity: 0; transform: translate3d(100%,0,0); visibility: hidden; pointer-events: none; transition: transform 320ms cubic-bezier(.16,1,.3,1), opacity 220ms ease, visibility 0s linear 320ms; }
  .public-mobile-nav.is-open { opacity: 1; transform: translate3d(0,0,0); visibility: visible; pointer-events: auto; transition: transform 320ms cubic-bezier(.16,1,.3,1), opacity 220ms ease; }
  .public-mobile-nav > * { opacity: 0; transform: translateY(12px); transition: opacity 180ms ease, transform 280ms cubic-bezier(.16,1,.3,1); }
  .public-mobile-nav.is-open > * { opacity: 1; transform: translateY(0); }
  .public-mobile-nav.is-open > *:nth-child(2) { transition-delay: 55ms; }
  .public-mobile-nav.is-open > *:nth-child(3) { transition-delay: 105ms; }
  .public-mobile-nav__top { display:flex; align-items:center; justify-content:space-between; padding-bottom:3rem; }
  .public-mobile-nav__top img { height:2rem; width:auto; }
  .public-mobile-nav__close { display:grid; place-items:center; width:2.75rem; height:2.75rem; border:1px solid rgba(255,255,255,.12); border-radius:999px; color:#f5f7fa; background:transparent; font-size:1.6rem; line-height:1; }
  .public-mobile-nav__links { display:flex; flex-direction:column; }
  .public-mobile-nav__links a { padding:1.05rem 0; color:#d7dee7; font-size:1.55rem; font-weight:600; letter-spacing:-.02em; border-bottom:1px solid rgba(255,255,255,.08); }
  .public-mobile-nav__register { margin-top:auto; display:flex; align-items:center; justify-content:center; gap:.75rem; padding:1rem; border-radius:.5rem; background:#36c995; color:#050505; font-size:1rem; font-weight:700; }
  body.public-nav-open { position:fixed; width:100%; overflow:hidden; }
}
