:root {
  font-size: 16px; /* 1rem */
  --font-sans-serif: "hiragino-kaku-gothic-pron", sans-serif;
  --font-serif: "a-otf-ryumin-pr6n", serif;
  --color-body: #555555;
  --color-link: #555555;
  --color-blue: #183B83;
  --color-theme: #FF7A81;
  --border-radius-pill: 50rem;
  --padding-container: 12px;
  --max-width: 1000px;
  --max-width-container: calc(var(--max-width) + var(--padding-container) * 2);
}

body {
  font-family: var(--font-sans-serif);
  font-size: 1rem;
  line-height: 1.7;
  color: var(--color-body);
}

section {
  display: flow-root;
  position: relative;
}

a:where(:any-link, :hover) {
  color: var(--color-link);
  text-decoration: none;
  transition: opacity .3s ease-out;
}

a:hover {
  text-decoration: none;
  opacity: .7;
}

img {
  max-width: 100%;
}

h1, h2, h3, h4, h5, h6, dl, dt, dd {
  display: flow-root;
  font-family: inherit;
  font-weight: inherit;
  padding: 0;
  margin: 0;
}

p {
  strong {
    font-weight: 600;
    color: var(--color-blue);
  }
}

.my-ajax-loading {
  position: fixed;
  inset: 0;
  background-color: rgba(255, 255, 255, .5);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 2000;
}

.my-container {
  position: relative;
  max-width: var(--max-width-container);
  margin-inline: auto;
  padding: 0 var(--padding-container);
}

.my-cols,
.my-rows {
  display: flex;
  list-style: none;
  padding: 0;
  margin: 0;
  &.my-rows {
    flex-direction: column;
  }
}

.my-breadcrumb {
  > ol {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    padding: 0;
    margin: 0;
    li + li::before {
      content: '>';
      margin-inline: .5em;
    }
  }
}

.my-page_title {
  background: #3983C4;
  color: #fff;
  margin-bottom: 5.625rem;
  .my-container {
    display: flex;
    align-items: center;
    height: 8.75rem;
    font-size: 1.75rem;
    small {
      display: inline-block;
      font-size: 1.25rem;
      margin-left: 1em;
    }
  }
}

.my-title01 {
  position: relative;
  text-align: center;
  padding: 3.75rem 0 1.875rem;
  margin-bottom: 3.25rem;
  font-size: 1.75rem;
  &::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    width: 6.125rem;
    margin-inline: auto;
    border-bottom: solid 2px #3983C5;
  }
}

.my-title02 {
  background: var(--color-blue);
  color: #fff;
  height: 5.625rem;
  font-size: 1.25rem;
  font-weight: 600;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  margin-bottom: 2.5rem;
}

.my-title03 {
  display: flex;
  align-items: center;
  padding-inline: 1.875rem;
  margin-bottom: 1.875rem;
  position: relative;
  background: var(--color-theme);
  color: #fff;
  font-size: 1.5625rem;
  font-weight: 600;
  height: 5.625rem;
  overflow: hidden;
  &::before {
    content: '';
    position: absolute;
    top: -0.875rem;
    left: 0;
    width: 4.875rem;
    height: 7.375rem;
    background: rgba(255, 255, 255, 0.4);
    transform: skewX(-10deg);
    transform-origin: top right;
  }
  small {
    display: inline-block;
    font-size: 1.125rem;
    margin-left: 1em;
  }
}

.my-pagetop {
  position: fixed;
  right: 4.5rem;
  bottom: 0;
  width: 3rem;
  height: 2.1875rem;
  border-radius: 4px 4px 0 0;
  font-size: 1.25rem;
  background: #333;
  color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
}

.my-header {
  display: flow-root;
  position: relative;
  .my-container {
    min-height: 5.625rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    .my-header-logo {
      dl {
        display: flex;
        align-items: center;
        font-size: 1rem;
        font-weight: 600;
        > dd {
          color: var(--color-blue);
          font-size: 1.875rem;
          padding-inline: 0.5rem;
        }
      }
    }
    .my-header-nav {
      margin-left: auto;
      font-size: 0.8125rem;
      ul {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        li {
          a {
            display: block;
            padding: 0.5rem;
            #home &[href="/"],
            #history &[href="/history/"],
            #manifest &[href="/manifest/"] {
              font-weight: bold;
            }
            &.-sns {
              padding-right: 0;
              &::before {
                content: '';
                display: block;
                width: 1.2rem;
                height: auto;
                aspect-ratio: 1 / 1;
                background: center / contain no-repeat;
              }
              &[href*="facebook"]::before {
                background-image: url(../img/logo-fb.svg);
              }
              &[href*="youtube"]::before {
                background-image: url(../img/logo-yt.svg);
              }
              &[href*="instagram"]::before {
                background-image: url(../img/logo-ig.svg);
              }
            }
          }
        }
      }
    }
  }
}

