@charset "utf-8";

/* ========================== GLOBAL ========================== */
*{
	margin: 0;
	padding: 0;
}
html{
	height: 100%;
}
body{
	height: 100%;
	background: #333;
	color: #000;
	font-family: "Yu Gothic", YuGothic, "ヒラギノ角ゴ ProN W3", Hiragino Kaku Gothic ProN, Arial, "メイリオ", Meiryo, sans-serif;
}

a{
	outline: none;
	text-decoration: none;
	cursor: pointer;
}
img{
	max-width: 100%;
	border: none;
}

#wrap{
	width: 500px;
	min-height: 100%;
	margin: 0 auto;
	background: #dfdbca url(img/BG.png) repeat center top / 40px 40px;
	overflow: hidden;
}
#wrapInner{
	display: -webkit-flex;
	display: flex;
	-webkit-justify-content: space-between;
	justify-content: space-between;
	-webkit-align-items: flex-start;
	align-items: flex-start;
	-webkit-flex-direction: column;
	flex-direction: column;
	
	height: 100%;
	margin: 0 auto;
}


/* -------------------------- COMMON CLASSES -------------------------- */
.serif{
	font-family:"游明朝体", "Yu Mincho", YuMincho, "ヒラギノ明朝 ProN W3", "Hiragino Kaku Gothic ProN", "Hiragino Kaku Gothic Pro", "HG明朝E", "メイリオ", Meiryo, serif;
	font-weight: 500;
}

.btnClose{
	display: block;
	position: absolute;
	top: 0;
	right: 0;
	width: 2.2em;
	height: 2.2em;
	margin: -1em -1em 0 0;
	background: #fff;
	border-radius: 100%;
	box-shadow: 0px 1px 2px 0px rgba(0,0,0,0.5);
	font-size: 24px;
	cursor: pointer;
	z-index: 5;
	transition: 0.2s;
}
.btnClose::before, .btnClose::after{
	content: "";
	display: block;
	position: absolute;
	top: 0.94em;
	left: 0.4em;
	width: 1.4em;
	height: 0.32em;
	background: #333;
	border-radius: 0.16em;
}
.btnClose::before{
	transform: rotate(45deg);
}
.btnClose::after{
	transform: rotate(-45deg);
}
.btnClose:hover{
	transform: scale(1.2);
}


/* ========================== HEADER ========================== */
#pageTitle{
	position: relative;
	width: 100%;
	background: url(img/headerBG.jpg) repeat center center / 100% auto;
	z-index: 101;
}

#pageTitle h1{
	max-width: 500px;
	margin: 0 auto;
}
#pageTitle h1 img{
	display: block;
}




/* ========================== WRAP GAME ========================== */
#wrapGame{
	position: relative;
	min-height: 60vh;
	margin: 0 auto;
}
#wrapGameInner{
	width: 500px;
}




/* ========================== INTRO ========================== */
#intro{
	position: relative;
	top: 0;
	left: 0;
	width: 500px;
	z-index: 30;
}
#intro .inner{
	position: relative;
	width: 460px;
	margin: 20px auto;
	background: #fff;
	box-shadow: 0px 1px 2px 0px rgba(0,0,0,0.3);
	z-index: 1;
}
#intro #theIntro{
	display: block;
	width: 440px;
	padding: 20px 10px;
}

#start{
	display: block;
	position: relative;
	top: -2px;
	width: 200px;
	height: 50px;
	margin: 30px auto;
	background: #f62c6a url(img/start.png) no-repeat center center / 100% auto;
	border-radius: 50px;
	box-shadow: 0px 2px 2px 0px rgba(0,0,0,0.5);
	transition: 0.2s;
}
#start:hover{
	top: 0px;
	box-shadow: 0px 1px 1px 0px rgba(0,0,0,0.2);
}

#intro .btnClose{
	display: none;
}

/* OPEN */
.open #intro{
	position: absolute;
}
.open #intro::before{
	content: "";
	display: block;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100vh;
	background: rgba(0,0,0,0.8);
	z-index: 0;
}
.open #start{
	display: none;
}
.open #intro .btnClose{
	display: block;
	top: 30px;
	right: 30px;
}









