.fm-submit input{
    font-size: 2.1rem;
}
.ajax-loader{
    display: none !important;
}
div.wpcf7-validation-errors, div.wpcf7-acceptance-missing {
    border: 2px solid #f7e700;
    text-align: center;
    padding: 10px;
    font-size: 130%;
    font-weight: bold;
}
div.wpcf7-response-output {
    margin: 1em 0.5em 1em;
}

div.wpcf7-mail-sent-ng, div.wpcf7-aborted {
    border: 2px solid #ff0000;
    text-align: center;
    padding: 10px;
    font-size: 130%;
    font-weight: bold;
}

div.wpcf7-mail-sent-ok {
    border: 2px solid #ff0000;
    text-align: center;
    padding: 10px;
    font-size: 130%;
    font-weight: bold;
}
.p_blog_ent_eye img {
    max-width: 100% !important;
    height: auto;
    min-width: auto;
}

/* ===== スマホの見栄え調整：無料相談バナー ===== */
.vc-main-ttl a{
  color:#d20000; text-decoration:none; display:inline-block;
}
@media (max-width: 767px){
  .vc-main-ttl{
    font-size: 1.05rem;      /* 少し小さく */
    line-height: 1.65;       /* 行間ゆったり */
    letter-spacing: .02em !important; /* 字間を詰める（上書き） */
    padding: 0 12px;         /* 端が詰まる場合の左右余白 */
    margin: .9rem 0;
    text-align: center;
  }
  .vc-main-ttl br{ display: none; }  /* 2行に分けたい場合は②を使う */
}


/* スマホ版で .pg-lead-text の横幅を調整 */
@media (max-width: 767px) {
  .pg-lead-text {
    max-width: 90%;   /* 横幅を画面の90%までに制限 */
    margin: 0 auto;   /* 中央寄せ */
    line-height: 1.7; /* 読みやすい行間 */
    letter-spacing: 0.03em; /* 文字間隔を詰めて見栄えを整える */
    font-size: 1rem;  /* 少し小さめに（必要に応じ調整） */
  }
}

/* 画面の横はみ出し完全封じ */
html, body {
  overflow-x: hidden;
}

/* 負のマージンが原因の横ブレを解消 */
.lc-about-ttl003 {
  /* margin: 1rem -0.2em 1rem;  ←削除 */
  margin: 1rem 0;         /* 横方向のマイナスをやめる */
  padding: 0 .2em;        /* 必要なら左右にほんの少し余白を付ける */
}

/* GoogleMapをレスポンシブ化（幅固定を無効化） */
.googlemap iframe {
  width: 100% !important;
  height: clamp(300px, 56.25vw, 450px);
  border: 0;
  display: block;
}

/* 料金表など横スクロール領域の慣性が画面に伝播しないようにする */
@media (max-width: 767px){
  #nishishinbashi-fees .pr-tbl.pr-tbl-ex,
  #shiodome-fees .pr-tbl.pr-tbl-ex {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;  /* ←スクロール連鎖を止める */
    touch-action: pan-y;             /* ←縦スクロール優先で横に流れにくく */
  }
  /* 最小幅は必要だが、はみ出しても親の中だけでスクロール */
  #nishishinbashi-fees .pr-tbl.pr-tbl-ex dl,
  #shiodome-fees .pr-tbl.pr-tbl-ex dl {
    min-width: 640px;
  }
}

/* もし“＋記号”の疑似要素が横にはみ出す場合の保険 */
#nishishinbashi-fees .pr-first .pr-first-col::after {
  max-width: 0;         /* レイアウト幅に寄与させない */
  pointer-events: none;
}

/* 横ブレの最終防波堤 */
html, body { overflow-x: hidden; overscroll-behavior-x: none; touch-action: pan-y; }

/* 画像/iframeのはみ出しを全域で抑止 */
img, iframe, video { max-width: 100%; height: auto; display: block; }

/* スワイパー周りが横に効かないように */
.lc-swipe, .swiper-container, .swiper-wrapper { width: 100%; overflow: hidden; }
.swiper-slide img { display:block; width:100%; height:auto; }

