/*
Theme Name: Frost Child (Travelers Route)
Theme URI: https://travelers-route.com/
Template: frost
Author: Travelers Route
Description: Travelers Route 用の Frost 子テーマ。LLMO/SEO カスタマイズ、独自カテゴリレイアウト、ASP リンクスタイル等を子テーマレイヤーに集約。
Version: 0.6.49
Requires at least: 6.7
Tested up to: 7.0
Requires PHP: 7.4
License: GNU General Public License v3
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Text Domain: frost-child
Domain Path: /languages
*/

/* ============================================================
 * Travelers Route 子テーマ style.css
 *
 * 大半のスタイリングは theme.json で完結する設計。
 * このファイルには theme.json で表現できない細部のみ記述する。
 *
 * デザインシステム v0.1
 * 詳細は travelers-route/design-system.md を参照。
 * ============================================================ */

/* ─── ASP リンク（インライン） ─── */
.tr-asp-link {
	font-weight: 500;
	border-bottom: 1px solid var(--wp--preset--color--tr-accent);
	padding-bottom: 1px;
	transition: color 0.15s ease, border-color 0.15s ease;
}

.tr-asp-link:hover {
	color: var(--wp--preset--color--tr-accent);
	border-bottom-color: var(--wp--preset--color--tr-primary);
}

/* ─── 段落内のショートコード後の段落: 改行を保つ ─── */
.wp-block-shortcode + .wp-block-paragraph {
	margin-top: var(--wp--preset--spacing--sm);
}

/* ─── 画像のキャプション: 控えめなセリフ ─── */
.wp-block-image figcaption {
	font-family: var(--wp--preset--font-family--playfair);
	font-style: italic;
	font-size: var(--wp--preset--font-size--sm);
	color: var(--wp--preset--color--tr-muted);
	margin-top: var(--wp--preset--spacing--xs);
}

/* ─── 見出しの下マージン: 視覚リズム調整 ─── */
h2 + p,
.wp-block-heading.has-large-font-size + p {
	margin-top: var(--wp--preset--spacing--xs);
}

/* ─── ドロップキャップ（class="has-drop-cap" 付き段落用、任意） ───
 *
 * Playfair Display は ascender が大きいため line-height: 0.85 で圧縮し
 * padding-top を盛ると visual top が本文 1 行目の cap top より下に落ちる。
 * line-height: 0.9 + 上の padding 削除 + わずかな margin-top で本文上端と整合。
 */
.has-drop-cap:first-letter {
	font-family: var(--wp--preset--font-family--playfair);
	font-weight: 900;
	font-size: 3.75em;
	line-height: 0.9;
	float: left;
	padding: 0 0.12em 0 0;
	margin-top: -0.05em;
	color: var(--wp--preset--color--tr-accent);
}

/* ─── スクロールバー（Webkit）: 控えめに馴染ませる ─── */
::-webkit-scrollbar {
	width: 10px;
}
::-webkit-scrollbar-track {
	background: var(--wp--preset--color--tr-surface);
}
::-webkit-scrollbar-thumb {
	background: var(--wp--preset--color--tr-rule);
	border-radius: 2px;
}
::-webkit-scrollbar-thumb:hover {
	background: var(--wp--preset--color--tr-muted);
}

/* ─── テキスト選択色 ─── */
::selection {
	background: var(--wp--preset--color--tr-accent);
	color: var(--wp--preset--color--tr-white);
}

/* ─── List: 箇条点なしスタイル（フッター用） ─── */
.wp-block-list.is-style-no-bullets {
	list-style: none;
	padding-left: 0;
}
.wp-block-list.is-style-no-bullets li {
	margin-bottom: 0;
}

/* ─── フッター内のリンク: 控えめなホバー ─── */
footer.wp-block-group a {
	color: inherit;
	text-decoration: none;
	border-bottom: 1px solid transparent;
	transition: color 0.15s ease, border-color 0.15s ease;
}
footer.wp-block-group a:hover {
	color: var(--wp--preset--color--tr-accent);
	border-bottom-color: var(--wp--preset--color--tr-accent);
}

/* ─── ヘッダーナビゲーション: 下線アクセント ─── */
header.wp-block-group .wp-block-navigation a.wp-block-navigation-item__content {
	padding-bottom: 4px;
	border-bottom: 2px solid transparent;
	transition: border-color 0.2s ease, color 0.2s ease;
}
header.wp-block-group .wp-block-navigation a.wp-block-navigation-item__content:hover,
header.wp-block-group .wp-block-navigation .current-menu-item > a.wp-block-navigation-item__content {
	border-bottom-color: var(--wp--preset--color--tr-accent);
	color: var(--wp--preset--color--tr-primary);
}

/* ─── ヘッダーのサイトタイトル: ホバー時にも下線を出さない（編集タイトルの清潔感維持） ─── */
header.wp-block-group .wp-block-site-title a {
	text-decoration: none;
}
header.wp-block-group .wp-block-site-title a:hover {
	color: var(--wp--preset--color--tr-primary);
}

/* ─── サイトタイトルの存在感強化: 末尾にアクセントカラーのドット（編集メディアのロゴ定番手法） ─── */
header.wp-block-group .wp-block-site-title a::after {
	content: '.';
	color: var(--wp--preset--color--tr-gold);
	margin-left: 0.04em;
}
header.wp-block-group .wp-block-site-title a:hover::after {
	color: var(--wp--preset--color--tr-accent);
}

/* ============================================================
 * ヒーローカバーの読み心地向上
 *
 * 課題: Cover ブロックの「均一な暗いオーバーレイ」では、明るい
 * 写真（リスボンの建物等）に重ねた時、上部の eyebrow と中央の
 * タイトルが背景の明るい部分と同化して読みにくい。
 *
 * 解決:
 *   ① 線形グラデーションで「上は写真を活かす、下は暗くテキスト
 *      可読性を確保」する編集メディア定番の手法
 *   ② テキストシャドウでテキスト輪郭を補強（背景の明るい部分でも輪郭が見える）
 *
 * 対象: ヒーローとして使われる alignfull の Cover ブロックのみ
 * ============================================================ */

/* ─── Lonely Planet 流 hero: 写真 dominant + bottom-left text overlay ─── */
.wp-block-cover.alignfull.tr-hero-cover {
	align-items: flex-end !important;
	justify-content: flex-start !important;
}

/* overlay (eyebrow + title) は左下に配置、横幅は alignwide 内で左寄せ */
.tr-hero-overlay {
	text-align: left !important;
}

/* WP constrained layout の contentSize 720 + margin:auto を override して
 * title/eyebrow/credit を overlay の左端から配置。
 * title は max-width 100% (alignwide 内側 1052px) で 2 行に収まる */
.wp-block-cover.alignfull .tr-hero-overlay > .tr-hero-eyebrow,
.wp-block-cover.alignfull .tr-hero-overlay > .tr-hero-title {
	max-width: 100% !important;
	margin-left: 0 !important;
	margin-right: auto !important;
}

/* hero credit も alignwide 内に揃える（cover inner-container 直下なため
 * 別途 override 必要） */
.wp-block-cover.alignfull .tr-hero-credit {
	max-width: var(--wp--style--global--wide-size, 1100px);
	margin-left: auto !important;
	margin-right: auto !important;
	padding-left: var(--wp--preset--spacing--md);
	padding-right: var(--wp--preset--spacing--md);
}

/* ─── v0.3.5: アイキャッチ未設定でも hero を成立させるフォールバック ───
 * cover(useFeaturedImage) は画像が無いと dim 20% のオーバーレイのみ＝
 * ほぼ白地に白文字になる。コンテナ自体に overlay と同色の地を敷く
 * （画像がある場合は画像レイヤーが上に載るため無影響）。 */
.tr-hero-cover {
	background-color: #0E1626;
}

/* 画像なしの hero では写真クレジットを出さない（実写真がないのに
 * PHOTO クレジットが残るのを防止）。:has() 非対応の旧ブラウザでは
 * 従来どおり表示されるだけで無害。 */
.tr-hero-cover:not(:has(.wp-block-cover__image-background)) .tr-hero-credit {
	display: none;
}

/* ─── v0.3.6: カントリーハブのグリッドをモバイル 2 列に ───
 * core の grid layout (columnCount 固定) は全ビューポートで列数固定のため、
 * 390px では 4 列タイルの見出しが縦割れする。.tr-article-grid と同じ流儀で
 * 781px 以下は 2 列に落とす。 */
@media (max-width: 781px) {
	.tr-prep-grid,
	.tr-city-grid {
		grid-template-columns: repeat(2, 1fr) !important;
	}
}

