@charset "utf-8";
@import url('https://fonts.googleapis.com/css?family=Noto+Sans+JP:500,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap');


html {
  font-size: 62.5%;
}

:root {
  /* color set */
  --color-base:       #FFF;
  --color-baseDark:   #000000;
  --color-main:       #000000;
  --color-accent:     #00C7D9;
  --color-text:       #222222;
  --color-link:       #00B5DA;

  /* color loading */
  --color-loading_bg:  var(--color-baseDark);
  --color-loading_txt: #FFF;
  /* color body */
  --color-body_bg:  var(--color-baseDark);
  --color-body_txt: var(--color-text);
  
  /* color footer */
  --color-footer_bg: var(--color-baseDark);
  --color-footer_txt: #FFF;
  --color-footer_btn_bg:  #FFF;
  --color-footer_btn_txt: var(--color-text);
  /* space set */
  --space-unit: 0.8rem;
  --space-xxs:  calc( 0.5 * var(--space-unit)); /*   4 */
  --space-xs:   calc( 1   * var(--space-unit)); /*   8 */
  --space-sm:   calc( 2   * var(--space-unit)); /*  16 */
  --space-md:   calc( 3   * var(--space-unit)); /*  24 */
  --space-lg:   calc( 5   * var(--space-unit)); /*  40 */
  --space-xl:   calc( 8   * var(--space-unit)); /*  64 */
  --space-xxl:  calc(13   * var(--space-unit)); /* 104 */
  --space-3xl:  calc(21   * var(--space-unit)); /* 168 */
}

body {
  position: relative;
  font-size: 1.4rem;
  font-family: 'Noto Sans JP', '游ゴシック Medium', '游ゴシック体', 'Yu Gothic Medium', YuGothic, 'ヒラギノ角ゴ ProN', 'Hiragino Kaku Gothic ProN', 'メイリオ', Meiryo, 'ＭＳ Ｐゴシック', 'MS PGothic', sans-serif;
  font-weight: 500;
  line-height: 1.6;
  color: var(--color-body_txt);
  background: var(--color-body_bg);
  text-align: justify;
  font-feature-settings: "palt";
  overflow-x: hidden;

  /* コピー禁止 */
  /* -webkit-touch-callout: none;
  -webkit-user-select:none;
  -moz-touch-callout:none;
  -moz-user-select:none;
  touch-callout:none;
  user-select:none; */
}

/* ローディング中の画面 */
body::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--color-loading_bg);
  z-index: 1000;
  opacity: 1;
  transition: 0.5s 0.25s;
}
body.loaded::before {
  /* transform: translateY(-100%); */
  opacity: 0;
  pointer-events: none;
}
.loading {
  /* content: "loading..."; */
  font-family: sans-serif;
  color: var(--color-loading_txt);
  opacity: 1;
  z-index: 1001;
  position: fixed;
  width: 100vw;
  text-align: center;
  top: 50%;
  left: 0;
  transform: translate(0,-50%);
  transition: opacity 0.5s 0.0s;
  animation: flash 0.25s 0.5s step-start infinite ;
  pointer-events: none;
}
body.loaded .loading {
  animation: flashEnd 0.5s 0.0s forwards;
  pointer-events: none;
}
@keyframes flash {
	0%,
	100% {
		opacity: 1;
	}
	50% {
		opacity: 0.5;
	}
}
@keyframes flashEnd {
	0% {
		opacity: 1;
	}
	100% {
		opacity: 0;
	}
}


/* common */
* {
  /* user-select: none; */
  letter-spacing: 0.075em;
  backface-visibility: hidden;/* animation時のにじみ防止 */
	-webkit-backface-visibility: hidden;/* animation時のにじみ防止 */
	-webkit-font-smoothing: antialiased;/* animation時の文字にじみ防止 */
	-moz-osx-font-smoothing: grayscale;/* animation時の文字にじみ防止 */
}

span.br {
  display: inline-block;
}