.my-main {
  display: flow-root;
  position: relative;
  overflow: hidden;
}

.my-footer {
  display: flow-root;
  position: relative;
  font-size: 0.75rem;
  color: #fff;
  text-align: center;
  background: #3983c4;
  border-top: #ebbd2f 0.375rem solid;
  padding-block: 1rem;
  small {
    display: flow-root;
    font-size: 0.75rem;
  }
}

#home {
  h2 {
    font-family: var(--font-serif);
    font-size: 4.875rem;
    padding-block: 1rem;
    color: #fff;
    background: #3983c4;
    border-bottom: #ebbd2f 0.375rem solid;
  }
}

#home_sec01 {
  background: #EFEFE9;
  h3 {
    padding-block: 1.25rem 8.4375rem;
    font-size: 2.375rem;
    font-weight: 600;
    color: var(--color-blue);
    dl {
      display: flex;
      flex-direction: column;
      dd {
        display: flex;
        align-items: center;
        font-size: 3.92em;
        > span {
          display: flex;
          flex-direction: column-reverse;
          align-items: center;
          font-size: 0.55em;
          > small {
            font-size: 0.33em;
            background: #4398D5;
            color: #fff;
            padding: .2em .5em;
            border-radius: var(--border-radius-pill);
          }
        }
      }
    }
  }
  .-img {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 26.25rem;
  }
  nav {
    position: relative;
    .my-cols {
      position: absolute;
      top: -6.125rem;
      right: 0;
      left: 0;
      margin-inline: auto;
      display: flex;
      justify-content: center;
      gap: 1.25rem;
      li {
        a {
          display: block;
          padding: 0.75rem;
          background: #fff;
          border-bottom: solid 0.3125rem #3983C4;
          transition: transform .3s ease-out;
          &:hover {
            opacity: 1;
            transform-origin: center;
            transform: scale(1.05);
          }
          figure {
            margin: 0;
            img {
              display: block;
              max-width: 18.75rem;
            }
            figcaption {
              display: flex;
              flex-direction: column;
              align-items: center;
              font-size: 1.875rem;
              font-weight: 600;
              line-height: 1.2;
              padding-top: 0.75rem;
              > small {
                font-size: 1rem;
                font-weight: 400;
                color: #4398D5;
              }
            }
          }
        }
      }

    }
  }
}

#home_sec02 {
  margin-top: 11.125rem;
  h3 {
    font-size: 1.25rem;
    text-align: center;
    margin-bottom: .5rem;
  }
  ul {
    list-style: none;
    border-top: 1px solid #707070;
    border-bottom: 1px solid #707070;
    padding-block: .5rem;
  }
}

#home_sec03 {
  padding-bottom: 7.5rem;
  .my-container {
    > dl {
      dt {
        font-size: 1.5625rem;
        font-weight: 600;
        color: #3983C4;
        text-align: center;
        margin-bottom: 1.875rem;
      }
      dd {
        .-sign {
          width: 8.4375rem;
          margin-left: 1em;
        }
      }
    }
  }
  .my-cols {
    gap: 1.4375rem;
    margin-top: 5rem;
    > li {
      flex: 1;
      background: #E4F2FA;
      padding: 1.875rem;
      dl {
        dt {
          text-align: center;
          font-size: 1.125rem;
          font-weight: 600;
          color: #FF7A81;
          margin-bottom: 1.875rem;
        }
        dd {
          ul {
            list-style-type: disc;
            margin-bottom: 1rem;
            li::marker{
              color: #3983C4;
            }
          }
        }
      }
    }
  }
}

#home_sec04 {
  padding-bottom: 7.5rem;
  background: #F5F5EC;
  .my-cols {
    gap: 0.3125rem;
    > li {
      flex: 1;
      padding: 1.75rem;
      background: #fff;
      .-img {
        display: block;
        max-width: 9.875rem;
        margin: 0 auto 1rem;
      }
    }
  }
}

