/* ==========================================================================
   jand.jp 子テーマ（モック v4 を SWELL 向けに移植）
   クラス名 .jd-* はモックと同じ。見た目の正は mock/index.html
   ========================================================================== */

/* --------------------------------------------------------------------------
   ベース（SWELL 全体にトークンを効かせる。全称リセットは親を壊すのでしない）
   -------------------------------------------------------------------------- */
body {
  font-family: var(--jd-font-ja);
  font-size: var(--jd-fs-body);
  font-weight: var(--jd-fw-body);
  line-height: var(--jd-lh-body);
  letter-spacing: var(--jd-ls-body);
  color: var(--jd-text);
  background: var(--jd-bg);
  -webkit-font-smoothing: antialiased;
}

.jd-header,
.jd-header *,
.jd-header *::before,
.jd-header *::after,
.jd-hero,
.jd-hero *,
.jd-hero *::before,
.jd-hero *::after,
.jd-section,
.jd-section *,
.jd-section *::before,
.jd-section *::after,
.jd-footer,
.jd-footer *,
.jd-footer *::before,
.jd-footer *::after,
.jd-spbar,
.jd-spbar *,
.jd-main,
.jd-main * {
  box-sizing: border-box;
}

.jd-section img,
.jd-footer img {
  max-width: 100%;
  height: auto;
  display: block;
}

.jd-hero a:not(.jd-btn):not(.jd-more),
.jd-section a:not(.jd-btn):not(.jd-more),
.jd-footer a:not(.jd-btn):not(.jd-more),
.jd-header a:not(.jd-btn):not(.jd-more),
.jd-spbar a:not(.jd-btn),
.l-header a:not(.jd-btn):not(.jd-more) {
  color: inherit;
  text-decoration: none;
}

.jd-hero h1,
.jd-hero h2,
.jd-hero h3,
.jd-hero h4,
.jd-section h1,
.jd-section h2,
.jd-section h3,
.jd-section h4,
.jd-footer h1,
.jd-footer h2,
.jd-footer h3,
.jd-footer h4 {
  padding: 0;
  border: none;
  background: none;
  font-weight: var(--jd-fw-head);
  line-height: var(--jd-lh-head);
}

.jd-greet__body p { margin: 0 0 1.6em; }
.jd-greet__body p:last-child { margin-bottom: 0; }

.jd-section ul,
.jd-section ol,
.jd-footer ul,
.jd-nav__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.jd-container {
  width: 100%;
  max-width: var(--jd-container);
  margin-inline: auto;
  padding-inline: var(--jd-gutter);
}

.jd-section { padding-block: var(--jd-section-y); }
.jd-section--tint { background: var(--jd-tint); }

.jd-en { font-family: var(--jd-font-en); }

/* --------------------------------------------------------------------------
   セクション見出し
   参照サイトの並びは
     私たちにできること   ← 和文・小・緑
     SERVICE              ← 英字・大・極細・字間 .18em
   -------------------------------------------------------------------------- */
.jd-head { margin-bottom: var(--jd-head-mb); }

.jd-head__sub {
  display: block;
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  line-height: 1.65;
  margin-bottom: 9px;   /* 参照と同値 */
}

.jd-head__en {
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-h2);
  font-weight: var(--jd-fw-head);
  letter-spacing: var(--jd-ls-head);
  line-height: var(--jd-lh-head);
  margin-left: -2px;    /* 参照と同値。字間ぶんの左の空きを詰める */
  text-transform: uppercase;
}

.jd-head__lead {
  margin-top: 24px;
  max-width: 680px;
  color: var(--jd-text-sub);
}

.jd-head--row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  flex-wrap: wrap;
}

.jd-note { color: var(--jd-text-sub); margin: 0; }

/* --------------------------------------------------------------------------
   リンク・ボタン
   参照サイトのボタンは角丸 4px。ピルではない
   -------------------------------------------------------------------------- */
.jd-more {
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  display: inline-flex;
  align-items: center;
  gap: 12px;
  line-height: 1.65;
  text-transform: uppercase;
}
.jd-more::after {
  content: "";
  width: 30px;
  height: 1px;
  background: currentColor;
  transition: width .3s;
}
.jd-more:hover::after { width: 44px; }

.jd-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 18px 39px;               /* 参照と同値 */
  border-radius: var(--jd-radius);
  font-size: var(--jd-fs-min);
  font-weight: var(--jd-fw-btn);
  letter-spacing: var(--jd-ls-label);
  line-height: 1.65;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background-color .25s, color .25s, border-color .25s;
}

/* CTA は専用色ではなくメインカラー。参照サイトと同じ考え方 */
.jd-btn--cta,
a.jd-btn--cta {
  background: var(--jd-main);
  color: #fff;
  text-decoration: none;
}
.jd-btn--cta:hover,
a.jd-btn--cta:hover {
  background: var(--jd-main-dark);
  color: #fff;
}

.jd-btn--quiet,
a.jd-btn--quiet {
  background: transparent;
  color: var(--jd-main);
  border-color: var(--jd-main);
  text-decoration: none;
}
.jd-btn--quiet:hover,
a.jd-btn--quiet:hover {
  background: var(--jd-main);
  color: #fff;
}

.jd-btn--sm { padding: 13px 27px; gap: 9px; }

/* ボタン内のアイコン。アイコンフォントは読み込みが増えるうえ
   ウェイトを揃えられないので、線画のインライン SVG にしている。
   stroke は currentColor なので、ボタンの文字色に自動で追従する */
.jd-btn__icon {
  width: 19px;
  height: 19px;
  flex-shrink: 0;
}
.jd-btn--sm .jd-btn__icon { width: 17px; height: 17px; }

/* 矢印は右側に置き、ホバーで少し進む */
.jd-btn__icon--arrow { transition: transform .25s; }
.jd-btn:hover .jd-btn__icon--arrow { transform: translateX(4px); }

/* --------------------------------------------------------------------------
   ヘッダー　電話番号は置かない
   -------------------------------------------------------------------------- */
.jd-header {
  position: sticky;
  top: 0;
  z-index: 100;
  width: 100%;
  background: rgba(255, 255, 255, .94);
  backdrop-filter: blur(8px);
}
.jd-header__inner {
  height: var(--jd-header-h);
  display: flex;
  align-items: center;
  gap: 28px;
  max-width: none;
  padding-inline: clamp(21px, 3vw, 45px);
}

.jd-logo {
  display: flex;
  align-items: baseline;
  gap: 9px;
  font-family: var(--jd-font-en);
  font-size: 24px;
  font-weight: 300;
  letter-spacing: .1em;
  flex-shrink: 0;
}
.jd-logo__ja {
  font-family: var(--jd-font-ja);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  color: var(--jd-text-sub);
  letter-spacing: var(--jd-ls-label);
  white-space: nowrap;
}

