/**
 * 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: #7791c6;
  --glitter-rim-b: #a8bbe0;
  --glitter-rim-c: #4266B0;
  --glitter-rim-d: #355396;
  --glitter-noise: url("../images/noise-grain.svg");
}

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

/* 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: 0;
  opacity: 0;
  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: 0;
  opacity: 0;
  background-color: transparent;
  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(66, 102, 176, 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;
}

.glitter-card:hover::before,
.glitter-card.is-hot::before,
.glitter-card:focus-within::before,
.feature-card.glitter-card:hover::before,
.feature-card.glitter-card.is-hot::before,
.feature-card.glitter-card:focus-within::before {
  opacity: 1;
  background-image: var(--card-gradient-soft);
  background-blend-mode: normal;
  filter: none;
}

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

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