@keyframes pulsing {
	from {
		box-shadow: 0 0 0 black, inset 0 0 0 lightblue, 0 0 0 0 lightblue;
	}

	to {
		box-shadow: 0 0 0 black, inset 0 0 10px lightblue, 0 0 10px 10px lightblue;
	}
}

@-webkit-keyframes pulsing {
	from {
		box-shadow: 0 0 0 black, inset 0 0 0 lightblue, 0 0 0 0 lightblue;
	}

	to {
		box-shadow: 0 0 0 black, inset 0 0 10px lightblue, 0 0 10px 10px lightblue;
	}
}


@-moz-keyframes pulsing {
	from {
		box-shadow: 0 0 0 black, inset 0 0 0 lightblue, 0 0 0 0 lightblue;
	}

	to {
		box-shadow: 0 0 0 black, inset 0 0 10px lightblue, 0 0 10px 10px lightblue;
	}
}


@-ms-keyframes pulsing {
	from {
		box-shadow: 0 0 0 black, inset 0 0 0 lightblue, 0 0 0 0 lightblue;
	}

	to {
		box-shadow: 0 0 0 black, inset 0 0 10px lightblue, 0 0 10px 10px lightblue;
	}
}

html,
body {
	padding: 0;
	margin: 0;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	-o-user-select: none;
	user-select: none;
	-webkit-tap-highlight-color: transparent;
	height: 100%;
	width: 100%;
	overflow: hidden;
	font-family: Arial;
}

td[contentEditable] {
	-webkit-user-select: text;
	-moz-user-select: text;
	-ms-user-select: text;
	-o-user-select: text;
	user-select: text;
}

#control-region {
	display: block;
	position: absolute;
	left: 0;
	right: 0;
	top: 0;
	bottom: 0;
	z-index: 1000;
	text-align: center;
	background-image: -webkit-linear-gradient(top, rgba(10, 10, 10, 0.8), rgba(0, 0, 0, 0.5));
	background-image: -moz-linear-gradient(top, rgba(10, 10, 10, 0.8), rgba(0, 0, 0, 0.5));
	background-image: -ms-linear-gradient(top, rgba(10, 10, 10, 0.8), rgba(0, 0, 0, 0.5));
	background-image: -o-linear-gradient(top, rgba(10, 10, 10, 0.8), rgba(0, 0, 0, 0.5));
	background-image: linear-gradient(top, rgba(10, 10, 10, 0.8), rgba(0, 0, 0, 0.5));
	-webkit-transition-duration: 0.5s;
	-moz-transition-duration: 0.5s;
	-ms-transition-duration: 0.5s;
	-o-transition-duration: 0.5s;
	transition-duration: 0.5s;
	-webkit-transform-origin: top center;
	-moz-transform-origin: top center;
	-ms-transform-origin: top center;
	-o-transform-origin: top center;
	transform-origin: top center;
	-webkit-transform: perspective(1000px);
	-moz-transform: perspective(1000px);
	-ms-transform: perspective(1000px);
	-o-transform: perspective(1000px);
	transform: perspective(1000px);

	-webkit-transform: translateZ(999px);
	-moz-transform: translateZ(999px);
	-ms-transform: translateZ(999px);
	transform: translateZ(999px);

	z-index: 999;
}

#control-region[hidden] {
	-webkit-transform: perspective(1000px) translateY(-200px) rotateX(90deg);
	-moz-transform: perspective(1000px) translateY(-200px) rotateX(-90deg);
	-ms-transform: perspective(1000px) translateY(-200px) rotateX(-90deg);
	-o-transform: perspective(1000px) translateY(-200px) rotateX(-90deg);
	transform: perspective(1000px) translateY(-200px) rotateX(-90deg);
	opacity: 0;
}

#control-region>div {
	color: white;
	font-size: 2em;
	text-align: center;
}

#control-region table {
	margin: 0 auto;
	text-align: left;
	background: rgba(0, 0, 0, 0.7);
	padding: 15px;
	border-radius: 10px;
	box-shadow: inset 0 1px 10px 5px black, 0 1px 1px rgba(255, 255, 255, 0.5);
	text-shadow: -1px -1px 1px black;
}

#control-region td,
#control-region th {
	padding: 5px 10px;
}

.player-set-name {
	word-wrap: normal;
	overflow: hidden;
}