.jd-nav { margin-left: auto; }
.jd-nav__list { display: flex; gap: 27px; }
.jd-nav__list a {
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-body);
  white-space: nowrap;
}
.jd-nav__list a:hover { color: var(--jd-main); }

.jd-nav__cta { display: none; }

/* ハンバーガー。3本線を上下2本の回転と中央1本のフェードで✕にする。
   線は position:absolute で置き、top と rotate だけを動かす */
.jd-burger {
  display: none;
  position: relative;
  width: 45px;
  height: 45px;
  padding: 0;
  border: 1px solid var(--jd-border);
  border-radius: var(--jd-radius);
  background: transparent;
  cursor: pointer;
}
.jd-burger span {
  position: absolute;
  left: 50%;
  width: 20px;
  height: 1px;
  background: var(--jd-text);
  transform: translateX(-50%);
  transition: top .3s ease, transform .3s ease, opacity .2s ease;
}
.jd-burger span:nth-child(1) { top: 15px; }
.jd-burger span:nth-child(2) { top: 22px; }
.jd-burger span:nth-child(3) { top: 29px; }

.jd-header.is-open .jd-burger span:nth-child(1) {
  top: 22px;
  transform: translateX(-50%) rotate(45deg);
}
.jd-header.is-open .jd-burger span:nth-child(2) { opacity: 0; }
.jd-header.is-open .jd-burger span:nth-child(3) {
  top: 22px;
  transform: translateX(-50%) rotate(-45deg);
}

/* --------------------------------------------------------------------------
   ヒーロー
   参照サイトの実構造:
     画像は右寄せ clamp(400px, 66vw, 1200px) / 比率 3:2
     コピーは position:absolute で画像の左に重ねる
     コピーは左からフェードイン、画像は少し遅れてフェードイン
   -------------------------------------------------------------------------- */
.jd-hero {
  position: relative;
  max-width: 1680px;
  margin-inline: auto;
  margin-bottom: clamp(48px, 6vw, 90px);
}

.jd-hero__copy {
  position: absolute;
  z-index: 2;
  top: 0;
  left: var(--jd-gutter);
  width: min(540px, 52%);
  padding-top: clamp(48px, 6vw, 120px);
  pointer-events: none; /* 重ねた下の画像を邪魔しない。リンクだけ通す */
}
.jd-hero__copy a { pointer-events: auto; }

/* 重なった写真の上でも文字が読めるよう、左から白を薄く敷く。
   参照サイトは写真の構図で左が空いているが、仮置き写真は全面に被写体がある */
.jd-hero__copy::before {
  content: "";
  position: absolute;
  z-index: -1;
  top: 0;
  bottom: 0;
  left: calc(var(--jd-gutter) * -1);
  width: calc(100% + var(--jd-gutter) + 80px);
  background: linear-gradient(90deg, #fff 42%, rgba(255, 255, 255, .88) 62%, rgba(255, 255, 255, 0) 100%);
  pointer-events: none;
}

.jd-hero__catch {
  display: block;
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  line-height: 1.65;
  margin-bottom: 21px;
}

.jd-hero__title {
  font-size: var(--jd-fs-hero);
  font-weight: var(--jd-fw-head);
  letter-spacing: var(--jd-ls-head);
  line-height: 1.55;
  margin-bottom: 30px;
  font-feature-settings: "palt";
}
.jd-hero__line { display: block; }

.jd-hero__lead {
  font-size: var(--jd-fs-lead);
  color: var(--jd-text-sub);
  margin-bottom: 42px;
}

.jd-hero__actions { display: flex; flex-wrap: wrap; gap: 15px; }

/* 画像は右寄せ。画面外へはみ出さないので見切れない */
.jd-hero__media {
  width: clamp(400px, 66vw, 1200px);
  margin-left: auto;
}
.jd-hero__media-inner {
  overflow: hidden;
  border-radius: var(--jd-radius);
  aspect-ratio: 3 / 2;
}
.jd-hero__media img {
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  object-fit: cover;
  object-position: 62% center; /* 被写体を右寄りに残し、左はコピーと重ねる */
  border-radius: 0;
}

/* 1680px 未満では右端まで抜く（参照サイトと同条件） */
@media (min-width: 841px) and (max-width: 1679px) {
  .jd-hero__media-inner {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
  }
}

/* 画像が低くなる中間幅では、コピーがはみ出さないよう余白を詰める */
@media (min-width: 841px) and (max-width: 1180px) {
  .jd-hero__copy {
    width: min(480px, 56%);
    padding-top: clamp(28px, 4vw, 56px);
  }
  .jd-hero__lead { margin-bottom: 24px; }
}

/* ---- 登場アニメ（参照サイトの anime.js と同じ動きを CSS で再現） ----
   サブコピー: 左から 15px / 1.35s
   見出し各行: 同じ動きを 0.45s ずらして
   画像: 0.2s 後にフェードイン、中でわずかにズームアウト */
.jd-hero__catch,
.jd-hero__line,
.jd-hero__lead,
.jd-hero__actions {
  opacity: 0;
  transform: translateX(15px);
  animation: jd-hero-copy-in 1.35s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}
.jd-hero__catch { animation-delay: .45s; }
.jd-hero__line:nth-child(1) { animation-delay: .8s; }
.jd-hero__line:nth-child(2) { animation-delay: 1.25s; }
.jd-hero__lead { animation-delay: 1.55s; animation-duration: 1.2s; }
.jd-hero__actions { animation-delay: 1.8s; animation-duration: 1.1s; }

.jd-hero__media {
  opacity: 0;
  animation: jd-hero-fade 1s ease-in .2s forwards;
}
.jd-hero__media img {
  animation: jd-hero-zoom 9s linear .2s forwards;
  transform: scale(1.08);
}

@keyframes jd-hero-copy-in {
  from { opacity: 0; transform: translateX(15px); }
  to   { opacity: 1; transform: translateX(0); }
}
@keyframes jd-hero-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes jd-hero-zoom {
  from { transform: scale(1.08); }
  to   { transform: scale(1); }
}

/* --------------------------------------------------------------------------
   お知らせ
   -------------------------------------------------------------------------- */
.jd-tabs { display: flex; gap: 9px; margin-bottom: 15px; flex-wrap: wrap; }
.jd-tab {
  padding: 6px 21px;
  border-radius: var(--jd-radius-pill);  /* タグ類だけピル。参照と同じ */
  border: 1px solid var(--jd-border);
  background: transparent;
  color: var(--jd-text-sub);
  font-family: inherit;
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-body);
  line-height: 1.65;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  box-shadow: none;
  margin: 0;
}
.jd-tab[aria-selected="true"] {
  background: var(--jd-main);
  border-color: var(--jd-main);
  color: #fff;
}