/* 都市カードは白地に tr-surface でカード面が見えないため、罫線で輪郭を出す */
.tr-city-grid > .wp-block-group {
	border: 1px solid var(--wp--preset--color--tr-rule, #D6CFC0);
}

/* ─── v0.3.7: ビジュアル・コンポーネント群（2026-07 V1〜V3） ─── */

/* カラウト3種（現地メモ / 落とし穴 / 予約・時間のコツ）。
 * 使い方: wp:paragraph に className "tr-callout tr-callout--pro|warn|timing" +
 * 先頭に <span class="tr-callout-label">ラベル</span> */
.tr-callout {
	border-left: 3px solid;
	border-radius: 2px;
	padding: 0.9rem 1.1rem 0.9rem 1rem;
	margin: 1.6rem 0;
	line-height: 1.75;
}
.tr-callout .tr-callout-label {
	display: block;
	font-weight: 700;
	font-size: 0.78rem;
	letter-spacing: 0.08em;
	margin-bottom: 0.35rem;
}
.tr-callout--pro { border-color: var(--wp--preset--color--tr-accent, #247A76); background: #EDF5F4; }
.tr-callout--pro .tr-callout-label { color: #1E6763; }
.tr-callout--warn { border-color: var(--wp--preset--color--tr-gold, #B98A2F); background: #F8F1E3; }
.tr-callout--warn .tr-callout-label { color: #856019; }
.tr-callout--timing { border-color: var(--wp--preset--color--tr-primary, #1F3A5F); background: #EBF0F7; }
.tr-callout--timing .tr-callout-label { color: #1F3A5F; }

/* 写真フィギュア標準スロット（章扉写真。写真到着後に使用） */
.tr-photo-figure { margin: 2rem 0; }
.tr-photo-figure img { width: 100%; height: auto; border-radius: 4px; display: block; }
.tr-photo-figure figcaption { padding: 8px 2px; font-size: 12px; color: #6b6459; }

/* 3枚組ギャラリー（体験系記事。モバイル2列） */
.tr-photo-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 2rem 0; }
.tr-photo-gallery figure { margin: 0; }
.tr-photo-gallery img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4/3; border-radius: 4px; display: block; }
@media (max-width: 781px) {
	.tr-photo-gallery { grid-template-columns: repeat(2, 1fr); }
}

/* 都市カードの写真背景（写真到着後: className に tr-city-card--photo を追加し
 * style="--card-photo:url(...)" を指定） */
.tr-city-grid > .wp-block-group.tr-city-card--photo {
	background-image: linear-gradient(rgba(14, 22, 38, 0.25), rgba(14, 22, 38, 0.82)), var(--card-photo);
	background-size: cover;
	background-position: center;
	border-color: transparent;
}
.tr-city-grid > .tr-city-card--photo h3 a,
.tr-city-grid > .tr-city-card--photo p {
	color: #fff !important;
}

/* ブランド duotone（ネイビー×クリーム）。SVG filter は functions.php が footer に出力 */
.tr-duotone img,
img.tr-duotone { filter: url(#tr-duotone); }

/* 世界地図: 国ホバー/フォーカス時のプレビューカード */
.tr-wm-card {
	position: absolute;
	z-index: 5;
	pointer-events: none;
	background: #fff;
	border-radius: 6px;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
	padding: 10px 12px;
	max-width: 210px;
	opacity: 0;
	transform: translateY(4px);
	transition: opacity 0.15s, transform 0.15s;
}
/* show 中はチップ（テーマハブへのリンク）を押せるよう pointer-events を戻す */
.tr-wm-card.show { opacity: 1; transform: none; pointer-events: auto; cursor: pointer; }
.tr-wm-card .chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.tr-wm-card .chips:empty { display: none; }
.tr-wm-card .chips a {
	font-size: 10px;
	font-weight: 600;
	color: #1B6863;
	background: #EAF3F2;
	padding: 2px 8px;
	border-radius: 999px;
	text-decoration: none;
}
.tr-wm-card .chips a:hover { background: #247A76; color: #fff; }
/* aspect-ratio: 画像読込前でもカード高さを確定させる（はみ出し判定を初回ホバーから正確にするため。ホバー写真は 800x600 固定） */
.tr-wm-card img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 4px; margin-bottom: 6px; display: block; }
.tr-wm-card .ttl { font-weight: 700; font-size: 13px; color: #1F3A5F; }
.tr-wm-card .dsc { font-size: 11px; color: #555; margin-top: 2px; line-height: 1.5; }
.tr-wm-card .go { font-size: 10.5px; color: #247A76; font-weight: 600; margin-top: 6px; }

/* hero deck パネル内の excerpt も同じ理由で左寄せに揃える
 * （constrained layout が自動的に contentSize 720 + margin:auto を当てて
 * 中央寄せにしてしまうため。CTA/byline と縦のラインを揃える）
 * desktop では 1000px まで広げて情報密度を上げる */
.tr-hero-deck .wp-block-post-excerpt {
	max-width: 1000px !important;
	margin-left: 0 !important;
	margin-right: auto !important;
}

/* ─── v0.33+: WP constrained layout auto-center 問題の全要素対応 ───
 * byline / tr-category-grid / archive-page 各カード等、複数箇所で
 * 同じ症状が出ていたため網羅的に上書き */

/* byline (hero deck 内・記事フッター内ともに): 左寄せ */
.tr-hero-deck .tr-byline,
.tr-article-footer .tr-byline {
	max-width: 100% !important;
	margin-left: 0 !important;
	margin-right: auto !important;
}

/* tr-category-grid: alignwide 全幅で 3 列を maxim利用 */
.tr-category-grid {
	max-width: 100% !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* tr-category-card 高さ揃え: grid 内で常に親の最大高に stretch */
.tr-category-card {
	align-self: stretch !important;
	height: 100%;
}
.tr-category-grid {
	align-items: stretch;
}

/* tr-category-card 天面揃え: 親グループが WP flow レイアウトのため、
 * 2枚目以降のカードに兄弟間マージン（margin-block-start: blockGap = 16px）が
 * 付与され、grid セル内で段差が生じていた。grid では gap で間隔を管理する
 * ので sibling マージンを無効化する（段差ずれの真因はこれ） */
.tr-category-grid > * {
	margin-block-start: 0;
}

/* 記事グリッド (home / archive 共通): カードの高さ揃え */
.tr-article-grid .wp-block-post-template > * {
	height: 100%;
	align-self: stretch;
}
.tr-article-card .tr-card-date {
	text-align: left !important; /* archive 等で center 化される問題防止 */
}

/* v0.35: 最新記事グリッドと section header も同じ constrained → alignwide 化
 * (post-template / section header / see all CTA が contentSize 720 に拘束されていたバグ) */
.tr-article-grid,
.tr-article-grid .wp-block-post-template,
.tr-section-articles > .tr-section-header,
.tr-section-articles > .tr-see-all-cta {
	max-width: 100% !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* v0.35: 768px 以下で deck CTA が L=24 になる WP layout の auto-margin を override
 * (excerpt/byline は L=16、CTA だけ L=24 でずれていた) */
.tr-hero-deck .wp-block-read-more,
.tr-hero-deck a.tr-cta-button {
	max-width: 100% !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* ─── value props モバイル: 横スクロール化で wrap 解消 ─── */
@media (max-width: 781px) {
	.tr-value-props {
		flex-wrap: nowrap !important;
		overflow-x: auto;
		overflow-y: hidden;
		justify-content: flex-start !important;
		padding-left: 1rem;
		padding-right: 1rem;
		margin-left: -1rem;
		margin-right: -1rem;
		scrollbar-width: none;
	}
	.tr-value-props::-webkit-scrollbar {
		display: none;
	}
	.tr-value-prop {
		flex-shrink: 0;
	}
}

/* ─── 固定ページの H1 階層強化 ─── */
.wp-block-post-content {
	/* h1 が h2 と区別できるように、ページ post-title を H2 より明確に大きく */
}
body.page .wp-block-post-title,
body.page h1.wp-block-post-title {
	font-size: clamp(1.75rem, 1.5rem + 1.07vw, 2.25rem); /* h2 と同等の clamp 直接指定 */
	font-family: var(--wp--preset--font-family--playfair);
	font-weight: 700;
	line-height: 1.25;
	margin-bottom: var(--wp--preset--spacing--lg);
	padding-bottom: var(--wp--preset--spacing--sm);
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
}

/* WP の空 preset 変数 (h1/h2/h3 slug) を参照するインライン style への
 * 緊急 override。固定ページの h2/h3 が 17px に潰れていた問題対応 */
[style*="font-size:var(--wp--preset--font-size--h1)"],
[style*="font-size: var(--wp--preset--font-size--h1)"] {
	font-size: clamp(2.25rem, 1.875rem + 1.6vw, 3rem) !important;
}
[style*="font-size:var(--wp--preset--font-size--h2)"],
[style*="font-size: var(--wp--preset--font-size--h2)"] {
	font-size: clamp(1.75rem, 1.5rem + 1.07vw, 2.25rem) !important;
}
[style*="font-size:var(--wp--preset--font-size--h3)"],
[style*="font-size: var(--wp--preset--font-size--h3)"] {
	font-size: clamp(1.375rem, 1.25rem + 0.53vw, 1.625rem) !important;
}

/* v0.35: ハンバーガーメニューのタップターゲット 44x44 確保 (WCAG 2.5.5) */
header.site-header button.wp-block-navigation__responsive-container-open,
header.site-header button.wp-block-navigation__responsive-container-close {
	min-width: 44px !important;
	min-height: 44px !important;
	padding: 8px !important;
}

/* v0.35: 記事本文の見出しに text-wrap で orphan 防止 */
.wp-block-post-content h2,
.wp-block-post-content h3,
.wp-block-post-content h4 {
	text-wrap: pretty;
}

/* v0.35: 検索結果ページ最低限の装飾 */
body.search .wp-block-post-title {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.5rem !important;
}
body.search .wp-block-query-title {
	font-family: var(--wp--preset--font-family--playfair);
	font-weight: 700;
	font-size: clamp(1.75rem, 1.5rem + 1.07vw, 2.25rem);
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
	margin-bottom: 2rem;
}
body.search .wp-block-post-excerpt {
	color: var(--wp--preset--color--tr-ink-soft);
	margin-bottom: 0.5rem;
}
body.search .wp-block-post-template > li,
body.search .wp-block-post-template > article {
	padding: 1.25rem 0;
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
}

/* ================================================================
 * v0.36: ピクセル単位の精査で発見した細部の不具合
 * ================================================================ */

/* ─── 日本語のイタリック skew transform 抑制 ─── *
 * 日本語文字には italic font 字形がないため、ブラウザは skew 変換で
 * 強引にイタリック化する → 「カクっと斜めに歪んだ」見た目になる。
 * Japanese 範囲の文字には font-style: normal を強制する。
 *
 * font-feature-settings で fake italic を抑制する手法もあるが、
 * シンプルに font-style: normal を Japanese-aware に適用する。
 *
 * 影響セクション:
 *  - .tr-concept-lead (深層の旅... の italic lead)
 *  - .tr-section-newsletter p (ニュースレター説明)
 *  - footer.site-footer p (フッタータグライン)
 *  - blockquote (引用)
 */
.tr-concept-lead,
.tr-section-newsletter p,
footer.site-footer p[style*="italic"],
.tr-hero-deck p[style*="italic"] {
	/* CJK文字には skew 変換を効かせない: font-style: normal で
	 * Japanese 文字は普通の字形で表示。Latin 文字も skew はかからないが、
	 * Travelers Route のコンテンツは大半 Japanese のため見栄えを優先 */
	font-style: normal !important;
}

/* ─── 記事グリッド: 投稿数で列数を動的調整 (auto-fit が安定しないため :has() 使用) ─── *
 * - 1 件: 中央配置 (最大 480px)
 * - 2 件: 2 列均等
 * - 3 件以上: 3 列
 * - モバイル: 常に 2 列 */
.tr-article-grid .wp-block-post-template {
	grid-template-columns: repeat(3, 1fr) !important;
	max-width: 1100px;
}
.tr-article-grid .wp-block-post-template:has(> *:nth-child(2):last-child) {
	grid-template-columns: repeat(2, 1fr) !important;
}
.tr-article-grid .wp-block-post-template:has(> *:nth-child(1):last-child) {
	grid-template-columns: 1fr !important;
	max-width: 480px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}
@media (max-width: 781px) {
	.tr-article-grid .wp-block-post-template,
	.tr-article-grid .wp-block-post-template:has(> *:nth-child(2):last-child) {
		grid-template-columns: repeat(2, 1fr) !important;
	}
	.tr-article-grid .wp-block-post-template:has(> *:nth-child(1):last-child) {
		grid-template-columns: 1fr !important;
		max-width: 100% !important;
	}
}

/* ─── footer column 内テキスト wrap 最適化 ─── */
@media (max-width: 781px) {
	footer.site-footer .wp-block-list li {
		word-break: keep-all;
		overflow-wrap: anywhere;
		/* 「サイトについて」のような単語の途中改行を抑制 */
	}
}

/* ─── footer 内 italic タグライン: Latin 風だけ italic、日本語は normal ─── *
 * 既に上のルールで対応済みだが、Playfair italic は Latin にだけ効く想定で */
footer.site-footer p {
	font-style: normal !important;
}

/* ─── Hero title text-wrap: tighter balance に変更 + word-break ─── *
 * 「ワイン」が「ワイ」+「ン」に splits する問題対応 */
.tr-hero-title,
.wp-block-cover.alignfull .tr-hero-title {
	word-break: keep-all;
	overflow-wrap: break-word;
}

/* hero deck panel の excerpt も同様 */
.tr-hero-deck .wp-block-post-excerpt p {
	word-break: keep-all;
	overflow-wrap: break-word;
}

/* ================================================================
 * v0.37: 記事本文の幅最適化
 *
 * 現状 contentSize 720 では desktop で利用率 47% と極端に狭く感じる。
 * 本文を 800px (Japanese 35-45 chars/行 推奨) に広げ、wrapper の
 * 余白も視覚的バランスを取る。
 * モバイルでは既に 91-94% 利用なので変更不要。
 * ================================================================ */

/* 記事本文の post-content とその子要素を 800px max に拡張
 *
 * 構造:
 *  main (constrained 720) > article (constrained 720) > wrapper > post-content
 *
 * article 自体が contentSize 720 に拘束されていたため、その内側の wrapper を
 * いくら広げても 720 を超えられない。 article の max-width を alignwide
 * 相当に拡張し、その上で内側の wrapper を 848px に絞ることで本文を 800px に。
 *
 * Cover / Deck の breakout は width:100vw + margin:calc(50%-50vw) なので
 * article の幅変更には影響を受けない。
 */
/* v0.39: 日本語本文の視覚バランス向上 (800 → 920) */
@media (min-width: 1024px) {
	main > article.wp-block-group {
		max-width: 1100px !important;
	}
	main article > .wp-block-group:has(> .wp-block-post-content) {
		max-width: 980px !important;
		margin-left: auto !important;
		margin-right: auto !important;
	}
}

.wp-block-post-content,
.wp-block-post-content.is-layout-constrained > :where(:not(.alignwide):not(.alignfull)) {
	max-width: 920px !important;
}

/* TOC とリーディングタイムは記事本文と同じ幅で揃える */
.wp-block-post-content .tr-toc,
.wp-block-post-content .tr-reading-time {
	max-width: 920px !important;
}

/* alignwide 要素 (引用や画像など) は alignwide 範囲 (1100px) で表現できる */
.wp-block-post-content .alignwide {
	max-width: 1100px !important;
}

/* breadcrumb と article footer も拡張された article 内で alignwide 表示 */
@media (min-width: 1024px) {
	main article > .wp-block-group.alignwide {
		max-width: 1100px !important;
	}
}

/* v0.39: タブレット 768-1023 では既に良いサイズ。微調整不要。
 *
 * モバイル 375-767:
 *   main padding 16px に加え post-content も 16px の root padding を継承して
 *   本文段落が二重 inset で 311px = 82.9% にしか広がっていなかった。
 *   post-content の root padding を 0 にして main の 16px のみで 91% 利用 (343px) に。
 */
@media (max-width: 781px) {
	body .wp-block-post-content.has-global-padding,
	body .wp-block-post-content,
	body .tr-article-main.has-global-padding,
	body .tr-article-main {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
}

/* ─── archive ページ: 単一記事時のレイアウト改善 ─── */
.tr-article-grid .wp-block-post-template:has(> *:nth-child(1):last-child) {
	/* 1 件のみの場合は左寄せ単独表示、3 列 grid を 1 列に */
	display: block !important;
}
.tr-article-grid .wp-block-post-template:has(> *:nth-child(1):last-child) > * {
	max-width: 360px;
	margin-left: 0;
}

/* ─── 404 ページの見出し可視性強化 ─── */
.tr-404-page .tr-section-header h2 {
	font-size: 1.5rem !important;
	color: var(--wp--preset--color--tr-ink) !important;
	font-weight: 700 !important;
}

/* ─── footer column 左 padding をメインと揃える (モバイル) ─── */
@media (max-width: 781px) {
	footer.wp-block-group .wp-block-column {
		padding-left: 0 !important;
	}
}

/* ─── author archive: eyebrow 文言を「AUTHOR」に置換 ─── */
body.is-author-archive .tr-archive-eyebrow {
	visibility: hidden;
	position: relative;
}
body.is-author-archive .tr-archive-eyebrow::before {
	content: "AUTHOR";
	visibility: visible;
	position: absolute;
	left: 0;
}

/* ================================================================
 * v0.34: 残課題 V7 / V15 / V16 + Cookie banner / 関連記事
 * ================================================================ */

/* V7: hero overlay の左 padding を撤去し、deck 内 CTA と同じ L=170 に揃える
 * 元: overlay 内 alignwide に padding 24/24 → title L=194
 * 修正: padding 撤去 → title L=170、deck の CTA(L=170) と縦揃え */
.wp-block-cover.alignfull .wp-block-cover__inner-container > .wp-block-group.alignwide {
	padding-left: 0 !important;
	padding-right: 0 !important;
}

/* V15: value props の各ピル幅を揃える */
.tr-value-prop {
	min-width: 160px;
	justify-content: center;
}
@media (max-width: 781px) {
	.tr-value-prop {
		min-width: 130px;
	}
}

/* V16: hero title の orphan 防止 (text-wrap: balance)
 * 主要モダンブラウザ対応 (Chrome 114+, Safari 17.4+, Firefox 121+)
 * Fallback として pretty も指定 (orphan のみ防止) */
.tr-hero-title,
.wp-block-cover.alignfull .tr-hero-title {
	text-wrap: pretty;
	text-wrap: balance;
}

/* ─── v0.5.27: 国ハブ hero の題名を可変サイズに ───
 * 題名は「ポルトガル」のような短いものから「アメリカ旅行ガイド — 火山とマンタのハワイ、
 * 坂の街の西海岸へ」のような長いものまで幅がある。固定の display (4.25rem) だと長い題名が
 * 3〜4 行になり hero 下端に張り付くため clamp で可変にする。
 * ※テンプレート側は fontSize をインライン指定しないこと（インラインは此処より強く効く）。
 * line-break: strict は行頭の「、」「。」を禁則処理するため（word-break: keep-all だけでは効かない）。 */
.tr-hero-title,
.wp-block-cover.alignfull .tr-hero-title {
	font-size: clamp(1.75rem, 1.05rem + 2.3vw, 3.5rem);
	line-height: 1.22;
	line-break: strict;
	text-shadow: 0 2px 20px rgba(0, 0, 0, 0.45);
}

.tr-concept-headline,
.tr-section-newsletter h2 {
	text-wrap: balance;
}

/* ================================================================
 * Cookie 同意バナー (軽量、依存なし)
 * ================================================================ */
.tr-cookie-banner {
	position: fixed;
	bottom: 1rem;
	left: 1rem;
	right: 1rem;
	max-width: 480px;
	margin: 0 auto;
	background: var(--wp--preset--color--tr-ink);
	color: var(--wp--preset--color--tr-white);
	padding: 1rem 1.25rem;
	border-radius: 6px;
	box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25);
	/* ★チャットのランチャー/ヒント(99987)より上。以前は逆で、モバイルではチャットの
	   吹き出しが「拒否」ボタンに78x38px重なり、押下点3/3が遮られて拒否できなかった。
	   同意はできるが拒否はできない状態は同意取得の有効性を損なうため、バナーを上にした。
	   チャットのパネル(99991)は開いたら最前面のままでよい。 */
	z-index: 99988;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.85rem;
	line-height: 1.6;
	transform: translateY(120%);
	transition: transform 0.35s cubic-bezier(0.2, 0.9, 0.3, 1);
}
.tr-cookie-banner.is-visible {
	transform: translateY(0);
}
.tr-cookie-banner-text {
	margin: 0 0 0.75rem 0;
}
.tr-cookie-banner-text a {
	color: var(--wp--preset--color--tr-gold) !important;
	text-decoration: underline;
}
.tr-cookie-banner-actions {
	display: flex;
	gap: 0.5rem;
	flex-wrap: wrap;
}
.tr-cookie-btn {
	flex: 1;
	min-width: 110px;
	padding: 0.6rem 1rem;
	border-radius: 4px;
	border: none;
	font-family: inherit;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	cursor: pointer;
	transition: background-color 0.2s ease, transform 0.15s ease;
}
.tr-cookie-btn-accept {
	background: var(--wp--preset--color--tr-accent);
	color: var(--wp--preset--color--tr-white);
}
.tr-cookie-btn-accept:hover {
	background: var(--wp--preset--color--tr-gold);
	color: var(--wp--preset--color--tr-ink);
}
.tr-cookie-btn-reject {
	background: transparent;
	color: var(--wp--preset--color--tr-rule);
	border: 1px solid var(--wp--preset--color--tr-muted);
}
.tr-cookie-btn-reject:hover {
	border-color: var(--wp--preset--color--tr-rule);
	color: var(--wp--preset--color--tr-white);
}
.tr-cookie-btn:focus-visible {
	outline: 2px solid var(--wp--preset--color--tr-gold);
	outline-offset: 2px;
}

/* ================================================================
 * Author archive: bio セクション (page 上部に著者情報)
 * ================================================================ */
.tr-author-archive-bio {
	display: flex;
	gap: 1.5rem;
	align-items: flex-start;
	background: var(--wp--preset--color--tr-surface-soft);
	border-radius: 6px;
	padding: 1.5rem;
	margin-bottom: 2rem;
}
.tr-author-archive-bio-avatar {
	width: 96px;
	height: 96px;
	border-radius: 50%;
	flex-shrink: 0;
	object-fit: cover;
	border: 2px solid var(--wp--preset--color--tr-rule);
}
.tr-author-archive-bio-info {
	flex: 1;
	min-width: 0;
}
.tr-author-archive-bio-eyebrow {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: var(--wp--preset--color--tr-accent);
	margin: 0 0 0.35rem 0;
}
.tr-author-archive-bio-name {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.5rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-ink);
	margin: 0 0 0.5rem 0;
	line-height: 1.3;
}
.tr-author-archive-bio-text {
	font-size: 0.95rem;
	color: var(--wp--preset--color--tr-ink-soft);
	line-height: 1.7;
	margin: 0;
}
@media (max-width: 781px) {
	.tr-author-archive-bio {
		flex-direction: column;
		align-items: center;
		text-align: center;
		padding: 1.25rem;
	}
}

/* ================================================================
 * 関連記事カード強化
 * ================================================================ */
.tr-related-articles-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--lg);
}
@media (max-width: 781px) {
	.tr-related-articles-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: var(--wp--preset--spacing--md);
	}
}

/* eyebrow（カテゴリ）: 白文字 + 細かい text-shadow で写真の明部でも読める */
/* v0.4.0: eyebrow はターコイズの塗りチップ（編集メディアのキッカー）。
 * post-terms / paragraph 両方に効くよう display,width,margin も揃える */
.tr-hero-eyebrow,
.wp-block-cover.alignfull .tr-hero-eyebrow {
	display: block;
	width: fit-content;
	max-width: fit-content;
	background: var(--wp--preset--color--tr-accent, #247A76) !important;
	padding: 0.45em 0.85em !important;
	border-radius: 2px;
	color: #FFFFFF !important;
	text-shadow: none !important;
	margin-left: 0 !important;
	margin-right: auto !important;
}
.tr-hero-eyebrow a,
.wp-block-cover.alignfull .tr-hero-eyebrow a {
	color: #FFFFFF !important;
	text-shadow: none !important;
	text-decoration: none !important;
}

/* title: scrim なし、白文字 + 強めの text-shadow */
.tr-hero-title,
.wp-block-cover.alignfull .tr-hero-title,
.wp-block-cover.alignfull h1.tr-hero-title {
	display: block !important;
	background: transparent !important;
	padding: 0 !important;
	color: #FFFFFF !important;
	text-shadow:
		0 2px 8px rgba(0, 0, 0, 0.55),
		0 1px 2px rgba(0, 0, 0, 0.85),
		0 0 1px rgba(0, 0, 0, 0.9) !important;
	letter-spacing: -0.01em !important; /* v0.4.0: 明朝は詰めすぎない */
}
.tr-hero-title a,
.wp-block-cover.alignfull .tr-hero-title a {
	color: #FFFFFF !important;
	text-shadow: inherit !important;
	text-decoration: none !important;
}

/* 写真クレジット: 最下部、極小、半透明 */
.tr-hero-credit,
.wp-block-cover.alignfull .tr-hero-credit {
	color: rgba(255, 255, 255, 0.7) !important;
	font-family: var(--wp--preset--font-family--inter) !important;
	font-size: 0.65rem !important;
	letter-spacing: 0.15em !important;
	text-transform: uppercase !important;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.7) !important;
	margin-top: var(--wp--preset--spacing--sm) !important;
}

/* ─── ヒーローカバーを viewport 幅まで拡張 ───
 *
 * ARTICLE ページ: <article> ラッパーが constrained (max-width:720). article.L = 600
 *   margin-left: calc(50%(720)/2 - 50vw) = 360 - 960 = -600 → cover.L = 600 - 600 = 0 ✓
 *
 * HOME ページ: post-template > LI ラッパー (max-width:720). しかし
 *   post-template が has-global-padding で内部 content area が 30px narrower
 *   なため LI.L = 570。デフォルト calc だと cover.L = -30 で右端 30px 余白。
 *   post-template 内のみ +30px 補正。
 */
.wp-block-cover.alignfull,
.tr-hero-deck {
	width: 100vw !important;
	max-width: 100vw !important;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
}

/* HOME: post-template > LI 内の cover/heroDeck は親 content area が 30px 狭いため
 * +30px 補正で右端まで届かせる */
.wp-block-post-template > li .wp-block-cover.alignfull,
.wp-block-post-template > .wp-block-post .wp-block-cover.alignfull,
.wp-block-post-template > li .tr-hero-deck,
.wp-block-post-template > .wp-block-post .tr-hero-deck {
	margin-left: calc(50% - 50vw + 30px) !important;
	margin-right: calc(50% - 50vw - 30px) !important;
}

/* v0.4.0: オーバーレイは縦グラデーションスクリムに。
 * 上 60% は写真の彩りを活かし（〜18%）、テキストが載る下部だけ
 * 紺 #0E1626 系で確実に沈める（編集メディア定番の bottom scrim）。
 * 逆光・低コントラスト写真でも白タイトルの可読性が安定する。 */
.wp-block-cover.alignfull > .wp-block-cover__background.has-background-dim {
	background: linear-gradient(
		180deg,
		rgba(14, 22, 38, 0.08) 0%,
		rgba(14, 22, 38, 0.16) 55%,
		rgba(14, 22, 38, 0.55) 82%,
		rgba(14, 22, 38, 0.74) 100%
	) !important;
}

/* テキスト group の scrim は撤去（写真をクリアに）+ wideSize 相当の幅に制約
 * Cover ブロックは内部 inner-container に独自レイアウト (flow) を持つため、
 * 子の alignwide には wideSize (1100px) が自動適用されない。明示的に縛る。
 */
.wp-block-cover.alignfull .wp-block-cover__inner-container > .wp-block-group.alignwide {
	background-color: transparent !important;
	backdrop-filter: none !important;
	-webkit-backdrop-filter: none !important;
	border-radius: 0;
	box-shadow: none !important;
	max-width: var(--wp--style--global--wide-size, 1100px);
	margin-left: auto !important;
	margin-right: auto !important;
	padding-left: var(--wp--preset--spacing--md);
	padding-right: var(--wp--preset--spacing--md);
}

/* ─── 行ごとスクリム ─── *
 * 各テキスト要素に display: inline + box-decoration-break: clone を適用し、
 * テキストが折り返した際、行ごとに独立した黒背景で囲む。
 * 結果として「テキストハイライト」風の編集メディア定番ビジュアル。
 */

/* eyebrow（カテゴリラベル）: block + fit-content で「コンパクト badge かつ
 * 後続の H1 を確実に新しい行から始める」を両立。
 * inline-block だと ::after を block にしても効かず、H1 が eyebrow と
 * 同じ行から始まり scrim の左端がずれてしまう。
 */
.wp-block-cover.alignfull .wp-block-post-terms {
	display: block;
	width: fit-content;
	background-color: rgba(0, 0, 0, 0.70);
	padding: 0.35em 0.75em;
	color: #FFFFFF !important;
	text-shadow: none !important;
	/* constrained layout の margin: 0 auto を上書きして左寄せ維持 */
	margin-left: 0 !important;
	margin-right: 0 !important;
}
.wp-block-cover.alignfull .wp-block-post-terms a {
	color: #FFFFFF !important;
	text-shadow: none !important;
}

/* 旧 scrim 用ルールは tr-hero-title / tr-hero-eyebrow で上書き済み */

/* ============================================================
 * Lonely Planet 風 hero パネル + CTA ボタン
 * ============================================================ */

/* hero 直下の編集パネル: 白背景、抜粋・CTA・byline を含む */
.tr-hero-deck {
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
}

/* 抜粋（deck panel 内、黒文字、CSS line-clamp で行数制御）
 * 文字数ベースの WordPress excerptLength だけだと行末が「世...」など
 * 中途半端になるため、CSS で視覚的に N 行で切り auto ellipsis を入れる。
 * desktop は 4 行表示で情報密度を上げる（line 1000px × 4行 = 約 200 文字相当）
 */
.tr-hero-deck .wp-block-post-excerpt p {
	color: var(--wp--preset--color--tr-ink) !important;
	font-family: var(--wp--preset--font-family--inter) !important;
	font-size: var(--wp--preset--font-size--md) !important;
	line-height: 1.75 !important;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 4;
	line-clamp: 4;
	overflow: hidden;
}

/* core/read-more ブロックを CTA ボタン化（Lonely Planet 流: 黒ボタン、太字、矢印） */
.tr-cta-button,
.wp-block-read-more.tr-cta-button,
a.tr-cta-button {
	display: inline-block;
	background-color: var(--wp--preset--color--tr-ink);
	color: var(--wp--preset--color--tr-white) !important;
	padding: 1rem 1.75rem;
	border-radius: 2px;
	border: none;
	font-family: var(--wp--preset--font-family--inter) !important;
	font-size: var(--wp--preset--font-size--sm) !important;
	font-weight: 700 !important;
	letter-spacing: 0.08em !important;
	text-transform: uppercase !important;
	text-decoration: none !important;
	margin-bottom: var(--wp--preset--spacing--md) !important;
	transition: background-color 0.2s ease;
}
.tr-cta-button:hover,
.wp-block-read-more.tr-cta-button:hover,
a.tr-cta-button:hover {
	background-color: var(--wp--preset--color--tr-primary);
	color: var(--wp--preset--color--tr-white) !important;
}

/* モバイル: CTA は full-width（Lonely Planet mobile 流） */
@media (max-width: 781px) {
	.tr-cta-button,
	.wp-block-read-more.tr-cta-button,
	a.tr-cta-button {
		display: block;
		width: 100%;
		text-align: center;
		padding: 1.1rem 1rem;
	}
	/* hero deck panel の padding はモバイルでは詰める */
	.tr-hero-deck {
		padding-top: var(--wp--preset--spacing--md) !important;
		padding-bottom: var(--wp--preset--spacing--md) !important;
	}
}

/* ============================================================
 * モバイル向け hero タイポグラフィ
 *
 * theme.json の fluid font-size の min はモバイルには大きすぎるため
 * media query で明示的に小さくする。モバイル UX 最優先。
 * ============================================================ */
@media (max-width: 781px) {
	/* ─── モバイル: 左右余白を 1rem (16px) まで詰める ─── */

	/* 全ての has-global-padding 要素: 30px → 1rem
	 * main だけでなく query, post-template も has-global-padding を
	 * 持つので、これら全てを統一しないと内側で空間が消費される */
	.has-global-padding,
	.wp-block-group.has-global-padding {
		padding-left: 1rem !important;
		padding-right: 1rem !important;
	}

	/* has-global-padding 内の alignfull は WordPress 標準 CSS で
	 * margin: -30/-30 になっているのを -16/-16 に調整
	 * （cover と tr-hero-deck は別途 100vw breakout で扱うので除外）*/
	.has-global-padding > .alignfull:not(.wp-block-cover):not(.tr-hero-deck),
	.wp-block-group.has-global-padding > .alignfull:not(.wp-block-cover):not(.tr-hero-deck) {
		margin-left: -1rem !important;
		margin-right: -1rem !important;
	}

	/* HOME mobile: cover/heroDeck の +30px 補正は padding 16px に合わせて +16px に */
	.wp-block-post-template > li .wp-block-cover.alignfull,
	.wp-block-post-template > .wp-block-post .wp-block-cover.alignfull,
	.wp-block-post-template > li .tr-hero-deck,
	.wp-block-post-template > .wp-block-post .tr-hero-deck {
		margin-left: calc(50% - 50vw + 16px) !important;
		margin-right: calc(50% - 50vw - 16px) !important;
	}

	/* alignfull で背景色を持つセクション（hero deck, newsletter 等）:
	 * 内側 padding を 1rem に統一 */
	.tr-hero-deck,
	main .wp-block-group.alignfull[class*="has-background"] {
		padding-left: 1rem !important;
		padding-right: 1rem !important;
	}

	/* main 内の constrained / alignwide グループ: 左右 padding を撤廃
	 * （親 main の 1rem に依存させる）*/
	main .wp-block-group.alignwide,
	main article > .wp-block-group:not(.alignfull):not(.wp-block-post-content),
	main > .wp-block-group:not(.alignfull):not(.site-content) {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* hero cover: モバイルは min-height 58vh。
	   ★70vh だと画面の7割を写真が占め、導入文がファーストビューに1行も入らなかった。
	   写真の印象は保ちつつ、本文の書き出しが見える高さにする。 */
	.wp-block-cover.alignfull.tr-hero-cover {
		min-height: 58vh !important;
	}

	/* タイトル / eyebrow / CTA は v0.30 以降のルール (下方) に統合
	 * このブロックでは deck panel 内 typography のみ残す */

	/* deck panel 内の抜粋: 15px、モバイルでは 2 行で clamp（line 3 が
	 * 1-2 文字だけ残るような中途半端な切れ方を防ぐ） */
	.tr-hero-deck .wp-block-post-excerpt p {
		font-size: 0.9375rem !important;
		line-height: 1.7 !important;
		-webkit-line-clamp: 2 !important;
		line-clamp: 2 !important;
	}

	/* byline: 11px */
	.tr-hero-deck .wp-block-post-author-name,
	.tr-hero-deck .wp-block-post-date {
		font-size: 0.7rem !important;
	}
}

/* 中間サイズ（タブレット相当） */
@media (min-width: 782px) and (max-width: 1023px) {
	.tr-hero-title,
	.wp-block-cover.alignfull .tr-hero-title {
		font-size: 3rem !important;
	}
}

/* タイトル inline 化で margin-bottom が効かないため
 * sibling 側に margin-top で間隔を確保
 */
.wp-block-cover.alignfull .wp-block-post-title + .wp-block-post-excerpt,
.wp-block-cover.alignfull .wp-block-post-title + * {
	margin-top: var(--wp--preset--spacing--md);
}

.wp-block-cover.alignfull .wp-block-post-excerpt + .wp-block-group {
	margin-top: var(--wp--preset--spacing--md);
}

/* eyebrow と H1 の間にも spacing（eyebrow は block なので
 * margin-bottom も効くがここでは sibling 側で統一管理） */
.wp-block-cover.alignfull .wp-block-post-terms + .wp-block-post-title {
	margin-top: var(--wp--preset--spacing--sm);
}

/* バイライン: 各要素に小 badge */
.wp-block-cover.alignfull .wp-block-post-author-name,
.wp-block-cover.alignfull .wp-block-post-date {
	display: inline-block;
	background-color: rgba(0, 0, 0, 0.65);
	padding: 0.35em 0.65em;
	color: #FFFFFF !important;
	text-shadow: none !important;
}

/* バイラインの中点はそのまま、装飾なし */
.wp-block-cover.alignfull .wp-block-group p {
	color: #FFFFFF !important;
}

/* ─── ヘッダー内の検索ボックス: ミニマル装飾 ─── */
header.wp-block-group .wp-block-search__inside-wrapper {
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-radius: 2px;
	overflow: hidden;
}
header.wp-block-group .wp-block-search__input {
	border: none;
	background: transparent;
	padding: 6px 12px;
	font-size: var(--wp--preset--font-size--sm);
}
header.wp-block-group .wp-block-search__button {
	background: transparent;
	border: none;
	color: var(--wp--preset--color--tr-ink-soft);
}

/* ─── テンプレートパーツの wrapper にも sticky と背景を適用 ─── */
/*
 * WordPress は parts/header.html を <header class="site-header wp-block-template-part">
 * でラップする。block markup 側で sticky を指定しても、wrapper と内側 group が
 * 同じ高さになるため sticky の sliding 余地がなくなり機能しない。
 * よって wrapper 側に sticky/背景/境界線を CSS で直接適用する。
 */
header.site-header.wp-block-template-part {
	position: sticky;
	top: 0;
	z-index: 100;
	background-color: var(--wp--preset--color--tr-surface);
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
}

/* 内側の重複 header は装飾を持たない単純なコンテナに変える */
header.site-header.wp-block-template-part > header.wp-block-group {
	background: transparent !important;
	border-bottom: none !important;
	position: static !important;
}

/* ─── ヘッダー「行き先から探す」2段ドロップダウン: 2段目(国)を親エリアの右側にフライアウト ───
 * 右寄せナビでは 2 段目サブメニューが既定で親の左へ出て見切れる。
 * デスクトップ(>=782px)のみ、2 段目を親エリアの右隣に固定する。
 * モバイルは overlay 内で aria-expanded 連動の折り畳み（下の max-width 規則）を使う。 */
@media (min-width: 782px) {
	.site-header .wp-block-navigation-submenu .wp-block-navigation-submenu > .wp-block-navigation__submenu-container {
		left: 100% !important;
		right: auto !important;
		top: 0 !important;
		margin: 0 !important;
	}
	/* 2段目が画面右端で見切れないよう、行き先ドロップダウン(1段目)は左端そろえで開く */
	.site-header .wp-block-navigation > .wp-block-navigation__container > .wp-block-navigation-submenu > .wp-block-navigation__submenu-container {
		left: 0;
		right: auto;
	}
}

/* ─── モバイル overlay: サブメニューを既定で折り畳む＋シェブロンで開閉 ───
 * Frost はモバイル overlay でサブメニューを常時表示し、かつ開閉トグル(シェブロン)を
 * display:none にするため「開く手段が無い」状態になる。そこで:
 *  1) aria-expanded="false"(既定) のサブメニューは隠す（折り畳み）
 *  2) 開閉トグル(シェブロン)を表示・タップ可能にする（タップで aria-expanded が反転→展開）
 * 行き先→エリア→国の全ネスト階層に効く。 */
@media (max-width: 781px) {
	/* overlay を全幅・左寄せの縦リストに（既定は content 側が align-items:flex-end で右寄せ、
	   has-child が flex-direction:column でラベルとシェブロンが縦積みになる） */
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
		align-items: stretch !important;
		width: 100%;
	}
	/* 全項目・全リンクを左寄せ（flex の中央/右寄せを上書き） */
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
		justify-content: flex-start !important;
		text-align: left;
	}
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
		text-align: left !important;
		justify-content: flex-start !important;
		width: 100%;
	}
	/* has-child: 既定 column を row に。ラベル(左)＋シェブロン(右)を1行、サブメニューは下段全幅・インデント */
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.has-child {
		flex-direction: row !important;
		flex-wrap: wrap;
		align-items: center;
		justify-content: space-between;
	}
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.has-child > .wp-block-navigation-item__content {
		flex: 1 1 auto;
		width: auto;
	}
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item.has-child > .wp-block-navigation__submenu-container {
		flex: 0 0 100%;
		width: 100%;
		padding-left: 1rem;
	}
	/* 1) 折り畳み: aria-expanded="false" のサブメニューは隠す */
	.wp-block-navigation__responsive-container.is-menu-open button.wp-block-navigation-submenu__toggle[aria-expanded="false"] + .wp-block-navigation__submenu-container {
		display: none !important;
	}
	/* 2) 開閉トグル(シェブロン)を表示・44pxタップターゲット・右端に */
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle {
		display: inline-flex !important;
		align-items: center;
		justify-content: center;
		flex: 0 0 auto;
		min-width: 44px;
		min-height: 44px;
		padding: 0;
		margin: 0;
		cursor: pointer;
	}
	.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle svg {
		display: inline-block;
		width: 1.2em;
		height: 1.2em;
		fill: currentColor;
	}
}

/* ================================================================
 * v0.30+: UX 一括改善 (全 16 項目)
 *
 * Lonely Planet / AFAR / Condé Nast Traveler のモバイル UX を参考に、
 * 情報密度向上・タップターゲット最適化・視覚的ヒエラルキー強化。
 * ================================================================ */

/* ─── コンセプト紹介セクション ─── */
.tr-concept-intro {
	border-top: 1px solid var(--wp--preset--color--tr-rule);
}
.tr-concept-headline {
	max-width: 720px;
	margin-left: auto !important;
	margin-right: auto !important;
}
.tr-concept-lead {
	max-width: 640px;
	margin-left: auto !important;
	margin-right: auto !important;
}
.tr-value-props {
	max-width: 700px;
	margin-left: auto !important;
	margin-right: auto !important;
}
/* HTML ブロック直書きのため flex は明示的に */
.tr-value-props {
	display: flex;
	flex-wrap: wrap;
	gap: 0.85rem;
	justify-content: center;
	max-width: 700px;
	margin: 0 auto;
}
.tr-value-prop {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	background: var(--wp--preset--color--tr-surface-soft);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-radius: 999px;
	padding: 0.6rem 1.2rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--wp--preset--color--tr-ink);
	transition: transform 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}
.tr-value-prop:hover {
	background: var(--wp--preset--color--tr-surface-deep);
	border-color: var(--wp--preset--color--tr-accent);
	transform: translateY(-1px);
}
.tr-vp-icon {
	color: var(--wp--preset--color--tr-accent);
	flex-shrink: 0;
}
.tr-value-prop:nth-child(1) .tr-vp-icon {
	color: var(--wp--preset--color--tr-primary);
}
.tr-value-prop:nth-child(3) .tr-vp-icon {
	color: var(--wp--preset--color--tr-gold);
	filter: brightness(0.85);
}

/* ─── 記事カードグリッド (2列モバイル / 3列デスクトップ) ─── */
.tr-article-grid .wp-block-post-template {
	display: grid !important;
	grid-template-columns: repeat(3, 1fr) !important;
	gap: var(--wp--preset--spacing--lg) !important;
	list-style: none;
	padding-left: 0;
}
.tr-article-card {
	display: flex !important;
	flex-direction: column;
}
.tr-article-card .wp-block-post-featured-image img {
	transition: transform 0.4s ease, opacity 0.3s ease;
	width: 100%;
}
.tr-article-card .wp-block-post-featured-image:hover img {
	transform: scale(1.03);
	opacity: 0.95;
}
.tr-article-card .tr-card-title a {
	color: var(--wp--preset--color--tr-ink) !important;
	text-decoration: none;
	transition: color 0.2s ease;
}
.tr-article-card .tr-card-title a:hover {
	color: var(--wp--preset--color--tr-accent) !important;
}
.tr-article-card .tr-card-eyebrow a {
	color: var(--wp--preset--color--tr-accent) !important;
	text-decoration: none;
}
/* WP post-excerpt ブロックの className はラッパー div に付くため、
 * 実際のテキストを含む p に対して line-clamp を適用する必要がある。
 * WP コア CSS が p に display: flow-root を当てるため、!important で上書き */
.tr-card-excerpt p,
.wp-block-post-excerpt.tr-card-excerpt p {
	display: -webkit-box !important;
	-webkit-box-orient: vertical !important;
	-webkit-line-clamp: 3 !important;
	line-clamp: 3 !important;
	overflow: hidden !important;
	margin: 0 !important;
}

/* ─── セクションヘッダ簡素化: 英語キャプスは右寄せに ─── */
.tr-section-header {
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
	padding-bottom: var(--wp--preset--spacing--sm);
}

/* ─── カテゴリーカードグリッド (3列固定、アクセントカラー別) ─── */
.tr-category-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--md);
}
.tr-category-card {
	padding: var(--wp--preset--spacing--lg) var(--wp--preset--spacing--md) !important;
	border-radius: 4px;
	border-top: 3px solid transparent;
	transition: transform 0.25s ease, box-shadow 0.25s ease;
	background: var(--wp--preset--color--tr-surface-soft);
}
.tr-category-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 16px rgba(26, 35, 50, 0.08);
}
.tr-category-card.tr-category-primary {
	border-top-color: var(--wp--preset--color--tr-primary);
}
.tr-category-card.tr-category-accent {
	border-top-color: var(--wp--preset--color--tr-accent);
}
.tr-category-card.tr-category-gold {
	border-top-color: var(--wp--preset--color--tr-gold);
}
.tr-category-card .tr-category-eyebrow {
	color: var(--wp--preset--color--tr-accent);
}
.tr-category-card.tr-category-primary .tr-category-eyebrow {
	color: var(--wp--preset--color--tr-primary);
}
.tr-category-card.tr-category-gold .tr-category-eyebrow {
	color: var(--wp--preset--color--tr-gold);
	filter: brightness(0.85);
}
.tr-category-card .tr-category-title a {
	color: var(--wp--preset--color--tr-ink) !important;
	text-decoration: none;
	transition: color 0.2s ease;
}
.tr-category-card .tr-category-title a:hover {
	color: var(--wp--preset--color--tr-accent) !important;
}
.tr-category-card.tr-category-primary .tr-category-title a:hover {
	color: var(--wp--preset--color--tr-primary) !important;
}
.tr-category-desc {
	color: var(--wp--preset--color--tr-ink-soft);
}

/* ─── 著者リンク (E-E-A-T 対応) ─── */
.tr-byline .wp-block-post-author-name a {
	color: var(--wp--preset--color--tr-muted) !important;
	text-decoration: none;
	border-bottom: 1px dotted var(--wp--preset--color--tr-rule);
	padding-bottom: 1px;
	transition: color 0.2s ease, border-color 0.2s ease;
}
.tr-byline .wp-block-post-author-name a:hover {
	color: var(--wp--preset--color--tr-accent) !important;
	border-bottom-color: var(--wp--preset--color--tr-accent);
}

/* ─── 目次 (TOC) スタイル ─── */
.tr-toc {
	background: var(--wp--preset--color--tr-surface-soft);
	border-left: 3px solid var(--wp--preset--color--tr-accent);
	padding: 1rem 1.25rem 1rem 1.5rem;
	margin: 1.5rem 0;
	border-radius: 0 2px 2px 0;
}
.tr-toc-title {
	font-family: var(--wp--preset--font-family--inter);
	font-size: var(--wp--preset--font-size--xs);
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--tr-accent);
	margin: 0 0 0.5rem 0;
}
.tr-toc ol {
	margin: 0;
	padding-left: 1.2rem;
	list-style: decimal;
	line-height: 1.85;
}
.tr-toc ol ol {
	padding-left: 1.2rem;
	margin-top: 0.25rem;
	font-size: 0.95em;
}
.tr-toc a {
	color: var(--wp--preset--color--tr-ink-soft);
	text-decoration: none;
	transition: color 0.2s ease;
}
.tr-toc a:hover {
	color: var(--wp--preset--color--tr-accent);
	text-decoration: underline;
}

/* ─── モバイル UX 最適化 (≤ 781px) ─── */
@media (max-width: 781px) {

	/* 記事カードグリッド: 2 列固定 */
	.tr-article-grid .wp-block-post-template {
		grid-template-columns: repeat(2, 1fr) !important;
		gap: var(--wp--preset--spacing--md) !important;
	}
	.tr-article-card .tr-card-title,
	.tr-article-card h3.tr-card-title {
		font-size: 0.95rem !important;
		line-height: 1.35 !important;
		-webkit-line-clamp: 2;
		line-clamp: 2;
		display: -webkit-box;
		-webkit-box-orient: vertical;
		overflow: hidden;
	}
	.tr-article-card .tr-card-eyebrow {
		font-size: 0.65rem !important;
	}
	.tr-article-card .tr-card-excerpt p {
		-webkit-line-clamp: 2 !important;
		line-clamp: 2 !important;
		font-size: 0.8rem !important;
	}
	.tr-article-card .tr-card-date {
		font-size: 0.7rem !important;
	}

	/* カテゴリーカードグリッド: モバイルでも 3 列、コンパクトに */
	.tr-category-grid {
		grid-template-columns: repeat(3, 1fr);
		gap: 0.5rem;
	}
	.tr-category-card {
		padding: 0.75rem 0.5rem !important;
		text-align: center;
	}
	.tr-category-card .tr-category-icon {
		font-size: 1.5rem !important;
		text-align: center;
	}
	.tr-category-card .tr-category-eyebrow {
		font-size: 0.6rem !important;
		letter-spacing: 0.1em !important;
		text-align: center;
	}
	.tr-category-card .tr-category-title,
	.tr-category-card h3.tr-category-title {
		font-size: 0.95rem !important;
		text-align: center;
	}
	.tr-category-card .tr-category-desc {
		display: none; /* モバイルでは省略、タイトルだけ表示 */
	}

	/* タイトル: モバイルで 2 行 clamp + 小さく */
	.tr-hero-title,
	.wp-block-cover.alignfull .tr-hero-title,
	.wp-block-cover.alignfull h1.tr-hero-title {
		font-size: 1.75rem !important;
		line-height: 1.15 !important;
		display: -webkit-box;
		-webkit-box-orient: vertical;
		-webkit-line-clamp: 3;
		line-clamp: 3;
		overflow: hidden;
	}

	/* eyebrow: 視認性確保 + タップターゲット 44px 確保 */
	.tr-hero-eyebrow,
	.wp-block-cover.alignfull .tr-hero-eyebrow {
		display: inline-block !important;
		background: var(--wp--preset--color--tr-accent, #247A76) !important; /* v0.4.0: チップ色統一 */
		padding: 6px 10px !important;
		border-radius: 2px;
		min-height: 28px;
		font-size: 0.7rem !important;
		letter-spacing: 0.15em !important;
	}

	/* CTA ボタンは full-width のまま (モバイル) だが
	 * 高さ確保 (タップ 44px+) + アクセシビリティ重視 */
	.tr-cta-button,
	.wp-block-read-more.tr-cta-button,
	a.tr-cta-button {
		padding: 1.1rem 1.25rem !important;
		min-height: 48px;
		font-size: 0.875rem !important;
	}

	/* Newsletter ボタン: フルワイドではなく中央寄せ */
	.tr-section-newsletter .wp-block-buttons {
		justify-content: center !important;
	}
	.tr-section-newsletter .wp-block-button__link {
		padding: 0.85rem 1.5rem !important;
		font-size: 0.875rem;
	}

	/* コンセプト紹介セクション (モバイル) */
	.tr-concept-headline {
		font-size: 1.5rem !important;
	}
	.tr-concept-lead {
		font-size: 0.9375rem !important;
	}
	.tr-value-prop {
		padding: 0.4rem 0.85rem !important;
		font-size: 0.8rem !important;
	}
	.tr-value-prop p {
		font-size: 0.8rem !important;
	}

	/* セクションヘッダー: モバイルで縦並びに */
	.tr-section-header {
		padding-bottom: var(--wp--preset--spacing--xs);
	}
	.tr-section-header h2 {
		font-size: 1.5rem !important;
	}

	/* TOC: モバイルでさらにコンパクトに */
	.tr-toc {
		padding: 0.85rem 0.85rem 0.85rem 1rem;
		font-size: 0.875rem;
	}

	/* ─── フッター: 3 列レイアウト (モバイル) ─── */
	footer.wp-block-group .wp-block-columns {
		flex-wrap: wrap !important;
		gap: var(--wp--preset--spacing--md) !important;
	}
	/* 1 列目 (site title + tagline) は full-width に */
	footer.wp-block-group .wp-block-column:first-child {
		flex-basis: 100% !important;
		margin-bottom: var(--wp--preset--spacing--md);
	}
	/* 残り 3 列を均等配分 */
	footer.wp-block-group .wp-block-column:not(:first-child) {
		flex-basis: calc(33.33% - var(--wp--preset--spacing--md) * 2/3) !important;
	}
	footer.wp-block-group h6 {
		font-size: 0.65rem !important;
	}
	footer.wp-block-group .wp-block-list {
		font-size: 0.85rem !important;
		line-height: 1.8 !important;
	}
}

/* ─── タブレット範囲 (782-1023): 記事カード 3 列維持、カテゴリカード 3 列 ─── */
@media (min-width: 782px) and (max-width: 1023px) {
	.tr-article-grid .wp-block-post-template {
		grid-template-columns: repeat(3, 1fr) !important;
	}
}

/* ─── アクセシビリティ: TOC アンカー時のヘッダーオフセット ─── */
/* v0.42: html { scroll-behavior: smooth } は削除済み (思わぬ遷移の重さを回避) */
:target {
	scroll-margin-top: 90px; /* sticky header 分のオフセット */
}

/* prefers-reduced-motion: アニメーションとトランジションを抑制 */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ─── focus-visible スタイル (WCAG 2.4.7 準拠) ─── *
 * キーボード Tab 操作で focus が当たった要素を明確に視覚化。
 * :focus-visible はキーボード操作時のみ発火し、マウスクリックでは出ない。
 */
:focus-visible {
	outline: 3px solid var(--wp--preset--color--tr-accent);
	outline-offset: 2px;
	border-radius: 2px;
}

/* リンク・ボタンへの個別調整 (枠が文字に近すぎないように) */
a:focus-visible,
button:focus-visible,
.tr-cta-button:focus-visible,
.wp-block-button__link:focus-visible {
	outline-offset: 3px;
}

/* hero overlay の白文字リンクは focus 色を白系に */
.tr-hero-cover .tr-hero-title a:focus-visible,
.tr-hero-cover .tr-hero-eyebrow a:focus-visible {
	outline-color: var(--wp--preset--color--tr-white);
}

/* TOC リンクのフォーカススタイル */
.tr-toc a:focus-visible {
	outline-color: var(--wp--preset--color--tr-accent);
	background: rgba(36, 122, 118, 0.08);
}

/* ================================================================
 * v0.32+: 監査結果に基づく改善 (37 項目)
 * ================================================================ */

/* ─── 取材メモ（[tr_fieldnote]）───
 * 実走時期とファクト最終確認をバイライン直下に構造化して置く。
 * 散文の定型文（「本記事は…調査時点」）を置き換えるためのコンポーネント。 */
.tr-fieldnote {
	margin: 0 0 1.5rem;
	padding: 0.85rem 1.1rem;
	background: var(--wp--preset--color--tr-surface-soft);
	border-left: 3px solid var(--wp--preset--color--tr-accent);
	border-radius: 2px;
}
.tr-fieldnote-row {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.35rem 0.6rem;
	margin: 0;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.82rem;
	line-height: 1.6;
	color: var(--wp--preset--color--tr-ink-soft);
}
.tr-fieldnote-row + .tr-fieldnote-row {
	margin-top: 0.35rem;
}
.tr-fieldnote-icon {
	font-size: 0.9rem;
}
.tr-fieldnote-label {
	font-weight: 700;
	letter-spacing: 0.02em;
	color: var(--wp--preset--color--tr-ink);
}
.tr-fieldnote-label::after {
	content: "：";
}
.tr-fieldnote-value {
	flex: 1 1 auto;
	min-width: 0;
}

/* ─── 読了時間バッジ ─── */
.tr-reading-time {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	background: var(--wp--preset--color--tr-surface-soft);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-radius: 999px;
	padding: 0.35rem 0.85rem;
	margin-bottom: 1.5rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.8rem;
	font-weight: 600;
	color: var(--wp--preset--color--tr-ink-soft);
	letter-spacing: 0.02em;
}
.tr-reading-time-icon {
	font-size: 0.95rem;
}

/* ─── 「もっと見る」CTA ─── */
.tr-see-all-cta a {
	color: inherit;
	text-decoration: none;
	border-bottom: 1px solid currentColor;
	padding-bottom: 2px;
	transition: opacity 0.2s ease, letter-spacing 0.2s ease;
}
.tr-see-all-cta a:hover {
	letter-spacing: 0.15em;
	opacity: 0.85;
}

/* ─── タグクラウド (記事フッター) ─── */
.tr-tag-cloud {
	align-items: center;
}
.tr-tag-cloud .wp-block-post-terms {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}
.tr-tag-cloud .wp-block-post-terms a {
	display: inline-block;
	background: var(--wp--preset--color--tr-surface-soft);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-radius: 999px;
	padding: 0.3rem 0.85rem;
	font-size: 0.8rem;
	color: var(--wp--preset--color--tr-ink-soft);
	text-decoration: none;
	transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.tr-tag-cloud .wp-block-post-terms a:hover {
	background: var(--wp--preset--color--tr-accent);
	border-color: var(--wp--preset--color--tr-accent);
	color: var(--wp--preset--color--tr-white);
}

/* ─── シェアボタン群 ─── */
.tr-share {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.85rem;
}
.tr-share-label {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--wp--preset--color--tr-muted);
	margin: 0;
}
.tr-share-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}
.tr-share-btn {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.45rem 0.9rem;
	border-radius: 999px;
	border: 1px solid var(--wp--preset--color--tr-rule);
	background: transparent;
	color: var(--wp--preset--color--tr-ink-soft);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.8rem;
	font-weight: 600;
	text-decoration: none;
	transition: all 0.2s ease;
	min-height: 36px;
}
.tr-share-btn svg {
	width: 16px;
	height: 16px;
	flex-shrink: 0;
}
.tr-share-x:hover {
	background: #000;
	border-color: #000;
	color: #fff;
}
.tr-share-fb:hover {
	background: #1877F2;
	border-color: #1877F2;
	color: #fff;
}
.tr-share-line:hover {
	background: #06C755;
	border-color: #06C755;
	color: #fff;
}
.tr-share-hb:hover {
	background: #00A4DE;
	border-color: #00A4DE;
	color: #fff;
}

/* ─── 著者プロフィールカード ─── */
.tr-author-card {
	align-items: flex-start !important;
	gap: 1rem !important;
}
.tr-author-card .wp-block-avatar {
	flex-shrink: 0;
}
.tr-author-card .wp-block-avatar img {
	border-radius: 50%;
	border: 2px solid var(--wp--preset--color--tr-rule);
}
.tr-author-info {
	flex: 1;
}
.tr-author-card .tr-author-label {
	color: var(--wp--preset--color--tr-muted);
	margin-bottom: 0.25rem !important;
}
.tr-author-card .tr-author-name {
	margin: 0 !important;
}
.tr-author-card .tr-author-name a {
	color: var(--wp--preset--color--tr-ink) !important;
	text-decoration: none;
}
.tr-author-card .tr-author-name a:hover {
	color: var(--wp--preset--color--tr-accent) !important;
}
.tr-author-card .tr-author-bio {
	margin-top: 0.5rem !important;
}

/* ─── アーカイブヘッダ ─── */
.tr-archive-header {
	text-align: left;
}
.tr-archive-header .wp-block-query-title {
	margin: 0 !important;
}
.tr-archive-desc {
	max-width: 720px;
}

/* ─── 空アーカイブ ─── */
.tr-empty-archive {
	text-align: center;
}
.tr-empty-archive .wp-block-button__link {
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.tr-empty-archive .wp-block-button__link:hover {
	transform: translateY(-1px);
	box-shadow: 0 4px 12px rgba(26, 35, 50, 0.1);
}

/* ─── 404 ページ ─── */
.tr-404-hero {
	text-align: center;
}
.tr-404-code {
	background: linear-gradient(135deg, var(--wp--preset--color--tr-primary), var(--wp--preset--color--tr-accent));
	-webkit-background-clip: text;
	background-clip: text;
	-webkit-text-fill-color: transparent;
	display: inline-block;
	margin: 0 auto !important;
}

/* ─── floating TOC ボタン (スクロール中に表示) ───
 * チャットボットのランチャー（right:20px / bottom:20px / 56px 円）は
 * 全ページ共通の固定位置とし、目次 FAB はその真上に重ねて配置する。
 * right は両者の円の中心 x（右端から 48px）を揃えた値 */
.tr-toc-fab {
	position: fixed;
	bottom: 88px;
	right: 24px;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: var(--wp--preset--color--tr-ink);
	color: var(--wp--preset--color--tr-white);
	border: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
	z-index: 90;
	opacity: 0;
	visibility: hidden;
	transform: translateY(10px);
	transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease, background 0.2s ease;
	font-size: 1.25rem;
}
.tr-toc-fab.is-visible {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.tr-toc-fab:hover {
	background: var(--wp--preset--color--tr-accent);
}
.tr-toc-fab:focus-visible {
	outline-color: var(--wp--preset--color--tr-accent);
	outline-offset: 3px;
}

/* ─── スクロール進捗バー ─── */
.tr-scroll-progress {
	position: fixed;
	top: 0;
	left: 0;
	height: 3px;
	background: linear-gradient(90deg, var(--wp--preset--color--tr-accent), var(--wp--preset--color--tr-gold));
	z-index: 200;
	width: 0%;
	transition: width 0.05s linear;
}

/* ─── Affiliate CTA カード ─── *
 * [tr_aff] shortcode で生成される CTA カード。
 * 写真リッチではなく「ロジックメディア」らしい控えめなビジュアル。
 */
.tr-aff-cta {
	display: flex;
	align-items: flex-start;
	gap: 1rem;
	background: var(--wp--preset--color--tr-surface-soft);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-left: 4px solid var(--wp--preset--color--tr-accent);
	border-radius: 4px;
	padding: 1.25rem 1.25rem 1.25rem 1.1rem;
	margin: 1.75rem 0;
}
.tr-aff-cta.tr-aff-booking {
	border-left-color: var(--wp--preset--color--tr-primary);
}
.tr-aff-cta.tr-aff-tour {
	border-left-color: var(--wp--preset--color--tr-accent);
}
.tr-aff-cta.tr-aff-gear {
	border-left-color: var(--wp--preset--color--tr-gold);
}
.tr-aff-icon {
	flex-shrink: 0;
	font-size: 2rem;
	line-height: 1;
	margin-top: 0.15rem;
}
.tr-aff-body {
	flex: 1;
	min-width: 0;
}
.tr-aff-badge {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--tr-muted);
	margin: 0 0 0.4rem 0;
}
.tr-aff-title {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.1rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-ink);
	margin: 0 0 0.4rem 0;
	line-height: 1.4;
}
.tr-aff-desc {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.875rem;
	color: var(--wp--preset--color--tr-ink-soft);
	line-height: 1.6;
	margin: 0 0 0.85rem 0;
}
.tr-aff-link {
	display: inline-block;
	background: var(--wp--preset--color--tr-ink);
	color: var(--wp--preset--color--tr-white) !important;
	padding: 0.7rem 1.25rem;
	border-radius: 2px;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.85rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
	transition: background-color 0.2s ease, transform 0.2s ease;
}
.tr-aff-link:hover {
	background: var(--wp--preset--color--tr-accent);
	transform: translateY(-1px);
}

@media (max-width: 781px) {
	.tr-aff-cta {
		flex-direction: column;
		padding: 1rem;
		gap: 0.6rem;
	}
	.tr-aff-icon {
		font-size: 1.75rem;
	}
	.tr-aff-link {
		display: block;
		text-align: center;
		padding: 0.85rem 1rem;
	}
}

/* ─── アフィリエイト開示バナー (ステマ規制 PR 表記) ───
 * 本文最上部に出る。視認性確保のため極端に小さい/薄い文字は避け、
 * PR チップは tr-ink 背景 + 白文字でコントラストを最大化する。 */
.tr-aff-disclosure {
	display: flex;
	align-items: baseline;
	gap: 0.6rem;
	background: var(--wp--preset--color--tr-surface-soft);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-radius: 4px;
	padding: 0.65rem 0.9rem;
	margin: 0 0 1.5rem 0;
	font-family: var(--wp--preset--font-family--inter);
}
.tr-aff-disclosure-label {
	flex-shrink: 0;
	font-size: 0.65rem;
	font-weight: 700;
	letter-spacing: 0.16em;
	color: var(--wp--preset--color--tr-white);
	background: var(--wp--preset--color--tr-ink);
	padding: 0.14rem 0.5rem;
	border-radius: 2px;
	line-height: 1.5;
}
.tr-aff-disclosure-text {
	font-size: 0.8rem;
	line-height: 1.65;
	color: var(--wp--preset--color--tr-ink-soft);
}
.tr-aff-disclosure-text a {
	color: var(--wp--preset--color--tr-accent);
	text-decoration: underline;
	text-underline-offset: 2px;
}
@media (max-width: 781px) {
	.tr-aff-disclosure {
		padding: 0.55rem 0.75rem;
	}
	.tr-aff-disclosure-text {
		font-size: 0.74rem;
	}
}

/* ─── モバイル UX 微調整 ─── */
@media (max-width: 781px) {
	/* 著者カード: モバイルでは縦並びに */
	.tr-author-card {
		flex-direction: column !important;
		text-align: center;
		align-items: center !important;
	}
	.tr-author-card .tr-author-info {
		text-align: center;
	}

	/* シェアボタン: モバイルではテキスト非表示 (アイコンのみ) */
	.tr-share-btn span {
		display: none;
	}
	.tr-share-btn {
		padding: 0.5rem;
		width: 40px;
		height: 40px;
		justify-content: center;
	}

	/* タグクラウド: モバイルでより wrap しやすく */
	.tr-tag-cloud .wp-block-post-terms a {
		font-size: 0.75rem;
		padding: 0.25rem 0.7rem;
	}

	/* 404 ページ */
	.tr-404-code {
		font-size: 4rem !important;
	}
	.tr-404-title {
		font-size: 1.5rem !important;
	}

	/* floating TOC ボタンの位置調整（モバイルもチャットランチャーの真上） */
	.tr-toc-fab {
		bottom: 86px;
		right: 26px;
		width: 44px;
		height: 44px;
	}

	/* アーカイブヘッダのサイズ */
	.tr-archive-header .wp-block-query-title {
		font-size: 1.75rem !important;
	}
}

/* ================================================================
 * v0.38: UI/UX 最新化 (editorial standard 2026)
 *
 * 観点:
 *   1. 記事本文の読書体験 (typography rhythm, lead 段落, 引用)
 *   2. カードに subtle shadow + smooth hover elevation
 *   3. Hero に Ken Burns 微 zoom + vertical gradient
 *   4. Newsletter を distinctive に
 *   5. Link underline animation + micro-interactions
 * ================================================================ */

/* ===== 1. 記事本文の読書体験強化 ===== */

/* 本文段落: ベース 1.0625rem を line-height 1.95 で日本語可読性向上 */
.wp-block-post-content > p,
.wp-block-post-content > .wp-block-paragraph,
.wp-block-post-content > .wp-block-paragraph p {
	line-height: 1.95;
	color: var(--wp--preset--color--tr-ink);
	letter-spacing: 0.01em;
}

/* リード段落: 最初の段落を少し大きく (v0.42: ガード追加 + ソフト化)
 *   :not(:only-of-type) — 段落が 1 つしか無いケースで効果が無意味になるのを防ぐ
 *   :not(.has-text-align-center) — center 寄せの場合は装飾段落の可能性が高いため除外
 *   サイズも 1.1875 → 1.125rem に控えめ調整 */
.wp-block-post-content > p:first-of-type:not(:only-of-type):not(.has-text-align-center):not(.has-text-align-right) {
	font-size: 1.125rem;
	line-height: 1.85;
	color: var(--wp--preset--color--tr-ink);
}
@media (max-width: 781px) {
	.wp-block-post-content > p:first-of-type:not(:only-of-type):not(.has-text-align-center):not(.has-text-align-right) {
		font-size: 1.05rem;
		line-height: 1.8;
	}
}

/* 強調 (bold): リスト内の strong にのみマーカー効果 (v0.42)
 *   p strong は通常の bold のまま (キーワードでない強調の過剰装飾を回避)
 *   list 内の bold はキーワード/項目名であることが多いため装飾保持 */
.wp-block-post-content li strong {
	font-weight: 700;
	background-image: linear-gradient(
		to bottom,
		transparent 65%,
		rgba(117, 181, 176, 0.30) 65%,
		rgba(117, 181, 176, 0.30) 92%,
		transparent 92%
	);
	padding: 0 2px;
}
.wp-block-post-content p strong {
	font-weight: 700;
}

/* 本文リンク: subtle underline animation
 *
 * ⚠ この下線は background-image で描くため、背景を持つ「カード型リンク」に当たると
 * 写真やグラデーションを丸ごと上書きする（詳細度 (0,5,1) が a.tr-photo-card (0,1,1) に勝つ）。
 * 本文中にカードを置くショートコード（[tr_theme_countries] [tr_theme_match] [tr_theme_more]）と
 * 記事末の「次の一歩」・歴史軸の現物チップ（.tr-hx-tg）は、必ずここで除外する。新しいカード型リンクを本文に足すときも同様。 */
.wp-block-post-content a:not(.wp-block-button__link):not(.tr-aff-link):not(.tr-share-btn):not(.wp-block-read-more):not(.tr-photo-card):not(.tr-tm-item):not(.tr-funnel-card):not(.tr-next-step-card):not(.tr-hx-tg):not(.tr-hx-chapter) {
	color: var(--wp--preset--color--tr-primary);
	text-decoration: none;
	background-image: linear-gradient(currentColor, currentColor);
	background-position: 0 100%;
	background-repeat: no-repeat;
	background-size: 100% 1px;
	padding-bottom: 1px;
	transition: background-size 0.25s ease, color 0.2s ease;
}
.wp-block-post-content a:not(.wp-block-button__link):not(.tr-aff-link):not(.tr-share-btn):not(.wp-block-read-more):not(.tr-photo-card):not(.tr-tm-item):not(.tr-funnel-card):not(.tr-next-step-card):not(.tr-hx-tg):not(.tr-hx-chapter):hover {
	color: var(--wp--preset--color--tr-accent);
	background-size: 100% 2px;
}

/* 見出し下の余白を editorial リズムに合わせて改善 */
.wp-block-post-content h2 {
	margin-top: 3rem;
	margin-bottom: 1rem;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
}
.wp-block-post-content h3 {
	margin-top: 2.25rem;
	margin-bottom: 0.85rem;
}
.wp-block-post-content h2:first-child,
.wp-block-post-content h3:first-child {
	margin-top: 0;
}
@media (max-width: 781px) {
	.wp-block-post-content h2 { margin-top: 2.25rem; }
	.wp-block-post-content h3 { margin-top: 1.75rem; }
}

/* リスト: 適切な間隔 + ブレット色をアクセントに */
.wp-block-post-content ul,
.wp-block-post-content ol {
	margin: 1.25rem 0 1.75rem;
	line-height: 1.9;
}
.wp-block-post-content ul li::marker {
	color: var(--wp--preset--color--tr-accent);
}
.wp-block-post-content ol li::marker {
	color: var(--wp--preset--color--tr-accent);
	font-weight: 700;
}
.wp-block-post-content li + li {
	margin-top: 0.35em;
}

/* Blockquote: editorial pull-quote */
.wp-block-post-content blockquote.wp-block-quote,
.wp-block-post-content .wp-block-quote {
	margin: 2.5rem 0;
	padding: 1.75rem 2rem 1.25rem;
	background: linear-gradient(135deg, var(--wp--preset--color--tr-surface-soft) 0%, var(--wp--preset--color--tr-surface) 100%);
	border-left: 4px solid var(--wp--preset--color--tr-accent);
	border-radius: 0 6px 6px 0;
	position: relative;
}
.wp-block-post-content blockquote.wp-block-quote::before,
.wp-block-post-content .wp-block-quote::before {
	content: "\201C";
	position: absolute;
	top: -0.15em;
	left: 0.7rem;
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 4rem;
	font-style: italic;
	line-height: 1;
	color: var(--wp--preset--color--tr-accent);
	opacity: 0.25;
}
.wp-block-post-content blockquote.wp-block-quote p,
.wp-block-post-content .wp-block-quote p {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.2rem;
	line-height: 1.7;
	color: var(--wp--preset--color--tr-ink);
	margin-bottom: 0.5rem;
	font-style: normal;
}
.wp-block-post-content blockquote.wp-block-quote cite,
.wp-block-post-content .wp-block-quote cite {
	font-style: normal;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.85rem;
	color: var(--wp--preset--color--tr-muted);
	letter-spacing: 0.05em;
}
@media (max-width: 781px) {
	.wp-block-post-content blockquote.wp-block-quote,
	.wp-block-post-content .wp-block-quote {
		padding: 1.25rem 1.25rem 1rem;
		margin: 2rem 0;
	}
	.wp-block-post-content blockquote.wp-block-quote::before,
	.wp-block-post-content .wp-block-quote::before {
		font-size: 3rem;
	}
	.wp-block-post-content blockquote.wp-block-quote p,
	.wp-block-post-content .wp-block-quote p {
		font-size: 1.05rem;
	}
}

/* Inline code: editorial mono badge */
.wp-block-post-content p code,
.wp-block-post-content li code {
	background: var(--wp--preset--color--tr-surface-soft);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-radius: 3px;
	padding: 0.12em 0.45em;
	font-family: 'SF Mono', Consolas, 'Cascadia Mono', Menlo, monospace;
	font-size: 0.92em;
	color: var(--wp--preset--color--tr-primary);
}

/* 本文画像: subtle shadow + caption styling */
.wp-block-post-content figure.wp-block-image {
	margin: 2rem 0;
}
.wp-block-post-content figure.wp-block-image img {
	border-radius: 4px;
	box-shadow: 0 4px 16px rgba(26, 35, 50, 0.08);
}
.wp-block-post-content figure.wp-block-image figcaption {
	margin-top: 0.85rem;
	text-align: center;
	font-family: var(--wp--preset--font-family--playfair);
	font-style: italic;
	font-size: 0.92rem;
	color: var(--wp--preset--color--tr-muted);
}

/* ===== 2. カードデザイン強化 (shadow + hover elevation) ===== */

/* 記事カード: subtle shadow + hover lift */
.tr-article-card {
	background: var(--wp--preset--color--tr-surface);
	border-radius: 6px;
	overflow: hidden;
	box-shadow: 0 1px 3px rgba(26, 35, 50, 0.04);
	transition: transform 0.3s cubic-bezier(0.2, 0.9, 0.3, 1),
	            box-shadow 0.3s cubic-bezier(0.2, 0.9, 0.3, 1);
}
.tr-article-card:hover,
.tr-article-card:has(a:hover) {
	transform: translateY(-4px);
	box-shadow: 0 12px 32px rgba(26, 35, 50, 0.12),
	            0 2px 8px rgba(26, 35, 50, 0.06);
}

/* 記事カードの featured image: subtle scale on hover */
.tr-article-card .wp-block-post-featured-image,
.tr-article-card > a:first-child {
	overflow: hidden;
	display: block;
}
.tr-article-card .wp-block-post-featured-image img,
.tr-article-card figure img {
	transition: transform 0.5s cubic-bezier(0.2, 0.9, 0.3, 1) !important;
}
.tr-article-card:hover .wp-block-post-featured-image img,
.tr-article-card:hover figure img {
	transform: scale(1.05);
}

/* カテゴリカード: shadow + hover */
.tr-category-card {
	box-shadow: 0 2px 8px rgba(26, 35, 50, 0.04);
	transition: transform 0.3s cubic-bezier(0.2, 0.9, 0.3, 1),
	            box-shadow 0.3s cubic-bezier(0.2, 0.9, 0.3, 1) !important;
}
.tr-category-card:hover {
	transform: translateY(-3px);
	box-shadow: 0 8px 24px rgba(26, 35, 50, 0.1),
	            0 2px 6px rgba(26, 35, 50, 0.06);
}

/* ===== 3. Hero 強化: Ken Burns zoom + vertical gradient ===== */

@keyframes tr-hero-zoom {
	from { transform: scale(1); }
	to { transform: scale(1.08); }
}
.wp-block-cover.alignfull .wp-block-cover__image-background {
	animation: tr-hero-zoom 18s ease-out forwards;
	transform-origin: center 60%;
}
@media (prefers-reduced-motion: reduce) {
	.wp-block-cover.alignfull .wp-block-cover__image-background {
		animation: none;
	}
}

/* ===== 4. Newsletter section 強化 ===== */

.tr-section-newsletter {
	background: linear-gradient(135deg,
		var(--wp--preset--color--tr-surface-deep) 0%,
		var(--wp--preset--color--tr-surface-soft) 100%) !important;
	border-top: 1px solid var(--wp--preset--color--tr-rule);
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
	position: relative;
}
.tr-section-newsletter::before {
	content: "";
	position: absolute;
	top: -1px;
	left: 50%;
	transform: translateX(-50%);
	width: 60px;
	height: 3px;
	background: var(--wp--preset--color--tr-accent);
	border-radius: 0 0 3px 3px;
}

/* Newsletter ボタン強化: gradient + hover lift */
.tr-section-newsletter .wp-block-button__link {
	background: linear-gradient(135deg,
		var(--wp--preset--color--tr-accent) 0%,
		var(--wp--preset--color--tr-primary) 100%) !important;
	border: none !important;
	padding: 1rem 2.5rem !important;
	font-weight: 700 !important;
	letter-spacing: 0.08em !important;
	box-shadow: 0 4px 16px rgba(36, 122, 118, 0.25);
	transition: all 0.3s cubic-bezier(0.2, 0.9, 0.3, 1) !important;
}
.tr-section-newsletter .wp-block-button__link:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 24px rgba(36, 122, 118, 0.35);
}

/* ===== 5. micro-interactions ===== */

/* フッターリンクの subtle underline animation */
footer.wp-block-group .wp-block-list a,
footer.site-footer .wp-block-list a {
	background-image: linear-gradient(currentColor, currentColor);
	background-position: 0 100%;
	background-repeat: no-repeat;
	background-size: 0 1px;
	transition: background-size 0.25s ease, color 0.2s ease;
}
footer.wp-block-group .wp-block-list a:hover,
footer.site-footer .wp-block-list a:hover {
	background-size: 100% 1px;
}

/* ===== 6. Section accent separator ===== */

/* v0.4.0: 直線 → 「航路」点線（出発点ドット → 点線の弧 → 到着点ドット）。
 * Travelers Route のシグネチャモチーフ。記事内ルート概念図と同じ視覚言語 */
.tr-section-categories::before {
	content: "";
	display: block;
	width: 132px;
	height: 18px;
	margin: 0 auto 2.5rem;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='132' height='18' viewBox='0 0 132 18' fill='none'%3E%3Ccircle cx='5' cy='13' r='2.4' fill='%232A8E89'/%3E%3Cpath d='M10 13C42 13 66 5 122 5' stroke='%232A8E89' stroke-width='1.7' stroke-dasharray='0.5 6.5' stroke-linecap='round'/%3E%3Ccircle cx='127' cy='5' r='2.4' fill='%2375B5B0'/%3E%3C/svg%3E") center / contain no-repeat;
}
@media (max-width: 781px) {
	.tr-section-categories::before {
		margin-bottom: 1.75rem;
	}
}

/* ===== 7. value props pill: hover lift ===== */

.tr-value-prop {
	box-shadow: 0 1px 3px rgba(26, 35, 50, 0.04);
	transition: transform 0.25s cubic-bezier(0.2, 0.9, 0.3, 1),
	            box-shadow 0.25s cubic-bezier(0.2, 0.9, 0.3, 1);
}
.tr-value-prop:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px rgba(26, 35, 50, 0.08);
}

/* ===== 8. 「すべての記事を見る」 CTA spacing animation ===== */

.tr-see-all-cta a {
	display: inline-block;
	transition: letter-spacing 0.3s cubic-bezier(0.2, 0.9, 0.3, 1);
}
.tr-see-all-cta a:hover {
	letter-spacing: 0.12em;
}

/* ===== 9. CTA ボタン主要強化: depth + smooth ===== */

.tr-cta-button,
.wp-block-read-more.tr-cta-button {
	box-shadow: 0 2px 8px rgba(26, 35, 50, 0.15) !important;
	transition: all 0.25s cubic-bezier(0.2, 0.9, 0.3, 1) !important;
}
.tr-cta-button:hover,
.wp-block-read-more.tr-cta-button:hover {
	transform: translateY(-1px) !important;
	box-shadow: 0 8px 20px rgba(26, 35, 50, 0.25) !important;
}

/* ===== 10. Reading time badge: gradient ===== */

.tr-reading-time {
	background: linear-gradient(135deg,
		rgba(36, 122, 118, 0.08) 0%,
		rgba(31, 58, 95, 0.06) 100%) !important;
	border: 1px solid rgba(36, 122, 118, 0.2) !important;
	color: var(--wp--preset--color--tr-primary) !important;
}

/* ===== 11. TOC: editorial 感強化 ===== */

.tr-toc {
	background: linear-gradient(180deg,
		var(--wp--preset--color--tr-surface-soft) 0%,
		var(--wp--preset--color--tr-surface) 100%) !important;
	box-shadow: 0 2px 8px rgba(26, 35, 50, 0.04);
}
.tr-toc-title {
	display: flex !important;
	align-items: center;
	gap: 0.5rem;
}
.tr-toc-title::before {
	content: "";
	width: 16px;
	height: 2px;
	background: var(--wp--preset--color--tr-accent);
}

/* TOC 内リンクの underline animation */
.tr-toc a {
	background-image: linear-gradient(currentColor, currentColor);
	background-position: 0 100%;
	background-repeat: no-repeat;
	background-size: 0 1px;
	transition: background-size 0.25s ease, color 0.2s ease;
}
.tr-toc a:hover {
	background-size: 100% 1px;
	color: var(--wp--preset--color--tr-accent);
}

/* ===== 12. Author card: gradient accent ===== */

.tr-author-card {
	background: linear-gradient(135deg,
		var(--wp--preset--color--tr-surface-soft) 0%,
		var(--wp--preset--color--tr-surface) 100%) !important;
	border-left: 3px solid var(--wp--preset--color--tr-accent);
	box-shadow: 0 2px 8px rgba(26, 35, 50, 0.04);
}

/* ===== 13. Share buttons: smooth hover ===== */

.tr-share-btn {
	transition: all 0.2s cubic-bezier(0.2, 0.9, 0.3, 1) !important;
}
.tr-share-btn:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px rgba(26, 35, 50, 0.12);
}

/* ===== 14. Focus ring with brand color (accessibility) ===== */

a:focus-visible,
button:focus-visible,
.wp-block-button__link:focus-visible {
	outline: 3px solid var(--wp--preset--color--tr-accent);
	outline-offset: 2px;
	border-radius: 2px;
}

/* ===== 15. スムーズスクロール削除 (v0.42)
 * グローバル html { scroll-behavior: smooth } は scroll-to-top や back/forward
 * の遷移にも影響しユーザーが「重い」と感じるケースがあるため削除。
 * 親 Frost テーマも同設定を持つため明示的に auto で上書き。
 * TOC のアンカークリック時のスムーズスクロールが必要なら scroll-ux.js 側で
 * scrollIntoView({behavior:'smooth'}) として明示制御する。 */
html {
	scroll-behavior: auto !important;
}

/* ===== 16. tr-byline と meta の上品な間隔 ===== */

.tr-byline {
	border-top: 1px solid var(--wp--preset--color--tr-rule);
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
	padding: 1.25rem 0 !important;
	margin: 2rem 0 !important;
}

/* ===== 17. tr-article-footer 区切り ===== */

.tr-article-footer {
	border-top: 1px solid var(--wp--preset--color--tr-rule);
	margin-top: 3rem !important;
	padding-top: 2rem !important;
}

/* ================================================================
 * v0.40: 単一記事ページに右サイドバー (Japanese editorial pattern)
 *
 * 構成:
 *   Desktop (≥1024): 本文 720-760px + gap 48px + sidebar 300px
 *   Tablet (768-1023): 本文フル幅、sidebar は本文下にスタック
 *   Mobile (≤767): 本文フル幅、sidebar は本文下にスタック
 *
 * sidebar widget:
 *   - About (著者ミニカード)
 *   - 最新記事
 *   - カテゴリー
 *   - 人気のタグ
 *   - Newsletter mini CTA
 * ================================================================ */

/* v0.43: tr-article-main 内に nest された article-footer と related-stories を
 * column 幅にフィットさせる (theme.json の contentSize 720px の制約を上書き) */
.tr-article-main > .tr-article-footer,
.tr-article-main > .tr-related-stories {
	max-width: 100% !important;
}
.tr-article-main > .tr-article-footer > *,
.tr-article-main > .tr-related-stories > * {
	max-width: 100% !important;
}

/* Desktop layout: CSS Grid 2-col (v0.41: breakpoint 1024 → 1200)
 * 1024-1199 だと本文 568px (約 28 字/行) で日本語が読みづらいため、
 * 1200 以上のみ sidebar 表示。1024-1199 は本文フル幅 + sidebar 下にスタック。
 */
@media (min-width: 1200px) {
	.tr-article-layout {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) 300px;
		column-gap: 48px;
		max-width: 1100px !important;
		margin-left: auto !important;
		margin-right: auto !important;
	}
	.tr-article-layout > .tr-article-main,
	.tr-article-layout > .tr-article-sidebar {
		min-width: 0;
	}
	/* 本文を column 幅にフィット (post-content の v0.39 920px 上限を解除) */
	.tr-article-layout .tr-article-main .wp-block-post-content,
	.tr-article-layout .tr-article-main .wp-block-post-content .tr-toc,
	.tr-article-layout .tr-article-main .wp-block-post-content .tr-reading-time {
		max-width: 100% !important;
	}
	/* article 外側 wrapper 設定はクリア (grid が直接 layout) */
	main article > .tr-article-layout {
		max-width: none !important;
	}
	/* sidebar (v0.42: sticky 解除、自然な flow で grid 上端揃え)
	 * widgets が短い場合、その下は予約された空きスペースとして
	 * 本文の高さに合わせて grid row が広がる。本文 (post-content) の
	 * 直後の article footer まで右側スペースを reserved 状態に保つ */
	.tr-article-sidebar {
		align-self: start;
	}
}

/* Tablet & Mobile: stack 本文の下に (≤1199) */
@media (max-width: 1199px) {
	.tr-article-layout {
		display: block;
	}
	.tr-article-sidebar {
		margin-top: 3rem;
		padding-top: 2rem;
		border-top: 1px solid var(--wp--preset--color--tr-rule);
	}
	/* mobile/tablet 下にスタックされる場合は sidebar Newsletter mini を非表示
	 * (本体 Newsletter section が直後にあり重複するため) */
	.tr-sb-newsletter {
		display: none !important;
	}
}

/* v0.42: footer の Author card は復活
 * ユーザー意図で「編集者情報エリア」を sidebar 終了の目印にしたいため、
 * article footer の Author card は全ビューポートで表示する */

/* ===== サイドバー widget 共通スタイル ===== */

.tr-article-sidebar {
	font-size: 0.875rem;
}

.tr-sb-widget {
	margin-bottom: 2rem;
}
.tr-sb-widget:last-child {
	margin-bottom: 0;
}

.tr-sb-title {
	color: var(--wp--preset--color--tr-muted);
	border-bottom: 2px solid var(--wp--preset--color--tr-accent);
	padding-bottom: 0.5rem;
	display: inline-block;
}

/* ===== About widget (著者ミニカード) ===== */

.tr-sb-about .tr-sb-author-row {
	align-items: flex-start;
}
.tr-sb-about .wp-block-avatar img,
.tr-sb-author-avatar img {
	border-radius: 50% !important;
	width: 56px !important;
	height: 56px !important;
	object-fit: cover;
}
.tr-sb-about .tr-sb-author-bio {
	color: var(--wp--preset--color--tr-ink-soft);
	border-left: 2px solid var(--wp--preset--color--tr-rule);
	padding-left: 0.85rem;
	margin-top: 0.85rem !important;
}

/* ===== 最新記事 widget ===== */

.tr-sb-recent-list {
	list-style: none;
	padding: 0;
}
.tr-sb-recent-item {
	gap: 0.85rem !important;
	padding: 0.5rem 0;
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
	transition: background 0.2s ease;
}
.tr-sb-recent-item:first-child {
	padding-top: 0;
}
.tr-sb-recent-item:last-child {
	border-bottom: none;
	padding-bottom: 0;
}
.tr-sb-recent-item:hover {
	background: var(--wp--preset--color--tr-surface-soft);
}
.tr-sb-recent-item .wp-block-post-featured-image {
	flex-shrink: 0;
	width: 68px;
	height: 68px;
}
.tr-sb-recent-item .wp-block-post-featured-image img {
	width: 68px !important;
	height: 68px !important;
	object-fit: cover;
	border-radius: 3px;
	transition: transform 0.4s ease;
}
.tr-sb-recent-item:hover .wp-block-post-featured-image img {
	transform: scale(1.04);
}
.tr-sb-recent-item .wp-block-post-title a {
	color: var(--wp--preset--color--tr-ink);
	text-decoration: none;
	transition: color 0.2s ease;
}
.tr-sb-recent-item .wp-block-post-title a:hover {
	color: var(--wp--preset--color--tr-accent);
}

/* ===== カテゴリー widget ===== */

.tr-sb-categories .wp-block-categories,
.tr-sb-category-list {
	list-style: none;
	padding: 0;
	margin: 0;
}
.tr-sb-categories li {
	padding: 0.5rem 0;
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
}
.tr-sb-categories li:last-child {
	border-bottom: none;
}
.tr-sb-categories li a {
	color: var(--wp--preset--color--tr-ink);
	text-decoration: none;
	font-weight: 500;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	transition: color 0.2s ease;
}
.tr-sb-categories li a::before {
	content: "→";
	color: var(--wp--preset--color--tr-accent);
	font-size: 0.85em;
	transition: transform 0.2s ease;
}
.tr-sb-categories li a:hover {
	color: var(--wp--preset--color--tr-accent);
}
.tr-sb-categories li a:hover::before {
	transform: translateX(2px);
}

/* ===== タグクラウド widget ===== */

.tr-sb-tag-cloud,
.tr-sb-tags .wp-block-tag-cloud {
	line-height: 2;
}
.tr-sb-tag-cloud a,
.tr-sb-tags .wp-block-tag-cloud a {
	display: inline-block;
	background: var(--wp--preset--color--tr-surface-soft);
	color: var(--wp--preset--color--tr-ink-soft) !important;
	padding: 0.25rem 0.7rem;
	margin: 0.15rem 0.15rem 0.15rem 0;
	border-radius: 12px;
	font-size: 0.78rem !important;
	text-decoration: none;
	transition: all 0.2s ease;
}
.tr-sb-tag-cloud a:hover,
.tr-sb-tags .wp-block-tag-cloud a:hover {
	background: var(--wp--preset--color--tr-accent);
	color: var(--wp--preset--color--tr-white) !important;
	transform: translateY(-1px);
}

/* ===== Newsletter mini CTA widget ===== */

.tr-sb-newsletter {
	background: linear-gradient(135deg,
		var(--wp--preset--color--tr-primary) 0%,
		#152840 100%) !important;
	color: var(--wp--preset--color--tr-white) !important;
	box-shadow: 0 4px 16px rgba(31, 58, 95, 0.2);
}
.tr-sb-newsletter .tr-sb-nl-eyebrow {
	color: var(--wp--preset--color--tr-gold) !important;
}
.tr-sb-newsletter .tr-sb-nl-text {
	color: var(--wp--preset--color--tr-white) !important;
	opacity: 0.92;
}
.tr-sb-newsletter .wp-block-button__link {
	background: var(--wp--preset--color--tr-accent) !important;
	color: var(--wp--preset--color--tr-white) !important;
	font-weight: 700 !important;
	letter-spacing: 0.05em !important;
	padding: 0.55rem 1.1rem !important;
	transition: all 0.2s ease !important;
}
.tr-sb-newsletter .wp-block-button__link:hover {
	transform: translateY(-1px);
	box-shadow: 0 4px 12px rgba(36, 122, 118, 0.3);
}
}

/* ═══════════════════════════════════════════════════════════
   検討ファネル UI  （(a)次の一歩 / (b)決める前 / (c)ルーター）
   ═══════════════════════════════════════════════════════════ */

/* (a) 記事末「次の一歩」 */
.tr-next-step {
	margin: 2.5rem 0 1rem;
	padding: 1.25rem 1.25rem 1.4rem;
	background: var(--wp--preset--color--tr-surface-soft);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-left: 4px solid var(--wp--preset--color--tr-accent);
	border-radius: 10px;
}
.tr-next-step-title {
	margin: 0 0 0.9rem;
	font-weight: 700;
	font-size: 1.05rem;
	color: var(--wp--preset--color--tr-primary);
}
.tr-next-step-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 0.7rem;
}
.tr-next-step-card {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	padding: 0.85rem 0.95rem;
	background: var(--wp--preset--color--tr-surface);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-radius: 8px;
	text-decoration: none;
	transition: border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}
.tr-next-step-card:hover {
	border-color: var(--wp--preset--color--tr-accent);
	transform: translateY(-2px);
	box-shadow: 0 6px 16px rgba(31, 58, 95, 0.08);
}
.tr-next-step-stage {
	font-size: 0.78rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-accent);
	letter-spacing: 0.02em;
}
.tr-next-step-label {
	font-size: 0.95rem;
	color: var(--wp--preset--color--tr-ink);
	line-height: 1.5;
}