/* Microsoft Edgeで画像検索無効に */
main img {
  pointer-events: none;
}

/* 端末判定 */
@media (max-width: 575px) {
  .pc {
    display: none !important;
  }
  .tablet:not(.sp) {
    display: none !important;
  }
}
@media (min-width: 576px) and (max-width: 1023px) {
  .tablet ~ .pc:not(.tablet) {
    display: none !important;
  }
  .sp:not(.tablet) {
    display: none !important;
  }
}
@media (min-width: 1024px) {
  .sp {
    display: none !important;
  }
  .tablet:not(.pc) {
    display: none !important;
  }
}
/* デバイスが縦長の向き */
@media (orientation: portrait) {
  .landscape {
    display: none !important;
  }
}
/* デバイスが横長の向き */
@media (orientation: landscape) {
  .portrait {
    display: none !important;
  }
}

/* pagetop */
#page-top {
  position: fixed;
  bottom: -200px;
  right: 20px;
  margin: 0;
  padding: 0;
  z-index: 100;
  display: flex;
  flex-wrap: wrap;
  flex-direction: column;
  padding-bottom: 15px;
  transition: bottom 0.5s ease-out;
}

#page-top.is-visible {
  bottom: 10px;
}

@media (max-width:575px){
  #page-top {
    right: 10px;
    padding-bottom: 0;
  }
}

#page-top .pagetop-btn {
  width: 45px;
  height: 45px;
  line-height: 45px;
  font-size: 18px;
  text-align: center;
  text-decoration: none;
  background: rgba(0,0,0,0.5);
  border-radius: 30px;
  color: #fff;
  transition: 0.2s ease;
  margin-left: auto;
  padding-right: 15px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

#page-top .pagetop-btn img {
  margin-top: 2px;
}

#page-top .pagetop-btn::before {
  content: "";
  opacity: 0;
  transition: opacity 0.3s;
}

@media (hover: hover) {
  #page-top .pagetop-btn:hover {
    background: #000;
    transition: width 0.2s;
    width: 120px;
  }
  #page-top .pagetop-btn:hover::before {
    content: "PageTop";
    font-size: 13px;
    margin-left: 5px;
    margin-right: 10px;
    opacity: 1;
  }
}

/* -------------------------
  header 
------------------------- */
header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 100;
  width: 100%;
  height: 70px;
  display: flex;
  background: rgba(20, 65, 133, 0.9);
}