/* ========================== BOARD ========================== */
#board{
	display: none;
}
.open #board{
	display: block;
}


/* ========================== NAV ========================== */
#theNav{
	display: flex;
	-webkit-justify-content: space-between;
	justify-content: space-between;
	width: 460px;
	margin: 20px auto;
}
#theNav a{
	display: block;
	height: 40px;
	line-height: 40px;
	background: #819f9b no-repeat center center / 100% auto;
	border-radius: 5px;
	color: #fff;
	text-indent: -10em;
	overflow: hidden;
	cursor: pointer;
	opacity: 0.85;
}
#theNav a:hover, #theNav a#navUsedCards.active:hover{
	opacity: 1;
}
#theNav a#navIntro{
	width: 200px;
	background-image: url(img/notes.png);
}
#theNav a#navUsedCards{
	width: 240px;
	background-image: url(img/usedcards.png);
	cursor: default;
	opacity: 0.3;
}
#theNav a#navUsedCards.active{
	cursor: pointer;
	opacity: 0.85;
}


/* ========================== BOARD ========================== */
#theBoard{
	position: relative;
	width: 460px;
	height: 495px;
	margin: 0 auto;
}
#boardAB{
	position: relative;
	width: 460px;
	height: 495px;
	-webkit-perspective : 1000px;
	perspective : 1000px;
}
#boardAB .board{
	position: absolute;
	top : 0;
	left : 0;
	width : 100%;
	height : 100%;
	box-shadow: 0px 1px 1px 0px rgba(0,0,0,0.3);
	transition : 1s;
	-webkit-backface-visibility : hidden;
	backface-visibility : hidden;
}
#boardA{
	background: url(img/boardA.png) no-repeat center center / 100% 100%;
}
#boardB{
	background: url(img/boardB.png) no-repeat center center / 100% 100%;
	transform : rotateY(-180deg);
}
.flipped #boardA {
	transform : rotateY(-180deg)
}
.flipped #boardB {
	transform : rotateY(-360deg);
}


/* ========================== PLAYER ========================== */
#thePlayer{
	position: absolute;
	top: 360px;
	left: 310px;
	width: 57px;
	height: 90px;
	margin: 0;
	opacity: 1;
	transition: 0.5s;
}
#thePlayer.pause{
	transition: 0s;
}
#thePlayer.hide{
	margin-top: -7px;
	opacity: 0;
	transition: 0.2s;
}

#thePlayer span{
	display: block;
	position: relative;
	width: 57px;
	height: 90px;
	background: url(img/player.png) no-repeat center center / 100% auto;
	transition: 0.25s;
}
#thePlayer span.up{
	top: -5px;
	transition-timing-function: ease-out;
}
#thePlayer span.down{
	top: 0px;
	transition-timing-function: ease-in;
}




/* ========================== NAVIGATIONS ========================== */
#board .bNav{
	display: block;
	position: absolute;
	top: 80px;
	width: 150px;
	height: 50px;
	box-shadow: 0px 1px 2px 0px rgba(0,0,0,0.5);
	transition: 0.3s;
}
#bNavA{
	right: -170px;
	background: #fff url(img/bNext.png) no-repeat center center / auto 100%;
	border-radius: 25px 0 0 25px;
}
#bNavB{
	left: -170px;
	background: #fff url(img/bBack.png) no-repeat center center / auto 100%;
	border-radius: 0 25px 25px 0;
}
.LvB .nowA #bNavA{ right: -125px; }
.LvB .nowB #bNavB{ left: -125px; }
.LvB .nowA #bNavA:hover{ right: -50px; }
.LvB .nowB #bNavB:hover{ left: -50px; }
.nowB #bNavA{ right: -170px !important; }
.nowA #bNavB{ left: -170px !important; }


