/* =====================================================================
   Mamoru Life - Games  リデザイン サンプル 共通スタイル
   方向性：明るい＋スポーツ系（白基調・高コントラスト・青/赤の差し色）
   ターゲット：eスポーツ競技シーンに関心のある日本人
   ===================================================================== */

/* ---- 1. カラーやサイズの設定値（ここを変えると全体の見た目が変わります）---- */
:root {
  /* 背景・面の色 */
  --bg:            #f4f6fb;   /* ページ全体の薄いグレー背景 */
  --surface:       #ffffff;   /* カードやヘッダーなど「面」の白 */
  --surface-2:     #f0f3f9;   /* うっすら沈ませたい面 */

  /* 文字の色 */
  --ink:           #0b1a36;   /* 見出し・本文の濃紺（黒より上品で目に優しい）*/
  --ink-soft:      #475069;   /* 補足テキストのグレー */
  --ink-faint:     #8a93a8;   /* 日付など控えめな情報 */

  /* 差し色（スポーツ的な鮮やかさ）*/
  --primary:       #1d4ed8;   /* メインの青：リンク・ボタン */
  --primary-dark:  #1538a3;   /* 青のホバー時 */
  --accent:        #e11d48;   /* 赤：速報・LIVE・強調 */

  /* カテゴリ別の色（棚を一目で区別する）*/
  --cat-results:    #e11d48;  /* 大会結果（赤）*/
  --cat-schedule:   #2563eb;  /* 大会情報・日程（青）*/
  --cat-guide:      #059669;  /* 観戦ガイド・解説（緑）*/
  --cat-teams:      #d97706;  /* チーム・選手（オレンジ）*/

  /* 枠線・影 */
  --border:        #e2e7f0;
  --shadow:        0 1px 2px rgba(11,26,54,.04), 0 8px 24px rgba(11,26,54,.06);
  --shadow-hover:  0 4px 10px rgba(11,26,54,.10), 0 16px 40px rgba(11,26,54,.12);

  /* レイアウト */
  --max:           1160px;   /* コンテンツの最大幅 */
  --radius:        14px;     /* 角丸 */
  --gap:           24px;
}

/* ---- 2. 全体のリセットと土台 ---- */
* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  overflow-x: hidden; /* 想定外の横スクロール（右側に余白が出る現象）を防ぐ保険 */
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN",
               "Yu Gothic", "Meiryo", system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}

a { color: var(--primary); text-decoration: none; }
a:hover { color: var(--primary-dark); }

img { max-width: 100%; display: block; }

.container {
  width: 100%;
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 20px;
}

/* ---- 3. ヘッダー（上部のナビゲーション）---- */
.site-header {
  position: sticky;        /* スクロールしても上に貼り付く */
  top: 0;
  z-index: 50;
  background: rgba(255,255,255,.92);
  backdrop-filter: saturate(140%) blur(8px);
  border-bottom: 1px solid var(--border);
}

.header-inner {
  display: flex;
  align-items: center;
  gap: 28px;
  height: 66px;
}

/* ロゴ */
.logo {
  display: flex;
  align-items: center;
  gap: 10px;
  font-weight: 800;
  font-size: 1.25rem;
  letter-spacing: .02em;
  color: var(--ink);
  white-space: nowrap;
  min-width: 0;        /* 画面が極端に狭いとき、ロゴが縮めるようにする */
  overflow: hidden;    /* それでも入りきらない分は隠す（横スクロールを出さない保険）*/
}
.logo .mark {
  width: 30px; height: 30px;
  flex: 0 0 auto;      /* マーク（Mのアイコン）は縮ませない */
  border-radius: 8px;
  background: linear-gradient(135deg, var(--primary), var(--accent));
  display: grid; place-items: center;
  color: #fff; font-weight: 900; font-size: .95rem;
}
.logo .sub {
  font-size: .72rem;
  font-weight: 700;
  color: var(--primary);
  border: 1.5px solid var(--primary);
  border-radius: 6px;
  padding: 1px 6px;
  letter-spacing: .08em;
}

/* グローバルナビ */
.global-nav {
  display: flex;
  gap: 4px;
  margin-left: auto;
}
.global-nav a {
  position: relative;
  color: var(--ink);
  font-weight: 700;
  font-size: .95rem;
  padding: 8px 14px;
  border-radius: 8px;
}
.global-nav a:hover { background: var(--surface-2); }
.global-nav a.is-active { color: var(--primary); }
.global-nav a.is-active::after {
  content: "";
  position: absolute; left: 14px; right: 14px; bottom: 2px;
  height: 3px; border-radius: 3px;
  background: var(--primary);
}

/* 検索ボタン */
.search-btn {
  width: 40px; height: 40px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  display: grid; place-items: center;
  cursor: pointer;
  color: var(--ink-soft);
}
.search-btn:hover { background: var(--surface-2); color: var(--primary); }

/* ---- 4. 共通パーツ：カテゴリのラベル ---- */
.tag {
  display: inline-block;
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .04em;
  color: #fff;
  padding: 3px 10px;
  border-radius: 999px;
  line-height: 1.5;
}
.tag--results  { background: var(--cat-results); }
.tag--schedule { background: var(--cat-schedule); }
.tag--guide    { background: var(--cat-guide); }
.tag--teams    { background: var(--cat-teams); }

/* 速報バッジ（点滅する赤丸つき）*/
.live {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: .72rem; font-weight: 800; color: var(--accent);
  letter-spacing: .06em;
}
.live .dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--accent);
  box-shadow: 0 0 0 0 rgba(225,29,72,.6);
  animation: pulse 1.6s infinite;
}
@keyframes pulse {
  0%   { box-shadow: 0 0 0 0 rgba(225,29,72,.55); }
  70%  { box-shadow: 0 0 0 8px rgba(225,29,72,0); }
  100% { box-shadow: 0 0 0 0 rgba(225,29,72,0); }
}

.date { color: var(--ink-faint); font-size: .82rem; }

/* セクション見出し */
.section { margin: 56px 0; }
.section-head {
  display: flex; align-items: baseline; gap: 12px;
  margin-bottom: 22px;
}
.section-head h2 {
  margin: 0;
  font-size: 1.4rem;
  font-weight: 800;
  letter-spacing: .01em;
}
.section-head .bar {
  width: 6px; height: 24px; border-radius: 3px;
  background: var(--primary);
  align-self: center;
}
.section-head .more {
  margin-left: auto;
  font-size: .88rem; font-weight: 700;
}

/* ---- 5. ヒーロー（トップ最上段の注目記事）---- */
.hero {
  display: grid;
  grid-template-columns: 1.7fr 1fr;
  gap: var(--gap);
  margin-top: 32px;
}

