/* ==========================================================================
   Contact page (Figma: 0922 / Contact, 1440 x 2366)
   Depends on css/style.css for tokens, page scaling, cursor and grain
   ========================================================================== */

.page--contact { background: var(--color-bg); }

.contact {
  display: grid;
  grid-template-columns: 600px 840px;
  min-height: 2366px;
}

/* ---------- left column (pinned while the form scrolls) ---------- */

.contact__side { background: var(--color-bg); }
.contact__intro {
  position: sticky;
  top: 0;
  padding: 40px 0 0 120px;
}
.contact__logo {
  display: block;
  width: 50px; height: 50px;
  color: var(--color-red);
  transition: transform var(--duration-normal) var(--ease-out-expo);
}
.contact__logo:hover { transform: rotate(-8deg); }
.contact__logo:focus-visible { outline: 2px solid var(--color-red); outline-offset: 4px; }
.contact__label { margin-top: 40px; }
.contact__title {
  margin-top: 16px;
  font-size: 40px;
  line-height: 52px;
  letter-spacing: -0.04em;
}
.contact__lead {
  margin-top: 17px;
  font-size: 16px;
  line-height: 26px;
  letter-spacing: 0.05em;
}

/* ---------- right column: form ---------- */

.form {
  padding: 130px 120px 120px 121px;
  background: #fff;
}
.form fieldset { margin: 0; padding: 0; border: 0; min-width: 0; }
.form legend { padding: 0; }

.q + .q { margin-top: 48px; }
.q__head {
  display: flex;
  align-items: center;
  height: 22px;
  width: 100%;
}
.q__num {
  font-family: var(--font-en);
  font-weight: 700;
  font-size: 13px;
  line-height: 1;
  letter-spacing: 0.02em;
}
.q__title {
  margin-left: 9px;
  font-size: 18px;
  line-height: 1;
  letter-spacing: -0.04em;
}
.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px; height: 22px;
  margin-left: 13px;
  border-radius: 3px;
  background: var(--color-light);
  font-size: 13px;
  letter-spacing: 0;
  color: var(--color-red);
}

/* pill options (radio / checkbox share the same square box, as in Figma) */
.options {
  display: flex;
  flex-wrap: wrap;
  gap: 17px;
  margin-top: 17px;
}
.option {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 45px;
  padding: 0 19.5px 0 18.5px;
  border: 1px solid #dbdbdb;
  border-radius: 999px;
  background: var(--color-bg-light);
  font-size: 14px;
  letter-spacing: -0.03em;
  color: #707070;
  transition: border-color var(--duration-fast) ease, background-color var(--duration-fast) ease, color var(--duration-fast) ease;
}
.option input {
  position: absolute;
  opacity: 0;
  width: 1px; height: 1px;
  pointer-events: none;
}
.option__box {
  flex: none;
  width: 13px; height: 13px;
  border: 1.5px solid #dbdbdb;
  border-radius: 3px;
  transition: background-color var(--duration-fast) ease, border-color var(--duration-fast) ease;
}
.option:hover { border-color: var(--color-red); }
.option:has(input:checked) {
  border: 1.5px solid var(--color-red);
  padding: 0 19px 0 18px;
  background: #fff;
  color: var(--color-red);
}
.option:has(input:checked) .option__box { border-color: var(--color-red); background: var(--color-red); }
.option:has(input:focus-visible) { outline: 2px solid var(--color-red); outline-offset: 3px; }

