/* トップページ */

.section .container.about-grid {
  width:min(calc(100% - 64px), 1440px);
}

.about.section,
#access.section {
  padding: clamp(6rem, 5.2vw, 7.8rem) 0;
}

@media (max-width: 767px) {
  .about.section,
  #access.section {
    padding: 7.8rem 0;
  }
}

#access.section {
  padding-top: 0;
  padding-bottom: 120px;
}

/* トップの採用・先輩職員・研修所リンクの写真に共通の角丸。 */
.recruit-photos figure,
.voice-card img {
  border-radius: 1.2rem;
}

.facility-card figure {
  border-radius: 1.2rem 1.2rem 0 0;
}

.facility-card {
  border-radius: 1.2rem 1.2rem 0 0;
}

.recruit-copy .section-label {
  margin-bottom: 1.6rem;
}

.recruit-copy .white-circle-link {
  align-self: flex-start;
  max-width: 100%;
}

.recruit-copy p:not(.section-label) {
  width: 100%;
  max-width: 63rem;
  margin: 0;
  font-size: 1.8rem;
  line-height: 2;
  letter-spacing: .04em;
  text-indent: 0;
}

@media (max-width: 1024px) {
  .recruit-copy p:not(.section-label) {
    max-width: 46rem;
    font-size: 1.6rem;
    line-height: 1.9;
  }
}

@media (max-width: 767px) {
  .recruit-copy .section-label {
    margin-bottom: 1.2rem;
  }

  .recruit-copy p:not(.section-label) {
    width: 100%;
    max-width: none;
    font-size: 1.6rem;
    line-height: 1.9;
  }
}

.hero {
  height: min(100svh, 860px);
  min-height: 640px;
  background: #2c5f83;
}

.hero-slider,
.hero-slide {
  position: absolute;
  inset: 0;
}

.hero-slide {
  opacity: 0;
  transition: opacity 1.15s ease;
}

.hero-slide.is-active {
  opacity: 1;
}

/* 消え終わるまで縮小を維持し、拡大率のリセットは非表示中に行う。 */
.hero-slide.is-zooming img {
  animation: hero-zoom-out 5.5s ease both;
}

@keyframes hero-zoom-out {
  from { transform: scale(1.03); }
  to { transform: scale(1); }
}

.hero-slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.03);
}

.hero-controls {
  position: absolute;
  z-index: 5;
  top: 50%;
  right: 3rem;
  transform: translateY(-50%);
}

.hero-dots {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2rem;
}

.hero-dots button {
  width: 1rem;
  height: 1rem;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, .9);
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  transition: background-color .3s ease, transform .3s ease;
}

.hero-dots button.is-active {
  background: #fff;
  transform: scale(1.2);
}

.hero-copy {
  position: absolute;
  z-index: 3;
  left: max(6vw, 42px);
  width: calc(62vw - max(6vw, 42px));
  max-width: calc(100% - (max(6vw, 42px) * 2));
  bottom: 7%;
  color: #fff;
  text-shadow: none;
}

.hero-lead-wrap {
  position: relative;
  margin-top: 0;
  padding-left: 3rem;
}

.hero-lead-wrap::before {
  content: "";
  position: absolute;
  left: 0;
  top: .4rem;
  bottom: .4rem;
  width: 2px;
  background: rgba(255, 255, 255, .7);
}

.hero-lead {
  display: flex;
  flex-direction: column;
  gap: clamp(.6rem, .6vw, 1rem);
  margin: 0;
  padding: 0;
  font-family: "Noto Serif JP", var(--serif);
  font-size: min(4.9rem, calc((62vw - max(6vw, 42px) - 3rem) / 23));
  font-weight: 700;
  line-height: 1.6;
  letter-spacing: .025em;
  -webkit-text-stroke: 0;
  text-shadow: 0 2px 6px rgba(24, 24, 24, .55), 0 5px 18px rgba(24, 24, 24, .35);
}

.hero-lead__opening {
  display: block;
}

.hero-lead__desktop-break {
  display: inline;
}

@media (max-width: 767px) {
  .hero-lead br {
    display: none;
  }
}

@media (min-width: 1025px) {
  .hero-copy {
    bottom: 4%;
  }
}

@media (min-width: 768px) and (max-width: 1024px) {
  .hero-copy {
    width: calc(100% - (max(6vw, 42px) * 2));
  }

  .hero-lead {
    font-size: clamp(3.2rem, 4.2vw, 4rem);
  }
}

.about-grid {
  display: grid;
  align-items: start;
  grid-template-columns: minmax(0, 40%) minmax(0, 50%);
  column-gap: 10%;
}

.about-visual {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  grid-template-rows: auto auto;
  width: 100%;
  max-width: none;
  row-gap: 3.2rem;
}

