:root{
    --orange: #FF7300;
    --yellow: #FFD900;
}
input{
    display: none;
}
label{
    display: none;
}
.c_yellow{
    color: var(--yellow);
}
.ticket__btn{
    position: fixed;
    right: 24px;
    bottom: 8px;
    z-index: 50;
    cursor: pointer;
    width: 160px;
    height: 158px;
}

html{
    scroll-padding-top: 60px;
}
body{
    padding-top: 66px;
}
header{
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: auto;
    background-color: #000;
    z-index: 999;
}
.header__inner{
    width: 1200px;
    padding: 0 20px;
    margin: auto;
    max-width: 100%;
}
.header__nav{
    padding: 8px 0;
}
.header__menu{
    display: flex;
    justify-content: center;
    gap: 0 102px;
}
.header__nav-list{
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px 28px;
}
.header__nav-link{
    color: var(--orange);
    font-weight: bold;
}
@media screen and (max-width: 1150px) {
    .header__menu{
        gap: 0 32px;
    }
    .header__nav-list{
        gap: 20px 14px;
        font-size: 14px;
    }
}
@media screen and (max-width: 910px) {
    .header__menu{
        gap: 0 24px;
    }
    .header__nav-list{
        font-size: 12px;
    }
}
@media screen and (max-width: 816px) {
    .header__menu{
        gap: 0 24px;
    }
    .header__nav-list{
        font-size: 11px;
    }
}

.event-period{
    background-image: url(../img/bg_gray.jpg);
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    text-align: center;
    padding: 60px 0 80px 0;
}
.event-period img{
    margin: auto;
}
.event-period__box{
    width: 900px;
    max-width: 100%;
    margin: 72px auto 0 auto;
    background-color: #EFEFEF;
    border: solid 4px #EFEFEF;
    border-radius: 10px;
}
.event-period__title{
    background-color: #000;
    color: #FFF;
    font-size: 32px;
    font-weight: bold;
    text-align: center;
    border: solid 4px #000;
    border-radius: 10px 10px 0 0;
}
.event-period__list{
    display: flex;
    justify-content: center;
    gap: 20px 58px;
    padding: 20px 0;
}
.event-period__item{
    text-align: center;
    flex-basis: 50%;
    border-left: solid 1px #000;
}
.event-period__item:nth-child(1){
    border: none;
}
.event-period__city{
    font-size: 24px;
    padding: 2px 20px;
    background-color: var(--orange);
    line-height: 1.5;
    font-weight: bold;
    margin-bottom: 12px;
    display: inline-block;
}

#period{
    text-align: center;
    padding: 98px 0 60px 0;
    background-color: rgb(0 0 0 / 50%);
}
.period__content{
    text-align: center;
    color: #FFF;
    width: 720px;
    max-width: 100%;
    margin: 60px auto 0 auto;
    padding: 24px;
    background-color: rgb(0 0 0 / 30%);
    font-weight: bold;
}
.period__content .c_yellow{
    font-size: 20px;
}


#period {
  position: relative;
  overflow: hidden;
}
.period__title{
    text-align: center;
}
.period__title img{
    margin: auto;
}
.period__bg {
  position: absolute;
  inset: 0;
  z-index: -1;
}
.period__row {
  display: flex;
  overflow: hidden;
  white-space: nowrap;
  height: 50%;
}
.period__track {
  display: flex;
  width: max-content;
}
.period__row img {
  flex-shrink: 0;
  object-fit: cover;
  width: auto;
}

.period__to-left .period__track {
  animation: scrollLeft 48s linear infinite;
}
.period__to-right .period__track {
  animation: scrollRight 48s linear infinite;
}
@keyframes scrollLeft {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-240%); }
}

@keyframes scrollRight {
  0%   { transform: translateX(-240%); }
  100% { transform: translateX(0); }
}



