.elementor img {
  width: 100% !important;
}

body {
  font-family: "Noto Serif JP", serif;
  color: #586166;
}

p {
  margin: 0;
}

#wrapper {
  padding-top: 0;
}

#mainimage {
  height: 100vh;
  position: relative;
  color: #fff;
}
@media screen and (min-width: 1300px) {
  #mainimage::before {
    content: "";
    position: absolute;
    border-right: 1px solid #fff;
    border-bottom: 1px solid #fff;
    z-index: 2;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
}
#mainimage .KV {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  pointer-events: none;
}
#mainimage .group-ttl {
  position: absolute;
  z-index: 2;
  width: 470px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  line-height: 14px;
  font-size: 12px;
  right: -180px;
  bottom: 35%;
  transform: translateY(-50%) rotate(90deg);
}
#mainimage .group-ttl .line {
  width: 117px;
  background: #fff;
  height: 0.5px;
}
#mainimage .group-ttl a {
  color: inherit;
  text-decoration: none;
}
#mainimage .key-ttl {
  position: absolute;
  z-index: 2;
  left: 0;
  right: 0;
  text-align: center;
  top: 53%;
  transform: translateY(-50%);
  font-size: 190px;
  line-height: 1;
}
#mainimage .key-ttl small {
  display: block;
  font-size: 100px;
}
@media screen and (max-width: 900px) {
  #mainimage .key-ttl {
    font-size: 150px;
  }
  #mainimage .key-ttl small {
    font-size: 80px;
  }
}
@media screen and (max-width: 767px) {
  #mainimage .group-ttl {
    width: 459px;
    font-size: 10px;
    line-height: 1;
    bottom: 42%;
    right: -210px;
  }
  #mainimage .key-ttl {
    top: 47%;
    font-size: 75px;
  }
  #mainimage .key-ttl small {
    font-size: 39px;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #mainimage .key-ttl {
    font-size: 60px;
  }
  #mainimage .key-ttl small {
    font-size: 31px;
  }
}

.title-common {
  display: flex;
  align-items: center;
  gap: 32px;
}
.title-common::before {
  content: "";
  width: 32px;
  height: 12px;
  border-top: 1px solid #ccc;
  border-bottom: 1px solid #ccc;
  box-sizing: border-box;
}
@media screen and (max-width: 767px) {
  .title-common {
    gap: 16px;
  }
}

.wrap {
  width: 100%;
  max-width: calc(100% - 60px);
  margin: 0 auto;
}
@media screen and (max-width: 767px) {
  .wrap {
    max-width: 100%;
    padding: 0 20px;
  }
}

.h2-common {
  font-size: 96px;
  line-height: 1.15625;
}
@media screen and (max-width: 767px) {
  .h2-common {
    font-size: 64px;
    line-height: 1.171875;
  }
}

.home #content {
  padding: 128px 0 0;
}
@media screen and (max-width: 767px) {
  .home #content {
    padding: 48px 0 0;
  }
}

#concept {
  position: relative;
}
#concept::before {
  content: "";
  position: absolute;
  right: 0;
  left: calc(50% + 111px);
  top: 7px;
  height: 562px;
  background: url("../img/top/deco1.png") no-repeat left center/auto 100%;
}
#concept .wrap {
  position: relative;
  z-index: 2;
  width: 1270px;
}
#concept .inner {
  width: 1222px;
  margin: 0 0 0 auto;
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  #concept .inner {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
  }
}
#concept .left {
  padding: 21px 0 0;
}
@media screen and (min-width: 768px) {
  #concept .left {
    width: 623px;
    max-width: 55%;
  }
}
#concept .left .title-common {
  font-size: 12px;
  line-height: 16px;
}
#concept .left .title-common > span {
  letter-spacing: 0.08em;
}
#concept .left .title-common > span span {
  color: #ccc;
}
#concept .left h2 {
  margin: 38px 0 72px;
  font-size: 32px;
  letter-spacing: 0.216em;
}
#concept .left .info dl {
  padding: 32px 0 32px 16px;
  border-top: 1px solid #ddd;
  display: flex;
  align-items: flex-start;
}
#concept .left .info dl:last-child {
  border-bottom: 1px solid #ddd;
}
#concept .left .info dl dt {
  width: 124px;
  font-weight: 300;
  font-size: 24px;
  line-height: 35px;
  position: relative;
}
#concept .left .info dl dt:after {
  content: "";
  position: absolute;
  right: 34px;
  width: 1px;
  height: 34px;
  top: 3px;
  border-left: 1px solid #ddd;
  transform: rotate(45deg);
}
#concept .left .info dl dd {
  font-size: 15px;
  line-height: 2;
  padding: 2.5px 0 0;
  width: calc(100% - 124px);
}
@media screen and (min-width: 768px) {
  #concept .img {
    width: 499px;
    max-width: 41%;
  }
}
@media screen and (max-width: 767px) {
  #concept {
    padding: 0 0 50px;
  }
  #concept::before {
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    height: auto;
    background: url("../img/top/deco1_sp.png") no-repeat bottom center/100% auto;
  }
  #concept .left {
    padding: 0 0 32px;
  }
  #concept .left .title-common {
    font-size: 10px;
  }
  #concept .left h2 {
    margin: 32px 0 48px;
    letter-spacing: 0.1em;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #concept .left h2 {
    letter-spacing: 0;
    font-size: 28px;
  }
}
@media screen and (max-width: 767px) {
  #concept .left .info dl {
    padding: 25px 5px 25px 10px;
    align-items: center;
  }
  #concept .left .info dl dt {
    width: 100px;
  }
  #concept .left .info dl dt:after {
    right: 24px;
  }
  #concept .left .info dl dd {
    padding: 0;
    line-height: 28px;
    letter-spacing: 0;
    width: calc(100% - 100px);
  }
}