.about-photo {
  position: relative;
  z-index: 2;
  margin: 0;
  overflow: hidden;
}

.about-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit:cover;
}

.about-photo-main {
  grid-row: 1;
  width: 82.986%;
  max-width: none;
  aspect-ratio: 478 / 549;
  justify-self: end;
  margin-right: 0;
}

.about-photo-sub {
  grid-row: 2;
  width: 60.069%;
  max-width: none;
  aspect-ratio: 3 / 2;
  justify-self: start;
}

.about-orbit {
  position: absolute;
  z-index: 1;
  left: -9.722%;
  top: -1.537%;
  width: 104.167%;
  height: 108.607%;
  border: 1px solid rgba(57, 57, 57, .12);
  border-radius: 50%;
  transform: rotate(35deg);
  pointer-events: none;
}

.about-orbit::before {
  content: "";
  position: absolute;
  left: 18%;
  top: 7%;
  width: 74%;
  height: 84%;
  border: 1px solid rgba(57, 57, 57, .12);
  border-radius: 50%;
  transform: rotate(-5deg);
}

.about-copy {
  width: 100%;
  max-width: none;
  padding-left: 0;
  padding-top:30.556%;
}

.about-copy h2 {
  position:relative;
  isolation:isolate;
  width:fit-content;
  max-width:calc(100% - 3rem);
}

.about-copy h2::before,
.about-copy h2::after {
  position:absolute;
  z-index:-1;
  color:rgba(15, 95, 152, .25);
  font-family:"Noto Serif JP", var(--serif);
  font-size:7rem;
  font-weight:400;
  line-height:1;
  letter-spacing:0;
  pointer-events:none;
}

.about-copy h2::before {
  content:"「";
  top:-2rem;
  left:-9rem;
}

.about-copy h2::after {
  content:"」";
  right:-8rem;
  bottom:-1rem;
}

.about-copy p {
  width: 100%;
  max-width: none;
  margin: 0 0 3.2rem;
  color: #393939;
      font-size: 1.65rem;
  line-height: 2;
  letter-spacing: .04em;
}

.about-copy p:last-of-type {
  margin-bottom: 0;
}

.recruit {
  position: relative;
  height: 57rem;
  min-height: 800px;
  color: #fff;
  overflow: hidden;
  isolation: isolate;
  background-color: #0e6098;
  background-image: linear-gradient(116deg, rgba(11, 90, 145, .9) 0%, rgba(14, 96, 152, .9) 42%, rgba(18, 103, 159, .9) 72%, rgba(38, 118, 170, .9) 100%), url("../../images/recruit-bg.webp");
  background-size: auto, 768px 768px;
  background-position: center;
  background-repeat: no-repeat, repeat;
}

.recruit-copy {
  position: absolute;
  z-index: 3;
  top: 0;
  bottom: 0;
  left: max(3.2rem, calc((100vw - min(calc(100vw - 64px), var(--max))) / 2));
  width: calc(100% - max(3.2rem, calc((100vw - min(calc(100vw - 64px), var(--max))) / 2)) - 55rem - max(3.2rem, calc((100vw - min(calc(100vw - 64px), var(--max))) / 2)) - 4rem);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 4rem 0;
  color: #fff;
}

.recruit-copy h2 {
  width: 100%;
  max-width: none;
  margin: 0 0 3rem;
  font-family: var(--serif);
  font-size: clamp(3.6rem, 3.9vw, 5.6rem);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: .04em;
  color: #fff;
}

.recruit .recruit-photos {
  position: absolute;
  z-index: 2;
  top: 0;
  bottom: 0;
  right: max(3.2rem, calc((100vw - min(calc(100vw - 64px), var(--max))) / 2));
  width: min(55rem, 36vw);
  max-width: 55rem;
  overflow: hidden;
}

.recruit-photos .recruit-photos-track {
  display: flex;
  flex-direction: column;
  width: 100%;
  transition-timing-function: linear;
  will-change: transform;
}

.recruit-photos figure {
  flex-shrink: 0;
  width: 100%;
  height: 36rem;
  margin: 0;
  overflow: hidden;
}

.recruit-photos img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