/* (b) 決める前ブロック */
.tr-decide {
	margin: 0 0 2rem;
	padding: 1.5rem 1.5rem 1.6rem;
	background: var(--wp--preset--color--tr-surface-soft);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-radius: 12px;
}
.tr-decide-eyebrow {
	margin: 0 0 0.25rem;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--tr-accent);
}
.tr-decide-title {
	margin: 0 0 0.35rem;
	font-size: 1.5rem;
	color: var(--wp--preset--color--tr-primary);
}
.tr-decide-tagline {
	margin: 0 0 1.1rem;
	font-size: 1.02rem;
	color: var(--wp--preset--color--tr-ink-soft);
}
.tr-decide-facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: 0.6rem 1.2rem;
	margin: 0 0 1.1rem;
}
.tr-decide-fact {
	display: flex;
	gap: 0.6rem;
	padding: 0.5rem 0;
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
}
.tr-decide-fact dt {
	flex: 0 0 6.5em;
	font-weight: 700;
	font-size: 0.88rem;
	color: var(--wp--preset--color--tr-primary);
}
.tr-decide-fact dd {
	margin: 0;
	font-size: 0.92rem;
	color: var(--wp--preset--color--tr-ink);
	line-height: 1.55;
}
.tr-decide-links {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem 0.9rem;
}
.tr-decide-links a {
	font-weight: 600;
	font-size: 0.92rem;
	color: var(--wp--preset--color--tr-accent);
	text-decoration: none;
}
.tr-decide-links a:hover {
	text-decoration: underline;
}

