

html,
body {
  overflow-x: clip;
}

.contact {
  line-height: 1.5;
  margin-bottom: -40px;
  padding: 50px 0;
  position: relative;
}

.contact::before {
  background: #eeeeee;
  content: "";
  inset: 0;
  margin: 0 calc(50% - 50vw);
  position: absolute;
  z-index: -1;
}

.form {
  margin: auto;
}

.form__title {
  background: rgb(0, 95, 190);
  color: #ffffff;
  font-size: 3rem;
  font-weight: 700;
  margin: 0 0 4rem;
  padding: 0.5em;
  text-align: center;
}

.form__text {
  margin: 0 0 4rem;
  text-align: center;
}

.form__table {
  border-collapse: collapse;
  border-radius: 0.8rem;
  box-shadow: 0 0 0 1px #ffffff;
  margin-bottom: 4rem;
  overflow: hidden;
  width: 100%;
}

.form__table th,
.form__table td {
  background: #eeeeee;
  border: solid #ffffff;
  border-width: 1px 0;
  display: block;
  margin-bottom: -1px;
  padding: 1em;
}

.form__table td {
  background: #ffffff;
  border-color: #eeeeee;
}

.form__table tr:first-child td {
  border-top-color: #ffffff;
}

.form__table tr:last-child td {
  border-bottom-color: #ffffff;
}

.required {
  background: rgb(0, 95, 190);
  border-radius: 0.2rem;
  color: #ffffff;
  float: right;
  font-size: 1.4rem;
  line-height: 2.4rem;
  padding: 0 0.5em;
}

.form-control,
.form-select {
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  border-radius: 0.2rem;
  border: 1px solid #cccccc;
  display: block;
  line-height: 1.5;
  padding: 0.5em;
  transition: border-color 0.4s, box-shadow 0.4s;
  width: 100%;
}

.form-select {
  background: url("../image/arrow_drop_down.svg") calc(100% - 0.5rem) / 3rem no-repeat;
  padding-right: 4rem;
}

.input-group {
  border-radius: 0.2rem;
  border: 1px solid #cccccc;
  display: flex;
  overflow: hidden;
  transition: border-color 0.4s, box-shadow 0.4s;
}

.input-group-text {
  background: #eeeeee;
  border-right: 1px solid;
  border-color: inherit;
  flex-shrink: 0;
  padding: 0.5em;
  text-align: center;
  width: 2.5em;
}

.input-group .form-control {
  border: none;
  box-shadow: none !important;
}

.form__agree {
  align-items: center;
  display: flex;
  flex-direction: column;
  margin-bottom: 4rem;
}

.form-check {
  align-items: center;
  display: flex;
  gap: 0.5em;
}

.form-check-input {
  height: 1.25em;
  width: 1.25em;
}

.form-control:focus,
.form-select:focus,
.input-group:has(.form-control:focus) {
  border-color: rgb(0, 95, 190);
  box-shadow: 0 0 0 0.4rem rgba(0, 95, 190, 0.2);
}

.was-validated .form-control:invalid,
.was-validated .form-select:invalid,
.was-validated .input-group:has(.form-control:invalid) {
  border-color: rgb(225, 50, 50);
}

.was-validated .form-control:invalid:focus,
.was-validated .form-select:invalid:focus,
.was-validated .input-group:has(.form-control:invalid:focus) {
  box-shadow: 0 0 0 0.4rem rgba(225, 50, 50, 0.2);
}

.form-text,
.invalid-feedback {
  font-size: 1.4rem;
  margin-top: 0.5rem;
}

.form-text {
  color: #666666;
}

.invalid-feedback {
  color: rgb(225, 50, 50);
  display: none;
}

.was-validated .form-control:invalid ~ .invalid-feedback,
.was-validated .form-select:invalid ~ .invalid-feedback,
.was-validated .input-group:has(.form-control:invalid) ~ .invalid-feedback,
.was-validated .form-check:has(.form-check-input:invalid) ~ .invalid-feedback {
  display: block;
}

.form__submit,
.form__button {
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  border-radius: 0.4rem;
  cursor: pointer;
  display: block;
  transition: background 0.4s;
  width: 100%;
}

.form__submit {
  background: rgb(0, 95, 190);
  border: none;
  color: #ffffff;
  font-size: 2rem;
  font-weight: 700;
  margin-bottom: 2rem;
  padding: 1em;
}

.form__submit:hover {
  background: rgb(0, 70, 165);
}

.form__button {
  background: #eeeeee;
  border: 1px solid #cccccc;
  padding: 0.5em;
}

.form__button:hover {
  background: #dddddd;
}

.error {
  color: rgb(255, 50, 50);
  margin-bottom: 4rem;
}

.error__title {
  font-weight: 700;
  margin: 0 0 0.5em;
}

.error__list {
  list-style: disc;
  margin: 0;
  padding-left: 2em;
}

.privacy {
  border-radius: 0.8rem;
  box-shadow: 0 0 0 1px #ffffff;
  margin-bottom: 4rem;
  overflow: hidden;
}

.privacy__title {
  margin: 0;
  padding: 1rem 2rem;
}

.privacy__content {
  background: #ffffff;
  color: #666666;
  font-size: 1.4rem;
  height: 40rem;
  overflow-y: auto;
  padding: 2rem;
}

.privacy__caption {
  font-weight: 700;
  margin: 0 0 0.5em;
}

.privacy__text {
  margin: 0 0 0.5em;
}

.privacy__list {
  list-style: disc;
  margin: 0 0 0.5em;
  padding-left: 2em;
}

.privacy__rule {
  border: none;
  margin: 1rem 0;
}

.page-confirm,
.page-finish,
.page-error {
  background: #eeeeee;
}

.page-confirm .header,
.page-finish .header,
.page-error .header {
  background: rgb(0, 95, 190);
}

.page-confirm .contents,
.page-finish .contents,
.page-error .contents {
  background: none;
}

.page-confirm .contact,
.page-finish .contact,
.page-error .contact {
  margin-bottom: 0;
}

@media (min-width: 768px) {
  .contact {
    padding: 100px 0;
  }
  .form {
    margin: auto;
    width: 75%;
  }
  .form__table th,
  .form__table td {
    display: table-cell;
  }
  .form__table th {
    width: 35%;
  }
}