#home_sec05 {
  padding-bottom: 7.5rem;
  .my-cols {
    gap: 2rem 3%;
    > div {
      flex: 1;
      &.-img {
        img {
          display: block;
          margin-inline: auto;
        }
      }
      &.-list {
        font-size: 0.875rem;
        .my-rows {
          gap: 0.5rem;
          > li {
            display: flex;
            .-year {
              padding-right: 0.5em;
              white-space: nowrap;
            }
          }
        }
      }
    }
  }
}

#home_sec06 {
  padding-bottom: 7.5rem;
  .-banner {
    background: #2383c4;
    img {
      display: block;
      margin-inline: auto;
    }
  }
  .my-cols {
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 2rem;
    margin-top: 2rem;
    max-width: 30rem;
    margin-inline: auto;
    > li {
      width: 6rem;
      a {
        display: block;
        text-align: center;
        font-size: 0.875rem;
        &::before {
          content: '';
          display: block;
          width: 100%;
          height: auto;
          aspect-ratio: 1 / 1;
          background: center / contain no-repeat;
          margin-bottom: 1rem;
        }
        &[href*="facebook"]::before {
          background-image: url(../img/logo-fb.svg);
        }
        &[href*="youtube"]::before {
          background-image: url(../img/logo-yt.svg);
        }
        &[href*="instagram"]::before {
          background-image: url(../img/logo-ig.svg);
        }
      }
    }
  }
}

#home_sec07 {
  padding-bottom: 7.5rem;
  background: #f5f5ec;
  dl {
    dt {
      font-weight: 600;
      margin-top: 1em;
    }
    ol {
      margin: 0;
    }
  }
}

#manifest_sec01 {
  padding-bottom: 5.625rem;
  img {
    display: block;
    width: 100%;
    max-width: 46rem;
    margin-inline: auto;
  }
}

#manifest_sec02 {
  padding-bottom: 2.5rem;
  background: #E4F2FA;
  .my-title02 {
    margin-top: -2.8125rem;
    span {
      color: #9CD1FF;
      margin-inline: 0.5em;
    }
  }
  .my-rows {
    gap: 2.5rem;
    > li {
      background: #fff;
      padding: 1.875rem;
      box-shadow: #9CD1FF 0.625rem 0.625rem 0 0;
      --color-strong: #FF7A81;
      &:nth-of-type(2) {
        --color-strong: #52B39D;
      }
      &:nth-of-type(3) {
        --color-strong: #3983C4;
      }
      dl {
        dt {
          display: flex;
          align-items: center;
          gap: 1rem;
          .-num {
            font-size: 3.125rem;
            font-weight: 600;
            color: #FF7A81;
          }
          .-title {
            flex: 1;
            font-size: 1.875rem;
            font-weight: 600;
            color: var(--color-blue);
            strong {
              color: var(--color-strong);
            }
          }
          .-img {
            width: 10.75rem;
            img {
              display: block;
              width: 100%;
            }
          }
        }
        dd {
          margin-top: 1.875rem;
          padding-top: 1.875rem;
          border-top: 1px solid #9CD1FF;
          .-formula {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 0.5rem;
            font-size: 1.25rem;
            font-weight: 600;
            line-height: 1.2;
            color: var(--color-blue);
            margin-top: 1.875rem;
            &::before {
              content: '';
              display: block;
              width: 1.625rem;
              height: 1.625rem;
              background: url(../img/icon-arrow_circle.svg) center / contain no-repeat;
            }
            span {
              color: #9CD1FF;
            }
            strong {
              font-size: 1.25em;
              color: var(--color-strong);
            }
          }
        }
      }
    }
  }
  .-text {
    text-align: center;
    font-weight: 600;
    margin-top: 1.875rem;
  }
}

#manifest_sec03 {
  padding-block: 3.75rem 10rem;
  .my-container {
    > section {
      + section {
        margin-top: 7.5rem;
      }
      &:nth-of-type(2) {
        --color-theme: #52B352;
      }
      &:nth-of-type(3) {
        --color-theme: #56A9F1;
      }
      &:nth-of-type(4) {
        --color-theme: #52B39D;
      }
      &:nth-of-type(5) {
        --color-theme: #9165A4;
      }
      > section {
        margin-top: 3.75rem;
        h4 {
          font-size: 1.125rem;
          font-weight: 600;
          color: var(--color-theme);
          margin-bottom: 0.5em;
        }
        dl {
          dt {
            display: flex;
            margin-bottom: 1.25rem;
            font-size: 1.125rem;
            font-weight: 600;
            &::before {
              content: '◆';
              color: var(--color-theme);
              margin-right: 0.2em;
            }
          }
          dd {
            margin-bottom: 1.875rem;
          }
        }
        figure {
          margin: 0;
          img {
            display: block;
            margin-inline: auto;
          }
          figcaption {
            text-align: center;
            margin-top: 0.625rem;
          }
        }
        .my-cols {
          flex-wrap: wrap;
          justify-content: center;
          gap: 3% 2.5rem;
          .-text {
            flex: 1;
            min-width: 25rem;
          }
          .-img {
            img {
              display: block;
              margin-inline: auto;
            }
          }
        }
      }
    }
  }
}