#control-region h3 {
	background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), #000, rgba(0, 0, 0, 0.5));
	background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5), #000, rgba(0, 0, 0, 0.5));
	background-image: -ms-linear-gradient(left, rgba(0, 0, 0, 0.5), #000, rgba(0, 0, 0, 0.5));
	background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), #000, rgba(0, 0, 0, 0.5));
	background-image: linear-gradient(left, rgba(0, 0, 0, 0.5), #000, rgba(0, 0, 0, 0.5));
	box-shadow: 0 0 10px black;
	padding: 5px;
	text-shadow: 0 0 8px white;
}

#control-region>button {
	font-size: 2em;
	margin: 0 auto;
	padding: 5px 15px;
	margin-top: 1em;
	border-radius: 10px;
	border: none;
	background-color: transparent;
	background-image: -webkit-linear-gradient(top, rgba(60, 60, 60, 0.7), rgba(0, 0, 0, 0.7));
	background-image: -moz-linear-gradient(top, rgba(60, 60, 60, 0.7), rgba(0, 0, 0, 0.7));
	background-image: -ms-linear-gradient(top, rgba(60, 60, 60, 0.7), rgba(0, 0, 0, 0.7));
	background-image: -o-linear-gradient(top, rgba(60, 60, 60, 0.7), rgba(0, 0, 0, 0.7));
	background-image: linear-gradient(top, rgba(60, 60, 60, 0.7), rgba(0, 0, 0, 0.7));
	color: white;
	box-shadow: 0 0 0 1px black, inset 0 1px 1px rgba(255, 255, 255, 0.3), 0 1px 3px rgba(255, 255, 255, 0.8);
	cursor: pointer;
	vertical-align: bottom;
}

#control-region>button:hover {
	background-image: -webkit-linear-gradient(top, rgba(90, 90, 90, 0.7), rgba(30, 30, 30, 0.7));
	background-image: -moz-linear-gradient(top, rgba(90, 90, 90, 0.7), rgba(30, 30, 30, 0.7));
	background-image: -ms-linear-gradient(top, rgba(90, 90, 90, 0.7), rgba(30, 30, 30, 0.7));
	background-image: -o-linear-gradient(top, rgba(90, 90, 90, 0.7), rgba(30, 30, 30, 0.7));
	background-image: linear-gradient(top, rgba(90, 90, 90, 0.7), rgba(30, 30, 30, 0.7));
}

#control-region>button:active {
	background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.7), rgba(50, 50, 50, 0.7));
	background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.7), rgba(50, 50, 50, 0.7));
	background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0.7), rgba(50, 50, 50, 0.7));
	background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.7), rgba(50, 50, 50, 0.7));
	background-image: linear-gradient(top, rgba(0, 0, 0, 0.7), rgba(50, 50, 50, 0.7));
	box-shadow: 0 0 0 1px black, inset 0 1px 1px rgba(0, 0, 0, 0.3), 0 1px 3px rgba(255, 255, 255, 0.8);
	padding-top: 6px;
	padding-bottom: 4px;
	text-shadow: -1px -1px 1px black;
}

#main-button-group {
	position: absolute;
	left: 0;
	bottom: 0;
	z-index: 10;
}

#main-button-group>button {
	-webkit-appearance: none;
	font-size: 17px;
	cursor: pointer;
	color: white;
	text-align: center;
	padding: 5px;
	background: #111;
	background-image: -webkit-linear-gradient(top, #222, #000);
	background-image: -moz-linear-gradient(top, #222, #000);
	background-image: -ms-linear-gradient(top, #222, #000);
	background-image: -o-linear-gradient(top, #222, #000);
	background-image: linear-gradient(top, #222, #000);
	box-shadow: 0 0 5px #111;
	margin: 0;
	float: left;
	border: none;
}

#main-button-group>button:last-child {
	border-top-right-radius: 10px;
}

#main-button-group>button:disabled,
#main-button-group>button.disabled {
	opacity: 0.5;
	cursor: not-allowed;
	pointer-events: none;
	color: #888;
	background: #1a1a1a;
	box-shadow: none;
}

#auto-save-toggle.active {
	color: #70db70;
	text-shadow: 0 0 5px rgba(112, 219, 112, 0.6);
}

#auto-play-toggle.active {
	color: #66ccff;
	text-shadow: 0 0 5px rgba(102, 204, 255, 0.7);
}

