:is(.nova-text-style-gradient, .nova-text-style-glow, .nova-text-style-outline, .nova-text-style-shadow, .nova-text-animation-fadein, .nova-text-animation-slideup, .nova-text-animation-blurreveal, .nova-text-animation-gradientflow, .nova-text-animation-shimmer, .nova-text-animation-glowpulse) {
  font-size: inherit !important;
  font-weight: inherit !important;
}

:where(.nova-text-style-gradient, .nova-text-style-glow, .nova-text-style-outline, .nova-text-style-shadow, .nova-text-animation-glowpulse) {
  --nova-text-effect-color-1: var(--theme-color-title, var(--theme-text-primary-1, currentColor));
  --nova-text-effect-color-2: var(--theme-color-link, var(--theme-text-accent, currentColor));
  --nova-text-effect-color-3: var(--theme-color-subtitle, var(--nova-text-effect-color-2));
}

:where(.nova-text-style-glow, .nova-text-animation-glowpulse) {
  --nova-text-glow-color: var(--nova-text-effect-color-2);
  --nova-text-glow-shadow-rest: 0 0 0.1em currentColor, 0 0 0.28em var(--nova-text-glow-color);
  --nova-text-glow-shadow-peak: 0 0 0.16em currentColor, 0 0 0.5em var(--nova-text-glow-color);
  --nova-text-glow-pulse-duration: 2.4s;
}

.nova-text-glow-strength-soft {
  --nova-text-glow-shadow-rest: 0 0 0.05em currentColor, 0 0 0.16em var(--nova-text-glow-color);
  --nova-text-glow-shadow-peak: 0 0 0.09em currentColor, 0 0 0.28em var(--nova-text-glow-color);
}
.nova-text-glow-strength-strong {
  --nova-text-glow-shadow-rest: 0 0 0.14em currentColor, 0 0 0.44em var(--nova-text-glow-color);
  --nova-text-glow-shadow-peak: 0 0 0.22em currentColor, 0 0 0.72em var(--nova-text-glow-color);
}
.nova-text-glow-color-cyan {
  --nova-text-glow-color: #22d3ee;
}
.nova-text-glow-color-blue {
  --nova-text-glow-color: #60a5fa;
}
.nova-text-glow-color-violet {
  --nova-text-glow-color: #a78bfa;
}
.nova-text-glow-color-pink {
  --nova-text-glow-color: #f472b6;
}
.nova-text-glow-color-gold {
  --nova-text-glow-color: #facc15;
}
.nova-text-glow-color-green {
  --nova-text-glow-color: #4ade80;
}
.nova-text-glow-pulse-speed-slow {
  --nova-text-glow-pulse-duration: 3.4s;
}
.nova-text-glow-pulse-speed-fast {
  --nova-text-glow-pulse-duration: 1.4s;
}

.nova-text-style-glow {
  text-shadow: var(--nova-text-glow-shadow-rest);
}
.nova-text-style-shadow {
  --nova-text-shadow-filter: drop-shadow(0 0.14em 0.1em rgb(0 0 0 / 28%));
  filter: var(--nova-text-shadow-filter);
}

