@charset "UTF-8";
/* common
----------------------------------------------------------- */
html {
  scroll-behavior: smooth;
  scroll-padding-top: 100px;
}

body {
  background: #fff;
  font-family: "Zen Kaku Gothic Antique", sans-serif;
  font-optical-sizing: auto;
  font-weight: 500;
  font-size: 1.6rem;
  color: #5b462a;
  overflow-x: hidden;
}

#wrapper {
  width: auto;
  margin: 0 auto;
  position: relative;
}
#wrapper::before {
  content: "";
  position: absolute;
  background: url("../images/line_rainbow_tate02.webp") repeat-y right top;
  block-size: 21px;
  width: 21px;
  height: 100%;
  position: absolute;
  top: 0;
  right: -2px;
  z-index: 1000;
}
#wrapper::after {
  content: "";
  position: absolute;
  background: url("../images/line_rainbow_tate.webp") repeat-y left top;
  block-size: 21px;
  width: 21px;
  height: 100%;
  position: absolute;
  top: 0;
  left: -2px;
}

@media screen and (min-width: 769px) {
  .sp {
    display: none;
  }
}

p {
  line-height: 2.2;
}

a {
  color: #42adc0;
  text-decoration: none;
  transition: all 0.3s;
}

a.opa:hover {
  opacity: 0.5;
  filter: alpha(opacity=50);
}

a.tdu:hover {
  text-decoration: underline;
}

.bold {
  font-weight: 700;
}

.ttl {
  font-family: "Zen Maru Gothic", sans-serif;
  font-weight: 700;
  font-style: normal;
  font-optical-sizing: auto;
  line-height: 1.8;
}

::-moz-selection {
  background: #42adc0;
  color: #fff;
}

::selection {
  background: #42adc0;
  color: #fff;
}

@media screen and (min-width: 769px) {
  a[href^="tel:"] {
    pointer-events: none;
  }
}
/* fadein / fadeup 共通 */
.fadein,
.fadeup {
  will-change: opacity, transform, filter;
}

.fadein.is-ready,
.fadeup.is-ready {
  opacity: 0;
  filter: blur(6px);
}

.fadein.is-ready {
  transform: translate3d(0, 0, 0) scale(0.985);
}

.fadeup.is-ready {
  transform: translate3d(0, 28px, 0) scale(0.985);
}

.fadein.is-ready.is-show,
.fadeup.is-ready.is-show {
  transition: opacity 1.4s cubic-bezier(0.22, 1, 0.22, 1), transform 1.4s cubic-bezier(0.22, 1, 0.22, 1), filter 1.4s cubic-bezier(0.22, 1, 0.22, 1);
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
}

@media (prefers-reduced-motion: reduce) {
  .fadein,
  .fadeup,
  .fadein.is-ready,
  .fadeup.is-ready,
  .fadein.is-ready.is-show,
  .fadeup.is-ready.is-show {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}
/* loading
----------------------------------------------------------- */
#loading-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #fff;
  z-index: 99999;
  pointer-events: none;
}
#loading-overlay.is-fadeout {
  animation: loadingFadeOut 0.7s ease-out forwards;
}

@keyframes loadingFadeOut {
  0% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}
.is-loading .visual__img01,
.is-loading .visual__img02,
.is-loading .visual__img03 {
  opacity: 0;
  animation: none;
}
.is-loading .tp__visual__copy img {
  opacity: 0;
  animation: none;
}
.is-loading .tp__visual__subcopy {
  opacity: 0;
  animation: none;
}
.is-loading .visual__img--bird01,
.is-loading .visual__img--bird02,
.is-loading .visual__img--bird03 {
  animation: none;
}

/* header
----------------------------------------------------------- */
.head__wrap {
  width: 100%;
  position: relative;
  background: url("../images/tp_visual_bg.webp") center top/cover no-repeat #fff;
  margin: 0;
  padding: 0;
  transition: all 0.3s;
  position: relative;
}
.head__wrap::before {
  content: "";
  position: absolute;
  background: url("../images/common/line_rainbow_tp.webp") repeat-x center top;
  width: 100%;
  height: 15px;
  position: absolute;
  top: 0;
  left: 0;
}

.head__inner {
  width: 100%;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 1.6vw 0 3vw;
}

.head__logo {
  padding-top: 32px;
  padding-right: 1vw;
  flex-shrink: 0;
}
.head__logo .logo {
  width: 250px;
  transition: all 0.3s;
}
.head__logo .head__logo--sub {
  font-size: 1.4rem;
  margin-top: 0.2em;
  font-weight: bold;
}

@media screen and (min-width: 769px) and (max-width: 1440px) {
  .head__logo {
    padding-top: 24px;
  }
  .head__logo .logo {
    width: 180px;
  }
  .head__logo .head__logo--sub {
    font-size: 1rem;
  }
}
.head__sns {
  position: absolute;
  top: 50%;
  right: 1.6vw;
  transform: translateY(-50%);
  z-index: 100;
}
.head__sns ul {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.head__sns ul li a {
  display: block;
  transition: opacity 0.3s;
}
.head__sns ul li a:hover {
  opacity: 0.7;
}
.head__sns ul li a img {
  width: 40px;
  height: auto;
}

/* gnav
----------------------------------------------------------- */
#global-nav .menu {
  display: flex;
  justify-content: flex-end;
  align-items: flex-start;
  padding-top: 32px;
}
#global-nav .menu > li {
  text-align: center;
}
#global-nav .menu > li a {
  font-size: 1.8rem;
  color: #5b462a;
  font-weight: 700;
  letter-spacing: 0.05em;
  padding: 0.6em 2em;
  display: flex;
  flex-direction: column;
  align-items: center;
  white-space: nowrap;
}
#global-nav .menu > li a::before {
  content: "";
  width: 24px;
  height: 24px;
  display: block;
  margin-bottom: 0.4em;
  background: center/contain no-repeat;
}
#global-nav .menu > li a:hover {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
#global-nav .menu > li.m--uni a {
  padding-top: 0.4em;
}
#global-nav .menu > li.m--uni a::before {
  margin-bottom: 0.2em;
}
#global-nav .menu > li .small {
  font-size: 11px !important;
  font-weight: 700;
  display: block;
  line-height: 1.4;
}
#global-nav .menu > li:not(:last-child) {
  background-image: repeating-linear-gradient(180deg, #968a6b, #968a6b 4px, transparent 4px, transparent 9px);
  background-position: right center;
  background-repeat: no-repeat;
  background-size: 2px 60px;
}
#global-nav .menu > li:nth-child(1) a::before {
  background-image: url("../images/common/icon_about.svg");
}
#global-nav .menu > li:nth-child(2) a::before {
  background-image: url("../images/common/icon_school.svg");
  width: 18px;
}
#global-nav .menu > li:nth-child(3) a::before {
  background-image: url("../images/common/icon_guide.svg");
}
#global-nav .menu.menu--sub {
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  margin-right: 1.6vw;
}
#global-nav .menu.menu--sub > li {
  text-align: left;
  background-image: none;
}
#global-nav .menu.menu--sub > li a {
  font-size: 1.3rem;
  flex-direction: row;
  padding: 0.4em 0.8em;
}
#global-nav .menu.menu--sub > li a::before {
  background: url("../images/common/icon_arrow_baige.svg") center/contain no-repeat;
  width: 10px;
  height: 10px;
  display: inline-block;
  margin-right: 0.4em;
  margin-bottom: 0;
  flex-shrink: 0;
}

@media screen and (min-width: 769px) {
  #global-nav {
    display: block !important;
  }
}
.fat-nav__wrapper {
  display: flex;
  align-items: flex-start;
}

.head__right {
  margin-left: 1.6vw;
  flex-shrink: 0;
  display: flex;
  align-items: center;
}

.head__cta {
  position: relative;
  padding-top: 32px;
}
.head__cta a.btn--contact {
  display: inline-block;
  font-size: 0;
  line-height: 0;
}
.head__cta a.btn--contact img {
  vertical-align: bottom;
}

