/**************************************************************************************
*****font*****
**************************************************************************************/
:root {
  --white: #ffffff;
  --black: #000000;
  --red: #ff0000;
  --yellow: #ffee00;
}

@font-face {
  font-family: "Note Sans JP";
  src: url(../library/NotoSansJP-VariableFont_wght.ttf);
}

@font-face {
  font-family: "Dela Gothic One";
  src: url(../library/DelaGothicOne-Regular.ttf);
}

@font-face {
  font-family: "M Plus 1";
  src: url(../library/MPLUS1-VariableFont_wght.ttf) format("ttf-variations");
}

body {
  font-family: "M Plus 1", "Note Sans JP", Arial, Helvetica, sans-serif;
  font-weight: normal;
  font-style: unset;
  text-decoration: none;
  position: relative;
}

a {
  font-style: unset;
  text-decoration: none;
}

.emphasis {
  font-family: "Dela Gothic One";
  font-weight: normal;
}

.bold {
  font-weight: 900;
}

/**************************************************************************************
*****common*****
**************************************************************************************/
html {
  overflow-x: hidden;
  position: relative;
}

img {
  width: auto;
  height: 100%;
  display: block;
}

ul,
ol {
  list-style: none;
}

.sp {
  display: none;
}

@media screen and (max-width: 992px) {
  .sp {
    display: block;
  }

  .pc {
    display: none;
  }
}

/**************************************************************************************
*****header*****
**************************************************************************************/
header {
  z-index: 20;
  position: fixed;
  width: 100%;
  height: 60px;
  top: 0;
}

header.sp {
  background: white;
  border-bottom: 3px solid black;
}

header h2 {
  height: 100%;
}

header img.sp_logo_img {
  height: 100%;
  width: auto;
  padding: 8px;
}

header button.menu_button {
  position: absolute;
  height: 80px;
  width: 80px;

  top: 50%;
  right: -20px;
  transform: translateY(-50%);

  border-radius: 50%;
  background-color: #005bac;
  border: 2px solid black;
  transition: border 200ms ease-out;

  z-index: 1;
}

header button.menu_button.open {
  border: 40px solid black;
}

