@charset "UTF-8";
@import url("https://fonts.googleapis.com/css2?family=Kiwi+Maru:wght@400;500&display=swap");
/* ======================================
   Font
======================================== */
html {
  scroll-behavior: smooth;
  font-size: 120%; }
  @media screen and (min-width: 640px) {
    html {
      font-size: 100%; } }

body {
  font-family: "Kiwi Maru", serif;
  color: #333333;
  font-style: normal;
  font-weight: 400;
  line-height: 1.8;
  font-feature-settings: "palt" 1;
  letter-spacing: -1px; }

h2, h3, h4, h5, h6 {
  font-weight: 500 !important;
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: keep-all; }

a {
  transition: 0.15s;
  text-decoration: none; }

a, a:focus, a:active {
  color: #00b0ff; }

a:hover {
  color: #0064AE; }

/* ======================================
   Base
======================================== */
#wrapper {
  width: 100%;
  padding: 0 !important;
  margin: 0 !important;
  overflow: hidden;
  position: relative; }
  @media screen and (max-width: 960px) {
    #wrapper {
      width: 960px; } }
  @media screen and (max-width: 640px) {
    #wrapper {
      width: 640px; } }

.container {
  width: 100%;
  position: relative;
  padding: 0 !important;
  margin: 0 !important; }

.contents {
  padding: 0;
  margin: auto;
  max-width: 100%;
  width: 100%; }
  @media screen and (min-width: 1280px) {
    .contents {
      width: 1280px; }
      .contents.wide {
        width: 1600px; } }

/* ======================================
   Navigation
======================================== */
.hamburger_menu {
  cursor: default;
  position: fixed;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  width: 2rem;
  height: 2rem;
  top: 1rem;
  right: 1rem;
  margin: 0;
  padding: 0;
  line-height: 0;
  z-index: 999999;
  opacity: 0;
  transition: 0.5s; }
  .hamburger_menu.show {
    cursor: pointer;
    opacity: 1; }
  .hamburger_menu span {
    display: block;
    margin: 0 !important;
    padding: 0;
    height: 4px;
    width: 2rem;
    background-color: #00b0ff;
    position: relative;
    transition: 0.5s; }
    .hamburger_menu span::before, .hamburger_menu span::after {
      content: '';
      display: block;
      margin: 0 !important;
      padding: 0;
      height: 4px;
      width: 2rem;
      background-color: #00b0ff;
      position: absolute;
      top: 0;
      transform: translateY(0);
      transform-origin: center center 0;
      transition: 0.5s; }
    .hamburger_menu span::before {
      transform: translateY(-10px); }
    .hamburger_menu span::after {
      transform: translateY(10px); }
  .hamburger_menu:hover span::before {
    transform: translateY(-12px); }
  .hamburger_menu:hover span::after {
    transform: translateY(12px); }

.hamburger_menu.close span {
  background-color: transparent; }
  .hamburger_menu.close span::before {
    transform: rotate(135deg); }
  .hamburger_menu.close span::after {
    transform: rotate(-135deg); }