@media screen and (min-width: 769px) and (max-width: 1440px) {
  #global-nav .menu {
    padding-top: 24px;
  }
  #global-nav .menu > li a {
    font-size: 1.5rem;
  }
  #global-nav .menu > li a::before {
    content: "";
    width: 20px;
    height: 20px;
  }
  #global-nav .menu > li:not(:last-child) {
    background-image: repeating-linear-gradient(180deg, #968a6b, #968a6b 4px, transparent 4px, transparent 9px);
    background-size: 2px 60px;
  }
  #global-nav .menu.menu--sub {
    margin-right: 1.2vw;
  }
  #global-nav .menu.menu--sub > li {
    background-image: none;
  }
  #global-nav .menu.menu--sub > li a {
    font-size: 1.2rem;
  }
  #global-nav .head__cta {
    width: 240px;
    padding-top: 24px;
  }
}
/* visual
----------------------------------------------------------- */
.tp__visual {
  width: 100%;
  position: relative;
  height: clamp(45vw, 100svh - 120px, 50vw);
  z-index: 1;
}

.tp__visual__inner {
  height: 100%;
  position: relative;
}

.visual__img--bird01 {
  position: absolute;
  top: 5.5vw;
  left: 9.5vw;
}

.visual__img--bird02 {
  position: absolute;
  top: 7.5vw;
  left: 6.5vw;
}

.visual__img--bird03 {
  position: absolute;
  top: 21vw;
  right: 14vw;
}

@media screen and (min-width: 769px) and (max-width: 1480px) {
  .visual__img--bird01 {
    top: 4vw;
    left: 7vw;
  }
  .visual__img--bird02 {
    top: 5vw;
    left: 3vw;
  }
  .visual__img--bird03 {
    top: 16.5vw;
    right: 5vw;
  }
}
.visual__img--bird01,
.visual__img--bird02,
.visual__img--bird03 {
  will-change: transform;
}

.visual__img--bird01 {
  animation: birdFloat 4.8s ease-in-out infinite;
}

.visual__img--bird02 {
  animation: birdFloat 5.6s ease-in-out infinite 0.6s;
}

.visual__img--bird03 {
  animation: birdFlap 3.2s ease-in-out infinite;
  transform-origin: center center;
}

