/* ==========================================================================
   Pages
   トップ・施設ページ・一覧ページ・マガジン等のページ固有レイアウト
   ========================================================================== */

/* Hero (front page)
   ---------------------------------------------------------------------- */
.tf-hero {
    padding: var(--tf-space-xl) 0 var(--tf-space-lg);
}

.tf-hero__inner {
    display: grid;
    grid-template-columns: 0.95fr 1.05fr;
    gap: var(--tf-space-xl);
    align-items: center;
}

.tf-hero__content {
    text-align: left;
}

.tf-hero__title {
    font-size: 2.3rem;
    font-weight: 500;
    line-height: 1.55;
    margin-bottom: var(--tf-space-md);
}

.tf-hero__lead {
    color: var(--tf-text-secondary);
    font-size: 0.92rem;
    line-height: 1.9;
    margin-bottom: var(--tf-space-lg);
}

.tf-hero__cta {
    gap: 10px;
}

.tf-hero__media {
    aspect-ratio: 16 / 11;
    border-radius: var(--tf-radius);
    overflow: hidden;
    background-color: var(--tf-cream);
}

.tf-hero__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Search band (front page, below hero)
   ---------------------------------------------------------------------- */
.tf-searchband {
    padding-bottom: var(--tf-space-xl);
}

/* Sections (front page)
   ---------------------------------------------------------------------- */
.tf-section {
    padding: var(--tf-space-xl) 0;
}

.tf-section--area {
    background-color: var(--tf-cream);
}

.tf-section__header {
    position: relative;
    text-align: center;
    margin-bottom: var(--tf-space-lg);
}

.tf-section__title {
    font-family: var(--tf-font-logo);
    font-size: 1.4rem;
    font-weight: 500;
    letter-spacing: 0.18em;
    color: var(--tf-text-primary);
}

.tf-section__lead {
    margin-top: 6px;
    color: var(--tf-text-secondary);
    font-size: 0.85rem;
    letter-spacing: 0.05em;
}

.tf-section__more-link {
    position: absolute;
    right: 0;
    bottom: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
    letter-spacing: 0.06em;
    color: var(--tf-text-secondary);
}

.tf-section__more-link:hover {
    color: var(--tf-dusty-rose);
}

/* 各ブロックの「すべて見る」ボタン（リスト下・中央） */
.tf-section__more {
    margin-top: var(--tf-space-lg);
    text-align: center;
}

/* Area tiles (front page) — 写真タイル + 都市名オーバーレイ
   ---------------------------------------------------------------------- */
.tf-area-tiles {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: var(--tf-space-sm);
}

.tf-area-tile__link {
    display: block;
}

.tf-area-tile__media {
    display: block;
    aspect-ratio: 3 / 4;
    background-size: cover;
    background-position: center;
    border-radius: var(--tf-radius);
    overflow: hidden;
    position: relative;
}

.tf-area-tile__media::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, rgba(93, 82, 75, 0) 40%, rgba(93, 82, 75, 0.45) 100%);
    transition: background var(--tf-transition);
}

.tf-area-tile__link:hover .tf-area-tile__media::after {
    background: linear-gradient(to bottom, rgba(93, 82, 75, 0.1) 30%, rgba(93, 82, 75, 0.6) 100%);
}

.tf-area-tile__name {
    display: block;
    text-align: center;
    margin-top: 10px;
    font-size: 0.85rem;
    letter-spacing: 0.08em;
    color: var(--tf-text-primary);
}

.tf-area-tile__count {
    display: block;
    margin-top: 2px;
    font-family: var(--tf-font-logo);
    font-size: 0.68rem;
    color: var(--tf-text-secondary);
}

/* 全国チェーン導線（地理タイルとは別枠の控えめなテキストリンク） */
.tf-area-nationwide {
    margin-top: var(--tf-space-md);
    font-size: 0.9rem;
}

.tf-area-nationwide a {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--tf-text-secondary);
    border-bottom: 1px solid var(--tf-border);
    padding-bottom: 2px;
}

.tf-area-nationwide a:hover {
    color: var(--tf-champagne-gold);
    border-bottom-color: var(--tf-champagne-gold);
}

/* Directory pages (/area/ ・ /theme/) — カンプ準拠
   ---------------------------------------------------------------------- */
/* Hero */
.tf-dir-hero {
    padding: var(--tf-space-lg) 0;
}

.tf-dir-hero__inner {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--tf-space-xl);
    align-items: center;
}

.tf-dir-hero__title {
    font-size: 1.9rem;
    font-weight: 500;
    margin-bottom: var(--tf-space-sm);
}

.tf-dir-hero__lead {
    color: var(--tf-text-secondary);
    font-size: 0.9rem;
    line-height: 1.9;
}

.tf-dir-hero__media {
    aspect-ratio: 16 / 10;
    border-radius: var(--tf-radius);
    overflow: hidden;
    background-color: var(--tf-cream);
}

.tf-dir-hero__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* セクション */
.tf-dir-section {
    padding: var(--tf-space-lg) 0;
}

.tf-dir-section__title {
    display: flex;
    align-items: baseline;
    gap: 12px;
    font-size: 1.1rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    padding-bottom: var(--tf-space-sm);
    border-bottom: 1px solid var(--tf-border);
    margin-bottom: var(--tf-space-lg);
}

.tf-dir-section__num {
    font-family: var(--tf-font-logo);
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--tf-champagne-gold);
}

/* 01 テーマチップ一覧（アイコン代わりの円+名前+件数） */
.tf-dir-chiplist {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: var(--tf-space-sm);
}

.tf-dir-chip {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: var(--tf-space-md) var(--tf-space-xs);
    text-align: center;
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    background-color: var(--tf-surface);
    transition: border-color var(--tf-transition);
}

.tf-dir-chip:hover {
    border-color: var(--tf-dusty-rose);
}

.tf-dir-chip__name {
    font-size: 0.85rem;
    font-weight: 500;
}

.tf-dir-chip__count {
    font-family: var(--tf-font-logo);
    font-size: 0.68rem;
    color: var(--tf-text-secondary);
}

/* 02 人気のテーマ（ハッシュタグ） */
.tf-dir-hashtags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--tf-space-xs);
}

.tf-dir-hashtags a {
    display: inline-flex;
    padding: 7px 16px;
    font-size: 0.8rem;
    color: var(--tf-text-primary);
    background-color: var(--tf-cream);
    border: 1px solid var(--tf-border);
    border-radius: 999px;
    transition: border-color var(--tf-transition), color var(--tf-transition);
}

.tf-dir-hashtags a:hover {
    color: var(--tf-dusty-rose);
    border-color: var(--tf-dusty-rose);
}

/* 03 〜ごとの新着 row */
.tf-dir-row {
    margin-bottom: var(--tf-space-xl);
}

.tf-dir-row__head {
    display: flex;
    align-items: baseline;
    gap: var(--tf-space-sm);
    margin-bottom: var(--tf-space-md);
}

