/* ==========================================================
   japantripth Japan Map
   角丸・影は使いません。色は下の変数で変えられます。
   ========================================================== */

.jtm {
	--jtm-ink: #1a1a1a;
	--jtm-sub: #6e6e6e;
	--jtm-faint: #9a9a9a;
	--jtm-line: #e3e3e0;
	--jtm-line2: #cfcfcb;
	--jtm-tint: #f6f6f3;
	--jtm-red: #bc002d;
	--jtm-th: "IBM Plex Sans Thai", "Noto Sans Thai", sans-serif;
	--jtm-mono: ui-monospace, "SFMono-Regular", Menlo, monospace;

	font-family: var(--jtm-th);
	color: var(--jtm-ink);
	line-height: 1.9;
	margin: 0 0 34px;

	/* 画面幅ではなく「置かれた場所の幅」で判定します。
	   メインカラムが狭いテーマでも正しく折り返すために必要です。 */
	container-type: inline-size;
	container-name: jtm;
}

/* 投稿本文が720pxでも、TOPページと同じ1200px基準で配置する指定。
   ショートコードのwide="1"の場合だけ適用し、通常の記事内地図は広げない。 */
.jtm.jtm-wide {
	position: relative;
	left: 50%;
	width: min(1200px, calc(100vw - 48px));
	max-width: 1200px;
	transform: translateX(-50%);
}

.jtm *,
.jtm *::before,
.jtm *::after {
	box-sizing: border-box;
	border-radius: 0;
}

.jtm a {
	text-decoration: none;
	color: inherit;
	box-shadow: none;
}

/* ---- 見出し ---- */
.jtm-h {
	border-bottom: 2px solid var(--jtm-ink);
	padding-bottom: 8px;
	margin-bottom: 18px;
}

.jtm-h h2 {
	font-size: 20px;
	font-weight: 700;
	margin: 0;
	line-height: 1.4;
	border: 0;
	padding: 0;
	background: none;
}

/* ---- レイアウト ---- */
.jtm-row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 330px;
	gap: 26px;
	align-items: start;
}

.jtm-row.jtm-nopanel {
	grid-template-columns: minmax(0, 1fr);
}

.jtm-box {
	position: relative;
	border: 1px solid var(--jtm-line);
	padding: 14px;
	display: flex;
	gap: 14px;
	background: #fff;
}

.jtm-svg {
	flex: 1;
	min-width: 0;
	display: flex;
	justify-content: center;
}

/* ---- 地方ボタン ---- */
.jtm-nav {
	width: 132px;
	flex: none;
	border: 1px solid var(--jtm-line);
	align-self: flex-start;
}

.jtm-btn {
	display: block;
	width: 100%;
	text-align: left;
	border: 0;
	border-bottom: 1px solid var(--jtm-line);
	background: #fff;
	font-family: var(--jtm-th);
	font-size: 13.5px;
	padding: 8px 11px;
	cursor: pointer;
	color: var(--jtm-ink);
	font-weight: 500;
	line-height: 1.6;
}

.jtm-btn:last-child {
	border-bottom: 0;
}

.jtm-btn:hover {
	background: var(--jtm-tint);
}

.jtm-btn.is-on,
.jtm-btn.is-on:hover {
	background: var(--jtm-ink);
	color: #fff;
	font-weight: 600;
}

/* ---- 地図本体 ---- */
.jtm-map {
	width: 100%;
	max-width: 560px;
	display: block;
	height: auto;
}

.jtm-pf {
	fill: #e6e6e0;
	stroke: #fff;
	stroke-width: 1;
	cursor: pointer;
}

