@charset "UTF-8";
.fv {
  position: relative;
  width: 100%;
  height: 100vh;
}
.fvimage {
  object-fit: cover;
  width: 100%;
  height: 100%;
}
.fv_over {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}
.fv_over_inner {
  max-width: 140px;
  position: relative;
}
@media screen and (min-width: 961px) {
  .fv_over_inner img {
    max-height: 30vh;
  }
}
@media (max-width: 960px) {
  .fv {
    height: 70vw;
  }
  .fv_over_inner {
    max-width: 13vw;
    margin-bottom: -5em;
  }
}

/* .fv_newsがあるとき、真ん中のロゴを上方向にずらす */
@media screen and (min-width: 961px) {
  .fv:has(.fv_news) .fv_over_inner {
    top: -40px;
  }
}

/* 重要なお知らせを.fv下部にabsolute配置 */
.fv_news {
  position: absolute;
  z-index: 2;
  left: 50%;
  bottom: 100px;
  transform: translateX(-50%);
  width: min(90%, 1200px);
  background: rgba(255, 255, 255, 0.85);
}
.fv_news_heading {
  position: absolute;
  top: -40px;
  height: 40px;
  font-weight: bold;
  background: rgba(255, 255, 255, 0.85);
  display: inline-flex;
  align-items: flex-end;
  line-height: 1;
  padding: 0 40px;
  font-size: 25px;
}
.fv_news_heading::before {
  content: "";
  position: absolute;
  left: 0;
  top: 70%;
  width: 30px;
  height: 3px;
  background: #8fced3;
  transform: translateY(-50%);
}
/* .news_listの高さ制限＆縦スクロール */
.fv_news .news_list {
  max-height: 72px; /* お好みで調整 */
  overflow-y: auto;
  margin: 0;
  padding: 0;
}
@media screen and (min-width: 961px) {
  .fv_news .news_list .link {
    background: none;
  }
}
@media screen and (max-width: 960px) {
  .fv_news {
    position: relative;
    left: auto;
    bottom: auto;
    transform: none;
    width: calc(100% - 40px);
    margin: 50px auto 40px;
    border: 1px solid #b0dde0;
  }
  .fv_news_heading {
    background: #fff;
    border: 1px solid #b0dde0;
    border-bottom: none;
    left: -1px;
    top: -30px;
    height: 30px;
    font-size: 20px;
  }
  .fv_news .news_list {
    max-height: inherit;
    background: #eff5f6;
  }
}

/*  */
.seminar_content {
  margin-top: 85px;
  padding-bottom: 4em;
  border-bottom: 6px solid #3ca9ae;
}
@media (max-width: 1260px) {
  .seminar_content {
    margin-top: 75px;
  }
}
.seminar_name {
  background: #3ca9ae;
  color: #fff;
  display: flex;
  flex-wrap: wrap;
  gap: 0 1em;
  justify-content: center;
  align-items: center;
  font-size: min(7vw, 240%);
  font-weight: bold;
  line-height: 1.2;
  padding: 0.8em 10px;
  margin-bottom: 1em;
}
.seminar_content .date {
  display: flex;
  flex-wrap: wrap;
  font-weight: bold;
  gap: 0 1em;
  font-size: 130%;
}
.seminar_content .address .name {
  font-weight: bold;
  font-size: 140%;
}
.seminar_content .address .place {
  font-weight: bold;
  font-size: 120%;
}
.seminar_content .address .text {
  display: flex;
  flex-wrap: wrap;
  gap: 0 1em;
}