.textEffect {
  overflow: hidden;
}
.textEffect .text {
  will-change: transform;
  transition: transform 1s linear;
  display: block;
  transform: translateY(150%) scale(1, 2);
}
.textEffect[style*="visibility: visible"] .text {
  transform: translateY(0) scale(1);
}

@keyframes fadeInUp {
  0% {
    opacity: 0;
    transform: translate3d(0, 20px, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}
.fadeInUp {
  animation-name: fadeInUp;
}

.animated {
  animation-duration: 1s;
  animation-fill-mode: both;
}

.animated.infinite {
  animation-iteration-count: infinite;
}

.wow {
  animation-duration: 1s;
  animation-fill-mode: both;
}

#feature {
  margin: 128px 0 0;
  position: relative;
}
#feature::before {
  content: "";
  position: absolute;
  top: 153px;
  width: 219px;
  right: calc(50% + 416px);
  height: 219px;
  background: url("../img/top/deco2.png") no-repeat center/100% auto;
}
@media screen and (max-width: 1366px) {
  #feature::before {
    right: auto;
    left: 48px;
  }
}
#feature .wrap {
  width: 1174px;
  position: relative;
  z-index: 2;
}
#feature .group-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 0 96px;
}
#feature .group-title .title-common {
  font-size: 24px;
  line-height: 35px;
}
#feature .flex {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  flex-direction: column;
  align-content: space-between;
  height: 1230px;
  gap: 0 62px;
}
@media screen and (min-width: 768px) {
  #feature .flex .item {
    width: 350px;
    max-width: calc((100% - 124px) / 3);
  }
  #feature .flex .item:nth-child(2) {
    margin-top: 92px;
  }
  #feature .flex .item:nth-child(3) {
    margin-top: 80px;
  }
  #feature .flex .item:nth-child(4) {
    margin-top: 104px;
  }
  #feature .flex .item:nth-child(5) {
    margin-top: 40px;
  }
  #feature .flex .item:nth-child(6) {
    margin-top: 118px;
  }
}
#feature .flex .item a {
  text-decoration: none;
  display: block;
  position: relative;
  color: inherit;
}
#feature .flex .item .stt {
  position: absolute;
  z-index: 2;
  line-height: 84px;
  font-size: 72px;
  letter-spacing: 0;
  top: -24px;
  right: -23px;
}
#feature .flex .item .img {
  position: relative;
}
#feature .flex .item .img::before {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  background: #fff;
  width: 64px;
  height: 64px;
}
#feature .flex .item .img::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  width: 280px;
  background: #fff;
  height: 45px;
}
#feature .flex .item .group-content {
  position: relative;
  z-index: 2;
  margin: -45px 0 0;
  padding: 16px 0 0 24px;
}
#feature .flex .item .group-content::before {
  content: "";
  position: absolute;
  right: 60px;
  width: 1px;
  height: 45px;
  top: 48px;
  border-left: 1px solid #ddd;
  transform: rotate(45deg);
}
#feature .flex .item .group-content:after {
  content: "";
  position: absolute;
  width: 32px;
  height: 32px;
  background: url("../img/top/icon.png") no-repeat center/100% auto;
  top: 58px;
  right: 0;
}
#feature .flex .item .group-content .tit {
  font-size: 18px;
  line-height: 32px;
  letter-spacing: 0.08em;
  max-width: 240px;
}
#feature .flex .item .group-content .sub-tit {
  max-width: 232px;
  text-transform: uppercase;
  font-size: 10px;
  line-height: 1.4;
  margin: 20px 0 0;
}
@media screen and (min-width: 768px) and (max-width: 1180px) {
  #feature .flex {
    height: 1890px;
    align-content: center;
    gap: 0 40px;
  }
  #feature .flex .item {
    max-width: calc((100% - 40px) / 2);
  }
  #feature .flex .item:nth-child(3) {
    margin-top: 92px;
  }
  #feature .flex .item:nth-child(4) {
    margin-top: 80px;
  }
  #feature .flex .item:nth-child(5), #feature .flex .item:nth-child(6) {
    margin-top: 92px;
  }
}
@media screen and (max-width: 767px) {
  #feature {
    margin: 64px 0 0;
  }
  #feature::before {
    left: auto;
    right: 20px;
    top: 13px;
    opacity: 0.48;
  }
  #feature .group-title {
    display: block;
    margin: 0 0 52px;
  }
  #feature .group-title .title-common {
    font-size: 18px;
    line-height: 26px;
  }
  #feature .group-title .h2-common {
    margin-top: 12px;
  }
  #feature .flex {
    display: block;
    height: auto;
  }
  #feature .flex .item {
    width: 100%;
    max-width: 100%;
  }
  #feature .flex .item + .item {
    margin-top: 56px;
  }
  #feature .flex .item .stt {
    right: 0;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #feature .flex .item .stt {
    font-size: 60px;
    right: -5px;
  }
}
@media screen and (max-width: 767px) {
  #feature .flex .item .img::before {
    width: 93px;
    height: 64px;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #feature .flex .item .img::before {
    width: 70px;
    height: 50px;
  }
}
@media screen and (max-width: 767px) {
  #feature .flex .item .group-content .tit {
    width: 232px;
    letter-spacing: 0;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #feature .flex .item .group-content {
    padding-left: 0;
  }
}