.jd-newslist li { border-bottom: 1px solid var(--jd-border); }
.jd-newslist a {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 24px 3px;
}
.jd-newslist a:hover { color: var(--jd-main); }
.jd-newslist__date {
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: .06em;
  color: var(--jd-text-faint);
  flex-shrink: 0;
}
.jd-newslist__cat {
  font-size: var(--jd-fs-min);
  font-weight: 300;
  color: var(--jd-main);
  border: 1px solid var(--jd-main);
  border-radius: var(--jd-radius-pill);
  padding: 3px 18px;
  line-height: 1.65;
  flex-shrink: 0;
}
[hidden] { display: none !important; }

/* --------------------------------------------------------------------------
   強み　2×2。カードで囲わず、余白だけで区切る
   -------------------------------------------------------------------------- */
.jd-grid2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(48px, 6vw, 90px) clamp(42px, 5vw, 72px);
}

/* アイコンは塗りの丸バッジをやめ、線画だけを主色で置く。
   参照サイトの「面を作らない」方針に合わせた */
.jd-point__icon {
  color: var(--jd-main);
  margin-bottom: 21px;
}
.jd-point__icon svg { width: 42px; height: 42px; display: block; }

.jd-point__label {
  display: block;
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  line-height: 1.65;
  margin-bottom: 6px;
  text-transform: uppercase;
}
.jd-point__title {
  font-size: var(--jd-fs-h3);
  letter-spacing: var(--jd-ls-label);
  margin-bottom: 18px;
}
.jd-point__body { color: var(--jd-text-sub); }
.jd-point__foot { margin-top: 21px; }

/* --------------------------------------------------------------------------
   サービス　左右交互
   参照サイトは各項目に番号ではなく英字サブタイトルを置いている
   -------------------------------------------------------------------------- */
.jd-zig { display: grid; gap: clamp(72px, 9vw, 120px); }

.jd-zig__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
  gap: clamp(42px, 5.4vw, 72px);
}
.jd-zig__row:nth-child(even) .jd-zig__media { order: -1; }

.jd-zig__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--jd-radius);
}

/* 以前ここに置いていた小さく太い「01」は廃止した */
.jd-zig__en {
  display: block;
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  line-height: 1.65;
  margin-bottom: 3px;
}
.jd-zig__title {
  font-size: var(--jd-fs-h3);
  letter-spacing: var(--jd-ls-label);
  margin-bottom: 21px;
}
.jd-zig__body { color: var(--jd-text-sub); }
.jd-zig__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin: 24px 0 30px;
}
.jd-zig__tags li {
  font-size: var(--jd-fs-min);
  font-weight: 300;
  color: var(--jd-text-sub);
  border: 1px solid var(--jd-border);
  border-radius: var(--jd-radius-pill);
  padding: 3px 18px;
  line-height: 1.65;
}

/* --------------------------------------------------------------------------
   ご相談の流れ
   参照サイトの番号は 48px / weight 100。大きくて極細なのが要
   -------------------------------------------------------------------------- */
.jd-steps { max-width: 760px; }
.jd-steps__item {
  display: grid;
  grid-template-columns: clamp(60px, 7vw, 90px) 1fr;
  gap: clamp(21px, 3vw, 42px);
  padding-bottom: clamp(42px, 4.5vw, 60px);
}
.jd-steps__item:last-child { padding-bottom: 0; }

.jd-steps__num {
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-num);
  font-weight: var(--jd-fw-num);
  letter-spacing: .04em;
  line-height: 1;
  color: var(--jd-main);
}
.jd-steps__title {
  font-size: var(--jd-fs-h3);
  letter-spacing: var(--jd-ls-label);
  margin-bottom: 12px;
}
.jd-steps__body { color: var(--jd-text-sub); }

/* --------------------------------------------------------------------------
   代表挨拶
   -------------------------------------------------------------------------- */
.jd-greet {
  display: grid;
  grid-template-columns: clamp(240px, 30%, 340px) 1fr;
  gap: clamp(42px, 6vw, 90px);
  align-items: start;
}
.jd-greet__photo img {
  width: 100%;
  aspect-ratio: 3 / 4;
  object-fit: cover;
  border-radius: var(--jd-radius);
}
.jd-greet__caption {
  margin-top: 15px;
  color: var(--jd-text-sub);
  letter-spacing: var(--jd-ls-label);
}
.jd-greet__caption small {
  display: block;
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  color: var(--jd-text-faint);
}
.jd-greet__lead {
  font-size: var(--jd-fs-h2);
  font-family: var(--jd-font-ja);
  font-weight: var(--jd-fw-head);
  letter-spacing: var(--jd-ls-head);
  line-height: var(--jd-lh-head);
  margin-bottom: clamp(30px, 3.6vw, 48px);
}
.jd-greet__body { color: var(--jd-text-sub); }
.jd-greet__sign {
  margin-top: 30px;
  letter-spacing: var(--jd-ls-label);
}
.jd-greet__sign strong { font-weight: 300; font-size: var(--jd-fs-h3); margin-left: 15px; }

/* --------------------------------------------------------------------------
   実績
   -------------------------------------------------------------------------- */
.jd-works { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(24px, 2.4vw, 42px); }
.jd-works__thumb {
  aspect-ratio: 4 / 3;
  background: var(--jd-tint-deep);
  border-radius: var(--jd-radius);
  display: grid;
  place-items: center;
  color: var(--jd-text-faint);
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
}
.jd-works__cat {
  margin-top: 18px;
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  line-height: 1.65;
}
.jd-works__title {
  margin-top: 6px;
  font-size: var(--jd-fs-min);
  letter-spacing: var(--jd-ls-label);
}
.jd-works__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--jd-radius);
}
.jd-works__note { margin-top: clamp(42px, 4.5vw, 60px); color: var(--jd-text-sub); }

/* --------------------------------------------------------------------------
   料金　縦罫線だけの3カラム
   -------------------------------------------------------------------------- */
.jd-plans { display: grid; grid-template-columns: repeat(3, 1fr); }
.jd-plans__item { padding: 0 clamp(21px, 2.4vw, 36px); border-left: 1px solid var(--jd-border); }
.jd-plans__item:last-child { border-right: 1px solid var(--jd-border); }

.jd-plans__label {
  display: block;
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  line-height: 1.65;
  margin-bottom: 9px;
}
.jd-plans__name {
  font-size: var(--jd-fs-h3);
  letter-spacing: var(--jd-ls-label);
  margin-bottom: 21px;
}
.jd-plans__fee {
  font-size: var(--jd-fs-num);
  font-weight: var(--jd-fw-num);
  line-height: 1.2;
  letter-spacing: .02em;
}
.jd-plans__fee small { font-size: var(--jd-fs-lead); font-weight: 300; margin-left: 4px; }
.jd-plans__note {
  color: var(--jd-text-faint);
  margin-top: 12px;
  padding-bottom: 21px;
  border-bottom: 1px solid var(--jd-border);
  margin-bottom: 21px;
  line-height: 1.75;
}
.jd-plans__list { color: var(--jd-text-sub); }
.jd-plans__list li { padding-left: 18px; position: relative; margin-bottom: 9px; }
.jd-plans__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .9em;
  width: 7px;
  height: 1px;
  background: var(--jd-main);
}