.jtm-pf.lv1 { fill: #f3cdd5; }
.jtm-pf.lv2 { fill: #e28fa1; }
.jtm-pf.lv3 { fill: #cf4e6c; }
.jtm-pf.lv4 { fill: #bc002d; }

.jtm-pf.lv0 {
	cursor: default;
}

.jtm-pf.is-dim {
	fill: #efefea;
}

.jtm-pf:hover {
	fill: var(--jtm-ink);
}

.jtm-map a:focus-visible .jtm-pf {
	fill: var(--jtm-ink);
	outline: none;
}

.jtm-rlab {
	font-size: 14px;
	font-weight: 700;
	fill: var(--jtm-ink);
	text-anchor: middle;
	font-family: var(--jtm-th);
	paint-order: stroke;
	stroke: #fff;
	stroke-width: 4px;
	pointer-events: none;
}

.jtm-okbox {
	fill: none;
	stroke: #c8c8c2;
	stroke-width: 1;
}

.jtm-oklab {
	font-size: 12px;
	font-weight: 600;
	fill: #5a5a55;
	text-anchor: middle;
	font-family: var(--jtm-th);
	pointer-events: none;
}

/* ---- ツールチップ ---- */
.jtm-tip {
	position: absolute;
	background: var(--jtm-ink);
	color: #fff;
	padding: 6px 11px;
	font-size: 12.5px;
	line-height: 1.45;
	pointer-events: none;
	opacity: 0;
	white-space: nowrap;
	z-index: 6;
	transform: translate(-50%, -118%);
	transition: opacity .1s;
}

.jtm-tip b {
	font-weight: 600;
	display: block;
}

.jtm-tip i {
	font-style: normal;
	font-size: 10.5px;
	color: #b4b4ae;
	font-family: var(--jtm-mono);
}

/* ---- 凡例 ---- */
.jtm-legend {
	display: flex;
	align-items: center;
	gap: 3px;
	font-size: 11px;
	color: var(--jtm-sub);
	position: absolute;
	left: 160px;
	bottom: 14px;
}

.jtm-legend > span:first-child {
	margin-right: 7px;
}

.jtm-lg {
	width: 22px;
	height: 9px;
	display: block;
}

.jtm-lg.lv0 { background: #e6e6e0; }
.jtm-lg.lv1 { background: #f3cdd5; }
.jtm-lg.lv2 { background: #e28fa1; }
.jtm-lg.lv3 { background: #cf4e6c; }
.jtm-lg.lv4 { background: #bc002d; }

.jtm-lgtx {
	margin-left: 7px;
	font-family: var(--jtm-mono);
	font-size: 10px;
	color: var(--jtm-faint);
}

/* ---- 記事パネル ---- */
.jtm-panel {
	border: 1px solid var(--jtm-ink);
	background: #fff;
}

.jtm-phead {
	background: var(--jtm-ink);
	color: #fff;
	padding: 12px 15px;
}

.jtm-pt {
	font-size: 17px;
	font-weight: 700;
	margin: 0;
	line-height: 1.5;
}

.jtm-pn {
	font-size: 11.5px;
	margin: 1px 0 0;
	color: #afafa9;
	font-family: var(--jtm-mono);
}

.jtm-pn b {
	color: #fff;
	font-size: 14px;
}

.jtm-prefs {
	padding: 12px 13px;
	border-bottom: 1px solid var(--jtm-line);
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.jtm-prefs a,
.jtm-prefs span {
	border: 1px solid var(--jtm-line2);
	padding: 2px 8px;
	font-size: 12px;
	line-height: 1.7;
}

.jtm-prefs span {
	color: var(--jtm-faint);
	border-color: var(--jtm-line);
}

.jtm-prefs a:hover {
	background: var(--jtm-ink);
	color: #fff;
	border-color: var(--jtm-ink);
}

.jtm-list a {
	display: flex;
	gap: 12px;
	padding: 12px 13px;
	border-bottom: 1px solid var(--jtm-line);
	align-items: flex-start;
}

.jtm-list a:hover {
	background: var(--jtm-tint);
}

.jtm-list .jtm-th {
	width: 88px;
	flex: none;
	aspect-ratio: 3 / 2;
	background: #ddddd7;
	overflow: hidden;
}

.jtm-list .jtm-th img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 35%;
	display: block;
}

.jtm-list .jtm-tt {
	font-size: 13px;
	line-height: 1.62;
	font-weight: 500;
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.jtm-pbtn {
	display: block;
	text-align: center;
	padding: 12px;
	background: var(--jtm-red);
	color: #fff;
	font-weight: 600;
	font-size: 14px;
}

.jtm-pbtn:hover {
	background: #9c0025;
	color: #fff;
}

.jtm-empty {
	padding: 20px 14px;
	font-size: 13px;
	color: var(--jtm-sub);
	text-align: center;
}

/* ==========================================================
   レイアウト切り替え

   置かれた場所の幅（コンテナ幅）で判定します。
   メインカラムが 900px 未満のテーマでは、右パネルを地図の下に
   回して地図を大きく見せます。
   ========================================================== */

@container jtm (max-width: 900px) {

	.jtm-row {
		grid-template-columns: 1fr;
		gap: 18px;
	}

	.jtm-box {
		display: block;
	}

	/* 地方ボタンは地図の上に横並びで */
	.jtm-nav {
		width: auto;
		display: grid;
		grid-template-columns: repeat(5, 1fr);
		margin-bottom: 14px;
		border-right: 0;
		border-bottom: 0;
	}

	.jtm-btn {
		border-right: 1px solid var(--jtm-line);
		border-bottom: 1px solid var(--jtm-line);
		text-align: center;
		font-size: 13px;
		padding: 8px 4px;
	}

	.jtm-map {
		max-width: 620px;
		margin: 0 auto;
	}

	.jtm-legend {
		position: static;
		margin-top: 10px;
		justify-content: center;
	}
}

@container jtm (max-width: 560px) {

	.jtm-nav {
		grid-template-columns: repeat(3, 1fr);
	}

	/* 幅が無いとタイ語ラベルが潰れて読めないので消します。
	   地方への導線は上のボタンが担当します。 */
	.jtm-rlab {
		display: none;
	}

	.jtm-map {
		max-width: 100%;
	}

	.jtm-list .jtm-th {
		width: 74px;
	}
}

/* ----------------------------------------------------------
   フォールバック
   コンテナクエリ非対応の古いブラウザ向け（画面幅で判定）
   ---------------------------------------------------------- */

@supports not (container-type: inline-size) {

	@media (max-width: 900px) {

		.jtm-row {
			grid-template-columns: 1fr;
			gap: 18px;
		}

		.jtm-box {
			display: block;
		}

		.jtm-nav {
			width: auto;
			display: grid;
			grid-template-columns: repeat(3, 1fr);
			margin-bottom: 14px;
		}

		.jtm-btn {
			border-right: 1px solid var(--jtm-line);
			text-align: center;
			font-size: 13px;
		}

		.jtm-rlab {
			display: none;
		}

		.jtm-legend {
			position: static;
			margin-top: 8px;
		}

		.jtm-map {
			max-width: 100%;
		}
	}
}
