@charset "UTF-8";

/**********  reset  ****************************************/
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}:where([hidden]:not([hidden='until-found'])){display:none!important}:where(html){-webkit-text-size-adjust:none;color-scheme:dark light;tab-size:2;scrollbar-gutter:stable}:where(html:has(dialog:modal[open])){overflow:clip}@media (prefers-reduced-motion:no-preference){:where(html:focus-within){scroll-behavior:smooth}}:where(body){line-height:1.5;font-family:system-ui,sans-serif;-webkit-font-smoothing:antialiased}:where(button){all:unset}:where(input,button,textarea,select){font:inherit;color:inherit}:where(textarea){resize:vertical;resize:block}:where(button,label,select,summary,[role='button'],[role='option']){cursor:pointer}:where(:disabled){cursor:not-allowed}:where(label:has(>input:disabled),label:has(+input:disabled)){cursor:not-allowed}:where(a){color:inherit;text-underline-offset:.2ex}:where(ul,ol){list-style:none}:where(img,svg,video,canvas,audio,iframe,embed,object){display:block}:where(img,picture,svg,video){max-inline-size:100%;block-size:auto}:where(p,h1,h2,h3,h4,h5,h6){overflow-wrap:break-word}:where(h1,h2,h3){line-height:calc(1em + 0.5rem);text-wrap:balance}:where(hr){border:none;border-block-start:1px solid;color:inherit;block-size:0;overflow:visible}:where(dialog){border:none;background:none;inset:unset;max-width:unset;max-height:unset}:where(dialog:not([open])){display:none!important}:where(:focus-visible){outline:3px solid CanvasText;box-shadow:0 0 0 5px Canvas;outline-offset:1px}:where(:focus-visible,:target){scroll-margin-block:8vh}:where(.visually-hidden:not(:focus-within,:active)){clip-path:inset(50%)!important;height:1px!important;width:1px!important;overflow:hidden!important;position:absolute!important;white-space:nowrap!important;border:0!important}

a {  text-decoration: none;  }

/**********  googlefont  ****************************************/
.poppins-thin {
  font-family: "Poppins", sans-serif;
  font-weight: 100;
  font-style: normal;
}  
.poppins-extralight {
  font-family: "Poppins", sans-serif;
  font-weight: 200;
  font-style: normal;
}  
.poppins-light {
  font-family: "Poppins", sans-serif;
  font-weight: 300;
  font-style: normal;
}  
.poppins-regular {
  font-family: "Poppins", sans-serif;
  font-weight: 400;
  font-style: normal;
}  
.poppins-medium {
  font-family: "Poppins", sans-serif;
  font-weight: 500;
  font-style: normal;
}  
.poppins-semibold {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-style: normal;
}  
.poppins-bold {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-style: normal;
}  
.poppins-extrabold {
  font-family: "Poppins", sans-serif;
  font-weight: 800;
  font-style: normal;
}  
.poppins-black {
  font-family: "Poppins", sans-serif;
  font-weight: 900;
  font-style: normal;
}  
.poppins-thin-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 100;
  font-style: italic;
}  
.poppins-extralight-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 200;
  font-style: italic;
}  
.poppins-light-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 300;
  font-style: italic;
}  
.poppins-regular-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 400;
  font-style: italic;
}  
.poppins-medium-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 500;
  font-style: italic;
}  
.poppins-semibold-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 600;
  font-style: italic;
}  
.poppins-bold-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-style: italic;
}  
.poppins-extrabold-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 800;
  font-style: italic;
}  
.poppins-black-italic {
  font-family: "Poppins", sans-serif;
  font-weight: 900;
  font-style: italic;
}

.noto-sans-jp-<uniquifier> {
  font-family: "Noto Sans JP", sans-serif;
  font-optical-sizing: auto;
  font-weight: 400;
  font-style: normal;
}

/**********************************************************/
html {
  margin: 0;
  padding: 0;
}
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;  /* ボックスの計算方法を調整 */
}
body {
    overflow-x: hidden;
    width: 100%;
    max-width: 100%;
    font-size: 18px;
    margin: 0;
    padding: 0;    
    font-family: "Noto Sans JP", sans-serif;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
    color: #232323;
}
p {
  line-height: 1.5;
  letter-spacing: 0.1rem;
}
section > div:first-child {
  margin: 0 auto;
  padding: 80px 30px 90px 30px;  
}
.inner {
  padding-top: 40px;
  width: 100%;
}
@media (min-width: 980px) {
  section > div:first-child {
    max-width: 980px;    
  }
}

/*************************************************************************************************************************************************************************************************************/
/**  KV  **/

/* 基本設定 */
body {
  margin: 0;
  overflow-x: hidden; /* 横スクロールを無効化 */
  height: 100%; /* 高さ100%に設定 */
}

/* ロゴ周り */
.logo_wrapper {
  position: relative;
  width: 100%;
  min-height: 100vh; /* 画面全体をカバーする最小の高さ */
}