/* file upload */
.upload { margin-top: 24px; }
.upload__label {
  font-size: 14px;
  line-height: 1;
  letter-spacing: -0.03em;
  color: #737373;
}
.dropzone {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 508px; height: 115px;
  margin-top: 10px;
  border: 1px dashed #dbdbdb;
  border-radius: 8px;
  background: #fff;
  text-align: center;
  font-size: 14px;
  line-height: 22px;
  letter-spacing: -0.03em;
  color: #707070;
  transition: border-color var(--duration-fast) ease, background-color var(--duration-fast) ease;
}
.dropzone:hover,
.dropzone.is-dragover { border-color: var(--color-red); background: var(--color-bg-light); }
.dropzone:has(input:focus-visible) { outline: 2px solid var(--color-red); outline-offset: 3px; }
.dropzone__input { position: absolute; inset: 0; opacity: 0; cursor: inherit; }
.dropzone__files { margin-top: 10px; font-size: 13px; line-height: 1.8; color: #707070; }
.dropzone__files:empty { display: none; }

/* budget follow-up */
.form .subq { margin-top: 24px; }
.subq__title {
  display: block;
  width: 100%;
  font-size: 18px;
  line-height: 1;
  letter-spacing: -0.04em;
}
.subq .options { margin-top: 13px; }

/* text fields */
.q--profile .q__head + .field { margin-top: 19px; }
.field + .field { margin-top: 24px; }
.field__label:not(:has(.badge)) + .field__input { margin-top: 10px; }
.field__label {
  display: flex;
  align-items: center;
  font-size: 16px;
  line-height: 1;
  letter-spacing: -0.03em;
}
.field__input {
  display: block;
  width: 599px; height: 49px;
  margin-top: 9px;
  padding: 0 15px;
  border: 1px solid #dbdbdb;
  border-radius: 6px;
  background: var(--color-bg-light);
  font: inherit;
  font-size: 14px;
  letter-spacing: 0.05em;
  color: #383838;
  transition: border-color var(--duration-fast) ease, background-color var(--duration-fast) ease;
}
.field__input::placeholder { color: #707070; opacity: 1; }
.field__input:hover { border-color: #c4c4c4; }
.field__input:focus { outline: none; border-color: var(--color-red); background: #fff; }
.field__input--area { height: 119px; padding-top: 15px; line-height: 1.6; resize: none; }

/* privacy */
.privacy {
  height: 240px;
  margin-top: 48px;
  padding: 21px 26px 22px 23px;
  border: 1px solid #dbdbdb;
  border-radius: 8px;
  background: #fff;
  overflow-y: auto;
  font-size: 14px;
  line-height: 22px;
  letter-spacing: 0.05em;
  color: #707070;
}
.privacy:focus-visible { outline: 2px solid var(--color-red); outline-offset: 3px; }
.privacy__title { font-size: 18px; line-height: 1.2; letter-spacing: -0.04em; color: var(--color-red); margin-left: 2px; }
.privacy__intro { margin-top: 15px; }
.privacy__heading {
  margin-top: 14px;
  font-size: 14px;
  line-height: 22px;
  letter-spacing: 0.05em;
  color: #555;
}
.privacy__address { font-style: normal; }
.privacy__address a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.privacy__date { margin-top: 14px; }

.agree { margin-top: 17px; }
.agree__label {
  position: relative;
  display: flex;
  width: fit-content;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  line-height: 17px;
  letter-spacing: -0.03em;
  color: #707070;
}
.agree__label input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.agree__box {
  flex: none;
  width: 17px; height: 17px;
  border: 1.5px solid #dbdbdb;
  border-radius: 3.5px;
  background: var(--color-bg-light);
  transition: background-color var(--duration-fast) ease, border-color var(--duration-fast) ease;
}
.agree__label:has(input:checked) .agree__box {
  border-color: var(--color-red);
  background: var(--color-red) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 12px no-repeat;
}
.agree__label:has(input:focus-visible) { outline: 2px solid var(--color-red); outline-offset: 3px; }

/* submit */
.submit { margin-top: 48px; text-align: center; }
.btn-submit {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  width: 138px; height: 56px;
  padding: 0 0 0 3px;
  border: 0;
  background: none;
  font: inherit;
  font-size: 14px;
  letter-spacing: -0.01em;
  color: var(--color-white);
  transition: transform var(--duration-normal) var(--ease-out-expo), opacity var(--duration-fast) ease;
}
.btn-submit__shape { position: absolute; inset: 0; width: 100%; height: 100%; color: var(--color-red); }
.btn-submit span, .btn-submit__icon { position: relative; }
.btn-submit:hover { transform: translateY(-2px); opacity: 0.9; }
.btn-submit:focus-visible { outline: 2px solid var(--color-red); outline-offset: 3px; }
.btn-submit:disabled { opacity: 0.5; cursor: default; transform: none; }
.form__status { margin-top: 16px; font-size: 14px; letter-spacing: 0.06em; }
.form__status:empty { display: none; }

/* validation */
.error {
  margin-top: 8px;
  font-size: 13px;
  letter-spacing: 0.06em;
  color: var(--color-red);
}
.field__input[aria-invalid="true"] { border-color: var(--color-red); background: #fff; }

/* conditional follow-ups (shown only when the answer is not "まだ決まっていない") */
.conditional[hidden] { display: none; }
.conditional.is-entering { animation: conditional-in var(--duration-normal) var(--ease-out-expo); }
@keyframes conditional-in {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .conditional.is-entering { animation: none; }
}

/* honeypot: off-screen for people, still in the form for bots */
.form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
/* Cloudflare Turnstile: takes no space unless Cloudflare asks the visitor for a check */
.form__turnstile { display: flex; justify-content: center; }
.form__turnstile:has(iframe[style*="display: none"]), .form__turnstile:empty { display: none; }

/* ==========================================================================
   Smartphone (≤767px, 390px canvas) — no Figma SP frame for this page yet;
   follows the TOP SP system: 30px side gutters, 44px logo + "Menu" button,
   28px/13px type scale, content on a rounded white sheet.
   ========================================================================== */
@media (max-width: 767px) {
  html[data-sp] .contact { display: block; min-height: 0; }

  /* intro (not pinned on SP) */
  html[data-sp] .contact__side { position: relative; }
  html[data-sp] .contact__intro { position: static; padding: 30px 30px 0; }   /* logo at the same spot as .site-header__logo */
  html[data-sp] .contact__logo,
  html[data-sp] .contact__logo svg { width: 44px; height: 44px; }
  html[data-sp] .contact__label { margin-top: 88px; font-size: 14px; }
  html[data-sp] .contact__title { margin-top: 16px; font-size: 28px; line-height: 36px; letter-spacing: -0.04em; }
  html[data-sp] .contact__lead { margin-top: 18px; font-size: 14px; line-height: 25px; letter-spacing: 0.05em; }

  /* form on a rounded sheet, like the How we do section */
  html[data-sp] .form {
    margin-top: 48px;
    padding: 52px 20px 80px;
    border-radius: 20px 20px 0 0;
  }
  html[data-sp] .q + .q { margin-top: 44px; }
  html[data-sp] .q__head { height: auto; min-height: 22px; flex-wrap: wrap; row-gap: 6px; }
  html[data-sp] .q__num { font-size: 14px; }
  html[data-sp] .q__title { margin-left: 8px; font-size: 16px; line-height: 1.4; letter-spacing: -0.04em; }
  html[data-sp] .badge { width: 34px; height: 20px; margin-left: 10px; font-size: 11px; }

  html[data-sp] .options { gap: 10px; margin-top: 16px; }
  html[data-sp] .option { height: 40px; padding: 0 16px 0 15px; font-size: 14px; letter-spacing: -0.03em; }
  html[data-sp] .option:has(input:checked) { padding: 0 15.5px 0 14.5px; }

  html[data-sp] .upload { margin-top: 22px; }
  html[data-sp] .upload__label { font-size: 14px; }
  html[data-sp] .dropzone { width: 100%; height: 110px; padding: 0 12px; font-size: 12px; line-height: 20px; letter-spacing: 0; }

  html[data-sp] .form .subq { margin-top: 22px; }
  html[data-sp] .subq__title { font-size: 16px; line-height: 1.4; }
  html[data-sp] .subq .options { margin-top: 12px; }

  html[data-sp] .q--profile .q__head + .field { margin-top: 18px; }
  html[data-sp] .field + .field { margin-top: 20px; }
  html[data-sp] .field__label { font-size: 14px; }
  html[data-sp] .field__input { width: 100%; height: 46px; margin-top: 8px; font-size: 14px; }
  html[data-sp] .field__input--area { height: 130px; }

  html[data-sp] .privacy { height: 220px; margin-top: 44px; padding: 18px 16px 18px 18px; font-size: 12px; line-height: 20px; letter-spacing: 0.05em; }
  html[data-sp] .privacy__title { font-size: 16px; }
  html[data-sp] .privacy__heading { font-size: 12px; line-height: 20px; }

  html[data-sp] .agree { margin-top: 16px; }
  html[data-sp] .agree__label { font-size: 14px; }
  html[data-sp] .submit { margin-top: 40px; }
}
