/******************************************
* 0. グローバルリセット & 基本設定
******************************************/
/* 確実にすべての要素に box-sizing: border-box を適用 */
*, *::before, *::after {
  box-sizing: border-box;
}

/* サイト全体のタイポグラフィの基本設定 */
body {
  font-family: sans-serif;
  color: #333333;
  line-height: 1.7;
  /* モバイルメニュー開閉時のスクロール防止 */
  overflow-x: hidden;
}

a {
  color: #0073aa;
  text-decoration: none;
  transition: color 0.3s, text-decoration 0.3s;
}
a:hover {
  text-decoration: underline;
  color: #005a8d;
}

/* SKIP TO CONTENT リンクを視覚的に非表示にする */
.skip-link {
  position: absolute;
  clip: rect(1px, 1px, 1px, 1px);
  padding: 0;
  border: 0;
  height: 1px;
  width: 1px;
  overflow: hidden;
}


/******************************************
* 1. 基本的なレイアウト（ラッパー）
******************************************/

/* サイト全体を中央揃えにするラッパー */
.site-content {
  max-width: 1200px; /* 最大幅 */
  margin: 0 auto; /* 中央揃え */
  padding: 20px;
}

/* 固定ページでは、全幅コンテンツのために最大幅と左右パディングを解除 */
body.page .site-content {
   max-width: none;
   padding-left: 0;
   padding-right: 0;
}

/* 修正後のコード */
.entry-content table,
table {
  display: block;
  overflow-x: auto;
  width: 100%;
}



/******************************************
* 2. ヘッダーデザイン
******************************************/

.site-header {
  background-color: #ffffff;
  border-bottom: 1px solid #eeeeee;
}

.header-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 15px 20px;
  display: flex;
  justify-content: space-between;
  align-items: center;
}

/* サイトタイトル/ロゴのスタイル */
.site-branding {
  font-size: 1.5rem;
  font-weight: bold;
}

.site-branding a {
  text-decoration: none;
  color: #333333;
}


/******************************************
* 3. ナビゲーションメニュー (PC版)
******************************************/

/* BEM: .main-navigation__list */
.main-navigation ul.menu-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 20px;
}

.main-navigation ul.menu-list li {
  padding: 0;
  margin: 0;
  display: block;
}

.main-navigation a {
  text-decoration: none;
  color: #333333;
  padding: 5px 0;
  transition: color 0.3s;
}

.main-navigation a:hover {
  color: #0073aa;
}


/******************************************
* 4. ハンバーガーボタンとモバイルメニュー
* JSで .menu-toggle.is-active と .main-navigation.is-active を使用
******************************************/

/* デフォルトではハンバーガーボタンを非表示 */
.menu-toggle {
  display: none;
  /* ... その他の共通スタイル ... */
}

/* PCサイズではメニューを表示 */
@media (min-width: 901px) {
  .main-navigation {
    display: block;
  }
}

/* モバイルメニューの開閉状態とボタンのスタイルは @media 900px以下で定義 */


/******************************************
* 5. 投稿ページレイアウト (Body.single用)
* PHPで導入した .post-layout クラスを使用
******************************************/

/* Flexboxコンテナの定義 (PC版) */
.post-layout {
  display: flex;
  gap: 30px; /* 記事とサイドバーの隙間 */
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 20px;
}

/* Flexアイテム 1: 記事本文 */
.post-layout__content {
  flex-basis: 870px; /* 1200px - 300px (sidebar) - 30px (gap) = 870px */
  flex-shrink: 0;
}

/* Flexアイテム 2: サイドバー */
.post-layout__sidebar {
  flex-basis: 300px;
  flex-shrink: 0;
}


/******************************************
* 6. コンテンツ内の要素と記事スタイル
******************************************/

/* 記事本文内のメディア要素が親要素からはみ出すのを防ぐ */
.entry-content img,
.entry-content table,
.entry-content video,
.widget img,
.widget table,
.widget video {
  max-width: 100%;
  height: auto;
  box-sizing: border-box;
}