/* --------------------------------------------------------------------------
   よくある質問
   -------------------------------------------------------------------------- */
.jd-faq { max-width: 860px; border-top: 1px solid var(--jd-border); }
.jd-faq__item { border-bottom: 1px solid var(--jd-border); }
.jd-faq__q {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 24px 3px;
  letter-spacing: var(--jd-ls-label);
  cursor: pointer;
  list-style: none;
}
.jd-faq__q::-webkit-details-marker { display: none; }
.jd-faq__q::before {
  content: "Q";
  font-family: var(--jd-font-en);
  font-weight: 300;
  color: var(--jd-main);
  flex-shrink: 0;
}
.jd-faq__q::after {
  content: "";
  margin-left: auto;
  flex-shrink: 0;
  width: 13px;
  height: 13px;
  border-right: 1px solid var(--jd-text-faint);
  border-bottom: 1px solid var(--jd-text-faint);
  transform: translateY(-4px) rotate(45deg);
  transition: transform .3s;
}
.jd-faq__item[open] .jd-faq__q::after { transform: translateY(2px) rotate(-135deg); }
.jd-faq__a {
  display: flex;
  gap: 18px;
  padding: 0 3px 27px;
  color: var(--jd-text-sub);
}
.jd-faq__a::before {
  content: "A";
  font-family: var(--jd-font-en);
  font-weight: 300;
  color: var(--jd-text-faint);
  flex-shrink: 0;
}

/* --------------------------------------------------------------------------
   会社概要
   -------------------------------------------------------------------------- */
.jd-company {
  display: grid;
  grid-template-columns: 1fr clamp(300px, 34%, 420px);
  gap: clamp(42px, 6vw, 90px);
  align-items: start;
}
.jd-dl { border-top: 1px solid var(--jd-border); }
.jd-dl__row {
  display: grid;
  grid-template-columns: 150px 1fr;
  gap: 24px;
  padding: 18px 3px;
  border-bottom: 1px solid var(--jd-border);
}
.jd-dl__row dt { color: var(--jd-main); letter-spacing: var(--jd-ls-label); }
.jd-dl__row dd { margin: 0; }
.jd-company__photo img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border-radius: var(--jd-radius);
}

/* --------------------------------------------------------------------------
   お問い合わせ　電話番号は置かず、フォーム導線のみ
   -------------------------------------------------------------------------- */
.jd-contact {
  background: #fff;
  border-radius: var(--jd-radius);
  padding: clamp(42px, 6vw, 90px) clamp(24px, 4.5vw, 60px);
  text-align: center;
}
.jd-contact__title {
  font-size: var(--jd-fs-h3);
  letter-spacing: var(--jd-ls-head);
  margin-bottom: 18px;
}
.jd-contact__lead { color: var(--jd-text-sub); margin-bottom: clamp(30px, 3.6vw, 48px); }
.jd-contact__note { margin-top: 21px; color: var(--jd-text-faint); }

.jd-gifts {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(24px, 2.4vw, 42px);
  margin-top: clamp(42px, 4.5vw, 60px);
}
.jd-gift__no {
  display: block;
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  line-height: 1.65;
  margin-bottom: 6px;
}
.jd-gift__name {
  font-size: var(--jd-fs-min);
  letter-spacing: var(--jd-ls-label);
  margin-bottom: 9px;
  padding-bottom: 9px;
  border-bottom: 1px solid var(--jd-border);
}
.jd-gift__body { color: var(--jd-text-sub); margin: 0; }

/* --------------------------------------------------------------------------
   フッター
   -------------------------------------------------------------------------- */
.jd-footer { background: var(--jd-tint); padding: clamp(60px, 7vw, 90px) 0 30px; }
.jd-footer__inner {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1fr;
  gap: clamp(30px, 4.5vw, 60px);
}
.jd-footer__about { color: var(--jd-text-sub); margin-top: 18px; }
.jd-footer__col-title {
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-main);
  line-height: 1.65;
  margin-bottom: 18px;
  text-transform: uppercase;
}
.jd-footer__col li { margin-bottom: 12px; }
.jd-footer__col a:hover { color: var(--jd-main); }
.jd-footer__bottom {
  margin-top: clamp(42px, 4.5vw, 60px);
  padding-top: 24px;
  border-top: 1px solid rgba(38, 48, 45, .1);
  display: flex;
  justify-content: space-between;
  gap: 15px;
  flex-wrap: wrap;
  color: var(--jd-text-faint);
}

/* --------------------------------------------------------------------------
   スマホ固定バー　電話ボタンは置かないので1本
   -------------------------------------------------------------------------- */
.jd-spbar { display: none; }

/* --------------------------------------------------------------------------
   スクロール表示
   -------------------------------------------------------------------------- */
.jd-reveal {
  opacity: 0;
  transform: translateY(15px);
  transition: opacity .9s ease, transform .9s ease;
}
.jd-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .jd-reveal { opacity: 1; transform: none; transition: none; }
  .jd-hero__catch,
  .jd-hero__line,
  .jd-hero__lead,
  .jd-hero__actions,
  .jd-hero__media,
  .jd-hero__media img {
    animation: none;
    opacity: 1;
    transform: none;
  }
}

/* ==========================================================================
   レスポンシブ
   16px 下限を守るため、文字を縮めず要素を落として収める
   ========================================================================== */
@media (max-width: 1180px) {
  /* 横幅が足りなくなるので、まず社名のほうを落とす */
  .jd-logo__ja { display: none; }
}

