/* ==========================================================================
   BEARS NET — Contact page
   Layout-only additions on top of assets/css/style.css.
   Colors / fonts / spacing tokens are reused from style.css (:root vars,
   .btn / .container / .eyebrow / .h2 / .check / .link-text / .m-hide etc.).
   ========================================================================== */

:root {
  /* Contact-form-only colors that don't already exist as tokens in style.css.
     (Everything else below reuses --c-* variables defined there.) */
  --cf-divider: #EEF2F8;
  --cf-placeholder: #9AA6B8;
  --cf-error: #D94848;
}

/* ==========================================================================
   01 Contact First View + 安心カード
   ========================================================================== */
.c-hero { background: var(--c-fv-bg); overflow: hidden; }

.c-hero__grid {
  padding-top: clamp(32px, 4vw, 48px);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr));
  gap: 32px;
  align-items: center;
}
.c-hero__text { padding: 8px 0; }

.c-hero__eyebrow { display: flex; align-items: center; gap: 14px; margin: 0 0 22px; }
.c-hero__eyebrow-line { width: 40px; height: 1px; background: var(--c-blue); opacity: .4; }

.c-hero__title {
  margin: 0 0 16px;
  font-size: clamp(36px, 4.2vw, 58px);
  font-weight: 900;
  line-height: 1.3;
  color: var(--c-text);
}
.c-hero__catch { margin: 0 0 18px; font-weight: 700; font-size: clamp(17px, 1.6vw, 22px); color: var(--c-text); }
.c-hero__lead { margin: 0 0 28px; font-size: 15px; line-height: 1.95; color: var(--c-text-2); }

.c-hero__subcta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  color: var(--c-text);
  font-weight: 600;
  font-size: 14.5px;
  border: 1px solid var(--c-line);
  border-radius: 6px;
  padding: 0 20px;
  height: 46px;
  transition: border-color .15s;
}
.c-hero__subcta:hover { border-color: var(--c-text); color: var(--c-text); }

.c-hero__visual { line-height: 0; }
.c-hero__img {
  width: 100%;
  max-width: 560px;
  display: block;
  margin-left: auto;
  mask-image: radial-gradient(ellipse 80% 82% at 52% 48%, #000 55%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 80% 82% at 52% 48%, #000 55%, transparent 100%);
}

.c-trust__grid {
  padding-top: clamp(24px, 3vw, 40px);
  padding-bottom: clamp(40px, 4vw, 56px);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
  gap: 16px;
}
.c-trust-card {
  background: #fff;
  border: 1px solid var(--c-border);
  border-radius: 14px;
  padding: 22px 24px;
  box-shadow: 0 2px 10px rgba(17, 27, 46, .03);
  display: flex;
  gap: 16px;
  align-items: flex-start;
}
.c-trust-card__icon {
  flex: none;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--c-blue-bg);
  color: var(--c-blue);
  display: grid;
  place-items: center;
  font-family: var(--f-en);
  font-weight: 700;
  font-size: 14px;
}
.c-trust-card__title { margin: 0 0 6px; font-weight: 700; font-size: 16px; color: var(--c-text); line-height: 1.45; }
.c-trust-card__desc { margin: 0; font-size: 13.5px; line-height: 1.8; color: var(--c-text-3); }

@media (max-width: 1100px) and (min-width: 641px) {
  .c-trust__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ==========================================================================
   02 お問い合わせフォーム + サイドバー
   ========================================================================== */
.c-form-section { background: var(--c-sec-bg); padding: clamp(48px, 5vw, 72px) 0 clamp(80px, 9vw, 120px); }

.c-form-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 340px);
  gap: clamp(24px, 3vw, 40px);
  align-items: start;
}

.c-form-card {
  background: #fff;
  border: 1px solid var(--c-border);
  border-radius: 16px;
  padding: clamp(28px, 4vw, 52px);
  box-shadow: 0 10px 40px rgba(17, 27, 46, .05);
}