/* Figure要素（画像コンテナ）の強制制御 */
.entry-content figure,
.entry-content .wp-block-image img,
.entry-content figure img,
.widget figure,
.widget img {
  max-width: 100%;
  height: auto;
  display: block;
  box-sizing: border-box;
  margin-left: auto;
  margin-right: auto;
}

/* 記事要素のスタイル */
.entry-header {
  border-bottom: 2px solid #eee;
  padding-bottom: 15px;
  margin-bottom: 30px;
}

.entry-title {
  font-size: 2.2rem;
  line-height: 1.3;
}

.entry-meta {
  font-size: 0.85rem;
  color: #888;
}

.entry-content p {
  line-height: 1.7;
  margin-bottom: 1.5em;
}


/******************************************
* 7. スライダーコンポーネント (BEM: .my-slider)
******************************************/

.my-slider-wrapper {
  position: relative;
  overflow: hidden;
  width: 100%;
}

.my-slider-track {
  display: flex;
  transition: transform 0.5s ease-in-out;
  will-change: transform;
}

.my-slide {
  flex: 0 0 100%;
  width: 100%;
}

.slider-nav-button {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 0, 0, 0.5);
  color: white;
  border: none;
  padding: 10px;
  cursor: pointer;
  z-index: 10;
}
.slider-nav-button.prev { left: 10px; }
.slider-nav-button.next { right: 10px; }
.slider-nav-button:disabled { opacity: 0.5; cursor: default; }


/******************************************
* 8. フッターデザイン
******************************************/

.site-footer {
  background-color: #333;
  color: #fff;
  padding: 30px 20px;
  text-align: center;
}

.site-footer .site-info {
  max-width: 1200px;
  margin: 0 auto;
}

.footer-menu {
  list-style: none;
  padding: 0;
  margin: 0 0 15px 0;
  display: flex;
  justify-content: center;
  gap: 20px;
}

.footer-menu li a {
  color: #fff;
  text-decoration: none;
  font-size: 14px;
}

.footer-menu li a:hover {
  color: #aaa;
}

.copyright {
  font-size: 12px;
  margin: 0;
}

.copyright a {
  color: #fff;
  text-decoration: none;
}

.copyright .sep {
  margin: 0 5px;
}


/******************************************
* 9. パンくずリスト (BEM: .breadcrumb)
* PHPで nav.breadcrumb > ul が出力されていることを前提
******************************************/

nav.breadcrumb > ul {
  display: flex;
  list-style: none;
  padding: 0;
  margin: 20px 0 0 0;
  flex-wrap: nowrap;
  overflow-x: auto;
}

nav.breadcrumb > ul > li {
  white-space: nowrap;
  display: inline-block;
}

nav.breadcrumb > ul > li:not(:last-child)::after {
  content: " > ";
  margin: 0 5px;
  color: #666;
}

nav.breadcrumb a {
  text-decoration: none;
  color: #333;
}

/******************************************
* 10. アーカイブ記事一覧 (BEM: .post-grid)
* PHPで .post-grid と .post-card が使われていることを前提
******************************************/

/* アーカイブ記事一覧のグリッドコンテナ */
.post-grid {
   display: grid;
   grid-template-columns: repeat(3, 1fr); /* 3列 */
   gap: 30px;
   margin: 30px auto;
   padding: 0;
}

/* 個々の記事カード (archive-post-item の代わり) */
.post-card {
   box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
   border-radius: 6px;
   display: flex;
   flex-direction: column;
   height: 100%;
   overflow: hidden;
}

/* アイキャッチ画像 (post-thumbnail-link の代わり) */
.post-card .post-thumbnail-link {
   display: block;
   width: 100%;
   height: 200px;
   overflow: hidden;
   margin: 0;
   padding: 0;
}

.post-card .post-thumbnail-link img {
   width: 100%;
   height: 100%;
   object-fit: cover;
   display: block;
   margin: 0;
}