/* 行グリッドの負の余白が外へ出ないように（clip対応ブラウザはclip、他はhidden） */
.row { overflow-x: hidden; }
@supports (overflow: clip) {
  .row { overflow-x: clip; }
}

/* 料金表などの横スクロールは、画面に連鎖させない */
@media (max-width: 767px){
  #nishishinbashi-fees .pr-tbl.pr-tbl-ex,
  #shiodome-fees .pr-tbl.pr-tbl-ex {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;  /* 横スクロールの連鎖を停止 */
    touch-action: pan-y;             /* 縦優先 */
  }
  #nishishinbashi-fees .pr-tbl.pr-tbl-ex dl,
  #shiodome-fees .pr-tbl.pr-tbl-ex dl { min-width: 640px; }
}

/* “＋”疑似要素が外へ出て総幅を押し広げるのを抑止（位置だけ表示） */
#nishishinbashi-fees .pr-first .pr-first-col::after,
#fee-stack-again .pr-first::after {
  contain: layout paint;   /* 疑似要素がレイアウト幅に干渉しづらくなる */
  pointer-events: none;
}

/* 先日の負マージンを確実に無効化（横ブレ原因） */
.lc-about-ttl003 { margin: 1rem 0 !important; padding: 0 .2em; }

/* GoogleMapはリキッド化（もし width/height 属性が残っていても勝つように） */
.googlemap iframe {
  width: 100% !important;
  height: clamp(300px, 56.25vw, 450px);
  border: 0;
  display: block;
}

/* --- 横ブレ完全停止（グローバル） --- */
*,*::before,*::after{ box-sizing:border-box; }
html,body,#container{ width:100%; max-width:100%; overflow-x:hidden; overscroll-behavior-x:none; touch-action:pan-y; }
@supports(overflow:clip){ html,body,#container{ overflow-x:clip; } }

/* 画像/動画/iframeのはみ出し禁止 */
img,iframe,video{ max-width:100% !important; height:auto; display:block; }

/* GoogleMapをリキッド化（幅/高さ属性が残っていても上書き） */
.googlemap iframe{ width:100% !important; height:clamp(300px,56.25vw,450px); border:0; display:block; }

/* 行系コンテナの負マージン対策（SP） */
@media(max-width:767px){
  .row,.lc-row,[class*="row-"]{ margin-left:0 !important; margin-right:0 !important; overflow-x:hidden; }
}

/* 料金表など横スクロール要素は“中だけ”でスクロールさせる */
@media(max-width:767px){
  #nishishinbashi-fees .pr-tbl.pr-tbl-ex,
  #shiodome-fees .pr-tbl.pr-tbl-ex{
    overflow-x:auto; -webkit-overflow-scrolling:touch; overscroll-behavior-x:contain; touch-action:pan-y;
  }
  #nishishinbashi-fees .pr-tbl.pr-tbl-ex dl,
  #shiodome-fees .pr-tbl.pr-tbl-ex dl{ min-width:640px; }
}

/* Swiperのはみ出し防止 */
.lc-swipe,.swiper-container{ overflow:hidden !important; }
.swiper-wrapper{ overflow:visible !important; }
.swiper-slide img{ width:100%; height:auto; display:block; }

/* “＋”疑似要素が横に出ないよう保険 */
#nishishinbashi-fees .pr-first .pr-first-col::after,
#fee-stack-again .pr-first::after{ contain:layout paint; pointer-events:none; }

/* 以前の負マージンを無効化（横ブレ原因） */
.lc-about-ttl003{ margin:1rem 0 !important; padding:0 .2em; }

/* スマホの“ベタっと横いっぱい”を緩和（任意だが推奨） */
@media(max-width:767px){
  .pg-lead-text{ max-width:90%; margin:0 auto; line-height:1.7; letter-spacing:.03em; }
}

/* 固定バナーの×ボタンが外へ出ないように */
.sticky-image{ contain:layout paint; }           /* 固定要素由来の横スク抑止 */
.close-btn{ top:6px; right:6px; transform:none; }/* -10px をやめて内側に配置 */