.header__inner {
    position: relative;
    width: 100%;
    height: 100%;
    padding-left: 15px;
    padding-right: 30px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

header .logo {
  display: flex;
  column-gap: 16px;
  align-items: center;
}

@media (hover: hover) {
  header .logo {
    transition: 0.3s;
  }
  header .logo:hover {
    opacity: 0.7;
  }
}

header .logo__img {
  width: 48px;
  max-width: 100%;
}

header .logo__text {
  color: #fff;
  white-space: nowrap;
  font-family: "Oswald", sans-serif;
  font-size: 24px;
  font-weight: 400;
  letter-spacing: -0.01em;
  line-height: 1.1;
}

@media (max-width: 1023px) {
  .header__inner {
    padding-right: 15px;
  }
}

@media (max-width: 767px) {
  header .logo__text {
    font-size: min(4.8vw, 24px)
  }
}


/* -------------------------
  メニューボタン
------------------------- */
.menu-btn {
  display: none;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 32px;
  height: 32px;
  background: none;
  border: none;
  cursor: pointer;
  z-index: 1001;
  position: relative;
}
.menu-btn__line {
  display: block;
  width: 24px;
  height: 2px;
  background-color: #fff;
  margin: 3px 0;
  transition: all 0.3s ease;
  transform-origin: center;
}

.menu-btn.is-open .menu-btn__line:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

.menu-btn.is-open .menu-btn__line:nth-child(2) {
  opacity: 0;
}

.menu-btn.is-open .menu-btn__line:nth-child(3) {
  transform: rotate(-45deg) translate(6.5px, -6px);
}

/* -------------------------
  ナビゲーション
------------------------- */
.gnav__Wrapper {
  height: 100%;
  flex: 1;
}
.gnav__trigger {
  display: none;
}
.gnav {
  height: 100%;
}
.gnav__inner {
  height: 100%;
}
.gnav__list {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: end;
  column-gap: 60px;
}
.gnav__listItem {
  height: 100%;
  position: relative;
}
.gnav__listItem > a {
  display: block;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  color: #fff;
  white-space: nowrap;
  font-family: "Montserrat", sans-serif;
  font-weight: 500;
  text-decoration: none;
  transition: opacity 0.3s ease;
}

.gnav__listItem > a > p {
  font-size: 24px;
  letter-spacing: -0.01em;
  line-height: 1.4;
}
.gnav__listItem > a > span {
   font-size: 11px;
  line-height: 1.1;
}

@media (hover: hover) {
  .gnav__listItem > a:hover {
    opacity: 0.7;
  }
}

@media (max-width: 1023px) {

  .menu-btn {
    display: flex;
  }
  
  .gnav__Wrapper {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    height: 100dvh;
    background-color: rgba(20, 65, 133);
    z-index: 1000;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
    flex: none;
  }
  
  .gnav__Wrapper.is-open {
    opacity: 1;
    visibility: visible;
  }
  
  .gnav__inner {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 0px 20px 40px;
    overflow-y: auto;
  }
  
  .gnav__list {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;
    justify-content: center;
    column-gap: 0;
  }
  
  .gnav__listItem {
    height: auto;
    text-align: center;
  }
  
  .gnav__listItem > a {
    height: auto;
  }
  
  .gnav__listItem > a > p {
    font-size: 32px;
    margin-bottom: 8px;
  }
  
  .gnav__listItem > a > span {
    font-size: 14px;
    opacity: 0.8;
  }
}

@media (min-width: 1024px) {
  /* メニューボタンを非表示 */
  .menu-btn {
    display: none;
  }
}


/* -------------------------
  common 
------------------------- */

main {
  overflow: hidden;
  margin-top: 70px;
  position: relative;
}

.section__inner {
  max-width: 1260px;
  margin: 0 auto;
  padding: 64px 30px;
  padding-bottom: 100px;
}
.content__title {
  font-family: "Montserrat", sans-serif;
  font-weight: 500;
  font-size: 64px;
  letter-spacing: -0.01em;
  line-height: 1.1;
  text-align: center;
  margin-bottom: 0.5em;
}
.content__subtitle {
  font-size: 24px;
  font-weight: bold;
  text-align: center;
  max-width: 800px;
  margin: 0 auto;
  margin-bottom: 0.5em;
  color: #ffd900;
}
.content__text {
  font-size: 16px;
  margin-bottom: 1em;
  max-width: 800px;
  margin: 0 auto;
  margin-bottom: 1em;
  text-align: center;
}

.linkbutton {
  display: inline-block;
  background-color: #FD0061;
  color: #fff;
  border: none;
  border-radius: 30px;
  font-size: 16px;
  padding: 10px 24px;
  cursor: pointer;
  font-weight: bold;
}

.content__comingsoon {
  font-size: 56px;
  margin-top: 60px;
  margin-bottom: 140px;
  letter-spacing: 0;
  color: #ccc;
}
@media (hover: hover) {
  .linkbutton {
    transition: 0.3s;
  }

  .linkbutton:hover {
    opacity: 0.7;
  }
}

@media (max-width: 767px) {
  .section__inner {
    padding: 48px 20px;
  }
  .content__title {
    font-size: 52px;
  }
  .content__subtitle {
    font-size: 18px;
  }
  .content__text {
    font-size: 14px;
  }
  .content__comingsoon {
    font-size: 40px;
  }
}


/* -------------------------
  ABOUT 
------------------------- */

.section--about {
  background-color: #000;
  color: #fff;
  padding-top: 80px;
  padding-bottom: 30px;
  position: relative;
  clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 0);
  background-color: transparent;
}
.section--about::before {
  content: '';
  z-index: -1;
  inset: 0;
  width: 100%;
  height: 100%;
  position: fixed;
  background-size: 1600px auto; 
  background-image: url(../img/tennimu-bg.jpg);
  background-repeat: no-repeat;
  background-position: center 70px;
  background-color: #000;
  filter: brightness(0.8);
}
.about__logo {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-bottom: 70px;
}
.about__logo img {
  max-width: 100%;
  width: 560px;
}
.section--about .content__text {
  text-align: left;
}

