/* =========================
   Contact Page
========================= */

.contact-page{
  background:
    radial-gradient(circle at 12% 12%, rgba(183,45,40,.08), transparent 28%),
    radial-gradient(circle at 88% 20%, rgba(190,145,64,.14), transparent 30%),
    #f7f3ec;
  color:#15110c;
  min-height:100vh;
}

.contact-inner{
  width:min(1120px, calc(100% - 32px));
  margin:0 auto;
}

/* =========================
   Hero
========================= */

.contact-hero{
  padding:150px 0 58px;
  text-align:center;
}

.contact-kicker{
  margin:0 0 12px;
  color:#a67a33;
  font-size:13px;
  font-weight:700;
  letter-spacing:.24em;
}

.contact-hero h1{
  margin:0;
  color:#121212;
  font-family:
    "Yu Mincho",
    "YuMincho",
    "Hiragino Mincho ProN",
    "Noto Serif JP",
    serif;
  font-size:clamp(38px, 6vw, 72px);
  font-weight:600;
  letter-spacing:.08em;
  line-height:1.2;
}

.contact-hero p{
  max-width:780px;
  margin:20px auto 0;
  color:rgba(21,17,12,.72);
  font-size:15px;
  line-height:1.9;
}

/* =========================
   Layout
========================= */

.contact-section{
  padding:0 0 90px;
}

.contact-layout{
  display:grid;
  grid-template-columns:minmax(0, .9fr) minmax(420px, 1.1fr);
  gap:28px;
  align-items:start;
}

.contact-info,
.contact-form-card{
  border-radius:30px;
  background:rgba(255,252,247,.92);
  border:1px solid rgba(70,50,25,.1);
  box-shadow:0 20px 52px rgba(45,30,12,.07);
}

.contact-info{
  padding:32px;
}

.contact-info h2{
  margin:0;
  color:#13233b;
  font-family:
    "Yu Mincho",
    "YuMincho",
    "Hiragino Mincho ProN",
    "Noto Serif JP",
    serif;
  font-size:30px;
  font-weight:600;
  letter-spacing:.06em;
}

.contact-info p{
  margin:18px 0 0;
  color:rgba(21,17,12,.72);
  font-size:15px;
  line-height:1.9;
}

.contact-info__box{
  margin-top:28px;
  padding:22px;
  border-radius:22px;
  background:#fffaf2;
  border:1px solid rgba(70,50,25,.1);
}

.contact-info__box h3{
  margin:0 0 12px;
  color:#b72d28;
  font-size:17px;
}

.contact-info__box ul{
  margin:0;
  padding-left:1.2em;
  color:rgba(21,17,12,.72);
  font-size:14px;
  line-height:1.9;
}

/* =========================
   Form
========================= */

.contact-form-card{
  padding:32px;
}

.contact-success,
.contact-error{
  margin-bottom:22px;
  padding:18px 20px;
  border-radius:18px;
  line-height:1.8;
}

.contact-success{
  background:#eef9f0;
  border:1px solid #ccebd4;
  color:#2d7b46;
}

.contact-success h2{
  margin:0 0 6px;
  font-size:20px;
}

.contact-success p{
  margin:0;
}

.contact-error{
  background:#fff1f1;
  border:1px solid #ffd1d1;
  color:#a73030;
  font-weight:700;
}

.contact-error p{
  margin:0;
}

.contact-error p + p{
  margin-top:6px;
}

.form-field{
  margin-bottom:20px;
}

.form-field label{
  display:block;
  margin-bottom:8px;
  color:#15110c;
  font-weight:800;
  font-size:14px;
  letter-spacing:.04em;
}

.form-field label span{
  color:#b72d28;
  font-size:12px;
  margin-left:4px;
}

.form-field input,
.form-field textarea,
.form-field select{
  width:100%;
  border:1px solid rgba(70,50,25,.16);
  border-radius:16px;
  background:#fffaf3;
  color:#15110c;
  padding:14px 16px;
  font-size:16px;
  outline:none;
  transition:
    border-color .2s ease,
    box-shadow .2s ease,
    background .2s ease;
}

.form-field select{
  appearance:none;
  -webkit-appearance:none;
  background-image:
    linear-gradient(45deg, transparent 50%, #7b5520 50%),
    linear-gradient(135deg, #7b5520 50%, transparent 50%);
  background-position:
    calc(100% - 22px) 50%,
    calc(100% - 15px) 50%;
  background-size:
    7px 7px,
    7px 7px;
  background-repeat:no-repeat;
  padding-right:44px;
}

.form-field textarea{
  min-height:190px;
  resize:vertical;
  line-height:1.8;
}

.form-field input:focus,
.form-field textarea:focus,
.form-field select:focus{
  border-color:#b72d28;
  background:#fff;
  box-shadow:0 0 0 4px rgba(183,45,40,.1);
}

.contact-form-card button{
  width:100%;
  min-height:58px;
  border:0;
  border-radius:999px;
  background:#13233b;
  color:#fff;
  cursor:pointer;
  font-size:15px;
  font-weight:800;
  letter-spacing:.12em;
  transition:
    transform .2s ease,
    box-shadow .2s ease,
    background .2s ease;
}

.contact-form-card button:hover{
  transform:translateY(-2px);
  background:#b72d28;
  box-shadow:0 16px 34px rgba(183,45,40,.2);
}

/* =========================
   Responsive
========================= */

@media (max-width: 900px){
  .contact-layout{
    grid-template-columns:1fr;
  }
}

@media (max-width: 768px){
  .contact-inner{
    width:min(100% - 28px, 1120px);
  }

  .contact-hero{
    padding:124px 0 42px;
  }

  .contact-hero h1{
    font-size:clamp(32px, 10vw, 46px);
  }

  .contact-hero p{
    font-size:14px;
  }

  .contact-section{
    padding-bottom:64px;
  }

  .contact-info,
  .contact-form-card{
    border-radius:24px;
    padding:22px 18px;
  }

  .contact-info h2{
    font-size:25px;
  }

  .form-field input,
  .form-field textarea,
  .form-field select{
    font-size:15px;
  }
}