/* ヘッダーのロゴが巨大化する対策 */
.hd-ttl .logo,
header .logo {
  width: auto !important;     /* グローバルの width:100% を打ち消す */
  height: 44px !important;    /* 好きな高さに固定（例：44px） */
  max-width: none !important; /* max-width 指定があっても無効化 */
}

@media (min-width: 768px){
  .hd-ttl .logo,
  header .logo{
    height: 56px !important;  /* PC時の高さ（お好みで） */
  }
}


/* ヘッダーロゴの暴走対策 */
.hd-ttl .logo,
header .logo{
  width: auto !important;
  height: 44px !important;   /* お好みで */
  max-width: none !important;
}
@media (min-width: 768px){
  .hd-ttl .logo,
  header .logo{ height: 56px !important; }
}

/* ========== 副作用対策 ========== */

/* 1) 画像が想定以上に大きくならないよう全体の安全網 */
img { 
  max-width: 100%;
  height: auto;
}

/* 2) 右上ハンバーガーの「MENU」表示を固定（SPでも暴れないように） */
.gnav-btn { line-height: 1; }                /* 余計な縦伸び防止 */
.gnav-btn i { width: 28px; height: 2px; }    /* 三本線の基準サイズ */
.gnav-btn span {
  display: block;
  margin-top: 2px;
  font-size: 11px;                           /* 必要に応じて 10–12px で調整可 */
  letter-spacing: .1em;
}

/* 3) サイトマップ下のSNSなど小さなロゴ画像が大きくならないよう上限 */
footer img,
.site-map img,
.sitemap img {
  width: auto;            /* 100% にならないように */
  max-height: 56px;       /* 大きければここで頭打ち（お好みで 40–64px） */
}

/* TOPスライダーのPC/SP切替（クラス名: slide-img-pc / slide-img-sp） */
.slide-img-pc { display: block !important; }
.slide-img-sp { display: none !important; }

@media (max-width: 750px) {
  .slide-img-pc { display: none !important; }
  .slide-img-sp { display: block !important; }
}


/* ==== 西新橋院キャンペーン（背景つき・見出し拡大） ==== */
.cpn-single{
  text-align:center;
  padding:48px 20px;
  margin:40px auto;
  background:#fff8f5;
  border:1px solid #f5d6c6;
  border-radius:12px;
  box-shadow:0 3px 10px rgba(0,0,0,0.05);
}
.cpn-single .cpn-ttl{
  color:#c91515;
  font-weight:700;
  font-size:1.9rem;
  letter-spacing:.06em;
  margin:0 0 16px;
}
.cpn-single .cpn-lead{
  color:#444;
  font-size:1.4rem;
  font-weight:600;
  margin:0 0 6px;
}
.cpn-single .cpn-price{
  color:#c91515;
  font-weight:800;
  font-size:1.6rem;
  margin:4px 0 20px;
}
.cpn-single .cpn-btn{
  display:inline-block;
  background:#c91515;
  color:#fff;
  font-weight:700;
  text-decoration:none;
  padding:14px 44px;
  border-radius:999px;
  line-height:1;
  transition:opacity .2s;
}
.cpn-single .cpn-btn:hover{ opacity:.85; }

@media (max-width: 767px){
  .cpn-single{ padding:32px 14px; }
  .cpn-single .cpn-ttl{ font-size:1.45rem; }
  .cpn-single .cpn-lead{ font-size:1.15rem; }
  .cpn-single .cpn-price{ font-size:1.3rem; }
  .cpn-single .cpn-btn{ padding:10px 28px; }
}

/* LINEバナー配置/サイズ調整 */
.line-banner-wrap { text-align:center; }
.line-banner-img {
  display:block;
  width:100%;          /* ← 横幅いっぱいに */
  height:auto;
  border:0;
  margin:0 auto;
}

/* スマホ表示でキャンペーン枠に左右余白を追加 */
@media (max-width: 767px){
  #nishishinbashi-campaign {
    margin-left: 4%;
    margin-right: 4%;
    padding-left: 5%;
    padding-right: 5%;
  }
}