/* ========================== CARDS ========================== */
#theCards{
	margin: 0 auto 20px 20px;
	padding: 20px 0 0 0;
	height: 200px;
	overflow: hidden;
}
#theCards ul{
}
#theCards ul li.new{
	left: 500px;
}
#theCards ul li{
	display: inline-block;
	position: relative;
	top: 0px;
	left: 0px;
	width: 140px;
	height: 200px;
	margin: 0 20px 0 0;
	border-radius: 5px;
	opacity: 1;
	overflow: hidden;
	cursor:pointer;
	transition: top 0.2s, left 0.7s, opacity 0.2s, width 0.2s ease 0.2s, margin 0.2s ease 0.2s;
}
#theCards ul li.done{
	width: 0px;
	margin: 0;
	opacity: 0;
}
#theCards ul li.active:hover{
	top: -10px;
}
#theCards ul li.active.onStage{
	top: -13px;
	opacity: 0;
	transition: all 0.3s ease 0.1s;
}

#theCards ul li img{
	display: block;
}
#theCards ul li img.r180{
	transform: rotate(180deg);
}


/* ========================== OVER LAYER ========================== */
#overLayer{
	display: none;
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100vh;
	z-index: 20;
}
#olContent{
	position: relative;
	z-index: 1;
}

/* ========================== OL CARD ========================== */
#olCard{
	position: absolute;
	top: 50px;
	left: 110px;
}
#olCard img.card{
	display: block;
	width: 280px;
	margin: 0 auto;
	border-radius: 10px;
	transition: 1.2s;
}
#olCard img.card.r180{
	transform: rotate(180deg);
}
#olCard span.question{
	display: block;
	position: absolute;
	top: 420px;
	left: -90px;
	width: 460px;
	text-align: center;
	color: #fff;
	font-size: 24px;
	font-weight: 700;
}
#olCard span.answer{
	display: block;
	position: absolute;
	top: 520px;
	left: -90px;
	width: 460px;
	text-align: center;
}
#olCard.used span.answer{
	display: none;
}
#olCard span.answer #A{
	display: block;
	width: 312px;
	height: 47px;
	line-height: 47px;
	background: #ddd;
	border: solid 4px #fff;
	border-radius: 5px;
	text-indent: 0.3em;
	color: #000;
	font-size: 36px;
	font-weight: 500;
}
#olCard span.answer #A::placeholder{
	color: #bbb;
	font-weight: 500;
	transition: 0.3s;
}
#olCard span.answer #A:focus::placeholder{
	color: #ddd;
}
#olCard span.answer a#submit{
	position: absolute;
	top: -2px;
	right: 0;
	width: 125px;
	height: 55px;
	background: #f62c6a url(img/submit.png) no-repeat center center / 100% auto;
	border-radius: 5px;
	box-shadow: 0px 3px 0px 0px #C2184C;
	color: #fff;
	font-size: 24px;
	font-weight: 700;
	transition: 0.3s;
}
#olCard span.answer a#submit:hover{
	top: 0px;
	background-color: #C2184C;
	background-color: #FF4D83;
	box-shadow: 0px 1px 0px 0px #C2184C;
}

#olCard span.answer .result{
	display: none;
	position: absolute;
	top: -22px;
	left: 180px;
	width: 100px;
	height: 100px;
	text-align: center;
	line-height: 100px;
	font-size: 100px;
	font-weight: 900;
	color: #d00;
}
#olCard span.answer .result span{
	display: none;
}

