/* SPDX-License-Identifier: GPL-3.0-only
 * Adapted from pokemon-cards-css by Simon Goellner (@simeydotme), copyright 2022.
 * https://github.com/simeydotme/pokemon-cards-css
 * Sources: public/css/cards/regular-holo.css and base.css.
 * Modified for CARD / LAB, 2026-09: isolated selectors, derived white-region alpha mask,
 * adjustable strength/scanline spacing, layer toggles, no fixed artwork clips,
 * no edge glow/popover. This is a study, not the unmodified upstream demo.
 * License and warranty disclaimer: ./LICENSE. This file is its own editable source.
 */
.sw-lab .reference-card {
  --violet: #c929f1;
  --blue: #0dbde9;
  --green: #21e985;
  --yellow: #eedf10;
  --red: #f80e35;
  --bars: 3%;
  --bar-color: hsl(0 0% 70%);
  --bar-bg: #000;
}
.sw-lab .reference-shine {
  /* Dark gray in _w is NOT a coating region. Use the display-only alpha mask.
     Fail closed before it is ready; never fall back to an unmasked reflection. */
  mask-image: var(--reflection-mask, linear-gradient(transparent, transparent));
  mask-mode: alpha;
  mask-size: 100% 100%;
  mask-repeat: no-repeat;
  overflow: hidden;
  display: grid;
  background-image:
    repeating-linear-gradient(110deg,
      var(--violet), var(--blue), var(--green), var(--yellow), var(--red),
      var(--violet), var(--blue), var(--green), var(--yellow), var(--red),
      var(--violet), var(--blue), var(--green), var(--yellow), var(--red)),
    repeating-linear-gradient(90deg,
      #000 0px, #000 calc(var(--scanline-space) * 2),
      #666 calc(var(--scanline-space) * 2), #666 calc(var(--scanline-space) * 4));
  background-position:
    calc(((50% - var(--background-x)) * 2.6) + 50%) calc(((50% - var(--background-y)) * 3.5) + 50%),
    center;
  background-size: 400% 400%, cover;
  background-blend-mode: overlay;
  filter: brightness(1.1) contrast(1.1) saturate(var(--reference-saturation));
  mix-blend-mode: color-dodge;
  opacity: var(--reference-strength);
}
.sw-lab .reference-shine::before,
.sw-lab .reference-shine::after {
  content: "";
  grid-area: 1 / 1;
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
}
.sw-lab .reference-shine::before {
  background-image:
    repeating-linear-gradient(90deg,
      var(--bar-bg) calc(var(--bars) * 2),
      var(--bar-color) calc(var(--bars) * 3),
      var(--bar-bg) calc(var(--bars) * 3.5),
      var(--bar-color) calc(var(--bars) * 4),
      var(--bar-bg) calc(var(--bars) * 5),
      var(--bar-bg) calc(var(--bars) * 14)),
    repeating-linear-gradient(90deg,
      var(--bar-bg) calc(var(--bars) * 2),
      var(--bar-color) calc(var(--bars) * 3),
      var(--bar-bg) calc(var(--bars) * 3.5),
      var(--bar-color) calc(var(--bars) * 4),
      var(--bar-bg) calc(var(--bars) * 5),
      var(--bar-bg) calc(var(--bars) * 10));
  background-position:
    calc((((50% - var(--background-x)) * 1.65) + 50%) + (var(--background-y) * .5)) var(--background-x),
    calc((((50% - var(--background-x)) * -.9) + 50%) - (var(--background-y) * .75)) var(--background-y);
  background-size: 200% 200%, 200% 200%;
  background-blend-mode: screen;
  filter: brightness(1.15) contrast(var(--band-contrast));
  mix-blend-mode: hard-light;
}
.sw-lab .reference-shine::after {
  background-image: radial-gradient(farthest-corner circle at var(--px) var(--py),
    hsl(0 0% 90% / .8) 0%, hsl(0 0% 78% / .1) 25%, #000 90%);
  background-position: center;
  background-size: cover;
  mix-blend-mode: luminosity;
  filter: brightness(.6) contrast(4);
}
/* No separate surface/glare layer: it darkened the card outside the foil.
   The local luminosity field above shapes only the masked color-dodge coating. */
.sw-lab.no-bands .reference-shine::before,
.sw-lab.no-local-light .reference-shine::after { display: none; }