.global_nav {
  position: fixed;
  z-index: 99999;
  top: 0;
  left: 100%;
  right: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  display: block;
  margin: 0;
  background-color: rgba(255, 255, 255, 0.9);
  opacity: 0;
  transition: opacity 0.5s;
  padding: 0;
  margin: auto; }
  .global_nav .nav_wrap {
    width: 100%;
    height: 100%;
    margin: auto;
    display: flex;
    align-items: center;
    justify-content: center; }
    .global_nav .nav_wrap .nav {
      width: 800px;
      max-width: 90%;
      height: 80%;
      margin: auto;
      display: flex;
      align-items: center;
      justify-content: center;
      visibility: hidden;
      z-index: 99999;
      background-color: #FFFFFF; }
  .global_nav.open {
    opacity: 1;
    left: 0; }
    .global_nav.open .nav {
      visibility: visible; }

ul.menu {
  text-align: center;
  margin: auto;
  padding: 0; }
  ul.menu li {
    display: block;
    padding: 0;
    margin: 2rem 0; }
    ul.menu li a {
      display: block;
      color: #000000; }
      ul.menu li a p {
        font-size: 1.4rem;
        font-weight: 500;
        line-height: 1.4;
        letter-spacing: -2px; }
        @media screen and (min-width: 640px) {
          ul.menu li a p {
            font-size: 2rem; } }
      ul.menu li a::after {
        content: '';
        display: block;
        width: 3em;
        height: 4px;
        background-color: #00b0ff;
        margin: 0.5rem auto 0 auto;
        transition: 0.5s; }
      ul.menu li a:hover::after {
        width: 100%; }

/* ======================================
   Main
======================================== */
section {
  padding: 0; }

.md {
  margin: auto;
  text-align: center;
  max-width: 90%; }
  .md + .md {
    margin-top: 2rem; }
  .md p {
    display: inline-block;
    line-height: 1.4; }
  .md h2 {
    display: inline-block;
    position: relative;
    padding: 0 2rem;
    margin: 0; }
    .md h2 p {
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
      font-size: 2rem;
      letter-spacing: -3px;
      line-height: 1.4;
      min-height: 3.5em;
      min-width: 8em;
      max-width: 100%;
      white-space: pre-wrap;
      word-break: keep-all; }
      @media screen and (min-width: 640px) {
        .md h2 p {
          font-size: 2.8rem; } }
    .md h2::before, .md h2::after {
      content: '';
      display: inline-block;
      width: 1px;
      height: 100%;
      background-color: #000000;
      position: absolute;
      top: 0;
      margin: 0; }
    .md h2::before {
      left: 0;
      transform: rotate(-25deg); }
    .md h2::after {
      right: 0;
      transform: rotate(25deg); }
  .md h3 {
    display: inline-block;
    font-size: 1.3rem; }

.bg-blue {
  background-color: #e2f5f5;
  margin: 0;
  padding: 6rem 0; }

.bg-green {
  background-color: #bee641;
  margin: 0;
  padding: 6rem 0; }

.bg-gray {
  background-color: #EDEDF0;
  margin: 0;
  padding: 6rem 0; }

span.narrow {
  letter-spacing: -2px; }

#about .contents {
  padding: 10rem 2rem 5rem 2rem; }
  @media screen and (min-width: 640px) {
    #about .contents {
      padding-top: 16rem; } }
#about .page_navi {
  width: 960px;
  max-width: 100%;
  grid-gap: 2rem;
  margin: 0 auto 2rem auto; }
  #about .page_navi li {
    display: block; }
    #about .page_navi li a {
      width: 100%; }
      #about .page_navi li a p {
        background-color: #bee641;
        border-radius: 4rem;
        color: #000000;
        height: 23rem;
        width: 80%;
        margin: auto;
        padding: 3rem 1rem;
        display: flex;
        align-items: center;
        font-size: 2rem;
        line-height: 1.6;
        writing-mode: vertical-rl; }
      #about .page_navi li a img {
        width: 100%;
        margin-top: -8rem; }
      #about .page_navi li a::after {
        content: '';
        display: block;
        width: 2rem;
        height: 2rem;
        margin: 0.5rem auto;
        background-image: url("../images/navi_arrow.svg");
        background-size: 100%;
        background-position: center top;
        background-repeat: no-repeat; }
      #about .page_navi li a:hover::after {
        animation: 1s fuwari infinite; }
#about .heart {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 400px;
  height: 300px;
  margin: auto;
  position: relative; }
  #about .heart ul {
    position: relative;
    z-index: 99;
    font-size: 1.7rem;
    font-weight: 500;
    margin-top: -1.5rem;
    letter-spacing: -2px; }
  #about .heart img {
    width: 300px;
    margin: auto;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
    z-index: 0; }