/* タイトル/抜粋/フッター */
.post-card .entry-header {
   padding: 15px 15px 0;
   margin: 0;
}
.post-card .entry-header h2,
.post-card .entry-header h2 a {
   padding: 0;
   margin: 0;
}

.post-card .entry-summary {
   padding: 15px;
   margin: 0;
   flex-grow: 1; /* 抜粋エリアを成長させる */
}
.post-card .entry-summary p {
   padding: 0;
   margin: 0;
}

.post-card .entry-footer {
   padding: 0 15px 15px;
   margin: 0;
   text-align: right;
   margin-top: auto; /* 成長した .entry-summary の下に配置 */
}

/******************************************
* 11. レスポンシブ対応 (900px以下)
******************************************/

@media (max-width: 900px) {
  
  /* サイト全体のパディング調整 */
  .site-content {
      padding: 10px;
  }

  /* 投稿ページレイアウトの切り替え (Flexboxを縦積みに) */
  .post-layout {
      flex-direction: column;
      gap: 0;
      padding: 0 15px;
      max-width: none;
  }

  .post-layout__content,
  .post-layout__sidebar {
      width: 100%;
      flex-basis: auto;
  }
  .post-layout__sidebar {
      margin-top: 30px;
  }
  
  /* ハンバーガーボタンを表示 */
  .menu-toggle {
      display: block;
      position: absolute;
      top: 15px;
      right: 20px;
      z-index: 1000;
      width: 30px;
      height: 30px;
      /* 既存のスタイルを維持 */
  }

  /* PCメニューを非表示 */
  .main-navigation {
      display: none;
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100vh;
      overflow-y: auto;
      background-color: rgba(255, 255, 255, 0.95);
      z-index: 999;
  }

  /* メニューが開いたときの表示 (JSで付与されるクラス) */
  .main-navigation.is-active {
      display: block;
  }
  
  /* X印の作成 (JSで付与されるクラス) */
  .menu-toggle.is-active .hamburger-line {
      opacity: 0;
  }
  .menu-toggle.is-active::before {
      top: 50%;
      transform: translateY(-50%) rotate(45deg);
  }
  .menu-toggle.is-active::after {
      bottom: auto;
      top: 50%;
      transform: translateY(-50%) rotate(-45deg);
  }

  /* メニューリストと項目の表示 */
  .main-navigation ul.menu-list {
      display: block;
      padding: 80px 20px 10px;
      width: 100%;
  }

  .main-navigation ul.menu-list li a {
      display: block;
      padding: 10px 0;
      border-bottom: 1px solid #eee;
  }
  
  /* アーカイブページの切り替え */
  .post-grid {
      grid-template-columns: repeat(2, 1fr); /* 2列表示 */
      gap: 20px;
  }
}

/******************************************
* 12. レスポンシブ対応 (768px以下 - スマートフォン)
******************************************/

@media (max-width: 768px) {
    
   /* 記事タイトルや主要見出しのサイズを縮小 */
   h1.entry-title {
       font-size: 1.8em;
   }
   h2 {
       font-size: 1.4em;
   }
   h3 {
       font-size: 1.2em;
   }

   /* フッターのレイアウト調整 */
   .site-footer .footer-menu {
       flex-direction: column;
   }
}


/******************************************
* 13. レスポンシブ対応 (600px以下 - 1列表示)
******************************************/

@media (max-width: 600px) {

   /* 記事一覧コンテナを1列に */
   .post-grid {
       grid-template-columns: 1fr;
       gap: 25px;
   }

   /* カード内のパディングを調整 */
   .post-card .entry-header {
       padding: 10px 10px 0;
   }
   .post-card .entry-summary {
       padding: 10px;
   }
   .post-card .entry-footer {
       padding: 0 10px 10px;
   }

   /* 画像の高さを調整 */
   .post-card .post-thumbnail-link {
       height: 150px;
   }
}