/* 大きい注目記事 */
.hero-main {
  position: relative;
  border-radius: var(--radius);
  overflow: hidden;
  min-height: 380px;
  color: #fff;
  display: flex;
  align-items: flex-end;
  box-shadow: var(--shadow);
  /* 画像が無くても成立するよう、雰囲気のあるグラデを敷く */
  background:
    linear-gradient(0deg, rgba(8,15,35,.92) 0%, rgba(8,15,35,.25) 55%, rgba(8,15,35,.15) 100%),
    radial-gradient(120% 120% at 80% 0%, #2c4bb8 0%, #0b1a36 60%);
}
.hero-main .thumb-note {
  position: absolute; top: 14px; right: 16px;
  font-size: .7rem; color: rgba(255,255,255,.55);
}
.hero-main .body { padding: 28px; position: relative; z-index: 2; }
.hero-main .meta { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.hero-main h1 {
  margin: 0 0 10px;
  font-size: 1.9rem;
  font-weight: 900;
  line-height: 1.4;
}
.hero-main p { margin: 0; color: rgba(255,255,255,.82); font-size: .95rem; }

/* 横のミニ記事リスト */
.hero-list {
  display: flex; flex-direction: column;
  gap: 12px;
}
.hero-list .item {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 14px 16px;
  box-shadow: var(--shadow);
  transition: transform .15s ease, box-shadow .15s ease;
}
.hero-list .item:hover { transform: translateY(-2px); box-shadow: var(--shadow-hover); }
.hero-list .item .meta { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.hero-list .item h3 { margin: 0; font-size: .98rem; font-weight: 700; line-height: 1.5; }

/* ---- 6. 次の大会（日程ストリップ）---- */
.schedule-strip {
  background: var(--ink);
  border-radius: var(--radius);
  padding: 20px 24px;
  color: #fff;
  display: flex;
  align-items: center;
  gap: 20px;
  overflow-x: auto;
  box-shadow: var(--shadow);
}
.schedule-strip .label {
  font-weight: 800; font-size: .9rem; white-space: nowrap;
  display: flex; align-items: center; gap: 8px;
  padding-right: 20px; border-right: 1px solid rgba(255,255,255,.18);
}
.schedule-strip .label .icon { color: var(--accent); font-size: 1.1rem; }
.match {
  display: flex; flex-direction: column; gap: 2px;
  white-space: nowrap; padding-right: 20px;
}
.match .when { font-size: .72rem; color: #9fb0d6; font-weight: 700; }
.match .what { font-size: .92rem; font-weight: 700; }
.match .where { font-size: .72rem; color: rgba(255,255,255,.55); }

/* ---- 7. 記事カードのグリッド ---- */
.card-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--gap);
}
/* 「大会結果」など、2枚並べたい場所のグリッド（PCで2列）。
   ※以前は front-page.php に直接 style で書いていたが、それだとスマホでも
     2列のままになってしまうため、クラスに変えてレスポンシブで切り替える。 */
.card-grid--pair { grid-template-columns: repeat(2, 1fr); }
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow);
  transition: transform .15s ease, box-shadow .15s ease;
  display: flex; flex-direction: column;
}
.card:hover { transform: translateY(-3px); box-shadow: var(--shadow-hover); }