.tf-dir-row__name {
    font-size: 1.05rem;
    font-weight: 500;
}

.tf-dir-row__count {
    font-size: 0.78rem;
    color: var(--tf-text-secondary);
}

.tf-dir-row__more {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
    color: var(--tf-text-secondary);
}

.tf-dir-row__more:hover {
    color: var(--tf-dusty-rose);
}

.tf-card-grid--dir {
    grid-template-columns: repeat(4, 1fr);
}

/* 施設カード（エリアディレクトリの人気施設） */
.tf-facility-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--tf-space-md);
}

.tf-facility-card {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.tf-facility-card__media {
    display: block;
    aspect-ratio: 16 / 10;
    border-radius: var(--tf-radius);
    overflow: hidden;
    background-color: var(--tf-cream);
}

.tf-facility-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--tf-transition);
}

.tf-facility-card:hover .tf-facility-card__image {
    transform: scale(1.04);
}

.tf-facility-card__name {
    font-size: 0.88rem;
    font-weight: 500;
}

/* 掲載希望CTA */
.tf-cta {
    background-color: var(--tf-cream);
    margin-top: var(--tf-space-lg);
    padding: var(--tf-space-lg) 0;
}

.tf-cta__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--tf-space-md);
}

.tf-cta__title {
    font-size: 1.1rem;
    font-weight: 500;
    margin-bottom: 4px;
}

.tf-cta__lead {
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
}

/* Magazine grid
   ---------------------------------------------------------------------- */
.tf-magazine-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--tf-space-md);
}

.tf-magazine-grid--archive {
    grid-template-columns: repeat(4, 1fr);
}

.tf-magazine-card {
    display: flex;
    flex-direction: column;
}

.tf-magazine-card__media {
    display: block;
    position: relative;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: var(--tf-radius);
    background-color: var(--tf-cream);
}

.tf-magazine-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--tf-transition);
}

.tf-magazine-card:hover .tf-magazine-card__image {
    transform: scale(1.04);
}

.tf-magazine-card__cat {
    position: absolute;
    top: 10px;
    left: 10px;
    display: inline-flex;
    padding: 4px 12px;
    font-size: 0.66rem;
    color: var(--tf-text-on-dark);
    background-color: var(--tf-dusty-rose);
    border-radius: 999px;
}

.tf-magazine-card__body {
    display: block;
    padding: var(--tf-space-sm) 2px 0;
}

.tf-magazine-card__title {
    display: block;
    font-size: 0.95rem;
    font-weight: 500;
    line-height: 1.6;
}

.tf-magazine-card__date {
    display: block;
    font-family: var(--tf-font-logo);
    font-size: 0.72rem;
    letter-spacing: 0.05em;
    color: var(--tf-text-secondary);
    margin-bottom: 6px;
}

/* Magazine / News archive page
   ---------------------------------------------------------------------- */
.tf-magazine {
    padding-top: var(--tf-space-lg);
    padding-bottom: var(--tf-space-xl);
}

.tf-magazine__header {
    text-align: center;
    margin-bottom: var(--tf-space-lg);
}

.tf-magazine__title {
    font-size: 1.7rem;
    font-weight: 500;
    margin-bottom: 8px;
}

.tf-magazine__lead {
    color: var(--tf-text-secondary);
    font-size: 0.88rem;
}

.tf-magazine__nav {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--tf-space-xs);
    margin-bottom: var(--tf-space-lg);
}

.tf-magazine__nav-item {
    padding: 7px 18px;
    font-size: 0.8rem;
    color: var(--tf-text-secondary);
    border: 1px solid var(--tf-border);
    border-radius: 999px;
    transition: border-color var(--tf-transition), color var(--tf-transition);
}

.tf-magazine__nav-item:hover {
    border-color: var(--tf-dusty-rose);
    color: var(--tf-dusty-rose);
}

.tf-magazine__nav-item.is-active {
    background-color: var(--tf-btn-primary-bg);
    border-color: var(--tf-btn-primary-bg);
    color: var(--tf-text-on-dark);
}

/* Newsletter (front page, above footer)
   ---------------------------------------------------------------------- */
.tf-newsletter {
    background-color: var(--tf-ivory);
    border-top: 1px solid var(--tf-border);
    padding: var(--tf-space-lg) 0;
}

.tf-newsletter__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--tf-space-md);
}

.tf-newsletter__title {
    font-family: var(--tf-font-logo);
    font-size: 1.1rem;
    font-weight: 500;
    letter-spacing: 0.16em;
    margin-bottom: 4px;
}

.tf-newsletter__lead {
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
}

.tf-newsletter__form {
    display: flex;
    gap: var(--tf-space-xs);
    flex: 0 1 480px;
}

.tf-newsletter__input {
    flex: 1 1 auto;
    padding: 12px 16px;
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    background-color: var(--tf-surface);
    font-family: inherit;
    font-size: 0.85rem;
    color: var(--tf-text-primary);
}

.tf-newsletter__input::placeholder {
    color: var(--tf-text-secondary);
}

/* Article (single post) — 右サイドバー型
   ---------------------------------------------------------------------- */
.tf-article-layout {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: var(--tf-space-xl);
    align-items: start;
    padding-top: var(--tf-space-lg);
    padding-bottom: var(--tf-space-xl);
}

.tf-article {
    min-width: 0;
}

.tf-article__header {
    margin-bottom: var(--tf-space-md);
}

.tf-article__cats {
    display: flex;
    gap: 8px;
    margin-bottom: var(--tf-space-sm);
}

.tf-article__cats a {
    display: inline-flex;
    padding: 4px 14px;
    font-size: 0.7rem;
    color: var(--tf-text-on-dark);
    background-color: var(--tf-dusty-rose);
    border-radius: 999px;
}

.tf-article__title {
    font-size: 1.8rem;
    font-weight: 500;
    line-height: 1.5;
    margin-bottom: 10px;
}

.tf-article__date {
    font-family: var(--tf-font-logo);
    font-size: 0.78rem;
    color: var(--tf-text-secondary);
}

.tf-article__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: var(--tf-space-sm);
}

.tf-article__media {
    margin-bottom: var(--tf-space-lg);
    border-radius: var(--tf-radius);
    overflow: hidden;
    aspect-ratio: 16 / 9;
}

.tf-article__media img,
.tf-article__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 記事本文中に挿入した画像もコンテナ内に収める */
.tf-article__body img {
    max-width: 100%;
    height: auto;
    border-radius: var(--tf-radius);
}

.tf-article__body {
    line-height: 1.95;
}

.tf-article__body > * + * {
    margin-top: var(--tf-space-md);
}