#about .merit {
  grid-gap: 4rem; }
  #about .merit img {
    width: 100%;
    height: 60%;
    object-fit: contain;
    object-position: center bottom; }
  #about .merit h3 {
    font-size: 1.8rem;
    padding: 0 1rem;
    margin-top: 1.5rem; }
  #about .merit p {
    font-weight: 500;
    font-size: 1.3rem;
    padding: 0 1rem;
    margin-top: 1rem; }
    @media screen and (min-width: 640px) {
      #about .merit p {
        padding: 0 1rem;
        font-size: 1.1rem; } }

#introduce {
  padding-top: 4rem;
  padding-bottom: 2rem; }
  #introduce .lead {
    text-align: center;
    font-weight: 500;
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: keep-all;
    font-size: 1.4rem; }
    @media screen and (min-width: 640px) {
      #introduce .lead {
        font-size: 1.2rem; } }
    #introduce .lead p {
      padding: 0 !important;
      margin: 0 !important; }

#course {
  padding-top: 10rem;
  background-color: #e2f5f5; }
  #course .contents {
    position: relative;
    padding: 10rem 2rem 2rem 2rem; }
  #course .course_img {
    display: block;
    max-width: 70%;
    width: 300px;
    margin: auto;
    position: absolute;
    top: -7rem;
    left: 0;
    right: 0; }
  #course .tab_wrap {
    position: relative;
    margin: 4rem 0;
    padding: 90px 0 0 0;
    width: 100%; }
    #course .tab_wrap .back {
      display: block;
      width: calc(100% - 10px);
      margin: 0 0 0 auto;
      z-index: 0;
      padding: 0 10px 10px 0;
      min-height: 100%;
      background-color: #646464;
      border: 1px solid #000;
      transition: 0.5s; }
    #course .tab_wrap .front {
      z-index: 99;
      margin: -90px 0 0 -10px; }
      #course .tab_wrap .front h3 {
        display: inline-block;
        min-height: 60px;
        padding: 1rem 0 0 1rem;
        border-top: 1px solid #000;
        border-left: 1px solid #000;
        background-color: #FFFFFF;
        position: relative;
        z-index: 99; }
        @media screen and (min-width: 640px) {
          #course .tab_wrap .front h3 {
            padding: 1rem 0 0 2rem; } }
        #course .tab_wrap .front h3::before, #course .tab_wrap .front h3::after {
          content: '';
          width: 40px;
          height: 100%;
          position: absolute;
          top: 0;
          bottom: 0;
          margin: auto;
          line-height: 0; }
        #course .tab_wrap .front h3::before {
          clip-path: polygon(0 0, 0% 100%, 100% 100%);
          width: 40px;
          background-color: #FFFFFF;
          left: 100%;
          z-index: 99; }
        #course .tab_wrap .front h3::after {
          clip-path: polygon(0 0, 1px 0, 100% 100%, 0% 100%);
          width: 41px;
          background-color: #000000;
          left: 100%;
          z-index: 0; }
        #course .tab_wrap .front h3 p {
          display: inline-block;
          min-width: 18rem;
          padding: 0 0 0.2rem 0;
          font-size: 1.6rem;
          font-weight: 500;
          letter-spacing: -2px;
          border-bottom: 6px solid #FFFFFF; }
          @media screen and (min-width: 640px) {
            #course .tab_wrap .front h3 p {
              font-size: 1.8rem;
              padding: 0 1rem 0.2rem 1rem; } }
      #course .tab_wrap .front .lead {
        margin: 0;
        margin-top: -2px;
        border: 1px solid #000;
        background-color: #FFFFFF;
        padding: 2rem;
        font-size: 1.2rem;
        font-weight: 500;
        letter-spacing: -1px;
        line-height: 1.8; }
        @media screen and (min-width: 640px) {
          #course .tab_wrap .front .lead {
            padding: 2.5rem 4rem; } }
    #course .tab_wrap .detail {
      padding: 0;
      margin: 0 auto;
      width: 95%;
      max-height: 0;
      /* 初期は非表示 */
      overflow: hidden;
      /* はみ出しを隠す */
      opacity: 1;
      transition: 0.5s; }
      #course .tab_wrap .detail h4 {
        background-color: #DDDDDD;
        color: #FFFFFF;
        font-size: 1.4rem;
        text-align: center;
        padding: 0.2rem; }
      #course .tab_wrap .detail ul {
        grid-gap: 2rem; }
        #course .tab_wrap .detail ul li + li {
          border-top: 1px solid #000000;
          border-left: 0; }
          @media screen and (min-width: 640px) {
            #course .tab_wrap .detail ul li + li {
              border-left: 1px solid #000000;
              border-top: 0; } }
        #course .tab_wrap .detail ul li h5 {
          text-align: center;
          font-size: 1.3rem;
          margin: 1rem 0; }
        #course .tab_wrap .detail ul li p {
          font-weight: 500;
          padding: 0 1rem; }
    #course .tab_wrap button {
      cursor: pointer;
      width: 8rem;
      height: 3rem;
      display: block;
      margin: -2px auto 0 auto;
      background-color: #646464;
      border: 1px solid #000;
      border-top: 0;
      border-radius: 0 0 10px 10px;
      background-image: url("../images/tab_open.png");
      background-size: 50%;
      background-position: center;
      background-repeat: no-repeat; }
      @media screen and (min-width: 640px) {
        #course .tab_wrap button {
          width: 6rem;
          height: 2rem; } }
    #course .tab_wrap.active .back {
      background-color: #ebebeb; }
    #course .tab_wrap.active .detail {
      max-height: 1000px;
      /* 想定される高さより少し大きめに設定 */
      opacity: 1;
      margin: 2rem auto; }
    #course .tab_wrap.active button {
      background-color: #ebebeb;
      background-image: url("../images/tab_close.png"); }
    #course .tab_wrap.course1 h3 p {
      border-bottom-color: #bee641; }
    #course .tab_wrap.course1 .detail h4 {
      background-color: #bee641;
      color: #000000; }
    #course .tab_wrap.course2 h3 p {
      border-bottom-color: #ff8876; }
    #course .tab_wrap.course2 .detail h4 {
      background-color: #ff8876;
      color: #000000; }
    #course .tab_wrap.course3 h3 p {
      border-bottom-color: #00b0ff; }
  #course .note {
    margin-bottom: 4rem; }

