/* ============================================================
   ThemeModern (Bootstrap 5)
   ============================================================ */
:root{
  /* ブランドカラー（ピンク基調）。ポップ&カラフルのアクセント群 */
  --tm-brand:#e21d7a; --tm-brand-dark:#b3185f;
  --tm-yellow:#ffc933; --tm-mint:#16c2a0; --tm-purple:#8b5cf6; --tm-coral:#ff6a4d;
  --tm-ink:#2a1119; --tm-bg:#fff0f6; --tm-line:#f3d9e5;
  /* ポップ用トークン：大きい角丸・太線・ハードシャドウ */
  --tm-radius:0; --tm-bd:3px solid var(--tm-ink); --tm-bd2:2.5px solid var(--tm-ink);
  --tm-shadow:5px 5px 0 rgba(42,17,25,.13); --tm-shadow-sm:3px 3px 0 rgba(42,17,25,.13);
  /* 統一タイプスケール（モバイル基準） */
  --fs-sm:15px; --fs-base:17px; --fs-md:18px; --fs-lg:20px; --fs-h3:22px; --fs-h2:27px; --fs-h1:33px;
}
@media (min-width:992px){
  :root{ --fs-sm:16px; --fs-base:18px; --fs-md:19px; --fs-lg:21px; --fs-h3:24px; --fs-h2:30px; --fs-h1:40px; }
}
*{ -webkit-tap-highlight-color:transparent; }
.tm-body{ background:var(--tm-bg); color:var(--tm-ink);
  font-family:"M PLUS Rounded 1c","Hiragino Maru Gothic ProN","Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;
  font-weight:500; font-size:var(--fs-base); line-height:1.85; -webkit-text-size-adjust:100%;
  background-image:radial-gradient(rgba(226,29,122,.10) 1.5px, transparent 1.5px); background-size:24px 24px; }
a{ color:var(--tm-brand-dark); font-weight:700; }
.tm-main h1,.tm-main h2,.tm-main h3{ font-weight:900; line-height:1.4; }
.tm-main h1{ font-size:var(--fs-h1); } .tm-main h2{ font-size:var(--fs-h2); } .tm-main h3{ font-size:var(--fs-h3); }

