.calendar { padding: 50px 50px; border: 1px solid #c9c9c9; border-radius: 20px; position: relative; overflow: hidden; }

.calendar_info { display: flex; justify-content: space-between; padding: 20px 0; }
.calendar_info .marks { display: flex; }
.calendar_info .marks span { padding: 0 15px 0 25px; display: block; background-size: auto 100%; background-position: left center; background-repeat: no-repeat; }
.calendar_info .marks .close { background-image: url(../images/calendar/status-3.png); }
.calendar_info .marks .limited { background-image: url(../images/calendar/status-1.png); }
.calendar_info .marks .open { background-image: url(../images/calendar/status-2.png); }
.calendar_info .marks .soldout { background-image: url(../images/calendar/status-3.png); }


.calendar.loading { pointer-events: none; cursor: progress !important; }
.calendar .nav { padding: 30px 0; position: relative; }
.calendar .nav a { display: block; position: absolute; color: #000000; font-size: 18px; left: 0; top: 0; bottom: 0; height: 20px; margin: auto; padding: 10px; line-height: 20px; box-sizing: content-box; }
.calendar .nav a.prev { padding: 10px 10px 12px 30px;
	background: url(../images/calendar/icn_arw_left.png) no-repeat left center;
	background-size: 12px auto;
}
.calendar .nav a.next { right: 0; left: auto; padding: 10px 30px 12px 10px;
	background: url(../images/calendar/icn_arw_right.png) no-repeat right center;
	background-size: 12px auto;
}

.calendar .nav h3 { text-align: center; font-size: 36px; letter-spacing: 2px; padding: 0 0 10px;
	font-family: "Helvetica Neue";
}
.calendar .box { overflow: hidden; }
.calendar table { margin: 20px 0 0; width: 100%; background: #fff; color: #000; border-spacing: 0 !important; }
.calendar table th { width: calc(100% / 7); }
.calendar table th,
.calendar table td { padding: 15px; border-spacing: 0 !important; }
.calendar table td { border-bottom: 2px solid #c9c9c9; }
.calendar table th p { font-size: 20px; }
.calendar table td p { color: #000; }
.calendar table td p.num { position: absolute; left: 0; right: 0; margin: auto; text-align: center; top: 30px; font-size: 20px; }
.calendar table tr th:first-child p { color: #8c0000; }
.calendar table tr td:first-child p { color: #8c0000; }
.calendar table tr th:last-child p,
.calendar table tr td:last-child p { color: #1c277c; }
.calendar table tr:last-child td { border: none; }
.calendar table td { height: 122px; vertical-align: top; position: relative; }
.calendar table td.clickable { cursor: pointer; }
.calendar table td.disabled { pointer-events: none; }
.calendar table td.disabled span { color: #bbb; }
/* .calendar table td.disabled::before { display: none; } */
.calendar table td.open,
.calendar table td.limited { cursor: pointer; }
.calendar table td::before { display: block; position: absolute; color: #0063e1; font-size: 30px; height: 20px; width: 20px;
	margin: auto;
	bottom: 35px;
	left: 0;
	right: 0;
	background-repeat: no-repeat;
	background-position: center bottom;
	background-size: 100% auto;
}

.calendar table td span { margin: auto; position: absolute; font-size: 16px; height: 16px; line-height: 16px; text-align: center; padding: 50px 0 0; left: 0; top: 0; bottom: 0; right: 0; display: block; color: #000; }

.calendar table td.open::before { content: ''; background-image: url(../images/calendar/status-2.png); }
.calendar table td.limited::before { content: ''; background-image: url(../images/calendar/status-1.png); }
.calendar table td.soldout::before { content: ''; background-image: url(../images/calendar/status-3.png); }

.calendar table td.close::before { content: ''; background-image: url(../images/calendar/status-0.png); }

.calendar table td.active { background: #e0efff; pointer-events: none; background-clip: padding-box; }
/* #tickets .calendar .box p.text { text-align: right; padding: 10px 0 30px; font-size: 14px; } */

/* ------------------------------------------------------------ spinner */

.spinner { background: rgba(0, 0, 0, 0.1); z-index: 1; justify-content: center; align-items: center; position: absolute; left: 0; top: 0; width: 100%; height: 100%; }
.spinner.active { display: flex; }
.lds-spinner {
  display: block;
  position: absolute;
  width: 80px;
  height: 80px;
  margin: auto; 
  right: 0; 
  bottom: 0;
  left: 0;
  top: 0;
}
.lds-spinner div {
  transform-origin: 40px 40px;
  animation: lds-spinner 1.2s linear infinite;
}
.lds-spinner div:after {
  content: " ";
  display: block;
  position: absolute;
  top: 3px;
  left: 37px;
  width: 6px;
  height: 18px;
  border-radius: 20%;
  background: #fff;
}
.lds-spinner div:nth-child(1) {
  transform: rotate(0deg);
  animation-delay: -1.1s;
}
.lds-spinner div:nth-child(2) {
  transform: rotate(30deg);
  animation-delay: -1s;
}
.lds-spinner div:nth-child(3) {
  transform: rotate(60deg);
  animation-delay: -0.9s;
}
.lds-spinner div:nth-child(4) {
  transform: rotate(90deg);
  animation-delay: -0.8s;
}
.lds-spinner div:nth-child(5) {
  transform: rotate(120deg);
  animation-delay: -0.7s;
}
.lds-spinner div:nth-child(6) {
  transform: rotate(150deg);
  animation-delay: -0.6s;
}
.lds-spinner div:nth-child(7) {
  transform: rotate(180deg);
  animation-delay: -0.5s;
}
.lds-spinner div:nth-child(8) {
  transform: rotate(210deg);
  animation-delay: -0.4s;
}
.lds-spinner div:nth-child(9) {
  transform: rotate(240deg);
  animation-delay: -0.3s;
}
.lds-spinner div:nth-child(10) {
  transform: rotate(270deg);
  animation-delay: -0.2s;
}
.lds-spinner div:nth-child(11) {
  transform: rotate(300deg);
  animation-delay: -0.1s;
}
.lds-spinner div:nth-child(12) {
  transform: rotate(330deg);
  animation-delay: 0s;
}
@keyframes lds-spinner {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}


/* ------------------------------------------------------------ mobile */
@media only screen and (max-width:640px) {
	
	.calendar_info { display: block !important; padding: 0 0 15px; }
	.calendar_info .marks { padding: 0 0 10px; }
	.calendar_info .marks span { font-size: 14px; }
	.calendar_info .checkin { font-size: 14px; }
	
	.calendar { padding: 20px 4%; }
	.calendar .nav { padding: 20px 0; }
	.calendar .nav h3 { font-size: 18px; padding: 0; }
	.calendar .nav a { height: 12px; line-height: 12px; margin: auto; top: 0; bottom: 0; font-size: 12px; background-size: 8px auto !important; }
	.calendar .nav a.prev { padding: 0 10px 0 15px; }
	.calendar .nav a.next { padding: 0 15px 0 10px; }
	.calendar table th, 
	.calendar table td { height: 54px;  padding: 8px; border-bottom: 1px solid #c9c9c9; }
	.calendar table td p.num { font-size: 12px; left: 0; top: 12px; width: 100%; }
	.calendar table th p { font-size: 12px; }
	.calendar table td::before { font-size: 15px; width: 15px; height: 15px; bottom: 10px; padding: 0; }
	.calendar table td span { font-size: 10px; padding: 30px 0 0; }	
	
}