@keyframes birdFloat {
  0%, 100% {
    transform: translateY(0) rotate(-3deg);
  }
  50% {
    transform: translateY(-12px) rotate(2deg);
  }
}
@keyframes birdFlap {
  0%, 100% {
    transform: translateY(0) scale(1) rotate(0deg);
  }
  50% {
    transform: translateY(-16px) scale(1.05) rotate(8deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  .visual__img--bird01,
  .visual__img--bird02,
  .visual__img--bird03 {
    animation: none;
  }
}
.tp__visual__copy {
  position: absolute;
  bottom: 4.8vw;
  left: 5.7vw;
}
.tp__visual__copy img {
  display: block;
  opacity: 0;
  transform: translate3d(0, 50px, 0) scale(20);
  transform-origin: center center;
  backface-visibility: hidden;
  animation: visualCopyPopBold 0.9s cubic-bezier(0.18, 0.9, 0.22, 1.02) 1.4s forwards;
  will-change: opacity, transform;
}

.tp__visual__subcopy {
  background: url("../images/btp_visuai_sub@2x.webp") no-repeat center top;
  background-size: 454px;
  width: 454px;
  height: 222px;
  padding: 2.4em 1em 1em 4em;
  position: absolute;
  right: 2vw;
  bottom: 3.5vw;
  opacity: 0;
  transform: translate3d(0, 10px, 0);
  animation: visualSubcopyIn 1s cubic-bezier(0.22, 1, 0.36, 1) 1s forwards;
  will-change: opacity, transform;
}
.tp__visual__subcopy p {
  font-size: 1.5rem;
  line-height: 1.9;
  font-weight: 700;
  letter-spacing: 0.02em;
}

@media screen and (min-width: 769px) and (max-width: 1480px) {
  .tp__visual__copy {
    width: 56vw;
    bottom: 2vw;
    left: 3vw;
  }
  .tp__visual__subcopy {
    background-size: 100%;
    width: 380px;
    height: auto;
    padding: 2em 2em 2em 2.8em;
    right: 1vw;
    bottom: 1vw;
  }
  .tp__visual__subcopy p {
    font-size: 1.3rem;
    line-height: 1.8;
  }
}
.visual__img01,
.visual__img02,
.visual__img03 {
  position: absolute;
  opacity: 0;
  transform: translate3d(0, 14px, 0) scale(0.992);
  transform-origin: center center;
  animation: visualSoftLanding 1.55s cubic-bezier(0.23, 1, 0.32, 1) forwards;
  will-change: opacity, transform;
}
.visual__img01 img,
.visual__img02 img,
.visual__img03 img {
  display: block;
  width: 100%;
  height: auto;
}

.visual__img01 {
  top: 3.2vw;
  left: 15.5vw;
  animation-delay: 0.15s;
}

.visual__img02 {
  top: 1vw;
  right: 7vw;
  animation-delay: 0.42s;
}

.visual__img03 {
  top: 18vw;
  right: 25vw;
  animation-delay: 0.69s;
}

@media screen and (min-width: 769px) and (max-width: 1700px) {
  .visual__img01 {
    width: 38.4895833333vw;
  }
  .visual__img02 {
    width: 29.375vw;
  }
  .visual__img03 {
    width: 20.5729166667vw;
  }
}
@keyframes visualSoftLanding {
  0% {
    opacity: 0;
    transform: translate3d(0, 14px, 0) scale(0.992);
  }
  70% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}
@keyframes visualSubcopyIn {
  0% {
    opacity: 0;
    transform: translate3d(0, 60px, 0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}
@keyframes visualCopyPopBold {
  0% {
    opacity: 0;
    transform: translate3d(0, 20px, 0) scale(0.9);
  }
  5% {
    opacity: 1;
    transform: translate3d(0, -3px, 0) scale(1.2);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .visual__img01,
  .visual__img02,
  .visual__img03,
  .tp__visual__subcopy {
    opacity: 1;
    transform: none;
    animation: none;
  }
  .tp__visual__copy img {
    opacity: 1;
    transform: none;
    animation: none;
  }
}
/* #tp__intro
----------------------------------------------------------- */
#tp__intro {
  width: 100%;
  position: relative;
  background: url("../images/tp_intro_bg.jpg") no-repeat center top;
  background-size: cover;
  padding-top: 9vw;
}
#tp__intro::after {
  content: "";
  position: absolute;
  background: url("../images/common/line_gradation_btm.webp") repeat-x center top;
  width: 100%;
  height: 120px;
  position: absolute;
  bottom: 0;
  left: 0;
}

.tp__intro__inner {
  width: 100%;
  position: relative;
  padding-bottom: 280px;
}

.tp__intro__detail {
  width: min(90%, 860px);
  margin: 0 auto;
}

.tp__intro__copy {
  font-size: 4.5rem;
  color: #9e9171;
  line-height: 1.7;
  letter-spacing: 0.05em;
  text-align: center;
  position: relative;
  padding-top: 6vw;
  padding-left: 0.5em;
  z-index: 1;
}
.tp__intro__copy::before {
  content: "";
  position: absolute;
  background: url("../images/common/ft_waterdrop_colorful.png") no-repeat center top;
  width: 92px;
  height: 111px;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
}

@media screen and (min-width: 769px) and (max-width: 1600px) {
  .tp__intro__copy {
    font-size: 4rem;
    padding-top: 8vw;
  }
}
.tp__intro__txt {
  margin-top: 3.6em;
  text-align: center;
  position: relative;
  z-index: 1;
}
.tp__intro__txt p {
  font-size: 1.7rem;
}
.tp__intro__txt p:not(:last-child) {
  margin-bottom: 2em;
}

.tp__intro__drop--pink {
  position: absolute;
  top: 7vw;
  left: 23vw;
}

.tp__intro__drop--or {
  position: absolute;
  top: 16vw;
  left: 12vw;
}

.tp__intro__drop--rbl {
  position: absolute;
  top: 23.5vw;
  left: 18vw;
}

.tp__intro__drop--yl {
  position: absolute;
  top: 9vw;
  right: 21vw;
}

.tp__intro__drop--bl {
  position: absolute;
  top: 20vw;
  right: 26vw;
}

.tp__intro__drop--pl {
  position: absolute;
  top: 15vw;
  right: 10vw;
}

.tp__intro__drop--gr {
  position: absolute;
  top: 28vw;
  right: 17vw;
}

@media screen and (min-width: 769px) and (max-width: 1600px) {
  .tp__intro__drop--pink {
    left: 16vw;
  }
  .tp__intro__drop--or {
    left: 7vw;
  }
  .tp__intro__drop--rbl {
    position: absolute;
    top: 23.5vw;
    left: 18vw;
  }
  .tp__intro__drop--yl {
    right: 10vw;
  }
  .tp__intro__drop--bl {
    right: 18vw;
  }
  .tp__intro__drop--pl {
    right: 6vw;
  }
  .tp__intro__drop--gr {
    right: 14vw;
  }
}
/* ふわりdropアニメーション */
.tp__intro__drop--pink img,
.tp__intro__drop--or img,
.tp__intro__drop--rbl img,
.tp__intro__drop--yl img,
.tp__intro__drop--bl img,
.tp__intro__drop--pl img,
.tp__intro__drop--gr img {
  display: block;
}

.tp__intro__drop--pink,
.tp__intro__drop--or,
.tp__intro__drop--rbl,
.tp__intro__drop--yl,
.tp__intro__drop--bl,
.tp__intro__drop--pl,
.tp__intro__drop--gr {
  --drop-duration: 10s;
  --drop-delay: 0s;
  --drop-y: -80px;
  --drop-scale: .9;
}

.tp__intro__drop--pink {
  --drop-delay: .00s;
}

.tp__intro__drop--or {
  --drop-delay: .14s;
}

.tp__intro__drop--bl {
  --drop-delay: .28s;
}

.tp__intro__drop--yl {
  --drop-delay: .10s;
}

.tp__intro__drop--rbl {
  --drop-delay: .34s;
}

.tp__intro__drop--pl {
  --drop-delay: .20s;
}

.tp__intro__drop--gr {
  --drop-delay: .42s;
}

.tp__intro__drop--pink.js-drop-anim.is-ready,
.tp__intro__drop--or.js-drop-anim.is-ready,
.tp__intro__drop--rbl.js-drop-anim.is-ready,
.tp__intro__drop--yl.js-drop-anim.is-ready,
.tp__intro__drop--bl.js-drop-anim.is-ready,
.tp__intro__drop--pl.js-drop-anim.is-ready,
.tp__intro__drop--gr.js-drop-anim.is-ready {
  opacity: 0;
  transform: translate3d(0, var(--drop-y), 0) scale(var(--drop-scale));
  will-change: transform, opacity;
}

.tp__intro__drop--pink.js-drop-anim.is-animated,
.tp__intro__drop--or.js-drop-anim.is-animated,
.tp__intro__drop--rbl.js-drop-anim.is-animated,
.tp__intro__drop--yl.js-drop-anim.is-animated,
.tp__intro__drop--bl.js-drop-anim.is-animated,
.tp__intro__drop--pl.js-drop-anim.is-animated,
.tp__intro__drop--gr.js-drop-anim.is-animated {
  animation: introDropSoftFall var(--drop-duration) cubic-bezier(0.22, 1, 0.22, 1) var(--drop-delay) both;
}

@keyframes introDropSoftFall {
  0% {
    opacity: 0;
    transform: translate3d(0, var(--drop-y), 0) scale(var(--drop-scale));
  }
  55% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .tp__intro__drop--pink,
  .tp__intro__drop--or,
  .tp__intro__drop--rbl,
  .tp__intro__drop--yl,
  .tp__intro__drop--bl,
  .tp__intro__drop--pl,
  .tp__intro__drop--gr,
  .tp__intro__drop--pink.js-drop-anim.is-ready,
  .tp__intro__drop--or.js-drop-anim.is-ready,
  .tp__intro__drop--rbl.js-drop-anim.is-ready,
  .tp__intro__drop--yl.js-drop-anim.is-ready,
  .tp__intro__drop--bl.js-drop-anim.is-ready,
  .tp__intro__drop--pl.js-drop-anim.is-ready,
  .tp__intro__drop--gr.js-drop-anim.is-ready,
  .tp__intro__drop--pink.js-drop-anim.is-animated,
  .tp__intro__drop--or.js-drop-anim.is-animated,
  .tp__intro__drop--rbl.js-drop-anim.is-animated,
  .tp__intro__drop--yl.js-drop-anim.is-animated,
  .tp__intro__drop--bl.js-drop-anim.is-animated,
  .tp__intro__drop--pl.js-drop-anim.is-animated,
  .tp__intro__drop--gr.js-drop-anim.is-animated {
    animation: none;
    opacity: 1;
    transform: none;
  }
}
.tp__intro__tree--l {
  position: absolute;
  bottom: -8.8vw;
  left: -2.2vw;
}

.tp__intro__tree--r {
  position: absolute;
  bottom: -7vw;
  right: 2.2vw;
}

.tp__intro__bird {
  position: absolute;
  bottom: 8vw;
  left: 40vw;
  --bird-start-x: -12vw;
  --bird-start-y: -3vw;
}

.tp__intro__bird.is-ready {
  opacity: 0;
  transform: translate(var(--bird-start-x), var(--bird-start-y)) rotate(-4deg) scale(0.985);
  will-change: transform, opacity;
}

.tp__intro__bird.is-ready.is-animated {
  animation: introBirdSlideNoOvershoot 5s cubic-bezier(0.18, 0.72, 0.22, 1) forwards;
}

@keyframes introBirdSlideNoOvershoot {
  0% {
    opacity: 0;
    transform: translate(var(--bird-start-x), var(--bird-start-y)) rotate(-4deg) scale(0.985);
  }
  16% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    transform: translate(0, 0) rotate(0deg) scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .tp__intro__bird,
  .tp__intro__bird.is-ready,
  .tp__intro__bird.is-ready.is-animated {
    animation: none;
    opacity: 1;
    transform: none;
  }
}
@media screen and (min-width: 769px) and (max-width: 1600px) {
  .tp__intro__tree--l {
    width: 30.8854166667vw;
  }
  .tp__intro__tree--r {
    width: 25.7291666667vw;
  }
}
/* #tp__project
----------------------------------------------------------- */
#tp__project {
  width: 100%;
  position: relative;
  background: url("../images/common/bg_baige.jpg");
  padding: 6.25vw 0 13vw;
}

.tp__project__inner {
  width: 100%;
  position: relative;
  margin: 0 auto;
}

.tp__project__ttl {
  inline-size: fit-content;
  margin-inline: auto;
  position: relative;
  padding-bottom: 4em;
  margin-bottom: 3em;
}
.tp__project__ttl::after {
  content: "";
  position: absolute;
  background: url("../images/common/line_ttl.png") no-repeat center top;
  block-size: 180px;
  width: 180px;
  height: 32px;
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}

.tp__ttl--en {
  text-align: center;
}

.tp__ttl--ja {
  font-size: 5.6rem;
  color: #5b462a;
  margin-top: 0;
  line-height: 1.4;
  text-align: center;
}
.tp__ttl--ja span {
  font-size: 7.2rem;
}

.tp__project__box {
  padding: 0 0 0 8vw;
  display: flex;
  flex-direction: row-reverse;
  justify-content: space-between;
}

.tp__project__box__img {
  width: 100%;
  max-width: 947px;
  height: 100%;
  object-fit: cover;
}

.tp__project__box__txt {
  width: 100%;
  padding-right: 5vw;
}

.tp__project__scl .ttl--sub {
  position: relative;
  display: inline-block;
  color: #9e9171;
  font-weight: 700;
  line-height: 1.45;
  font-size: 1.6rem;
  padding: 1em 2em;
  background: #fff;
  border: none;
  border-radius: 9999px;
  border-radius: 30px/30px;
}
.tp__project__scl .ttl--sub::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 30px/30px;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='2' y='2' width='calc(100%25 - 4px)' height='calc(100%25 - 4px)' fill='none' rx='30' ry='30' stroke='%239e9171' stroke-width='2' stroke-dasharray='0 6' stroke-linecap='round'/%3E%3C/svg%3E");
}
.tp__project__scl .ttl__logo {
  display: flex;
  align-items: center;
  margin-bottom: 3em;
  position: relative;
}
.tp__project__scl .ttl__logo::after {
  content: "";
  position: absolute;
  background: url("../images/line_stitch.png") repeat-x center bottom;
  block-size: 100%;
  width: 100%;
  height: 7px;
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}
.tp__project__scl .ttl__logo--mark {
  margin-left: -24px;
}

.tp__project__body {
  font-size: 2.5rem;
  line-height: 2;
  color: #42adc0;
  font-weight: 700;
  margin-bottom: 1em;
}

.tp__project__detail {
  width: 100%;
  background: #FFF;
  border-radius: 10px;
  padding: 0.5em 2em;
  margin-top: 3em;
}

.tp__project__info {
  display: grid;
  grid-template-columns: 140px 1fr;
  margin: 0;
}
.tp__project__info dt {
  font-weight: 700;
}
.tp__project__info dt,
.tp__project__info dd {
  font-size: 1.6rem;
  margin: 0;
  padding: 0.8em;
  line-height: 1.8;
  border-bottom: none;
  position: relative;
}
.tp__project__info dt:not(:last-of-type)::after,
.tp__project__info dd:not(:last-of-type)::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 6px;
  background: url("../images/common/line_bll.png") repeat-x left bottom;
  pointer-events: none;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .tp__project__box__img {
    margin-right: -5vw;
  }
  .tp__project__body {
    font-size: 2.2rem;
  }
}
.tp__labo {
  width: min(90%, 1600px);
  background-color: rgba(231, 228, 218, 0.5);
  border-radius: calc(infinity * 1px);
  display: flex;
  justify-content: space-between;
  position: relative;
  margin: 6vw auto 0;
}