#story{
    position: relative;
    background-color: var(--orange);
    z-index: 1;
}
#story:before{
    content: "STORY";
    font-size: 195px;
    font-weight: 900;
    line-height: 1;
    position: absolute;
    left: 0;
    top: 54px;
    color: rgb(0 0 0 / 15%);
    z-index: -1;
}
#story:after{
    content: "";
    position: absolute;
    width: 100%;
    height: 100%;
    bottom: 0;
    right: 0;
    background-image: url(../img/story_mark.svg);
    background-size: contain;
    background-position: bottom right;
    background-repeat: no-repeat;
    z-index: -1;
}
.story__text{
    font-size: 14px;
    font-weight: 500;
    margin-top: 36px;
    line-height: 1.6;
}
.story__text .bg_yellow{
    position: relative;
    overflow: hidden;
    padding: 0 2px;
    display: inline-table;
}
.story__text .bg_yellow::before{
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 0;
    height: 100%;
    background-color: var(--yellow);
    z-index: -1;
    transition: 0.2s ease;
}
.story__text .bg_yellow.is_show:before{
    width: 100%;
}
.story__text .bg_yellow::after{
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 100%;
    height: 100%;
    background-color: var(--orange);
    z-index: 1;
    transition: 0.2s ease;
}
.story__text .bg_yellow.is_show:after{
    width: 0;
}
.story__text .md{
    font-size: 20px;
    font-weight: bold;
}
.story__text .lg{
    font-size: 24px;
    font-weight: bold;
}

.story__wrap{
    display: flex;
    justify-content: left;
    margin-top: 54px;
}
.story__item-1{
    flex-basis: 39%;
}

.story__item-2{
    flex-basis: 59%;
}

.title{
    text-align: center;
}
.title .title__mark{
    position: relative;
    margin: auto;
    padding: 28px 24px;
    display: inline-block;
    z-index: 1;
}
.title .title__mark:before,
.title .title__mark:after{
    content: "";
    position: absolute;
    width: 68px;
    height: 98px;
    top: 0;
    background-image: url(../img/title_mark.svg);
    background-size: contain;
    background-position: center center;
    background-repeat: no-repeat;
    z-index: 0;
}
.title .title__mark:before{
    left: -68px;
}
.title .title__mark:after{
    right: -68px;
    rotate: 180deg;
}
.story__title{
    border-bottom: solid 2px #000;
}
.title.title_white .title__mark:before,
.title.title_white .title__mark:after{
    background-image: url(../img/title_mark_white.svg);
}

#character{
    background-image: url(../img/bg_gray.jpg);
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    color: #FFF;
    padding-bottom: 500px;
}
.character__body{
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.character__content{
    flex-basis: 75%;
}
.character__item{
    display: flex!important;
    justify-content: space-between;
    align-items: center;
    display: none;
}
.character__item.is-show{
    display: flex;
}
.character__name{
    font-size: 48px;
    font-weight: 900;
    line-height: 1;
    margin-bottom: 16px;
}
.character__content img{
    width: 42%;
}
.character__text{
    width: 58%;
}
.character__list{
    width: 168px;
    margin: 0;
}
.character__list .swiper-wrapper{
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 20px 16px;
}
.character__list .character__icon{
    width: 76px;
}
#play{
    background-color: #4D4D4D;
    padding-bottom: 60px;
}
.play__body{
    margin: auto;
}
.play__title{
    margin-bottom: 30px;
}
.play__item{
    background-color: var(--orange);
    border: solid 2px #000;
    padding: 36px 20px 86px 20px;
}
.play__btn{
    position: absolute;
    bottom: 36px;
    left: 20px;
    width: calc(100% - 40px);
    display: block;
    font-weight: bold;
    border: solid 1px #000;
    font-size: 24px;
    text-align: center;
    cursor: pointer;
    transition: 0.2s ease;
    background-color: #000;
    color: var(--orange);
}
.play__btn:hover{
    background-color: var(--orange);
    color: #000;
}