.seminar_content .timetable .box1 {
  width: 7em;
}
.seminar_content .timetable .box2 {
  width: 9.5em;
}
.seminar_content .timetable :is(th, td) {
  border-bottom: 1px solid #ccc;
  padding: 20px 10px 10px;
}
.seminar_content .timetable tr:first-child :is(th, td) {
  padding-top: 0;
}
.seminar_content .timetable th {
  font-weight: bold;
}
@media (max-width: 820px) {
  .seminar_content .timetable,
  .seminar_content .timetable :is(tbody, tr, th, td) {
    display: block;
    padding-top: 0;
    padding-bottom: 0;
  }
  .seminar_content .timetable tr {
    display: flex;
    flex-wrap: wrap;
    border-bottom: 1px solid #ccc;
    padding-bottom: 10px;
  }
  .seminar_content .timetable tr + tr {
    margin-top: 20px;
  }
  .seminar_content .timetable :is(th, td) {
    border: none;
  }
  .seminar_content .timetable .box1 {
    width: 100%;
  }
  .seminar_content .timetable td:last-child {
    flex: 1;
  }
}
@media (max-width: 640px) {
  .seminar_content .timetable .box2 {
    width: 100%;
  }
  .seminar_content .timetable .box3 {
  }
  .seminar_content .timetable .none {
    display: none;
  }
}
.seminar_btn_txt {
  display: flex;
  justify-content: center;
  font-weight: bold;
  color: #f00;
  margin-bottom: 1em;
}

/*  */
.top_about {
  padding-top: 2em;
  padding-bottom: 4em;
}
.top_about .text {
  text-align: center;
  font-size: 110%;
}
@media (max-width: 960px) {
  .top_about .text {
    text-align: left;
  }
  .top_about .pconly {
    display: none;
  }
}

/*  */
.top_member {
  border: 2px solid #2c974d;
  padding: 10px;
  width: 300px;
  margin: 2em auto;
}

/*  */
.linksection {
  padding-top: 5em;
  padding-bottom: 5em;
}
.linksection2 {
  margin-top: 5em;
  margin-bottom: 5em;
}
.linksection3 {
  margin-bottom: 5em;
}

/*  */
.pagelinkwrapper {
  background: url(../img/top/kai_link.webp) center center;
  background-size: cover;
  padding-top: 400px;
}
.pagelinkwrapper .inner {
  background: rgba(255, 255, 255, 0.7);
  padding-bottom: 4em;
}
.pagelinkwrapper .title {
  background: #26a7b1;
  border-radius: 100vw;
  display: flex;
  justify-content: center;
  align-items: center;
  line-height: 1;
  margin: 0 auto;
  width: 100%;
  max-width: 340px;
  padding: 0.6em 0.5em;
  transform: translate(0, -2em);
}
.pagelinkwrapper .titleinner {
  display: block;
  width: 200px;
  aspect-ratio: 4/1;
  position: relative;
}
.pagelink {
  display: flex;
  flex-wrap: wrap;
  gap: 1em;
}
.pagelink .box {
  width: calc((100% - 1em * 3) / 4);
}
.pagelink .link {
  text-decoration: none;
  display: flex;
  gap: 1em;
  justify-content: center;
  align-items: center;
  padding: 0.5em;
  height: 100%;
  background: #fff;
  border: 1px solid #aaa;
  box-shadow: 0 2px 8px -5px #000;
  transition:
    background 0.4s,
    color 0.4s;
}
.pagelink .link.color1 {
  background: #3ca9af;
  color: #fff;
}
.pagelink .link.color1::after {
  color: #fff;
}
.pagelink .link.color1:hover {
  background: #51d0d7;
}
.pagelink .txt {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}
.pagelink .link::before,
.pagelink .link::after {
  content: "";
  display: flex;
  width: 1em;
  align-items: center;
  justify-content: center;
}
.pagelink .link::after {
  font-family: "Font Awesome 5 Free";
  font-weight: 900;
  content: "\f105";
  color: #2fa8b0;
  transition: color 0.4s;
}
@media (min-width: 961px) {
  .pagelink .link:hover {
    background: #26a7b1;
    color: #fff;
  }
  .pagelink .link:hover::after {
    color: #fff;
  }
}
@media (max-width: 960px) {
  .pagelinkwrapper .inner {
    padding-bottom: 2em;
  }
  .pagelink {
    margin-right: auto;
    margin-left: auto;
    width: 100%;
    max-width: 580px;
  }
  .pagelink .box {
    width: calc((100% - 1em) / 2);
  }
}
@media (max-width: 640px) {
  .pagelinkwrapper {
    padding: 50px 20px;
  }
  .pagelinkwrapper .inner {
    padding-top: 2em;
  }
  .pagelinkwrapper .title {
    transform: translate(0);
    margin-bottom: 2em;
  }
  .pagelinkwrapper .titleinner {
    width: 140px;
  }
  .pagelink {
    flex-direction: column;
    max-width: 380px;
  }
  .pagelink .box {
    width: 100%;
  }
}