/* 記事本文リンク: 押せると分かる色+下線 */
.tf-article__body a:not(.tf-btn) {
    color: var(--tf-dusty-rose);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.tf-article__body a:not(.tf-btn):hover {
    color: var(--tf-text-primary);
}

/* 本文中に置いたボタン（.tf-btn）はリンク装飾を打ち消し、ボタンとして表示 */
.tf-article__body a.tf-btn {
    text-decoration: none;
}

.tf-article__body a.tf-btn--primary {
    color: var(--tf-text-on-dark);
}

.tf-article__body a.tf-btn--primary:hover {
    color: var(--tf-text-on-dark);
}

/* 記事本文の見出し・リスト・区切り（読みやすさ） */
/* h2: クリーム地のバー＋左にゴールドの縦罫（エディトリアルな小見出しパーツ） */
.tf-article__body h2 {
    font-size: 1.25rem;
    font-weight: 500;
    color: var(--tf-text-primary);
    margin-top: var(--tf-space-xl);
    padding: 12px 16px 12px 18px;
    background-color: var(--tf-cream);
    border-left: 4px solid var(--tf-champagne-gold);
    border-radius: 0 var(--tf-radius) var(--tf-radius) 0;
}

/* h3: 左にゴールドの小マーカー（・の代わり）＋下に薄い罫 */
.tf-article__body h3 {
    font-size: 1.08rem;
    font-weight: 500;
    color: var(--tf-text-primary);
    margin-top: var(--tf-space-lg);
    padding-bottom: 6px;
    padding-left: 16px;
    position: relative;
    border-bottom: 1px solid var(--tf-border);
}

.tf-article__body h3::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.15em;
    width: 7px;
    height: 1.1em;
    border-radius: 2px;
    background-color: var(--tf-dusty-rose);
}

/* tf-label: h3より一段軽い小見出し。頭にゴールドの小さな■＋太字のみ（罫・地色なし） */
.tf-article__body .tf-label {
    font-size: 0.98rem;
    font-weight: 500;
    color: var(--tf-text-primary);
    margin-top: var(--tf-space-md);
    margin-bottom: 6px;
    padding-left: 16px;
    position: relative;
}

.tf-article__body .tf-label::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 7px;
    height: 7px;
    background-color: var(--tf-champagne-gold);
}

.tf-article__body ul,
.tf-article__body ol {
    padding-left: 0;
    list-style: none;
}

/* ul: ゴールドの小さな●マーカー */
.tf-article__body ul > li {
    position: relative;
    padding-left: 1.4em;
}

.tf-article__body ul > li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.62em;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: var(--tf-champagne-gold);
}

/* ol: 番号は残す（ゴールドの数字） */
.tf-article__body ol {
    counter-reset: tf-ol;
}

.tf-article__body ol > li {
    position: relative;
    padding-left: 1.6em;
    counter-increment: tf-ol;
}

.tf-article__body ol > li::before {
    content: counter(tf-ol) ".";
    position: absolute;
    left: 0;
    top: 0;
    font-weight: 500;
    color: var(--tf-champagne-gold);
}

.tf-article__body li {
    margin-bottom: 6px;
}

.tf-article__body li + li {
    margin-top: 0;
}

.tf-article__body hr {
    border: none;
    border-top: 1px solid var(--tf-border);
    margin: var(--tf-space-lg) 0;
}

.tf-article__body img {
    border-radius: var(--tf-radius);
}

/* 記事内の予約ボタン */
.tf-article__booking {
    margin: var(--tf-space-lg) 0;
}

/* 記事内の関連リンク（テキスト羅列でなくボタン/リンク列に） */
.tf-article__related-links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--tf-space-xs);
    margin-top: var(--tf-space-sm);
}

.tf-article__related-links a {
    display: inline-flex;
    align-items: center;
    padding: 8px 16px;
    font-size: 0.82rem;
    color: var(--tf-text-primary);
    background: var(--tf-cream);
    border-radius: 999px;
    text-decoration: none;
}

.tf-article__related-links a:hover {
    color: var(--tf-dusty-rose);
}

/* Article sidebar
   ---------------------------------------------------------------------- */
.tf-sidebar {
    display: flex;
    flex-direction: column;
    gap: var(--tf-space-lg);
}

.tf-sidebar__block {
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    padding: var(--tf-space-md);
    background-color: var(--tf-surface);
}

.tf-sidebar__heading {
    font-size: 0.9rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    padding-bottom: var(--tf-space-xs);
    margin-bottom: var(--tf-space-sm);
    border-bottom: 1px solid var(--tf-border);
}

/* 著者box */
.tf-author {
    text-align: center;
}

.tf-author__name {
    font-family: var(--tf-font-logo);
    font-weight: 500;
    letter-spacing: 0.06em;
    margin-bottom: 8px;
}

.tf-author__desc {
    font-size: 0.8rem;
    color: var(--tf-text-secondary);
    line-height: 1.8;
    margin-bottom: var(--tf-space-sm);
}

.tf-author__social {
    display: flex;
    justify-content: center;
    gap: var(--tf-space-md);
    font-size: 0.78rem;
}

.tf-author__social a:hover {
    color: var(--tf-dusty-rose);
}

/* サイドバー 関連記事 */
.tf-sidebar__posts {
    display: flex;
    flex-direction: column;
    gap: var(--tf-space-sm);
}

.tf-sidebar__post a {
    display: grid;
    grid-template-columns: 72px 1fr;
    gap: 12px;
    align-items: center;
}

.tf-sidebar__post-media {
    display: block;
    aspect-ratio: 1 / 1;
    border-radius: var(--tf-radius);
    overflow: hidden;
    background-color: var(--tf-cream);
}

.tf-sidebar__post-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.tf-sidebar__post-title {
    display: block;
    font-size: 0.8rem;
    line-height: 1.5;
    margin-bottom: 4px;
}

.tf-sidebar__post-date {
    font-family: var(--tf-font-logo);
    font-size: 0.68rem;
    color: var(--tf-text-secondary);
}

.tf-sidebar__post a:hover .tf-sidebar__post-title {
    color: var(--tf-dusty-rose);
}

/* サイドバー タグ */
.tf-sidebar__tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

/* サイドバー エリア */
.tf-sidebar__areas {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.tf-sidebar__area-media {
    display: block;
    aspect-ratio: 1 / 1;
    background-size: cover;
    background-position: center;
    border-radius: var(--tf-radius);
}

.tf-sidebar__area-name {
    display: block;
    text-align: center;
    margin-top: 4px;
    font-size: 0.72rem;
    color: var(--tf-text-primary);
}

.tf-sidebar__area:hover .tf-sidebar__area-name {
    color: var(--tf-dusty-rose);
}

/* Page header (taxonomy / area-theme landing)
   ---------------------------------------------------------------------- */
.tf-page-header {
    padding: var(--tf-space-lg) 0 var(--tf-space-md);
}

.tf-page-header__title {
    font-size: 1.8rem;
    margin-bottom: 8px;
}

.tf-page-header__lead {
    color: var(--tf-text-secondary);
    font-size: 0.9rem;
}

/* Area children nav
   ---------------------------------------------------------------------- */
.tf-area-children {
    margin-bottom: var(--tf-space-md);
}

.tf-area-children__list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--tf-space-xs);
}

.tf-area-children__list a {
    display: inline-flex;
    padding: 8px 18px;
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    font-size: 0.8rem;
    letter-spacing: 0.06em;
}