#main-button-group>button:hover {
	background-image: -webkit-linear-gradient(top, #444, #222);
	background-image: -moz-linear-gradient(top, #444, #222);
	background-image: -ms-linear-gradient(top, #444, #222);
	background-image: -o-linear-gradient(top, #444, #222);
	background-image: linear-gradient(top, #444, #222);
	box-shadow: 0 0 5px #333;
}

#main-button-group>button:active {
	padding-top: 6px;
	padding-bottom: 4px;
	background: #111;
}

#newgame-but {}

#game-region {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	background: lightblue;
	-webkit-perspective: 8000px;
	-moz-perspective: 8000px;
	-ms-perspective: 8000px;
	-o-perspective: 8000px;
	perspective: 8000px;
	background-image: -webkit-radial-gradient(50% 38%, #53c230, #138300);
	background-image: -moz-radial-gradient(50% 38%, #53c230, #138300);
	background-image: -o-radial-gradient(50% 38%, #53c230, #138300);
	background-position: center;
	background-repeat: no-repeat;
	background-attachment: fixed;
	overflow: hidden;
}

#pass-arrow {
	display: none;
	position: absolute;
	font-size: 200px;
	color: white;
	font-family: Arial;
	left: 50%;
	top: 50%;
	margin-top: -100px;
	margin-left: -100px;
	text-shadow: 0 0 10px white;
	opacity: 0;
	font-weight: bold;
	cursor: pointer;
	z-index: 1;
	-webkit-transition-duration: 0.2s;
	-moz-transition-duration: 0.2s;
	-ms-transition-duration: 0.2s;
	-o-transition-duration: 0.2s;
	transition-duration: 0.2s;
}

#pass-arrow.show {
	display: block;
	opacity: 1;
}

#pass-arrow:hover {
	text-shadow: 0 0 15px black;
}

#pass-arrow:active {
	text-shadow: 0 0 1px black;
}

#play-button {
	position: absolute;
	-webkit-appearance: none;
	font-size: 40px;
	line-height: 60px;
	font-family: Arial;
	bottom: 20px;
	right: 20px;
	width: 200px;
	text-shadow: 0 0 -1px black, 0 0 1px white;
	opacity: 0;
	cursor: pointer;
	height: 60px;
	border-radius: 15px;
	color: white;
	text-align: center;
	padding: 0;
	background-image: -webkit-linear-gradient(top, #222, #000);
	background-image: -moz-linear-gradient(top, #222, #000);
	background-image: -ms-linear-gradient(top, #222, #000);
	background-image: -o-linear-gradient(top, #222, #000);
	background-image: linear-gradient(top, #222, #000);
	border: 1px solid #111;
	box-shadow:
		0 2px 8px rgba(0, 0, 0, 0.5),
		inset 0 1px rgba(255, 255, 255, 0.3),
		inset 0 10px rgba(255, 255, 255, 0.2),
		inset 0 10px 20px rgba(255, 255, 255, 0.25),
		inset 0 -15px 30px rgba(0, 0, 0, 0.3);
	-webkit-transition-duration: 0.1s;
	-moz-transition-duration: 0.1s;
	-ms-transition-duration: 0.1s;
	-o-transition-duration: 0.1s;
	transition-duration: 0.1s;

	-webkit-transform: translate3d(0, 90px, 0);
	-moz-transform: translate3d(0, 90px, 0);
	-ms-transform: translate3d(0, 90px, 0);
	-o-transform: translate3d(0, 90px, 0);
	transform: translate3d(0, 90px, 0);
}

#play-button.show {
	opacity: 1;
	-webkit-transform: translate3d(0, 0, 0);
	-moz-transform: translate3d(0, 0, 0);
	-ms-transform: translate3d(0, 0, 0);
	-o-transform: translate3d(0, 0, 0);
	transform: translate3d(0, 0, 0);
}

#play-button:hover {
	background-image: -webkit-linear-gradient(top, #333, #111);
	background-image: -moz-linear-gradient(top, #333, #111);
	background-image: -ms-linear-gradient(top, #333, #111);
	background-image: -o-linear-gradient(top, #333, #111);
	background-image: linear-gradient(top, #333, #111);
}

#play-button:active {
	line-height: 63px;
	background-image: -webkit-linear-gradient(top, #000, #222);
	background-image: -moz-linear-gradient(top, #000, #222);
	background-image: -ms-linear-gradient(top, #000, #222);
	background-image: -o-linear-gradient(top, #000, #222);
	background-image: linear-gradient(top, #000, #222);
	box-shadow:
		inset 0 1px rgba(255, 255, 255, 0.4),
		inset 0 10px rgba(255, 255, 255, 0.01),
		inset 0 10px 20px rgba(255, 255, 255, 0.1),
		inset 0 -15px 30px rgba(0, 0, 0, 0.2);
}

#game-message {
	position: absolute;
	margin-left: -210px;
	margin-top: -60px;
	top: 50%;
	left: 50%;
	width: 380px;
	padding: 20px;
	color: white;
	background: rgba(0, 0, 0, 0.8);
	box-shadow: 0 0 20px 1px black;
	border-radius: 10px;
	font-size: 2em;
	font-family: Arial;
	display: none;
	z-index: 0;
}

#end-message {
	position: absolute;
	font-size: 4em;
	width: 400px;
	height: 80px;
	line-height: 80px;
	text-align: center;
	top: 50%;
	left: 50%;
	margin-left: -200px;
	margin-top: -40px;
	font-family: Impact;
	z-index: 1000;
	color: white;
	text-shadow: 0 1px 1px #bbb,
		0 2px 0 #999,
		0 3px 0 #888,
		0 4px 0 #777,
		0 5px 0 #666,
		0 6px 0 #555,
		0 7px 0 #444,
		0 8px 0 #333,
		0 9px 7px #302314;

	-webkit-transform: scale3d(0, 0, 0);
	-moz-transform: scale3d(0, 0, 0);
	-ms-transform: scale3d(0, 0, 0);
	-o-transform: scale3d(0, 0, 0);
	transform: scale3d(0, 0, 0);
}

#end-message.show {
	-webkit-transform: scale3d(1, 1, 0);
	-moz-transform: scale3d(1, 1, 0);
	-ms-transform: scale3d(1, 1, 0);
	-o-transform: scale3d(1, 1, 0);
	transform: scale3d(1, 1, 0);

	-webkit-transition: -webkit-transform 1s;
	-moz-transition: -moz-transform 1s;
	-ms-transition: -ms-transform 1s;
	-o-transition: -o-transform 1s;
	transition: transform 1s;
}

.info-board {
	position: absolute;
	z-index: 200;
	display: inline-flex;
	flex-direction: row;
	align-items: center;
	white-space: nowrap;
	background: rgba(0, 0, 0, 0.8);
	box-shadow: 0 0 10px black;
	-webkit-transition-duration: 0.3s;
	-moz-transition-duration: 0.3s;
	-ms-transition-duration: 0.3s;
	-o-transition-duration: 0.3s;
	transition-duration: 0.3s;
	border-radius: 5px;
	background-image: -webkit-linear-gradient(top, rgba(30, 30, 30, 0.8), rgba(0, 0, 0, 0.8));
	background-image: -moz-linear-gradient(top, rgba(30, 30, 30, 0.8), rgba(0, 0, 0, 0.8));
	background-image: -ms-linear-gradient(top, rgba(30, 30, 30, 0.8), rgba(0, 0, 0, 0.8));
	background-image: -o-linear-gradient(top, rgba(30, 30, 30, 0.8), rgba(0, 0, 0, 0.8));
	background-image: linear-gradient(top, rgba(30, 30, 30, 0.8), rgba(0, 0, 0, 0.8));
}

.info-board.highlight {
	-webkit-animation: pulsing 1s alternate infinite;
	-moz-animation: pulsing 1s alternate infinite;
	-ms-animation: pulsing 1s alternate infinite;
	animation: pulsing 1s alternate infinite;
}

.info-board:not(.table).board-0 {
	top: 80%;
	left: 10%;
}

.info-board:not(.table).board-1 {
	left: 10%;
	top: 20%;
}

.info-board:not(.table).board-2 {
	top: 12%;
	right: 10%;
	left: auto;
}

.info-board:not(.table).board-3 {
	right: 10%;
	left: auto;
	top: 68%;
}

.info-board.table {
	left: 50% !important;
	margin: 0 !important;
	transform: translate(-50%, -50%) !important;
	-webkit-transform: translate(-50%, -50%) !important;
	z-index: 2000;
	box-shadow: 0 4px 15px rgba(0, 0, 0, 0.6);
}

.info-board:not(.table):hover {
	opacity: 0.1;
}

.info-board.table.human {
	background-image: -webkit-linear-gradient(top, rgba(190, 190, 40, 0.9), rgba(100, 100, 40, 0.9));
	background-image: -moz-linear-gradient(top, rgba(190, 190, 40, 0.9), rgba(100, 100, 40, 0.9));
	background-image: -ms-linear-gradient(top, rgba(190, 190, 40, 0.9), rgba(100, 100, 40, 0.9));
	background-image: -o-linear-gradient(top, rgba(190, 190, 40, 0.9), rgba(100, 100, 40, 0.9));
	background-image: linear-gradient(top, rgba(190, 190, 40, 0.9), rgba(100, 100, 40, 0.9));
	box-shadow: 0 0 15px rgba(255, 215, 0, 0.6), 0 4px 15px rgba(0, 0, 0, 0.6);
}

.player-name,
.player-score,
.final-score {
	padding: 10px;
	float: left;
	padding-bottom: 8px;
	margin: 10px;
	margin-top: 8px;
	display: inline-block;
	width: 90px;
	box-shadow: inset 0 2px 2px black, 0 1px 1px white;
	border-radius: 4px;
	text-align: center;
	font-family: Arial;
	background-image: -webkit-linear-gradient(top, rgba(220, 220, 220, 0.7), rgba(255, 255, 255, 0.7));
	background-image: -moz-linear-gradient(top, rgba(220, 220, 220, 0.7), rgba(255, 255, 255, 0.7));
	background-image: -ms-linear-gradient(top, rgba(220, 220, 220, 0.7), rgba(255, 255, 255, 0.7));
	background-image: -o-linear-gradient(top, rgba(220, 220, 220, 0.7), rgba(255, 255, 255, 0.7));
	background-image: linear-gradient(top, rgba(220, 220, 220, 0.7), rgba(255, 255, 255, 0.7));
}

.final-score {
	width: 0;
	padding-left: 0;
	padding-right: 0;
	overflow: hidden;
	margin-right: 0;
	margin-left: 0;
	-webkit-transition-duration: 0.3s;
	-moz-transition-duration: 0.3s;
	-ms-transition-duration: 0.3s;
	-o-transition-duration: 0.3s;
	transition-duration: 0.3s;
}

.final-score.show {
	width: 90px;
	padding: 10px;
	padding-bottom: 8px;
	margin-right: 10px;
}

.player-score {
	margin-left: 0;
	-webkit-transition: background 5s;
	-moz-transition: background 5s;
	-ms-transition: background 5s;
	-o-transition: background 5s;
	transition: background 5s;
}

.player-score.highlight {
	-webkit-transition-duration: 0s;
	-moz-transition-duration: 0s;
	-ms-transition-duration: 0s;
	-o-transition-duration: 0s;
	transition-duration: 0s;
	background-color: red;
}

.card>.front,
.card>.back {
	border-radius: 8px;
	position: absolute;
	top: 0;
	left: 0;
	width: 85px;
	height: 130px;
	background-color: white;
	-webkit-backface-visibility: hidden;
	-moz-backface-visibility: hidden;
	-ms-backface-visibility: hidden;
	-o-backface-visibility: hidden;
	backface-visibility: hidden;
}

.card {
	width: 85px;
	height: 130px;
	border-radius: 8px;
	position: absolute;
	margin-left: -42px;
	margin-top: -65px;
	top: 50%;
	left: 50%;
	-webkit-transition: -webkit-transform 0.2s, box-shadow 0.2s;
	-moz-transition: -moz-transform 0.2s, box-shadow 0.2s;
	-ms-transition: -ms-transform 0.2s, box-shadow 0.2s;
	-o-transition: -o-transform 0.2s, box-shadow 0.2s;
	transition: transform 0.2s, box-shadow 0.2s;
	z-index: 1000;
	cursor: default;
	border-radius: 8px;
	box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
	-webkit-transform-style: preserve-3d;
	-moz-transform-style: preserve-3d;
	-ms-transform-style: preserve-3d;
	-o-transform-style: preserve-3d;
	transform-style: preserve-3d;
}

.card>.front {
	background-color: white;
	background-repeat: no-repeat;
	background-position: center center;
	background-size: 50px;
}

.card>.back {
	background-image: url('img/flip.png');
	background-repeat: repeat;
	box-sizing: border-box;
	moz-box-sizing: border-box;
	border: 6px solid white;
	-webkit-transform: rotateY(180deg);
	-moz-transform: rotateY(180deg);
	-ms-transform: rotateY(180deg);
	-o-transform: rotateY(180deg);
	transform: rotateY(180deg);
}

.card.heart,
.card.diamond {
	color: #e52521;
}

.card.spade,
.card.club {
	color: #222222;
}

.card.noShadow .front,
.card.noShadow .back {
	box-shadow: none;
	border: 1px solid #777777;
}

.card.movable .front {
	box-shadow: 0 0 25px lightblue;
}

.card.movable:hover .front {
	box-shadow: 0 0 20px 5px lightblue;
}

.card.noShadow .front,
.card.noShadow .back {
	box-shadow: none;
}

.card.heart .front,
.card.heart .icon {
	background-image: url('img/heart.png');
}

.card.club .front,
.card.club .icon {
	background-image: url('img/club.png');
}

.card.spade .front,
.card.spade .icon {
	background-image: url('img/spade.png');
}

.card.diamond .front,
.card.diamond .icon {
	background-image: url('img/diamond.png');
}

.card .icon {
	background-size: contain;
	background-position: center;
	background-repeat: no-repeat;
	width: 14px;
	height: 14px;
	position: absolute;
	left: 5px;
	top: 19px;
	-webkit-backface-visibility: hidden;
	-moz-backface-visibility: hidden;
	-ms-backface-visibility: hidden;
	-o-backface-visibility: hidden;
	backface-visibility: hidden;
}

.card .icon.bottom {
	left: auto;
	top: auto;
	right: 5px;
	bottom: 19px;
	transform: rotate(180deg);
	-webkit-transform: rotate(180deg);
	-moz-transform: rotate(180deg);
	-ms-transform: rotate(180deg);
}

.card .num {
	position: absolute;
	left: 6px;
	top: 3px;
	font-size: 15px;
	font-weight: bold;
	font-family: Arial, "Helvetica Neue", sans-serif;
	line-height: 1;
	-webkit-backface-visibility: hidden;
	-moz-backface-visibility: hidden;
	-ms-backface-visibility: hidden;
	-o-backface-visibility: hidden;
	backface-visibility: hidden;
}

.card .num.bottom {
	left: auto;
	top: auto;
	right: 6px;
	bottom: 3px;
	transform: rotate(180deg);
	-webkit-transform: rotate(180deg);
	-moz-transform: rotate(180deg);
	-ms-transform: rotate(180deg);
}

input[type="number"] {
	background: transparent;
	font-size: inherit;
	padding: 0 0.5em;
	color: white;
}

/* Windows 经典破心 / 碎心动画特效 */
.heart-broken-banner {
	position: absolute;
	top: 45%;
	left: 50%;
	transform: translate(-50%, -50%);
	z-index: 2500;
	pointer-events: none;
	text-align: center;
	display: flex;
	flex-direction: column;
	align-items: center;
	animation: heartBrokenPop 1.2s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

.heart-crack-icon {
	width: 100px;
	height: 90px;
	position: relative;
	margin-bottom: 12px;
	filter: drop-shadow(0 0 15px rgba(255, 30, 30, 0.8)) drop-shadow(0 0 30px rgba(255, 100, 100, 0.6));
}

.heart-half {
	position: absolute;
	top: 0;
	width: 50px;
	height: 80px;
	background: #e52521;
	border-radius: 50px 50px 0 0;
}

.heart-half.left {
	left: 10px;
	transform: rotate(-45deg);
	transform-origin: 100% 100%;
	animation: crackLeft 1.2s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

.heart-half.right {
	right: 10px;
	transform: rotate(45deg);
	transform-origin: 0 100%;
	animation: crackRight 1.2s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

.heart-broken-text {
	color: #fff;
	font-size: 24px;
	font-weight: bold;
	font-family: "Microsoft YaHei", Arial, sans-serif;
	background: rgba(0, 0, 0, 0.8);
	padding: 8px 24px;
	border-radius: 20px;
	border: 2px solid #e52521;
	box-shadow: 0 0 15px rgba(0, 0, 0, 0.6), 0 0 10px rgba(229, 37, 33, 0.6);
	text-shadow: 0 0 8px #ff4444;
	white-space: nowrap;
}

@keyframes heartBrokenPop {
	0% {
		opacity: 0;
		transform: translate(-50%, -50%) scale(0.3);
	}
	25% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.2);
	}
	40% {
		transform: translate(-50%, -50%) scale(1.0);
	}
	80% {
		opacity: 1;
		transform: translate(-50%, -50%) scale(1.05);
	}
	100% {
		opacity: 0;
		transform: translate(-50%, -60%) scale(0.9);
	}
}

@keyframes crackLeft {
	0%, 35% {
		transform: rotate(-45deg) translate(0, 0);
	}
	50% {
		transform: rotate(-58deg) translate(-10px, -4px);
	}
	80%, 100% {
		transform: rotate(-62deg) translate(-14px, -6px);
	}
}

@keyframes crackRight {
	0%, 35% {
		transform: rotate(45deg) translate(0, 0);
	}
	50% {
		transform: rotate(58deg) translate(10px, -4px);
	}
	80%, 100% {
		transform: rotate(62deg) translate(14px, -6px);
	}
}

/* 出猪 (黑桃Q) 动画特效徽标 */
.queen-spade-badge {
	position: absolute;
	top: -24px;
	left: 50%;
	transform: translateX(-50%);
	background: linear-gradient(135deg, #111, #333);
	color: #fff;
	font-size: 14px;
	font-weight: bold;
	font-family: "Microsoft YaHei", Arial, sans-serif;
	padding: 3px 10px;
	border-radius: 12px;
	border: 1.5px solid #ffcc00;
	box-shadow: 0 0 12px rgba(255, 204, 0, 0.8), 0 2px 6px rgba(0, 0, 0, 0.8);
	text-shadow: 0 0 5px #ffcc00;
	white-space: nowrap;
	pointer-events: none;
	z-index: 1500;
	animation: pigBadgePop 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

@keyframes pigBadgePop {
	0% {
		opacity: 0;
		transform: translateX(-50%) translateY(10px) scale(0.5);
	}
	40% {
		opacity: 1;
		transform: translateX(-50%) translateY(-5px) scale(1.15);
	}
	100% {
		opacity: 1;
		transform: translateX(-50%) translateY(0) scale(1.0);
	}
}

/* 击中月亮 (Shoot the Moon) 全屏华丽特效 */
.shoot-moon-overlay {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: radial-gradient(circle at center, rgba(20, 30, 60, 0.92) 0%, rgba(5, 10, 25, 0.98) 100%);
	z-index: 3000;
	display: flex;
	align-items: center;
	justify-content: center;
	pointer-events: none;
	animation: moonOverlayFade 2.5s ease-out forwards;
}

.moon-container {
	display: flex;
	flex-direction: column;
	align-items: center;
	animation: moonRise 2.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.glowing-moon {
	width: 140px;
	height: 140px;
	border-radius: 50%;
	background: radial-gradient(circle at 35% 35%, #fffdf0 0%, #ffe484 50%, #f7b731 100%);
	box-shadow: 
		0 0 30px #ffeaa7,
		0 0 60px rgba(247, 183, 49, 0.8),
		0 0 100px rgba(247, 183, 49, 0.5),
		inset 0 0 20px rgba(255, 255, 255, 0.8);
	margin-bottom: 25px;
	position: relative;
	animation: moonPulse 2.5s ease-in-out infinite alternate;
}

.glowing-moon::after {
	content: '';
	position: absolute;
	top: -15px;
	left: -15px;
	right: -15px;
	bottom: -15px;
	border-radius: 50%;
	border: 2px dashed rgba(255, 234, 167, 0.4);
	animation: moonRingRotate 10s linear infinite;
}

.moon-title {
	font-size: 38px;
	font-weight: 900;
	font-family: "Microsoft YaHei", Arial, sans-serif;
	color: #fff;
	text-shadow: 
		0 0 10px #ffeaa7,
		0 0 20px #f7b731,
		0 2px 5px rgba(0, 0, 0, 0.8);
	margin-bottom: 12px;
	letter-spacing: 2px;
}

.moon-desc {
	font-size: 18px;
	color: #ffeaa7;
	font-family: "Microsoft YaHei", Arial, sans-serif;
	background: rgba(0, 0, 0, 0.6);
	padding: 8px 24px;
	border-radius: 20px;
	border: 1px solid rgba(247, 183, 49, 0.6);
	box-shadow: 0 0 15px rgba(247, 183, 49, 0.3);
}

@keyframes moonOverlayFade {
	0% {
		opacity: 0;
	}
	15% {
		opacity: 1;
	}
	80% {
		opacity: 1;
	}
	100% {
		opacity: 0;
	}
}

@keyframes moonRise {
	0% {
		transform: translateY(60px) scale(0.6);
		opacity: 0;
	}
	20% {
		transform: translateY(0) scale(1.05);
		opacity: 1;
	}
	30% {
		transform: translateY(0) scale(1.0);
	}
	80% {
		transform: scale(1.02);
		opacity: 1;
	}
	100% {
		transform: translateY(-20px) scale(0.95);
		opacity: 0;
	}
}

@keyframes moonPulse {
	0% {
		box-shadow: 0 0 30px #ffeaa7, 0 0 60px rgba(247, 183, 49, 0.8);
	}
	100% {
		box-shadow: 0 0 50px #fffdf0, 0 0 90px rgba(247, 183, 49, 1);
	}
}

@keyframes moonRingRotate {
	0% {
		transform: rotate(0deg);
	}
	100% {
		transform: rotate(360deg);
	}
}

/* 移动端/手机横屏与小屏幕自适应缩小样式 */
@media (max-height: 550px), (max-width: 768px) {
	.card,
	.card>.front,
	.card>.back {
		width: 60px;
		height: 92px;
		border-radius: 6px;
	}
	.card {
		margin-left: -30px;
		margin-top: -46px;
	}
	.card>.back {
		border-width: 4px;
	}
	.card>.front {
		background-size: 34px;
	}
	.card .num {
		font-size: 12px;
		left: 4px;
		top: 2px;
	}
	.card .num.bottom {
		right: 4px;
		bottom: 2px;
	}
	.card .icon {
		width: 10px;
		height: 10px;
		left: 4px;
		top: 14px;
	}
	.card .icon.bottom {
		right: 4px;
		bottom: 14px;
	}
	.player-name,
	.player-score,
	.final-score {
		width: 48px;
		padding: 3px 5px;
		margin: 3px;
		font-size: 11px;
		border-radius: 3px;
	}
	.final-score.show {
		width: 48px;
		padding: 3px 5px;
		margin-right: 3px;
	}
	.info-board:not(.table).board-0 {
		top: 76%;
		left: 6%;
	}
	.info-board:not(.table).board-1 {
		left: 6%;
		top: 16%;
	}
	.info-board:not(.table).board-2 {
		top: 10%;
		right: 6%;
		left: auto;
	}
	.info-board:not(.table).board-3 {
		right: 6%;
		left: auto;
		top: 72%;
	}
	#game-message {
		width: 220px;
		margin-left: -120px;
		margin-top: -35px;
		padding: 8px 12px;
		font-size: 14px;
		border-radius: 6px;
	}
	#pass-arrow {
		font-size: 90px;
		margin-top: -45px;
		margin-left: -45px;
	}
	#play-button {
		width: 95px;
		height: 34px;
		line-height: 34px;
		font-size: 16px;
		bottom: 8px;
		right: 8px;
		border-radius: 8px;
	}
	#main-button-group>button {
		font-size: 11px;
		padding: 3px 6px;
	}
	.heart-broken-banner .heart-crack-icon {
		width: 60px;
		height: 55px;
		margin-bottom: 6px;
	}
	.heart-broken-banner .heart-half {
		width: 30px;
		height: 48px;
		border-radius: 30px 30px 0 0;
	}
	.heart-broken-text {
		font-size: 14px;
		padding: 4px 12px;
	}
	.shoot-moon-overlay .glowing-moon {
		width: 80px;
		height: 80px;
		margin-bottom: 12px;
	}
	.moon-title {
		font-size: 22px;
		margin-bottom: 6px;
	}
	.moon-desc {
		font-size: 12px;
		padding: 4px 12px;
	}
	#control-region>div {
		font-size: 1.2em;
	}
	#control-region table {
		padding: 6px;
		font-size: 12px;
	}
	#control-region td,
	#control-region th {
		padding: 2px 4px;
	}
	#control-region>button {
		font-size: 1.2em;
		padding: 3px 8px;
	}
}