#menu {
  margin: 128px 0 0;
  position: relative;
  padding: 0 0 80px;
}
#menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 85px;
  bottom: 0;
  background: #F9F9F9;
  transform: skewY(-2deg);
}
#menu:after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 281px;
  background: url("../img/top/menu_deco.png") repeat center/auto 100%;
  height: 468px;
}
#menu .wrap {
  width: 1174px;
  position: relative;
  z-index: 2;
}
#menu .group-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 0 72px;
}
#menu .group-title .title-common {
  font-size: 24px;
  line-height: 35px;
}
#menu .flex .row {
  display: flex;
  gap: 32px;
}
@media screen and (min-width: 768px) {
  #menu .flex .row .item {
    width: 225px;
    max-width: calc((100% - 96px) / 4);
  }
}
#menu .flex .row .item a {
  display: block;
  text-decoration: none;
}
#menu .flex .row .item .img {
  position: relative;
}
#menu .flex .row .item .img::before {
  content: "";
  position: absolute;
  z-index: 2;
  right: 8px;
  bottom: -16px;
  background: url("../img/top/icon.png") no-repeat center/100% auto;
  width: 32px;
  height: 32px;
}
#menu .flex .row .item .tit {
  font-size: 18px;
  line-height: 28px;
  margin: 20px 0 0 8px;
}
@media screen and (min-width: 768px) and (max-width: 900px) {
  #menu .flex .row .item .tit {
    font-size: 16px;
  }
}
#menu .flex .row .item .sub-tit {
  text-transform: uppercase;
  margin: 12px 0 0 8px;
  font-size: 10px;
  line-height: 1.4;
}
#menu .flex .row:nth-child(2) {
  justify-content: flex-end;
  margin: 48px 0 0;
}
@media screen and (max-width: 767px) {
  #menu {
    margin: 64px 0 0;
    padding: 0 0 90px;
  }
  #menu::before {
    top: 89px;
  }
  #menu:after {
    top: 6px;
    bottom: -30px;
    height: auto;
    background: url("../img/top/menu_deco1_sp.png") no-repeat top center/100% auto, url("../img/top/menu_deco2_sp.png") no-repeat bottom center/100% auto;
  }
  #menu .group-title {
    display: block;
    margin: 0 0 52px;
  }
  #menu .group-title .title-common {
    font-size: 18px;
    line-height: 26px;
  }
  #menu .group-title .h2-common {
    margin-top: 12px;
  }
  #menu .flex .row {
    flex-wrap: wrap;
    gap: 32px 10px;
  }
  #menu .flex .row .item {
    width: calc(50% - 5px);
  }
  #menu .flex .row .item .tit {
    margin: 16px 0 0;
    font-size: 16px;
    line-height: 1.5;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #menu .flex .row .item .tit {
    font-size: 15px;
  }
}
@media screen and (max-width: 767px) {
  #menu .flex .row .item .sub-tit {
    margin: 8px 0 0;
  }
  #menu .flex .row + .row {
    margin-top: 32px;
  }
}

