/* Custom animations & scroll-reveal effects (marquee, aurora blobs, tech-grid pan, beam-spin, the data-fx="section" reveal-on-scroll system, accordion/radix keyframes). Hand-authored utilities on top of Tailwind. */

@keyframes marquee-x {
  0% {
    transform: translate(0);
  }
  to {
    transform: translate(-50%);
  }
}
@keyframes float-y {
  0%,
  to {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-14px);
  }
}
@keyframes sheen {
  0% {
    background-position: 200% 0;
  }
  to {
    background-position: -200% 0;
  }
}
@keyframes pulse-ring {
  0% {
    opacity: 0.6;
    transform: scale(0.9);
  }
  to {
    opacity: 0;
    transform: scale(1.6);
  }
}
@keyframes beam-spin {
  0% {
    transform: translate(-50%, -50%) rotate(0);
  }
  to {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}
@keyframes beam-spin-edge {
  0% {
    transform: rotate(0);
  }
  to {
    transform: rotate(360deg);
  }
}
@keyframes aurora-a {
  0%,
  to {
    transform: translate(0);
  }
  50% {
    transform: translate(12%, 8%);
  }
}
@keyframes aurora-b {
  0%,
  to {
    transform: translate(0);
  }
  50% {
    transform: translate(-14%, 10%);
  }
}
@keyframes scan-y {
  0% {
    transform: translateY(-20%);
  }
  to {
    transform: translateY(520%);
  }
}
.fx-paused,
.fx-paused * {
  animation-play-state: paused !important;
}
@media (prefers-reduced-motion: reduce) {
  *,
  :before,
  :after {
    scroll-behavior: auto !important;
    transition-duration: 0.001ms !important;
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
  }
}
@keyframes tech-pan {
  0% {
    background-position:
      0 0,
      0 0;
  }
  to {
    background-position:
      64px 64px,
      64px 64px;
  }
}
@keyframes particle-rise {
  0% {
    opacity: 0;
    transform: translateY(12px);
  }
  20% {
    opacity: 0.9;
  }
  to {
    opacity: 0;
    transform: translateY(-70px);
  }
}
[data-fx="section"] > * {
  opacity: 0;
  filter: blur(7px);
  transition:
    opacity 0.85s cubic-bezier(0.16, 1, 0.3, 1),
    transform 1s cubic-bezier(0.16, 1, 0.3, 1),
    filter 0.85s cubic-bezier(0.16, 1, 0.3, 1);
  transform: translateY(34px) scale(0.994);
}
[data-fx="section"].fx-in > * {
  opacity: 1;
  filter: none;
  transform: none;
}
[data-fx="section"].fx-in > :nth-child(2) {
  transition-delay: 80ms;
}
[data-fx="section"].fx-in > :nth-child(3) {
  transition-delay: 0.16s;
}
[data-fx="section"].fx-in > :nth-child(4) {
  transition-delay: 0.24s;
}
[data-parallax] {
  will-change: transform;
}
@media (prefers-reduced-motion: reduce) {
  [data-fx="section"] > * {
    opacity: 1;
    filter: none;
    transition: none;
    transform: none;
  }
  [data-parallax] {
    transform: none !important;
  }
}
@keyframes pulse {
  50% {
    opacity: 0.5;
  }
}
@keyframes enter {
  0% {
    opacity: var(--tw-enter-opacity, 1);
    transform: translate3d(
        var(--tw-enter-translate-x, 0),
        var(--tw-enter-translate-y, 0),
        0
      )
      scale3d(
        var(--tw-enter-scale, 1),
        var(--tw-enter-scale, 1),
        var(--tw-enter-scale, 1)
      )
      rotate(var(--tw-enter-rotate, 0));
    filter: blur(var(--tw-enter-blur, 0));
  }
}
@keyframes exit {
  to {
    opacity: var(--tw-exit-opacity, 1);
    transform: translate3d(
        var(--tw-exit-translate-x, 0),
        var(--tw-exit-translate-y, 0),
        0
      )
      scale3d(
        var(--tw-exit-scale, 1),
        var(--tw-exit-scale, 1),
        var(--tw-exit-scale, 1)
      )
      rotate(var(--tw-exit-rotate, 0));
    filter: blur(var(--tw-exit-blur, 0));
  }
}
@keyframes accordion-down {
  0% {
    height: 0;
  }
  to {
    height: var(
      --radix-accordion-content-height,
      var(
        --bits-accordion-content-height,
        var(
          --reka-accordion-content-height,
          var(
            --kb-accordion-content-height,
            var(--ngp-accordion-content-height, auto)
          )
        )
      )
    );
  }
}
@keyframes accordion-up {
  0% {
    height: var(
      --radix-accordion-content-height,
      var(
        --bits-accordion-content-height,
        var(
          --reka-accordion-content-height,
          var(
            --kb-accordion-content-height,
            var(--ngp-accordion-content-height, auto)
          )
        )
      )
    );
  }
  to {
    height: 0;
  }
}
@keyframes caret-blink {
  0%,
  70%,
  to {
    opacity: 1;
  }
  20%,
  50% {
    opacity: 0;
  }
}


/* Arbitrary-value Tailwind utilities that the JIT build did not emit into the
   original compiled stylesheet (bg-[...], shadow-[...], grid-cols-[...], etc.)
   Reconstructed here so the layouts/decorations that depend on them render
   correctly. */
.\[background-image\:repeating-linear-gradient\(0deg\,color-mix\(in_oklab\,var\(--foreground\)_5\%\,transparent\)_0px\,transparent_1px\,transparent_3px\)\] {
  background-image: repeating-linear-gradient(0deg,color-mix(in oklab,var(--foreground) 5%,transparent) 0px,transparent 1px,transparent 3px);
}

.\[box-shadow\:inset_0_-0\.4em_0_color-mix\(in_oklab\,var\(--primary\)_22\%\,transparent\)\,inset_0_-0\.46em_0_-0\.4em_var\(--primary\)\] {
  box-shadow: inset 0 -0.4em 0 color-mix(in oklab,var(--primary) 22%,transparent),inset 0 -0.46em 0 -0.4em var(--primary);
}

.\[filter\:drop-shadow\(0_28px_45px_color-mix\(in_oklab\,var\(--primary\)_28\%\,transparent\)\)\] {
  filter: drop-shadow(0 28px 45px color-mix(in oklab,var(--primary) 28%,transparent));
}

.\[mask-image\:linear-gradient\(90deg\,transparent\,\#000_8\%\,\#000_92\%\,transparent\)\] {
  mask-image: linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  -webkit-mask-image: linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
}

.bg-\[color-mix\(in_oklab\,var\(--primary-foreground\)_55\%\,transparent\)\] {
  background-color: color-mix(in oklab,var(--primary-foreground) 55%,transparent);
}

.bg-\[linear-gradient\(90deg\,transparent\,color-mix\(in_oklab\,var\(--primary\)_10\%\,transparent\)\,transparent\)\] {
  background-image: linear-gradient(90deg,transparent,color-mix(in oklab,var(--primary) 10%,transparent),transparent);
}

.bg-\[linear-gradient\(90deg\,transparent\,color-mix\(in_oklab\,var\(--primary\)_18\%\,transparent\)\,transparent\)\] {
  background-image: linear-gradient(90deg,transparent,color-mix(in oklab,var(--primary) 18%,transparent),transparent);
}

.bg-\[linear-gradient\(90deg\,transparent\,color-mix\(in_oklab\,var\(--primary\)_35\%\,transparent\)\,transparent\)\] {
  background-image: linear-gradient(90deg,transparent,color-mix(in oklab,var(--primary) 35%,transparent),transparent);
}

.bg-\[linear-gradient\(to_bottom\,transparent\,color-mix\(in_oklab\,var\(--primary\)_7\%\,transparent\)\,transparent\)\] {
  background-image: linear-gradient(to bottom,transparent,color-mix(in oklab,var(--primary) 7%,transparent),transparent);
}

.drop-shadow-\[0_0_18px_color-mix\(in_oklab\,var\(--violet\)_45\%\,transparent\)\] {
  filter: drop-shadow(0 0 18px color-mix(in oklab,var(--violet) 45%,transparent));
}

@media (min-width: 1024px) {
  .lg\:grid-cols-\[minmax\(0\,0\.8fr\)_minmax\(0\,1\.2fr\)\] {
  grid-template-columns: minmax(0,0.8fr) minmax(0,1.2fr);
}
}

@media (min-width: 1024px) {
  .lg\:grid-cols-\[minmax\(0\,1\.05fr\)_minmax\(0\,0\.95fr\)\] {
  grid-template-columns: minmax(0,1.05fr) minmax(0,0.95fr);
}
}

@media (min-width: 1024px) {
  .lg\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(0\,0\.9fr\)\] {
  grid-template-columns: minmax(0,1.1fr) minmax(0,0.9fr);
}
}

@media (min-width: 1024px) {
  .lg\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,0\.6fr\)\] {
  grid-template-columns: minmax(0,1.4fr) minmax(0,0.6fr);
}
}