@media (max-width: 1000px) {
  /* ヘッダーはロゴとハンバーガーだけにする。
     CTA は下部固定バーとドロワー内に置くのでヘッダーには不要 */
  .jd-header__cta { display: none; }
  .jd-burger { display: block; margin-left: auto; }

  /* SP は英字ロゴを隠し、社名をロゴとして見せる */
  .jd-logo__en { display: none; }
  .jd-logo__ja {
    display: inline;
    font-size: 18px;
    color: var(--jd-text);
    letter-spacing: .08em;
  }

  .jd-nav { display: none; }

  /* ドロワー。ヘッダーの下から画面いっぱいに開く。
     .jd-header に backdrop-filter がかかっているため、このヘッダー自身が
     position:fixed の基準（包含ブロック）になってしまう。fixed + bottom:0 だと
     ヘッダーの高さぶんしか開かないので、absolute にして高さを明示する */
  .jd-header.is-open .jd-nav {
    display: block;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    height: calc(100vh - var(--jd-header-h));
    height: calc(100dvh - var(--jd-header-h));  /* iOS のアドレスバー対策 */
    background: #fff;
    /* 下の余白は固定バー（66px）に隠れない量を取る */
    padding: 12px var(--jd-gutter) 96px;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .jd-header.is-open .jd-nav__list { flex-direction: column; gap: 0; }
  .jd-header.is-open .jd-nav__list a {
    display: block;
    padding: 21px 3px;
    border-bottom: 1px solid var(--jd-border);
  }
  .jd-header.is-open .jd-nav__cta {
    display: flex;
    width: 100%;
    margin-top: 30px;
  }
}

/* 参照サイトのブレークポイントに合わせた（840px / 540px） */
@media (max-width: 840px) {
  /* SP は写真が先、コピーが後。重ねない。写真は画面幅いっぱいに抜く */
  .jd-hero { margin-bottom: 36px; }
  .jd-hero__copy {
    position: static;
    width: 100%;
    padding: 30px var(--jd-gutter) 0;
    pointer-events: auto;
  }
  .jd-hero__copy::before { display: none; }
  .jd-hero__media {
    width: 100%;
    order: -1;
  }
  .jd-hero__media-inner { border-radius: 0; }
  .jd-hero__media img { object-position: center; }
  .jd-hero__actions .jd-btn { flex: 1 1 100%; }

  /* 並びを「写真 → コピー」にするため、flex に切り替える */
  .jd-hero { display: flex; flex-direction: column; }

  .jd-grid2 { grid-template-columns: 1fr; }

  .jd-zig__row { grid-template-columns: 1fr; }
  .jd-zig__row:nth-child(even) .jd-zig__media { order: 0; }

  .jd-greet { grid-template-columns: 1fr; }
  .jd-greet__photo { max-width: 260px; }

  .jd-works { grid-template-columns: 1fr 1fr; }

  .jd-plans { grid-template-columns: 1fr; }
  .jd-plans__item {
    padding: 27px 0;
    border-left: none;
    border-top: 1px solid var(--jd-border);
  }
  .jd-plans__item:last-child { border-right: none; border-bottom: 1px solid var(--jd-border); }

  .jd-company { grid-template-columns: 1fr; }
  .jd-dl__row { grid-template-columns: 1fr; gap: 3px; }

  .jd-gifts { grid-template-columns: 1fr; }
  .jd-footer__inner { grid-template-columns: 1fr 1fr; }

  .jd-newslist a { flex-wrap: wrap; gap: 6px 18px; }

  /* スマホ下部固定バー。電話を載せないので CTA 1本 */
  body { padding-bottom: 66px; }
  .jd-spbar { display: block; position: fixed; inset: auto 0 0 0; z-index: 200; }
  .jd-spbar a {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    height: 66px;
    background: var(--jd-main);
    color: #fff;
    font-size: var(--jd-fs-min);
    font-weight: var(--jd-fw-btn);
    letter-spacing: var(--jd-ls-label);
  }
}

@media (max-width: 540px) {
  .jd-works { grid-template-columns: 1fr; }
  .jd-footer__inner { grid-template-columns: 1fr; }
  .jd-steps__item { grid-template-columns: 1fr; gap: 9px; }
}

/* ==========================================================================
   SWELL 上書き（ヘッダー・フッター・トップの枠）
   ========================================================================== */

/* トップはコンテナを外し、各 .jd-container に任せる */
body.home {
  overflow-x: hidden;
  --article_size: 100%;
  --container_size: 100%;
}
body.home #content,
body.home #content.l-container,
body.home #content.l-content,
#content.jd-content,
body.home .l-mainContent__inner,
.jd-main,
.jd-main .l-mainContent__inner {
  max-width: none !important;
  width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: visible !important;
}
body.home #content {
  padding-top: 0 !important;
}
body.home .post_content,
.jd-main .post_content {
  width: 100%;
  max-width: none;
  padding: 0;
  margin: 0;
}
body.home .post_content > *,
.jd-main .post_content:not(.jd-page__body) > *,
body.home .wp-block-html,
.jd-main .wp-block-html,
body.home .wp-block-shortcode,
.jd-main .wp-block-shortcode {
  margin-top: 0;
  margin-bottom: 0;
  max-width: none;
}

body.home .p-breadcrumb,
body.home .c-pageTitle,
body.home .p-topTitle,
body.home .l-header__bar,
body.home .p-infoBar,
.c-infoBar,
.p-breadcrumb,
.c-pageTitle,
.p-topTitle,
.l-topTitleArea {
  display: none !important;
}

/* ヘッダーをモックに合わせる */
.l-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255, 255, 255, .94);
  backdrop-filter: blur(8px);
  box-shadow: none !important;
  border: none !important;
}
.l-header__inner {
  height: var(--jd-header-h);
  display: flex;
  align-items: center;
  gap: 28px;
  max-width: none;
  width: 100%;
  padding-inline: clamp(21px, 3vw, 45px);
}
.l-header__logo {
  display: flex;
  align-items: baseline;
  gap: 9px;
  flex-shrink: 0;
  margin: 0;
  padding: 0;
}
.c-headLogo {
  margin: 0;
  font-family: var(--jd-font-en);
  font-size: 24px;
  font-weight: 300;
  letter-spacing: .1em;
  line-height: 1;
}
.c-headLogo a,
.c-headLogo__link {
  color: inherit;
  text-decoration: none;
}
.c-headLogo.-img .c-headLogo__img {
  max-height: 28px;
  width: auto;
}
.jd-logo__ja {
  font-family: var(--jd-font-ja);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  color: var(--jd-text-sub);
  letter-spacing: var(--jd-ls-label);
  white-space: nowrap;
}
.c-catchphrase { display: none; }

.l-header__gnav { margin-left: auto; }
.c-gnav {
  display: flex;
  gap: 27px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.c-gnav > li > a {
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-body);
  white-space: nowrap;
  padding: 0 !important;
}
.c-gnav > li > a:hover { color: var(--jd-main); }
.c-gnav > li > a::after { display: none !important; }

.jd-header__cta { margin-left: 12px; flex-shrink: 0; }

.l-header__customBtn { display: none !important; }

/* ハンバーガー。SWELL の開閉は html[data-spmenu] */
.jd-burger.c-iconBtn,
.jd-burger {
  display: none;
  position: relative;
  width: 45px;
  height: 45px;
  padding: 0;
  border: 1px solid var(--jd-border);
  border-radius: var(--jd-radius);
  background: transparent !important;
  box-shadow: none !important;
  cursor: pointer;
}
.jd-burger span {
  position: absolute;
  left: 50%;
  width: 20px;
  height: 1px;
  background: var(--jd-text);
  transform: translateX(-50%);
  transition: top .3s ease, transform .3s ease, opacity .2s ease;
}
.jd-burger span:nth-child(1) { top: 15px; }
.jd-burger span:nth-child(2) { top: 22px; }
.jd-burger span:nth-child(3) { top: 29px; }