.calendar_wrapper {
  background: #eff5f6;
  padding-top: 4em;
  padding-bottom: 4em;
  margin-bottom: 5em;
}
.calendar_inner {
  display: flex;
  flex-wrap: wrap;
  gap: 3em;
}
.calendar_inner .block {
  width: calc((100% - 3em) / 2);
  background: #fff;
  padding: 2em;
  border: 1px solid #cedcdd;
}
.calendar_inner table {
  border-top: 1px solid #ccc;
  border-left: 1px solid #ccc;
}
.calendar_inner thead th {
  font-weight: bold;
  background: #82d3cb;
}
.calendar_inner :is(th, td) {
  border-right: 1px solid #ccc;
  border-bottom: 1px solid #ccc;
  text-align: center;
  height: 2.5em;
  line-height: 1;
  vertical-align: middle;
}
.calendar_inner td:first-child,
.calendar_inner td.holiday {
  background: #fee6e6;
}
.calendar_inner td:last-child {
  background: #e1eef2;
}
.calendar_inner .mark {
  color: #fff;
  background: #000;
  border-radius: 100vw;
  display: block;
  width: 92%;
  margin-right: auto;
  margin-left: auto;
  padding: 0.3em 0;
  text-decoration: none;
  cursor: pointer;
  transition: opacity 0.3s;
}
.calendar_inner .mark.c1 {
  background: #390;
}
.calendar_inner .mark:hover {
  opacity: 0.8;
}

body.popup_open_page {
  overflow: hidden;
}
.calendar .popup_ct,
.calendar .popup_bg {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 6;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 2em;
  transition: opacity 0.4s;
}
.calendar .popup_ct {
  opacity: 0;
  pointer-events: none;
}
.calendar .popup_bg {
  background: rgba(0, 0, 0, 0.4);
}
.calendar .popup_ct.popup_open {
  pointer-events: all;
  opacity: 1;
}
.calendar .popup_ct .inner {
  background: #fff;
  width: 100%;
  max-width: 880px;
  padding: 2em;
  text-align: left;
  max-height: 100%;
  overflow: auto;
  position: relative;
  z-index: 9;
}
.calendar .popup_ct .button {
  max-width: 220px;
  min-height: 3em;
}
@media (max-width: 960px) {
  .calendar_inner {
    gap: 2em 1em;
  }
  .calendar_inner .block {
    width: calc((100% - 1em) / 2);
    padding: 1em;
  }
}
@media (max-width: 840px) {
  .calendar_inner {
    margin-right: auto;
    margin-left: auto;
    width: 100%;
    max-width: 640px;
  }
  .calendar_inner .block {
    width: 100%;
  }
}

/* セミナー動画 */
.seminar_video_wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 2em;
}
.seminar_video_wrap > * {
  width: calc((100% - 4em) / 3);
  display: block;
  cursor: pointer;
  transition: 0.2s opacity;
}
.seminar_video_wrap > a:hover {
  opacity: 0.8;
}
@media screen and (max-width: 960px) {
  .seminar_video_wrap > * {
    width: calc((100% - 2em) / 2);
  }
}
/* セミナー動画用のオーバーレイ */
#videoOverlay {
  position: fixed;
  z-index: 9999;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(0, 0, 0, 0.8);
  display: flex;
  align-items: center;
  justify-content: center;
}
.videoOverlay_inner {
  position: relative;
  padding: 0 20px;
}
#overlayVideo {
  width: 100%;
  height: auto;
  max-height: 75vh;
  aspect-ratio: 16/9;
  object-fit: cover;
  background: #000;
  display: block;
}
#closeOverlay {
  position: absolute;
  top: -1.5em;
  right: 20px;
  font-size: 2em;
  color: #fff;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}
@media screen and (max-width: 960px) {
  #closeOverlay {
    font-size: 1.5em;
  }
}