header .header_menu_button.tri_line {
  position: absolute;
  display: block;

  width: 20px;
  height: 16px;

  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

header .header_menu_button_line {
  position: absolute;
  left: 50%;
  translate: -50% 0;
  display: block;
  width: 20px;
  height: 2px;
  border-radius: 1px;
  background-color: white;
  transition: top 1000ms ease-in-out, bottom 1000ms ease-in-out, transform 1000ms ease-in-out, opacity 500ms,
    height 500ms, width 500ms;
}

header .header_menu_button_line.top_line {
  top: 0;
}

header .open .header_menu_button_line.top_line {
  top: 7px;
  transform: rotate(855deg);
}

header .header_menu_button_line.middle_line {
  top: 7px;
  opacity: 1;
}

header .open .header_menu_button_line.middle_line {
  width: 75px;
  height: 0;
  opacity: 0;
}

header .header_menu_button_line.bottom_line {
  bottom: 0;
}

header .open .header_menu_button_line.bottom_line {
  bottom: 7px;
  transform: rotate(-855deg);
}

/***********sp_menu***********/
header .sp_menu {
  position: absolute;
  overflow-x: hidden;
  overflow-y: auto;

  left: 0;
  right: 0;
  top: 100%;
  bottom: 0;

  border-top: 3px solid black;
  background-color: #005bac;
  transition: bottom 500ms cubic-bezier(0.075, 0.82, 0.165, 1);

  background-image: url(../assets/images/dot_gradation_rad_fromRB_K.png);
  background-position: right bottom;
  background-size: auto;
}

header .sp_menu.open {
  bottom: calc(-100dvh + 100%);
}

header ol.main_menu {
  display: block;
  max-width: 300px;
  margin: auto;
}

header ol.main_menu li {
  position: relative;
  margin: 6px 12px;
  border: 3px solid black;
  border-bottom-width: 5px;
  text-wrap: nowrap;

  background-color: #fff;
  background-repeat: repeat;
  background-image: radial-gradient(#00000022 25%, transparent 25%), radial-gradient(#00000022 25%, transparent 25%);
  background-size: 8px 8px;
  background-position: 0 0, 4px 4px;
}

header ol.main_menu li a,
header ol.main_menu li label {
  display: block;
  width: 100%;
  padding: 8px 12px;
}

header ol.main_menu li label {
  cursor: pointer;
}

header ol.main_menu li:hover {
  margin-top: 8px;
  border-bottom-width: 3px;

  background-image: radial-gradient(#00000022 35%, transparent 35%), radial-gradient(#00000022 35%, transparent 35%);
}

header ol.accordion_menu {
  position: relative;
  margin: 0;
  border: 0px solid black;
  border-top-width: 5px;

  background: white;
}

header ol.accordion_menu::before {
  content: "";
  position: absolute;

  top: 0;
  bottom: 0;
  left: 0;
  right: 0;

  background-image: url(../assets/images/dot_gradation_lin_LtoR_K.png);
  background-repeat: repeat-y;
  background-size: 100px;
  background-position: left;

  opacity: 0.1;
}

header ol.accordion_menu li {
  position: relative;
  margin: 0;
  border: 0px solid black;
  border-bottom-width: 2px;
  text-wrap: nowrap;

  font-family: "M Plus 1", "Note Sans JP", Arial, Helvetica, sans-serif;
  font-weight: 900;
  background: none;
}

header ol.main_menu li label::before {
  content: "";
  position: absolute;
  width: 15px;
  height: 10px;

  top: 15px;
  right: 15px;

  border: 0px solid black;
  border-bottom-width: 2px;

  clip-path: polygon(0% 0%, 100% 0%, 50% 100%);
  background: black;

  transform: rotate(90deg);
  transition: transform 200ms;
}

header input[type="checkbox"] {
  display: none;
}

header input[type="checkbox"] + label + ol.accordion_menu {
  display: none;
}

header input[type="checkbox"]:checked + label + ol.accordion_menu {
  display: block;
}

header input[type="checkbox"]:checked + label::before {
  transform: rotate(0deg);
}

header ol.accordion_menu li:hover {
  margin: 0;
  border-bottom-width: 2px;

  background-image: none;
}

header ol li a {
  color: black;
}

header ol li a::after,
header ol li label::after {
  position: absolute;
  pointer-events: none;
  content: "";

  width: auto;
  height: auto;

  left: 0;
  right: 100%;
  top: 0;
  bottom: 0;

  overflow: hidden;
  background-color: yellow;
  mix-blend-mode: multiply;

  transition: right 100ms ease-out;
}

header ol li a:hover::after,
header ol li label:hover::after {
  right: 0;
  transition: right 300ms cubic-bezier(0.075, 0.82, 0.165, 1);
}

header nav.sp_menu img {
  text-align: center;

  width: 60%;
  max-width: 300px;
  height: auto;

  margin: auto;
  margin-top: 24px;
}

header nav p.address {
  text-align: center;

  width: 70%;
  color: white;

  margin: 24px auto 64px auto;
}

/**************************************************************************************
*****aside*****
**************************************************************************************/

aside {
  position: fixed;
  width: 190px;
  height: 100%;
  top: 0;
  z-index: 15;

  background-color: white;
  background-image: url(../assets/images/dot_gradation_rad_fromRB_K.png);
  background-position: right bottom;
  background-size: auto;
  border-right: 3px solid black;
}

aside img.logo {
  width: 100%;
  padding: 40px 8px 24px 8px;
  height: auto;
}

aside .character_img_container {
  position: absolute;
  display: flex;
  align-items: end;

  right: 0;
  bottom: 0;

  max-width: 100%;
  width: fit-content;
  height: calc(100% - 536px);

  padding: 40px 16px 8px 16px;
}

aside img.header_characters {
  display: block;
  max-width: 100%;
  width: auto;
  height: auto;
  max-height: 100%;
  aspect-ratio: 0.73/1.164;
}

aside nav {
  overflow-x: hidden;
  overflow-y: auto;
  height: 100%;
}

aside ol.main_menu {
  height: min-content;
}

aside ol.main_menu li {
  position: relative;

  margin: 6px 12px;
  border: 3px solid black;
  border-bottom-width: 5px;
  text-wrap: nowrap;

  background-color: #fff;
  background-repeat: repeat;
  background-image: radial-gradient(#00000022 25%, transparent 25%), radial-gradient(#00000022 25%, transparent 25%);
  background-size: 8px 8px;
  background-position: 0 0, 4px 4px;
}

aside ol li a {
  display: block;
  color: black;
  width: 100%;
  padding: 8px;
}

aside ol li::after {
  position: absolute;
  pointer-events: none;
  content: "";

  width: auto;
  height: auto;

  left: 0;
  right: 100%;
  top: 0;
  bottom: 0;

  overflow: hidden;
  background-color: yellow;
  mix-blend-mode: multiply;

  transition: right 100ms ease-out;
}

aside ol.main_menu li:hover::before,
aside ol.main_menu li.hovered::before {
  position: absolute;
  content: "";

  width: 6px;
  height: 12px;

  right: -15px;
  top: 50%;
  transform: translateY(-50%);

  background-color: black;
  clip-path: polygon(100% 0%, 100% 100%, 0% 50%);
}

aside ol.main_menu li:hover,
aside ol.main_menu li.hovered {
  margin-top: 8px;
  border-bottom-width: 3px;

  background-image: radial-gradient(#00000022 35%, transparent 35%), radial-gradient(#00000022 35%, transparent 35%);
}

aside ol li:hover::after,
aside ol.main_menu li.hovered::after {
  right: 0;
  transition: right 300ms cubic-bezier(0.075, 0.82, 0.165, 1);
}

@media (max-height: 800px) {
  aside .character_img_container {
    display: none;
  }
}

/***********drawer_menu***********/

aside .drawer_menu_container {
  overflow-x: hidden;
  overflow-y: auto;
  /* display: none; */
  width: auto;
  height: calc(100% - 64px);
  position: absolute;

  left: 100%;
  top: 32px;
  bottom: 32px;
  right: -250px;

  border: 2px solid black;
  border-left-width: 3px;
  background-color: white;
  transition: right 200ms;
}

aside .drawer_menu_container::before {
  content: "";
  position: absolute;

  top: 0;
  bottom: 0;
  left: 0;
  right: 0;

  background-image: url(../assets/images/dot_gradation_lin_LtoR_K.png);
  background-repeat: repeat-y;
  background-size: 100px;
  background-position: left;

  opacity: 0.1;
}

aside .drawer_menu_container.hidden {
  visibility: hidden;
  right: 0px;
}

aside .drawer_menu.hidden {
  display: none;
}

aside ol.drawer_menu li {
  position: relative;
  display: flex;
  align-items: center;

  height: 52px;
  border-bottom: 2px solid black;

  text-wrap: nowrap;
}

aside ol.drawer_menu li a {
  display: block;
  width: 100%;
  height: 52px;
}

/**************************************************************************************
*****footer*****
**************************************************************************************/

footer {
  position: fixed;
  display: flex;
  justify-content: space-between;
  width: calc(100% - 190px);
  height: 40px;
  right: 0;
  bottom: 0;
  background-image: url(../assets/images/footer_bg.png);
  background-repeat: repeat;
  color: white;
  z-index: 10;
}

footer nav {
  display: flex;
  align-items: end;
  justify-content: end;
  height: 100%;
}

footer ol {
  padding: 8px;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: end;
}

footer ol li {
  padding: 0px 10px;
  line-height: 16px;
}

footer ol li a {
  color: white;
}

footer ol li + li {
  border-left: 1px solid white;
}

footer .copyright {
  padding: 8px;
  align-self: center;
}

footer .img_block {
  align-self: end;
  display: flex;
  height: 60px;
}

footer .img_block a {
  height: 100%;
}

footer .img_block .X_button {
  aspect-ratio: 1/1;
  background: var(--black);
}

footer .img_block .instagram_button {
  aspect-ratio: 1/1;
  background: var(--white);
}

footer .img_block .X_button img,
footer .img_block .instagram_button img {
  padding: 25%;
}

footer nav {
  justify-content: space-between;
  width: inherit;
  height: 100%;
}

@media (max-width: 992px) {
  footer {
    width: 100%;
  }

  footer * {
    font-size: 10px;
  }

  footer ol,
  footer .copyright {
    align-self: start;
    padding: 2px;
  }

  footer .copyright {
    padding-left: 12px;
  }

  footer .img_block {
    display: flex;
    max-height: 100%;
    max-width: 50%;
  }

  footer nav {
    align-items: start;
    flex-direction: column-reverse;
  }
}

@media (max-width: 576px) {
  footer {
    height: 26px;
  }

  footer * {
    font-size: 8px;
  }

  footer .copyright {
    font-size: 5px;
    padding: 2px;
  }

  footer ol {
    padding: 0 2px;
  }

  footer ol li {
    padding: 0px 2px;
  }
}

/**************************************************************************************
*****main section container wrapper content*****
**************************************************************************************/
main {
  margin-left: 190px;
  margin-bottom: 30px;
}

.container {
  text-align: center;
  margin: auto;
  max-width: 1000px;
  padding: 0 24px;
}

.wrapper {
  display: flex;
  justify-content: space-between;
}

@media (max-width: 992px) {
  main {
    margin-left: 0;
    margin-top: 60px;
  }

  .wrapper {
    display: block;
  }

  .container {
    margin: auto 3%;
    padding: 0;
  }
}

@media (max-width: 992px) {
  main {
    margin-bottom: 26px;
  }
}

/**************************************************************************************
***** common decoration *****
**************************************************************************************/

/***使用例**
<h2 class="emphasis">サブタイトル<span class="border"></span></h3>  */

section h1 span.border,
section h3 span.border,
section h4 span.border {
  position: relative;
  height: 0;
  width: 4rem;
  margin-left: 6px;
  border: 2px solid black;
  display: block;
}

section h1 span.border::before,
section h3 span.border::before,
section h4 span.border::before {
  content: "";
  position: absolute;
  height: 0;
  width: 0;
  left: -7px;
  top: -2px;
  border: 2px solid #ff6666;
  display: inline-block;
}

/* ズーム500%まで対応レスポンシブ */
@media (max-width: 240px) {
  footer .img_block {
    display: contents;
  }

  footer .copyright {
    font-size: 3px;
    padding: 0px;
  }

  footer * {
    font-size: 8px;
  }

  footer ol li {
    padding: 0px;
    line-height: 8px;
  }
}