.logo-wrapper-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(255, 255, 255, 0.5); /* 背景に薄い白色オーバーレイ */
  z-index: 1;
}

/* 画像セット */
.image-container {
  position: absolute;
  top: 0; /* 上端に合わせる */
  left: 0;
  width: 100vw; /* 横幅を100vwに */
  height: 100vh; /* 高さを100vhに設定 */
  display: flex;
  justify-content: center; /* 中央揃え */
  align-items: center; /* 中央揃え */
  opacity: 0;
  visibility: hidden; /* 初期状態で非表示 */
  z-index: 2;
}

.set1, .set2, .set3 {
  display: flex;
  width: 100%; /* 幅を100%にして画面いっぱいに */
  justify-content: space-between;
}

.set1 img, .set2 img, .set3 img {
  width: 33.33vw; /* 各画像を画面の3分の1に */
  height: 100vh; /* 高さは自動調整 */
  opacity: 0;
  transition: opacity 1s ease-in-out; /* フェードインアニメーション */
  object-fit: cover;
}

/* 画像が左から順番にフェードイン */
.set1 img:nth-child(1) { animation: fadeInLeft 1s forwards; animation-delay: 0.3s; }
.set1 img:nth-child(2) { animation: fadeInLeft 1s forwards; animation-delay: 0.6s; }
.set1 img:nth-child(3) { animation: fadeInLeft 1s forwards; animation-delay: 0.9s; }

/* 画像が上から順番にフェードイン */
.set2 img:nth-child(1) { animation: fadeInDown 1s forwards; animation-delay: 1.5s; }
.set2 img:nth-child(2) { animation: fadeInDown 1s forwards; animation-delay: 1.8s; }
.set2 img:nth-child(3) { animation: fadeInDown 1s forwards; animation-delay: 2.1s; }

/* 画像が右から順番にフェードイン */
.set3 img:nth-child(1) { animation: fadeInRight 1s forwards; animation-delay: 3.0s; }
.set3 img:nth-child(2) { animation: fadeInRight 1s forwards; animation-delay: 3.5s; }
.set3 img:nth-child(3) { animation: fadeInRight 1s forwards; animation-delay: 4.0s; }

/* ロゴ部分 */
.logo-container {
  position: absolute;
  top: 45%;
  left: 50%;
  transform: translateX(-50%);
  opacity: 0;
	z-index: 5;
}
.logo {
  width: 100%;
  height: auto;
  opacity: 0;
  transform: translateX(-50%);
  /*
  animation: fadeInDown 1s forwards; 
  animation-delay: 3s;
  */
}
.catch {
  font-size: 24px;
  text-align: center;
  margin-top: 20px;
    text-align: center;
    font-size: min(3vw, 24px);
    font-weight: 300;
    text-transform: uppercase;
    letter-spacing: 1rem;
    padding-top: 20px;
}
.catch-part {
  opacity: 0;
  display: inline-block;
  transform: translateY(10px);
}
.logo {
  width: 100%;
  height: auto;
  opacity: 0;
  transform: translateY(50px); /* 上からではなく下からに変更（Y軸） */
  animation: fadeInUp 2.5s cubic-bezier(0.25, 1, 0.5, 1) forwards;
  animation-delay: 6.0s;
}

.part1 {
  opacity: 0;
  transform: translateX(-5%);
  animation: fadeInUp 1s forwards; animation-delay: 7.0s;
}
.part2 {
  opacity: 0;
  transform: translateX(-5%);
  animation: fadeInUp 1s forwards; animation-delay: 7.3s;
}

/* アニメーション定義 */
@keyframes fadeInLeft {
  0% { opacity: 0; transform: translateX(-50px); }
  100% { opacity: 1; transform: translateX(0); }
}