/* Title block */
.c-form-head {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  margin-bottom: 12px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--c-border);
}
.c-form-head__eyebrow { display: flex; align-items: center; gap: 14px; margin: 0 0 14px; font-size: 12px; }
.c-form-head__title { margin: 0 0 10px; font-size: clamp(26px, 3vw, 38px); }
.c-form-head__desc { margin: 0 0 10px; font-size: 14.5px; line-height: 1.9; color: var(--c-text-2); }
.c-form-head__assure { margin: 0; display: inline-flex; align-items: center; gap: 8px; font-size: 13px; line-height: 1.6; color: var(--c-text-3); }
.c-form-head__dot { flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--c-blue); }
.c-form-head__note { margin: 0; font-size: 12.5px; color: var(--c-text-3); }

/* Badges */
.badge { font-size: 11px; font-weight: 700; padding: 3px 8px; border-radius: 3px; line-height: 1.4; }
.badge--req { background: var(--c-text); color: #fff; }
.badge--opt { background: transparent; color: var(--c-note); border: 1px solid var(--c-line-2); }

/* Field rows */
.c-field {
  display: grid;
  grid-template-columns: minmax(0, 220px) minmax(0, 1fr);
  gap: 10px 28px;
  border-bottom: 1px solid var(--cf-divider);
  align-items: start;
  padding: 20px 0;
}
.c-field--textarea { padding: 28px 0 30px; }
.c-field__label {
  display: flex;
  align-items: center;
  gap: 12px;
  font-weight: 700;
  font-size: 15px;
  color: var(--c-text);
  padding-top: 12px;
  flex-wrap: wrap;
}

.c-input {
  width: 100%;
  border: 1px solid var(--c-line-2);
  border-radius: 8px;
  padding: 13px 16px;
  font-size: 15px;
  background: #fff;
  color: var(--c-text);
  transition: border-color .15s, box-shadow .15s;
}
.c-input::placeholder { color: var(--cf-placeholder); }
.c-input:focus { outline: none; border-color: var(--c-blue); box-shadow: 0 0 0 3px rgba(26, 86, 219, .15); }
.c-input--textarea { resize: vertical; min-height: 150px; line-height: 1.8; }
.c-input--select {
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23111B2E' stroke-width='2.2'><path d='M6 9l6 6 6-6'/></svg>");
  background-repeat: no-repeat;
  background-position: right 16px center;
  padding-right: 44px;
}
.c-field.is-invalid .c-input { border-color: var(--cf-error); }
.c-field__help { margin: 8px 0 0; font-size: 12.5px; color: var(--c-note); }
.c-field__error { margin: 8px 0 0; font-size: 12.5px; color: var(--cf-error); font-weight: 600; }
.c-field.is-invalid .c-field__help { display: none; }

/* Collapsible "optional" section */
.c-more { padding: 26px 0 0; }
.c-more-toggle {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: var(--c-blue);
  font-weight: 600;
  font-size: 14px;
}
.c-more-toggle:hover { color: var(--c-blue-hover); }
.c-more-toggle__icon {
  flex: none;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1.5px solid var(--c-blue);
  display: grid;
  place-items: center;
  font-size: 16px;
  line-height: 1;
  font-weight: 500;
}
.c-more-toggle__note { color: var(--c-note); font-weight: 400; font-size: 12.5px; }
.c-more-panel { border-top: 1px solid var(--cf-divider); margin-top: 22px; }

/* File dropzone */
.c-dropzone {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  border: 1.5px dashed var(--c-line);
  border-radius: 10px;
  padding: 26px 20px;
  background: var(--c-fv-bg);
  cursor: pointer;
  text-align: center;
  transition: border-color .15s, background .15s;
}
.c-dropzone:hover, .c-dropzone.is-dragover { border-color: var(--c-blue); background: var(--c-blue-bg); }
.c-dropzone__row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 6px 10px;
  color: var(--c-blue);
  font-weight: 700;
  font-size: 14.5px;
  white-space: nowrap;
}
.c-dropzone__or { color: var(--c-text-2); font-weight: 500; font-size: 13px; }
.c-dropzone__note { font-size: 12.5px; color: var(--c-note); }
.c-dropzone input[type="file"] { display: none; }