/* ===== Header（全幅・ピンク・映える） ===== */
.tm-header{ background:linear-gradient(135deg,var(--tm-brand),var(--tm-brand-dark)); border-bottom:3px solid var(--tm-ink); box-shadow:0 4px 0 rgba(42,17,25,.18); z-index:1030; }
/* コンテナの左右マージンをなくしフル幅に（周りの隙間を排除） */
.tm-header > .container{ max-width:none; padding-left:16px; padding-right:16px; }
/* ロゴ＝ロックアップ（バッジ＋キッカー＋大きいブランド名） */
.tm-logo{ color:#fff; display:flex; align-items:center; gap:12px; min-width:0; }
.tm-logo-badge{ display:flex; align-items:center; justify-content:center; width:48px; height:48px; flex:0 0 auto;
  background:#fff; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); }
.tm-logo-badge i{ color:var(--tm-brand); font-size:27px; }
.tm-logo-txt{ display:flex; flex-direction:column; line-height:1; min-width:0; }
.tm-logo-kicker{ font-size:12px; font-weight:800; color:#ffd9e8; letter-spacing:.05em; margin-bottom:4px; white-space:nowrap; }
.tm-logo-brand{ font-size:30px; font-weight:900; color:#fff; letter-spacing:.01em; white-space:nowrap; text-shadow:2px 2px 0 rgba(42,17,25,.22); }
/* スマホで段階的に縮小（バーガーと衝突回避） */
@media (max-width:575.98px){
  .tm-logo{ gap:10px; }
  .tm-logo-badge{ width:42px; height:42px; }
  .tm-logo-badge i{ font-size:23px; }
  .tm-logo-kicker{ font-size:11px; margin-bottom:3px; }
  .tm-logo-brand{ font-size:23px; }
  .tm-header > .container{ padding-left:12px; padding-right:12px; }
}
@media (max-width:374.98px){ .tm-logo-brand{ font-size:20px; } .tm-logo-kicker{ font-size:10px; } .tm-logo-badge{ width:38px; height:38px; } .tm-logo-badge i{ font-size:20px; } }
.tm-nav-link{ color:#fff; text-decoration:none; font-weight:800; font-size:14px; padding:8px 11px; transition:.15s; white-space:nowrap; }
.tm-nav-link:hover,.tm-nav-link.active{ background:#fff; color:var(--tm-brand-dark); }
.tm-tel{ background:var(--tm-yellow); color:var(--tm-ink)!important; font-weight:900; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); padding:7px 16px!important; transition:.12s; }
.tm-tel:hover{ background:#ffd75c; color:var(--tm-ink); transform:translate(-1px,-1px); box-shadow:4px 4px 0 rgba(42,17,25,.18); }
.tm-tel:active{ transform:translate(2px,2px); box-shadow:0 0 0 rgba(42,17,25,.18); }
.tm-burger{ font-size:24px; color:#fff; flex:0 0 auto; width:46px; height:46px; padding:0;
  display:flex; align-items:center; justify-content:center;
  border:2.5px solid rgba(255,255,255,.85); background:rgba(255,255,255,.16); }
.tm-burger:active{ background:rgba(255,255,255,.3); }
@media (max-width:575.98px){ .tm-burger{ width:42px; height:42px; font-size:22px; } }

/* ===== ページタイトルバナー（visualが空のページ用・全幅・切れない） ===== */
/* シンプルなタイトル帯（高さ約1/3に圧縮・余計な文字は省略） */
.tm-pagebanner{
  position:relative; overflow:hidden; border-bottom:var(--tm-bd);
  padding:13px 0 14px;
  background:
    radial-gradient(circle at 92% -40%, rgba(139,92,246,.28), transparent 50%),
    linear-gradient(120deg, var(--tm-brand), var(--tm-brand-dark));
}
.tm-pagebanner::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.45;
  background-image:radial-gradient(rgba(255,255,255,.18) 1.5px, transparent 1.6px);
  background-size:18px 18px;
}
.tm-pagebanner .container{ position:relative; z-index:1; display:flex; align-items:center; gap:9px; }
.tm-pagebanner-kicker{ display:none; }   /* サイト名バッジは省略（ヘッダーと重複） */
.tm-pagebanner-sub{ display:none; }       /* サブキャッチは省略 */
.tm-pagebanner-title{ margin:0; color:#fff; font-weight:900; font-size:clamp(21px,4.6vw,30px); line-height:1.25; text-shadow:2px 2px 0 rgba(42,17,25,.22); word-break:break-word; overflow-wrap:anywhere; }
.tm-pagebanner-title::before{ content:"\f3cd"; font-family:"Font Awesome 6 Free"; font-weight:900; margin-right:9px; opacity:.9; font-size:.85em; }

/* ===== Hero zone（全幅） ===== */
.tm-hero-zone{ width:100%; }
.tm-hero-zone:empty{ display:none; }
.tm-hero-zone .bk-blocks:empty,
.tm-hero-zone .bk-blocks:not(:has(*)){ display:none !important; padding:0 !important; }

/* ホームの BlockHero は全画面ヒーローのまま（このブロックを含む時は整形しない）。
   スタッフ紹介など hero 以外の汎用ブロック（見出し＋YouTube動画）が入る visual シートだけ整形する */
.tm-hero-zone .bk-blocks:not(:has(.BlockHero)){
  display:flex; flex-wrap:wrap; gap:18px; align-items:flex-start;
  max-width:1180px; margin:0 auto; padding:26px 16px 32px;
}
.tm-hero-zone .bk-blocks:not(:has(.BlockHero)) .bk-block{ margin:0; }
.tm-hero-zone .bk-blocks:not(:has(.BlockHero)) .bk-block{ flex:1 1 100%; min-width:0; }
.tm-hero-zone .bk-blocks:not(:has(.BlockHero)) .bk-block.BlockHeading{ text-align:center; }
/* hero内ボタンを直角・太枠で統一。青(#4f81bd=競合色)はブランドピンクへ。電話/予約ピンク・LINE緑は維持 */
.tm-hero-zone .btn{ border:var(--tm-bd2)!important; border-radius:0!important; box-shadow:var(--tm-shadow-sm); font-weight:900!important; white-space:normal!important; height:auto!important; }
.tm-hero-zone [style*="#4f81bd"]{ background:var(--tm-brand)!important; background-color:var(--tm-brand)!important; color:#fff!important; }
/* メインカラム内に入れた店舗ランディング（サイドバーを最初から横に並べるため）：余白を詰める */
.tm-hero-inmain{ margin-bottom:6px; }
.tm-hero-inmain .bk-blocks:not(:has(.BlockHero)){ max-width:none; margin:0; padding:0 0 14px; gap:14px; }
/* 見出し */
.tm-hero-zone h1, .tm-hero-zone h2{
  margin:0; font-weight:900; line-height:1.3; color:var(--tm-ink);
  word-break:break-word; overflow-wrap:anywhere;
}
.tm-hero-zone h1{ font-size:var(--fs-h1); }
.tm-hero-zone h2{ font-size:var(--fs-h2); }
.tm-hero-zone h1 .text, .tm-hero-zone h2 .text{ box-shadow:inset 0 -.45em 0 rgba(226,29,122,.18); padding:0 .12em; }
/* YouTube/iframe をレスポンシブ16:9＋ポップ枠に */
.tm-hero-zone iframe,
.tm-hero-zone .ggmap iframe,
.tm-hero-zone .bk-block-code-content iframe{
  width:100%!important; height:auto!important; aspect-ratio:16/9; display:block; background:#000;
  border:var(--tm-bd); border-radius:var(--tm-radius); box-shadow:var(--tm-shadow);
}
.tm-hero-zone .ggmap{ width:100%!important; height:auto!important; padding:0!important; position:static!important; }
/* 地図は16:9にせず固定高さ（巨大化を防ぐ） */
.tm-hero-zone .ggmap iframe{ aspect-ratio:auto !important; height:340px !important; }
@media (max-width:640px){ .tm-hero-zone .ggmap iframe{ height:260px !important; } }

/* ===== Content / layout ===== */
.tm-content{ padding-top:28px; padding-bottom:40px; }
/* 独自見出し(フォーム/サムネ)ページは上の隙間を詰める */
.tm-ownheader .tm-content{ padding-top:10px; }
.tm-ownheader .tm-main .bk-blocks > .BlockSpace:first-child{ display:none; }
.tm-main{ min-width:0; }
.tm-sheet{ margin-bottom:6px; }
/* 旧ブロックの原寸画像・幅広表が本文カラム(col-8)を押し広げないようにする互換シム。
   inline width/height を上書きしてレスポンシブ化（縦横比は維持） */
.tm-sheet img{ max-width:100%!important; height:auto!important; }
.tm-sheet table{ max-width:100%; }
.tm-sheet iframe{ max-width:100%; }
/* 本文の各ブロック（写真ブロック等）が固定幅画像で横にはみ出すのを防ぐ。
   .tm-main 配下のみ＝サイドバーのメニュー用サムネ(.bk-block-content内)には影響させない。 */
.tm-main .bk-block-content img{ max-width:100%!important; height:auto!important; }
.tm-main .bk-block-content .outer{ max-width:100%!important; }
.tm-main .bk-block-content table{ max-width:100%; }
.tm-main .bk-block-content iframe,.tm-main .bk-block-content video{ max-width:100%!important; }
/* 保険: 編集画面やCSS未適用文脈(.tm-main無し)でもブロック内の画像/動画が枠からはみ出さない。
   .picture(店舗カードの4:3)も width/height は元のまま尊重されるので崩れない。 */
.bk-block img, .bk-block-content img{ max-width:100%; height:auto; }
.bk-block iframe, .bk-block video, .bk-block-content iframe, .bk-block-content video{ max-width:100%; }
/* 同上保険: 固定幅テーブル(対応地区一覧 style="width:100%"等)と長い文字列も枠内に収める */
.bk-block table, .bk-block-content table{ max-width:100%; }
.bk-block-content{ overflow-wrap:anywhere; }
/* 旧ボタンは店舗ごとに色クラスがバラバラ(info/success/warning/danger/primary/default＋独自色#ff1493/#2c3e50)。
   全てブランドピンクのポップボタンに統一。LINE(lin.ee/lineリンク・px-cta-line)だけ緑を維持 */
.tm-sheet .btn,.tm-sheet .px-cta-tel,.tm-sheet .px-cta-line{
  border:var(--tm-bd2)!important; border-radius:0!important; font-weight:800!important;
  white-space:normal!important; height:auto!important; overflow-wrap:anywhere;
  box-shadow:var(--tm-shadow-sm); transition:.12s; }
.tm-sheet .btn,.tm-sheet .px-cta-tel{ background:var(--tm-brand)!important; color:#fff!important; }
.tm-sheet .btn *,.tm-sheet .px-cta-tel *{ color:#fff!important; }
.tm-sheet .btn:hover,.tm-sheet .px-cta-tel:hover{ background:var(--tm-brand-dark)!important; }
.tm-sheet .btn:active,.tm-sheet .px-cta-tel:active,.tm-sheet .px-cta-line:active{ transform:translate(2px,2px); box-shadow:0 0 0!important; }
/* LINE/緑は維持（lin.ee・line.me・line共有リンク・px-cta-line） */
.tm-sheet a[href*="lin.ee"],.tm-sheet a[href*="line.me"],.tm-sheet a[href*="page.line"],.tm-sheet a[href*="social-plugins.line"],.tm-sheet .px-cta-line{ background:#06C755!important; color:#fff!important; }
.tm-sheet a[href*="lin.ee"] *,.tm-sheet a[href*="line.me"] *,.tm-sheet .px-cta-line *{ color:#fff!important; }
.tm-sheet a[href*="lin.ee"]:hover,.tm-sheet a[href*="line.me"]:hover,.tm-sheet .px-cta-line:hover{ background:#05a948!important; }
/* sticky追従。中身がビューポートより高い場合は内部スクロールで全メニューに到達できるようにする
   （でないと下部メニューがずっと画面外で見えない）。padは pop影(5px)がクリップされない余白 */
.tm-side-sticky{
  position:sticky; top:78px;
  max-height:calc(100vh - 96px); overflow-y:auto; overflow-x:hidden;
  padding:4px 10px 10px 4px;
  scrollbar-width:thin; scrollbar-color:var(--tm-brand) transparent;
}
.tm-side-sticky::-webkit-scrollbar{ width:8px; }
.tm-side-sticky::-webkit-scrollbar-thumb{ background:var(--tm-brand); border-radius:999px; }
/* 縦積み（タブレット/モバイル）時にサイドバーが全幅に広がりスカスカになるのを防ぐ＝最大幅を抑えて中央寄せ */
@media (max-width:991px){ .tm-side-sticky{ position:static; } .tm-side{ max-width:680px; margin-left:auto; margin-right:auto; } }

/* ===== Blog ===== */
.tm-entries{ display:flex; flex-direction:column; gap:26px; }
.tm-entry{ background:#fff; border:var(--tm-bd); border-radius:var(--tm-radius); padding:24px 26px; box-shadow:var(--tm-shadow); border-top-width:8px; }
.tm-entry:nth-child(5n+1){ border-top-color:var(--tm-brand); }
.tm-entry:nth-child(5n+2){ border-top-color:var(--tm-yellow); }
.tm-entry:nth-child(5n+3){ border-top-color:var(--tm-mint); }
.tm-entry:nth-child(5n+4){ border-top-color:var(--tm-purple); }
.tm-entry:nth-child(5n+5){ border-top-color:var(--tm-coral); }
.tm-entry-title a{ color:var(--tm-ink); text-decoration:none; font-size:var(--fs-h3); font-weight:900; line-height:1.45; }
.tm-entry-title a:hover{ color:var(--tm-brand); }
.tm-entry-sub{ display:flex; gap:16px; color:#9c8791; font-size:var(--fs-sm); margin:10px 0 14px; font-weight:700; }
.tm-entry-sub a{ color:#9c8791; text-decoration:none; }
.tm-entry-body{ line-height:1.95; font-size:var(--fs-base); }
/* 記事本文の画像は inline の width/height(例 960x1281) を上書きしてレスポンシブ化（縦伸び防止） */
.tm-entry-body img{ max-width:100%!important; height:auto!important; border-radius:16px; }
/* 記事本文に直貼りされた YouTube等の iframe/動画を枠内に収める（width="640" 等の固定値で横はみ出すのを防止） */
.tm-entry-body iframe,
.tm-entry-body video,
.tm-entry-body embed,
.tm-entry-body object{ max-width:100%!important; }
.tm-entry-body iframe[src*="youtube"],
.tm-entry-body iframe[src*="youtu.be"],
.tm-entry-body iframe[src*="youtube-nocookie"]{ width:100%!important; height:auto!important; aspect-ratio:16/9; display:block; border:0; border-radius:12px; margin:14px 0; background:#000; }
/* 長いURL・固定幅テーブル(style="width:500px")・Instagram埋め込みの横はみ出しも防ぐ */
.tm-entry-body{ overflow-wrap:anywhere; }
.tm-entry-body table{ display:block; width:fit-content; max-width:100%!important; overflow-x:auto; }
.tm-entry-body .instagram-media{ max-width:100%!important; min-width:0!important; }
.tm-more{ display:inline-block; margin-top:14px; background:var(--tm-brand); color:#fff; font-weight:800; text-decoration:none; padding:8px 18px; border-radius:999px; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); }
.tm-more:hover{ background:var(--tm-brand-dark); color:#fff; }
/* ===== 公式LINE / Instagram スクエアバナー（左右2カラム・1枚絵） ===== */
.tm-social-cards{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin:18px 0 6px; }
.tm-soc{ display:block; border:var(--tm-bd); box-shadow:var(--tm-shadow); overflow:hidden; transition:transform .12s; text-decoration:none; }
.tm-soc:hover{ transform:translate(-2px,-2px); }
.tm-soc:active{ transform:translate(1px,1px); }
.tm-soc img{ display:block; width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; }

/* ===== ページャー（ポップ＆直角ボタン） ===== */
/* 上は .tm-entries の flex gap(26px) が乗るため、margin-top を抑え margin-bottom で上下を均等(約32px)にする */
.bk-paginator{ display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:8px; margin:6px 0 32px; }
.bk-paginator span{ display:inline-flex; }
.bk-paginator span a, .bk-paginator span.current{ display:inline-flex; align-items:center; justify-content:center; min-width:46px; height:46px; padding:0 13px; font-weight:900; font-size:var(--fs-base); line-height:1; text-decoration:none; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); }
.bk-paginator span a{ background:#fff; color:var(--tm-ink); transition:transform .12s, background .12s; }
.bk-paginator span a:hover{ background:#ffe6f1; color:var(--tm-brand-dark); transform:translate(-1px,-1px); }
.bk-paginator span a:active{ transform:translate(2px,2px); box-shadow:0 0 0; }
.bk-paginator span.current{ background:var(--tm-brand); color:#fff; }
.bk-paginator span.disabled, .bk-paginator span.disabled a{ opacity:.4; pointer-events:none; }
/* ブログ一覧カード（サムネ＋抜粋）。フル本文を出さないので一覧がスッキリ＆短くなる */
.tm-entry-card{ display:flex; gap:16px; align-items:flex-start; text-decoration:none; color:var(--tm-ink); margin-top:4px; }
.tm-entry-thumb{ flex:0 0 116px; }
.tm-entry-thumb img{ width:116px; height:116px; object-fit:cover; border-radius:16px; border:var(--tm-bd2); display:block; }
.tm-entry-excerpt{ flex:1 1 auto; min-width:0; font-size:var(--fs-sm); line-height:1.75; color:#5a3a47; font-weight:500; }
@media (max-width:480px){ .tm-entry-thumb{ flex-basis:90px; } .tm-entry-thumb img{ width:90px; height:90px; } }

/* ===== ブログ一覧 表示切替バー（一覧 / 画像）＋ 表示数セレクター ===== */
.tm-viewtoggle{ display:flex; align-items:center; justify-content:flex-start; gap:14px; flex-wrap:nowrap; margin:0 0 18px; }
.tm-vt-tabs{ display:inline-flex; gap:6px; background:#fff; border:var(--tm-bd2); border-radius:999px; padding:4px; }
.tm-vt-btn{ display:inline-flex; align-items:center; gap:6px; border:0; background:transparent; color:#7a5462; font-weight:700; font-size:var(--fs-sm); padding:8px 16px; border-radius:999px; cursor:pointer; line-height:1; transition:background .15s,color .15s; }
.tm-vt-btn:hover{ color:var(--tm-brand); }
.tm-vt-btn.is-active{ background:var(--tm-brand); color:#fff; }
.tm-vt-count{ display:none; align-items:center; gap:8px; font-size:var(--fs-sm); font-weight:700; color:#7a5462; }
.tm-viewtoggle.is-grid-active .tm-vt-count{ display:inline-flex; }
.tm-vt-count select{ font:inherit; font-weight:700; color:var(--tm-ink); background:#fff; border:var(--tm-bd2); border-radius:10px; padding:8px 30px 8px 12px; cursor:pointer; appearance:none; -webkit-appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23c2185b' d='M2 2l4 4 4-4z'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 11px center; }

/* ブログ一覧「画像」表示（表示切替で #entries に is-grid が付く）：サムネのみ・スクエア・レスポンシブ多カラム（PC=5列で 5×4≒20枚）
   注意: 店舗ブログはblog-headerシート内に #entries .tm-entry{…} のID付き独自スタイルを持つ（リスト表示用）。
   画像表示はそれより必ず勝つ必要があるため #entries.is-grid + !important で全ブログ共通の見た目に固定する */
#entries.tm-entries.is-grid{ display:grid; grid-template-columns:repeat(5,1fr); gap:10px; max-width:none; }
#entries.is-grid .tm-entry{ padding:0 !important; margin:0 !important; border:0 !important; background:none !important; box-shadow:none !important; overflow:visible; display:block !important; transform:none !important; } /* display!important=店舗ブログの折りたたみ(.s119-bloghidden)を画像表示では解除して全件見せる */
/* 画像なし記事はデフォルト画像(images/default-thumb)が入るので画像表示でも1枚として並ぶ。タイトル帯は画像表示のみ重ねる（一覧はタイトル欄があるため非表示） */
.tm-entry-thumb--none{ position:relative; display:block; }
.tm-entry-thumb--none .tm-entry-thumb-txt{ display:none; }
#entries.is-grid .tm-entry-thumb--none .tm-entry-thumb-txt{ display:flex; align-items:flex-end; position:absolute; inset:0; padding:9px 10px; border-radius:10px; background:linear-gradient(180deg, rgba(0,0,0,0) 42%, rgba(140,16,76,.82)); color:#fff; font-size:12.5px; font-weight:700; line-height:1.45; overflow:hidden; pointer-events:none; }
#entries.is-grid ~ .s119-blogmore{ display:none !important; } /* 画像表示は全件出すので店舗ブログの「もっと見る」ボタンは隠す */
#entries.is-grid .tm-entry-title,
#entries.is-grid .tm-entry-sub,
#entries.is-grid .tm-entry-excerpt,
#entries.is-grid .tm-more{ display:none !important; } /* タイトル・日付・抜粋・続きを見るは出さない（サムネのみ） */
#entries.is-grid .tm-entry-card{ display:block !important; gap:0; margin:0; padding:0; border:0; border-radius:10px; overflow:hidden; aspect-ratio:1/1; background:#faf0f4; }
#entries.is-grid .tm-entry-thumb{ display:block; width:100% !important; height:100% !important; margin:0; flex:none !important; }
#entries.is-grid .tm-entry-thumb img{ width:100% !important; height:100% !important; max-height:none !important; aspect-ratio:1/1; object-fit:cover; border-radius:10px; border:0; display:block; transition:transform .25s ease; }
#entries.is-grid .tm-entry-card:hover img{ transform:scale(1.05); }
@media (max-width:1024px){ #entries.tm-entries.is-grid{ grid-template-columns:repeat(3,1fr); } } /* タブレット=3列 */
@media (max-width:560px){ #entries.tm-entries.is-grid{ grid-template-columns:repeat(2,1fr); gap:8px; } } /* スマホ=2列 */
/* 画像表示(PC)はページャーを切替バーと同じ行に出して、スクロールせず次々めくれるように。下の元ページャーはPC画像表示時のみ隠す */
.tm-pager-top{ display:none; margin:0; flex-wrap:nowrap; gap:6px; }
.tm-pager-top span a, .tm-pager-top span.current{ min-width:38px; height:38px; padding:0 9px; font-size:var(--fs-sm); } /* 1行に収めるため上ページャーは少しコンパクトに */
@media (min-width:1025px){
  #tmViewToggle.is-grid-active .tm-pager-top{ display:flex; }
  #entries.is-grid + .bk-paginator{ display:none; }
}

/* WordPress風 投稿ナビ（前の記事 / 一覧へ戻る / 次の記事） */
.tm-postnav{ display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:14px; align-items:stretch; margin:30px 0 6px; }
.tm-postnav-link{ display:flex; flex-direction:row; align-items:center; gap:12px; min-width:0; padding:12px 16px; background:#fff; border:var(--tm-bd); box-shadow:var(--tm-shadow-sm); text-decoration:none; color:var(--tm-ink); transition:transform .12s, background .12s; }
.tm-postnav-link.next{ flex-direction:row-reverse; }
.tm-postnav-link:hover{ background:#ffe6f1; transform:translate(-1px,-1px); }
.tm-postnav-link:active{ transform:translate(2px,2px); box-shadow:0 0 0; }
.tm-postnav-link.disabled{ background:transparent; border:0; box-shadow:none; pointer-events:none; }
.tm-postnav-thumb{ flex:0 0 58px; width:58px; height:58px; border:var(--tm-bd2); overflow:hidden; background:#fff0f6; display:flex; align-items:center; justify-content:center; }
.tm-postnav-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.tm-postnav-thumb.noimg i{ color:var(--tm-brand); font-size:22px; }
.tm-postnav-meta{ display:flex; flex-direction:column; gap:4px; min-width:0; flex:1 1 auto; }
.tm-postnav-link.prev .tm-postnav-meta{ align-items:flex-start; text-align:left; }
.tm-postnav-link.next .tm-postnav-meta{ align-items:flex-end; text-align:right; }
.tm-postnav-dir{ font-weight:900; font-size:var(--fs-sm); color:var(--tm-brand); white-space:nowrap; }
.tm-postnav-dir i{ color:var(--tm-brand); }
.tm-postnav-title{ font-weight:800; font-size:var(--fs-sm); line-height:1.4; color:var(--tm-ink); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; overflow-wrap:anywhere; word-break:break-word; }
.tm-postnav-back{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; padding:14px 24px; background:var(--tm-brand); color:#fff!important; font-weight:900; font-size:var(--fs-sm); text-decoration:none; border:var(--tm-bd); box-shadow:var(--tm-shadow-sm); white-space:nowrap; transition:transform .12s, background .12s; }
.tm-postnav-back i{ font-size:19px; }
.tm-postnav-back:hover{ background:var(--tm-brand-dark); transform:translate(-1px,-1px); }
.tm-postnav-back:active{ transform:translate(2px,2px); box-shadow:0 0 0; }
@media (max-width:640px){
  .tm-postnav{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  /* 前=左/次=右を固定（片方が空プレースホルダでも位置がズレない） */
  .tm-postnav > :first-child{ order:1; } .tm-postnav > :last-child{ order:2; }
  .tm-postnav-back{ grid-column:1 / -1; order:3; flex-direction:row; gap:8px; }
}

/* 記事シェア */
.tm-share{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:28px; padding-top:20px; border-top:3px dashed var(--tm-line); }
.tm-share-label{ font-size:var(--fs-sm); font-weight:800; color:var(--tm-ink); }
.tm-share-btn{ width:46px; height:46px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; color:#fff; text-decoration:none; font-size:19px; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); transition:transform .12s; }
.tm-share-btn:hover{ transform:translate(-1px,-1px); color:#fff; }
.tm-share-btn:active{ transform:translate(2px,2px); box-shadow:0 0 0; }
.tm-share-btn.x{ background:#000; } .tm-share-btn.fb{ background:#1877F2; }
.tm-share-btn.line{ background:#06C755; } .tm-share-btn.ig{ background:linear-gradient(135deg,#feda75,#fa7e1e,#d62976,#962fbf,#4f5bd5); }

.tm-comments{ margin-top:30px; }
.tm-comments-h{ font-size:var(--fs-lg); font-weight:900; }
.tm-comment{ background:#fff; border:var(--tm-bd2); border-radius:16px; padding:14px 18px; margin-bottom:12px; box-shadow:var(--tm-shadow-sm); }
.tm-comment-meta{ font-size:var(--fs-sm); color:#9c8791; } .tm-comment-meta .name{ font-weight:800; color:var(--tm-ink); }

/* ===== Footer ===== */
.tm-footer{ background:var(--tm-ink); color:#f3e3ea; margin-top:36px; border-top:6px solid var(--tm-brand);
  background-image:radial-gradient(circle at 88% -10%, rgba(226,29,122,.22), transparent 45%); }
.tm-footer .container{ padding-top:30px; padding-bottom:24px; }
.tm-foot-top{ display:grid; grid-template-columns:1.5fr 1fr 1fr; gap:34px; }
@media (max-width:768px){ .tm-foot-top{ grid-template-columns:1fr; gap:28px; } }
/* ブランド */
.tm-foot-brand{ display:inline-flex; align-items:center; gap:11px; text-decoration:none; }
.tm-foot-badge{ width:46px; height:46px; flex:0 0 auto; background:#fff; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); display:flex; align-items:center; justify-content:center; }
.tm-foot-badge i{ color:var(--tm-brand); font-size:25px; }
.tm-foot-name{ display:flex; flex-direction:column; line-height:1.1; color:#fff; font-weight:900; font-size:25px; }
.tm-foot-name small{ font-size:12px; font-weight:800; color:#ffd9e8; margin-bottom:3px; letter-spacing:.03em; }
.tm-foot-desc{ font-size:14px; line-height:1.9; margin:14px 0 0; color:#cdb3bf; max-width:34em; }
.tm-foot-sns{ margin-top:15px; display:flex; gap:10px; }
.tm-foot-sns a{ width:44px; height:44px; display:inline-flex; align-items:center; justify-content:center; font-size:22px; color:#fff; border:2px solid rgba(255,255,255,.28); transition:transform .12s; }
.tm-foot-sns-line{ background:#06c755; border-color:#06c755 !important; }
.tm-foot-sns-ig{ background:linear-gradient(135deg,#feda75,#fa7e1e,#d62976,#962fbf,#4f5bd5); border:0 !important; }
.tm-foot-sns a:active{ transform:translateY(2px); }
/* 見出し */
.tm-foot-h{ font-weight:900; color:var(--tm-yellow); margin:0 0 13px; font-size:16px; display:flex; align-items:center; gap:9px; }
.tm-foot-h::before{ content:""; width:20px; height:4px; background:var(--tm-yellow); flex:0 0 auto; }
/* 電話CTA（横幅いっぱい・最重要ボタン） */
.tm-foot-tel{ display:flex; width:100%; align-items:center; justify-content:center; gap:13px; background:var(--tm-brand); color:#fff !important; text-decoration:none; padding:15px 18px; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); transition:transform .12s, background .15s; }
.tm-foot-tel:hover{ background:var(--tm-brand-dark); }
.tm-foot-tel i{ font-size:23px; }
.tm-foot-tel .t{ display:flex; flex-direction:column; line-height:1.1; font-weight:900; font-size:23px; }
.tm-foot-tel .t small{ font-size:11px; font-weight:800; color:#ffe3ef; margin-bottom:3px; }
.tm-foot-tel:active{ transform:translate(2px,2px); box-shadow:none; }
.tm-foot-info{ font-size:13.5px; color:#d7c0cb; margin-top:11px; display:flex; align-items:center; gap:8px; }
.tm-foot-info i{ color:var(--tm-brand); width:16px; text-align:center; flex:0 0 auto; }
/* メニュー（2列） */
.tm-foot-links{ display:grid; grid-template-columns:1fr 1fr; gap:0 20px; }
.tm-foot-links a{ display:flex; align-items:center; color:#f3e3ea; text-decoration:none; padding:9px 0; font-size:15px; font-weight:700; border-bottom:1px solid rgba(255,255,255,.09); }
.tm-foot-links a::before{ content:"\f105"; font-family:"Font Awesome 6 Free"; font-weight:900; color:var(--tm-brand); margin-right:9px; font-size:14px; }
.tm-foot-links a:active{ color:var(--tm-yellow); }
/* 最下段の区切り線を消して仕上がりをきれいに */
.tm-foot-links a:nth-last-child(-n+2){ border-bottom:0; }
/* グループ事業（大手企業フッター風の帯） */
.tm-foot-group{ margin-top:30px; border-top:2px dashed rgba(255,255,255,.18); padding-top:22px; }
.tm-foot-grouplinks{ display:grid; grid-template-columns:repeat(4,1fr); gap:9px 12px; }
@media (max-width:992px){ .tm-foot-grouplinks{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:640px){ .tm-foot-grouplinks{ grid-template-columns:1fr 1fr; } }
.tm-foot-grouplinks a{ display:flex; flex-direction:column; gap:3px; text-decoration:none; padding:11px 13px; border:1px solid rgba(255,255,255,.15); background:rgba(255,255,255,.045); transition:background .15s, border-color .15s, transform .12s; }
.tm-foot-grouplinks a b{ color:#fff; font-size:13.5px; font-weight:800; line-height:1.3; }
.tm-foot-grouplinks a b i{ font-size:10px; color:#b598a5; margin-left:2px; }
.tm-foot-grouplinks a small{ font-size:11px; color:#cdb3bf; line-height:1.4; }
.tm-foot-grouplinks a:hover{ background:rgba(226,29,122,.16); border-color:var(--tm-brand); }
.tm-foot-grouplinks a:active{ transform:translateY(1px); }
.tm-copy{ border-top:2px dashed rgba(255,255,255,.18); margin-top:28px; padding-top:16px; font-size:12.5px; color:#cdb3bf; text-align:center; }

/* ===== Offcanvas ===== */
.tm-offcanvas-nav a{ display:block; padding:15px 8px; border-bottom:2px solid var(--tm-line); color:var(--tm-ink); text-decoration:none; font-weight:800; font-size:var(--fs-md); }
.tm-offcanvas-nav a.active,.tm-offcanvas-nav a:hover{ color:var(--tm-brand); }

/* ===== 404 ===== */
.tm-404{ padding:70px 0; } .tm-404-code{ font-size:110px; font-weight:900; color:var(--tm-brand); line-height:1; }
.tm-404-msg{ color:var(--tm-ink); margin:14px 0 24px; font-weight:700; }

/* ===== 共有サイドバー（統一デザイン・ポップ） ===== */
.tm-sb{ display:flex; flex-direction:column; gap:20px; }
.tm-sb-cta{ background:#fff; border:var(--tm-bd); border-radius:var(--tm-radius); padding:16px; box-shadow:var(--tm-shadow); }
/* サイドCTAの4ボタン共通: 左寄せ・同一フォントサイズ・アイコン幅を揃えて文字の開始位置も統一 */
.tm-sb-tel,.tm-sb-line,.tm-sb-contact,.tm-sb-yoyaku,.tm-sb-admin{ display:flex; align-items:center; justify-content:flex-start; gap:10px; color:#fff; text-decoration:none; font-weight:900; font-size:var(--fs-md); border:var(--tm-bd2); border-radius:16px; padding:14px 18px; box-shadow:var(--tm-shadow-sm); transition:.12s; }
.tm-sb-tel i,.tm-sb-line i,.tm-sb-contact i,.tm-sb-yoyaku i,.tm-sb-admin i{ width:24px; text-align:center; font-size:18px; flex:0 0 auto; }
.tm-sb-tel{ background:var(--tm-brand); }
.tm-sb-line{ background:#06C755; margin-top:10px; }
.tm-sb-contact{ background:var(--tm-ink); margin-top:10px; }
.tm-sb-yoyaku{ background:var(--tm-brand); margin-top:10px; }
.tm-sb-admin{ background:#5a4a63; margin-top:10px; } /* スタッフ専用・予約管理 */
.tm-sb-line:hover,.tm-sb-tel:hover,.tm-sb-contact:hover,.tm-sb-yoyaku:hover,.tm-sb-admin:hover{ transform:translate(-1px,-1px); color:#fff; }
.tm-sb-line:active,.tm-sb-tel:active,.tm-sb-contact:active,.tm-sb-yoyaku:active,.tm-sb-admin:active{ transform:translate(2px,2px); box-shadow:0 0 0; }
/* 社長の著書バナー（CTAボタンと同じ寸法・/BOOKへ） */
.tm-sb-book{ display:flex; align-items:center; gap:10px; margin-top:10px; padding:8px 14px 8px 11px; min-height:52px; box-sizing:border-box; color:#fff; text-decoration:none; border:var(--tm-bd2); border-radius:16px; background:linear-gradient(105deg,#241d18 62%,#3d2230 100%); box-shadow:var(--tm-shadow-sm); transition:.12s; }
.tm-sb-book img{ width:30px; height:auto; flex:0 0 auto; border-radius:3px; box-shadow:0 2px 6px rgba(0,0,0,.45); }
.tm-sb-book .t{ display:flex; flex-direction:column; min-width:0; line-height:1.4; }
.tm-sb-book .t b{ font-size:13.5px; font-weight:900; letter-spacing:.02em; }
.tm-sb-book .t small{ font-size:10px; color:#f5a9cd; letter-spacing:.02em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tm-sb-book > i{ margin-left:auto; color:#f5a9cd; flex:0 0 auto; }
.tm-sb-book:hover{ transform:translate(-1px,-1px); color:#fff; }
.tm-sb-book:active{ transform:translate(2px,2px); box-shadow:0 0 0; }
/* アプリ開発ボタン（書籍バナーと同寸・紺系） */
.tm-sb-apps{ background:linear-gradient(105deg,#1c2740 62%,#312254 100%); min-height:68px; }
.tm-sb-apps .ic{ flex:0 0 auto; width:30px; height:30px; border-radius:8px; background:rgba(255,255,255,.14); display:inline-flex; align-items:center; justify-content:center; font-size:15px; color:#9ec5ff; }
.tm-sb-apps .t small{ color:#9ec5ff; }
.tm-sb-apps > i{ color:#9ec5ff; }

.tm-sb-group{ background:#fff; border:var(--tm-bd); border-radius:var(--tm-radius); overflow:hidden; box-shadow:var(--tm-shadow); }
.tm-sb-h{ background:var(--tm-ink); color:#fff; font-weight:900; font-size:var(--fs-md); padding:14px 18px; letter-spacing:.02em; }
.tm-sb-h i{ margin-right:8px; color:var(--tm-yellow); }
.tm-sb-group:nth-of-type(odd) .tm-sb-h{ background:var(--tm-brand); }
.tm-sb-group:nth-of-type(odd) .tm-sb-h i{ color:var(--tm-yellow); }
.tm-sb-link{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:16px 18px; color:var(--tm-ink); text-decoration:none; font-weight:800; font-size:var(--fs-base); border-top:2px solid var(--tm-line); border-left:5px solid transparent; transition:.15s; }
.tm-sb-group .tm-sb-link:first-of-type{ border-top:0; }
.tm-sb-link i{ color:var(--tm-brand); font-size:15px; }
.tm-sb-link:hover{ background:#ffe6f1; border-left-color:var(--tm-brand); color:var(--tm-brand-dark); }
.tm-sb-link:hover i{ color:var(--tm-brand); }
.tm-sb-link.sm{ font-weight:700; font-size:var(--fs-sm); line-height:1.6; color:#5a3a47; }
.tm-sb-link.sm:hover{ color:var(--tm-brand-dark); }
/* 最新記事（サムネ付き） */
.tm-sb-news{ display:flex; align-items:center; gap:12px; padding:12px 16px; text-decoration:none; border-top:2px solid var(--tm-line); border-left:5px solid transparent; transition:.15s; }
.tm-sb-group .tm-sb-news:first-of-type{ border-top:0; }
.tm-sb-news:hover{ background:#ffe6f1; border-left-color:var(--tm-brand); }
.tm-sb-news-thumb{ flex:0 0 60px; width:60px; height:60px; border-radius:14px; border:var(--tm-bd2); overflow:hidden; background:#fff0f6; display:flex; align-items:center; justify-content:center; }
.tm-sb-news-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.tm-sb-news-noimg i{ color:var(--tm-brand); font-size:22px; }
.tm-sb-news-t{ flex:1 1 auto; min-width:0; font-weight:800; font-size:var(--fs-sm); line-height:1.45; color:var(--tm-ink); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.tm-sb-news:hover .tm-sb-news-t{ color:var(--tm-brand-dark); }

/* ============================================================
   旧 Bootstrap 3/4 互換シム（既存コンテンツを崩さないため）
   ============================================================ */
.btn-block{ display:block; width:100%; }
.btn-block + .btn-block{ margin-top:8px; }
.col-xs-12{ flex:0 0 100%; max-width:100%; }
.col-xs-6{ flex:0 0 50%; max-width:50%; }
.col-xs-4{ flex:0 0 33.3333%; max-width:33.3333%; }
.col-xs-3{ flex:0 0 25%; max-width:25%; }
[class*="col-xs-"]{ position:relative; width:100%; padding-right:15px; padding-left:15px; float:left; }
/* col-sm/md/lg を col-xs より後に再宣言して上書きできるようにする（BS3カスケード復元）。
   例: <div class="col-xs-4 col-sm-3"> は SP=3列(33%)・PC=4列(25%) になる */
@media (min-width:576px){
  .col-sm-1{flex:0 0 8.3333%;max-width:8.3333%} .col-sm-2{flex:0 0 16.6667%;max-width:16.6667%}
  .col-sm-3{flex:0 0 25%;max-width:25%} .col-sm-4{flex:0 0 33.3333%;max-width:33.3333%}
  .col-sm-5{flex:0 0 41.6667%;max-width:41.6667%} .col-sm-6{flex:0 0 50%;max-width:50%}
  .col-sm-7{flex:0 0 58.3333%;max-width:58.3333%} .col-sm-8{flex:0 0 66.6667%;max-width:66.6667%}
  .col-sm-9{flex:0 0 75%;max-width:75%} .col-sm-10{flex:0 0 83.3333%;max-width:83.3333%}
  .col-sm-11{flex:0 0 91.6667%;max-width:91.6667%} .col-sm-12{flex:0 0 100%;max-width:100%}
}
@media (min-width:768px){
  .col-md-1{flex:0 0 8.3333%;max-width:8.3333%} .col-md-2{flex:0 0 16.6667%;max-width:16.6667%}
  .col-md-3{flex:0 0 25%;max-width:25%} .col-md-4{flex:0 0 33.3333%;max-width:33.3333%}
  .col-md-5{flex:0 0 41.6667%;max-width:41.6667%} .col-md-6{flex:0 0 50%;max-width:50%}
  .col-md-7{flex:0 0 58.3333%;max-width:58.3333%} .col-md-8{flex:0 0 66.6667%;max-width:66.6667%}
  .col-md-9{flex:0 0 75%;max-width:75%} .col-md-10{flex:0 0 83.3333%;max-width:83.3333%}
  .col-md-11{flex:0 0 91.6667%;max-width:91.6667%} .col-md-12{flex:0 0 100%;max-width:100%}
}
@media (min-width:992px){
  .col-lg-1{flex:0 0 8.3333%;max-width:8.3333%} .col-lg-2{flex:0 0 16.6667%;max-width:16.6667%}
  .col-lg-3{flex:0 0 25%;max-width:25%} .col-lg-4{flex:0 0 33.3333%;max-width:33.3333%}
  .col-lg-5{flex:0 0 41.6667%;max-width:41.6667%} .col-lg-6{flex:0 0 50%;max-width:50%}
  .col-lg-7{flex:0 0 58.3333%;max-width:58.3333%} .col-lg-8{flex:0 0 66.6667%;max-width:66.6667%}
  .col-lg-9{flex:0 0 75%;max-width:75%} .col-lg-10{flex:0 0 83.3333%;max-width:83.3333%}
  .col-lg-11{flex:0 0 91.6667%;max-width:91.6667%} .col-lg-12{flex:0 0 100%;max-width:100%}
}
.row-10,.row-20{ display:flex; flex-wrap:wrap; }
.row-10{ margin:0 -5px; } .row-10>[class*="col-"]{ padding:0 5px; }
.row-20{ margin:0 -10px; } .row-20>[class*="col-"]{ padding:0 10px; }
.embed-responsive{ position:relative; display:block; width:100%; padding:0; overflow:hidden; }
.embed-responsive::before{ display:block; content:""; }
.embed-responsive-16by9::before{ padding-top:56.25%; }
.embed-responsive-4by3::before{ padding-top:75%; }
.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive video{ position:absolute; top:0; bottom:0; left:0; width:100%; height:100%; border:0; }
/* visible/hidden（BS3）最低限の復元 */
.visible-xs,.visible-sm,.visible-md,.visible-lg{ display:none!important; }
@media (max-width:767px){ .visible-xs{ display:block!important; } .hidden-xs{ display:none!important; } }
@media (min-width:768px) and (max-width:991px){ .visible-sm{ display:block!important; } .hidden-sm{ display:none!important; } }
@media (min-width:992px) and (max-width:1199px){ .visible-md{ display:block!important; } .hidden-md{ display:none!important; } }
@media (min-width:1200px){ .visible-lg{ display:block!important; } .hidden-lg{ display:none!important; } }
.list-group-item{ display:block; padding:10px 15px; background:#fff; border:1px solid var(--tm-line); }

/* ===== 角丸を全廃（指定：全ての角丸をやめる。ピル/円/Bootstrap含め全て直角） ===== */
/* ただし AIブロック(.bk-ai-root)の中は、デザインした角丸/形を尊重して除外する */
.tm-body *:not(.bk-ai-root):not(.bk-ai-root *), .tm-body *:not(.bk-ai-root *)::before, .tm-body *:not(.bk-ai-root *)::after{ border-radius:0 !important; }

/* ============================================================
   モバイル固定フッターメニュー（スマホ/タブレット限定・来店導線）
   ============================================================ */
.tm-fixbar{
  position:fixed; left:0; right:0; bottom:0; z-index:1035;
  display:flex; background:#fff; border-top:3px solid var(--tm-ink);
  box-shadow:0 -4px 0 rgba(42,17,25,.08);
  padding-bottom:env(safe-area-inset-bottom);
}
.tm-fixbar-item{
  flex:1 1 0; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:3px; padding:8px 2px 9px; min-height:58px;
  background:#fff; border:0; border-left:2px solid var(--tm-line);
  color:var(--tm-ink); font-weight:800; font-size:12px; line-height:1; text-decoration:none;
  -webkit-tap-highlight-color:transparent; cursor:pointer;
}
.tm-fixbar-item:first-child{ border-left:0; }
.tm-fixbar-item i{ font-size:21px; line-height:1; }
.tm-fixbar-item span{ white-space:nowrap; }
.tm-fixbar-item:active{ transform:translateY(1px); background:var(--tm-bg); }
/* 役割ごとの色分け（電話=ピンク強調 / LINE=緑 / 予約=ミント） */
.tm-fixbar-item:nth-child(1) i{ color:var(--tm-coral); }
.tm-fixbar-item:nth-child(3) i{ color:var(--tm-purple); }
.tm-fixbar-item:nth-child(4) i{ color:var(--tm-brand); }
.tm-fixbar-line i{ color:#06c755; }
.tm-fixbar-yoyaku i{ color:var(--tm-mint); }
/* 電話は最重要：背景塗りで一番目立たせる */
.tm-fixbar-item:nth-child(1){ background:var(--tm-coral); color:#fff; }
.tm-fixbar-item:nth-child(1) i{ color:#fff; }
.tm-fixbar-item:nth-child(1):active{ background:#e85a3e; }
/* 現在地（クリックして開いているページ）をブランドピンクでハイライト */
.tm-fixbar-item.active{ background:var(--tm-brand); color:#fff; box-shadow:inset 0 3px 0 var(--tm-brand-dark); }
.tm-fixbar-item.active i{ color:#fff; }
.tm-fixbar-item.active:active{ background:var(--tm-brand-dark); }

/* 固定バー分だけ本文下に余白（バーに隠れない） */
@media (max-width:991.98px){
  .tm-body{ padding-bottom:calc(58px + env(safe-area-inset-bottom)); }
  /* AIチャットの吹き出しボタンを固定バーの上へ退避（重なり防止） */
  .s119-launch{ bottom:calc(66px + env(safe-area-inset-bottom)) !important; }
}

/* 電話：店舗選択ボトムシート（8店すべて同時表示できる高さに） */
.tm-callsheet{ height:auto !important; max-height:94vh; border-top:3px solid var(--tm-ink); }
.tm-callsheet .offcanvas-header{ padding:14px 16px 8px; }
.tm-callsheet .offcanvas-title{ font-weight:900; }
.tm-callsheet .offcanvas-body{ padding-top:0; padding-bottom:calc(14px + env(safe-area-inset-bottom)); }
.tm-callsheet-note{ font-size:13px; font-weight:700; color:var(--tm-brand-dark); margin:0 0 10px; }
.tm-callsheet-list{ display:flex; flex-direction:column; gap:8px; }
.tm-callsheet-list a{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:11px 14px; background:#fff; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm);
  color:var(--tm-ink); text-decoration:none;
}
.tm-callsheet-list a:active{ transform:translate(2px,2px); box-shadow:none; }
.tm-callsheet-list .n{ font-weight:900; font-size:16px; }
.tm-callsheet-list .t{ font-weight:800; font-size:16px; color:var(--tm-coral); white-space:nowrap; }
.tm-callsheet-list .t i{ margin-right:6px; }
.tm-callsheet-all{
  display:block; text-align:center; margin-top:12px; padding:11px;
  font-weight:800; color:var(--tm-brand-dark); border:var(--tm-bd2); background:var(--tm-bg);
}

/* オフキャンバス表示中／最下部フッター表示中はAIチャットの吹き出しを隠す */
body.s119-hidechat .s119-launch,
body.s119-atfoot .s119-launch{ display:none !important; }
body:has(.offcanvas.show) .s119-launch{ display:none !important; }

/* ============================================================
   本文内テーブル（料金表など）を綺麗に
   ※ th に付いた旧BS3グリッドclass(col-xs-3等=float+幅指定)が
     ヘッダーセルを潰し縦折れさせていたのを打ち消し、表として整形する
   ============================================================ */
.tm-main .alt-table-responsive,
.tm-main .table-responsive{
  overflow-x:auto; -webkit-overflow-scrolling:touch; margin:0 0 22px;
  border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); background:#fff;
}
.tm-main .alt-table-responsive .table,
.tm-main .table-responsive .table{ border:0; box-shadow:none; margin:0; }
.tm-main table.table{
  width:100%; margin:0 0 22px; border-collapse:collapse; background:#fff;
  font-size:15px; line-height:1.5;
}
/* 旧グリッドclassの float/幅 を無効化（縦折れの直接原因） */
.tm-main table.table th[class*="col-"]{
  float:none !important; width:auto !important; max-width:none !important;
  flex:none !important; position:static !important;
  padding-left:10px !important; padding-right:10px !important;
}
.tm-main table.table th,
.tm-main table.table td{
  border:1px solid var(--tm-line); padding:11px 9px; vertical-align:middle;
  text-align:center; white-space:nowrap;
}
.tm-main table.table td{ font-weight:700; color:var(--tm-ink); }
/* タイトル行（colspanで全幅。元の color:black を上書き） */
.tm-main table.table thead tr:first-child th{
  background:var(--tm-brand); color:#fff !important; font-weight:900; font-size:17px;
  border-color:var(--tm-brand-dark);
}
/* 見出し行（機種／料金 税込み／時間 など） */
.tm-main table.table thead tr:not(:first-child) th{
  background:var(--tm-bg); color:var(--tm-ink); font-weight:800;
}
.tm-main table.table thead th[scope="col"]{ background:var(--tm-bg); color:var(--tm-ink); font-weight:800; }
/* 行頭見出し */
.tm-main table.table tbody th[scope="row"]{ background:var(--tm-bg); font-weight:800; }
/* ゼブラで視線誘導 */
.tm-main table.table tbody tr:nth-child(even) td{ background:#fff7fb; }
.tm-main table.table tbody tr:active td{ background:#ffe9f3; }
/* スマホでは少し詰める */
@media (max-width:575.98px){
  .tm-main table.table{ font-size:14px; }
  .tm-main table.table th,
  .tm-main table.table td{ padding:9px 8px; }
  .tm-main table.table thead tr:first-child th{ font-size:16px; }
}

/* ============================================================
   機種ページの見出し(px-hero)を「追従サブヘッダー」化
   スマホ/タブレットで：全幅・隙間なし・スクロールしても残る
   （下にスクロールしても「どの機種か」が常に分かるように）
   ============================================================ */
@media (max-width:991.98px){
  .tm-main .px-hero{
    position:-webkit-sticky; position:sticky; top:var(--tm-head-h,64px); z-index:1020;
    /* コンテナ余白を打ち消して画面端まで全幅に */
    width:100vw; margin-left:calc(50% - 50vw); margin-right:calc(50% - 50vw);
    margin-top:0 !important; margin-bottom:18px !important;
    min-height:0 !important;
    border:0 !important; border-bottom:3px solid var(--tm-ink) !important;
    box-shadow:0 5px 0 rgba(42,17,25,.10) !important;
  }
  /* コンパクトな帯に（機種名＋サムネのみ。説明・PRICE LISTは隠す） */
  .tm-main .px-hero .px-hero-txt{ padding:10px 16px !important; gap:0 !important; }
  .tm-main .px-hero .px-tag,
  .tm-main .px-hero .px-lead{ display:none !important; }
  .tm-main .px-hero .px-title{ font-size:19px !important; line-height:1.25 !important; color:var(--tm-ink) !important; }
  .tm-main .px-hero .px-hero-img{ flex:0 0 auto !important; padding:6px 16px 6px 0 !important; }
  .tm-main .px-hero .px-hero-img img{ max-height:52px !important; }
}
@media (max-width:374.98px){
  .tm-main .px-hero .px-title{ font-size:17px !important; }
  .tm-main .px-hero .px-hero-img img{ max-height:46px !important; }
}

/* 機種一覧へ戻る：シンプルな [＜] アイコンボタン（機種名と同じ行・追従バーに常駐） */
.tm-main .px-hero .px-back{
  flex:0 0 auto; align-self:center; order:-1; margin:0 0 0 16px;
  display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px;
  color:var(--tm-brand-dark); text-decoration:none;
  background:var(--tm-bg); border:2.5px solid var(--tm-brand);
}
.tm-main .px-hero .px-back i{ font-size:20px; }
.tm-main .px-hero .px-back:active{ background:var(--tm-brand); color:#fff; }
@media (max-width:991.98px){
  .tm-main .px-hero .px-back{ display:inline-flex !important; width:40px; height:40px; margin:0 0 0 12px; }
  .tm-main .px-hero .px-back i{ font-size:18px; }
  /* チェビロンと機種名の間隔を詰める */
  .tm-main .px-hero .px-hero-txt{ padding-left:12px !important; }
}

/* ============================================================
   機種一覧「機種を選ぶ」(.mg) をブランドのピンクでポップに
   ※元は無地グレー＋ホバー青(競合色)。ピンク基調に統一
   ============================================================ */
.tm-main .mg-card{ border:var(--tm-bd2) !important; box-shadow:var(--tm-shadow) !important; background:#fff !important; padding:22px 20px 26px !important; }
.tm-main .mg-h{ font-weight:900 !important; color:var(--tm-ink) !important; font-size:26px !important; }
.tm-main .mg-sub{ color:#7a6470 !important; font-weight:700 !important; font-size:14px !important; }
/* シリーズ見出し＝ピンクの帯ラベル */
.tm-main .mg-grp{ margin-top:24px !important; }
.tm-main .mg-grp h4{
  display:inline-block !important; font-size:13px !important; font-weight:900 !important; color:#fff !important;
  background:var(--tm-brand) !important; letter-spacing:.04em !important;
  padding:4px 13px !important; margin:0 0 12px !important; border:2px solid var(--tm-ink); box-shadow:var(--tm-shadow-sm);
}
/* 機種ボタン＝ポップカード */
.tm-main .mg-row{ gap:10px !important; }
.tm-main .mg-row a{
  background:var(--tm-bg) !important; color:var(--tm-ink) !important;
  border:var(--tm-bd2) !important; box-shadow:var(--tm-shadow-sm) !important;
  font-weight:800 !important; font-size:15px !important; padding:15px 8px !important;
  transition:transform .1s ease, background .15s ease, color .15s ease !important;
}
.tm-main .mg-row a:hover{ background:var(--tm-brand) !important; color:#fff !important; border-color:var(--tm-ink) !important;
  transform:translate(-1px,-1px) !important; box-shadow:4px 4px 0 rgba(42,17,25,.2) !important; }
.tm-main .mg-row a:active{ transform:translate(2px,2px) !important; box-shadow:none !important; background:var(--tm-brand-dark) !important; color:#fff !important; }
@media (max-width:600px){
  .tm-main .mg-card{ padding:18px 14px 20px !important; }
  .tm-main .mg-h{ font-size:22px !important; }
  .tm-main .mg-row a{ font-size:14px !important; padding:14px 6px !important; }
}

/* ============================================================
   予約フォームページ：自前ネイティブ予約フォーム（ピンク・ポップ）
   ============================================================ */
.tm-rform{ margin:4px 0 8px; }
.tm-rform-intro{ color:#5a4751; font-weight:700; font-size:15px; line-height:1.85; margin:0 0 18px; }
.tm-rform-intro strong{ color:var(--tm-brand-dark); }
.tm-rform-form{ display:flex; flex-direction:column; gap:16px; }
.tm-rform-err{ background:#fff0f4; border:2.5px solid var(--tm-brand); color:var(--tm-brand-dark); font-weight:800; padding:12px 14px; }
.tm-rform-sec{ background:#fff; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); padding:18px 16px 20px; margin:0; }
.tm-rform-sec legend{ display:flex; align-items:center; gap:9px; font-weight:900; font-size:18px; color:var(--tm-ink); padding:0; margin:0 0 14px; }
.tm-rform-no{ display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; background:var(--tm-brand); color:#fff; font-size:15px; font-weight:900; border:2px solid var(--tm-ink); flex:0 0 auto; }
.tm-rform-field{ display:block; font-weight:800; font-size:15px; color:var(--tm-ink); margin-bottom:15px; }
.tm-rform-field:last-child{ margin-bottom:0; }
.tm-rform-field em{ display:inline-block; font-style:normal; font-size:11px; font-weight:900; color:#fff; background:var(--tm-brand); padding:2px 8px; margin-left:6px; vertical-align:middle; line-height:1.3; }
.tm-rform-field input,.tm-rform-field select,.tm-rform-field textarea{
  display:block; width:100%; margin-top:8px; font:inherit; font-size:16px; font-weight:600; color:var(--tm-ink);
  background:#fff; border:2.5px solid #d9c2cd; padding:13px 14px; line-height:1.4;
  transition:border-color .15s ease, box-shadow .15s ease; -webkit-appearance:none; appearance:none;
}
.tm-rform-field textarea{ resize:vertical; min-height:84px; }
.tm-rform-field select{ background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23b3185f' stroke-width='3'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 14px center; padding-right:40px; }
.tm-rform-field input:focus,.tm-rform-field select:focus,.tm-rform-field textarea:focus{ outline:none; border-color:var(--tm-brand); box-shadow:0 0 0 3px rgba(226,29,122,.18); }
.tm-rform-row{ display:flex; gap:12px; }
.tm-rform-row .tm-rform-field{ flex:1 1 0; min-width:0; }
.tm-rform-submit{
  width:100%; background:var(--tm-brand); color:#fff; font-weight:900; font-size:19px;
  padding:18px; min-height:60px; border:var(--tm-bd); box-shadow:var(--tm-shadow); cursor:pointer;
  transition:transform .1s ease, background .15s ease;
}
.tm-rform-submit:hover:not(:disabled){ background:var(--tm-brand-dark); transform:translate(-1px,-1px); box-shadow:7px 7px 0 rgba(42,17,25,.18); }
.tm-rform-submit:active:not(:disabled){ transform:translate(3px,3px); box-shadow:none; }
.tm-rform-submit:disabled{ background:#c9b3bd; cursor:not-allowed; box-shadow:none; }
.tm-rform-note{ color:#7a6470; font-weight:700; font-size:13px; text-align:center; margin:4px 0 0; }
/* 完了画面 */
.tm-rform-done{ background:#fff; border:var(--tm-bd); box-shadow:var(--tm-shadow); padding:34px 22px; text-align:center; }
.tm-rform-check{ width:72px; height:72px; margin:0 auto 18px; background:var(--tm-mint); color:#fff; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); display:flex; align-items:center; justify-content:center; font-size:34px; }
.tm-rform-done h2{ font-weight:900 !important; color:var(--tm-ink) !important; font-size:24px !important; margin:0 0 10px !important; }
.tm-rform-done p{ color:#5a4751; font-weight:700; font-size:15px; margin:0 0 20px; }
.tm-rform-line{ display:inline-flex; align-items:center; justify-content:center; gap:9px; width:100%; max-width:360px; background:#06c755; color:#fff !important; text-decoration:none; font-weight:900; font-size:17px; padding:15px; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); }
.tm-rform-line:active{ transform:translate(2px,2px); box-shadow:none; }
.tm-rform-donesub{ font-size:12px !important; color:#7a6470 !important; margin:14px 0 0 !important; }
@media (max-width:600px){
  .tm-rform-sec legend{ font-size:16px; }
  .tm-rform-submit{ font-size:18px; }
}

/* ============================================================
   旧・手書きセクション（★見出し / 赤青インライン文字）の今風整形
   ============================================================ */
.tm-feat-chips{ display:flex; flex-wrap:wrap; gap:9px; margin:4px 0 22px; }
.tm-feat-chip{ display:inline-flex; align-items:center; background:var(--tm-bg); color:var(--tm-brand-dark); font-weight:900; font-size:14px; padding:8px 14px; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); }
.tm-feat-chip::before{ content:"\f00c"; font-family:"Font Awesome 6 Free"; font-weight:900; color:var(--tm-brand); margin-right:8px; font-size:12px; }
.tm-main .bs-example{ font-size:16px; line-height:1.95; color:var(--tm-ink); text-align:left; }
.tm-main .bs-example p{ margin:0 0 14px; }
.tm-main .bs-example a{ color:var(--tm-brand-dark); font-weight:800; text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:2px; text-decoration-color:rgba(226,29,122,.45); }
.tm-main .bs-example a:hover{ text-decoration-color:var(--tm-brand); }
@media (max-width:600px){
  .tm-feat-chip{ font-size:13px; padding:7px 12px; }
  .tm-main .bs-example{ font-size:15px; line-height:1.9; }
}

/* ============================================================
   ホーム「選ばれる理由」セクション（旧手書き文章を全面刷新）
   ============================================================ */
.tm-why{ margin:6px 0 10px; }
.tm-why-head{ text-align:center; margin-bottom:22px; }
.tm-why-kicker{ display:inline-block; background:var(--tm-brand); color:#fff; font-weight:900; font-size:13px; letter-spacing:.02em; padding:6px 15px; border:2px solid var(--tm-ink); box-shadow:var(--tm-shadow-sm); }
.tm-why-h{ font-weight:900 !important; color:var(--tm-ink) !important; font-size:clamp(23px,5.6vw,34px) !important; line-height:1.35 !important; margin:15px 0 11px !important; }
.tm-why-lead{ color:#5a4751; font-weight:700; font-size:15px; line-height:1.95; max-width:33em; margin:0 auto; }
/* 実績バッジ */
.tm-stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:0 0 22px; }
.tm-stat{ background:var(--tm-ink); text-align:center; padding:14px 6px; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); }
.tm-stat strong{ display:block; font-size:clamp(15px,4.3vw,21px); font-weight:900; color:var(--tm-yellow); line-height:1.2; }
.tm-stat span{ font-size:11px; font-weight:800; color:#e9d6df; }
/* 特徴カード（2列・コンパクト：アイコンは見出し横、説明は簡潔に） */
.tm-feats{ display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.tm-feat{ background:#fff; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); padding:13px 13px 14px; }
.tm-feat-top{ display:flex; align-items:center; gap:9px; margin-bottom:8px; }
.tm-feat-ic{ display:inline-flex; align-items:center; justify-content:center; width:36px; height:36px; flex:0 0 auto; background:var(--tm-bg); border:2px solid var(--tm-ink); color:var(--tm-brand); font-size:17px; }
.tm-feat h3{ font-size:14.5px !important; font-weight:900 !important; color:var(--tm-ink) !important; margin:0 !important; line-height:1.3 !important; }
.tm-feat p{ font-size:12.5px; line-height:1.7; color:#5a4751; font-weight:600; margin:0; }
@media (max-width:360px){ .tm-feat h3{ font-size:13px !important; } .tm-feat p{ font-size:11.5px; } }
/* 電話CTA */
.tm-why-tel{ display:flex; align-items:center; justify-content:center; gap:13px; margin:22px 0 24px; background:var(--tm-brand); color:#fff !important; text-decoration:none; padding:16px; border:var(--tm-bd); box-shadow:var(--tm-shadow); transition:transform .12s, background .15s; }
.tm-why-tel:hover{ background:var(--tm-brand-dark); transform:translate(-1px,-1px); }
.tm-why-tel:active{ transform:translate(3px,3px); box-shadow:none; }
.tm-why-tel i{ font-size:25px; }
.tm-why-tel .t{ display:flex; flex-direction:column; line-height:1.1; font-weight:900; font-size:25px; }
.tm-why-tel .t small{ font-size:11px; font-weight:800; color:#ffe3ef; margin-bottom:3px; }
/* 対応エリア */
.tm-area{ background:#fff; border:var(--tm-bd2); box-shadow:var(--tm-shadow-sm); padding:18px 16px 20px; }
.tm-area-h{ font-size:17px !important; font-weight:900 !important; color:var(--tm-ink) !important; margin:0 0 8px !important; display:flex; align-items:center; gap:9px; line-height:1.4 !important; }
.tm-area-h i{ color:var(--tm-brand); }
.tm-area-sub{ font-size:13.5px; color:#5a4751; font-weight:600; line-height:1.8; margin:0 0 14px; }
.tm-area-chips{ display:flex; flex-wrap:wrap; gap:7px; }
.tm-area-chips span{ font-size:12.5px; font-weight:700; color:var(--tm-brand-dark); background:var(--tm-bg); border:1.5px solid var(--tm-line); padding:4px 10px; }

/* ===== CLS対策: 流動画像(width:100%)の高さを実寸アスペクト比で事前予約し、読込時のガタつきを防止 ===== */
.picture{ width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; display:block; }   /* 店舗カード写真 300x225 */
img[src*="b-koe"]{ width:100%; height:auto; aspect-ratio:20/7; }                            /* 口コミ評判バナー 1000x350 */
#bannerCarousel .carousel-item img{ width:100%; height:auto; aspect-ratio:49/20; object-fit:cover; }  /* トップ バナーカルーセル 980x400 */
img[src*="qr-official"]{ aspect-ratio:1/1; height:auto; }                                   /* LINE公式QR 正方形 */

/* ===== トップ下部「安心・保証のお約束 / 対応地区」セクションのデザイン整え（CSSのみ・本文は不変） ===== */
/* 見出し（中央寄せ＋ブランドのアクセントバー） */
#bk-block-375 .bk-block-content, #bk-block-344 .bk-block-content{ text-align:center; margin:42px 0 18px; }
#bk-block-375 h1, #bk-block-344 h2{ display:inline-block; margin:0; color:var(--tm-brand-dark); font-weight:900; line-height:1.4; }
#bk-block-375 h1{ font-size:clamp(23px,3.6vw,32px); }
#bk-block-344 h2{ font-size:clamp(20px,3vw,27px); }
#bk-block-375 .bk-block-content::after, #bk-block-344 .bk-block-content::after{ content:""; display:block; width:64px; height:4px; margin:14px auto 0; background:var(--tm-brand); border-radius:999px; }
/* 安心・保証/オススメ店の本文をカード化（白カード＋ブランドの左アクセント・たっぷり余白） */
/* 旧 #bk-block-355/781 のカード枠スタイルは撤去（2026-06-10 各ブロックが自前デザインを持つ構成に刷新） */
/* 旧 #bk-block-343 の地区テーブル整形も撤去（同上・ブロック側が自前デザイン保持） */

/* ===== トップ：サービス特徴リスト（時間/1番/代替…）をアイコン付きカードグリッドに ===== */
.s119-feats{ display:grid; grid-template-columns:1fr 1fr; gap:12px; max-width:1000px; margin:18px auto 4px; } /* トップの他セクション(s119-svc等)と左右余白を統一 */
.s119-feat{ display:flex; align-items:center; gap:13px; background:#fff; border:var(--tm-bd2); border-radius:14px; padding:13px 16px; box-shadow:var(--tm-shadow-sm); transition:transform .12s, box-shadow .12s; }
.s119-feat:hover{ transform:translateY(-2px); box-shadow:var(--tm-shadow); }
.s119-feat-ic{ flex:0 0 auto; width:46px; height:46px; display:inline-flex; align-items:center; justify-content:center; font-size:23px; line-height:1; background:#fff0f6; border:1px solid #ffd9ea; border-radius:13px; }
.s119-feat-bd{ display:flex; flex-direction:column; gap:1px; min-width:0; }
.s119-feat-lb{ font-weight:900; color:var(--tm-brand); font-size:var(--fs-sm); letter-spacing:.03em; }
.s119-feat-tx{ color:var(--tm-ink); font-size:var(--fs-base); font-weight:600; line-height:1.45; }
@media (max-width:680px){ .s119-feats{ grid-template-columns:1fr; gap:9px; } .s119-feat-ic{ width:42px; height:42px; font-size:21px; } }

/* ページ先頭へ戻るボタン（右下フローティング）。スクロールでふわっと出現、クリックは慣性スクロール（JSはLayouts/default.ctp末尾） */
.tm-totop{ position:fixed; right:18px; bottom:22px; z-index:1080; width:54px; height:54px; /* 角丸はサイト方針(L438の全廃ルール)に従い直角 */
  border:2.5px solid #fff; background:var(--tm-brand,#e21d7a); color:#fff; cursor:pointer; padding:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  box-shadow:0 6px 18px rgba(226,29,122,.38);
  opacity:0; visibility:hidden; transform:translateY(16px) scale(.9); pointer-events:none;
  transition:opacity .35s ease, transform .45s cubic-bezier(.2,.9,.3,1.4), visibility 0s linear .35s, box-shadow .25s ease; }
.tm-totop.is-show{ opacity:1; visibility:visible; transform:none; pointer-events:auto; transition-delay:0s; }
.tm-totop i{ font-size:20px; line-height:1; }
.tm-totop-txt{ font-size:9.5px; font-weight:800; letter-spacing:.12em; line-height:1.1; }
.tm-totop:hover{ transform:translateY(-4px); box-shadow:0 12px 26px rgba(226,29,122,.45); }
.tm-totop:active{ transform:translateY(-1px) scale(.94); }
/* モバイルは右下にAIチャット起動(.s119-launch 右14px/下66px/幅125px)が常駐するため、その左横に並べる */
@media (max-width:991px){ .tm-totop{ right:150px; bottom:calc(70px + env(safe-area-inset-bottom)); width:48px; height:48px; } }
@media (prefers-reduced-motion:reduce){ .tm-totop{ transition:opacity .2s ease; transform:none; } .tm-totop:hover{ transform:none; } }

/* 営業時間ピル（ヘッダー） */
.tm-hours-pill{ display:inline-flex; align-items:center; font-size:12px; font-weight:800; color:#777; background:#f1edf1; border-radius:999px; padding:5px 12px; white-space:nowrap; }
.tm-hours-pill.is-open{ color:#0d7a44; background:#e7f8ee; }
.tm-hours-pill.is-open::before{ content:''; width:8px; height:8px; border-radius:50%; background:#19b563; margin-right:6px; animation:tmHoursBlink 2s infinite; }
@keyframes tmHoursBlink{ 0%,100%{opacity:1} 50%{opacity:.4} }
@media(max-width: 1100px){ .tm-hours-pill{ display:none; } }

/* ===== 5領域レイアウト（コンテナ幅・領域・シート） ===== */
/* フロントの全コンテナを同一の最大幅に統一（ヘッダー・メイン・フッターの横幅を揃える） */
.tm-body .container { max-width: var(--tm-cmax, 1180px); }
.tm-body .container-fluid { max-width: none; }
.tm-area { padding: 0; }
.tm-area-header { margin-bottom: 4px; }
.tm-area-footer { margin-top: 4px; }
/* 各シートの最小余白（空でも編集モードでボタンが押せる高さ） */
.tm-sheet { min-height: 1px; }
/* 編集モード: 各領域の「新規ブロック」エリアを見やすく */
.tm-sheet .bk-add-block-outer { margin: 8px 0; text-align: center; }
.tm-side .tm-sheet-right .bk-add-block-outer,
.tm-side .tm-sheet-left .bk-add-block-outer { text-align: left; }
/* 空のサイドシート（非編集モード）は詰める */
.tm-side:empty, .tm-side-sticky:empty { display: none; }

/* ===== 編集モードのブロックUI（ホバーで操作） ===== */
body .bk-block { position: relative; }
body.bk-editting-on .bk-block { outline: 1px dashed transparent; transition: outline-color .12s; }
body.bk-editting-on .bk-block:hover { outline-color: #e21d7a; }
/* ブロック操作ツールバー: 常にはっきり見えるように・アイコンは黒・右上に横並び */
/* 編集メニュー: 初期は「<」だけ。クリックで右から＋∧∨📂✕がスライドして出る（下の素材に被らない） */
.bk-controller { position: absolute !important; top: 4px; right: 4px; left: auto !important; bottom: auto !important; z-index: 100; display: flex !important; flex-direction: row !important; align-items: center; gap: 3px; margin: 0 !important; padding: 4px !important; list-style: none; width: auto !important; background: #fff !important; border: 1.5px solid #c9b3c4 !important; border-radius: 9px !important; box-shadow: 0 3px 12px rgba(0,0,0,.22); }
.bk-controller .bk-ctrl-toggle { display: flex !important; align-items: center; justify-content: center; width: 30px; height: 30px; color: #2a1119 !important; background: #f4eef3 !important; border-radius: 6px; text-decoration: none; font-size: 15px; flex: 0 0 auto; }
.bk-controller .bk-ctrl-toggle:hover { background: #e21d7a !important; color: #fff !important; }
.bk-controller .bk-ctrl-toggle i { transition: transform .3s; }
.bk-controller.is-open .bk-ctrl-toggle i { transform: rotate(180deg); }
.bk-controller .bk-ctrl-items { display: flex !important; align-items: center; gap: 3px; margin: 0 !important; padding: 0 !important; list-style: none; max-width: 0; opacity: 0; overflow: hidden; transition: max-width .32s cubic-bezier(.4,0,.2,1), opacity .25s; }
.bk-controller.is-open .bk-ctrl-items { max-width: 240px; opacity: 1; }
.bk-controller .bk-ctrl-items li { margin: 0 !important; float: none !important; padding: 0 !important; background: none !important; }
.bk-controller .bk-ctrl-items a { display: flex !important; align-items: center; justify-content: center; width: 32px; height: 32px; color: #2a1119 !important; background: #f4eef3 !important; border-radius: 6px; text-decoration: none; font-size: 16px; }
.bk-controller .bk-ctrl-items a:hover { background: #e21d7a !important; color: #fff !important; }
.bk-controller a i { color: inherit !important; }
/* 「＋ ブロックを追加」: 左寄せにしてブロック右上のツールバー(＋∧∨📂✕)と横位置を分離し重なりを防ぐ */
.bk-add-block-outer { text-align: left; margin: 8px 0 4px; padding-left: 2px; }
.bk-add-block-outer .button { opacity: .65; }
.bk-add-block-outer .button:hover { opacity: 1; }
/* 編集モードでは各ブロックの下に余白を確保（低いヘッダー/フッターでツールバーと追加ボタンが被らない） */
body.bk-editting-on .bk-sheet .bk-blocks { padding-bottom: 6px; }
body.bk-editting-on .bk-block { margin-bottom: 6px; }
/* 共通領域（ヘッダー/フッター/サイドバー）は編集モードで薄い帯を表示し「全ページ共通」を示す */
body.bk-editting-on .bk-sheet-common { position: relative; }
body.bk-editting-on .bk-sheet-common::before { content: '共通（全ページ）'; position: absolute; top: -2px; left: 6px; z-index: 31; font-size: 10px; font-weight: 800; color: #fff; background: #6b46c1; padding: 1px 7px; border-radius: 0 0 6px 6px; }

/* 編集パネルはフォルダ(📂)ボタンで開閉。常時開きっぱなしを防いでレイアウト崩れを解消 */
.bk-block .bk-editor { display: none; }
.bk-block.bk-open > .bk-editor { display: block; margin-top: 10px; padding: 12px; background: #fff7fb; border: 1px solid #f0c8de; border-radius: 8px; }

/* ブロック全体を覆う透明リンク／移動ハンドルがツールバーのクリックを奪わないよう無効化（編集はフォルダボタンから） */
.bk-editor-opener { display: none !important; }
.bk-block-move-handle { pointer-events: none !important; z-index: 0 !important; }
.bk-controller, .bk-controller * { pointer-events: auto !important; }

/* 削除ボタンは赤（閉じる「>」と区別）。1回目クリックで確認状態（赤背景・点滅）になり、もう一度で削除 */
.bk-ctrl-items a.bk-ctrl-delete { color: #c0392b !important; }
.bk-ctrl-items a.bk-ctrl-delete:hover { background: #c0392b !important; color: #fff !important; }
.bk-ctrl-items a.bk-ctrl-delete.bk-confirm { background: #c0392b !important; color: #fff !important; width: auto !important; padding: 0 12px !important; font-size: 12px !important; font-weight: 800; animation: bkDelBlink .8s infinite; }
.bk-ctrl-items a.bk-ctrl-delete.bk-confirm i { display: none; }
@keyframes bkDelBlink { 0%,100%{ box-shadow: 0 0 0 0 rgba(192,57,43,.5);} 50%{ box-shadow: 0 0 0 5px rgba(192,57,43,0);} }

/* 折りたたみ時（展開していない）は周りの枠・背景・影を消して「<」ボタンだけにする */
.bk-controller:not(.is-open) { background: none !important; border: none !important; box-shadow: none !important; padding: 0 !important; }

/* 見出しブロック H1〜H5 のサイズ階層 */
.tm-main h1, .tm-sheet h1 { font-size: 2.1rem; font-weight: 900; line-height: 1.3; margin: 0 0 .6em; }
.tm-main h2, .tm-sheet h2 { font-size: 1.7rem; font-weight: 900; line-height: 1.35; margin: 1em 0 .5em; }
.tm-main h3, .tm-sheet h3 { font-size: 1.4rem; font-weight: 800; line-height: 1.4; margin: 1em 0 .5em; }
.tm-main h4, .tm-sheet h4 { font-size: 1.18rem; font-weight: 800; line-height: 1.45; margin: 1em 0 .4em; }
.tm-main h5, .tm-sheet h5 { font-size: 1.02rem; font-weight: 800; line-height: 1.5; margin: 1em 0 .4em; color: #555; }

/* 編集ツールバー内の FontAwesome アイコン(ペン等)を他のアイコンと同じ大きさに */
.bk-ctrl-items a .fa-solid, .bk-ctrl-items a .fa-regular { font-size: 15px; line-height: 1; }
