@import url('https://fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+New:wght@700&family=Zen+Old+Mincho:wght@600;900&display=swap');

:root {
  --font-sans-serif: "Zen Kaku Gothic New", sans-serif;
  --font-serif: "Zen Old Mincho", serif;
  --color-body: #000;
  --color-link: #0d6efd;
  --max-width-container: 1280px;
  --padding-container: 12px;
}

body {
  font-family: var(--font-serif);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--color-body);
}

.zen-kaku-gothic-new-bold {
  font-family: var(--font-sans-serif);
  font-weight: 700;
  font-style: normal;
}

.zen-old-mincho-semibold {
  font-family: var(--font-serif);
  font-weight: 600;
  font-style: normal;
}

.zen-old-mincho-black {
  font-family: var(--font-serif);
  font-weight: 900;
  font-style: normal;
}

.my-opening {
  overflow: hidden;
  &::before {
    content: '';
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: #fff;
    transition: opacity ease 4s;
    z-index: 10;
  }
  &::after {
    content: '';
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 50vw;
    height: 50vh;
    margin: auto;
    background: url(../img/opening-logo.png) center / contain no-repeat;
    opacity: 0;
    transition: opacity ease 4s;
    z-index: 11;
  }
  &.-start {
    &::after {
      opacity: 1;
    }
  }
  &.-end {
    &::before,
    &::after {
      opacity: 0;
    }
  }
}

section {
  position: relative;
}

a:where(:any-link, :hover) {
  color: var(--color-link);
}

a:hover {
  text-decoration: none;
}

img {
  max-width: 100%;
}

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

h1, h2, h3, h4, h5, h6 {
  text-align: center;
}

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

.my-container {
  max-width: 1000px;
  margin: 0 auto;
}

.my-header {
  position: relative;
  .my-container {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 55px;
  }
  .my-header-logo {
    width: 250px;
    img {
      width: 100%;
    }
  }
  .my-header-nav {
    display: flex;
    align-items: center;
    gap: 2em;
    a {
      font-size: 14px;
      color: inherit;
      text-decoration: none;
    }
  }
}

.my-main {
  position: relative;
}

.my-title {
  font-size: 1.75em;
  letter-spacing: .2em;
  text-align: center;
  margin: 1.8em 0;
}

.my-hr {
  margin: 1em 0 2.5em;
  background: center / contain no-repeat;
  &.-icon01 {
    background-image: url(../img/icon-01.png);
    height: 34.5px;
    mix-blend-mode: multiply;
  }
  &.-icon02 {
    background-image: url(../img/icon-02.png);
    height: 40px;
  }
}

.my-link01 {
  display: block;
  text-decoration: none;
  color: var(--color-body);
  font-size: 1.25em;
  letter-spacing: .2em;
  text-align: center;
  border: 1px solid var(--color-body);
  max-width: 680px;
  margin: 1.5em auto;
  &:hover {
    text-decoration: underline;
  }
}

.my-youtube {
  position: relative;
  overflow: hidden;
  iframe {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16/9;
    pointer-events: none;
    margin: -60px 0;
  }
}

#top01 {
  margin-top: 6.25em;
}

#top01-01 {
  ul {
    list-style: none;
    font-size: 1.5em;
    max-width: 31em;
    padding: 0;
    margin: 0 auto 5em;
  }

  > img {
    display: block;
    width: 100%;
    max-width: 800px;
    margin: 0 auto;
  }
}

#top01-02 {
  margin-top: 6.25em;
}

#top01-02-01 {
  table {
    border-collapse: separate;
    border-spacing: 2em 0;
    font-size: 1.25em;
    margin: 0 auto;
    td {
      vertical-align: top;
    }
  }
}