.tp__labo__ttl {
  width: 340px;
  display: flex;
  align-items: center;
  flex-direction: column;
  flex-shrink: 0;
  position: relative;
  z-index: 1;
}
.tp__labo__ttl::after {
  content: "";
  position: absolute;
  background: url("../images/tp_unique_deco.png") repeat-x center bottom;
  width: 221px;
  height: 159px;
  position: absolute;
  top: 180px;
  left: 32px;
  z-index: -1;
}

.torikumi {
  background: url("../images/tp_unique_torikumi.png") no-repeat center top/contain;
  width: 180px;
  height: 68px;
  color: #fff;
  margin: 0 auto;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  padding-bottom: 0.7em;
  margin-bottom: 24px;
  margin-top: -24px;
}

.tp__labo__detail {
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
  padding-right: 4vw;
  padding-top: 24px;
  padding-bottom: 32px;
  z-index: 1;
}

.tp__labo__txt {
  flex: 1;
  padding: 32px 24px 0 0;
}

.labo__sns {
  margin-top: 24px;
}

.labo__sns ul {
  display: flex;
  align-items: center;
  justify-content: flex-end;
}
.labo__sns ul li {
  padding: 0 5px;
}
.labo__sns ul li a:hover {
  opacity: 0.5;
}

.tp__labo__img {
  width: 406px;
}

/* #tp__unique
----------------------------------------------------------- */
#tp__unique {
  width: 100%;
  position: relative;
}
#tp__unique::after {
  content: "";
  position: absolute;
  background: url("../images/tp_line_curriculum.png") no-repeat center bottom/contain;
  width: 100%;
  height: 160px;
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}

.tp__unique__top {
  width: 100%;
  position: relative;
  background: url("../images/tp_unique_visual.jpg") no-repeat center top/cover;
  text-align: center;
  padding: 7vw 0 5vw 0;
}
.tp__unique__top::after {
  content: "";
  position: absolute;
  background: url("../images/line_nizi.webp") no-repeat center bottom/cover;
  width: 100%;
  height: 70px;
  position: absolute;
  bottom: -3vw;
  left: 0;
  z-index: 10;
}
.tp__unique__top .unique__top_subttl {
  font-size: 2.2rem;
  color: #FFF;
  font-weight: 700;
  line-height: 1.8;
  letter-spacing: 0.05em;
  margin: 2vw 0 0;
  padding-bottom: 0.4em;
  position: relative;
}
.tp__unique__top .unique__top_subttl::after {
  content: "";
  position: absolute;
  background: url("../images/line_stitch_w.svg") no-repeat center bottom;
  width: 525px;
  height: 7px;
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}
.tp__unique__top .unique__top_socks {
  width: 5.46875vw;
  position: absolute;
  top: 11vw;
  right: 32vw;
  animation: katakata 6000ms step-start infinite;
}

@keyframes katakata {
  0% {
    transform: translateY(-2px) rotate(6deg);
  }
  10% {
    transform: translate(0) rotate(0deg);
  }
  20% {
    transform: translate(0) rotate(-6deg);
  }
  30% {
    transform: translateY(-2px) rotate(0deg);
  }
  40% {
    transform: translateY(-2px) rotate(6deg);
  }
  50% {
    transform: translate(2px) rotate(-2deg);
  }
  60% {
    transform: translateY(2px) rotate(0deg);
  }
  70% {
    transform: translate(0) rotate(6deg);
  }
  80% {
    transform: translate(2px) rotate(-2deg);
  }
  90% {
    transform: translate(0) rotate(0deg);
  }
  100% {
    transform: translateY(-2px) rotate(6deg);
  }
}
@media screen and (min-width: 769px) and (max-width: 1500px) {
  .tp__unique__top .unique__top_ttl {
    width: 20.3125vw;
    margin: 0 auto;
  }
  .tp__unique__top .unique__top_subttl {
    font-size: 1.8rem;
  }
}
.tp__unique__point {
  width: 100%;
  position: relative;
  padding: 8vw 0 18vw;
}
.tp__unique__point::before {
  content: "";
  position: absolute;
  background: url("../images/line_rainbow_tate02.webp") repeat-y right top;
  block-size: 21px;
  width: 21px;
  height: 100%;
  position: absolute;
  top: 0;
  right: 0;
}
.tp__unique__point::after {
  content: "";
  position: absolute;
  background: url("../images/line_rainbow_tate.webp") repeat-y left top;
  block-size: 21px;
  width: 21px;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
}

.tp__unique__point__list {
  width: min(90%, 1480px);
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 20px 140px;
}

.point__list__box {
  width: calc((100% - 280px) / 3);
  max-width: 400px;
  position: relative;
  text-align: center;
}
.point__list__box .point__img {
  text-align: center;
}
.point__list__box .point__num {
  text-align: center;
  margin-top: -2.4vw;
}
.point__list__box .point__copy {
  font-size: 1.6rem;
  color: #e67386;
  position: relative;
  display: inline-block;
  margin-top: 1em;
}
.point__list__box .point__copy::before {
  content: "";
  position: absolute;
  background: url("../images/common/parts_comment_l.svg") no-repeat left top/contain;
  width: 15px;
  height: 28px;
  position: absolute;
  top: 0.2em;
  left: -1.6em;
}
.point__list__box .point__copy::after {
  content: "";
  position: absolute;
  background: url("../images/common/parts_comment_r.svg") no-repeat right top/contain;
  width: 15px;
  height: 28px;
  position: absolute;
  top: 0.2em;
  right: -1.6em;
}
.point__list__box .point__ttl {
  font-size: 2.6rem;
  font-weight: 700;
  line-height: 1.4;
  margin: 0.6em 0 0.8em;
}
.point__list__box .point__txt {
  padding: 0 1.2em;
}
.point__list__box .point__txt p {
  font-size: 1.5rem;
  text-align: left;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .tp__unique__point__list {
    gap: 20px 80px;
  }
  .point__list__box {
    width: calc((100% - 160px) / 3);
  }
  .point__list__box .point__ttl {
    font-size: 2.2rem;
  }
  .point__list__box .point__txt {
    padding: 0 1em;
  }
}
.point02 {
  margin-top: 40px;
}

.point03 {
  margin-top: 80px;
}

.point04 {
  margin-top: 0;
}

.point05 {
  margin-top: 80px;
}

.point06 {
  margin-top: 80px;
}

.point02 .point__copy {
  color: #ea9500;
}

.point03 .point__copy {
  color: #9cc719;
}

.point04 .point__copy {
  color: #3aa5d4;
}

.point05 .point__copy {
  color: #166cc5;
}

.point06 .point__copy {
  color: #bd5db2;
}

/* #tp__curriculum
----------------------------------------------------------- */
#tp__curriculum {
  width: 100%;
  position: relative;
  background: url("../images/common/bg_baige.jpg");
  padding: 0;
}