.tf-area-children__list a:hover {
    border-color: var(--tf-champagne-gold);
    color: var(--tf-champagne-gold);
}

/* Listing page (taxonomy / area-theme) — 左サイドバー型
   ---------------------------------------------------------------------- */
.tf-listing {
    padding-top: var(--tf-space-lg);
    padding-bottom: var(--tf-space-xl);
}

.tf-listing__header {
    margin-bottom: var(--tf-space-md);
}

.tf-listing__title {
    font-size: 1.7rem;
    font-weight: 500;
    margin-bottom: 8px;
}

.tf-listing__lead {
    color: var(--tf-text-secondary);
    font-size: 0.88rem;
    line-height: 1.8;
}

.tf-listing__toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--tf-space-md);
    padding: var(--tf-space-sm) 0;
    border-top: 1px solid var(--tf-border);
    border-bottom: 1px solid var(--tf-border);
    margin-bottom: var(--tf-space-lg);
}

.tf-listing__count {
    font-size: 0.85rem;
    color: var(--tf-text-secondary);
}

.tf-listing__count span {
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--tf-text-primary);
    margin-right: 2px;
}

.tf-listing__sort {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.8rem;
    color: var(--tf-text-secondary);
}

.tf-listing__sort select {
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    padding: 6px 12px;
    font-size: 0.82rem;
}

.tf-listing__body {
    display: grid;
    grid-template-columns: 1fr 240px;
    gap: var(--tf-space-lg);
    align-items: start;
}

/* フィルターのラッパー。PCではグリッドを透過させ、従来のレイアウトを保つ */
.tf-filter-panel {
    display: contents;
}

/* 絞り込みサイドバーは右に配置（記事ページの右サイドバーと統一） */
.tf-listing__body .tf-filter {
    order: 2;
}

.tf-listing__body .tf-listing__main {
    order: 1;
}

/* SP用 絞り込みトグルボタンはPCでは非表示 */
.tf-filter-toggle {
    display: none;
}

.tf-card-grid--listing {
    grid-template-columns: repeat(3, 1fr);
}

/* 絞り込みサイドバー */
.tf-filter {
    position: sticky;
    top: var(--tf-space-md);
}

.tf-filter__group {
    padding-bottom: var(--tf-space-md);
    margin-bottom: var(--tf-space-md);
    border-bottom: 1px solid var(--tf-border);
}

.tf-filter__heading {
    font-size: 0.82rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    margin-bottom: var(--tf-space-sm);
    color: var(--tf-text-primary);
}

.tf-filter__checkbox {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
    padding: 5px 0;
    cursor: pointer;
}

.tf-filter__checkbox input {
    accent-color: var(--tf-champagne-gold);
    width: 15px;
    height: 15px;
}

.tf-filter__select {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    background-color: var(--tf-surface);
    font-size: 0.82rem;
    color: var(--tf-text-primary);
}

.tf-filter__subgroup {
    margin-top: 8px;
}

.tf-filter__subheading {
    display: block;
    margin-bottom: 5px;
    font-size: 0.75rem;
    color: var(--tf-text-secondary);
}

.tf-filter__submit {
    width: 100%;
}

/* Facility page
   ---------------------------------------------------------------------- */
/* ファーストビュー: 左 施設名+タグ / 右 大写真 */
.tf-facility__hero {
    display: grid;
    grid-template-columns: 1fr 1.15fr;
    gap: var(--tf-space-lg);
    align-items: center;
}

.tf-facility__hero-media {
    border-radius: var(--tf-radius);
    overflow: hidden;
    aspect-ratio: 16 / 11;
    background-color: var(--tf-cream);
}

.tf-facility__hero-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* h1。セクション見出し(.tf-section-title 1.15rem)とのバランスを取り、
   1.9rem から縮小（2026-07-31 ハナ指定「デカすぎる」） */
.tf-facility__title {
    font-size: 1.45rem;
    font-weight: 500;
    line-height: 1.5;
    margin-bottom: var(--tf-space-md);
}

.tf-facility__hero-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.tf-facility__hero-tags li {
    font-size: 0.78rem;
    color: var(--tf-text-secondary);
    background-color: var(--tf-cream);
    padding: 4px 14px;
    border-radius: 999px;
}

.tf-facility__hero-tags a {
    color: inherit;
}

/* ヒーローの施設タグチップ（feature term。リンクなし） */
.tf-facility__feature-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: var(--tf-space-sm);
}

.tf-facility__feature-chip {
    font-size: 0.76rem;
    color: var(--tf-text-secondary);
    background-color: var(--tf-surface);
    border: 1px solid var(--tf-border);
    padding: 4px 14px;
    border-radius: 999px;
}

/* セクション見出し（施設ページ・一覧見出し共通） */
.tf-section-title {
    font-size: 1.15rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    padding-bottom: var(--tf-space-sm);
    border-bottom: 1px solid var(--tf-border);
    margin-bottom: var(--tf-space-lg);
}

.tf-facility__current {
    padding-top: var(--tf-space-lg);
}

/* 施設情報（下部） */
.tf-facility__detail {
    padding-top: var(--tf-space-xl);
}

.tf-facility__detail-inner {
    display: grid;
    grid-template-columns: 0.8fr 1.2fr;
    gap: var(--tf-space-lg);
    align-items: start;
}

/* 写真が無い施設は1カラムにして中身を全幅に（写真あり前提の0.8fr:1.2frだと本文が4割幅に潰れる） */
.tf-facility__detail-inner--text-only {
    grid-template-columns: 1fr;
}

.tf-facility__detail-media {
    border-radius: var(--tf-radius);
    overflow: hidden;
    aspect-ratio: 4 / 3;
    background-color: var(--tf-cream);
}

.tf-facility__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.tf-facility__detail-name {
    font-size: 1.1rem;
    font-weight: 500;
    margin-bottom: var(--tf-space-md);
}

.tf-facility__spec {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.tf-facility__spec-row {
    display: flex;
    gap: var(--tf-space-sm);
    font-size: 0.88rem;
}

.tf-facility__spec-row dt {
    flex: 0 0 88px;
    color: var(--tf-text-secondary);
    font-size: 0.8rem;
    letter-spacing: 0.04em;
}

.tf-facility__spec-row dd a {
    color: var(--tf-champagne-gold);
    word-break: break-all;
}

.tf-facility__spec-note {
    margin-left: 8px;
    font-size: 0.8rem;
    color: var(--tf-text-secondary);
}

.tf-facility__past {
    padding-top: var(--tf-space-xl);
}

/* 特徴とアクセス（新規）
   ---------------------------------------------------------------------- */
.tf-facility__feature {
    padding-top: var(--tf-space-xl);
}

.tf-facility__feature-inner {
    display: grid;
    grid-template-columns: 1.5fr 1fr;
    gap: var(--tf-space-lg);
    align-items: center;
    background-color: var(--tf-cream);
    border-radius: var(--tf-radius);
    padding: var(--tf-space-lg);
}

.tf-facility__feature-inner--text-only {
    grid-template-columns: 1fr;
}

.tf-facility__feature-title {
    font-size: 1.1rem;
    font-weight: 500;
    margin-bottom: var(--tf-space-sm);
}

.tf-facility__feature-text {
    font-size: 0.9rem;
    line-height: 1.9;
    color: var(--tf-text-primary);
}

.tf-facility__feature-text + .tf-facility__feature-text {
    margin-top: var(--tf-space-sm);
}

.tf-facility__feature-media {
    border-radius: var(--tf-radius);
    overflow: hidden;
    aspect-ratio: 4 / 3;
}

.tf-facility__feature-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 編集部評価（新規）
   ---------------------------------------------------------------------- */
.tf-facility__rating {
    padding-top: var(--tf-space-xl);
}

.tf-facility__rating-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--tf-space-md);
}

