/* ===========================================================
   components.css — 繰り返し使う部品
   =========================================================== */

/* --- ボタン ---------------------------------------------- */
/* 文字はボタンの真ん中。矢印の丸は右端に置き、
   丸から「上・下・右」の縁までの距離がそろうように配置します。
   高さを変えたいときは --btn-h だけ変えれば、矢印の位置も追従します */

.btn {
  --btn-h: 53px;
  --arrow: 22px;
  --arrow-gap: calc((var(--btn-h) - var(--arrow)) / 2);   /* 丸と縁の距離 */

  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--btn-h);
  min-width: 246px;
  /* 左右の余白を同じにして、文字を真ん中に。矢印の分だけ両側を空ける */
  padding: 0 calc(var(--arrow) + var(--arrow-gap) * 2);
  border: none;
  border-radius: var(--r-pill);
  background: var(--c-orange);
  color: #fff;
  font-family: var(--font-body);
  font-size: 16px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .1em;
  white-space: nowrap;
  cursor: pointer;
  transition: opacity .2s, transform .2s;
}

.btn:hover { opacity: 1; transform: translateY(-2px); }

.btn__arrow {
  position: absolute;
  top: 50%;
  right: var(--arrow-gap);
  width: var(--arrow);
  height: var(--arrow);
  transform: translateY(-50%);
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  transition: transform .25s ease;
}

.btn:hover .btn__arrow { transform: translate(3px, -50%); }

.btn--green { background: var(--c-green); }
.btn--beige { background: var(--c-bg-beige); color: var(--c-text); }

/* --- 見出し ---------------------------------------------- */

/* セクション見出し。黄色の下線つき */
.heading {
  display: inline-block;
  position: relative;
  padding-bottom: var(--s-8);
  font-size: var(--fs-h1);
}

.heading::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 10px;
  background: var(--c-yellow);
  opacity: .7;
  border-radius: var(--r-pill);
}

/* 見出しの上に乗せる英字や小見出し */
.heading-sub {
  color: var(--c-text-sub);
  font-family: var(--font-head);
  font-size: var(--fs-h2);
  line-height: var(--lh-tight);
}

.lead {
  font-size: var(--fs-lead);
  line-height: var(--lh-loose);
}

/* --- ヘッダー -------------------------------------------- */

.site-header {
  position: relative;
  z-index: 10;
  background: var(--c-bg);
}

.site-header__inner {
  position: relative;
  width: min(var(--w-frame), 100%);
  height: calc(203 * var(--u));
  margin-inline: auto;
  padding: calc(38 * var(--u)) calc(160 * var(--u)) 0;
  display: flex;
  align-items: flex-start;
}

/* ヘッダーの数値はすべて「1440幅のデザイン上の値 × --u」。
   画面が狭くなると、ロゴもメニューも同じ比率で縮むので、重ならない */

/* ロゴ（葉のマーク＋社名）。カンプに重ねて実測した位置・大きさ。
   下にはみ出して、写真の上端に少しかぶる */
.logo {
  position: absolute;
  left: calc(189 * var(--u));
  top: calc(91 * var(--u));
  display: flex;
  align-items: flex-end;
  gap: calc(12 * var(--u));
}

.logo__mark { width: calc(189 * var(--u)); }
.logo__type { width: calc(124 * var(--u)); margin-bottom: calc(5 * var(--u)); }

/* メニュー＋SNS。カンプ：ナビ x=524〜1140、SNS x=1153〜1272、文字の行 y=115 */
.header-nav {
  margin-left: auto;
  margin-right: calc(8 * var(--u));
  display: flex;
  align-items: flex-end;
  gap: calc(13 * var(--u));
}

.gnav__list {
  display: flex;
  align-items: flex-end;   /* アイコンの高さが違っても、文字の行をそろえる */
  gap: calc(37 * var(--u));
}

.gnav__link {
  display: flex;
  flex-direction: column;
  align-items: center;
  font-size: max(12px, calc(16 * var(--u)));
  font-weight: 700;
  line-height: 1.45;
  white-space: nowrap;
}