.tp__curriculum__inner {
  width: min(90%, 1200px);
  margin: 0 auto;
  position: relative;
  top: -7.5vw;
}

.tp__curriculum__top {
  width: 100%;
  display: flex;
  justify-content: space-between;
}

.tp__curriculum__ttl {
  position: relative;
  width: 450px;
}
.tp__curriculum__ttl .ttl-sub {
  background: url("../images/tp_curriculum.png") no-repeat center top/cover;
  width: 113px;
  height: 204px;
  color: #FFF;
  -webkit-writing-mode: vertical-rl;
  -ms-writing-mode: tb-rl;
  writing-mode: vertical-rl;
  padding-right: 43px;
  padding-top: 36px;
  margin-top: -40px;
  z-index: 1;
  position: relative;
}
.tp__curriculum__ttl .ttl-sub p {
  font-size: 1.8rem;
  line-height: 1.5;
  letter-spacing: 0.1em;
}
.tp__curriculum__ttl .ttl-img {
  position: absolute;
  top: 100px;
  left: 120px;
  z-index: 1;
}
.tp__curriculum__ttl::after {
  content: "";
  position: absolute;
  background: url("../images/tp_curriculum_deco.png") no-repeat center top/contain;
  width: 221px;
  height: 159px;
  position: absolute;
  top: 220px;
  left: 60px;
  z-index: 0;
}

.tp__curriculum__detail {
  width: 100%;
  padding: 240px 0 0;
  display: flex;
  justify-content: space-between;
}
.tp__curriculum__detail .curriculum__txt {
  flex: 1;
  padding-right: 5vw;
}
.tp__curriculum__detail .curriculum__btn {
  width: 210px;
  align-self: self-end;
}

.btn--arrow-br {
  font-size: 1.5rem;
  font-weight: 700;
  color: #5b462a;
  display: inline-flex;
  align-items: center;
  position: relative;
  padding: 0 2em 0.8em 0;
  border-bottom: 2px solid #5b462a;
  line-height: 1.2;
  letter-spacing: 0.05em;
  text-decoration: none;
  white-space: nowrap;
}

.btn--arrow-br::after {
  content: "";
  width: 18px;
  height: 18px;
  background: url("../images/common/icon_arrow_br.svg") no-repeat center/contain;
  position: absolute;
  top: 0;
  right: 0;
  transition: transform 0.3s ease;
}

.btn--arrow-br:hover::after {
  transform: translate(6px, 0);
}

.tp__curriculum__contents {
  padding: 7vw 0 0;
}

.curriculum__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 120px 120px;
  align-items: start;
  position: relative;
}
.curriculum__list::after {
  content: "";
  background: url("../images/tp_curriculum_bg.webp") no-repeat center top/cover;
  width: 1670px;
  height: 1408px;
  position: absolute;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
}

.curriculum__list__item {
  width: min(100%, 540px);
  position: relative;
  background: #fff;
  padding: 40px;
  padding-top: 36px;
  border-radius: 270px 270px 4px 4px;
}

.item01 {
  order: 1;
}
.item01::before {
  content: "";
  position: absolute;
  background: url("../images/tp_curriculum_arrow01.png") no-repeat center top/contain;
  width: 81px;
  height: 68px;
  position: absolute;
  top: 300px;
  right: -100px;
  z-index: 1;
}

.item02 {
  order: 2;
}
.item02::before {
  content: "";
  position: absolute;
  background: url("../images/tp_curriculum_arrow02.png") no-repeat center top/contain;
  width: 68px;
  height: 81px;
  position: absolute;
  bottom: -100px;
  right: 240px;
  z-index: 1;
}

.item04 {
  order: 3;
}
.item04::before {
  content: "";
  position: absolute;
  background: url("../images/tp_curriculum_arrow04.png") no-repeat center top/contain;
  width: 68px;
  height: 81px;
  position: absolute;
  top: -100px;
  right: 240px;
  z-index: 1;
}

.item03 {
  order: 4;
}
.item03::before {
  content: "";
  position: absolute;
  background: url("../images/tp_curriculum_arrow03.png") no-repeat center top/contain;
  width: 81px;
  height: 68px;
  position: absolute;
  top: 300px;
  left: -100px;
  z-index: 1;
}

.curriculum__thumb {
  position: relative;
  margin: 0;
  aspect-ratio: 460/240;
  overflow: hidden;
}

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

.curriculum__badge {
  position: relative;
  z-index: 2;
  width: fit-content;
  margin: -60px auto 0;
  line-height: 1;
}

.curriculum__badge img {
  display: block;
  width: 138px;
  height: auto;
}

.curriculum__content {
  padding: 1em 2em 2em;
}
.curriculum__content p {
  font-size: 1.5rem;
  line-height: 2;
}

.curriculum__detail {
  margin: -1em;
}

.curriculum__detail dt {
  display: inline-block;
  padding: 0.1em 0.4em 0.12em;
  background-color: rgba(128, 194, 105, 0.1);
  color: #5bae3e;
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.6;
  margin-top: 1.2em;
}

.curriculum__detail dd {
  font-size: 1.5rem;
  margin-top: 0.6em;
  line-height: 2;
}

.item02 .curriculum__detail dt {
  background-color: rgba(250, 225, 136, 0.2);
  color: #e66a0f;
}

.item03 .curriculum__detail dt {
  background-color: rgba(202, 238, 244, 0.2);
  color: #42adc0;
}

.tp__curriculum__contents .curriculum__list__item {
  will-change: opacity, transform, filter;
}

.tp__curriculum__contents .curriculum__list__item.is-ready {
  opacity: 0;
  transform: translate3d(0, 28px, 0) scale(0.985);
  filter: blur(6px);
}

.tp__curriculum__contents .curriculum__list__item.is-show {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
  transition: opacity 1.5s cubic-bezier(0.22, 1, 0.22, 1), transform 1.5s cubic-bezier(0.22, 1, 0.22, 1), filter 1.5s cubic-bezier(0.22, 1, 0.22, 1);
}

