:root {
  --font-scale: 1;
  --aspect-base: calc(100vw / 1800);
  --aspect-content: calc(100vw / 1080);
  --header-h: 88px;
  --accent-color: #e60012;
}

* {
  caret-color: transparent;
  user-select: text;
  outline: 0 none;
}

html {
  box-sizing: inherit;
  -webkit-text-size-adjust: 100%;
  padding: 0;
  margin: 0;
  box-sizing: border-box;
  max-width: none;
  font-family: "Noto Serif JP", "Noto Serif", serif;
  color: rgba(255, 255, 255, 0.9);
  font-weight: normal;
}

body {
  background-origin: content-box;
  background-color: black;
  background-image: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url("/images/background-image.svg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-attachment: fixed;
  width: 100%;
  height: 100%;
  padding: 0;
  margin: 0;
  box-sizing: inherit;
}

a {
  text-decoration: none;
  color: #fff;
}

b {
  font-weight: bold;
}

p {
  margin: 0;
}

.hidden {
  display: none;
}

.content-loading {
  width: 100%;
}

.page-wrapper {
  width: 100%;
  height: 100%;
}

.page-content-wrapper {
  display: flex;
  flex-direction: column;
}

.section-wrapper {
  width: 100%;
  display: flex;
  justify-content: center;
}

.section-logo {
  width: 100%;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  flex-grow: 0;
}

.section-logo img {
  max-width: 100%;
  height: auto;
  display: block;
}

.content-wrapper {
  width: 100%;
  flex-grow: 1;
  justify-content: center;
}

canvas {
  display: block;
  width: 100%;
  height: 100%;
  margin: auto;
  position: fixed;
  overflow: hidden;
  pointer-events: none;
  z-index: 999;
  transition: 1s;
}

.modal-wrapper {
  display: none;
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 998;
  background-color: rgba(0, 0, 0, 0.8);
  justify-content: center;
  align-items: center;
}
.modal-box {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: flex-start;
}
.modal-movie {
  max-width: 1280px;
  max-height: 720px;
  min-width: 360px;
  min-height: 200px;
  width: calc(var(--aspect-base) * 1280);
  height: calc(var(--aspect-base) * 720);
  background-color: #000;
  position: relative;
  display: flex;
}
.modal-loader-wrapper {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 999;
  display: flex;
  justify-content: center;
  align-items: center;
}
.modal-movie-item {
  width: 100%;
  height: 100%;
}
.modal-close {
  cursor: pointer;
  margin-left: 16px;
}
.modal-margin {
  width: 60px;
}
.modal-movie-youtube {
  width: 100%;
  height: 100%;
}

.is-show {
  display: flex !important;
}

.modal-loader-wrapper {
  display: none;
}

.modal-loader {
  width: 44px;
  height: 44px;
  border: 4px rgba(255, 255, 255, 0.25) solid;
  border-top: 4px rgba(255, 255, 255, 1) solid;
  border-radius: 50%;
  -webkit-animation: load_anim 0.6s infinite linear;
  animation: load_anim 0.6s infinite linear;
}
@-webkit-keyframes load_anim {
  from {
    -webkit-transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(359deg);
  }
}
@keyframes load_anim {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}

br.sp {
  display: none;
}
br.pc {
  display: flex;
}

.purchase-button {
  position: fixed;
  right: 20px;
  bottom: 20px;
  text-align: center;
  z-index: 50;
}

.purchase-button a {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.purchase-button img {
  width: clamp(100px, min(var(--aspect-base) * 270), 270px);
  height: auto;
  cursor: pointer;
}

.purchase-button .button-text {
  position: absolute;
  left: 60%;
  transform: translateX(-50%);
  color: #fff;
  font-weight: bold;
  text-align: center;
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.6);
  pointer-events: none;
}

.purchase-button .button-text::before,
.purchase-button .button-text::after {
  position: absolute;
  left: 30%;
}

.purchase-button .button-text--bottom {
  bottom: 25%;
  font-size: clamp(24px, min(var(--aspect-base) * 32), 32px);
  width: 100%;
  color: #fff;
  text-shadow:
    -2px -2px 0 #ff0000,
    0 -2px 0 #ff0000,
    2px -2px 0 #ff0000,
    -2px 0 0 #ff0000,
    2px 0 0 #ff0000,
    -2px 2px 0 #ff0000,
    0 2px 0 #ff0000,
    2px 2px 0 #ff0000;
}

@media only screen and (max-width: 960px) {
  br.sp {
    display: flex;
  }

  br.pc {
    display: none;
  }

  .modal-box {
    flex-direction: column-reverse;
    align-items: flex-end;
  }
  .modal-margin {
    width: 0;
    height: 40px;
  }
  .modal-close {
    margin-left: 0;
    margin-bottom: 16px;
  }
  .modal-close svg {
    width: 24px;
    height: 24px;
  }
  .purchase-button {
    scale: 0.8;
    right: 0;
    bottom: 0;
    z-index: 5;
  }
  .purchase-button .button-text--bottom {
    bottom: 20px;
  }
  .purchase-button .button-text::before,
  .purchase-button .button-text::after {
    position: absolute;
    left: 10%;
  }
}