/* アイコンの幅は HTML の style="--w:85" で指定（デザイン上の幅）。
   画像の下に透明の余白があるので、文字を少し重ねる */
.gnav__icon {
  width: calc(var(--w, 85) * var(--u));
  height: auto;
  margin-bottom: calc(-8 * var(--u));
}

.sns {
  display: flex;
  align-items: center;
  gap: calc(14 * var(--u));
  margin-bottom: calc(4 * var(--u));
  color: var(--c-text-sub);
}
.sns-svg { display: block; }
.sns-svg--ig { width: calc(52 * var(--u)); height: calc(52 * var(--u)); }
.sns-svg--fb { width: calc(48 * var(--u)); height: calc(48 * var(--u)); }

/* --- お問い合わせ（全ページ共通） ---------------------- */
/* カンプ：ベージュの枠 高さ884。白いパネル 926×561（x=257 y=162、ふちをぼかす） */

.contact-cta {
  position: relative;
  height: 884px;
  background: var(--c-bg-beige);
}

.contact-cta__panel {
  position: absolute;
  top: 162px;
  left: calc(50% - 463px);
  width: 926px;
  height: 561px;
  background: #fff;
  border-radius: 24px;
  box-shadow: 0 0 9px 4px #fff;   /* ふちを柔らかくぼかす */
}

.contact-cta__garland { position: absolute; top: 75px; width: 260px; pointer-events: none; }
.contact-cta__garland--l { left: 120px; }
.contact-cta__garland--r { right: 112px; rotate: 24deg; }   /* 同じ絵を傾けて、右下がりに */

.contact-cta__head { position: absolute; top: 214px; left: 0; right: 0; text-align: center; }

.contact-cta__text {
  position: absolute;
  top: 328px; left: 0; right: 0;
  text-align: center;
  font-size: 18px;
  line-height: 1.6;
  letter-spacing: .1em;
}

.contact-cta__btn { position: absolute; top: 471px; left: 0; right: 0; text-align: center; }

/* --- フッター（全ページ共通） ---------------------------- */
/* カンプ：ベージュの枠 高さ435。位置は1440幅のデザイン上の座標です */

.site-footer { background: var(--c-bg-beige); padding: 0; }

.site-footer__inner {
  position: relative;
  width: 1440px;
  max-width: 100%;
  height: 435px;
  margin-inline: auto;
}

.site-footer__inner > * { position: absolute; }

.footer-logo { left: 196px; top: 81px; display: flex; align-items: flex-end; gap: 14px; }
.footer-logo__mark { width: 167px; }
.footer-logo__type { width: 158px; }

.footer-sns { left: 537px; top: 145px; display: flex; flex-direction: column; align-items: center; gap: 12px; color: var(--c-text-sub); }

.footer-links { left: 198px; top: 299px; display: flex; flex-direction: column; gap: 4px; }
.footer-links a {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--c-text-sub);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0;
}
.footer-links svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; }

.footer-nav { left: 637px; top: 48px; margin: 0; }

.footer-buttons { left: 696px; top: 199px; display: flex; gap: 15px; }

.copyright {
  left: 982px; top: 375px;
  font-size: 14px;
  color: var(--c-text);
  letter-spacing: 0;
}
.copyright a { text-decoration: underline; }

/* --- 画像が入る前の仮の面 -------------------------------- */

.placeholder {
  background: var(--c-placeholder);
  border-radius: var(--r-sm);
  display: grid;
  place-items: center;
  color: #8A857C;
  font-size: var(--fs-note);
}

/* --- スマホ ---------------------------------------------- */

@media (max-width: 767px) {
  .btn { min-width: 0; width: 100%; }

  .site-header__inner { padding: var(--s-16) var(--margin-x); gap: var(--s-16); }
  .logo__mark { width: 72px; }
  .logo__type { width: 56px; }

  /* メニューは後日ハンバーガーに差し替えます */
  .gnav { display: none; }

}