/* Submit area */
.c-submit-area { padding: 36px 0 8px; display: flex; flex-direction: column; gap: 28px; }
.c-agree {
  background: var(--c-fv-bg);
  border: 1px solid var(--c-border);
  border-radius: 12px;
  padding: 18px 22px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.c-agree__row { display: inline-flex; align-items: center; gap: 12px; cursor: pointer; font-size: 14.5px; color: var(--c-text); flex-wrap: wrap; }
.c-agree__checkbox { width: 20px; height: 20px; accent-color: var(--c-blue); margin: 0; }
.c-agree__error { margin: -4px 0 0; font-size: 12.5px; color: var(--cf-error); font-weight: 600; }
.c-agree__note { margin: 0; font-size: 12.5px; line-height: 1.8; color: var(--c-note); display: flex; flex-wrap: wrap; gap: 4px 14px; align-items: center; }
.c-agree__note a { font-weight: 600; }

.c-submit-wrap { display: flex; flex-direction: column; align-items: center; gap: 16px; padding-top: 8px; }
.c-submit-note { margin: 0; text-align: center; font-size: 14px; line-height: 1.9; color: var(--c-text-2); }
.c-submit-btn {
  justify-content: center;
  gap: 14px;
  font-size: 17px;
  padding: 0 clamp(28px, 4vw, 56px);
  height: 64px;
  border-radius: 8px;
  width: min(100%, 420px);
  box-shadow: 0 10px 24px rgba(26, 86, 219, .25);
}

/* Submitted / thank-you state */
.c-sent { text-align: center; padding: clamp(24px, 4vw, 48px) 0; }
.c-sent__icon {
  display: grid;
  place-items: center;
  width: 84px;
  height: 84px;
  border-radius: 50%;
  background: var(--c-blue-bg);
  color: var(--c-blue);
  margin: 0 auto 28px;
}
.c-sent__eyebrow { justify-content: center; margin: 0 0 16px; font-size: 12px; }
.c-sent__title { margin: 0 0 20px; font-size: clamp(26px, 3vw, 40px); line-height: 1.35; }
.c-sent__body { margin: 0 0 36px; font-size: 15px; line-height: 2; color: var(--c-text-2); }
.c-sent__box {
  display: inline-block;
  text-align: left;
  background: var(--c-fv-bg);
  border: 1px solid var(--c-border);
  border-radius: 12px;
  padding: 18px 24px;
  margin: 0 0 36px;
  font-size: 13.5px;
  line-height: 1.9;
  color: var(--c-text-3);
}
.c-sent__box p { margin: 0; }
.c-sent__box strong { color: var(--c-text); }

/* Sidebar */
.c-aside { display: flex; flex-direction: column; gap: 20px; position: sticky; top: 96px; align-self: start; }
.c-aside-card { background: #fff; border: 1px solid var(--c-border); border-radius: 16px; padding: 28px 26px; }
.c-aside-card__head { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; }
.c-aside-card__icon {
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--c-blue-bg);
  color: var(--c-blue);
  display: grid;
  place-items: center;
}
.c-aside-card__title { margin: 0; font-weight: 900; font-size: 18px; color: var(--c-text); line-height: 1.3; }
.c-topics { display: flex; flex-direction: column; gap: 12px; }
.c-topics__item { margin: 0; display: flex; align-items: flex-start; gap: 12px; font-size: 14.5px; font-weight: 500; color: var(--c-text); line-height: 1.6; }
.c-topics__item .check { margin-top: 2px; }
.c-aside-card__foot { margin: 20px 0 0; padding-top: 18px; border-top: 1px solid var(--cf-divider); font-size: 13px; line-height: 1.85; color: var(--c-text-3); }

.c-person { padding: 26px 26px 24px; }
.c-person__label { margin: 0 0 6px; font-family: var(--f-en); font-weight: 600; font-size: 11px; letter-spacing: .14em; color: var(--c-note); }
.c-person__title { margin: 0 0 18px; font-size: 19px; line-height: 1.4; }
.c-person__row { display: flex; gap: 16px; align-items: center; margin-bottom: 16px; }
.c-person__photo { flex: none; width: 64px; height: 64px; border-radius: 50%; object-fit: cover; object-position: 50% 20%; display: block; }
.c-person__meta { line-height: 1.4; }
.c-person__org { margin: 0 0 3px; font-size: 12px; color: var(--c-note); }
.c-person__name { margin: 0 0 3px; font-weight: 700; font-size: 16px; color: var(--c-text); }
.c-person__role { margin: 0; font-size: 12.5px; color: var(--c-text-3); }
.c-person__body { margin: 0; font-size: 13.5px; line-height: 1.9; color: var(--c-text-2); }

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 1100px) {
  .c-form-grid { grid-template-columns: minmax(0, 1fr); }
  .c-aside { position: static; }
}