#manifest_sec04 {
  background: #E4F2FA;
  padding-bottom: 3.75rem;
  section {
    + section {
      margin-top: 3.75rem;
    }
    h4 {
      font-size: 1.875rem;
      font-weight: 600;
      background: var(--color-blue);
      color: #fff;
      padding-block: 1.875rem;
      margin-bottom: 3.75rem;
      dl {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 0.5rem;
        text-align: center;
        dt {
          font-size: 1.5625rem;
        }
        dd {
          strong {
            display: inline-block;
            color: #FF7A81;
            padding-inline: 0.5rem;
          }
          small {
            display: inline-block;
            font-size: 1.125rem;
            padding: 0.5em;
          }
          .-sub {
            font-size: 1rem;
            color: #9CD1FF;
            margin-top: 1em;
          }
        }
      }
    }
    &:nth-of-type(1) {
      h4 {
        margin-top: -2.8125rem;
      }
    }
    > dl {
      margin-top: 1.875rem;
      dt {
        display: flex;
        align-items: center;
        width: 6.5625rem;
        height: 2.5rem;
        background: url(../img/manifest_sec04-bg01.svg) center / contain no-repeat;
        color: #fff;
        padding-left: 0.625rem;
        margin-bottom: 0.625rem;
      }
      dd {
        > strong {
          display: block;
          font-size: 1.125rem;
          font-weight: 600;
          color: var(--color-blue);
          margin-bottom: 0.5rem;
          span {
            color: #FF7A81;
            margin-inline: 0.5em;
          }
        }
        > ol {
          > li {
            font-size: 1.125rem;
            font-weight: 600;
            color: var(--color-blue);
            > ul {
              list-style-type: disc;
              font-size: 1rem;
              font-weight: 400;
              color: var(--color-body);
              margin: 1.25rem 0 1.875rem -1.5em;
            }
          }
        }
      }
    }
  }
}

#manifest_sec05 {
  padding-block: 3.75rem;
  .my-cols {
    gap: 3%;
    .-text {
      flex: 1;
      font-size: 1.125rem;
      font-weight: 600;
    }
  }
}

#history_sec01 {
  padding-top: 5.625rem;
  font-size: 1.25rem;
  font-weight: 600;
  h3 {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 7.6875rem;
    height: 7.6875rem;
    font-size: 1.25rem;
    background: var(--color-blue);
    color: #fff;
    border-radius: var(--border-radius-pill);
    margin: 0 auto 1.875rem;
  }
}

#history_sec02 {
  section {
    padding-block: 3.75rem;
    &:nth-of-type(2n) {
      background: #E4F2FA;
    }
    &:nth-of-type(2) {
      --color-theme: #9165A4;
    }
    &:nth-of-type(3) {
      --color-theme: #56A9F1;
    }
    &:nth-of-type(4) {
      --color-theme: #52B352;
    }
    .my-cols {
      flex-wrap: wrap;
      justify-content: center;
      gap: 1.25rem;
      .-year {
        width: 20rem;
        font-size: 1.25rem;
        font-weight: 600;
        color: var(--color-theme);
        h3 {
          margin-bottom: 1.75rem;
          img {
            display: block;
            width: 100%;
          }
        }
      }
      .-text {
        width: 20rem;
        dt {
          background: var(--color-theme);
          font-weight: 600;
          color: #fff;
          padding: 0.625rem;
          margin-bottom: 1.125rem;
        }
        dd {
          ul {
            li::marker {
              color: #3983C4;
            }
          }
        }
      }
    }
    ul.my-cols {
      gap: 1rem 0;
      margin-top: 1rem;
      figure {
        figcaption {
          text-align: center;
          margin-top: 0.625rem ;
        }
      }
    }
  }
}