@media (max-width: 1024px) {

  .about-grid {
    grid-template-columns: minmax(24rem, 34%) minmax(0, 1fr);
    align-items: center;
    gap: 4rem;
  }

  .about-visual {
    position: relative;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto auto;
    width: 100%;
    max-width: 32rem;
    margin: 0;
    row-gap: 1.8rem;
  }

  .about-photo {
    position: relative;
    z-index: 2;
    margin: 0;
    overflow: hidden;
    background: #edf3f7;
  }

  .about-photo-main {
    grid-row: 1;
    width: 82.986%;
    max-width: none;
    justify-self: end;
    margin-right: 0;
  }

  .about-photo-sub {
    grid-row: 2;
    width: 60.069%;
    max-width: none;
    justify-self: start;
  }

  .about-photo img {
    display: block;
    width: 100%;
    height: 100%;
  }

  .about-copy {
    width: 100%;
    max-width: none;
    margin: 0;
    padding-top:0;
  }

  .about-copy h2 {
    margin-bottom: 2.6rem;
    font-size: clamp(3.2rem, 4.2vw, 4.2rem);
    line-height: 1.5;
  }

  .about-copy h2::before,
  .about-copy h2::after {
    font-size:5rem;
  }

  .about-copy h2::before {
    left:-6.6rem;
  }

  .about-copy h2::after {
    right:-5.8rem;
  }

  .about-copy p {
    font-size: 1.6rem;
    line-height: 1.9;
  }

  .about-orbit {
    left: -9.722%;
    top: -1.537%;
    width: 104.167%;
    height: 108.607%;
    transform: rotate(35deg);
  }

  .recruit {
    height: 68rem;
    min-height: 68rem;
  }

  .recruit-copy {
    top: 0;
    bottom: 0;
    left: 2rem;
    width: calc(100% - 2rem - 38vw - 4rem);
    padding: 5rem 0;
  }

  .recruit-copy h2 {
    margin-bottom: 2.6rem;
    font-size: clamp(3.4rem, 4.7vw, 4.6rem);
    line-height: 1.45;
  }

  .recruit .recruit-photos {
    top: 0;
    bottom: 0;
    right: 2rem;
    width: 38vw;
    max-width: 38rem;
  }
}

@media (max-width: 767px) {
  .hero {
    height: 82svh;
    min-height: 560px;
  }

  .hero-copy {
    left: 24px;
    width: calc(100% - 42px);
    max-width: calc(100% - 42px);
    bottom: 9%;
    text-shadow: none;
  }

  .hero-lead-wrap::before {
    width: 1px;
  }

  .hero-lead-wrap {
    margin-top: 0;
    padding-left: 1.8rem;
  }

  .hero-lead {
    margin-top: 0;
    padding-left: 0;
    font-family: "Noto Serif JP", var(--serif);
    font-size: clamp(2.3rem, 6.4vw, 2.8rem);
    font-weight: 700;
    gap: .8rem;
    line-height: 1.6;
    letter-spacing: .02em;
  }

  .about-grid {
    grid-template-columns: 1fr;
    gap: 6rem;
  }

  .about-visual {
    position: relative;
    display: grid;
    width: 100%;
    max-width:36rem;
    height: auto;
    row-gap: 0;
    margin: 0 auto;
  }

  .about-photo-main {
    position: relative;
    top: auto;
    right: auto;
    width: 82.986%;
    max-width: none;
    margin: 0;
    z-index: 2;
  }

  .about-photo-sub {
    position: relative;
    left: auto;
    bottom: auto;
    width: 60.069%;
    max-width: none;
    margin: -2.4rem 0 0;
    z-index: 3;
  }

  .about-photo img {
    width: 100%;
    height: 100%;
  }

  .about-orbit {
    right: auto;
    left: -9.722%;
    top: -1.537%;
    width: 104.167%;
    height: 108.607%;
    transform: rotate(35deg);
  }

  .about-copy {
    width: 100%;
    padding-top:0;
  }

  .about-copy h2 {
    margin-bottom: 2.6rem;
    font-size: clamp(3rem, 8vw, 3.8rem);
    line-height: 1.5;
    margin-inline: auto;
    text-align: left;
  }

  .about-copy h2::before,
  .about-copy h2::after {
    font-size:4rem;
  }

  .about-copy h2::before {
    left:-5.2rem;
  }

  .about-copy h2::after {
    right:-4.6rem;
  }

  .about-copy p {
    margin-bottom: 2.4rem;
    font-size: 1.6rem;
    line-height: 1.9;
  }

  .recruit {
    display: block;
    height: auto;
    min-height: 0;
    overflow: hidden;
    background-image: linear-gradient(145deg, rgba(11, 90, 145, .9) 0%, rgba(16, 100, 155, .9) 58%, rgba(37, 117, 169, .9) 100%), url("../../images/recruit-bg.webp");
  }

  .recruit-copy {
    position: relative;
    inset: auto;
    width: 100%;
    padding: 6rem 2.8rem 4.8rem;
  }

  .recruit-copy h2 {
    width: 100%;
    margin-bottom: 2.4rem;
    font-size: clamp(3rem, 8vw, 3.8rem);
    line-height: 1.5;
  }

  .recruit .recruit-photos {
    position: relative;
    inset: auto;
    width: 100%;
    max-width: none;
    height: 44rem;
  }
}

.hero {
  position: relative;
  overflow: hidden;
}
