/* Custom Utility Classes */

/* Gradient utilities */
.gradient-fire {
  background: linear-gradient(135deg, var(--heat-100) 0%, var(--accent-crimson) 100%);
}

.gradient-heat {
  background: linear-gradient(135deg, var(--heat-20) 0%, var(--heat-100) 100%);
}

.gradient-sunset {
  background: linear-gradient(135deg, var(--heat-100) 0%, var(--accent-amethyst) 100%);
}

.gradient-ocean {
  background: linear-gradient(135deg, var(--accent-bluetron) 0%, var(--accent-amethyst) 100%);
}

/* Text gradient */
.text-gradient {
  background-clip: text;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-color: var(--heat-100); /* Fallback */
}

/* Mask utilities */
.mask-fade-bottom {
  mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
  -webkit-mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
}

.mask-fade-edges {
  mask-image: radial-gradient(ellipse at center, black 50%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse at center, black 50%, transparent 100%);
}

.mask-intersect {
  -webkit-mask-composite: source-in; /* For Chrome */
  mask-composite: intersect; /* For Firefox */
}

/* Blur utilities */
.blur-backdrop {
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

/* Border utilities */
.border-gradient {
  position: relative;
  background: var(--white);
  border: 1px solid transparent;
}

.border-gradient::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  padding: 1px;
  background: linear-gradient(135deg, var(--heat-100), var(--accent-crimson));
  mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  mask-composite: xor;
  -webkit-mask-composite: xor;
  pointer-events: none;
}

/* Dotted underline - updated from marketing */
.dotted-underline {
  position: relative;
  display: inline-block;
  line-height: 1.1;
}

.dotted-underline::before {
  content: "";
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 1.7px;
  background-image: url("data:image/svg+xml,%3Csvg width='4' height='2' viewBox='0 0 4 2' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='1.7' height='1.7' rx='0.85' fill='%23D1D1D1' style='fill:%23D1D1D1;fill:color(display-p3 0.8196 0.8196 0.8196);fill-opacity:1;'/%3E%3C/svg%3E%0A");
  background-size: 3.4px 1.7px;
  background-repeat: repeat-x;
}

/* Container utilities */
.container-prose {
  max-width: 65ch;
  margin-inline: auto;
}

.container-narrow {
  max-width: 48rem; /* 768px */
  margin-inline: auto;
}

.container-wide {
  max-width: 80rem; /* 1280px */
  margin-inline: auto;
}

/* Centering helpers */
.center-absolute {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

.center-flex {
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Spacing utilities */
.stack-sm > * + * {
  margin-top: 0.5rem;
}

.stack-md > * + * {
  margin-top: 1rem;
}

.stack-lg > * + * {
  margin-top: 2rem;
}

.stack-xl > * + * {
  margin-top: 3rem;
}

/* Aspect ratio utilities */
.aspect-video {
  aspect-ratio: 16 / 9;
}

.aspect-square {
  aspect-ratio: 1 / 1;
}

.aspect-portrait {
  aspect-ratio: 3 / 4;
}

/* Selection color */
::selection {
  background-color: var(--heat-20);
  color: var(--accent-black);
}

/* Focus visible utilities */
.focus-ring {
  outline: 2px solid transparent;
  outline-offset: 2px;
}

.focus-ring:focus-visible {
  outline-color: var(--heat-100);
}

/* Scrollbar styling */
.scrollbar-thin {
  scrollbar-width: thin;
  scrollbar-color: var(--border-muted) var(--background-lighter);
}

.scrollbar-thin::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.scrollbar-thin::-webkit-scrollbar-track {
  background: var(--background-lighter);
}

.scrollbar-thin::-webkit-scrollbar-thumb {
  background-color: var(--border-muted);
  border-radius: 4px;
}

.scrollbar-thin::-webkit-scrollbar-thumb:hover {
  background-color: var(--border-loud);
}

/* Animation delay utilities */
.animation-delay-150 {
  animation-delay: 150ms;
}

.animation-delay-300 {
  animation-delay: 300ms;
}

.animation-delay-450 {
  animation-delay: 450ms;
}

.animation-delay-600 {
  animation-delay: 600ms;
}

/* Loading animation helpers */
.animate-shimmer {
  background-size: 400% 100%;
  animation: shimmer 2s ease-in-out infinite;
}

@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

/* Heat glow effect */
.heat-glow {
  box-shadow: 0 0 40px rgba(250, 93, 25, 0.3);
  animation: heat-glow 3s ease-in-out infinite;
}

@keyframes heat-glow {
  0%, 100% {
    box-shadow: 0 0 20px rgba(250, 93, 25, 0.2);
  }
  50% {
    box-shadow: 0 0 40px rgba(250, 93, 25, 0.4);
  }
}