/*
Theme Name: このまち＋（PLUS）
Theme URI: https://example.com/toyohashi-plus
Author: シュガー
Author URI: https://example.com
Description: 豊橋・東三河エリアの地域情報を発信する地域ポータル向けWordPressテーマ。エリアを自由に追加できるタクソノミーと、アドセンス広告枠をカスタマイザーから設定できる機能を備えています。
Version: 2.27.1
Requires at least: 6.6
Tested up to: 7.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: toyohashi-plus
*/

/* ==========================================================================
   トークン（薄緑・水色パレット）
   ========================================================================== */
:root{
  --tp-green-50:  #f2faf3;
  --tp-green-100: #e0f3e4;
  --tp-green-300: #a9dfb4;
  --tp-green-500: #5cb86e;
  --tp-green-700: #2f8f45;

  --tp-blue-50:   #eef9fd;
  --tp-blue-100:  #d7f1fb;
  --tp-blue-300:  #93d9f2;
  --tp-blue-500:  #45b8e6;
  --tp-blue-700:  #1f89b3;

  --tp-ink:       #1f2e28;
  --tp-ink-soft:  #4c5c56;
  --tp-line:      #d9ece0;
  --tp-white:     #ffffff;

  --tp-primary:   var(--tp-green-500);
  --tp-secondary: var(--tp-blue-500);
  --tp-bg:        var(--tp-green-50);
  --tp-card-bg:   var(--tp-white);

  --tp-radius-s: 8px;
  --tp-radius-m: 14px;
  --tp-radius-l: 22px;

  --tp-font-display: "M PLUS Rounded 1c", "Zen Maru Gothic", sans-serif;
  --tp-font-body: "Noto Sans JP", "Hiragino Sans", sans-serif;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; overflow-x: hidden; max-width: 100%; }