/******************************************
* Z. 修正追記: アーカイブグリッドの起動
******************************************/
/* PHPで .post-grid を追加した場合に、アーカイブグリッドを起動 */
.post-grid {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 30px;
   margin: 30px auto;
   padding: 0;
}

/* 1. カード化とパディング/余白の追加 */
.archive-post-item {
    /* カードの基本デザイン */
    border: 1px solid #e0e0e0; /* 枠線 */
    border-radius: 8px; /* 角丸 */
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.05); /* 軽い影 */
    background-color: #ffffff;
    
    /* パディング（内側の余白）の追加 */
    padding: 15px; 
    
    /* グリッド子要素全体に対しての高さを揃える設定（flexboxを利用）*/
    display: flex;
    flex-direction: column;
    height: 100%; /* 親要素(グリッドセル)いっぱいに広げる */
}

/* 記事カード内の要素間の余白調整 */
.archive-post-item header.entry-header {
    margin-bottom: 10px;
}
.archive-post-item .entry-summary {
    flex-grow: 1; /* 抜粋部分を柔軟に伸ばし、フッターを下に固定 */
    margin-bottom: 15px;
}

/* 2. 画像サイズの統一 (メディアオブジェクトとして扱う) */
.post-thumbnail-link {
    display: block;
    width: 100%;
    /* 例: 16:9 の縦横比に強制統一 */
    aspect-ratio: 16 / 9; 
    overflow: hidden; /* トリミング効果 */
    margin-bottom: 10px; /* 画像とタイトルの間に余白 */
}

.archive-post-item img.archive-post-thumbnail {
    width: 100%;
    height: 100%;
    object-fit: cover; /* 画像がコンテナを覆うように拡大・トリミングされる */
}

/******************************************
* B. 記事タイトル（アーカイブ）の文字サイズ調整
******************************************/
/* カテゴリ一覧の記事タイトル（H2）をターゲットにする */
.archive-post-item .entry-title {
    font-size: 20px; /* 現在の値より小さめのサイズを指定 */
    font-weight: bold; /* 必要に応じて太さを調整 */
    line-height: 1.4;
}

/* リンク要素も念のため継承させる */
.archive-post-item .entry-title a {
    color: inherit;
    text-decoration: none;
}

@media (max-width: 900px) {
  .post-grid {
      grid-template-columns: repeat(2, 1fr);
  }
}

@media (max-width: 600px) {
  .post-grid {
      grid-template-columns: 1fr;
  }
}

/* モバイルメニューボタンのベーススタイルと線 */
.menu-toggle {
    display: block;
    position: relative;
    width: 30px;
    height: 30px;
    padding: 0;
    border: none;
    background: none;
    cursor: pointer;
    z-index: 1000; /* ヘッダー最前面に配置 */
}

/* 中央の線 */
.hamburger-line {
    display: block;
    position: absolute;
    top: 50%;
    width: 100%;
    height: 2px;
    background: #333;
    transform: translateY(-50%);
    transition: all 0.3s;
}

/* 上下の線（疑似要素） */
.menu-toggle::before,
.menu-toggle::after {
    content: '';
    display: block;
    position: absolute;
    width: 100%;
    height: 2px;
    background: #333;
    left: 0;
    transition: all 0.3s;
}

.menu-toggle::before {
    top: 5px;
}

.menu-toggle::after {
    bottom: 5px;
}

/* 開いたときのスタイル (CSS側のトグルクラスは 'toggled') */
.menu-toggle.toggled .hamburger-line {
    opacity: 0;
}

.menu-toggle.toggled::before {
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
}

.menu-toggle.toggled::after {
    bottom: auto;
    top: 50%;
    transform: translateY(-50%) rotate(-45deg);
}

/* メニューボタンのテキストを視覚的に非表示にする */
.menu-toggle .screen-reader-text {
    /* WordPressの標準的な視覚的非表示テクニック */
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

/* PCサイズでメニューボタン全体を非表示にするルールは維持 */
@media (min-width: 901px) {
    .menu-toggle {
        display: none;
    }
}
