/* ============================================================
   hd-style.css
   J-POP × K-POP COLLECTIBLES 共通スタイル
   日本語版(/)・英語版(/en/)・韓国語版(/ko/) の3言語で共有する。
   ここを直すと3言語すべてに反映される。言語ごとの差分は各HTML側で当てること。
   2026-08-29 メインHTMLの <style> から分離
   ============================================================ */

/* --bg は BLACKPINK 公式ピンク(#f4a7bb)。
   背景がピンクになったぶん、背景の上に直接のる文字は
   ピンク系をやめて黒（--onbg）に寄せて同化を防いでる */
/* --bg：ページ全体の背景。2026-09-23 に #f4a7bb（濃いめ）から薄ピンクへ（ナギサの指示）。
   ⚠️ 白のカード（.card）と差が付く濃さを保つこと。これより薄くすると
      カードが背景に溶けて、一覧の区切りが見えなくなる。 */
:root{--bg:#fde8ef;--pink:#ff5f95;--soft:#ffe3ec;--text:#2b2430;--sub:#7c7189;--line:#f0dae3;--gray:#9b93a5;
      --onbg:#16070d;--onbgSub:#4a2130;}
*{box-sizing:border-box;}
body{margin:0;font-family:system-ui,-apple-system,"Hiragino Sans","Yu Gothic",sans-serif;background:var(--bg);color:var(--text);line-height:1.7;}
header{background:#000;padding:0;text-align:center;}
header .banner{display:block;width:100%;max-width:1120px;height:auto;margin:0 auto;}
header video.banner{background:#000;object-fit:cover;}
/* バナー画像が読めなかった時だけ出るテキスト版ヘッダー */
header .hdText{display:none;background:linear-gradient(135deg,#ff87b2,#ff5f95 55%,#b06cff);color:#fff;padding:30px 20px;}
header h1{margin:0 0 4px;font-size:1.55rem;letter-spacing:.04em;}
header p{margin:0;font-size:.8rem;opacity:.92;}
.wrap{max-width:1120px;margin:0 auto;padding:18px 16px 60px;}
.tabs{display:flex;gap:6px;justify-content:center;margin:16px 0 8px;flex-wrap:wrap;}
.tab{border:2px solid var(--onbg);background:#fff;color:#c93d70;padding:6px 13px;border-radius:999px;font-weight:700;font-size:.78rem;cursor:pointer;white-space:nowrap;}
@media (max-width:480px){ .tabs{gap:5px;} .tab{padding:5px 10px;font-size:.72rem;} }
/* 選択中は濃いピンク。黒ベタをやめつつ、背景ピンクとはちゃんと差がつく濃さ */
.tab.active{background:#c93d70;color:#fff;border-color:var(--onbg);}
.toolbar{display:flex;gap:8px;justify-content:center;align-items:center;flex-wrap:wrap;margin-bottom:10px;}
.search{width:100%;max-width:320px;padding:10px 14px;border:1px solid var(--line);border-radius:999px;font-size:.9rem;}
/* 検索欄の ✕（入力を消すボタン）。2026-10-06 追加（ナギサの指示）。index.html と okubo.html で使う。
   メモやること手帳の検索欄と同じ動き：いつも出しておき、空のときは薄く（.38）・文字が入ると濃く（.on）。
   ⚠️ 幅の決まり（100%・最大320px）は入れもの（.searchWrap）へ移した。中の .search は入れものいっぱい。
   ⚠️ padding-right を外さないこと。長い検索語が ✕ の下にもぐる。
   ⚠️ ブラウザが自前で出す ✕（type="search" の標準ボタン）は消してある。出すと ✕ が2つ並ぶ。 */
.searchWrap{position:relative;display:block;width:100%;max-width:320px;}
.searchWrap .search{max-width:none;padding-right:42px;box-sizing:border-box;}
.search::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;display:none;}
.searchX{position:absolute;top:50%;right:7px;transform:translateY(-50%);
    width:28px;height:28px;border-radius:50%;border:none;padding:0;cursor:pointer;
    background:#f6e6ec;color:var(--sub);font-family:inherit;font-size:.75rem;font-weight:800;line-height:1;
    display:flex;align-items:center;justify-content:center;opacity:.38;transition:opacity .15s;}
.searchX.on{opacity:1;}
.searchX:active{background:#E03430;color:#fff;}
.mini{border:2px solid var(--onbg);background:#fff;color:#c93d70;font-size:.76rem;font-weight:700;padding:7px 14px;border-radius:999px;cursor:pointer;}
/* 凡例。長文は details に畳んで、普段は1行だけ見せる */
.legend{text-align:center;font-size:.66rem;color:var(--onbgSub);margin:0 0 16px;line-height:1.7;}
.legend > summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:5px;
    font-weight:700;color:var(--onbg);background:rgba(255,255,255,.5);
    border:1px solid rgba(22,7,13,.18);border-radius:999px;padding:4px 13px;}
.legend > summary::-webkit-details-marker{display:none;}
.legend > summary::after{content:"▾";font-size:.6rem;transition:transform .15s ease;}
.legend[open] > summary::after{transform:rotate(180deg);}
.legend .legendBody{max-width:640px;margin:9px auto 0;text-align:left;
    background:rgba(255,255,255,.45);border-radius:12px;padding:10px 14px;}
.legend .legendBody p{margin:0 0 6px;}
.legend .legendBody p:last-child{margin-bottom:0;}
/* 見かたの説明は箇条書き。行頭のドットはピンクの小さい丸にする */
.legend .legendBody ul{margin:0;padding:0;list-style:none;}
.legend .legendBody li{position:relative;padding-left:14px;margin:0 0 5px;line-height:1.75;}
.legend .legendBody li:last-child{margin-bottom:0;}
.legend .legendBody li::before{content:"";position:absolute;left:3px;top:.62em;
    width:5px;height:5px;border-radius:50%;background:var(--pink);}
/* タブの中身は全部DOMに出しておき、表示だけここで切り替える。
   こうしないと検索エンジンが最初のタブ（韓国）の分しか読み取れない */
.tabPane{display:none;}
/* 検索中はタブの壁を外して、全タブの結果を縦に並べて見せる */
body.searching .tabPane{display:block;}
/* 検索結果のかたまりの先頭に出る「韓国 3件」みたいなラベル */
.paneLabel{display:flex;align-items:center;gap:8px;margin:22px 0 2px;
    font-size:.72rem;font-weight:800;color:#a8446c;}
.paneLabel span{background:var(--pink);color:#fff;padding:3px 12px;border-radius:999px;font-size:.72rem;}
/* タブボタンに出るヒット件数 */
.tabHit{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;
    background:rgba(255,255,255,.85);color:#c93d70;font-size:.66rem;font-weight:800;}
.tab.active .tabHit{background:rgba(255,255,255,.9);}
.tab.noHit{opacity:.42;}
.tabPane.show{display:block;}
/* ===== サイト説明・FAQ・掲載一覧（静的HTML）=====
   JavaScriptを実行しないクローラーにも「このサイトが何か」が伝わるよう、
   カードとは別に本文テキストとして置いている。ユーザーにも普通に読める内容 */
.intro{margin:18px 0 6px;}
.intro h1{font-size:1.05rem;line-height:1.6;margin:0 0 8px;color:var(--onbg);
          padding-left:12px;border-left:6px solid var(--onbg);}
.intro p{font-size:.8rem;line-height:1.9;color:var(--onbgSub);margin:0 0 6px;}
/* 見出し下の1行だけのリード。長い説明はフッターの .siteAbout に移した */
.intro p.lead{margin:0;}
/* ページ最下部の説明ブロック。検索エンジンとAI向けなので、
   読者の視線を奪わないよう小さく・控えめにしている */
.siteAbout{margin:22px 0 0;padding:14px 18px;border-radius:16px;
           background:rgba(255,255,255,.28);}
.siteAbout h2{font-size:.82rem;margin:0 0 6px;color:var(--onbg);opacity:.8;}
.siteAbout p{font-size:.7rem;line-height:1.85;color:var(--onbgSub);opacity:.75;margin:0 0 6px;}
.siteAbout p:last-child{margin-bottom:0;}
.faq{margin:34px 0 0;background:rgba(255,255,255,.5);border-radius:16px;padding:16px 18px;}
.faq h2{font-size:.95rem;margin:0 0 10px;color:var(--onbg);}
.faq dt{font-size:.82rem;font-weight:800;color:#c93d70;margin:12px 0 3px;}
.faq dt:first-of-type{margin-top:0;}
.faq dd{font-size:.78rem;line-height:1.9;color:#4f4657;margin:0;}
.allList{margin:22px 0 0;background:rgba(255,255,255,.4);border-radius:16px;padding:16px 18px;}
.allList h2{font-size:.95rem;margin:0 0 8px;color:var(--onbg);}
.allList p{font-size:.76rem;line-height:2;color:#4f4657;margin:0 0 10px;}
.allList b{display:block;font-size:.74rem;color:#c93d70;margin-bottom:2px;}
/* ===== 掲載アーティスト詳細（静的テキスト） =====
   カードの中身はJSで生成しているため、JSを実行しないクローラー
   （ChatGPT・Claude・Perplexity 等）にはメンバー名も曲名も見えていない。
   ここに同じ内容をベタ書きして、HTMLだけで全部読めるようにしている。
   読者の視線を奪わないよう、siteAbout と同じくらい小さく控えめにする。
   ★消さないこと。消すとAI検索からメンバー名・曲名が丸ごと消える */
.allDetail{margin:22px 0 0;background:rgba(255,255,255,.4);border-radius:16px;padding:16px 18px;}
.allDetail h2{font-size:.95rem;margin:0 0 4px;color:var(--onbg);}
.allDetail>p.lead{font-size:.7rem;line-height:1.8;color:var(--onbgSub);opacity:.8;margin:0 0 10px;}
.allDetail h3{font-size:.78rem;color:#c93d70;margin:14px 0 6px;}
.allDetail h3:first-of-type{margin-top:0;}
.allDetail p.grp{font-size:.72rem;line-height:1.95;color:#5b5265;margin:0 0 9px;}
.allDetail p.grp b{display:inline;font-size:.78rem;color:#3f3648;margin:0;}
.allDetail p.grp i{font-style:normal;color:#8d8397;}
/* ===== 準備中タブ（地下アイドル♀／♂） =====
   掲載0組のタブに出す案内。「壊れてる」と誤解されないよう、
   準備中であることと募集していることをはっきり出す */
.comingSoon{margin:24px auto;max-width:520px;text-align:center;
            background:rgba(255,255,255,.55);border:1px dashed var(--line);
            border-radius:16px;padding:26px 20px;}
.comingSoon .csTitle{font-size:1rem;font-weight:800;color:#c93d70;margin:0 0 8px;}
.comingSoon .csBody{font-size:.8rem;line-height:1.9;color:#4f4657;margin:0 0 6px;}
.comingSoon .csBody:last-child{margin-bottom:0;}
.comingSoon a{color:#c93d70;font-weight:700;}
.gender{font-size:1.2rem;margin:30px 0 0;padding-left:12px;border-left:6px solid var(--onbg);color:var(--onbg);}
.cat{font-size:.95rem;margin:20px 0 6px;color:var(--onbg);font-weight:800;}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;align-items:start;}
/* 48・46系は大人数の集合写真なので、カード（＝ブロックバナー）を大きめに表示 */
.grid.big{grid-template-columns:repeat(auto-fill,minmax(440px,1fr));gap:18px;}
@media (max-width:560px){ .grid.big{grid-template-columns:1fr;} }
.card{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 3px 14px rgba(22,7,13,.18);}
.thumb{position:relative;aspect-ratio:16/9;background:var(--soft);display:flex;align-items:center;justify-content:center;color:#e39ab6;font-size:.78rem;text-align:center;overflow:hidden;}
/* 写真は全部いちばん上を基準に表示（集合写真で顔が切れるのを防ぐ） */
.thumb img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
.thumb.portrait img{object-position:center top;}
/* ロゴ画像と、元がちいさい画像。
   引き伸ばすとボケるので contain。ただし「白い箱がポツンと浮く」のを防ぐため、
   余白・背景・角の処理をここで完全に共通化してサムネの見え方をそろえる */
.thumb.isLogo img,
.thumb.small img{
  box-sizing:border-box;
  object-fit:contain;
  object-position:center center;
  padding:14px;
  background:linear-gradient(135deg,#fff,#fff7fb);
}
/* 写真が無い子用のプレースホルダー */
/* 写真が取れなかったときの枠。「壊れてる」ではなく「そういうデザイン」に見えるよう、
   グループ名をワードマーク風に大きく出す。ドット模様は空白感を消すため */
.ph{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;
    width:100%;height:100%;padding:10px 14px;text-align:center;overflow:hidden;
    background:linear-gradient(135deg,#ffe3ee,#ffd0e4);}
.ph::before{content:"";position:absolute;inset:0;opacity:.5;
    background-image:radial-gradient(rgba(255,255,255,.85) 1px, transparent 1px);
    background-size:12px 12px;}
.ph b{position:relative;display:block;max-width:100%;color:#a8446c;
      font-size:1.05rem;font-weight:900;letter-spacing:.02em;line-height:1.3;
      text-shadow:0 1px 0 rgba(255,255,255,.7);
      overflow-wrap:anywhere;}
.ph span{position:relative;font-size:.64rem;color:#c26f92;font-weight:700;letter-spacing:.08em;
      background:rgba(255,255,255,.72);padding:2px 9px;border-radius:999px;}
/* 右下のジャンプボタン */
.jump{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:99;}
.jump button{width:44px;height:44px;border:none;border-radius:50%;cursor:pointer;
  background:var(--onbg);color:#fff;font-size:1.1rem;line-height:1;font-weight:900;
  box-shadow:0 3px 12px rgba(22,7,13,.45);transition:transform .15s,opacity .15s;}
.jump button:hover{transform:translateY(-2px);}
.jump button:active{transform:scale(.92);}
@media (max-width:480px){ .jump{right:10px;bottom:10px;} .jump button{width:40px;height:40px;} }
.thumb .badge{position:absolute;left:6px;top:6px;background:rgba(40,20,30,.55);color:#fff;font-size:.62rem;font-weight:700;padding:2px 8px;border-radius:999px;letter-spacing:.02em;}
.body{padding:12px 14px 15px;}
.nameRow{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin-bottom:2px;}
.name{font-weight:800;font-size:1.02rem;margin:0;}
.kana{font-size:.75rem;color:var(--sub);}
.count{background:var(--pink);color:#fff;font-size:.7rem;font-weight:800;padding:2px 9px;border-radius:999px;white-space:nowrap;}
.countOg{background:#efeaf3;color:#6f6579;font-size:.7rem;font-weight:800;padding:2px 9px;border-radius:999px;white-space:nowrap;}
.agency{font-size:.74rem;color:var(--sub);margin:0 0 8px;}
/* メンバー欄・曲欄は details で開閉。情報量が増えたので初期状態は閉じてある */
.sec{border-top:1px dashed var(--line);padding-top:7px;margin-top:6px;}
.secTitle{font-size:.76rem;font-weight:800;color:#c93d70;margin:0;display:flex;align-items:center;gap:6px;
          cursor:pointer;list-style:none;user-select:none;padding:2px 0;}
.secTitle::-webkit-details-marker{display:none;}
.secTitle::before{content:"●";font-size:.5rem;}
/* 右端の開閉マーク。開いているときは反転する */
.secTitle::after{content:"▾";margin-left:auto;font-size:.62rem;opacity:.75;transition:transform .15s ease;}
.sec[open] > .secTitle::after{transform:rotate(180deg);}
.secTitle:hover{opacity:.75;}
.sec.song .secTitle{color:#8d4ddb;}
.accBox{padding:8px 0 2px;}
.sub{font-size:.7rem;font-weight:800;color:var(--sub);margin:8px 0 4px;letter-spacing:.04em;}
.sub.active{color:#c93d70;}
.memText{font-size:.78rem;color:#4f4657;margin:0;}
.memText.og{color:#7c7189;}
.chips{display:flex;flex-wrap:wrap;gap:4px;}
.chips span{font-size:.73rem;background:#fdf1f5;border:1px solid var(--line);border-radius:8px;padding:2px 7px;}
.chips.og span{background:#f4f1f7;border-color:#e6e0ec;color:#6f6579;}
/* メンバー名のフリガナ。hd-artists.js の《カタカナ》を hd-app.js の ruby() が
   <small class="rb"> に変換している。名前より一段小さく薄い色にして、読みだと分かるようにする */
.rb{font-size:.82em;color:#9b8fa6;font-weight:400;margin-left:1px;letter-spacing:.02em;}
.chips.og .rb,.memText.og .rb{color:#a79cb0;}
ol.songs{margin:0;padding-left:1.3em;}
ol.songs li{font-size:.77rem;color:#4f4657;margin-bottom:2px;}
ol.songs li a.ytm{color:#4f4657;text-decoration:none;border-bottom:1px dotted #dfc7d2;}
ol.songs li a.ytm:hover,ol.songs li a.ytm:active{color:#ff0033;border-bottom-color:#ff0033;}
.ytmIcon{display:inline-block;margin-left:5px;font-size:.6rem;color:#ff0033;vertical-align:1px;}
.note{font-size:.68rem;color:#a8919f;margin:6px 0 0;}
.links{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px;}
.links a{font-size:.73rem;text-decoration:none;padding:5px 11px;border-radius:999px;background:var(--soft);color:#c93d70;font-weight:700;}
.links a.official{background:var(--pink);color:#fff;}
/* ================= 横切るフラッシュ（シャイン）演出 =================
   タブ・ボタン・アーティストカードに、ホバー／タップで光が左から右に走る。
   ::after は pointer-events:none なので、リンクやボタンの操作は邪魔しない */
.tab, .mini, .jump button, .card, .navBtn{position:relative;overflow:hidden;}
.tab::after, .mini::after, .jump button::after, .card::after, .navBtn::after{
  content:"";position:absolute;top:0;left:-150%;width:65%;height:100%;z-index:5;
  transform:skewX(-20deg);pointer-events:none;
  background:linear-gradient(100deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.9) 50%,rgba(255,255,255,0) 100%);
}
/* カードの上は写真なので、光はちょっと控えめに */
.card::after{
  background:linear-gradient(100deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.55) 50%,rgba(255,255,255,0) 100%);
}
.tab:hover::after, .tab:focus-visible::after, .tab:active::after,
.mini:hover::after, .mini:focus-visible::after, .mini:active::after,
.jump button:hover::after, .jump button:focus-visible::after, .jump button:active::after,
.card:hover::after, .card:active::after,
.navBtn:hover::after, .navBtn:focus-visible::after, .navBtn:active::after{
  animation:shine .7s ease-out;
}
@keyframes shine{ from{left:-150%;} to{left:150%;} }
/* 動きが苦手な人の設定は尊重する */
@media (prefers-reduced-motion:reduce){
  .tab::after, .mini::after, .jump button::after, .card::after, .navBtn::after{display:none;}
}

/* ================= トップバナー直下のナビゲーション ================= */
/* ===== サイト内メニュー =====
   2026-08-30 目立たなくなっていたので強化した。
   ・黒帯の下にピンクのラインを引いて、帯そのものの存在感を出す
   ・文字を大きく・白くして、間隔を広げた
   ・現在地はピンクの塗りつぶし（丸ピル）にして一目で分かるようにする
   ・ホバーは薄いピンクの塗り。下線アニメは塗りと喧嘩するのでやめた */
/* 2026-09-01 バナー（黒背景）とメニュー（黒帯）が同化して境目が消えていたので、
   帯の「上側」にも区切りを作った。
   ・帯の色を真っ黒から少し赤みのある濃色グラデにして、バナーの黒と差をつける
   ・上端にピンクの細いライン（下端の太いピンクと対になる）
   ・::before で上に淡いピンクの光をのせて、帯が浮いて見えるようにする */
.siteNav{position:relative;
         background:linear-gradient(180deg,#2a121c 0%,#1c0a12 45%,#16070d 100%);
         border-top:2px solid rgba(255,95,149,.75);
         border-bottom:3px solid var(--pink);
         box-shadow:inset 0 10px 18px rgba(0,0,0,.55),0 3px 10px rgba(22,7,13,.25);}
/* 帯の上にのせる光。バナーとの境目をふわっと見せるためのもの（クリックの邪魔はしない） */
.siteNav::before{content:"";position:absolute;left:0;right:0;top:0;height:12px;
         pointer-events:none;
         background:linear-gradient(180deg,rgba(255,95,149,.35),rgba(255,95,149,0));}
.siteNav ul{display:flex;justify-content:center;flex-wrap:wrap;gap:4px;
            max-width:1120px;margin:0 auto;padding:9px 8px;list-style:none;}
.navBtn{display:block;position:relative;text-decoration:none;border-radius:999px;
        color:#fff;font-size:.95rem;font-weight:800;padding:10px 20px;letter-spacing:.03em;
        transition:background .18s ease,color .18s ease;}
.navBtn:hover,.navBtn:focus-visible{background:rgba(255,95,149,.28);color:#fff;}
/* 現在いるページ。塗りつぶしピルで「今ここ」をはっきり出す */
.navBtn.cur{background:var(--pink);color:#fff;box-shadow:0 2px 8px rgba(255,95,149,.5);}
.navBtn.cur:hover{background:var(--pink);}
@media (max-width:560px){
  .siteNav ul{gap:2px;padding:7px 4px;}
  .navBtn{font-size:.85rem;padding:8px 13px;}
}
@media (max-width:480px){ .navBtn{padding:12px 12px;font-size:.76rem;} }

footer{text-align:center;font-size:.72rem;color:var(--onbgSub);padding:22px 12px;}

/* ============================================================
   新大久保トレンドページ（okubo.html）専用
   カード一覧はアーティスト一覧と同じ「全タブ生成 → CSSで表示切替」方式。
   クローラーとAIに全件読ませるため、非表示タブの中身もHTMLには存在させる
   ============================================================ */
/* ---- 静止画バナー（新大久保ページ）----
   画像は切り取らず、全面をそのまま見せる。
   ただし元画像が正方形(2048×2048)なので、横幅いっぱいに出すとPCでは
   ヘッダーだけで縦1120pxになり、本文が画面外へ追い出される。
   そこで「幅」ではなく「画面の高さ」を基準に縮める。
   ・PC   … 高さを最大72vhに制限。左右に黒帯が出るが、header の背景が
   　　　　  もともと黒なので額縁のように見えて破綻しない
   ・スマホ… 幅いっぱい＝正方形のまま全部表示（高さ制限は外す） */
header .banner.still{
  display:block;margin:0 auto;
  width:auto;max-width:100%;
  height:auto;max-height:min(72vh, 720px);
}
@media (max-width:560px){
  header .banner.still{width:100%;max-height:none;}
}

/* ---- 導入部。長文を置かず、タグで中身を一望させる ----
   タグは全部「押すと動く」。押せそうに見えて動かないものを作らないため、
   飾りのラベルは件数バッジ（.leadCount）だけにして、見た目もはっきり分けている */
.leadTags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:10px 0 8px;padding:0;}
.leadCount{display:inline-block;font-size:.72rem;font-weight:800;color:#fff;
           background:var(--onbg);border-radius:999px;padding:5px 13px;}
.leadTag{font-family:inherit;font-size:.73rem;font-weight:700;color:#c93d70;cursor:pointer;
         background:rgba(255,255,255,.78);border:1px solid rgba(22,7,13,.12);
         border-radius:999px;padding:5px 13px;transition:background .15s,transform .12s;}
.leadTag:hover,.leadTag:focus-visible{background:#fff;}
.leadTag:active{transform:scale(.95);}
.caution{font-size:.7rem;color:var(--onbgSub);margin:0;line-height:1.7;}

.secHead{margin:34px 0 4px;}
.secHead h2{font-size:1.15rem;margin:0 0 4px;color:var(--onbg);
            padding-left:12px;border-left:6px solid var(--onbg);}
.secHead h2 small{font-size:.7rem;letter-spacing:.12em;color:var(--onbgSub);
                  font-weight:700;margin-left:8px;}
.secHead p{font-size:.76rem;color:var(--onbgSub);margin:0;padding-left:12px;}

.spPane{display:none;}
.spPane.show{display:block;}
.spCount{font-size:.72rem;font-weight:800;color:var(--onbg);margin:12px 0 8px;}
.spEmpty{text-align:center;color:#7c7189;font-size:.8rem;padding:20px 0;}
.spGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;align-items:start;}

.spCard{position:relative;background:#fff;border:1px solid var(--line);border-radius:16px;
        overflow:hidden;box-shadow:0 3px 14px rgba(22,7,13,.18);}
/* 「徒歩3分」バッジ。写真の左上に重ねる */
.spWalk{position:absolute;left:10px;top:10px;z-index:3;
        background:rgba(40,20,30,.62);color:#fff;font-size:.66rem;font-weight:700;
        padding:3px 10px;border-radius:999px;white-space:nowrap;}
.spThumb{aspect-ratio:16/10;background:var(--soft);overflow:hidden;}
.spThumb img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block;}
/* ---- 写真が2枚以上ある店のスライド ----
   枠の高さは1枚のときと同じ 16:10。カードの高さはそろったまま、
   左右のボタン／ドット／スワイプで写真を切り替える */
.spThumb.slider{position:relative;}
.spSlides{display:flex;width:100%;height:100%;transition:transform .28s ease;}
.spSlides img{min-width:100%;width:100%;height:100%;flex:0 0 100%;object-position:center center;}

/* 左右のボタン。写真の上に半透明で重ねる */
.spNav{position:absolute;top:50%;transform:translateY(-50%);z-index:4;
       width:30px;height:30px;padding:0;border:none;border-radius:50%;cursor:pointer;
       background:rgba(30,15,25,.45);color:#fff;font-size:1.15rem;line-height:1;
       display:flex;align-items:center;justify-content:center;
       transition:background .15s,transform .12s;}
.spNav:hover{background:rgba(30,15,25,.7);}
.spNav:active{transform:translateY(-50%) scale(.9);}
.spNav.prev{left:8px;}
.spNav.next{right:8px;}

/* 下の丸いページ表示 */
.spDots{position:absolute;left:0;right:0;bottom:8px;z-index:4;
        display:flex;justify-content:center;gap:6px;}
.spDot{width:7px;height:7px;border-radius:50%;cursor:pointer;
       background:rgba(255,255,255,.55);box-shadow:0 0 3px rgba(0,0,0,.35);
       transition:background .15s,transform .15s;}
.spDot.on{background:#fff;transform:scale(1.25);}
/* 写真が無いカードの枠。「壊れてる」ではなく「そういうデザイン」に見せるため、
   店名をワードマーク風に出す。ドット模様は空白感を消すため */
.spPh{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
      gap:6px;width:100%;height:100%;padding:10px 14px;text-align:center;overflow:hidden;
      background:linear-gradient(135deg,#ffe3ee,#ffd0e4);}
.spPh::before{content:"";position:absolute;inset:0;opacity:.5;
      background-image:radial-gradient(rgba(255,255,255,.85) 1px, transparent 1px);
      background-size:12px 12px;}
.spPh b{position:relative;display:block;max-width:100%;color:#a8446c;
      font-size:.95rem;font-weight:900;line-height:1.35;overflow-wrap:anywhere;
      text-shadow:0 1px 0 rgba(255,255,255,.7);}
.spPh span{position:relative;font-size:.6rem;color:#c26f92;font-weight:700;letter-spacing:.1em;
      background:rgba(255,255,255,.72);padding:2px 9px;border-radius:999px;}
/* Wikimedia Commons の写真を使ったときのクレジット。CC BY-SA の表示義務に対応 */
.spCredit{font-size:.62rem;color:#a8919f;margin:0 0 6px;line-height:1.5;
      overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.spCredit a{color:#a8919f;}
.spBody{padding:12px 14px 14px;}
.spName{font-size:.98rem;font-weight:800;margin:0 0 3px;line-height:1.4;}
.spTags{font-size:.72rem;color:var(--sub);margin:0 0 7px;}
.spDesc{font-size:.77rem;line-height:1.85;color:#4f4657;margin:0 0 7px;}
.spArea{font-size:.7rem;color:#a8919f;margin:0 0 8px;}
/* 最終更新日。主張させない。読みたい人だけ読めばいい情報なので小さく薄く */
.spCheck{font-size:.64rem;color:#a8919f;margin:0 0 9px;}
.spBtns{display:flex;gap:7px;flex-wrap:wrap;}
.spBtn{font-size:.73rem;font-weight:700;text-decoration:none;
       padding:5px 13px;border-radius:999px;background:var(--soft);color:#c93d70;}
.spBtn.map{background:var(--pink);color:#fff;}

/* ---- はじめてのガイド（details）----
   中身はHTMLにベタ書きしてある。JSで後から差し込まないこと。
   HTMLに書いてあれば折りたたんでもクローラーは読めるが、
   JS取得にするとHTMLだけ見るAIクローラーには空に見える */
.guideBox{background:#fff;border-radius:14px;margin:0 0 12px;overflow:hidden;
          box-shadow:0 2px 10px rgba(22,7,13,.10);}
.guideBox > summary{list-style:none;cursor:pointer;display:flex;align-items:center;
          font-size:.84rem;font-weight:800;color:#c93d70;padding:13px 16px;}
.guideBox > summary::-webkit-details-marker{display:none;}
.guideBox > summary::after{content:"▾";margin-left:auto;font-size:.66rem;opacity:.7;
          transition:transform .15s ease;}
.guideBox[open] > summary::after{transform:rotate(180deg);}
.guideBox ul{margin:0;padding:0 18px 14px 34px;}
.guideBox li{font-size:.78rem;line-height:1.95;color:#4f4657;}

/* ---- 掲載依頼のCTA ---- */
.okuboCta{background:var(--onbg);border-radius:16px;text-align:center;
          padding:24px 20px;margin:30px 0 0;}
.okuboCta h2{font-size:.95rem;color:#fff;margin:0 0 6px;}
.okuboCta p{font-size:.76rem;color:#e8d3dc;margin:0 0 14px;line-height:1.8;}
.okuboCta a{display:inline-block;background:var(--pink);color:#fff;font-size:.8rem;
            font-weight:800;text-decoration:none;padding:10px 26px;border-radius:999px;}

/* ================= 掲載リクエスト／誤り報告カード（2026-08-31 追加） =================
   カードの列のまんなかあたりに、アーティストカードと同じ幅で差し込むカード。
   hd-app.js の insertCta() が全タブに1枚ずつ入れる。
   ・アーティストのカードと間違えられないよう、白ではなくピンクの塗り＋破線の枠にしている
   ・.card より後ろに書くこと（背景色を上書きするため） */
.ctaCard{background:linear-gradient(160deg,#fff2f7,#ffdfeb);
         border:2px dashed var(--pink);box-shadow:0 3px 14px rgba(201,61,112,.18);
         display:flex;align-items:center;justify-content:center;}
.ctaCard .ctaInner{padding:20px 18px;text-align:center;width:100%;}
.ctaCard .ctaLead{display:inline-block;margin:0 0 8px;padding:2px 12px;border-radius:999px;
         background:var(--pink);color:#fff;font-size:.64rem;font-weight:800;letter-spacing:.08em;}
.ctaCard .ctaTitle{margin:0 0 8px;font-size:.92rem;font-weight:900;line-height:1.6;color:#a8446c;}
.ctaCard .ctaBody{margin:0 0 14px;font-size:.72rem;line-height:1.85;color:#5b5265;}
.ctaCard .ctaBtns{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;}
.ctaCard .ctaBtn{display:inline-block;font-size:.75rem;font-weight:800;text-decoration:none;
         padding:8px 18px;border-radius:999px;background:#fff;color:#c93d70;
         border:1px solid rgba(201,61,112,.35);}
.ctaCard .ctaBtn.primary{background:var(--pink);color:#fff;border-color:var(--pink);}
/* 48・46系の大きいカードの中では文字も少しゆったりさせる */
.grid.big .ctaCard .ctaTitle{font-size:1rem;}

/* ================= 言語切替ボタン（多言語化で使う。今は未使用） =================
   nav.siteNav の右端に置く想定。実装は第4段階で行う */
.langNav{margin-left:auto;display:flex;}
.langNav a, .langNav span{display:block;color:#fff;font-size:.78rem;font-weight:800;
        padding:14px 10px;text-decoration:none;}
.langNav span.cur{color:#ffb3cd;}

/* 2026-09-14 掲載アーティスト詳細テキストの折りたたみ。
   中身はHTMLにベタ書きのままなので、閉じていてもクローラーは読める */
.allDetailBox{margin:0;}
.allDetailToggle{cursor:pointer;list-style:none;font-size:.76rem;font-weight:800;color:#fff;
  background:var(--pink);border-radius:999px;padding:8px 16px;display:inline-flex;align-items:center;gap:7px;
  margin:0 0 4px;user-select:none;}
.allDetailToggle::-webkit-details-marker{display:none;}
.allDetailToggle::before{content:"▼";font-size:.6rem;transition:transform .2s;}
.allDetailBox[open] .allDetailToggle::before{transform:rotate(180deg);}
.allDetailToggle:hover{filter:brightness(1.08);}
.allDetailBox[open]{margin-bottom:4px;}