@keyframes fadeInUp {
  0% { opacity: 0; transform: translateY(50px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes fadeInDown {
  0% { opacity: 0; transform: translateY(-50px); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInRight {
  0% { opacity: 0; transform: translateX(50px); }
  100% { opacity: 1; transform: translateX(0); }
}

.logo-wrapper-overlay {
  position: absolute;
  top: 0; left: 0;
  width: 100%;
  height: 100%;
  background: rgba(255, 255, 255, 0.6);
  opacity: 0;
  transition: opacity 1s ease;
  pointer-events: none;
  z-index: 3;
}

.logo-wrapper-overlay.show {
  opacity: 1;
}


/*************************************************************************************************************************************************************************************************************/
/**  動き  **/
html, body {
  overflow-x: hidden!important; /* 横スクロール防止 */
  scroll-behavior: smooth; /* スクロールをスムーズに */
}

/* 基本的なアニメーション */
.scroll_up, .scroll_up_left, .scroll_up_right, .scroll_up_bottom, .scroll_up_top {
  opacity: 0;
  transition: all 0.3s ease-out;
}

/* 下から出てくるアニメーション */
.scroll_up {
  transform: translateY(30px);
}
.scroll_up.active {
  opacity: 1;
  transform: translateY(0);
}

/* 左から出てくるアニメーション */
.scroll_up_left {
  transform: translateX(-50%); /* 初期位置で左外に配置 */
}
.scroll_up_left.active {
  opacity: 1;
  transform: translateX(0);
}

/* 右から出てくるアニメーション */
.scroll_up_right {
  transform: translateX(50%); /* 初期位置で右外に配置 */
}
.scroll_up_right.active {
  opacity: 1;
  transform: translateX(0);
}

/* 下から出てくるアニメーション */
.scroll_up_bottom {
  transform: translateY(50%); /* 初期位置で下外に配置 */
}
.scroll_up_bottom.active {
  opacity: 1;
  transform: translateY(0);
}

/* 上から出てくるアニメーション */
.scroll_up_top {
  transform: translateY(-50%); /* 初期位置で上外に配置 */
}
.scroll_up_top.active {
  opacity: 1;
  transform: translateY(0);
}


/* PC表示のためのスタイル */
@media (min-width: 769px) {
  .scroll_up_left {
    transform: translateX(-30%); /* 少しだけ左から動くように調整 */
  }  
  .scroll_up_right {
    transform: translateX(30%); /* 少しだけ右から動くように調整 */
  }
}

/* スマホ表示のためのスタイル */
@media (max-width: 768px) {
  /* スマホ表示時に遅延を短くする */
  .scroll_up_left, .scroll_up_right {
    transition: transform 0.3s ease-out, opacity 0.3s ease-out;
  }
  .scroll_up_left {
    transform: translateX(-30%); /* 少しだけ左から動くように調整 */
  }  
  .scroll_up_right {
    transform: translateX(30%); /* 少しだけ右から動くように調整 */
  }
  /* 下から出てくるアニメーションを少し早く */
  .scroll_up_bottom {
    transform: translateY(50%); /* 下に隠れている */
  }
}

/**********************************************************/
/**  タイトル  **/
.ttl div:first-child {
  font-size: 90px;
  color: #fa1900;
  font-weight: 800;
  line-height: 1;
}
.ttl .text-jp {
  font-size: 32px;
  font-weight: bold;
}


/**********************************************************/
/* bodyの背景色が影響しないように、#messageセクションには背景色を明示的に指定 */
body {
  background-color: red; /* これが赤背景なので、他のセクションで影響しないように調整 */
  margin: 0;
  padding: 0;
  overflow-x: hidden; /* 横スクロール無効化 */
  height: 100%; /* 高さ100%に */
}
/* メッセージセクション */
#message {
  position: relative;
  padding-top: 30px;
  background-image: url(img/message_bg_img.jpg);
  background-repeat: no-repeat;
  background-position: calc(100% - 120px) calc(100% - 60px);
  background-size: 30vw auto; /* ブラウザ幅に対して変化 */
  background-color: #fff; /* 背景色を透明にして、赤背景を無効化 */
	
}
/* 赤い線 */
#message::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 30px; /* 線の高さ */
  background: linear-gradient(to right, red 26%, #232323 26%); /* 30%が赤、残りが#232323 */
  z-index: 2;
}
#message > div:first-child {
  margin: 0 auto;
  padding: 120px 30px 120px 30px;
}
#message .text-jp {
  color: #fa1900;
}
.message_text {
  letter-spacing: 0.25rem;
  font-size: 30px;
  font-weight: 900;
  line-height: 2.5;
}
/* ここから下の部分が影響を受けないように調整 */
#message .inner {
  position: relative;
  z-index: 3; /* 背景の前面に表示 */
}
	

/**********************************************************/
/**  業務内容  **/
/*
section#business > div:first-child {
  padding: 80px 0 90px 0;  
}
#business::after {
  content: "";
  display: block;
  background-color: #fa1900;
  height: 525px;
  width: 100%;
  position: absolute;
  bottom: 0;
  left: 0;
  z-index: -1;
}
*/
#business {
    position: relative;
    padding-top: 30px;
    height: 100vh;
    background-image: url(img/bg_img01.jpg);
    background-repeat: no-repeat;
    background-size: cover; /* ← 横幅いっぱいに表示される */
    background-position: center calc(100% - 40vh); /* 下端が中央に来るよう調整 */
}
#business::after {
  content: "";
  display: block;
  background-color: #fa1900;
  height: 50%;
  width: 100%;
  position: absolute;
  bottom: 0;
  left: 0;
  z-index: 0;
}
#business .ttl,
#business .inner {
	z-index: 1;
	position: relative;
}
.box_wrap {
  display: grid;
  justify-content: center;
  grid-template-columns: repeat(12, 1fr);
  gap: 20px;
}
.box_wrap .box:nth-child(1),
.box_wrap .box:nth-child(2),
.box_wrap .box:nth-child(3) {
  grid-column: span 4;
}
.box_wrap .box:nth-child(4),
.box_wrap .box:nth-child(5),
.box_wrap .box:nth-child(6),
.box_wrap .box:nth-child(7) {
  grid-column: span 3;
}
.box {
  flex: 1;
  text-align: center;
  border: 2px solid #fa1900;
  border-radius: 10px;
  padding: 30px 15px;
  background: #fff;
  position: relative;
  justify-content: center; 
}
.box > div:first-child {
  height: 90px;  
  display: flex;
  align-items: flex-end;
  justify-content: center; 
}
.box img {
  text-align: center;
  margin: 0 auto;
}
.box p {
  font-size: 20px;
  font-weight: bold;
  padding-top: 20px;
}
.box p {
  padding-top: 30px;
}
.inner .box_wrap:last-child .box:last-child p {
  padding-top: 20px;
}
.box p span {
  font-size: 16px;
  font-weight: normal;
  display: block;
	letter-spacing: -0.01rem;
}
.box .pop {
  position: absolute;
  top: -15%;
  left: -15%;
  border-radius: 100px;
  background: #fa1900;
  padding: 10px;
  color: #fff;
  font-size: 16px;
  aspect-ratio: 1 / 1;
  display: flex;
  justify-content: center;
  align-items: center;
}
.box .pop span {
  display: block;
  font-weight: bold;
}

