/* SPDX-License-Identifier: GPL-3.0-only
 * Adapted from public/css/cards/radiant-holo.css in pokemon-cards-css,
 * copyright 2022 Simon Goellner (@simeydotme).
 * https://github.com/simeydotme/pokemon-cards-css — see LICENSE / NOTICE.md.
 * CARD / LAB modifications, 2026-09: scoped comparison; actual white-region mask;
 * controllable crossed bands; color-only spectral layer; no external glitter,
 * fixed artwork clips, duplicated etching or full-card glare. Not Shader parity.
 */
.radiant-lab {
  --rad-strength: .55;
  --rad-scale: .65;
  --rad-contrast: 2;
  --rad-color: .7;
  --barwidth: calc(1.2% * var(--rad-scale));
  /* Upstream's ten-step dark/light ramp, shared by both diagonal directions. */
  --cross-levels:
    hsl(0 0% 10%) 0%, hsl(0 0% 10%) var(--barwidth),
    hsl(0 0% 20%) calc(var(--barwidth) + .01%), hsl(0 0% 20%) calc(var(--barwidth) * 2),
    hsl(0 0% 35%) calc(var(--barwidth) * 2 + .01%), hsl(0 0% 35%) calc(var(--barwidth) * 3),
    hsl(0 0% 42.5%) calc(var(--barwidth) * 3 + .01%), hsl(0 0% 42.5%) calc(var(--barwidth) * 4),
    hsl(0 0% 50%) calc(var(--barwidth) * 4 + .01%), hsl(0 0% 50%) calc(var(--barwidth) * 5),
    hsl(0 0% 42.5%) calc(var(--barwidth) * 5 + .01%), hsl(0 0% 42.5%) calc(var(--barwidth) * 6),
    hsl(0 0% 35%) calc(var(--barwidth) * 6 + .01%), hsl(0 0% 35%) calc(var(--barwidth) * 7),
    hsl(0 0% 20%) calc(var(--barwidth) * 7 + .01%), hsl(0 0% 20%) calc(var(--barwidth) * 8),
    hsl(0 0% 10%) calc(var(--barwidth) * 8 + .01%), hsl(0 0% 10%) calc(var(--barwidth) * 9),
    #000 calc(var(--barwidth) * 9 + .01%), #000 calc(var(--barwidth) * 10);
  --cross-a: repeating-linear-gradient(45deg, var(--cross-levels));
  --cross-b: repeating-linear-gradient(-45deg, var(--cross-levels));
}
.radiant-lab .radiant-ref {
  overflow: hidden;
  mask-image: var(--reflection-mask, linear-gradient(transparent, transparent));
  mask-mode: alpha;
  mask-size: 100% 100%;
  mask-repeat: no-repeat;
  background-image:
    radial-gradient(farthest-corner ellipse at calc(var(--px) * .5 + 25%) calc(var(--py) * .5 + 25%), #f2f2f2 20%, #aebdc7 130%),
    var(--cross-a), var(--cross-b);
  background-size: cover, 210% 210%, 210% 210%;
  background-position: center,
    calc((var(--background-x) - 50%) * 1.5 + 50%) calc((var(--background-y) - 50%) * 1.5 + 50%),
    calc((var(--background-x) - 50%) * 1.5 + 50%) calc((var(--background-y) - 50%) * 1.5 + 50%);
  background-blend-mode: exclusion, darken, color-dodge;
  filter: brightness(.5) contrast(var(--rad-contrast));
  mix-blend-mode: color-dodge;
  opacity: var(--rad-strength);
}
.radiant-lab .radiant-ref::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background-image: repeating-linear-gradient(55deg, #f8b8b4 0px, #addefc 100px, #f9d3b3 200px, #b9f5dc 300px, #f8b8ed 400px, #b4eff5 500px, #f8b8b4 600px);
  background-size: 400% 100%;
  background-position: calc((var(--background-x) - 50%) * -2.5 + 50%) calc((var(--background-y) - 50%) * -2.5 + 50%);
  /* Color the reflective facets, not a second full-white glow/etch layer. */
  mix-blend-mode: color;
  opacity: var(--rad-color);
}
.radiant-lab.no-cross-a { --cross-a: linear-gradient(#808080, #808080); }
.radiant-lab.no-cross-b { --cross-b: linear-gradient(#808080, #808080); }
.radiant-lab.no-cross-a.no-cross-b .radiant-ref { display: none; }
.radiant-lab.no-etch .sw-card > .etch { display: none; }