#timetable .contents {
  position: relative;
  padding: 6rem 2rem 4rem 2rem; }
  @media screen and (min-width: 640px) {
    #timetable .contents {
      padding-bottom: 10rem; } }
#timetable .time_img {
  width: 50%;
  margin: 2rem 0 0 auto; }
  @media screen and (min-width: 640px) {
    #timetable .time_img {
      width: 25%;
      position: absolute;
      right: 1%;
      bottom: 4rem;
      z-index: 99; } }
#timetable table {
  border-top: 1px solid #000000;
  width: 100%;
  margin-top: 3rem; }
  @media screen and (min-width: 640px) {
    #timetable table {
      width: 90%; } }
  #timetable table th, #timetable table td {
    border-bottom: 1px solid #000000;
    padding: 1rem 0;
    font-size: 1.2rem;
    font-weight: 500;
    text-align: left;
    vertical-align: middle; }
    @media screen and (min-width: 640px) {
      #timetable table th, #timetable table td {
        padding: 1rem 0 1rem 3rem; } }
  #timetable table th {
    width: auto;
    white-space: nowrap; }
    #timetable table th span {
      display: inline-block;
      width: 6em; }
    #timetable table th p {
      display: inline-block; }
  #timetable table td {
    padding-left: 1rem; }

#career .contents {
  position: relative;
  padding: 5rem 2rem 5rem 2rem; }
#career .wrap {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap; }
  @media screen and (min-width: 1280px) {
    #career .wrap {
      flex-wrap: nowrap; } }