/**********************************************************/
/**  料金表  **/
#price {
  background-image: url(img/bg_img02.jpg);
  background-size: cover;
}
table {
  width: 100%;
  border-collapse: collapse;
  border-spacing: 0;
  border-right: 2px solid #fa1900;
  border-left: 2px solid #fa1900;
  background: #fff;
  margin: 0;
  padding: 0;
  overflow-x: hidden;
  box-sizing: border-box;
}
table th {
  background-color: #fa1900;
  color: #fff;
  text-align: center;
  border: 2px solid #fa1900;
  width: 25%;
}
table th img {
  margin: 0 auto;
}
table th p {
  padding-top: 20px;
}
table td {
  border-top: 2px solid #fa1900;
  border-bottom: 2px solid #fa1900;
  padding: 20px 0 20px 20px;
	width: 37%;
}
table tr:nth-child(4) td:nth-child(1) {
	width: 20%;
}
table td:last-child,
.inner table:nth-child(2) td:nth-child(2) {
  padding: 20px 20px 20px 0;
}
table td p:first-child {
  font-weight: bold;
}
table td p:last-child {
  font-size: 15px;
  padding-top: 5px;
}
table td div {
  display: flex;
  justify-content: end;
}
table td div > span:first-child {
  display: flex;
  justify-content: center;
  align-items: flex-end;
  padding-bottom: 6px;
  width: 30px;
  height: 30px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  background: #fa1900;
  border-radius: 3px;
  margin-right: 5px;
  margin-top: auto;
}
table td:last-child div p,
.inner table:nth-child(2) td:nth-child(2) div p  {
  font-size: 60px;
  font-weight: 700;
  line-height: 0.7;
  color: #fa1900;
  font-family: "Poppins", sans-serif;
  letter-spacing: -0.05rem;
}
table td:last-child div p > span:first-child,
.inner table:nth-child(2) td:nth-child(2) div p > span:first-child {
  font-size: 40px;
  color: #fa1900;
  padding-right: 3px;
}
table td:last-child div p > span:last-child,
.inner table:nth-child(2) td:nth-child(2) div p > span:last-child  {
  font-size: 30px;
  color: #232323;
  vertical-align: middle;
  line-height: 1;
  padding-left: 10px;
}

.inner table:nth-child(2) {
  margin-top: 30px;
}
.inner table:nth-child(2) td:first-child {
  width: 40%;
}
.inner table:nth-child(2) td:first-child p {
  text-align: justify;
  letter-spacing: 0.01rem;
}
#price p.text-contact {
  font-weight: bold;
  padding-top: 20px;
  text-align: right;
}

/**********************************************************/
/**  流れ  **/
#flow {
  background: #fa1900;
}
#flow .ttl .poppins-black {
  color: #fff;
}
.box_list {
  display: flex;
  justify-content: center;
  gap: 15px;
}
#flow .box_list .box {
  border-top-right-radius: 0;
  border-bottom-left-radius: 0;
  border: none;
  box-shadow: rgba(0, 0, 0, 1) 6px 6px 0px 0px;
  padding: 10px;
  transition-duration: .3s;
}
#flow .box_list .box a {
  display: block;
  transition-duration: .3s;
}
#flow .box_list .box a:hover {
  color: #fa1900;
  text-decoration: underline;
}
#flow .box_list .box div:nth-child(1) {
  color: #232323;
}
#flow .box_list .box div:nth-child(1) {
  position: absolute;
  right: 0;
  top: -15%;
  font-family: "Poppins", sans-serif;
  font-size: 60px;
  font-weight: 700;
}
#flow .box_list .box div:nth-child(2) {
  font-weight: bold;
  font-size: 20px;
  padding-top: 20px;
  padding-bottom: 10px;
  letter-spacing: 0.02rem;
}
#flow .box_list .box:nth-child(1) div:nth-child(2) {
  letter-spacing: -0.02rem;
}
#flow .box_list .box div:nth-child(3) { 
  height: 100px;    
  display: flex;
      align-items: center;
      justify-content: center;
}
#flow .box_list .box div:nth-child(4) {
  font-size: 15px;
  text-align: justify;
  letter-spacing: -0.02rem;
  padding-bottom: 15px;
}
#flow .box_list .box:last-child div:nth-child(3) img {
  padding-left: 15px;
}