#history_sec03 {
  padding-block: 3.75rem 7.5rem;
  section {
    &:nth-of-type(1) {
      margin-bottom: 3.75rem;
      h3 {
        display: flex;
        align-items: center;
        justify-content: center;
        height: 5.625rem;
        font-size: 1.25rem;
        font-weight: 600;
        color: #fff;
        background: var(--color-blue);
        margin-bottom: 1.25rem;
      }
      .my-cols {
        flex-wrap: wrap;
        justify-content: center;
        gap: 1.25rem;
        > li {
          width: 20rem;
          background: #E4F2FA;
          padding: 1.875rem;
          dl {
            dt {
              font-size: 1.25rem;
              font-weight: 600;
              color: var(--color-blue);
              text-align: center;
              padding-bottom: 0.5em;
              margin-bottom: 0.5em;
              border-bottom: 1px solid var(--color-blue);
            }
            dd {
              font-size: 1.125rem;
              ul {
                list-style-type: disc;
                li::marker {
                  color: #3983C4;
                }
              }
            }
          }
        }
      }
    }
    &:nth-of-type(2) {
      font-size: 1.25rem;
      font-weight: 600;
      h3 {
        display: flex;
        align-items: center;
        justify-content: center;
        width: 7.6875rem;
        height: 7.6875rem;
        border: 1px solid var(--color-blue);
        color: var(--color-blue);
        font-size: 1.25rem;
        font-weight: 600;
        border-radius: var(--border-radius-pill);
        margin: 0 auto 1.875rem;
      }
    }
  }
}

#history_sec04 {
  padding-block: 3.75rem;
  background: #F5F5EC;
  .my-container {
    h3 {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 11.25rem;
      height: 10rem;
      background: var(--color-blue);
      color: #fff;
      font-size: 1.25rem;
      font-weight: 600;
      margin: 0 auto 3.75rem;
    }
    > p {
      font-size: 1.25rem;
    }
    section {
      padding-top: 3.75rem;
      &:nth-of-type(2) {
        --color-theme: #52B352;
      }
      &:nth-of-type(3) {
        --color-theme: #56A9F1;
      }
      dl {
        dt {
          font-size: 1.125rem;
          font-weight: 600;
          color: var(--color-theme);
          &::before {
            content: '■';
            margin-right: .2em;
          }
        }
        dd {
          ul {
            li {
              margin-top: .5em;
              &::marker {
                color: #3983C4;
              }
            }
          }
        }
      }
    }
  }
}

/* `xxl` applies to x-large devices (large desktops, less than 1400px) */
@media (max-width: 1399.98px) {

}

/* `xl` applies to large devices (desktops, less than 1200px) */
@media (max-width: 1199.98px) {

}

/* `lg` applies to medium devices (tablets, less than 992px) */
@media (max-width: 991.98px) {
  #home_sec01 {
    .-img {
      position: absolute;
      width: 43%;
    }
  }
}

/* `md` applies to small devices (landscape phones, less than 768px) */
@media (max-width: 767.98px) {
  .my-pagetop {
    right: 2rem;
  }

  #home_sec01 {
    h3 {
      padding-bottom: 22rem;
    }
    .-img {
      position: absolute;
      left: 0;
      margin-inline: auto;
      width: 20rem;
    }
    nav {
      .my-cols {
        li {
          a {
            figure {
              img {
                width: calc(50vw - 3rem);
              }
            }
          }
        }
      }
    }
  }

  #home_sec03 {
    .my-cols {
      flex-direction: column;
    }
  }

  #home_sec04 {
    .my-cols {
      flex-direction: column;
    }
  }

  #home_sec05 {
    .my-cols {
      flex-direction: column;
      align-items: center;
    }
  }

  #manifest_sec02 {
    .my-title02 {
      height: auto;
      flex-direction: column;
    }
    .my-rows {
      > li {
        dl {
          dt {
            flex-direction: column;
          }
          dd {
            .-formula {
              flex-direction: column;
              &::before,
              span {
                transform: rotate(90deg);
                transform-origin: center;
              }
            }
          }
        }
      }
    }
  }

  #manifest_sec05 {
    .my-cols {
      flex-direction: column;
      align-items: center;
      gap: 1.5rem;
    }
  }
}

/* `sm` applies to x-small devices (portrait phones, less than 576px) */
@media (max-width: 575.98px) {
  #home_sec06 {
    .my-cols {
      flex-direction: column;
      align-items: center;
    }
  }
}

@media (max-width: 519.98px) {
  :root {
    font-size: calc(100vw * 16 / 520);
  }
}