/* 0 */
#olCard span.answer .result span.O{
	display: block;
	position: relative;
	width: 100px;
	height: 100px;
}
#olCard span.answer .result span.O::before{
	content: "";
	display: none;
	position: absolute;
	bottom: 0;
	left: 50%;
	width: 15px;
	height: 15px;
	margin-left: -7.5px;
	background: #ff0000;
	border-radius: 15px;
}
#olCard span.answer .result span.O.draw::before{
	display: block;
}
#olCard span.answer .result span.O > span{
	display: block;
	position: absolute;
	top: 0;
	width: 50px;
	height: 100px;
	overflow: hidden;
}
#olCard span.answer .result span.O span.O1{
	left: 0;
}
#olCard span.answer .result span.O span.O2{
	right: 0;
	transform: rotate(180deg);
}
#olCard span.answer .result span.O span.C{
	display: block;
	position: absolute;
	top: 0;
	left: 0;
	width: 100px;
	height: 100px;
	transform: rotate(-180deg);
}
#olCard span.answer .result span.O span.O1 span.C{ transition-timing-function: ease-in; }
#olCard span.answer .result span.O span.O2 span.C{ transition-timing-function: ease-out; }
#olCard span.answer .result span.O span.C.draw{
	transform: rotate(0deg);
	transition: 0.3s;
}
#olCard span.answer .result span.O span.C::before{
	content: "";
	display: block;
	position: absolute;
	top: 0;
	left: 50%;
	width: 15px;
	height: 15px;
	margin-left: -7.5px;
	background: #ff0000;
	border-radius: 15px;
	opacity: 0;
}
#olCard span.answer .result span.O span.C.draw::before{
	opacity: 1;
}
#olCard span.answer .result span.O span.inner{
	display: block;
	position: relative;
	width: 50px;
	height: 100px;
	overflow: hidden;
}
#olCard span.answer .result span.O span.inner::before{
	content: "";
	display: block;
	position: absolute;
	top: 0;
	left: 0;
	width: 70px;
	height: 70px;
	border: solid 15px #ff0000;
	border-radius: 100%;
}

/* X */
#olCard span.answer .result span.X{
	display: none;
}
#olCard span.answer .result span.X > span{
	display: block;
	position: absolute;
	top: 50%;
	left: 50%;
	width: 100px;
	height: 15px;
	margin: -7.5px 0 0 -50px;
	border-radius: 10px;
	overflow: hidden;
}
#olCard span.answer .result span.X span.X1{ transform: rotate(45deg); }
#olCard span.answer .result span.X span.X2{ transform: rotate(135deg); }
#olCard span.answer .result span.X span.inner{
	display: block;
	width: 0px;
	height: 15px;
	background: #ff0000;
	transition: 0.3s;
}
#olCard span.answer .result span.X span.inner.draw{
	width: 100px;
}


/* ========================== USED ========================== */
#usedUI{ display: none; }
.used #usedUI{ display: block; }

#usedNav{ display: none; }
#usedNav.active{ display: block; }

#usedNav a{
	display: block;
	position: absolute;
	top: 150px;
	width: 100px;
	height: 100px;
	cursor: pointer;
	opacity: 0.7;
	transition: 0.2s;
}
#usedNav a.L{
	left: -110px;
}
#usedNav a.R{
	right: -110px;
	transform: rotate(180deg);
}
#usedNav a::before, #usedNav a::after{
	content: "";
	display: block;
	position: absolute;
	top: 50%;
	left: 28%;
	width: 50px;
	height: 12px;
	background: #fff;
	border-radius: 10px;
	transition: 0.2s;
}
#usedNav a::before{
	margin-top: -20px;
	transform: rotate(-45deg);
}
#usedNav a::after{
	margin-top: 8px;
	transform: rotate(45deg);
}
#usedNav a:hover{ opacity: 1; }
#usedNav a:hover::before, #usedNav a:hover::after{ left: 20%; }
#usedNav.first a.L::before, #usedNav.first a.L::after,
#usedNav.last a.R::before, #usedNav.last a.R::after{
	left:28% !important;
}
#usedNav.first a.L, #usedNav.last a.R{
	cursor: default !important;
	opacity: 0.15 !important;
}