.tf-facility__rating-card {
    background-color: var(--tf-surface);
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    padding: var(--tf-space-md);
    text-align: center;
}

.tf-facility__rating-icon {
    display: block;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: var(--tf-space-xs);
}

.tf-facility__rating-label {
    font-size: 0.88rem;
    font-weight: 500;
    margin-bottom: 8px;
}

.tf-facility__rating-note {
    margin-top: 8px;
    font-size: 0.76rem;
    color: var(--tf-text-secondary);
}

.tf-facility__rating-disclaimer {
    margin-top: var(--tf-space-sm);
    text-align: center;
    font-size: 0.74rem;
    color: var(--tf-text-secondary);
}

/* 星評価（ゴールド5個・0.5刻み半星。CSSグラデーションで塗り分け） */
.tf-rating-stars {
    display: inline-flex;
    gap: 2px;
    font-size: 1.1rem;
    line-height: 1;
}

.tf-rating-stars__star {
    position: relative;
    display: inline-block;
    color: var(--tf-border);
}

.tf-rating-stars__star::after {
    content: "★";
    position: absolute;
    left: 0;
    top: 0;
    width: var(--tf-star-fill, 0%);
    overflow: hidden;
    color: var(--tf-champagne-gold);
    white-space: nowrap;
}

/* 編集部コメント（新規）
   ---------------------------------------------------------------------- */
.tf-facility__comment {
    padding-top: var(--tf-space-xl);
}

.tf-facility__comment-inner {
    display: grid;
    grid-template-columns: 1fr 0.45fr;
    gap: var(--tf-space-lg);
    align-items: center;
    background-color: var(--tf-cream);
    border-radius: var(--tf-radius);
    padding: var(--tf-space-lg);
}

.tf-facility__comment-inner--text-only {
    grid-template-columns: 1fr;
}

.tf-facility__comment-heading {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 1.05rem;
    font-weight: 500;
    margin-bottom: var(--tf-space-sm);
}

.tf-facility__comment-icon {
    flex-shrink: 0;
}

.tf-facility__comment-text {
    font-size: 0.9rem;
    line-height: 1.9;
    color: var(--tf-text-primary);
}

.tf-facility__comment-media {
    border-radius: var(--tf-radius);
    overflow: hidden;
    aspect-ratio: 4 / 3;
}

.tf-facility__comment-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* 編集部コメント（press記事版。画像なし・全幅テキストのみ）
   ---------------------------------------------------------------------- */
.tf-press__comment {
    padding-top: var(--tf-space-xl);
}

.tf-press__comment-inner {
    background-color: var(--tf-cream);
    border-radius: var(--tf-radius);
    padding: var(--tf-space-lg);
}

.tf-press__comment-heading {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 1.05rem;
    font-weight: 500;
    margin-bottom: var(--tf-space-sm);
}

.tf-press__comment-icon {
    flex-shrink: 0;
}

.tf-press__comment-text {
    font-size: 0.9rem;
    line-height: 1.9;
    color: var(--tf-text-primary);
}

/* 施設情報 + よくある質問（下部。PC 2カラム ≒4:6）
   ---------------------------------------------------------------------- */
.tf-facility__detail-faq {
    padding-top: var(--tf-space-xl);
}

.tf-facility__detail-faq-inner {
    display: grid;
    /* PCは等幅2カラム（4:6だと施設情報側が窮屈。ハナ指摘 2026-07-12） */
    grid-template-columns: 1fr 1fr;
    gap: var(--tf-space-lg);
    align-items: start;
}

.tf-facility__detail-faq-inner--full {
    grid-template-columns: 1fr;
}

.tf-facility__detail-faq-inner .tf-facility__detail {
    padding-top: 0;
}

.tf-facility__detail-venue {
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
    margin-top: -12px;
    margin-bottom: var(--tf-space-md);
}

/* 複数会場は <p> を並べて出すため、2つ目以降は詰めて1ブロックに見せる
   （負のmargin-topが重なると行が食い込むので打ち消す） */
.tf-facility__detail-venue + .tf-facility__detail-venue {
    margin-top: 2px;
}

.tf-facility__detail-venue:not(:last-of-type) {
    margin-bottom: 0;
}

.tf-facility__spec-icons {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: var(--tf-space-md);
}

.tf-facility__spec-icon-row {
    display: flex;
    align-items: flex-start;
    gap: var(--tf-space-sm);
    font-size: 0.88rem;
}

.tf-facility__spec-icon {
    flex-shrink: 0;
    color: var(--tf-champagne-gold);
    line-height: 1;
    padding-top: 2px;
}

.tf-facility__spec-icon-text {
    color: var(--tf-text-primary);
}

.tf-facility__spec-icon-text a {
    color: var(--tf-champagne-gold);
    word-break: break-all;
}

.tf-facility__map-button {
    display: inline-block;
    width: 100%;
    text-align: center;
    padding: 12px 20px;
    font-size: 0.85rem;
    color: var(--tf-text-primary);
    background-color: var(--tf-surface);
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
}

.tf-facility__map-embed {
    width: 100%;
    max-width: 100%;
    aspect-ratio: 16 / 9;
    min-height: 220px;
    margin: var(--tf-space-md) 0;
    overflow: hidden;
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    background-color: var(--tf-cream);
}

.tf-facility__map-embed iframe {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 220px;
    border: 0;
}

/* よくある質問（施設ページ専用。1カラムアコーディオン） */
.tf-facility__faq-list {
    display: flex;
    flex-direction: column;
}

.tf-facility__faq-item {
    border-bottom: 1px solid var(--tf-border);
}

.tf-facility__faq-q {
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: var(--tf-space-sm) 0;
    font-size: 0.88rem;
    font-weight: 500;
    position: relative;
    padding-right: 24px;
}

.tf-facility__faq-q-mark {
    flex-shrink: 0;
    color: var(--tf-champagne-gold);
    font-weight: 600;
}

.tf-facility__faq-q::after {
    content: "⌄";
    position: absolute;
    right: 4px;
    color: var(--tf-champagne-gold);
}