/**********************************************************/
/**  会社概要  **/
#company_profile {
  background-image: url(img/bg_img03.jpg);
  background-size: cover;
}
.company_profile_box {
  background: #fff;
  border-radius: 15px;
  padding: 30px;
  box-shadow: rgba(250, 25, 0, 1) 6px 6px 0px 0px;
}
.company_profile_box dl {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
}
.company_profile_box dl dt,
.company_profile_box dl dd {
  padding: 10px 0;
}
.company_profile_box dl dt {
  width: 20%;
  padding-left: 10%;
}
.company_profile_box dl dd {
  width: 80%;
  padding-left: 5%;
}

/**********************************************************/
/**  WEB  **/
#web {
  background: #fff;;
}
#web .button {
  width: 20%;
  color: #fff;
  background: #232323;
  padding: 10px 20px;
  text-align: center;
  border-radius: 10px;
  font-size: 16px;
  border: none;
  cursor: pointer;
  transition: background 0.3s ease;
  margin-top: 26px;
  border: 3px solid #232323;
  font-weight: bold;
  display: block;
}
#web .button:hover {
  background: #8E1D11;
  border: 3px solid #232323;
}

@media (max-width: 768px) {
  #web .button {
    width: 50%;
  }
}

/**********************************************************/
/**  お問い合わせ  **/
#contact {
  background: #fa1900;
}
#contact .ttl .poppins-black {
  color: #fff;
}
.contact_list {
  margin: 0 auto;
}
.btn_mail {
  border-top-right-radius: 0;
  border-bottom-left-radius: 0;
  border: none;
  box-shadow: rgba(0, 0, 0, 1) 6px 6px 0px 0px;
  padding: 30px 10px;
  background: #fff;
  border-radius: 10px;  
  align-items: center; 
  justify-content: center;
}
.btn_mail {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
}
.btn_mail div:nth-child(1) {
  padding-right: 20px;
}
.btn_mail div:nth-child(2) {
  display: block;
  text-align: center;
  font-weight: bold;
}
.btn_mail div:nth-child(2) span {
  font-family: "Poppins", sans-serif;
    font-weight: 900;
    font-style: normal;
    color: #fa1900;
    font-size: 25px;
}
/**  form  **/
form {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
  font-size: 20px;
}
input,
textarea {
  width: 100%;
  padding: 10px 20px;
  border-radius: 6px;
  margin-bottom: 20px;
  border: 2px solid #fff;
  font-size: 16px;
  transition: all 0.3s ease;
}
input:focus,
textarea:focus {
  outline: none;
  border: 2px solid #232323;
  box-shadow: 0 0 3px rgba(250, 25, 0, 0);
}
textarea {
  height: 150px;
  resize: vertical; /* ユーザーが高さ調整可能 */
}
button {
  width: 100%;
  color: #fff;
  background: #232323;
  padding: 20px;
  text-align: center;
  border-radius: 10px;
  font-size: 16px;
  border: none;
  cursor: pointer;
  transition: background 0.3s ease;
  margin-top: 20px;
  border: 3px solid #232323;
  font-weight: bold;
}
button:hover {
  background: #8E1D11;
  border: 3px solid #232323;
}
input,
textarea {
  font-size: 20px;
}
button {
  font-size: 22px;
}

#contact-section {
  width: 100%;
  height: 300px;
}

/**********************************************************/
/**  コピーライト  **/
#copyright {
  background: #232323;
  color: #fff;
  font-size: 15px;
  text-align: center;
}
#copyright > div:first-child {
  margin: 0 auto;
  padding: 30px 0;
}
#copyright > div:first-child .inner {
  padding-top: 0;
}
.pc_none {
  display: none;
}
.sp_none {
  display: block;
}

/**********************************************************/
/**  ページトップボタン  **/
.pagetop-btn {
  position: fixed;
  bottom: -120px; /* 初期位置：画面外 */
  right: 30px;
  width: 120px;
  height: 120px;
  background-color: #232323;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  z-index: 1000;
  display: flex;
  justify-content: center;
  align-items: center;
  opacity: 0; /* 初期状態は透明 */
  transition: opacity 0.3s ease, bottom 0.3s ease;  /* アニメーションで下からスライド */
}

.pagetop-btn.show {
  bottom: 30px;  /* スクロールで表示される位置 */
  opacity: 1;    /* 表示された時に透明度を戻す */
}

