/**
 * Glitter Cards — pointer-reactive iridescent card surfaces
 * Inspired by holographic trading-card interactions; adapted for DataKosa.
 *
 * Usage:
 *   <div class="glitter-cards" data-glitter-cards>
 *     <a class="glitter-card feature-card" href="...">
 *       <div class="glitter-card__content">...</div>
 *     </a>
 *   </div>
 *
 * Auto-enhance: glitter-cards.js wraps .card-grid .feature-card on load.
 */

:root {
  --glitter-light-size: 280px;
  --glitter-border-width: 1px;
  --glitter-surface: #ffffff;
  --glitter-surface-muted: #f8fafc;
  --glitter-rim-a: #5cadff;
  --glitter-rim-b: #22d3ee;
  --glitter-rim-c: #7c8cff;
  --glitter-rim-d: #2b8cff;
  --glitter-noise: url("../images/noise-grain.svg");
}

.glitter-cards {
  --glitter-active: 0;
}

.glitter-cards.is-active {
  --glitter-active: 1;
}

/* Base card shell */
.glitter-card {
  --ratio-x: 0.5;
  --ratio-y: 0.5;
  --mouse-x: 50%;
  --mouse-y: 50%;
  --bg-offset-x: calc(2px * var(--ratio-x));
  --bg-offset-y: calc(2px * var(--ratio-y));
  --pointer-x: calc(100% * var(--ratio-x));
  --pointer-y: calc(100% * var(--ratio-y));

  position: relative;
  border-radius: 18px;
  background: var(--glitter-surface);
  overflow: hidden;
  isolation: isolate;
  image-rendering: auto;
}

/* Iridescent rim */
.glitter-card::before,
.glitter-card::after {
  content: "";
  position: absolute;
  border-radius: inherit;
  pointer-events: none;
  transition: opacity 0.45s ease;
  image-rendering: pixelated;
}

.glitter-card::before {
  inset: 0;
  z-index: 1;
  opacity: calc(var(--glitter-active) * 0.85);
  background-image:
    conic-gradient(
      from 0deg at var(--mouse-x) var(--mouse-y),
      var(--glitter-rim-a) 0%,
      var(--glitter-rim-b) 22%,
      var(--glitter-rim-c) 44%,
      var(--glitter-rim-d) 66%,
      var(--glitter-rim-a) 100%
    ),
    radial-gradient(
      calc(var(--glitter-light-size) * 1.35) circle at var(--mouse-x) var(--mouse-y),
      rgba(255, 255, 255, 0.65),
      rgba(10, 22, 40, 0.08) 52%
    );
  background-blend-mode: hue, soft-light;
  filter: saturate(1.15);
}

/* Inner sheen + grain */
.glitter-card::after {
  inset: var(--glitter-border-width);
  z-index: 2;
  opacity: calc(var(--glitter-active) * 0.92);
  background-color: var(--glitter-surface-muted);
  background-image:
    radial-gradient(
      var(--glitter-light-size) circle at var(--pointer-x) var(--pointer-y),
      rgba(255, 255, 255, 0.9),
      rgba(244, 248, 255, 0.55) 42%,
      rgba(232, 242, 255, 0.35) 100%
    ),
    radial-gradient(
      calc(var(--glitter-light-size) * 0.85) circle at var(--pointer-x) var(--pointer-y),
      rgba(43, 140, 255, 0.14),
      transparent 68%
    ),
    var(--glitter-noise),
    var(--glitter-noise);
  background-position: center, center, center, calc(var(--bg-offset-x) * 1) calc(var(--bg-offset-y) * 1);
  background-size: auto, auto, 128px 128px, 128px 128px;
  background-blend-mode: normal, color-dodge, overlay, overlay;
  filter: brightness(1.02) contrast(1.02);
  transition-delay: 0.05s;
}

.glitter-card__content,
.glitter-card > .feature-card__content {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: inherit;
}

/* ===== Integration with .feature-card ===== */
.feature-card.glitter-card {
  background: var(--glitter-surface);
  border-color: rgba(226, 232, 240, 0.95);
}

.feature-card.glitter-card::before,
.feature-card.glitter-card::after {
  transition: opacity 0.45s ease, background 0.55s ease;
}

@media (hover: hover) {
  .glitter-cards.is-active .glitter-card::before {
    opacity: 0.95;
    transition-delay: 0.08s;
  }

  .glitter-cards.is-active .glitter-card::after {
    opacity: 0.98;
    transition-delay: 0s;
  }

  .feature-card.glitter-card:hover::before {
    opacity: 1;
    background-image:
      var(--card-gradient-soft),
      conic-gradient(
        from 0deg at var(--mouse-x) var(--mouse-y),
        rgba(255, 255, 255, 0.35) 0%,
        rgba(255, 255, 255, 0.08) 40%,
        rgba(255, 255, 255, 0.35) 100%
      );
    background-blend-mode: normal, soft-light;
    filter: none;
  }

  .feature-card.glitter-card:hover::after {
    opacity: 1;
    background-color: transparent;
    background-image:
      radial-gradient(circle at 85% 15%, rgba(255, 255, 255, 0.2) 0%, transparent 45%),
      var(--card-gradient-soft);
    background-blend-mode: normal, normal;
    filter: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .glitter-card::before,
  .glitter-card::after {
    transition: none;
  }

  .glitter-cards.is-active .glitter-card::before,
  .glitter-cards.is-active .glitter-card::after {
    opacity: 0;
  }

  .feature-card.glitter-card:hover::before,
  .feature-card.glitter-card:hover::after {
    opacity: 1;
  }
}
