/* ==========================================================================
   ちゅらマップ メインスタイル
   --------------------------------------------------------------------------
   ・クラス名はすべて「cm-」で始まります（他のテーマ・プラグインと衝突しないため）。
   ・色やフォント、角丸などは「1. デザイントークン」の変数で一括変更できます。
     ブランドカラーはロゴの4色（ピンク・グリーン・ブルー・オレンジ）です。
   ・画面幅の切り替え：600px / 768px / 1024px / 1180px（ヘッダーメニュー）
   目次
     1. デザイントークン        13. おすすめ
     2. ベース                  14. SNS
     3. 共通部品                15. 店舗掲載の案内
     4. ボタン・チップ          16. フッター
     5. ヘッダー・メニュー      17. パンくず
     6. 検索フォーム            18. 一覧ページ
     7. ファーストビュー        19. 記事ページ
     8. セクション見出し        20. 固定ページ・404・コメント
     9. 動く海（背景アニメ）    21. 管理者向けお知らせ
    10. イラストマップ          22. 動きを減らす設定
    11. 地図の結果
    12. カテゴリー・記事カード
   ========================================================================== */

/* 1. デザイントークン
   ========================================================================== */
:root {
	/* ブランドカラー（ロゴより） */
	--cm-pink: #ff66c4;
	--cm-green: #7ed957;
	--cm-blue: #38b6ff;
	--cm-orange: #ff914d;

	/* 背景用の淡い色 */
	--cm-pink-soft: #fff0f8;
	--cm-green-soft: #effaea;
	--cm-blue-soft: #ebf7ff;
	--cm-orange-soft: #fff3ea;

	/* 文字に使える濃い色（白背景で読みやすい濃さ） */
	--cm-pink-deep: #b81f7f;
	--cm-green-deep: #2f7d25;
	--cm-blue-deep: #0a6aa8;
	--cm-orange-deep: #b54d10;

	/* ボタン */
	--cm-cta: #d42f8b;
	--cm-cta-dark: #b0236f;
	--cm-sea: #0a6aa8;
	--cm-sea-dark: #08578a;
	--cm-navy: #0f3550;
	--cm-highlight: #ffe9a8;

	/* ベース */
	--cm-bg: #ffffff;
	--cm-bg-alt: #f4f9fc;
	--cm-sand: #fbf5e8;
	--cm-ink: #1c3344;
	--cm-text: #3a4955;
	--cm-muted: #66737e;
	--cm-line: #e2e8ed;

	--cm-font: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Noto Sans CJK JP", "Yu Gothic UI", "Yu Gothic", Meiryo, sans-serif;
	--cm-font-head: "Zen Kaku Gothic New", var(--cm-font);

	--cm-radius-s: 8px;
	--cm-radius: 14px;
	--cm-radius-l: 20px;
	--cm-shadow: 0 4px 18px rgba(16, 42, 67, 0.08);
	--cm-shadow-hover: 0 12px 30px rgba(16, 42, 67, 0.14);
	--cm-container: 1180px;
	--cm-gutter: 16px;
	--cm-header-h: 64px;

	--cm-brand-bar: linear-gradient(90deg, var(--cm-pink) 0 25%, var(--cm-green) 25% 50%, var(--cm-blue) 50% 75%, var(--cm-orange) 75% 100%);
}

@media (min-width: 768px) {
	:root {
		--cm-gutter: 24px;
		--cm-header-h: 72px;
	}
}

/* 色の組み合わせ（.cm-color-pink など。地域・カテゴリーの色設定に対応） */
.cm-color-pink { --c: var(--cm-pink); --c-soft: var(--cm-pink-soft); --c-deep: var(--cm-pink-deep); }
.cm-color-blue { --c: var(--cm-blue); --c-soft: var(--cm-blue-soft); --c-deep: var(--cm-blue-deep); }
.cm-color-green { --c: var(--cm-green); --c-soft: var(--cm-green-soft); --c-deep: var(--cm-green-deep); }
.cm-color-orange { --c: var(--cm-orange); --c-soft: var(--cm-orange-soft); --c-deep: var(--cm-orange-deep); }

/* 2. ベース
   ========================================================================== */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	overflow-x: clip;
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--cm-header-h) + 12px);
}

body {
	margin: 0;
	background: #f9f6ee; /* ページ全体の背景（2-2）の下端の砂浜色とそろえる */
	color: var(--cm-text);
	font-family: var(--cm-font);
	font-size: 16px;
	line-height: 1.8;
	overflow-x: clip;
	-webkit-font-smoothing: antialiased;
}

body.cm-nav-open {
	overflow: hidden;
}

img,
svg,
video {
	max-width: 100%;
	height: auto;
	vertical-align: middle;
}

a {
	color: var(--cm-blue-deep);
	text-underline-offset: 0.2em;
}

a:hover {
	color: var(--cm-cta);
}

:focus-visible {
	outline: 3px solid var(--cm-blue);
	outline-offset: 2px;
	border-radius: 6px;
}

button,
input,
select,
textarea {
	font: inherit;
	color: inherit;
}

h1,
h2,
h3,
h4 {
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	line-height: 1.45;
}

.cm-main {
	display: block;
	min-height: 50vh;
}

/* 2-2. ページ全体の背景（島と海をイメージした淡い地に、薄く大きな沖縄のイラストを所々に）
   ・イラスト：assets/images/bg/*.svg（色は薄く描いてあるため、透明度の指定は不要）
   ・位置：ページの高さに対する % で指定（ページの長さが変わっても所々に散らばります）
   ・消す／増やす：下の background の行を削除・追加
   ========================================================================== */