/* 上向き矢印 */
.arrow-up {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 20px;
  height: 20px;
  border-top: 4px solid white;
  border-right: 4px solid white;
  transform: translate(-50%, -50%) rotate(-45deg);
}

/* 上向き矢印（中央に固定） */
.arrow-up {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 20px;
  height: 20px;
  border-top: 4px solid white;
  border-right: 4px solid white;
  transform: translate(-50%, -50%) rotate(-45deg);
  transition: transform 0.3s ease; /* ホバーしたときに動く */
}

/* ホバーで浮かんだ状態に固定 */
.pagetop-btn:hover .arrow-up {
  transform: translate(-50%, -100%) rotate(-45deg); /* ちょっと上に浮かせる */
}

@media screen and (max-width: 768px) {
  .pagetop-btn {
    right: 15px;  /* スマホ表示時に右端に配置 */
    bottom: -120px;  /* 初期状態で画面外 */
    opacity: 0;    /* 初期状態で透明 */
    width: 60px;
    height: 60px;
  }

  .pagetop-btn.show {
    bottom: 15px;  /* スクロールしたら表示位置 */
    opacity: 1;    /* 表示されたときに透明度を戻す */
  }
}

/**********************************************************/
/**  スマホ  **/
@media (max-width: 768px) {
  body {
    font-size: 15px;
  }
  .sp_none {
    display: none;
  }
  .pc_none {
    display: block;
  }
  section > div:first-child {
    width: 100%;
    padding: 60px 0;
  }
  section {
    padding: 0 20px;
  }
  .ttl div:first-child {
    font-size: 48px;
  }
  .ttl .text-jp {
    font-size: 20px;
  }
  .inner {
    padding-top: 30px;
  }

  /**  kv  **/
  .set1, .set2, .set3 {
    display: block;
  }
  .set1 img, .set2 img, .set3 img {
    display: block;
    width: 100vw;
    height: 33.33vh;
    opacity: 0;
    transition: opacity 1s ease-in-out;
    object-fit: cover;
    object-position: center 35%;
  }
  .logo-container {
    width: 90%;   
  }
  .logo-container p,
  .catch {
    font-size: 16px;
    letter-spacing: 0.3rem;
  }
  .logo-inner {
    width: 100%;
  }

  /**  メッセージ  **/
  #message > div:first-child {
    padding: 60px 0 150px 0;
  }
  .message_text {
    font-size: 17px;
    line-height: 2;
    letter-spacing: 0.15rem;;
  }
  #message {
    background-position: calc(100% - 15px) calc(100% - 30px);
    background-size: 80vw auto;
  }


  /**  業務内容  **/
  #business {
	  height: auto;    
    padding-top: 0;
  }
  .box_wrap {
    gap: 6px;
    margin-bottom: 0;
  }
  .box_wrap .box:nth-child(1) {
    grid-column: span 12;
  }
  .box_wrap .box:nth-child(2),
  .box_wrap .box:nth-child(3),
  .box_wrap .box:nth-child(4),
  .box_wrap .box:nth-child(5),
  .box_wrap .box:nth-child(6),
  .box_wrap .box:nth-child(7) {
    grid-column: span 6;
  }
  #business .box {
    padding: 12px 10px;
  }
  #business .box > div:first-child {
    height: 60px;
  }
  #business .box > div:first-child img {
    height: 90%;
  }
  #business .box p {
    font-size: 15px;
    padding-top: 10px;
  }
  #business .box p span {
    font-size: 12px;
    letter-spacing: 0;
  }
  .box .pop {
    left: auto;
    right: -3%;
    top: -35%;
    font-size: 12px;
  }

  /**  料金表  **/
  table {
    width: 100%;
    border-collapse: collapse;
  }
  table th {
    border: none;
    width: 100%;
    display: block;
    padding: 20px 20px 15px 20px;
  }
  table th img {
    height: 50px;
    aspect-ratio: 1 / 1;
  }
  table th p {
    padding-top: 10px;
  }
  table td {
    border-bottom: none;
    display: block;
    padding: 15px 15px 10px 15px;
	  width: 100%!important;
  }
  table td p:first-child {
    font-size: 16px;
  }
  table td p:last-child {
    font-size: 14px;
  }
  table td:last-child, .inner table:nth-child(2) td:nth-child(2) {
    border-top: none;
    padding: 0 15px 15px 15px;
  }
  table tr:last-child td:last-child, .inner table:nth-child(2) td:nth-child(2) {
    border-bottom: 2px solid #fa1900;
  }
  table td div > span:first-child {
    padding-bottom: 5px;
    width: 27px;
    height: 27px;
    margin-right: 3px;
  }
  table td:last-child div p > span:first-child, .inner table:nth-child(2) td:nth-child(2) div p > span:first-child {
    font-size: 27px;
  }
  table td:last-child div p,
  .inner table:nth-child(2) td:nth-child(2) div p  {
    font-size: 39px;
  }
  table td:last-child div p > span:last-child, .inner table:nth-child(2) td:nth-child(2) div p > span:last-child {
    font-size: 21px;
    padding-left: 5px;
  }
  .inner table:nth-child(2) td:first-child {
    width: 100%;
  }
  .inner table:nth-child(2) td:first-child {
    padding-right: 15px;
  }
  table:nth-child(2) tr {
    display: grid;
  }
  table:nth-child(2) th {
    order: -1;
  }
  .inner table:nth-child(2) td:first-child {
    border-top: none;
  }
  #price p.text-contact {
    text-align: center;
  }

  /**  流れ  **/
  .box_list {
    flex-wrap: wrap;
  }
  .box_list .box {
    flex: 1 1 calc(100% / 2 - 10px);
  }
  #flow .box_list .box div:nth-child(1) {
    /*top: -13%;*/
  }
  #flow .box_list .box:nth-child(1),
  #flow .box_list .box:nth-child(2),
  #flow .box_list .box:nth-child(3),
  #flow .box_list .box:nth-child(4) {
    margin-bottom: 10px;
  }
  #flow .box_list .box div:nth-child(1) {
    top: -20%;
    font-size: 50px;
  }  
  #flow .box_list .box:nth-child(5) div:nth-child(1),
  #flow .box_list .box:nth-child(6) div:nth-child(1) {
    top: -19%;
  }
  #flow .box_list .box div:nth-child(2) {
    font-size: 18px;
    padding-top: 10px;
  }
  #flow .box_list .box div:nth-child(3) {
    height: 80px;
  }
  #flow .box_list .box div:nth-child(3) img {
    height: 80%;
  }
  #flow .box_list .box div:nth-child(4) {
    font-size: 14px;
    padding-bottom: 5px;
    line-height: 1.4;
  }

  /**  会社概要  **/
  .company_profile_box {
    padding: 20px;
  }
  .company_profile_box dl dt,  
  .company_profile_box dl dd {
    font-size: 15px;
    padding: 6px 0;
  }
  .company_profile_box dl dt {
    width: 20%;
    padding-left: 0;
  }
  .company_profile_box dl dd {
    width: 80%;
    padding-left: 10px;
  }

}