html[data-spmenu="opened"] .jd-burger span:nth-child(1) {
  top: 22px;
  transform: translateX(-50%) rotate(45deg);
}
html[data-spmenu="opened"] .jd-burger span:nth-child(2) { opacity: 0; }
html[data-spmenu="opened"] .jd-burger span:nth-child(3) {
  top: 22px;
  transform: translateX(-50%) rotate(-45deg);
}

@media (max-width: 1180px) {
  .jd-logo__ja { display: none; }
}

@media (max-width: 1000px) {
  .jd-header__cta { display: none; }
  .l-header__menuBtn {
    display: block !important;
    margin-left: auto;
  }
  .jd-burger { display: block; }
  .c-headLogo.-txt,
  .c-headLogo.-img { display: none; }
  .jd-logo__ja {
    display: inline;
    font-size: 18px;
    color: var(--jd-text);
    letter-spacing: .08em;
  }
  .l-header__gnav { display: none !important; }
}

/* SPメニュー内の CTA */
.p-spMenu {
  font-family: var(--jd-font-ja);
  font-weight: 300;
  letter-spacing: var(--jd-ls-body);
}
.p-spMenu__nav a {
  font-size: var(--jd-fs-min);
  font-weight: 300;
}

/* フッター（SWELL の枠を淡色に） */
.l-footer {
  background: var(--jd-tint);
  padding: 0;
  border: none;
}
.jd-footer {
  background: var(--jd-tint);
  padding: clamp(60px, 7vw, 90px) 0 30px;
  color: var(--jd-text);
}
.l-footer .copyright {
  color: var(--jd-text-faint);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-body);
}

/* SWELL の SP 固定フッターは使わず、.jd-spbar 1本にする */
#fix_bottom_menu { display: none !important; }

@media (max-width: 840px) {
  .p-fixBtnWrap { bottom: 78px; }
}

/* エディタ内でもセクションが読めるように */
.editor-styles-wrapper {
  font-family: var(--jd-font-ja);
  font-size: var(--jd-fs-body);
  font-weight: var(--jd-fw-body);
  color: var(--jd-text);
}

/* ==========================================================================
   SWELL 打ち消し（カスタマイザーの見出し装飾・記事幅 900px が勝っていた）
   swell_custom-inline-css の .post_content h2/h3 より後・より強く当てる
   ========================================================================== */

body,
body #body_wrap,
.jd-main {
  font-family: var(--jd-font-ja) !important;
  font-size: var(--jd-fs-body) !important;
  font-weight: var(--jd-fw-body) !important;
  color: var(--jd-text) !important;
  background: var(--jd-bg) !important;
  letter-spacing: var(--jd-ls-body);
}

body.home #content,
body.home #content.l-container,
body.home #content.l-content,
#content.jd-content,
body.home .l-mainContent,
body.home .l-article,
.jd-main,
.jd-main.post_content,
body.home .post_content {
  max-width: none !important;
  width: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  float: none !important;
}

body.home .l-fixHeader {
  display: none !important;
}

.l-header__inner {
  padding-block: 0 !important;
  height: var(--jd-header-h) !important;
}
.l-header__logo {
  order: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  text-align: left !important;
}
.c-headLogo {
  font-size: 24px !important;
  font-weight: 300 !important;
  letter-spacing: .1em !important;
}

/* 見出し：SWELL の塗り・白文字・上下線・グラデ下線を全部消す */
.jd-main .post_content h1,
.jd-main .post_content h2,
.jd-main .post_content h3,
.jd-main .post_content h4,
.jd-hero h1,
.jd-hero h2,
.jd-section h1,
.jd-section h2,
.jd-section h3,
.jd-section h4,
.jd-contact h3 {
  background: none !important;
  background-image: none !important;
  color: inherit !important;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
  position: relative;
  font-weight: var(--jd-fw-head) !important;
  line-height: var(--jd-lh-head) !important;
}
.jd-main .post_content h1::before,
.jd-main .post_content h1::after,
.jd-main .post_content h2::before,
.jd-main .post_content h2::after,
.jd-main .post_content h3::before,
.jd-main .post_content h3::after,
.jd-main .post_content h4::before,
.jd-main .post_content h4::after,
.jd-section h2::before,
.jd-section h2::after,
.jd-section h3::before,
.jd-section h3::after,
.jd-section h4::before,
.jd-section h4::after,
.jd-hero h1::before,
.jd-hero h1::after {
  content: none !important;
  display: none !important;
  border: none !important;
  background: none !important;
}

.jd-head__en { color: var(--jd-text) !important; }
.jd-hero__title { color: var(--jd-text) !important; }
.jd-head__en {
  font-size: var(--jd-fs-h2) !important;
  font-weight: var(--jd-fw-head) !important;
  letter-spacing: var(--jd-ls-head) !important;
}
.jd-hero__title {
  font-size: var(--jd-fs-hero) !important;
  font-weight: var(--jd-fw-head) !important;
  letter-spacing: var(--jd-ls-head) !important;
}
.jd-point__title,
.jd-zig__title,
.jd-steps__title,
.jd-plans__name,
.jd-contact__title,
.jd-greet__lead,
.jd-works__title {
  color: var(--jd-text) !important;
}

.jd-main .post_content:not(.jd-page__body) ul,
.jd-main .post_content:not(.jd-page__body) ol,
.jd-section ul,
.jd-section ol,
.jd-footer ul {
  list-style: none !important;
  padding-left: 0 !important;
  margin-left: 0 !important;
}
.jd-newslist li::before,
.jd-zig__tags li::before,
.jd-footer li::before,
.jd-gifts li::before {
  content: none !important;
  display: none !important;
}

.jd-main .post_content img,
.jd-section img {
  box-shadow: none !important;
  border-radius: var(--jd-radius);
}
.jd-hero img {
  box-shadow: none !important;
  border-radius: 0 !important;
}

#sp_menu,
.p-spMenu,
.l-fixHeader {
  display: none !important;
}

.jd-faq__q {
  background: none !important;
  color: inherit !important;
  font-weight: var(--jd-fw-head) !important;
}

/* SWELL の a { color } が CTA の白文字を黒に上書きするのを防ぐ */
.jd-btn--cta,
a.jd-btn--cta,
.jd-hero a.jd-btn--cta,
.jd-header a.jd-btn--cta,
.jd-section a.jd-btn--cta,
.jd-nav a.jd-btn--cta,
.jd-spbar a,
.jd-btn--cta:hover,
a.jd-btn--cta:hover,
.jd-btn--quiet:hover,
a.jd-btn--quiet:hover,
.jd-tab[aria-selected="true"] {
  color: #fff !important;
}

a.jd-btn--quiet {
  color: var(--jd-main) !important;
}

/* モックの文字色・余白を SWELL より優先する */
.jd-more,
.jd-head__sub,
.jd-hero__catch,
.jd-point__label,
.jd-point__icon,
.jd-zig__en,
.jd-steps__num,
.jd-plans__label,
.jd-works__cat,
.jd-gift__no,
.jd-newslist__cat,
.jd-dl__row dt,
.jd-footer__col-title,
.jd-faq__q::before {
  color: var(--jd-main) !important;
}