#greeting {
  position: relative;
  margin: 155px 0 0;
}
#greeting h2 {
  width: 1200px;
  margin: 0 auto;
  max-width: calc(100% - 60px);
  font-size: 160px;
  line-height: 1.1625;
  color: #ccc;
}
@media screen and (max-width: 1100px) {
  #greeting h2 {
    font-size: 130px;
  }
}
#greeting .line {
  position: absolute;
  z-index: 2;
  width: 1px;
  height: 102px;
  background: #ccc;
  transform: rotate(45deg);
  top: 93px;
  left: calc(50% + 250px);
}
@media screen and (max-width: 1250px) {
  #greeting .line {
    left: 870px;
  }
}
@media screen and (max-width: 1100px) {
  #greeting .line {
    left: 710px;
  }
}
#greeting .img {
  position: absolute;
  left: 0;
  top: 136px;
  right: calc(50% - 363px);
  height: 698px;
}
@media screen and (max-width: 1365px) {
  #greeting .img {
    right: 320px;
    height: auto;
  }
}
@media screen and (max-width: 1100px) {
  #greeting .img {
    top: 110px;
  }
}
@media screen and (min-width: 1367px) {
  #greeting .img img {
    -o-object-fit: cover;
       object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    width: 100% !important;
    height: 100%;
  }
}
#greeting .img::before {
  content: "";
  position: absolute;
  z-index: 2;
  background: url("../img/top/greeting_deco.png") no-repeat center/100% auto;
  width: 80px;
  height: 138px;
  left: 95px;
  bottom: -69px;
}
#greeting .wrap {
  width: 1174px;
  position: relative;
  z-index: 2;
  margin-top: -20px;
}
@media screen and (max-width: 1100px) {
  #greeting .wrap {
    margin-top: 60px;
  }
}
#greeting .title-common {
  flex-direction: row-reverse;
  font-size: 24px;
  line-height: 35px;
}
#greeting .group-content {
  width: 494px;
  margin: 48px 0 0 auto;
  max-width: 60%;
}
#greeting .group-content h3 {
  font-size: 28px;
  line-height: 2;
  letter-spacing: 0.04em;
  margin: 0 0 48px;
}
#greeting .group-content .txt {
  letter-spacing: 0;
}
#greeting .group-content .btn-link {
  width: 230px;
  margin: 40px 0 0;
}
#greeting .group-content .btn-link a {
  text-decoration: none;
  height: 64px;
  border-radius: 100px;
  background: #586166;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px 0 32px;
}
#greeting .group-content .btn-link a:after {
  content: "";
  background: url("../img/top/btn_icon.png") no-repeat center/100% auto;
  width: 32px;
  height: 32px;
}
#greeting .group-content .btn-link a:hover {
  opacity: 0.8;
}
@media screen and (max-width: 767px) {
  #greeting {
    margin: 128px 0 0;
  }
  #greeting h2 {
    max-width: calc(100% - 40px);
    font-size: 56px;
    line-height: 65px;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #greeting h2 {
    max-width: calc(100% - 15px);
  }
}
@media screen and (max-width: 767px) {
  #greeting .line {
    height: 73.5px;
    right: 45px;
    left: auto;
    top: 20px;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #greeting .line {
    right: 25px;
  }
}
@media screen and (max-width: 767px) {
  #greeting .img {
    right: 0;
    top: 48px;
  }
  #greeting .img::before {
    width: 48px;
    height: 83px;
    bottom: -42px;
    right: 20px;
    left: auto;
  }
  #greeting .img:after {
    position: absolute;
    content: "";
    left: 0;
    bottom: -1px;
    width: 50%;
    height: 25px;
    z-index: 2;
    background: #fff;
  }
  #greeting .wrap {
    margin-top: 59vw;
  }
  #greeting .title-common {
    justify-content: flex-end;
  }
  #greeting .group-content {
    max-width: 100%;
    width: 100%;
    margin: 40px 0 0;
  }
  #greeting .group-content h3 {
    font-size: 24px;
    margin: 0 0 32px;
  }
  #greeting .group-content .btn-link {
    margin-left: auto;
    margin-right: auto;
  }
}