#top01-02-02 {
  margin-top: 6.25em;
  > dl {
    display: flex;
    max-width: 1100px;
    margin: 6em auto 0;
    gap: 3em;
    > dt {
      width: 130px;
      text-align: center;
    }
    > dd {
      flex: 1;
      table {
        width: 100%;
        border-collapse: separate;
        border-spacing: 1em .2em;
        text-align: left;
        font-weight: 900;
        td {
          vertical-align: top;
          small {
            font-size: .9em;
          }
          &[colspan="3"] span {
            position: relative;
            display: inline-block;
            font-size: .9em;
            padding: 1em 4em;
            &::before,
            &::after {
              content: '';
              position: absolute;
              top: 0;
              left: .5em;
              bottom: 0;
              margin: auto 0;
              background: var(--color-body);
              width: 3em;
              height: 1px;
            }
            &::after {
              right: .5em;
              left: auto;
            }
            &:empty {
              display: block;
              &::before {
                left: .5em;
                width: 100%;
                max-width: 35em;
              }
              &::after {
                display: none;
              }
            }
          }
        }
        .-list {
          max-width: 27em;
          > div {
            display: flex;
            align-items: center;
            &::after {
              content: '';
              flex: 1;
              background: var(--color-body);
              height: 1px;
              margin: .5em 0;
            }
          }
          > ul {
            list-style: none;
            display: flex;
            flex-wrap: wrap;
            padding: 0;
            margin: 0;
            > li {
              min-width: 13.5em;
            }
          }
        }
      }
      > ul {
        list-style: none;
        padding: 0;
        margin: 2em 0 0;
        font-size: .9em;
        li {
          display: flex;
        }
      }
    }
  }
  > strong {
    display: block;
    max-width: 800px;
    margin: 4em auto 0;
    background: #FFE067;
    font-family: var(--font-sans-serif);
    font-size: 1.125em;
    letter-spacing: .1em;
    font-weight: 900;
    text-align: center;
    line-height: 2;
  }
}

#top03 {
  margin-top: 12.5em;
  .-tategaki {
    display: flex;
    flex-direction: row-reverse;
    justify-content: center;
    gap: .4em;
    p {
      writing-mode: vertical-rl;
      font-size: 1.2em;
      line-height: 3;
    }
  }
  > img {
    display: block;
    width: 100%;
    max-width: 680px;
    margin: 6.25em auto 0;
  }
}

#top02 {
  margin-top: 12.5em;
}

#about,
#contact {
  background: url(../img/title-bg01.jpg) center top / contain no-repeat;
  padding-top: 8em;
  .my-container {
    max-width: 1100px;
    img {
      display: block;
    }
  }
}

#about01 {
  .-tategaki {
    writing-mode: vertical-rl;
    line-height: 1.8;
    letter-spacing: .2em;
    height: 30em;
    margin: 0;
    .-yokogaki {
      display: inline-block;
      writing-mode: horizontal-tb;
      line-height: 1.2;
    }
    strong {
      font-size: 2em;
      font-weight: inherit;
      vertical-align: text-bottom;
      line-height: 1;
    }
    dl {
      display: flex;
      flex-direction: column;
      align-items: start;
      gap: 1.5em;
      dt {
        font-size: 2em;
      }
      dd {
        padding-top: 1em;
        + dt {
          margin-right: .5em;
        }
      }
    }
  }
}

#about01-01,
#about01-04 {
  margin-top: 8em;
  display: flex;
  flex-wrap: wrap;
  flex-direction: row-reverse;
  justify-content: space-between;
  gap: 2em;
  div:nth-of-type(2) {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 300px;
    img {
      margin-right: auto;
    }
  }
}

#about01-02,
#about01-05,
#about01-06 {
  margin-top: 16em;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 2em;
  div:nth-of-type(2) {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 300px;
    img {
      margin-left: auto;
    }
  }
}

#about01-01 {
  .-tategaki {
    width: 26em;
  }
}

#about01-02 {
  .-tategaki {
    width: 21em;
  }
}

#about01-03 {
  position: relative;
  margin-top: 16em;
  display: flex;
  flex-wrap: wrap;
  flex-direction: row-reverse;
  justify-content: center;
  gap: 2em;
  div {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 300px;
    img {
      margin: 0 auto;
      + img {
        margin-top: 2em;
      }
    }
  }
  div:nth-of-type(2) {
    margin-top: 15%;
  }
}

#about01-04 {
  .-tategaki {
    width: 12em;
  }
}

#about01-05 {
  .-tategaki {
    width: 9em;
  }
}

#about01-06 {
  align-items: center;
  div:nth-of-type(1),
  div:nth-of-type(2) {
    flex-grow: 1;
    flex-shrink: 1;
    flex-basis: 300px;
    img {
      margin: 0 auto;
    }
    .-tategaki {
      margin: 0 auto;
    }
  }
  .-tategaki {
    white-space: nowrap;
    height: 25em;
  }
}

