/* ボタン */
.contact-button,
.submit label {
  background-color: #ed4063;
  border: none;
  border-radius: 9999px;
  box-shadow: 0px 4px 24px 0px rgba(0, 0, 0, 0.16);
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  display: block;
  color: white;
  text-decoration: none;
}

.submit {
  margin: 0 auto;
  width: 250px;
}

.input_field {
  margin: 40px 0;
}

.input_field input {
  margin: 0 0 32px;
}

.privacy_agree {
  display: flex;
  align-items: center;
}

.privacy_agree input {
  margin: 0;
  ;
}

.submit label {
  display: flex;
  justify-content: space-between;

  padding: 16px 48px;
  margin: 0 auto;
}

.submit p {
  width: inherit;
}

.contact-button:hover,
.submit label:hover {
  transform: translateY(-2px);
  box-shadow: 0px 6px 28px 0px rgba(0, 0, 0, 0.2);
}

.contact-button:active,
.submit label:active {
  transform: translateY(0);
  box-shadow: 0px 2px 16px 0px rgba(0, 0, 0, 0.16);
}

.button-content {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  gap: 16px;
  padding: 10px 48px;
}

.icon-24px {
  position: relative;
  flex-shrink: 0;
  width: 24px;
  height: 24px;
}

.icon-svg {
  display: block;
  width: 100%;
  height: 100%;
}

.button-text {
  font-family: 'Noto Sans JP', sans-serif;
  font-weight: 700;
  font-size: 16px;
  line-height: 1.6;
  color: white;
  white-space: nowrap;
  flex-shrink: 0;
}


.button-text a {
  text-decoration: none;
  color: #FFF;
  display: block;
}

.form__container {
  margin: 0 auto;
  padding: 40px 20px;
}

.form__container a {
  text-decoration: underline;
}

.form__container p {
  font-weight: bold;
  width: 480px;
  margin: 0 auto;
}

p.terms_text {
  width: 1080px;
  font-weight: normal;
  margin: 40px auto;
}

.privacy_agree {
  background-color: #ffffff;
  border: 1px solid #c6cbcf;
  border-radius: 8px;
  width: 320px;
  box-sizing: border-box;
  padding: 24px;
  margin: 0 auto 40px;
}

.form__container form {
  display: flex;
  flex-direction: column;
}

/* 必須項目の注意書き */
.form__container form>*:first-child:not(input) {
  font-size: 14px;
  color: #666;
  margin: 0 0 32px 0;
}

/* ラベル（通常） */
.form__container .label-text {
  font-weight: 700;
  font-size: 14px;
  line-height: 1.6;
  color: #000000;
  margin: 0 0 8px 0;
}

/* ラベル（必須項目あり） */
.form__container .label-with-required {
  font-weight: 700;
  font-size: 14px;
  line-height: 1.6;
  color: #000000;
  margin: 0 0 8px 0;
  display: flex;
  align-items: center;
  gap: 6px;
}

/* 必須の赤い丸 */
.form__container .required-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  background-color: #ED4063;
  border-radius: 50%;
  flex-shrink: 0;
}

/* 入力フィールドを含むpタグ */
.form__container form>p:has(input[type="text"]),
.form__container form>p:has(input[type="email"]),
.form__container form>p:has(input[type="url"]),
.form__container form>p:has(textarea) {
  margin: 0 0 32px 0;
}

/* テキストフィールドのスタイル */
.form__container input[type="text"],
.form__container input[type="email"],
.form__container input[type="url"] {
  background-color: #ffffff;
  border: 1px solid #c6cbcf;
  border-radius: 8px;
  padding: 19px 24px;
  min-width: 256px;
  width: 100%;
  max-width: 480px;
  box-shadow: 0px 4px 40px 0px rgba(0, 0, 0, 0.04);
  box-sizing: border-box;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 16px;
  line-height: 1.6;
  color: #000000;
  outline: none;
  transition: border-color 0.2s;
}

.form__container input[type="text"]:focus,
.form__container input[type="email"]:focus,
.form__container input[type="url"]:focus {
  border-color: #999;
}

.form__container input[type="text"]::placeholder,
.form__container input[type="email"]::placeholder,
.form__container input[type="url"]::placeholder {
  color: #cccccc;
}

/* テキストエリアのスタイル */
.form__container textarea {
  background-color: #ffffff;
  border: 1px solid #c6cbcf;
  border-radius: 8px;
  padding: 19px 24px;
  min-width: 256px;
  width: 100%;
  max-width: 480px;
  box-shadow: 0px 4px 40px 0px rgba(0, 0, 0, 0.04);
  box-sizing: border-box;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 16px;
  line-height: 1.6;
  color: #000000;
  outline: none;
  resize: vertical;
  min-height: 200px;
  transition: border-color 0.2s;
}

.form__container textarea:focus {
  border-color: #999;
}

.form__container textarea::placeholder {
  color: #cccccc;
}

/* チェックボックスのスタイル */
.form__container input[type="checkbox"] {
  all: revert;
  margin-right: 8px;
  width: 18px;
  height: 15px;
  cursor: pointer;
  border: 1px solid rgb(118, 118, 118);
  border-radius: 3px;
  vertical-align: middle;
}

/* 規約への同意セクション */
.form__container form>p:has(input[type="checkbox"]) {
  font-size: 14px;
  line-height: 1.8;
  color: #333;
  margin: 0 0 32px 0;
  max-width: 600px;
}

.form__container form>p:has(input[type="checkbox"]) a {
  color: #0066cc;
  text-decoration: underline;
}

/* 規約への同意のラベル */
.form__container form>p:has(+ p:has(input[type="checkbox"])) {
  font-weight: 700;
  font-size: 14px;
  line-height: 1.6;
  color: #000000;
  margin: 0 0 8px 0;
}

/* 送信ボタンを含むpタグ */
.form__container form>p:has(.submit) {
  margin: 0;
  text-align: center;
}


.visually-hidden-input {
  /* 視覚的に非表示にするための標準的なCSSパターン */
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}


p.button-text,
.privacy_agree p {
  width: inherit;
}

@media (max-width: 768px) {
  .form__container {
    padding: 0;
  }

  .form_text {
    max-width: 100%;
  }
  
  .form__container p:not(.terms_text) {
    max-width: 480px;
    width: 100%;
  }
  
  .form__container p.terms_text {
    width: 100%;
  }

  .button-content {
    padding: 10px 24px;
  }
}