#career .lead {
  white-space: nowrap;
  font-size: 1.4rem;
  font-weight: 500;
  line-height: 2;
  letter-spacing: -3px;
  width: 45%; }
  @media screen and (min-width: 1280px) {
    #career .lead {
      width: 20rem;
      flex-shrink: 0; } }
#career .career_img {
  width: 400px;
  max-width: 40%;
  height: 20em;
  flex-shrink: 0;
  position: relative;
  z-index: 999;
  margin: auto 0 auto auto; }
  @media screen and (min-width: 640px) {
    #career .career_img {
      max-width: 50%;
      margin: 6rem auto auto auto; } }
  @media screen and (min-width: 1280px) {
    #career .career_img {
      max-width: 20%;
      margin: auto; } }
  #career .career_img img {
    position: absolute;
    margin: auto;
    width: 100%; }
    @media screen and (min-width: 640px) {
      #career .career_img img {
        top: auto;
        left: auto;
        right: 0;
        bottom: 0; } }
    @media screen and (min-width: 1280px) {
      #career .career_img img {
        width: 170%;
        position: absolute;
        top: 0;
        left: -15%;
        right: auto;
        bottom: auto; } }
#career ul {
  width: 100%;
  grid-gap: 2rem;
  margin-top: 0; }
  @media screen and (min-width: 640px) {
    #career ul {
      margin-top: 2rem; } }
  @media screen and (min-width: 1280px) {
    #career ul {
      margin-top: 0;
      width: 55%; } }
  #career ul li h3 {
    display: flex;
    align-items: center;
    background-color: #FFFFFF;
    padding: 0.5rem 1rem;
    border-radius: 20px;
    position: relative;
    min-height: 8rem;
    margin: auto;
    max-width: 90%; }
    @media screen and (min-width: 1280px) {
      #career ul li h3 {
        min-height: 6rem;
        width: 100%; } }
    #career ul li h3 p {
      display: inline-block !important;
      width: auto;
      text-align: left;
      line-height: 1.4;
      margin: auto;
      padding: 0;
      white-space: pre-wrap;
      word-break: keep-all;
      font-size: 1.8rem; }
      @media screen and (min-width: 1280px) {
        #career ul li h3 p {
          font-size: 1.4rem; } }
    #career ul li h3::after {
      content: '';
      width: 0;
      height: 0;
      border-top: 0.8em solid #000000;
      border-left: 0.4em solid transparent;
      border-right: 0.4em solid transparent;
      border-bottom: 0;
      position: absolute;
      top: 100%;
      left: 0;
      right: 0;
      margin: auto; }
  #career ul li p {
    line-height: 1.6;
    font-weight: 500;
    margin-top: 1rem;
    font-size: 1.4rem; }
    @media screen and (min-width: 1280px) {
      #career ul li p {
        font-size: 1rem; } }
  #career ul li:nth-child(2) {
    margin-top: 3rem !important; }

#system .container {
  padding-top: 7rem !important; }
#system .contents {
  position: relative;
  padding: 2rem 2rem 8rem 2rem; }
#system .flow_img {
  margin: 4rem auto 4rem auto;
  width: 90%; }
#system ul {
  grid-gap: 4rem; }
  @media screen and (min-width: 1280px) {
    #system ul {
      grid-gap: 8rem; } }
  #system ul li p {
    font-weight: 500;
    font-size: 1.3em; }
    @media screen and (min-width: 1280px) {
      #system ul li p {
        font-size: 1.1em; } }
  #system ul li span {
    font-size: 1.5em;
    margin-right: 1rem;
    vertical-align: middle; }
  #system ul li a {
    vertical-align: middle;
    font-size: 1.1em; }
#system h3 {
  text-align: center;
  font-size: 1.8em; }
  #system h3::after {
    content: '';
    width: 100%;
    display: block;
    height: 1em;
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center top;
    margin: 0.3rem 0 0 0; }
  #system h3.point::after {
    background-image: url("../images/border_point.png"); }
  #system h3.border::after {
    background-image: url("../images/border.png"); }