/* -------------------------
  PHOTO BOOK 
------------------------- */

.photobook {
  text-align: center;
}
.section--photobook {
  background-color: #FFF;
}
.section__inner--photobook {
  padding-bottom: 40px;
}
.photobook__heading {
  font-size: 36px;
  font-weight: bold;
}
.photobook__subtitle {
  font-size: 18px;
  margin-bottom: 40px;
}
.photobook__groups {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  justify-content: center;
  gap: 0;
}
.photobook-group__inner {

}
.photobook-group__inner--seigaku {
  background-color: #005FB0;
}
.photobook-group__inner--higa {
  background-color: #823F9D;
}
.photobook-group {
  max-width: 640px;
  padding: 30px;
  padding-top: 30px;
  color: #fff;
}
.photobook-group--seigaku{
  margin-left: auto;
}
.photobook-group--higa{
  margin-right: auto;
}
.photobook-group__title {
  font-family: "Oswald", sans-serif;
  font-weight: 700;
  font-size: 80px;
  letter-spacing: -0.01em;
  line-height: 1.1;
  text-align: center;
  margin-bottom: 0.3em;
  color: rgba(255, 255, 255, 0.3);
}
.photobook-group__items {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 30px;
}
.photobook-item {
  position: relative;
  display: flex;
  flex-direction: column;
}
.photobook-item__name {
  font-size: 15px;
  color: #fff;
  font-weight: bold;
  text-align: center;
}
.photobook-item__caption {
  font-size: 13.5px;
  color: #fff;
  text-align: center;
  margin-bottom: 1em;
}
.photobook-item__image {
  width: 100%;
  max-width: 100%;
  margin-top: auto;
  aspect-ratio: 512 / 853;
  position: relative;
}
.photobook-item__image img {
  max-width: 100%;
  width: 100%;
}
@media (max-width: 767px) {
  .photobook__groups {
    grid-template-columns: repeat(1, 1fr);
  }
  .photobook-group {
    max-width: 100%;
    padding: 40px 20px;
  }
  .photobook-group__items {
    gap: 20px;
  }
  .photobook__heading {
    font-size: 28px;
  }
  .photobook-group__title {
    font-size: 64px;
  }
  .photobook-item__name {
    font-size: 14px;
  }
  .photobook-item__caption {
    font-size: 12.5px;
  }
}

.event-notice {
  max-width: 800px;
  margin: 0 auto;
  background-color: #F2F2F2;
  padding: 30px 60px;
  border-radius: 4px;
  margin-top: 40px;
  margin-bottom: 40px;
}

.event-notice__title {
  font-size: 16px;
  font-weight: bold;
  margin-bottom: 1.1em;
  text-align: center;
}
.event-notice__text {
  font-size: 14px;
  text-align: left;
  line-height: 1.5;
  margin-bottom: 1em;
}
.event-notice__text:last-child {
  margin-bottom: 0;
}

@media (max-width: 767px) {
  .event-notice {
    padding: 20px 30px;
  }
  .event-notice__title {
    font-size: 15px;
  }
}


/* -------------------------
  ACCOUNT 
------------------------- */