.txt-vertical {
  cursor: vertical-text;
  writing-mode: vertical-rl;
  -o-writing-mode: vertical-rl;
  -ms-writing-mode: vertical-rl;
  -ms-writing-mode: tb-rl;
  -moz-writing-mode: vertical-rl;
  -webkit-writing-mode: vertical-rl;
  text-orientation: upright;
  word-wrap: break-word;
}

#recruit {
  margin: 128px 0 0;
  position: relative;
  padding: 0 0 64px;
}
#recruit::before {
  content: "";
  position: absolute;
  width: 320px;
  height: 162px;
  top: 460px;
  left: calc(50% + 152px);
  background: #F9F9F9;
}
@media screen and (max-width: 1234px) {
  #recruit::before {
    right: 145px;
    left: auto;
  }
}
#recruit h2 {
  width: 1200px;
  margin: 0 auto;
  max-width: calc(100% - 60px);
  position: relative;
  z-index: 2;
}
#recruit .line {
  position: absolute;
  z-index: 2;
  width: 1px;
  height: 90.5px;
  background: #586166;
  transform: rotate(45deg);
  top: 43px;
  left: calc(50% - 160px);
}
@media screen and (max-width: 1250px) {
  #recruit .line {
    left: 460px;
  }
}
#recruit .img {
  position: absolute;
  top: 55px;
  left: 0;
  right: calc(50% - 312px);
}
@media screen and (min-width: 768px) {
  #recruit .img {
    height: 663px;
  }
  #recruit .img img {
    -o-object-fit: cover;
       object-fit: cover;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    -o-object-position: 75% center;
       object-position: 75% center;
  }
}
@media screen and (max-width: 1234px) {
  #recruit .img {
    right: 305px;
  }
}
#recruit .wrap {
  width: 1174px;
  margin-top: 8px;
  position: relative;
  z-index: 2;
}
#recruit .title-common {
  flex-direction: column;
  width: 32px;
  font-size: 32px;
  line-height: 1;
  letter-spacing: 0.16em;
  margin: 0 99px 113px auto;
}
#recruit .title-common span {
  letter-spacing: 0.56em;
  height: 314px;
}
#recruit .btn-link {
  width: 230px;
  margin: 0 0 0 auto;
}
#recruit .btn-link a {
  text-decoration: none;
  height: 64px;
  border-radius: 100px;
  background: #586166;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 16px 0 32px;
}
#recruit .btn-link a:after {
  content: "";
  background: url("../img/top/btn_icon.png") no-repeat center/100% auto;
  width: 32px;
  height: 32px;
}
#recruit .btn-link a:hover {
  opacity: 0.8;
}
@media screen and (max-width: 767px) {
  #recruit {
    margin: 64px 0 0;
    position: relative;
    padding: 0;
  }
  #recruit::before {
    right: 0;
    left: auto;
    bottom: 32px;
    top: auto;
  }
  #recruit .h2-common {
    font-size: 48px;
    line-height: 56px;
    max-width: calc(100% - 40px);
  }
  #recruit .line {
    height: 54px;
    top: 20px;
    left: 228px;
  }
  #recruit .img {
    position: relative;
    top: 0;
    left: 0;
    right: 0;
    margin: -29px 90px 32px 0;
  }
  #recruit .wrap {
    margin-top: 14px;
    position: static;
  }
  #recruit .title-common {
    position: absolute;
    top: 89px;
    font-size: 24px;
    right: 38px;
    margin: 0;
  }
  #recruit .title-common span {
    height: 253px;
  }
  #recruit .btn-link {
    margin: 0 auto;
    position: relative;
    z-index: 2;
  }
}

