* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  width: 100%;
  height: 100vh;
  background: #000;
  display: grid;
  place-items: center;  /* 가로/세로 중앙 정렬 */
}

img { width:100% }

.imagemap { width:100%; position:relative; }

.main_image {
	position:relative;
	z-index:2;
	}

.main_image{
	width:100%;
	height:auto;
	display:block;
}

.slot01 {
    position: absolute;
    z-index: 1;
    top: 43.2%;
    left: 40.6%;
    width: 5.6%;
    height: 39%;
	}

.slot02 {
	position: absolute;
    z-index: 1;
    top: 43.2%;
    left: 47.2%;
    width: 5.6%;
    height: 39%;
	}

.slot03 {
	position: absolute;
    z-index: 1;
    top: 43.2%;
    left: 53.8%;
    width: 5.6%;
    height: 39%;
	}

.slot01, .slot02, .slot03{
	transform-style: preserve-3d;
}

/* ===== 3D 원통(드럼) 슬롯 ===== */
.slot01, .slot02, .slot03{
	overflow: hidden;
	perspective: 100%;
	perspective-origin: 50% 50%;
}

/* 원통 */
.cyl{
	position: absolute;
	inset: 0;
	transform-style: preserve-3d;
	will-change: transform;
}

.cyl{
	--radius: 40px;	/* 임시 기본값 (JS가 곧 덮어씀) */
}


/* 숫자면(0~9) */
.face{
	position: absolute;
	inset: 0;
	backface-visibility: hidden;
	transform-style: preserve-3d;
	/* JS가 --i(0~9), --radius(px) 세팅 */
	transform: rotateX(calc(var(--i) * 36deg)) translateZ(var(--radius));
}

.face img{
	width: 100%;
	height: 100%;
	display: block;
	/* 원통이 도는 느낌 강화: 살짝 부드럽게 */
	transform: translateZ(0);
}

.face img{
	object-fit: contain;	/* 숫자 이미지가 비율 유지 */
}


/* 살짝 그림자/명암으로 원통감 강화(원하면 조절) */
.slot01::after, .slot02::after, .slot03::after{
	content:"";
	position:absolute;
	inset:0;
	pointer-events:none;
	background: linear-gradient(to bottom, rgba(0,0,0,.35), rgba(0,0,0,0) 45%, rgba(0,0,0,0) 55%, rgba(0,0,0,.35));
}

/* ===== 당첨 폭죽(컨페티) FX ===== */
#fx{
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 99999;
	overflow: hidden;
}

.firework{
	position: absolute;
	width: 10px;
	height: 10px;
	left: var(--x);
	top: var(--y);
	transform: translate(-50%, -50%);
}

.firework i{
	position: absolute;
	left: 50%;
	top: 50%;
	width: var(--w);
	height: var(--h);
	border-radius: 999px;
	background: hsl(var(--hu), 90%, 60%);
	transform-origin: 0 50%;
	transform:
		rotate(calc(var(--a) * 1deg))
		translateX(var(--r))
		scaleY(var(--sy));
	opacity: 0;
	animation: burst 900ms cubic-bezier(.2,.8,.2,1) forwards;
}

@keyframes burst{
	0%{
		opacity: 0;
		transform:
			rotate(calc(var(--a) * 1deg))
			translateX(0)
			scaleY(.3);
		filter: blur(0);
	}
	15%{
		opacity: 1;
	}
	100%{
		opacity: 0;
		transform:
			rotate(calc(var(--a) * 1deg))
			translateX(var(--r))
			scaleY(1);
		filter: blur(.2px);
	}
}