.cm-main {
	position: relative;
	background-color: #f5fbfc;
	background-image:
		url("../images/bg/hibiscus.svg"),
		url("../images/bg/monstera.svg"),
		url("../images/bg/island.svg"),
		url("../images/bg/palm.svg"),
		url("../images/bg/turtle.svg"),
		url("../images/bg/hibiscus.svg"),
		url("../images/bg/waves.svg"),
		url("../images/bg/monstera.svg"),
		url("../images/bg/island.svg"),
		url("../images/bg/waves.svg"),
		url("../images/bg/ripple.svg"),
		linear-gradient(180deg, #f2fafc 0%, #f8fcfb 40%, #f3fafb 70%, #f9f6ee 100%);
	background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, repeat, no-repeat;
	background-position:
		right -140px top 9%,
		left -130px top 20%,
		right -60px top 31%,
		left -90px top 42%,
		right 4% top 52%,
		left -150px top 63%,
		right -40px top 72%,
		right -150px top 84%,
		left -40px top 94%,
		left 6% top 6%,
		0 0,
		0 0;
	background-size: 460px, 380px, 440px, 400px, 220px, 520px, 360px, 420px, 420px, 300px, 260px, 100% 100%;
}

@media (max-width: 767px) {
	.cm-main {
		background-size: 260px, 220px, 260px, 230px, 140px, 280px, 220px, 240px, 240px, 200px, 200px, 100% 100%;
		background-position:
			right -90px top 9%,
			left -90px top 20%,
			right -40px top 31%,
			left -70px top 42%,
			right 2% top 52%,
			left -100px top 63%,
			right -30px top 72%,
			right -100px top 84%,
			left -30px top 94%,
			left 4% top 6%,
			0 0,
			0 0;
	}
}

/* トップページ：上の背景から波の装飾をすべて外したもの
   （ページ全体に散らした小さな波模様・波のイラスト・島と波のイラスト2つ〈地図の右・店舗掲載のご案内の左上〉）と、「新着記事」右の海亀・左のハイビスカス。
   海亀は「新着記事」の左側に移しています（下の .home .cm-section--latest）。 */
body.home .cm-main {
	background-image:
		url("../images/bg/hibiscus.svg"),
		url("../images/bg/monstera.svg"),
		url("../images/bg/palm.svg"),
		url("../images/bg/monstera.svg"),
		linear-gradient(180deg, #f2fafc 0%, #f8fcfb 40%, #f3fafb 70%, #f9f6ee 100%);
	background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat;
	background-position:
		right -140px top 9%,
		left -130px top 20%,
		left -90px top 42%,
		right -150px top 84%,
		0 0;
	background-size: 460px, 380px, 400px, 420px, 100% 100%;
}

/* 「新着記事」の海亀（以前ハイビスカスがあった左側に） */
.home .cm-section--latest {
	background: url("../images/bg/turtle.svg") no-repeat left -40px top 22% / 220px;
}

@media (max-width: 767px) {
	body.home .cm-main {
		background-size: 260px, 220px, 230px, 240px, 100% 100%;
		background-position:
			right -90px top 9%,
			left -90px top 20%,
			left -70px top 42%,
			right -100px top 84%,
			0 0;
	}

	.home .cm-section--latest {
		background-position: left -50px top 18%;
		background-size: 140px;
	}
}

/* 一覧ページ（カテゴリー・地域・店舗一覧・タグ・検索・記事一覧）は、イラストなしのシンプルな背景 */
body.archive,
body.archive .cm-main,
body.search,
body.search .cm-main,
body.blog,
body.blog .cm-main,
body.category,
body.category .cm-main {
	background-color: #f7f9fa;
	background-image: none;
}

/* 3. 共通部品
   ========================================================================== */
.cm-container {
	width: 100%;
	max-width: calc(var(--cm-container) + var(--cm-gutter) * 2);
	margin-inline: auto;
	padding-inline: var(--cm-gutter);
}

.cm-visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.cm-skip-link {
	position: absolute;
	top: -100px;
	left: 12px;
	z-index: 2000;
	padding: 10px 16px;
	background: var(--cm-ink);
	color: #fff;
	border-radius: var(--cm-radius-s);
}

.cm-skip-link:focus {
	top: 12px;
	color: #fff;
}

.cm-icon {
	flex-shrink: 0;
}

.cm-flip {
	transform: scaleX(-1);
}

.cm-illust {
	display: inline-block;
}

/* 4. ボタン・チップ
   ========================================================================== */
.cm-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 48px;
	padding: 10px 26px;
	border: 1px solid transparent;
	border-radius: 999px;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: 0.04em;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.cm-btn:hover {
	transform: translateY(-2px);
}

.cm-btn--coral {
	background: var(--cm-cta);
	color: #fff;
	box-shadow: 0 6px 18px rgba(212, 47, 139, 0.28);
}

.cm-btn--coral:hover {
	background: var(--cm-cta-dark);
	color: #fff;
}

.cm-btn--sea {
	background: var(--cm-sea);
	color: #fff;
	box-shadow: 0 6px 18px rgba(10, 106, 168, 0.25);
}

.cm-btn--sea:hover {
	background: var(--cm-sea-dark);
	color: #fff;
}

.cm-btn--outline {
	background: #fff;
	border-color: #c9d5de;
	color: var(--cm-ink);
}

.cm-btn--outline:hover {
	border-color: var(--cm-sea);
	color: var(--cm-sea);
}

.cm-btn--small {
	min-height: 44px;
	padding: 8px 18px;
	font-size: 14px;
}

.cm-btn--large {
	min-height: 56px;
	padding: 12px 24px;
	font-size: 16px;
}

@media (min-width: 600px) {
	.cm-btn--large {
		min-height: 60px;
		padding: 14px 36px;
		font-size: 17px;
	}
}

.cm-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 40px;
	padding: 6px 14px;
	border: 1px solid var(--cm-line);
	border-radius: 999px;
	background: #fff;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	text-decoration: none;
	transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.cm-chip:hover {
	border-color: var(--cm-blue);
	color: var(--cm-blue-deep);
}

.cm-chip.is-empty {
	color: var(--cm-muted);
	font-weight: 500;
}

.cm-chip.is-active {
	background: var(--cm-sea);
	border-color: var(--cm-sea);
	color: #fff;
}

.cm-chip[class*="cm-color-"] {
	border-color: transparent;
	background: var(--c-soft);
	color: var(--c-deep);
}

.cm-chip__count {
	display: inline-grid;
	place-items: center;
	min-width: 22px;
	height: 22px;
	padding: 0 6px;
	border-radius: 999px;
	background: var(--cm-blue-soft);
	color: var(--cm-blue-deep);
	font-size: 12px;
}

.cm-chip.is-active .cm-chip__count {
	background: rgba(255, 255, 255, 0.22);
	color: #fff;
}

/* 5. ヘッダー・メニュー
   ========================================================================== */
.cm-header {
	position: sticky;
	top: 0;
	z-index: 900;
	background: rgba(255, 255, 255, 0.97);
	box-shadow: 0 1px 0 var(--cm-line), 0 6px 20px rgba(16, 42, 67, 0.04);
	/* 注意：backdrop-filter / transform を付けると、スマホ用メニュー（position: fixed）が
	   ヘッダーの中に閉じ込められて表示が崩れるため使用しません。 */
}

.cm-header::before {
	content: "";
	display: block;
	height: 3px;
	background: var(--cm-brand-bar);
}

.admin-bar .cm-header {
	top: var(--wp-admin--admin-bar--height, 0);
}

@media (max-width: 600px) {
	.admin-bar .cm-header {
		top: 0;
	}
}

.cm-header__inner {
	display: flex;
	align-items: center;
	gap: 16px;
	max-width: 1320px;
	min-height: calc(var(--cm-header-h) - 3px);
	margin-inline: auto;
	padding-inline: var(--cm-gutter);
}

.cm-logo {
	margin: 0;
	font-size: inherit;
	line-height: 1;
}

.cm-logo__link {
	display: inline-flex;
	align-items: center;
	color: var(--cm-ink);
	text-decoration: none;
}

.cm-logo--header .cm-logo__image {
	width: auto;
	height: 38px;
	max-width: 190px;
	object-fit: contain;
}

@media (min-width: 768px) {
	.cm-logo--header .cm-logo__image {
		height: 46px;
		max-width: 230px;
	}
}

.cm-header__toggle {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 52px;
	height: 48px;
	margin-left: auto;
	padding: 0;
	border: 1px solid var(--cm-line);
	border-radius: 12px;
	background: #fff;
	color: var(--cm-ink);
	cursor: pointer;
}

.cm-header__toggle-label {
	font-size: 10px;
	font-weight: 700;
	line-height: 1.2;
}

/* メニュー（スマートフォン・タブレット：右から開くパネル） */
.cm-nav {
	position: fixed;
	inset: 0 0 0 auto;
	z-index: 1001;
	width: min(88vw, 380px);
	background: #fff;
	box-shadow: -10px 0 30px rgba(16, 42, 67, 0.15);
	transform: translateX(105%);
	visibility: hidden;
	transition: transform 0.3s ease, visibility 0.3s;
	overflow-y: auto;
	overscroll-behavior: contain;
}

.cm-nav.is-open {
	transform: translateX(0);
	visibility: visible;
}

.cm-nav__panel {
	display: flex;
	flex-direction: column;
	gap: 18px;
	padding: 16px 18px 32px;
}

.cm-nav__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
}

.cm-nav__title {
	margin: 0;
	font-weight: 700;
	color: var(--cm-ink);
}

.cm-nav__close {
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	border: 1px solid var(--cm-line);
	border-radius: 12px;
	background: #fff;
	color: var(--cm-ink);
	cursor: pointer;
}

.cm-nav__list,
.cm-nav__list .sub-menu {
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-nav__list a {
	position: relative;
	display: flex;
	align-items: center;
	min-height: 52px;
	padding: 10px 44px 10px 6px;
	border-bottom: 1px solid var(--cm-line);
	color: var(--cm-ink);
	font-size: 16px;
	font-weight: 700;
	text-decoration: none;
}

@media (max-width: 1179px) {
	.cm-nav__list a::after {
		content: "";
		position: absolute;
		right: 12px;
		width: 8px;
		height: 8px;
		border-top: 2px solid var(--cm-blue);
		border-right: 2px solid var(--cm-blue);
		transform: rotate(45deg);
	}
}

.cm-nav__list .sub-menu a {
	padding-left: 22px;
	font-size: 15px;
}

.cm-nav__list .current-menu-item > a {
	color: var(--cm-blue-deep);
}

.cm-nav__extra {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.cm-nav__cta {
	width: 100%;
}

/* 店舗会員のログイン／マイページ（スマホ：文字つきボタン、PC：丸いアイコン） */
.cm-nav__member {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 44px;
	padding: 0 18px;
	border: 1px solid var(--cm-line);
	border-radius: 999px;
	background: #fff;
	color: var(--cm-ink);
	font-weight: 700;
	font-size: 14px;
	text-decoration: none;
	transition: background-color 0.2s ease, color 0.2s ease;
}

.cm-nav__member:hover,
.cm-nav__member:focus-visible {
	color: #fff;
	background: var(--cm-sea);
}

.cm-nav-overlay {
	position: fixed;
	inset: 0;
	z-index: 1000;
	background: rgba(15, 53, 80, 0.45);
}

.cm-nav-overlay[hidden] {
	display: none;
}

.cm-social {
	display: flex;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-social__link {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	border: 1px solid var(--cm-line);
	border-radius: 50%;
	background: #fff;
	color: var(--cm-ink);
	transition: background-color 0.2s ease, color 0.2s ease, transform 0.2s ease;
}

.cm-social__link:hover {
	color: #fff;
	background: var(--cm-sea);
	border-color: var(--cm-sea);
	transform: translateY(-2px);
}

@media (min-width: 1180px) {
	.cm-header__toggle,
	.cm-nav__head,
	.cm-nav__search,
	.cm-nav-overlay {
		display: none !important;
	}

	.cm-nav {
		position: static;
		flex: 1;
		width: auto;
		background: none;
		box-shadow: none;
		transform: none;
		visibility: visible;
		overflow: visible;
	}

	.cm-nav__panel {
		flex-direction: row;
		align-items: center;
		gap: 12px;
		padding: 0;
	}

	.cm-nav__main {
		margin-inline: auto;
	}

	.cm-nav__list {
		display: flex;
		gap: 2px;
	}

	.cm-nav__list > li {
		position: relative;
	}

	.cm-nav__list a {
		min-height: 44px;
		padding: 8px 12px;
		border: 0;
		font-size: 15px;
		white-space: nowrap;
	}

	.cm-nav__list > li > a::after {
		content: "";
		position: absolute;
		display: block;
		top: auto;
		right: 12px;
		bottom: 6px;
		left: 12px;
		width: auto;
		height: 2px;
		border: 0;
		background: var(--cm-brand-bar);
		transform: scaleX(0);
		transform-origin: left;
		transition: transform 0.25s ease;
	}

	.cm-nav__list > li > a:hover::after,
	.cm-nav__list > .current-menu-item > a::after {
		transform: scaleX(1);
	}

	.cm-nav__list a:hover {
		color: var(--cm-ink);
	}

	.cm-nav__list .sub-menu {
		position: absolute;
		top: 100%;
		left: 0;
		min-width: 200px;
		padding: 8px;
		border-radius: var(--cm-radius);
		background: #fff;
		box-shadow: var(--cm-shadow-hover);
		opacity: 0;
		visibility: hidden;
		transform: translateY(6px);
		transition: opacity 0.2s, transform 0.2s, visibility 0.2s;
	}

	.cm-nav__list .sub-menu a::after {
		display: none;
	}

	.cm-nav__list li:hover > .sub-menu,
	.cm-nav__list li:focus-within > .sub-menu {
		opacity: 1;
		visibility: visible;
		transform: none;
	}

	.cm-nav__extra {
		flex-direction: row;
		align-items: center;
		gap: 10px;
	}

	.cm-social--header .cm-social__link {
		width: 40px;
		height: 40px;
	}

	.cm-nav__cta {
		width: auto;
		white-space: nowrap;
	}

	.cm-nav__member {
		width: 40px;
		height: 40px;
		min-height: 0;
		padding: 0;
	}

	.cm-nav__member-label {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		white-space: nowrap;
	}
}

/* 6. 検索フォーム
   ========================================================================== */
.cm-search {
	position: relative;
	display: flex;
	gap: 8px;
}

.cm-search__field {
	position: relative;
	flex: 1;
	min-width: 0;
}

.cm-search__icon {
	position: absolute;
	top: 50%;
	left: 14px;
	color: var(--cm-blue-deep);
	transform: translateY(-50%);
	pointer-events: none;
}

.cm-search__input,
.cm-select,
.cm-input {
	width: 100%;
	min-height: 48px;
	padding: 10px 14px;
	border: 1px solid #d5dee5;
	border-radius: 10px;
	background: #fff;
	font-size: 16px; /* iOSのズーム防止 */
	line-height: 1.4;
}

.cm-search__input {
	padding-left: 44px;
	-webkit-appearance: none;
	appearance: none;
}

.cm-select {
	padding-right: 40px;
	-webkit-appearance: none;
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231c3344' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 14px center;
	background-size: 18px;
	text-overflow: ellipsis;
}

.cm-search__field .cm-select {
	padding-left: 44px;
}

.cm-search__input:focus,
.cm-select:focus,
.cm-input:focus {
	border-color: var(--cm-blue);
	outline: 3px solid rgba(56, 182, 255, 0.2);
	outline-offset: 0;
}

.cm-search__submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-width: 52px;
	min-height: 48px;
	padding: 0 16px;
	border: 0;
	border-radius: 10px;
	background: var(--cm-cta);
	color: #fff;
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
	transition: background-color 0.2s;
}

.cm-search__submit:hover {
	background: var(--cm-cta-dark);
}

/* 7. ファーストビュー（奥行きのある沖縄の海の風景）
   --------------------------------------------------------------------------
   ・飾りの位置は % 、大きさは「cqw / cqh」（ファーストビューの幅・高さに対する割合）で指定しています。
     画面の大きさが変わっても、全体の配置のバランスが保たれます。
   ・位置を変える：各クラスの left / right / top / bottom
   ・大きさを変える：width（または height）
   ・飾りを消す：該当クラスに display: none;
   ========================================================================== */
@font-face {
	font-family: "ChuramapDisplay";
	src: url("../fonts/anton-subset.woff2") format("woff2");
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}

.cm-hc {
	position: relative;
	background: transparent;
}

.cm-hc__stage {
	--cm-sy: 0;
	position: relative;
	height: clamp(560px, calc(100svh - 72px), 900px);
	overflow: hidden;
	container-type: size;
	isolation: isolate;
	background: #bfeaf0;
}

/* ---- 奥行きの層（奥：空と海 → 中：岬 → 手前：浜辺と植物） ----
   ・--ds … スクロールしたときに下へずれる量（大きいほど奥に見える）。左右には動きません
   ・動き：assets/js/main.js「メインビジュアル」（動きを減らす設定のときは止まります） */
.cm-hc__layer {
	--ds: 0;
	position: absolute;
	inset: 0;
	pointer-events: none;
	translate: 0 calc(var(--cm-sy) * var(--ds) * 1px);
	will-change: translate;
}

.cm-hc__layer--bg { --ds: 150; z-index: 1; }
.cm-hc__layer--mid { --ds: 95; z-index: 2; }
.cm-hc__layer--sea { --ds: 60; z-index: 3; }
.cm-hc__layer--fore { --ds: 15; z-index: 4; }

.cm-hc__pic {
	display: contents;
}

.cm-hc__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 50%;
	scale: 1.07;
	user-select: none;
}

/* 表示したときに、層ごとに少しずつ時間差で現れる */
.cm-hc__img--bg {
	animation: cm-hc-zoom 2s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

.cm-hc__img--mid {
	animation: cm-hc-rise-in 1.6s cubic-bezier(0.2, 0.7, 0.2, 1) 0.15s both;
}

.cm-hc__img--fore {
	animation: cm-hc-rise-in 1.4s cubic-bezier(0.2, 0.7, 0.2, 1) 0.3s both;
}

/* ---- 青空 ⇄ 夕暮れ（マジックアワー）をくり返す ----
   1回の流れ（--cm-dusk-cycle、初期値 24秒）：
     青空（0〜20%）→ 夕暮れへ（20〜45%）→ 夕暮れ（45〜65%）→ 青空へ（65〜90%）→ 青空（90〜100%）
   ・岬・海・手前の層も、夕日の色に染まっては戻ります（filter）。太陽は沈んで、また昇ります
   ・「動きを減らす」設定のときは青空のまま止まります */
.cm-hc {
	--cm-dusk-cycle: 24s;
	--cm-dusk-delay: 1.5s;
}

.cm-hc__img--dusk {
	opacity: 0;
	animation: cm-hc-dusk var(--cm-dusk-cycle) ease-in-out var(--cm-dusk-delay) infinite;
}

.cm-hc__layer--mid,
.cm-hc__layer--sea,
.cm-hc__layer--fore {
	animation: cm-hc-dusk-tint var(--cm-dusk-cycle) ease-in-out var(--cm-dusk-delay) infinite;
}

.cm-hc__sun {
	animation:
		cm-hc-spin 40s linear infinite,
		cm-hc-sunset var(--cm-dusk-cycle) ease-in-out var(--cm-dusk-delay) infinite;
}

/* きらめきは、夕暮れの空では一番星のように光り続ける */
.cm-hc__sparkle {
	animation: cm-hc-twinkle 3s ease-in-out infinite;
}

@keyframes cm-hc-dusk {
	0%, 20% { opacity: 0; }
	45%, 65% { opacity: 1; }
	90%, 100% { opacity: 0; }
}

@keyframes cm-hc-dusk-tint {
	0%, 20% { filter: brightness(1) saturate(1) sepia(0) hue-rotate(0deg); }
	45%, 65% { filter: brightness(0.79) saturate(1.07) sepia(0.29) hue-rotate(-32deg); }
	90%, 100% { filter: brightness(1) saturate(1) sepia(0) hue-rotate(0deg); }
}

@keyframes cm-hc-sunset {
	0%, 18% {
		opacity: 1;
		translate: 0 0;
	}

	42%, 68% {
		opacity: 0;
		translate: 0 40cqh;
	}

	92%, 100% {
		opacity: 1;
		translate: 0 0;
	}
}


.cm-hc__deco,
.cm-hc__sticker,
.cm-hc__brand,
.cm-hc__tabs {
	position: absolute;
	z-index: 2;
}

.cm-hc__deco {
	height: auto;
	pointer-events: none;
	user-select: none;
}

/* 白いふちどりのステッカー風 */
.cm-hc__sticker {
	filter:
		drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff)
		drop-shadow(0 3px 0 #fff) drop-shadow(0 -3px 0 #fff)
		drop-shadow(0 8px 10px rgba(15, 53, 80, 0.18));
}

/* ---- 空の飾り ---- */
.cm-hc__sun {
	top: 3%;
	left: 69%;
	width: min(7cqw, 12cqh);
}

.cm-hc__sparkle--a {
	top: 11%;
	left: 27%;
	width: min(2.6cqw, 4.5cqh);
}

.cm-hc__sparkle--b {
	top: 33%;
	left: 56%;
	width: min(2cqw, 3.5cqh);
	animation-delay: -1.5s;
}

/* ---- ロゴ「ちゅらマップ」（真ん中に大きく） ---- */
.cm-hc__brand {
	top: 44%;
	left: 50%;
	z-index: 7;
	display: flex;
	flex-direction: column;
	align-items: center;
	width: min(40cqw, 64cqh);
	margin: 0;
	translate: -50% -50%;
	pointer-events: none;
	animation: cm-hc-brand 1s cubic-bezier(0.2, 0.9, 0.3, 1.25) 0.5s both;
}

/* キャッチコピーの吹き出し（ロゴの「プ」の上あたりから、横書き） */
.cm-hc__say {
	position: absolute;
	right: -20%;
	bottom: calc(100% - 0.4em);
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 0 0.3em;
	padding: 0.55em 1.1em;
	border-radius: 999px;
	background: #fff;
	box-shadow: 0 8px 22px rgba(15, 53, 80, 0.18);
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: clamp(14px, min(1.55cqw, 2.7cqh), 24px);
	font-weight: 700;
	line-height: 1.45;
	letter-spacing: 0.06em;
	white-space: nowrap;
	animation: cm-hc-pop 0.7s cubic-bezier(0.2, 0.9, 0.3, 1.3) 1.1s both;
}

/* 吹き出しのしっぽ（「プ」に向かって左下へ） */
.cm-hc__say::after {
	content: "";
	position: absolute;
	bottom: -0.7em;
	left: 18%;
	width: 1.1em;
	height: 0.95em;
	background: #fff;
	clip-path: polygon(0 0, 100% 0, 10% 100%);
}

.cm-hc__say-line {
	display: inline-block;
}

.cm-hc__brand picture {
	display: block;
	width: 100%;
}

.cm-hc__wordmark {
	display: block;
	width: 100%;
	height: auto;
	filter:
		drop-shadow(5px 0 0 #fff) drop-shadow(-5px 0 0 #fff)
		drop-shadow(0 5px 0 #fff) drop-shadow(0 -5px 0 #fff)
		drop-shadow(0 10px 16px rgba(10, 70, 110, 0.25));
}

.cm-hc__tagline {
	display: block;
	margin-top: 0.35em;
	color: #fff;
	font-family: "ChuramapDisplay", Impact, "Arial Narrow Bold", sans-serif;
	font-size: min(2.9cqw, 4.8cqh);
	font-weight: 400;
	line-height: 1;
	letter-spacing: 0.22em;
	white-space: nowrap;
	text-shadow: 0 2px 0 rgba(10, 106, 168, 0.55), 0 4px 14px rgba(10, 70, 110, 0.35);
}

@keyframes cm-hc-walk {
	0%, 100% { translate: 0 0; }
	25% { translate: 0 -4px; }
	50% { translate: 0 0; }
	75% { translate: 0 -3px; }
}

/* ---- 案内キャラクター（検索パネルの右上にちょこんと） ---- */
.cm-hc__guide {
	position: absolute;
	right: calc(var(--cm-gutter) + 18px);
	bottom: calc(100% - 30px);
	z-index: 3;
	width: 116px;
	animation: cm-hc-pop 0.8s cubic-bezier(0.2, 0.9, 0.3, 1.3) 0.7s both;
}

.cm-hc__character {
	display: block;
	width: 100%;
	height: auto;
	filter:
		drop-shadow(4px 0 0 #fff) drop-shadow(-4px 0 0 #fff)
		drop-shadow(0 4px 0 #fff) drop-shadow(0 -4px 0 #fff)
		drop-shadow(0 12px 14px rgba(15, 53, 80, 0.2));
	transform-origin: 50% 100%;
	animation: cm-hc-hop 4s ease-in-out 1s infinite;
}

.cm-hc__bubble {
	position: absolute;
	top: 6%;
	right: 92%;
	margin: 0;
	padding: 10px 16px;
	border-radius: 18px;
	background: #fff;
	box-shadow: 0 8px 20px rgba(15, 53, 80, 0.16);
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.5;
	white-space: nowrap;
}

/* しっぽ（右のキャラクターへ） */
.cm-hc__bubble::before {
	position: absolute;
	top: 50%;
	right: -9px;
	border-width: 7px 0 7px 10px;
	border-style: solid;
	border-color: transparent transparent transparent #fff;
	translate: 0 -50%;
	content: "";
}

/* ---- 右端のタブ（PC） ---- */
.cm-hc__tabs {
	top: 50%;
	right: 0;
	z-index: 8;
	display: none;
	flex-direction: column;
	gap: 10px;
	translate: 0 -50%;
}

.cm-hc__tab {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	padding: 16px 12px;
	border-radius: 16px 0 0 16px;
	background: #fff;
	box-shadow: 0 8px 20px rgba(15, 53, 80, 0.16);
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.1em;
	text-decoration: none;
	writing-mode: vertical-rl;
	transition: padding 0.2s ease, background-color 0.2s ease, color 0.2s ease;
}

.cm-hc__tab .cm-icon {
	writing-mode: horizontal-tb;
}

.cm-hc__tab:hover,
.cm-hc__tab:focus-visible {
	padding-right: 18px;
	background: var(--cm-sea);
	color: #fff;
}

.cm-hc__tab--listing {
	background: var(--cm-cta);
	color: #fff;
}

.cm-hc__tab--listing:hover,
.cm-hc__tab--listing:focus-visible {
	background: var(--cm-cta-dark);
}

/* 下の波（次の「ちゅらマップのおすすめ」の白へつなぐ） */
.cm-hc .cm-sea {
	z-index: 8;
	--cm-sea-front: #f2fafc;
}

/* ---- 検索パネル（ファーストビューの下端に重ねる） ---- */
.cm-hc__panel-wrap {
	position: relative;
	z-index: 10;
	margin-top: -56px;
	padding-bottom: 8px;
}

.cm-hc__panel {
	display: grid;
	gap: 12px;
	padding: 20px;
	border-radius: 24px;
	background: #fff;
	box-shadow: 0 18px 44px rgba(16, 42, 67, 0.16);
}

.cm-hc__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0;
	color: var(--cm-sea);
	font-size: 14px;
	font-weight: 700;
}

.cm-hc__lead {
	margin: 0;
	color: var(--cm-text);
	font-size: 14px;
	line-height: 1.8;
}

/* 検索パネルの中の絞り込み（一覧ページと同じ項目。カードの枠は外してパネルにそのまま並べる） */
.cm-filter__map {
	justify-content: center;
	width: 100%;
	white-space: nowrap;
}

/* 「地図から探す」：PCは「この条件で探す」の真下（特典のチェックと同じ行の右端） */
@media (min-width: 1024px) {
	.cm-hc__panel .cm-filter--hero .cm-filter__field--perk {
		grid-column: 1 / 4;
	}

	.cm-hc__panel .cm-filter--hero .cm-filter__map-wrap {
		order: 6;
		grid-column: 4;
	}
}

.cm-hc__panel .cm-filter--hero {
	margin: 0;
	padding: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

@media (min-width: 768px) {
	.cm-hc__panel .cm-filter--hero {
		padding: 0;
	}
}

@media (min-width: 960px) {
	.cm-hc__panel {
		grid-template-columns: auto minmax(0, 1fr);
		align-items: center;
		gap: 10px 24px;
		padding: 24px 32px 26px;
	}

	.cm-hc__lead {
		padding-right: 110px; /* 右上のキャラクターと重ならないように */
		font-size: 13px;
	}

	.cm-hc__panel .cm-filter--hero {
		grid-column: 1 / -1;
		margin-top: 6px;
	}
}

@media (min-width: 1180px) {
	.cm-hc__tabs {
		display: flex;
	}

}

/* ---- スマートフォン・タブレット縦（縦長の画面は同じ配置） ---- */
@media (max-width: 767px), (max-aspect-ratio: 1/1) and (max-width: 1199px) {
	.cm-hc__stage {
		height: min(170vw, 760px);
		min-height: 580px;
	}

	.cm-hc__layer--bg { --ds: 110; }
	.cm-hc__layer--mid { --ds: 70; }
	.cm-hc__layer--sea { --ds: 45; }
	.cm-hc__layer--fore { --ds: 10; }

	.cm-hc__brand {
		top: 52%;
		width: min(80cqw, 50cqh);
	}

	.cm-hc__say {
		right: -3%;
		flex-direction: column;
		align-items: center;
		padding: 0.6em 1.2em;
		border-radius: 22px;
		font-size: clamp(13px, min(4.3cqw, 2.7cqh), 20px);
		line-height: 1.5;
	}

	.cm-hc__say::after {
		left: 30%;
	}

	.cm-hc__wordmark {
		filter:
			drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff)
			drop-shadow(0 3px 0 #fff) drop-shadow(0 -3px 0 #fff)
			drop-shadow(0 6px 10px rgba(10, 70, 110, 0.25));
	}

	.cm-hc__tagline {
		font-size: min(5.2cqw, 3.2cqh);
		letter-spacing: 0.16em;
	}

	.cm-hc__sun {
		top: 6%;
		left: 8%;
		width: min(14cqw, 8.6cqh);
	}

	.cm-hc__sparkle--a {
		top: 14%;
		left: 36%;
		width: min(5cqw, 3cqh);
	}

	.cm-hc__sparkle--b {
		display: none;
	}

	.cm-hc__guide {
		right: calc(var(--cm-gutter) + 6px);
		bottom: calc(100% - 22px);
		width: 82px;
	}

	.cm-hc__bubble {
		padding: 7px 11px;
		font-size: 12px;
	}

	.cm-hc__panel-wrap {
		margin-top: -36px;
	}

	.cm-hc__panel {
		padding: 18px 16px;
		border-radius: 20px;
	}
}

/* タブレット縦：スマホと同じ配置で、画面の高さに合わせる */
@media (min-width: 768px) and (max-aspect-ratio: 1/1) and (max-width: 1199px) {
	.cm-hc__stage {
		height: min(140vw, calc(100svh - 72px), 1100px);
	}
}

/* 画面外では動きを止める（main.js） */
.cm-hc.is-offscreen *,
.cm-hc.is-offscreen *::before,
.cm-hc.is-offscreen *::after {
	animation-play-state: paused !important;
}

@keyframes cm-hc-zoom {
	from {
		opacity: 0.4;
		scale: 1.18;
	}

	to {
		opacity: 1;
		scale: 1.07;
	}
}

@keyframes cm-hc-rise-in {
	from {
		opacity: 0;
		translate: 0 12%;
	}

	to {
		opacity: 1;
		translate: 0 0;
	}
}

@keyframes cm-hc-brand {
	from {
		opacity: 0;
		scale: 0.7;
		translate: -50% calc(-50% + 20px);
	}

	to {
		opacity: 1;
		scale: 1;
		translate: -50% -50%;
	}
}

@keyframes cm-hc-bob {
	0%,
	100% {
		translate: 0 0;
		rotate: -2deg;
	}

	50% {
		translate: 0 -6px;
		rotate: 2deg;
	}
}

@keyframes cm-hc-pop {
	from {
		opacity: 0;
		scale: 0.6;
	}

	to {
		opacity: 1;
		scale: 1;
	}
}

@keyframes cm-hc-rise {
	from {
		opacity: 0;
		translate: 0 30%;
	}

	to {
		opacity: 1;
		translate: 0 0;
	}
}

@keyframes cm-hc-float {
	0%,
	100% {
		translate: 0 0;
	}

	50% {
		translate: 0 -8px;
	}
}

@keyframes cm-hc-hop {
	0%,
	70%,
	100% {
		translate: 0 0;
	}

	80% {
		translate: 0 -10px;
	}

	90% {
		translate: 0 0;
	}
}

@keyframes cm-hc-sway {
	from {
		transform: rotate(-1.5deg);
	}

	to {
		transform: rotate(1.5deg);
	}
}

@keyframes cm-hc-fly {
	0%,
	100% {
		translate: 0 0;
	}

	50% {
		translate: 14px -10px;
	}
}

@keyframes cm-hc-swim {
	from {
		translate: 0 0;
	}

	to {
		translate: -4cqw -6px;
	}
}

@keyframes cm-hc-spin {
	to {
		transform: rotate(360deg);
	}
}

@keyframes cm-hc-twinkle {
	0%,
	100% {
		opacity: 1;
		scale: 1;
	}

	50% {
		opacity: 0.4;
		scale: 0.7;
	}
}

/* 8. セクション見出し
   ========================================================================== */
.cm-section {
	position: relative;
	padding: 56px 0;
}

@media (min-width: 768px) {
	.cm-section {
		padding: 88px 0;
	}
}

/* 各セクションは透明にして、ページ全体の背景（島と海・薄い沖縄のイラスト）を見せる。
   背景は「2-2. ページ全体の背景」で設定しています。 */
.cm-section--categories,
.cm-section--sns {
	background: #f8f6ef;
}

.cm-section--map,
.cm-section--latest,
.cm-section--pickup,
.cm-section--listing {
	background: transparent;
}

.cm-section__more {
	margin: 36px 0 0;
	text-align: center;
}

.cm-section-head {
	max-width: 760px;
	margin: 0 auto 36px;
	text-align: center;
}

.cm-section-head__illust {
	display: block;
	width: 56px;
	margin: 0 auto 6px;
}

.cm-section-head__eyebrow {
	margin: 0 0 6px;
	color: var(--cm-blue-deep);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.28em;
}

.cm-section-head__title {
	margin: 0;
	font-size: clamp(24px, 5.4vw, 34px);
	font-weight: 700;
	letter-spacing: 0.04em;
}

.cm-section-head__title::after {
	content: "";
	display: block;
	width: 64px;
	height: 4px;
	margin: 16px auto 0;
	border-radius: 4px;
	background: var(--cm-brand-bar);
}

.cm-section-head__lead {
	margin: 16px 0 0;
	color: var(--cm-muted);
	font-size: 15px;
}

/* 9. 動く海（背景アニメーション）
   --------------------------------------------------------------------------
   3枚の波を別々の速さで横に流しています。速さは animation の秒数で調整できます。
   ========================================================================== */
.cm-sea {
	position: absolute;
	left: 0;
	z-index: 1;
	width: 100%;
	height: 110px;
	overflow: hidden;
	pointer-events: none;
}

.cm-sea--bottom {
	bottom: -1px;
}

.cm-sea--top {
	top: -109px;
}

.cm-sea__wave {
	position: absolute;
	bottom: 0;
	left: 0;
	width: 200%;
	height: 100%;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 100' preserveAspectRatio='none'%3E%3Cpath d='M0 60 C100 30 200 30 300 50 C400 70 500 80 600 55 C700 30 750 40 800 60 V100 H0Z'/%3E%3C/svg%3E") repeat-x 0 100% / 25% 100%;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 100' preserveAspectRatio='none'%3E%3Cpath d='M0 60 C100 30 200 30 300 50 C400 70 500 80 600 55 C700 30 750 40 800 60 V100 H0Z'/%3E%3C/svg%3E") repeat-x 0 100% / 25% 100%;
	animation: cm-wave 22s linear infinite;
	will-change: transform;
}

.cm-sea__wave--back {
	height: 100%;
	background: rgba(56, 182, 255, 0.18);
	animation-duration: 26s;
}

.cm-sea__wave--mid {
	height: 82%;
	background: rgba(56, 182, 255, 0.3);
	animation-duration: 17s;
	animation-direction: reverse;
}

.cm-sea__wave--front {
	height: 62%;
	background: var(--cm-sea-front, #eaf6fd);
	animation-duration: 12s;
}


/* フッター上：動く波は使わず、砂浜から上へやさしいグラデーションでつなぐ（.cm-footer::before） */
.cm-footer > .cm-sea {
	display: none;
}

@keyframes cm-wave {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}

/* 10. イラストマップ
   ========================================================================== */
.cm-map__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-areas: "stage" "results" "index";
	gap: 20px;
}

.cm-map__stage { grid-area: stage; }
.cm-map-results { grid-area: results; }
.cm-map__index { grid-area: index; }

@media (min-width: 1024px) {
	.cm-map__layout {
		grid-template-columns: minmax(0, 1fr) 300px;
		grid-template-areas: "stage index" "results results";
		align-items: start;
	}
}

.cm-map__stage {
	padding: 10px;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow-hover);
}

.cm-map__toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 4px 6px 10px;
}

.cm-map__hint {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-width: 0;
	margin: 0;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
}

.cm-map__hint .cm-icon {
	color: var(--cm-pink-deep);
}

.cm-map__zoom {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 40px;
	padding: 6px 14px;
	border: 1px solid var(--cm-line);
	border-radius: 999px;
	background: #fff;
	color: var(--cm-ink);
	font-size: 13px;
	font-weight: 700;
	white-space: nowrap;
	cursor: pointer;
}

.cm-map__zoom[aria-pressed="true"] {
	background: var(--cm-sea);
	border-color: var(--cm-sea);
	color: #fff;
}

@media (min-width: 1024px) {
	.cm-map__zoom {
		display: none;
	}
}

.cm-map__viewport {
	position: relative;
	overflow: hidden;
	border-radius: 14px;
}

.cm-map.is-zoomed .cm-map__viewport {
	overflow: auto;
	overscroll-behavior-x: contain;
	-webkit-overflow-scrolling: touch;
}

.cm-map__canvas {
	position: relative;
	width: 100%;
	aspect-ratio: 5 / 4;
}

.cm-map.is-zoomed .cm-map__canvas {
	width: 200%;
}

.cm-mapsvg {
	display: block;
	width: 100%;
	height: 100%;
}

.cm-mapsvg [data-cm-shape] {
	cursor: pointer;
	transition: filter 0.25s ease;
}

.cm-mapsvg [data-cm-shape]:hover {
	filter: brightness(1.08) saturate(1.2);
}

.cm-mapsvg .cm-mapsvg__zone.is-active,
.cm-mapsvg .is-active .cm-mapsvg__land {
	fill: #ffc59a;
}

/* 海のきらめき（ゆっくり流れる） */
.cm-map__shimmer {
	position: absolute;
	inset: 0;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='120'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='1.4' stroke-linecap='round' opacity='.55'%3E%3Cpath d='M10 30q12-6 24 0'/%3E%3Cpath d='M140 20q10-5 20 0'/%3E%3Cpath d='M80 80q14-7 28 0'/%3E%3Cpath d='M190 96q10-5 20 0'/%3E%3C/g%3E%3C/svg%3E") repeat;
	opacity: 0.6;
	animation: cm-shimmer 40s linear infinite;
	pointer-events: none;
	mix-blend-mode: soft-light;
}

@keyframes cm-shimmer {
	from { background-position: 0 0; }
	to { background-position: 480px 0; }
}

/* まわりのイラスト */
.cm-map__decor-item {
	position: absolute;
	top: var(--y);
	left: var(--x);
	width: var(--w);
	height: auto;
	transform: translate(-50%, -50%) rotate(var(--r)) scaleX(var(--flip, 1));
	pointer-events: none;
	filter: drop-shadow(0 4px 6px rgba(16, 42, 67, 0.15));
}

.cm-map__decor-item.is-flipped {
	--flip: -1;
}

.cm-map__decor-item.is-swim {
	animation: cm-swim 9s ease-in-out infinite alternate;
}

.cm-map__decor-item.is-bob {
	animation: cm-bob 4.5s ease-in-out infinite alternate;
}

@keyframes cm-swim {
	from { translate: -14px 0; }
	to { translate: 14px -4px; }
}

@keyframes cm-bob {
	from { translate: 0 0; }
	to { translate: 0 -6px; }
}

/* 案内キャラクター */
.cm-map__guide {
	position: absolute;
	top: 3%;
	left: 2%;
	display: flex;
	align-items: flex-start;
	gap: 2%;
	width: 42%;
	pointer-events: none;
}

.cm-map__character {
	width: 34%;
	height: auto;
	filter: drop-shadow(0 6px 8px rgba(16, 42, 67, 0.2));
}

.cm-map__bubble {
	position: relative;
	margin: 6% 0 0;
	padding: 0.6em 0.9em;
	border-radius: 12px;
	background: #fff;
	color: var(--cm-ink);
	font-size: clamp(11px, 1.4vw, 14px);
	font-weight: 700;
	line-height: 1.5;
	box-shadow: var(--cm-shadow);
}

.cm-map__bubble::before {
	content: "";
	position: absolute;
	top: 14px;
	left: -6px;
	width: 12px;
	height: 12px;
	background: #fff;
	transform: rotate(45deg);
}

@media (max-width: 599px) {
	.cm-map:not(.is-zoomed) .cm-map__bubble {
		display: none;
	}
}

/* ピン */
.cm-map__pins {
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-map__pin-item {
	position: absolute;
	top: var(--y);
	left: var(--x);
	width: 0;
	height: 0;
}

.cm-map-pin {
	--dot: 14px;
	--pad: 5px;
	--offset: calc(var(--pad) + var(--dot) / 2);
	position: absolute;
	display: flex;
	align-items: center;
	gap: 4px;
	padding: var(--pad);
	color: var(--cm-ink);
	text-decoration: none;
	white-space: nowrap;
	-webkit-tap-highlight-color: transparent;
}

.cm-map-pin--label-right {
	top: 0;
	left: calc(var(--offset) * -1);
	transform: translateY(-50%);
}

.cm-map-pin--label-left {
	top: 0;
	right: calc(var(--offset) * -1);
	flex-direction: row-reverse;
	transform: translateY(-50%);
}

.cm-map-pin--label-top {
	bottom: calc(var(--offset) * -1);
	left: 0;
	flex-direction: column-reverse;
	transform: translateX(-50%);
}

.cm-map-pin--label-bottom {
	top: calc(var(--offset) * -1);
	left: 0;
	flex-direction: column;
	transform: translateX(-50%);
}

.cm-map-pin--label-center {
	top: 0;
	left: 0;
	transform: translate(-50%, -50%);
}

.cm-map-pin__dot {
	position: relative;
	flex-shrink: 0;
	width: var(--dot);
	height: var(--dot);
	border: 3px solid #fff;
	border-radius: 50%;
	background: var(--c-deep, var(--cm-cta));
	box-shadow: 0 2px 6px rgba(16, 42, 67, 0.35);
	transition: transform 0.2s ease;
}

/* ピンの位置で波紋が広がる */
.cm-map-pin--level-1 .cm-map-pin__dot::after,
.cm-map-pin.is-active .cm-map-pin__dot::after {
	content: "";
	position: absolute;
	inset: -6px;
	border: 2px solid var(--c, var(--cm-blue));
	border-radius: 50%;
	opacity: 0;
	animation: cm-ripple 2.6s ease-out infinite;
}

@keyframes cm-ripple {
	0% { transform: scale(0.6); opacity: 0.8; }
	100% { transform: scale(1.8); opacity: 0; }
}

.cm-map-pin--label-center .cm-map-pin__dot {
	display: none;
}

.cm-map-pin__label {
	padding: 3px 10px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.95);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.4;
	box-shadow: 0 2px 8px rgba(16, 42, 67, 0.18);
	transition: background-color 0.2s ease, color 0.2s ease;
}

.cm-map-pin--level-1 .cm-map-pin__label {
	font-size: 13px;
}

.cm-map-pin--label-center .cm-map-pin__label {
	background: var(--c-deep);
	color: #fff;
}

.cm-map-pin.is-empty:not(.cm-map-pin--label-center) .cm-map-pin__label {
	color: var(--cm-muted);
}

.cm-map-pin:hover .cm-map-pin__label,
.cm-map-pin:focus-visible .cm-map-pin__label {
	background: var(--cm-sea);
	color: #fff;
}

.cm-map-pin:hover .cm-map-pin__dot {
	transform: scale(1.2);
}

.cm-map-pin.is-active .cm-map-pin__label {
	background: var(--cm-cta);
	color: #fff;
}

.cm-map-pin.is-active .cm-map-pin__dot {
	background: var(--cm-cta);
	transform: scale(1.25);
}

.cm-map-pin:focus-visible {
	outline: none;
}

.cm-map-pin:focus-visible .cm-map-pin__label {
	outline: 3px solid var(--cm-blue);
	outline-offset: 2px;
}

@media (max-width: 599px) {
	.cm-map-pin {
		--dot: 12px;
		--pad: 4px;
	}

	.cm-map-pin__label,
	.cm-map-pin--level-1 .cm-map-pin__label {
		padding: 2px 8px;
		font-size: 11px;
	}

	.cm-map-pin__dot {
		border-width: 2px;
	}

	.cm-map__hint {
		font-size: 13px;
	}
}

/* 小さなピンは PC（1024px以上）または拡大時のみ */
.cm-map-pin--level-2 {
	display: none;
}

.cm-map.is-zoomed .cm-map-pin--level-2 {
	display: flex;
}

@media (min-width: 1024px) {
	.cm-map-pin--level-2 {
		display: flex;
	}

	/* エリア名（本島北部など）は PC では地図になじむ文字表示に */
	.cm-map-pin--label-center .cm-map-pin__label {
		padding: 2px 6px;
		background: none;
		box-shadow: none;
		color: #fff;
		font-size: 16px;
		letter-spacing: 0.14em;
		text-shadow: 0 1px 3px rgba(16, 42, 67, 0.55), 0 0 10px rgba(16, 42, 67, 0.25);
	}

	.cm-map-pin--label-center:hover .cm-map-pin__label,
	.cm-map-pin--label-center.is-active .cm-map-pin__label {
		background: var(--cm-cta);
		text-shadow: none;
		box-shadow: var(--cm-shadow);
	}

	.cm-map-pin__label {
		font-size: 13px;
	}

	.cm-map-pin--level-1 .cm-map-pin__label {
		font-size: 14px;
	}
}

/* 地域一覧（地図の横・下） */
.cm-map__index {
	padding: 18px;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow);
}

@media (min-width: 1024px) {
	.cm-map__index {
		max-height: 680px;
		overflow-y: auto;
		scrollbar-width: thin;
	}
}

.cm-map__index-title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 14px;
	font-size: 17px;
}

.cm-map__index-icon {
	width: 28px;
	height: auto;
}

.cm-area-group + .cm-area-group {
	margin-top: 16px;
}

.cm-area-group__title {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: 46px;
	margin-bottom: 10px;
	padding: 8px 14px;
	border-left: 4px solid var(--c);
	border-radius: 8px;
	background: var(--c-soft);
	color: var(--cm-ink);
	font-weight: 700;
	text-decoration: none;
	transition: background-color 0.2s ease;
}

.cm-area-group__title:hover,
.cm-area-group__title.is-active {
	background: var(--c);
	color: var(--cm-ink);
}

.cm-area-group__count {
	color: var(--cm-muted);
	font-size: 13px;
}

.cm-area-group .cm-chip {
	min-height: 38px;
	padding: 5px 12px;
	font-size: 13.5px;
}

@media (min-width: 600px) and (max-width: 1023px) {
	.cm-map__index {
		display: grid;
		grid-template-columns: 1fr 1fr;
		gap: 16px 20px;
	}

	.cm-map__index-title {
		grid-column: 1 / -1;
		margin: 0;
	}

	.cm-area-group + .cm-area-group {
		margin-top: 0;
	}
}

/* 11. 地図の結果
   ========================================================================== */
.cm-map-results {
	min-width: 0;
	padding: 20px;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow);
	scroll-margin-top: calc(var(--cm-header-h) + 16px);
}

@media (min-width: 768px) {
	.cm-map-results {
		padding: 28px;
	}
}

.cm-map-results__intro {
	display: flex;
	align-items: center;
	gap: 14px;
	color: var(--cm-muted);
	font-size: 15px;
}

.cm-map-results__intro p {
	margin: 0;
}

.cm-map-results__icon {
	width: 52px;
	height: auto;
	flex-shrink: 0;
}

.cm-map-results__head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 8px 16px;
	margin-bottom: 14px;
}

.cm-map-results__eyebrow {
	margin: 0;
	color: var(--cm-pink-deep);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.2em;
}

.cm-map-results__title {
	margin: 0;
	font-size: clamp(20px, 4.6vw, 26px);
}

.cm-map-results__title:focus {
	outline: none;
}

.cm-map-results__total {
	margin-left: 6px;
	color: var(--cm-muted);
	font-size: 14px;
	font-weight: 500;
}

.cm-map-results__parent {
	font-size: 14px;
	font-weight: 700;
}

.cm-map-results__children {
	margin-bottom: 18px;
}

.cm-map-results__footer {
	margin: 24px 0 0;
	text-align: center;
}

.cm-map-results__error {
	margin: 0 0 12px;
	color: var(--cm-pink-deep);
	font-weight: 700;
}

.cm-map-results__loading {
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--cm-muted);
}