.my-footer-bottom {
  position: relative;
  background: url(../img/footer-bg.jpg) center / cover no-repeat;
  margin-top: 12.5em;
  .my-container {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    height: 450px;
    .my-footer-nav {
      display: flex;
      justify-content: flex-start;
      flex-direction: column;
      width: 100%;
      max-width: 440px;
      margin: 0 auto;
      padding-top: 55px;
      writing-mode: vertical-rl;
      letter-spacing: .1em;
      .-name {
        font-size: 2em;
        font-weight: 900;
      }
      .-address {
        font-size: 1.1em;
        margin: 2em 1.5em 0 3.5em;
      }
      .-menu {
        position: relative;
        font-size: 1.2em;
        margin: 3em 1em 0;
        padding-top: 2em;
        color: var(--color-body);
        text-decoration: none;
        &::before {
          content: '';
          position: absolute;
          top: 0;
          right: 0;
          left: 0;
          width: 1px;
          height: 1.5em;
          margin: 0 auto;
          background: var(--color-body);
        }
      }
      .my-footer-logo {
        width: 50px;
        margin: 3em auto 0 0;
      }
    }
    small {
      display: block;
      font-size: 12px;
      padding: 4px 0;
      text-align: center;
      color: #fff;
    }
  }
}

#footer01 {
  margin-top: 12.5em;
  iframe {
    display: block;
    width: 100%;
    height: auto;
    max-width: 50em;
    aspect-ratio: 800 / 450;
    margin: 6.25em auto 0;
  }
}

#footer02 {
  margin-top: 12.5em;
}

#footer03 {
  margin-top: 6.25em;
  ul {
    list-style: none;
    display: flex;
    justify-content: center;
    gap: 2em;
    padding: 0;
    margin: 0 auto 4.375em;
  }
  .-banner {
    position: relative;
    display: block;
    width: 100%;
    max-width: 730.5px;
    margin: 0 auto;
    > p {
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
      font-size: min(3vw, 1.4em);
      margin: 0;
    }
    > img {
      display: block;
      width: 100%;
    }
  }
}

/* `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) {
  #top01-02-02 {
    dl {
      flex-direction: column;
      dt {
        width: 100%;
      }
    }
  }
}

/* `md` applies to small devices (landscape phones, less than 768px) */
@media (max-width: 767.98px) {
  body {
    font-size: 14px;
  }
  #top03 {
    gap: 1em;
    .-tategaki {
      p {
        margin: 0;
        line-height: calc((100vw - 3em - var(--padding-container) * 2) / 11);
      }
    }
  }
}

/* `sm` applies to x-small devices (portrait phones, less than 576px) */
@media (max-width: 575.98px) {
  .my-header {
    .my-container {
      height: 45px;
    }
    .my-header-logo {
      width: 150px;
    }
    .my-header-nav {
      gap: 1em;
      a {
        font-size: 12px;
      }
    }
  }

  .my-youtube {
    iframe {
      width: 300vw;
      margin-left: -100vw;
    }
  }

  #about01 {
    font-size: 13px;
  }

  #about01-01,
  #about01-02,
  #about01-03,
  #about01-04,
  #about01-05 {
    margin-top: 2em;
    div {
      width: 100%;
    }
    div:nth-of-type(2) {
      margin: 0;
    }
    .-tategaki {
      margin: 0 auto;
    }
  }

  #about01-06 {
    margin-top: 2em;
  }
}

.sponsor-link img {
  transition: opacity 0.3s ease;
}

.sponsor-link:hover img {
  opacity: 0.6;
}

section#footer04 ul {
  list-style: none;
  text-align: center;
  padding-left: 0;
}

.style-footer-k {
  padding-top: 80px;
}

#buppan-01 ul,
#buppan-02 ul {
  list-style: none;
  font-size: 1.5em;
  padding: 0;
}

#buppan-01 > img,
#buppan-02 > img {
  display: block;
  width: 100%;
  max-width: 800px;
  margin: 0 auto;
}


.buppan-heading-wrapper {
  text-align: center;
}

.buppan-heading {
  font-size: 1.5em;
  display: inline-block;
  border-bottom: 2px dashed #a3333e;
  padding-bottom: 0.3em;
  margin: 5em 0 2em;
}

#buppan-02 h3 {
  text-align: center; /* h3 自体を中央に寄せる */
}

.buppan-list {
  display: flex;
  flex-wrap: wrap;
  gap: 2em;
  list-style: none;
  padding: 0;
  margin: 0;
  justify-content: flex-start;
}

.buppan-list:has(.buppan-item:nth-child(4)) {
  justify-content: space-between;
}

.buppan-item {
  width: 330px;
  text-align: center;
  background: #fff;
  box-shadow: 0 0px 30px rgb(0 0 0 / 18%);
  padding: 1em;
  border-radius: 10px;
  transition: opacity 0.3s;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  height: auto;
}

.buppan-item img {
  width: 100%;
  height: auto;
  margin-bottom: 0.5em;
  object-fit: cover;
}

.buppan-item.no-image {
  justify-content: center;
  padding: 2em 1em;
}

.buppan-item:not(:has(img)) {
  justify-content: center;
  padding-top: 2em;
  padding-bottom: 2em;
}