@media (max-width: 320px) {
.box_wrap {
      grid-template-columns: repeat(3, 1fr); /* スマホでも3列に */
    }
}


/**********************************************************/
/**  フォーム  **/
#contact-section {
  width: 100%;
  height: auto;
}
#formWrap {
  width: 100%!important;
}
#formWrap p {
  color: #232323;
  width: 100%!important;
}
#formWrap .formTable {
  margin-top: 20px!important;
  border: none!important;
  border-radius: 15px !important;
}
#formWrap input,#formWrap textarea {
  border: 2px solid #232323;
}
#formWrap tr  {
  width: 100%!important;
}
#formWrap td  {
  width: 70%!important;
  border: none!important;
  background: #fff!important;
  color: #232323!important;
  border-radius: 15px!important;
  padding: 15px 30px 15px 0!important;
  font-size: 18px!important;
}
#formWrap th  {
  border: none!important;
  background: #fff!important;
  color: #999!important;
  border-radius: 15px!important;
  padding: 15px 0 15px 30px!important;
  font-size: 18px;
}
#formWrap tr:nth-child(1) th,
#formWrap tr:nth-child(1) td {
  padding-top: 40px!important;
}
#formWrap tr:last-child th,
#formWrap tr:last-child td {
  padding-bottom: 40px!important;
}
#formWrap td input {
    width: 100%!important;
    display: inline-block!important;
    margin-bottom: 0!important;
}
#formWrap td input.checkbox {
  width: 5%!important;
  margin-top: 20px!important;
  height: 20px;position: relative;
  top: 3px;
}
input[type="checkbox"]:checked {
  accent-color: #fa1900; /* 対応ブラウザなら色が変わる */
}
#formWrap td input.radio {
  width: 5%!important;
  height: 20px;
  position: relative;
  top: 3px;
}
input[type="radio"] {
  accent-color: #fa1900; /* 対応ブラウザなら色が変わる */
}
label:hover {
  color:  #fa1900;
}
#contact {
  background: #fa1900;
}
#contact .ttl .poppins-black {
  color: #fff;
}
.contact_list {
  margin: 0 auto;
}
.btn_mail {
  border-top-right-radius: 0;
  border-bottom-left-radius: 0;
  border: none;
  box-shadow: rgba(0, 0, 0, 1) 6px 6px 0px 0px;
  padding: 30px 10px;
  background: #fff;
  border-radius: 10px;  
  align-items: center; 
  justify-content: center;
}
.btn_mail {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
}
.btn_mail div:nth-child(1) {
  padding-right: 20px;
}
.btn_mail div:nth-child(2) {
  display: block;
  text-align: center;
  font-weight: bold;
}
.btn_mail div:nth-child(2) span {
  font-family: "Poppins", sans-serif;
    font-weight: 900;
    font-style: normal;
    color: #fa1900;
    font-size: 25px;
}
/**  form  **/
form {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
  font-size: 20px;
}
#formWrap input,
#formWrap textarea {
  width: 100%;
  padding: 10px 20px;
  border-radius: 6px;
  margin-bottom: 15px;
  border: 2px solid #ddd;
  font-size: 16px;
  transition: all 0.3s ease;
}
#formWrap input:focus,
#formWrap textarea:focus {
  outline: none;
  border: 2px solid #fa1900;
  box-shadow: 0 0 3px rgba(250, 25, 0, 0);
}
#formWrap textarea {
  height: 150px;
  resize: vertical; /* ユーザーが高さ調整可能 */
  margin-bottom: 0!important;
}
#formWrap .button {
  width: 100%;
  color: #fff;
  background: #232323;
  padding: 20px;
  text-align: center;
  border-radius: 10px;
  font-size: 16px;
  border: none;
  cursor: pointer;
  transition: background 0.3s ease;
  margin-top: 20px;
  border: 3px solid #232323;
  font-weight: bold;
}
#formWrap .button:hover {
  background: #8E1D11;
  border: 3px solid #232323;
}
#formWrap .button {
  font-size: 22px;
}