#usedList{
	position: absolute;
	top: 550px;
	left: -110px;
	width: 500px;
	text-align: center;
}
#usedList li{
	display: inline-block;
	width: 36px;
	height: 36px;
	margin: 0 9px;
	margin-top: 0px;
	cursor: pointer;
	transition: 0.3s;
}
#usedList li.now{
	cursor: default;
	transform: scale(1.2);
}
#usedList li a{
	display: block;
	width: 100%;
	height: 100%;
	background: rgba(0,0,0,0.3) url(img/ucN.png) no-repeat 0px 0px / 100% auto;
	border: solid 2px #fff;
	border-radius: 7px;
	transition: 0.3s;
}
#usedList li:hover a{
	margin-top: -5px;
}
#usedList li.now a{
	margin-top: 0px !important;
}
#usedList li.n1 a{ background-position: 0px 0px; }
#usedList li.n2 a{ background-position: 0px -50px; }
#usedList li.n3 a{ background-position: 0px -100px; }
#usedList li.n4 a{ background-position: 0px -150px; }
#usedList li.n5 a{ background-position: 0px -200px; }
#usedList li.n6 a{ background-position: 0px -250px; }
#usedList li.n7 a{ background-position: 0px -300px; }
#usedList li.n8 a{ background-position: 0px -350px; }
#usedList li.n9 a{ background-position: 0px -400px; }
#usedList li.n10 a{ background-position: 0px -450px; }











/* ========================== OL MESSAGE ========================== */
#olMessage .olmBlock{
	display: none;
	position: relative;
	top: 203px;
	width: 400px;
	margin: 0 auto;
	padding: 20px 0;
	border-radius: 20px;
	box-shadow: 0px 20px 60px 10px rgba(0,0,0,0.5);
	text-align: center;
}
#olMessage .olmBlock.active{
	display: block;
}
#olMessage #olmMove{ background-color: rgba(255,255,255,0.95); margin-top: 60px; }
#olMessage #olmYnah{ background: #f3d900; margin-top: -72px; }
#olMessage #olmY{ background: #f3d900 url(img/olmYBG.gif) no-repeat center center / 460px auto; margin-top: -95px; }
#olMessage #olmB{ background-color: #0588c8; }
#olMessage #olmR{ background-color: #e60317; }
#olMessage #olmBlack{ background-color: #333; }
#olMessage #olmGO{ background-color: transparent; }

#olMessage .olmBlock h3{
	width: 370px;
	height: 70px;
	margin: 0 auto 20px auto;
	background: no-repeat center center / 100% auto;
}
#olMessage #olmYnah h3{ background-image: url(img/olmY.png); }
#olMessage #olmY h3{ background-image: url(img/olmY.png); }
#olMessage #olmB h3{ background-image: url(img/olmB.png); }
#olMessage #olmR h3{ background-image: url(img/olmR.png); }
#olMessage #olmBlack h3{ background-image: url(img/olmBlack.png); height: 90px; }
#olMessage #olmGO h3{ background-image: url(img/olmGO.png); width: 500px; height: 375px; position: relative; left: -50px;}
#olMessage #olmYnah span{
	display: block;
	width: 360px;
	height: 160px;
	margin: 0 auto 20px auto;
	background: url(img/olmYnah.png) no-repeat center center / 100% auto;
}

#olMessage .olmBlock a.ok{
	display: block;
	position: relative;
	top: 0px;
	width: 170px;
	height: 55px;
	margin: 30px auto 20px auto;
	background: url(img/ok.png) repeat center center / 100% auto;
	border-radius: 50px;
	box-shadow: 0px 2px 2px 0px rgba(0,0,0,0.3);
}
#olMessage .olmBlock a.ok:hover{
	top: 2px;
	box-shadow: 0px 1px 1px 0px rgba(0,0,0,0.2);
}
#olmY a.ok{ background-color: #ead100; }
#olmB a.ok{ background-color: #0588c8; }
#olmR a.ok{ background-color: #e60317; }
#olmBlack a.ok{ background-color: #333; }
#olmGO a.ok{ width: 310px; background: #f62c6a url(img/restart.png) no-repeat center center / 100% auto; }


/* MOVE */
#olmMove .txt{
	width: 300px;
	height: 100px;
	margin: 0 auto;
	background: url(img/moves.png) no-repeat center top / 100% auto;
}
#olmMove .txt span{
	display: block;
	width: 300px;
	height: 100px;
	margin: 0 auto;
	background: url(img/moves.png) no-repeat 0px 100px / 100% auto;
}
#olmMove .txt .n1{ background-position: 0px -100px; }
#olmMove .txt .n2{ background-position: 0px -200px; }
#olmMove .txt .n3{ background-position: 0px -300px; }
#olmMove .txt .n4{ background-position: 0px -400px; }
#olmMove .txt .n5{ background-position: 0px -500px; }
#olmMove .txt .n6{ background-position: 0px -600px; }
#olmMove .txt .n7{ background-position: 0px -700px; }
#olmMove .txt .n8{ background-position: 0px -800px; }
#olmMove .txt .n9{ background-position: 0px -900px; }
#olmMove .txt .n10{ background-position: 0px -1000px; }