@media (min-width: 768px) {
  .md\:grid-cols-\[minmax\(0\,1\.6fr\)_minmax\(0\,1fr\)_minmax\(0\,1fr\)_minmax\(0\,1fr\)\] {
  grid-template-columns: minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);
}
}

@media (min-width: 768px) {
  .md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\] {
  grid-template-columns: minmax(0,1fr) minmax(0,1fr);
}
}

.shadow-\[0_10px_30px_-12px_color-mix\(in_oklab\,var\(--primary\)_70\%\,transparent\)\] {
  box-shadow: 0 10px 30px -12px color-mix(in oklab,var(--primary) 70%,transparent);
}

.shadow-\[0_30px_60px_-30px_color-mix\(in_oklab\,var\(--primary\)_55\%\,transparent\)\] {
  box-shadow: 0 30px 60px -30px color-mix(in oklab,var(--primary) 55%,transparent);
}

.transition-\[transform\,border-color\] {
  transition-property: transform,border-color;
}

/* "!"-prefixed (important) utilities the JIT build also failed to emit --
   same root cause as the arbitrary-value utilities above, just a different
   Tailwind syntax. Missing these left the hero signup card's form with its
   normal p-7/sm:p-9 padding and card background/shadow still applied
   instead of being stripped to 0/transparent/none, which visibly narrowed
   its submit button and threw off everything positioned relative to it. */
.\!bg-transparent {
  background-color: transparent !important;
}
.\!p-0 {
  padding: 0px !important;
}
.\!shadow-none {
  box-shadow: 0 0 #0000 !important;
}

/* Arbitrary-selector ("&"-prefixed) utilities -- same missing-JIT-output
   pattern again, this time for Tailwind's [&...]:utility syntax. The
   FAQ chevron one is the visible bug: without it the accordion's chevron
   icon never rotates when a question opens. The rest are table-cell/
   checkbox utilities from the shared table markup (System module stats
   table + the market/book/feed tab panels); included for completeness. */
.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state="open"] > svg {
  rotate: 180deg;
}
.\[\&_tr\]\:border-b tr {
  border-bottom-style: var(--tw-border-style);
  border-bottom-width: 1px;
}
.\[\&_tr\:last-child\]\:border-0 tr:last-child {
  border-style: var(--tw-border-style);
  border-width: 0;
}
.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role="checkbox"]) {
  padding-right: 0px;
}
.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\] > [role="checkbox"] {
  translate: 0 2px;
}
.\[\&\>button\]\:justify-end > button {
  justify-content: flex-end;
}
.\[\&\>\*\]\:rounded-lg > * {
  border-radius: var(--radius);
}