.account {
  padding: 60px 20px;
  text-align: center;
  background-color: #fff;
}
.account__inner {
  max-width: 755px;
  margin: 0 auto;
}
.account__button {
  margin-bottom: 20px;
}
.account__description {
  font-size: 14px;
  margin-bottom: 30px;
}
.account__steps {
  background-color: #F2F2F2;
  padding: 30px 60px;
  text-align: left;
  border-radius: 4px;
}
.account__steps-title {
  font-size: 18px;
  font-weight: bold;
  margin-bottom: 16px;
  text-align: center;
}
.account__steps-list {
  padding-left: 0.75em;
  margin: 0;
}
.account__steps-item {
  font-size: 14px;
  margin-bottom: 0.25em;
  line-height: 1.4;
  counter-increment: number;
  position: relative;
  padding-left: 2em;
}
.account__steps-item::before {
  content: "（" counter(number) "）";
  position: absolute;
  left: 0;
}

@media (max-width: 767px) {
  .account__steps {
    padding: 20px;
  }
  .account__steps-title {
    font-size: 15px;
  }
}


/* -------------------------
  MOVIE 
------------------------- */

.section--movie {
  background-color: #F2F2F2;
}
.content__subtitle--movie {
  font-size: 40px;
  font-weight: bold;
  text-align: center;
  margin-bottom: 0.5em;
  line-height: 1.2;
}
.movie__items {
  margin: 0 auto;
  margin-top: 40px;
  margin-bottom: 68px;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 40px clamp(20px, 4vw, 52px);
}
.movie-item__image {
  width: 100%;
  max-width: 100%;
  aspect-ratio: 16 / 9;
  background-color: #D9D9D9;
}
.movie-item__caption {
  font-size: 16px;
  margin-top: 0.5em;
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
}
.movie__items--vertical {
  grid-template-columns: repeat(4, 1fr);
}
.movie__items--vertical .movie-item__image{
  aspect-ratio: 9 / 16;
}

@media (max-width: 1023px) {
  .movie__items--vertical {
    grid-template-columns: repeat(2, 1fr);
    width: 74%;
  }
}

@media (max-width: 767px) {

  .movie__items {
    grid-template-columns: repeat(1, 1fr);
    column-gap: 20px;
    margin-top: 20px;
    margin-bottom: 40px;
  }
  .movie__items--vertical {
    grid-template-columns: repeat(2, 1fr);
    width: 100%;
  }
  .content__subtitle--movie {
    font-size: 30px;
  }
  .movie-item__caption {
    font-size: 14px;
  }
}


/* -------------------------
  EVENT 
------------------------- */

.section--event {
  background-color: #323232;
  color: #fff;
}
.section--event .content__subtitle {
  color: #fff;
}
.event {
  display: grid;
  grid-template-columns: 340px 1fr;
  column-gap: 60px;
  max-width: 1060px;
  margin-top: 48px;
  align-items: center;
}
.event__item {
  width: 100%;
}
.event__image {
  width: 100%;
  max-width: 100%;
  aspect-ratio: 340 / 468;
  background-color: #D9D9D9;
  margin: 0 auto;
}
.event__item {
  display: flex;
  flex-direction: column;
  gap: 3em;
}
.event__text {
  font-size: 15px;
  line-height: 1.3;
}
.event__button-wrap {
  width: 100%;
}
@media (max-width: 1023px) {
  .event {
    column-gap: 40px;
    margin-top: 30px;
  }
  .event__image {
    margin-bottom: 30px;
  }
}

@media (max-width: 767px) {
  .event {
    grid-template-columns: 1fr;
  }
  .event__image {
    max-width: 200px;
  }
  .event__button-wrap {
    text-align: center;
  }
  .event__text {
    font-size: 14px;
  }
}