.play__swiper {
  overflow: visible;
}
.play__swiper.swiper{
    height: auto;
    padding: 0 38px;
}
.play__list.swiper-wrapper{
    height: auto;
}
.swiper-slide.play__item {
    width: 330px;
    height: auto;
    position: relative;
    cursor: grab;
}

.play__item img {
    width: 100%;
    display: block;
}

.play__swiper {
    position: relative;
}
.play__swiper .swiper-button-prev,
.play__swiper .swiper-button-next {
    position: absolute;
    content: "";
    width: 32px;
    height: 32px;
    border-left: solid 5px #FFF;
    border-bottom: solid 5px #FFF;
    top: 0;
    bottom: 0;
    margin: auto;
}
.play__swiper .swiper-button-prev{
    left: 8px;
    rotate: 45deg;
}
.play__swiper .swiper-button-next{
    right: 8px;
    rotate: 225deg;
}

.play__1{
    position: relative;
    top: -500px;
}
.play__2{
    margin-top: -400px;
}
.play-2__title{
    text-align: center;
}
.play-2__title span{
    display: inline-block;
    text-align: center;
}

.play-2__list{
    display: flex;
    justify-content: center;
    gap: 20px 40px;
    margin-top: 36px;
}
.play-2__item{
    width: 227px;
    height: auto;
}

#info{
    background-image: url(../img/bg_gray.jpg);
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    text-align: center;
    padding: 54px 0 108px 0;
}


.info__table {
    width: 100%;
    border-collapse: collapse;
    border: 1px solid #fff;
    color: #fff;
    margin: 40px auto 72px auto;
}
.info__table thead th{
    padding: 8px 0;
}
.info__table th,
.info__table td{
    border: solid 1px #FFF;
}
.info__table th,
.info__table td{
    font-size: 24px;
    font-weight: 900;
}
.info__number{
    font-size: 48px;
}
.info__table tbody th{
    padding: 20px 0;
}
.info__banner{
    transition: 0.2s ease;
    position: relative;
    top: 0;
    cursor: pointer;
}
.info__banner:hover{
    top: 5px;
}
.info__annotation {
    margin-inline:auto;
    color:#fff;
    margin-bottom:2em;
    font-size: 24px;
    font-weight: 900;
}
#purchase{
    position: relative;
    background-color: var(--orange);
    z-index: 1;
    padding-bottom: 40px;
}
#purchase:before{
    content: "TICKET";
    font-size: 195px;
    font-weight: 900;
    line-height: 1;
    position: absolute;
    left: 0;
    top: 54px;
    color: rgb(0 0 0 / 15%);
    z-index: -1;
}
#purchase:after{
    content: "";
    position: absolute;
    width: 100%;
    height: 100%;
    bottom: 0;
    right: 0;
    background-image: url(../img/story_mark.svg);
    background-size: contain;
    background-position: bottom right;
    background-repeat: no-repeat;
    z-index: -1;
}
.purchase__title{
    margin-bottom: 68px;
}

.purchase__list{
    display: flex;
    justify-content: center;
    gap: 30px 96px;
    flex-wrap: wrap;
}
.purchase__item{
    width: 405px;
    max-width: 100%;
    background-color: var(--yellow);
    border: solid 1px #000;
    padding: 10px;
}
.purchase__city{
    background-color: #000;
    color: var(--yellow);
    text-align: center;
    font-size: 32px;
    font-weight: 900;
    padding: 2px 0;
}
.purchase__place-name{
    padding: 24px 0 8px 0;
    font-size: 32px;
    font-weight: 900;
    text-align: center;
}
.purchase__date{
    font-size: 26px;
    font-weight: 900;
    text-align: center;
}
.purchase__date small{
    font-size: 20px;
}
.purchase__btn{
    width: 328px;
    height: 52px;
    max-width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 24px;
    font-weight: 900;
    border-radius: 100px;
    color: #B0B0B0;
    border: solid 2px #A8A8A8;
    background-color: #D9D9D9;
    margin: 8px auto 0 auto;
}
.purchase__btn[href]{
    color: #000;
    border: solid 2px #000;
    background-color: var(--orange);
    margin: 8px auto 0 auto;
    transition: 0.2s ease;
}
.purchase__btn[href]:hover{
    color: var(--orange);
    background-color: #000;
}

