a {
  text-decoration: none;
}

img {
  width: 100%;
  display: block;
}

.mt30 {
  margin-top: 30px !important;
}

.mt20 {
  margin-top: 20px !important;
}

.link_btn {
  border-radius: 30px;
  color: #951119;
  background-color: #EFC858;
  width: 80%;
  max-width: 210px;
  margin: 15px auto;
  text-align: center;
  border: none;
  display: block;
  padding: 10px;
  position: relative;
  font-size: 0.8rem;
}

.link_btn::before {
  content: '';
  width: 6px;
  height: 6px;
  border: 0;
  border-top: solid 2px #951119;
  border-right: solid 2px #951119;
  transform: rotate(45deg);
  position: absolute;
  top: 0;
  right: 14px;
  bottom: 0;
  margin: auto;
} 

.link_btn:hover {
  transition: all .3s;
  opacity: 0.74;
}

.cp_block {
  margin: 3em auto;
}

.cp_timeline {
  position: relative;
  width: 100%;
  margin: 0 auto;
  padding: 1em 0;
  list-style-type: none;
  max-width: 1200px;
}

.cp_timeline:before {
  position: absolute;
  left: 50%;
  top: 72px;
  content: '';
  display: block;
  width: 6px;
  margin-left: -2px;
  height: 86.3%;
  background: #EFC858;
  z-index: 5;
}

.cp_timeline li {
  padding: 1em 0;
}

.cp_timeline li:after {
  content: '';
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
}

.cp_timeline li:nth-child(odd) .timeline_item {
  position: relative;
  width: calc(50% - 29px);
  float: left;
  text-align: right;
}

.cp_timeline li:nth-child(even) .timeline_item {
  position: relative;
  width: calc(50% - 29px);
  float: right;
}

.cp_timeline li .timeline_item .flag_cont {
  display: inline-block;
  text-align: center;
}

.cp_timeline li .timeline_item .flag {
  position: relative;
  display: inline;
  background: #C51F70;
  color: #ffffff;
  padding: 6px 10px;
  border-radius: 5px;
  font-weight: bold;
  text-align: left;
}

.cp_timeline li:nth-child(odd) .timeline_item .flag {
  box-shadow: -1px 1px 1px rgba(0,0,0,0.15), 0 0 1px rgba(0,0,0,0.15);
}

.cp_timeline li:nth-child(even) .timeline_item .flag {
  box-shadow: 1px 1px 1px rgba(0,0,0,0.15), 0 0 1px rgba(0,0,0,0.15);
}

.cp_timeline li:nth-child(odd) .timeline_item .flag_cont:before,
.cp_timeline li:nth-child(even) .timeline_item .flag_cont:before {
  position: absolute;
  top: 24px;
  right: -44px;
  content: ' ';
  display: block;
  width: 12px;
  height: 12px;
  margin-top: -10px;
  padding: 9px;
  background: #EFC858;
  border-radius: 50%;
  border: 5px solid #951119;
  z-index: 10;
}

.cp_timeline li:nth-child(even) .timeline_item .flag_cont:before {
  left: -43px;
  top: 30px;
}

.cp_timeline li:nth-child(odd) .timeline_item .flag_cont:after,
.cp_timeline li:nth-child(even) .timeline_item .flag_cont:after {
  position: absolute;
  top: 30px;
  right: -38px;
  content: ' ';
  display: block;
  width: 16px;
  height: 16px;
  margin-top: -10px;
  border-radius: 10px;
  border: 2px solid rgba(255,255,255 ,1);
  z-index: 10;
}

.cp_timeline li:nth-child(even) .timeline_item .flag_cont:after {
  left: -37px;
  top: 36px;
}

.cp_timeline li:nth-child(odd) .timeline_item .flag:after {
  content: '';
  position: absolute;
  left: 100%;
  top: 50%;
  height: 0;
  width: 0;
  margin-top: -6px;
  border: solid transparent;
  border-left-color: #C51F70;
  border-width: 6px;
}

.cp_timeline li:nth-child(even) .timeline_item .flag:after {
  content: '';
  position: absolute;
  right: 100%;
  top: 50%;
  height: 0;
  width: 0;
  margin-top: -6px;
  border: solid transparent;
  border-right-color: #C51F70;
  border-width: 6px;
}

.cp_timeline li .timeline_item .time {
  display: block;
  margin-top: 1em;
  font-size: 0.6em;
  line-height: 1em;
  color: #F676A6;
  text-align: left;
}

.cp_timeline li .timeline_item .title {
  text-align: left;
}

.cp_timeline li:nth-child(even) .timeline_item .time {
  text-align: left;
}

.cp_timeline li .timeline_item .js_modalWrap .time {
  font-size: 15px;
}

.js_modalWrap .time,
.js_modalWrap .title,
.js_modalWrap small,
.js_modalWrap .modal_contents {
  text-align: center;
  display: block;
}

.js_modalWrap .js_modalCont .link_btn {
  max-width: 270px;
}

.cp_timeline li .timeline_item .desc {
  margin: 1em 0.75em 0 0;
  font-size: 0.9em;
  line-height: 1.5em;
  margin: -15px 1em 0 1em;
  padding: .6em 1em;
  background: #951119;
  border: 2px solid #efc858;
}

.cp_timeline li .timeline_item .desc p {
  font-size: 20px;
  font-weight: bold;
  color: #FFF;
  margin: 10px auto;
}

.cp_timeline li:nth-child(odd) .timeline_item .desc::before {
  content: "";
  position: absolute;
  top: 10px;
  right: -7px;
  border: 12px solid transparent;
  border-left: 12px solid #951119;
  z-index: 2;
}