/* ≤900px: mobile order — FV → 安心カード → こんな内容で大丈夫です → フォーム → 担当者カード → フッター */
@media (max-width: 900px) {
  .c-aside { display: contents; }
  .c-form-card { order: 2; }
  .c-order-1 { order: 1; }
  .c-order-3 { order: 3; }
}

@media (max-width: 640px) {
  .c-field { grid-template-columns: minmax(0, 1fr); }
  .c-field__label { padding-top: 0; }
}

/* ==========================================================================
   SP Design System — contact.html 側の個別調整
   共通トークンは assets/css/style.css で定義したものをそのまま使う。
   ここでは display / order など既存のモバイル並び替えロジックには触れない。
   ========================================================================== */
@media screen and (max-width: 48em) {
  .c-hero__title { font-size: clamp(26px, calc(32 * var(--sp-vw)), 36px); line-height: 1.4; }
  .c-hero__catch { font-size: clamp(17px, calc(19 * var(--sp-vw)), 20px); }
  .c-hero__lead { font-size: clamp(14px, calc(15.5 * var(--sp-vw)), 16px); line-height: 1.8; }
  .c-hero__subcta { height: clamp(44px, calc(46 * var(--sp-vw)), 48px); border-radius: calc(10 * var(--sp-vw)); }

  .c-trust-card {
    border-radius: var(--sp-card-radius);
    padding: calc(18 * var(--sp-vw)) calc(20 * var(--sp-vw));
    box-shadow: none;
  }
  .c-trust__grid { gap: calc(14 * var(--sp-vw)); }
  .c-trust-card__icon { width: clamp(40px, calc(44 * var(--sp-vw)), 48px); height: clamp(40px, calc(44 * var(--sp-vw)), 48px); }

  .c-form-section { padding: var(--sec-y) 0; }
  .c-form-card {
    border-radius: var(--sp-card-radius);
    padding: var(--sp-card-padding);
    box-shadow: none;
    border: 1px solid var(--c-border);
  }
  .c-form-head__title { font-size: clamp(22px, calc(26 * var(--sp-vw)), 28px); }

  .c-submit-btn { height: clamp(52px, calc(56 * var(--sp-vw)), 60px); border-radius: calc(12 * var(--sp-vw)); width: 100%; }

  .c-aside-card { border-radius: var(--sp-card-radius); padding: var(--sp-card-padding); }
  .c-aside-card__icon { width: clamp(36px, calc(40 * var(--sp-vw)), 44px); height: clamp(36px, calc(40 * var(--sp-vw)), 44px); }
  .c-sent__title { font-size: clamp(22px, calc(26 * var(--sp-vw)), 30px); }
  .c-sent__box { border-radius: var(--sp-card-radius); }
}