.tf-facility__faq-item details[open] .tf-facility__faq-q::after {
    content: "⌃";
}

.tf-facility__faq-q::-webkit-details-marker {
    display: none;
}

.tf-facility__faq-a {
    padding: 0 0 var(--tf-space-sm) 28px;
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
    line-height: 1.8;
}

/* Tea full card (facility current section)
   ---------------------------------------------------------------------- */
.tf-tea-full-list {
    display: flex;
    flex-direction: column;
    gap: var(--tf-space-lg);
}

.tf-tea-full {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--tf-space-lg);
    padding-bottom: var(--tf-space-lg);
    border-bottom: 1px solid var(--tf-border);
}

.tf-tea-full:last-child {
    border-bottom: none;
}

.tf-tea-full--ending_soon {
    background-color: var(--tf-cream);
    padding: var(--tf-space-md);
    border-radius: var(--tf-radius);
}

.tf-tea-full__media {
    position: relative;
    border-radius: var(--tf-radius);
    overflow: hidden;
}

.tf-tea-full__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.tf-tea-full__sns {
    margin-top: var(--tf-space-sm);
}

/* SNS埋め込みがあるカードは左カラム=アイキャッチ+SNSの縦積み
   （bodyに入れると右カラムだけ伸びるため。SNS無しカードは従来のまま） */
.tf-tea-full--has-sns {
    grid-template-rows: auto 1fr;
    row-gap: var(--tf-space-sm);
}

.tf-tea-full--has-sns .tf-tea-full__media {
    grid-column: 1;
    grid-row: 1;
}

.tf-tea-full--has-sns .tf-tea-full__sns {
    grid-column: 1;
    grid-row: 2;
    align-self: start;
    margin-top: 0;
}

.tf-tea-full--has-sns .tf-tea-full__body {
    grid-column: 2;
    grid-row: 1 / 3;
}

.tf-tea-full__title {
    font-size: 1.5rem;
    margin-bottom: var(--tf-space-xs);
}

.tf-tea-full__tags {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: var(--tf-space-xs);
}

.tf-tea-full__period {
    color: var(--tf-text-secondary);
    font-size: 0.85rem;
    margin-bottom: var(--tf-space-sm);
}

.tf-tea-full__description {
    margin-bottom: var(--tf-space-sm);
    color: var(--tf-text-secondary);
}

/* メニュー例 */
.tf-tea-full__menu {
    margin-bottom: var(--tf-space-sm);
    padding: var(--tf-space-sm) var(--tf-space-md);
    background-color: var(--tf-cream);
    border-radius: var(--tf-radius);
}

.tf-tea-full__menu-title {
    font-size: 0.85rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    margin-bottom: var(--tf-space-xs);
    color: var(--tf-text-primary);
}

.tf-tea-full__menu-list {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 18px;
}

.tf-tea-full__menu-list li {
    position: relative;
    padding-left: 14px;
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
}

.tf-tea-full__menu-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.7em;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background-color: var(--tf-champagne-gold);
}

.tf-tea-full__gallery {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 6px;
    margin-bottom: var(--tf-space-sm);
}

.tf-tea-full__gallery-image {
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: var(--tf-radius);
}

.tf-tea-full__spec {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: var(--tf-space-sm);
}

.tf-tea-full__spec-row {
    display: flex;
    gap: var(--tf-space-sm);
    font-size: 0.85rem;
}

.tf-tea-full__spec-row dt {
    flex: 0 0 110px;
    color: var(--tf-text-secondary);
    font-size: 0.75rem;
    letter-spacing: 0.06em;
}

.tf-tea-full__spec-note {
    margin-left: 6px;
    font-size: 0.75rem;
    color: var(--tf-text-secondary);
}

/* Tea past card (facility archive section) — 横長リスト行
   ---------------------------------------------------------------------- */
.tf-tea-past-list {
    display: flex;
    flex-direction: column;
}

.tf-tea-past {
    display: grid;
    grid-template-columns: 140px 1fr auto;
    align-items: center;
    gap: var(--tf-space-md);
    padding: var(--tf-space-sm) 0;
    border-bottom: 1px solid var(--tf-border);
}

.tf-tea-past:last-child {
    border-bottom: none;
}

.tf-tea-past__media {
    position: relative;
    aspect-ratio: 4 / 3;
    border-radius: var(--tf-radius);
    overflow: hidden;
    background-color: var(--tf-cream);
}

.tf-tea-past__media .tf-badge {
    top: 6px;
    left: 6px;
    padding: 3px 10px;
    font-size: 0.62rem;
}

.tf-tea-past__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.tf-tea-past__body {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.tf-tea-past__title {
    font-size: 0.95rem;
    font-weight: 500;
}

.tf-tea-past__tags {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
}

.tf-tea-past__period {
    font-family: var(--tf-font-logo);
    font-size: 0.72rem;
    color: var(--tf-text-secondary);
}

.tf-tea-past::after {
    content: "›";
    font-size: 1.2rem;
    color: var(--tf-text-secondary);
    padding-right: var(--tf-space-xs);
}

/* 404
   ---------------------------------------------------------------------- */
.tf-not-found {
    padding: var(--tf-space-xl) 0;
    text-align: center;
}

.tf-not-found__links {
    display: flex;
    justify-content: center;
    gap: var(--tf-space-sm);
    margin-top: var(--tf-space-md);
    flex-wrap: wrap;
}

/* Pagination
   ---------------------------------------------------------------------- */
/* スクリーンリーダー専用テキストは視覚的に隠す（WPデフォルトの
   「投稿ナビゲーション」見出し等がデカデカ表示されるのを防ぐ。
   読み上げには残すアクセシブルな隠し方）。 */
.screen-reader-text {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.pagination,
.navigation.pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: var(--tf-space-xs);
    margin-top: var(--tf-space-lg);
}

/* the_posts_pagination() は nav > div.nav-links を挟むため、
   どちらの構造でも横並びになるようにする */
.pagination .nav-links,
.navigation.pagination .nav-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: var(--tf-space-xs);
}

.pagination .page-numbers {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: 0 8px;
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    font-size: 0.85rem;
    color: var(--tf-text-primary);
    background-color: var(--tf-surface);
    text-decoration: none;
    transition: background-color var(--tf-transition), color var(--tf-transition), border-color var(--tf-transition);
}

.pagination a.page-numbers:hover,
.pagination a.page-numbers:focus-visible {
    border-color: var(--tf-champagne-gold);
    color: var(--tf-champagne-gold);
}

.pagination .page-numbers.current {
    background-color: var(--tf-champagne-gold);
    color: var(--tf-text-on-dark);
    border-color: var(--tf-champagne-gold);
}

/* 「…」は枠を付けず区切り記号として見せる */
.pagination .page-numbers.dots {
    border-color: transparent;
    background-color: transparent;
    color: var(--tf-text-secondary);
}

/* 「前へ」「次へ」は文字数があるので幅を確保する */
.pagination .page-numbers.prev,
.pagination .page-numbers.next {
    padding: 0 14px;
}