/* (c) ファネル・ルーター */
.tr-funnel-router {
	margin: 1.5rem 0;
}
.tr-funnel-router-title {
	margin: 0 0 1rem;
	text-align: center;
	font-weight: 700;
	font-size: 1.15rem;
	color: var(--wp--preset--color--tr-primary);
}
.tr-funnel-router-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 1rem;
}
.tr-funnel-card {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	padding: 1.4rem 1.2rem;
	background: var(--wp--preset--color--tr-surface);
	border: 1px solid var(--wp--preset--color--tr-rule);
	border-top: 3px solid var(--wp--preset--color--tr-accent);
	border-radius: 12px;
	text-decoration: none;
	transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.tr-funnel-card:hover {
	transform: translateY(-3px);
	box-shadow: 0 10px 24px rgba(31, 58, 95, 0.12);
}
.tr-funnel-card-q {
	font-size: 0.82rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-muted);
}
.tr-funnel-card-a {
	font-size: 1.18rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary);
	line-height: 1.4;
}
.tr-funnel-card-sub {
	font-size: 0.85rem;
	color: var(--wp--preset--color--tr-ink-soft);
}
@media (max-width: 600px) {
	.tr-decide-fact { flex-direction: column; gap: 0.15rem; }
	.tr-decide-fact dt { flex-basis: auto; }
}

/* ============================================================================
   [tr_world_map] — chic zoomable Japan-centered Mercator world map
   SVG asset (two layers) is fetched + injected by assets/tr-world-map.js.
   ========================================================================== */