/* -------------------------
  CAST PROFILE
------------------------- */
.section--cast {
  background-color: #FFF;
}
.cast__items {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 40px 38px;
  max-width: 920px;
  margin: 0 auto;
  margin-top: 40px;
  margin-bottom: 40px;
}
.cast-item__image {
  width: 100%;
  max-width: 100%;
  aspect-ratio: 1 / 1;
  background-color: #D9D9D9;
  margin: 0 auto;
  border-radius: 50%;
}
.cast-item__info {
  font-size: 15px;
  font-weight: bold;
  text-align: center;
  margin-top: 15px;
}

@media (max-width: 767px) {
  .cast__items {
      grid-template-columns: repeat(2, 1fr);
  }
  .cast-item__image {
    max-width: 240px;
  }
  .cast-item__info {
    font-size: 14px;
  }
}

@media (hover: hover) {
  .cast-item .cast-item__image {
    transition: 0.15s;
  }

  .cast-item:hover .cast-item__image {
    opacity: 0.7;
  }

  .photobook-item__image::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.2);
    opacity: 0;
    transition: opacity 0.15s ease;
    pointer-events: none;
  }

  .photobook-item:hover .photobook-item__image::after {
    opacity: 1;
  }
}


/* -------------------------
  footer 
------------------------- */

footer {
  color: var(--color-footer_txt);
  text-align: center;
  padding: 70px 30px 50px;
  position: relative;
  background: var(--color-footer_bg);
}
@media (max-width: 575px) {
  footer {
    padding: 40px 20px 30px;
  }
}

footer .inner {
  position: relative;
  max-width: 800px;
  margin: 0 auto 0;
  z-index: 10;
}

footer .register {
  padding-top: 40px;
}
@media (max-width: 575px) {
  footer .register {
    padding-top: 30px;
  }
}
footer .footer-info {
  padding: 0 0 40px;
  /* border-top: 1px solid rgba(0, 0, 0, 0.2); */
  border-bottom: 1px solid rgba(255, 255, 255, 0.5);
}
footer .footer-inner {
  margin: 0 auto;
  margin-top: 30px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
@media (min-width: 768px) {
  footer .footer-inner {
    text-align: center;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
  }
}
footer h4 {
  margin-bottom: 1em;
  font-size: 2rem;
  font-weight: bold;
}
footer p {
  font-size: 1.4rem;
  line-height: 1.8;
}
@media (max-width: 575px) {
  footer h4 {
    font-size: 1.8rem;
  }
    footer p {
    font-size: 1.3rem;
    text-align: justify;
    line-height: 1.7;
  }
}
footer .logo {
  margin: 2.5em 0 1.5em;
}
@media (max-width: 575px) {
  footer .logo {
    text-align: center;
  }
}
footer .logo a img {
  width: 200px;
  height: auto;
}
footer .copyright,
footer address {
  opacity: 1;
}
footer .copyright {
  font-size: 1.2rem;
}
footer address {
  margin-top: 1em;
  font-size: 1.1rem;
}
@media (max-width: 575px) {
  footer .inner {
    padding: 0;
  }
}

/* footer-btn */
.btn-info {
  /* color: hsl(0, 0%, 100%); */
  color: var(--color-footer_btn_txt);
  font-size: 15px;
  font-weight: bold;
  text-align: center;
  position: relative;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  cursor: pointer;
  width: 100%;
  max-width: 320px;
  height: 50px;
  line-height: 50px;
  border-radius: 4px;
  transition: 0.15s ease;
  display: inline-block;
  border: none;
  background: var(--color-footer_btn_bg);
}
.btn-info:before {
	display: block;
	content: "";
	position: absolute;
	top: 50%;
	right: 15px;
	width: 0;
	height: 0;
	margin-top: -5px;
	border: 5px solid transparent;
	border-left: 5px solid var(--color-footer_btn_txt);
}
@media (max-width: 575px) {
  .btn-info {
    font-size: 14px;
  }
}
@media (hover: hover) {
  .btn-info:hover {
    opacity: 0.7;
  }
}
@media (hover: none) {
  .btn-info:active {
    opacity: 0.7;
  }
}