/* ==========================================================================
   About page (/about/)
   ========================================================================== */
.tf-about-hero__en {
    font-family: var(--tf-font-logo);
    font-size: 0.8rem;
    letter-spacing: 0.16em;
    color: var(--tf-champagne-gold);
    margin-bottom: var(--tf-space-xs);
}

.tf-about-section__title {
    font-size: 1.3rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    margin-bottom: var(--tf-space-md);
}

.tf-about-section__title--center {
    text-align: center;
    margin-bottom: var(--tf-space-lg);
}

/* 想い */
.tf-about-mission {
    display: grid;
    grid-template-columns: 0.9fr 1.1fr;
    gap: var(--tf-space-xl);
    align-items: center;
    padding: var(--tf-space-xl) 0;
}

.tf-about-mission__media {
    aspect-ratio: 4 / 3;
    border-radius: var(--tf-radius);
    overflow: hidden;
    background-color: var(--tf-cream);
}

.tf-about-mission__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.tf-about-mission__lead {
    font-size: 1.2rem;
    font-weight: 500;
    margin-bottom: var(--tf-space-sm);
}

.tf-about-mission__text {
    color: var(--tf-text-secondary);
    line-height: 1.95;
}

/* Teafolioとは（アイコン4列） */
.tf-about-feature {
    padding: var(--tf-space-xl) 0;
    border-top: 1px solid var(--tf-border);
}

.tf-about-feature__list,
.tf-about-steps__list {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--tf-space-lg);
}

.tf-about-feature__item {
    text-align: center;
}

.tf-about-feature__icon,
.tf-about-steps__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    margin-bottom: var(--tf-space-sm);
    border-radius: 50%;
    background-color: var(--tf-cream);
    color: var(--tf-champagne-gold);
    font-size: 1.3rem;
}

.tf-about-feature__icon img,
.tf-about-steps__icon img {
    width: 34px;
    height: 34px;
    object-fit: contain;
}

.tf-about-feature__name {
    font-size: 0.95rem;
    font-weight: 500;
    margin-bottom: 8px;
}

.tf-about-feature__desc,
.tf-about-steps__desc {
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
    line-height: 1.8;
}

/* 楽しみ方（4ステップ） */
.tf-about-steps {
    padding: var(--tf-space-xl) 0;
    border-top: 1px solid var(--tf-border);
}

.tf-about-steps__item {
    position: relative;
    text-align: center;
}

.tf-about-steps__num {
    display: block;
    font-family: var(--tf-font-logo);
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    color: var(--tf-champagne-gold);
    margin-bottom: var(--tf-space-xs);
}

.tf-about-steps__name {
    font-size: 0.95rem;
    font-weight: 500;
    margin-bottom: 8px;
}

/* ==========================================================================
   Contact page (/contact/)
   ========================================================================== */
.tf-contact {
    padding-bottom: var(--tf-space-xl);
}

.tf-contact__intro {
    max-width: 760px;
    margin: 0 auto var(--tf-space-xl);
    text-align: center;
    color: var(--tf-text-secondary);
    line-height: 1.95;
}

.tf-contact-block {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: var(--tf-space-lg);
    padding: var(--tf-space-lg) 0;
    border-top: 1px solid var(--tf-border);
    align-items: start;
}

.tf-contact-block__head {
    text-align: center;
    padding: var(--tf-space-md);
    background-color: var(--tf-cream);
    border-radius: var(--tf-radius);
}

.tf-contact-block__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    margin-bottom: var(--tf-space-xs);
    border-radius: 50%;
    background-color: var(--tf-surface);
    color: var(--tf-dusty-rose);
    font-size: 1.2rem;
}

.tf-contact-block__icon img {
    width: 30px;
    height: 30px;
    object-fit: contain;
}

.tf-contact-block__num {
    display: block;
    font-family: var(--tf-font-logo);
    font-size: 0.72rem;
    color: var(--tf-text-secondary);
}

.tf-contact-block__title {
    font-size: 1rem;
    font-weight: 500;
    margin: 4px 0 8px;
}

.tf-contact-block__desc {
    font-size: 0.8rem;
    color: var(--tf-text-secondary);
    line-height: 1.8;
}

.tf-contact-form__placeholder {
    padding: var(--tf-space-lg);
    background-color: var(--tf-cream);
    border-radius: var(--tf-radius);
    color: var(--tf-text-secondary);
    font-size: 0.85rem;
    text-align: center;
}

/* CF7 フォーム要素の最低限のスタイル */
.tf-contact-block__form input[type="text"],
.tf-contact-block__form input[type="email"],
.tf-contact-block__form input[type="url"],
.tf-contact-block__form textarea {
    width: 100%;
    padding: 11px 14px;
    margin-top: 4px;
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    background-color: var(--tf-surface);
    font-family: inherit;
    font-size: 0.9rem;
    color: var(--tf-text-primary);
}

.tf-contact-block__form p {
    margin-bottom: var(--tf-space-sm);
}

.tf-contact-block__form .wpcf7-submit {
    padding: 12px 32px;
    background-color: var(--tf-btn-primary-bg);
    color: var(--tf-text-on-dark);
    border: none;
    border-radius: var(--tf-radius);
    font-size: 0.85rem;
    cursor: pointer;
}

/* FAQ */
.tf-faq {
    padding: var(--tf-space-xl) 0;
    border-top: 1px solid var(--tf-border);
}

.tf-faq__list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--tf-space-sm) var(--tf-space-lg);
    max-width: 960px;
    margin: 0 auto;
}

.tf-faq__item {
    border-bottom: 1px solid var(--tf-border);
}

.tf-faq__q {
    cursor: pointer;
    list-style: none;
    padding: var(--tf-space-sm) 0;
    font-size: 0.88rem;
    font-weight: 500;
    position: relative;
    padding-right: 24px;
}

.tf-faq__q::after {
    content: "＋";
    position: absolute;
    right: 4px;
    color: var(--tf-champagne-gold);
}

.tf-faq__item details[open] .tf-faq__q::after {
    content: "−";
}

.tf-faq__q::-webkit-details-marker {
    display: none;
}

.tf-faq__a {
    padding: 0 0 var(--tf-space-sm);
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
    line-height: 1.8;
}

/* About: 運営者情報 / 掲載ポリシー */
.tf-about-info {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: var(--tf-space-xl);
    padding: var(--tf-space-xl) 0;
    border-top: 1px solid var(--tf-border);
    align-items: start;
}

.tf-about-info__block {
    background-color: var(--tf-cream);
    border-radius: var(--tf-radius);
    padding: var(--tf-space-lg);
}

.tf-about-info .tf-about-section__title {
    font-size: 1.1rem;
    margin-bottom: var(--tf-space-md);
}

.tf-about-operator__list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.tf-about-operator__row {
    display: flex;
    gap: var(--tf-space-sm);
    font-size: 0.85rem;
}

.tf-about-operator__row dt {
    flex: 0 0 96px;
    color: var(--tf-text-secondary);
    font-size: 0.8rem;
}