@media (prefers-reduced-motion: reduce) {
  .tp__curriculum__contents .curriculum__list__item,
  .tp__curriculum__contents .curriculum__list__item.is-ready,
  .tp__curriculum__contents .curriculum__list__item.is-show {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}
/* .tp__schedule
----------------------------------------------------------- */
.tp__schedule {
  width: 100%;
  display: flex;
  justify-content: space-between;
}

.tp__schedule__day {
  width: 50%;
  position: relative;
  background: url("../images/tp_day_bg.webp") no-repeat center top/cover;
  padding: 60px 5%;
}
.tp__schedule__day::after {
  content: "";
  position: absolute;
  background: url("../images/common/parts_tubu01.png") no-repeat center right/cover;
  width: 127px;
  height: 112px;
  left: 3vw;
  top: 2vw;
}

.tp__schedule__box {
  width: 26.0416666667vw;
  background: url("../images/tp_schedule_day_tx.jpg") no-repeat center right/cover;
  padding: 2em 1.6em 1.6em;
  margin-inline: auto;
  border-radius: calc(infinity * 1px);
}
.tp__schedule__box .ttl__box {
  text-align: center;
  position: relative;
}
.tp__schedule__box .ttl__box::before {
  content: "";
  position: absolute;
  background: url("../images/icon_day.svg") no-repeat center top/contain;
  width: 60px;
  height: 60px;
  position: absolute;
  top: -60px;
  left: 50%;
  transform: translateX(-50%);
}
.tp__schedule__box .ttl__box .ttl {
  font-size: 2.5rem;
  color: #FFF;
  background-image: repeating-linear-gradient(90deg, #ffffff, #ffffff 4px, transparent 4px, transparent 8px);
  background-position: left bottom;
  background-repeat: repeat-x;
  background-size: 100% 2px;
  inline-size: fit-content;
  margin-inline: auto;
  padding: 0.6em 1.8em 0.8em;
  line-height: 1;
  margin-bottom: 0.6em;
}
.tp__schedule__box .ttl__box .ttl a {
  color: #FFF;
  position: relative;
}
.tp__schedule__box .ttl__box .ttl a::after {
  content: "";
  position: absolute;
  background: url("../images/icon_arrow_yl.png") right center/contain no-repeat;
  width: 20px;
  height: 15px;
  top: 57%;
  right: -1.5em;
  transform: translateY(-50%);
}
.tp__schedule__box .ttl__box .ttl a:hover {
  opacity: 0.5;
  translate: 20px;
}
.tp__schedule__box .txt {
  color: #FFF;
  font-size: 1.5rem;
  line-height: 2;
  text-align: center;
}

.tp__schedule__year {
  width: 50%;
  position: relative;
  background: url("../images/tp_year_bg.webp") no-repeat center top/cover;
  padding: 60px 5%;
}
.tp__schedule__year::after {
  content: "";
  position: absolute;
  background: url("../images/common/parts_tubu02.png") no-repeat center right/cover;
  width: 110px;
  height: 97px;
  right: 4vw;
  bottom: 2vw;
}
.tp__schedule__year .tp__schedule__box {
  background: url("../images/tp_schedule_year_tx.jpg") no-repeat center right/cover;
}
.tp__schedule__year .tp__schedule__box .ttl__box::before {
  background: url("../images/icon_year.svg") no-repeat center top/contain;
}

@media screen and (min-width: 769px) and (max-width: 1600px) {
  .tp__schedule__box {
    width: 40vw;
  }
}
/* .tp__sns
----------------------------------------------------------- */
.tp__sns {
  width: 100%;
  padding: 3.6vw 5% 10vw;
  background: url("../images/common/bg_bl.jpg");
  position: relative;
}
.tp__sns::after {
  content: "";
  position: absolute;
  background: url("../images/common/line_gradation_btm.webp") repeat-x center top;
  width: 100%;
  height: 120px;
  position: absolute;
  bottom: 0;
  left: 0;
}

.tp__sns__inner {
  position: relative;
  z-index: 1;
}
.tp__sns__inner .ttl {
  font-size: 2rem;
  margin-inline: auto;
  inline-size: fit-content;
  position: relative;
}
.tp__sns__inner .ttl::before {
  content: "";
  position: absolute;
  background: url("../images/common/parts_linework_l@2x.png") no-repeat left top/contain;
  width: 23px;
  height: 70px;
  position: absolute;
  top: -0.8em;
  left: -2.4em;
}
.tp__sns__inner .ttl::after {
  content: "";
  position: absolute;
  background: url("../images/common/parts_linework_r@2x.png") no-repeat right top/contain;
  width: 23px;
  height: 70px;
  position: absolute;
  top: -0.8em;
  right: -2.4em;
}

.tp__sns__bnr {
  margin-top: 40px;
  margin-inline: auto;
  display: flex;
  justify-content: center;
  column-gap: 12px;
}
.tp__sns__bnr li {
  width: 240px;
}
.tp__sns__bnr a:hover {
  opacity: 0.5;
}

/* #tp__feature
----------------------------------------------------------- */
#tp__feature {
  width: 100%;
  background: url("../images/common/bg_baige.jpg");
  position: relative;
  padding: 3.6vw 0 6vw;
}

.tp__feature__ttl {
  inline-size: fit-content;
  margin-inline: auto;
  position: relative;
  padding-bottom: 4em;
}
.tp__feature__ttl::after {
  content: "";
  position: absolute;
  background: url("../images/common/line_ttl.png") no-repeat center bottom;
  block-size: 180px;
  width: 180px;
  height: 32px;
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
}

.tp__feature__inner {
  display: flex;
  flex-direction: row-reverse;
  justify-content: center;
  padding: 5vw 5vw 0 12vw;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .tp__feature__inner {
    padding-left: 6vw;
  }
}
.tp__feature__img {
  width: 52%;
  padding-top: 3vw;
  padding-left: 6vw;
  position: relative;
  z-index: 1;
}
.tp__feature__img::before {
  content: "";
  position: absolute;
  background: url("../images/tp_feature_img02.webp") no-repeat right top/contain;
  width: 603px;
  height: 615px;
  position: absolute;
  top: 4vw;
  right: 0;
  z-index: -1;
}

.tp__feature__message {
  width: 48%;
  position: relative;
  z-index: 1;
}
.tp__feature__message::before {
  content: "";
  position: absolute;
  background: url("../images/tp_feature_img01.webp") no-repeat left top/contain;
  width: 431px;
  height: 439px;
  position: absolute;
  top: -9vw;
  left: -10vw;
  z-index: -1;
}
.tp__feature__message .copy {
  font-size: 2.8rem;
  font-weight: 700;
  line-height: 2;
  margin-bottom: 2em;
}
.tp__feature__message .tp__feature__txt {
  padding-left: 3vw;
}
.tp__feature__message .tp__feature__txt p {
  letter-spacing: 0.03em;
}
.tp__feature__message .name {
  margin-top: 3em;
  display: flex;
  justify-content: flex-end;
}
.tp__feature__message .name .small {
  font-size: 1.4rem;
  margin-right: 1.5em;
}
.tp__feature__message .name h4 {
  font-size: 2.4rem;
}

.tp__feature__bnr {
  inline-size: fit-content;
  margin-inline: auto;
  margin-top: 5vw;
  position: relative;
  right: 3vw;
}
.tp__feature__bnr a:hover {
  opacity: 0.7;
}

/* .tp__guide
----------------------------------------------------------- */
#tp__guide {
  width: 100%;
  padding: 11vw 0 9vw;
  background: url("../images/common/bg_bl.jpg");
  position: relative;
}
#tp__guide::before {
  content: "";
  position: absolute;
  background: url("../images/common/line_gradation_tp.webp") no-repeat center right/cover;
  width: 100%;
  height: 120px;
  right: 0;
  top: 0;
}
#tp__guide .tree-l {
  position: absolute;
  top: 0;
  left: 0;
}
#tp__guide .tree-r {
  position: absolute;
  top: 16vw;
  right: 0;
}

.tp__guide__inner {
  width: min(90%, 1200px);
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

.tp__guide__ttl {
  text-align: center;
}
.tp__guide__ttl .en {
  width: 131px;
  margin-inline: auto;
}
.tp__guide__ttl .ja {
  font-size: 5.6rem;
  font-weight: 700;
  line-height: 1;
  margin-top: 0.2em;
  letter-spacing: 0.05em;
}

.tp__guide__detail {
  width: 100%;
  letter-spacing: 0.03em;
  background: #FFF;
  border-radius: 4px;
  padding: 3.6em 4em 4.2em;
  margin-top: 5em;
  position: relative;
  display: flex;
  flex-wrap: wrap;
}
.tp__guide__detail dt {
  width: 20%;
  color: #42adc0;
  font-size: 2rem;
  font-weight: 700;
  padding-top: 0.4em;
}
.tp__guide__detail dd {
  width: 80%;
}

.tp__guide__check {
  position: relative;
  margin-top: -1.6em;
}
.tp__guide__check li {
  padding-top: 1.6em;
  padding-left: 40px;
  padding-bottom: 1.6em;
  position: relative;
}
.tp__guide__check li::before {
  background: url("../images/icpn_arrow_bl.png") no-repeat left top/contain;
  width: 30px;
  height: 28px;
  content: "";
  position: absolute;
  top: 1.9em;
  left: 0;
}
.tp__guide__check li::after {
  content: "";
  position: absolute;
  background: url("../images/common/line_bll.png") repeat-x left bottom/contain;
  width: 100%;
  height: 1px;
  position: absolute;
  bottom: 0;
  left: 0;
}
.tp__guide__check p {
  font-size: 1.7rem;
}
.tp__guide__check .note {
  font-size: 1.5rem;
  margin-top: 0.6em;
}

.note__box {
  background-color: rgba(231, 228, 218, 0.5);
  display: flex;
  align-items: center;
  padding: 2.4em 3em;
  margin-top: 2em;
}
.note__box h3 {
  font-weight: 700;
  font-size: 1.7rem;
  margin-right: 1em;
  line-height: 1.6;
  white-space: nowrap;
}
.note__box p {
  font-size: 1.5rem;
  line-height: 1.6;
}

.tp__guide__price li {
  font-size: 1.7rem;
  font-weight: 700;
  line-height: 2.2;
}

.tp__guide__attent {
  font-size: 1.5rem;
  line-height: 2;
  margin-top: 2em;
}

/* .tp__flow
----------------------------------------------------------- */
#tp__flow {
  width: 100%;
  padding: 3vw 0 7vw;
  background: url("../images/common/bg_baige.jpg");
  position: relative;
}
#tp__flow::before {
  content: "";
  position: absolute;
  background: url("../images/common/line_gradation_btm.webp") no-repeat center right/cover;
  width: 100%;
  height: 120px;
  right: 0;
  top: -120px;
}