.cm-map-results__loading::before {
	content: "";
	width: 22px;
	height: 22px;
	border: 3px solid var(--cm-blue-soft);
	border-top-color: var(--cm-blue);
	border-radius: 50%;
	animation: cm-spin 0.8s linear infinite;
}

@keyframes cm-spin {
	to {
		transform: rotate(360deg);
	}
}

/* 12. カテゴリー・記事カード
   ========================================================================== */
.cm-cat-grid {
	/* 端数の段（例：7件なら下の3件）は中央にそろえる */
	--cm-cat-cols: 2;
	--cm-cat-gap: 12px;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--cm-cat-gap);
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-cat-grid > li {
	flex: 0 0 calc((100% - (var(--cm-cat-cols) - 1) * var(--cm-cat-gap)) / var(--cm-cat-cols));
	min-width: 0;
}

.cm-cat-grid > li > .cm-cat-card {
	height: 100%;
}

/* スマートフォン：横に3列 */
.cm-cat-grid {
	--cm-cat-cols: 3;
	--cm-cat-gap: 8px;
}

@media (max-width: 599px) {
	.cm-cat-grid .cm-cat-card {
		padding: 14px 4px 14px;
	}

	.cm-cat-card .cm-cat-card__visual:not(.has-photo) {
		width: 62px;
		height: 62px;
		margin-bottom: 8px;
	}

	.cm-cat-card .cm-cat-card__illust {
		width: 46px;
		height: 46px;
	}

	.cm-cat-grid .cm-cat-card__name {
		font-size: 12.5px;
		letter-spacing: -0.02em;
	}

	.cm-cat-grid .cm-cat-card__count {
		font-size: 10.5px;
	}
}

/* タブレット：横に4列 */
@media (min-width: 600px) {
	.cm-cat-grid {
		--cm-cat-cols: 4;
		--cm-cat-gap: 14px;
	}
}

/* PC：件数に関係なく横一列（小さめのカード） */
@media (min-width: 960px) {
	.cm-cat-grid {
		flex-wrap: nowrap;
		--cm-cat-gap: 14px;
	}

	.cm-cat-grid > li {
		flex: 1 1 0;
	}

	.cm-cat-grid .cm-cat-card {
		padding: 18px 6px 16px;
	}

	.cm-cat-card .cm-cat-card__visual:not(.has-photo) {
		width: 84px;
		height: 84px;
		margin-bottom: 10px;
	}

	.cm-cat-card .cm-cat-card__illust {
		width: 60px;
		height: 60px;
	}

	.cm-cat-grid .cm-cat-card__name {
		font-size: 14px;
	}
}

.cm-cat-card {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	height: 100%;
	padding: 20px 10px 18px;
	overflow: hidden;
	border-radius: var(--cm-radius);
	background: #fff;
	color: var(--cm-ink);
	text-align: center;
	text-decoration: none;
	box-shadow: var(--cm-shadow);
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.cm-cat-card::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 4px;
	background: var(--c);
}

.cm-cat-card:hover {
	color: var(--cm-ink);
	transform: translateY(-4px);
	box-shadow: var(--cm-shadow-hover);
}

.cm-cat-card__visual {
	display: grid;
	place-items: center;
	width: 88px;
	height: 88px;
	margin-bottom: 12px;
	border-radius: 50%;
	background: var(--c-soft);
	overflow: hidden;
}

.cm-cat-card__visual.has-photo {
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	border-radius: 10px;
}

.cm-cat-card__illust {
	width: 62px;
	height: 62px;
	transition: transform 0.3s ease;
}

.cm-cat-card:hover .cm-cat-card__illust {
	transform: scale(1.08) rotate(-4deg);
}

.cm-cat-card__photo {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cm-cat-card__name {
	font-size: 15px;
	font-weight: 700;
	line-height: 1.4;
}

.cm-cat-card__count {
	margin-top: 2px;
	color: var(--cm-muted);
	font-size: 12px;
}

@media (min-width: 768px) {
	.cm-cat-card__visual:not(.has-photo) {
		width: 104px;
		height: 104px;
	}

	.cm-cat-card__illust {
		width: 74px;
		height: 74px;
	}

	.cm-cat-card__name {
		font-size: 16px;
	}
}

.cm-cards {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 20px;
}

@media (min-width: 560px) {
	.cm-cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 960px) {
	.cm-cards {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 28px;
	}
}

.cm-card {
	min-width: 0;
}

.cm-card__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	border-radius: var(--cm-radius);
	background: #fff;
	color: var(--cm-text);
	text-decoration: none;
	box-shadow: var(--cm-shadow);
	transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.cm-card__link:hover {
	color: var(--cm-text);
	transform: translateY(-4px);
	box-shadow: var(--cm-shadow-hover);
}

.cm-card__media {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--cm-blue-soft);
}

.cm-card__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s ease;
}

.cm-card__link:hover .cm-card__img {
	transform: scale(1.05);
}

.cm-card__cat {
	position: absolute;
	top: 12px;
	left: 12px;
	max-width: calc(100% - 24px);
	padding: 4px 12px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.95);
	color: var(--c-deep, var(--cm-ink));
	font-size: 12px;
	font-weight: 700;
	line-height: 1.4;
	box-shadow: 0 2px 8px rgba(16, 42, 67, 0.12);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.cm-card__cat::before {
	content: "";
	display: inline-block;
	width: 8px;
	height: 8px;
	margin-right: 6px;
	border-radius: 50%;
	background: var(--c, var(--cm-blue));
	vertical-align: 1px;
}

.cm-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 6px;
	padding: 16px 18px 18px;
}

.cm-card__area {
	display: flex;
	align-items: center;
	gap: 4px;
	margin: 0;
	color: var(--cm-blue-deep);
	font-size: 13px;
	font-weight: 700;
}

.cm-card__title {
	display: -webkit-box;
	min-height: calc(1.55em * 2);
	margin: 0;
	overflow: hidden;
	color: var(--cm-ink);
	font-size: 17px;
	line-height: 1.55;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.cm-card__excerpt {
	display: -webkit-box;
	margin: 0;
	overflow: hidden;
	color: var(--cm-muted);
	font-size: 14px;
	line-height: 1.7;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.cm-card__date {
	margin: auto 0 0;
	padding-top: 8px;
	color: var(--cm-muted);
	font-size: 12.5px;
	letter-spacing: 0.06em;
}

.cm-card--row .cm-card__link {
	display: grid;
	grid-template-columns: 112px minmax(0, 1fr);
	align-items: stretch;
	border-radius: 12px;
}

.cm-card--row .cm-card__media {
	aspect-ratio: auto;
	min-height: 100px;
}

.cm-card--row .cm-card__cat {
	display: none;
}

.cm-card--row .cm-card__body {
	padding: 10px 12px;
	gap: 2px;
}

.cm-card--row .cm-card__title {
	min-height: 0;
	font-size: 15px;
	-webkit-line-clamp: 3;
}

.cm-card--large .cm-card__media {
	aspect-ratio: 16 / 10;
}

.cm-card--large .cm-card__title {
	min-height: 0;
	font-size: clamp(18px, 4.6vw, 24px);
}

.cm-card--large .cm-card__body {
	padding: 20px 22px 22px;
	gap: 8px;
}

.cm-card--large .cm-card__excerpt {
	font-size: 15px;
	-webkit-line-clamp: 3;
}

/* 13. おすすめ
   ========================================================================== */
/* 13-1. ちゅらマップのおすすめ（枠で囲んだ3列の一覧）
   ・外側の色：--cm-pick-bg ／ 文字の紺：--cm-pick-ink ／ 小見出しの色：--cm-pick-accent
   ・列の数：.cm-pick__grid の grid-template-columns */
@font-face {
	font-family: "ChuramapScript";
	src: url("../fonts/yellowtail-subset.woff2") format("woff2");
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}

.cm-pick {
	--cm-pick-bg: #ebebe6;
	--cm-pick-ink: #1f3d5c;
	--cm-pick-accent: #4fbfa8;
	--cm-pick-line: #e3e3de;
	position: relative;
	padding: 86px 14px 18px;
	border: 10px solid #fff;
	background: var(--cm-pick-bg);
	box-shadow: 0 10px 30px rgba(15, 53, 80, 0.06);
}

.cm-pick__script {
	position: absolute;
	top: 14px;
	left: 10px;
	margin: 0;
	color: var(--cm-pick-ink);
	font-family: "ChuramapScript", "Brush Script MT", cursive;
	font-size: 30px;
	line-height: 0.95;
	transform: rotate(-8deg);
	transform-origin: 0 0;
	pointer-events: none;
}

.cm-pick__script span {
	display: inline-block;
	margin-left: 1.6em;
}

.cm-pick__head {
	margin: 0 0 28px;
	text-align: center;
}

.cm-pick__eyebrow {
	margin: 0 0 8px;
	color: var(--cm-pick-accent);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.06em;
}

.cm-pick__title {
	margin: 0 0 22px;
	color: var(--cm-pick-ink);
	font-size: clamp(20px, 2.4vw, 26px);
	letter-spacing: 0.06em;
}

.cm-pick__tab {
	display: inline-block;
	margin: 0;
	padding: 0 6px 6px;
	border-bottom: 3px solid var(--cm-pick-ink);
	color: var(--cm-pick-ink);
	font-size: 13px;
	font-weight: 700;
}

.cm-pick__lead {
	margin: 14px 0 0;
	color: #5d6b76;
	font-size: 13px;
}

.cm-pick__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 1px;
	margin: 0;
	padding: 1px;
	background: #fff;
	list-style: none;
}

@media (min-width: 600px) {
	.cm-pick__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 960px) {
	.cm-pick {
		padding: 64px 24px 24px;
		border-width: 12px;
	}

	.cm-pick__script {
		top: 18px;
		left: 6px;
		font-size: 44px;
	}

	.cm-pick__head {
		margin-bottom: 40px;
	}

	.cm-pick__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.cm-pick__item {
	margin: 0;
	background: #fff;
	/* 区切り線（最後の段が欠けても空いた所は白のまま） */
	box-shadow: 0 0 0 1px var(--cm-pick-line);
}

.cm-pick__card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
}

.cm-pick__media {
	position: relative;
	margin: 20px 20px 0;
}

.cm-pick__img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	transition: opacity 0.25s ease;
}

.cm-pick__card:hover .cm-pick__img {
	opacity: 0.85;
}

.cm-pick__badge {
	position: absolute;
	top: 8px;
	left: 8px;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--cm-cta);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
}

/* いいね（画像の右下の丸いボタン） */
.cm-pick__like {
	position: absolute;
	right: 10px;
	bottom: -18px;
	z-index: 2;
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 2px 8px rgba(15, 53, 80, 0.18);
	color: var(--cm-pick-ink);
	cursor: pointer;
	transition: color 0.2s ease, transform 0.2s ease;
}

.cm-pick__like:hover {
	transform: scale(1.08);
}

.cm-pick__like[aria-pressed="true"] {
	color: #e8457f;
}

.cm-pick__like[aria-pressed="true"] .cm-icon {
	fill: currentColor;
}

.cm-pick__like-count {
	position: absolute;
	right: -4px;
	bottom: -4px;
	min-width: 18px;
	height: 18px;
	padding: 0 4px;
	border-radius: 999px;
	background: var(--cm-pick-ink);
	color: #fff;
	font-size: 10px;
	font-weight: 700;
	line-height: 18px;
}

.cm-pick__like-count[hidden] {
	display: none;
}

.cm-pick__name {
	margin: 26px 20px 8px;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.7;
}

.cm-pick__link {
	display: -webkit-box;
	overflow: hidden;
	color: var(--cm-ink);
	text-decoration: none;
	-webkit-line-clamp: 4;
	-webkit-box-orient: vertical;
}

/* カード全体を押せるようにする（いいねボタンは除く） */
.cm-pick__link::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

.cm-pick__card:hover .cm-pick__link {
	color: var(--cm-sea);
}

.cm-pick__area {
	margin: 0 20px 18px;
	color: #3a8fc9;
	font-size: 11px;
}

.cm-pick__foot {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	align-items: stretch;
	margin-top: auto;
	border-top: 1px solid var(--cm-pick-line);
}

.cm-pick__info {
	padding: 12px 14px 12px 20px;
}

.cm-pick__cat {
	margin: 0;
	color: var(--cm-ink);
	font-size: 16px;
	font-weight: 700;
	line-height: 1.4;
}

.cm-pick__sub {
	margin: 2px 0 0;
	color: var(--cm-muted);
	font-size: 10px;
}

.cm-pick__date {
	display: grid;
	place-items: center;
	margin: 0;
	padding: 8px 14px;
	border-left: 1px solid var(--cm-pick-line);
	color: var(--cm-ink);
	text-align: center;
}

.cm-pick__date time {
	display: grid;
	line-height: 1.1;
}

.cm-pick__day {
	font-family: "ChuramapDisplay", Impact, sans-serif;
	font-size: 20px;
	letter-spacing: 0.02em;
}

.cm-pick__month {
	font-size: 10px;
}

.cm-pick__arrow {
	display: grid;
	place-items: center;
	width: 52px;
	border-left: 1px solid var(--cm-pick-line);
	color: var(--cm-ink);
	transition: background-color 0.2s ease, color 0.2s ease;
}

.cm-pick__card:hover .cm-pick__arrow {
	background: var(--cm-pick-ink);
	color: #fff;
}

.cm-section--pickup {
	padding-top: 40px;
}

.cm-pickup {
	display: grid;
	gap: 20px;
}

/* 編集部のおすすめ記事：右の一覧を押すと左の大きな枠が切り替わる
   ・左の枠の高さ：.cm-pk__stage の aspect-ratio / min-height
   ・自動で切り替わる間隔：template-parts/front/pickup-switcher.php の data-cm-pk-interval（ミリ秒） */
.cm-pk {
	--cm-pk-accent: var(--cm-cta);
	display: grid;
	gap: 18px;
}

.cm-pk__stage {
	position: relative;
	overflow: hidden;
	aspect-ratio: 4 / 3.4;
	border-radius: 24px;
	background: var(--cm-navy);
	box-shadow: 0 24px 50px rgba(15, 53, 80, 0.22);
	isolation: isolate;
}

.cm-pk__panel {
	position: absolute;
	inset: 0;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.6s ease, visibility 0s linear 0.6s;
}

.cm-pk__panel.is-active {
	z-index: 1;
	opacity: 1;
	visibility: visible;
	transition: opacity 0.6s ease, visibility 0s;
}

.cm-pk__panel-link {
	display: block;
	height: 100%;
	color: #fff;
	text-decoration: none;
}

.cm-pk__media {
	position: absolute;
	inset: 0;
}

.cm-pk__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transform: scale(1.06);
	transition: transform 7s ease-out;
}

.cm-pk__panel.is-active .cm-pk__img {
	transform: scale(1);
}

.cm-pk__panel-link:hover .cm-pk__img {
	transform: scale(1.03);
	transition-duration: 0.8s;
}

.cm-pk__media::after {
	/* 文字を読みやすくする下側のグラデーション */
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg, rgba(10, 30, 48, 0) 30%, rgba(10, 30, 48, 0.55) 62%, rgba(10, 30, 48, 0.88) 100%),
		linear-gradient(90deg, rgba(10, 30, 48, 0.25), transparent 45%);
}

.cm-pk__body {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	padding: 22px 22px 20px;
}

.cm-pk__count {
	position: absolute;
	top: -0.2em;
	right: 22px;
	display: flex;
	align-items: baseline;
	gap: 6px;
	margin: 0;
	font-family: "ChuramapDisplay", Impact, sans-serif;
	line-height: 1;
	transform: translateY(-100%);
}

.cm-pk__count-now {
	color: transparent;
	font-size: 64px;
	-webkit-text-stroke: 1.5px rgba(255, 255, 255, 0.9);
}

.cm-pk__count-all {
	color: rgba(255, 255, 255, 0.8);
	font-size: 18px;
	letter-spacing: 0.06em;
}

.cm-pk__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 12px;
	margin: 0 0 10px;
}

.cm-pk__cat {
	padding: 4px 12px;
	border-radius: 999px;
	background: #fff;
	color: var(--cm-ink);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.4;
}

.cm-pk__area {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 13px;
	font-weight: 700;
	opacity: 0.92;
}

.cm-pk__title {
	margin: 0 0 8px;
	color: #fff;
	font-size: clamp(20px, 2.4vw, 30px);
	line-height: 1.4;
	text-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
}

.cm-pk__excerpt {
	display: -webkit-box;
	margin: 0 0 14px;
	overflow: hidden;
	color: rgba(255, 255, 255, 0.86);
	font-size: 14px;
	line-height: 1.75;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.cm-pk__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin: 0;
}

.cm-pk__date {
	color: rgba(255, 255, 255, 0.75);
	font-size: 13px;
	letter-spacing: 0.06em;
}

.cm-pk__more {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 18px;
	border-radius: 999px;
	background: #fff;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
	transition: background-color 0.2s ease, color 0.2s ease, gap 0.2s ease;
}

.cm-pk__panel-link:hover .cm-pk__more,
.cm-pk__panel-link:focus-visible .cm-pk__more {
	gap: 12px;
	background: var(--cm-pk-accent);
	color: #fff;
}

/* 右の一覧 */
.cm-pk__side {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.cm-pk__list {
	display: grid;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: none;
}

.cm-pk__item {
	margin: 0;
}

.cm-pk__tab {
	position: relative;
	display: grid;
	grid-template-columns: auto 88px minmax(0, 1fr);
	align-items: center;
	gap: 14px;
	height: 100%;
	padding: 12px 16px 12px 12px;
	overflow: hidden;
	border-radius: 16px;
	background: rgba(255, 255, 255, 0.55);
	color: var(--cm-ink);
	text-decoration: none;
	transition: background-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
}

.cm-pk__tab:hover {
	background: rgba(255, 255, 255, 0.9);
	transform: translateX(-3px);
}

.cm-pk__tab.is-active {
	background: #fff;
	box-shadow: 0 12px 28px rgba(15, 53, 80, 0.14);
	transform: translateX(-6px);
}

.cm-pk__tab.is-active::before {
	/* 選択中の印（左端の色の帯） */
	content: "";
	position: absolute;
	top: 12px;
	bottom: 12px;
	left: 0;
	width: 4px;
	border-radius: 0 4px 4px 0;
	background: linear-gradient(180deg, var(--cm-pink), var(--cm-cta));
}

.cm-pk__num {
	width: 2ch;
	color: #9fb3c2;
	font-family: "ChuramapDisplay", Impact, sans-serif;
	font-size: 24px;
	line-height: 1;
	text-align: center;
	transition: color 0.25s ease;
}

.cm-pk__tab.is-active .cm-pk__num {
	color: var(--cm-pk-accent);
}

.cm-pk__thumb {
	display: block;
	overflow: hidden;
	aspect-ratio: 1;
	border-radius: 12px;
	background: var(--cm-blue-soft);
	transition: box-shadow 0.25s ease;
}

.cm-pk__tab.is-active .cm-pk__thumb {
	box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--cm-pk-accent);
}

.cm-pk__thumb-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cm-pk__tab-body {
	display: grid;
	gap: 4px;
	min-width: 0;
}

.cm-pk__tab-title {
	display: -webkit-box;
	overflow: hidden;
	font-size: 15px;
	font-weight: 700;
	line-height: 1.5;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.cm-pk__tab-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 10px;
	color: var(--cm-muted);
	font-size: 12px;
	letter-spacing: 0.04em;
}