.jd-hero__lead,
.jd-head__lead,
.jd-point__body,
.jd-zig__body,
.jd-zig__tags li,
.jd-steps__body,
.jd-greet__caption,
.jd-greet__body,
.jd-plans__list,
.jd-faq__a,
.jd-contact__lead,
.jd-gift__body,
.jd-footer__about,
.jd-works__note,
.jd-note,
.jd-tab {
  color: var(--jd-text-sub) !important;
}

.jd-tab[aria-selected="true"] {
  color: #fff !important;
  background: var(--jd-main) !important;
  border-color: var(--jd-main) !important;
}

.jd-newslist__date,
.jd-plans__note,
.jd-contact__note,
.jd-faq__a::before,
.jd-footer__bottom,
.jd-greet__caption small {
  color: var(--jd-text-faint) !important;
}

.jd-hero__title { margin-bottom: 30px !important; }
.jd-hero__catch { margin-bottom: 21px !important; }
.jd-hero__lead { margin-bottom: 42px !important; }
.jd-head { margin-bottom: var(--jd-head-mb) !important; }
.jd-head__sub { margin-bottom: 9px !important; }
.jd-head__lead { margin-top: 24px !important; }
.jd-point__title { margin-bottom: 18px !important; }
.jd-zig__title { margin-bottom: 21px !important; }
.jd-steps__title { margin-bottom: 12px !important; }
.jd-plans__name { margin-bottom: 21px !important; }
.jd-contact__title { margin-bottom: 18px !important; }
.jd-contact__lead { margin-bottom: clamp(30px, 3.6vw, 48px) !important; }
.jd-greet__lead { margin-bottom: clamp(30px, 3.6vw, 48px) !important; }
.jd-newslist a:hover { color: var(--jd-main) !important; }
.jd-faq__q { padding: 24px 3px !important; }
.jd-dl__row { padding: 18px 3px !important; }
.jd-section { padding-block: var(--jd-section-y) !important; }
.jd-container { padding-inline: var(--jd-gutter) !important; }

/* ==========================================================================
   下層ページ（トップと同じトークン・余白・見出し）
   ========================================================================== */
.jd-pagehead {
  background: var(--jd-tint);
  padding: clamp(42px, 6vw, 90px) 0 clamp(36px, 5vw, 72px);
}
.jd-pagehead .jd-head__sub { margin-bottom: 9px; }
.jd-pagehead .jd-head__en,
.jd-pagehead__title {
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-h2);
  font-weight: var(--jd-fw-head);
  letter-spacing: var(--jd-ls-head);
  line-height: var(--jd-lh-head);
  margin: 0;
  color: var(--jd-text);
}
.jd-pagehead__title {
  font-family: var(--jd-font-ja);
  letter-spacing: var(--jd-ls-label);
  max-width: 860px;
}
.jd-pagehead__meta {
  margin: 18px 0 0;
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: .06em;
  color: var(--jd-text-faint);
}

.jd-bc {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 28px;
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-body);
  color: var(--jd-text-faint);
}
.jd-bc a:hover { color: var(--jd-main); }
.jd-bc__sep { opacity: .5; }

.jd-page {
  padding-block: var(--jd-section-y);
}
.jd-page__narrow { max-width: 860px; }
.jd-page__thumb {
  margin: 0 0 clamp(30px, 4vw, 48px);
}
.jd-page__thumb img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: var(--jd-radius);
}
.jd-page__back { margin-top: clamp(42px, 5vw, 72px); }

.jd-page__body {
  font-size: var(--jd-fs-body);
  font-weight: var(--jd-fw-body);
  line-height: var(--jd-lh-body);
  letter-spacing: var(--jd-ls-body);
  color: var(--jd-text);
}
.jd-main .jd-page__body p,
.jd-page__body p {
  margin: 0 0 1.6em !important;
  color: var(--jd-text-sub);
}
.jd-main .jd-page__body p:last-child,
.jd-page__body p:last-child { margin-bottom: 0 !important; }
.jd-page__body h2,
.jd-page__body h3,
.jd-page__body h4,
.jd-page .post_content h2,
.jd-page .post_content h3,
.jd-page .post_content h4 {
  background: none !important;
  background-image: none !important;
  color: var(--jd-text) !important;
  padding: 0 !important;
  border: none !important;
  box-shadow: none !important;
  font-weight: var(--jd-fw-head) !important;
  line-height: var(--jd-lh-head) !important;
  letter-spacing: var(--jd-ls-label);
  margin: 2.4em 0 0.8em !important;
}
.jd-page__body h2,
.jd-page .post_content h2 {
  font-size: var(--jd-fs-h3) !important;
}
.jd-page__body h2:first-child,
.jd-page__body h3:first-child,
.jd-page .post_content h2:first-child {
  margin-top: 0 !important;
}
.jd-page__body h2::before,
.jd-page__body h2::after,
.jd-page__body h3::before,
.jd-page__body h3::after,
.jd-page .post_content h2::before,
.jd-page .post_content h2::after,
.jd-page .post_content h3::before,
.jd-page .post_content h3::after {
  content: none !important;
  display: none !important;
}