.tp___flow__inner {
  width: min(90%, 1600px);
  margin: 0 auto;
  position: relative;
  z-index: 1;
}

.tp__flow__ttl {
  text-align: center;
}
.tp__flow__ttl .en {
  width: 131px;
  margin-inline: auto;
}
.tp__flow__ttl .ja {
  font-size: 4rem;
  font-weight: 700;
  line-height: 1;
  margin-top: 0.3em;
  letter-spacing: 0.05em;
}

.tp__flow__step {
  position: relative;
  display: flex;
  justify-content: space-between;
  column-gap: 1vw;
  margin-top: 64px;
}
.tp__flow__step::after {
  content: "";
  position: absolute;
  background: #e7e0d5;
  width: 100%;
  height: 100px;
  left: 0;
  top: calc(50% - 50px);
  z-index: -1;
}
.tp__flow__step li {
  text-align: center;
  background: #FFF;
  border: 2px dotted #a19886;
  border-radius: calc(infinity * 1px);
  width: min(100%, 230px);
  padding: 2.4em 0 5em;
  position: relative;
}
.tp__flow__step .ttl {
  margin-top: 0.6em;
  margin-bottom: 0.8em;
  padding: 0 1em;
  line-height: 1.6;
  min-height: 3.2em;
  display: flex;
  align-items: center;
  justify-content: center;
}
.tp__flow__step .txt {
  margin-top: 0.8em;
  font-size: 1.4rem;
  line-height: 1.8;
  text-align: left;
  padding: 0 1.8em 0 2em;
}

/* アニメーション用の初期値 */
.tp__flow__step {
  --flow-step-duration: 0.45s;
  --flow-step-stagger: 0.1s;
  --flow-step-distance: 32px;
  --flow-line-duration: 0.5s;
  --flow-line-delay: 1.1s;
}

.tp__flow__step li {
  opacity: 0;
  transform: translateX(calc(var(--flow-step-distance) * -1));
  filter: blur(3px);
  will-change: transform, opacity, filter;
}

.tp__flow__step.is-show li {
  animation: flowStepIn var(--flow-step-duration) cubic-bezier(0.42, 0, 0.58, 1) forwards;
  animation-delay: calc(var(--i) * var(--flow-step-stagger));
}

.tp__flow__step::after {
  transform: scaleX(0);
  transform-origin: left center;
  opacity: 0;
}

.tp__flow__step.is-show::after {
  opacity: 1;
  animation: flowLineIn var(--flow-line-duration) cubic-bezier(0.42, 0, 0.58, 1) forwards;
  animation-delay: var(--flow-line-delay);
}