#form #header {
  background-color: #00b0ff;
  border-bottom: 1px solid #000; }
  #form #header.green {
    background-color: #bee641 !important; }
#form .title {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2rem;
  margin: 0 auto;
  padding: 0 2rem; }
  #form .title h2 {
    font-size: 2rem;
    line-height: 1.2 !important;
    padding: 1rem 0; }
  #form .title img {
    width: 30%;
    margin: auto 0 0 auto; }
  @media screen and (min-width: 640px) {
    #form .title {
      margin: -2rem auto 0 auto; }
      #form .title h2 {
        font-size: 2.8rem; }
      #form .title img {
        width: 10%; } }
#form .lead {
  padding: 2rem;
  text-align: center;
  font-size: 1.5rem;
  font-weight: 500; }
  #form .lead .kome {
    margin-top: 2rem;
    font-size: 1.2rem;
    text-align: left; }
    @media screen and (min-width: 640px) {
      #form .lead .kome {
        text-align: center; } }
#form .red {
  color: #FF0004; }

/* ======================================
   Anchor Link
======================================== */
#back-to-top {
  display: block;
  width: 5rem;
  padding: 0 0 1.5rem 0;
  position: fixed;
  bottom: 1rem;
  right: 0;
  z-index: 1000;
  opacity: 0;
  transition: .5s; }
  #back-to-top.show {
    opacity: 1; }
  #back-to-top span {
    white-space: nowrap;
    display: block;
    width: 100%;
    font-size: 0.7rem;
    position: absolute;
    bottom: 0;
    letter-spacing: 0;
    color: #00b0ff;
    text-align: center; }
  #back-to-top p {
    display: block;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background-color: #00b0ff;
    background-image: url("../images/angle_up_sw.svg");
    background-size: 1rem;
    background-position: center;
    background-repeat: no-repeat;
    margin: auto; }

/* ======================================
   Header
======================================== */
#header .container {
  padding: 0;
  margin: 0;
  position: relative;
  z-index: 999; }
#header .btn {
  position: absolute;
  top: 1rem;
  right: 0;
  display: flex;
  z-index: 999; }
  #header .btn a {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 180px;
    height: 200px;
    clip-path: polygon(0 25%, 50% 0, 100% 25%, 100% 75%, 50% 100%, 0 75%);
    color: #000; }
    #header .btn a p {
      width: 100%;
      text-align: center;
      color: #000;
      padding: 0 0 0.5em 0;
      position: relative;
      line-height: 1.4;
      white-space: pre-wrap;
      word-break: keep-all; }
      #header .btn a p::after {
        content: '';
        display: block;
        width: 30px;
        height: 2px;
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        margin: auto;
        transition: 0.5s; }
    #header .btn a:hover p::after {
      width: 90px; }
    #header .btn a.btn_siryo {
      background-color: #FFFFFF;
      margin-top: -2rem; }
      #header .btn a.btn_siryo p::after {
        background-color: #00b0ff; }
    #header .btn a.btn_toi {
      background-color: #00b0ff; }
      #header .btn a.btn_toi p::after {
        background-color: #FFFFFF; }
#header .logo {
  width: 300px;
  max-width: 40%;
  margin: 0;
  padding: 20px; }
  #header .logo h1 {
    width: 100%; }
  #header .logo img {
    width: 100%; }
#header #mainvisual .main_visual {
  width: 100%; }
#header #mainvisual .main_boy {
  width: 50%;
  position: absolute;
  bottom: -10%;
  left: 5%;
  transition: none; }
  @media screen and (min-width: 640px) {
    #header #mainvisual .main_boy {
      width: 30%;
      bottom: -22%;
      left: 18%; } }