#access {
  margin: 128px 0 0;
}
#access .wrap {
  width: 1174px;
}
#access .group-title {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin: 0 0 72px;
}
#access .group-title .title-common {
  font-size: 24px;
  line-height: 35px;
}
#access .flex {
  display: flex;
  justify-content: space-between;
  position: relative;
}
#access .flex::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  width: 1px;
  background: #ccc;
  left: 50%;
}
#access .flex .col {
  width: 537px;
  max-width: 48%;
}
#access .flex .col .time-table {
  width: 100%;
}
#access .flex .col .time-table tr th, #access .flex .col .time-table tr td {
  border-top: 1px solid #ccc;
  padding: 20px 0;
  line-height: 1.5;
  text-align: center;
}
#access .flex .col .time-table tr th {
  border-right: 1px solid #ccc;
  width: 27.5%;
  box-sizing: border-box;
}
#access .flex .col .time-table tr td:last-child {
  width: 14%;
}
#access .flex .col .time-table tbody tr:last-child th, #access .flex .col .time-table tbody tr:last-child td {
  border-bottom: 1px solid #ccc;
}
#access .flex .col .note {
  margin: 16px 0 0 23px;
  font-size: 15px;
  line-height: 21px;
}
#access .flex .col .note span {
  display: inline-block;
}
#access .flex .col .note span + span {
  position: relative;
  margin-left: 50px;
}
#access .flex .col .note span + span::before {
  content: "";
  position: absolute;
  top: 50%;
  transform: translateY(-50%) rotate(45deg);
  width: 1px;
  height: 22px;
  background: #586166;
  left: -26px;
}
@media screen and (min-width: 768px) {
  #access .flex .col .info dl {
    display: flex;
    border-top: 1px solid #ccc;
    line-height: 1.5;
  }
  #access .flex .col .info dl:last-child {
    border-bottom: 1px solid #ccc;
  }
  #access .flex .col .info dl dt {
    width: 27.5%;
    border-right: 1px solid #ccc;
    text-align: center;
    padding: 16px 0;
  }
  #access .flex .col .info dl dd {
    padding: 16px 0 16px 31px;
    width: 72.5%;
    box-sizing: border-box;
  }
}
@media screen and (min-width: 768px) and (max-width: 900px) {
  #access .flex {
    flex-wrap: wrap;
    justify-content: center;
  }
  #access .flex::before {
    display: none;
  }
  #access .flex .col {
    max-width: 100%;
  }
  #access .flex .col + .col {
    margin-top: 50px;
  }
}
@media screen and (max-width: 767px) {
  #access {
    margin: 64px 0 0;
  }
  #access .group-title {
    display: block;
    margin: 0 0 40px;
  }
  #access .group-title .title-common {
    font-size: 18px;
    line-height: 26px;
  }
  #access .group-title .h2-common {
    margin-top: 12px;
  }
  #access .flex {
    display: block;
  }
  #access .flex::before {
    display: none;
  }
  #access .flex .col {
    width: 100%;
    max-width: 100%;
  }
  #access .flex .col .note {
    margin-left: 0;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #access .flex .col .note {
    font-size: 13px;
  }
  #access .flex .col .note span + span {
    margin-left: 30px;
  }
  #access .flex .col .note span + span::before {
    left: -16px;
  }
}
@media screen and (max-width: 767px) {
  #access .flex .col + .col {
    margin-top: 40px;
  }
  #access .flex .col .info dl {
    border-top: 1px solid #ccc;
    line-height: 1.5;
    padding: 16px 0 16px 8px;
  }
  #access .flex .col .info dl:last-child {
    border-bottom: 1px solid #ccc;
  }
  #access .flex .col .info dl dt {
    margin-bottom: 12px;
  }
  #access .flex .col .info dl dd {
    letter-spacing: 0;
  }
  #access .flex .col .time-table tr th {
    letter-spacing: 0;
    width: 112px;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #access .flex .col .time-table tr th {
    width: 100px;
  }
}
@media screen and (max-width: 767px) {
  #access .flex .col .time-table tr td {
    font-size: 15px;
  }
  #access .flex .col .time-table tr td:last-child {
    width: 5%;
  }
  #access .flex .col .time-table thead tr td:last-child {
    font-size: 12px;
    line-height: 0.8;
    text-align: left;
  }
  #access .flex .col .time-table thead tr td:last-child .text {
    display: block;
    padding-left: 14px;
    position: relative;
  }
  #access .flex .col .time-table thead tr td:last-child .text::before {
    content: "";
    position: absolute;
    width: 0.5px;
    background: #586166;
    height: 15px;
    transform: rotate(45deg);
    top: -7px;
    left: 12.5px;
  }
}

