:root { 
  --radius: 10px;
  --card-w: min(180px);
  --card-h: min(260px);
  --stack-visible: 128px;
  --stack-start: 256px;
  --stack-step: 52px;
  --shadow: 0 28px 70px rgba(0, 0, 0, 0.34);
  --shadow-soft: 0 18px 40px rgba(0, 0, 0, 0.20);}

.demo-cards-overlay,
.demo-cards-overlay *,
.demo-cards-overlay *::before,
.demo-cards-overlay *::after {box-sizing: border-box;}
.demo-cards-overlay .deck-stage{
  position:relative;
  width:100%;
  height:100%;
  display:flex;
  justify-content:center;
  align-items:center;
  overflow:hidden;}

.demo-cards-close{
    width:36px;
    height:36px;
    flex-shrink:0;
    border:none;
    border-radius:50%;
    background:var(--lightred);
    color:var(--tx1);
    display:flex;
    justify-content:center;
    align-items:center;
    cursor:pointer;
    font-size:1.2rem;
    transition:.2s;
}

.demo-cards-close:hover{
    transform:scale(1.08);

}

.demo-cards-instruction{
    margin:7px;
    color: var(--tx1);
    text-align:center;
    font-size:.7rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.08em;
}

.deck-stage::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 8px;
  width: min(92%, 430px);
  height: 78%;
  transform: translateX(-50%);
  border-radius: 30px;
  background:
    linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.00) 40%),
    radial-gradient(circle at 50% 34%, rgba(255, 255, 255, 0.10), transparent 58%);
  filter: blur(10px);
  pointer-events: none;
}

.card {
  position: absolute;
  left: 50%;
  top: 0;
  width: var(--card-w);
  height: var(--card-h);
  border-radius: var(--radius);
  overflow: hidden;
  transform-origin: center top;
  transform:
    translate3d(calc(-50% + var(--x, 0px)), calc(var(--y, 0px) + var(--dragY, 0px)), 0)
    scale(var(--scale, 1))
    rotate(var(--rot, 0deg));
  transition:
    transform 760ms cubic-bezier(0.18, 0.86, 0.20, 1),
    box-shadow 760ms cubic-bezier(0.18, 0.86, 0.20, 1),
    filter 760ms cubic-bezier(0.18, 0.86, 0.20, 1);
  will-change: transform;
  box-shadow: var(--shadow-soft);
  border: 1px solid rgba(255, 255, 255, 0.32);
  background: linear-gradient(160deg, #2b5dff, #16306a);
}

.card.is-main {
  z-index: 50;
  pointer-events: auto;
  cursor: grab;
  box-shadow: var(--shadow);
  filter: saturate(1.05) brightness(1.03);
}

.card.is-main.is-dragging {
  cursor: grabbing;
  transition: none !important;
}

.card.is-stack {
  pointer-events: none;
  clip-path: inset(0 0 calc(100% - var(--stack-visible)) 0 round var(--radius));
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.18);
  filter: saturate(0.92) brightness(0.98);
}

.card.is-leaving {
  pointer-events: none;
  z-index: 999;
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.38);
}

.card::before {
  content: "";
  position: absolute;
  inset: -30% -40%;
  background: linear-gradient(
    115deg,
    transparent 38%,
    rgba(255, 255, 255, 0.18) 49%,
    rgba(255, 255, 255, 0.03) 51%,
    transparent 62%
  );
  transform: translateX(-140%) skewX(-18deg);
  animation: sheen 6.2s linear infinite;
  pointer-events: none;
}

.card::after {
  content: "";
  position: absolute;
  inset: 12px;
  border-radius: calc(var(--radius) - 12px);
  border: 3px solid rgba(255, 255, 255, 0.64);
  pointer-events: none;
}

.card.is-main {
  animation: glowPulse 3s ease-in-out infinite;
}



.card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  padding: 22px 22px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transform: translateY(0);
}

.card.is-main .card-inner {
  animation: floatCard 5s ease-in-out infinite;
}

.card-head {
  min-height: 96px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 8px;
  text-align: center;
}

.card-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-top:12px;
  padding: 5px;
  border-radius: 800px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.86);
  background: rgba(255, 255, 255, 0.11);
  border: 1px solid rgba(255, 255, 255, 0.16);
}

.card-title {
  margin: 0;
  font-size: 1rem;
  line-height: 1;
  font-weight: 900;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #ffffff;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.22);
}

.card-description{
    margin:0;
    font-size:0.7rem;
    font-weight:500;
    color:rgba(255,255,255,.82);
    line-height:1.35;
    text-align:center;
}

.card-divider {
  height: 1px;
  border: 0;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.46), transparent);
}

.card-body {
  flex: 1;
  display: grid;
  place-items: center;
  min-height: 0;
}

.card-emoji { font-size: 3rem; line-height: 1;filter: drop-shadow(0 8px 18px rgba(0, 0, 0, 0.20)); user-select: none;  transform: translateY(-2px);}

.card[data-theme="gold"] {background: linear-gradient(160deg, #f6d75e 0%, #d3941b 54%, #8b5308 100%);}
.card[data-theme="violet"] {background: linear-gradient(160deg, #d86ef8 0%, #8e49ff 52%, #44207f 100%);}
.card[data-theme="cyan"] {background: linear-gradient(160deg, #6fe6ff 0%, #2699d7 52%, #0d4d7a 100%);}
.card[data-theme="time"] {background: linear-gradient(160deg, #8ee2b1 0%, #2ab37c 54%, #0a6049 100%);}
.card[data-theme="light"] {background: linear-gradient(160deg, #ffd86d 0%, #ff9f3d 50%, #c05b09 100%);}
.card[data-theme="shield"] {background: linear-gradient(160deg, #9fc2ff 0%, #4d78db 52%, #183a84 100%);}

@keyframes floatCard {
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(-6px); }
}

@keyframes glowPulse {
  0%, 100% { box-shadow: 0 28px 70px rgba(0, 0, 0, 0.34), 0 0 0 rgba(255, 255, 255, 0);  }
  50% { box-shadow: 0 30px 78px rgba(0, 0, 0, 0.40), 0 0 42px rgba(255, 255, 255, 0.12);  }
}

@keyframes sheen {
  0% { transform: translateX(-140%) skewX(-18deg); }
  100% { transform: translateX(140%) skewX(-18deg); }}

@media (max-width: 520px) {
  :root { --stack-visible: 120px; --stack-start: 240px;  --stack-step: 42px;}
  .deck-stage {height: min(300px); }
  .card-inner {padding: 12px 12px 12px;}
  .card-head {min-height: 80px;}
}