#goods{
    background-image: url(../img/bg_gray.jpg);
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    position: relative;
    padding-bottom: 500px;
}
.goods__title{
    padding-top: 24px;
    padding-bottom: 56px;
    background-image: url(../img/bg_gray.jpg);
    background-size: cover;
    background-position: bottom center;
    background-repeat: no-repeat;
}

.faq__outer{
    position: relative;
    top: -460px;
    margin-bottom: -460px;
    padding-bottom: 100px;
}

.faq__section{
    background-color: var(--orange);
    padding: 8px 0;
    margin-bottom: 32px;
}
.faq__title{
    text-align: center;
    font-size: 24px;
    font-weight: bold;
    position: relative;
    cursor: pointer;
    padding: 4px 0;
}
.faq__title:before{
    content: "";
    position: absolute;
    width: 15px;
    height: 15px;
    border-left: solid 4px #000;
    border-top: solid 4px #000;
    top: 8px;
    right: 40px;
    margin: auto;
    rotate: 225deg;
    transition: 0.2s ease;
}
.faq__title.is-open:before{
    rotate: 45deg;
    top: 16px;
}
.faq__body{
    padding: 0 40px;
    max-height: 0;
    overflow: hidden;
    transition: 0.2s ease;
}
.faq__title.is-open+.faq__body{
    max-height: none;
}
.faq__item{
    border-bottom: solid 1px #000;
    padding: 16px 0;
    font-weight: 500;
}
.faq__item h4{
    font-size: 20px;
    margin-bottom: 8px;
}
.faq__item:nth-last-child(1){
    border: none;
}
.faq__question,
.faq__answer{
    position: relative;
    padding-left: 40px;
}
.faq__question{
    margin-bottom: 16px;
}
.faq__question:before{
    content: "Q";
    position: absolute;
    font-size: 20px;
    font-weight: bold;
    left: 0;
    top: 0;
}
.faq__answer:before{
    content: "A";
    position: absolute;
    font-size: 20px;
    font-weight: bold;
    left: 0;
    top: 0;
    color: #FFF;
}
#faq{
    background-color: #000;
}


.faq__body .bg_yellow{
    position: relative;
    overflow: hidden;
    padding: 0 2px;
    display: inline-table;
    z-index: 0;
}
.faq__body .bg_yellow::before{
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 0;
    height: 100%;
    background-color: var(--yellow);
    z-index: -1;
    transition: 0.2s ease;
}
.faq__body .bg_yellow.is_show:before{
    width: 100%;
}
.faq__body .bg_yellow::after{
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 100%;
    height: 100%;
    background-color: var(--orange);
    z-index: 1;
    transition: 0.2s ease;
}
.faq__body .bg_yellow.is_show:after{
    width: 0;
}
.faq__dot p{
    padding-left: 20px;
    margin-bottom: 4px;
    position: relative;
    font-weight: 500;
}
.faq__dot p:before{
    content: "・";
    position: absolute;
    left: 0;
    top: 0;
}

#banner{
    background-color: #000;
    border-top: solid 2px #FFF;
    padding: 60px 0 30px 0;
}
#banner button{
    padding: 0;
    border: none;
    width: 303px;
    max-width: 100%;
    cursor: pointer;
    background-color: #000;
}
.banner__wrap{
    display: flex;
    justify-content: center;
    gap: 20px 80px;
}

#footer{
    background-color: #000;
    color: #FFF;
    text-align: center;
    padding: 30px 0 100px 0;
}