body{
  margin: 0;
  background: var(--tp-bg);
  color: var(--tp-ink);
  font-family: var(--tp-font-body);
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  max-width: 100%;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
ul { list-style: none; margin: 0; padding: 0; }

h1, h2, h3, h4 {
  font-family: var(--tp-font-display);
  font-weight: 700;
  margin: 0 0 .6em;
  color: var(--tp-ink);
}

.tp-container{
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 20px;
}

/* Skip link */
.tp-skip-link{
  position: absolute; left: -9999px; top: 0; z-index: 1000;
  background: var(--tp-ink); color: #fff; padding: 10px 16px; border-radius: 0 0 8px 0;
}
.tp-skip-link:focus{ left: 0; }

/* ==========================================================================
   ヘッダー
   ========================================================================== */
.tp-header{
  background: linear-gradient(135deg, var(--tp-green-100), var(--tp-blue-100));
  border-bottom: 1px solid var(--tp-line);
  position: sticky; top: 0; z-index: 50;
}
.tp-header__inner{
  display: flex; align-items: center; justify-content: space-between;
  gap: 20px; padding: 14px 0;
}
.tp-logo{
  display: flex; align-items: baseline; gap: 6px;
  font-family: var(--tp-font-display);
  font-size: 26px; font-weight: 800; letter-spacing: .02em;
  color: var(--tp-ink);
}
.tp-logo span.tp-plus{
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border-radius: 50%;
  background: linear-gradient(135deg, var(--tp-green-500), var(--tp-blue-500));
  color: #fff; font-size: 18px; font-weight: 900;
}
.tp-logo .tp-sub{ font-size: 12px; color: var(--tp-ink-soft); font-family: var(--tp-font-body); font-weight: 500; margin-left: 4px; }
.tp-logo--custom{ align-items: center; }
.tp-logo--custom img{ max-height: 56px; width: auto; }
.tp-logo--custom .custom-logo-link{ display: inline-flex; }

.tp-nav-toggle{
  display: none;
  background: var(--tp-white); border: 1px solid var(--tp-line); border-radius: var(--tp-radius-s);
  width: 42px; height: 38px; cursor: pointer;
  position: relative;
}
.tp-nav-toggle span, .tp-nav-toggle::before, .tp-nav-toggle::after{
  content: ""; position: absolute; left: 10px; right: 10px; height: 2px; background: var(--tp-ink);
}
.tp-nav-toggle span{ top: 50%; transform: translateY(-50%); }
.tp-nav-toggle::before{ top: 12px; }
.tp-nav-toggle::after{ bottom: 12px; }

.tp-main-nav ul{ display: flex; flex-wrap: wrap; gap: 4px; }
.tp-main-nav a{
  display: inline-block; padding: 8px 14px; border-radius: 999px;
  font-size: 14px; font-weight: 700; color: var(--tp-ink-soft);
  transition: background .15s, color .15s;
}
.tp-main-nav a:hover, .tp-main-nav .current-menu-item a{
  background: var(--tp-white); color: var(--tp-green-700);
}

/* PC幅では、メニュー未設定時の自動カテゴリー表示を出さない
   （管理画面でメインメニューを設定すれば、そちらは通常通り表示されます） */
@media (min-width: 901px){
  .tp-main-nav--fallback{ display: none; }
}

/* エリアチップ帯 */
.tp-area-strip{
  background: var(--tp-white);
  border-bottom: 1px solid var(--tp-line);
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}
.tp-area-strip__inner{
  display: flex; align-items: center; gap: 10px;
  max-width: 1120px; margin: 0 auto; padding: 10px 20px;
  overflow-x: auto; overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
}
.tp-area-strip__label{
  flex: none; font-size: 12px; font-weight: 700; color: var(--tp-ink-soft);
  display: flex; align-items: center; gap: 4px;
}
.tp-area-chip{
  flex: none; padding: 6px 14px; border-radius: 999px; font-size: 13px; font-weight: 700;
  background: linear-gradient(120deg, var(--tp-green-100), var(--tp-blue-100));
  color: var(--tp-green-700); border: 1px solid transparent; white-space: nowrap;
  transition: transform .12s ease, box-shadow .12s ease;
}
.tp-area-chip:hover{ transform: translateY(-1px); box-shadow: 0 4px 10px rgba(69,184,230,.25); }
.tp-area-chip.is-current{
  background: linear-gradient(120deg, var(--tp-green-500), var(--tp-blue-500)); color: #fff;
}

/* ==========================================================================
   広告枠
   ========================================================================== */
.tp-ad-slot{
  max-width: 1120px; margin: 18px auto; padding: 0 20px;
}
.tp-ad-slot__inner{
  width: 100%;
}
.tp-ad-slot__inner:empty{ display: none; }
.tp-ad-slot__label{
  font-size: 10px; letter-spacing: .1em; color: var(--tp-ink-soft);
  text-align: center; margin-bottom: 6px;
}

/* ==========================================================================
   レイアウト
   ========================================================================== */
.tp-layout{
  display: grid; grid-template-columns: 2.1fr 1fr; gap: 34px;
  max-width: 1120px; margin: 28px auto; padding: 0 20px;
}
.tp-layout--with-left{
  /* PC広画面では左列を広めに取り、中のウィジェットを2列で並べる（縦長感の解消） */
  grid-template-columns: 1.7fr 2.2fr 1fr;
  max-width: 1480px;
}
.tp-main{ min-width: 0; }

.tp-section-title{
  display: flex; align-items: center; gap: 10px; margin-bottom: 18px;
}
.tp-section-title::before{
  content: ""; width: 8px; height: 24px; border-radius: 4px;
  background: linear-gradient(180deg, var(--tp-green-500), var(--tp-blue-500));
}
.tp-section-title h1, .tp-section-title h2{ margin: 0; font-size: 20px; }
.tp-term-desc{
  background: var(--tp-white); border: 1px solid var(--tp-line); border-radius: var(--tp-radius-m);
  padding: 14px 18px; margin: -8px 0 20px; font-size: 13.5px; color: var(--tp-ink-soft);
}

/* ==========================================================================
   記事カード
   ========================================================================== */
.tp-post-list{ display: flex; flex-direction: column; gap: 16px; }

.tp-card{
  display: grid; grid-template-columns: 180px 1fr; gap: 16px;
  background: var(--tp-card-bg); border-radius: var(--tp-radius-l);
  overflow: hidden; border: 1px solid var(--tp-line);
  transition: box-shadow .15s ease, transform .15s ease;
  align-items: stretch;
}
.tp-card:hover{ box-shadow: 0 10px 24px rgba(31,137,179,.12); transform: translateY(-2px); }
.tp-card__thumb{
  overflow: hidden; background: var(--tp-green-100);
  align-self: stretch; position: relative; min-height: 150px;
}
.tp-card__thumb img{ position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.tp-card__body{ padding: 14px 16px 14px 0; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.tp-card__meta{ display: flex; flex-direction: column; align-items: flex-start; gap: 6px; font-size: 12px; color: var(--tp-ink-soft); }
.tp-card__date{ display: block; margin-top: auto; padding-top: 6px; font-size: 12px; color: var(--tp-ink-soft); }
.tp-card__date--left{ align-self: flex-start; text-align: left; }
.tp-card__date--right{ align-self: flex-end; text-align: right; }
.tp-card__tags{ display: flex; flex-wrap: wrap; gap: 6px; align-items: center; max-width: 100%; }
.tp-tag{
  padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 700;
  background: var(--tp-blue-100); color: var(--tp-blue-700);
  white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis;
}
.tp-tag--area{
  background: linear-gradient(120deg, var(--tp-green-500), var(--tp-blue-500)); color: #fff;
}
.tp-card__title{ font-size: 17px; line-height: 1.5; margin: 0; }
.tp-card__title a:hover{ color: var(--tp-green-700); }
.tp-card__excerpt{ font-size: 13px; color: var(--tp-ink-soft); margin: 0; }

/* ページネーション */
.tp-pagination{ display: flex; justify-content: center; gap: 8px; margin-top: 28px; }
.tp-pagination a, .tp-pagination span{
  min-width: 38px; height: 38px; display: flex; align-items: center; justify-content: center;
  border-radius: 10px; background: var(--tp-white); border: 1px solid var(--tp-line); font-weight: 700; font-size: 13px;
}
.tp-pagination .current{ background: var(--tp-green-500); color: #fff; border-color: transparent; }

/* ==========================================================================
   サイドバー
   ========================================================================== */
.tp-sidebar{ display: flex; flex-direction: column; gap: 24px; }
.tp-widget{
  background: var(--tp-card-bg); border: 1px solid var(--tp-line); border-radius: var(--tp-radius-l);
  padding: 18px;
}
.tp-widget h3{
  font-size: 15px; display: flex; align-items: center; gap: 8px; margin-bottom: 14px;
}
.tp-widget h3::before{
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: linear-gradient(135deg, var(--tp-green-500), var(--tp-blue-500));
}
.tp-ranking-list{ display: flex; flex-direction: column; gap: 12px; }
.tp-ranking-item{ display: grid; grid-template-columns: 26px 56px 1fr; gap: 10px; align-items: center; }
.tp-ranking-item__num{
  font-family: var(--tp-font-display); font-weight: 800; font-size: 16px; color: var(--tp-blue-500); text-align: center;
}
.tp-ranking-item__thumb{
  width: 56px; height: 56px; border-radius: 10px; overflow: hidden; background: var(--tp-green-100);
}
.tp-ranking-item__thumb img{ width: 100%; height: 100%; object-fit: cover; object-position: center; }
.tp-ranking-item__title{ font-size: 12.5px; line-height: 1.5; }

.tp-area-list{ display: flex; flex-wrap: wrap; gap: 8px; }
.tp-area-list a{
  padding: 6px 12px; border-radius: 999px; font-size: 12px; font-weight: 700;
  background: var(--tp-green-100); color: var(--tp-green-700);
}
.tp-area-list a:hover{ background: var(--tp-blue-100); color: var(--tp-blue-700); }

.tp-search-form{ display: flex; gap: 8px; }
.tp-search-form input[type="search"]{
  flex: 1; border: 1px solid var(--tp-line); border-radius: 999px; padding: 9px 14px; font-size: 13px; font-family: inherit;
}
.tp-search-form button{
  border: none; border-radius: 999px; padding: 0 16px; font-weight: 700; color: #fff; cursor: pointer;
  background: linear-gradient(120deg, var(--tp-green-500), var(--tp-blue-500));
}

/* ==========================================================================
   左サイドバー：全体アクセスランキング
   ========================================================================== */
.tp-left-rail{ min-width: 0; display: flex; flex-direction: column; gap: 24px; }

/* PC広画面：左サイドバーはウィジェットをすべて全幅で揃え（デコボコ防止）、
   ランキング・カテゴリー等のリストの中身だけを2列にして高さを抑える */
@media (min-width: 1181px){
  .tp-left-rail .tp-left-ranking-list{
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 22px;
    row-gap: 0;
  }
  .tp-left-rail .tp-left-term-list{
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 22px;
    row-gap: 0;
  }
}
.tp-widget--left-ranking h3{ font-size: 14px; }
.tp-left-ranking-list{ display: flex; flex-direction: column; gap: 4px; counter-reset: none; }
.tp-left-ranking-item{
  display: grid; grid-template-columns: 22px 1fr; grid-template-rows: auto auto; column-gap: 8px;
  padding: 8px 0; border-bottom: 1px dashed var(--tp-line);
}
.tp-left-ranking-item:last-child{ border-bottom: none; }
.tp-left-ranking-item__num{
  grid-row: 1 / 3; align-self: center;
  font-family: var(--tp-font-display); font-weight: 800; font-size: 15px;
  color: var(--tp-blue-500); text-align: center;
}
.tp-left-ranking-item__title{
  font-size: 12.5px; line-height: 1.5; grid-column: 2; grid-row: 1;
}
.tp-left-ranking-item__title:hover{ color: var(--tp-green-700); }
.tp-left-ranking-item__views{
  grid-column: 2; grid-row: 2;
  font-size: 11px; font-weight: 700; color: var(--tp-blue-700);
}

/* ==========================================================================
   コメント欄
   ========================================================================== */
.tp-comments{ font-size: 14px; }
.tp-comments__title{ font-size: 16px; margin-bottom: 14px; }
.tp-comment-list{ list-style: none; margin: 0 0 20px; }
.tp-comment-list .comment{ padding: 14px 0; border-bottom: 1px solid var(--tp-line); }
.tp-comment-list .children{ list-style: none; margin-left: 24px; }
.tp-comment-list .comment-author{ display: flex; align-items: center; gap: 10px; font-weight: 700; }
.tp-comment-list .comment-author .avatar{ border-radius: 50%; }
.tp-comment-list .comment-author .says{ display: none; }
.tp-comment-list .comment-metadata{ font-size: 11.5px; margin: 4px 0 8px; }
.tp-comment-list .comment-metadata a{ color: var(--tp-ink-soft); }
.tp-comment-list .comment-content{ font-size: 13.5px; }
.tp-comment-list .reply{ font-size: 12px; margin-top: 6px; }
.tp-comments__closed{ color: var(--tp-ink-soft); font-size: 13px; }
.comment-reply-title{ font-size: 16px; margin: 10px 0; }
.comment-form label{ display: block; font-size: 12.5px; font-weight: 700; margin-bottom: 4px; }
.comment-form input[type="text"],
.comment-form input[type="email"],
.comment-form input[type="url"],
.comment-form textarea{
  width: 100%; box-sizing: border-box; border: 1px solid var(--tp-line);
  border-radius: var(--tp-radius-m); padding: 9px 12px; font: inherit; font-size: 13.5px;
  background: var(--tp-white);
}
.comment-form .form-submit{ margin: 14px 0 0; }
.comment-form .submit{
  border: none; border-radius: 999px; padding: 10px 26px; font-weight: 700; color: #fff; cursor: pointer;
  background: linear-gradient(120deg, var(--tp-green-500), var(--tp-blue-500));
}
.comment-form .submit:hover{ opacity: .9; }

/* 左サイドバー：広告枠（PC専用）
   スマホではCSSで枠ごと非表示にします。読み込み時点で非表示のため、
   レスポンシブ広告ユニットであればスマホには広告が配信されません
   （Googleが公式に案内しているメディアクエリでの出し分け方法です） */
.tp-ad-slot[data-ad-zone="tp_ad_left_rail"],
.tp-ad-slot[data-ad-zone="tp_ad_left_rail_bottom"]{ display: none; }
@media (min-width: 901px){
  .tp-ad-slot[data-ad-zone="tp_ad_left_rail"],
  .tp-ad-slot[data-ad-zone="tp_ad_left_rail_bottom"]{
    display: block;
    max-width: none; margin: 0; padding: 0;
  }
}

/* ==========================================================================
   情報提供フォーム
   ========================================================================== */
.tp-submission-form{
  background: var(--tp-card-bg); border: 1px solid var(--tp-line); border-radius: var(--tp-radius-l);
  padding: 22px; margin: 0 0 24px;
}
.tp-submission-form__title{ font-size: 18px; margin: 0 0 8px; }
.tp-submission-form__lead{ font-size: 13.5px; color: var(--tp-ink-soft); margin: 0 0 18px; }
.tp-submission-form .tp-field{ margin: 0 0 16px; }
.tp-submission-form label{ display: block; font-size: 13px; font-weight: 700; margin-bottom: 6px; }
.tp-submission-form input[type="text"],
.tp-submission-form input[type="email"],
.tp-submission-form input[type="number"],
.tp-submission-form textarea,
.tp-submission-form select{
  width: 100%; box-sizing: border-box; border: 1px solid var(--tp-line);
  border-radius: var(--tp-radius-m); padding: 11px 14px; font: inherit; font-size: 14px;
  background: var(--tp-white);
}
.tp-submission-form textarea{ resize: vertical; }
.tp-submission-form .tp-req{
  display: inline-block; font-size: 10px; font-weight: 700; color: #fff;
  background: #e0698a; border-radius: 4px; padding: 1px 6px; margin-left: 6px; vertical-align: middle;
}
.tp-field--agree label, .tp-field--check label{ font-weight: 400; font-size: 13px; }
.tp-field--agree input, .tp-field--check input{ margin-right: 6px; }
.tp-submission-form__submit{
  border: none; border-radius: 999px; padding: 13px 32px; font-weight: 700; font-size: 15px; color: #fff; cursor: pointer;
  background: linear-gradient(120deg, var(--tp-green-500), var(--tp-blue-500));
  transition: opacity .15s ease, transform .15s ease;
}
.tp-submission-form__submit:hover{ opacity: .9; transform: translateY(-1px); }
.tp-submission-form__note{ font-size: 12px; color: var(--tp-ink-soft); margin: 10px 0 0; }
.tp-submit-notice{
  border-radius: var(--tp-radius-m); padding: 14px 18px; margin: 0 0 18px; font-size: 14px; font-weight: 700;
}
.tp-submit-notice--ok{ background: var(--tp-green-100); color: var(--tp-green-700); border: 1px solid var(--tp-green-300); }
.tp-submit-notice--error{ background: #fdecef; color: #b32d4d; border: 1px solid #f4b8c6; }

/* 左サイドバー：ショートコード枠 */
.tp-widget--left-shortcode h3{ font-size: 14px; }
.tp-left-shortcode__body{ font-size: 12.5px; }
/* 幅の狭い列なので、はみ出す要素を収める */
.tp-left-shortcode__body img,
.tp-left-shortcode__body video{ max-width: 100%; height: auto; }
.tp-left-shortcode__body iframe{ max-width: 100%; }
.tp-left-shortcode__body > *:first-child{ margin-top: 0; }
.tp-left-shortcode__body > *:last-child{ margin-bottom: 0; }
.tp-left-shortcode--bare{ min-width: 0; }
.tp-left-shortcode--bare img{ max-width: 100%; height: auto; }
.tp-left-shortcode--bare iframe{ max-width: 100%; }

/* ==========================================================================
   埋め込みコンテンツ（プラグインの地図・フォーム等）の崩れ防止
   ==========================================================================
   ショートコード枠やサイドバーには外部プラグインの出力が入るため、
   幅の狭い列でも地図が縦長にならず、文字やフォームがはみ出さないよう
   テーマ側で上限を設けています。 */

/* 長い単語・URLでも折り返す */
.tp-left-shortcode__body,
.tp-left-shortcode--bare,
.tp-widget{
  overflow-wrap: break-word;
  word-break: break-word;
  min-width: 0;
}

/* フォーム部品は枠の幅を超えない */
.tp-left-shortcode__body input:not([type="checkbox"]):not([type="radio"]),
.tp-left-shortcode__body textarea,
.tp-left-shortcode__body select,
.tp-left-shortcode__body button,
.tp-widget input:not([type="checkbox"]):not([type="radio"]),
.tp-widget textarea,
.tp-widget select{
  max-width: 100%;
  box-sizing: border-box;
}

/* 地図（Leaflet等）はプラグイン側で高さが固定されていても、
   列の幅に合った高さに揃える（縦長になるのを防ぐ） */
.tp-left-rail .leaflet-container,
.tp-left-shortcode__body .leaflet-container{
  width: 100% !important;
  height: 240px !important;
}
.tp-sidebar .leaflet-container{
  width: 100% !important;
  height: 280px !important;
}

/* PC幅では、左の狭い列に入るiframe（地図埋め込み等）も高さを抑える */
@media (min-width: 901px){
  .tp-left-rail iframe{ max-height: 260px; }
}

/* スマホでは左列が全幅になるため、地図は少し高めに */
@media (max-width: 900px){
  .tp-left-rail .leaflet-container,
  .tp-left-shortcode__body .leaflet-container{
    height: 320px !important;
  }
}

/* 左サイドバー：カテゴリー・タグ（リスト表示） */
.tp-left-term-list{ display: flex; flex-direction: column; gap: 2px; }
.tp-left-term-list li{
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 7px 0; border-bottom: 1px solid var(--tp-line); font-size: 12.5px;
}
.tp-left-term-list li:last-child{ border-bottom: none; }
.tp-left-term-list a{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tp-left-term-list a:hover{ color: var(--tp-green-700); }
.tp-left-term-list__count{ color: var(--tp-ink-soft); font-size: 11px; flex: none; }

/* 左サイドバー：カテゴリー・タグ（タグ雲表示） */
.tp-left-term-cloud{ display: flex; flex-wrap: wrap; gap: 6px; }
.tp-left-term-cloud a{
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 11px; border-radius: 999px; font-size: 12px; font-weight: 700;
  background: var(--tp-green-100); color: var(--tp-green-700);
}
.tp-left-term-cloud a:hover{ background: var(--tp-blue-100); color: var(--tp-blue-700); }
.tp-left-term-cloud__count{ font-size: 10px; opacity: .75; }
.tp-left-term-cloud--tags a{ background: var(--tp-blue-100); color: var(--tp-blue-700); }
.tp-left-term-cloud--tags a:hover{ background: var(--tp-green-100); color: var(--tp-green-700); }

/* ==========================================================================
   フッター
   ========================================================================== */
.tp-footer{
  margin-top: 40px; background: linear-gradient(135deg, var(--tp-green-700), var(--tp-blue-700));
  color: #fff;
}
.tp-footer__inner{ padding: 34px 20px 20px; max-width: 1120px; margin: 0 auto; }
.tp-footer-widgets{
  display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 24px;
  margin-bottom: 26px; padding-bottom: 26px; border-bottom: 1px solid rgba(255,255,255,.2);
}
.tp-footer-widgets__col h4{ color: #fff; font-size: 13px; margin-bottom: 10px; }
.tp-footer-widgets__col{ font-size: 13px; opacity: .9; }
.tp-footer-widgets__col ul{ display: flex; flex-direction: column; gap: 6px; }
@media (max-width: 900px){
  .tp-footer-widgets{ grid-template-columns: 1fr 1fr; }
}
.tp-footer__nav{ display: flex; flex-wrap: wrap; gap: 14px 22px; margin-bottom: 18px; }
.tp-footer__menu{ display: flex; flex-wrap: wrap; gap: 14px 22px; list-style: none; margin: 0; padding: 0; }
.tp-footer__nav a{ font-size: 13px; opacity: .92; }
.tp-footer__nav a:hover{ text-decoration: underline; }
.tp-footer__bottom{
  border-top: 1px solid rgba(255,255,255,.25); padding-top: 14px; font-size: 12px; opacity: .85;
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px;
}

/* ==========================================================================
   単一記事
   ========================================================================== */
.tp-single-header{ margin-bottom: 18px; }
.tp-single-header h1{ font-size: 26px; line-height: 1.5; }
.tp-single-thumb{
  border-radius: var(--tp-radius-l); overflow: hidden; margin-bottom: 20px;
  aspect-ratio: 16/9; background: var(--tp-green-100);
  display: flex; align-items: center; justify-content: center;
}
.tp-single-thumb img{ width: 100%; height: 100%; object-fit: contain; }
.tp-entry-content{
  font-size: 15.5px;
  background: var(--tp-card-bg); border: 1px solid var(--tp-line); border-radius: var(--tp-radius-l);
  padding: 22px;
}
.tp-entry-content p{ margin: 0 0 1.4em; }
.tp-entry-content img{ border-radius: var(--tp-radius-m); }
.tp-entry-content h2{ font-size: 20px; margin-top: 1.6em; padding-left: 12px; border-left: 6px solid var(--tp-green-500); }
.tp-entry-content h3{ font-size: 17px; margin-top: 1.4em; color: var(--tp-blue-700); }
.tp-entry-content .alignwide, .tp-entry-content .alignfull{ max-width: 100%; }
.tp-entry-content img.alignleft, .tp-entry-content .alignleft img{
  float: left; margin: 4px 20px 14px 0; max-width: 50%; height: auto;
}
.tp-entry-content img.alignright, .tp-entry-content .alignright img{
  float: right; margin: 4px 0 14px 20px; max-width: 50%; height: auto;
}
.tp-entry-content img.aligncenter, .tp-entry-content .aligncenter img{
  display: block; margin-left: auto; margin-right: auto;
}
.tp-entry-content .wp-caption{ max-width: 100%; }
.tp-entry-content .wp-caption-text, .tp-entry-content figcaption{
  font-size: 12px; color: var(--tp-ink-soft); text-align: center; margin-top: 6px;
}
.tp-entry-content::after{ content: ""; display: table; clear: both; }
@media (max-width: 600px){
  .tp-entry-content img.alignleft, .tp-entry-content img.alignright,
  .tp-entry-content .alignleft img, .tp-entry-content .alignright img{
    float: none; display: block; margin: 10px auto; max-width: 100%;
  }
}

/* ==========================================================================
   関連記事
   ========================================================================== */
.tp-related{ margin: 28px 0 0; }
.tp-related__grid{
  display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px;
}
.tp-related__item{
  background: var(--tp-card-bg); border: 1px solid var(--tp-line); border-radius: var(--tp-radius-l);
  overflow: hidden; display: flex; flex-direction: column;
  transition: box-shadow .15s ease, transform .15s ease;
}
.tp-related__item:hover{ box-shadow: 0 10px 24px rgba(31,137,179,.12); transform: translateY(-2px); }
.tp-related__thumb{
  aspect-ratio: 4/3; overflow: hidden; background: var(--tp-green-100); display: block;
}
.tp-related__thumb img{ width: 100%; height: 100%; object-fit: cover; object-position: center; }
.tp-related__body{ padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 6px; }
.tp-related__meta{
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  font-size: 11.5px; color: var(--tp-ink-soft);
}
.tp-related__title{ font-size: 13.5px; line-height: 1.5; margin: 0; }
.tp-related__title a:hover{ color: var(--tp-green-700); }

@media (max-width: 600px){
  .tp-related__grid{ grid-template-columns: 1fr 1fr; gap: 12px; }
  .tp-related__title{ font-size: 12.5px; }
  .tp-related__body{ padding: 10px 12px 12px; }
}

/* ==========================================================================
   店舗情報（任意入力の記事メタ情報）
   ========================================================================== */
.tp-shop-info{
  background: var(--tp-card-bg); border: 1px solid var(--tp-line); border-radius: var(--tp-radius-l);
  padding: 20px 22px; margin: 0 0 24px;
}
.tp-shop-info__title{ font-size: 16px; margin: 0 0 12px; }

.tp-shop-table{ width: 100%; border-collapse: collapse; }
.tp-shop-table th, .tp-shop-table td{
  padding: 10px 14px; border-bottom: 1px solid var(--tp-line); text-align: left; vertical-align: top; font-size: 13.5px;
}
.tp-shop-table th{
  width: 130px; white-space: nowrap; color: var(--tp-ink-soft); font-weight: 700; background: var(--tp-green-50);
  border-radius: 6px 0 0 6px;
}
.tp-shop-table td a{ color: var(--tp-blue-700); font-weight: 600; }
.tp-shop-table tr:last-child th, .tp-shop-table tr:last-child td{ border-bottom: none; }

.tp-shop-links{ display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.tp-shop-link-btn{
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 18px; border-radius: 999px; font-size: 13px; font-weight: 700; color: #fff;
  background: linear-gradient(120deg, var(--tp-green-500), var(--tp-blue-500));
  transition: opacity .15s ease, transform .15s ease;
}
.tp-shop-link-btn:hover{ opacity: .88; transform: translateY(-1px); }
.tp-shop-link-btn--outline{
  background: var(--tp-white); color: var(--tp-blue-700); border: 1px solid var(--tp-blue-300);
}

.tp-shop-map{
  margin-top: 18px; border-radius: var(--tp-radius-m); overflow: hidden;
  aspect-ratio: 16 / 9; border: 1px solid var(--tp-line);
}
.tp-shop-map iframe{ width: 100%; height: 100%; border: 0; display: block; }

@media (max-width: 600px){
  .tp-entry-content{ padding: 16px; }
  .tp-shop-info{ padding: 16px; }
  .tp-shop-table, .tp-shop-table tbody, .tp-shop-table tr, .tp-shop-table th, .tp-shop-table td{
    display: block; width: auto;
  }
  .tp-shop-table tr{ padding: 8px 0; border-bottom: 1px solid var(--tp-line); }
  .tp-shop-table th{
    border-bottom: none; background: none; padding: 0 0 2px; border-radius: 0;
    font-size: 11px; color: var(--tp-green-700);
  }
  .tp-shop-table td{ border-bottom: none; padding: 0; }
  .tp-shop-map{ aspect-ratio: 4 / 3; }
}

/* ==========================================================================
   レスポンシブ
   ========================================================================== */
@media (max-width: 1180px){
  .tp-layout--with-left{ grid-template-columns: 1fr 2fr 1fr; gap: 22px; }
}

@media (max-width: 900px){
  .tp-layout{ grid-template-columns: 1fr; }
  .tp-layout--with-left{ grid-template-columns: 1fr; }
  /* スマホでは左右のはみ出しを防ぐため、レイアウトを画面幅ぴったりに収める */
  .tp-layout{
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    padding-left: 16px;
    padding-right: 16px;
    margin-left: 0;
    margin-right: 0;
  }
  .tp-main, .tp-sidebar, .tp-left-rail, .tp-post-list, .tp-card, .tp-widget{
    min-width: 0;
    max-width: 100%;
  }
  .tp-left-rail{ order: 3; }
  .tp-nav-toggle{ display: block; }
  .tp-main-nav{
    display: none; position: absolute; left: 0; right: 0; top: 100%;
    background: var(--tp-white); border-bottom: 1px solid var(--tp-line);
    padding: 10px 20px 16px;
  }
  .tp-main-nav.is-open{ display: block; }
  .tp-main-nav ul{ flex-direction: column; }
  .tp-card{ grid-template-columns: 120px 1fr; }
  .tp-card__thumb{ min-height: 110px; }
  .tp-card__body{ padding: 10px 14px 12px 0; }
  .tp-card__title{ font-size: 15px; }
  /* 全幅セクション（広告枠・コンテナ）も画面幅内に収める */
  .tp-container, .tp-ad-slot{
    max-width: 100%;
    box-sizing: border-box;
    padding-left: 16px;
    padding-right: 16px;
  }
}

@media (prefers-reduced-motion: reduce){
  *{ scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
