/**
 * Cards Component Styles
 * High-quality playing card rendering
 */

/* Container */
.cards-container {
  position: relative;
  display: flex;
  overflow: visible;
}

.cards-container.layout-spread {
  gap: 4px;
  justify-content: center;
  align-items: center;
  flex-shrink: 0;
}

.cards-container.layout-spread .cards-card {
  flex-shrink: 0;
}

.cards-container.layout-fan {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Base Card */
.cards-card {
  background: url('/assets/card-texture.jpg') center center / cover no-repeat;
  border-radius: 5px;
  display: flex;
  flex-direction: column;
  font-weight: 700;
  box-shadow:
    0 2px 4px rgba(0, 0, 0, 0.2),
    0 4px 12px rgba(0, 0, 0, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.8);
  position: relative;
  transition: transform 0.15s ease-out, box-shadow 0.15s ease-out;
  user-select: none;
  -webkit-user-select: none;
  border: 1px solid rgba(136, 136, 136, 0.5);
  overflow: hidden;
}

/* Gloss overlay - behind the ink */
.cards-card.red::before,
.cards-card.black::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: linear-gradient(
    135deg,
    rgba(255, 255, 255, 0.5) 0%,
    rgba(255, 255, 255, 0.5) 30%,
    rgba(255, 255, 255, 0.75) 65%,
    rgba(255, 255, 255, 0.85) 100%
  );
  pointer-events: none;
  z-index: 1;
}

/* Card Colors - 90% opacity ink */
.cards-card.red {
  color: rgba(220, 38, 38, 0.9);
}

.cards-card.black {
  color: rgba(26, 26, 46, 0.9);
}

/* Top Row: Rank + Suit horizontally */
.cards-card .card-corner {
  position: absolute;
  top: 2px;
  left: 4px;
  right: 4px;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  line-height: 1;
  z-index: 5;
}

.cards-card .card-rank {
  font-weight: 800;
  font-size: 1.1em;
  letter-spacing: -0.5px;
}

.cards-card .card-corner-suit {
  font-size: 1.1em;
  line-height: 1;
}

/* Large Center Suit */
.cards-card .card-center-suit {
  position: absolute;
  top: 58%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 3.2em;
  z-index: 5;
}

/* Outline placeholder */
.cards-card.outline {
  background: transparent;
  border: 2px dashed rgba(255, 255, 255, 0.25);
  box-shadow: none;
}

/* Face-down card - medium-dark purple to pop */
.cards-card.facedown {
  background: linear-gradient(145deg, #553e72 0%, #32254a 100%);
  color: transparent;
  border: 1px solid rgba(255, 255, 255, 0.18);
}

.cards-card.facedown .card-back-pattern {
  position: absolute;
  inset: 3px;
  border: 1.5px solid rgba(255, 255, 255, 0.2);
  border-radius: 3px;
  background:
    repeating-linear-gradient(
      45deg,
      transparent,
      transparent 3px,
      rgba(255, 255, 255, 0.05) 3px,
      rgba(255, 255, 255, 0.05) 6px
    );
}

/* Small card back pattern adjustment */
.cards-card.facedown.size-S .card-back-pattern {
  inset: 2px;
  border-width: 1px;
}

/* ============================================================================
   Entry Animations
   ============================================================================ */

@keyframes cards-deal {
  from {
    transform: translateX(-200px) rotate(0deg);
    opacity: 0;
  }
  to {
    transform: translateX(0) rotate(var(--card-rotation, 0deg));
    opacity: 1;
  }
}

@keyframes cards-unpile {
  0% {
    transform: translate(calc(50% - 50%), calc(50% - 50%)) rotate(0deg);
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 1;
  }
}

/* Flip Animation */
@keyframes cards-flip {
  0% {
    transform: rotateY(0deg);
  }
  50% {
    transform: rotateY(90deg);
  }
  100% {
    transform: rotateY(0deg);
  }
}

/* Scoop Animations */
@keyframes cards-scoop-collect {
  from {
    transform: translate(var(--original-x, 0), var(--original-y, 0)) rotate(var(--original-rotation, 0deg));
  }
  to {
    transform: translate(0, 0) rotate(0deg);
    opacity: 1;
  }
}

@keyframes cards-scoop-exit {
  from {
    transform: translate(0, 0) rotate(0deg);
    opacity: 1;
  }
  to {
    transform: translateX(-300px) rotate(-20deg);
    opacity: 0;
  }
}

/* ============================================================================
   Physics Mode - Stripped down for 60fps animations
   ============================================================================ */

.cards-card.physics-mode {
  background: #f5f5f0;
  box-shadow: none;
  transition: none;
  border: 1px solid #999;
}

.cards-card.physics-mode::before {
  display: none;
}

.cards-card.physics-mode.facedown {
  background: #553e72;
}

.cards-card.physics-mode.facedown .card-back-pattern {
  display: none;
}
