/* BSC Poker X — Schnaps K/Q/J CG Cards
   GPU-friendly 2.5D/3D layer for gameplay and video compositing.
   Animate transform/opacity only. */

:root{
  --card-w:clamp(90px,10vw,170px);
  --card-x:0px;--card-y:0px;--card-z:0px;
  --card-rx:0deg;--card-ry:0deg;--card-rz:0deg;
  --card-scale:1;
  --card-glow:.55;
}

.schnaps-cg-scene{
  position:relative;
  overflow:hidden;
  perspective:1200px;
  perspective-origin:50% 45%;
  transform-style:preserve-3d;
  isolation:isolate;
  contain:layout paint style;
}

.schnaps-cg-card{
  position:absolute;
  width:var(--card-w);
  aspect-ratio:2/3;
  transform-style:preserve-3d;
  transform-origin:50% 50%;
  backface-visibility:hidden;
  will-change:transform,opacity;
  pointer-events:none;
  transform:
    translate3d(var(--card-x),var(--card-y),var(--card-z))
    rotateX(var(--card-rx))
    rotateY(var(--card-ry))
    rotateZ(var(--card-rz))
    scale(var(--card-scale));
}

.schnaps-cg-card img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  backface-visibility:hidden;
  transform:translateZ(1px);
  user-select:none;
  -webkit-user-drag:none;
}

.schnaps-cg-card::after{
  content:"";
  position:absolute;
  inset:4% 7%;
  border-radius:10%;
  pointer-events:none;
  background:linear-gradient(
    120deg,
    rgba(255,255,255,.28),
    transparent 26%,
    rgba(255,211,92,.14) 72%,
    transparent
  );
  mix-blend-mode:screen;
  opacity:var(--card-glow);
  transform:translateZ(3px);
}

/* Deal */
.schnaps-cg-card.deal-in{
  animation:dealIn .62s cubic-bezier(.2,.75,.22,1) both;
}
@keyframes dealIn{
  from{
    opacity:0;
    transform:
      translate3d(calc(var(--card-x) - 220px),calc(var(--card-y) + 100px),-280px)
      rotateX(24deg) rotateY(-62deg) rotateZ(-18deg)
      scale(.52);
  }
  to{
    opacity:1;
    transform:
      translate3d(var(--card-x),var(--card-y),var(--card-z))
      rotateX(var(--card-rx)) rotateY(var(--card-ry))
      rotateZ(var(--card-rz)) scale(var(--card-scale));
  }
}

/* Winner */
.schnaps-cg-card.winner{
  animation:winnerPulse .9s ease-in-out infinite alternate;
}
@keyframes winnerPulse{
  from{--card-z:24px;--card-scale:1;--card-glow:.55}
  to{--card-z:72px;--card-scale:1.055;--card-glow:.95}
}

/* Idle/profile preview */
.schnaps-cg-card.idle{
  animation:idleFloat 2.8s ease-in-out infinite alternate;
}
@keyframes idleFloat{
  from{translate:0 -2px}
  to{translate:0 3px}
}

/* Hand fan helpers */
.schnaps-cg-card.fan-1{--card-rz:-18deg}
.schnaps-cg-card.fan-2{--card-rz:-9deg}
.schnaps-cg-card.fan-3{--card-rz:0deg}
.schnaps-cg-card.fan-4{--card-rz:9deg}
.schnaps-cg-card.fan-5{--card-rz:18deg}

@media(max-width:768px){
  :root{--card-w:clamp(74px,22vw,128px)}
  .schnaps-cg-scene{perspective:900px}
  .schnaps-cg-card::after{opacity:.35}
}

@media(prefers-reduced-motion:reduce){
  .schnaps-cg-card{animation:none!important;transition:none!important}
}