/* サムネイル（画像が無くても色面で成立）*/
.card .thumb {
  aspect-ratio: 16 / 9;
  position: relative;
  display: grid; place-items: center;
  color: rgba(255,255,255,.9);
  font-weight: 800; font-size: 1.05rem; letter-spacing: .04em;
}
.card .thumb .tag { position: absolute; top: 12px; left: 12px; }
.thumb--results  { background: linear-gradient(135deg,#f43f5e,#b30c33); }
.thumb--schedule { background: linear-gradient(135deg,#3b82f6,#1538a3); }
.thumb--guide    { background: linear-gradient(135deg,#10b981,#046c4e); }
.thumb--teams    { background: linear-gradient(135deg,#f59e0b,#b45309); }

.card .body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.card h3 { margin: 0; font-size: 1.02rem; font-weight: 700; line-height: 1.55; }
.card .excerpt { margin: 0; color: var(--ink-soft); font-size: .86rem; line-height: 1.7; }
.card .foot { margin-top: auto; display: flex; align-items: center; gap: 10px; }

/* ---- 8. 結果速報（順位表）---- */
.standings {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow);
}
.standings .head {
  padding: 16px 20px;
  background: var(--surface-2);
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; gap: 12px;
}
.standings .head h3 { margin: 0; font-size: 1.05rem; font-weight: 800; }
.standings table { width: 100%; border-collapse: collapse; }
.standings th, .standings td {
  padding: 12px 20px;
  text-align: left;
  font-size: .9rem;
  border-bottom: 1px solid var(--border);
}
.standings th { color: var(--ink-faint); font-weight: 700; font-size: .76rem; letter-spacing: .04em; }
.standings tbody tr:last-child td { border-bottom: none; }
.standings .rank { font-weight: 800; width: 48px; }
.standings .rank--1 { color: #d4a000; }
.standings .rank--2 { color: #8a93a8; }
.standings .rank--3 { color: #b06a2c; }
.standings .team { font-weight: 700; }
.standings .pts { text-align: right; font-weight: 800; font-variant-numeric: tabular-nums; }

/* 2カラム（カード＋順位表）*/
.two-col {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: var(--gap);
  align-items: start;
}

/* ---- 9. フッター ---- */
.site-footer {
  margin-top: 72px;
  background: var(--ink);
  color: rgba(255,255,255,.7);
}
.footer-inner {
  display: flex;
  flex-wrap: wrap;
  gap: 32px;
  padding: 44px 20px 28px;
  justify-content: space-between;
}
.site-footer .logo { color: #fff; }
.site-footer .logo .sub { color: #fff; border-color: rgba(255,255,255,.5); }
.footer-about { max-width: 320px; font-size: .86rem; line-height: 1.8; }
.footer-col h4 { margin: 0 0 12px; color: #fff; font-size: .92rem; }
.footer-col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.footer-col a { color: rgba(255,255,255,.7); font-size: .86rem; }
.footer-col a:hover { color: #fff; }
.footer-bottom {
  border-top: 1px solid rgba(255,255,255,.12);
  padding: 16px 20px;
  font-size: .78rem;
  color: rgba(255,255,255,.5);
  text-align: center;
}

/* ============================================================
   記事ページ専用スタイル
   ============================================================ */
.article-wrap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 300px;
  gap: 40px;
  margin-top: 32px;
  align-items: start;
}
.breadcrumb { font-size: .82rem; color: var(--ink-faint); margin: 20px 0 4px; }
.breadcrumb a { color: var(--ink-soft); }

.article {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 40px 44px;
  box-shadow: var(--shadow);
}
.article-header .meta { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.article h1 {
  margin: 0 0 16px;
  font-size: 1.9rem;
  font-weight: 900;
  line-height: 1.45;
}
.article-eyecatch {
  border-radius: 12px;
  aspect-ratio: 16/9;
  margin: 8px 0 28px;
  display: grid; place-items: center;
  color: rgba(255,255,255,.9); font-weight: 800; font-size: 1.2rem;
}

/* 本文の読みやすさを最優先（行間・幅・見出しの間隔）*/
.article-body { font-size: 1.02rem; line-height: 1.95; color: #1c2540; }
.article-body p { margin: 0 0 1.5em; }
.article-body h2 {
  font-size: 1.4rem; font-weight: 800; margin: 2em 0 .8em;
  padding-left: 14px; border-left: 5px solid var(--primary);
  line-height: 1.5;
}
.article-body h3 { font-size: 1.15rem; font-weight: 800; margin: 1.6em 0 .6em; }
.article-body ul { padding-left: 1.3em; margin: 0 0 1.5em; }
.article-body li { margin-bottom: .5em; }
.article-body a { font-weight: 700; border-bottom: 1px solid rgba(29,78,216,.3); }

/* 本文中の注目ボックス */
.callout {
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-left: 5px solid var(--cat-schedule);
  border-radius: 10px;
  padding: 16px 20px;
  margin: 0 0 1.5em;
  font-size: .95rem;
}
.callout strong { color: var(--cat-schedule); }

/* ============================================================
   記事内のテーブル（表）
   記事本文に入れた表を、見やすく・スマホでも崩れないようにします。
   対応する書き方は2通り：
     ① ブロックエディタの「テーブル」ブロック … 手軽。色・ヘッダー帯・縞模様が自動で付く
     ② カスタムHTMLで <div class="mg-table"> … </div> … 列幅を % で自由に指定できる
   どちらも、画面より広い表はその枠の中だけ横スクロールします。
   ============================================================ */

/* ①②共通：表を囲む枠。画面からはみ出す表は、ここだけ横スクロールさせる（スマホ対策）。
   overflow: auto にすると、角丸からはみ出すヘッダーの色もきれいに切り取られる。*/
.article-body .wp-block-table,
.article-body .mg-table {
  overflow: auto;
  -webkit-overflow-scrolling: touch;   /* iPhoneで指スクロールを滑らかに */
  margin: 0 0 1.8em;
  border: 1px solid var(--border);
  border-radius: 10px;
  box-shadow: var(--shadow);
}

/* 表本体の基本 */
.article-body .wp-block-table table,
.article-body .mg-table table {
  width: 100%;
  border-collapse: collapse;
  background: var(--surface);
  font-size: .95rem;
  line-height: 1.6;
}

/* ②カスタムHTMLの表だけ：<col style="width:○%"> の指定をそのまま効かせる。
   さらにスマホで詰まりすぎないよう最低幅を持たせ、狭い画面では横スクロールに切り替わる。*/
.article-body .mg-table table {
  table-layout: fixed;   /* col で指定した % 幅を尊重する */
  min-width: 480px;      /* これより狭い画面になると横スクロールになる */
}

/* セル（見出し・データ共通）*/
.article-body .wp-block-table th,
.article-body .wp-block-table td,
.article-body .mg-table th,
.article-body .mg-table td {
  padding: 11px 14px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  vertical-align: top;
  word-break: break-word;
}

/* 見出しセル（th）= 青帯・白文字・太字。
   「上の行を見出しにする」も「左の列を見出しにする」も、
   そのセルを <th> にするだけで同じ見え方になります（書き方ひとつで自由）。
   セル同士の境目は、青地でも分かるよう薄い白の線にする。*/
.article-body .wp-block-table th,
.article-body .mg-table th {
  background: var(--primary);
  color: #fff;
  font-weight: 800;
  letter-spacing: .02em;
  border-bottom-color: rgba(255, 255, 255, .25);
}

/* 上のヘッダー行（横方向の見出し）は1行なので、下線を消してスッキリ見せる */
.article-body .wp-block-table thead th,
.article-body .wp-block-table tr:first-child th,
.article-body .mg-table thead th {
  font-size: .86rem;
  border-bottom: none;
}

/* ヘッダー行（列名）の固定。
   表が縦に長いとき、表の枠内をスクロールしても見出し行（thead）が上端に
   貼り付いて見えるようにする。順位表・大会結果だけでなく、手動入力の表
   （カスタムHTMLの mg-table・Gutenbergのテーブルブロック wp-block-table）も対象。
   短い表は枠内に収まるので影響なし。※見出しは <thead> に入れてください。 */
.article-body .wp-block-table,
.article-body .mg-table {
  max-height: 70vh;            /* これより高い表は枠内で縦スクロール */
}
.article-body .wp-block-table thead th,
.article-body .mg-table thead th {
  position: sticky;
  top: 0;                      /* 表の枠の上端に固定 */
  z-index: 2;                  /* 本文セルより前面に */
}

/* 順位の列は狭く（2桁の順位でも1行に収まる最小限の幅に）。
   [ranking] / [standings] / [result] の順位列（.mg-col-rank）に効く。
   余白も詰めて、チーム名の列を広く使えるようにする。 */
.article-body .mg-table th.mg-col-rank,
.article-body .mg-table td.mg-col-rank {
  width: 3em;
  padding-left: 6px;
  padding-right: 6px;
  white-space: nowrap;         /* 順位の数字は折り返さない */
  text-align: center;
}

/* ポイントの列も内容ぶんだけの狭い固定幅にする。
   こうすると、幅の指定がない「チーム」列が残りの幅を全部もらえて一番広くなる。 */
.article-body .mg-table th.mg-col-pts,
.article-body .mg-table td.mg-col-pts {
  width: 5em;
  padding-left: 8px;
  padding-right: 8px;
  white-space: nowrap;
}

/* 大会結果（[result]）の「状態」列（優勝🏆／MP点灯）も狭めの固定幅にして、
   チーム列を最優先で広く取る。 */
.article-body .mg-table th.mg-col-status,
.article-body .mg-table td.mg-col-status {
  width: 5.5em;
  padding-left: 6px;
  padding-right: 6px;
}

/* スマホ：列が少ない順位表（順位・チーム・PTS 等）は横スクロールせず画面に収める。
   列が多い表（選手名つき等）は従来どおり横スクロール。セルの余白も少し詰める。 */
@media (max-width: 560px) {
  .article-body .mg-table.mg-rank--narrow table { min-width: 0; }
  .article-body .mg-table.mg-rank th,
  .article-body .mg-table.mg-rank td { padding: 9px 8px; }
}

/* 縞模様（偶数行をうっすら色付け）で、横長の行を目で追いやすくする */
.article-body .wp-block-table tbody tr:nth-child(even) td,
.article-body .mg-table tbody tr:nth-child(even) td {
  background: var(--surface-2);
}

/* 最終行の下線は消してスッキリ見せる（td・th どちらでも）*/
.article-body .wp-block-table tbody tr:last-child td,
.article-body .wp-block-table tbody tr:last-child th,
.article-body .mg-table tbody tr:last-child td,
.article-body .mg-table tbody tr:last-child th {
  border-bottom: none;
}

/* 補助クラス：数字を右にそろえる列に付ける（例：ポイント・賞金）*/
.article-body td.num,
.article-body th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;   /* 数字の桁をきれいにそろえる */
}
/* 補助クラス：中央ぞろえにしたい列（例：順位）*/
.article-body td.center,
.article-body th.center { text-align: center; }

/* ============================================================
   汎用テーブルの装飾クラス（記事内テーブル mg-table 用）
   ------------------------------------------------------------
   ライターが class="..." を付けるだけで、文字色・セル/行の背景色・
   画像・横スクロール幅を指定できます（太字は <strong>、リンクは <a>）。
   ※ このまとまりは「縞模様（zebra）」より後に置くこと。
     詳細度が同じため、後に書いたこちらが優先され、
     行・セルの色が縞模様に勝つようにしています。
   ============================================================ */

/* 文字色：<span> や <strong> に付ける（例：<strong class="t-red">…</strong>）*/
.article-body .mg-table .t-red   { color: #d32f2f; }
.article-body .mg-table .t-blue  { color: #1d4ed8; }
.article-body .mg-table .t-green { color: #2e7d32; }
.article-body .mg-table .t-gold  { color: #b07d00; }
.article-body .mg-table .t-gray  { color: #6b7280; }

/* 行の背景色：<tr class="row-○"> に付ける（縞模様より優先される）*/
.article-body .mg-table tbody tr.row-red    td { background: #fdecea; }
.article-body .mg-table tbody tr.row-blue   td { background: #e8f0fe; }
.article-body .mg-table tbody tr.row-green  td { background: #e8f5e9; }
.article-body .mg-table tbody tr.row-gold   td { background: #fff7e0; }
.article-body .mg-table tbody tr.row-gray   td { background: #f1f3f5; }
.article-body .mg-table tbody tr.row-hl     td { background: #eef4ff; }

/* セルの背景色：<td class="cell-○"> や <th class="cell-○"> に付ける。
   行の色より後に書いてあるので、同じセルに行色とセル色があればセル色が勝つ */
.article-body .mg-table td.cell-red,
.article-body .mg-table th.cell-red    { background: #fdecea; }
.article-body .mg-table td.cell-blue,
.article-body .mg-table th.cell-blue   { background: #e8f0fe; }
.article-body .mg-table td.cell-green,
.article-body .mg-table th.cell-green  { background: #e8f5e9; }
.article-body .mg-table td.cell-gold,
.article-body .mg-table th.cell-gold   { background: #fff7e0; }
.article-body .mg-table td.cell-gray,
.article-body .mg-table th.cell-gray   { background: #f1f3f5; }

/* セル内の画像：<img class="cell-img" src="...">。
   既定で小さめに収める。大きくしたいときは style="max-width:120px" などで上書き可 */
.article-body .mg-table .cell-img {
  display: inline-block;
  max-width: 56px;
  height: auto;
  vertical-align: middle;
  border-radius: 4px;
}

/* 横に長い表を「あえて広く」して横スクロールさせたいとき、
   表を囲む <div class="mg-table is-wide"> のように付ける（is-xwide はさらに広い）*/
.article-body .mg-table.is-wide  table { min-width: 760px; }
.article-body .mg-table.is-xwide table { min-width: 1000px; }

/* 横スクロールさせない（列が少ない簡単な表向け）。
   既定の min-width:480px を解除し、狭い画面でも横スクロールせず収める。
   2〜3列の「賞金」「配点」「項目｜内容」などの表に <div class="mg-table is-narrow"> と付ける。 */
.article-body .mg-table.is-narrow table { min-width: 0; }

/* タグ一覧 */
.tag-list { display: flex; flex-wrap: wrap; gap: 8px; margin: 28px 0 0; }
.tag-list .pill {
  font-size: .8rem; font-weight: 700;
  color: var(--ink-soft);
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 5px 12px;
}
.tag-list .pill:hover { color: var(--primary); border-color: var(--primary); }

/* 記事ページのサイドバー */
.aside { display: grid; gap: 24px; position: sticky; top: 86px; }
.widget {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 20px;
  box-shadow: var(--shadow);
}
.widget h4 {
  margin: 0 0 14px; font-size: .95rem; font-weight: 800;
  display: flex; align-items: center; gap: 8px;
}
.widget h4 .bar { width: 5px; height: 18px; border-radius: 3px; background: var(--primary); }
.rank-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; }
.rank-list li { display: flex; gap: 12px; align-items: flex-start; }
.rank-list .num {
  flex: 0 0 24px; height: 24px; border-radius: 6px;
  background: var(--surface-2); color: var(--ink-soft);
  display: grid; place-items: center; font-weight: 800; font-size: .8rem;
}
.rank-list .num--top { background: var(--primary); color: #fff; }
.rank-list a { color: var(--ink); font-weight: 700; font-size: .9rem; line-height: 1.5; }
.rank-list a:hover { color: var(--primary); }

/* ============================================================
   レスポンシブ（スマホ・タブレット対応）
   ============================================================ */
@media (max-width: 900px) {
  .hero,
  .two-col { grid-template-columns: 1fr; }
  /* 記事ページは minmax(0, 1fr) にする。
     1fr のままだと、横長の表など中身が広い要素が「列ごと」広がり、
     ページ全体が横スクロールしてしまう。minmax(0, …) にすると列は画面幅を超えず、
     はみ出す表は表の枠（.mg-table）の中だけで横スクロールするようになる。 */
  .article-wrap { grid-template-columns: minmax(0, 1fr); }
  .card-grid { grid-template-columns: repeat(2, 1fr); }
  .aside { position: static; }

  /* スマホ・タブレットでは上部メニューを隠し、ドロワー（左の開閉メニュー）に集約する。
     WordPressが出力する <ul class="global-nav"> だけでなく、その外側の
     <nav> という「枠」も隠さないと、横幅をはみ出して右に余白が出てしまう。 */
  .global-nav,
  .header-inner > nav { display: none; }
  .header-inner { gap: 14px; }       /* 要素間の間隔を詰めて1行に収める */
  .search-btn { margin-left: auto; } /* 検索ボタンを右端に寄せる */

  .article { padding: 28px 22px; }
}

@media (max-width: 560px) {
  .card-grid,
  .card-grid--pair { grid-template-columns: 1fr; } /* 幅の狭い画面ではカードは1列に */
  .hero-main h1 { font-size: 1.45rem; }
  .article h1 { font-size: 1.45rem; }
  .logo .sub { display: none; }       /* 「GAMES」バッジは省略してロゴを短く */

  /* 表のセルは余白を少し詰めて、狭い画面でも文字を確保する */
  .article-body .wp-block-table th,
  .article-body .wp-block-table td,
  .article-body .mg-table th,
  .article-body .mg-table td { padding: 9px 11px; font-size: .9rem; }
}

/* 320pxなど特に小さい端末向けの微調整（ロゴと間隔をさらに詰めて1行に収める）*/
@media (max-width: 400px) {
  .header-inner { gap: 10px; }
  .logo { font-size: 1.05rem; }
}

/* ============================================================
   開閉できるサイドバー（ドロワー）
   ヘッダーのボタンで、左からスライドして開閉します
   ============================================================ */

/* ヘッダー左のメニュー開閉ボタン（ハンバーガー）*/
.menu-toggle {
  width: 42px; height: 42px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  display: grid; place-items: center;
  cursor: pointer;
  color: var(--ink);
  flex: 0 0 auto;
}
.menu-toggle:hover { background: var(--surface-2); color: var(--primary); }
.menu-toggle .lines { display: block; width: 18px; }
.menu-toggle .lines span {
  display: block; height: 2.2px; border-radius: 2px;
  background: currentColor; margin: 3.5px 0;
}

/* 背景の暗幕（開いている間だけ表示）*/
.drawer-backdrop {
  position: fixed; inset: 0;
  background: rgba(8,15,35,.45);
  opacity: 0; visibility: hidden;
  transition: opacity .25s ease, visibility .25s ease;
  z-index: 90;
}
.drawer-backdrop.is-open { opacity: 1; visibility: visible; }

/* サイドバー本体 */
.drawer {
  position: fixed; top: 0; left: 0; bottom: 0;
  width: 300px; max-width: 84vw;
  background: var(--surface);
  border-right: 1px solid var(--border);
  box-shadow: 8px 0 40px rgba(11,26,54,.18);
  z-index: 100;
  transform: translateX(-100%);          /* ふだんは画面の外に隠す */
  transition: transform .28s cubic-bezier(.4,0,.2,1);
  display: flex; flex-direction: column;
  overflow-y: auto;
}
.drawer.is-open { transform: translateX(0); }  /* 開いたら表示位置へ */

/* サイドバーの上部（タイトル＋閉じるボタン）*/
.drawer-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 18px;
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; background: var(--surface);
}
.drawer-head .logo { font-size: 1.05rem; }
.drawer-close {
  width: 36px; height: 36px;
  border: none; border-radius: 8px;
  background: var(--surface-2); color: var(--ink-soft);
  cursor: pointer; font-size: 1.2rem; line-height: 1;
  display: grid; place-items: center;
}
.drawer-close:hover { background: #e7ebf3; color: var(--ink); }

.drawer-section { padding: 18px; border-bottom: 1px solid var(--border); }
.drawer-section h4 {
  margin: 0 0 12px; font-size: .78rem; font-weight: 800;
  letter-spacing: .06em; color: var(--ink-faint);
}

/* 検索ボックス */
.drawer-search {
  display: flex; align-items: center; gap: 8px;
  border: 1px solid var(--border); border-radius: 10px;
  padding: 8px 12px; background: var(--surface-2);
  color: var(--ink-faint);
}
.drawer-search input {
  border: none; background: transparent; outline: none;
  width: 100%; font-size: .9rem; color: var(--ink);
  font-family: inherit;
}

/* カテゴリのリンク（色ドット付き）*/
.drawer-nav { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.drawer-nav a {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; border-radius: 9px;
  color: var(--ink); font-weight: 700; font-size: .95rem;
}
.drawer-nav a:hover { background: var(--surface-2); }
.drawer-nav .dot-cat { width: 10px; height: 10px; border-radius: 3px; flex: 0 0 auto; }
.dot-cat.results  { background: var(--cat-results); }
.dot-cat.schedule { background: var(--cat-schedule); }
.dot-cat.guide    { background: var(--cat-guide); }
.dot-cat.teams    { background: var(--cat-teams); }

/* サイドバー内の人気記事 */
.drawer .rank-list a { font-size: .88rem; }

/* 「次の大会」への導線（目を引くカード）*/
.next-event {
  display: block; padding: 14px 16px; border-radius: 10px;
  background: var(--primary); color: #fff;
  text-decoration: none; transition: opacity .15s ease;
}
.next-event:hover { opacity: .9; }
.next-event__title { display: block; font-weight: 800; font-size: .98rem; }
.next-event__sub   { display: block; margin-top: 4px; font-size: .78rem; opacity: .85; }

/* スマホで隠していた上部メニューは、ドロワーがあるので問題なし */

/* ============================================================
   WordPress連携用の追加（アイキャッチ画像の表示調整）
   ============================================================ */
.card .thumb { overflow: hidden; }
.card .thumb .thumb-img,
.article-eyecatch .thumb-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
}
.article-eyecatch { position: relative; overflow: hidden; }
/* 画像がある場合、カテゴリタグを画像の上に重ねる */
.card .thumb .tag-slot .tag { position: absolute; top: 12px; left: 12px; z-index: 2; }

/* ============================================================
   WordPressの自動メニュー出力に合わせたリスト調整
   ============================================================ */
.global-nav, .global-nav ul {
  list-style: none; margin: 0; padding: 0;
}
.global-nav li { margin: 0; }
.drawer-nav li { list-style: none; margin: 0; }
.drawer-nav ul { list-style: none; margin: 0; padding: 0; }
/* アーカイブ等の自動リンクもカテゴリ風に */
.drawer-section .drawer-nav a { display: flex; align-items: center; gap: 10px; }

/* ============================================================
   カテゴリページ（親カテゴリ・子カテゴリ）
   ============================================================ */

/* 見出し行に記事件数を右寄せで添える */
.cat-head { margin-top: 10px; margin-bottom: 14px; }
.cat-count {
  margin-left: auto;
  font-size: .82rem; font-weight: 700;
  color: var(--ink-faint);
  white-space: nowrap;
}

/* カテゴリの説明文（リード）*/
.cat-lead {
  margin: 0 0 24px;
  color: var(--ink-soft);
  font-size: .95rem;
  line-height: 1.85;
  max-width: 760px;
}

/* 子カテゴリ／関連カテゴリへのチップ（色ドット付き）*/
.cat-nav {
  display: flex; flex-wrap: wrap; gap: 10px;
  margin: 0 0 28px;
}
.cat-nav .pill {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: .88rem; font-weight: 700;
  color: var(--ink); background: var(--surface);
  border: 1px solid var(--border); border-radius: 999px;
  padding: 7px 14px;
  transition: border-color .15s ease, color .15s ease, background .15s ease;
}
.cat-nav .pill .dot {
  width: 9px; height: 9px; border-radius: 3px;
  background: var(--dot, var(--primary));
  flex: 0 0 auto;
}
.cat-nav .pill:hover { border-color: var(--primary); color: var(--primary); }
/* 現在表示中のカテゴリは塗りつぶしで強調 */
.cat-nav .pill.is-active {
  color: #fff;
  background: var(--dot, var(--primary));
  border-color: transparent;
}
.cat-nav .pill.is-active .dot { background: rgba(255,255,255,.85); }

/* 人気タグの並び（既存の .tag-list .pill を流用）*/
.cat-tags {
  display: flex; align-items: flex-start; gap: 12px;
  flex-wrap: wrap; margin: 0 0 30px;
}
.cat-tags__label {
  font-size: .76rem; font-weight: 800; letter-spacing: .04em;
  color: var(--ink-faint); padding-top: 7px; white-space: nowrap;
}
.cat-tags .tag-list { margin: 0; }

/* 注目記事（横長カード）*/
.cat-featured { margin-bottom: var(--gap); }
.card--wide { flex-direction: row; align-items: stretch; }
.card--wide .thumb {
  aspect-ratio: auto;
  flex: 0 0 46%; width: 46%; min-height: 240px;
}
.card--wide .body { justify-content: center; gap: 10px; padding: 24px 28px; }
.card--wide .meta { display: flex; align-items: center; gap: 10px; }
.card--wide h3 { font-size: 1.35rem; line-height: 1.45; }
.card--wide .excerpt { font-size: .92rem; }

/* 記事が無いときのフォロー表示 */
.cat-empty {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius); box-shadow: var(--shadow);
  padding: 40px 32px; text-align: center; color: var(--ink-soft);
  margin-top: 8px;
}
.cat-empty p { margin: 0 0 8px; }
.cat-empty .cat-nav { justify-content: center; margin-top: 20px; }

/* スマホ：注目カードは縦並びに切り替える */
@media (max-width: 700px) {
  .card--wide { flex-direction: column; }
  .card--wide .thumb { width: 100%; flex: none; aspect-ratio: 16/9; min-height: 0; }
  .card--wide .body { padding: 16px 18px 18px; }
  .card--wide h3 { font-size: 1.15rem; }
}

/* ============================================================
   ページ送り・スクリーンリーダー用テキスト
   ============================================================ */
.screen-reader-text {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
.pager .nav-links { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.pager .page-numbers {
  display: inline-grid; place-items: center;
  min-width: 40px; height: 40px; padding: 0 12px;
  border: 1px solid var(--border); border-radius: 10px;
  background: var(--surface); color: var(--ink); font-weight: 700;
  text-decoration: none;
}
.pager .page-numbers.current { background: var(--primary); color: #fff; border-color: var(--primary); }
.pager .page-numbers:hover { border-color: var(--primary); color: var(--primary); }
.pager .page-numbers.current:hover { color: #fff; }

/* ============================================================
   記事内の装飾パーツ（カスタムHTMLブロック用）
   ------------------------------------------------------------
   ライターが class を付けるだけで、統一されたカード型の図を作れます。
   インラインstyle（style="..."）を書かなくても、幅・文字サイズ・スマホ対応が
   すべてそろいます。表（mg-table）と同じ考え方です。
     .mg-flow    … 「1年の流れ」など、横並びのステップ図（均等幅）
     .mg-points  … 数字や要点を強調するカード（均等幅）
     .mg-callout … 「早わかり」などの囲みボックス（中に項目リスト .facts）
     .mg-related … 「関連記事」「あわせて読みたい」の案内ボックス
   いずれもスマホでは自動で列数が減り、カードの幅・大きさはそろったままです。
   ============================================================ */

/* --- ステップ図（mg-flow）／ポイントカード（mg-points）共通の土台 ---
   グリッドにすることで、折り返してもカード幅が均等にそろう（間延びしない）。*/
.article-body .mg-flow,
.article-body .mg-points {
  display: grid;
  gap: 12px;
  margin: 1.6em 0;
}
.article-body .mg-flow   { grid-template-columns: repeat(4, 1fr); }
.article-body .mg-points { grid-template-columns: repeat(3, 1fr); }

/* ステップ図の各カード（.step）*/
.article-body .mg-flow .step {
  display: flex; flex-direction: column; gap: 4px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 14px 12px;
  text-align: center;
}
.article-body .mg-flow .step .when  { font-size: .78rem; font-weight: 700; color: var(--ink-soft); }
.article-body .mg-flow .step .title { font-size: 1rem;   font-weight: 800; color: var(--ink); }
.article-body .mg-flow .step .note  { font-size: .82rem; color: var(--ink-soft); }
/* 最終決戦（札幌）など、特別な1枚は金色で強調：.step に is-final を足す */
.article-body .mg-flow .step.is-final {
  background: #fff7e0;
  border: 2px solid #e8c469;
}
.article-body .mg-flow .step.is-final .when  { color: #b07d00; }
.article-body .mg-flow .step.is-final .title { color: #8a6300; }

/* ポイントカード（.point）*/
.article-body .mg-points .point {
  background: var(--surface);
  border: 1px solid var(--border);
  border-left: 5px solid var(--primary);
  border-radius: 10px;
  padding: 16px 18px;
}
.article-body .mg-points .point .big {
  display: block; font-size: 1.5rem; font-weight: 800;
  color: var(--primary); line-height: 1.2;
}
.article-body .mg-points .point .label {
  display: block; font-weight: 800; margin: 4px 0 2px; color: var(--ink);
}
.article-body .mg-points .point .desc {
  display: block; font-size: .88rem; color: var(--ink-soft);
}
/* 金色バージョン（日本開催など特別な1枚）：.point に is-gold を足す */
.article-body .mg-points .point.is-gold { border-left-color: #e0a93a; background: #fffaf0; }
.article-body .mg-points .point.is-gold .big { color: #b07d00; }

/* --- 早わかりボックス（mg-callout）--- */
.article-body .mg-callout {
  background: #fff7e0;
  border: 2px solid #e8c469;
  border-radius: 14px;
  padding: 18px 20px;
  margin: 1.6em 0;
}
.article-body .mg-callout .ttl {
  margin: 0 0 12px; font-weight: 800; color: #b07d00; font-size: 1.05rem;
}
/* 項目リスト（.facts）：見出し（dt）＋内容（dd）を1行ずつ並べる */
.article-body .mg-callout .facts { margin: 0; }
.article-body .mg-callout .facts > div {
  display: flex; gap: 12px;
  padding: 9px 0;
  border-top: 1px solid rgba(176,125,0,.18);
}
.article-body .mg-callout .facts > div:first-child { border-top: none; }
.article-body .mg-callout .facts dt { flex: 0 0 84px; font-weight: 800; color: var(--ink); }
.article-body .mg-callout .facts dd { margin: 0; color: var(--ink); }

/* --- 関連記事ボックス（mg-related）--- */
.article-body .mg-related {
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-left: 5px solid var(--primary);
  border-radius: 10px;
  padding: 14px 18px;
  margin: 1.5em 0;
  font-size: .95rem;
}
.article-body .mg-related .ttl { font-weight: 800; color: var(--primary); margin: 0 0 6px; }
.article-body .mg-related ul   { margin: 0; padding-left: 1.2em; line-height: 1.9; }
.article-body .mg-related .note { font-size: .82rem; color: var(--ink-faint); margin: 8px 0 0; }

/* スマホ：ステップ図は2列、ポイントカードは1列に（幅は均等のまま間延びしない）*/
@media (max-width: 700px) {
  .article-body .mg-flow   { grid-template-columns: repeat(2, 1fr); }
  .article-body .mg-points { grid-template-columns: 1fr; }
}

/* ============================================================
   記事本文の「目次」（自動生成・.mg-toc）
   ------------------------------------------------------------
   functions.php が記事の見出し（H2・H3）から自動で作ります。
   見出し2つ以上の記事だけに、本文の先頭で表示されます。
   ============================================================ */
.article-body .mg-toc {
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px 20px;
  margin: 0 0 1.8em;
}
.article-body .mg-toc__ttl {
  margin: 0 0 10px;
  font-weight: 800;
  font-size: 1.02rem;
  color: var(--ink);
  display: flex; align-items: center; gap: 8px;
}
/* 見出しの左に小さな青いバーを添える（テーマの見出しと雰囲気をそろえる）*/
.article-body .mg-toc__ttl::before {
  content: "";
  width: 5px; height: 18px; border-radius: 3px;
  background: var(--primary);
}
.article-body .mg-toc__list {
  margin: 0;
  padding-left: 1.4em;
  line-height: 1.8;
}
.article-body .mg-toc__list li { margin-bottom: .3em; }
.article-body .mg-toc__list a {
  color: var(--ink-soft);
  font-weight: 700;
  border-bottom: none;
}
.article-body .mg-toc__list a:hover { color: var(--primary); }
/* H3 の項目（is-sub）は一段下げて、小見出しだと分かるようにする */
.article-body .mg-toc__list li.is-sub {
  margin-left: 1.1em;
  list-style: circle;
  font-size: .94rem;
}

/* 目次のリンクで見出しに飛んだとき、上部の固定ヘッダー（高さ66px）に
   見出しが隠れないよう、少し余白をとって止める。*/
.article-body h2,
.article-body h3 { scroll-margin-top: 86px; }

/* ============================================================
   記事内テーブルの「タップで拡大」（.is-zoomable / .mg-modal）
   ------------------------------------------------------------
   横にはみ出している表は、タップすると画面いっぱいの拡大ウィンドウで
   大きく見られます。判定と開閉は assets/script.js が行います。
   ============================================================ */

/* はみ出している表：拡大できる合図（カーソルとヒントバッジ）*/
.article-body .mg-table.is-zoomable,
.article-body .wp-block-table.is-zoomable {
  cursor: zoom-in;
  position: relative;
}
.article-body .is-zoomable::after {
  content: "拡大";
  position: absolute; top: 8px; right: 8px;
  background: rgba(11,26,54,.72); color: #fff;
  font-size: .7rem; font-weight: 700;
  padding: 3px 9px; border-radius: 999px;
  pointer-events: none;   /* バッジ自体はクリックを邪魔しない */
  z-index: 3;             /* 固定ヘッダー（z-index:2）より前面に出して隠れないようにする */
}
/* 拡大表示（モーダル）の中では「タップで拡大」バッジと拡大カーソルを出さない
   （すでに拡大済みのため。クローンした表に is-zoomable が残っていても無効化する）*/
.mg-modal__body .is-zoomable { cursor: default; }
.mg-modal__body .is-zoomable::after { content: none; display: none; }

/* 拡大ウィンドウ（モーダル）本体。ふだんは非表示 */
.mg-modal { position: fixed; inset: 0; z-index: 200; display: none; }
.mg-modal.is-open { display: block; }

/* 背景の暗幕 */
.mg-modal__backdrop {
  position: absolute; inset: 0;
  background: rgba(8,15,35,.6);
}

/* 表を大きく見せる白いパネル（画面のほぼ全面）*/
.mg-modal__panel {
  position: absolute; inset: 16px;
  background: var(--surface);
  border-radius: 14px;
  box-shadow: var(--shadow-hover);
  padding: 12px 14px 16px;
  display: flex; flex-direction: column;
}
.mg-modal__close {
  align-self: flex-end;
  width: 40px; height: 40px;
  border: none; border-radius: 10px;
  background: var(--surface-2); color: var(--ink-soft);
  font-size: 1.4rem; line-height: 1; cursor: pointer;
  flex: 0 0 auto;
}
.mg-modal__close:hover { background: #e7ebf3; color: var(--ink); }

/* 拡大ウィンドウの中身（ここに表が入り、上下左右にスクロールできる）*/
.mg-modal__body {
  flex: 1;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  margin-top: 8px;
}
/* 拡大表示の中の表は、枠線・影・余白を消してパネルに馴染ませる */
.mg-modal__body .mg-table,
.mg-modal__body .wp-block-table {
  border: none; box-shadow: none; margin: 0;
  overflow: visible;   /* スクロールは外側（.mg-modal__body）に任せる */
  max-height: none;    /* 通常表示の高さ制限(70vh)を解除し、拡大時は全体を表示 */
}

/* 拡大表示では、列幅を内容に合わせて広げ、セルを折り返さない。
   こうすると「各地域オンライン」などが途中で改行されず、1行で読める。
   表全体は外側（.mg-modal__body）の横スクロールで確認する。
   ※ 通常の本文中（枠が狭い）では今までどおり折り返す。ここは拡大時だけの指定。*/
.mg-modal__body .mg-table table,
.mg-modal__body .wp-block-table table {
  table-layout: auto;       /* 列幅は内容に合わせる（固定%を解除）*/
  min-width: max-content;   /* 内容が収まる幅まで広げる */
  width: auto;
}
.mg-modal__body .mg-table th,
.mg-modal__body .mg-table td,
.mg-modal__body .wp-block-table th,
.mg-modal__body .wp-block-table td {
  white-space: nowrap;      /* セル内を折り返さない（1行で表示）*/
}

/* ============================================================
   選手・チームの「チップ（小さなラベル）」（.mg-chip）
   ------------------------------------------------------------
   文章の中や表の中に、アイコン付きの小さなラベルを置けます。
   ・チーム … 色つきの丸＋頭文字（または画像）＋チーム名。href でリンク化も可。
   ・デバイス … パッド／マウスのアイコン＋文字（薄い色の背景つき）。
   出力は functions.php の [team] / [device] ショートコードが行います。
   ============================================================ */

/* チップ本体（行の中になじむ小さなバッジ）*/
.article-body .mg-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  vertical-align: middle;
  font-size: .88em;
  font-weight: 700;
  line-height: 1;
  padding: 4px 11px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--ink);
  white-space: nowrap;
}
/* 画像アイコン付き（許諾済みロゴ）のときは、左側を少し詰めてアイコンを寄せる */
.article-body .mg-chip:has(.mg-chip__ic--img) { padding-left: 3px; }
/* リンクのチップ（クリックで記事などへ）*/
.article-body a.mg-chip {
  text-decoration: none;
  border-bottom: none;
  transition: border-color .15s ease, color .15s ease, box-shadow .15s ease;
}
.article-body a.mg-chip:hover {
  border-color: var(--primary);
  color: var(--primary);
  box-shadow: var(--shadow);
}

/* 先頭アイコンのコンテナ（許諾済みロゴ画像用）。
   自作運用では使わず、テキストだけのチップになる（丸アイコンは廃止）。
   img を指定したときだけ、ここに画像が丸く収まって先頭に表示される。
   大きさは常に一定（22px）。*/
.article-body .mg-chip__ic--img {
  display: inline-grid;
  place-items: center;
  width: 22px; height: 22px;
  min-width: 22px;
  box-sizing: border-box;
  flex: 0 0 auto;
  border-radius: 50%;
  overflow: hidden;
}
.article-body .mg-chip__ic--img img {
  width: 100%; height: 100%;
  object-fit: cover;
}

/* チーム名などのラベル文字 */
.article-body .mg-chip__label { display: inline-block; line-height: 1; }

/* チームチップの色分け：color を指定したときだけ、枠線と薄い背景にチームカラーを付ける。
   文字は読みやすさを優先して常に濃い既定色（--ink）に固定する。
   こうすると黄色など明るいチームカラーでも文字がきちんと読める。
   色の識別は「やや濃い枠線」と「薄い背景色」で行う。
   color-mix 非対応の古い環境では、枠線だけが色付く（背景は白・文字は黒のまま）。*/
.article-body .mg-chip--team[style*="--c"] {
  color: var(--ink);
  border-color: color-mix(in srgb, var(--c) 55%, var(--border));
  background: color-mix(in srgb, var(--c) 12%, #fff);
}
.article-body a.mg-chip--team[style*="--c"]:hover {
  border-color: var(--c);
  color: var(--ink);
  background: color-mix(in srgb, var(--c) 20%, #fff);
}

/* --- デバイス（パッド／マウス）--- */
/* 丸ではなくアイコンだけを文字色に合わせて表示する */
.article-body .mg-chip--device { padding-left: 8px; }
.article-body .mg-chip--device .mg-chip__ic {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  background: transparent;
  color: inherit;       /* 下のチップ色（青/オレンジ）に合わせる */
}
.article-body .mg-chip--device .mg-chip__ic svg { display: block; }

/* マウス＝青系、パッド＝オレンジ系で一目で区別できるようにする */
.article-body .mg-chip--mouse {
  background: #e8f0fe; border-color: #cfe0fd; color: #1538a3;
}
.article-body .mg-chip--pad {
  background: #fff3e6; border-color: #ffddb8; color: #9a5b00;
}

/* --- 選手チップ（[player id]）--- */
/* 選手名＋現所属（小さく）＋デバイスアイコンを1つのチップにまとめる */
.article-body .mg-chip--player { gap: 6px; }
/* 現所属チーム名：選手名より控えめに、薄い色で添える */
.article-body .mg-chip--player .mg-chip__sub {
  font-weight: 700;
  font-size: .82em;
  color: var(--ink-faint);
  padding-left: 6px;
  border-left: 1px solid var(--border);
}
/* チップの中に入れるデバイス表示は、小さめに収める */
.article-body .mg-chip--player .mg-chip__dev .mg-chip--device {
  padding: 2px 7px;
  font-size: .8em;
  border-radius: 999px;
}

/* ============================================================
   選手プロフィールカード（.mg-player-card）／メンバー一覧（.mg-roster）
   ------------------------------------------------------------
   [player id="..." card] でプロフィールカードを、
   [roster team="..."] でチームの現メンバー（チップ）を並べます。
   出力は inc/mamoru-player.php のショートコードが行います。
   ============================================================ */
.article-body .mg-player-card {
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  padding: 14px 16px;
  margin: 18px 0;
  box-shadow: var(--shadow);
}
/* 上段：選手名（大きめ）＋デバイス */
.article-body .mg-player-card__head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 10px;
  padding-bottom: 10px;
  border-bottom: 2px solid var(--primary);
}
.article-body .mg-player-card__head .name {
  font-size: 1.15rem;
  font-weight: 900;
  color: var(--ink);
}
.article-body .mg-player-card__head .name a {
  color: var(--ink);
  border-bottom: none;
  text-decoration: none;
}
.article-body .mg-player-card__head .name a:hover { color: var(--primary); }

/* 項目リスト（所属・出身・役割・SNS）：見出し（dt）＋内容（dd）を1行ずつ */
.article-body .mg-player-card__facts { margin: 0; }
.article-body .mg-player-card__facts > div {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
  border-top: 1px dashed var(--border);
}
.article-body .mg-player-card__facts > div:first-child { border-top: none; }
.article-body .mg-player-card__facts dt {
  flex: 0 0 72px;
  font-weight: 800;
  color: var(--ink);
}
.article-body .mg-player-card__facts dd { margin: 0; color: var(--ink); }

/* チームの現メンバー一覧（チップを横に並べて折り返す）*/
.article-body .mg-roster {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0;
}

/* ============================================================
   大会結果テーブル（[result] / [team-results]）
   ------------------------------------------------------------
   ・進出ラインの区切り行（.mg-result__cut）
   ・優勝行のハイライト（.mg-result__champ）
   ・状態バッジ（.mg-badge：優勝🏆／MP点灯／進出ライン通過）
   表そのものの見た目は .mg-table / .mg-rank を再利用しています。
   ============================================================ */

/* 進出ラインの区切り行：順位と順位の「間」に引く、ラベルつきの線。
   太めの上下線＋うっすら青背景で「ここが境目」と分かるようにする。 */
.article-body .mg-result tbody tr.mg-result__cut td {
  padding: 0;
  background: color-mix(in srgb, var(--primary) 8%, #fff);
  border-top: 2px solid var(--primary);
  border-bottom: 2px solid var(--primary);
}
.article-body .mg-result tbody tr.mg-result__cut .mg-result__cut-label {
  display: block;
  padding: 6px 12px;
  font-size: .82rem;
  font-weight: 700;
  color: var(--primary);
  text-align: center;
  letter-spacing: .02em;
}
/* 区切り行は縞模様（偶数行の色）を打ち消す（上の指定が勝つよう詳細度を合わせる）*/
.article-body .mg-result tbody tr.mg-result__cut:nth-child(even) td {
  background: color-mix(in srgb, var(--primary) 8%, #fff);
}

/* 優勝行（マッチポイント方式の1位）：金色っぽくほんのり強調 */
.article-body .mg-result tbody tr.mg-result__champ td {
  background: #fff7e0;
  font-weight: 700;
}

/* 状態バッジ（小さなラベル）*/
.article-body .mg-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: .76rem;
  font-weight: 700;
  line-height: 1.5;
  white-space: nowrap;
}
/* 優勝🏆：金色 */
.article-body .mg-badge--champ {
  color: #8a6d00;
  background: #fff2c2;
  border: 1px solid #e6c34d;
}
/* マッチポイント点灯：青系 */
.article-body .mg-badge--mp {
  color: #1d4ed8;
  background: #e8f0fe;
  border: 1px solid #b9ccf7;
}
/* 進出ライン通過：緑系 */
.article-body .mg-badge--cut {
  color: #1f7a3d;
  background: #e8f5e9;
  border: 1px solid #b7dcbd;
}
/* 世界大会：濃い青の塗りつぶし（戦績表の「大会」名に添えて、世界大会だと一目で分かる）。
   マッチポイント点灯（薄い青の枠）とは別物として、塗りで強めに区別する。*/
.article-body .mg-badge--world {
  color: #fff;
  background: #1d4ed8;
  border: 1px solid #1d4ed8;
  margin-left: 6px;
  vertical-align: middle;
}

/* ============================================================
   世界進出マーカー（[ranking] / [standings] の行末マーカー）
   ------------------------------------------------------------
   順位データの行末に余分なセルを付けると（例「1 | ZETA | 125 | 進出」）、
   その行に .mg-q が付く。列は増やさず、行を薄い緑にして
   順位の横に小さな緑バッジ（.mg-q-badge）を出す。
   ============================================================ */
.article-body .mg-table tbody tr.mg-q td {
  background: #e8f5e9;            /* 薄い緑で行を強調 */
}
/* 縞模様（偶数行）に負けないよう、同じ色を明示的に上書き */
.article-body .mg-table tbody tr.mg-q:nth-child(even) td {
  background: #e8f5e9;
}
/* 順位の横に出す小さなバッジ（文字は行末マーカーの内容＝「進出」など）*/
.article-body .mg-q-badge {
  display: inline-block;
  margin-left: 4px;
  padding: 1px 6px;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 700;
  line-height: 1.4;
  color: #1f7a3d;
  background: #d5efda;
  border: 1px solid #a9d8b4;
  white-space: nowrap;
  vertical-align: middle;
}

/* ============================================================
   折りたたみ（.mg-details）
   ------------------------------------------------------------
   長い内容（順位表の11〜20位など）を「もっと見る」で隠す。
   使い方（カスタムHTMLブロック）：
   <details class="mg-details">
     <summary>11〜20位を見る</summary>
     ……中身（mg-table など）……
   </details>
   ============================================================ */
.article-body details.mg-details {
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  margin: 16px 0;
  overflow: hidden;
}
/* 見出し（クリックで開閉する帯）*/
.article-body details.mg-details > summary {
  cursor: pointer;
  list-style: none;            /* ブラウザ標準の三角マークを消す */
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  font-weight: 700;
  color: var(--primary);
  background: color-mix(in srgb, var(--primary) 8%, #fff);
}
.article-body details.mg-details > summary::-webkit-details-marker { display: none; }
/* 自作の開閉マーク（閉じ▶ → 開くと回転して▼）*/
.article-body details.mg-details > summary::before {
  content: "▶";
  font-size: .8em;
  transition: transform .2s ease;
}
.article-body details.mg-details[open] > summary::before { transform: rotate(90deg); }
.article-body details.mg-details > summary:hover {
  background: color-mix(in srgb, var(--primary) 14%, #fff);
}
/* 中身の余白（表などにゆとりを持たせる）*/
.article-body details.mg-details > *:not(summary) { margin: 12px 16px 16px; }
.article-body details.mg-details .mg-table { margin: 12px; }

/* ============================================================
   ボタンリンク（.mg-btn）
   ------------------------------------------------------------
   記事内に置く「押せるボタン型のリンク」。リンク先と文字はライターが自由に決める。
   出力は functions.php の [btn] ショートコード、または直接HTMLで書ける。
   ・既定：白地＋青枠（アウトライン）。ホバーで青く塗りつぶし。
   ・[btn style="fill"]：最初から青く塗りつぶしたボタン。
   ============================================================ */
.article-body .mg-btn {
  display: block;
  max-width: 520px;
  margin: 1.6em auto;
  padding: 14px 24px;
  text-align: center;
  font-weight: 800;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--primary);
  background: var(--surface);
  border: 2px solid var(--primary);
  border-radius: 10px;
  text-decoration: none;
  border-bottom: 2px solid var(--primary); /* 本文リンクの下線指定を打ち消す */
  box-shadow: var(--shadow);
  transition: background .15s ease, color .15s ease, box-shadow .15s ease, transform .1s ease;
}
.article-body a.mg-btn:hover {
  background: var(--primary);
  color: #fff;
  box-shadow: var(--shadow-hover);
}
.article-body a.mg-btn:active { transform: translateY(1px); }

/* 塗りつぶしバージョン（style="fill"）*/
.article-body .mg-btn--fill {
  background: var(--primary);
  color: #fff;
}
.article-body a.mg-btn--fill:hover {
  background: var(--primary-dark);
  border-color: var(--primary-dark);
  color: #fff;
}

/* 赤バージョン（style="accent"）：速報・重要な導線向け */
.article-body .mg-btn--accent {
  color: var(--accent);
  border-color: var(--accent);
  border-bottom-color: var(--accent);
}
.article-body a.mg-btn--accent:hover {
  background: var(--accent);
  color: #fff;
}

/* スマホでは画面幅いっぱいに（左右に余白を残す）*/
@media (max-width: 560px) {
  .article-body .mg-btn { max-width: none; }
}

/* ============================================================
   地域タブ＋選手開閉（.mg-tabs / .mg-team-acc）
   ------------------------------------------------------------
   [team_tabs] ショートコードの見た目。
   ・上のタブ（地域）をクリックすると、その地域のチーム一覧に切り替わる
   ・チーム名（summary）をタップすると、選手3名が下に開く（<details>）
   ============================================================ */
.article-body .mg-tabs { margin: 1.8em 0; }

/* タブの見出し列（地域ボタン）。タブが多いときは横スクロール */
.article-body .mg-tabs__bar {
  display: flex;
  gap: 4px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  border-bottom: 2px solid var(--border);
  margin-bottom: 14px;
}
.article-body .mg-tabs__tab {
  flex: 0 0 auto;
  appearance: none;
  border: none;
  background: none;
  cursor: pointer;
  padding: 10px 16px;
  font-family: inherit;
  font-size: .95rem;
  font-weight: 800;
  color: var(--ink-soft);
  border-bottom: 3px solid transparent;
  margin-bottom: -2px;            /* バー下線の上にタブ下線を重ねる */
  white-space: nowrap;
  transition: color .15s ease, border-color .15s ease;
}
.article-body .mg-tabs__tab:hover { color: var(--primary); }
.article-body .mg-tabs__tab.is-active {
  color: var(--primary);
  border-bottom-color: var(--primary);
}

/* パネル（タブの中身）。is-active 以外は隠す（hidden属性のフォールバック）*/
.article-body .mg-tabs__panel[hidden],
.article-body .mg-tabs__panel:not(.is-active) { display: none; }

/* チームの開閉リスト */
.article-body .mg-team-acc {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.article-body details.mg-team-acc__item {
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  overflow: hidden;
}
/* 見出し（チーム名の帯）。タップで開閉する */
.article-body .mg-team-acc__head {
  cursor: pointer;
  list-style: none;              /* 標準の三角マークを消す */
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 14px;
}
.article-body .mg-team-acc__head::-webkit-details-marker { display: none; }
.article-body .mg-team-acc__head:hover {
  background: var(--surface-2);
}
/* 右側の「選手を見る」＋開閉マーク */
.article-body .mg-team-acc__hint {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .8rem;
  font-weight: 700;
  color: var(--ink-soft);
  white-space: nowrap;
}
/* 開閉マーク：閉じているときは「＋」、開くと「－」に変わる */
.article-body .mg-team-acc__hint::after {
  content: "+";
  display: inline-block;
  width: 1.1em;
  text-align: center;
  font-size: 1.15em;
  font-weight: 800;
  line-height: 1;
}
.article-body details.mg-team-acc__item[open] .mg-team-acc__hint::after {
  content: "\2212"; /* −（マイナス記号） */
}
.article-body details.mg-team-acc__item[open] .mg-team-acc__hint {
  color: var(--primary);
}
/* チーム名（正式名称のテキスト。公開済み記事があるときはリンク） */
.article-body .mg-team-acc__name {
  font-weight: 800;
  color: inherit;
}
.article-body .mg-team-acc__name--link {
  color: var(--primary);
  text-decoration: none;
}
.article-body .mg-team-acc__name--link:hover {
  text-decoration: underline;
}
/* 開いた中身（選手3名）*/
.article-body .mg-team-acc__body {
  padding: 4px 14px 14px;
  border-top: 1px solid var(--border);
}
.article-body .mg-team-acc__body .mg-roster { margin-top: 10px; }
.article-body .mg-team-acc__empty {
  margin: 10px 0 0;
  font-size: .88rem;
  color: var(--ink-soft);
}