/* 自動で次へ切り替わるまでの進み具合（選択中の項目の下端） */
.cm-pk__progress {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 3px;
	transform: scaleX(0);
	transform-origin: 0 50%;
	background: linear-gradient(90deg, var(--cm-sky, #38b6ff), var(--cm-pk-accent));
}

.cm-pk.is-enhanced .cm-pk__tab.is-active .cm-pk__progress {
	animation: cm-pk-progress var(--cm-pk-interval, 6500ms) linear forwards;
}

.cm-pk.is-paused .cm-pk__tab.is-active .cm-pk__progress {
	animation-play-state: paused;
}

@keyframes cm-pk-progress {
	to {
		transform: scaleX(1);
	}
}

.cm-pk__hint {
	display: none;
	margin: 12px 0 0;
	color: var(--cm-muted);
	font-size: 12px;
	text-align: right;
}

.cm-pk.is-enhanced .cm-pk__hint {
	display: block;
}

.cm-pk__hint-pc {
	display: none;
}

@media (min-width: 960px) {
	.cm-pk__hint-pc {
		display: inline;
	}

	.cm-pk__hint-sp {
		display: none;
	}
}

@media (max-width: 767px) {
	.cm-pk__stage {
		aspect-ratio: 4 / 4.4;
		border-radius: 20px;
	}

	.cm-pk__body {
		padding: 18px 16px 16px;
	}

	.cm-pk__count {
		right: 16px;
	}

	.cm-pk__count-now {
		font-size: 46px;
	}

	.cm-pk__excerpt {
		display: none;
	}

	.cm-pk__more {
		padding: 8px 14px;
		font-size: 13px;
	}

	.cm-pk__tab {
		grid-template-columns: auto 60px minmax(0, 1fr);
		gap: 10px;
	}

	.cm-pk__tab.is-active,
	.cm-pk__tab:hover {
		transform: none;
	}
}

@media (min-width: 960px) {
	.cm-pickup {
		grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
		gap: 28px;
	}

	.cm-pk {
		grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
		gap: 28px;
		align-items: stretch;
	}

	.cm-pk__stage {
		aspect-ratio: auto;
		min-height: 580px;
	}

	.cm-pk__body {
		padding: 30px 32px 28px;
	}

	.cm-pk__count {
		right: 32px;
	}

	.cm-pk__side {
		justify-content: center;
	}

	/* PC：4つの項目で左の枠と同じ高さになるように広げる */
	.cm-pk__list {
		flex: 1;
		grid-auto-rows: 1fr;
		gap: 12px;
	}

	.cm-pk__tab {
		grid-template-columns: auto 128px minmax(0, 1fr);
		gap: 18px;
		padding: 14px 20px 14px 16px;
		border-radius: 20px;
	}

	.cm-pk__thumb {
		border-radius: 14px;
		aspect-ratio: 4 / 3;
	}

	.cm-pk__tab-title {
		font-size: 16px;
		-webkit-line-clamp: 3;
	}

	.cm-pk__tab-meta {
		font-size: 13px;
	}

	.cm-pk__num {
		font-size: 30px;
	}

	.cm-pk--single {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* 13-2. ちゅらマップ特典の特集（template-parts/front/perk.php）
   ========================================================================== */
.cm-section--perk {
	--pk-orange: #f07a22;
	--pk-deep: #b34a0c;
	position: relative;
	background:
		radial-gradient(circle at 8% 12%, rgba(255, 196, 140, 0.35), transparent 32%),
		radial-gradient(circle at 92% 88%, rgba(255, 170, 120, 0.25), transparent 36%),
		#fff7ee;
}

.cm-perkf__head {
	position: relative;
	margin-bottom: 28px;
	text-align: center;
}

.cm-perkf__script {
	margin: 0;
	color: var(--pk-orange);
	font-family: "ChuramapScript", cursive;
	font-size: clamp(26px, 5vw, 40px);
	line-height: 1;
	transform: rotate(-4deg);
}

.cm-perkf__title {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin: 6px 0 0;
	font-size: clamp(24px, 4.6vw, 34px);
	letter-spacing: 0.06em;
}

.cm-perkf__mark {
	width: clamp(40px, 7vw, 52px);
	height: auto;
	padding: 6px;
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 4px 14px rgba(179, 74, 12, 0.18);
}

.cm-perkf__lead {
	max-width: 36em;
	margin: 10px auto 0;
	color: var(--cm-ink);
	font-size: 15px;
}

.cm-perkf__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 640px) {
	.cm-perkf__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (min-width: 1024px) {
	.cm-perkf__grid {
		grid-template-columns: repeat(3, 1fr);
		gap: 22px;
	}
}

.cm-perkf__card {
	position: relative;
	display: grid;
	grid-template-columns: 104px 1fr;
	grid-template-rows: auto 1fr;
	gap: 0 14px;
	height: 100%;
	padding: 14px;
	border: 2px solid #ffd2ae;
	border-radius: 18px;
	background: #fff;
	box-shadow: 0 6px 18px rgba(179, 74, 12, 0.08);
	transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

.cm-perkf__card:hover,
.cm-perkf__card:focus-within {
	border-color: var(--pk-orange);
	box-shadow: 0 12px 26px rgba(179, 74, 12, 0.16);
	transform: translateY(-3px);
}

.cm-perkf__media {
	grid-row: 1 / 3;
	overflow: hidden;
	aspect-ratio: 1;
	border-radius: 12px;
	background: var(--cm-orange-soft);
}

.cm-perkf__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cm-perkf__body {
	min-width: 0;
}

.cm-perkf__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 10px;
	margin: 0;
	color: #5b6b78;
	font-size: 12px;
}

.cm-perkf__cat {
	padding: 1px 10px;
	border-radius: 999px;
	background: var(--c-soft, #eef6f8);
	color: var(--c-deep, var(--cm-ink));
	font-weight: 700;
}

.cm-perkf__area {
	display: inline-flex;
	align-items: center;
	gap: 2px;
}

.cm-perkf__name {
	margin: 6px 0 0;
	font-size: 16px;
	line-height: 1.45;
}

.cm-perkf__name a {
	color: var(--cm-ink);
	text-decoration: none;
}

/* カード全体を押せるように */
.cm-perkf__name a::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 18px;
}

.cm-perkf__name a:focus-visible {
	outline: none;
}

.cm-perkf__card:has(a:focus-visible) {
	outline: 3px solid var(--cm-blue-deep, #0b5c8c);
	outline-offset: 3px;
}

.cm-perkf__ticket {
	grid-column: 2;
	align-self: end;
	display: flex;
	align-items: stretch;
	margin: 10px 0 0;
	overflow: hidden;
	border: 1.5px dashed var(--pk-orange);
	border-radius: 10px;
	background: #fff8f0;
	font-size: 13px;
	line-height: 1.5;
}

.cm-perkf__ticket-label {
	display: inline-flex;
	flex-shrink: 0;
	align-items: center;
	gap: 3px;
	padding: 4px 8px;
	background: var(--pk-deep);
	color: #fff;
	font-weight: 700;
}

.cm-perkf__ticket-text {
	display: -webkit-box;
	overflow: hidden;
	padding: 5px 9px;
	color: #6d2c05;
	font-weight: 700;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
}

@media (max-width: 400px) {
	.cm-perkf__card {
		grid-template-columns: 84px 1fr;
	}
}

.cm-perkf__more {
	margin: 28px 0 0;
	text-align: center;
}

.cm-perkf__btn {
	gap: 8px;
	border-color: var(--pk-deep);
	background: var(--pk-deep);
	color: #fff;
}

.cm-perkf__count {
	white-space: nowrap;
}

.cm-perkf__btn:hover,
.cm-perkf__btn:focus-visible {
	border-color: #8f3907;
	background: #8f3907;
	color: #fff;
}

/* 14. SNS
   ========================================================================== */
.cm-sns-accounts {
	display: grid;
	gap: 12px;
	max-width: 760px;
	margin: 0 auto 32px;
	padding: 0;
	list-style: none;
}

@media (min-width: 600px) {
	.cm-sns-accounts {
		grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
	}
}

.cm-sns-account {
	display: flex;
	align-items: center;
	gap: 14px;
	min-height: 76px;
	padding: 12px 18px;
	border-radius: var(--cm-radius);
	background: #fff;
	color: var(--cm-ink);
	text-decoration: none;
	box-shadow: var(--cm-shadow);
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.cm-sns-account:hover {
	color: var(--cm-ink);
	transform: translateY(-3px);
	box-shadow: var(--cm-shadow-hover);
}

.cm-sns-account__icon {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 50px;
	height: 50px;
	border-radius: 14px;
	color: #fff;
}

.cm-sns-account--instagram .cm-sns-account__icon {
	background: linear-gradient(135deg, #feda75 0%, #fa7e1e 25%, #d62976 55%, #962fbf 80%, #4f5bd5 100%);
}

.cm-sns-account--tiktok .cm-sns-account__icon {
	background: #111;
	box-shadow: -2px -2px 0 #25f4ee, 2px 2px 0 #fe2c55;
}

.cm-sns-account__text {
	display: flex;
	flex: 1;
	flex-direction: column;
	line-height: 1.4;
}

.cm-sns-account__name {
	font-size: 17px;
	font-weight: 700;
}

.cm-sns-account__sub {
	color: var(--cm-muted);
	font-size: 13px;
}

.cm-sns-feed {
	max-width: 100%;
	margin-bottom: 32px;
	overflow: hidden;
}

.cm-sns-scroller {
	margin-inline: calc(var(--cm-gutter) * -1);
	padding: 6px var(--cm-gutter) 18px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: var(--cm-gutter);
	overscroll-behavior-x: contain;
	scrollbar-width: thin;
	scrollbar-color: var(--cm-blue) transparent;
}

.cm-sns-list {
	display: flex;
	gap: 16px;
	width: max-content;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-sns-card {
	display: flex;
	flex-direction: column;
	width: min(68vw, 230px);
	overflow: hidden;
	border-radius: var(--cm-radius);
	background: #fff;
	box-shadow: var(--cm-shadow);
	scroll-snap-align: start;
}

.cm-sns-card__media {
	position: relative;
	aspect-ratio: 4 / 5;
	background: linear-gradient(160deg, var(--cm-blue-soft), #d7eefb);
}

.cm-sns-card--instagram .cm-sns-card__media {
	background: linear-gradient(160deg, var(--cm-pink-soft), #ffe1ef);
}

.cm-sns-card__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cm-sns-card__img.cm-is-placeholder {
	object-fit: contain;
	padding: 24%;
}

.cm-sns-card__badge {
	position: absolute;
	top: 10px;
	left: 10px;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 3px 10px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.95);
	color: var(--cm-ink);
	font-size: 12px;
	font-weight: 700;
}

.cm-sns-card__play {
	position: absolute;
	right: 10px;
	bottom: 10px;
	left: 10px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 44px;
	border: 0;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.95);
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
	box-shadow: 0 4px 12px rgba(16, 42, 67, 0.18);
	cursor: pointer;
}

.cm-sns-card__play:hover {
	background: var(--cm-sea);
	color: #fff;
}

.cm-sns-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 8px;
	padding: 12px 14px 14px;
}

.cm-sns-card__title {
	display: -webkit-box;
	margin: 0;
	overflow: hidden;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.55;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.cm-sns-card__related {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-top: auto;
	min-height: 32px;
	color: var(--cm-blue-deep);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
}

.cm-sns-dialog {
	width: min(560px, calc(100vw - 24px));
	max-height: calc(100dvh - 24px);
	padding: 0;
	border: 0;
	border-radius: var(--cm-radius-l);
	background: #fff;
	color: var(--cm-text);
	box-shadow: 0 30px 60px rgba(16, 42, 67, 0.3);
}

.cm-sns-dialog::backdrop {
	background: rgba(15, 53, 80, 0.6);
}

.cm-sns-dialog__inner {
	display: flex;
	flex-direction: column;
	max-height: calc(100dvh - 28px);
}

.cm-sns-dialog__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 12px 12px 12px 18px;
	border-bottom: 1px solid var(--cm-line);
}

.cm-sns-dialog__title {
	margin: 0;
	font-weight: 700;
	font-size: 15px;
	color: var(--cm-ink);
}

.cm-sns-dialog__close {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 44px;
	height: 44px;
	border: 1px solid var(--cm-line);
	border-radius: 12px;
	background: #fff;
	cursor: pointer;
}

.cm-sns-dialog__body {
	display: flex;
	justify-content: center;
	min-height: 200px;
	padding: 14px;
	overflow-y: auto;
}

.cm-sns-dialog__body blockquote {
	margin: 0 !important;
	max-width: 100% !important;
	min-width: 0 !important;
}

.cm-sns-dialog__note {
	margin: 0;
	padding: 10px 18px 14px;
	color: var(--cm-muted);
	font-size: 12px;
}

/* 14-2. スタッフ撮影（流れる写真）
   ========================================================================== */
/* 背景は透明にして、ひとつ前のセクションの上に波を少し重ねる（境目に白い帯が出ないように） */
.cm-section--staff {
	position: relative;
	margin-top: -38px;
	padding: 74px 0 0;
	overflow: hidden;
	background: transparent;
}

@media (min-width: 768px) {
	.cm-section--staff {
		padding-top: 68px;
	}
}

.cm-section--staff > .cm-container,
.cm-staff {
	position: relative;
	z-index: 1;
}

/* 背景：海の帯・砂浜・泡・生き物 */
.cm-staff__sea {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
}

.cm-staff__band {
	/* セクション全体（見出しの上から砂浜まで）を海にする */
	position: absolute;
	inset: 38px 0 0;
	background:
		radial-gradient(ellipse 60% 40% at 50% 0%, rgba(255, 255, 255, 0.55), transparent 70%),
		linear-gradient(180deg, #d6f0fb 0%, #bfe8f7 30%, #9fdaf1 70%, #86cfec 100%);
}

.cm-staff__band::before {
	content: "";
	position: absolute;
	top: -37px;
	left: 0;
	width: 200%;
	height: 40px;
	background: #d6f0fb;
	-webkit-mask: var(--cm-staff-wave) repeat-x 0 100% / 25% 100%;
	mask: var(--cm-staff-wave) repeat-x 0 100% / 25% 100%;
	animation: cm-wave 24s linear infinite;
}

/* 水面から差し込む光の筋 */
.cm-staff__sea::before {
	content: "";
	position: absolute;
	inset: 38px 0 0;
	z-index: 1;
	background: repeating-linear-gradient(100deg, transparent 0 70px, rgba(255, 255, 255, 0.22) 70px 110px, transparent 110px 210px);
	-webkit-mask: linear-gradient(180deg, #000, transparent 55%);
	mask: linear-gradient(180deg, #000, transparent 55%);
	animation: cm-staff-rays 12s ease-in-out infinite alternate;
}

@keyframes cm-staff-rays {
	from { opacity: 0.6; transform: translateX(-20px); }
	to { opacity: 1; transform: translateX(20px); }
}

.cm-staff__band {
	z-index: 0;
}

.cm-staff__sand,
.cm-staff__bubble,
.cm-staff__creature {
	z-index: 2;
}

.cm-section--staff {
	--cm-staff-wave: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 40' preserveAspectRatio='none'%3E%3Cpath d='M0 24 C100 4 200 4 300 18 C400 32 500 36 600 20 C700 4 750 10 800 24 V40 H0Z'/%3E%3C/svg%3E");
}

.cm-staff__sand {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 64px;
	background: linear-gradient(180deg, #f7ecd3, #f2e1bb);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 64' preserveAspectRatio='none'%3E%3Cpath d='M0 20 C120 8 280 8 400 18 C520 28 680 32 800 20 V64 H0Z'/%3E%3C/svg%3E") repeat-x 0 0 / 800px 100%;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 800 64' preserveAspectRatio='none'%3E%3Cpath d='M0 20 C120 8 280 8 400 18 C520 28 680 32 800 20 V64 H0Z'/%3E%3C/svg%3E") repeat-x 0 0 / 800px 100%;
}

.cm-staff__bubble {
	position: absolute;
	bottom: 70px;
	width: 14px;
	height: 14px;
	border: 2px solid rgba(110, 205, 205, 0.75);
	border-radius: 50%;
	background: radial-gradient(circle at 35% 35%, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.15) 60%);
	opacity: 0;
	animation: cm-bubble 9s ease-in infinite;
}

.cm-staff__bubble--1 { left: 6%; animation-delay: 0s; }
.cm-staff__bubble--2 { left: 14%; width: 9px; height: 9px; animation-delay: 2.5s; animation-duration: 11s; }
.cm-staff__bubble--3 { left: 23%; width: 18px; height: 18px; animation-delay: 5s; }
.cm-staff__bubble--4 { left: 37%; width: 10px; height: 10px; animation-delay: 1.5s; animation-duration: 12s; }
.cm-staff__bubble--5 { left: 49%; animation-delay: 6.5s; }
.cm-staff__bubble--6 { left: 58%; width: 20px; height: 20px; animation-delay: 3.5s; animation-duration: 10s; }
.cm-staff__bubble--7 { left: 67%; width: 8px; height: 8px; animation-delay: 0.8s; }
.cm-staff__bubble--8 { left: 76%; width: 12px; height: 12px; animation-delay: 4.5s; animation-duration: 13s; }
.cm-staff__bubble--9 { left: 86%; width: 16px; height: 16px; animation-delay: 7.5s; }
.cm-staff__bubble--10 { left: 94%; width: 10px; height: 10px; animation-delay: 2s; animation-duration: 11s; }

@keyframes cm-bubble {
	0% { transform: translate(0, 0); opacity: 0; }
	12% { opacity: 1; }
	50% { transform: translate(8px, -140px); }
	85% { opacity: 0.8; }
	100% { transform: translate(-6px, -300px); opacity: 0; }
}

.cm-staff__creature {
	position: absolute;
	height: auto;
	filter: drop-shadow(0 6px 8px rgba(16, 42, 67, 0.15));
}

/* サンゴ・海藻・チンアナゴ：砂浜のうしろに置き、根元が砂に埋まって見えるように */
.cm-staff__creature.is-ground {
	z-index: 1;
	filter: drop-shadow(0 4px 6px rgba(16, 42, 67, 0.12));
}

.cm-staff__creature.is-swim {
	animation: cm-swim 9s ease-in-out infinite alternate;
}

.cm-staff__creature.is-sway {
	transform-origin: 50% 100%;
	animation: cm-sway 5s ease-in-out infinite alternate;
}

.cm-staff__creature.is-bob {
	animation: cm-bob 4s ease-in-out infinite alternate;
}

@keyframes cm-sway {
	from { rotate: -4deg; }
	to { rotate: 4deg; }
}

@media (max-width: 1023px) {
	.cm-staff__creature.is-pc-only {
		display: none;
	}
}

@media (max-width: 767px) {
	.cm-staff__creature {
		max-width: 22vw;
	}
}

/* ひとこと（手書き風）：下がっている写真の上に乗って一緒に流れる */
.cm-staff {
	padding: 0 0 128px;
}

.cm-staff__item.has-deco {
	position: relative;
}

.cm-staff__label {
	position: absolute;
	bottom: calc(100% + 4px);
	left: 50%;
	z-index: 3;
	margin: 0;
	padding: 0 6px 14px;
	color: var(--cm-ink);
	font-family: "Yomogi", "Klee One", "Hiragino Maru Gothic ProN", var(--cm-font);
	font-size: 16px;
	line-height: 1.3;
	letter-spacing: 0.04em;
	white-space: nowrap;
	transform: translateX(-50%) rotate(-5deg);
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 16' preserveAspectRatio='none'%3E%3Cpath d='M2 8 Q40 0 80 8 T160 8 T240 8 T298 6' fill='none' stroke='%2338b6ff' stroke-width='3' stroke-dasharray='1 7' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 0 100% / 100% 14px;
}

.cm-staff__label::after {
	/* 泡 */
	content: "";
	position: absolute;
	right: -26px;
	bottom: -6px;
	width: 26px;
	height: 30px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 30'%3E%3Cg fill='none' stroke='%2378d3cf' stroke-width='2.2'%3E%3Ccircle cx='8' cy='20' r='6'/%3E%3Ccircle cx='19' cy='7' r='4'/%3E%3C/g%3E%3C/svg%3E") no-repeat center / contain;
}

.cm-staff__sparkle {
	position: absolute;
	top: -26px;
	left: -10px;
	width: 50px;
	height: 30px;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 50 30'%3E%3Cg stroke='%23ffd84d' stroke-width='3.2' stroke-linecap='round'%3E%3Cpath d='M14 4v22M3 15h22M6 7l16 16M22 7L6 23'/%3E%3Cpath d='M40 6v12M34 12h12M36 8l8 8M44 8l-8 8' stroke-width='2.6'/%3E%3C/g%3E%3C/svg%3E") no-repeat center / contain;
	animation: cm-twinkle 2.4s ease-in-out infinite;
}

@keyframes cm-twinkle {
	0%, 100% { opacity: 1; scale: 1; }
	50% { opacity: 0.55; scale: 0.88; }
}

@media (min-width: 768px) {
	.cm-staff {
		padding: 0 0 150px;
	}

	.cm-staff__label {
		font-size: 21px;
	}
}

/* 写真の列（右から左へ流れる） */
.cm-staff__viewport {
	overflow: hidden;
	padding: 24px 0 20px;
}

.cm-staff__viewport:focus-visible {
	outline-offset: -3px;
}

.cm-staff__track {
	display: flex;
	width: max-content;
	animation: cm-marquee var(--cm-staff-duration, 60s) linear infinite;
	will-change: transform;
}


@keyframes cm-marquee {
	from { transform: translateX(0); }
	to { transform: translateX(-50%); }
}

.cm-staff__list {
	display: flex;
	align-items: flex-start;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-staff__item {
	flex: 0 0 auto;
	width: 220px;
	margin-right: 18px;
}

.cm-staff__item:nth-child(odd) {
	margin-top: 56px;
}

.cm-staff__figure {
	position: relative;
	margin: 0;
	overflow: hidden;
	aspect-ratio: 1 / 1;
	border-radius: 16px;
	background: var(--cm-blue-soft);
	box-shadow: 0 10px 26px rgba(16, 42, 67, 0.16);
}

.cm-staff__item:nth-child(even) .cm-staff__figure {
	aspect-ratio: 10 / 9;
}

.cm-staff__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.cm-staff__figure:hover .cm-staff__img {
	transform: scale(1.05);
}

.cm-staff__note {
	/* 写真の右下のひとこと（白い小さなボックス） */
	position: absolute;
	right: 10px;
	bottom: 10px;
	max-width: calc(100% - 20px);
	margin: 0;
	padding: 5px 10px;
	border-radius: 8px;
	background: #fff;
	box-shadow: 0 4px 12px rgba(15, 53, 80, 0.18);
	color: var(--cm-ink);
	font-size: 12px;
	font-weight: 700;
	line-height: 1.4;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

@media (min-width: 768px) {
	.cm-staff__note {
		right: 14px;
		bottom: 14px;
		padding: 6px 12px;
		font-size: 13px;
	}
}

@media (min-width: 768px) {
	.cm-staff__item {
		width: 340px;
		margin-right: 32px;
	}

	.cm-staff__item:nth-child(odd) {
		margin-top: 72px;
	}
}

/* 「動きを減らす」設定時：自動で流さず、指で横にスクロールできる一覧に */
@media (prefers-reduced-motion: reduce) {
	.cm-staff__viewport {
		overflow-x: auto;
		scroll-snap-type: x mandatory;
	}

	.cm-staff__list[aria-hidden="true"] {
		display: none;
	}

	.cm-staff__item {
		scroll-snap-align: start;
	}

	.cm-staff__list {
		padding-left: var(--cm-gutter);
	}
}

/* 15. 店舗掲載の案内
   ========================================================================== */
.cm-listing-cta {
	position: relative;
	display: grid;
	gap: 8px;
	padding: 32px 22px 36px;
	overflow: hidden;
	border-radius: 24px;
	background:
		radial-gradient(circle at 100% 0%, rgba(255, 145, 77, 0.22), transparent 45%),
		radial-gradient(circle at 0% 100%, rgba(56, 182, 255, 0.18), transparent 45%),
		linear-gradient(135deg, var(--cm-pink-soft) 0%, #fff 100%);
	box-shadow: var(--cm-shadow-hover);
}

.cm-listing-cta::before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 4px;
	background: var(--cm-brand-bar);
}

.cm-listing-cta__visual {
	position: relative;
	display: flex;
	align-items: flex-end;
	justify-content: center;
	gap: 8px;
}

.cm-listing-cta__character {
	width: 150px;
	height: auto;
	filter: drop-shadow(0 10px 14px rgba(16, 42, 67, 0.18));
	animation: cm-float 5s ease-in-out infinite;
}

.cm-listing-cta__house {
	display: none;
}

.cm-listing-cta__eyebrow {
	margin: 0;
	color: var(--cm-pink-deep);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.24em;
}

.cm-listing-cta__title {
	margin: 4px 0 14px;
	font-size: clamp(22px, 5.2vw, 32px);
}

.cm-listing-cta__lead {
	margin: 0 0 18px;
}

.cm-listing-cta__points {
	display: grid;
	gap: 10px;
	margin: 0 0 26px;
	padding: 0;
	list-style: none;
}

.cm-listing-cta__points li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-weight: 700;
	color: var(--cm-ink);
}

.cm-listing-cta__points .cm-icon {
	flex-shrink: 0;
	width: 26px;
	height: 26px;
	padding: 5px;
	border-radius: 50%;
	background: var(--cm-green);
	color: #fff;
}

.cm-listing-cta__action {
	margin: 0;
}

.cm-listing-cta__note {
	margin: 18px 0 0;
	color: var(--cm-muted);
	font-size: 13px;
}

@media (min-width: 900px) {
	.cm-listing-cta {
		grid-template-columns: 280px minmax(0, 1fr);
		gap: 48px;
		align-items: center;
		padding: 52px 60px;
	}

	.cm-listing-cta__character {
		width: 230px;
	}
}

/* 16. フッター（明るい砂浜）
   ・上：砂浜から上へ、淡いエメラルド → 白 → 砂浜のグラデーション（斜めにゆるく波打つ形・動きなし）
   ・地の色：砂浜のベージュに、砂粒の細かい模様と、貝殻・ヒトデのイラスト
   ========================================================================== */
.cm-footer {
	--cm-sand: #f7ecd3;
	--cm-sand-deep: #efdcb3;
	--cm-footer-ink: #3d3221;
	position: relative;
	margin-top: 120px;
	padding-top: 24px;
	background-color: var(--cm-sand);
	background-image:
		url("../images/illust/starfish.svg"),
		url("../images/illust/shell.svg"),
		url("../images/illust/shell.svg"),
		radial-gradient(rgba(176, 140, 82, 0.22) 1px, transparent 1.6px),
		radial-gradient(rgba(255, 255, 255, 0.7) 1px, transparent 1.6px),
		linear-gradient(180deg, var(--cm-sand) 0%, #f5e6c6 60%, var(--cm-sand-deep) 100%);
	background-size: 64px, 46px, 34px, 22px 22px, 30px 30px, 100% 100%;
	background-position: right 3% bottom 96px, left 3% bottom 90px, right 9% bottom 74px, 0 0, 11px 7px, 0 0;
	background-repeat: no-repeat, no-repeat, no-repeat, repeat, repeat, no-repeat;
	color: var(--cm-footer-ink);
}

/* 砂浜から上へ：淡いエメラルドの浅瀬 → 白い波打ちぎわ → 砂浜のグラデーション。
   上の端は斜めにゆるく波打つ形（動きません）。高さは height、形は mask の SVG で調整します */
.cm-footer::before {
	content: "";
	position: absolute;
	top: -150px;
	left: 0;
	width: 100%;
	height: 151px;
	background: linear-gradient(180deg,
		rgba(255, 255, 255, 0) 0%,
		rgba(150, 226, 220, 0.22) 30%,
		rgba(160, 232, 222, 0.38) 55%,
		rgba(255, 255, 255, 0.75) 76%,
		var(--cm-sand) 100%);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 150' preserveAspectRatio='none'%3E%3Cpath d='M0 20 C240 0 420 50 720 52 C1020 54 1200 86 1440 74 V150 H0Z'/%3E%3C/svg%3E") no-repeat 0 0 / 100% 100%;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 150' preserveAspectRatio='none'%3E%3Cpath d='M0 20 C240 0 420 50 720 52 C1020 54 1200 86 1440 74 V150 H0Z'/%3E%3C/svg%3E") no-repeat 0 0 / 100% 100%;
	pointer-events: none;
}

@media (max-width: 767px) {
	.cm-footer::before {
		top: -100px;
		height: 101px;
	}
}

.cm-footer a {
	color: #2a4a5e;
}

.cm-footer a:hover {
	color: var(--cm-sea-dark);
}

.cm-footer__inner {
	display: grid;
	gap: 36px;
	padding-bottom: 44px;
}

.cm-footer__brand {
	position: relative;
	padding-right: 96px;
}

.cm-logo--footer .cm-logo__link {
	padding: 14px 18px;
	border-radius: var(--cm-radius);
	background: #fff;
	box-shadow: 0 6px 18px rgba(150, 110, 50, 0.14);
}

.cm-logo--footer .cm-logo__image {
	width: 120px;
	height: auto;
}

.cm-footer__summary {
	margin: 18px 0 18px;
	font-size: 14px;
}

.cm-footer__character {
	position: absolute;
	top: 0;
	right: 0;
	width: 88px;
	height: auto;
	filter: drop-shadow(0 8px 8px rgba(150, 110, 50, 0.2));
}

.cm-footer .cm-social__link {
	border-color: rgba(120, 90, 40, 0.25);
	background: #fff;
	color: var(--cm-footer-ink);
}

.cm-footer .cm-social__link:hover {
	border-color: var(--cm-sea);
	background: var(--cm-sea);
	color: #fff;
}

.cm-footer__cols {
	display: grid;
	gap: 28px;
}

@media (min-width: 600px) {
	.cm-footer__cols {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cm-footer__col--areas {
		grid-column: 1 / -1;
	}
}

@media (min-width: 1024px) {
	.cm-footer__inner {
		grid-template-columns: 300px minmax(0, 1fr);
		gap: 56px;
	}

	.cm-footer__cols {
		grid-template-columns: 1.6fr 1fr 1.2fr 1fr;
	}

	.cm-footer__col--areas {
		grid-column: auto;
	}
}

/* 見出し：ちゅらマップの4色の線 */
.cm-footer__heading {
	position: relative;
	margin: 0 0 12px;
	padding-bottom: 10px;
	color: var(--cm-footer-ink);
	font-size: 15px;
	letter-spacing: 0.06em;
}

.cm-footer__heading::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%;
	height: 1px;
	background: rgba(120, 90, 40, 0.2);
}

.cm-footer__heading::before {
	content: "";
	position: absolute;
	bottom: -1px;
	left: 0;
	z-index: 1;
	width: 44px;
	height: 3px;
	border-radius: 3px;
	background: var(--cm-brand-bar);
}

.cm-footer__links {
	margin: 0;
	padding: 0;
	list-style: none;
	font-size: 14px;
}

.cm-footer__links li + li {
	margin-top: 4px;
}

.cm-footer__links a {
	display: inline-block;
	padding: 4px 0;
	text-decoration: none;
}

.cm-footer__links a:hover {
	text-decoration: underline;
}

.cm-footer__links--posts a {
	display: -webkit-box;
	overflow: hidden;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
}

.cm-footer__area + .cm-footer__area {
	margin-top: 10px;
}

.cm-footer__area-parent {
	color: var(--cm-footer-ink);
	font-weight: 700;
	font-size: 14px;
	text-decoration: none;
}

.cm-footer__area-list {
	display: flex;
	flex-wrap: wrap;
	gap: 0 12px;
	margin: 2px 0 0;
	padding: 0;
	list-style: none;
	font-size: 13px;
}

.cm-footer__area-list a {
	display: inline-block;
	padding: 3px 0;
	text-decoration: none;
}

/* いちばん下：少し濃い、ぬれた砂の色 */
.cm-footer__bottom {
	padding: 18px 0 24px;
	border-top: 1px dashed rgba(120, 90, 40, 0.25);
	background: #e9d3a6;
	color: #5a4628;
	font-size: 13px;
}

.cm-footer__bottom a {
	color: #5a4628;
}

.cm-footer__bottom-inner {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 6px 24px;
}

.cm-footer__operator,
.cm-footer__copy {
	margin: 0;
}

@media (max-width: 767px) {
	.cm-footer {
		background-size: 44px, 34px, 26px, 22px 22px, 30px 30px, 100% 100%;
		background-position: right 4% bottom 110px, left 4% bottom 70px, right 20% bottom 90px, 0 0, 11px 7px, 0 0;
	}
}

.cm-pagetop {
	position: fixed;
	right: 16px;
	bottom: 16px;
	z-index: 800;
	display: grid;
	place-items: center;
	width: 50px;
	height: 50px;
	border-radius: 50%;
	background: var(--cm-sea);
	color: #fff;
	box-shadow: 0 6px 16px rgba(16, 42, 67, 0.25);
	opacity: 0;
	visibility: hidden;
	transform: translateY(10px);
	transition: opacity 0.3s, transform 0.3s, visibility 0.3s, background-color 0.2s;
}

.cm-pagetop.is-visible {
	opacity: 1;
	visibility: visible;
	transform: none;
}

.cm-pagetop:hover {
	color: #fff;
	background: var(--cm-sea-dark);
}

/* 17. パンくず
   ========================================================================== */
.cm-breadcrumb {
	padding: 14px 0;
	font-size: 13px;
}

.cm-breadcrumb__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 2px 0;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-breadcrumb__item {
	display: inline-flex;
	align-items: center;
	min-width: 0;
}

.cm-breadcrumb__item + .cm-breadcrumb__item::before {
	content: "›";
	margin: 0 8px;
	color: var(--cm-muted);
}

.cm-breadcrumb__item a {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 4px 0;
	color: var(--cm-blue-deep);
	text-decoration: none;
}

.cm-breadcrumb__item a:hover {
	text-decoration: underline;
}

.cm-breadcrumb__item [aria-current] {
	color: var(--cm-muted);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	max-width: 60vw;
}

/* 18. 一覧ページ
   ========================================================================== */
.cm-listing__hero {
	position: relative;
	padding: 0 0 72px;
	background:
		radial-gradient(circle at 90% 10%, rgba(255, 255, 255, 0.8), transparent 35%),
		linear-gradient(180deg, var(--c-soft) 0%, #fff 100%);
}

.cm-listing__heading {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	margin-top: 8px;
}

.cm-listing__eyebrow {
	margin: 0;
	color: var(--c-deep);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.24em;
}

.cm-listing__title {
	margin: 4px 0 0;
	font-size: clamp(24px, 6vw, 38px);
	word-break: break-word;
}

.cm-listing__title::after {
	content: "";
	display: block;
	width: 56px;
	height: 4px;
	margin-top: 14px;
	border-radius: 4px;
	background: var(--cm-brand-bar);
}

.cm-listing__desc {
	max-width: 46em;
	margin-top: 14px;
	font-size: 15px;
}

.cm-listing__desc p {
	margin: 0;
}

.cm-listing__illust {
	flex-shrink: 0;
	width: 72px;
	height: auto;
}

.cm-listing__image {
	flex-shrink: 0;
	width: 140px;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--cm-radius);
	box-shadow: var(--cm-shadow-hover);
}

@media (min-width: 768px) {
	.cm-listing__illust {
		width: 110px;
	}

	.cm-listing__image {
		width: 260px;
	}
}

.cm-listing__areas {
	margin-top: 22px;
}

.cm-chip--back,
.cm-chip--map {
	background: var(--cm-sea);
	border-color: var(--cm-sea);
	color: #fff;
}

.cm-chip--back:hover,
.cm-chip--map:hover {
	background: var(--cm-sea-dark);
	border-color: var(--cm-sea-dark);
	color: #fff;
}

.cm-listing__body {
	padding-top: 0;
	padding-bottom: 24px;
}

.cm-filter {
	position: relative;
	display: grid;
	gap: 14px;
	margin-top: -44px;
	margin-bottom: 32px;
	padding: 18px;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow-hover);
}

.cm-filter__field label {
	display: flex;
	align-items: center;
	gap: 4px;
	margin-bottom: 6px;
	color: var(--cm-ink);
	font-size: 13px;
	font-weight: 700;
}

.cm-filter__field label .cm-icon {
	color: var(--cm-blue-deep);
}

.cm-filter__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
}

.cm-filter__actions .cm-btn {
	flex: 1;
	box-shadow: none;
}

.cm-filter__reset {
	font-size: 14px;
	font-weight: 700;
}

@media (min-width: 768px) {
	.cm-filter {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		padding: 22px 26px;
	}
}

@media (min-width: 768px) {
	.cm-filter__field--perk {
		grid-column: 1 / -1;
	}
}

@media (min-width: 1024px) {
	.cm-filter {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.3fr) auto;
		align-items: end;
	}

	/* 「特典ありのお店だけ」は2行目（ボタンは1行目の右端のまま） */
	.cm-filter__field--perk {
		order: 5;
	}

	.cm-filter__perk-box {
		display: inline-flex;
		min-height: 42px;
	}

	.cm-filter__actions .cm-btn {
		flex: none;
	}
}

.cm-listing__count {
	margin: 0 0 16px;
	color: var(--cm-muted);
	font-size: 14px;
}

.cm-listing__count strong {
	color: var(--cm-ink);
	font-size: 22px;
}

.cm-pagination {
	margin: 44px 0 0;
}

.cm-pagination ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-pagination .page-numbers {
	display: grid;
	place-items: center;
	min-width: 46px;
	height: 46px;
	padding: 0 10px;
	border: 1px solid var(--cm-line);
	border-radius: 10px;
	background: #fff;
	color: var(--cm-ink);
	font-weight: 700;
	text-decoration: none;
}

.cm-pagination .page-numbers.current {
	background: var(--cm-sea);
	border-color: var(--cm-sea);
	color: #fff;
}

.cm-pagination .page-numbers.dots {
	border-color: transparent;
	background: none;
}

.cm-pagination a.page-numbers:hover {
	border-color: var(--cm-sea);
	color: var(--cm-sea);
}

.cm-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 18px;
	padding: 28px 20px;
	border-radius: var(--cm-radius-l);
	background: var(--cm-bg-alt);
	text-align: center;
}

.cm-empty__character {
	width: 110px;
	height: auto;
}

.cm-empty__title {
	margin: 0 0 6px;
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: 19px;
	font-weight: 700;
}

.cm-empty__text {
	margin: 0;
	color: var(--cm-muted);
	font-size: 14px;
}

.cm-empty__label {
	margin: 18px 0 8px;
	color: var(--cm-ink);
	font-size: 13px;
	font-weight: 700;
}

.cm-empty .cm-chips {
	justify-content: center;
}

.cm-empty__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	margin: 20px 0 0;
}

@media (min-width: 768px) {
	.cm-empty {
		flex-direction: row;
		align-items: flex-start;
		padding: 32px;
		text-align: left;
	}

	.cm-empty .cm-chips,
	.cm-empty__actions {
		justify-content: flex-start;
	}
}

/* 18-2. カテゴリーページの背景シーン（inc/category-scene.php）
   カテゴリーごとに、見出しの背景を沖縄の風景の絵にします。
   絵の差し替え：assets/images/scenes/{シーン}-pc / -sp（.webp と .jpg を同じ名前で）
   ========================================================================== */
.cm-scene--activity {
	--cm-scene-color: #2a9fd0;
	--cm-scene-sp: url("../images/scenes/activity-sp.jpg");
	--cm-scene-sp2: image-set(url("../images/scenes/activity-sp.webp") type("image/webp"), url("../images/scenes/activity-sp.jpg") type("image/jpeg"));
	--cm-scene-pc: url("../images/scenes/activity-pc.jpg");
	--cm-scene-pc2: image-set(url("../images/scenes/activity-pc.webp") type("image/webp"), url("../images/scenes/activity-pc.jpg") type("image/jpeg"));
}

.cm-scene--kitchen-car {
	--cm-scene-color: #bfeaf2;
	--cm-scene-sp: url("../images/scenes/kitchen-car-sp.jpg");
	--cm-scene-sp2: image-set(url("../images/scenes/kitchen-car-sp.webp") type("image/webp"), url("../images/scenes/kitchen-car-sp.jpg") type("image/jpeg"));
	--cm-scene-pc: url("../images/scenes/kitchen-car-pc.jpg");
	--cm-scene-pc2: image-set(url("../images/scenes/kitchen-car-pc.webp") type("image/webp"), url("../images/scenes/kitchen-car-pc.jpg") type("image/jpeg"));
}

.cm-scene--rent-a-car {
	--cm-scene-color: #a9e2f2;
	--cm-scene-sp: url("../images/scenes/rent-a-car-sp.jpg");
	--cm-scene-sp2: image-set(url("../images/scenes/rent-a-car-sp.webp") type("image/webp"), url("../images/scenes/rent-a-car-sp.jpg") type("image/jpeg"));
	--cm-scene-pc: url("../images/scenes/rent-a-car-pc.jpg");
	--cm-scene-pc2: image-set(url("../images/scenes/rent-a-car-pc.webp") type("image/webp"), url("../images/scenes/rent-a-car-pc.jpg") type("image/jpeg"));
}

.cm-scene--stay {
	--cm-scene-color: #f2b0a0;
	--cm-scene-sp: url("../images/scenes/stay-sp.jpg");
	--cm-scene-sp2: image-set(url("../images/scenes/stay-sp.webp") type("image/webp"), url("../images/scenes/stay-sp.jpg") type("image/jpeg"));
	--cm-scene-pc: url("../images/scenes/stay-pc.jpg");
	--cm-scene-pc2: image-set(url("../images/scenes/stay-pc.webp") type("image/webp"), url("../images/scenes/stay-pc.jpg") type("image/jpeg"));
}

.cm-scene--retail {
	--cm-scene-color: #bfe8f4;
	--cm-scene-sp: url("../images/scenes/retail-sp.jpg");
	--cm-scene-sp2: image-set(url("../images/scenes/retail-sp.webp") type("image/webp"), url("../images/scenes/retail-sp.jpg") type("image/jpeg"));
	--cm-scene-pc: url("../images/scenes/retail-pc.jpg");
	--cm-scene-pc2: image-set(url("../images/scenes/retail-pc.webp") type("image/webp"), url("../images/scenes/retail-pc.jpg") type("image/jpeg"));
}

.cm-scene--beauty-health {
	--cm-scene-color: #cdeff0;
	--cm-scene-sp: url("../images/scenes/beauty-health-sp.jpg");
	--cm-scene-sp2: image-set(url("../images/scenes/beauty-health-sp.webp") type("image/webp"), url("../images/scenes/beauty-health-sp.jpg") type("image/jpeg"));
	--cm-scene-pc: url("../images/scenes/beauty-health-pc.jpg");
	--cm-scene-pc2: image-set(url("../images/scenes/beauty-health-pc.webp") type("image/webp"), url("../images/scenes/beauty-health-pc.jpg") type("image/jpeg"));
}

.cm-scene--restaurant {
	--cm-scene-color: #c6eef4;
	--cm-scene-sp: url("../images/scenes/restaurant-sp.jpg");
	--cm-scene-sp2: image-set(url("../images/scenes/restaurant-sp.webp") type("image/webp"), url("../images/scenes/restaurant-sp.jpg") type("image/jpeg"));
	--cm-scene-pc: url("../images/scenes/restaurant-pc.jpg");
	--cm-scene-pc2: image-set(url("../images/scenes/restaurant-pc.webp") type("image/webp"), url("../images/scenes/restaurant-pc.jpg") type("image/jpeg"));
}

.cm-scene .cm-listing__hero {
	display: flex;
	flex-direction: column;
	min-height: 440px;
	padding-bottom: 80px;
	background-color: var(--cm-scene-color);
	background-image: linear-gradient(180deg, transparent 82%, #f7f9fa 100%), var(--cm-scene-sp);
	background-image: linear-gradient(180deg, transparent 82%, #f7f9fa 100%), var(--cm-scene-sp2);
	background-position: center, center bottom;
	background-size: cover, cover;
	background-repeat: no-repeat;
}

@media (min-width: 768px) {
	.cm-scene .cm-listing__hero {
		min-height: 480px;
		background-image: linear-gradient(180deg, transparent 84%, #f7f9fa 100%), var(--cm-scene-pc);
		background-image: linear-gradient(180deg, transparent 84%, #f7f9fa 100%), var(--cm-scene-pc2);
		background-position: center, right bottom;
	}
}

@media (min-width: 1920px) {
	.cm-scene .cm-listing__hero {
		min-height: 22vw;
	}
}

/* 絵の上でも読みやすいように、パンくずと見出しを白い札に */
.cm-scene .cm-breadcrumb {
	display: inline-block;
	max-width: 100%;
	margin-top: 14px;
	padding: 4px 14px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.86);
}

.cm-scene .cm-listing__heading-text {
	max-width: 100%;
	padding: 18px 22px 20px;
	border-radius: 22px;
	background: rgba(255, 255, 255, 0.9);
	box-shadow: 0 10px 30px rgba(11, 59, 85, 0.14);
	-webkit-backdrop-filter: blur(4px);
	backdrop-filter: blur(4px);
}

@media (min-width: 768px) {
	.cm-scene .cm-listing__heading {
		margin-top: 18px;
	}

	.cm-scene .cm-listing__heading-text {
		max-width: min(560px, 46%);
		padding: 24px 30px 26px;
	}
}

/* 19. 記事ページ
   ========================================================================== */
.cm-single {
	padding-bottom: 24px;
}

.cm-single__layout {
	display: grid;
	gap: 40px;
}

@media (min-width: 1100px) {
	.cm-single__layout {
		grid-template-columns: minmax(0, 1fr) 320px;
		gap: 48px;
		align-items: start;
	}
}

.cm-article {
	min-width: 0;
	max-width: 800px;
}

.cm-article__terms {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0 0 12px;
	padding: 0;
	list-style: none;
}

.cm-article__terms .cm-chip {
	min-height: 32px;
	padding: 4px 12px;
	font-size: 13px;
}

.cm-article__title {
	margin: 0 0 12px;
	font-size: clamp(24px, 5.4vw, 34px);
	font-weight: 700;
	line-height: 1.45;
	word-break: break-word;
}

.cm-article__dates {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 18px;
	margin: 0 0 22px;
	color: var(--cm-muted);
	font-size: 13px;
}

.cm-article__dates span {
	display: inline-flex;
	align-items: center;
	gap: 5px;
}

.cm-article__eyecatch {
	margin: 0 0 32px;
	overflow: hidden;
	border-radius: var(--cm-radius-l);
	background: var(--cm-blue-soft);
	box-shadow: var(--cm-shadow);
}

.cm-article__eyecatch img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.cm-article__eyecatch figcaption {
	padding: 8px 14px;
	color: var(--cm-muted);
	font-size: 13px;
	background: #fff;
}

.cm-article__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 14px;
	margin: 28px 0 0;
	padding: 0;
	list-style: none;
	font-size: 14px;
}

.cm-article__tags a {
	text-decoration: none;
	font-weight: 700;
}

/* 本文 */
.cm-prose {
	font-size: 16.5px;
	line-height: 1.95;
	overflow-wrap: break-word;
}

.cm-prose > * + * {
	margin-top: 1.4em;
}

.cm-prose p {
	margin-bottom: 0;
}

.cm-prose h2:not(.cm-ui *) {
	position: relative;
	margin: 2.6em 0 1em;
	padding: 14px 18px 14px 22px;
	border-radius: 8px;
	background: var(--cm-bg-alt);
	font-size: clamp(20px, 4.8vw, 24px);
	line-height: 1.5;
}

.cm-prose h2:not(.cm-ui *)::before {
	content: "";
	position: absolute;
	top: 12px;
	bottom: 12px;
	left: 0;
	width: 5px;
	border-radius: 0 4px 4px 0;
	background: linear-gradient(180deg, var(--cm-blue), var(--cm-green));
}

.cm-prose h3:not(.cm-ui *) {
	margin: 2.2em 0 0.8em;
	padding: 0 0 10px;
	border-bottom: 2px solid var(--cm-line);
	font-size: clamp(18px, 4.4vw, 21px);
	position: relative;
}

.cm-prose h3:not(.cm-ui *)::after {
	content: "";
	position: absolute;
	bottom: -2px;
	left: 0;
	width: 64px;
	height: 2px;
	background: var(--cm-orange);
}

.cm-prose h4:not(.cm-ui *) {
	margin: 2em 0 0.6em;
	padding-left: 12px;
	border-left: 3px solid var(--cm-pink);
	font-size: 17px;
}

.cm-prose ul:not(.cm-ui *),
.cm-prose ol:not(.cm-ui *) {
	padding-left: 0;
	list-style: none;
}

.cm-prose ul:not(.cm-ui *) li,
.cm-prose ol:not(.cm-ui *) li {
	position: relative;
	padding-left: 1.6em;
}

.cm-prose ul:not(.cm-ui *) li + li,
.cm-prose ol:not(.cm-ui *) li + li {
	margin-top: 0.4em;
}

.cm-prose ul:not(.cm-ui *) li::before {
	content: "";
	position: absolute;
	top: 0.78em;
	left: 0.4em;
	width: 0.45em;
	height: 0.45em;
	border-radius: 50%;
	background: var(--cm-blue);
}

.cm-prose ol:not(.cm-ui *) {
	counter-reset: cm-ol;
}

.cm-prose ol:not(.cm-ui *) li {
	counter-increment: cm-ol;
}

.cm-prose ol:not(.cm-ui *) li::before {
	content: counter(cm-ol);
	position: absolute;
	top: 0.32em;
	left: 0;
	display: grid;
	place-items: center;
	width: 1.35em;
	height: 1.35em;
	border-radius: 50%;
	background: var(--cm-sea);
	color: #fff;
	font-size: 0.82em;
	font-weight: 700;
	line-height: 1;
}

.cm-prose blockquote:not(.cm-ui *) {
	position: relative;
	margin-inline: 0;
	padding: 20px 24px 20px 54px;
	border-radius: 10px;
	background: var(--cm-bg-alt);
	color: var(--cm-ink);
}

.cm-prose blockquote:not(.cm-ui *)::before {
	content: "“";
	position: absolute;
	top: 6px;
	left: 18px;
	color: var(--cm-blue);
	font-family: Georgia, serif;
	font-size: 46px;
	line-height: 1;
}

.cm-prose blockquote:not(.cm-ui *) > :first-child {
	margin-top: 0;
}

.cm-prose img {
	border-radius: 10px;
}

.cm-prose figure {
	margin-inline: 0;
}

.cm-prose figcaption {
	margin-top: 6px;
	color: var(--cm-muted);
	font-size: 13px;
	text-align: center;
}

.cm-prose table {
	width: 100%;
	border-collapse: collapse;
	font-size: 15px;
}

.cm-prose .wp-block-table {
	overflow-x: auto;
}

.cm-prose th,
.cm-prose td {
	padding: 10px 14px;
	border: 1px solid var(--cm-line);
	text-align: left;
	vertical-align: top;
}

.cm-prose th {
	background: var(--cm-bg-alt);
	color: var(--cm-ink);
	white-space: nowrap;
}

.cm-prose hr {
	height: 3px;
	margin: 2.6em auto;
	border: 0;
	border-radius: 3px;
	background: var(--cm-brand-bar);
	max-width: 120px;
}

.cm-prose .wp-block-button__link {
	border-radius: 999px;
	background: var(--cm-cta);
	color: #fff;
	font-weight: 700;
	text-decoration: none;
}

.cm-prose iframe {
	max-width: 100%;
}

.cm-prose .has-cm-pink-background-color { background-color: var(--cm-pink); }
.cm-prose .has-cm-blue-background-color { background-color: var(--cm-blue); }
.cm-prose .has-cm-green-background-color { background-color: var(--cm-green); }
.cm-prose .has-cm-orange-background-color { background-color: var(--cm-orange); }
.cm-prose .has-cm-cream-background-color { background-color: var(--cm-bg-alt); }
.cm-prose .has-cm-ink-color { color: var(--cm-ink); }
.cm-prose .has-cm-coral-color { color: var(--cm-cta); }

.cm-page-links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 2em;
}

/* 店舗情報 */
.cm-shop {
	position: relative;
	margin-top: 44px;
	padding: 24px 20px;
	overflow: hidden;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow-hover);
}

.cm-shop::before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 4px;
	background: var(--cm-brand-bar);
}

@media (min-width: 768px) {
	.cm-shop {
		padding: 30px 34px;
	}
}

.cm-shop__title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 14px;
	font-size: 20px;
}

.cm-shop__title .cm-icon {
	color: var(--cm-blue-deep);
}

.cm-shop__list {
	margin: 0;
}

.cm-shop__row {
	display: grid;
	gap: 2px;
	padding: 12px 0;
	border-top: 1px solid var(--cm-line);
}

.cm-shop__row dt {
	display: flex;
	align-items: center;
	gap: 6px;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
}

.cm-shop__row dt .cm-icon {
	color: var(--cm-blue-deep);
}

.cm-shop__row dd {
	margin: 0;
	font-size: 15px;
	overflow-wrap: anywhere;
}

@media (min-width: 600px) {
	.cm-shop__row {
		grid-template-columns: 140px minmax(0, 1fr);
		gap: 12px;
	}
}

.cm-shop__buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 18px 0 0;
	padding: 0;
	list-style: none;
}

.cm-shop__buttons .cm-btn--sea {
	box-shadow: none;
}

.cm-shop__note {
	margin: 14px 0 0;
	color: var(--cm-muted);
	font-size: 12.5px;
}

/* シェア */
.cm-share {
	margin-top: 32px;
	padding: 22px 20px;
	border-radius: var(--cm-radius);
	background: var(--cm-bg-alt);
	text-align: center;
}

.cm-share__label {
	margin: 0 0 12px;
	color: var(--cm-ink);
	font-weight: 700;
}

.cm-share__list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

@media (min-width: 600px) {
	.cm-share__list {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.cm-share__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	width: 100%;
	min-height: 46px;
	padding: 8px 10px;
	border: 1px solid var(--cm-line);
	border-radius: 999px;
	background: #fff;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
	cursor: pointer;
	transition: border-color 0.2s, color 0.2s;
}

.cm-share__btn span {
	white-space: nowrap;
}

@media (max-width: 400px) {
	.cm-share__btn {
		font-size: 13px;
		gap: 4px;
	}
}

.cm-share__btn:hover {
	border-color: var(--cm-sea);
	color: var(--cm-sea);
}

.cm-share__btn--line .cm-icon {
	color: #06a14a;
}

.cm-share__btn--facebook .cm-icon {
	color: #1f63c6;
}

/* 関連記事 */
.cm-related {
	margin-top: 60px;
}

.cm-related__title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 22px;
	font-size: clamp(20px, 4.6vw, 24px);
}

.cm-related__title .cm-icon {
	color: var(--cm-blue-deep);
}

/* サイドバー */
.cm-sidebar {
	min-width: 0;
}

@media (min-width: 1100px) {
	.cm-sidebar {
		position: sticky;
		top: calc(var(--cm-header-h) + 20px);
	}
}

.cm-side-box {
	margin-bottom: 20px;
	padding: 18px;
	border-radius: var(--cm-radius);
	background: #fff;
	box-shadow: var(--cm-shadow);
}

.cm-side-box__title {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 14px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--cm-line);
	font-size: 16px;
}

.cm-side-box__title .cm-icon {
	color: var(--cm-blue-deep);
}

.cm-side-box__cards {
	display: grid;
	gap: 12px;
}

.cm-side-box__cards .cm-card__link {
	box-shadow: none;
	border: 1px solid var(--cm-line);
}

.cm-side-box .cm-chip {
	min-height: 36px;
	font-size: 13px;
}

.cm-side-box__more {
	margin: 12px 0 0;
	font-size: 14px;
	font-weight: 700;
}

.cm-side-box__more a {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	text-decoration: none;
}

.cm-side-cats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-side-cats a {
	display: flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	padding: 6px 8px;
	border-radius: 10px;
	background: var(--cm-bg-alt);
	color: var(--cm-ink);
	font-size: 13px;
	font-weight: 700;
	line-height: 1.3;
	text-decoration: none;
}

.cm-side-cats a:hover {
	background: var(--cm-blue-soft);
}

.cm-side-cats img {
	width: 28px;
	height: 28px;
	flex-shrink: 0;
}

.cm-side-box.widget ul {
	margin: 0;
	padding-left: 1.2em;
}

/* 19-2. 記事ページのデザイン ＆ 地域ごとの背景
   --------------------------------------------------------------------------
   ・記事の「地域」（本島北部・中部・南部・離島・沖縄県全域）で色と背景のイラストが変わります（inc/region-theme.php）。
   ・色は下の変数で指定：--cm-r1（濃い色：見出しの番号・リンクなど）/ --cm-r2（淡い色：帯・目次）/ --cm-rbg（ページの地の色）
   ・本文の見た目は .cm-single .cm-article__content（固定ページには影響しません）
   ========================================================================== */
body {
	--cm-r1: var(--cm-sea);
	--cm-r2: #e2f3fb;
	--cm-rbg: #f5fbfc;
}

body.cm-region--hokubu {
	--cm-r1: #23885a;
	--cm-r2: #dcf1e2;
	--cm-rbg: #eef7ef;
}

body.cm-region--chubu {
	--cm-r1: #dd6a22;
	--cm-r2: #fde5cf;
	--cm-rbg: #fdf5ec;
}

body.cm-region--nanbu {
	--cm-r1: #d6466f;
	--cm-r2: #fde0e8;
	--cm-rbg: #fdf3f5;
}

body.cm-region--ritou {
	--cm-r1: #0a93a8;
	--cm-r2: #d3f1f4;
	--cm-rbg: #edf9fa;
}

/* 沖縄県全域：ちゅらマップのロゴの4色（ピンク・緑・青・オレンジ） */
body.cm-region--all-okinawa {
	--cm-r1: #1f6fb8;
	--cm-r2: #e6f0fb;
	--cm-rbg: #f7f8fc;
	--cm-rainbow: linear-gradient(90deg, #ff66c4 0%, #7ed957 33%, #38b6ff 66%, #ff914d 100%);
}

/* ---- 地域ごとの背景（ページ全体）---- */
.cm-region .cm-main {
	background-color: var(--cm-rbg);
	background-size: 520px, 420px, 460px, 380px, 440px, 400px, 260px, 100% 100%;
	background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, repeat, no-repeat;
	background-position:
		right -160px top 380px,
		left -150px top 30%,
		right -120px top 52%,
		left -110px top 70%,
		right -140px top 88%,
		left -60px bottom 40px,
		0 0,
		0 0;
}

.cm-region--hokubu .cm-main {
	background-image:
		url("../images/bg/monstera.svg"),
		url("../images/bg/fern.svg"),
		url("../images/bg/palm.svg"),
		url("../images/bg/fern.svg"),
		url("../images/bg/monstera.svg"),
		url("../images/bg/island.svg"),
		url("../images/bg/ripple.svg"),
		linear-gradient(180deg, #e3f3e6 0, var(--cm-rbg) 520px, var(--cm-rbg) 70%, #f6f4ea 100%);
}

.cm-region--chubu .cm-main {
	background-image:
		url("../images/bg/sunset.svg"),
		url("../images/bg/palm.svg"),
		url("../images/bg/waves.svg"),
		url("../images/bg/hibiscus.svg"),
		url("../images/bg/palm.svg"),
		url("../images/bg/waves.svg"),
		url("../images/bg/ripple.svg"),
		linear-gradient(180deg, #fde9d6 0, var(--cm-rbg) 520px, var(--cm-rbg) 70%, #f9f1e4 100%);
}

.cm-region--nanbu .cm-main {
	background-image:
		url("../images/bg/hibiscus.svg"),
		url("../images/bg/turtle.svg"),
		url("../images/bg/hibiscus.svg"),
		url("../images/bg/waves.svg"),
		url("../images/bg/monstera.svg"),
		url("../images/bg/island.svg"),
		url("../images/bg/ripple.svg"),
		linear-gradient(180deg, #fde6ec 0, var(--cm-rbg) 520px, var(--cm-rbg) 70%, #f9f2ec 100%);
}

.cm-region--ritou .cm-main {
	background-image:
		url("../images/bg/whaleshark.svg"),
		url("../images/bg/coral.svg"),
		url("../images/bg/turtle.svg"),
		url("../images/bg/coral.svg"),
		url("../images/bg/island.svg"),
		url("../images/bg/waves.svg"),
		url("../images/bg/ripple.svg"),
		linear-gradient(180deg, #d6f2f5 0, var(--cm-rbg) 520px, var(--cm-rbg) 70%, #f2f5ec 100%);
}

.cm-region--all-okinawa .cm-main {
	background-image:
		url("../images/bg/hibiscus.svg"),
		url("../images/bg/palm.svg"),
		url("../images/bg/whaleshark.svg"),
		url("../images/bg/monstera.svg"),
		url("../images/bg/sunset.svg"),
		url("../images/bg/island.svg"),
		url("../images/bg/ripple.svg"),
		linear-gradient(180deg, rgba(247, 248, 252, 0) 0, var(--cm-rbg) 520px, var(--cm-rbg) 70%, #f4f6ee 100%),
		linear-gradient(90deg, #fde3ef 0%, #e6f5e1 33%, #dff0fc 66%, #fde9d8 100%);
	background-size: 520px, 420px, 460px, 380px, 440px, 400px, 260px, 100% 100%, 100% 100%;
	background-repeat: no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, no-repeat, repeat, no-repeat, no-repeat;
	background-position:
		right -160px top 380px,
		left -150px top 30%,
		right -120px top 52%,
		left -110px top 70%,
		right -140px top 88%,
		left -60px bottom 40px,
		0 0,
		0 0,
		0 0;
}

@media (max-width: 767px) {
	.cm-region .cm-main {
		background-size: 280px, 240px, 260px, 220px, 240px, 240px, 200px, 100% 100%;
		background-position:
			right -110px top 300px,
			left -110px top 30%,
			right -90px top 52%,
			left -80px top 70%,
			right -100px top 88%,
			left -40px bottom 30px,
			0 0,
			0 0;
	}

	.cm-region--all-okinawa .cm-main {
		background-size: 280px, 240px, 260px, 220px, 240px, 240px, 200px, 100% 100%, 100% 100%;
		background-position:
			right -110px top 300px,
			left -110px top 30%,
			right -90px top 52%,
			left -80px top 70%,
			right -100px top 88%,
			left -40px bottom 30px,
			0 0,
			0 0,
			0 0;
	}
}

/* ---- 記事ページ上部の地域の帯（大きな英字。記事のカードが下側に少し重なります） ---- */
.cm-region-band {
	position: relative;
	z-index: 0;
	margin: 4px 0 calc(clamp(56px, 10vw, 150px) * -0.42);
	overflow: hidden;
	pointer-events: none;
}

.cm-region-band__en {
	display: block;
	color: transparent;
	font-family: "ChuramapDisplay", Impact, sans-serif;
	font-size: clamp(56px, 10vw, 150px);
	line-height: 1;
	letter-spacing: 0.06em;
	-webkit-text-stroke: 2px var(--cm-r1);
	opacity: 0.32;
	white-space: nowrap;
}

/* 沖縄県全域：英字をロゴの4色のグラデーションに */
.cm-region--all-okinawa .cm-article__region-en {
	background: var(--cm-rainbow);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.cm-region--all-okinawa .cm-region-band__en {
	background: var(--cm-rainbow);
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-stroke: 0;
	opacity: 0.38;
}

.cm-single {
	position: relative;
	z-index: 1;
}

.cm-single__layout {
	position: relative;
	z-index: 1;
}

/* ---- 記事本体（白い紙のカード） ---- */
.cm-single .cm-article {
	padding: 24px 18px 32px;
	border-radius: 24px;
	background: #fff;
	box-shadow: 0 20px 50px rgba(15, 53, 80, 0.08);
}

@media (min-width: 768px) {
	.cm-single .cm-article {
		padding: 44px 52px 48px;
		border-radius: 32px;
	}
}

.cm-article__region {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 12px;
	margin: 0 0 14px;
}

.cm-article__region-icon {
	width: 40px;
	height: 40px;
	padding: 4px;
	border-radius: 50%;
	background: var(--cm-r2);
}

.cm-article__region-en {
	color: var(--cm-r1);
	font-family: "ChuramapDisplay", Impact, sans-serif;
	font-size: 22px;
	letter-spacing: 0.12em;
	line-height: 1;
}

.cm-article__region-copy {
	color: var(--cm-muted);
	font-size: 13px;
}

.cm-single .cm-article__title {
	margin: 12px 0 14px;
	font-size: clamp(25px, 3.1vw, 36px);
	line-height: 1.5;
	letter-spacing: 0.03em;
}

.cm-single .cm-article__dates {
	gap: 6px 18px;
	padding-bottom: 22px;
	border-bottom: 1px dashed #dbe5ec;
}

.cm-article__read {
	color: var(--cm-r1);
	font-weight: 700;
}

/* アイキャッチ：後ろに地域の色の板をずらして重ねる */
.cm-single .cm-article__eyecatch {
	position: relative;
	z-index: 0;
	margin: 30px 14px 40px 0;
	overflow: visible;
}

.cm-single .cm-article__eyecatch::before {
	content: "";
	position: absolute;
	inset: 14px -14px -14px 14px;
	z-index: -1;
	border-radius: 22px;
	background: var(--cm-r2);
}

/* アイキャッチは正方形（中央を切り抜いて表示。元の画像は変更しません） */
.cm-single .cm-article__eyecatch {
	max-width: 620px;
	margin-right: auto;
	margin-left: auto;
}

.cm-single .cm-article__eyecatch img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: 20px;
	box-shadow: 0 14px 30px rgba(15, 53, 80, 0.14);
}

.cm-single .cm-article__eyecatch figcaption {
	margin-top: 22px;
	text-align: right;
}

/* ---- 目次 ---- */
.cm-toc {
	margin: 0 0 40px;
}

.cm-toc__details {
	padding: 20px 22px;
	border: 2px dashed color-mix(in srgb, var(--cm-r1) 35%, #fff);
	border-radius: 20px;
	background: color-mix(in srgb, var(--cm-r2) 55%, #fff);
}

.cm-toc__summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	cursor: pointer;
	list-style: none;
}

.cm-toc__summary::-webkit-details-marker {
	display: none;
}

.cm-toc__title {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: 17px;
	font-weight: 700;
	letter-spacing: 0.08em;
}

.cm-toc__title::before {
	content: "";
	width: 22px;
	height: 22px;
	background: url("../images/illust/hibiscus.svg") no-repeat center / contain;
}

.cm-toc__toggle {
	position: relative;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: #fff;
}

.cm-toc__toggle::before,
.cm-toc__toggle::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 12px;
	height: 2px;
	border-radius: 2px;
	background: var(--cm-r1);
	transform: translate(-50%, -50%);
}

.cm-toc__toggle::after {
	transform: translate(-50%, -50%) rotate(90deg);
	transition: transform 0.2s ease;
}

.cm-toc__details[open] .cm-toc__toggle::after {
	transform: translate(-50%, -50%) rotate(0deg);
}

.cm-toc__list {
	margin: 16px 0 0;
	padding: 0;
	list-style: none;
	counter-reset: cm-toc;
}

.cm-toc__item {
	margin: 0;
	border-top: 1px solid rgba(255, 255, 255, 0.9);
}

.cm-toc__item a {
	display: flex;
	gap: 12px;
	padding: 10px 4px;
	color: var(--cm-ink);
	font-size: 15px;
	font-weight: 700;
	line-height: 1.6;
	text-decoration: none;
	transition: color 0.2s ease, padding 0.2s ease;
}

.cm-toc__item a:hover {
	padding-left: 10px;
	color: var(--cm-r1);
}

.cm-toc__item--h2 {
	counter-increment: cm-toc;
}

.cm-toc__item--h2 a::before {
	content: counter(cm-toc, decimal-leading-zero);
	flex: 0 0 auto;
	color: var(--cm-r1);
	font-family: "ChuramapDisplay", Impact, sans-serif;
	font-size: 17px;
	letter-spacing: 0.04em;
}

.cm-toc__item--h3 a {
	padding-left: 38px;
	font-size: 14px;
	font-weight: 500;
}

.cm-toc__item--h3 a::before {
	content: "";
	flex: 0 0 auto;
	width: 6px;
	height: 6px;
	margin-top: 0.75em;
	border-radius: 50%;
	background: var(--cm-r1);
	opacity: 0.6;
}

/* ---- 本文 ---- */
.cm-single .cm-article__content {
	counter-reset: cm-h2;
	font-size: 16px;
	line-height: 2.05;
	letter-spacing: 0.03em;
}

@media (min-width: 768px) {
	.cm-single .cm-article__content {
		font-size: 17px;
	}
}

.cm-single .cm-article__content a {
	color: var(--cm-r1);
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}

.cm-single .cm-article__content h2:not(.cm-ui *) {
	position: relative;
	margin: 64px 0 26px;
	padding: 16px 20px 16px 74px;
	border: 0;
	border-radius: 18px;
	background: linear-gradient(90deg, var(--cm-r2), color-mix(in srgb, var(--cm-r2) 25%, #fff));
	color: var(--cm-ink);
	font-size: clamp(20px, 2.2vw, 25px);
	line-height: 1.55;
	counter-increment: cm-h2;
}

.cm-single .cm-article__content h2:not(.cm-ui *)::before {
	content: counter(cm-h2, decimal-leading-zero);
	position: absolute;
	top: 50%;
	left: 14px;
	display: grid;
	place-items: center;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: var(--cm-r1);
	color: #fff;
	font-family: "ChuramapDisplay", Impact, sans-serif;
	font-size: 19px;
	letter-spacing: 0.04em;
	line-height: 1;
	transform: translateY(-50%);
	box-shadow: 0 0 0 4px #fff;
}

.cm-single .cm-article__content h3:not(.cm-ui *) {
	position: relative;
	margin: 44px 0 18px;
	padding: 0 0 12px 22px;
	border: 0;
	font-size: clamp(18px, 1.9vw, 21px);
	line-height: 1.6;
	background: linear-gradient(90deg, var(--cm-r1) 0 64px, #e4ecf1 64px) no-repeat 0 100% / 100% 2px;
}

.cm-single .cm-article__content h3:not(.cm-ui *)::before {
	content: "";
	position: absolute;
	top: 0.55em;
	left: 0;
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--cm-r1);
	box-shadow: 0 0 0 4px var(--cm-r2);
}

.cm-single .cm-article__content h3:not(.cm-ui *)::after {
	display: none;
}

.cm-single .cm-article__content ul:not(.cm-ui *) li::before {
	top: 0.72em;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.2 2.2 4.8-4.8' fill='none' stroke='%23fff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / 100%,
		var(--cm-r1);
	transform: none;
}

.cm-single .cm-article__content ul:not(.cm-ui *),
.cm-single .cm-article__content ol:not(.cm-ui *) {
	padding: 18px 22px 18px 18px;
	border-radius: 16px;
	background: color-mix(in srgb, var(--cm-r2) 35%, #fff);
}

.cm-single .cm-article__content ol:not(.cm-ui *) li::before {
	background: var(--cm-r1);
}

.cm-single .cm-article__content blockquote:not(.cm-ui *) {
	position: relative;
	margin: 36px 0;
	padding: 28px 28px 24px 30px;
	border: 0;
	border-radius: 20px;
	background: #fff;
	box-shadow: 0 10px 28px rgba(15, 53, 80, 0.08), inset 0 0 0 2px var(--cm-r2);
	font-size: 0.97em;
}

.cm-single .cm-article__content blockquote:not(.cm-ui *)::before {
	content: "“";
	position: absolute;
	top: -22px;
	left: 20px;
	width: auto;
	height: auto;
	background: none;
	color: var(--cm-r1);
	font-family: Georgia, serif;
	font-size: 72px;
	line-height: 1;
	opacity: 0.85;
}

.cm-single .cm-article__content img {
	border-radius: 16px;
}

.cm-single .cm-article__content figure {
	margin: 32px 0;
}

.cm-single .cm-article__content figure img {
	box-shadow: 0 12px 28px rgba(15, 53, 80, 0.12);
}

/* 写真と文章を横に並べたブロック（「メディアと文章」）。店舗会員の記事の「お店の紹介」「おすすめ」で使う形
   写真は正方形・角丸・影つき、文章は写真の上端にそろえる。スマートフォンでは写真 → 文章の縦並び */
.cm-single .cm-article__content .wp-block-media-text {
	margin: 32px 0;
}

.cm-single .cm-article__content .wp-block-media-text__media {
	margin: 0;
}

.cm-single .cm-article__content .wp-block-media-text__media img {
	aspect-ratio: 1 / 1;
	object-fit: cover;
}

.cm-single .cm-article__content .wp-block-media-text__content {
	padding: 0 0 0 24px;
	font-size: 15px;
	line-height: 1.95;
}

.cm-single .cm-article__content .wp-block-media-text.has-media-on-the-right .wp-block-media-text__content {
	padding: 0 24px 0 0;
}

.cm-single .cm-article__content .wp-block-media-text__content > :first-child {
	margin-top: 0;
}

@media (max-width: 599px) {
	.cm-single .cm-article__content .wp-block-media-text.is-stacked-on-mobile .wp-block-media-text__content,
	.cm-single .cm-article__content .wp-block-media-text.is-stacked-on-mobile.has-media-on-the-right .wp-block-media-text__content {
		padding: 16px 0 0;
	}
}

.cm-single .cm-article__content table {
	overflow: hidden;
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid #e4ecf1;
	border-radius: 16px;
}

.cm-single .cm-article__content th {
	background: var(--cm-r2);
	color: var(--cm-ink);
}

.cm-single .cm-article__content th,
.cm-single .cm-article__content td {
	border: 0;
	border-bottom: 1px solid #e9f0f4;
}

.cm-single .cm-article__content tr:last-child th,
.cm-single .cm-article__content tr:last-child td {
	border-bottom: 0;
}

/* 本文の終わりの飾り */
.cm-article__end {
	display: flex;
	align-items: center;
	gap: 16px;
	margin: 52px 0 36px;
}

.cm-article__end::before,
.cm-article__end::after {
	content: "";
	flex: 1;
	height: 2px;
	background: repeating-linear-gradient(90deg, var(--cm-r2) 0 10px, transparent 10px 16px);
}

.cm-article__end-icon {
	width: 28px;
	height: 28px;
}

/* タグ */
.cm-single .cm-article__tags a {
	padding: 6px 14px;
	border-radius: 999px;
	background: var(--cm-r2);
	color: var(--cm-ink);
	font-weight: 700;
	text-decoration: none;
	transition: background-color 0.2s ease, color 0.2s ease;
}

.cm-single .cm-article__tags a:hover {
	background: var(--cm-r1);
	color: #fff;
}

/* 店舗情報欄・シェアの色を地域に合わせる */
.cm-single .cm-shop {
	border-radius: 24px;
}

.cm-single .cm-share {
	border-radius: 20px;
	background: color-mix(in srgb, var(--cm-r2) 40%, #fff);
}

/* 関連記事の見出し */
.cm-single .cm-related__title .cm-icon {
	color: var(--cm-r1);
}

/* パンくず：地域の帯の上で読みやすく */
.cm-region .cm-single .cm-breadcrumb {
	position: relative;
}

/* 19-3. お店のリンク（公式HP・LINE・Instagram・Facebook・予約）
   ・リンクありのボタンは記事の地域の色（北部：緑／中部：オレンジ／南部：ピンク／離島：ターコイズ／地域なし：ピンク）
   ・リンクなしはグレー（--cm-link-off）
   ・上端にちゅらマップのロゴの4色、下端に波、右上にハイビスカス、左にキャラクター
   ========================================================================== */
.cm-shop-links {
	--cm-link-on: var(--cm-r1);
	--cm-link-soft: var(--cm-r2);
	--cm-link-off: #b3bdc7;
	position: relative;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px 24px;
	margin: 0 0 40px;
	padding: 22px 24px 30px;
	overflow: hidden;
	border-radius: 22px;
	background:
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 20' preserveAspectRatio='none'%3E%3Cpath d='M0 10 C25 0 50 0 75 8 S125 20 150 10 S185 0 200 8 V20 H0Z' fill='%23ffffff' fill-opacity='.75'/%3E%3C/svg%3E") repeat-x 0 100% / 240px 16px,
		radial-gradient(circle at 2px 2px, rgba(255, 255, 255, 0.85) 1.4px, transparent 1.8px) 0 0 / 14px 14px,
		color-mix(in srgb, var(--cm-link-soft) 75%, #fff);
}

/* 地域の指定がない記事は、元のデザインと同じピンク */
body:not(.cm-region) .cm-shop-links {
	--cm-link-on: #ec6f93;
	--cm-link-soft: #fde3eb;
}

.cm-shop-links::before {
	/* ちゅらマップのロゴの4色 */
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 5px;
	background: linear-gradient(90deg, #ff66c4 0 25%, #7ed957 25% 50%, #38b6ff 50% 75%, #ff914d 75%);
}

.cm-shop-links__flower {
	position: absolute;
	top: -14px;
	right: -12px;
	width: 64px;
	height: 64px;
	opacity: 0.9;
	transform: rotate(18deg);
	pointer-events: none;
}

.cm-shop-links__head {
	display: flex;
	align-items: center;
	gap: 10px;
	min-width: 0;
}

.cm-shop-links__chara {
	flex: 0 0 auto;
	width: 58px;
	height: auto;
	filter: drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff) drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff);
	transform-origin: 50% 100%;
	animation: cm-bob 3s ease-in-out infinite alternate;
}

.cm-shop-links__label {
	display: grid;
	gap: 6px;
	margin: 0;
	line-height: 1.3;
}

.cm-shop-links__bubble {
	position: relative;
	justify-self: start;
	padding: 5px 12px;
	border-radius: 999px;
	background: #fff;
	color: var(--cm-link-on);
	font-family: var(--cm-font-head);
	font-size: 13px;
	font-weight: 700;
	box-shadow: 0 4px 10px rgba(15, 53, 80, 0.08);
}

.cm-shop-links__bubble::before {
	content: "";
	position: absolute;
	top: 50%;
	left: -7px;
	border-width: 6px 8px 6px 0;
	border-style: solid;
	border-color: transparent #fff transparent transparent;
	transform: translateY(-50%);
}

.cm-shop-links__ja {
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
}

.cm-shop-links__list {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-shop-links__item {
	margin: 0;
}

.cm-shop-links__btn {
	display: grid;
	justify-items: center;
	gap: 6px;
	width: 74px;
	color: var(--cm-ink);
	font-size: 11px;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
}

.cm-shop-links__icon {
	display: grid;
	place-items: center;
	width: 54px;
	height: 54px;
	border: 3px solid #fff;
	border-radius: 19px;
	background: var(--cm-link-off);
	color: #fff;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.cm-shop-links__btn.is-on .cm-shop-links__icon {
	background: linear-gradient(145deg, color-mix(in srgb, var(--cm-link-on) 70%, #fff), var(--cm-link-on) 60%, color-mix(in srgb, var(--cm-link-on) 82%, #000));
	box-shadow: 0 8px 16px color-mix(in srgb, var(--cm-link-on) 35%, transparent);
}

.cm-shop-links__btn.is-on:hover .cm-shop-links__icon,
.cm-shop-links__btn.is-on:focus-visible .cm-shop-links__icon {
	transform: translateY(-4px) scale(1.06);
	box-shadow: 0 12px 22px color-mix(in srgb, var(--cm-link-on) 45%, transparent);
}

.cm-shop-links__btn.is-off {
	color: var(--cm-link-off);
	cursor: default;
}

.cm-shop-links__btn.is-off .cm-shop-links__icon {
	opacity: 0.8;
}

/* 店舗情報欄の中（背景なし） */
.cm-shop-links--inline {
	display: block;
	margin: 22px 0 12px;
	padding: 0;
	overflow: visible;
	border-radius: 0;
	background: none;
	box-shadow: none;
}

.cm-shop-links--inline::before {
	display: none;
}

.cm-shop-links--inline .cm-shop-links__list {
	gap: 8px 6px;
}

.cm-shop-links--inline .cm-shop-links__head {
	margin-bottom: 16px;
}

/* ボタンの下の Googleマップ */
.cm-shop-links__map {
	position: relative;
	margin: 22px 0 4px;
	overflow: hidden;
	aspect-ratio: 16 / 10;
	border-radius: 18px;
	background: var(--cm-blue-soft);
	box-shadow: 0 0 0 4px color-mix(in srgb, var(--cm-link-soft) 70%, #fff);
}

.cm-shop-links__map iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.cm-shop-links__maplink {
	margin: 16px 0 0;
	font-size: 14px;
	font-weight: 700;
}

.cm-shop-links__maplink a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--cm-link-on);
}

@media (max-width: 599px) {
	.cm-shop-links__map {
		aspect-ratio: 4 / 3.4;
	}
}

/* 背景がないため、吹き出しに地域の淡い色を付ける */
.cm-shop-links--inline .cm-shop-links__bubble {
	background: var(--cm-link-soft);
	box-shadow: none;
}

.cm-shop-links--inline .cm-shop-links__bubble::before {
	border-right-color: var(--cm-link-soft);
}

@media (max-width: 599px) {
	.cm-shop-links {
		padding: 18px 14px 26px;
	}

	.cm-shop-links__chara {
		width: 50px;
	}

	.cm-shop-links__list {
		display: grid;
		grid-template-columns: repeat(5, minmax(0, 1fr));
		width: 100%;
		gap: 6px;
	}

	.cm-shop-links--inline {
		padding: 0;
	}

	.cm-shop-links--inline .cm-shop-links__list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 12px 4px;
	}

	.cm-shop-links__btn {
		width: auto;
		font-size: 10px;
		letter-spacing: -0.02em;
		overflow-wrap: anywhere;
	}

	.cm-shop-links__icon {
		width: 50px;
		height: 50px;
		border-radius: 17px;
	}
}

/* 19-4. ちゅらマップ特典（記事上部のチケット・カードの「特典あり」・絞り込み）
   ========================================================================== */
.cm-perk {
	--pk-orange: #f07a22;
	--pk-deep: #b34a0c;
	position: relative;
	display: flex;
	margin: 24px 0 28px;
	border-radius: 18px;
	background: #fff8ef;
	box-shadow: 0 0 0 2px var(--pk-orange), 0 10px 24px rgba(179, 74, 12, 0.14);
	color: #4a2205;
}

/* 半券（左）：ロゴと「ちゅら特典」 */
.cm-perk__stub {
	position: relative;
	display: flex;
	flex: 0 0 104px;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
	padding: 16px 8px;
	border-radius: 18px 0 0 18px;
	background: linear-gradient(160deg, #ff9a4a 0%, #ec6a14 100%);
	color: #fff;
	text-align: center;
}

/* 切り取り線と、左右の丸い切り欠き */
.cm-perk__stub::after {
	content: "";
	position: absolute;
	top: 12px;
	right: -1px;
	bottom: 12px;
	border-right: 2px dashed rgba(255, 255, 255, 0.9);
}

.cm-perk__body::before,
.cm-perk__body::after {
	content: "";
	position: absolute;
	left: 96px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--cm-bg-article, #fff);
	box-shadow: inset 0 0 0 2px var(--pk-orange);
}

.cm-perk__body::before {
	top: -8px;
	clip-path: inset(50% 0 0 0);
}

.cm-perk__body::after {
	bottom: -8px;
	clip-path: inset(0 0 50% 0);
}

.cm-perk__mark {
	width: 54px;
	height: 54px;
	padding: 6px;
	border-radius: 14px;
	background: #fff;
	box-shadow: 0 3px 10px rgba(122, 44, 0, 0.25);
}

.cm-perk__stub-label {
	font-size: 12px;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0.08em;
}

.cm-perk__stub-label b {
	font-size: 20px;
	letter-spacing: 0.12em;
}

.cm-perk__body {
	flex: 1;
	min-width: 0;
	padding: 18px 22px 20px;
}

.cm-perk__label {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 4px 8px;
	margin: 0;
	color: var(--pk-deep);
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.06em;
}

.cm-perk__en {
	padding: 1px 8px;
	border-radius: 999px;
	background: #ffe3cc;
	color: var(--pk-deep);
	font-size: 10px;
	letter-spacing: 0.14em;
}

.cm-perk__text {
	margin: 8px 0 0;
	color: #3b1a03;
	font-size: clamp(17px, 2.6vw, 20px);
	font-weight: 700;
	line-height: 1.6;
	word-break: break-word;
}

.cm-perk__note {
	margin: 10px 0 0;
	padding-top: 10px;
	border-top: 1px dashed #f3b98c;
	color: #6b4a33;
	font-size: 13px;
	line-height: 1.6;
}

@media (max-width: 479px) {
	.cm-perk__stub {
		flex-basis: 84px;
	}

	.cm-perk__body::before,
	.cm-perk__body::after {
		left: 76px;
	}

	.cm-perk__mark {
		width: 44px;
		height: 44px;
	}

	.cm-perk__en {
		display: none;
	}

	.cm-perk__body {
		padding: 14px 16px 16px;
	}
}

/* 記事カードの「特典あり」 */
.cm-card__perk {
	position: absolute;
	bottom: 10px;
	left: 0;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 4px 12px 4px 10px;
	border-radius: 0 999px 999px 0;
	background: #b34a0c;
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	box-shadow: 0 2px 8px rgba(122, 44, 0, 0.25);
}

/* 一覧の絞り込み「ちゅらマップ特典ありのお店だけ」 */
.cm-filter__perk {
	position: relative;
	display: block;
	margin: 0 !important;
	cursor: pointer;
}

.cm-filter__perk input {
	position: absolute;
	opacity: 0;
	pointer-events: none;
}

.cm-filter__perk-box {
	display: flex;
	align-items: center;
	gap: 8px;
	min-height: 48px;
	padding: 8px 14px;
	border: 2px dashed #f0a46c;
	border-radius: 12px;
	background: #fff8ef;
	color: #8f3907;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.4;
	transition: background-color 0.2s ease, border-color 0.2s ease;
}

.cm-filter__perk-box::before {
	content: "";
	flex-shrink: 0;
	width: 20px;
	height: 20px;
	border: 2px solid #d9874b;
	border-radius: 6px;
	background: #fff center / 14px no-repeat;
}

.cm-filter__perk input:checked + .cm-filter__perk-box {
	border-style: solid;
	border-color: #b34a0c;
	background: #ffe8d4;
}

.cm-filter__perk input:checked + .cm-filter__perk-box::before {
	border-color: #b34a0c;
	background-color: #b34a0c;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E");
}

.cm-filter__perk input:focus-visible + .cm-filter__perk-box {
	outline: 3px solid var(--cm-blue-deep, #0b5c8c);
	outline-offset: 2px;
}

/* 20. 固定ページ・404・コメント
   ========================================================================== */
.cm-page {
	padding-bottom: 32px;
}

.cm-article--page {
	margin-inline: auto;
}

.cm-page-map {
	padding-bottom: 40px;
}

.cm-page-map__intro {
	max-width: 760px;
	margin: 0 auto 28px;
}

.cm-404__inner {
	max-width: 640px;
	margin: 24px auto 40px;
	text-align: center;
}

.cm-404__character {
	width: 140px;
	height: auto;
}

.cm-404__code {
	margin: 0;
	background: var(--cm-brand-bar);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	font-family: var(--cm-font-head);
	font-size: 72px;
	font-weight: 700;
	line-height: 1;
}

.cm-404__title {
	font-size: clamp(20px, 5vw, 28px);
}

.cm-404__search {
	max-width: 480px;
	margin: 24px auto;
}

.cm-404__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
}

.cm-comments {
	max-width: 800px;
	margin-top: 56px;
	padding: 24px;
	border-radius: var(--cm-radius);
	background: var(--cm-bg-alt);
}

.cm-comments__title {
	margin-top: 0;
}

.cm-comments .comment-form input:not([type="submit"]):not([type="checkbox"]),
.cm-comments .comment-form textarea {
	width: 100%;
	padding: 10px 14px;
	border: 1px solid #d5dee5;
	border-radius: 10px;
	background: #fff;
}

/* 20-2. 店舗会員（会員登録・マイページ・料金プラン・店舗ページ）
   ========================================================================== */
.cm-member {
	max-width: 960px;
	margin: 0 auto;
}

.cm-member__intro {
	margin-bottom: 28px;
	color: var(--cm-text);
}

.cm-member__notice {
	padding: 16px 20px;
	border-radius: var(--cm-radius);
	background: var(--cm-bg-alt);
}

.cm-member__done {
	padding: 32px 24px;
	border-radius: var(--cm-radius-l);
	background: var(--cm-blue-soft);
	text-align: center;
}

.cm-member__character {
	width: 120px;
	height: auto;
}

.cm-member__small {
	color: var(--cm-muted);
	font-size: 13px;
}

/* フォーム */
.cm-form {
	margin-top: 32px;
	padding: 24px 20px;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow);
}

.cm-form--wide {
	margin-top: 0;
}

@media (min-width: 768px) {
	.cm-form {
		padding: 32px 36px;
	}
}

.cm-form__title {
	margin: 0 0 20px;
	font-size: 22px;
}

.cm-form__set {
	margin: 0 0 28px;
	padding: 0;
	border: 0;
}

.cm-form__set legend {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 100%;
	margin-bottom: 14px;
	padding-bottom: 8px;
	border-bottom: 2px solid var(--cm-line);
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: 18px;
	font-weight: 700;
}

.cm-form__badge {
	padding: 2px 10px;
	border-radius: 999px;
	background: var(--cm-green-soft);
	color: var(--cm-green-deep);
	font-size: 12px;
}

.cm-form__field {
	margin-bottom: 16px;
}

.cm-form__field label {
	display: block;
	margin-bottom: 6px;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
}

.cm-form textarea.cm-input {
	min-height: 0;
	resize: vertical;
}

.cm-form__grid {
	display: grid;
	gap: 0 16px;
}

@media (min-width: 640px) {
	.cm-form__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.cm-form__field--full {
		grid-column: 1 / -1;
	}
}

.cm-form__req {
	margin-left: 4px;
	padding: 1px 8px;
	border-radius: 999px;
	background: var(--cm-pink-soft);
	color: var(--cm-pink-deep);
	font-size: 11px;
}

.cm-form__help {
	margin: 6px 0 0;
	color: var(--cm-muted);
	font-size: 13px;
}

.cm-form__error {
	margin: 6px 0 0;
	color: var(--cm-pink-deep);
	font-size: 13px;
	font-weight: 700;
}

.cm-form [aria-invalid="true"] {
	border-color: var(--cm-pink-deep);
}

.cm-form__summary {
	margin-bottom: 20px;
	padding: 14px 18px;
	border-left: 4px solid var(--cm-pink-deep);
	border-radius: 8px;
	background: var(--cm-pink-soft);
	color: var(--cm-ink);
	font-size: 14px;
}

.cm-form__summary p,
.cm-form__summary ul {
	margin: 0;
}

.cm-form__summary ul {
	padding-left: 1.2em;
}

.cm-form__check {
	display: flex !important;
	align-items: flex-start;
	gap: 8px;
	font-weight: 500 !important;
}

.cm-form__check input {
	width: 20px;
	height: 20px;
	margin-top: 3px;
	flex-shrink: 0;
}

.cm-form__hp {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.cm-form__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 20px 0 0;
}

.cm-form__foot {
	margin: 14px 0 0;
	font-size: 14px;
	text-align: center;
}

/* ログイン・パスワード再設定（会員用ページ） */
.cm-auth {
	display: grid;
	gap: 24px;
	align-items: start;
}

.cm-auth .cm-form {
	margin-top: 0;
}

.cm-auth__side {
	padding: 28px 24px;
	border-radius: var(--cm-radius-l);
	background: linear-gradient(160deg, var(--cm-blue-soft), #fff 70%);
	text-align: center;
}

.cm-auth__character {
	width: 110px;
	height: auto;
}

.cm-auth__title {
	margin: 8px 0 10px;
	font-size: 20px;
}

.cm-auth__side p {
	margin: 0 0 14px;
}

.cm-auth--single {
	max-width: 520px;
	margin: 0 auto;
}

@media (min-width: 860px) {
	.cm-auth:not(.cm-auth--single) {
		grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
		gap: 32px;
	}
}

/* マイページ：アカウント */
.cm-account {
	display: grid;
	gap: 20px;
}

.cm-account .cm-form,
.cm-account__box {
	margin-top: 0;
}

.cm-account__list {
	display: grid;
	gap: 10px;
	margin: 0;
}

.cm-account__list div {
	display: grid;
	grid-template-columns: 8em minmax(0, 1fr);
	gap: 12px;
	padding-bottom: 10px;
	border-bottom: 1px dashed var(--cm-line);
}

.cm-account__list dt {
	color: var(--cm-muted);
	font-size: 14px;
}

.cm-account__list dd {
	margin: 0;
	overflow-wrap: anywhere;
}

.cm-account__danger {
	padding: 18px 22px;
	border: 1px solid var(--cm-line);
	border-radius: var(--cm-radius-l);
	background: var(--cm-bg-alt);
}

.cm-account__danger summary {
	color: var(--cm-muted);
	font-weight: 700;
	cursor: pointer;
}

.cm-account__danger .cm-form {
	margin-top: 16px;
	box-shadow: none;
}

/* ログイン（旧マークアップ） */
.cm-login {
	max-width: 440px;
	margin: 0 auto;
	padding: 28px 24px;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow);
}

.cm-login form p {
	margin: 0 0 14px;
}

.cm-login label {
	display: block;
	margin-bottom: 6px;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
}

.cm-login input[type="text"],
.cm-login input[type="password"] {
	width: 100%;
	min-height: 48px;
	padding: 10px 14px;
	border: 1px solid #d5dee5;
	border-radius: 10px;
	font-size: 16px;
}

.cm-login .login-remember label {
	display: flex;
	align-items: center;
	gap: 8px;
	font-weight: 500;
}

.cm-login input[type="submit"] {
	width: 100%;
	min-height: 50px;
	border: 0;
	border-radius: 999px;
	background: var(--cm-sea);
	color: #fff;
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
}

/* お知らせ */
.cm-flash {
	margin: 0 0 20px;
	padding: 14px 18px;
	border-radius: 10px;
	font-size: 14px;
	font-weight: 700;
}

.cm-flash--success { background: var(--cm-green-soft); color: var(--cm-green-deep); }
.cm-flash--error { background: var(--cm-pink-soft); color: var(--cm-pink-deep); }
.cm-flash--info { background: var(--cm-blue-soft); color: var(--cm-blue-deep); }

/* アップグレードの案内 */
.cm-upgrade {
	display: flex;
	gap: 14px;
	align-items: flex-start;
	margin: 0 0 24px;
	padding: 18px 20px;
	border: 1px dashed var(--cm-orange);
	border-radius: var(--cm-radius);
	background: linear-gradient(135deg, var(--cm-orange-soft), #fff);
}

.cm-upgrade__icon {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 42px;
	height: 42px;
	border-radius: 50%;
	background: var(--cm-orange);
	color: #fff;
}

.cm-upgrade__title {
	margin: 0 0 4px;
	color: var(--cm-ink);
	font-weight: 700;
}

.cm-upgrade__text {
	margin: 0 0 10px;
	color: var(--cm-text);
	font-size: 14px;
}

.cm-upgrade__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 16px;
	margin: 0;
}

.cm-upgrade__link {
	font-size: 14px;
	font-weight: 700;
}

/* 料金プラン */
.cm-plans {
	display: grid;
	gap: 16px;
	margin: 0 0 8px;
}

@media (min-width: 860px) {
	.cm-plans {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		align-items: stretch;
	}
}

.cm-plan {
	position: relative;
	padding: 24px 20px 20px;
	border: 2px solid var(--cm-line);
	border-radius: var(--cm-radius-l);
	background: #fff;
}

.cm-plan--standard { border-color: var(--cm-blue); }
.cm-plan--premium { border-color: var(--cm-pink); box-shadow: 0 12px 30px rgba(255, 102, 196, 0.18); }
.cm-plan.is-current { outline: 3px solid var(--cm-green); outline-offset: 3px; }

.cm-plan__ribbon {
	position: absolute;
	top: -13px;
	left: 50%;
	margin: 0;
	padding: 2px 16px;
	border-radius: 999px;
	background: var(--cm-cta);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	transform: translateX(-50%);
}

.cm-plan__name {
	margin: 0;
	font-size: 18px;
	text-align: center;
}

.cm-plan__price {
	margin: 6px 0 14px;
	color: var(--cm-ink);
	text-align: center;
}

.cm-plan__price strong {
	font-family: var(--cm-font-head);
	font-size: 34px;
	line-height: 1.2;
}

.cm-plan__unit {
	font-size: 13px;
}

.cm-plan__list {
	margin: 0;
}

.cm-plan__row {
	display: flex;
	justify-content: space-between;
	gap: 10px;
	padding: 8px 0;
	border-top: 1px solid var(--cm-line);
	font-size: 14px;
}

.cm-plan__row dt {
	color: var(--cm-text);
}

.cm-plan__row dd {
	margin: 0;
	color: var(--cm-ink);
	font-weight: 700;
	text-align: right;
}

.cm-plan__row.is-off dd {
	color: #b4bec6;
}

.cm-plan__current {
	margin: 12px 0 0;
	color: var(--cm-green-deep);
	font-weight: 700;
	text-align: center;
}

.cm-plan-cta {
	margin: 24px 0 0;
	text-align: center;
}

.cm-plan-cta__note {
	text-align: center;
}

.cm-plan-badge {
	display: inline-block;
	padding: 3px 12px;
	border-radius: 999px;
	background: var(--cm-bg-alt);
	color: var(--cm-ink);
	font-size: 13px;
	font-weight: 700;
}

.cm-plan-badge--standard { background: var(--cm-blue-soft); color: var(--cm-blue-deep); }
.cm-plan-badge--premium { background: var(--cm-pink-soft); color: var(--cm-pink-deep); }

/* マイページ */
.cm-mypage__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px 16px;
	margin-bottom: 18px;
}

.cm-mypage__eyebrow {
	margin: 0;
	color: var(--cm-blue-deep);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.2em;
}

.cm-mypage__name {
	margin: 0;
	font-size: clamp(22px, 5vw, 28px);
}

.cm-mypage__plan {
	margin: 0;
}

.cm-mypage__logout {
	margin-left: auto;
	font-size: 14px;
}

.cm-mypage__tabs {
	margin: 0 0 20px;
	overflow-x: auto;
	border-bottom: 2px solid var(--cm-line);
}

.cm-mypage__tabs ul {
	display: flex;
	gap: 4px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-mypage__tabs a {
	display: block;
	min-height: 46px;
	padding: 12px 16px;
	border-bottom: 3px solid transparent;
	margin-bottom: -2px;
	color: var(--cm-text);
	font-weight: 700;
	text-decoration: none;
	white-space: nowrap;
}

.cm-mypage__tabs a.is-current {
	border-bottom-color: var(--cm-cta);
	color: var(--cm-ink);
}

/* スマホ：タブを3列のボタンに（横スクロールせずに全部見える） */
@media (max-width: 639px) {
	.cm-mypage__tabs {
		overflow: visible;
		border-bottom: 0;
	}

	.cm-mypage__tabs ul {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: 6px;
	}

	.cm-mypage__tabs a {
		min-height: 42px;
		padding: 10px 4px;
		margin: 0;
		border: 1px solid var(--cm-line);
		border-radius: 10px;
		background: #fff;
		font-size: 14px;
		text-align: center;
	}

	.cm-mypage__tabs a.is-current {
		border-color: var(--cm-cta);
		background: var(--cm-cta);
		color: #fff;
	}
}

.cm-mypage__links {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 24px;
	padding: 0;
	list-style: none;
}

.cm-stats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	margin-bottom: 24px;
}

@media (min-width: 768px) {
	.cm-stats {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.cm-stat {
	padding: 16px;
	border-radius: var(--cm-radius);
	background: #fff;
	box-shadow: var(--cm-shadow);
}

.cm-stat__label {
	margin: 0;
	color: var(--cm-muted);
	font-size: 13px;
}

.cm-stat__value {
	margin: 2px 0 0;
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: 24px;
	font-weight: 700;
}

.cm-stat__value small {
	font-size: 13px;
}

.cm-stat__sub {
	margin: 2px 0 0;
	color: var(--cm-muted);
	font-size: 12px;
}

/* 写真 */
.cm-photos-head {
	margin-bottom: 18px;
}

.cm-photos-head__count {
	margin: 0 0 6px;
	color: var(--cm-ink);
	font-weight: 700;
}

.cm-photos-head__count strong {
	font-size: 22px;
}

.cm-meter {
	height: 10px;
	overflow: hidden;
	border-radius: 999px;
	background: var(--cm-line);
}

.cm-meter span {
	display: block;
	height: 100%;
	border-radius: 999px;
	background: linear-gradient(90deg, var(--cm-blue), var(--cm-green));
}

.cm-upload {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
	margin-bottom: 24px;
}

.cm-upload__drop {
	display: flex;
	flex: 1 1 280px;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	padding: 20px;
	border: 2px dashed #c9d5de;
	border-radius: var(--cm-radius);
	background: var(--cm-bg-alt);
	color: var(--cm-blue-deep);
	text-align: center;
	cursor: pointer;
}

.cm-upload__text {
	color: var(--cm-text);
	font-size: 14px;
	font-weight: 700;
}

.cm-upload__drop input {
	max-width: 100%;
	font-size: 14px;
}

.cm-photo-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-photo-grid__item {
	position: relative;
	overflow: hidden;
	aspect-ratio: 1 / 1;
	border-radius: 12px;
	background: var(--cm-bg-alt);
}

.cm-photo-grid__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cm-photo-grid__item.is-hidden-by-plan .cm-photo-grid__img {
	opacity: 0.35;
}

.cm-photo-grid__main,
.cm-photo-grid__hidden {
	position: absolute;
	left: 8px;
	bottom: 8px;
	padding: 2px 10px;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.92);
	color: var(--cm-ink);
	font-size: 12px;
	font-weight: 700;
}

.cm-photo-grid__hidden {
	right: 8px;
	color: var(--cm-pink-deep);
	text-align: center;
}

.cm-photo-grid__delete {
	position: absolute;
	top: 6px;
	right: 6px;
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border: 0;
	border-radius: 50%;
	background: rgba(15, 53, 80, 0.75);
	color: #fff;
	cursor: pointer;
}

/* 記事一覧の表 */
.cm-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 14px;
}

.cm-table th,
.cm-table td {
	padding: 12px 10px;
	border-bottom: 1px solid var(--cm-line);
	text-align: left;
	vertical-align: middle;
}

.cm-table th {
	color: var(--cm-muted);
	font-size: 13px;
}

.cm-table__actions {
	display: flex;
	gap: 12px;
	align-items: center;
	white-space: nowrap;
}

.cm-table__actions form {
	margin: 0;
}

.cm-table__delete {
	padding: 0;
	border: 0;
	background: none;
	color: var(--cm-pink-deep);
	font-size: 14px;
	text-decoration: underline;
	cursor: pointer;
}

@media (max-width: 599px) {
	.cm-table thead {
		display: none;
	}

	.cm-table tr {
		display: grid;
		grid-template-columns: 1fr auto;
		padding: 10px 0;
		border-bottom: 1px solid var(--cm-line);
	}

	.cm-table td {
		padding: 2px 0;
		border: 0;
	}

	.cm-table td:first-child {
		grid-column: 1 / -1;
		font-weight: 700;
	}
}

/* 店舗ページ */
.cm-store-gallery {
	margin: 0 0 28px;
}

.cm-store-gallery__main {
	margin: 0;
	overflow: hidden;
	border-radius: var(--cm-radius-l);
	box-shadow: var(--cm-shadow);
}

.cm-store-gallery__main img {
	display: block;
	width: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}

.cm-store-gallery__thumbs {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(96px, 1fr));
	gap: 8px;
	margin: 10px 0 0;
	padding: 0;
	list-style: none;
}

.cm-store-gallery__thumbs img {
	display: block;
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: 10px;
}

.cm-coupon {
	position: relative;
	margin: 0 0 32px;
	padding: 22px 22px 18px;
	border: 2px dashed var(--cm-orange);
	border-radius: var(--cm-radius-l);
	background: linear-gradient(135deg, #fff8f0, #fff);
}

.cm-coupon__label {
	display: inline-block;
	margin: 0 0 6px;
	padding: 2px 12px;
	border-radius: 999px;
	background: var(--cm-orange);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
}

.cm-coupon__title {
	margin: 0 0 8px;
	font-size: 20px;
}

.cm-coupon__detail,
.cm-coupon__terms,
.cm-coupon__until,
.cm-coupon__how {
	margin: 4px 0 0;
	font-size: 14px;
}

.cm-coupon__terms,
.cm-coupon__until,
.cm-coupon__how {
	color: var(--cm-muted);
	font-size: 13px;
}

/* いいね・この記事を書いたお店 */
.cm-like {
	margin: 28px 0 0;
	text-align: center;
}

.cm-like__btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 50px;
	padding: 8px 22px;
	border: 2px solid var(--cm-pink);
	border-radius: 999px;
	background: #fff;
	color: var(--cm-pink-deep);
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
	transition: background-color 0.2s, color 0.2s, transform 0.2s;
}

.cm-like__btn[aria-pressed="true"] {
	background: var(--cm-pink);
	color: #fff;
}

.cm-like__btn[aria-pressed="true"] .cm-icon {
	fill: currentColor;
}

.cm-like__btn:active {
	transform: scale(0.96);
}

.cm-like__count {
	min-width: 1.5em;
}

.cm-post-store {
	display: flex;
	gap: 14px;
	align-items: center;
	margin-top: 28px;
	padding: 14px;
	border-radius: var(--cm-radius);
	background: #fff;
	color: var(--cm-text);
	text-decoration: none;
	box-shadow: var(--cm-shadow);
}

.cm-post-store:hover {
	color: var(--cm-text);
	box-shadow: var(--cm-shadow-hover);
}

.cm-post-store__media {
	flex-shrink: 0;
	width: 80px;
	height: 80px;
	overflow: hidden;
	border-radius: 12px;
	background: var(--cm-bg-alt);
}

.cm-post-store__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cm-post-store__body {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.cm-post-store__label {
	color: var(--cm-muted);
	font-size: 12px;
}

.cm-post-store__name {
	color: var(--cm-ink);
	font-size: 17px;
	font-weight: 700;
}

.cm-post-store__more {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	color: var(--cm-blue-deep);
	font-size: 13px;
	font-weight: 700;
}

/* カードの印（おすすめ・店舗） */
.cm-card__badge {
	position: absolute;
	top: 12px;
	right: 12px;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--cm-sea);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	box-shadow: 0 2px 8px rgba(16, 42, 67, 0.18);
}

.cm-card__badge--premium {
	background: var(--cm-cta);
}

.cm-card.is-premium .cm-card__link {
	box-shadow: 0 0 0 2px var(--cm-pink), var(--cm-shadow);
}

/* トップ「おすすめ店舗」 */
.cm-featured-stores {
	margin-bottom: 40px;
}

.cm-featured-stores__title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 18px;
	font-size: 20px;
}

.cm-featured-stores__title .cm-icon {
	color: var(--cm-cta);
}

/* 20-3. 会員登録（プランの選択）・マイページの記事投稿（テンプレート）
   ・店舗会員のページはすべて背景のイラストを出さない無地の背景（body.cm-member-page）
   ・プランのカードを押して選ぶ（template-parts/members/plan-table.php の select）
   ・かんたん記事投稿：記事ページと同じ並びの枠に写真と文章を入れる（template-parts/members/tab-posts.php・assets/js/members.js）
   ========================================================================== */
/* 店舗会員のページ（会員登録・ログイン・パスワードの再設定・マイページ・料金プラン）は、背景のイラストなしの無地 */
body.cm-member-page,
body.cm-member-page .cm-main {
	background-color: #f5f9fa;
	background-image: none;
}

/* 会員登録の流れ */
.cm-register__steps {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 10px;
	margin: 0 0 28px;
	padding: 0;
	list-style: none;
	counter-reset: none;
}

.cm-register__steps li {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 6px 14px 6px 6px;
	border-radius: 999px;
	background: #fff;
	box-shadow: 0 2px 8px rgba(28, 51, 68, 0.08);
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
}

.cm-register__step-num {
	display: inline-grid;
	flex: 0 0 auto;
	place-items: center;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--cm-blue);
	color: #fff;
	font-size: 14px;
	font-weight: 700;
	line-height: 1;
}

.cm-register__plans {
	margin: 0;
	padding: 0;
	border: 0;
	min-width: 0;
}

.cm-register__heading {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 8px;
	padding: 0;
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: 22px;
	font-weight: 700;
}

.cm-register .cm-register__lead {
	margin: 0 0 30px;
	color: var(--cm-text);
	font-size: 14px;
}

.cm-register__picked {
	margin: -8px 0 20px;
	padding: 10px 14px;
	border-radius: 10px;
	background: var(--cm-blue-soft);
	color: var(--cm-blue-deep);
	font-size: 14px;
}

.cm-member__plan-note {
	margin: 12px auto;
	max-width: 620px;
	padding: 12px 16px;
	border-radius: 10px;
	background: #fff;
	font-size: 14px;
	text-align: left;
}

/* 選べるプランのカード */
.cm-plans--select .cm-plan {
	display: flex;
	flex-direction: column;
	padding-bottom: 16px;
	cursor: pointer;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.cm-plans--select .cm-plan:hover {
	transform: translateY(-2px);
}

.cm-plans--select .cm-plan__list {
	flex: 1;
}

.cm-plan__pick {
	margin: 14px 0 0;
}

/* 「表示」「無制限」などが途中で折り返さないように */
.cm-plans .cm-plan__row dd {
	flex-shrink: 0;
	white-space: nowrap;
}

.cm-plan__radio {
	position: absolute;
	width: 1px;
	height: 1px;
	opacity: 0;
}

.cm-plan__pick-label {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 48px;
	padding: 8px 14px;
	border: 2px solid var(--cm-line);
	border-radius: 999px;
	background: #fff;
	color: var(--cm-ink);
	font-weight: 700;
	cursor: pointer;
}

/* カード全体を押しても選べるように、ラベルをカードいっぱいに広げる */
.cm-plan__pick-label::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: inherit;
}

.cm-plan__pick-mark {
	position: relative;
	flex: 0 0 auto;
	width: 22px;
	height: 22px;
	border: 2px solid #b4c2cc;
	border-radius: 50%;
	background: #fff;
}

.cm-plan__pick-on {
	display: none;
}

.cm-plan.is-selected .cm-plan__pick-on,
.cm-plan:has(.cm-plan__radio:checked) .cm-plan__pick-on {
	display: inline;
}

.cm-plan.is-selected .cm-plan__pick-off,
.cm-plan:has(.cm-plan__radio:checked) .cm-plan__pick-off {
	display: none;
}

.cm-plan__radio:focus-visible + .cm-plan__pick-label {
	outline: 3px solid rgba(56, 182, 255, 0.45);
	outline-offset: 2px;
}

.cm-plan.is-selected,
.cm-plan:has(.cm-plan__radio:checked) {
	box-shadow: 0 0 0 3px var(--cm-cta), 0 14px 30px rgba(230, 46, 140, 0.18);
	border-color: var(--cm-cta);
}

.cm-plan.is-selected .cm-plan__pick-label,
.cm-plan:has(.cm-plan__radio:checked) .cm-plan__pick-label {
	border-color: var(--cm-cta);
	background: var(--cm-cta);
	color: #fff;
}

.cm-plan.is-selected .cm-plan__pick-mark,
.cm-plan:has(.cm-plan__radio:checked) .cm-plan__pick-mark {
	border-color: #fff;
}

.cm-plan.is-selected .cm-plan__pick-mark::after,
.cm-plan:has(.cm-plan__radio:checked) .cm-plan__pick-mark::after {
	content: "";
	position: absolute;
	top: 3px;
	left: 7px;
	width: 5px;
	height: 10px;
	border: solid var(--cm-cta);
	border-width: 0 3px 3px 0;
	transform: rotate(45deg);
}

.cm-plan-request .cm-btn:disabled {
	background: #c9d3da;
	box-shadow: none;
	cursor: default;
}

.cm-plan-request .cm-plan-cta {
	margin-top: 28px;
}

/* マイページ：記事の一覧 */
.cm-posts-intro {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 16px 24px;
	margin: 0 0 28px;
	padding: 22px 24px;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow);
}

.cm-posts-intro > div {
	flex: 1 1 320px;
}

.cm-posts-intro__title {
	margin: 0 0 4px;
	font-size: 18px;
}

.cm-posts-intro p {
	margin: 0;
	color: var(--cm-text);
	font-size: 14px;
}

.cm-mypage__subtitle {
	margin: 0 0 6px;
	font-size: 17px;
}

.cm-post-status {
	display: inline-block;
	padding: 2px 10px;
	border-radius: 999px;
	background: var(--cm-bg-alt);
	color: var(--cm-muted);
	font-size: 12px;
	font-weight: 700;
	white-space: nowrap;
}

.cm-table--posts .cm-table__actions {
	display: table-cell;
}

.cm-post-status--publish { background: var(--cm-green-soft); color: var(--cm-green-deep); }
.cm-post-status--pending { background: #fff1d6; color: #9a5a00; }

/* マイページ：かんたん記事投稿 */
.cm-compose {
	margin: 0;
}

.cm-compose__guide {
	margin: 0 0 24px;
	padding: 20px 22px;
	border-radius: var(--cm-radius-l);
	background: var(--cm-blue-soft);
	color: var(--cm-ink);
	font-size: 14px;
}

.cm-compose__guide p {
	margin: 0;
}

.cm-compose__guide-title {
	margin: 0 0 6px;
	font-size: 19px;
}

.cm-compose__flow {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 18px;
	margin: 12px 0;
	padding: 0;
	list-style: none;
	font-weight: 700;
}

.cm-compose__flow li {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.cm-compose__flow span {
	display: inline-grid;
	place-items: center;
	width: 24px;
	height: 24px;
	border-radius: 50%;
	background: var(--cm-blue);
	color: #fff;
	font-size: 13px;
}

.cm-compose__left {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	color: var(--cm-blue-deep);
}

.cm-compose__left strong {
	font-size: 18px;
}

/* 記事ページと同じ白い紙 */
.cm-compose__paper {
	max-width: 760px;
	margin: 0 auto;
	padding: 28px 20px 24px;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow);
	--cm-bg-article: #fff;
}

@media (min-width: 768px) {
	.cm-compose__paper {
		padding: 40px 48px 32px;
	}
}

.cm-compose__terms {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 12px;
	margin: 0 0 18px;
}

.cm-compose__term {
	flex: 1 1 180px;
}

.cm-compose__term label {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	margin-bottom: 4px;
	color: var(--cm-muted);
	font-size: 12px;
	font-weight: 700;
}

.cm-compose__term .cm-select {
	min-height: 42px;
	border-radius: 999px;
	font-size: 15px;
}

.cm-compose__slot {
	position: relative;
	margin: 0 0 26px;
}

/* 「タイトル」「メインの写真」などの小さな札 */
.cm-compose__tag {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin: 0 0 6px;
	color: var(--cm-blue-deep);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
}

.cm-compose__opt {
	padding: 1px 8px;
	border-radius: 999px;
	background: var(--cm-bg-alt);
	color: var(--cm-muted);
	font-size: 11px;
}

/* 入力欄：記事の文字と同じ大きさで、点線の枠（入れる場所がひと目でわかるように） */
.cm-compose__title,
.cm-compose__text,
.cm-compose__perk-text,
.cm-compose__perk-note {
	display: block;
	width: 100%;
	border: 2px dashed #b9d7e6;
	border-radius: 10px;
	background: #fbfdfe;
	color: var(--cm-ink);
	font-family: inherit;
	resize: vertical;
	transition: border-color 0.2s ease, background-color 0.2s ease;
}

.cm-compose__title:focus,
.cm-compose__text:focus,
.cm-compose__perk-text:focus,
.cm-compose__perk-note:focus {
	border-style: solid;
	border-color: var(--cm-blue);
	background: #fff;
	outline: 3px solid rgba(56, 182, 255, 0.18);
}

.cm-compose__title::placeholder,
.cm-compose__text::placeholder,
.cm-compose__perk-text::placeholder,
.cm-compose__perk-note::placeholder {
	color: #8fa6b4;
	font-weight: 500;
}

.cm-compose__title {
	padding: 10px 14px;
	font-family: var(--cm-font-head);
	font-size: clamp(22px, 5vw, 30px);
	font-weight: 700;
	line-height: 1.45;
}

.cm-compose__text {
	padding: 12px 14px;
	font-size: 16.5px;
	line-height: 1.95;
}

.cm-compose__hint {
	margin: 6px 0 0;
	color: var(--cm-muted);
	font-size: 12px;
}

/* 写真の枠 */
.cm-compose__drop {
	position: relative;
	display: grid;
	place-items: center;
	overflow: hidden;
	width: 100%;
	aspect-ratio: 4 / 3;
	border: 2px dashed #9cc9de;
	border-radius: var(--cm-radius-l);
	background:
		repeating-linear-gradient(45deg, rgba(56, 182, 255, 0.05) 0 12px, transparent 12px 24px),
		#f2f9fc;
	color: var(--cm-blue-deep);
	text-align: center;
	cursor: pointer;
	transition: border-color 0.2s ease, background-color 0.2s ease;
}

.cm-compose__drop--main {
	aspect-ratio: 1 / 1;
	max-width: 520px;
	margin-inline: auto;
}

.cm-compose__drop:hover,
.cm-compose__drop.is-over {
	border-color: var(--cm-blue);
	background-color: #e6f5fc;
}

.cm-compose__drop:focus-within {
	outline: 3px solid rgba(56, 182, 255, 0.35);
	outline-offset: 2px;
}

.cm-compose__drop.has-photo {
	border-style: solid;
	border-color: transparent;
	background: #eef4f7;
}

/* 入力欄そのものは見えなくして、枠全体で選べるように（キーボードでも選べます） */
.cm-compose__file {
	position: absolute;
	inset: auto 0 0 auto;
	width: 1px;
	height: 1px;
	opacity: 0;
}

.cm-compose__drop-empty {
	display: grid;
	justify-items: center;
	gap: 6px;
	padding: 16px;
}

.cm-compose__drop-empty[hidden] {
	display: none;
}

.cm-compose__drop-empty svg {
	width: 44px;
	height: 44px;
	padding: 8px;
	border-radius: 50%;
	background: #fff;
	box-shadow: 0 4px 12px rgba(28, 51, 68, 0.1);
}

.cm-compose__drop-title {
	font-family: var(--cm-font-head);
	font-size: clamp(18px, 4vw, 22px);
	font-weight: 700;
}

.cm-compose__drop-sub {
	color: var(--cm-muted);
	font-size: 13px;
}

.cm-compose__preview {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.cm-compose__preview[hidden] {
	display: none;
}

.cm-compose__photo-tools {
	margin: 8px 0 0;
	text-align: right;
}

.cm-compose__mini {
	padding: 4px 12px;
	border: 1px solid var(--cm-line);
	border-radius: 999px;
	background: #fff;
	color: var(--cm-text);
	font-size: 13px;
	cursor: pointer;
}

/* 特典（記事ページのチケットに入力欄を入れたもの） */
.cm-compose__perk {
	margin: 0;
}

.cm-compose__perk .cm-perk__label {
	cursor: pointer;
}

.cm-compose__perk-text {
	margin-top: 8px;
	padding: 8px 12px;
	border-color: #f3b98c;
	background: #fffdf9;
	color: #3b1a03;
	font-size: clamp(16px, 2.4vw, 18px);
	font-weight: 700;
	line-height: 1.6;
}

.cm-compose__perk-note {
	margin-top: 8px;
	min-height: 42px;
	padding: 6px 12px;
	border-color: #f3b98c;
	background: #fffdf9;
	font-size: 14px;
}

/* 送信 */
.cm-compose__submit {
	max-width: 760px;
	margin: 24px auto 0;
}

.cm-compose__check-box {
	padding: 18px 20px;
	border: 2px solid #ffd9a8;
	border-radius: var(--cm-radius-l);
	background: #fffaf2;
	font-size: 14px;
}

.cm-compose__check-title {
	margin: 0 0 6px;
	color: #9a5a00;
	font-weight: 700;
}

.cm-compose__check-box ul {
	margin: 0 0 12px;
	padding-left: 1.3em;
}

.cm-compose__check-box li + li {
	margin-top: 4px;
}

@media (max-width: 599px) {
	.cm-compose__guide {
		padding: 16px;
	}

	.cm-compose__paper {
		padding: 22px 14px 20px;
	}

	.cm-compose .cm-form__actions .cm-btn {
		width: 100%;
	}

	.cm-posts-intro {
		padding: 18px 16px;
	}

	.cm-posts-intro .cm-btn {
		width: 100%;
	}
}


/* 記事の形の説明書（template-parts/members/article-guide.php） */
.cm-guide {
	margin: 0 0 24px;
	border: 2px solid #ffd2e8;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow);
}

.cm-guide__summary {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 16px 20px;
	cursor: pointer;
	list-style: none;
}

.cm-guide__summary::-webkit-details-marker {
	display: none;
}

.cm-guide__badge {
	flex: 0 0 auto;
	padding: 3px 12px;
	border-radius: 999px;
	background: var(--cm-cta);
	color: #fff;
	font-size: 13px;
	font-weight: 700;
}

.cm-guide__title {
	flex: 1;
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: 18px;
	font-weight: 700;
}

.cm-guide__toggle {
	flex: 0 0 auto;
	width: 12px;
	height: 12px;
	border: solid var(--cm-ink);
	border-width: 0 2.5px 2.5px 0;
	transform: rotate(45deg);
	transition: transform 0.2s ease;
}

.cm-guide[open] .cm-guide__toggle {
	transform: rotate(-135deg);
}

.cm-guide__body {
	padding: 0 20px 22px;
}

.cm-guide__must {
	display: flex;
	gap: 8px;
	margin: 0 0 18px;
	padding: 12px 14px;
	border-radius: 10px;
	background: #fff1f8;
	color: var(--cm-ink);
	font-size: 14px;
}

.cm-guide__must .cm-icon {
	flex: 0 0 auto;
	margin-top: 3px;
	color: var(--cm-cta);
}

.cm-guide__grid {
	display: grid;
	gap: 20px;
}

@media (min-width: 768px) {
	.cm-guide__grid {
		grid-template-columns: 300px minmax(0, 1fr);
		align-items: start;
	}
}

.cm-guide__sample {
	margin: 0;
}

.cm-guide__scroll {
	max-height: min(860px, 75vh);
	overflow-y: auto;
	border: 1px solid var(--cm-line);
	border-radius: 14px;
	background: #f5f9fa;
	overscroll-behavior: contain;
}

.cm-guide__scroll img {
	display: block;
	width: 100%;
	height: auto;
}

.cm-guide__sample figcaption {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 4px 10px;
	margin-top: 6px;
	color: var(--cm-muted);
	font-size: 12px;
}

.cm-guide__list {
	display: grid;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-guide__list li {
	display: flex;
	gap: 10px;
}

.cm-guide__no,
.cm-compose__no {
	display: inline-grid;
	flex: 0 0 auto;
	place-items: center;
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--cm-cta);
	color: #fff;
	font-size: 16px;
	font-weight: 700;
	line-height: 1;
}

.cm-guide__name {
	margin: 2px 0 0;
	color: var(--cm-ink);
	font-weight: 700;
}

.cm-guide__req {
	margin-left: 6px;
	padding: 1px 8px;
	border-radius: 999px;
	background: var(--cm-pink-soft);
	color: var(--cm-pink-deep);
	font-size: 11px;
	vertical-align: 2px;
}

.cm-guide__text {
	margin: 2px 0 0;
	color: var(--cm-text);
	font-size: 13.5px;
	line-height: 1.7;
}

/* 記事を書く画面：①〜⑨の番号つきの札 */
.cm-compose__tag {
	font-size: 14px;
	color: var(--cm-ink);
	margin-bottom: 8px;
}

.cm-compose__tag .cm-compose__no {
	width: 26px;
	height: 26px;
	font-size: 15px;
}

/* ③⑤⑥ 正方形の写真（記事ページと同じ正方形） */
.cm-compose__drop--square {
	aspect-ratio: 1 / 1;
}

/* ⑥ 見出し「おすすめ」（自動で入る・記事の見出しと同じ見た目） */
.cm-compose__fixed-h2 {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 4px 12px;
	margin: 0 0 14px;
	padding: 14px 18px 14px 22px;
	border-radius: 8px;
	background: var(--cm-bg-alt);
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: clamp(20px, 4.8vw, 24px);
	font-weight: 700;
	line-height: 1.5;
}

.cm-compose__fixed-h2::before {
	content: "";
	position: absolute;
	top: 12px;
	bottom: 12px;
	left: 0;
	width: 5px;
	border-radius: 0 4px 4px 0;
	background: linear-gradient(180deg, var(--cm-blue), var(--cm-green));
}

.cm-compose__fixed-h2 small {
	color: var(--cm-muted);
	font-family: var(--cm-font-body, inherit);
	font-size: 12px;
	font-weight: 500;
}

.cm-compose__fixed-no {
	display: inline-grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--cm-cta);
	color: #fff;
	font-size: 14px;
	align-self: center;
}

/* ⑤⑥ 写真と文章を横に並べる（記事の「写真が左・文章が右」と同じ。--right は写真が右） */
.cm-compose__media {
	display: grid;
	gap: 14px;
	margin: 0 0 14px;
}

@media (min-width: 600px) {
	.cm-compose__media {
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		align-items: start;
	}

	.cm-compose__media--right > .cm-compose__photo {
		order: 2;
	}
}

.cm-compose__media-text {
	display: grid;
	gap: 6px;
	align-content: start;
}

.cm-compose__text--side {
	font-size: 15px;
	line-height: 1.85;
}

.cm-compose__ex {
	margin: -2px 0 2px;
	color: var(--cm-muted);
	font-size: 12px;
}

/* ⑥ おすすめ1〜3 */
.cm-compose__recommend {
	margin: 22px 0 0;
	padding: 16px 0 0;
	border-top: 1px dashed var(--cm-line);
}

.cm-compose__section-no {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px 8px;
	margin: 0 0 10px;
	color: var(--cm-muted);
	font-size: 12px;
	font-weight: 700;
}

.cm-compose__section-no > span:first-child {
	padding: 2px 12px;
	border-radius: 999px;
	background: var(--cm-blue);
	color: #fff;
	font-size: 13px;
}

.cm-compose__section-no small {
	font-size: 12px;
	font-weight: 500;
}

.cm-compose__menu-name {
	display: block;
	width: 100%;
	min-height: 48px;
	padding: 8px 12px;
	border: 2px dashed #b9d7e6;
	border-radius: 10px;
	background: #fbfdfe;
	color: var(--cm-ink);
	font-family: inherit;
	font-size: 16.5px;
	font-weight: 700;
}

.cm-compose__menu-name:focus {
	border-style: solid;
	border-color: var(--cm-blue);
	background: #fff;
	outline: 3px solid rgba(56, 182, 255, 0.18);
}

.cm-compose__menu-name::placeholder {
	color: #8fa6b4;
	font-weight: 500;
}

.cm-compose__text--small {
	font-size: 15px;
	line-height: 1.7;
}

/* ⑦ 店舗情報（記事ページの店舗情報と同じ見た目） */
.cm-compose__shop {
	position: relative;
	padding: 22px 18px;
	overflow: hidden;
	border-radius: var(--cm-radius-l);
	background: #fff;
	box-shadow: var(--cm-shadow-hover);
}

.cm-compose__shop::before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	left: 0;
	height: 4px;
	background: var(--cm-brand-bar);
}

.cm-compose__shop-title {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 10px;
	color: var(--cm-ink);
	font-family: var(--cm-font-head);
	font-size: 20px;
	font-weight: 700;
}

.cm-compose__shop-title .cm-icon {
	color: var(--cm-blue-deep);
}

.cm-compose__shop-row {
	display: grid;
	gap: 4px;
	padding: 10px 0;
	border-top: 1px solid var(--cm-line);
}

.cm-compose__shop-row label {
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
}

.cm-compose__shop-row .cm-compose__menu-name {
	font-size: 15px;
	font-weight: 500;
}

@media (min-width: 600px) {
	.cm-compose__shop-row {
		grid-template-columns: 110px minmax(0, 1fr);
		align-items: center;
	}
}

/* ⑧⑨ 店舗情報の枠の中の札 */
.cm-compose__slot--inner {
	margin: 18px 0 0;
	padding-top: 14px;
	border-top: 1px solid var(--cm-line);
}

/* ⑧ リンクの登録状況 */
.cm-compose__links {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.cm-compose__links li {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 12px;
	border-radius: 999px;
	background: var(--cm-blue-soft);
	color: var(--cm-blue-deep);
	font-size: 14px;
	font-weight: 700;
}

.cm-compose__links li.is-off {
	background: var(--cm-bg-alt);
	color: var(--cm-muted);
}

.cm-compose__links small {
	font-size: 11px;
	font-weight: 500;
}

/* ⑨ GoogleマップのHTML（コピーのしかた・プレビュー） */
.cm-compose__howto {
	margin: 0 0 10px;
	padding: 12px 14px;
	border-radius: 10px;
	background: var(--cm-blue-soft);
	font-size: 13.5px;
	line-height: 1.75;
}

.cm-compose__howto-title {
	margin: 0 0 4px;
	color: var(--cm-blue-deep);
	font-weight: 700;
}

.cm-compose__howto ol {
	margin: 0;
	padding-left: 1.4em;
}

.cm-compose__map-input {
	font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
	font-size: 13px;
	word-break: break-all;
}

.cm-compose__map-status {
	margin: 6px 0 0;
	font-size: 13px;
	font-weight: 700;
}

.cm-compose__map-status.is-ok { color: var(--cm-green-deep); }
.cm-compose__map-status.is-ng { color: var(--cm-pink-deep); }

.cm-compose__map-preview {
	margin-top: 10px;
	overflow: hidden;
	border: 2px solid #ffd2e8;
	border-radius: 14px;
	aspect-ratio: 4 / 3;
}

.cm-compose__map-preview[hidden] {
	display: none;
}

.cm-compose__map-preview iframe {
	display: block;
	width: 100%;
	height: 100%;
	border: 0;
}

.cm-compose__sublabel {
	display: block;
	margin: 16px 0 6px;
	color: var(--cm-ink);
	font-size: 14px;
	font-weight: 700;
}

/* 21. 管理者向けお知らせ（ログイン中の管理者にだけ表示）
   ========================================================================== */
.cm-admin-hint {
	margin: 24px 0;
	padding: 12px 16px;
	border: 1px dashed var(--cm-cta);
	border-radius: 10px;
	background: #fff6fb;
	color: var(--cm-ink);
	font-size: 13.5px;
}

.cm-admin-hint span {
	display: block;
	color: var(--cm-muted);
	font-size: 12px;
}

/* 22. 動きを減らす設定（OSの設定に従い、すべてのアニメーションを止めます）
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		transition-duration: 0.01ms !important;
		animation: none !important;
	}
}
