@charset "UTF-8";

/* --- 1. Reset & Base --- */
* { 
  box-sizing: border-box; 
  -webkit-tap-highlight-color: transparent;
}
*:before, *:after {
  box-sizing: border-box;
}
html { 
  font-size: 10px; 
  -webkit-text-size-adjust: 100%; 
  width: 100%;
  height: 100%;
}
body {
  margin: 0;
  padding: 0;
  background-color: #F5F5F5;
  color: #212121;
  font-family: "Noto Sans JP", 'Hiragino Sans', "ヒラギノ角ゴ ProN", Hiragino Kaku Gothic ProN, "メイリオ", Meiryo, sans-serif;
  font-size: 15px;
  line-height: 1.5;
  overflow-wrap: break-word;
  width: 100%;
  height: 100%;
}
img { 
  vertical-align: bottom; 
  max-width: 100%; 
  height: auto; 
  border: 0;
}
a { 
  text-decoration: none; 
  color: #212121; 
  transition: opacity 0.3s; 
}
a:hover { opacity: 0.8; }
ul, ol { list-style: none; margin: 0; padding: 0; }

/* --- 2. Layout Elements --- */
.row { max-width: 880px; width: 100%; margin: 0 auto; }
.pForm { background-color: #F5F5F5; }

.pForm .header {
  padding: 14px 11px;
  background: #fff;
}
.pForm .header h1 {
  width: 18.8rem;
  margin: 0;
  padding: 0;
  line-height: 0;
  display: block;
}
.pForm .header h1 a {
  display: block;
  width: 100%;
  line-height: 0;
}
.pForm .header h1 a img {
  display: block;
  width: 100%;
  height: auto;
}

/* --- 3. Main Visual (MV) --- */
.pForm .mv {
  position: relative;
  background-image: url("../img/mv.jpg");
  background-size: cover;
  background-position: center;
  width: 100%;
  min-height: 280px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.pForm .mv__txt {
  text-align: center;
  color: #fff;
  background: none;
  z-index: 2;
}
.pForm .mv__txt h2 { 
  font-size: 36px; 
  line-height: 1.4; 
  font-weight: 700; 
  margin: 0; 
}
.pForm .mv__txt p { 
  font-size: 16px; 
  margin-top: 14px; 
}

/* --- 4. Form Style (PC) --- */
.pForm .form {
  max-width: 720px;
  width: calc(100% - 40px);
  margin: 40px auto 40px;
  background: #FFF;
  border-radius: 8px;
  padding: 40px 48px;
}
.pForm .form dl {
  display: flex;
  align-items: center;
  padding: 16px 0;
  border-top: 0px solid #C1C1C1;
  margin: 0;
}
.pForm .form dl.st2 { align-items: flex-start; }
.pForm .form dl:last-of-type { border-bottom: 0px solid #C1C1C1; }
@media screen and (max-width: 768px) {
.pForm .form dl:last-of-type { border-bottom: none; }
}

.pForm .form dt {
  width: 180px;
  font-size: 16px;
  font-weight: 500;
  display: flex;
  align-items: center;
}
.pForm .form dt.required::before {
  content: "必須";
  font-size: 12px;
  color: #fff;
  background: #A60000;
  padding: 0 6px 1px;
  border-radius: 3px;
  margin-right: 6px;
}
.pForm .form dt.any::before {
  content: "任意";
  font-size: 12px;
  color: #fff;
  background: #AEB3C6;
  padding: 0 6px 1px;
  border-radius: 4px;
  margin-right: 10px;
}

.pForm .form dd { flex: 1; margin: 0; }
.pForm .form input, .pForm .form textarea {
  width: 100%;
  padding: 10px 10px;
  font-size: 16px;
  border: 1px solid #555;
  border-radius: 4px;
  outline: none;
  background: #fff;
  resize: vertical;
}
.pForm .form textarea { height: 209px; }

/* --- 5. Custom Checkbox --- */
.pForm .form .wrapCheck { margin-top: 22px; text-align: center; }
.pForm .form .wrapCheck label {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  position: relative;
}
.pForm .form .wrapCheck label input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.pForm .form .wrapCheck label span {
  font-size: 16px;
  padding-left: 32px;
  position: relative;
}
.pForm .form .wrapCheck label span::before {
  content: "";
  position: absolute;
  left: 0; top: 50%;
  transform: translateY(-50%);
  width: 20px; height: 20px;
  background: #fff;
  border: 1px solid #C8CBCC;
  border-radius: 4px;
  transition: 0.2s;
}
.pForm .form .wrapCheck label span::after {
  content: "";
  position: absolute;
  left: 5px; top: 45%;
  transform: translateY(-50%) rotate(-45deg);
  width: 10px; height: 6px;
  border-left: 2px solid #fff;
  border-bottom: 2px solid #fff;
  opacity: 0;
  transition: 0.2s;
}
.pForm .form .wrapCheck label input:checked + span::before {
  background: #A60000;
  border-color: #A60000;
}
.pForm .form .wrapCheck label input:checked + span::after { opacity: 1; }

::placeholder {
  color: #ddd;
}

/* --- 6. Button & Footer --- */
.pForm .form .wrapBtn { margin-top: 38px; text-align: center; }
.pForm .form .wrapBtn button {
  width: 280px;
  height: 52px;
  background: #111;
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: 18px;
  font-weight: 700;
  transition: opacity 0.3s;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.pForm .form .wrapBtn button:hover { opacity: 0.7; }

.footer { padding: 0px 0 48px; text-align: center; }
.footer__link { font-size: 14px; color: #707070; }
.footer__link a { color: #4B91BF; margin: 0 8px; text-decoration: underline; }
.footer__copy { font-size: 14px; margin-top: 12px; opacity: 0.5; }
@media screen and (max-width: 768px) {
.footer { padding: 20px 0 30px; text-align: center; }
}

/* --- 7. Responsive (Smartphone) --- */
@media screen and (max-width: 768px) {
  /* ヘッダー：最新の数値を維持しつつタイポ修正 */
  .pForm .header {
    padding: 3.63918vw 2.86598vw 2.57732vw;
    background: #fff;
  }
  .pForm .header h1 {
    display: block;
    line-height: 0;
    width: 49.55155vw; /* タイポ 49z... を修正 */
    margin: 0;
  }
  .pForm .header h1 a {
    display: block;
    line-height: 0;
    width: 100%;
  }
  .pForm .header h1 a img {
    display: block;
    width: 100%;
    height: auto;
  }

  /* MV */
  .pForm .mv {
    background-image: url("../img/mv_sp.jpg");
    min-height: 46.23711vw;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .pForm .mv__txt {
    position: relative; /* absoluteから安定した配置へ */
    width: 100%;
    padding: 0 20px;
  }
  .pForm .mv__txt h2 {
    font-size: 6.15464vw;
    line-height: 1.4;
  }
  .pForm .mv__txt p {
    font-size: 3.825vw;
    line-height: 1.6;
    margin-top: 3.86598vw;
  }

  /* フォームレイアウト：元コードの安定性を再現 */
  .pForm .form {
    width: calc(100% - 24px); /* 画面端の余白を元コードに合わせる */
    margin: 16px auto 2vw;
    padding: 12px 24px 50px;
    border-radius: 0px;
    background: #ffffff;
  }

  .pForm .form dl { 
    display: flex;
    flex-direction: column; /* 縦並びを明示的に指定 */
    align-items: flex-start; 
    padding: 10px 0;
    border-top: none;
  }
  .pForm .form dl + dl {
    margin-top: 0; /* dl内のborderで区切るため不要なマージンをカット */
  }

  .pForm .form dt { 
    width: 100%; 
    margin-bottom: 8px; 
    font-size: 4vw; 
  }

  .pForm .form dd { 
    width: 100%; 
    margin: 0;
  }

  .pForm .form input, 
  .pForm .form textarea {
    font-size: 16px; /* ズーム防止 */
    padding: 12px 12px;
    height: auto;
    min-height: 40px;
    resize: vertical;
  }
  
  .pForm .form textarea {
    height: 38.6vw;
    resize: vertical;
  }

  /* チェックボックス */
  .pForm .form .wrapCheck { margin-top: 10px; }
  .pForm .form .wrapCheck label span { padding-left: 32px; font-size: 3.6vw; }
  .pForm .form .wrapCheck label span::before { width: 20px; height: 20px; }

  /* ボタン */
  .pForm .form .wrapBtn { margin-top: 30px; }
  .pForm .form .wrapBtn button { 
    width: 100%; 
    height: 12vw; 
    font-size: 4vw;
    border-radius: 8px;
  }
  
  .footer__link, .footer__copy { font-size: 2.8vw; }
}

.error { color: #ff0000; font-size: 14px; margin-top: 5px; display: block; }