/* YELLOW */
#olmY .card{
	display: inline-block;
	width: 140px;
	height: 200px;
	border-radius: 5px;
	box-shadow: 1px 2px 2px 0px rgba(0,0,0,0.3);
	overflow: hidden;
	opacity: 0.1;
	transform: scale(0.25) rotate(-150deg);
	transition: 0s;
}
#olmY .card.active{
	opacity: 1;
	transform: scale(1) rotate(15deg);
	transition: 0.3s;
}
#olmY .card img{
	display: block;
}



#olBG{
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100vh;
	z-index: 0;
	transition: 0.5s;
}
.message #olBG{ background: rgba(0,0,0,0.1); }
.card #olBG{ background: rgba(0,0,0,0.85); }






/* ========================== GAME OVER ========================== */
#gameover{
	display: block;
	position: absolute;
	top: 210px;
	left: -110vw;
	z-index: 10;
}
#gameover.active{
	left: 0;
}

#gameover h3{
	width: 500px;
	height: 280px;
	margin: -12px auto 20px auto;
	background: url(img/gameover.png) no-repeat center center / 100% auto;
	opacity: 0;
	transition: all 1s ease-out;
}
#gameover.active h3{
	margin-top: 0px;
	opacity: 1;
}


#gameover a.ok{
	display: block;
	position: absolute;
	top: 400px;
	left: 95px;
	width: 310px;
	height: 55px;
	margin: 0 auto;
	background: #f62c6a url(img/restart.png) no-repeat center center / 100% auto;
	border-radius: 50px;
	box-shadow: 0px 2px 3px 0px rgba(0,0,0,0.5);
	cursor: pointer;
	opacity: 0;
	transition: opacity 0.3s ease 1.5s, top 0.2s ease, box-shadow 0.2s ease;
}
#gameover.active a.ok{
	opacity: 1;
}
#gameover a.ok:hover{
	top: 402px;
	box-shadow: 0px 1px 1px 0px rgba(0,0,0,0.3);
}




/* ========================== FOOTER ========================== */
footer{
	width: 100%;
	padding: 20px 0px;
	background: url(img/headerBG.jpg) repeat center center / 100% auto;
	z-index: 100;
}
footer ul{
	text-align: center;
	color: #000;
	font-size: 9px;
	font-weight: 700;
	opacity: 0.75;
}
footer ul li{
	display: inline-block;
}
footer ul li:nth-child(n+2)::after{
	content: " / ";
}
footer ul li:last-child::after{
	content: "";
}



#holyLight{
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 200vh;
	z-index: 99;
}

#theLight{
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 100vh;
	background: #fff;
	z-index: 99;
	opacity: 0;
	transition: 0.8s;
}

#holyLight .shine{
	display: block;
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 200vh;
	opacity: 0;
	transition: 1.4s linear;
}
#holyLight #shineA{
	top: 0px;
	background: url(img/shine1.png) no-repeat 50% 0px / 500px auto;
}
#holyLight #shineB{
	top: 0px;
	background: url(img/shine2.png) no-repeat 50% 0px / 500px auto;
}
#holyLight.lv1 #theLight{ opacity: 0.9; }
#holyLight.lv1 #shineA{ top: -50px; opacity: 1; }
#holyLight.lv1 #shineB{ top: -75px; opacity: 1; }
#holyLight.lv2 #theLight{ opacity: 0; transition: 2.0s linear; }
#holyLight.lv3 #shineA{ top: -100px; opacity: 0; }
#holyLight.lv3 #shineB{ top: -150px; opacity: 0.4; }
#holyLight.lv4 #shineB{ top: -175px; opacity: 0; transition: 0.7s linear; }