.cp_timeline li:nth-child(odd) .timeline_item .desc::after {
  content: "";
  position: absolute;
  top: 8px;
  right: -12px;
  border: 14px solid transparent;
  border-left: 14px solid #EFC858;
  z-index: 1;
}

.cp_timeline li:nth-child(even) .timeline_item .desc::before {
  content: "";
  position: absolute;
  top: 29px;
  left: -7px;
  margin-top: -12px;
  border: 12px solid transparent;
  border-right: 12px solid #951119;
  z-index: 2;
}

.cp_timeline li:nth-child(even) .timeline_item .desc::after {
  content: "";
  position: absolute;
  top: 29px;
  left: -12px;
  margin-top: -14px;
  border: 14px solid transparent;
  border-right: 14px solid #EFC858;
  z-index: 1;
}

@media only screen and (max-width:768px) {
  .cp_timeline {
    width: 100%;
    padding: 4em 0 1em 0;
  }

  .cp_timeline:before {
    height: 90%;
    margin-left: -3px;
  }

  .cp_timeline li {
    padding: 2em 0;
  }

  .cp_timeline li:nth-child(odd) .timeline_item,
  .cp_timeline li:nth-child(even) .timeline_item {
    float: none;
    width: 100%;
    text-align: center;
  }

  .cp_timeline li .timeline_item .flag_cont {
    text-align: center;
  }

  .cp_timeline li .timeline_item .flag {
    z-index: 15;
  }

  .cp_timeline li:nth-child(odd) .timeline_item .flag_cont:before,
  .cp_timeline li:nth-child(even) .timeline_item .flag_cont:before {
    top: -34px;
    left: calc(50% - 13px);
    padding: 8px;
  }

  .cp_timeline li:nth-child(odd) .timeline_item .flag_cont:after,
  .cp_timeline li:nth-child(even) .timeline_item .flag_cont:after {
    top: -29px;
    left: calc(50% - 8px);
  }

  .cp_timeline li:nth-child(odd) .timeline_item .flag:after,
  .cp_timeline li:nth-child(even) .timeline_item .flag:after {
    content: '';
    position: absolute;
    left: 50%;
    top: -6px;
    height: 0;
    width: 0;
    margin-left: -6px;
    border: solid transparent;
    border-bottom-color: #C51F70;
    border-width: 6px;
    pointer-events: none;
  }

  .cp_timeline li .flag_cont {
    display: block;
    position: relative;
    margin: 4px 0 0 0;
    z-index: 14;
  }

  .cp_timeline li:nth-child(odd) .timeline_item .time,
  .cp_timeline li:nth-child(even) .timeline_item .time {
    float: none;
    text-align: center;
  }

  .cp_timeline li:nth-child(odd) .timeline_item .title,
  .cp_timeline li:nth-child(even) .timeline_item .title {
    text-align: center;
  }

  .cp_timeline li .timeline_item .desc {
    position: relative;
    z-index: 15;
    margin: 1em 1em 0 1em;
  }

  .cp_timeline li:nth-child(odd) .timeline_item .desc::before,
  .cp_timeline li:nth-child(even) .timeline_item .desc::before {
    content: "";
    position: absolute;
    top: -24px;
    left: 50%;
    margin-left: -14px;
    border: 13px solid transparent;
    border-bottom: 11px solid #951119;
    z-index: 2;
    right: auto;
    margin-top: auto;
  }

  .cp_timeline li:nth-child(odd) .timeline_item .desc::after,
  .cp_timeline li:nth-child(even) .timeline_item .desc::after {
    content: "";
    position: absolute;
    top: -30px;
    left: 50%;
    margin-left: -17px;
    border: 16px solid transparent;
    border-bottom: 12px solid #EFC858;
    z-index: 1;
    right: auto;
    margin-top: auto;
  }
}

.roadmap .cp_timeline .fadein.scrollin {
  position: relative;
  z-index: 100;
}

/* ==========================
  モーダル
========================== */
.js_modalBtnWrap {
  width: 300px;
  max-width: 100%;
  margin: 0 auto;
  text-align: center;
}

.js_modalWrap {
  display: none;
  z-index: 1000;
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}

.js_modalBG {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.6);
}

.js_modalContInner {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translateX(-50%) translateY(-50%);
  max-width: 700px;
  width: 90%;
  background-color: #fff;
  border-radius: 6px;
  padding: 20px;
  margin: 20px auto;
}

.js_modalCont {
  overflow-y: scroll;
  max-height: 520px;
}

.js_modalCont_img {
  width: 32%;
  margin-right: 1%;
  margin-top: 1%;
}

.js_modalCont > * + * {
  margin-top: 10px;
}

.js_modalContInner > .js_modalClose + * {
  margin-top: 0;
}

.js_modalClose {
  display: block;
  position: absolute;
  top: -30px;
  right: -30px;
  width: 20px;
  height: 20px;
  overflow: hidden;
  cursor: pointer;
  z-index: 1001;
}

.js_modalClose::before,
.js_modalClose::after {
  content: "";
  background-color: #fff;
  position: absolute;
  top: -5px;
  right: 10px;
  width: 1px;
  height: 30px;
}

.js_modalClose::before {
  transform: rotate(45deg);
}

.js_modalClose::after {
  transform: rotate(-45deg);
}

.flex {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: center;
}
@media only screen and (max-width:768px) {
.js_modalClose {
  right: 0;
}
.js_modalWrap .time,
.js_modalWrap .title,
.js_modalWrap small,
.js_modalWrap .modal_contents {
  text-align: left;
}
}