/* ======================================
   Footer
======================================== */
#footer {
  padding: 0;
  text-align: center; }
  #footer .contents {
    position: relative;
    padding: 4rem 2rem; }
    #footer .contents.btn {
      width: 100% !important; }
      #footer .contents.btn ul {
        margin: auto;
        max-width: 100%;
        width: 24rem;
        display: grid;
        grid-template-columns: 1fr;
        grid-gap: 1rem;
        align-items: center;
        justify-content: center; }
        @media screen and (min-width: 640px) {
          #footer .contents.btn ul {
            grid-template-columns: 1fr 1fr 1fr;
            width: 1280px;
            grid-gap: 2rem; } }
        #footer .contents.btn ul a {
          margin: auto;
          display: flex;
          align-items: center;
          justify-content: center;
          background-color: #FFFFFF;
          border-radius: 4rem;
          min-height: 5rem;
          color: #000000;
          padding: 0 2rem; }
          #footer .contents.btn ul a:hover {
            background-color: #00b0ff;
            color: #FFFFFF; }
          #footer .contents.btn ul a p {
            font-size: 1.4rem;
            font-weight: 500;
            line-height: 1.4;
            white-space: pre-wrap;
            word-break: keep-all; }
          #footer .contents.btn ul a i {
            margin-right: 1rem; }
            #footer .contents.btn ul a i img {
              width: 3rem; }
  #footer iframe {
    width: 100%;
    aspect-ratio: 3 / 2; }
    @media screen and (min-width: 640px) {
      #footer iframe {
        aspect-ratio: 3 / 1; } }
  #footer .logo {
    width: 300px;
    max-width: 90%;
    margin: auto; }
  #footer address {
    margin-top: 2rem;
    font-size: 1.1rem; }
    #footer address p {
      display: inline-block; }
  #footer .copyright {
    margin-top: 2rem; }

/* ======================================
   Animation
======================================== */
.fadeIn {
  will-change: opacity, transform;
  /* GPU に事前通知 */
  opacity: 0;
  transform: translate(0); }

.fadeIn.Up {
  opacity: 0;
  transform: translateY(30px); }

.fadeIn.Down {
  opacity: 0;
  transform: translateY(-30px); }

.fadeIn.Left {
  opacity: 0;
  transform: translateX(30px); }

.fadeIn.Right {
  opacity: 0;
  transform: translateX(-30px); }

.fadeIn.chain li {
  opacity: 0;
  transform: translateY(30px); }

.fadeIn.chain.show li {
  animation: fadeIn 0.5s ease forwards 1s; }
  .fadeIn.chain.show li:nth-child(1) {
    animation-delay: 0.0s; }
  .fadeIn.chain.show li:nth-child(2) {
    animation-delay: 0.5s; }
  .fadeIn.chain.show li:nth-child(3) {
    animation-delay: 1.0s; }
  .fadeIn.chain.show li:nth-child(4) {
    animation-delay: 1.5s; }
  .fadeIn.chain.show li:nth-child(5) {
    animation-delay: 2.0s; }
  .fadeIn.chain.show li:nth-child(6) {
    animation-delay: 2.5s; }
  .fadeIn.chain.show li:nth-child(7) {
    animation-delay: 3.0s; }
  .fadeIn.chain.show li:nth-child(8) {
    animation-delay: 3.5s; }
  .fadeIn.chain.show li:nth-child(9) {
    animation-delay: 4.0s; }
  .fadeIn.chain.show li:nth-child(10) {
    animation-delay: 4.5s; }

.fadeIn.show {
  animation: fadeIn 0.5s ease forwards 1s; }
  .fadeIn.show.late1 {
    animation-delay: 0.5s; }
  .fadeIn.show.late2 {
    animation-delay: 1s; }
  .fadeIn.show.late3 {
    animation-delay: 1.5s; }
  .fadeIn.show.late4 {
    animation-delay: 2s; }

@keyframes fadeIn {
  to {
    opacity: 1;
    transform: translateY(0); } }