/* ブログ記事：見出しの階層が本文と区別できるようにする（太字は使わない） */
.jd-main .jd-article .post_content h2,
.jd-article .jd-page__body h2 {
  font-size: clamp(22px, 2.4vw, 28px) !important;
  font-weight: 300 !important;
  color: var(--jd-text) !important;
  letter-spacing: var(--jd-ls-label);
  line-height: 1.5 !important;
  margin: 2.8em 0 1em !important;
  padding: 2px 0 14px 18px !important;
  border: none !important;
  border-bottom: 1px solid var(--jd-border) !important;
  background: none !important;
  background-image: none !important;
  box-shadow: none !important;
  position: relative;
}
.jd-main .jd-article .post_content h3,
.jd-article .jd-page__body h3 {
  font-size: clamp(18px, 2vw, 21px) !important;
  font-weight: 300 !important;
  color: var(--jd-main) !important;
  letter-spacing: var(--jd-ls-label);
  line-height: 1.55 !important;
  margin: 2.2em 0 0.8em !important;
  padding: 0 0 0 14px !important;
  border: none !important;
  background: none !important;
  background-image: none !important;
  box-shadow: none !important;
  position: relative;
}
.jd-main .jd-article .post_content h4,
.jd-article .jd-page__body h4 {
  font-size: 17px !important;
  font-weight: 300 !important;
  color: var(--jd-text) !important;
  letter-spacing: var(--jd-ls-label);
  margin: 1.8em 0 0.6em !important;
  padding: 0 !important;
  border: none !important;
  background: none !important;
}
.jd-main .jd-article .post_content h2:first-child,
.jd-main .jd-article .post_content h3:first-child,
.jd-article .jd-page__body h2:first-child,
.jd-article .jd-page__body h3:first-child {
  margin-top: 0 !important;
}
.jd-main .jd-article .post_content h2::before,
.jd-article .jd-page__body h2::before {
  content: "" !important;
  display: block !important;
  position: absolute;
  left: 0;
  top: 0;
  bottom: 14px;
  width: 3px;
  background: var(--jd-main) !important;
  background-image: none !important;
  border: none !important;
  border-radius: var(--jd-radius);
}
.jd-main .jd-article .post_content h3::before,
.jd-article .jd-page__body h3::before {
  content: "" !important;
  display: block !important;
  position: absolute;
  left: 0;
  top: 0.15em;
  bottom: 0.15em;
  width: 2px;
  background: var(--jd-main) !important;
  background-image: none !important;
  border: none !important;
  border-radius: var(--jd-radius);
  opacity: .45;
}
.jd-main .jd-article .post_content h2::after,
.jd-main .jd-article .post_content h3::after,
.jd-main .jd-article .post_content h4::after,
.jd-article .jd-page__body h2::after,
.jd-article .jd-page__body h3::after,
.jd-article .jd-page__body h4::after {
  content: none !important;
  display: none !important;
}
.jd-page__body ul,
.jd-page__body ol {
  list-style: disc !important;
  padding-left: 1.4em !important;
  margin: 0 0 1.6em !important;
  color: var(--jd-text-sub);
}
.jd-page__body ol { list-style: decimal !important; }
.jd-page__body li { margin-bottom: 8px; }
.jd-page__body li::before { content: none !important; display: none !important; }
.jd-page__body a:not(.jd-btn):not(.jd-more) {
  color: var(--jd-main);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.jd-page__body table {
  width: 100%;
  border-collapse: collapse;
  margin: 0 0 1.6em;
}
.jd-page__body th,
.jd-page__body td {
  border-bottom: 1px solid var(--jd-border);
  padding: 12px 8px;
  text-align: left;
  font-weight: 300;
}

/* 問い合わせフォーム */
.jd-page__body--form .jd-contact__title { margin-bottom: 18px !important; }
.jd-page__body--form .jd-contact__lead { margin-bottom: clamp(30px, 3.6vw, 48px) !important; }
.jd-page__body--form,
.jd-page .wpcf7,
.jd-page .mw_wp_form,
.jd-page .swell-block {
  max-width: 760px;
}
.jd-page input[type="text"],
.jd-page input[type="email"],
.jd-page input[type="tel"],
.jd-page input[type="url"],
.jd-page input[type="number"],
.jd-page input[type="search"],
.jd-page select,
.jd-page textarea,
.jd-page .wpcf7-form-control,
.jd-page .mwform-text-field,
.jd-page .mwform-textarea-field {
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--jd-border);
  border-radius: var(--jd-radius);
  padding: 14px 16px;
  margin: 0 0 18px;
  font-family: var(--jd-font-ja);
  font-size: var(--jd-fs-body);
  font-weight: var(--jd-fw-body);
  letter-spacing: var(--jd-ls-body);
  color: var(--jd-text);
  background: #fff;
  box-shadow: none;
  appearance: none;
}
.jd-page textarea,
.jd-page .wpcf7-textarea {
  min-height: 160px;
  resize: vertical;
}
.jd-page label,
.jd-page .wpcf7-form p,
.jd-page .mw_wp_form th,
.jd-page .mw_wp_form td {
  font-weight: 300;
  letter-spacing: var(--jd-ls-body);
  color: var(--jd-text);
}
.jd-page input[type="submit"],
.jd-page .wpcf7-submit,
.jd-page .mwform-submit-button input {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  min-width: 240px;
  padding: 18px 39px;
  margin-top: 12px;
  border: none;
  border-radius: var(--jd-radius);
  background: var(--jd-main);
  color: #fff !important;
  font-family: var(--jd-font-ja);
  font-size: var(--jd-fs-min);
  font-weight: var(--jd-fw-btn);
  letter-spacing: var(--jd-ls-label);
  cursor: pointer;
  box-shadow: none;
}
.jd-page input[type="submit"]:hover,
.jd-page .wpcf7-submit:hover {
  background: var(--jd-main-dark);
  color: #fff !important;
}

.jd-pager {
  margin-top: clamp(42px, 5vw, 72px);
}
.jd-pager ul {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.jd-pager a,
.jd-pager span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 45px;
  height: 45px;
  padding: 0 12px;
  border: 1px solid var(--jd-border);
  border-radius: var(--jd-radius);
  font-family: var(--jd-font-en);
  font-size: var(--jd-fs-min);
  font-weight: 300;
  letter-spacing: var(--jd-ls-label);
  color: var(--jd-text-sub);
}
.jd-pager .current {
  background: var(--jd-main);
  border-color: var(--jd-main);
  color: #fff;
}
.jd-pager a:hover { color: var(--jd-main); }

.jd-search {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 30px 0;
}
.jd-search input[type="search"] {
  flex: 1 1 240px;
  margin: 0;
}
.jd-search .jd-btn { margin: 0; }

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

/* サービス（私たちにできること）：SWELL の h2/p/ul 余白をモック値で上書き */
#service.jd-section {
  padding-block: var(--jd-section-y) !important;
  padding-inline: 0 !important;
  margin: 0 !important;
}
#service .jd-container {
  padding-inline: var(--jd-gutter) !important;
}
#service .jd-head {
  margin: 0 0 var(--jd-head-mb) !important;
  padding: 0 !important;
}
#service .jd-head__sub {
  margin: 0 0 9px !important;
  padding: 0 !important;
}
#service .jd-head__en {
  margin: 0 0 0 -2px !important;
  padding: 0 !important;
}
#service p.jd-head__lead {
  margin: 24px 0 0 !important;
  padding: 0 !important;
}
#service .jd-zig {
  gap: clamp(72px, 9vw, 120px) !important;
  margin: 0 !important;
  padding: 0 !important;
}
#service .jd-zig__row {
  gap: clamp(42px, 5.4vw, 72px) !important;
  margin: 0 !important;
  padding: 0 !important;
}
#service .jd-zig__en {
  margin: 0 0 3px !important;
  padding: 0 !important;
}
#service h3.jd-zig__title {
  margin: 0 0 21px !important;
  padding: 0 !important;
}
#service p.jd-zig__body {
  margin: 0 !important;
  padding: 0 !important;
}
#service ul.jd-zig__tags {
  display: flex !important;
  margin: 24px 0 30px !important;
  padding: 0 !important;
  gap: 9px;
}
#service .jd-zig__tags li {
  margin: 0 !important;
  padding: 3px 18px !important;
}
#service .jd-more {
  margin: 0 !important;
  padding: 0 !important;
}