.buppan-item p {
  font-size: 1em;
  line-height: 1.5;
  margin: auto;
  margin-top: auto;
}
.my-title-buppan {
  font-size: 1.75em;
  letter-spacing: .2em;
  text-align: center;
  margin: 5em 0 2em 0;
}

.buppan-last {
  padding-top: 30px;
  text-align: center;
}

.buppan-contact {
  padding-top: 50px;
}

.buppan-contact a {
  background: #eee;
  border-radius: 3px;
  position: relative;
  display: flex;
  justify-content: space-around;
  align-items: center;
  margin: 0 auto;
  max-width: 350px;
  padding: 30px;
  color: #333;
  line-height: 1.8;
  text-decoration: none;
  transition: 0.3s ease-in-out;
  font-weight: 500;
}

.buppan-contact a:hover {
  background: #333;
  color: #FFF;
}

.buppan-contact a:after {
  content: '';
  width: 10px;
  height: 10px;
  border-top: 3px solid #333;
  border-right: 3px solid #333;
  transform: rotate(45deg) translateY(-50%);
  position: absolute;
  top: 50%;
  right: 20px;
  border-radius: 1px;
  transition: 0.3s ease-in-out;
}

.buppan-contact a:hover:after {
  border-color: #FFF;
}

.cont-s-all {
  max-width: 100%;
  margin: 0 auto;
  padding: 0 1em;
}

.cont-s-all .info-row {
  display: flex;
  justify-content: flex-start;
  align-items: flex-start;
  flex-wrap: wrap;
  font-size: 1.5rem;
  font-weight: bold;
  color: #222;
  margin: 1em auto;
  max-width: 800px;
}

.cont-s-all .info-label {
  min-width: 6em;
  padding-right: 1em;
  text-align: left;
  white-space: nowrap;
  flex-shrink: 0;
}

.cont-s-all .info-content {
  flex: 1;
  text-align: left;
}

.cont-s-all .info-row.small {
  font-size: 1.2rem;
  color: #444;
}

.s-all-text {
  display: flex; 
  justify-content: flex-start; 
  font-size: 1.5rem; 
  width: 500px; 
  font-weight: bold; 
  margin: 0 auto;
}

.s-all-text2 {
  display: flex; 
  justify-content: flex-start; 
  font-size: 1.2rem; 
  width: 500px; 
  font-weight: bold; 
  margin: 0 auto; 
  padding-top: 20px; 
  color: #444444;
}

div#buppan-01 ul {
  display: flex;
  justify-content: center;

}


/* news */

.sengen-news-wrapper {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 40px;
  margin-top: 30px;
}

.sengen-news {
  flex: 0 1 180px;
  max-width: 180px;
  text-align: center;
}

.pdf-thumbnail {
  position: relative;
  overflow: hidden;
  box-shadow: 0 0px 8px rgb(0 0 0 / 40%);
}

.pdf-thumbnail img {
  width: 100%;
  height: auto;
  display: block;
  transition: 0.3s ease;
}

.pdf-thumbnail a:hover img {
  filter: brightness(70%);
}

.se-n-title {
  margin: 8px 0;
  font-size: 0.95rem;
}

a.pdf-link-text {
  text-decoration: none;
  color: #000;
  transition: opacity 0.3s;
}

a.pdf-link-text:hover {
  opacity: 0.6;
}

.pdf-l-text {
  display: flex;
  justify-content: center;
  margin: 40px 0 0;
  font-size: 0.9rem;
}

/* スマホでも2列並ぶように */
@media screen and (max-width: 767px) {
  .sengen-news {
    flex: 0 1 calc(50% - 20px);
    max-width: calc(50% - 20px);
  }

  .sengen-news-wrapper {
    gap: 20px;
  }
}



/* スマホ対応 */
@media (max-width: 768px) {
  .cont-s-all .info-row {
    font-size: 1.2rem;
    flex-direction: column;
    align-items: flex-start;
  }

  .cont-s-all .info-label {
    padding-right: 0;
    margin-bottom: 0.5em;
  }

  .cont-s-all .info-content {
    width: 100%;
  }

  .s-all-text {
    width: 100%;
    padding: 0 10px;
}

.s-all-text2 {
    width: 100%;
    padding: 0 10px;
    font-size: 1rem;
  }

  .s-all-text {
    display: inline;
  }

  .my-container {
    padding: 0 10px;
  }

  #buppan-01 ul, #buppan-02 ul {
    justify-content: center;
  }
}

.top-link-zy a {
  text-decoration: none;
  color: #a3333e;
  transition: .7s;
}
.top-link-zy a:hover {
  opacity: .7;
}