.tr-wm{
  /* アクセントはサイトトークンに連動（パレット改定で地図も追従）。他はダーク地図専用値。
     gold-bright = tr-gold #75B5B0 の暗背景用明化版（同色相175°・別トークンなので別名） */
  --tr-wm-accent:var(--wp--preset--color--tr-accent, #247A76); --tr-wm-accent-bright:#43B9B2;
  --tr-wm-gold-bright:#9FC9C5;
  --tr-wm-ocean-1:#0B1220; --tr-wm-ocean-2:#0E1A2E; --tr-wm-ocean-3:#102742;
  --tr-wm-land:#243246; --tr-wm-land-edge:#0E1A2E; --tr-wm-land-dim:#1B2638;
  --tr-wm-land-active:var(--wp--preset--color--tr-accent, #247A76); --tr-wm-label:#E8EEF2;
  --tr-wm-muted:#8E9CB1; /* 最悪背景(陸#243246)でも4.66:1=AA。白ラベル11:1との階層は維持 */
  /* match the surrounding content width (mirrors .tr-category-grid): fill the section,
     overriding WordPress' constrained content-size cap + auto margins. */
  max-width:100% !important;
  margin:var(--wp--preset--spacing--md, 24px) 0 var(--wp--preset--spacing--lg, 40px) !important;
}
.tr-wm *{box-sizing:border-box;}
.tr-wm-stage{position:relative;border-radius:6px;overflow:hidden;aspect-ratio:840/390;
  background:radial-gradient(120% 90% at 50% 8%, var(--tr-wm-ocean-3) 0%, var(--tr-wm-ocean-2) 45%, var(--tr-wm-ocean-1) 100%);
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset, 0 30px 80px -40px rgba(0,0,0,.9);
  border:1px solid rgba(159,201,197,.14);}
.tr-wm-stage::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(rgba(159,201,197,.05) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(159,201,197,.05) 1px,transparent 1px);
  background-size:7.69% 12.5%;}
.tr-wm-svg{display:block;width:100%;height:auto;}
.tr-wm-svg path{fill:var(--tr-wm-land);stroke:var(--tr-wm-land-edge);stroke-width:.35;
  vector-effect:non-scaling-stroke;transition:fill .35s ease;}
.tr-wm-svg .is-region.on path{fill:#476384;stroke:#5C7E89;} /* 対通常陸2.09:1 — 発光を知覚可能に */
.tr-wm-svg .is-country path{fill:#476384;stroke:#5C7E89;} /* ハブ国もエリア表示で地域ブロブと同色に点灯（暗い抜け防止）。ズームでは is-target が accent で上書き */
.tr-wm-stage.zoomed .tr-wm-svg .is-target{cursor:pointer;} /* 選択可能なのはズームした地域の特集国(is-target)だけ */
.tr-wm-stage.zoomed .tr-wm-svg path{fill:var(--tr-wm-land-dim);}
/* ズーム中はズームした地域のメンバーだけ点灯する（is-lit/is-target を JS が動的付与）。
   他地域のメンバー(is-region)は上の dim のまま＝消灯する。 */
.tr-wm-stage.zoomed .tr-wm-svg .is-lit path{fill:#3A4F6B;}
/* アクセントはズームした地域の特集国だけ（is-target を動的付与） */
.tr-wm-stage.zoomed .tr-wm-svg .is-target path{fill:var(--tr-wm-land-active);stroke:#0B1A2A;stroke-width:.4;}
.tr-wm-stage.zoomed .tr-wm-svg .is-target:hover path{fill:var(--tr-wm-accent-bright);}
.tr-wm-labels{position:absolute;inset:0;pointer-events:none;}
.tr-wm-label{position:absolute;transform:translate(-3px,-50%);pointer-events:auto;
  display:flex;align-items:center;gap:7px;white-space:nowrap;cursor:pointer;
  opacity:0;transition:opacity .4s ease;}
/* 非表示ラベル（エリア表示時の国ラベル等）はクリック/フォーカス不可にする
   （opacity:0 のままだと見えないのに選択できてしまうため） */
.tr-wm-label:not(.show){pointer-events:none;}
.tr-wm-label.side-left{transform:translate(calc(-100% + 3px),-50%);}
.tr-wm-label.side-left .dot,.tr-wm-label.side-left .pin{order:9;}
.tr-wm-label.show{opacity:1;}
.tr-wm-label .dot{width:6px;height:6px;border-radius:50%;background:var(--tr-wm-gold-bright);
  box-shadow:0 0 0 4px rgba(159,201,197,.14);flex:0 0 auto;transition:all .25s ease;}
.tr-wm-label .txt{font-size:13px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--tr-wm-label);text-shadow:0 1px 6px rgba(0,0,0,.65);}
.tr-wm-label .en{font-size:10px;letter-spacing:.22em;color:var(--tr-wm-muted);margin-left:6px;}
.tr-wm-label.is-active .dot{background:var(--tr-wm-accent-bright);box-shadow:0 0 0 5px rgba(67,185,178,.22);}
.tr-wm-label:hover .txt{color:#fff;}
.tr-wm-label:hover .dot{transform:scale(1.25);}
.tr-wm-label.is-locked{cursor:default;}
.tr-wm-label.is-locked .txt{color:var(--tr-wm-muted);}
.tr-wm-label.is-locked .dot{background:#46586E;box-shadow:0 0 0 3px rgba(70,88,110,.18);}
.tr-wm-label .tag{font-size:10px;letter-spacing:.18em;color:var(--tr-wm-muted);border:1px solid #425678;
  border-radius:2px;padding:1px 5px;text-transform:uppercase;}
.tr-wm-label.is-home{cursor:default;}
.tr-wm-label.is-home .txt{color:var(--tr-wm-gold-bright);font-weight:800;letter-spacing:.18em;}
.tr-wm-label.is-home .pin{width:7px;height:7px;background:var(--tr-wm-gold-bright);transform:rotate(45deg);
  box-shadow:0 0 0 4px rgba(159,201,197,.16);flex:0 0 auto;}
.tr-wm-clabel .txt{font-size:12px;transform:translateY(var(--tr-dy,0px));position:relative;} /* デクラッター: ドットは国に残し、テキストのみ縦に逃がす */
@media (hover: none){ .tr-wm-card{display:none!important;} } /* タッチ端末ではホバーカードを出さない */
/* モバイル: 密集する国ラベルのタップ領域を見た目のテキスト位置に沿って拡大（指で選びやすく） */
@media (max-width: 781px){ .tr-wm-clabel .txt::after{content:'';position:absolute;top:-5px;bottom:-5px;left:-8px;right:-8px;} }
.tr-wm-back{position:absolute;top:14px;left:16px;z-index:5;display:inline-flex;align-items:center;gap:8px;
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:700;color:var(--tr-wm-gold-bright);
  background:rgba(10,16,24,.6);border:1px solid rgba(159,201,197,.2);border-radius:3px;
  padding:8px 12px;cursor:pointer;opacity:0;transform:translateY(-4px);pointer-events:none;
  transition:opacity .35s ease,transform .35s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
.tr-wm-back.show{opacity:1;transform:none;pointer-events:auto;}
.tr-wm-back:hover{color:#fff;border-color:rgba(159,201,197,.5);}
.tr-wm-caption{position:absolute;right:16px;bottom:14px;z-index:5;font-size:11px;letter-spacing:.04em;
  color:var(--tr-wm-muted);text-align:right;max-width:60%;margin:0;}
.tr-wm-caption b{color:var(--tr-wm-label);font-weight:700;}
.tr-wm-toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(20px);
  background:#10243A;border:1px solid var(--tr-wm-accent);color:#fff;padding:12px 20px;border-radius:4px;
  font-size:13px;letter-spacing:.02em;opacity:0;pointer-events:none;transition:all .3s ease;z-index:50;
  box-shadow:0 20px 50px -20px rgba(0,0,0,.8);}
.tr-wm-toast.show{opacity:1;transform:translateX(-50%);}
@media (max-width:700px){
  /* mobile: keep the MAP (like 地球の歩き方). Full-bleed for max size + declutter labels
     (drop the EN caption and 準備中 tags, shrink) so the pins don't collide. */
  .tr-wm{width:100vw !important;max-width:100vw !important;
    margin:var(--wp--preset--spacing--md, 24px) calc(50% - 50vw) var(--wp--preset--spacing--lg, 40px) !important;}
  .tr-wm-stage{border-radius:0;}
  .tr-wm-label .en,.tr-wm-label .tag{display:none;}
  .tr-wm-label .txt{font-size:10px;letter-spacing:.01em;}
  .tr-wm-label .dot,.tr-wm-label .pin{width:5px;height:5px;box-shadow:0 0 0 3px rgba(159,201,197,.14);}
  .tr-wm-back{font-size:10px;padding:6px 9px;top:8px;left:8px;}
  .tr-wm-caption{display:none;} /* long caption collides with オセアニア; accent dot already signals active */
}

/* ============================================================
 * v0.4.0: P0 ビジュアル強化（2026-07 デザイン改善提案の実装）
 *   1) .tr-section-explore — 紺の没入セクション（HOME「国から探す」）
 *   2) .tr-photo-grid / .tr-photo-card — 写真カード（国・都市共通）
 *   3) 最新記事フィーチャーカード（グリッド 1 件目を 2×2 大型化）
 *   4) カテゴリカードの線画 SVG アイコン（絵文字廃止）
 * ============================================================ */

/* ─── 1) 紺の没入セクション ───
 * 世界地図の海色 (#0E1626) と同一の地。ヘッダは左揃え白抜きで
 * 紙セクションの中央揃えと緩急をつくる。constrained layout の
 * contentSize 720 + auto margin を打ち消して wide 左端に揃える */
.tr-section-explore .tr-explore-eyebrow,
.tr-section-explore .tr-explore-title,
.tr-section-explore .tr-explore-lead {
	max-width: 100% !important;
	margin-left: 0 !important;
	margin-right: auto !important;
	text-align: left;
}
.tr-section-explore .tr-explore-lead {
	color: #A9B6C6;
}

/* ─── 2) 写真カード（国・都市共通） ───
 * wp:html 直書きのため constrained layout の幅キャップも解除。
 * --card-photo 未指定カードは紺グラデのフォールバック（写真未着の都市） */
.tr-photo-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--md, 24px);
	width: 100%;
	max-width: 100% !important;
	margin: var(--wp--preset--spacing--sm, 16px) 0 0 !important;
}
a.tr-photo-card {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	min-height: 210px;
	padding: 1.15rem 1.2rem 1.05rem;
	border-radius: 6px;
	overflow: hidden;
	text-decoration: none;
	background-image:
		linear-gradient(180deg, rgba(14, 22, 38, 0.05) 30%, rgba(14, 22, 38, 0.55) 60%, rgba(14, 22, 38, 0.90) 100%),
		var(--card-photo, linear-gradient(150deg, #24466E 0%, #16294A 55%, #0E1626 100%));
	background-size: cover;
	background-position: center;
	box-shadow: 0 3px 12px rgba(4, 10, 22, 0.30);
	transition: transform 0.3s cubic-bezier(0.2, 0.9, 0.3, 1),
	            box-shadow 0.3s cubic-bezier(0.2, 0.9, 0.3, 1);
}
a.tr-photo-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 16px 36px rgba(4, 10, 22, 0.45);
}
a.tr-photo-card:focus-visible {
	outline: 2px solid var(--wp--preset--color--tr-accent, #247A76);
	outline-offset: 2px;
}
/* 既定は a.tr-photo-card (0,1,1) なので、上書きするモディファイアも a. を付けて詳細度で上回る。
 * a. なしだと (0,1,0) で負け、min-height が黙って効かない（2026-07-09 に判明・実測 210px）。 */
a.tr-photo-card--tall {
	min-height: 300px;
}
.tr-photo-card .tr-pc-eyebrow {
	display: block;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	/* ★写真の上に載る文字。色のコントラストは写真次第で保証できないので、
	   「明るい色＋濃い影」で背景に依らず読めるようにする。
	   #9FC9C5 は明るい写真（グエル公園・晴天の空）の上で沈んでいた実測がある。 */
	color: #C8E4E1;
	margin-bottom: 0.4rem;
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.75), 0 0 10px rgba(0, 0, 0, 0.45);
}
.tr-photo-card .tr-pc-title {
	display: block;
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.3rem;
	font-weight: 700;
	line-height: 1.3;
	color: #FFFFFF;
	margin-bottom: 0.3rem;
	text-shadow: 0 1px 4px rgba(0, 0, 0, 0.45);
}
.tr-photo-card .tr-pc-desc {
	display: block;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.8rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.88);
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
}
@media (max-width: 781px) {
	.tr-photo-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: var(--wp--preset--spacing--sm, 16px);
	}
	.tr-photo-grid--countries {
		grid-template-columns: 1fr;
	}
	a.tr-photo-card--tall {
		min-height: 220px;
	}
}

/* ─── 3) 最新記事フィーチャーカード ───
 * グリッド 1 件目を 2 列 × 2 行に拡大し、写真全面 + 下部オーバーレイの
 * 編集ヒエラルキー（AFAR / Lonely Planet 流）をつくる。DOM は共通のまま
 * CSS のみで変形（post-template の出力順: figure → terms → title → excerpt → date） */
.tr-article-grid .wp-block-post-template > li:first-child {
	grid-column: span 2;
	grid-row: span 2;
}
/* 記事が 1 件しかない場合（1 列グリッド）はスパンを解除（暗黙列の発生防止） */
.tr-article-grid .wp-block-post-template:has(> *:nth-child(1):last-child) > li:first-child {
	grid-column: auto;
	grid-row: auto;
}
.tr-article-grid .wp-block-post-template > li:first-child .tr-article-card {
	position: relative;
	justify-content: flex-end;
	min-height: 520px;
	height: 100%;
	padding: var(--wp--preset--spacing--md, 24px);
}
.tr-article-grid .wp-block-post-template > li:first-child .wp-block-post-featured-image {
	position: absolute;
	inset: 0;
	width: 100% !important;
	max-width: none !important; /* constrained layout の 720px キャップ解除（カード全幅に引き伸ばす） */
	height: 100% !important;
	aspect-ratio: auto !important;
	margin: 0 !important;
	border-radius: 0;
}
.tr-article-grid .wp-block-post-template > li:first-child .wp-block-post-featured-image a,
.tr-article-grid .wp-block-post-template > li:first-child .wp-block-post-featured-image img {
	display: block;
	width: 100%;
	height: 100% !important;
	object-fit: cover;
}
.tr-article-grid .wp-block-post-template > li:first-child .wp-block-post-featured-image::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(14, 22, 38, 0) 38%, rgba(14, 22, 38, 0.42) 68%, rgba(14, 22, 38, 0.88) 100%);
}
.tr-article-grid .wp-block-post-template > li:first-child .tr-article-card > *:not(.wp-block-post-featured-image) {
	position: relative;
	z-index: 2;
	max-width: 100% !important; /* constrained layout の 720px 中央寄せ箱を解除（テキストが写真外へはみ出す崩れ防止） */
	margin-left: 0 !important;
	margin-right: 0 !important;
}
.tr-article-grid .wp-block-post-template > li:first-child .tr-card-eyebrow {
	width: fit-content;
	background: var(--wp--preset--color--tr-accent, #247A76);
	padding: 0.4em 0.8em;
	border-radius: 2px;
}
.tr-article-grid .wp-block-post-template > li:first-child .tr-card-eyebrow a {
	color: #FFFFFF !important;
}
.tr-article-grid .wp-block-post-template > li:first-child .tr-card-title {
	font-size: clamp(1.5rem, 1.15rem + 1.4vw, 2rem) !important;
	line-height: 1.3 !important;
}
.tr-article-grid .wp-block-post-template > li:first-child .tr-card-title a {
	color: #FFFFFF !important;
	text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
}
.tr-article-grid .wp-block-post-template > li:first-child .tr-card-excerpt p {
	color: rgba(255, 255, 255, 0.88) !important;
}
.tr-article-grid .wp-block-post-template > li:first-child .tr-card-date {
	color: rgba(255, 255, 255, 0.72) !important;
}
@media (max-width: 781px) {
	.tr-article-grid .wp-block-post-template > li:first-child {
		grid-column: span 2;
		grid-row: auto;
	}
	.tr-article-grid .wp-block-post-template > li:first-child .tr-article-card {
		min-height: 360px;
	}
}

/* ─── 4) カテゴリカードの線画 SVG アイコン（絵文字廃止） ─── */
.tr-category-card .tr-cat-icon {
	display: block;
	margin-bottom: 0.6rem;
}
.tr-category-card.tr-category-primary .tr-cat-icon { color: var(--wp--preset--color--tr-primary, #1F3A5F); }
.tr-category-card.tr-category-accent .tr-cat-icon { color: var(--wp--preset--color--tr-accent, #247A76); }
.tr-category-card.tr-category-gold .tr-cat-icon { color: #4E938E; }

/* ============================================================
 * v0.5.0: HOME ヒーローカルーセル（最新 5 記事の横スライド）
 *
 * home.html の queryId=1 (.tr-hero-carousel) 専用。
 * post-template の <ul> を scroll-snap の横スクロールトラックにし、
 * <li>（cover + deck の 1 記事分）を 1 スライド = 100vw にする。
 *
 * JS (assets/hero-carousel.js) は矢印・ドットの注入と snap 位置の
 * 同期のみ。JS 無効時も「横スワイプできるトラック」として機能する
 * プログレッシブエンハンスメント構成。自動送りはしない
 * （ヒーロー写真をじっくり見せる設計意図のため）。
 * ============================================================ */

/* ナビ (矢印/ドット) の absolute 基準 */
.tr-hero-carousel {
	position: relative;
}

/* トラック: viewport 幅いっぱいに breakout して横スクロール化。
 * has-global-padding の左右 30px はスライド幅の計算を狂わせるので撤廃 */
.tr-hero-carousel .wp-block-post-template {
	display: flex !important;
	flex-wrap: nowrap;
	width: 100vw !important;
	max-width: 100vw !important;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	overscroll-behavior-x: contain;
}

/* JS 有効時のみスクロールバーを消す（無効時は操作アフォーダンスとして残す） */
.tr-hero-carousel.tr-carousel-ready .wp-block-post-template {
	scrollbar-width: none;
}
.tr-hero-carousel.tr-carousel-ready .wp-block-post-template::-webkit-scrollbar {
	display: none;
}

/* スライド: constrained layout の max-width:720 + margin:auto を解除し
 * 1 スライド = 100vw に固定。column flex にして deck を下方向に伸ばし、
 * 抜粋の長短差によるスライド間の高さ揺れを吸収する */
.tr-hero-carousel .wp-block-post-template > li,
.tr-hero-carousel .wp-block-post-template > .wp-block-post {
	flex: 0 0 100vw;
	width: 100vw;
	max-width: none !important;
	margin: 0 !important;
	display: flex;
	flex-direction: column;
	scroll-snap-align: start;
	scroll-snap-stop: always;
}
.tr-hero-carousel .wp-block-post-template > li > .tr-hero-deck,
.tr-hero-carousel .wp-block-post-template > .wp-block-post > .tr-hero-deck {
	flex: 1 1 auto;
}

/* スライド内の cover / deck: 既存の 100vw breakout (margin: calc(50%-50vw))
 * は「縦積み時に li から viewport 幅へ脱出する」ための補正。カルーセルでは
 * li 自体が 100vw なので解除し、li にぴったり収める（デスクトップ +30px /
 * モバイル +16px の補正ルールより高い詳細度で上書き） */
.tr-hero-carousel .wp-block-post-template > li .wp-block-cover.alignfull,
.tr-hero-carousel .wp-block-post-template > .wp-block-post .wp-block-cover.alignfull,
.tr-hero-carousel .wp-block-post-template > li .tr-hero-deck,
.tr-hero-carousel .wp-block-post-template > .wp-block-post .tr-hero-deck {
	width: 100% !important;
	max-width: 100% !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* ─── 矢印・ドットの位置は cover 高から導く ───
 * ★以前は cover 高を変えるたびに矢印(37.5vh = 75vh の半分)とドット(70vh - 2.25rem)が
 * 取り残され、実害が出ていた。cover を 62vh / モバイル 58vh に下げた時点で
 * モバイルのドットは写真の 81px 下＝白いパネルの上に落ち、白いドットが完全に不可視だった。
 * 高さの単一ソースを変数にして、矢印もドットもここから計算する。
 * ⚠ デスクトップ値は home.html の cover インライン min-height と一致させること
 *   （インラインスタイルは CSS より強いので、cover 本体はテンプレート側が正）。 */
.tr-hero-carousel {
	--tr-hero-h: 62vh;
}

/* ─── 矢印（JS 注入。デスクトップのみ。位置は cover 高の中央） ─── */
.tr-carousel-arrow {
	position: absolute;
	top: calc(var(--tr-hero-h) / 2);
	transform: translateY(-50%);
	z-index: 20;
	width: 48px;
	height: 48px;
	display: flex;
	align-items: center;
	justify-content: center;
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 50%;
	background: rgba(14, 22, 38, 0.45);
	color: #fff;
	cursor: pointer;
	padding: 0;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	transition: background-color 0.2s ease, opacity 0.2s ease;
}
.tr-carousel-arrow:hover {
	background: rgba(14, 22, 38, 0.8);
}
.tr-carousel-arrow:focus-visible {
	outline: 2px solid var(--wp--preset--color--tr-accent, #247A76);
	outline-offset: 2px;
}
.tr-carousel-arrow[disabled] {
	opacity: 0.3;
	cursor: default;
	pointer-events: none;
}
.tr-carousel-arrow--prev { left: 1.25rem; }
.tr-carousel-arrow--next { right: 1.25rem; }
.tr-carousel-arrow svg { display: block; }

/* ─── ドット（JS 注入。写真下端の少し上・中央） ─── */
.tr-carousel-dots {
	position: absolute;
	top: calc(var(--tr-hero-h) - 3.25rem);
	left: 50%;
	transform: translateX(-50%);
	z-index: 20;
	display: flex;
	gap: 0.25rem;
}
/* ドット本体 9px + 透明 padding でタップ領域 44px（WCAG 2.2 Target Size 最小）を確保 */
.tr-carousel-dot {
	box-sizing: content-box;
	width: 10px;
	height: 10px;
	padding: 17px;
	margin: -8px 0; /* 44px の当たりは保ちつつ、見た目の帯は 28px に収める */
	border: none;
	border-radius: 50%;
	background-color: rgba(255, 255, 255, 0.45);
	background-clip: content-box;
	cursor: pointer;
	transition: background-color 0.2s ease;
}
.tr-carousel-dot:hover {
	background-color: rgba(255, 255, 255, 0.75);
	background-clip: content-box;
}
.tr-carousel-dot:focus-visible {
	outline: 2px solid rgba(255, 255, 255, 0.9);
	outline-offset: -4px;
}
.tr-carousel-dot[aria-current="true"] {
	background-color: #fff;
	background-clip: content-box;
}

/* モバイル: 矢印なし（スワイプ + ドット）。cover 高だけ差し替えればドットは追従する */
@media (max-width: 781px) {
	.tr-hero-carousel {
		--tr-hero-h: 58vh;
	}
	.tr-carousel-arrow {
		display: none;
	}
}

/* ============================================================
 * 国チョーザー（geographic「行き先を選ぶ」意思決定モジュール）
 * v0.5.22: カテゴリ着地を「記事一覧」から「属性で絞る意思決定面」へ。
 *   カードは .tr-photo-card を継承し、日数/ベスト時期/予算/空路/初心者度チップと
 *   テーマタグを付与。絞り込みは assets/country-chooser.js（外部 enqueue）で処理する
 *   （LiteSpeed の JS 最適化下では shortcode 内の inline script が実行されないため）。
 * ============================================================ */
.tr-country-chooser {
	width: 100%;
}
/* モバイルは絞り込みを折り畳み。デスクトップは summary を隠して常時展開（open 固定） */
.tr-cc-details {
	margin-bottom: var(--wp--preset--spacing--sm, 16px);
}
.tr-cc-summary {
	cursor: pointer;
	list-style: none;
	padding: 0.5rem 0;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-cc-summary::-webkit-details-marker {
	display: none;
}
.tr-cc-summary::before {
	content: "▾ ";
}
.tr-cc-details:not([open]) .tr-cc-summary::before {
	content: "▸ ";
}
@media (min-width: 782px) {
	.tr-cc-summary {
		display: none;
	}
}
.tr-cc-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
	margin-bottom: var(--wp--preset--spacing--md, 24px);
}
.tr-cc-fgroup {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
}
.tr-cc-fgroup--toggles {
	margin-left: auto;
}
.tr-cc-chipbtn,
.tr-cc-toggle {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.78rem;
	font-weight: 600;
	line-height: 1;
	padding: 0.42rem 0.72rem;
	border-radius: 999px;
	cursor: pointer;
	background: var(--wp--preset--color--tr-surface, #ffffff);
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.tr-cc-chipbtn:hover,
.tr-cc-toggle:hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-cc-chipbtn.is-active,
.tr-cc-toggle.is-active {
	background: var(--wp--preset--color--tr-accent, #247A76);
	color: #ffffff;
	border-color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-cc-sort {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.78rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-cc-sort select {
	font: inherit;
	margin-left: 0.3rem;
	padding: 0.32rem 0.45rem;
	border-radius: 6px;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	background: #ffffff;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-cc-count {
	width: 100%;
	margin: 0;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.75rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}

/* 0 件時の空状態（JS が .is-hidden を付け外し） */
.tr-cc-empty {
	margin: var(--wp--preset--spacing--md, 24px) 0 0;
	padding: var(--wp--preset--spacing--lg, 32px);
	border: 1px dashed var(--wp--preset--color--tr-rule, #d9dee5);
	border-radius: 6px;
	text-align: center;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.85rem;
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
	background: var(--wp--preset--color--tr-surface-soft, #f6f8fa);
}
.tr-cc-empty.is-hidden {
	display: none;
}

/* 明るい写真の上でも eyebrow / タイトルが沈まないよう、情報量の多いカードは
 * オーバーレイを上端から効かせる（.tr-photo-card の既定は上端 0.05 で薄い）。
 * 既定は a.tr-photo-card (0,1,1) なので、こちらも a. を付けて詳細度で上回る必要がある。
 * var(--card-photo) のフォールバック（紺グラデ）は .tr-photo-card と揃える。 */
a.tr-country-card,
a.tr-itin-card {
	background-image:
		linear-gradient(180deg, rgba(14, 22, 38, 0.28) 0%, rgba(14, 22, 38, 0.55) 45%, rgba(14, 22, 38, 0.92) 100%),
		var(--card-photo, linear-gradient(150deg, #24466E 0%, #16294A 55%, #0E1626 100%));
}
.tr-country-card .tr-pc-eyebrow,
.tr-itin-card .tr-pc-eyebrow {
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.75), 0 0 10px rgba(0, 0, 0, 0.45);
}

/* カード拡張（.tr-photo-card を土台に、意思決定属性を積む）
 * min-height は a. 付き（背景と同じ理由。詳細度で a.tr-photo-card の 210px に勝つ必要がある） */
a.tr-country-card {
	min-height: 360px;
}
.tr-country-card {
	justify-content: flex-end;
}
.tr-country-card.is-hidden {
	display: none !important;
}
.tr-country-card .tr-cc-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.3rem;
	margin: 0.5rem 0 0.55rem;
}
.tr-country-card .tr-cc-chip {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.68rem;
	font-weight: 600;
	line-height: 1;
	padding: 0.3rem 0.46rem;
	border-radius: 4px;
	background: rgba(255, 255, 255, 0.18);
	color: #ffffff;
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
}
.tr-country-card .tr-cc-level--1 {
	background: rgba(36, 122, 118, 0.9);
}
.tr-country-card .tr-cc-level--2 {
	background: rgba(198, 160, 79, 0.9);
}
.tr-country-card .tr-cc-level--3 {
	background: rgba(180, 90, 70, 0.9);
}
.tr-country-card .tr-cc-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	margin-top: 0.5rem;
}
.tr-country-card .tr-cc-tag {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.66rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: rgba(255, 255, 255, 0.82);
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
}
@media (max-width: 781px) {
	.tr-cc-fgroup--toggles {
		margin-left: 0;
	}
	a.tr-country-card {
		min-height: 320px;
	}
}

/* ─────────────────────────────────────────────────────────
 * テーマハブの意思決定モジュール
 *   1) .tr-theme-match  — 「こんな気分なら → この体験」（[tr_theme_match]）
 *   2) .tr-cc-sig       — 国カード上の代表体験（[tr_theme_countries]）
 * 絞り込み UI とカードは国チョーザー（.tr-country-chooser）をそのまま再利用するので、
 * ここではテーマハブ固有の差分だけを足す。
 * ───────────────────────────────────────────────────────── */
.tr-theme-match {
	margin: var(--wp--preset--spacing--md) 0;
}
.tr-tm-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 1rem;
}
.tr-tm-card {
	display: flex;
	flex-direction: column;
	padding: 1.1rem 1.15rem 0.9rem;
	border: 1px solid rgba(31, 58, 95, 0.14);
	border-left: 3px solid var(--wp--preset--color--tr-accent);
	border-radius: 10px;
	background: #fff;
}
.tr-tm-head {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 0.3rem;
	font-weight: 700;
	font-size: 1rem;
	line-height: 1.4;
	color: var(--wp--preset--color--tr-ink);
}
.tr-tm-icon {
	font-size: 1.2rem;
	line-height: 1;
}
.tr-tm-desc {
	margin: 0 0 0.75rem;
	font-size: 0.84rem;
	line-height: 1.65;
	color: var(--wp--preset--color--tr-ink-soft);
}
.tr-tm-list {
	list-style: none;
	margin: auto 0 0;
	padding: 0;
	border-top: 1px solid rgba(31, 58, 95, 0.1);
}
.tr-tm-list li + li {
	border-top: 1px solid rgba(31, 58, 95, 0.06);
}
a.tr-tm-item {
	display: flex;
	align-items: baseline;
	gap: 0.55rem;
	padding: 0.6rem 0.2rem;
	text-decoration: none;
	color: inherit;
	transition: background-color 0.15s ease;
}
a.tr-tm-item:hover,
a.tr-tm-item:focus-visible {
	background: rgba(36, 122, 118, 0.07);
}
.tr-tm-flag {
	font-size: 1.05rem;
	line-height: 1;
}
.tr-tm-body {
	display: flex;
	flex-direction: column;
	gap: 0.1rem;
	min-width: 0;
}
.tr-tm-country {
	font-weight: 700;
	font-size: 0.9rem;
	color: var(--wp--preset--color--tr-primary);
}
.tr-tm-sig {
	font-size: 0.8rem;
	line-height: 1.5;
	color: var(--wp--preset--color--tr-ink-soft);
}
/* 矢印は常に描画して場所を確保し、可視性だけ切り替える。
 * hover 時に content で文字を足すと行幅が変わり、折り返しが動いてカードが跳ねる。 */
.tr-tm-sig::after {
	content: " →";
	color: var(--wp--preset--color--tr-accent);
	opacity: 0;
	transition: opacity 0.15s ease;
}
a.tr-tm-item:hover .tr-tm-sig::after,
a.tr-tm-item:focus-visible .tr-tm-sig::after {
	opacity: 1;
}
@media (prefers-reduced-motion: reduce) {
	.tr-tm-sig::after {
		transition: none;
	}
}

/* 国カード（テーマ文脈）: pitch の下に代表体験を1行足す */
.tr-country-card .tr-cc-sig {
	display: block;
	margin-top: 0.45rem;
	font-size: 0.76rem;
	font-weight: 600;
	line-height: 1.45;
	color: rgba(255, 255, 255, 0.92);
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.55);
}

/* ================================================================
 * Phase 3: 国ハブ ファクトバー（[tr_decide] 内 / tr_facts_bar()）
 * 「日数・予算・空路・はじめて度・ベスト時期」を図で即比較できるようにする。
 * 図（メーター/12か月ストリップ）は情報なので、必ず同じ内容の文字を併記している。
 * ================================================================ */
.tr-facts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: 1.1rem 1.4rem;
	margin: 1.25rem 0 1.4rem;
	padding: 1.1rem 0;
	border-top: 1px solid var(--wp--preset--color--tr-rule);
	border-bottom: 1px solid var(--wp--preset--color--tr-rule);
}
.tr-fact-label {
	margin: 0 0 0.3rem;
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--tr-muted);
}
.tr-fact-value {
	margin: 0 0 0.45rem;
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.35;
	color: var(--wp--preset--color--tr-ink);
}
.tr-fact-of {
	font-size: 0.78em;
	font-weight: 400;
	color: var(--wp--preset--color--tr-muted);
}
.tr-fact-sub {
	margin: 0.4rem 0 0;
	font-size: 0.72rem;
	line-height: 1.5;
	color: var(--wp--preset--color--tr-muted);
}

/* 日数スケール: 3日〜14日以上の軸上に、その国のレンジを帯で示す */
.tr-scale {
	position: relative;
	display: block;
	height: 6px;
	border-radius: 999px;
	background: var(--wp--preset--color--tr-rule);
}
.tr-scale-fill {
	position: absolute;
	top: 0;
	bottom: 0;
	border-radius: 999px;
	background: var(--wp--preset--color--tr-accent);
}

/* メーター（予算 4段 / はじめて度 3段） */
.tr-meter {
	display: flex;
	gap: 3px;
}
.tr-meter-seg {
	flex: 1;
	height: 6px;
	border-radius: 999px;
	background: var(--wp--preset--color--tr-rule);
}
/* 予算は「はじめて度」と別軸なので色も分ける。
 * tr-gold の実値は #75B5B0（ティール系）で tr-accent とほぼ同色に見えるため使わない。 */
.tr-meter--budget .tr-meter-seg.is-on {
	background: var(--wp--preset--color--tr-primary);
}
.tr-meter--level .tr-meter-seg.is-on {
	background: var(--wp--preset--color--tr-accent);
}

/* 12か月ストリップ */
.tr-months {
	display: grid;
	grid-template-columns: repeat(12, 1fr);
	gap: 2px;
}
.tr-month {
	padding: 0.3rem 0;
	border-radius: 2px;
	font-size: 0.6rem;
	font-weight: 600;
	text-align: center;
	color: var(--wp--preset--color--tr-muted);
	background: var(--wp--preset--color--tr-rule);
}
.tr-month.is-best {
	color: #fff;
	background: var(--wp--preset--color--tr-accent);
}
.tr-month.is-alt {
	color: var(--wp--preset--color--tr-ink);
	background: rgba(36, 122, 118, 0.3);
}
.tr-legend {
	display: inline-block;
	width: 0.6rem;
	height: 0.6rem;
	margin-right: 0.28rem;
	border-radius: 2px;
	vertical-align: -1px;
}
.tr-legend.is-best {
	background: var(--wp--preset--color--tr-accent);
}
.tr-legend.is-alt {
	margin-left: 0.7rem;
	background: rgba(36, 122, 118, 0.3);
}

/* チップ（直行/経由・テーマ） */
.tr-chip {
	display: inline-block;
	padding: 0.14rem 0.55rem;
	border-radius: 999px;
	font-size: 0.72rem;
	font-weight: 700;
	white-space: nowrap;
}
.tr-chip--direct {
	color: #17635f;
	background: rgba(36, 122, 118, 0.16);
}
.tr-chip--via {
	color: var(--wp--preset--color--tr-ink-soft);
	background: rgba(26, 35, 50, 0.08);
}
.tr-chip--theme {
	font-weight: 600;
	color: var(--wp--preset--color--tr-muted);
	background: transparent;
	border: 1px solid var(--wp--preset--color--tr-rule);
}
.tr-fact-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 0.25rem;
}

/* 12 か月ストリップとテーマチップは横幅が要るので広い画面では 2 カラム分使う */
@media (min-width: 720px) {
	.tr-fact--season {
		grid-column: span 2;
	}
}

/* ─── 言語スイッチャ（ヘッダー右端・[tr_lang_switch]）─── */
.tr-lang-switch{display:flex;gap:.45em;align-items:center;font-size:var(--wp--preset--font-size--xs);letter-spacing:.06em;white-space:nowrap;font-family:var(--wp--preset--font-family--inter);}
.tr-lang-switch .is-current{color:var(--wp--preset--color--tr-muted);font-weight:600;}
.tr-lang-switch .tr-ls-sep{color:var(--wp--preset--color--tr-rule);}
.tr-lang-switch a{color:var(--wp--preset--color--tr-ink-soft);text-decoration:none;}
/* タップ領域を 44px 級に拡大（padding+負マージンでレイアウト位置は不変。実測 18×22px → 基準未満だった） */
.tr-lang-switch a,.tr-lang-switch .is-current{padding:.9em .55em;margin:-.9em -.55em;}
.tr-lang-switch a:hover{color:var(--wp--preset--color--tr-accent);text-decoration:underline;}
/* ─── 3言語以上で自動的にこちら: 🌐 ドロップダウン（<details> ネイティブ・JS不要） ─── */
details.tr-lang-dd{position:relative;display:inline-block;}
details.tr-lang-dd>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.35em;padding:.9em .55em;margin:-.9em -.55em;color:var(--wp--preset--color--tr-ink-soft);}
details.tr-lang-dd>summary::-webkit-details-marker{display:none;}
details.tr-lang-dd>summary:hover{color:var(--wp--preset--color--tr-accent);}
details.tr-lang-dd .tr-ls-caret{font-size:.8em;transition:transform .15s;}
details.tr-lang-dd[open] .tr-ls-caret{transform:rotate(180deg);}
.tr-lang-dd-menu{position:absolute;right:0;top:calc(100% + .8em);margin:0;padding:.35em;list-style:none;background:var(--wp--preset--color--tr-surface);border:1px solid var(--wp--preset--color--tr-rule);border-radius:6px;box-shadow:0 8px 24px rgba(26,35,50,.12);min-width:10.5em;z-index:60;}
.tr-lang-dd-menu li{margin:0;}
.tr-lang-dd-menu a,.tr-lang-dd-menu .is-current{display:block;padding:.7em .9em;margin:0;border-radius:4px;text-decoration:none;color:var(--wp--preset--color--tr-ink-soft);}
.tr-lang-dd-menu a:hover{background:var(--wp--preset--color--tr-wash, #f4f6f8);color:var(--wp--preset--color--tr-accent);text-decoration:none;}
.tr-lang-dd-menu .is-current{color:var(--wp--preset--color--tr-muted);font-weight:600;}
.tr-lang-dd-menu .tr-ls-check{color:var(--wp--preset--color--tr-accent);}


/* ─── 護照セレクタ + 入境要件 (cn) ────────────────────────────
   査証は読者の護照で結論が反対になる (美国: 新加坡=ESTA可 / 马来西亚=要签证)。
   全プロファイルをサーバ側で出し、JS は絞り込みのみ。JS が落ちても全部読める。 */
.tr-passport {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem .75rem;
	margin: 0 0 1rem;
	padding: .7rem .9rem;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--tr-ink) 12%, transparent);
	border-radius: 10px;
	background: color-mix(in srgb, var(--wp--preset--color--tr-accent) 5%, transparent);
}

.tr-passport-label {
	margin: 0;
	font-size: .82rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-ink);
}

.tr-passport-chips {
	display: flex;
	flex-wrap: wrap;
	gap: .4rem;
}

.tr-passport-chip {
	padding: .28rem .7rem;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--tr-ink) 20%, transparent);
	border-radius: 999px;
	background: #fff;
	color: var(--wp--preset--color--tr-ink);
	font-size: .78rem;
	line-height: 1.5;
	cursor: pointer;
	transition: background .15s, border-color .15s, color .15s;
}

.tr-passport-chip:hover {
	border-color: var(--wp--preset--color--tr-accent);
	color: var(--wp--preset--color--tr-accent);
}

.tr-passport-chip.is-on {
	background: var(--wp--preset--color--tr-accent);
	border-color: var(--wp--preset--color--tr-accent);
	color: #fff;
	font-weight: 700;
}

.tr-passport-chip:focus-visible {
	outline: 2px solid var(--wp--preset--color--tr-primary);
	outline-offset: 2px;
}

.tr-fact--visa .tr-visa-list {
	margin: .2rem 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: .3rem;
}

.tr-visa-row {
	display: grid;
	grid-template-columns: minmax(5.5em, auto) 1fr;
	gap: .5rem;
	align-items: baseline;
	font-size: .84rem;
	line-height: 1.55;
}

.tr-visa-row[hidden] {
	display: none;
}

.tr-visa-who {
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary);
	white-space: nowrap;
}

.tr-visa-req {
	color: var(--wp--preset--color--tr-ink);
}

@media (max-width: 600px) {
	.tr-visa-row {
		grid-template-columns: 1fr;
		gap: 0;
	}
	.tr-visa-who {
		font-size: .78rem;
	}
}

/* 記事本文の入境要件モジュール [tr_visa] ─────────────────────
   ★本文のカード型要素は .wp-block-post-content a:not(…) の下線エフェクトと
   衝突しうるが、これはリンクではない (aside) ので :not() チェーンは不要。 */
.tr-visa-box {
	margin: 1.6rem 0;
	padding: 1rem 1.1rem;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--tr-ink) 14%, transparent);
	border-left: 3px solid var(--wp--preset--color--tr-accent);
	border-radius: 8px;
	background: color-mix(in srgb, var(--wp--preset--color--tr-accent) 4%, transparent);
}

.tr-visa-box-title {
	margin: 0 0 .6rem;
	font-size: .9rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary);
}

.tr-visa-box-note {
	margin: .6rem 0 0;
	font-size: .76rem;
	line-height: 1.6;
	color: color-mix(in srgb, var(--wp--preset--color--tr-ink) 68%, transparent);
}

.tr-visa-box .tr-visa-list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: .35rem;
}

/* ── 記事内の国地図（make-country-map.ts が生成する SVG） ──
   サイズは SVG 側の viewBox と width:100% に委ねる。
   ★モバイルでラベルを読みやすくする試みの記録（どちらも失敗・再挑戦しないこと）:
     1) height を伸ばす → preserveAspectRatio="meet" のため中身は拡大されず上下に余白が出るだけ
     2) text に font-size:em を掛ける → SVG 内では viewBox 単位に対する相対値になり文字が暴走
   → 可読性は生成側（make-country-map.ts）のフォントサイズ設計で担保する。 */
.tr-geomap {
	display: block;
	width: 100%;
	height: auto;
}

/* ★モバイルは図を最低幅まで拡大し、はみ出しを横スクロールで見せる。
   本文幅358px のままだとラベルが6〜10px に潰れて読めない（実測）。620px あれば
   同じラベルが16px 前後になる。作法は既存の .tr-value-props（横スクロール化）と同じ。 */
.tr-geomap-wrap {
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-x: contain;
}

@media (max-width: 600px) {
	.tr-geomap-wrap > .tr-geomap {
		min-width: 540px;
	}
}

/* ── 暗い背景の上の muted テキスト（フッター等） ──
   tr-muted (#6F6862) は白地では 5.48:1 で問題ないが、tr-ink (#1A2332) の上では 2.88:1 と
   AA に届かない。同じトークンでも背景で可否が変わるので、暗い面では明るい変種へ差し替える。 */
.wp-block-group[style*="tr-ink"] .has-tr-muted-color,
.site-footer .has-tr-muted-color,
footer .has-tr-muted-color {
	color: #9A948C !important;   /* #1A2332 上で 5.25:1 */
}

/* ── tr-gold テキストの使い分け ──
   tr-gold (#75B5B0) は紺地/黒地の上では 4.9〜6:1 で読めるが、白地では 2.34:1 と不足する。
   ★サイト内では暗い面での使用が多数派なので、既定は gold のまま。
     明るい面に置かれている箇所だけを名指しでアクセントへ倒す。
   ⚠ 逆（既定をアクセントにして暗い面を除外）を試したところ、フッターの見出しや
     暗いセクションの eyebrow が 3.10:1 に落ちた。除外漏れのほうが起きやすい。 */
.tr-category-eyebrow,
.wp-block-post-content .has-tr-gold-color,
.entry-content .has-tr-gold-color,
/* 国ハブの節見出しは本文ブロックの外（site-content 直下のグループ）にある */
.site-content .wp-block-group.alignwide .has-tr-gold-color:not(.tr-explore-eyebrow) {
	color: var(--wp--preset--color--tr-accent) !important;
}

/* ── 読み上げ専用（視覚的には隠すが支援技術には読ませる） ──
   display:none や visibility:hidden はスクリーンリーダーからも消えるので使わない。 */
.tr-visually-hidden {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ── ⑥⑦ モバイルの可読性とタップ標的 ──
   ★実測: 本文まわりに 10.4〜12.8px の文字が多数（写真クレジット10.4px・日付11.2px・
   カテゴリチップ11.2px）。日本語は英字より小さく見えるため、装飾以外は 12px を下限にする。
   タップ標的は指の接触面（約9mm≒44px）を確保する。 */
@media (max-width: 781px) {
	/* ★既存の .tr-hero-credit { font-size: 0.65rem !important } と同じ !important 同士に
	   なるため、セレクタの詳細度を上げないと勝てない（実測: 10.4px のままだった）。 */
	/* 既存は .wp-block-cover.alignfull .tr-hero-credit = (0,3,0)。これを上回る必要がある。 */
	.wp-block-cover.alignfull .tr-hero-credit.wp-block-paragraph,
	.wp-block-cover .tr-hero-credit.wp-block-paragraph,
	.tr-photo-credit,
	figcaption.wp-element-caption {
		font-size: 12px !important;
	}
	/* 世界地図ウィジェット・カテゴリ見出し・カード日付など、残りの小さい文字。
	   ★世界地図のラベルは 10.0px と最小だった。地図の可読性そのものに関わる。 */
	.tr-wm-back,
	.tr-wm-caption,
	.tr-wm-label .txt,
	.tr-wm-label .en,
	.tr-wm-card .txt,
	.tr-wm-card .en,
	.tr-wm-card .go,
	.wp-block-group .tr-category-eyebrow,
	.tr-category-eyebrow,
	/* 既存規則の詳細度に勝つため、親クラスを重ねて指定する */
	.tr-article-card .tr-card-date,
	.wp-block-cover.alignfull .tr-hero-overlay .tr-hero-eyebrow,
	.wp-block-cover.alignfull .wp-block-cover__inner-container .tr-hero-eyebrow,
	.wp-block-group .tr-hero-eyebrow,
	.tr-card-date,
	.tr-card-eyebrow,
	.tr-card-eyebrow a,
	.tr-hero-eyebrow,
	.tr-fact-label,
	.wp-block-post-terms a {
		font-size: 11.5px !important;
	}

	/* 記事内の統計カード（本文にインライン font-size:11px を持つ）とバッジ類 */
	.wp-block-post-content div[style*="font-size:11px"],
	.tr-aff-badge,
	.tr-share-label {
		font-size: 11.5px !important;
	}
	.tr-byline,
	.tr-byline * {
		font-size: 12.5px !important;
	}
	/* 国カード／記事カードのメタ表示。1枚に日数・時期・予算・空路・レベル・タグを詰めるため
	   10.4〜11.2px まで縮んでいた。日本語の下限として 11.5px を確保し、
	   溢れは折り返しで吸収する（カードの高さは可変なので破綻しない）。 */
	.tr-cc-chip,
	.tr-cc-tag,
	.tr-pc-eyebrow,
	.tr-photo-card time,
	.tr-article-card time,
	.wp-block-post-date,
	.taxonomy-category a {
		font-size: 11.5px !important;
	}
	.tr-cc-meta,
	.tr-cc-tags {
		flex-wrap: wrap;
	}
	/* 言語切替・ナビ項目などの小さすぎる標的（実測 116x38px）を 44px 以上に */
	.wp-block-navigation__responsive-container-content a,
	.tr-lang-switcher a,
	.wp-block-navigation-item__content {
		min-height: 44px;
		display: flex;
		align-items: center;
	}
	/* チップ類は視覚サイズを保ったまま、擬似要素で当たり判定だけ広げる */
	.tr-cc-chipbtn,
	.tr-cat-chip,
	.taxonomy-category a {
		position: relative;
	}
	.tr-cc-chipbtn::after,
	.tr-cat-chip::after,
	.taxonomy-category a::after {
		content: '';
		position: absolute;
		inset: 50% 0 0 0;
		transform: translateY(-50%);
		min-height: 44px;
	}
}

/* ============================================================================
 * v0.5.72: トップページを「在庫リスト」から「選ぶ入り口」へ
 *
 * 実測（1440×900 / 390×844）で判明した構造上の問題:
 *   - トップ全長 PC 10.2 画面 / SP 14.1 画面
 *   - うち「国から探す」だけが SP 5,111px = 6.1 画面（全体の 43%）。
 *     18か国＋周遊の写真カード 20 枚を 1 列で並べただけで、絞り込み UI が無かった。
 *   - その結果「したいことから探す」（＝わくわくの本体）が SP 8.4 画面目に沈んでいた。
 *   - 世界地図とカード列は同じ 18 か国を続けて 2 回見せているだけで連動していなかった。
 * ========================================================================== */

/* ─── (1) ヒーロー直下のクイックチップ [tr_trip_chips] ───
 * 上から 3 画面に「触ると何かが変わる」操作が 1 つも無かったので、最初の一手をここに置く。 */
.tr-trip-chips {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 1rem;
	max-width: var(--wp--style--global--wide-size, 1200px);
	margin: 0 auto;
	padding: 0.9rem var(--wp--preset--spacing--md, 24px);
}
.tr-trip-chips-lead {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--tr-muted, #6b7280);
	flex: 0 0 auto;
}
.tr-trip-chips-list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.45rem;
}
/* a. を付けて詳細度を上げる（本文由来の a ルールに負けないため）。
 * 当たり判定は 44px（WCAG 2.2 Target Size 最小）を padding で確保する。 */
a.tr-trip-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	min-height: 44px;
	padding: 0.55rem 0.95rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	border-radius: 999px;
	background: var(--wp--preset--color--tr-surface, #ffffff);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.82rem;
	font-weight: 600;
	line-height: 1;
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
	text-decoration: none;
	transition: background 0.2s, color 0.2s, border-color 0.2s;
}
a.tr-trip-chip:hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	color: var(--wp--preset--color--tr-accent, #247A76);
}
a.tr-trip-chip:focus-visible {
	outline: 2px solid var(--wp--preset--color--tr-accent, #247A76);
	outline-offset: 2px;
}
a.tr-trip-chip.is-active {
	background: var(--wp--preset--color--tr-accent, #247A76);
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	color: #ffffff;
}
@media (max-width: 781px) {
	.tr-trip-chips {
		gap: 0.45rem 0.6rem;
		padding: 0.85rem var(--wp--preset--spacing--md, 16px);
	}
	.tr-trip-chips-lead {
		flex-basis: 100%;
	}
	/* 横スクロールの帯にして、チップ列で縦を消費しない */
	.tr-trip-chips-list {
		flex-wrap: nowrap;
		overflow-x: auto;
		scrollbar-width: none;
		margin: 0 calc(-1 * var(--wp--preset--spacing--md, 16px));
		padding: 0 var(--wp--preset--spacing--md, 16px);
	}
	.tr-trip-chips-list::-webkit-scrollbar {
		display: none;
	}
	a.tr-trip-chip {
		flex: 0 0 auto;
	}
}

/* ─── (2) トップ「国から探す」の絞り込みバー（紺の上に載る） ───
 * .tr-cc-chipbtn の既定は明背景向けの白チップなので、暗いセクション用に反転する。 */
/* ★constrained レイアウトの子は max-width:contentSize(720px) を受ける。
 * 以前はグリッド(.tr-photo-grid)が直接の子で、その幅指定で 1100px に広がっていたが、
 * .tr-country-chooser で包んだ結果ラッパ側が 720px に絞られ、カードが縮んだ。
 * 隣の世界地図(.tr-wm)は max-width:100% を持つので広いまま＝地図とカードの幅が食い違う。
 * 包んだ側にも同じ逃げを持たせる（geographic 着地のチョーザーには影響しない）。 */
.tr-cgrid {
	margin-top: var(--wp--preset--spacing--md, 24px);
	max-width: 100%;
}

/* テーマカードは写真になったので、文字カード時代の 720px では 1 枚 229px と窮屈
 * （「アートと建築で選ぶ次の旅」が 2 行に折れる）。国カードと同じ幅に揃える。 */
.tr-theme-explorer {
	max-width: 100%;
}
.tr-cgrid-bar {
	gap: 0.4rem;
	margin-bottom: 0.75rem;
}
.tr-cgrid .tr-cc-chipbtn {
	min-height: 44px;
	padding: 0.5rem 1rem;
	font-size: 0.82rem;
	background: rgba(255, 255, 255, 0.06);
	border-color: rgba(255, 255, 255, 0.28);
	color: rgba(255, 255, 255, 0.88);
}
.tr-cgrid .tr-cc-chipbtn:hover {
	background: rgba(255, 255, 255, 0.14);
	border-color: #43B9B2;
	color: #ffffff;
}
.tr-cgrid .tr-cc-chipbtn.is-active {
	background: #43B9B2;
	border-color: #43B9B2;
	color: #0E1626;
}
/* 紺の上では tr-muted (#6b7280) が 2.5:1 しかない。白の 70% で 8.6:1 を確保する。 */
.tr-cgrid .tr-cc-count {
	margin-bottom: 0.6rem;
	color: rgba(255, 255, 255, 0.7);
}
.tr-cgrid .tr-cc-empty {
	background: rgba(255, 255, 255, 0.05);
	border-color: rgba(255, 255, 255, 0.25);
	color: rgba(255, 255, 255, 0.85);
}

/* 絞り込みで落ちたカード / 初期表示件数を超えたカード。
 * 別クラスにしてあるのは、展開したときに絞り込みで落としたカードまで
 * 出てきてしまわないようにするため（country-chooser.js の collapse()）。 */
.tr-cc-grid > .is-hidden,
.tr-cc-grid > .is-collapsed {
	display: none !important;
}

.tr-cc-more {
	display: block;
	width: 100%;
	max-width: 320px;
	min-height: 48px;
	margin: var(--wp--preset--spacing--md, 24px) auto 0;
	padding: 0.8rem 1.4rem;
	border: 1px solid rgba(255, 255, 255, 0.35);
	border-radius: 999px;
	background: transparent;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.9rem;
	font-weight: 600;
	color: #ffffff;
	cursor: pointer;
	transition: background 0.2s, border-color 0.2s;
}
.tr-cc-more:hover {
	background: rgba(255, 255, 255, 0.1);
	border-color: #43B9B2;
}
.tr-cc-more:focus-visible {
	outline: 2px solid #43B9B2;
	outline-offset: 2px;
}
.tr-cc-more[hidden] {
	display: none;
}

/* ─── (3) テーマカードの写真化 [tr_theme_explorer] ───
 * 食・夜あそび・絶景という「わくわくの本体」が文字だけのカードで、すぐ隣の
 * 「国から探す」は写真カード 18 枚 ＝ 視覚的な扱いが逆転していた。
 * ★ .tr-funnel-card と併用する前提（写真が無いテーマは文字カードのまま）。 */
a.tr-theme-card {
	position: relative;
	justify-content: flex-end;
	min-height: 210px;
	border: none;
	border-top: 3px solid var(--wp--preset--color--tr-accent, #247A76);
	background-image:
		linear-gradient(180deg, rgba(14, 22, 38, 0.25) 0%, rgba(14, 22, 38, 0.6) 45%, rgba(14, 22, 38, 0.93) 100%),
		var(--card-photo, linear-gradient(150deg, #24466E 0%, #16294A 55%, #0E1626 100%));
	background-size: cover;
	background-position: center;
	overflow: hidden;
}
/* 写真の上に載る文字。コントラストは写真次第で保証できないので、
 * 「明るい色＋濃い影」で背景に依らず読めるようにする（.tr-photo-card と同じ方針）。 */
.tr-theme-card .tr-funnel-card-q {
	color: #C8E4E1;
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.75), 0 0 10px rgba(0, 0, 0, 0.45);
}
.tr-theme-card .tr-funnel-card-a {
	color: #ffffff;
	text-shadow: 0 1px 4px rgba(0, 0, 0, 0.55);
}
.tr-theme-card .tr-funnel-card-sub {
	color: rgba(255, 255, 255, 0.9);
	text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}
.tr-theme-card:hover {
	box-shadow: 0 14px 32px rgba(14, 22, 38, 0.3);
}
@media (max-width: 781px) {
	a.tr-theme-card {
		min-height: 168px;
	}
}

/* ─── (4) 最新記事: モバイルを 2 列に ───
 * 6 件を 1 列で積むと SP で 2.1 画面ぶんになる。トップの役目が「行き先を選ぶ入り口」なら
 * ここは俯瞰できればよいので 2 列に畳む。1 件目のフィーチャー（2×2 span）は
 * モバイルでは横 2 列ぶんを使い、以降を 2 列で流す。 */
@media (max-width: 781px) {
	.tr-article-grid .wp-block-post-template {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
		gap: var(--wp--preset--spacing--sm, 16px) !important;
	}
	.tr-article-grid .wp-block-post-template > li:first-child {
		grid-column: span 2;
		grid-row: auto;
	}
	.tr-article-grid .tr-card-title {
		font-size: 0.95rem !important;
	}
	/* 2 列では抜粋まで置くと 1 枚が縦に伸びるので、題名と日付に絞る
	   （1 件目のフィーチャーカードだけは抜粋を残す） */
	.tr-article-grid .wp-block-post-template > li:not(:first-child) .tr-card-excerpt {
		display: none;
	}
}

/* ─── フレーズブック（[tr_phrasebook]・語学学習軸） ───
 * 全レベル・全エントリはサーバ側 DOM に出ており、tr-phrasebook.js が is-hidden で
 * 絞り込むだけ（クローキング回避・JS 無効でも全件読める）。フラッシュカードは
 * ルートの .is-mode-cards + エントリの .is-flipped で答え（.tr-pb-back）を出し入れする。 */
.tr-phrasebook {
	margin: var(--wp--preset--spacing--md, 24px) 0;
}
.tr-pb-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.75rem;
	margin-bottom: var(--wp--preset--spacing--sm, 16px);
}
.tr-pb-fgroup {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
}
.tr-pb-modes {
	margin-left: auto;
}
.tr-pb-chipbtn,
.tr-pb-toggle,
.tr-pb-mode {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.78rem;
	font-weight: 600;
	line-height: 1;
	padding: 0.42rem 0.72rem;
	border-radius: 999px;
	cursor: pointer;
	background: var(--wp--preset--color--tr-surface, #ffffff);
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.tr-pb-chipbtn:hover,
.tr-pb-toggle:hover,
.tr-pb-mode:hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-pb-chipbtn.is-active,
.tr-pb-toggle.is-active,
.tr-pb-mode.is-active {
	background: var(--wp--preset--color--tr-accent, #247A76);
	color: #ffffff;
	border-color: var(--wp--preset--color--tr-accent, #247A76);
}
/* レベルタブは意思決定の第一軸なので、場面チップよりわずかに強く見せる */
.tr-pb-levels .tr-pb-chipbtn {
	font-size: 0.85rem;
	padding: 0.5rem 0.9rem;
}
.tr-pb-hint,
.tr-pb-count {
	margin: 0 0 var(--wp--preset--spacing--sm, 16px);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.75rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-pb-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
	gap: var(--wp--preset--spacing--sm, 16px);
}
.tr-pb-entry {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	padding: 0.9rem 1rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	border-radius: 8px;
	background: var(--wp--preset--color--tr-surface, #ffffff);
}
.tr-pb-entry.is-hidden {
	display: none;
}
.tr-pb-entry.is-learned {
	background: var(--wp--preset--color--tr-surface-soft, #f6f8fa);
}
.tr-pb-text {
	margin: 0;
	font-weight: 700;
	font-size: 1.02rem;
	line-height: 1.45;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-pb-altline {
	margin: 0;
	font-size: 0.82rem;
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
}
.tr-pb-pron {
	margin: 0;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.78rem;
	letter-spacing: 0.02em;
	color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-pb-gloss {
	margin: 0;
	font-size: 0.92rem;
	line-height: 1.6;
}
.tr-pb-note {
	margin: 0.25rem 0 0;
	padding-top: 0.4rem;
	border-top: 1px dashed var(--wp--preset--color--tr-rule, #d9dee5);
	font-size: 0.8rem;
	line-height: 1.6;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-pb-metabar {
	display: flex;
	flex-wrap: wrap; /* 聞く/ゆっくり/覚えた の3ボタン＋場面タグが狭幅でも崩れないように */
	align-items: center;
	justify-content: space-between;
	gap: 0.5rem;
	margin-top: auto;
	padding-top: 0.35rem;
}
.tr-pb-tag {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.68rem;
	font-weight: 600;
	padding: 0.22rem 0.55rem;
	border-radius: 999px;
	background: var(--wp--preset--color--tr-surface-soft, #f6f8fa);
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-pb-tools {
	display: flex;
	gap: 0.35rem;
}
.tr-pb-speak,
.tr-pb-learn {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.72rem;
	font-weight: 600;
	line-height: 1;
	padding: 0.35rem 0.6rem;
	border-radius: 999px;
	cursor: pointer;
	background: var(--wp--preset--color--tr-surface, #ffffff);
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
}
.tr-pb-speak:hover,
.tr-pb-learn:hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-pb-entry.is-learned .tr-pb-learn {
	background: var(--wp--preset--color--tr-accent, #247A76);
	color: #ffffff;
	border-color: var(--wp--preset--color--tr-accent, #247A76);
}
/* ── フラッシュカードモード: 答え（訳・発音・注記）を伏せ、押すとめくる ── */
.tr-phrasebook.is-mode-cards .tr-pb-entry {
	cursor: pointer;
	min-height: 120px;
	justify-content: center;
}
.tr-phrasebook.is-mode-cards .tr-pb-entry:focus-visible {
	outline: 2px solid var(--wp--preset--color--tr-accent, #247A76);
	outline-offset: 2px;
}
.tr-phrasebook.is-mode-cards .tr-pb-back,
.tr-phrasebook.is-mode-cards .tr-pb-tag {
	display: none;
}
.tr-phrasebook.is-mode-cards .tr-pb-entry.is-flipped .tr-pb-back {
	display: block;
}
.tr-pb-empty {
	margin: var(--wp--preset--spacing--md, 24px) 0 0;
	padding: var(--wp--preset--spacing--lg, 32px);
	border: 1px dashed var(--wp--preset--color--tr-rule, #d9dee5);
	border-radius: 6px;
	text-align: center;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.85rem;
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
	background: var(--wp--preset--color--tr-surface-soft, #f6f8fa);
}
.tr-pb-empty.is-hidden {
	display: none;
}
@media (max-width: 781px) {
	.tr-pb-modes {
		margin-left: 0;
	}
	.tr-pb-list {
		grid-template-columns: 1fr;
	}
}

/* ── 早見表（[tr_phrasebook ui="sheet"]・カンニングシート）──
 * 印刷・スクリーンショットでの携帯を想定した密な表。JS は印刷ボタンの表示のみ。 */
.tr-pb-sheetbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	flex-wrap: wrap;
	margin-bottom: 0.25rem;
}
.tr-pb-sheetnote {
	margin: 0;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.75rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-pb-print {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.75rem;
	font-weight: 600;
	line-height: 1;
	padding: 0.42rem 0.72rem;
	border-radius: 999px;
	cursor: pointer;
	background: var(--wp--preset--color--tr-surface, #ffffff);
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
}
.tr-pb-print:hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	color: var(--wp--preset--color--tr-accent, #247A76);
}
h3.tr-pb-sheet-scene {
	margin: 1.4rem 0 0.5rem;
	font-size: 1.02rem;
}
table.tr-pb-sheet {
	width: 100%;
	border-collapse: collapse;
	margin: 0 0 0.5rem;
	font-size: 0.85rem;
	line-height: 1.5;
}
.tr-pb-sheet th,
.tr-pb-sheet td {
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	padding: 0.45rem 0.6rem;
	text-align: left;
	vertical-align: top;
}
.tr-pb-sheet th {
	font-weight: 600;
	width: 40%;
	color: var(--wp--preset--color--tr-ink, #1A2332);
	background: var(--wp--preset--color--tr-surface, #ffffff);
}
.tr-pb-sheet-pron {
	width: 27%;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.75rem;
	color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-pb-sheet-gloss {
	font-size: 0.82rem;
}
@media (max-width: 600px) {
	/* 幅が足りない画面ではカナ列を落とし、英語と意味の2列に絞る（読み仮名は詳細ページで） */
	.tr-pb-sheet-pron {
		display: none;
	}
	.tr-pb-sheet th {
		width: 52%;
	}
}
@media print {
	.tr-pb-print {
		display: none;
	}
	table.tr-pb-sheet {
		font-size: 9pt;
	}
	.tr-pb-sheet th,
	.tr-pb-sheet td {
		padding: 3pt 5pt;
	}
}

/* ── 語学学習サブサイトのローカルナビ（single-learning.html）──
 * 全学習ページ共通の「サブサイトの顔」。タイトルバンド直下に貼り付く帯。 */
.tr-learning-navband {
	border-bottom: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	background: var(--wp--preset--color--tr-surface, #ffffff);
}
.tr-learning-nav {
	display: flex;
	gap: 0.25rem;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	font-family: var(--wp--preset--font-family--inter);
}
/* タブ風（下線インジケータ）はやめ、通常のリンクとして描く。実体はページ遷移なので、
 * 「その場で切り替わるタブ」という誤った期待を見た目で作らない（2026-07-29）。
 * 体感の速さは wp_head の speculationrules（prerender）が補う。 */
.tr-learning-nav {
	gap: 1.1rem;
}
.tr-learning-nav a {
	flex: 0 0 auto;
	padding: 0.7rem 0;
	font-size: 0.8rem;
	font-weight: 500;
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-thickness: 1px;
	color: var(--wp--preset--color--tr-accent, #247A76);
	white-space: nowrap;
}
.tr-learning-nav a:hover {
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}

/* ── 語学学習 UI/UX 改善（2026-07-28）──
 * ①ローカルナビの現在地（aria-current は render_block_core/html が注入）
 * ②スタッツ帯（[tr_phrasebook_stats]）
 * ③モバイルのタイトル帯を詰め、ツールまでのスクロールを短縮 */
/* 現在地はリンクに見せない（押しても同じページの再読込にしかならないため無効化） */
.tr-learning-nav a.is-current {
	color: var(--wp--preset--color--tr-ink, #1A2332);
	font-weight: 700;
	text-decoration: none;
	pointer-events: none;
	cursor: default;
}
.tr-pb-stats {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem 1.1rem;
	margin: 0.25rem 0 0.75rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.8rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-pb-stats strong {
	color: var(--wp--preset--color--tr-ink, #1A2332);
	font-weight: 700;
}
@media (max-width: 781px) {
	.tr-learning-head {
		padding-top: var(--wp--preset--spacing--lg) !important;
		padding-bottom: var(--wp--preset--spacing--sm) !important;
	}
	.tr-learning-head .wp-block-post-excerpt__excerpt {
		font-size: 0.9rem;
		line-height: 1.65;
	}
}

/* ── 語学学習サブサイトのカラーパレット（body.tr-learning スコープ・2026-07-28）──
 * 「楽しく学べる」ための色分け。飾りではなく意味を持たせる:
 *   レベル3色（初級=緑/中級=琥珀/上級=紫）・場面8色（チップ・カード・早見表で一貫）。
 * 選択状態は「淡い地＋濃い色文字＋色枠」方式（白文字塗り潰しよりコントラスト事故が起きない）。
 * dot/border は中間色（--lp-*）、文字は濃色（--lp-*-deep）、地は color-mix の淡色
 * （非対応ブラウザは直前に宣言したグレーへフォールバック）。 */
body.tr-learning {
	--lp-beginner: #3F9E63;  --lp-beginner-deep: #2C7A49;
	--lp-inter: #E8A33A;     --lp-inter-deep: #A96F0E;
	--lp-adv: #8E5AC8;       --lp-adv-deep: #6E41A3;
	--lp-basics: #2A8E89;    --lp-basics-deep: #1D6E6A;
	--lp-airport: #3B82C4;   --lp-airport-deep: #2A6398;
	--lp-transport: #5B6BD6; --lp-transport-deep: #4550B8;
	--lp-hotel: #8E5AC8;     --lp-hotel-deep: #6E41A3;
	--lp-restaurant: #E8833A;--lp-restaurant-deep: #B55A14;
	--lp-shopping: #D6558E;  --lp-shopping-deep: #AD3268;
	--lp-trouble: #D64545;   --lp-trouble-deep: #AD2F2F;
	--lp-smalltalk: #4CAF6E; --lp-smalltalk-deep: #337E4D;
}

/* タイトル帯: やわらかな3色グラデーション（テキストは既存のまま） */
body.tr-learning .tr-learning-head {
	background-image: linear-gradient(120deg, #EDf8F6 0%, #FDF6EA 48%, #F3EEFB 100%);
}

/* ── レベルチップ: 常時カラードット＋選択で色付け ── */
body.tr-learning .tr-pb-levels .tr-pb-chipbtn::before {
	content: "";
	display: inline-block;
	width: 0.55em;
	height: 0.55em;
	margin-right: 0.4em;
	border-radius: 50%;
	background: var(--lp-dot, #9aa3ad);
	vertical-align: 0.02em;
}
body.tr-learning .tr-pb-chipbtn[data-pb-level="travel"]   { --lp-dot: var(--lp-beginner); --lp-c: var(--lp-beginner); --lp-deep: var(--lp-beginner-deep); }
body.tr-learning .tr-pb-chipbtn[data-pb-level="daily"]    { --lp-dot: var(--lp-inter); --lp-c: var(--lp-inter); --lp-deep: var(--lp-inter-deep); }
body.tr-learning .tr-pb-chipbtn[data-pb-level="advanced"] { --lp-dot: var(--lp-adv); --lp-c: var(--lp-adv); --lp-deep: var(--lp-adv-deep); }

/* ── 場面チップ: 場面色のドット ── */
body.tr-learning .tr-pb-scenes .tr-pb-chipbtn:not([data-pb-scene=""])::before {
	content: "";
	display: inline-block;
	width: 0.55em;
	height: 0.55em;
	margin-right: 0.4em;
	border-radius: 50%;
	background: var(--lp-dot, #9aa3ad);
	vertical-align: 0.02em;
}
body.tr-learning [data-pb-scene="basics"]     { --lp-dot: var(--lp-basics); --lp-c: var(--lp-basics); --lp-deep: var(--lp-basics-deep); }
body.tr-learning [data-pb-scene="airport"]    { --lp-dot: var(--lp-airport); --lp-c: var(--lp-airport); --lp-deep: var(--lp-airport-deep); }
body.tr-learning [data-pb-scene="transport"]  { --lp-dot: var(--lp-transport); --lp-c: var(--lp-transport); --lp-deep: var(--lp-transport-deep); }
body.tr-learning [data-pb-scene="hotel"]      { --lp-dot: var(--lp-hotel); --lp-c: var(--lp-hotel); --lp-deep: var(--lp-hotel-deep); }
body.tr-learning [data-pb-scene="restaurant"] { --lp-dot: var(--lp-restaurant); --lp-c: var(--lp-restaurant); --lp-deep: var(--lp-restaurant-deep); }
body.tr-learning [data-pb-scene="shopping"]   { --lp-dot: var(--lp-shopping); --lp-c: var(--lp-shopping); --lp-deep: var(--lp-shopping-deep); }
body.tr-learning [data-pb-scene="trouble"]    { --lp-dot: var(--lp-trouble); --lp-c: var(--lp-trouble); --lp-deep: var(--lp-trouble-deep); }
body.tr-learning [data-pb-scene="smalltalk"]  { --lp-dot: var(--lp-smalltalk); --lp-c: var(--lp-smalltalk); --lp-deep: var(--lp-smalltalk-deep); }

/* 選択状態: 淡い地＋色枠＋濃色文字（レベル・場面チップ共通。--lp-c を持つものだけ） */
body.tr-learning .tr-pb-chipbtn.is-active[data-pb-level],
body.tr-learning .tr-pb-chipbtn.is-active[data-pb-scene]:not([data-pb-scene=""]) {
	background: #f1f3f5;
	background: color-mix(in srgb, var(--lp-c) 14%, white);
	border-color: var(--lp-c);
	color: var(--lp-deep);
}

/* ── エントリカード: 場面色の左ボーダー＋場面タグの色付け ── */
body.tr-learning .tr-pb-entry {
	border-left: 3px solid var(--lp-c, var(--wp--preset--color--tr-rule, #d9dee5));
}
body.tr-learning .tr-pb-entry .tr-pb-tag {
	background: #f1f3f5;
	background: color-mix(in srgb, var(--lp-c, #9aa3ad) 14%, white);
	color: var(--lp-deep, #6b7280);
}

/* 「覚えた」は成功の緑（達成感の色） */
body.tr-learning .tr-pb-entry.is-learned {
	background: #f3faf5;
	background: color-mix(in srgb, var(--lp-beginner) 7%, white);
}
body.tr-learning .tr-pb-entry.is-learned .tr-pb-learn {
	background: var(--lp-beginner);
	border-color: var(--lp-beginner);
	color: #ffffff;
}

/* ── フラッシュカードモード: 場面色の淡い地＋浮き上がり ── */
body.tr-learning .tr-phrasebook.is-mode-cards .tr-pb-entry {
	background: #f7f8f9;
	background: color-mix(in srgb, var(--lp-c, #9aa3ad) 7%, white);
	border-color: transparent;
	border-left: 3px solid var(--lp-c, #9aa3ad);
	box-shadow: 0 1px 3px rgba(26, 35, 50, 0.08);
	transition: transform 0.12s, box-shadow 0.12s;
}
body.tr-learning .tr-phrasebook.is-mode-cards .tr-pb-entry:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 10px rgba(26, 35, 50, 0.12);
}
body.tr-learning .tr-phrasebook.is-mode-cards .tr-pb-entry.is-flipped {
	background: #ffffff;
	border-color: var(--lp-c, #9aa3ad);
}

/* ── 早見表: 場面見出しに色ドット＋色下線 ── */
body.tr-learning h3.tr-pb-sheet-scene {
	padding-bottom: 0.25rem;
	border-bottom: 2px solid var(--lp-c, var(--wp--preset--color--tr-rule, #d9dee5));
}
body.tr-learning h3.tr-pb-sheet-scene::before {
	content: "";
	display: inline-block;
	width: 0.5em;
	height: 0.5em;
	margin-right: 0.45em;
	border-radius: 50%;
	background: var(--lp-c, #9aa3ad);
	vertical-align: 0.08em;
}
body.tr-learning .tr-pb-sheet-scene--basics     { --lp-c: var(--lp-basics); }
body.tr-learning .tr-pb-sheet-scene--airport    { --lp-c: var(--lp-airport); }
body.tr-learning .tr-pb-sheet-scene--transport  { --lp-c: var(--lp-transport); }
body.tr-learning .tr-pb-sheet-scene--hotel      { --lp-c: var(--lp-hotel); }
body.tr-learning .tr-pb-sheet-scene--restaurant { --lp-c: var(--lp-restaurant); }
body.tr-learning .tr-pb-sheet-scene--shopping   { --lp-c: var(--lp-shopping); }
body.tr-learning .tr-pb-sheet-scene--trouble    { --lp-c: var(--lp-trouble); }
body.tr-learning .tr-pb-sheet-scene--smalltalk  { --lp-c: var(--lp-smalltalk); }

/* ── ツール/言語カード: 上辺のカラーバー＋ホバーで持ち上げ ── */
body.tr-learning a.tr-funnel-card {
	border-top: 4px solid var(--lp-basics);
	transition: transform 0.12s, box-shadow 0.12s;
}
body.tr-learning .tr-funnel-router-grid a.tr-funnel-card:nth-child(1) { border-top-color: var(--lp-inter); }
body.tr-learning .tr-funnel-router-grid a.tr-funnel-card:nth-child(2) { border-top-color: var(--lp-airport); }
body.tr-learning .tr-funnel-router-grid a.tr-funnel-card:nth-child(3) { border-top-color: var(--lp-adv); }
body.tr-learning .tr-funnel-router-grid a.tr-funnel-card:nth-child(4) { border-top-color: var(--lp-smalltalk); }
body.tr-learning a.tr-funnel-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 4px 12px rgba(26, 35, 50, 0.12);
}

/* ── スタッツ帯: 数字に色を散らす ── */
body.tr-learning .tr-pb-stats span:nth-child(1) strong { color: var(--lp-basics-deep); }
body.tr-learning .tr-pb-stats span:nth-child(2) strong { color: var(--lp-restaurant-deep); }
body.tr-learning .tr-pb-stats span:nth-child(3) strong { color: var(--lp-adv-deep); }
body.tr-learning .tr-pb-stats span:nth-child(4) { color: var(--lp-beginner-deep); font-weight: 600; }

/* ── デッキ（1枚ずつ）モード: スマホアプリ風のカードめくり ──
 * スマホでは mode="cards" ページが自動でこの表示になる（JS の matchMedia 判定）。
 * 全カードは DOM にあり、.is-deck-current の1枚だけを表示する。 */
.tr-pb-deckbar {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 var(--wp--preset--spacing--sm, 16px);
	font-family: var(--wp--preset--font-family--inter);
}
.tr-pb-deckbar button {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.82rem;
	font-weight: 600;
	line-height: 1;
	padding: 0.55rem 0.85rem;
	border-radius: 999px;
	cursor: pointer;
	background: var(--wp--preset--color--tr-surface, #ffffff);
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
}
.tr-pb-deckbar button:hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-pb-deck-count {
	font-size: 0.85rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
	min-width: 4.2em;
	text-align: center;
	font-variant-numeric: tabular-nums;
}
.tr-pb-deck-hint {
	font-size: 0.72rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
@media (min-width: 782px) {
	.tr-pb-deck-hint {
		display: none; /* スワイプの案内はタッチ端末向け */
	}
}
.tr-phrasebook.is-mode-deck .tr-pb-list {
	grid-template-columns: 1fr;
}
.tr-phrasebook.is-mode-deck .tr-pb-entry {
	display: none;
}
.tr-phrasebook.is-mode-deck .tr-pb-entry.is-deck-current {
	display: flex;
	min-height: 320px;
	justify-content: center;
	touch-action: pan-y;
	max-width: 560px;
	margin: 0 auto;
	width: 100%;
}
.tr-phrasebook.is-mode-deck .tr-pb-entry.is-deck-current .tr-pb-text {
	font-size: 1.4rem;
	line-height: 1.5;
}
.tr-phrasebook.is-mode-deck .tr-pb-entry.is-deck-current .tr-pb-gloss {
	font-size: 1.05rem;
}

/* ── 全画面学習モード（.tr-phrasebook.is-fullscreen）──
 * オーバーレイ方式が本体（iOS Safari は要素 fullscreen 非対応）。対応環境では
 * Fullscreen API を併用してブラウザ UI ごと消す。ヘッダー・チャットボット等より前面。 */
body.tr-pb-fs-lock {
	overflow: hidden;
}
.tr-phrasebook.is-fullscreen {
	position: fixed;
	inset: 0;
	z-index: 99990;
	margin: 0;
	padding: max(1rem, env(safe-area-inset-top)) clamp(1rem, 4vw, 2rem) max(1.5rem, env(safe-area-inset-bottom));
	overflow-y: auto;
	background: #FDFDFC;
	background-image: linear-gradient(120deg, #EDF8F6 0%, #FDF6EA 48%, #F3EEFB 100%);
}
.tr-pb-fs-close {
	display: none;
}
.tr-phrasebook.is-fullscreen .tr-pb-fs-close {
	display: flex;
	align-items: center;
	justify-content: center;
	position: fixed;
	top: max(0.75rem, env(safe-area-inset-top));
	right: 0.9rem;
	z-index: 99991;
	width: 2.4rem;
	height: 2.4rem;
	border-radius: 50%;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	background: #ffffff;
	color: var(--wp--preset--color--tr-ink, #1A2332);
	font-size: 1rem;
	cursor: pointer;
	box-shadow: 0 2px 6px rgba(26, 35, 50, 0.12);
}
.tr-phrasebook.is-fullscreen .tr-pb-filters {
	padding-right: 3rem; /* ✕ボタンと重ならないように */
}
.tr-phrasebook.is-fullscreen .tr-pb-list {
	max-width: 640px;
	margin: 0 auto;
}
.tr-phrasebook.is-fullscreen.is-mode-deck .tr-pb-entry.is-deck-current {
	min-height: min(62vh, 560px);
}
.tr-phrasebook.is-fullscreen.is-mode-deck .tr-pb-entry.is-deck-current .tr-pb-text {
	font-size: clamp(1.4rem, 4.5vw, 1.8rem);
}
.tr-phrasebook.is-fullscreen .tr-pb-deckbar {
	justify-content: center;
}

/* ── 操作の手がかり（アフォーダンス）強化（2026-07-28）──
 * 「タップでめくれる」「スワイプで次へ」を注釈文でなくカード自身に語らせる。 */
.tr-pb-tap-hint,
.tr-pb-tap-hint-back {
	display: none;
}
/* 伏せているカード: 「👆 タップで答えを見る」ピルを常時表示 */
.tr-phrasebook.is-mode-cards .tr-pb-entry:not(.is-flipped) .tr-pb-tap-hint {
	display: inline-flex;
	align-self: center;
	margin-top: 0.6rem;
	padding: 0.42rem 0.85rem;
	border-radius: 999px;
	background: rgba(255, 255, 255, 0.78);
	border: 1px dashed var(--lp-c, #9aa3ad);
	color: var(--lp-deep, #4a5568);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.78rem;
	font-weight: 600;
	line-height: 1;
}
/* めくったカード: 小さく「もう一度タップで戻る」 */
.tr-phrasebook.is-mode-cards .tr-pb-entry.is-flipped .tr-pb-tap-hint-back {
	display: block;
	text-align: center;
	margin-top: 0.5rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.7rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
/* デッキモード: カード左右に ‹ › のスワイプ手がかり */
.tr-phrasebook.is-mode-deck .tr-pb-entry.is-deck-current::before,
.tr-phrasebook.is-mode-deck .tr-pb-entry.is-deck-current::after {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	font-size: 1.7rem;
	line-height: 1;
	color: rgba(26, 35, 50, 0.22);
	pointer-events: none;
}
.tr-phrasebook.is-mode-deck .tr-pb-entry.is-deck-current::before {
	content: "‹";
	left: 0.4rem;
}
.tr-phrasebook.is-mode-deck .tr-pb-entry.is-deck-current::after {
	content: "›";
	right: 0.4rem;
}
/* めくり: 答えがふわっと現れる（状態変化を目で伝える） */
@media (prefers-reduced-motion: no-preference) {
	.tr-phrasebook.is-mode-cards .tr-pb-entry.is-flipped .tr-pb-back {
		animation: tr-pb-reveal 0.18s ease-out;
	}
	.tr-phrasebook.is-mode-cards .tr-pb-entry:not(.is-flipped) .tr-pb-tap-hint {
		animation: tr-pb-pulse 2.4s ease-in-out infinite;
	}
	/* 初回のみ: カードが横に揺れて「スワイプできる」を身振りで伝える（JS が is-deck-intro を付与） */
	.tr-phrasebook.is-deck-intro .tr-pb-entry.is-deck-current {
		animation: tr-pb-nudge 1.5s ease-in-out 0.6s 2;
	}
}
@keyframes tr-pb-reveal {
	from { opacity: 0; transform: translateY(6px); }
	to   { opacity: 1; transform: none; }
}
@keyframes tr-pb-pulse {
	0%, 100% { opacity: 0.82; transform: none; }
	50%      { opacity: 1; transform: translateY(-2px); }
}
@keyframes tr-pb-nudge {
	0%, 100% { transform: none; }
	30%      { transform: translateX(-14px); }
	55%      { transform: translateX(7px); }
}

/* ── 例文（回答面の「例」）とデッキの大ボタン（2026-07-29）── */
.tr-pb-ex {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.2rem 0.45rem;
	margin: 0.35rem 0 0;
	padding: 0.5rem 0.65rem;
	border-radius: 6px;
	background: var(--wp--preset--color--tr-surface-soft, #f6f8fa);
	background: color-mix(in srgb, var(--lp-c, #9aa3ad) 7%, white);
	font-size: 0.85rem;
	line-height: 1.55;
}
.tr-pb-ex-label {
	flex: 0 0 auto;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.1em;
	padding: 0.16rem 0.4rem;
	border-radius: 4px;
	background: var(--lp-c, #6b7280);
	color: #ffffff;
}
.tr-pb-ex-en {
	font-weight: 600;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-pb-ex-gloss {
	flex-basis: 100%;
	font-size: 0.78rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
/* デッキ用の大きな前後ボタン（カード直下・親指ゾーン） */
.tr-pb-deck-actions {
	display: flex;
	gap: 0.6rem;
	max-width: 640px;
	margin: 0.9rem auto 0;
}
.tr-pb-deck-actions button {
	font-family: var(--wp--preset--font-family--inter);
	font-weight: 700;
	cursor: pointer;
	border-radius: 10px;
	padding: 0.95rem 1rem;
	font-size: 0.95rem;
	line-height: 1;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	background: var(--wp--preset--color--tr-surface, #ffffff);
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
}
.tr-pb-deck-actions .tr-pb-deck-next--primary {
	flex: 1;
	background: var(--wp--preset--color--tr-accent, #247A76);
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	color: #ffffff;
}
.tr-pb-deck-actions .tr-pb-deck-next--primary:hover {
	filter: brightness(1.08);
}

/* ── 語学学習サブサイトの専用ヘッダー（single-learning.html・2026-07-29）──
 * 旅行サイトの大ナビの代わりに、ワードマーク＋学習ナビ＋戻りリンクだけの軽い chrome。
 * sticky でツール操作中もナビに手が届く。 */
.tr-learning-header {
	position: sticky;
	top: 0;
	z-index: 9000;
	background: var(--wp--preset--color--tr-surface, #ffffff);
	border-bottom: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	padding: 0 var(--wp--preset--spacing--md, 24px);
}
.tr-lh-top {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	padding-top: 0.85rem;
}
.tr-lh-brand {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.25rem;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--wp--preset--color--tr-ink, #1A2332);
	text-decoration: none;
	white-space: nowrap;
}
.tr-lh-brand:hover {
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-lh-learning {
	margin-left: 0.5rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-lh-back {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--wp--preset--color--tr-muted, #6b7280);
	text-decoration: none;
	white-space: nowrap;
}
.tr-lh-back:hover {
	color: var(--wp--preset--color--tr-accent, #247A76);
	text-decoration: underline;
}
@media (max-width: 781px) {
	.tr-lh-brand {
		font-size: 1.1rem;
	}
}

/* 例文の再生ボタン（アイコンのみのコンパクト版・2026-07-29） */
.tr-pb-ex-tools {
	display: inline-flex;
	gap: 0.3rem;
	margin-left: 0.45rem;
	vertical-align: middle;
}
.tr-pb-speak--ex {
	padding: 0.22rem 0.45rem;
	font-size: 0.78rem;
	line-height: 1;
	border-radius: 999px;
	cursor: pointer;
	background: var(--wp--preset--color--tr-surface, #ffffff);
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
}
.tr-pb-speak--ex:hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
}

/* ── [tr_alphabet]: アルファベット読み方表（発音ガイド・2026-07-29）──
   セル全体が再生ボタン。JS 無効時は disabled のまま静的な表として読める。
   母音セル（--vowel）は暖色で強調（母音が5つだけという構造を目でも掴ませる）。 */
.tr-pb-alpha {
	list-style: none;
	margin: 1.2rem 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(4.8em, 1fr));
	gap: 0.5rem;
}
.tr-pb-alpha li {
	margin: 0;
}
.tr-pb-alpha-btn {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: flex-start;
	gap: 0.12rem;
	width: 100%;
	height: 100%;
	padding: 0.55rem 0.25rem 0.5rem;
	border-radius: 12px;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	background: var(--wp--preset--color--tr-surface, #ffffff);
	font-family: var(--wp--preset--font-family--inter);
	line-height: 1.25;
	cursor: pointer;
}
.tr-pb-alpha-btn[disabled] {
	cursor: default;
}
.tr-pb-alpha-btn:not([disabled]):hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
	box-shadow: 0 2px 10px rgba(31, 58, 95, 0.14);
}
.tr-pb-alpha-btn--vowel {
	background: color-mix(in srgb, var(--lp-inter, #E8A33A) 13%, white);
	border-color: color-mix(in srgb, var(--lp-inter, #E8A33A) 45%, white);
}
.tr-pb-alpha-letter {
	font-size: 1.35rem;
	font-weight: 800;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-pb-alpha-kana {
	font-size: 0.72rem;
	font-weight: 600;
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
}
.tr-pb-alpha-note {
	font-size: 0.6rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
	text-align: center;
}
/* 🔊 の目印は音声が使える（＝disabled が外れた）ときだけ出す */
.tr-pb-alpha-btn::after {
	content: "🔊";
	font-size: 0.6rem;
	opacity: 0.5;
	margin-top: 0.1rem;
}
.tr-pb-alpha-btn[disabled]::after {
	content: none;
}
@media (max-width: 480px) {
	.tr-pb-alpha {
		grid-template-columns: repeat(auto-fill, minmax(4em, 1fr));
		gap: 0.4rem;
	}
	.tr-pb-alpha-letter {
		font-size: 1.15rem;
	}
}

/* ── [tr_phonics]: つづり→音 対応表（発音ガイド・2026-07-31）──
   行＝パターン｜音の読み｜例語チップ（押すと再生）｜注記。ゼブラで行を追いやすく。
   例語チップは [tr_alphabet] と同じ disabled 契約（JS 無効でも語とカナは読める）。 */
.tr-pb-phonics {
	margin: 1.2rem 0;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	border-radius: 12px;
	overflow: hidden;
}
.tr-pb-ph-row {
	display: grid;
	grid-template-columns: 9.5em 1fr;
	gap: 0.25rem 0.9rem;
	align-items: start;
	padding: 0.65rem 0.9rem;
	border-top: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
}
.tr-pb-ph-row:first-child {
	border-top: none;
}
.tr-pb-ph-row:nth-child(even) {
	background: var(--wp--preset--color--tr-surface-soft, #f6f8fa);
}
.tr-pb-ph-pattern {
	display: block;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 1.02rem;
	font-weight: 800;
	line-height: 1.3;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-pb-ph-kana {
	display: block;
	font-size: 0.72rem;
	font-weight: 700;
	line-height: 1.35;
	color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-pb-ph-body {
	display: flex;
	flex-wrap: wrap;
	gap: 0.35rem;
	align-items: center;
}
.tr-pb-ph-chip {
	display: inline-flex;
	align-items: baseline;
	gap: 0.35rem;
	padding: 0.32rem 0.6rem;
	border-radius: 999px;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	background: var(--wp--preset--color--tr-surface, #ffffff);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.85rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--wp--preset--color--tr-ink, #1A2332);
	cursor: pointer;
}
.tr-pb-ph-chip small {
	font-size: 0.68rem;
	font-weight: 500;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-pb-ph-chip[disabled] {
	cursor: default;
}
/* 🔊 の目印は音声が使える（＝disabled が外れた）ときだけ */
.tr-pb-ph-chip::before {
	content: "🔊";
	font-size: 0.68rem;
	opacity: 0.55;
	align-self: center;
}
.tr-pb-ph-chip[disabled]::before {
	content: none;
}
.tr-pb-ph-chip:not([disabled]):hover {
	border-color: var(--wp--preset--color--tr-accent, #247A76);
}
.tr-pb-ph-note {
	flex-basis: 100%;
	margin: 0.1rem 0 0;
	font-size: 0.74rem;
	line-height: 1.55;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
@media (max-width: 600px) {
	.tr-pb-ph-row {
		grid-template-columns: 1fr;
		gap: 0.35rem;
	}
	.tr-pb-ph-head {
		display: flex;
		align-items: baseline;
		gap: 0.55rem;
	}
}

/* ── [tr_mouth]: 口の図（唇・歯・舌の使い方）──
   ★図は assets/mouth/{id}.svg（Wikimedia Commons の CC0 発音断面図を着色・切り取り・
   目印焼き込み。生成は travelers-route/scripts/build-mouth-svg.py）。
   目印の意味は全図共通: 触れる＝ターコイズの輪／触れない＝オレンジの破線／
   息＝青の矢印／震え＝赤の波線。 */
.tr-pb-mouths {
	display: grid;
	gap: 0.9rem;
	margin: 1.2rem 0;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
}
.tr-pb-mouth {
	margin: 0;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	border-radius: 14px;
	overflow: hidden;
	background: var(--wp--preset--color--tr-surface, #ffffff);
}
.tr-m-stage {
	position: relative;
}
/* 前＋横の二枚組。横は舌が主役の音だけ付くので、1枚のときは自然に横幅いっぱいになる */
.tr-m-views {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
	gap: 0.5rem;
	padding: 0.4rem 0.4rem 0;
}
.tr-m-view {
	text-align: center;
}
.tr-pb-mouth .tr-m {
	display: block;
	width: 100%;
	height: auto;
	background: #ffffff;
}
.tr-m-viewlabel {
	display: block;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.68rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-muted, #6b7280);
	padding-top: 0.15rem;
}
/* 図の上に重ねる一言。ほおの空白（左上）に置き、引き出し線が要点を指す */
.tr-m-call {
	position: absolute;
	left: 4.5%;
	top: 8%;
	max-width: 46%;
	box-sizing: border-box;
	padding: 0.26rem 0.5rem;
	border: 1.5px solid #1f3a5f;
	border-radius: 999px;
	background: #ffffff;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.72rem;
	font-weight: 700;
	line-height: 1.4;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-pb-mouth figcaption {
	padding: 0.7rem 0.85rem 0.85rem;
	font-family: var(--wp--preset--font-family--inter);
}
.tr-m-label {
	margin: 0 0 0.5rem;
	font-size: 0.92rem;
	font-weight: 800;
	line-height: 1.35;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-m-parts {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 0.3rem;
}
.tr-m-parts li {
	display: grid;
	grid-template-columns: 1.4em 2.4em 1fr;
	align-items: baseline;
	gap: 0.3rem;
	margin: 0;
	font-size: 0.8rem;
	line-height: 1.5;
	color: var(--wp--preset--color--tr-ink-soft, #4a5568);
}
.tr-m-part {
	font-size: 0.9rem;
}
.tr-m-partname {
	font-weight: 700;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-m-tip {
	margin: 0.55rem 0 0;
	padding-top: 0.5rem;
	border-top: 1px dashed var(--wp--preset--color--tr-rule, #d9dee5);
	font-size: 0.75rem;
	line-height: 1.6;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}

/* ── 語学カテゴリ着地の意思決定モジュール [tr_learning_index] ──
   地理カテゴリの国チョーザー・体験カテゴリのテーマ列と同じ役割。
   ⚠ カード全体をリンクにせず、見出しとツールを別々のリンクにしている。
   「コースの入口へ行きたい」と「早見表を今すぐ開きたい」は別の意図で、
   カード全体を1リンクにすると後者が1タップ余計になるため。 */
.tr-li-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
	gap: 1rem;
}
.tr-li-card {
	padding: 1.1rem 1.2rem 1rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-top: 3px solid var(--wp--preset--color--tr-accent, #2A8E89);
	border-radius: 2px;
	background: var(--wp--preset--color--tr-white, #fff);
}
a.tr-li-title {
	display: block;
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.3rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--wp--preset--color--tr-ink, #1A2332);
	text-decoration: none;
	background-image: none;   /* 本文の下線エフェクトを打ち消す（style.css の :not() チェーン参照） */
}
a.tr-li-title:hover { color: var(--wp--preset--color--tr-accent, #2A8E89); }
.tr-li-meta {
	margin: 0.3rem 0 0.8rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.78rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-li-tools {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}
a.tr-li-tool {
	padding: 0.32rem 0.7rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 999px;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.78rem;
	line-height: 1.5;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
	text-decoration: none;
	background-image: none;
}
a.tr-li-tool:hover {
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}

/* ── 4択クイズ [tr_phrasebook mode="quiz"] ──
   ★クイズ中は一覧を隠す。同じ画面に答えが並んでいたらクイズにならない。
   ただし DOM からは消さない（SSR 原則。JS 無効なら一覧が全部読める）。 */
.tr-phrasebook.is-mode-quiz .tr-pb-list { display: none; }
.tr-phrasebook.is-mode-quiz .tr-pb-count,
.tr-phrasebook.is-mode-quiz .tr-pb-deckbar,
.tr-phrasebook.is-mode-quiz .tr-pb-hint { display: none; }

.tr-pb-quiz {
	margin: 1rem 0 0;
	padding: 1.2rem 1.2rem 1rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 4px;
	background: var(--wp--preset--color--tr-white, #fff);
}
.tr-pb-quiz-progress {
	margin: 0 0 0.8rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.8rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-pb-quiz-progress strong { color: var(--wp--preset--color--tr-ink, #1A2332); }
.tr-pb-quiz-few {
	margin: 0.5rem 0;
	font-size: 0.9rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-pb-quiz-q {
	margin: 0 0 1rem;
	font-size: 1.15rem;
	font-weight: 700;
	line-height: 1.5;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-pb-quiz-choices {
	display: grid;
	gap: 0.5rem;
}
.tr-pb-quiz-choice {
	padding: 0.7rem 0.9rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 3px;
	background: var(--wp--preset--color--tr-white, #fff);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.98rem;
	line-height: 1.5;
	text-align: left;
	color: var(--wp--preset--color--tr-ink, #1A2332);
	cursor: pointer;
}
.tr-pb-quiz-choice:hover:not(:disabled) {
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
	background: var(--wp--preset--color--tr-surface, #f7f7f5);
}
.tr-pb-quiz-choice:disabled { cursor: default; }
/* ★正解は必ず色で示す（誤答したときも「どれが正解か」が同じ画面で分かる） */
.tr-pb-quiz-choice.is-correct {
	border-color: #2A8E89;
	background: rgba(42, 142, 137, 0.1);
	font-weight: 700;
}
.tr-pb-quiz-choice.is-wrong {
	border-color: #d64545;
	background: rgba(214, 69, 69, 0.08);
	text-decoration: line-through;
}
.tr-pb-quiz-feedback {
	margin: 0.9rem 0 0;
	font-size: 0.95rem;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-pb-quiz-ok { color: #2A8E89; font-weight: 700; }
.tr-pb-quiz-ng { color: #d64545; font-weight: 700; }
.tr-pb-quiz-answer { font-weight: 700; }
.tr-pb-quiz-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: 1rem;
}
.tr-pb-quiz-next,
.tr-pb-quiz-reset {
	padding: 0.5rem 1rem;
	border-radius: 999px;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.85rem;
	cursor: pointer;
}
.tr-pb-quiz-next {
	border: 1px solid var(--wp--preset--color--tr-accent, #2A8E89);
	background: var(--wp--preset--color--tr-accent, #2A8E89);
	color: #fff;
}
.tr-pb-quiz-reset {
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	background: transparent;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}

/* ── 1件目フィーチャーカードを使わないグリッド（--flat） ──
   ★語学記事はアイキャッチを持たない。写真前提の扱い（2×2に拡大・白文字を写真に重ねる）を
   写真なしで当てると、**白地に白文字**になってタイトルが消える（本番で実測）。
   写真の有無で見た目が壊れる装飾は、写真を持つ面にだけ効かせる。 */
.tr-article-grid--flat .wp-block-post-template > li:first-child {
	grid-column: auto;
	grid-row: auto;
}
.tr-article-grid--flat .wp-block-post-template > li:first-child .tr-article-card {
	position: static;
	justify-content: flex-start;
	min-height: 0;
	height: auto;
	padding: 0;
}
.tr-article-grid--flat .wp-block-post-template > li:first-child .tr-card-eyebrow {
	width: auto;
	padding: 0;
	background: none;
}
.tr-article-grid--flat .wp-block-post-template > li:first-child .tr-card-eyebrow a {
	color: var(--wp--preset--color--tr-accent, #247A76) !important;
}
.tr-article-grid--flat .wp-block-post-template > li:first-child .tr-card-title {
	font-size: var(--wp--preset--font-size--md) !important;
	line-height: 1.4 !important;
}
.tr-article-grid--flat .wp-block-post-template > li:first-child .tr-card-title a {
	color: var(--wp--preset--color--tr-ink, #1A2332) !important;
	text-shadow: none;
}
.tr-article-grid--flat .wp-block-post-template > li:first-child .tr-card-excerpt p {
	color: var(--wp--preset--color--tr-ink-soft, #4b5563) !important;
}
.tr-article-grid--flat .wp-block-post-template > li:first-child .tr-card-date {
	color: var(--wp--preset--color--tr-muted, #6b7280) !important;
}
@media (max-width: 781px) {
	.tr-article-grid--flat .wp-block-post-template > li:first-child {
		grid-column: auto;
	}
	.tr-article-grid--flat .wp-block-post-template > li:first-child .tr-article-card {
		min-height: 0;
	}
}

/* ★ファネルカードが4枚のとき（＝学習コーナーのあるロケール）は 2×2 にする。
   auto-fit の minmax(220px) だと本文幅 720px に3列しか入らず、4枚目だけが
   次の行に取り残されて崩れて見えた（本番で実測）。4列に詰めると1枚165pxで
   日本語が窮屈になるので、詰めるのではなく段を揃える。 */
@media (min-width: 560px) {
	.tr-funnel-router-grid--4 {
		grid-template-columns: repeat(2, 1fr);
	}
}
/* ⚠ 画面幅を広げても4列にはしない。この面は constrained レイアウトで
   **本文幅が約 720px に固定**されているため、ビューポートが 1280px でも
   4列だと1枚165pxのままで日本語が窮屈になる（実測）。
   広げるべきはカードの幅であって列数ではない。 */

/* ── 聞き取り（type="heard" ／ 音声で出題）── */

/* ★一覧に混ざったとき「自分が言う文」と読み違えないようにする印。
   type チップで絞れるだけでは、すべて表示のときに区別がつかない。 */
.tr-pb-heardtag {
	display: inline-block;
	margin: 0 0 0.35rem;
	padding: 0.15em 0.6em;
	border-radius: 999px;
	background: var(--wp--preset--color--tr-surface-deep, #eef1f4);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.68rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}

.tr-pb-quiz-modes {
	margin: 0 0 0.9rem;
}
.tr-pb-quiz-listen {
	padding: 0.4rem 0.9rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 999px;
	background: transparent;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.82rem;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
	cursor: pointer;
}
.tr-pb-quiz-listen.is-active {
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
	background: rgba(42, 142, 137, 0.1);
	color: var(--wp--preset--color--tr-accent, #2A8E89);
	font-weight: 700;
}

/* 音声出題の設問エリア。★大きめにする——ここが「問題文」なので、
   小さな再生アイコンだと何を押せばいいのか分からない。 */
.tr-pb-quiz-audio {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 0 0 1rem;
}
.tr-pb-quiz-replay {
	padding: 0.7rem 1.2rem;
	border: 1px solid var(--wp--preset--color--tr-accent, #2A8E89);
	border-radius: 3px;
	background: var(--wp--preset--color--tr-accent, #2A8E89);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.95rem;
	color: #fff;
	cursor: pointer;
}
.tr-pb-quiz-replay[data-pb-slow] {
	background: transparent;
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}

/* ── 出発日から逆算する学習プラン ──
   ⚠ 名前は tr-plan。トップの [tr_trip_chips]（.tr-trip-chips）とは別物で、
   「どっちの trip か」で迷わないように接頭辞を分けてある。
   ★読み物ではなく操作卓なので本文より一段浮かせるが、派手にはしない——
   ここが目立ちすぎると、道具を使いに来た人の視線が先に奪われる。 */
.tr-plan {
	margin: 0 0 1.6rem;
	padding: 0.9rem 1.1rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-left: 3px solid var(--wp--preset--color--tr-accent, #2A8E89);
	border-radius: 3px;
	background: var(--wp--preset--color--tr-surface, #f7f7f5);
	font-family: var(--wp--preset--font-family--inter);
}
.tr-plan-set {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.8rem;
}
.tr-plan-label {
	font-size: 0.85rem;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
}
.tr-plan-date {
	padding: 0.35rem 0.6rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 3px;
	font-family: inherit;
	font-size: 0.9rem;
	background: #fff;
}
.tr-plan-body { margin-top: 0.7rem; }
.tr-plan-count,
.tr-plan-today {
	margin: 0 0 0.3rem;
	font-size: 0.95rem;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-plan-days {
	font-size: 1.3rem;
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}
.tr-plan-step {
	margin: 0 0 0.6rem;
	font-size: 0.92rem;
	line-height: 1.7;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-plan-clear {
	padding: 0.2rem 0.6rem;
	border: none;
	background: none;
	font-family: inherit;
	font-size: 0.75rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
	text-decoration: underline;
	cursor: pointer;
}

/* ── オフライン保存 ── 学習プランの中に置く（出発が近い人の目に入る場所） */
.tr-off {
	margin: 0.8rem 0 0.6rem;
	padding-top: 0.7rem;
	border-top: 1px dashed var(--wp--preset--color--tr-rule, #e5e7eb);
}
.tr-off-save {
	padding: 0.45rem 0.9rem;
	border: 1px solid var(--wp--preset--color--tr-primary, #1F3A5F);
	border-radius: 999px;
	background: transparent;
	font-family: inherit;
	font-size: 0.85rem;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
	cursor: pointer;
}
.tr-off-save:hover {
	background: var(--wp--preset--color--tr-primary, #1F3A5F);
	color: #fff;
}
.tr-off-note,
.tr-off-doing,
.tr-off-done,
.tr-off-fail {
	margin: 0.4rem 0 0;
	font-size: 0.78rem;
	line-height: 1.6;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-off-done { color: var(--wp--preset--color--tr-accent, #2A8E89); font-weight: 700; }
.tr-off-fail { color: #d64545; }

/* ── 現地語のひとこと [tr_greetings] ──
   ★4語しか無いのだから、表よりも「意味 → 現地語 → カナ」の縦の並びのほうが読みやすい。
   国ハブでは本文の末尾に、by-country 記事では16か国が縦に続く。 */
.tr-gr-wrap { margin-top: 2.2rem; }
.tr-gr-h {
	margin: 0 0 0.6rem;
	font-family: var(--wp--preset--font-family--playfair);
	font-size: var(--wp--preset--font-size--h3);
}
.tr-gr-lead,
.tr-gr-note {
	margin: 0 0 0.8rem;
	font-size: 0.9rem;
	line-height: 1.7;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
}
.tr-gr-country {
	margin: 1.8rem 0 0.5rem;
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.2rem;
}
.tr-gr-list {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
	gap: 0.7rem;
}
.tr-gr-item {
	padding: 0.7rem 0.9rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-left: 3px solid var(--wp--preset--color--tr-accent, #2A8E89);
	border-radius: 2px;
	background: var(--wp--preset--color--tr-white, #fff);
}
.tr-gr-mean {
	display: block;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.72rem;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-gr-word {
	display: block;
	margin: 0.15rem 0 0.1rem;
	font-size: 1.1rem;
	font-weight: 700;
	line-height: 1.4;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-gr-pron {
	display: block;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.82rem;
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}
.tr-gr-tip {
	display: block;
	margin-top: 0.35rem;
	font-size: 0.76rem;
	line-height: 1.6;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
}

/* ── 検索・場面リンク・絞り込み印刷（提案E） ── */
.tr-pb-searchbox { margin: 0 0 0.7rem; }
.tr-pb-search {
	width: 100%;
	max-width: 22rem;
	padding: 0.45rem 0.8rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 999px;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.9rem;
	background: #fff;
}
.tr-pb-scenelink {
	margin: 0.5rem 0 0;
	font-size: 0.85rem;
}

/* ★印刷では操作 UI を落とし、隠れている行も出さない。
   「いま画面に見えているものがそのまま紙になる」を守る。 */
@media print {
	.tr-pb-filters,
	.tr-pb-searchbox,
	.tr-pb-deckbar,
	.tr-pb-quiz,
	.tr-plan,
	.tr-off,
	.tr-pb-scenelinks,
	.tr-pb-hint,
	.tr-pb-learn,
	.tr-pb-speak {
		display: none !important;
	}
	.tr-pb-entry.is-hidden { display: none !important; }
	.tr-pb-entry { break-inside: avoid; }
}

/* ★早見表の「ここから下は相手が言うこと」。紙に印が残らない以上、節で分けるしかない。 */
.tr-pb-sheet-sub {
	margin: 0.6rem 0 0.2rem;
	padding: 0.15rem 0.5rem;
	display: inline-block;
	border-radius: 2px;
	background: var(--wp--preset--color--tr-surface-deep, #eef1f4);
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
@media print {
	.tr-pb-sheet-sub {
		background: none;
		border-bottom: 1px solid #000;
		padding: 0;
	}
}

/* ★カナで書き表せない区別がある言語の但し書き。ツールの限界を先に言うためのものなので、
   注意書きらしく見せる（読み飛ばされると意味がない）。印刷にも残す。 */
.tr-pb-caveat {
	margin: 0 0 1rem;
	padding: 0.6rem 0.8rem;
	border-left: 3px solid var(--wp--preset--color--tr-accent, #2A8E89);
	background: var(--wp--preset--color--tr-surface-deep, #eef1f4);
	border-radius: 0 3px 3px 0;
	font-size: 0.82rem;
	line-height: 1.7;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
@media print {
	.tr-pb-caveat {
		background: none;
		border-left: 2pt solid #000;
		font-size: 8.5pt;
	}
}

/* ★国ハブ「現地語のひとこと」からコースへの導線。挨拶4語の下に1行。 */
.tr-gr-course {
	margin: 0.8rem 0 0;
}
.tr-gr-course-link {
	display: inline-block;
	padding: 0.5rem 0.9rem;
	border: 1px solid var(--wp--preset--color--tr-accent, #2A8E89);
	border-radius: 4px;
	font-size: 0.85rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-accent, #2A8E89);
	text-decoration: none;
}
.tr-gr-course-link:hover {
	background: var(--wp--preset--color--tr-accent, #2A8E89);
	color: #fff;
}

/* ★自分の進み具合（stats 帯の中）。実績ゼロのときは JS が hidden のままにする。 */
.tr-pb-progress {
	color: var(--wp--preset--color--tr-accent, #2A8E89);
	font-weight: 700;
}
/* ★この言葉が使える国。登録簿の countries を逆向きに使った枠（国ハブ→コースの片道だった）。 */
.tr-pb-usedin {
	margin: 0.4rem 0 0;
	font-size: 0.8rem;
	color: var(--wp--preset--color--tr-ink-soft, #4A5160);
}
.tr-pb-usedin a {
	font-weight: 700;
}
.tr-pb-usedin-sep {
	opacity: 0.5;
}

/* ★音のポイント。caveat の直後に畳んで置く（ツールを使いに来た人の手前に表を広げない）。 */
.tr-pb-sp {
	margin: 0 0 1rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	border-radius: 4px;
	background: var(--wp--preset--color--tr-surface, #fff);
}
.tr-pb-sp-sum {
	padding: 0.6rem 0.9rem;
	font-size: 0.85rem;
	font-weight: 700;
	cursor: pointer;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-pb-sp-lead,
.tr-pb-sp-tip {
	margin: 0 0.9rem 0.7rem;
	font-size: 0.78rem;
	line-height: 1.8;
	color: var(--wp--preset--color--tr-ink-soft, #4A5160);
}
.tr-pb-sp-row {
	padding-top: 0.2rem;
	border-top: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
}
h4.tr-pb-sp-h {
	margin: 0.7rem 0.9rem 0.4rem;
	font-size: 0.85rem;
	font-weight: 700;
}
ul.tr-pb-sp-items {
	margin: 0 0.9rem 0.5rem;
	padding: 0;
	list-style: none;
}
.tr-pb-sp-items li {
	display: flex;
	align-items: baseline;
	gap: 0.5rem;
	flex-wrap: wrap;
	padding: 0.25rem 0;
}
.tr-pb-sp-word {
	font-weight: 700;
	font-size: 1.05rem;
}
.tr-pb-sp-kana {
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.76rem;
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}
.tr-pb-sp-gloss {
	font-size: 0.78rem;
	color: var(--wp--preset--color--tr-ink-soft, #4A5160);
}
/* 紙には出さない（🔊 が押せない場所で音の表は意味を持たない） */
@media print {
	.tr-pb-sp {
		display: none;
	}
}

/* ★会話で通す。ペアを Q→A の順に並べ、相手＝左／自分＝右のやりとりとして見せる。
   並べ替えは JS が style.order を書く（DOM は動かさない＝絞り込み・検索・デッキを壊さない）。 */
/* ⚠ order（flex）で並べ替えてはいけない。見た目しか変わらず、読み上げと Tab 順は
   DOM のまま残る（実測で質問と答えが10項目離れて逆順になっていた）。
   並べ替えは JS が DOM でやり、ここは左右の振り分けにだけ flex を使う。 */
.tr-phrasebook.is-mode-dialogue .tr-pb-list {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}
.tr-phrasebook.is-mode-dialogue .tr-pb-entry {
	max-width: 82%;
	border-radius: 12px;
}
/* 相手が言うこと＝左寄せ。data 属性で当てるので、type が増えても CSS 側は追わなくていい。 */
.tr-phrasebook.is-mode-dialogue .tr-pb-entry[data-pb-type="heard"] {
	align-self: flex-start;
	border-bottom-left-radius: 3px;
	background: var(--wp--preset--color--tr-surface-deep, #eef1f4);
}
/* 自分が言うこと＝右寄せ */
.tr-phrasebook.is-mode-dialogue .tr-pb-entry:not([data-pb-type="heard"]) {
	align-self: flex-end;
	border-bottom-right-radius: 3px;
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
}
/* 会話中はペアのリンクを出さない（隣に並んでいるものへ飛ばせても意味がない） */
.tr-phrasebook.is-mode-dialogue .tr-pb-pair {
	display: none;
}
@media (max-width: 600px) {
	.tr-phrasebook.is-mode-dialogue .tr-pb-entry {
		max-width: 92%;
	}
}

/* ★今日の10枚。毎日戻ってくる理由を作る枠なので、絞り込み UI より前・一段強い見た目で置く。 */
.tr-pb-today {
	margin: 0 0 1rem;
	padding: 0.9rem 1rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #d9dee5);
	border-left: 4px solid var(--wp--preset--color--tr-accent, #2A8E89);
	border-radius: 4px;
	background: var(--wp--preset--color--tr-surface, #fff);
}
.tr-pb-today-go {
	padding: 0.55rem 1.1rem;
	border: 0;
	border-radius: 4px;
	background: var(--wp--preset--color--tr-accent, #2A8E89);
	color: #fff;
	font-weight: 700;
	font-size: 0.95rem;
	cursor: pointer;
}
.tr-pb-today-go[aria-pressed="true"] {
	background: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-pb-today-lead {
	margin: 0.5rem 0 0;
	font-size: 0.8rem;
	line-height: 1.7;
	color: var(--wp--preset--color--tr-ink-soft, #4A5160);
}
.tr-pb-today-done {
	margin: 0.5rem 0 0;
	font-size: 0.85rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}
@media print {
	.tr-pb-today {
		display: none;
	}
}

/* ★会話ペア（⇄）。往復の相手の札へ飛ぶリンク。リンク先はハイライトして
   「どこに飛んだのか」を見失わせない（ページ内ジャンプは着地が分かりにくい）。 */
.tr-pb-pair {
	margin: 0.35rem 0 0;
	font-size: 0.78rem;
	color: var(--wp--preset--color--tr-ink-soft, #4A5160);
}
.tr-pb-pair-label {
	font-weight: 700;
	font-size: 0.7rem;
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}
.tr-pb-pair a {
	text-decoration: underline;
	text-underline-offset: 2px;
}
.tr-pb-pair.is-hidden {
	display: none;
}
/* デッキ（1枚ずつ）モードでは相手の札が常に display:none なので、ペアのリンクは丸ごと隠す。
   JS の実在判定は「見えている札どうし」用で、デッキはモードとして跳び先が無い。 */
.tr-phrasebook.is-mode-deck .tr-pb-pair {
	display: none;
}
.tr-pb-entry:target {
	outline: 2px solid var(--wp--preset--color--tr-accent, #2A8E89);
	outline-offset: 2px;
	scroll-margin-top: 6rem; /* スティッキーヘッダーに隠れない着地位置 */
}
/* 印刷では飛べないのでリンクの下線だけ落とす（本文は残す＝対の情報は紙でも役に立つ） */
@media print {
	.tr-pb-pair a {
		text-decoration: none;
	}
}

/* ★早見表に出す注意書き（★/⚠ の付いた note だけ）。行の直下にぶら下げて、
   どのフレーズの話かを見失わせない。列を増やすと表が縦に潰れるので増やさない。
   ⚠ 600px 以下では上の規則が .tr-pb-sheet-pron を display:none にするため、
   データ行は 2 セル・この行は colspan=3 になる。表の列数は colspan を含む最大値で
   決まり、セルの無い 3 列目は幅 0 に潰れるので、両者の右端は揃う。
   ★colspan は CSS で変えられない以上、ここは「揃うことを当てにしている」箇所。
   カナ列の隠し方を変えるときは一緒に見直す。 */
.tr-pb-sheet-noterow td {
	border-top: 0;
	padding-top: 0;
	padding-left: 1.2rem;
	font-size: 0.74rem;
	line-height: 1.6;
	color: var(--wp--preset--color--tr-ink-soft, #55617a);
	background: var(--wp--preset--color--tr-surface-deep, #eef1f4);
}
@media print {
	.tr-pb-sheet-noterow td {
		font-size: 8pt;
		background: none;
		padding-left: 8pt;
	}
}

/* ── 歴史軸 [tr_timeline]（出来事 ⇄ 現物）──
   ★年号を左の細い列に、右に見出し・本文・現物チップ。年表の「線」は左列の border で描く。
   現物チップは a 要素なので、本文の下線エフェクト（.wp-block-post-content a:not(…)）から
   .tr-hx-tg を除外してある（上の :not() チェーン参照）。 */
.tr-hx-wrap { margin-top: 2.4rem; }
.tr-hx-h {
	margin: 0 0 0.4rem;
	font-family: var(--wp--preset--font-family--playfair);
	font-size: var(--wp--preset--font-size--h3);
}
.tr-hx-lead {
	margin: 0 0 1rem;
	font-size: 0.9rem;
	line-height: 1.7;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
}
.tr-hx-filters {
	margin: 0 0 1.2rem;
	padding: 0.9rem 1rem 0.6rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 8px;
	background: var(--wp--preset--color--tr-surface, #f7f8fa);
}
.tr-hx-chips {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.4rem;
	margin: 0 0 0.6rem;
}
.tr-hx-chips-legend {
	flex: 0 0 auto;
	min-width: 5.5em;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-hx-chip {
	padding: 0.28rem 0.7rem;
	border: 1px solid color-mix(in srgb, var(--wp--preset--color--tr-ink, #1A2332) 20%, transparent);
	border-radius: 999px;
	background: #fff;
	color: var(--wp--preset--color--tr-ink, #1A2332);
	font-size: 0.78rem;
	line-height: 1.5;
	cursor: pointer;
	transition: background .15s, border-color .15s, color .15s;
}
.tr-hx-chip:hover {
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}
.tr-hx-chip.is-on {
	background: var(--wp--preset--color--tr-accent, #2A8E89);
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
	color: #fff;
	font-weight: 700;
}
.tr-hx-chip:focus-visible {
	outline: 2px solid var(--wp--preset--color--tr-primary, #1F3A5F);
	outline-offset: 2px;
}
.tr-hx-home-toggle,
.tr-hx-ms-only-toggle {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	margin: 0.2rem 0 0.4rem;
	font-size: 0.82rem;
}
.tr-hx-ms-only-toggle { margin-left: 1rem; }
/* 「節目だけ」の間、現物系の絞り込みは効かない（JS が無視する）ので見た目でも無効化する */
.tr-hx--ms-only [data-hx-filter="kind"],
.tr-hx--ms-only [data-hx-filter="thread"],
.tr-hx--ms-only [data-hx-filter="country"],
.tr-hx--ms-only .tr-hx-home-toggle { opacity: 0.45; pointer-events: none; }
.tr-hx-count {
	margin: 0;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.78rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-hx-count [data-hx-count] {
	font-weight: 700;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
/* ★.wp-block-post-content ol / h3 / li + li（詳細度 0,1,1）に負けないよう .tr-hx を前置して (0,2,x) にする。
   素の .tr-hx-title だと h3 の margin-top 2.25rem が勝ち、見出しが年号列より下にずれる。 */
.tr-hx .tr-hx-list {
	margin: 0;
	padding: 0;
	list-style: none;
	line-height: inherit;
}
.tr-hx .tr-hx-ev {
	margin: 0;
	display: grid;
	grid-template-columns: minmax(5.2em, auto) 1fr;
	gap: 0 1rem;
	padding: 0.9rem 0;
	border-top: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
}
.tr-hx .tr-hx-ev:first-child { border-top: 0; }
.tr-hx .tr-hx-ev + .tr-hx-ev { margin-top: 0; }
.tr-hx .tr-hx-ev[hidden] { display: none; }
.tr-hx-year {
	padding-top: 0.15rem;
	/* ★Playfair は数字（.tr-hx-yn）だけに当てる。列ごと Playfair にすると、和文グリフの無い
	   「年・前・頃」がフォールバック書体に落ちてサイズと基線がちぐはぐになる（読みにくいと指摘あり）。
	   数字大・単位小の常套に分ける */
	font-size: 0.78rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--wp--preset--color--tr-accent, #2A8E89);
	text-align: right;
	white-space: nowrap;
}
.tr-hx-yn {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.15rem;
	line-height: 1;
}
.tr-hx-body { min-width: 0; }
.tr-hx h3.tr-hx-title {
	margin: 0 0 0.35rem;
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.05rem;
	line-height: 1.45;
}
.tr-hx .tr-hx-ev--compact h3.tr-hx-title { font-size: 0.98rem; }
.tr-hx p.tr-hx-desc {
	margin: 0 0 0.5rem;
	font-size: 0.9rem;
	line-height: 1.8;
}
.tr-hx p.tr-hx-home {
	margin: 0 0 0.5rem;
	padding: 0.45rem 0.7rem;
	border-left: 3px solid var(--wp--preset--color--tr-primary, #1F3A5F);
	background: var(--wp--preset--color--tr-surface-deep, #eef1f4);
	border-radius: 0 3px 3px 0;
	font-size: 0.84rem;
	line-height: 1.7;
}
.tr-hx-home-label {
	display: inline-block;
	margin-right: 0.3rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.7rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-hx .tr-hx-tangibles {
	margin: 0.2rem 0 0;
	padding: 0;
	list-style: none;
	line-height: inherit;
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}
a.tr-hx-tg {
	display: inline-flex;
	align-items: center;
	gap: 0.3rem;
	padding: 0.3rem 0.65rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 6px;
	background: #fff;
	color: var(--wp--preset--color--tr-ink, #1A2332);
	font-size: 0.82rem;
	line-height: 1.4;
	text-decoration: none;
	transition: border-color .15s, background .15s;
}
a.tr-hx-tg:hover {
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
	background: color-mix(in srgb, var(--wp--preset--color--tr-accent) 6%, #fff);
}
.tr-hx .tr-hx-tangibles li { margin: 0; }
.tr-hx .tr-hx-tangibles li + li { margin-top: 0; }
.tr-hx-tg-name { font-weight: 600; }
.tr-hx-tg-via {
	font-size: 0.72rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-hx-tg-flag { font-size: 0.85rem; }
.tr-hx p.tr-hx-src {
	margin: 0.4rem 0 0;
	font-size: 0.72rem;
}
.tr-hx-src a { color: var(--wp--preset--color--tr-muted, #6b7280); }
.tr-hx-empty {
	margin: 1rem 0;
	font-size: 0.9rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-hx-more {
	margin: 0.8rem 0 0;
	font-size: 0.9rem;
	font-weight: 600;
}
@media (max-width: 600px) {
	.tr-hx .tr-hx-ev { grid-template-columns: 1fr; gap: 0.2rem; }
	.tr-hx-year { text-align: left; font-size: 0.72rem; }
	.tr-hx-yn { font-size: 1.05rem; }
	.tr-hx-chips-legend { min-width: 100%; }
	/* トグル2つは縦に積む（横並び用の margin-left が折り返し後の字下げになっていた。16周目） */
	.tr-hx-home-toggle, .tr-hx-ms-only-toggle { display: flex; }
	.tr-hx-ms-only-toggle { margin-left: 0; }
}
@media print {
	.tr-hx-filters { display: none !important; }
	.tr-hx .tr-hx-ev[hidden] { display: none !important; }
	.tr-hx .tr-hx-ev { break-inside: avoid; }
}

/* ── 歴史軸・物語層（2026-08-24 改訂: 学び→行くの順）──
   「物語で読む」が学びの主リンク、現物チップは「📍 行くなら」に退く。
   .tr-hx--embed は物語ページの章下に [tr_event] で埋め込むカード（安定アンカー ev-{id} 付き）。 */
.tr-hx p.tr-hx-story {
	margin: 0 0 0.6rem;
	font-size: 0.9rem;
	font-weight: 600;
}
.tr-hx-story-link { white-space: nowrap; }
.tr-hx p.tr-hx-go-label {
	margin: 0 0 0.3rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-hx--embed {
	margin: 1.2rem 0 2rem;
	padding: 0.4rem 1.1rem 0.9rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-left: 3px solid var(--wp--preset--color--tr-accent, #2A8E89);
	border-radius: 8px;
	background: var(--wp--preset--color--tr-surface, #f7f8fa);
	scroll-margin-top: 5rem; /* アンカー着地時にヘッダーへ潜らない */
}
.tr-hx--embed .tr-hx-ev { border-top: 0; }

/* ── 歴史軸・冒頭サマリ「大きな流れ」（A1）と時代区切り（A2）、物語の要約・章目次（A3）──
   ストリップは上から読むと あらすじ、押すと時代の絞り込み。66件の羅列を「5つの章」に見せる。 */
.tr-hx-flow { margin: 0 0 1.2rem; }
.tr-hx-flow-lead {
	margin: 0 0 0.7rem;
	font-size: 0.9rem;
	line-height: 1.7;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
}
.tr-hx .tr-hx-flow-strip {
	margin: 0;
	padding: 0;
	list-style: none;
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
}
.tr-hx .tr-hx-flow-strip li { margin: 0; }
.tr-hx .tr-hx-flow-strip li + li { margin-top: 0; }
button.tr-hx-flow-item {
	width: 100%;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.3rem 0.6rem;
	padding: 0.55rem 0.8rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-left: 3px solid var(--wp--preset--color--tr-accent, #2A8E89);
	border-radius: 6px;
	background: #fff;
	text-align: left;
	cursor: pointer;
	transition: background .15s, border-color .15s;
}
button.tr-hx-flow-item:hover { background: color-mix(in srgb, var(--wp--preset--color--tr-accent, #2A8E89) 6%, #fff); }
button.tr-hx-flow-item.is-on {
	background: color-mix(in srgb, var(--wp--preset--color--tr-accent, #2A8E89) 12%, #fff);
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
}
button.tr-hx-flow-item:focus-visible { outline: 2px solid var(--wp--preset--color--tr-primary, #1F3A5F); outline-offset: 2px; }
.tr-hx-flow-era {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-hx-flow-range {
	font-size: 0.7rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
.tr-hx-flow-text {
	flex: 1 1 12em;
	font-size: 0.88rem;
	line-height: 1.6;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.tr-hx-flow-count {
	margin-left: auto;
	padding: 0.1rem 0.5rem;
	border-radius: 999px;
	background: var(--wp--preset--color--tr-surface-deep, #eef1f4);
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-hx .tr-hx-era-sep {
	margin: 0;
	display: flex;
	align-items: baseline;
	gap: 0.6rem;
	padding: 1.4rem 0 0.35rem;
	border-top: 0;
	border-bottom: 2px solid var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-hx .tr-hx-era-sep[hidden] { display: none; }
.tr-hx .tr-hx-era-sep + .tr-hx-ev { border-top: 0; }
.tr-hx-era-sep-label {
	font-family: var(--wp--preset--font-family--playfair);
	font-size: 1.15rem;
	font-weight: 900;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-hx-era-sep-range {
	font-size: 0.75rem;
	color: var(--wp--preset--color--tr-muted, #6b7280);
}
/* 物語ページ: 冒頭の要約と章の目次（A3）。アンカーは ch-*（明示 id）と ev-*（出来事）だけを使う */
.tr-hx-abstract {
	margin: 0 0 1rem;
	padding: 0.9rem 1.1rem;
	border-left: 3px solid var(--wp--preset--color--tr-accent, #2A8E89);
	background: var(--wp--preset--color--tr-surface, #f7f8fa);
	border-radius: 0 6px 6px 0;
}
.tr-hx-abstract-title {
	margin: 0 0 0.4rem;
	font-family: var(--wp--preset--font-family--inter);
	font-size: 0.75rem;
	font-weight: 700;
	color: var(--wp--preset--color--tr-primary, #1F3A5F);
}
.tr-hx-abstract ul { margin: 0; padding: 0 0 0 1.2em; }
.tr-hx-abstract li { margin: 0; font-size: 0.92rem; line-height: 1.8; }
.tr-hx-chapters {
	margin: 0 0 2rem;
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}
.wp-block-post-content a.tr-hx-chapter {
	padding: 0.3rem 0.7rem;
	border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
	border-radius: 999px;
	background: #fff;
	font-size: 0.82rem;
	text-decoration: none;
	color: var(--wp--preset--color--tr-ink, #1A2332);
}
.wp-block-post-content a.tr-hx-chapter:hover {
	border-color: var(--wp--preset--color--tr-accent, #2A8E89);
	color: var(--wp--preset--color--tr-accent, #2A8E89);
}
h2[id^="ch-"] { scroll-margin-top: 5rem; }

/* ── 歴史軸・モバイルのフィルタ折りたたみ（B6）──
   ★.tr-hx--collapsible は JS が生きているときだけ付く。素の SSR ではトグルが消え全フィルタ表示
   （LiteSpeed で JS が落ちても絞り込み UI が使える側に倒す）。 */
.tr-hx-filters-toggle { display: none; }
@media (max-width: 600px) {
	.tr-hx--collapsible .tr-hx-filters-toggle {
		display: inline-flex;
		align-items: center;
		gap: 0.3rem;
		margin: 0 0 0.4rem;
		padding: 0.35rem 0.8rem;
		border: 1px solid var(--wp--preset--color--tr-rule, #e5e7eb);
		border-radius: 999px;
		background: #fff;
		font-size: 0.82rem;
		font-weight: 700;
		color: var(--wp--preset--color--tr-primary, #1F3A5F);
		cursor: pointer;
	}
	.tr-hx--collapsible .tr-hx-filters-toggle[aria-expanded="true"] span { transform: rotate(180deg); }
	.tr-hx--collapsible .tr-hx-filters-toggle[aria-expanded="false"] + .tr-hx-filters-body { display: none; }
}

/* 国ハブ注入の1行サマリ（B5） */
.tr-hx-country-note {
	margin: 0 0 0.8rem;
	font-size: 0.92rem;
	line-height: 1.8;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
}

/* ── 歴史軸・現物の実走写真（出来事カードの代表写真）──
   ★float なので desktop の3列グリッドでも mobile の1列でも本文が回り込む。
   150x150 の正方サムネイル固定（WP が必ず生成する唯一の予測可能な名前）。 */
.tr-hx img.tr-hx-photo,
.tr-hx svg.tr-hx-photo {
	float: right;
	width: 96px;
	height: 96px;
	object-fit: cover;
	border-radius: 8px;
	margin: 0 0 0.5rem 0.8rem;
}
.tr-hx .tr-hx-ev--compact img.tr-hx-photo,
.tr-hx .tr-hx-ev--compact svg.tr-hx-photo { width: 64px; height: 64px; }
@media (max-width: 600px) {
	.tr-hx img.tr-hx-photo,
	.tr-hx svg.tr-hx-photo { width: 76px; height: 76px; }
}
@media print {
	.tr-hx img.tr-hx-photo,
	.tr-hx svg.tr-hx-photo { display: none; }
}

/* ── 歴史軸・絵本調シーン（物語の章冒頭のフラットイラスト）──
   実データの概念図（tr-geomap）と同じ配色のベクター場面絵。横スクロール不要（自身が縮む）。 */
svg.tr-hx-scene {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 10px;
	margin: 0.4rem 0 1.4rem;
}
@media print {
	svg.tr-hx-scene { max-height: 220px; }
}

/* ── 歴史軸・世界史の骨格（節目の文脈行）──
   現物カードの間に挟まる細い行。カードと違い「行くなら」を持たない＝背骨の年表。 */
.tr-hx .tr-hx-ms {
	margin: 0;
	display: grid;
	grid-template-columns: minmax(5.2em, auto) 1fr;
	gap: 0 1rem;
	padding: 0.28rem 0;
	border-top: 0;
}
.tr-hx .tr-hx-ms + .tr-hx-ms { margin-top: 0; }
.tr-hx .tr-hx-ms[hidden] { display: none; }
.tr-hx .tr-hx-ms .tr-hx-year { opacity: 0.75; }
.tr-hx .tr-hx-ms .tr-hx-year .tr-hx-yn { font-size: 0.95rem; }
.tr-hx-ms-body {
	align-self: center;
	font-size: 0.85rem;
	color: var(--wp--preset--color--tr-ink-soft, #4b5563);
	border-left: 3px dotted var(--wp--preset--color--tr-rule, #d5dae2);
	padding-left: 0.7rem;
	line-height: 1.6;
}
.tr-hx-ms-title { font-weight: 600; color: var(--wp--preset--color--tr-ink, #1A2332); }
.tr-hx-ms-note { color: var(--wp--preset--color--tr-muted, #6b7280); }
.tr-hx-ms-icon { font-size: 0.8rem; }
.tr-hx-ms-src { font-size: 0.7rem; opacity: 0.75; white-space: nowrap; } /* 「出／典」と字の途中で折れる（実測 2026-09-04） */
.tr-hx-ms-story { font-size: 0.8rem; font-weight: 600; white-space: nowrap; } /* 色は本文リンク既定（プライマリ）。出来事カードの物語リンクと同じ。accent を書いても .wp-block-post-content a:not() に負ける（実測 2026-09-04） */
@media (max-width: 600px) {
	.tr-hx .tr-hx-ms { grid-template-columns: 1fr; gap: 0; }
	.tr-hx .tr-hx-ms .tr-hx-year { text-align: left; }
}