.character__content {
  margin-bottom: 40px;
}
.character__content .swiper-slide {
  opacity: 0 !important;
  transition: opacity .4s ease;
}
.character__content .swiper-slide-active {
  opacity: 1 !important;
}
.character__list .swiper-slide {
  width: auto;
  cursor: pointer;
  position: relative;
}
.character__list .swiper-slide img{
    border: solid 2px transparent;
    filter: brightness(0.5);
    transition: 0.2s ease;
}
.character__list .swiper-slide.swiper-slide-thumb-active img{
    border: solid 2px var(--orange);
}
.character__list .swiper-slide.swiper-slide-thumb-active img{
    filter: brightness(1);
}
.character__list .swiper-slide:hover img{
    filter: brightness(1);
}
.character__list .swiper-slide-thumb-active {
  opacity: 1;
}
.character__content .swiper-button-prev,
.character__content .swiper-button-next{
    display: none;
}


#modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: .3s;
  z-index: 9999;
  cursor: pointer;
}
#modal.is-open {
  opacity: 1;
  visibility: visible;
}
.modal__section {
  background: #fff;
  width: 90%;
  max-width: 1000px;
  display: none;
  position: relative;
  animation: fadeIn .3s ease;
}
.modal__section.is-show {
  display: block;
}
@keyframes fadeIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
.modal__close-btn {
  cursor: pointer;
}
.modal__header{
    background-color: #000;
    text-align: right;
}
.modal__close-btn{
    width: 60px;
    height: 60px;
    margin-left: auto;
    margin-right: 0;
}
.modal__close-btn img{
    width: 60px;
    height: 60px;
}
.modal__body{
    padding: 48px 20%;
    background-image: url(../img/bg_gray.jpg);
    background-size: cover;
    background-position: bottom center;
    background-repeat: no-repeat;
    color: #FFF;
}
.modal__title{
    font-size: 32px;
    font-weight: 900;
    text-align: center;
    margin-bottom: 52px;
}
.modal__link{
    color: var(--yellow);
    text-decoration: underline;
}

.js_scroll.fade-in{
    opacity: 0;
}
.js_scroll.fade-in.is_show{
  animation: fadeInFromBottom 0.45s ease-out forwards;
}
@keyframes fadeInFromBottom {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
@keyframes curtain {
    from{ 
        transform: translateX(0);
    }
    to {
        transform: translateX(100%);
    }
}

.sequencial_animation >*{
  --i: 0;
  opacity: 0;
  transform: scale(0.6);
}
.sequencial_animation.is_show >* {
  animation: sequencialPop 0.45s
    cubic-bezier(.34,1.56,.64,1)
    forwards;
  animation-delay: calc(var(--i) * 0.1s);
}
.sequencial_animation >*:nth-child(1) { --i: 0; }
.sequencial_animation >*:nth-child(2) { --i: 1; }
.sequencial_animation >*:nth-child(3) { --i: 2; }
@keyframes sequencialPop {
  to {
    opacity: 1;
    transform: scale(1);
  }
}
.js_scroll.fadein_bottom{
    opacity: 0;
}
.js_scroll.fadein_bottom.is_show{
  animation: fadeInFromBottom 0.45s ease-out forwards;
}
@keyframes fadeInFromBottom {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
@keyframes curtain {
    from{ 
        transform: translateX(0);
    }
    to {
        transform: translateX(100%);
    }
}
.radial_pop.is_show {
    animation: radialPop 0.5s cubic-bezier(.34, 1.56, .64, 1) forwards;
}
.radial_pop {
    opacity: 0;
    transform: scale(0);
}
@keyframes radialPop {
    100% {
        opacity: 1;
        transform: scale(1);
    }
}


#story{
    scroll-padding-top: 60px;
}
#character{
    scroll-padding-top: 60px;
}
#play{
    scroll-padding-top: 600px;
}
#info{
    scroll-padding-top: 60px;
}
#purchase{
    scroll-padding-top: 60px;
}
#goods{
    scroll-padding-top: 60px;
}
#faq{
    scroll-padding-top: 500px;
}