#ggmap {
  margin: 72px 0 0;
  height: 400px;
  filter: grayscale(1);
}
#ggmap iframe {
  width: 100%;
  height: 100%;
}
@media screen and (max-width: 767px) {
  #ggmap {
    height: 300px;
    margin: 40px 0 0;
  }
}

#calendar {
  margin: 128px 0 0;
  position: relative;
  padding: 0 0 40px;
}
#calendar::before {
  content: "";
  position: absolute;
  top: 75px;
  right: calc(50% + 136px);
  background: url("../img/top/calendar_deco.png") no-repeat center top/100% auto;
  width: 547px;
  height: 643px;
}
@media screen and (max-width: 1366px) {
  #calendar::before {
    right: auto;
    left: 0;
  }
}
#calendar .group-title {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px 0;
  align-items: center;
  margin: 0 0 72px;
}
#calendar .group-title .title-common {
  font-size: 24px;
  line-height: 35px;
}
#calendar .elementor-container {
  max-width: calc(100% - 60px);
  width: 1174px;
}
#calendar .mec-wrap {
  position: relative;
}
#calendar .mec-wrap::before {
  content: "";
  position: absolute;
  top: -40px;
  bottom: -40px;
  left: 0;
  right: calc(50% - 205px);
  background: #F9F9F9;
}
@media screen and (max-width: 900px) {
  #calendar .mec-wrap::before {
    left: -30px;
  }
}
#calendar .mec-wrap .mec-clear:after {
  display: none;
}
#calendar .mec-wrap .mec-clear::before {
  display: none;
}
#calendar .mec-wrap .mec-calendar {
  width: 1093.5px;
  max-width: 100%;
  margin: 0 0 0 auto;
}
#calendar .mec-calendar-side {
  display: flex;
  justify-content: space-between;
  gap: 30px;
  align-items: center;
}
@media screen and (max-width: 900px) {
  #calendar .mec-calendar-side {
    align-items: flex-start;
    flex-direction: column;
  }
}
#calendar .mec-calendar-header {
  margin: 0;
}
#calendar .mec-calendar-header h2 {
  font-weight: 400;
  margin: 0;
  text-align: left;
  color: #586166;
  font-family: "Aboreto", system-ui;
}
#calendar .mec-calendar-header h2 span {
  display: block;
}
#calendar .mec-calendar-header h2 .year, #calendar .mec-calendar-header h2 .month2 {
  padding-left: 15px;
  letter-spacing: 0.36em;
  font-size: 24px;
  line-height: 28px;
  margin: 0 0 5px;
}
#calendar .mec-calendar-header h2 .month {
  font-size: 96px;
  line-height: 1.15625;
  position: relative;
}
#calendar .mec-calendar-header h2 .month::before {
  content: "";
  position: absolute;
  width: 1px;
  height: 128px;
  transform: rotate(45deg);
  background: #586166;
  left: 102px;
  top: 35px;
}
#calendar .mec-calendar-header h2 .month2 {
  padding-left: 90px;
  margin: 0;
  letter-spacing: 0;
}
#calendar .mec-calendar-table {
  width: 796px;
  background: #fff;
  padding: 32px 15px 32px 47px;
}
@media screen and (max-width: 900px) {
  #calendar .mec-calendar-table {
    width: 100%;
  }
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-table-head {
  background: transparent;
  padding: 0 0 10px;
  position: relative;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-table-head::before {
  content: "";
  position: absolute;
  left: -15px;
  right: -15px;
  height: 1px;
  background: #8E8E8F;
  bottom: 0;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-table-head .mec-calendar-day-head {
  text-align: center;
  font-weight: 400;
  color: #1A1311;
  font-size: 18px;
  line-height: 26px;
  border: 0;
  padding: 0;
  font-family: "Zen Kaku Gothic New", sans-serif;
  text-transform: lowercase;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-table-head .mec-calendar-day-head:first-child {
  color: #C30013;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-table-head .mec-calendar-day-head::first-letter {
  text-transform: uppercase;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row {
  position: relative;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row::before {
  content: "";
  position: absolute;
  left: -15px;
  right: -15px;
  height: 1px;
  background: #8E8E8F;
  bottom: 0;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt {
  background: transparent;
  font-family: "Zen Kaku Gothic New", sans-serif;
  border: 0;
  height: 65px;
  box-sizing: border-box;
  padding: 0 6px;
  font-size: 20px;
  line-height: 1.35;
  border-left: 1px dotted #8E8E8F;
  color: #1A1311;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt.mec-table-nullday {
  color: rgba(26, 19, 17, 0.3);
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt:last-child {
  color: #004B9E;
  border-right: 1px dotted #8E8E8F;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt:last-child.mec-table-nullday {
  color: rgba(0, 75, 158, 0.3);
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt:first-child {
  color: #C30013;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt:first-child.mec-table-nullday {
  color: rgba(195, 0, 19, 0.3);
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt .mec-calendar-novel-selected-day {
  padding: 0;
  display: block;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt .event-single-link-novel {
  display: block;
  line-height: 0;
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt .mec-event-article {
  display: inline-block;
  border-radius: 10px;
  font-weight: 700;
  font-family: "Zen Kaku Gothic New", sans-serif;
  color: #fff;
  padding: 1px 12px 3px;
  min-height: auto;
}
@media screen and (max-width: 1000px) {
  #calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt .mec-event-article {
    padding-left: 8px;
    padding-right: 8px;
  }
}
#calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt .mec-event-article h4 {
  margin-bottom: 0;
  font-size: 11px;
  letter-spacing: 0.12em;
  font-weight: 700;
  color: #fff;
  line-height: 16px;
  font-family: "Zen Kaku Gothic New", sans-serif;
}
@media screen and (max-width: 767px) {
  #calendar {
    margin: 64px 0 0;
    padding: 0 0 20px;
  }
  #calendar::before {
    background-image: url("../img/top/calendar_deco_sp.png");
    width: 50%;
    height: auto;
    bottom: 0;
    top: 65px;
  }
  #calendar .group-title {
    display: block;
    margin: 0 0 9px;
  }
  #calendar .group-title .title-common {
    font-size: 18px;
    line-height: 26px;
  }
  #calendar .group-title .h2-common {
    margin-top: 12px;
    letter-spacing: -0.05em;
  }
}
@media screen and (max-width: 767px) and (max-width: 350px) {
  #calendar .group-title .h2-common {
    font-size: 56px;
  }
}
@media screen and (max-width: 767px) {
  #calendar .elementor-container {
    width: 100%;
    max-width: 100%;
    padding: 0 20px;
    box-sizing: border-box;
  }
  #calendar .mec-wrap::before {
    top: 39px;
    left: -20px;
    bottom: -20px;
    right: 97px;
  }
  #calendar .mec-calendar-header h2 .year {
    padding-left: 8px;
    font-size: 10px;
    line-height: 11px;
  }
  #calendar .elementor-widget {
    margin: 0;
  }
  #calendar .mec-calendar-header h2 .month {
    font-size: 43px;
    line-height: 50px;
  }
  #calendar .mec-calendar-header h2 .month::before {
    height: 60px;
    top: 12px;
    left: 50px;
  }
  #calendar .mec-calendar-header h2 .month2 {
    font-size: 10px;
    line-height: 11px;
    padding-left: 43px;
  }
  #calendar .mec-calendar-side {
    gap: 22px;
    min-width: 100% !important;
  }
  #calendar .mec-calendar-table {
    padding: 20px 6px 20px 26px;
  }
  #calendar .mec-calendar-table .mec-month-container .mec-calendar-table-head .mec-calendar-day-head {
    font-size: 7px;
    line-height: 10px;
  }
  #calendar .mec-calendar-table .mec-month-container .mec-calendar-table-head {
    padding: 0 0 5.5px;
  }
  #calendar .mec-calendar-table .mec-month-container .mec-calendar-table-head::before {
    left: -6px;
    right: -6px;
  }
  #calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt {
    font-size: 8px;
    line-height: 11px;
    height: 28px;
  }
  #calendar .mec-calendar-table .mec-month-container .mec-calendar-row::before {
    left: -6px;
    right: -6px;
  }
  #calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt .mec-event-article h4 {
    font-size: 5px;
    line-height: 7px;
  }
  #calendar .mec-calendar-table .mec-month-container .mec-calendar-row dt .mec-event-article {
    padding-left: 5px;
    padding-right: 5px;
    padding-top: 2px;
    padding-bottom: 2px;
  }
}