.tf-about-policy__list {
    display: flex;
    flex-direction: column;
    gap: var(--tf-space-md);
}

.tf-about-policy__item {
    display: grid;
    grid-template-columns: 40px 1fr;
    gap: var(--tf-space-sm);
    align-items: start;
}

.tf-about-policy__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: var(--tf-surface);
    color: var(--tf-dusty-rose);
    font-size: 1.05rem;
    flex-shrink: 0;
}

.tf-about-policy__icon img {
    width: 24px;
    height: 24px;
    object-fit: contain;
}

.tf-about-policy__name {
    font-size: 0.9rem;
    font-weight: 500;
    margin-bottom: 4px;
}

.tf-about-policy__desc {
    font-size: 0.8rem;
    color: var(--tf-text-secondary);
    line-height: 1.8;
}

/* ==========================================================================
   Saved page (/saved/) 気になる一覧
   ========================================================================== */
.tf-saved {
    padding-top: var(--tf-space-lg);
    padding-bottom: var(--tf-space-xl);
}

.tf-saved__header {
    text-align: center;
    margin-bottom: var(--tf-space-lg);
}

.tf-saved__title {
    font-size: 1.7rem;
    font-weight: 500;
    margin-bottom: 8px;
}

.tf-saved__lead {
    color: var(--tf-text-secondary);
    font-size: 0.85rem;
}

.tf-saved-card {
    position: relative;
}

.tf-saved-card__link {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* 保存カードはspan組みなのでブロック化して通常カードと同じ見た目に */
.tf-saved-card .tf-card__media {
    display: block;
    width: 100%;
}

.tf-saved-card .tf-card__body {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.tf-saved-card .tf-card__title,
.tf-saved-card .tf-card__facility,
.tf-saved-card .tf-card__period {
    display: block;
}

.tf-saved-card .tf-card__meta {
    display: flex;
}

.tf-saved-card .tf-typo-card {
    display: flex;
    width: 100%;
    height: 100%;
}

.tf-saved-card__remove {
    position: absolute;
    top: 8px;
    right: 8px;
    z-index: 3;
    width: 28px;
    height: 28px;
    border: none;
    border-radius: 50%;
    background-color: rgba(93, 82, 75, 0.6);
    color: #fff;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
    transition: background-color var(--tf-transition);
}

.tf-saved-card__remove:hover {
    background-color: var(--tf-text-primary);
}

/* CF7 送信ボタンをフォーム内で中央寄せ（画面中央ではなくフォーム幅基準） */
.tf-contact-block__form .wpcf7-submit {
    display: block;
    margin-left: auto;
    margin-right: auto;
}

/* ==========================================================================
   Legal pages (/privacy/ ・ /terms/)
   ========================================================================== */
.tf-legal {
    max-width: 800px;
    padding-top: var(--tf-space-lg);
    padding-bottom: var(--tf-space-xl);
}

.tf-legal__header {
    text-align: center;
    margin-bottom: var(--tf-space-lg);
}

.tf-legal__title {
    font-size: 1.7rem;
    font-weight: 500;
}

.tf-legal__body {
    line-height: 1.9;
    color: var(--tf-text-primary);
}

.tf-legal__intro {
    margin-bottom: var(--tf-space-lg);
    color: var(--tf-text-secondary);
}

.tf-legal__body h2 {
    font-size: 1.1rem;
    font-weight: 500;
    margin: var(--tf-space-lg) 0 var(--tf-space-xs);
    padding-bottom: 6px;
    border-bottom: 1px solid var(--tf-border);
}

.tf-legal__body h3 {
    font-size: 0.95rem;
    font-weight: 500;
    margin: var(--tf-space-md) 0 var(--tf-space-xs);
}

.tf-legal__body p {
    margin-bottom: var(--tf-space-sm);
    font-size: 0.9rem;
    color: var(--tf-text-secondary);
}

.tf-legal__body ul {
    list-style: disc;
    padding-left: 1.4em;
    margin-bottom: var(--tf-space-sm);
}

.tf-legal__body li {
    font-size: 0.9rem;
    color: var(--tf-text-secondary);
    margin-bottom: 4px;
}

.tf-legal__body a {
    color: var(--tf-champagne-gold);
}

.tf-legal__meta {
    margin-top: var(--tf-space-xl);
    font-size: 0.82rem;
    color: var(--tf-text-secondary);
}

/* ニュース限定検索（/news/） */
.tf-news-search {
    display: flex;
    gap: 8px;
    max-width: 520px;
    margin: 0 auto var(--tf-space-lg);
}

.tf-news-search__input {
    flex: 1 1 auto;
    padding: 11px 16px;
    border: 1px solid var(--tf-border);
    border-radius: var(--tf-radius);
    background: var(--tf-surface);
    font-size: 0.9rem;
}

.tf-news-search__result {
    text-align: center;
    font-size: 0.9rem;
    color: var(--tf-text-secondary);
    margin-bottom: var(--tf-space-md);
}

/* press記事: 自動生成の開催概要/関連リンク */
.tf-article__plan,
.tf-article__related {
    margin-top: var(--tf-space-lg);
    padding-top: var(--tf-space-md);
    border-top: 1px solid var(--tf-border);
}

.tf-article__plan-title {
    font-size: 1.15rem;
    font-weight: 500;
    margin-bottom: var(--tf-space-md);
}

.tf-article__plan .tf-facility__spec {
    margin-bottom: var(--tf-space-md);
}

.tf-article__plan .tf-facility__spec-row dd a {
    color: var(--tf-dusty-rose);
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* press記事の出典・注記（関連リンクから十分に離す＋押せると分かるリンク） */
.tf-article__source {
    margin-top: var(--tf-space-xl);
    padding-top: var(--tf-space-md);
    border-top: 1px solid var(--tf-border);
    font-size: 0.8rem;
    color: var(--tf-text-secondary);
    line-height: 1.8;
}

.tf-article__source a {
    color: var(--tf-dusty-rose);
    text-decoration: underline;
    text-underline-offset: 2px;
    word-break: break-all;
}

.tf-article__source a:hover {
    color: var(--tf-text-primary);
}

/* ============================================================
   右寄せの誘導リンク（記事本文末尾・汎用 2026-07-11）
   ============================================================ */
.tf-link-more {
    text-align: right;
    margin: var(--tf-space-md) 0 0;
}

.tf-link-more a,
.tf-article__body .tf-link-more a:not(.tf-btn) {
    /* inline+text-decorationで折り返し時も行ごとに下線（inline-block+borderだと最終行下に全幅線が出る） */
    display: inline;
    color: var(--tf-btn-primary-bg);
    font-size: 0.92rem;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 4px;
    transition: opacity var(--tf-transition);
}

.tf-link-more a::after {
    content: " →";
}

.tf-link-more a:hover,
.tf-article__body .tf-link-more a:not(.tf-btn):hover {
    opacity: 0.7;
    color: var(--tf-btn-primary-bg);
}