@media (max-width: 768px) {
  #formWrap tr:nth-child(1) th {
    padding-top: 30px!important;
    padding-bottom: 0!important;
  }
  #formWrap tr:nth-child(1) td {
    padding-top: 5px!important;
  }
  #formWrap th {
    width: 100%!important;
    padding: 10px 15px 5px 15px!important;
    font-size: 16px;
  }
  #formWrap td {
    width: 100%!important;
    padding: 5px 15px 10px 15px!important;
  }
  #formWrap td input.checkbox {
    margin-top: 15px !important;
    width: 10% !important;
    font-size: 20px!important;
  }
  #formWrap td input.radio {
    margin-top: 15px !important;
    width: 10% !important;
    font-size: 20px!important;
  }
  #formWrap tr:last-child th {
    padding-bottom: 5px !important;
  }
  #formWrap tr:last-child td {
    padding-bottom: 35px !important;
  }
  #formWrap textarea {
    height: 200px;
  }
  #formWrap .button {
    font-size: 18px;
    display: inline-block;
    height: 30px;
    line-height: 1;
    margin-bottom: 30px;
    padding: 15px 0 35px 0;
  }
}

/**********************************************************/
/**  フォーム  確認画面 **/
#contact_conf .ttl div:first-child {
  color: #fff;
}
#contact_conf_in #formWrap .button {
  width: 49%;
}
#contact_conf_in .mr_10 {
  margin-right: 1%;
}
#contact_conf_in #formWrap tr:nth-child(7) th,
#contact_conf_in #formWrap tr:nth-child(7) td {
  padding-bottom: 40px!important;
}
#formWrap h4 {
  line-height: 120%;
  font-size: 20px;
  color: #fff;
}

@media (max-width: 768px) {
  section#contact_conf > div:first-child {
    width: 100%;
    padding: 30px 0;
  }
  #contact_conf .inner {
    padding-top: 15px;
  }
  #contact_conf_in #formWrap tr:nth-child(1) td,
  #contact_conf_in #formWrap tr td {        
    padding-top: 15px !important;
  }
  #contact_conf_in #formWrap tr:nth-child(7) td {
    padding-bottom: 30px!important;
  }
  #contact_conf_in #formWrap .button {
    width: 48%;
  }
  #formWrap tr td {
    padding-top: 15px !important;
  }
}

/**********************************************************/
/**  フォーム  完了画面 **/
#contact_comp .ttl div:first-child {
  color: #fff;
}
#contact_comp_in .thankyou_text {
  line-height: 2;
  font-size: 24px;
  background: #fff;
  border-radius: 10px;
  padding: 90px 15px 60px 15px;
}
#contact_comp_in .thankyou_text a {
  text-decoration: none;
  padding: 20px 60px;
  border-radius: 10px;
  margin-top: 30px;
  margin-bottom: 30px;
  display: block;
  width: 50%;
}
#contact_comp_in .thankyou_text a.button {
  width: 50%;
  color: #fff;
  background: #232323;
  padding: 20px;
  text-align: center;
  border-radius: 10px;
  font-size: 16px;
  border: none;
  cursor: pointer;
  transition: background 0.3s ease;
  margin-top: 20px;
  border: 3px solid #232323;
  font-weight: bold;
  font-size: 22px;
}
#contact_comp_in .thankyou_text a:hover {
  background: #8E1D11;
  border: 3px solid #8E1D11;
}

@media (max-width: 768px) {
  section#contact_comp > div:first-child {
    width: 100%;
    padding: 30px 0;
  }
  #contact_comp .inner {
    padding-top: 15px;
  }
  #contact_comp_in .thankyou_text {
    font-size: 20px;
    padding: 60px 15px 60px 15px;
    min-height: 500px;
    height: 3vw;
  }
  #contact_comp_in .thankyou_text a.button {
    width: 95%;
  }
}