@supports (-webkit-text-stroke: 1px currentColor) {
  .nova-text-style-outline {
    -webkit-text-fill-color: transparent !important;
    -webkit-text-stroke: clamp(1px, 0.04em, 2px) currentColor;
    paint-order: stroke fill;
  }
}
@supports (background-clip: text) or (-webkit-background-clip: text) {
  :where(.nova-text-style-gradient, .nova-text-animation-gradientflow, .nova-text-animation-shimmer) {
    background-color: transparent !important;
    background-repeat: repeat-x;
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent !important;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
  }
  .nova-text-style-gradient {
    --nova-text-gradient-color-1: currentColor;
    --nova-text-gradient-color-2: currentColor;
    --nova-text-gradient-color-3: currentColor;
    background-image: linear-gradient(90deg, var(--nova-text-gradient-color-1) 0%, var(--nova-text-gradient-color-2) 52%, var(--nova-text-gradient-color-3) 100%);
    background-size: 100% 100%;
  }
  @supports (color: color-mix(in srgb, black, white)) {
    .nova-text-style-gradient {
      --nova-text-gradient-color-2: color-mix(in srgb, currentColor 60%, white);
      --nova-text-gradient-color-3: color-mix(in srgb, currentColor 20%, white);
    }
  }
  .nova-text-animation-gradientflow {
    --nova-text-gradient-flow-color-1: currentColor;
    --nova-text-gradient-flow-color-2: currentColor;
    --nova-text-gradient-flow-color-3: currentColor;
    background-image: linear-gradient(90deg, var(--nova-text-gradient-flow-color-1) 0%, var(--nova-text-gradient-flow-color-2) 25%, var(--nova-text-gradient-flow-color-3) 50%, var(--nova-text-gradient-flow-color-2) 75%, var(--nova-text-gradient-flow-color-1) 100%);
    background-size: 240% 100%;
    animation: nova-text-gradient-flow 4.5s linear both;
  }
  @supports (color: color-mix(in srgb, black, white)) {
    .nova-text-animation-gradientflow {
      --nova-text-gradient-flow-color-2: color-mix(in srgb, currentColor 60%, white);
      --nova-text-gradient-flow-color-3: color-mix(in srgb, currentColor 20%, white);
    }
  }
  .nova-text-animation-shimmer {
    --nova-text-shimmer-color-1: currentColor;
    --nova-text-shimmer-color-2: currentColor;
    --nova-text-shimmer-color-3: currentColor;
    background-image: linear-gradient(110deg, var(--nova-text-shimmer-color-1) 0%, var(--nova-text-shimmer-color-1) 28%, var(--nova-text-shimmer-color-2) 40%, var(--nova-text-shimmer-color-3) 50%, var(--nova-text-shimmer-color-2) 60%, var(--nova-text-shimmer-color-1) 72%, var(--nova-text-shimmer-color-1) 100%);
    background-size: 250% 100%;
    animation: nova-text-shimmer 3.2s ease-in-out both;
  }
  @supports (color: color-mix(in srgb, black, white)) {
    .nova-text-animation-shimmer {
      --nova-text-shimmer-color-2: color-mix(in srgb, currentColor 60%, white);
      --nova-text-shimmer-color-3: color-mix(in srgb, currentColor 20%, white);
    }
  }
  .nova-text-style-gradient:is(.nova-text-animation-gradientflow, .nova-text-animation-shimmer) {
    --nova-text-gradient-flow-color-1: var(--nova-text-gradient-color-1);
    --nova-text-gradient-flow-color-2: var(--nova-text-gradient-color-2);
    --nova-text-gradient-flow-color-3: var(--nova-text-gradient-color-3);
    --nova-text-shimmer-color-1: var(--nova-text-gradient-color-1);
    --nova-text-shimmer-color-2: var(--nova-text-gradient-color-2);
    --nova-text-shimmer-color-3: var(--nova-text-gradient-color-3);
  }
}
.nova-text-animation-fadein {
  animation: nova-text-fade-in 600ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
.nova-text-animation-slideup {
  position: relative;
  animation: nova-text-slide-up 700ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
.nova-text-animation-blurreveal {
  animation: nova-text-blur-reveal 800ms ease-out both;
}
.nova-text-animation-glowpulse {
  text-shadow: var(--nova-text-glow-shadow-rest);
  animation: nova-text-glow-pulse var(--nova-text-glow-pulse-duration) ease-in-out 2 both;
}

:where(.nova-text-animation-gradientflow, .nova-text-animation-shimmer, .nova-text-animation-glowpulse).nova-text-repeat-always {
  animation-iteration-count: infinite;
}

.nova-text-animation-shimmer.nova-text-repeat-always {
  animation-name: nova-text-shimmer-loop;
  animation-timing-function: linear;
}

.nova-text-animation-gradientflow.nova-text-repeat-always {
  animation-name: nova-text-gradient-flow-loop;
  animation-duration: 3.857143s;
}

@keyframes nova-text-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes nova-text-slide-up {
  from {
    opacity: 0;
    inset-block-start: 0.35em;
  }
  to {
    opacity: 1;
    inset-block-start: 0;
  }
}
@keyframes nova-text-blur-reveal {
  from {
    opacity: 0;
    filter: var(--nova-text-shadow-filter, ) blur(0.35em);
  }
  to {
    opacity: 1;
    filter: var(--nova-text-shadow-filter, ) blur(0);
  }
}
@keyframes nova-text-gradient-flow {
  from {
    background-position: 0% 50%;
  }
  to {
    background-position: 200% 50%;
  }
}
@keyframes nova-text-gradient-flow-loop {
  from {
    background-position: 0% 50%;
  }
  to {
    background-position: 171.428571% 50%;
  }
}
@keyframes nova-text-shimmer {
  from {
    background-position: 180% 50%;
  }
  to {
    background-position: -80% 50%;
  }
}
@keyframes nova-text-shimmer-loop {
  from {
    background-position: 120% 50%;
  }
  to {
    background-position: -46.666667% 50%;
  }
}
@keyframes nova-text-glow-pulse {
  0%, 100% {
    text-shadow: var(--nova-text-glow-shadow-rest);
  }
  50% {
    text-shadow: var(--nova-text-glow-shadow-peak);
  }
}
@media (prefers-reduced-motion: reduce) {
  :where(.nova-text-animation-fadein, .nova-text-animation-slideup, .nova-text-animation-blurreveal, .nova-text-animation-gradientflow, .nova-text-animation-shimmer, .nova-text-animation-glowpulse) {
    animation: none !important;
  }
  :where(.nova-text-animation-fadein, .nova-text-animation-slideup, .nova-text-animation-blurreveal) {
    opacity: 1 !important;
    filter: var(--nova-text-shadow-filter, none) !important;
    inset-block-start: 0 !important;
  }
  :where(.nova-text-animation-gradientflow, .nova-text-animation-shimmer) {
    background-position: 50% 50% !important;
  }
}
@media (forced-colors: active), print {
  :where(.nova-text-style-gradient, .nova-text-style-glow, .nova-text-style-outline, .nova-text-style-shadow, .nova-text-animation-glowpulse, .nova-text-animation-fadein, .nova-text-animation-slideup, .nova-text-animation-blurreveal, .nova-text-animation-gradientflow, .nova-text-animation-shimmer, .nova-text-animation-glowpulse) {
    opacity: 1 !important;
    filter: none !important;
    inset-block-start: 0 !important;
    background-color: transparent !important;
    background-image: none !important;
    background-clip: border-box !important;
    -webkit-background-clip: border-box !important;
    -webkit-text-fill-color: currentColor !important;
    -webkit-text-stroke: 0 !important;
    text-shadow: none !important;
    animation: none !important;
    forced-color-adjust: auto;
  }
}