@keyframes flowStepIn {
  0% {
    opacity: 0;
    transform: translateX(calc(var(--flow-step-distance) * -1));
    filter: blur(3px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
    filter: blur(0);
  }
}
@keyframes flowLineIn {
  0% {
    transform: scaleX(0);
  }
  100% {
    transform: scaleX(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .tp__flow__step li,
  .tp__flow__step::after,
  .tp__flow__step.is-show li,
  .tp__flow__step.is-show::after {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
}
/* .tp__faq
----------------------------------------------------------- */
#tp__faq {
  width: 100%;
  padding: 0 0 6vw;
  background: url("../images/common/bg_baige.jpg");
  position: relative;
}

.tp__faq__inner {
  width: min(90%, 1680px);
  margin-left: auto;
  background: url("../images/common/bg_bl.jpg");
  border-radius: 80px 0 0 80px;
  padding-bottom: 8vw;
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  justify-content: start;
  column-gap: 7vw;
  position: relative;
  z-index: 1;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .tp__faq__inner {
    width: min(95%, 1680px);
    column-gap: 7vw;
  }
}
.tp__faq__top {
  display: grid;
  grid-template-rows: auto 1fr auto;
  justify-items: center;
  align-self: stretch;
  padding-top: 1vw;
  padding-left: 6.4vw;
}

.tp__faq__ttl {
  text-align: center;
  padding-top: 5vw;
  padding-right: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.tp__faq__ttl .en {
  margin-left: 0;
}
.tp__faq__ttl .ja {
  font-size: 4rem;
  font-weight: 700;
  line-height: 1;
  padding-top: 0.3em;
  letter-spacing: 0.05em;
  -webkit-writing-mode: vertical-rl;
  -ms-writing-mode: tb-rl;
  writing-mode: vertical-rl;
  width: fit-content;
  margin-inline: auto;
}

.tp__faq__btn {
  align-self: end;
}

.tp__faq__btn a:hover {
  opacity: 0.5;
  filter: alpha(opacity=50);
}

.tp__faq__btn a,
.tp__faq__btn img {
  display: block;
}

.tp__faq__list {
  width: min(100%, 920px);
  margin-top: 8vw;
  border-radius: 4px;
  interpolate-size: allow-keywords;
}

@supports selector(::details-content) {
  .tp__faq__item::details-content {
    height: 0;
    opacity: 0;
    overflow: clip;
    transition: height 0.4s ease, opacity 0.3s ease, content-visibility 0.4s ease allow-discrete;
  }
  .tp__faq__item[open]::details-content {
    height: auto;
    opacity: 1;
  }
}
.tp__faq__item {
  background: #fff;
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 4px;
  transition: all 0.3s;
}
.tp__faq__item:hover {
  border-radius: 30px;
}

.tp__faq__item + .tp__faq__item {
  margin-top: 16px;
}

.tp__faq__question {
  list-style: none;
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 2em 2.8em 1.7em;
  cursor: pointer;
}

.tp__faq__question::-webkit-details-marker {
  display: none;
}

.qMark,
.aMark {
  flex: 0 0 auto;
  line-height: 1;
}

.qMark img,
.aMark img {
  display: block;
}

.questionText {
  flex: 1;
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.05em;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .questionText {
    font-size: 1.8rem;
  }
}
.icon {
  width: 40px;
  height: 38px;
  background: url("../images/icon_arrow_baige@2x.png") no-repeat center/contain;
  transition: transform 0.3s ease;
  flex: 0 0 auto;
}

.tp__faq__item[open] .icon {
  transform: rotate(180deg);
}

.tp__faq__answer {
  display: flex;
  gap: 18px;
  margin: 0 40px 0;
  padding: 2em 0.4em 2.2em;
  position: relative;
}
.tp__faq__answer::after {
  content: "";
  position: absolute;
  background: url("../images/common/line_bll.png") repeat-x left top/contain;
  width: 100%;
  height: 1px;
  position: absolute;
  top: 0;
  left: 0;
}

.aMark {
  margin: 0;
}

.answerText p {
  margin: 0;
  font-size: 1.5rem;
  line-height: 1.7;
}
.answerText p .bold {
  padding-top: 1em;
  display: inline-block;
}

.answerText p + p {
  margin-top: 0.6em;
}

/* #tp__access
----------------------------------------------------------- */
#tp__access {
  width: 100%;
  padding: 0 0 2vw;
  background: url("../images/common/bg_baige.jpg");
  position: relative;
}

.tp__access__inner {
  width: min(90%, 1440px);
  margin: 0 auto;
  position: relative;
  display: flex;
}

.tp__access__top {
  display: grid;
  grid-template-rows: auto 1fr auto;
  justify-items: center;
  align-self: stretch;
  padding-left: 6.8vw;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .tp__access__top {
    padding-left: 2vw;
  }
}
.tp__access__ttl {
  text-align: center;
  padding-right: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.tp__access__ttl .en {
  margin-left: 0;
}
.tp__access__ttl .ja {
  font-size: 4rem;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.05em;
  padding-top: 0.3em;
  -webkit-writing-mode: vertical-rl;
  -ms-writing-mode: tb-rl;
  writing-mode: vertical-rl;
  width: fit-content;
  margin-inline: auto;
}

.tp__access__detail {
  flex: 1;
  display: flex;
  justify-content: space-between;
  margin-left: 4vw;
  padding-top: 4vw;
}
.tp__access__detail .txt {
  width: 50%;
  padding-right: 3vw;
}
.tp__access__detail .txt .address {
  font-size: 1.7rem;
  font-weight: 700;
  letter-spacing: 0.03em;
  margin-bottom: 3.2em;
}
.tp__access__detail .txt .way {
  color: #b8a974;
  font-weight: 700;
  padding: 1em;
  background: #fff;
  background-image: radial-gradient(circle, #a19886 1px, transparent 1px), radial-gradient(circle, #a19886 1px, transparent 1px), radial-gradient(circle, #a19886 1px, transparent 1px), radial-gradient(circle, #a19886 1px, transparent 1px);
  background-position: left top, right top, left bottom, left top;
  background-repeat: repeat-x, repeat-y, repeat-x, repeat-y;
  background-size: 6px 2px, 2px 6px, 6px 2px, 2px 6px;
}
.tp__access__detail .txt .way__list {
  display: grid;
  grid-template-columns: 120px 1fr;
  column-gap: 0;
}
.tp__access__detail .txt .way__list dt,
.tp__access__detail .txt .way__list dd {
  margin: 0;
  padding: 1.6em 0;
}
.tp__access__detail .txt .way__list dt {
  font-weight: 700;
  white-space: nowrap;
  padding-top: 1.8em;
}
.tp__access__detail .txt .way__list dd {
  font-size: 1.5rem;
  line-height: 2;
}
.tp__access__detail .txt {
  /* 2行目以降の区切り線 */
}
.tp__access__detail .txt .way__list dt:not(:first-of-type),
.tp__access__detail .txt .way__list dd:not(:first-of-type) {
  border-top: 1px solid #e7e4da;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .tp__access__detail {
    margin-left: 7vw;
  }
}
.gmap__area {
  width: 50%;
  position: relative;
}

.gmap {
  position: relative;
  width: 100%;
  height: 0;
  padding-bottom: 75%;
  overflow: hidden;
}
.gmap iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.gmap__btn {
  margin-top: 40px;
  text-align: right;
}

.btn__basic {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  min-width: 200px;
  min-height: 46px;
  padding: 0 24px 0 28px;
  border-radius: 999px;
  background: url("../images/common/bg_brown.jpg");
  text-decoration: none;
  color: #fafbf5;
  font-size: 1.5rem;
  line-height: 1;
  white-space: nowrap;
  transition: opacity 0.3s ease;
}
.btn__basic::after {
  content: "";
  width: 16px;
  height: 15px;
  background: url("../images/common/icon_arrow_sm.svg") no-repeat center center/contain;
  flex-shrink: 0;
  transition: transform 0.3s ease;
}
.btn__basic:hover {
  opacity: 0.7;
}
.btn__basic:hover::after {
  transform: translateX(4px);
}

/* ft__cta
----------------------------------------------------------- */
.ft__cta {
  width: 100%;
  position: relative;
  background: url("../images/common/ft_cta_bg.webp") no-repeat center top/contain;
  padding: 20vw 0 14vw;
}

.ft__cta__inner {
  width: 100%;
  position: relative;
  padding: 0 5%;
}

.ft__cta_ttl {
  width: 100%;
  text-align: center;
  position: relative;
}
.ft__cta_ttl::before {
  content: "";
  position: absolute;
  background: url("../images/common/ft_waterdrop_colorful.png") no-repeat left top/contain;
  width: 92px;
  height: 111px;
  top: -7.2vw;
  left: 50%;
  transform: translateX(-50%);
}
.ft__cta_ttl .ja {
  font-size: 5.6rem;
  letter-spacing: 0.05em;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .ft__cta_ttl::before {
    top: -8vw;
  }
}
.ft__cta_copy {
  font-size: 2rem;
  color: #42adc0;
  font-weight: 700;
  margin-inline: auto;
  margin-top: 2em;
  inline-size: fit-content;
  position: relative;
}
.ft__cta_copy::before {
  content: "";
  position: absolute;
  background: url("../images/common/parts_linework_bl_l@2x.png") no-repeat left top/contain;
  width: 23px;
  height: 70px;
  position: absolute;
  top: -0.7em;
  left: -2.3em;
}
.ft__cta_copy::after {
  content: "";
  position: absolute;
  background: url("../images/common/parts_linework_bl_r@2x.png") no-repeat right top/contain;
  width: 23px;
  height: 70px;
  position: absolute;
  top: -0.7em;
  right: -2.2em;
}

.ft__cta__btn {
  margin-top: 2em;
  text-align: center;
}
.ft__cta__btn .btn--cta {
  display: block;
  transition: all 0.3s;
  filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.85)) drop-shadow(0 0 12px rgba(255, 255, 255, 0.8)) drop-shadow(0 0 24px rgba(255, 255, 255, 0.75)) drop-shadow(0 0 40px rgba(255, 255, 255, 0.65));
}
.ft__cta__btn .btn--cta:hover {
  opacity: 0.5;
  filter: alpha(opacity=50);
}

.cta__img--bird01 {
  position: absolute;
  top: 8vw;
  left: 18vw;
}

.cta__img--bird02 {
  position: absolute;
  top: 25vw;
  right: 22vw;
}

.cta__img--bird01,
.cta__img--bird02 {
  will-change: transform;
}

.cta__img--bird01 {
  animation: birdFloat 4.8s ease-in-out infinite;
}

.cta__img--bird02 {
  animation: birdFlap 3.2s ease-in-out infinite;
  transform-origin: center center;
}

@keyframes birdFloat {
  0%, 100% {
    transform: translateY(0) rotate(-3deg);
  }
  50% {
    transform: translateY(-12px) rotate(4deg);
  }
}
@keyframes birdFlap {
  0%, 100% {
    transform: translateY(0) scale(1) rotate(0deg);
  }
  50% {
    transform: translateY(-16px) scale(1.03) rotate(7deg);
  }
}
@media (prefers-reduced-motion: reduce) {
  .cta__img--bird01,
  .cta__img--bird02 {
    animation: none;
  }
}
/* footer
----------------------------------------------------------- */
.ft__wrap {
  width: 100%;
  position: relative;
  background: #fff;
}
.ft__wrap::after {
  content: "";
  position: absolute;
  background: url("../images/common/line_rainbow_btm.webp") repeat-x left bottom;
  width: 100%;
  height: 18px;
  bottom: 0;
  left: 0;
}

.ft__inner {
  width: min(90%, 1440px);
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
}

.ft__info {
  flex: 1;
}

.ft__info__logo {
  margin-bottom: 1em;
}
.ft__info__logo a {
  font-size: 2rem;
  font-weight: 700;
  color: #5b462a;
}
.ft__info__logo a span {
  font-size: 2.4rem;
  font-weight: 700;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .ft__info__logo a {
    font-size: 1.6rem;
    white-space: nowrap;
  }
}
.ft__info__ads {
  font-size: 1.5rem;
  line-height: 1.8;
}

.ft__sns {
  display: flex;
  justify-content: center;
  align-items: center;
  align-self: flex-start;
  gap: 34px;
  padding: 28px 40px;
  margin-left: 40px;
  background-color: rgba(231, 228, 218, 0.5);
  border-radius: 999px;
}
.ft__sns__group {
  display: flex;
  align-items: center;
  gap: 24px;
}
.ft__sns__name {
  margin: 0;
  font-size: 1.8rem;
  font-weight: 700;
  line-height: 1.4;
  white-space: nowrap;
}
.ft__sns__list {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.ft__sns__list li {
  margin: 0;
  flex-shrink: 0;
}
.ft__sns__list a {
  display: block;
  flex-shrink: 0;
  transition: opacity 0.3s ease;
}
.ft__sns__list a:hover {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.ft__sns__list img {
  display: block;
  width: 40px;
  height: 40px;
  flex-shrink: 0;
}
.ft__sns__divider {
  width: 1px;
  height: 38px;
  border-left: 3px dotted #8a6a3c;
  flex-shrink: 0;
}

@media screen and (min-width: 769px) and (max-width: 1500px) {
  .ft__sns {
    padding: 20px 32px;
  }
  .ft__sns__name {
    font-size: 1.4rem;
  }
}
.ft__copyright {
  width: min(90%, 1440px);
  margin: 0 auto;
  padding: 56px 0 32px;
}
.ft__copyright p {
  font-size: 1.3rem;
  text-align: right;
}