/* clinic-map 本体のヘッダー/フッターに合わせる。数値は実ブラウザでの実測値(2026-08-24) */
.cm-header, .cm-footer, .cm-drawer { font-family: "YakuHanJP","Roboto","Noto Sans JP",Meiryo,sans-serif; }

/* ヘッダー: 高さ56pxは全幅で不変(実測) */
.cm-header {
	position: fixed; left: 0; width: 100%; height: 56px;
	display: flex; align-items: center; justify-content: space-between;
	padding: 0 12px; background-color: #fff;
	border-bottom: solid 1px #dfe5ed; z-index: 9000; box-sizing: border-box;
}
@media only screen and (max-width: 390px) { .cm-header { padding: 0 10px; } }
@media only screen and (min-width: 1024px) and (max-width: 1366px) { .cm-header { padding: 0 10px; } }

.cm-header-spacer { height: 56px; }
.cm-logo img { width: 184px; height: 20px; display: block; }
@media only screen and (min-width: 1024px) { .cm-logo img { width: 234px; height: 25px; } }

.cm-right { display: flex; align-items: center; gap: 16px; }

/* アイコン+ラベルの共通形(9px・実測) */
.cm-ico { display: flex; flex-direction: column; align-items: center; gap: 2px; text-decoration: none; cursor: pointer; }
.cm-ico svg { width: 28px; height: 28px; }
.cm-ico span { font-size: 9px; line-height: 1; color: #6a757d; white-space: nowrap; }
.cm-ico.is-login span { color: #4ebbe0; font-weight: 500; }

/* 1419px以下: ログイン / 会員登録 / MENU */
.cm-mobile { display: flex; align-items: center; gap: 16px; }
/* 他の2つのアイコンが28x28なので、バー3本(3+4+3+4+3=17px)を28x28の箱の中央に置いて高さを揃える */
.cm-burger { display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 4px; width: 28px; height: 28px; }
.cm-burger i { display: block; width: 22px; height: 3px; background-color: rgba(176,176,177,.9); border-radius: 2px; }

/* 1420px以上: ナビ + 予約一覧/お気に入り + 新規登録/ログイン */
.cm-nav, .cm-desktop { display: none; }
.cm-nav a {
	display: flex; align-items: center; height: 56px; padding: 0 8px; border-radius: 3px;
	font-size: 15px; color: #334d65; text-decoration: none; white-space: nowrap;
}
.cm-nav a.is-dim { color: #c3c8cb; }
/* 現在ページ。本体は NavItemTitle の色だけを TINT_SECONDARY に変える(下線も背景も無い) */
.cm-nav a.is-active { color: #4ebbe0; }
/* 押下時。本体の NavItem:active と同値。デスクトップとドロワーの両方に効かせる */
.cm-nav a:active, .cm-dropdown-btn:active { background-color: #e7f3f6; }

/* 会員情報のドロップダウン(本体 DropdownButton / DropdownContent と同値) */
.cm-dropdown { position: relative; display: flex; align-items: center; height: 56px; }
.cm-dropdown-btn { display: flex; align-items: center; gap: 6px; padding: 10px 8px; margin-left: 6px;
	font-size: 15px; color: #243544; white-space: nowrap; cursor: pointer; }
.cm-dropdown-btn.is-fade { opacity: .3; }
.cm-dropdown-body { display: none; position: absolute; top: 56px; left: 0; width: 144px; background-color: #fff;
	box-shadow: 0 8px 16px 0 rgba(0,0,0,.1); border-bottom-left-radius: 8px; border-bottom-right-radius: 8px;
	z-index: 100000000; }   /* GMOのバー(99999999)より上、ドロワー(100000001)より下 */
.cm-dropdown:hover .cm-dropdown-body { display: block; }
.cm-dropdown-body a { display: block; height: 44px; padding: 10px 12px 10px 24px; box-sizing: border-box;
	border: 1px solid #CFDDEA; border-bottom: none; color: #243544; font-size: 15px; text-decoration: none; opacity: .3; }
.cm-dropdown-body a:last-child { border-bottom: 1px solid #CFDDEA; }
.cm-btns { display: flex; align-items: center; gap: 12px; }
.cm-btn { display: inline-flex; align-items: center; justify-content: center; height: 32px; border-radius: 4px; font-size: 14px; text-decoration: none; box-sizing: border-box; }
.cm-btn-signup { width: 96px; background-color: #ffa819; color: #fff; border: none; }
.cm-btn-login { width: 80px; background-color: #f8fafb; color: #4ebbe0; border: 1px solid #4ebbe0; }

/* 本体の XXL_PC に合わせる(ナビの余白圧縮により1440から下げられた) */
@media (min-width: 1420px) {
	.cm-nav { display: flex; align-items: center; }
	.cm-desktop { display: flex; align-items: center; gap: 12px; }
	.cm-mobile { display: none; }
}

/* ドロワー: 本体は rc-drawer(placement=right, width=90%, mask rgba(0,0,0,.5))。
   静的HTMLではJSを持ち込まず、チェックボックスで同じ見た目・同じ動きを作る */
#cm-menu-toggle, #cm-acc-toggle { display: none; }
/* ドロワー展開中の背面スクロール止めは JS 側で body を固定して行う。
   overflow:hidden だと文書のスクロール高が縮み、スクロール位置がクランプされて画面が飛ぶ */
/* 背面スクロールの抑止は body の箱をいじらない。position:fixed も overflow:hidden も
   body の幅/スクロール高を変え、.l-content の margin:auto が再計算されて内容が数十px跳ねる。
   代わりにドロワー外のスクロール操作をJSで無効化する(レイアウトは一切変えない) */
.cm-drawer { overscroll-behavior: contain; }
/* ヘッダーとその上のGMOバーは暗くしない(本体もマスクより上に描画されるため明るいまま) */
.cm-mask { position: fixed; top: var(--cm-header-bottom, 56px); left: 0; right: 0; bottom: 0; background: rgba(0,0,0,.5); opacity: 0; visibility: hidden; transition: opacity .3s ease; z-index: 100000000; }
.cm-drawer { position: fixed; top: var(--cm-header-bottom, 56px); right: 0; width: 90%; height: calc(100% - var(--cm-header-bottom, 56px)); background: #fff; overflow-y: auto; transform: translateX(100%); transition: transform .3s ease; z-index: 100000001; }
#cm-menu-toggle:checked ~ .cm-mask { opacity: 1; visibility: visible; }
#cm-menu-toggle:checked ~ .cm-drawer { transform: translateX(0); }
@media (min-width: 1420px) { .cm-mask, .cm-drawer { display: none; } }

/* 行: 高さ56px・下線#CFDDEA・16px・#243544 (すべて実測値) */
.cm-row { display: flex; align-items: center; gap: 12px; height: 56px; padding: 0 12px; box-sizing: border-box;
	border-bottom: 1px solid #CFDDEA; font-size: 16px; color: #334d65; text-decoration: none; }
/* svg はインライン既定でベースラインに乗り、テキストと上下がずれる。block化して中央に揃える */
.cm-row .cm-lead, .cm-row .cm-arrow { display: flex; align-items: center; flex-shrink: 0; }
/* 予約一覧だけ 28x28 のキャンバスに 23.33 の図形で、同じ箱でも他より小さく見える(1/0.833≒1.2) */
.cm-row .cm-lead svg[viewBox="0 0 28 28"] { transform: scale(1.2); }
.cm-row svg, .cm-ico svg { display: block; }
.cm-row .cm-arrow { margin-left: auto; }
.cm-row:active { background-color: #e7f3f6; }
.cm-row.is-dim { opacity: .7; }      /* 本体もドロワー内は色ではなく opacity で淡くする */
.cm-row.is-active { color: #4ebbe0; }
.cm-row.is-child { padding-left: 40px; }
/* ハンバーガー -> X (本体 hamburgerMenu.tsx と同じ変形量) */
.cm-burger i { transition: all .2s ease; }
#cm-menu-toggle:checked ~ .cm-header .cm-burger i:nth-child(1) { transform: rotate(-45deg) translate(-4px, 6px); }
#cm-menu-toggle:checked ~ .cm-header .cm-burger i:nth-child(2) { opacity: 0; }
#cm-menu-toggle:checked ~ .cm-header .cm-burger i:nth-child(3) { transform: rotate(45deg) translate(-4px, -6px); }

/* 会員情報のアコーディオン(既定は開) */
.cm-acc-label { cursor: pointer; }
/* 開閉のアニメーションは grid-template-rows で高さを補間する(内側に overflow:hidden の器が要る) */
.cm-acc-body { display: grid; grid-template-rows: 1fr; opacity: 1;
	transition: grid-template-rows .3s cubic-bezier(.25, .8, .25, 1), opacity .2s; }
.cm-acc-inner { overflow: hidden; min-height: 0; }
.cm-acc-label .cm-plus { display: none; }
#cm-acc-toggle:checked ~ .cm-drawer .cm-acc-body { grid-template-rows: 0fr; opacity: 0; }
#cm-acc-toggle:checked ~ .cm-drawer .cm-acc-label .cm-minus { display: none; }
#cm-acc-toggle:checked ~ .cm-drawer .cm-acc-label .cm-plus { display: flex; }

/* バナー */
.cm-banners { display: flex; flex-direction: column; gap: 12px; padding: 0 12px 24px; }
.cm-banners a { display: block; }
.cm-banners img { width: 100%; height: auto; display: block; }
.cm-drawer-foot { padding: 24px 16px; display: flex; flex-direction: column; align-items: center; gap: 16px; }
.cm-drawer-foot .cm-btn-register { display: inline-flex; align-items: center; justify-content: center;
	width: 180px; height: 44px; border-radius: 8px; background-color: #ffa819; color: #fff; font-size: 14px; text-decoration: none; }
.cm-drawer-foot .cm-foot-links { display: flex; gap: 16px; }
.cm-drawer-foot .cm-foot-links a { font-size: 14px; color: #243544; text-decoration: none; }

/* 記事が0件のときの表示。SWELL既定は <p> 1行だけで素っ気ないため差し替える。
   デザイン「受診できるクリニックが無い場合」の空状態と同じ組み方にしている */
/* 記事0件の画面では、SWELLの本文フレーム(白いカード)だけが浮いて見えるので外す。
   :has() で「空状態を含む本文」だけに限定し、記事ページのフレームは残す */
.-frame-on .l-mainContent:has(.cm-empty) { background: transparent; box-shadow: none; }

/* 記事0件のページは中身が少なく、そのままだとフッターの下に body の背景色が
   帯として残って境目が見える。この画面だけ高さを持たせてフッターを押し下げる
   (記事ページ側の背景は変えたくないため、body には触らない) */
.cm-empty { position: relative; padding: 48px 16px 64px; text-align: center;
	min-height: 40vh; display: flex; flex-direction: column;
	align-items: center; justify-content: center; }
/* デザインにある背面のぼかした楕円。要素を足さず背景だけで描く */
.cm-empty::before { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
	width: 480px; height: 260px; max-width: 100%; border-radius: 50%;
	background-color: rgba(252, 113, 13, 0.1); filter: blur(50px); pointer-events: none; }
.cm-empty > * { position: relative; }
.cm-empty-title { margin: 0 0 8px; font-size: 16px; font-weight: bold; line-height: 24px; color: #243544; }
.cm-empty-text { margin: 0 0 8px; font-size: 16px; line-height: 24px; color: #243544; }
/* 実体が 256x140 なので等倍で出す(128x70 に縮めると小さく見えるため) */
.cm-empty-img { display: block; width: 256px; height: 140px; max-width: 100%; margin: 8px auto 24px; }
.cm-empty a { display: inline-flex; align-items: center; justify-content: center; min-width: 180px; height: 44px;
	padding: 0 24px; border-radius: 8px; background-color: #f8fafb; border: 1px solid #4ebbe0;
	color: #4ebbe0; font-size: 14px; text-decoration: none; }

/* SNSシェア(本体 SNSShare.tsx と同値) */
.cm-share { display: flex; gap: 20px; justify-content: center; align-items: center; padding: 40px 0; background-color: #fff; border-top: 1px solid #dfe5ed; }
.cm-share p { font-size: 16px; font-weight: bold; line-height: 1.58; color: #6a757d; margin: 0; }
.cm-share a { display: inline-flex; }
@media screen and (max-width: 600px) { .cm-share { padding: 20px 0; } }

/* フッター: 62px(>=768) / 折り返して92px(375) はこの指定から自然に決まる */
.cm-footer-bar { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px 24px; padding: 24px 70px; background: #35363a; box-sizing: border-box; }
.cm-footer-bar a { color: #ffffff; font-size: 14px; text-decoration: none; text-align: center; }

.cm-seal { width: 100%; background-color: #fff; border-top: 1px solid #dfe5ed; }
.cm-seal-logo { width: 100%; text-align: center; }
.cm-seal-logo svg { margin: 20px 0 20px 10px; }
.cm-seal-divider { height: 1px; background-color: #dfe5ed; margin: 0 10px; }
/* GMOスクリプトが付ける枠線を消す(本体でも枠なしで表示される) */
.gmoGroupSecurity_box { border: none; }
/* SWELLが直接出力する空の<footer id="footer">(中身はpartsで空にしている) */
#footer.l-footer { display: none; }
/* ページがビューポートより短いとき、body(#f5f8fa)がGMOブロックの下に露出する。
   html側に背景を置くと body の背景はキャンバスへ伝播しなくなり、余白は .gmoGroupHeader と同色になる */
html { background-color: #fafafa; }
@media screen and (min-width: 769px) { .cm-seal-logo { max-width: 1040px; margin: 0 auto; text-align: left; } }
#custom-gmo-security { width: 100%; }
.cm-seal-imgs { min-height: 66px; display: flex; justify-content: center; align-items: center; padding: 40px 0; gap: 10px; }
.cm-seal-imgs > div { width: 100px; height: 50px; }
