/* =========================================================
   Cat Media Index — centered section / fixed-width cards
   * セクション中央寄せ
   * PC最大3列（固定幅カード）/ 最終行は伸ばさない
   * kana-head は赤系グラデに差し替え（#c7374a）
   ========================================================= */

:root{
  --gap: 16px;
  --radius: 16px;
  --shadow: 0 6px 18px rgba(0,0,0,.10);

  --font-sm: clamp(12px, .9vw, 14px);
  --font-md: clamp(14px, 1.1vw, 17px);
  --font-lg: clamp(16px, 1.4vw, 20px);

  --parent-h: 180px;
  --parent-bg-pos: center 20%; /* 上寄り切り抜き */
  /* レイアウト */
  --card-w: 320px;         /* PCでのカード固定幅 */
  --grid-pad: 0;           /* .cat-grid の左右パディング（必要なら 1em などに） */
}

/* ===== セクション：中央寄せ（縦積み） ===== */
.cat-index.variant-media-list{
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 1em 0;
}

/* ===== kana-head（あいうえおラベル） ===== */
.kana-head[role="heading"]{
  position: relative;
  display: block;
  width: 100%;
  max-width: calc(var(--card-w) * 3 + var(--gap) * 2);
  margin: 2.2rem auto;
  font-size: clamp(22px, 1.5vw, 22px);
  font-weight: 700;
  color: #c7374a;
  padding-left: .1em;
  letter-spacing: .06em;
}
.kana-head[role="heading"]::after{
  content:"";
  position:absolute;
  bottom:-4px; left:.1em;
  width:40%; height:2px;
  background:linear-gradient(90deg,#c7374a 0%,transparent 100%);
  opacity:.3;
}

/* ===== グリッド（固定幅カードで最後の行は伸ばさない） ===== */
.cat-index.variant-media-list .cat-grid{
  display: flex;
  flex-wrap: wrap;
  gap: var(--gap);
  justify-content: flex-start;
  box-sizing: border-box;
  padding-inline: var(--grid-pad);
  width: 100%;
  max-width: calc(var(--card-w) * 3 + var(--gap) * 2);
  margin-bottom: 1em;
}

/* ===== 列数レスポンシブ ===== */
/* モバイル：1列 */
.cat-index.variant-media-list .cat-card{
  flex: 1 1 100%;
  max-width: 100%;
}
/* タブレット以上：固定幅カード（2〜3列に自然移行） */
@media (min-width: 640px){
  .cat-index.variant-media-list .cat-card{
    flex: 0 0 var(--card-w);
    max-width: var(--card-w);
  }
}

/* data-columns で強制列指定（auto のままなら上のルール） */
.cat-index[data-columns="1"] .cat-card{ flex:1 1 100%; max-width:100%; }
.cat-index[data-columns="2"] .cat-card{ flex:0 0 var(--card-w); max-width:var(--card-w); }
.cat-index[data-columns="3"] .cat-card{ flex:0 0 var(--card-w); max-width:var(--card-w); }

/* ===== カード ===== */
.cat-card{
  background:#fff;
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding:14px;
  display:flex;
  flex-direction:column;
  gap:10px;
}

.parent-link{
  display:block;
  color:inherit;
  text-decoration:none;
}

/* 親サムネ（ダミー背景＋実画像cover） */
.parent-thumb{
  height: var(--parent-h);
  border-radius: calc(var(--radius) - 4px);
  position: relative;
  overflow: hidden;
  background:
    radial-gradient(120px 80px at 10% 10%, rgba(255,255,255,.35), transparent),
    radial-gradient(120px 80px at 90% 20%, rgba(255,255,255,.18), transparent),
    linear-gradient(135deg, #84c5ff, #a6a6ff 45%, #ffb8ec);
  box-shadow: inset 0 -60px 80px rgba(0,0,0,.12);
  background-image: var(--cmi-parent-bg, none);
  background-size: cover;
  background-position: var(--parent-bg-pos);
}
.cat-card[data-initial] .parent-thumb::after{
  content: attr(data-initial);
  position:absolute; right:.35em; bottom:-.15em;
  font-weight:900; font-size: clamp(58px, 10vw, 96px);
  color: rgba(255,255,255,.78);
  text-shadow: 0 6px 22px rgba(0,0,0,.28);
}

/* タイトル */
.title{
  font-size: var(--font-lg);
  margin: 2rem .5em;
  font-weight: 700;
}
.count{ opacity:.7; font-weight:600; }

/* ===== 孫ターム（行） ===== */
.child-list{
  list-style:none;
  margin:.35rem 0 0;
  padding:0;
  display:grid;
  gap:8px;
}
.child-row{
  display:grid;
  grid-template-columns:56px 1fr auto;
  align-items:center;
  gap:10px;
  background:#fafafa;
  border-radius:12px;
  padding:6px 10px;
  text-decoration:none;
  color:inherit;
  transition: background .15s ease, transform .15s ease;
}
.child-row:hover{ background:#f5f7ff; transform: translateY(-1px); }

/* ミニサムネ */
.thumb.mini{
  width:56px; height:56px;
  border-radius:10px;
  position:relative; overflow:hidden;
  background:
    radial-gradient(60px 40px at 12% 12%, rgba(255,255,255,.35), transparent),
    radial-gradient(60px 40px at 86% 22%, rgba(255,255,255,.18), transparent),
    linear-gradient(135deg,#ffd28f,#ff9bc4 45%,#9ec6ff);
  box-shadow: inset 0 -22px 32px rgba(0,0,0,.12);
  background-image: var(--cmi-mini-bg, none);
  background-size: cover;
  background-position: var(--parent-bg-pos);
}
.child-row[data-initial] .thumb.mini::after{
  content: attr(data-initial);
  position:absolute; right:.15em; bottom:-.35em;
  font-weight:900; font-size:36px;
  color: rgba(255,255,255,.78);
  text-shadow: 0 3px 10px rgba(0,0,0,.24);
}

/* テキスト */
.label{ font-size: var(--font-sm); line-height:1.2; }
.c{ font-size: var(--font-sm); opacity:.65; margin-left:.35em; }

/* ===== モバイル微調整 ===== */
@media (max-width: 600px){
  .parent-thumb{ height:180px; }
  .child-row{ grid-template-columns:48px 1fr auto; gap:8px; }
  .thumb.mini{ width:48px; height:48px; }
}

/* ===== Kana Nav（内容幅にフィット／SPは短縮表記） ===== */
.ll-kana-nav{
  --ll-bg: color-mix(in oklab, #fff 92%, transparent);
  --ll-fg: #444;
  --ll-accent: #c7374a;
  --ll-pill-bg: #f4f5f7;
  --ll-pill-bg-hover: #eef2ff;
  --ll-gap: .5rem;
  --ll-radius: 999px;
  --ll-shadow: 0 8px 20px rgba(0,0,0,.06);
  --ll-pad-y: 8px;

  width: fit-content;
  max-width: calc(100% - 16px);
  margin: 0 auto 1.5rem;
  padding: var(--ll-pad-y) 12px;
  background: var(--ll-bg);
  border-radius: var(--ll-radius);
  box-shadow: var(--ll-shadow);
  backdrop-filter: saturate(1.1) blur(6px);
  -webkit-backdrop-filter: saturate(1.1) blur(6px);
}
@supports not (width: fit-content){ .ll-kana-nav{ width:max-content; } }
.ll-kana-nav.is-sticky{ position:sticky; top:64px; z-index:5; }

.ll-kana-nav__list{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:center;
  gap:var(--ll-gap); margin:0; padding:0; list-style:none;
}
.ll-kana-nav__item{ flex:0 0 auto; }
.ll-kana-nav__link{
  display:inline-block; text-decoration:none; font-weight:700;
  font-size:clamp(12px,.9vw,14px); color:var(--ll-fg);
  padding:.45rem .9rem; border-radius:var(--ll-radius); background:var(--ll-pill-bg);
  transition:transform .12s ease, background .12s ease, color .12s ease;
}
.ll-kana-nav__link:hover,.ll-kana-nav__link:focus-visible{
  background:var(--ll-pill-bg-hover); transform:translateY(-1px); outline:none;
}
.ll-kana-nav__item.is-active .ll-kana-nav__link,
.ll-kana-nav__link[aria-current="true"]{ background:#ffe4e8; color:var(--ll-accent); }

/* 表記切替（PC: “あ行” / SP: “あ”） */
.ll-kana-nav__link .short{ display:none; }
.ll-kana-nav__link .full { display:inline; }
@media (max-width:600px){
  .ll-kana-nav{ --ll-gap:.4rem; padding:6px 10px; max-width:100%; }
  .ll-kana-nav__link{ padding:.35rem .7rem; font-size:13px; }
  .ll-kana-nav__link .short{ display:inline; }
  .ll-kana-nav__link .full { display:none; }
}
@media (max-width:420px){
  .ll-kana-nav__list{ gap:.35rem .5rem; }
  .ll-kana-nav__link{ padding:.3rem .6rem; font-size:12px; }
}
/* sticky中は、現在地の項目に hover と同じ見た目を適用 */
.ll-kana-nav.is-stuck .ll-kana-nav__item.is-active .ll-kana-nav__link{
  background: var(--ll-pill-bg-hover);
  transform: translateY(-1px);
}
