:root {
  --cream: #f4e8cc;
  --paper: #fbf3df;
  --red: #c8321f;
  --navy: #1f2a44;
  --mustard: #f0b429;
  --ink: #1b1b1b;
  --muted: #6b6255;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body {
  background: var(--cream);
  background-image: radial-gradient(rgba(0,0,0,.05) 1px, transparent 1px);
  background-size: 6px 6px;
  color: var(--ink);
  font-family: "M PLUS Rounded 1c", system-ui, sans-serif;
  font-weight: 500;
  padding-bottom: calc(76px + env(safe-area-inset-bottom));
  -webkit-tap-highlight-color: transparent;
}
button { font: inherit; cursor: pointer; }

/* ヘッダー */
.top { text-align: center; padding: 36px 16px 14px; }
.top .sub { font-size: 11px; letter-spacing: .04em; color: var(--navy); font-weight: 800; }
.top h1 {
  font-family: "Dela Gothic One", sans-serif;
  font-weight: 400;
  color: var(--red);
  font-size: clamp(30px, 10vw, 46px);
  line-height: 1.02;
  margin: 6px 0 10px;
  text-shadow: 3px 3px 0 var(--navy);
}
.top .when { display: inline-flex; gap: 10px; align-items: center; font-weight: 800; color: var(--navy); }
.top .when span:first-child { background: var(--navy); color: #fff; padding: 2px 10px; border-radius: 4px; }
/* ポスターから切り出したタイトル画像（左そろえ・ポスターと同じ並び） */
.top.logo { text-align: left; padding: 40px 20px 14px; max-width: 460px; margin: 0 auto; }
.top.logo h1 { margin: 0; text-shadow: none; line-height: 0; font-size: 0; }
.top.logo h1 img { display: block; height: auto; }
.top.logo .lg-sub { width: 42.6%; margin-bottom: 4px; }
.top.logo .lg-title { width: 100%; }
.top.logo .lg-date { width: 60.2%; margin-top: 8px; }

main { max-width: 560px; margin: 0 auto; padding: 0 16px; }
.tab { display: none; }
.tab.active { display: block; }

.card {
  background: var(--paper);
  border: 3px solid var(--navy);
  border-radius: 10px;
  box-shadow: 5px 5px 0 var(--navy);
  padding: 16px;
  margin-bottom: 18px;
}

/* カウントダウン */
.countdown { background: var(--red); color: #fff; text-align: center; position: relative; }
/* カードのうしろから顔を出す4人。
   z-index:-1 でカードの「うしろ」に置き、腰から下（切れているところ）はカードで隠す。
   4人とも同じ縮尺で、すき間は 10px で一定（重ならない）。幅の割合は写真の横幅の比 298:272:320:341 */
/* レゴの4人：ふだんはカードの右下。カードをタップすると、フレームの内側を一周して戻ってくる */
.cd-wrap .countdown { padding-bottom: 40px; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.cd-lego { position: absolute; z-index: 1; left: 0; top: 0; width: 0; height: 0; pointer-events: none; will-change: transform; }
.cd-wrap .cd-label, .cd-wrap .cd-nums { position: relative; z-index: 2; } /* 文字の「うしろ」をレゴが通る */
.cd-lego img { position: absolute; height: 30px; width: auto; bottom: 0; left: 0; transform: translateX(-50%); filter: drop-shadow(0 2px 0 rgba(0,0,0,.25)); }
.cd-lego.walking img { animation: legoStep .26s ease-in-out infinite alternate; }
.cd-lego:nth-of-type(odd).walking img { animation-delay: -.13s; }
@keyframes legoStep { from { transform: translateX(-50%) translateY(0) rotate(-6deg); } to { transform: translateX(-50%) translateY(-3px) rotate(6deg); } }
/* 4人とカードを入れる箱。4人（z-index 0）の上にカード（z-index 1）を重ねる */
.cd-wrap { position: relative; padding-top: min(20vw, 118px); }
.cd-wrap .countdown { position: relative; z-index: 1; }
.cd-crew { position: absolute; z-index: 0; top: 0; left: 8px; right: 8px; height: calc(min(20vw, 118px) + 22px); clip-path: inset(-200px -60px 0 -60px); /* 下だけ切る：潜ったとき、カードの下からはみ出さない */ display: flex; justify-content: center; align-items: flex-end; gap: 10px; pointer-events: none; }
.cd-crew img { flex: none; height: auto; transform-origin: 50% 100%; pointer-events: auto; cursor: pointer; -webkit-user-select: none; user-select: none; -webkit-user-drag: none; }
.cd-crew img:nth-child(1) { width: calc((100% - 30px) * .242); }
.cd-crew img:nth-child(2) { width: calc((100% - 30px) * .221); animation-delay: -.6s; }
.cd-crew img:nth-child(3) { width: calc((100% - 30px) * .260); animation-delay: -1.2s; }
.cd-crew img:nth-child(4) { width: calc((100% - 30px) * .277); animation-delay: -1.8s; }
/* ふだん：ゆっくり息をしている */
@keyframes crewIdle { 0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(1.015); } }
/* 動きのパターン（app.js が1人ずつ、ときどきランダムに選ぶ）。横にはほとんど動かさないので、となりと重ならない */
.cd-crew img.mv-hop { animation: mvHop .7s ease-out; }
@keyframes mvHop { 0%, 100% { transform: translateY(0) scaleY(1); } 15% { transform: translateY(4px) scaleY(.95); } 45% { transform: translateY(-16px) scaleY(1.03); } 75% { transform: translateY(2px) scaleY(.97); } }
.cd-crew img.mv-groove { animation: mvGroove 1.5s ease-in-out; }
@keyframes mvGroove { 0%, 33%, 66%, 100% { transform: translateY(0); } 16%, 50%, 83% { transform: translateY(5px); } }
.cd-crew img.mv-peek { animation: mvPeek 1.8s ease-in-out; }
@keyframes mvPeek { 0%, 100% { transform: translateY(0); } 25%, 55% { transform: translateY(110%); } 75% { transform: translateY(-8px); } 88% { transform: translateY(2px); } }
.cd-crew img.mv-sway { animation: mvSway 2s ease-in-out; }
@keyframes mvSway { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-4deg); } 50% { transform: rotate(0); } 75% { transform: rotate(4deg); } }
.cd-crew img.mv-flip { animation: mvFlip 1.6s ease-in-out; }
@keyframes mvFlip { 0%, 100% { transform: scaleX(1); } 20%, 70% { transform: scaleX(-1); } }
.cd-crew img.mv-wiggle { animation: mvWiggle .6s linear; }
@keyframes mvWiggle { 0%, 100% { transform: rotate(0); } 20% { transform: rotate(-3deg); } 40% { transform: rotate(3deg); } 60% { transform: rotate(-2deg); } 80% { transform: rotate(2deg); } }
.cd-crew img.mv-stretch { animation: mvStretch 1.2s ease-in-out; }
@keyframes mvStretch { 0%, 100% { transform: scale(1); } 40% { transform: scale(1.03, 1.12); } 60% { transform: scale(1.03, 1.12); } 80% { transform: scale(1, .96); } }
.cd-crew img.mv-point { animation: mvPoint 1.2s ease-in-out; }
@keyframes mvPoint { 0%, 50%, 100% { transform: rotate(0); } 12%, 37% { transform: rotate(-3deg) translateX(-3px); } 25% { transform: rotate(0); } }
/* ---- 追加の8種類（横の動きは数px までにして、となりと重ならない） ---- */
/* おじぎ */
.cd-crew img.mv-bow { animation: mvBow 1.4s ease-in-out; }
@keyframes mvBow { 0%, 100% { transform: translateY(0) scaleY(1); } 30%, 60% { transform: translateY(14px) scaleY(.92); } 80% { transform: translateY(-3px) scaleY(1.02); } }
/* くるっと1回転（横幅は変わらない回り方） */
.cd-crew img.mv-spin { animation: mvSpin 1s ease-in-out; }
@keyframes mvSpin { 0% { transform: perspective(400px) rotateY(0); } 100% { transform: perspective(400px) rotateY(360deg); } }
/* いやいや（小さく左右にぶるぶる） */
.cd-crew img.mv-shake { animation: mvShake .8s linear; }
@keyframes mvShake { 0%, 100% { transform: translateX(0); } 12%, 37%, 62% { transform: translateX(-3px); } 25%, 50%, 75% { transform: translateX(3px); } }
/* つま先立ちで、遠くをのぞきこむ */
.cd-crew img.mv-tiptoe { animation: mvTiptoe 2.2s ease-in-out; }
@keyframes mvTiptoe { 0%, 100% { transform: translateY(0) rotate(0); } 25% { transform: translateY(-12px) rotate(0); } 45% { transform: translateY(-12px) rotate(-3deg); } 65% { transform: translateY(-12px) rotate(3deg); } 85% { transform: translateY(-12px) rotate(0); } }
/* ぴょんぴょんぴょん（小さく3回ジャンプ） */
.cd-crew img.mv-triple { animation: mvTriple 1.2s ease-in-out; }
@keyframes mvTriple { 0%, 33%, 66%, 100% { transform: translateY(0) scaleY(1); } 16%, 49%, 82% { transform: translateY(-9px) scaleY(1.03); } }
/* びっくり！（とび上がって、ぐーんとのびる） */
.cd-crew img.mv-surprise { animation: mvSurprise 1.3s cubic-bezier(.2, .9, .3, 1.2); }
@keyframes mvSurprise { 0%, 100% { transform: translateY(0) scale(1); } 15% { transform: translateY(-20px) scale(1.06, 1.1); } 55% { transform: translateY(-14px) scale(1.04, 1.06); } 80% { transform: translateY(3px) scale(1.02, .95); } }
/* ズコッ（ずり落ちて、よじのぼって戻る） */
.cd-crew img.mv-drop { animation: mvDrop 2s ease-in-out; }
@keyframes mvDrop { 0%, 100% { transform: translateY(0) rotate(0); } 12% { transform: translateY(45%) rotate(3deg); } 35% { transform: translateY(45%) rotate(3deg); } 55% { transform: translateY(28%) rotate(-2deg); } 75% { transform: translateY(10%) rotate(2deg); } }
/* ノリノリダンス（はねながら左右にゆれる） */
.cd-crew img.mv-dance { animation: mvDance 1.6s ease-in-out; }
@keyframes mvDance { 0%, 100% { transform: translateY(0) rotate(0); } 12.5% { transform: translateY(-7px) rotate(-4deg); } 25% { transform: translateY(0) rotate(0); } 37.5% { transform: translateY(-7px) rotate(4deg); } 50% { transform: translateY(0) rotate(0); } 62.5% { transform: translateY(-7px) rotate(-4deg); } 75% { transform: translateY(0) rotate(0); } 87.5% { transform: translateY(-7px) rotate(4deg); } }
@media (prefers-reduced-motion: reduce) { .cd-crew img { animation: none; } }
.cd-label { font-weight: 800; letter-spacing: .1em; }
.cd-nums { display: flex; justify-content: center; gap: 10px; margin-top: 6px; }
.cd-nums div { min-width: 60px; }
.cd-nums b { display: block; font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 38px; line-height: 1.1; }
.cd-nums small { font-size: 11px; opacity: .85; }
.cd-msg { font-family: "Dela Gothic One", sans-serif; font-size: 24px; margin-top: 6px; }

/* NOW / NEXT */
.now h2 { margin: 0 0 10px; font-size: 14px; color: var(--muted); letter-spacing: .1em; }
.now .row { display: flex; gap: 10px; align-items: center; padding: 8px 0; border-top: 1px dashed #cdbf9f; }
.now .row:first-of-type { border-top: 0; }
.badge { font-size: 11px; font-weight: 800; padding: 2px 8px; border-radius: 999px; color: #fff; white-space: nowrap; }
.badge.hall { background: var(--mustard); color: var(--ink); }
.badge.bar { background: var(--red); }
.badge.live { background: #e0245e; animation: blink 1.2s infinite; }
@keyframes blink { 50% { opacity: .45; } }
.now .act { font-weight: 800; font-size: 17px; }
.now .time { font-size: 12px; color: var(--muted); }

/* 公演情報 */
.info dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; margin: 0 0 14px; }
.info dt { font-size: 12px; color: var(--muted); font-weight: 800; padding-top: 2px; }
.info dd { margin: 0; font-weight: 800; }
.tickets { display: grid; gap: 10px; }
.tickets a {
  display: block; text-align: center; text-decoration: none;
  background: var(--navy); color: #fff; font-weight: 800;
  padding: 12px; border-radius: 8px;
}
.tickets a.warn { background: #8a8170; }
.tickets small { display: block; font-weight: 500; font-size: 11px; opacity: .85; }
/* チケット購入ボタン（押したくなるように：赤・太いフチ・影・ときどき光が走る） */
.tickets a.buy {
  position: relative; overflow: hidden; display: flex; align-items: center; gap: 12px; text-align: left;
  background: linear-gradient(180deg, #e2483a, var(--red)); color: #fff;
  border: 3px solid var(--navy); border-radius: 14px; padding: 12px 16px;
  box-shadow: 0 5px 0 var(--navy); transition: transform .08s, box-shadow .08s;
}
.tickets a.buy:active { transform: translateY(4px); box-shadow: 0 1px 0 var(--navy); }
.tickets a.buy::after { /* 光が左から右へ走る */
  content: ""; position: absolute; top: 0; bottom: 0; left: -60%; width: 40%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.45), transparent);
  transform: skewX(-20deg); animation: buyShine 3.2s ease-in-out infinite;
}
.tickets .buywrap:nth-child(2) a.buy::after { animation-delay: 1.6s; }
@keyframes buyShine { 0%, 55% { left: -60%; } 85%, 100% { left: 130%; } }
.buy-ic { width: 54px; height: auto; transform: rotate(-10deg); flex: none; filter: drop-shadow(0 2px 0 rgba(0,0,0,.3)); } /* サーカス素材の TICKET */
.buy-txt { flex: 1; line-height: 1.15; }
.buy-txt b { display: block; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 21px; letter-spacing: .02em; text-shadow: 0 2px 0 rgba(0,0,0,.2); }
.tickets .buy-txt small { display: block; font-family: "Poppins", "Noto Sans JP", sans-serif; font-weight: 800; font-size: 12px; opacity: .95; margin-top: 3px; }
.buy-go { flex: none; width: 34px; height: 34px; border-radius: 50%; background: var(--mustard); color: var(--navy); display: grid; place-items: center; font-size: 24px; font-weight: 800; border: 2px solid var(--navy); }
.buy-note { margin: 6px 2px 0; font-size: 11px; color: var(--red); font-weight: 800; }
@media (prefers-reduced-motion: reduce) { .tickets a.buy::after { animation: none; display: none; } }

/* タイテ */
.filters { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 4px; }
.filters button {
  border: 2px solid var(--navy); background: var(--paper); color: var(--navy);
  border-radius: 999px; padding: 6px 12px; font-weight: 800; font-size: 13px;
}
.filters button.on { background: var(--navy); color: #fff; }
.hint { font-size: 12px; color: var(--muted); margin: 8px 0 12px; }
.tt { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.tt li {
  display: grid; grid-template-columns: 72px 1fr 36px; align-items: center; gap: 8px;
  border: 3px solid var(--navy); border-radius: 8px; padding: 10px 8px 10px 12px;
  box-shadow: 4px 4px 0 var(--navy);
}
.tt li.hall { background: var(--mustard); }
.tt li.bar { background: var(--red); color: #fff; }
.tt li.past { opacity: .45; }
.tt li.playing { outline: 4px solid #e0245e; outline-offset: 2px; }
.tt .t b { display: block; font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 18px; line-height: 1; white-space: nowrap; }
.tt .t small { font-size: 12px; }
.tt .name { font-weight: 800; font-size: 17px; line-height: 1.25; }
.tt .name small { display: block; font-weight: 500; font-size: 11px; opacity: .85; margin-top: 2px; }
.tt .name .badge { margin-left: 6px; vertical-align: 2px; }
.star { background: none; border: 0; font-size: 24px; color: inherit; opacity: .5; padding: 0; }
.star.on { opacity: 1; color: #ffe066; text-shadow: 0 0 2px var(--navy), 1px 1px 0 var(--navy); }
.empty { text-align: center; color: var(--muted); padding: 30px 0; }

/* 出演者 */
.artists { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.artist { background: var(--paper); border: 3px solid var(--navy); border-radius: 10px; overflow: hidden; box-shadow: 4px 4px 0 var(--navy); }
.artist img { display: block; width: 100%; aspect-ratio: 4/3; object-fit: cover; background: #ddd; }
.artist .body { padding: 8px 10px 10px; }
.artist .nm { font-weight: 800; font-size: 15px; line-height: 1.25; }
.artist .slot { font-size: 11px; margin-top: 4px; }
.artist .bio { font-size: 11px; color: var(--muted); margin-top: 4px; }
.artist .lead { font-size: 12px; line-height: 1.5; margin: 6px 0 4px; }
.artist .lnk { display: block; width: 100%; text-align: left; margin-top: 6px; font-size: 12px; font-weight: 800; color: var(--red); text-decoration: none; background: none; border: 0; padding: 0; }

/* CM */
.cms { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cm { border: 3px solid var(--navy); border-radius: 8px; overflow: hidden; background: #000; padding: 0; text-align: left; box-shadow: 4px 4px 0 var(--navy); position: relative; }
.cm img { display: block; width: 100%; aspect-ratio: 16/9; object-fit: cover; }
.cm .cap { background: var(--paper); color: var(--ink); font-size: 12px; font-weight: 800; padding: 6px 8px; display: flex; justify-content: space-between; }
.cm .play { position: absolute; top: 28%; left: 50%; transform: translate(-50%, -50%); width: 40px; height: 40px; border-radius: 50%; background: rgba(200,50,31,.9); color: #fff; display: grid; place-items: center; font-size: 16px; }
dialog { border: 0; padding: 0; background: #000; width: min(96vw, 720px); border-radius: 10px; }
dialog::backdrop { background: rgba(0,0,0,.8); }
dialog video { display: block; width: 100%; }
dialog .close { width: 100%; border: 0; background: var(--red); color: #fff; padding: 12px; font-weight: 800; }

/* 下のタブ */
.tabbar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
  display: grid; grid-template-columns: repeat(4, 1fr);
  background: var(--navy); padding-bottom: env(safe-area-inset-bottom);
}
.tabbar button { background: none; border: 0; color: #b9c0d4; padding: 8px 0 10px; font-size: 11px; font-weight: 800; }
.tabbar button span { display: block; font-size: 20px; margin-bottom: 2px; }
.tabbar button.on { color: #fff; box-shadow: inset 0 3px 0 var(--mustard); }

/* ---- v2：画像タイテ・紹介ページ・マイタイテ ---- */
.now h2, .mylist h2 { margin: 0 0 10px; font-size: 14px; color: var(--muted); letter-spacing: .1em; }
.now .row, .mylist .row { display: flex; gap: 10px; align-items: center; padding: 8px 0; border-top: 1px dashed #cdbf9f; color: inherit; text-decoration: none; }
.now h2 + .row, .mylist h2 + .row { border-top: 0; }
.mylist .act { font-weight: 800; font-size: 16px; }
.mylist .time { font-size: 12px; color: var(--muted); }
.row .go { margin-left: auto; font-size: 22px; color: var(--muted); }
.badge.done { background: #8a8170; }
.empty-s { font-size: 12px; color: var(--muted); margin: 0; }

.ttimg { position: relative; border-radius: 10px; overflow: hidden; border: 3px solid var(--navy); box-shadow: 5px 5px 0 var(--navy); margin-bottom: 18px; }
.ttimg img { display: block; width: 100%; height: auto; }
.hot { position: absolute; display: block; border-radius: 4px; transition: background .15s; }
.hot:active, .hot:focus-visible { background: rgba(255,255,255,.35); outline: 3px solid var(--navy); }
.hot.past { background: rgba(244,232,204,.55); }
.hot.playing { outline: 4px solid #e0245e; outline-offset: 1px; animation: glow 1.4s ease-in-out infinite; }
@keyframes glow { 50% { box-shadow: 0 0 0 6px rgba(224,36,94,.35); } }
.hot .nowtag { position: absolute; top: -9px; right: -6px; background: #e0245e; color: #fff; font-size: 10px; font-weight: 800; padding: 1px 6px; border-radius: 999px; }
/* マイタイテに入れた枠：小さな★は見えにくかったので、枠ごと黄色で囲み、右上に★の丸い札を出す（左には時刻があるので右上。文字は鍔本さんの指示で★だけ。2026-11-08） */
.hot.my .nowtag { top: auto; bottom: -10px; } /* 演奏中の「NOW」は、★の札と重ならないように右下へ */
.hot.my::before { content: ""; position: absolute; inset: -3px; border: 3px solid #ffd23f; border-radius: 6px; background: rgba(255, 210, 63, .22); box-shadow: 0 0 0 2px var(--navy), inset 0 0 0 2px var(--navy); pointer-events: none; }
.hot.my::after { content: "★"; position: absolute; top: -10px; right: -12px; width: 16px; height: 16px; display: grid; place-items: center; background: var(--navy); color: #ffd23f; border: 2px solid #ffd23f; font-size: 10px; line-height: 1; border-radius: 50%; box-shadow: 0 0 0 1.5px var(--navy); pointer-events: none; }

a.artist { color: inherit; text-decoration: none; display: block; }

body.noscroll { overflow: hidden; }
.apage { position: fixed; inset: 0; z-index: 20; background: var(--cream); overflow-y: auto; -webkit-overflow-scrolling: touch; padding-bottom: calc(24px + env(safe-area-inset-bottom)); }
.apage[hidden] { display: none; }
.abar { position: sticky; top: 0; z-index: 5; background: var(--navy); padding: calc(8px + env(safe-area-inset-top)) 12px 8px; display: flex; align-items: center; justify-content: space-between; }
.back { background: none; border: 0; color: #fff; font-weight: 800; font-size: 15px; padding: 4px 4px; }
.ahero { display: block; width: 100%; max-width: 560px; margin: 0 auto; aspect-ratio: 4/3; object-fit: cover; border-bottom: 3px solid var(--navy); }
.abody { max-width: 560px; margin: 0 auto; padding: 16px; }
.aname { font-family: "Dela Gothic One", sans-serif; font-weight: 400; color: var(--red); font-size: 30px; line-height: 1.15; margin: 0 0 10px; text-shadow: 2px 2px 0 var(--navy); }
.aslot { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.aslot b { font-size: 18px; }
.anote { font-size: 13px; color: var(--muted); margin: 10px 0 0; }
.abody h3 { font-size: 13px; letter-spacing: .12em; color: var(--muted); margin: 22px 0 8px; border-bottom: 2px solid var(--navy); padding-bottom: 4px; }
.alead { font-size: 16px; line-height: 1.7; font-weight: 800; margin: 0 0 12px; }
.alead.muted { color: var(--muted); font-weight: 500; font-size: 14px; }
.abtn { display: block; text-align: center; text-decoration: none; background: var(--red); color: #fff; font-weight: 800; padding: 12px; border-radius: 8px; border: 3px solid var(--navy); box-shadow: 3px 3px 0 var(--navy); margin-bottom: 10px; }
.abtn.sub { background: var(--mustard); color: var(--ink); }
.mybtn { width: 100%; margin-top: 14px; padding: 10px; border-radius: 999px; border: 2px solid var(--navy); background: var(--paper); color: var(--navy); font-weight: 800; }
.mybtn.on { background: var(--navy); color: #ffe066; }
.acm { display: block; width: 100%; border-radius: 8px; border: 3px solid var(--navy); background: #000; }

/* ---- v3：レゴの4人のタブ ---- */
body { padding-bottom: calc(104px + env(safe-area-inset-bottom)); }
.tabbar {
  background: var(--mustard);
  border-top: 3px solid var(--navy);
  box-shadow: 0 -4px 0 rgba(31,42,68,.12);
  height: calc(66px + env(safe-area-inset-bottom));
  overflow: visible;
}
.tabbar button {
  position: relative; display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
  color: var(--navy); padding: 0 0 8px; font-size: 11px; height: 66px;
}
.tabbar button.on { color: var(--navy); box-shadow: none; }
.tabbar .lego {
  position: absolute; bottom: 24px; left: 50%;
  height: 58px; width: auto;
  transform: translateX(-50%);
  transform-origin: 50% 100%;
  filter: drop-shadow(0 2px 0 rgba(31,42,68,.35));
  transition: transform .25s cubic-bezier(.3,1.6,.5,1), height .25s;
  pointer-events: none;
}
.tabbar button:not(.on) .lego { height: 50px; opacity: .9; }
.tabbar button.on .lego { height: 72px; transform: translateX(-50%) translateY(-4px); animation: walk .9s ease-in-out; }
/* 押したときに、左右に体をゆらしながら数歩あるく */
@keyframes walk {
  0%   { transform: translateX(calc(-50% - 10px)) translateY(0)    rotate(0); }
  12%  { transform: translateX(calc(-50% - 7px))  translateY(-6px) rotate(-7deg); }
  25%  { transform: translateX(calc(-50% - 4px))  translateY(0)    rotate(0); }
  37%  { transform: translateX(calc(-50% - 1px))  translateY(-6px) rotate(7deg); }
  50%  { transform: translateX(calc(-50% + 2px))  translateY(0)    rotate(0); }
  62%  { transform: translateX(calc(-50% + 4px))  translateY(-6px) rotate(-7deg); }
  75%  { transform: translateX(calc(-50% + 3px))  translateY(0)    rotate(0); }
  87%  { transform: translateX(calc(-50% + 1px))  translateY(-5px) rotate(5deg); }
  100% { transform: translateX(-50%)              translateY(-4px) rotate(0); }
}
/* 選んでいる人は、その場でゆっくり足ぶみ */
.tabbar button.on .lego { animation: walk .9s ease-in-out, idle 2.4s ease-in-out .9s infinite; }
@keyframes idle {
  0%, 100% { transform: translateX(-50%) translateY(-4px) rotate(0); }
  25% { transform: translateX(-50%) translateY(-7px) rotate(-3deg); }
  50% { transform: translateX(-50%) translateY(-4px) rotate(0); }
  75% { transform: translateX(-50%) translateY(-7px) rotate(3deg); }
}
@media (prefers-reduced-motion: reduce) { .tabbar .lego { animation: none !important; } }

/* 5周年の軌跡 */
a.histcard { display: flex; align-items: flex-end; gap: 2px; text-decoration: none; color: var(--ink); background: var(--navy); color: #fff; position: relative; overflow: hidden; padding: 14px 14px 12px; }
a.histcard img { height: 54px; width: auto; flex: none; margin-right: -10px; filter: drop-shadow(0 2px 0 rgba(0,0,0,.3)); }
a.histcard > div { margin-left: 18px; }
.hc-sub { font-family: "Poppins", sans-serif; font-size: 11px; font-weight: 800; letter-spacing: .1em; color: var(--mustard); }
.hc-title { font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 24px; line-height: 1.2; letter-spacing: -.01em; } /* ポスターの小塚ゴシックに近い字 */
.hc-go { font-size: 12px; opacity: .85; margin-top: 2px; }
.hhead { max-width: 560px; margin: 0 auto; padding: 18px 16px 4px; text-align: center; }
.hhead .hc-sub { color: var(--navy); }
.hlego { display: flex; justify-content: center; margin-top: 4px; }
.hlego img { height: 70px; margin: 0 -6px; }
.timeline { list-style: none; max-width: 560px; margin: 8px auto 0; padding: 0 16px 0 44px; position: relative; }
.timeline::before { content: ""; position: absolute; left: 26px; top: 0; bottom: 0; width: 4px; background: var(--navy); border-radius: 2px; }
.timeline .yr { margin: 18px 0 10px -40px; position: relative; z-index: 1; }
.timeline .yr span { display: inline-block; background: var(--red); color: #fff; font-family: "Dela Gothic One", sans-serif; font-size: 20px; padding: 2px 14px; border-radius: 999px; border: 3px solid var(--navy); }
.timeline .yr.next span { background: var(--mustard); color: var(--navy); }
.timeline .ev { position: relative; margin-bottom: 14px; }
.timeline .dot { position: absolute; left: -24px; top: 16px; width: 14px; height: 14px; border-radius: 50%; background: var(--mustard); border: 3px solid var(--navy); }
.evcard { background: var(--paper); border: 3px solid var(--navy); border-radius: 10px; box-shadow: 4px 4px 0 var(--navy); padding: 12px; }
.evdate { font-family: "Dela Gothic One", sans-serif; color: var(--red); font-size: 15px; }
.evimg { display: block; width: 100%; max-width: 180px; aspect-ratio: 1; object-fit: cover; border-radius: 6px; border: 2px solid var(--navy); margin: 8px 0; background: #ddd; }
.evimg.wide { max-width: 100%; aspect-ratio: 3/2; }
.evtitle { font-weight: 800; font-size: 16px; line-height: 1.35; margin-top: 2px; }
.evtext { font-size: 13px; line-height: 1.7; margin: 6px 0 0; }
.evlink { display: inline-block; margin-top: 8px; font-size: 13px; font-weight: 800; color: var(--red); text-decoration: none; }
/* 年表 v3：カード全体を押せる形・詳しいページ */
a.evcard { display: block; color: inherit; text-decoration: none; }
a.evcard:active { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--navy); }
.evrow { display: flex; gap: 10px; align-items: flex-start; }
.evthumb { flex: none; width: 96px; height: 72px; object-fit: cover; border-radius: 6px; border: 2px solid var(--navy); background: #ddd; }
.evthumb.sq { object-fit: contain; background: var(--navy); } /* ジャケット写真は切らずに同じ枠へ */
.evbody { min-width: 0; }
.evmore { display: inline-block; margin-top: 6px; font-size: 12px; font-weight: 800; color: var(--red); }
.apage.hd { z-index: 25; }
.gal { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 8px; padding: 12px 16px 4px; max-width: 760px; margin: 0 auto; -webkit-overflow-scrolling: touch; }
.gal figure { margin: 0; flex: 0 0 100%; scroll-snap-align: center; }
.gal.multi figure { flex-basis: 86%; }
.gal img { display: block; width: 100%; aspect-ratio: 3/2; object-fit: cover; border-radius: 8px; border: 3px solid var(--navy); background: #222; }
.gal figure.sq img { object-fit: contain; background: var(--navy); } /* ジャケット写真も他と同じ枠の大きさに */
.gal figcaption { font-size: 11px; color: var(--muted); margin-top: 4px; }
.galhint { text-align: center; font-size: 11px; color: var(--muted); margin: 2px 0 0; }
.evdate.big { font-size: 18px; }
.hdtitle { font-weight: 800; font-size: 21px; line-height: 1.35; margin: 4px 0 12px; }
.hdtext { font-size: 15px; line-height: 1.85; margin: 0 0 12px; }
.abtn.xbtn { background: #111; color: #fff; }
.hdnav { display: flex; justify-content: space-between; align-items: center; margin: 18px 0 8px; }
.hdnav a { font-weight: 800; color: var(--navy); text-decoration: none; background: var(--paper); border: 2px solid var(--navy); border-radius: 999px; padding: 6px 14px; font-size: 13px; }
.hdsrc { font-size: 12px; color: var(--muted); margin-top: 10px; }
.hdsrc ul { padding-left: 18px; margin: 6px 0; }
.hdsrc li { word-break: break-all; }

.hnote { max-width: 560px; margin: 16px auto 0; padding: 0 16px; font-size: 11px; color: var(--muted); }

/* 配信サービスのボタン */
.stream { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.sbtn { display: flex; align-items: center; justify-content: center; gap: 8px; text-decoration: none; font-weight: 800; padding: 12px 8px; border-radius: 8px; border: 3px solid var(--navy); box-shadow: 3px 3px 0 var(--navy); color: #fff; font-size: 14px; }
.sbtn.am { background: #fa2d48; }
.sbtn.sp { background: #1db954; color: #000; }
.sbtn.yt { background: #ff0000; }
.sbtn .sic { width: 18px; height: 18px; border-radius: 50%; background: currentColor; -webkit-mask: radial-gradient(circle at 50% 50%, transparent 3px, #000 3.5px); mask: radial-gradient(circle at 50% 50%, transparent 3px, #000 3.5px); }
.tabbar .lbl {
  position: relative; z-index: 1; font-weight: 800; padding: 2px 10px; border-radius: 999px; line-height: 1.3;
  display: inline-block; font-size: 11px; margin: 0;
}
.tabbar button.on .lbl { background: var(--red); color: #fff; border: 2px solid var(--navy); }
.tabbar button:not(.on) .lbl { border: 2px solid transparent; }

.proto { position: fixed; top: 8px; left: 8px; background: var(--ink); color: #fff; font-size: 10px; padding: 2px 8px; border-radius: 999px; opacity: .7; }

/* デジタル記念チケット */
a.tkcard { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--ink); background: var(--mustard); }
.tkcard .tk-ic { width: 74px; height: auto; flex: none; transform: rotate(-10deg); filter: drop-shadow(2px 3px 0 rgba(31,42,68,.35)); } /* サーカス素材の TICKET */
.tkcard .hc-sub { color: var(--red); }
.tkcard .hc-title { font-size: clamp(18px, 5.4vw, 24px); white-space: nowrap; }
.tkcard .tk-state { font-size: 12px; font-weight: 800; color: var(--navy); margin-top: 2px; }
.tkcard .tk-go { margin-left: auto; font-size: 28px; font-weight: 800; color: var(--navy); }
.tk .aname { font-size: 26px; }
.tk-test { background: #ffe066; border: 2px dashed var(--navy); padding: 6px 10px; font-size: 12px; font-weight: 800; border-radius: 6px; }
.tk-switch { display: flex; border: 3px solid var(--navy); border-radius: 999px; overflow: hidden; margin: 6px 0 14px; }
.tk-switch button { flex: 1; border: 0; background: var(--paper); color: var(--navy); font-weight: 800; padding: 9px 4px; font-size: 14px; }
.tk-switch button.on { background: var(--navy); color: #ffe066; }
.tk-view { position: relative; }
.tk-view img { display: block; width: 100%; height: auto; aspect-ratio: 1080 / 1620; border-radius: 6px; -webkit-touch-callout: default; }
.tk-view img:not([src]) { visibility: hidden; }
.tk-loading { position: absolute; inset: 0; display: grid; place-items: center; font-weight: 800; color: var(--navy); background: rgba(244,232,204,.6); }
.tk-loading[hidden] { display: none; }
.tk-help { font-size: 14px; line-height: 1.6; margin: 0 0 10px; }
.tk-help small { color: var(--muted); }
.tk-msg { font-size: 14px; font-weight: 800; margin: 0 0 8px; min-height: 1em; }
.tk-msg.ok { color: #1f7a3a; }
.tk-msg.ng { color: var(--red); }
.tk-field { display: block; font-size: 13px; font-weight: 800; color: var(--muted); margin-bottom: 12px; }
.tk-field input, .tk-field select { display: block; width: 100%; margin-top: 4px; font: inherit; font-size: 17px; font-weight: 800; color: var(--ink); padding: 10px 12px; border: 3px solid var(--navy); border-radius: 8px; background: #fff; }
.tk .abtn { width: 100%; font-size: 16px; }

/* 年表：とみといびーの回の印 */
.evtag { display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 999px; background: var(--red); color: #fff; font-size: 11px; font-weight: 800; letter-spacing: 0; vertical-align: 2px; }

/* 年表：年ごとの色（暗い色から明るい色へ。だんだんテンションが上がっていく） */
/* --yc：印や線の色　--yt：日付などの文字の色（読みやすさ用）　--yf：年の印の文字の色 */
.y2021 { --yc: #2b3a78; --yt: #2b3a78; --yf: #fff; }    /* 夜の紺 */
.y2022 { --yc: #5a3a9e; --yt: #5a3a9e; --yf: #fff; }    /* むらさき */
.y2023 { --yc: #a8337f; --yt: #a8337f; --yf: #fff; }    /* マゼンタ */
.y2024 { --yc: #dc3a32; --yt: #c8321f; --yf: #fff; }    /* 赤 */
.y2025 { --yc: #f2701c; --yt: #d75a0c; --yf: #fff; }    /* オレンジ */
.y2026 { --yc: #ffc21a; --yt: #b77a00; --yf: #1f2a44; } /* ゴールド */
.timeline .yr span { background: var(--yc, var(--red)); color: var(--yf, #fff); }
.timeline .ev .dot { background: var(--yc, var(--mustard)); }
.timeline .ev .evcard { border-left: 8px solid var(--yc, var(--navy)); }
.timeline .ev .evdate, .timeline .ev .evmore { color: var(--yt, var(--red)); }
#histDetail .evdate { color: var(--yt, var(--red)); }


/* 年表の回を開くときの演出：扉 */
.door-ov { position: fixed; inset: 0; z-index: 40; background: radial-gradient(circle at 50% 55%, #2a3558, #121829 70%); display: flex; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; animation: ovIn .2s ease-out; cursor: pointer; }
.door-ov.out { animation: ovOut .35s ease-in forwards; }
@keyframes ovIn { from { opacity: 0; } }
@keyframes ovOut { to { opacity: 0; } }
.door-date { font-family: "Dela Gothic One", sans-serif; font-size: 34px; color: var(--yc, var(--mustard)); text-shadow: 0 0 18px var(--yc, var(--mustard)); opacity: 0; animation: fadeUp .4s .1s ease-out forwards; }
.door-title { color: #fff; font-weight: 800; font-size: 15px; margin: 4px 24px 22px; text-align: center; opacity: 0; animation: fadeUp .4s .2s ease-out forwards; }
@keyframes fadeUp { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.door-stage { position: relative; width: 300px; height: 230px; }
.door-frame { position: absolute; left: 50%; bottom: 0; width: 120px; height: 200px; margin-left: -60px; border: 8px solid var(--yc, var(--mustard)); border-bottom: 0; border-radius: 6px 6px 0 0; perspective: 600px; background: #0b0f1c; box-shadow: 0 0 30px rgba(0,0,0,.6); }
.door-light { position: absolute; inset: 0; background: radial-gradient(circle at 50% 60%, #fff, #fff6c8 35%, var(--yc, var(--mustard)) 90%); opacity: 0; animation: lightOn .6s 1.05s ease-out forwards; }
@keyframes lightOn { to { opacity: 1; } }
/* 扉の絵（鍔本さん提供の扉を黄色にしたもの）。ちょうつがいが右なので、右を軸に手前へ開く */
.door-panel { position: absolute; inset: 0; background: url(img/door.png) center / 100% 100% no-repeat; transform-origin: 100% 50%; animation: doorOpen .7s .95s cubic-bezier(.5,0,.3,1) forwards; }
@keyframes doorOpen { to { transform: rotateY(105deg); } }
.door-walkers { position: absolute; bottom: 0; left: 0; display: flex; align-items: flex-end; animation: walkToDoor 2.6s .05s ease-in-out forwards; }
/* 4人とも扉（右）のほうを向いて、ゆっくり歩く */
.door-walkers img { height: 64px; margin-right: -14px; transform-origin: 50% 100%; scale: -1 1; animation: stride .48s ease-in-out infinite alternate; }
/* 4人とも同じタイミングで足を運び、同じ高さに着地する（足元の位置をそろえる） */
@keyframes stride { from { transform: translateY(0) rotate(-5deg); } to { transform: translateY(-4px) rotate(5deg); } }
@keyframes walkToDoor {
  0%   { transform: translateX(-260px); opacity: 1; }
  55%  { transform: translateX(70px); opacity: 1; }
  100% { transform: translateX(130px) translateY(-6px) scale(.35); opacity: 0; }
}
.door-flash { position: absolute; left: 50%; top: 50%; width: 120px; height: 200px; margin: -60px 0 0 -60px; border-radius: 50%; background: radial-gradient(circle, #fff, rgba(255,255,255,0) 70%); opacity: 0; animation: flash .55s 2.45s ease-in forwards; pointer-events: none; }
@keyframes flash { 0% { opacity: 0; transform: scale(.5); } 100% { opacity: 1; transform: scale(9); } }

/* 前後の回へのボタン：丸枠の中にレゴが1人。行く方向を向いている */
.hdnav a { display: inline-flex; align-items: center; gap: 6px; }
.hdprev { padding: 3px 14px 3px 3px !important; } /* 丸枠がボタンのはしにぴったり入るように */
.hdnext { padding: 3px 3px 3px 14px !important; }
.navface { flex: none; width: 34px; height: 34px; border-radius: 50%; border: 2px solid var(--navy); background: #fff4d6; overflow: hidden;
  display: flex; align-items: flex-end; justify-content: center; }
.navlego { height: 36px; width: auto; margin-bottom: -4px; pointer-events: none; transform-origin: 50% 100%; animation: navIdle 2.2s ease-in-out infinite; }
.hdnext .navlego { scale: -1 1; }   /* 右（次の回）を向く。前の回の人はもともと左向き */
@keyframes navIdle { 0%, 100% { transform: rotate(-3deg); } 50% { transform: rotate(3deg); } }
@media (prefers-reduced-motion: reduce) { .navlego { animation: none !important; } }

/* どのページからでもホームへ戻るボタン */
.homebtn { display: inline-flex; align-items: center; gap: 4px; background: var(--mustard); color: var(--navy); border: 2px solid #fff; border-radius: 999px;
  font-weight: 800; font-size: 13px; padding: 2px 12px 2px 4px; }
.homebtn img { height: 24px; width: auto; }

/* 記念チケット：チケットのすぐ下の推し選び（横にスクロール） */
.tk-chiphint { font-size: 12px; font-weight: 800; color: var(--muted); margin: 10px 0 4px; }
.tk-chips { display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 10px; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; }
.tk-chips button { flex: none; width: 72px; border: 0; background: none; padding: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; scroll-snap-align: center; }
.tk-chips img, .tk-chipbox { width: 60px; height: 60px; border-radius: 50%; object-fit: cover; object-position: 50% 15%; border: 3px solid var(--navy); background: var(--paper); }
.tk-chipbox { display: grid; place-items: center; font-family: "Dela Gothic One", sans-serif; font-size: 22px; color: #fff; background: var(--red); }
.tk-chipname { font-size: 10px; font-weight: 800; color: var(--navy); line-height: 1.2; text-align: center; max-width: 72px; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.tk-chips button.on img, .tk-chips button.on .tk-chipbox { border-color: var(--mustard); box-shadow: 0 0 0 3px var(--navy); }
.tk-chips button.on .tk-chipname { color: var(--red); }

/* ---------- BGM プレイヤー（右下の小さなボタン＋設定画面） ---------- */
.bgm { position: fixed; z-index: 30; right: 12px; bottom: calc(92px + env(safe-area-inset-bottom)); display: flex; align-items: center; gap: 4px;
  background: var(--navy); color: #fff; border: 2px solid var(--navy); border-radius: 999px; padding: 3px; box-shadow: 3px 3px 0 rgba(0,0,0,.25); max-width: calc(100vw - 24px); }
.bgm button { border: 0; background: none; color: inherit; padding: 0; }
.bgm-play { position: relative; width: 40px; height: 40px; border-radius: 50%; background: var(--mustard) !important; color: var(--navy) !important; display: grid; place-items: center; font-size: 20px; font-weight: 800; }
.bgm-eq { display: none; gap: 2px; align-items: flex-end; height: 16px; }
.bgm-eq i, .bgs-eq i { display: block; width: 3px; background: currentColor; border-radius: 1px; animation: bgmEq .8s ease-in-out infinite alternate; }
.bgm-eq i:nth-child(2), .bgs-eq i:nth-child(2) { animation-delay: -.3s; }
.bgm-eq i:nth-child(3), .bgs-eq i:nth-child(3) { animation-delay: -.55s; }
@keyframes bgmEq { from { height: 25%; } to { height: 100%; } }
.bgm.on .bgm-ic { display: none; }
.bgm.on .bgm-eq { display: flex; }
.bgm-now { display: none; max-width: 150px; overflow: hidden; white-space: nowrap; font-size: 12px; font-weight: 800; cursor: pointer; mask-image: linear-gradient(90deg, #000 85%, transparent); -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); }
.bgm.has .bgm-now { display: block; padding-left: 4px; }
.bgm.on .bgm-title { display: inline-block; padding-right: 30px; animation: bgmMarquee 9s linear infinite; }
@keyframes bgmMarquee { 0%, 15% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
.bgm-open { width: 34px; height: 34px; font-size: 20px; font-weight: 800; }

.bgm-sheet { width: min(520px, calc(100vw - 24px)); max-height: min(80vh, 640px); padding: 0; border: 3px solid var(--navy); border-radius: 16px; background: var(--paper); color: var(--ink); box-shadow: 5px 5px 0 var(--navy); overflow: hidden; display: none; flex-direction: column; }
.bgm-sheet[open] { display: flex; }
.bgm-sheet::backdrop { background: rgba(20, 24, 40, .55); }
.bgm-sheet button { font: inherit; }
.bgs-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; background: var(--navy); color: #fff; }
.bgs-head b { font-family: "Poppins", sans-serif; font-weight: 800; letter-spacing: .12em; }
.bgs-close { border: 0; background: none; color: #fff; font-size: 26px; line-height: 1; padding: 0 4px; }
.bgs-now { padding: 14px 16px 4px; text-align: center; }
.bgs-title { font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 20px; line-height: 1.25; }
.bgs-album { font-size: 12px; color: var(--muted); font-weight: 800; margin-top: 2px; }
.bgs-ctrl { display: flex; justify-content: center; align-items: center; gap: 18px; padding: 8px 0 12px; }
.bgs-ctrl button { width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--navy); background: #fff; color: var(--navy); font-size: 16px; }
.bgs-ctrl .bgs-big { width: 58px; height: 58px; background: var(--red); color: #fff; font-size: 20px; box-shadow: 0 3px 0 var(--navy); }
.bgs-label { padding: 6px 16px 4px; font-size: 12px; font-weight: 800; color: var(--muted); }
.bgs-modes { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; padding: 0 16px 10px; }
.bgs-modes [data-tog] { display: flex; align-items: center; justify-content: center; gap: 6px; }
.bgs-ico { font-size: 15px; line-height: 1; }
.bgs-modes [data-tog].on { background: var(--red); color: #fff; } /* オンのときは赤 */
.bgs-modes button { border: 2px solid var(--navy); background: #fff; color: var(--navy); border-radius: 999px; padding: 7px 0; font-size: 13px; font-weight: 800; }
.bgs-modes button.on { background: var(--navy); color: #fff; }
.bgs-list { overflow-y: auto; padding: 0 10px 14px; min-height: 120px; }
.bgs-alb { position: sticky; top: 0; background: var(--paper); padding: 10px 6px 4px; font-family: "Poppins", "Noto Sans JP", sans-serif; font-weight: 800; font-size: 12px; color: var(--red); letter-spacing: .04em; }
.bgs-alb small { margin-left: 8px; color: var(--muted); font-weight: 800; }
.bgs-list button { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; border: 0; background: none; padding: 9px 8px; border-radius: 8px; font-size: 14px; font-weight: 800; color: var(--ink); }
.bgs-list button.on { background: var(--navy); color: #fff; }
.bgs-eq { display: none; gap: 2px; align-items: flex-end; height: 12px; flex: none; }
.bgs-list button.on .bgs-eq { display: flex; }
.bgm-sheet:not(.playing) .bgs-eq i { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .bgm-eq i, .bgs-eq i, .bgm.on .bgm-title { animation: none; } }
/* 2026-11-08：右下だとカードの「›」や出演者の写真を隠していたので、右上に小さく移す。
   紹介ページ・年表・記念チケットを開いている間は、そのページの「ホーム」ボタンと重なるので隠す */
.bgm { top: calc(8px + env(safe-area-inset-top)); bottom: auto; right: 8px; padding: 2px; box-shadow: 2px 2px 0 rgba(0,0,0,.25); }
.bgm-play { width: 36px; height: 36px; font-size: 18px; }
.bgm-open { width: 32px; height: 32px; font-size: 18px; }
body.noscroll .bgm { display: none; }

/* ---------- カードの見出し：レトロポップ素材のラベル風（太いフチ＋ずらした影＋キラキラ） ---------- */
.now h2, .mylist h2 {
  position: relative; display: inline-flex; align-items: center; gap: 6px;
  margin: -32px 0 12px -4px; padding: 5px 16px 5px 14px;
  font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 15px; letter-spacing: .08em; color: #fff;
  background: var(--navy); border: 2.5px solid var(--navy); border-radius: 10px;
  box-shadow: 4px 4px 0 var(--mustard); transform: rotate(-2deg);
}
.now h2.h-live { background: var(--red); }
.mylist h2.h-my { background: var(--mustard); color: var(--navy); box-shadow: 4px 4px 0 var(--red); }
.now h2::after, .mylist h2::after { /* 右上にキラキラのシール */
  content: ""; position: absolute; right: -16px; top: -12px; width: 22px; height: 22px;
  background: url(img/deco/sparkle_pop.png) center / contain no-repeat; transform: rotate(14deg);
}
.h2ic { width: 20px; height: auto; margin-left: -4px; filter: drop-shadow(1px 1px 0 rgba(31,42,68,.4)); }
.now, .mylist { margin-top: 28px; }

/* ---------- 年表の詳しいページ：当時の動画（公式 X から直接再生） ---------- */
.hdvids { margin: 18px 0 14px; }
.hdvids h3 { font-size: 13px; color: var(--muted); letter-spacing: .08em; margin: 0 0 8px; }
.hdvid { margin: 0 0 14px; }
.hdvid video { display: block; width: 100%; height: auto; background: #000; border: 3px solid var(--navy); border-radius: 10px; }
.hdvid.tall video { width: auto; max-width: 100%; max-height: 70vh; margin: 0 auto; }
.hdvid figcaption { font-size: 11px; color: var(--muted); margin-top: 4px; }
.hdvid figcaption a { color: var(--navy); font-weight: 800; }

/* ---------- ファンの声（試作・fan.js）：ここからファンになりました！ボタンとコメント ---------- */
.fanbox { margin: 22px 0 16px; padding: 14px; background: var(--paper); border: 3px solid var(--navy); border-radius: 14px; box-shadow: 4px 4px 0 var(--navy); }
.fan-head { display: flex; align-items: center; gap: 6px; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 16px; color: var(--navy); margin-bottom: 10px; }
.fan-head img { width: 26px; height: auto; }
.fan-proto { margin-left: auto; font-size: 10px; background: var(--ink); color: #fff; border-radius: 999px; padding: 2px 8px; font-weight: 800; }
.fan-like { display: flex; align-items: center; gap: 8px; width: 100%; padding: 12px 14px; border: 3px solid var(--navy); border-radius: 999px; background: #fff; color: var(--navy); font-weight: 900; font-size: 15px; box-shadow: 0 4px 0 var(--navy); transition: transform .08s, box-shadow .08s; }
.fan-like:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--navy); }
.fan-like.on { background: var(--mustard); }
.fan-like-ic { font-size: 20px; color: var(--red); }
.fan-like-txt { flex: 1; text-align: left; font-family: "Noto Sans JP", sans-serif; }
.fan-like-n { font-family: "Poppins", sans-serif; font-size: 20px; }
.fan-like-n small { font-size: 11px; margin-left: 2px; }
.fan-list { margin: 14px 0 6px; display: grid; gap: 8px; }
.fan-c { background: #fff; border: 2px solid var(--navy); border-radius: 12px 12px 12px 2px; padding: 8px 12px; }
.fan-c-name { font-weight: 900; font-size: 13px; color: var(--red); }
.fan-c-name small { margin-left: 8px; color: var(--muted); font-weight: 700; font-size: 10px; }
.fan-c p { margin: 4px 0 0; font-size: 14px; line-height: 1.6; white-space: pre-wrap; word-break: break-word; }
.fan-empty, .fan-wait, .fan-thanks { font-size: 12px; color: var(--muted); margin: 6px 0; }
.fan-thanks { color: var(--red); font-weight: 800; }
.fan-form { display: grid; gap: 6px; margin-top: 10px; }
.fan-form input, .fan-form textarea { font: inherit; font-size: 16px; padding: 9px 11px; border: 2px solid var(--navy); border-radius: 10px; background: #fff; color: var(--ink); width: 100%; }
.fan-form-row { display: flex; align-items: center; justify-content: space-between; }
.fan-count { font-size: 11px; color: var(--muted); }
.fan-form button { border: 2px solid var(--navy); background: var(--red); color: #fff; font-weight: 900; border-radius: 999px; padding: 8px 18px; box-shadow: 0 3px 0 var(--navy); }
.fan-rule { font-size: 10.5px; color: var(--muted); margin: 0; line-height: 1.5; }
.fan-note { font-size: 10.5px; color: var(--muted); margin: 10px 0 0; line-height: 1.6; }
.fan-admin-open { border: 0; background: none; padding: 0 0 0 4px; color: var(--navy); font-weight: 800; text-decoration: underline; font-size: 10.5px; }

.fan-admin { width: min(520px, calc(100vw - 24px)); max-height: 85vh; padding: 0; border: 3px solid var(--navy); border-radius: 16px; background: var(--paper); color: var(--ink); overflow: hidden; display: none; flex-direction: column; }
.fan-admin[open] { display: flex; }
.fan-admin::backdrop { background: rgba(20, 24, 40, .55); }
.fa-head { display: flex; justify-content: space-between; align-items: center; padding: 10px 14px; background: var(--navy); color: #fff; }
.fa-close { border: 0; background: none; color: #fff; font-size: 26px; line-height: 1; }
.fa-body { overflow-y: auto; padding: 4px 14px 16px; }
.fa-note { font-size: 12px; color: var(--muted); }
.fa-body h3 { font-size: 14px; margin: 14px 0 6px; color: var(--navy); }
.fa-c { background: #fff; border: 2px solid var(--navy); border-radius: 10px; padding: 8px 10px; margin-bottom: 8px; }
.fa-meta { font-size: 10.5px; color: var(--muted); }
.fa-name { font-weight: 900; font-size: 13px; color: var(--red); }
.fa-c p { margin: 4px 0 6px; font-size: 14px; white-space: pre-wrap; word-break: break-word; }
.fa-btns { display: flex; gap: 6px; }
.fa-btns button { font: inherit; font-size: 12px; font-weight: 800; border: 2px solid var(--navy); border-radius: 999px; padding: 4px 12px; background: #fff; color: var(--navy); }
.fa-btns .ok { background: var(--navy); color: #fff; }
.fa-empty { font-size: 12px; color: var(--muted); }
.fa-likes { font-size: 13px; padding-left: 20px; }

/* ---------- 年表の一覧：ファンになった数と、浮かんでは消えるコメント（試作・fan.js） ---------- */
.evfans { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.evfan { display: inline-block; white-space: nowrap; font-size: 11.5px; font-weight: 800; color: var(--navy); background: #fff; border: 2px solid var(--navy); border-radius: 999px; padding: 2px 10px; }
.evfan b { color: var(--red); }
.evbubbles { position: absolute; left: 0; right: 0; top: 0; height: 0; pointer-events: none; z-index: 3; }
.evbubble {
  position: absolute; bottom: -14px; max-width: 72%;
  background: #fff; color: var(--ink); border: 2.5px solid var(--navy); border-radius: 16px;
  padding: 6px 12px; font-size: 12.5px; font-weight: 800; line-height: 1.45; box-shadow: 3px 3px 0 var(--mustard);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  transform-origin: 20px 100%; animation: evBubble 4.2s ease-in-out forwards;
}
.evbubble::after { /* 吹き出しのしっぽ */
  content: ""; position: absolute; left: 18px; bottom: -9px; width: 14px; height: 14px; background: #fff;
  border-right: 2.5px solid var(--navy); border-bottom: 2.5px solid var(--navy); transform: rotate(45deg);
}
.evbubble.flip { background: var(--mustard); }
.evbubble.flip::after { background: var(--mustard); }
.evbubble small { margin-left: 6px; color: var(--muted); font-size: 10px; }
.evb-sample { display: inline-block; margin-right: 5px; font-size: 9px; background: var(--ink); color: #fff; border-radius: 999px; padding: 1px 6px; vertical-align: 1px; }
@keyframes evBubble {
  0% { opacity: 0; transform: translateY(10px) scale(.6) rotate(var(--tilt)); }
  10% { opacity: 1; transform: translateY(-2px) scale(1.04) rotate(var(--tilt)); }
  16%, 82% { opacity: 1; transform: translateY(0) scale(1) rotate(var(--tilt)); }
  100% { opacity: 0; transform: translateY(-14px) scale(.96) rotate(var(--tilt)); }
}
.fan-sw { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 11px; font-weight: 800; color: var(--muted); }
@media (prefers-reduced-motion: reduce) { .evbubble { animation-duration: 5s; } }


/* ---------- 出演バンドとの歩み（年表 v13〜） ---------- */
.hfilter { display: flex; gap: 6px; overflow-x: auto; padding: 4px 16px 10px; max-width: 560px; margin: 0 auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.hfilter::-webkit-scrollbar { display: none; }
.hfilter button { flex: 0 0 auto; border: 2px solid var(--navy); background: #fff; color: var(--navy); border-radius: 999px; padding: 5px 12px; font: 800 12px/1.2 "M PLUS Rounded 1c", sans-serif; cursor: pointer; }
.hfilter button.on { background: var(--navy); color: #fff; }
.timeline li[hidden] { display: none; }
.evbands { display: flex; flex-wrap: wrap; gap: 4px; margin: 6px 0 2px; }
.evband { display: inline-block; padding: 2px 8px; border-radius: 999px; background: #fff3c4; border: 1.5px solid var(--navy); color: var(--navy); font-size: 11px; font-weight: 800; line-height: 1.4; text-decoration: none; }
a.evband::after { content: " ›"; }
#histDetail .evbands { margin: 2px 0 12px; }
#histDetail .evband { font-size: 12px; padding: 4px 10px; }

/* ---------- ミニゲーム（2026-11-08） ---------- */
a.gmcard { display: flex; align-items: center; gap: 12px; text-decoration: none; background: var(--red); color: #fff; }
.gmcard .tk-ic { width: 64px; transform: rotate(-8deg); }
.gmcard .hc-sub { color: var(--mustard); }
.gmcard .gm-state { font-size: 12px; opacity: .9; margin-top: 2px; }
.gmcard .tk-go { color: #fff; }
.gm-lead { margin: 0 0 14px; color: var(--muted); font-size: 14px; }
a.gm-pick-card { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--ink); background: var(--paper); border: 3px solid var(--navy); border-radius: 16px; padding: 14px; margin-bottom: 12px; box-shadow: 4px 4px 0 var(--navy); }
a.gm-pick-card.quiz { background: #fff6d6; }
.gp-ic { font-size: 34px; flex: none; }
a.gm-pick-card > span:nth-child(2) { flex: 1; min-width: 0; }
a.gm-pick-card b { display: block; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 18px; color: var(--navy); }
a.gm-pick-card small { display: block; font-size: 12px; color: var(--muted); margin-top: 2px; }
.gp-best { flex: none; text-align: center; font-size: 11px; color: var(--muted); line-height: 1.3; }
.gp-best em { font-style: normal; font-family: "Poppins", sans-serif; font-size: 22px; color: var(--red); }
.gm-badges { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.gm-badge { background: #e9dfc6; border-radius: 12px; padding: 10px 4px; text-align: center; opacity: .75; }
.gm-badge.on { background: var(--mustard); opacity: 1; box-shadow: 0 3px 0 var(--navy); }
.gm-badge .gb-ic { display: block; font-size: 28px; line-height: 1.2; }
.gm-badge b { display: block; font-size: 12px; color: var(--navy); margin-top: 2px; }
.gm-badge small { display: block; font-size: 10px; color: var(--muted); }
.gm-badge.on small { color: var(--navy); }
.gm-stage { position: relative; height: calc(100dvh - 120px); max-height: 640px; min-height: 380px; border: 3px solid var(--navy); border-radius: 16px; overflow: hidden; background: linear-gradient(#fbf3df, #f4e8cc 70%, #e8d6ad); }
#pkCanvas { display: block; width: 100%; height: 100%; touch-action: none; }
.pk-over { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 16px; background: rgba(251,243,223,.94); overflow-y: auto; }
.pk-over[hidden] { display: none; }
.pk-over h2, .qz-end h2 { font-family: "Dela Gothic One", sans-serif; font-weight: 400; color: var(--red); font-size: 28px; margin: 0 0 6px; text-shadow: 2px 2px 0 var(--navy); }
.pk-over p { margin: 4px 0; font-size: 14px; }
.pk-rule { list-style: none; padding: 0; margin: 8px 0; font-size: 13px; text-align: left; }
.pk-rule li { margin: 3px 0; }
.pk-dot { display: inline-block; width: 12px; height: 12px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); margin-right: 6px; border: 2px solid var(--navy); vertical-align: -1px; }
.pk-dot.r { background: var(--red); } .pk-dot.g { background: var(--mustard); } .pk-dot.k { background: #2a2a2a; }
.pk-sel-t { font-weight: 800; color: var(--navy); margin-top: 10px !important; }
.pk-sel { display: flex; gap: 6px; margin: 6px 0 12px; }
.pk-sel button { width: 60px; height: 60px; border-radius: 12px; border: 3px solid transparent; background: #fff; padding: 2px; }
.pk-sel button.on { border-color: var(--red); background: #ffe9a8; }
.pk-sel img { width: 100%; height: 100%; object-fit: contain; }
.gm-btn { display: block; width: 100%; max-width: 280px; margin: 8px auto 0; padding: 13px; border: 3px solid var(--navy); border-radius: 999px; background: var(--red); color: #fff; font-weight: 900; font-size: 17px; text-align: center; text-decoration: none; box-shadow: 0 4px 0 var(--navy); font-family: inherit; }
.gm-btn.sub { background: #fff; color: var(--navy); font-size: 15px; }
.gm-btn:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--navy); }
.gm-score { font-size: 18px; font-weight: 800; color: var(--navy); }
.gm-score em { font-style: normal; font-family: "Poppins", sans-serif; font-size: 54px; color: var(--red); }
.gm-best { color: var(--red); font-weight: 900; }
.gm-sub { color: var(--muted); font-size: 13px; }
.gm-newbadge { display: flex; align-items: center; gap: 10px; background: var(--mustard); border: 2px solid var(--navy); border-radius: 12px; padding: 8px 14px; margin: 6px auto; text-align: left; width: fit-content; }
.gm-newbadge span { font-size: 30px; }
.gm-newbadge small { display: block; font-size: 11px; color: var(--red); font-weight: 800; }
.gm-newbadge b { color: var(--navy); }
.qz-head { display: flex; justify-content: space-between; font-family: "Poppins", sans-serif; font-weight: 800; color: var(--navy); }
.qz-prog { height: 6px; background: #e3d6b4; border-radius: 3px; margin: 6px 0 16px; overflow: hidden; }
.qz-prog i { display: block; height: 100%; background: var(--red); }
.qz-q { font-weight: 900; font-size: 19px; line-height: 1.5; color: var(--navy); margin: 0 0 14px; }
.qz-ch { display: grid; gap: 10px; }
.qz-ch button { padding: 14px; border: 3px solid var(--navy); border-radius: 14px; background: #fff; font-weight: 800; font-size: 16px; color: var(--ink); text-align: left; font-family: inherit; }
.qz-ch button.ok { background: #cdeccf; border-color: #2e7d32; }
.qz-ch button.ng { background: #f6c9c2; border-color: var(--red); }
.qz-ch button:disabled { opacity: 1; color: var(--ink); }
.qz-r { font-size: 22px; font-weight: 900; text-align: center; margin: 16px 0 4px; }
.qz-r.ok { color: #2e7d32; } .qz-r.ng { color: var(--red); }
.qz-end { text-align: center; }
.qz-miss { list-style: none; padding: 0; margin: 0; text-align: left; }
.qz-miss li { background: var(--paper); border-left: 4px solid var(--red); border-radius: 8px; padding: 10px 12px; margin-bottom: 8px; font-size: 13px; }
.qz-miss b { display: block; color: var(--navy); margin: 4px 0; }
.qz-miss a { font-size: 12px; color: var(--red); font-weight: 800; }

/* ---------- カウントダウン：電光掲示板デザイン（キャンバスの案C・2026-11-08） ----------
   紺のフレームの上下に電球の粒、数字は黄色のパタパタ板。元に戻すときは、この欄をまるごと消す */
.cd-wrap .countdown { background: var(--navy); box-shadow: 5px 5px 0 var(--red); padding: 24px 12px 40px; border-radius: 12px; }
.cd-wrap .countdown::before, .cd-wrap .countdown::after {
  content: ""; position: absolute; left: 14px; right: 14px; height: 8px; z-index: 0; pointer-events: none;
  background:
    radial-gradient(circle at 4px 4px, var(--mustard) 3.5px, transparent 4px) 0 0 / 16px 8px repeat-x,
    radial-gradient(circle at 12px 4px, var(--paper) 3.5px, transparent 4px) 0 0 / 16px 8px repeat-x;
}
.cd-wrap .countdown::before { top: 7px; }
.cd-wrap .countdown::after { bottom: 7px; }
.cd-wrap .cd-label { color: var(--mustard); letter-spacing: .2em; font-size: 14px; }
.cd-wrap .cd-nums { gap: 8px; margin-top: 8px; }
.cd-wrap .cd-nums div { min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.cd-wrap .cd-nums b { position: relative; width: 62px; height: 52px; display: grid; place-items: center; border-radius: 6px; background: #2a3558; color: var(--mustard); font-size: 32px; line-height: 1; overflow: hidden; }
.cd-wrap .cd-nums b::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 2px; background: #121829; } /* パタパタ板のまん中の線 */
.cd-wrap .cd-nums small { color: #e8e3d6; opacity: 1; font-weight: 800; }
.cd-wrap .cd-msg { color: var(--mustard); }
/* レゴの4人が一周したら、電球がピカピカ光る（app.js が .lit を3秒だけ付ける・2026-11-08） */
.cd-wrap .countdown.lit::before, .cd-wrap .countdown.lit::after {
  filter: drop-shadow(0 0 3px #ffe27a) drop-shadow(0 0 7px rgba(240, 180, 41, .9));
  animation: bulbChase .3s steps(1) infinite; /* 黄と白が入れかわって、光が走って見える */
}
@keyframes bulbChase { 0% { background-position: 0 0, 0 0; } 50% { background-position: 8px 0, 8px 0; } }
.cd-wrap .countdown.lit .cd-nums b { text-shadow: 0 0 8px rgba(255, 226, 122, .9); }
@media (prefers-reduced-motion: reduce) { .cd-wrap .countdown.lit::before, .cd-wrap .countdown.lit::after { animation: none; } }
.pk-songs { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; width: 100%; max-width: 320px; margin: 6px 0 4px; }
.pk-songs button { padding: 8px 6px; border: 2px solid var(--navy); border-radius: 10px; background: #fff; font-weight: 800; font-size: 12px; color: var(--navy); line-height: 1.3; font-family: inherit; }
.pk-songs button small { display: block; font-size: 10px; color: var(--muted); font-weight: 500; }
.pk-songs button.on { background: var(--red); color: #fff; border-color: var(--navy); }
.pk-songs button.on small { color: #ffe9a8; }
.pk-rule .pk-genie { display: flex; align-items: center; gap: 6px; background: #efe3ff; border: 2px solid #7b3fc4; border-radius: 10px; padding: 4px 8px; margin-top: 6px; font-size: 12px; }
.pk-rule .pk-genie img { width: 30px; height: 30px; object-fit: contain; flex: none; filter: drop-shadow(0 0 4px #f0b429); }
.pk-rule .pk-genie b { color: #7b3fc4; }
.pk-songs button:only-child { grid-column: 1 / -1; }

/* ---------- 5周年カード：扉の演出（キャンバスの案F・2026-11-08） ----------
   ふだん：扉は閉まっていて、すき間から少し光。4人は左で扉のほうを向いて立っている。
   タップ（app.js が .go を付ける）：4人が歩いて、扉が開き、光の中へ入っていく → 年表が開く。
   元に戻すときは、この欄を消して index.html を _backup_2026-11-08_4 のものに戻す */
a.histcard.hc-door { display: block; height: 150px; padding: 14px 16px; background: #121829; border-color: var(--navy); box-shadow: 5px 5px 0 var(--red); }
a.histcard.hc-door > div { margin-left: 0; }
a.histcard.hc-door img { height: auto; margin: 0; filter: none; }
.hc-door .hc-text { position: relative; z-index: 2; }
.hc-door .hc-go { color: #e8e3d6; opacity: 1; }
.hc-enter { position: absolute; z-index: 2; right: 108px; top: 36px; font-size: 13px; font-weight: 800; color: var(--navy); background: var(--mustard); border-radius: 999px; padding: 4px 12px; }
.hc-floor { position: absolute; left: 0; right: 0; bottom: 0; height: 16px; background: #0b0f1c; border-top: 2px solid #2a3558; }
.hc-gate { position: absolute; right: 30px; bottom: 14px; width: 66px; height: 108px; }
.hc-light { position: absolute; inset: 0; border: 6px solid var(--mustard); border-bottom: 0; border-radius: 4px 4px 0 0; background: radial-gradient(circle at 50% 60%, #fff, #fff6c8 40%, var(--mustard) 95%); box-shadow: 0 0 8px rgba(240, 180, 41, .35); }
.hc-spill { position: absolute; left: -46px; right: -20px; bottom: -14px; height: 16px; background: var(--mustard); opacity: 0; clip-path: polygon(40% 0, 75% 0, 100% 100%, 0 100%); }
.hc-panelbox { position: absolute; inset: 6px 6px 0 6px; perspective: 300px; }
a.histcard.hc-door .hc-panel { display: block; width: 100%; height: 100%; transform-origin: 100% 50%; }
.hc-walkers { position: absolute; z-index: 1; left: 16px; bottom: 14px; display: flex; align-items: flex-end; transform-origin: 50% 100%; }
a.histcard.hc-door .hc-walkers img { height: 38px; width: auto; margin-right: -8px; transform: scaleX(-1); transform-origin: 50% 100%; filter: drop-shadow(0 2px 0 rgba(0,0,0,.3)); }
a.histcard.hc-door .hc-walkers img:last-child { margin-right: 0; }
/* タップしたあと（約2.8秒） */
.hc-door.go .hc-walkers { animation: hcWalk 2.6s ease-in-out forwards; }
.hc-door.go .hc-walkers img { animation: hcStride .4s ease-in-out infinite alternate; }
.hc-door.go .hc-panel { animation: hcOpen 2.6s cubic-bezier(.5, 0, .3, 1) forwards; }
.hc-door.go .hc-light { animation: hcGlow 2.6s ease-in-out forwards; }
.hc-door.go .hc-spill { animation: hcSpill 2.6s ease-in-out forwards; }
@keyframes hcWalk { 0% { left: 16px; } 62% { left: calc(100% - 175px); transform: none; opacity: 1; } 88%, 100% { left: calc(100% - 128px); transform: translateY(-4px) scale(.35); opacity: 0; } }
@keyframes hcStride { from { transform: scaleX(-1) translateY(0) rotate(-5deg); } to { transform: scaleX(-1) translateY(-3px) rotate(5deg); } }
@keyframes hcOpen { 0%, 25% { transform: rotateY(0deg); } 55%, 100% { transform: rotateY(100deg); } }
@keyframes hcGlow { 0%, 25% { box-shadow: 0 0 8px rgba(240, 180, 41, .35); } 55%, 100% { box-shadow: 0 0 30px rgba(240, 180, 41, .95); } }
@keyframes hcSpill { 0%, 25% { opacity: 0; } 55%, 100% { opacity: .4; } }
.pk-count { list-style: none; padding: 8px 12px; margin: 8px auto 2px; width: 100%; max-width: 240px; background: #fff; border: 2px solid var(--navy); border-radius: 12px; }
.pk-count li { display: flex; align-items: center; gap: 8px; padding: 3px 0; font-size: 14px; }
.pk-count li + li { border-top: 1px dashed #d8ccb0; }
.pk-count li span { flex: 1; text-align: left; }
.pk-count li b { font-family: "Poppins", sans-serif; font-size: 18px; color: var(--navy); }
.pk-count li b::after { content: "個"; font-family: inherit; font-size: 11px; margin-left: 2px; color: var(--muted); }
.pk-count li:last-child b::after { content: "回"; }
.pk-count img { width: 20px; height: 20px; object-fit: contain; }
.pk-count .pk-dot { margin-right: 0; }

/* ---------- 記念チケット・ミニゲームのカード（キャンバスの案B・2026-11-08） ----------
   チケット＝本物の半券（右に切り取り線と半券）。ミニゲーム＝携帯ゲーム機（左に画面、右にボタン）。
   元に戻すときは、この欄を消して index.html・game.js を _backup_2026-11-08_5 のものに戻す */
a.tkcard.tk-real { position: relative; display: flex; align-items: stretch; gap: 0; padding: 0; overflow: visible; background: none; }
.tk-real .tk-main { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 10px; padding: 14px 12px 14px 14px; background: var(--mustard); border-radius: 7px 0 0 7px; }
.tk-real .tk-ic { width: 64px; }
.tk-real .hc-title { font-size: clamp(16px, 4.8vw, 22px); }
.tk-real .tk-state { font-size: 11px; }
.tk-stub { flex: none; width: 52px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; background: var(--paper); border-left: 3px dashed var(--navy); border-radius: 0 7px 7px 0; color: var(--red); }
.tk-stub-txt { writing-mode: vertical-rl; font-family: "Poppins", sans-serif; font-weight: 800; font-size: 11px; letter-spacing: .16em; }
.tk-real .tk-go { margin: 0; font-size: 22px; color: var(--navy); }
.tk-notch { position: absolute; right: 42px; width: 20px; height: 20px; border-radius: 50%; background: var(--cream); border: 3px solid var(--navy); box-sizing: border-box; }
.tk-notch-t { top: -13px; }
.tk-notch-b { bottom: -13px; }

a.gmcard.gm-console { gap: 12px; padding: 12px; border-radius: 10px 10px 28px 10px; }
.gm-screen { flex: none; width: 160px; padding: 8px 10px; background: var(--navy); border: 3px solid #121829; border-radius: 6px; display: flex; flex-direction: column; gap: 4px; }
.gm-screen .hc-sub { font-size: 10px; }
.gm-screen .hc-title { font-size: 18px; line-height: 1.1; }
.gm-dots { display: flex; gap: 4px; margin-top: 2px; }
.gm-dots i { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--mustard); box-sizing: border-box; }
.gm-dots i.on { background: var(--mustard); box-shadow: 0 0 6px rgba(240, 180, 41, .8); }
.gm-side { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.gm-console .gm-state { margin: 0; font-size: 12px; font-weight: 800; opacity: 1; line-height: 1.4; }
.gm-pad { position: relative; height: 34px; }
.gm-cross { position: absolute; left: 0; top: 0; width: 34px; height: 34px; background: linear-gradient(var(--navy), var(--navy)) center / 10px 100% no-repeat, linear-gradient(var(--navy), var(--navy)) center / 100% 10px no-repeat; }
.gm-key { position: absolute; left: 46px; top: 12px; width: 18px; height: 18px; border-radius: 50%; background: var(--mustard); border: 2px solid var(--navy); box-sizing: border-box; }
.gm-key-b { left: 68px; top: 2px; }
.gm-console .tk-go { margin-left: auto; font-size: 28px; font-weight: 800; }
/* スタート画面：高さが足りないとき、上下が切れたりボタンがふちにくっついたりしないように（2026-11-08） */
.pk-over { justify-content: flex-start; padding: 16px 16px 24px; }
.pk-over > :first-child { margin-top: auto; }
.pk-over > :last-child { margin-bottom: auto; }
.pk-over .gm-btn { flex: none; }
@media (max-height: 700px) {
  .pk-over h2 { font-size: 24px; margin-bottom: 2px; }
  .pk-over p { margin: 2px 0; font-size: 13px; }
  .pk-rule { margin: 4px 0; }
  .pk-rule li { margin: 1px 0; }
  .pk-sel-t { margin-top: 6px !important; }
  .pk-sel { margin: 4px 0 8px; }
  .pk-sel button { width: 52px; height: 52px; }
  .pk-over .gm-btn { padding: 10px; margin-top: 4px; }
}
/* 記念チケット：タップすると、切り取り線で半券が切れて、斜めにずれる（app.js が .tear を付ける・2026-11-08）
   切れた半券は落ちずに、少し右下へずれて傾いたまま止まる → 約1秒で記念チケットの画面が開く */
.tk-real .tk-stub { position: relative; z-index: 3; transform-origin: 0 0; }
.tk-real.tear .tk-stub { animation: tkTear .45s cubic-bezier(.2, .8, .3, 1) forwards; }
@keyframes tkTear { from { transform: none; } to { transform: translate(10px, 6px) rotate(8deg); } }
@media (prefers-reduced-motion: reduce) { .tk-real.tear .tk-stub { animation: none; } }
/* クイズの解説（答えたあとに出る） */
.qz-exp { background: #fff; border: 2px solid var(--navy); border-radius: 12px; padding: 10px 14px; margin: 8px 0 6px; text-align: left; box-shadow: 3px 3px 0 var(--navy); }
.qz-exp > b { display: inline-block; background: var(--navy); color: #fff; font-size: 11px; letter-spacing: .1em; padding: 2px 8px; border-radius: 999px; }
.qz-exp p { margin: 6px 0 0; font-size: 14px; line-height: 1.7; color: var(--ink); }
.qz-exp .qz-ans { font-weight: 900; color: var(--red); }

/* ミニゲーム：タップすると、ゲーム機の電源が入るように光ってから始まる（app.js が .boot を付ける・約1.2秒・2026-11-08）
   ①ボタンがカチカチ押される ②画面がピカッと白く光る ③「GAME START!」が点滅 ④バッジの丸が順番に光って走る */
.gm-screen { position: relative; overflow: hidden; }
.gm-screen::after { content: "GAME START!"; position: absolute; inset: 0; display: grid; place-items: center; background: #fff8d6; color: var(--red); font-family: "Poppins", sans-serif; font-weight: 800; font-size: 17px; letter-spacing: .06em; opacity: 0; pointer-events: none; }
.gm-console.boot { animation: gmCardGlow 1.2s ease-out forwards; }
.gm-console.boot .gm-screen { animation: gmScreenGlow 1.2s ease-out forwards; }
.gm-console.boot .gm-screen::after { animation: gmStart 1.2s steps(1) forwards; }
.gm-console.boot .gm-key { animation: gmPress .16s ease-in-out 2 alternate; }
.gm-console.boot .gm-key-b { animation-delay: .12s; }
.gm-console.boot .gm-dots i { animation: gmDot .6s ease-in-out 2; }
.gm-console.boot .gm-dots i:nth-child(2) { animation-delay: .05s; }
.gm-console.boot .gm-dots i:nth-child(3) { animation-delay: .1s; }
.gm-console.boot .gm-dots i:nth-child(4) { animation-delay: .15s; }
.gm-console.boot .gm-dots i:nth-child(5) { animation-delay: .2s; }
.gm-console.boot .gm-dots i:nth-child(6) { animation-delay: .25s; }
@keyframes gmCardGlow { 0% { box-shadow: 5px 5px 0 var(--navy); } 30%, 100% { box-shadow: 5px 5px 0 var(--navy), 0 0 22px rgba(240, 180, 41, .85); } }
@keyframes gmScreenGlow { 0% { border-color: #121829; } 25%, 100% { border-color: var(--mustard); box-shadow: 0 0 14px rgba(240, 180, 41, .9); } }
@keyframes gmStart {
  0%   { opacity: 0; }
  22%  { opacity: 1; background: #ffffff; color: transparent; }   /* ピカッ */
  32%  { opacity: 1; background: #fff8d6; color: var(--red); }     /* GAME START! */
  52%  { opacity: 1; color: transparent; }                          /* 点滅 */
  64%, 100% { opacity: 1; color: var(--red); }
}
@keyframes gmPress { to { transform: translateY(3px); background: #fff; box-shadow: 0 0 10px rgba(255, 255, 255, .9); } }
@keyframes gmDot { 50% { background: #fff; box-shadow: 0 0 10px rgba(255, 248, 214, 1); border-color: #fff; } }
@media (prefers-reduced-motion: reduce) { .gm-console.boot, .gm-console.boot * , .gm-console.boot .gm-screen::after { animation: none !important; } }

/* ---------- ミニゲームの最初の画面：「画面ぜんぶがゲーム機」（キャンバスの案B・2026-11-08） ----------
   game.js が #gamePage に .gm-boy を付けたときだけ効く（ピックキャッチ・クイズを遊ぶ画面はそのまま）。
   元に戻すときは、この欄を消して game.js を _backup_2026-11-08_9 のものに戻す */
#gamePage.gm-boy { background-color: var(--red); background-image: radial-gradient(rgba(0,0,0,.12) 1.5px, transparent 1.5px); background-size: 8px 8px; }
.gm-boy .abar { background: #a8281a; }
.gmb { padding-top: 12px; color: #fff; }
.gmb-shell { background: var(--navy); border-radius: 14px 14px 40px 14px; padding: 12px 14px 16px; box-shadow: inset 0 0 0 3px #121829, 4px 4px 0 #8f2213; }
.gmb-power { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; font-family: "Poppins", sans-serif; font-weight: 800; font-size: 9px; letter-spacing: .14em; color: #9aa3bf; }
.gmb-power i { width: 8px; height: 8px; border-radius: 50%; background: #ff4a3a; box-shadow: 0 0 8px #ff4a3a; }
.gmb-screen { background: #121829; border: 3px solid var(--mustard); border-radius: 6px; padding: 14px 12px; box-shadow: 0 0 18px rgba(240, 180, 41, .55); display: flex; flex-direction: column; gap: 10px; }
.gmb-head { text-align: center; }
.gmb .aname { margin: 0; font-size: 30px; color: var(--mustard); text-shadow: 0 0 10px rgba(240, 180, 41, .8); }
.gmb .gm-lead { margin: 6px 0 0; font-size: 11px; color: #c9c4b8; }
.gmb-sel { margin-top: 8px; font-family: "Poppins", sans-serif; font-weight: 800; font-size: 11px; letter-spacing: .24em; color: #e8e3d6; }
.gmb-list { display: flex; flex-direction: column; gap: 8px; }
/* メニューの1行。選ばれている行（最初はピックキャッチ／指で触れている行）は黄色に光り、「▶」が動く */
a.gm-pick-card.gmb-item { margin: 0; padding: 10px; gap: 8px; background: transparent; color: #fff; border: 2px solid #2a3558; border-radius: 8px; box-shadow: none; }
a.gm-pick-card.gmb-item.sel, a.gm-pick-card.gmb-item:hover, a.gm-pick-card.gmb-item:focus-visible { background: var(--mustard); color: var(--navy); border-color: #fff8d6; }
.gmb-list:hover a.gm-pick-card.gmb-item.sel:not(:hover) { background: transparent; color: #fff; border-color: #2a3558; }
.gmb-item .gp-ic { flex: none; font-size: 24px; }
/* 前からある「2番目の span を広げる」決まりが、ここでは絵（2番目）に効いてしまうので、文字（3番目）を広げ直す */
a.gm-pick-card.gmb-item > span:nth-child(2) { flex: none; }
a.gm-pick-card.gmb-item > span:nth-child(3) { flex: 1; min-width: 0; }
a.gm-pick-card.gmb-item b { color: inherit; font-size: 15px; }
a.gm-pick-card.gmb-item small { color: inherit; opacity: .85; font-size: 10px; }
.gmb-cur { flex: none; width: 14px; font-size: 14px; font-weight: 800; opacity: 0; }
.gmb-item.sel .gmb-cur, .gmb-item:hover .gmb-cur, .gmb-item:focus-visible .gmb-cur { opacity: 1; animation: gmbNudge .6s ease-in-out infinite alternate; }
.gmb-list:hover .gmb-item.sel:not(:hover) .gmb-cur { opacity: 0; }
@keyframes gmbNudge { to { transform: translateX(3px); } }
.gmb-item .gp-best { color: inherit; font-family: "Poppins", sans-serif; line-height: 1; text-align: right; }
a.gm-pick-card.gmb-item .gp-best small { display: block; margin: 0; font-size: 9px; letter-spacing: .1em; opacity: 1; }
.gmb-item .gp-best em { color: inherit; font-size: 20px; }
.gmb-item .gp-best em.np { font-family: "M PLUS Rounded 1c", sans-serif; font-size: 11px; font-weight: 800; }
/* バッジ：取ったものは丸が黄色く光る。まだのものは「？」と取り方 */
.gmb-badges { border-top: 2px dashed #2a3558; padding-top: 10px; }
.gmb-bh { display: flex; justify-content: space-between; margin-bottom: 8px; font-size: 11px; font-weight: 800; color: #e8e3d6; }
.gmb-bh span:first-child { font-family: "Poppins", sans-serif; letter-spacing: .16em; color: var(--mustard); }
.gmb .gm-badge { padding: 8px 4px; background: transparent; border: 2px solid #2a3558; border-radius: 8px; opacity: 1; box-shadow: none; }
.gmb .gm-badge .gb-ic { width: 34px; height: 34px; margin: 0 auto 4px; display: grid; place-items: center; border-radius: 50%; background: #1a2238; color: #5d6785; font-size: 18px; font-weight: 800; }
.gmb .gm-badge.on { background: #2a3558; border-color: var(--mustard); box-shadow: none; }
.gmb .gm-badge.on .gb-ic { background: var(--mustard); box-shadow: 0 0 10px rgba(240, 180, 41, .9); }
.gmb .gm-badge b { font-size: 10px; color: #8a93ad; }
.gmb .gm-badge.on b { color: #fff; }
.gmb .gm-badge small { font-size: 9px; color: #8a93ad; }
.gmb .gm-badge.on small { color: #e8e3d6; }
/* 画面の下：十字ボタン・A/B・SELECT/START（飾り） */
.gmb-pad { position: relative; height: 184px; margin-top: 8px; }
.gmb-cross { position: absolute; left: 10px; top: 16px; width: 102px; height: 102px; background: linear-gradient(var(--navy), var(--navy)) center / 34px 100% no-repeat, linear-gradient(var(--navy), var(--navy)) center / 100% 34px no-repeat; filter: drop-shadow(3px 3px 0 #8f2213); }
/* 十字の4つの腕＝押せるボタン（押すと少し明るくなる）。小さな三角で向きを示す */
.gmb-dir { position: absolute; width: 34px; height: 34px; padding: 0; border: 0; border-radius: 3px; background: transparent; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.gmb-dir:active { background: rgba(255, 255, 255, .22); }
.gmb-dir::after { content: ""; position: absolute; left: 50%; top: 50%; width: 0; height: 0; border: 6px solid transparent; transform: translate(-50%, -50%); }
.gmb-up { left: 34px; top: 0; } .gmb-up::after { border-bottom-color: #4a567a; margin-top: -3px; }
.gmb-down { left: 34px; bottom: 0; } .gmb-down::after { border-top-color: #4a567a; margin-top: 3px; }
.gmb-left { left: 0; top: 34px; } .gmb-left::after { border-right-color: #4a567a; margin-left: -3px; }
.gmb-right { right: 0; top: 34px; } .gmb-right::after { border-left-color: #4a567a; margin-left: 3px; }
.gmb-ab { position: absolute; width: 50px; height: 50px; padding: 0; font-size: 17px; cursor: pointer; -webkit-tap-highlight-color: transparent; border-radius: 50%; background: var(--mustard); border: 3px solid var(--navy); box-shadow: 3px 3px 0 #8f2213; display: grid; place-items: center; font-family: "Poppins", sans-serif; font-weight: 800; color: var(--navy); box-sizing: border-box; }
.gmb-a { right: 12px; top: 20px; }
.gmb-ab:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 #8f2213; background: #ffd25e; }
.gmb-b { right: 72px; top: 54px; }
.gmb-ss { position: absolute; left: 0; right: 0; top: 128px; display: flex; justify-content: center; gap: 18px; }
.gmb-ss { gap: 8px; top: 120px; }
/* SELECT・START：見た目は細い棒、押せる範囲は少し広め */
.gmb-ss button { position: relative; width: 64px; height: 34px; padding: 0; border: 0; background: transparent; transform: rotate(-20deg); cursor: pointer; -webkit-tap-highlight-color: transparent; }
.gmb-ss button::before { content: ""; position: absolute; left: 5px; right: 5px; top: 10px; height: 14px; border-radius: 7px; background: var(--navy); box-shadow: 2px 2px 0 #8f2213; }
.gmb-ss button:active::before { transform: translateY(2px); box-shadow: none; background: #121829; }
.gmb-sslbl { position: absolute; left: 0; right: 0; top: 156px; display: flex; justify-content: center; gap: 34px; font-family: "Poppins", sans-serif; font-size: 9px; letter-spacing: .12em; color: #fbe3d8; }
.gmb .anote { margin: 0; text-align: center; color: #fbe3d8; }
@media (prefers-reduced-motion: reduce) { .gmb-cur { animation: none !important; } }

/* ---------- ミニゲームは全部ゲーム機の中・ボタンは画面の下にずっと出す（2026-11-08） ----------
   上の帯／紺の画面（ここだけ中で動く）／ボタン、の3段。遊ぶ画面（.play）は液晶のように明るい画面 */
#gamePage.gm-boy { padding-bottom: 0; }
#gamePage.gm-boy:not([hidden]) { display: flex; flex-direction: column; overflow: hidden; }
.gm-boy .abar { flex: none; }
.gm-boy .gmb { flex: 1 1 auto; min-height: 0; width: 100%; box-sizing: border-box; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 12px 16px; }
.gm-boy .gmb-pad { flex: none; width: 100%; max-width: 560px; height: 160px; margin: 0 auto; padding-bottom: env(safe-area-inset-bottom); box-sizing: content-box; }
.gm-boy .gmb-cross { top: 8px; }
.gm-boy .gmb-a { top: 12px; }
.gm-boy .gmb-b { top: 46px; }
.gm-boy .gmb-ss { top: 106px; }
.gm-boy .gmb-sslbl { top: 140px; }
.gmb .anote { margin-top: 10px; }
.gmb.play .anote { display: none; }
.gmb-screen.light { background: #fbf3df; color: var(--ink); padding: 6px; }
.gmb-screen.light .gm-stage { height: calc(100dvh - 320px); min-height: 280px; max-height: 620px; border: 0; border-radius: 3px; }
.gmb-screen.light .qz { padding: 8px 6px; }
/* クイズ：十字ボタンで選んでいる答え */
.qz-ch button.cur { outline: 4px solid var(--mustard); outline-offset: 2px; background: #fff6d6; transform: translateX(4px); }

/* ---------- ゲーム機の画面を大きく・なるべくスクロールしない（2026-11-08） ----------
   ボタンの大きさはそのまま。まわりの余白をけずり、SELECT・START を十字キーと B のあいだに上げて、
   ボタンの段を低くする。あいた分は全部、紺の画面にまわす */
.gm-boy .gmb { display: flex; flex-direction: column; overflow: hidden; padding: 6px 8px 4px; }
.gm-boy .gmb-shell { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; padding: 6px 8px 10px; border-radius: 12px 12px 30px 12px; }
.gm-boy .gmb-power { flex: none; margin-bottom: 4px; }
.gm-boy .gmb-screen { flex: 1 1 auto; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 10px 10px; gap: 8px; }
.gm-boy .gmb .anote { flex: none; margin: 4px 0 0; font-size: 10px; }
/* ピックキャッチ：遊ぶ画面を、紺の画面いっぱいに */
.gm-boy .gmb-screen.light { padding: 4px; overflow: hidden; }
.gm-boy .gmb-screen.light .gm-stage { flex: 1 1 auto; height: auto; min-height: 0; max-height: none; }
/* クイズ：文字と余白を少しつめる（答えたあとの解説まで、なるべく1画面に） */
.gm-boy .gmb-screen.light:has(.qz) { overflow-y: auto; }
.gm-boy .qz-head { font-size: 13px; }
.gm-boy .qz-prog { margin: 4px 0 10px; }
.gm-boy .qz-q { font-size: 17px; line-height: 1.45; margin-bottom: 10px; }
.gm-boy .qz-ch { gap: 7px; }
.gm-boy .qz-ch button { padding: 10px 12px; font-size: 15px; }
.gm-boy .qz-r { font-size: 18px; margin: 8px 0 2px; }
.gm-boy .qz-exp { padding: 8px 12px; margin: 6px 0 4px; }
.gm-boy .qz-exp p { font-size: 13px; line-height: 1.6; margin-top: 4px; }
.gm-boy .qz .gm-btn { margin-top: 4px; padding: 10px; }
.gm-boy .qz-fb .qz-r { margin: 6px 0 0; }
/* ボタンの段：SELECT・START を十字キーと B のあいだへ（横幅366px以上の画面だけ。せまい画面は今までどおり下の段） */
@media (min-width: 366px) {
  .gm-boy .gmb-pad { height: 122px; }
  .gm-boy .gmb-ss { left: 116px; right: 124px; top: 74px; display: grid; grid-template-columns: 60px 60px; justify-content: center; gap: 8px; }
  .gm-boy .gmb-ss button { width: 60px; }
  .gm-boy .gmb-ss button::before { left: 3px; right: 3px; }
  .gm-boy .gmb-sslbl { left: 116px; right: 124px; top: 104px; display: grid; grid-template-columns: 60px 60px; justify-content: center; gap: 8px; text-align: center; }
}
/* 答えたあと：正解と自分が選んだ答え以外は小さくして、解説の場所をあける */
.gm-boy .qz-ch.done button:not(.ok):not(.ng) { padding: 5px 12px; font-size: 13px; border-width: 2px; opacity: .55; }

/* ---------- ランキング（試作・2026-11-08） ----------
   結果の画面の「ランキングに登録」と、ランキングの画面。明るい画面（遊ぶ画面）でも紺の画面でも読めるようにする */
.rk-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; text-align: left; }
.rk-list li { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 6px; background: rgba(31, 42, 68, .08); font-weight: 800; font-size: 14px; }
.rk-no { flex: none; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: rgba(31, 42, 68, .15); font-family: "Poppins", sans-serif; font-size: 13px; }
.rk-list li.r1 .rk-no { background: var(--mustard); color: var(--navy); }
.rk-list li.r2 .rk-no { background: #d9d9d9; color: var(--navy); }
.rk-list li.r3 .rk-no { background: #e0a46b; color: var(--navy); }
.rk-nm { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rk-nm i { margin-left: 6px; padding: 1px 6px; border-radius: 999px; background: var(--red); color: #fff; font-style: normal; font-family: "Poppins", sans-serif; font-size: 10px; vertical-align: 2px; }
.rk-list b { font-family: "Poppins", sans-serif; font-size: 16px; }
.rk-list b small { margin-left: 1px; font-size: 10px; }
.rk-list li.me { background: var(--mustard); color: var(--navy); box-shadow: 0 0 10px rgba(240, 180, 41, .8); }
.rk-mine { margin-top: 10px; padding-top: 10px; border-top: 2px dashed rgba(31, 42, 68, .3); }
/* 紺の画面（ランキングの画面）のとき */
.gmb-screen:not(.light) .rk-list li { background: #1a2238; color: #fff; }
.gmb-screen:not(.light) .rk-list li.me { background: var(--mustard); color: var(--navy); }
.gmb-screen:not(.light) .rk-no { background: #2a3558; }
.gmb-screen:not(.light) .rk-mine { border-top-color: #2a3558; }
.rk-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.rk-tabs button { height: 40px; border: 2px solid #2a3558; border-radius: 8px; background: transparent; color: #fff; font-family: inherit; font-weight: 800; font-size: 14px; cursor: pointer; }
.rk-tabs button.on { background: var(--mustard); color: var(--navy); border-color: #fff8d6; }
.rk-empty { margin: 8px 0 0; font-size: 12px; color: #c9c4b8; text-align: center; }
/* 結果の画面：登録 */
.rk-reg { width: 100%; box-sizing: border-box; margin: 12px 0 6px; padding: 12px; border: 3px solid var(--navy); border-radius: 12px; background: #fff; text-align: left; color: var(--ink); }
.rk-t { margin: 0 0 6px; font-family: "Poppins", sans-serif; font-weight: 800; font-size: 14px; letter-spacing: .12em; color: var(--red); }
.rk-lbl { display: block; margin-bottom: 4px; font-size: 12px; font-weight: 800; }
.rk-row { display: flex; gap: 8px; }
.rk-row input { flex: 1; min-width: 0; height: 44px; box-sizing: border-box; padding: 0 10px; border: 3px solid var(--navy); border-radius: 10px; font: inherit; font-size: 16px; }
.rk-row .rk-send.gm-btn { flex: none; width: auto; height: 44px; margin: 0; padding: 0 16px; }
.rk-note { margin: 6px 0 0; font-size: 11px; color: var(--muted); }
.rk-done { margin: 0; text-align: center; font-family: "Dela Gothic One", sans-serif; font-size: 22px; color: var(--red); }
.rk-more { display: block; margin-top: 8px; text-align: center; font-weight: 800; color: var(--red); }
/* 縦が短い画面（iPhone SE など）：文字と余白をさらにつめて、なるべく1画面に */
@media (max-height: 740px) {
  .gm-boy .gmb .aname { font-size: 22px; }
  .gm-boy .gmb .gm-lead { font-size: 10px; margin-top: 2px; }
  .gm-boy .gmb-sel { margin-top: 4px; font-size: 10px; }
  .gm-boy .gmb-screen { padding: 8px; gap: 6px; }
  .gm-boy a.gm-pick-card.gmb-item { padding: 6px 8px; }
  .gm-boy .gmb-item .gp-ic { font-size: 20px; }
  .gm-boy .gmb-badges { padding-top: 6px; }
  .gm-boy .gmb-bh { margin-bottom: 4px; }
  .gm-boy .gm-badges { gap: 5px; }
  .gm-boy .gmb .gm-badge { padding: 4px 2px; }
  .gm-boy .gmb .gm-badge .gb-ic { width: 26px; height: 26px; font-size: 14px; margin-bottom: 2px; }
  .gm-boy .gmb .gm-badge small { display: none; }
  .gm-boy .gmb .anote { display: none; }
  .gm-boy .qz-head { font-size: 12px; }
  .gm-boy .qz-prog { margin: 3px 0 6px; }
  .gm-boy .qz-q { font-size: 15px; margin-bottom: 6px; }
  .gm-boy .qz-ch { gap: 5px; }
  .gm-boy .qz-ch button { padding: 7px 10px; font-size: 14px; }
  .gm-boy .qz-ch.done button:not(.ok):not(.ng) { padding: 3px 10px; font-size: 12px; }
  .gm-boy .qz-r { font-size: 16px; margin: 4px 0 0; }
  .gm-boy .qz-exp { padding: 6px 10px; margin: 4px 0 2px; }
  .gm-boy .qz-exp p { font-size: 12px; line-height: 1.5; }
  .gm-boy .qz .gm-btn { padding: 8px; font-size: 15px; }
}

/* ---------- ミニゲーム：ドット文字＋ネオンのドット絵アイコン（キャンバスの案C＋文字1・2026-11-08） ----------
   日本語＝DotGothic16（16pxがいちばんくっきり。小さい所も12pxまで）、英語と数字＝Press Start 2P。
   クイズの問題・答え・解説は、読みやすい今の書体のまま */
.gm-boy { font-family: "DotGothic16", sans-serif; letter-spacing: .04em; -webkit-font-smoothing: antialiased; }
.gm-boy .abar, .gm-boy .abar button { font-family: "DotGothic16", sans-serif; font-weight: 400; }
.gm-boy b, .gm-boy strong, .gm-boy h2, .gm-boy h3 { font-weight: 400; }
/* 英語・数字の見出し */
.gm-boy .aname { font-family: "Press Start 2P", monospace; font-size: 22px; line-height: 1.3; letter-spacing: 0; text-shadow: 3px 3px 0 var(--red); color: var(--mustard); }
.gm-boy .gmb-sel, .gm-boy .gmb-power, .gm-boy .gmb-bh span:first-child, .gm-boy .gmb-sslbl, .gm-boy .gmb-ab, .gm-boy .rk-t, .gm-boy .rk-no, .gm-boy .rk-nm i { font-family: "Press Start 2P", monospace; letter-spacing: 0; }
.gm-boy .gmb-sel { font-size: 10px; }
.gm-boy .gmb-power { font-size: 7px; }
.gm-boy .gmb-bh span:first-child { font-size: 10px; }
.gm-boy .gmb-sslbl { font-size: 7px; }
.gm-boy .gmb-ab { font-size: 14px; }
.gm-boy .rk-t { font-size: 11px; }
.gm-boy .rk-no { font-size: 10px; }
.gm-boy .rk-nm i { font-size: 7px; padding: 3px 5px; }
.gm-boy .gmb-item .gp-best small, .gm-boy .gmb-item .gp-best em, .gm-boy .rk-list b { font-family: "Press Start 2P", monospace; letter-spacing: 0; }
.gm-boy .gmb-item .gp-best small { font-size: 7px; margin-bottom: 4px; }
.gm-boy .gmb-item .gp-best em { font-size: 16px; }
.gm-boy .gmb-item .gp-best em.np { font-family: "DotGothic16", sans-serif; font-size: 12px; }
.gm-boy .rk-list b { font-size: 13px; }
.gm-boy .rk-list b small { font-family: "DotGothic16", sans-serif; font-size: 12px; }
/* 日本語：大きく、白く、行の間をあける */
.gm-boy .gmb .gm-lead { font-size: 16px; line-height: 1.5; color: #fff; }
.gm-boy a.gm-pick-card.gmb-item b { font-size: 16px; }
.gm-boy a.gm-pick-card.gmb-item small { font-size: 16px; line-height: 1.5; opacity: 1; }
.gm-boy .gmb-bh { font-size: 16px; }
.gm-boy .anote { font-size: 12px; line-height: 1.5; }
.gm-boy .rk-list li { font-size: 16px; }
.gm-boy .rk-empty, .gm-boy .rk-lbl, .gm-boy .rk-note { font-size: 12px; line-height: 1.5; }
.gm-boy .rk-done { font-family: "DotGothic16", sans-serif; font-size: 24px; }
.gm-boy .rk-row input { font-family: "DotGothic16", sans-serif; }
/* ネオンのドット絵アイコン：暗いタイルの上で、線が黄色く光る */
.px-ic { display: block; width: 32px; height: 32px; fill: var(--mustard); filter: drop-shadow(0 0 2px rgba(240, 180, 41, .9)) drop-shadow(0 0 5px rgba(240, 180, 41, .5)); }
.px-ic.off { fill: #4a567a; filter: none; }
.gm-boy .gmb-item .gp-ic { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 4px; background: #0b0f1c; box-shadow: inset 0 0 0 2px #2a3558; font-size: 0; }
.gm-boy .gmb .gm-badge .gb-ic, .gm-boy .gmb .gm-badge.on .gb-ic { width: 40px; height: 40px; border-radius: 4px; background: #0b0f1c; box-shadow: inset 0 0 0 2px #2a3558; font-size: 0; }
.gm-boy .gmb .gm-badge .gb-ic .px-ic { width: 28px; height: 28px; }
.gb-btn { display: block; width: 100%; padding: 0; border: 0; background: none; color: inherit; font: inherit; letter-spacing: inherit; cursor: pointer; }
.gm-boy .gmb .gm-badge b { font-size: 12px; line-height: 1.5; }
.gm-boy .gmb .gm-badge small { font-size: 12px; line-height: 1.5; color: #c9c4b8; }
.gm-boy .gmb .gm-badge.on small { color: var(--mustard); }
.gmb-binfo { margin: 10px 0 0; min-height: 3em; font-size: 12px; line-height: 1.5; color: #e8e3d6; text-align: center; }
.gm-newbadge span .px-ic { width: 36px; height: 36px; }
.gm-newbadge > span { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 4px; background: #0b0f1c; }
/* ピックキャッチ（始める前・結果）：ドット文字。読める大きさに */
.gm-boy .pk-over h2 { font-family: "DotGothic16", sans-serif; font-size: 24px; text-shadow: 2px 2px 0 var(--navy); }
.gm-boy .pk-over p { font-size: 16px; line-height: 1.5; }
.gm-boy .pk-rule li { font-size: 14px; line-height: 1.5; }
.gm-boy .gm-btn { font-family: "DotGothic16", sans-serif; font-weight: 400; }
.gm-boy .pk-over .gm-score em { font-family: "Press Start 2P", monospace; font-size: 40px; letter-spacing: 0; }
/* クイズは今の読みやすい書体のまま */
.gm-boy .qz { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; letter-spacing: normal; }
.gm-boy .qz b, .gm-boy .qz strong, .gm-boy .qz h2, .gm-boy .qz h3 { font-weight: 800; }
.gm-boy .qz .gm-btn { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 900; }
/* 前からある書き方（ゲーム名の太字・BEST の大きさ）より強く効かせる */
.gm-boy a.gm-pick-card.gmb-item b { font-family: "DotGothic16", sans-serif; font-weight: 400; }
.gm-boy a.gm-pick-card.gmb-item .gp-best small { font-family: "Press Start 2P", monospace; font-size: 7px; letter-spacing: 0; margin-bottom: 4px; }
.gm-boy a.gm-pick-card.gmb-item .gp-best small:last-child { font-family: "DotGothic16", sans-serif; font-size: 12px; margin: 4px 0 0; }
.gm-boy a.gm-pick-card.gmb-item .gp-best em { font-size: 14px; }

/* ---------- ムービーのタブ（もとは CM。2026-11-08） ---------- */
.mv-h { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin: 4px 0 4px; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 17px; color: var(--navy); }
.mv-h small { font-size: 11px; font-weight: 800; color: var(--muted); }
#tab-cm .cms { margin-bottom: 8px; }
.mvs { display: grid; gap: 10px; margin-bottom: 22px; }
a.mv { display: flex; gap: 10px; align-items: stretch; text-decoration: none; color: var(--ink); background: var(--paper); border: 3px solid var(--navy); border-radius: 10px; box-shadow: 4px 4px 0 var(--navy); overflow: hidden; }
a.mv:active { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--navy); }
.mv-th { position: relative; flex: none; width: 42%; max-width: 200px; background: #000; }
.mv-th img { display: block; width: 100%; height: 100%; aspect-ratio: 16/9; object-fit: cover; }
.mv-th .play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 34px; height: 34px; border-radius: 50%; background: rgba(200, 50, 31, .92); color: #fff; display: grid; place-items: center; font-size: 13px; }
.mv-len { position: absolute; right: 4px; bottom: 4px; background: rgba(0, 0, 0, .8); color: #fff; font-size: 10px; font-weight: 800; padding: 1px 5px; border-radius: 4px; }
.mv-tx { flex: 1; min-width: 0; padding: 7px 8px 7px 0; display: flex; flex-direction: column; gap: 2px; }
.mv-k { align-self: flex-start; background: var(--navy); color: #fff; font-size: 10px; font-weight: 800; padding: 1px 7px; border-radius: 999px; }
.mv-tx b { font-size: 13px; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.mv-tx small { margin-top: auto; font-size: 11px; color: var(--muted); }
a.mv.live { background: #fff1ef; border-color: var(--red); box-shadow: 4px 4px 0 var(--red); }
a.mv.live .mv-k { background: var(--red); }
a.mv.live .mv-k::before { content: "● "; }
a.mv-ch { display: block; text-align: right; font-size: 13px; font-weight: 800; color: var(--red); text-decoration: none; }

/* ---------- ピックキャッチ：ライブ中のステージから投げたピックをキャッチ（キャンバスの案B・2026-11-08） ----------
   ゲームの絵（キャンバス）は透明なので、そのうしろに .pk-bg（ステージと客席）を置く。
   ステージのふち（.pk-floor の下の線）は上から27%。game.js の STAGE_Y と合わせる */
.gmb-screen.light .gm-stage { background: #121829; }
.gm-stage #pkCanvas { position: relative; z-index: 1; }
.pk-bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
.pk-wall { position: absolute; left: 0; right: 0; top: 0; height: 24%; background-color: #3a1f2a; background-image: linear-gradient(#2a1520 2px, transparent 2px), linear-gradient(90deg, #2a1520 2px, transparent 2px); background-size: 24px 12px; }
.pk-lights { position: absolute; left: 0; right: 0; top: 46px; display: flex; justify-content: space-around; }
.pk-lights i { width: 10px; height: 10px; background: var(--mustard); box-shadow: 0 0 8px var(--mustard); }
.pk-lights i:nth-child(3n+2) { background: #ff4a3a; box-shadow: 0 0 8px #ff4a3a; }
.pk-lights i:nth-child(3n) { background: #4dd0e1; box-shadow: 0 0 8px #4dd0e1; }
.pk-sign { position: absolute; left: 50%; top: 64px; transform: translateX(-50%); padding: 5px 8px; background: #0b0f1c; box-shadow: 3px 0 0 var(--navy), -3px 0 0 var(--navy), 0 3px 0 var(--navy), 0 -3px 0 var(--navy); font-family: "Press Start 2P", monospace; font-size: 11px; color: #ff4a3a; text-shadow: 0 0 6px #ff4a3a; white-space: nowrap; opacity: .9; }
.pk-band { position: absolute; left: 0; right: 0; top: calc(24% - 48px); display: flex; justify-content: space-around; align-items: flex-end; height: 48px; }
.pk-band img { height: 48px; width: auto; filter: drop-shadow(0 2px 0 rgba(0, 0, 0, .4)); }
.pk-floor { position: absolute; left: 0; right: 0; top: 24%; height: 3%; background: repeating-linear-gradient(90deg, #8a5a2b 0 16px, #6e4622 16px 32px); border-top: 3px solid var(--mustard); border-bottom: 3px solid var(--navy); box-sizing: border-box; }
.pk-crowd { position: absolute; left: 0; right: 0; bottom: 0; height: 9%; display: flex; justify-content: space-around; align-items: flex-end; opacity: .9; }
.pk-crowd i { position: relative; width: 22px; height: 70%; background: #263052; }
.pk-crowd i:nth-child(even) { height: 90%; background: #2f3a60; }
.pk-crowd i::before { content: ""; position: absolute; left: 4px; top: -14px; width: 14px; height: 14px; background: inherit; } /* 頭 */
.pk-crowd i:nth-child(3n)::after { content: ""; position: absolute; right: -2px; top: -26px; width: 6px; height: 16px; background: inherit; } /* 上げた手 */
/* 照明の光の筋（うっすら）。ピックが見えにくくならないよう、とても薄くする */
.pk-bg::before, .pk-bg::after { content: ""; position: absolute; top: 46px; bottom: 0; width: 46%; opacity: .09; clip-path: polygon(46% 0, 54% 0, 100% 100%, 0 100%); }
.pk-bg::before { left: -6%; background: var(--mustard); }
.pk-bg::after { right: -6%; background: #ff4a3a; }
/* ムービー：新しい動画の NEW の印。カードのフレームの右上の角に、少しはみ出して付ける（鍔本さんの指示。2026-11-08） */
a.mv { position: relative; overflow: visible; }
a.mv .mv-th { border-radius: 7px 0 0 7px; overflow: hidden; }
.mv-new { position: absolute; right: -8px; top: -9px; z-index: 1; transform-origin: 100% 0; background: #ffd23f; color: var(--red); border: 2px solid var(--navy); font-family: "Poppins", sans-serif; font-size: 10px; font-weight: 800; line-height: 1; padding: 2px 5px; border-radius: 4px; letter-spacing: .04em; box-shadow: 1px 1px 0 var(--navy); animation: mvNew 1.2s ease-in-out infinite; }
@keyframes mvNew { 50% { transform: scale(1.1); } }
.tabbar .tab-new { position: absolute; top: 2px; right: 6px; z-index: 2; background: var(--red); color: #fff; border: 2px solid var(--navy); font-style: normal; font-family: "Poppins", sans-serif; font-size: 9px; font-weight: 800; line-height: 1; padding: 2px 4px; border-radius: 999px; pointer-events: none; }
@media (prefers-reduced-motion: reduce) { .mv-new { animation: none; } }

/* ---------- カウントダウン：パタパタめくれる板（2026-11-08） ----------
   板（b.flip）を上下の半分に分ける。数字が変わると、前の数字の上半分が手前にたおれ（f-ft）、
   新しい数字の下半分が上からおりてくる（f-fb）。全部で 0.6 秒 */
.cd-wrap .cd-nums b.flip { display: block; perspective: 220px; }
.cd-wrap .cd-nums b.flip::after { z-index: 5; }
.flip > span { position: absolute; left: 0; right: 0; height: 50%; overflow: hidden; background: #2a3558; }
.flip > span i { position: absolute; left: 0; right: 0; height: 200%; display: grid; place-items: center; font-style: normal; }
.flip .f-up, .flip .f-ft { top: 0; border-radius: 6px 6px 0 0; }
.flip .f-dn, .flip .f-fb { bottom: 0; border-radius: 0 0 6px 6px; }
.flip .f-up i, .flip .f-ft i { top: 0; }
.flip .f-dn i, .flip .f-fb i { top: -100%; }
.flip .f-up { background: linear-gradient(#2f3b62, #2a3558); }
.flip .f-ft { z-index: 3; transform-origin: 50% 100%; animation: fFold .3s ease-in forwards; backface-visibility: hidden; }
.flip .f-fb { z-index: 4; transform-origin: 50% 0; transform: rotateX(90deg); animation: fDrop .3s ease-out .3s forwards; backface-visibility: hidden; }
@keyframes fFold { to { transform: rotateX(-90deg); filter: brightness(.6); } }
@keyframes fDrop { from { transform: rotateX(90deg); filter: brightness(1.4); } to { transform: rotateX(0deg); filter: brightness(1); } }

/* ピックキャッチ：ステージの奥に TOYBEE の幕をドット絵で（2026-11-08）
   img/game/backdrop_px.png は 素材/アセット 1.png を横112マスに縮めたもの。拡大するときにぼかさず、四角いドットのまま見せる */
.pk-wall { background: #c8321f url(img/game/backdrop_px.png) 50% 35% / cover no-repeat; image-rendering: pixelated; image-rendering: crisp-edges; }
.pk-sign { display: none; } /* 幕に TOYBEE と書いてあるので、TOYROCK の看板は出さない */
.pk-lights { top: 44px; z-index: 1; }
/* ホームのミニゲームのカード：表記をゲーム画面のロゴ「TOYBEE ARCADE」と同じ見た目に（2026-11-08） */
.gm-screen .gm-logo { font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 20px; line-height: 1.05; color: var(--mustard); text-shadow: 0 0 8px rgba(240, 180, 41, .8); letter-spacing: .01em; }
/* 幕が上の点数の帯（40px）に隠れないよう、ステージを少し高くする：幕は帯の下〜28%、床は28%〜31%（game.js の STAGE_Y＝0.31） */
.pk-wall { top: 40px; height: calc(28% - 40px); background-color: #e3000f; background-size: auto 100%; background-position: 50% 0; }
.pk-lights { top: 44px; }
.pk-band { top: calc(28% - 42px); height: 42px; }
.pk-band img { height: 42px; }
.pk-floor { top: 28%; }
.pk-bg::before, .pk-bg::after { top: 28%; }
/* ホームのミニゲームのカード：バッジの下に、ピックキャッチのいまの順位（2026-11-08） */
.gm-console .gm-state span { display: block; }
.gm-console .gm-state .gm-rank { margin-top: 2px; font-size: 11px; color: #ffe9a8; }
.gm-console .gm-state .gm-rank b { font-family: "Poppins", sans-serif; font-size: 15px; color: #fff; margin: 0 1px; }
/* ステージのバンドセット（ドット絵）：両はしにアンプ、真ん中のおくにドラム、前にマイクスタンド。どれもステージの床（28%）の上に立つ */
.pk-gear { position: absolute; left: 0; right: 0; top: calc(28% - 45px); height: 45px; display: flex; justify-content: space-between; align-items: flex-end; padding: 0 2px; }
.pk-gear svg { display: block; filter: drop-shadow(0 2px 0 rgba(0, 0, 0, .45)); }
.pk-mics { position: absolute; left: 0; right: 0; top: calc(28% - 42px); height: 42px; }
.pk-mics svg { position: absolute; bottom: 0; display: block; }
.pk-mics svg:nth-child(1) { left: 20%; }
.pk-mics svg:nth-child(2) { display: none; } /* 真ん中はドラムと重なり、1本目と並んでしまうので出さない（マイクは2本） */
.pk-mics svg:nth-child(3) { left: calc(81% - 9px); }
/* ホームのミニゲームのカード：バッジをドット絵のアイコンで並べる（2026-11-08） */
.gm-console .gm-state .gm-bdgs { display: grid; grid-template-columns: repeat(3, 24px); gap: 4px; } /* 3個ずつ2段 */
.gm-console .gm-bdgs i { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 5px; background: #8f2213; border: 2px solid #121829; box-sizing: border-box; }
.gm-console .gm-bdgs i.on { background: var(--navy); border-color: var(--mustard); box-shadow: 0 0 6px rgba(240, 180, 41, .8); }
.gm-console .gm-bdgs i svg { width: 16px; height: 16px; display: block; }
.gm-console .gm-bdgs i:not(.on) svg { opacity: .55; }
/* ホームのミニゲームのカード：アイコンの上に、取ったバッジの数も出す（2026-11-08） */
.gm-console .gm-state .gm-bcount { margin-bottom: 4px; font-size: 11px; color: #fff; }
.gm-console .gm-state .gm-bcount b { font-family: "Poppins", sans-serif; font-size: 15px; color: var(--mustard); margin: 0 1px; }
/* ステージの並び：2026-03-22 のライブ写真（客席から見て）に合わせる（2026-11-08）
   左＝ベース（lego2）、真ん中の前＝ボーカル・ギター（lego4）、真ん中の奥＝ドラム（lego1・ドラムセットのうしろ）、右＝ギター（lego3） */
.pk-gear { z-index: 2; display: block; }
.pk-gear svg { position: absolute; bottom: 0; }
.pk-gear svg:nth-child(1) { left: 2px; }
.pk-gear svg:nth-child(2) { left: calc(60% - 36px); }
.pk-gear svg:nth-child(3) { right: 2px; }
.pk-band { display: block; }
.pk-band img { position: absolute; bottom: 0; z-index: 3; }
.pk-b-bass { left: calc(16% - 14px); }
.pk-b-vo { left: calc(38% - 14px); }
.pk-b-gt { left: calc(82% - 14px); }
.pk-band img.pk-b-dr { left: calc(60% - 12px); bottom: 20px; height: 32px; z-index: 1; } /* ドラムのうしろに座っている */
.pk-mics { z-index: 4; }
.pk-mics svg:nth-child(1) { left: calc(16% + 8px); }
.pk-mics svg:nth-child(2) { display: block; left: calc(38% + 8px); }
.pk-mics svg:nth-child(3) { left: calc(82% - 26px); }

/* ---------- タイテ：演奏中のバンドを強調（2026-11-08） ----------
   ・（まわりを暗くするのと「NOW」の札は、鍔本さんの指示でやめた）
   ・金・白・ピンクの光が、枠のまわりをぐるぐるまわる
   ・右下に「NOW」の札（文字や時刻を隠さないように小さく）。左の3本の棒が音に合わせるように上下する */
@property --np-a { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
.hot.playing { outline: none; animation: none; z-index: 3; }
.hot.playing .np-ring { position: absolute; inset: -5px; border-radius: 8px; padding: 3px; pointer-events: none;
  background: conic-gradient(from var(--np-a), #ffd23f, #fff6c8, #ff5c8a, #e0245e, #ffd23f);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
  animation: npSpin 2.4s linear infinite; }
.hot.playing::before { content: ""; position: absolute; inset: -5px; border-radius: 8px; pointer-events: none;
  box-shadow: 0 0 14px 4px rgba(255, 210, 63, .85), 0 0 26px 8px rgba(224, 36, 94, .45);
  animation: npGlow 1.6s ease-in-out infinite; }
@keyframes npSpin { to { --np-a: 360deg; } }
@keyframes npGlow { 50% { box-shadow: 0 0 20px 6px rgba(255, 210, 63, 1), 0 0 34px 12px rgba(224, 36, 94, .55); } }
.hot.playing .nowtag, .hot.my.playing .nowtag { top: auto; left: auto; bottom: -10px; right: -8px; z-index: 2; display: inline-flex; align-items: center; gap: 4px; white-space: nowrap;
  background: linear-gradient(90deg, #e0245e, #ff5c8a); color: #fff; border: 2px solid #fff; box-shadow: 0 2px 0 var(--navy), 0 0 10px rgba(224, 36, 94, .7);
  font-family: "Poppins", sans-serif; font-size: 9px; font-weight: 800; letter-spacing: .08em; padding: 1px 6px 1px 5px; border-radius: 999px; }
.nowtag .eq { display: inline-flex; align-items: flex-end; gap: 1.5px; height: 9px; }
.nowtag .eq i { width: 2px; height: 100%; background: #fff; border-radius: 1px; animation: npEq .8s ease-in-out infinite; transform-origin: 50% 100%; }
.nowtag .eq i:nth-child(2) { animation-delay: -.3s; }
.nowtag .eq i:nth-child(3) { animation-delay: -.55s; }
@keyframes npEq { 0%, 100% { transform: scaleY(.3); } 50% { transform: scaleY(1); } }
/* マイタイテの黄色い枠と★は、光る枠の内側にそのまま見える */
.hot.my.playing::before { border: 0; background: none; }
@media (prefers-reduced-motion: reduce) { .hot.playing .np-ring, .hot.playing::before, .nowtag .eq i { animation: none; } }
.hot.nolink { pointer-events: none; } /* 開会宣言など、紹介ページのない枠は押せない */
/* 出演者：開会宣言の MC（くまきもえさん）。写真がまだないので、マイクの印（2026-11-08） */
.artist.mc .aph { width: 100%; aspect-ratio: 4/3; display: grid; place-content: center; justify-items: center; text-align: center; background: var(--navy); color: var(--mustard); font-size: 48px; line-height: 1; }
.artist.mc .aph small { font-family: "Poppins", sans-serif; font-size: 13px; font-weight: 800; letter-spacing: .3em; margin-top: 6px; }
.ahero.mc-hero { display: grid; place-content: center; justify-items: center; gap: 6px; height: 180px; background: var(--navy); color: var(--mustard); font-size: 64px; line-height: 1; }
.ahero.mc-hero span { font-family: "Poppins", sans-serif; font-size: 16px; font-weight: 800; letter-spacing: .3em; }
.mc-title { margin: -6px 0 10px; font-weight: 800; color: var(--navy); }
/* くまきもえさんの写真（300×300 と小さいので、ページでは丸く切り抜いて紺の帯の上に出す。2026-11-08） */
.artist.mc img.mc-img { object-position: 50% 25%; }
.ahero.mc-hero.has-img { height: 220px; gap: 8px; }
.ahero.mc-hero.has-img img { width: 150px; height: 150px; border-radius: 50%; object-fit: cover; border: 4px solid var(--mustard); box-shadow: 0 0 0 4px var(--navy), 0 0 18px rgba(240, 180, 41, .6); background: #ddd; }
.ahero.mc-hero.has-img span { font-size: 14px; }

/* ---------- ピックキャッチ：魔人がテーマの背景（キャンバスの案D）＋演奏するステージ＋観客H（2026-11-08） ----------
   上から：上の帯（点数・40px）／ステージ（〜28%）／床（28〜31%）／アラビアンの夜と魔人／観客。
   中身は game.js の pkStageHTML()。元に戻すときは、この欄を消して game.js を _backup_2026-11-08_23 のものに戻す */
.gmb-screen.light .gm-stage { background: #241046; }
.pk-bg::before, .pk-bg::after { content: none; }
.pk-bg .pk-sky { position: absolute; left: 0; right: 0; top: 31%; bottom: 0; background: linear-gradient(#241046 0 33%, #2f1558 33% 66%, #3b1a63 66%); }
.pk-bg .pk-stars i { position: absolute; width: 2px; height: 2px; background: #e8e3d6; }
.pk-bg .pk-moon { position: absolute; right: 15%; top: 36%; width: 46px; height: 46px; border-radius: 50%; background: var(--mustard); box-shadow: 0 0 18px rgba(240, 180, 41, .6); }
.pk-bg .pk-moon::after { content: ""; position: absolute; left: 13px; top: -7px; width: 46px; height: 46px; border-radius: 50%; background: #241046; }
.pk-bg .pk-palace i { position: absolute; bottom: 50px; background: #160a2e; }
.pk-bg .pk-genie { position: absolute; left: 17%; top: 33%; width: 76%; max-width: 300px; opacity: .4; }
.pk-bg .pk-genie img { display: block; width: 100%; height: auto; filter: grayscale(1) sepia(1) hue-rotate(220deg) saturate(3) brightness(.7); -webkit-mask-image: linear-gradient(#000 45%, transparent 78%); mask-image: linear-gradient(#000 45%, transparent 78%); }
.pk-bg .pk-genie span { position: absolute; top: 16%; width: 8px; height: 6px; background: var(--mustard); box-shadow: 0 0 10px var(--mustard); }
.pk-bg .pk-genie span:nth-of-type(1) { left: 34%; }
.pk-bg .pk-genie span:nth-of-type(2) { left: 43.5%; }
.pk-bg .pk-smoke i { position: absolute; display: block; }
.pk-bg .pk-lamp { position: absolute; left: 4%; bottom: 82px; }
/* ステージの奥：黒い幕と、小さめの TOYBEE の幕（ドット絵）をドラムの上に吊るす */
.pk-bg .pk-wall { top: 40px; height: calc(28% - 40px); background: repeating-linear-gradient(90deg, #16111f 0 10px, #1f1830 10px 14px, #16111f 14px 22px); background-size: auto; }
.pk-bg .pk-wall::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: #2a2a2a; }
.pk-bg .pk-banner { position: absolute; left: calc(56% - 84px); top: 12px; width: 168px; height: auto; filter: brightness(.82) saturate(.9); box-shadow: 0 3px 0 rgba(0, 0, 0, .5); image-rendering: pixelated; image-rendering: crisp-edges; }
.pk-bg .pk-rope { position: absolute; top: 4px; width: 2px; height: 8px; background: #8a93ad; }
.pk-bg .pk-rope.l { left: calc(56% - 60px); }
.pk-bg .pk-rope.r { left: calc(56% + 58px); }
.pk-bg .pk-sign { display: none; }
/* ステージの上の機材と4人：どれも床（28%）の上に立つ。並びは 2026-03-22 のライブ写真（客席から見て） */
.pk-bg .pk-st { position: absolute; line-height: 0; }
.pk-bg .pk-st svg { display: block; filter: drop-shadow(0 2px 0 rgba(0, 0, 0, .45)); }
.pk-bg .pk-st-dr { left: calc(60% - 24px); top: calc(28% - 72px); }   /* ドラム（ドラムセットのうしろ） */
.pk-bg .pk-st-bamp { left: 2px; top: calc(28% - 60px); }              /* 左：ベースアンプ */
.pk-bg .pk-st-gamp { right: 2px; top: calc(28% - 55px); }             /* 右：ギターアンプ */
.pk-bg .pk-st-drums { left: calc(60% - 36px); top: calc(28% - 45px); }
.pk-bg .pk-st-ba { left: calc(18% - 24px); top: calc(28% - 64px); }   /* ベース */
.pk-bg .pk-st-vo { left: calc(39% - 24px); top: calc(28% - 64px); }   /* ボーカル・ギター */
.pk-bg .pk-st-gt { left: calc(81% - 24px); top: calc(28% - 64px); }   /* ギター */
.pk-bg .pk-st-m1 { left: calc(11% - 9px); top: calc(28% - 42px); }
.pk-bg .pk-st-m2 { left: calc(32% - 9px); top: calc(28% - 42px); }
.pk-bg .pk-st-m3 { left: calc(74% - 9px); top: calc(28% - 42px); }
.pk-bg .pk-lights { top: 44px; z-index: 0; }
/* 観客H：大勢をうすく。全員が両手を上げている（鍔本さんの指示） */
.pk-bg .pk-people { position: absolute; left: 0; right: 0; bottom: 0; height: 90px; opacity: .5; }
.pk-bg .pk-people i { position: absolute; display: block; }
.pk-bg .pk-people i::before { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 45%; border-radius: 50% 50% 0 0; background: var(--c); }   /* 肩 */
.pk-bg .pk-people i::after { content: ""; position: absolute; left: 28%; right: 28%; bottom: 34%; height: 52%; border-radius: 50%; background: var(--c); }      /* 頭 */
.pk-bg .pk-people b { position: absolute; bottom: 30%; width: 16%; height: 70%; border-radius: 4px; background: var(--c); transform-origin: 50% 100%; }       /* 上げた手 */
.pk-bg .pk-people b:nth-of-type(1) { left: 6%; transform: rotate(-18deg); }
.pk-bg .pk-people b:nth-of-type(2) { right: 6%; transform: rotate(18deg); }
.pk-bg .pk-people em { position: absolute; width: 3px; height: 12px; border-radius: 2px; }
/* 終わったとき・始まる前の画面（.pk-over）は、ゲームの絵（キャンバス）より手前に出す（2026-11-08 修正：点数の帯やピックが上に重なっていた） */
.gm-stage .pk-over { z-index: 2; }
/* むずかしさを選ぶボタン（始める前の画面）と、結果の画面の表示（2026-11-08） */
.pk-diff { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; width: 100%; margin: 2px 0 6px; }
.pk-diff button { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 4px; border: 3px solid var(--navy); border-radius: 8px; background: #fff; color: var(--navy); cursor: pointer; font-family: inherit; }
.pk-diff button b { font-family: "Press Start 2P", monospace; font-size: 10px; font-weight: 400; letter-spacing: 0; }
.pk-diff button small { font-size: 11px; line-height: 1.3; }
.pk-diff button.on { background: var(--mustard); box-shadow: 0 0 0 2px var(--red); }
.pk-diff button[data-d="hard"] b { color: var(--red); }
.pk-diff-tag { display: inline-block; margin: 0 0 6px; padding: 2px 10px; border-radius: 999px; background: var(--navy); color: var(--mustard); font-family: "Press Start 2P", monospace; font-size: 10px; letter-spacing: 0; }
.pk-over-note { margin: 0 0 6px; color: var(--red); font-size: 16px; }
.gm-stage .pk-over { background: #fbf3df; } /* 後ろのゲームの絵が透けないように */
.ahero.mc-photo { object-position: 50% 8%; } /* くまきもえさん：顔が切れないよう少し上寄りに切り取る */
/* ランキング：難易度ごと（2026-11-08） */
.rk-tabs.rk-tabs3 { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 6px; }
.gm-boy .rk-tabs button { font-family: "Press Start 2P", monospace; font-size: 10px; letter-spacing: 0; }
.rk-diff { display: inline-block; margin-left: 6px; padding: 2px 8px; border-radius: 999px; background: var(--navy); color: var(--mustard); font-size: 9px; vertical-align: 2px; }

/* ---------- タイテ：全体／マイタイテの切り替えと、マイタイテの表示（2026-11-08） ---------- */
.tt-switch { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 0 0 12px; border: 3px solid var(--navy); border-radius: 999px; overflow: hidden; box-shadow: 3px 3px 0 var(--navy); background: #fff; }
.tt-switch button { padding: 10px 4px; border: 0; background: transparent; font: 800 13px/1.2 "Poppins", sans-serif; letter-spacing: .02em; white-space: nowrap; color: var(--navy); cursor: pointer; } /* 英語の表記（鍔本さんの指示） */
.tt-switch button.on { background: var(--navy); color: var(--mustard); }
.tt-mycount { display: inline-grid; place-items: center; min-width: 18px; height: 18px; margin-left: 5px; padding: 0 4px; border-radius: 999px; background: var(--red); color: #fff; font-size: 11px; line-height: 1; vertical-align: 1px; box-sizing: border-box; }
.tt-mycount[hidden] { display: none; }
.ttimg[hidden], #ttMy[hidden], #ttHint[hidden] { display: none; }
.mytt-head { display: flex; align-items: baseline; justify-content: space-between; background: var(--navy); color: #fff; border-radius: 10px 10px 0 0; padding: 10px 14px; border: 3px solid var(--navy); }
.mytt-head b { font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 17px; color: var(--mustard); letter-spacing: .02em; white-space: nowrap; }
.mytt-head span { font-size: 12px; font-weight: 800; white-space: nowrap; }
.mytt { list-style: none; margin: 0 0 18px; padding: 14px 12px 16px; background: #f4e3b8; border: 3px solid var(--navy); border-top: 0; border-radius: 0 0 10px 10px; box-shadow: 5px 5px 0 var(--navy); display: flex; flex-direction: column; gap: 10px; }
a.mytt-slot { position: relative; display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 4px; text-decoration: none; box-shadow: 4px 4px 0 var(--navy); }
a.mytt-slot.hall { background: var(--mustard); color: var(--navy); }
a.mytt-slot.bar { background: var(--red); color: #fff; }
.mytt-time { flex: none; display: flex; flex-direction: column; font-family: "Poppins", sans-serif; line-height: 1; }
.mytt-time b { font-size: 22px; font-weight: 800; }
.mytt-time small { font-size: 11px; font-weight: 800; margin-top: 3px; opacity: .85; }
.mytt-name { flex: 1; min-width: 0; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 18px; line-height: 1.2; }
.mytt-name small { display: block; font-size: 11px; font-weight: 800; opacity: .85; }
.mytt-stage { flex: none; font-family: "Poppins", sans-serif; font-size: 10px; font-weight: 800; letter-spacing: .1em; padding: 2px 7px; border-radius: 999px; border: 2px solid currentColor; }
a.mytt-slot.past { opacity: .45; }
a.mytt-slot.playing { box-shadow: 0 0 14px 4px rgba(255, 210, 63, .85), 0 0 26px 8px rgba(224, 36, 94, .45); animation: npGlow2 1.6s ease-in-out infinite; }
a.mytt-slot.playing .np-ring { position: absolute; inset: -5px; border-radius: 8px; padding: 3px; pointer-events: none;
  background: conic-gradient(from var(--np-a), #ffd23f, #fff6c8, #ff5c8a, #e0245e, #ffd23f);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
  animation: npSpin 2.4s linear infinite; }
@keyframes npGlow2 { 50% { box-shadow: 0 0 20px 6px rgba(255, 210, 63, 1), 0 0 34px 12px rgba(224, 36, 94, .55); } }
.mytt-gap { align-self: center; font-size: 11px; font-weight: 800; color: var(--muted); padding: 0 10px; border-left: 2px dashed var(--muted); margin-left: 34px; align-self: flex-start; }
.mytt-gap.warn { color: var(--red); border-color: var(--red); }
.mytt-empty { background: var(--paper); border: 3px dashed var(--navy); border-radius: 12px; padding: 18px 16px; text-align: center; margin-bottom: 18px; }
.mytt-empty p { margin: 0 0 8px; font-size: 14px; line-height: 1.6; }
.mytt-go { margin-top: 6px; border: 3px solid var(--navy); background: var(--mustard); color: var(--navy); font: 800 14px "M PLUS Rounded 1c", sans-serif; padding: 8px 18px; border-radius: 999px; box-shadow: 3px 3px 0 var(--navy); cursor: pointer; }
@media (prefers-reduced-motion: reduce) { a.mytt-slot.playing, a.mytt-slot.playing .np-ring { animation: none; } }
/* SUPER HARD を足して難易度が4つになったので、ボタンとランキングのタブは 2×2 に並べる（2026-11-08） */
.pk-diff { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pk-diff button[data-d="super"] b { color: #7b3fc4; }
.rk-tabs.rk-tabs3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* ---------- ミニゲームの日本語を読みやすく（2026-11-08 鍔本さんの指示） ----------
   日本語：ドットの書体（DotGothic16）→ 丸ゴシック（M PLUS Rounded 1c）。大きな日本語の見出しは Dela Gothic One（太くてゲームらしい）。
   英語と数字（TOYBEE ARCADE・SELECT GAME・BEST・点数など）は Press Start 2P のまま。元に戻すときは、この欄を消す */
.gm-boy { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; letter-spacing: .02em; }
.gm-boy .abar, .gm-boy .abar button { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; }
.gm-boy b, .gm-boy strong, .gm-boy h3 { font-weight: 800; }
.gm-boy a.gm-pick-card.gmb-item b { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 17px; }
.gm-boy a.gm-pick-card.gmb-item small { font-weight: 500; font-size: 14px; line-height: 1.45; }
.gm-boy .gmb-item .gp-best em.np, .gm-boy a.gm-pick-card.gmb-item .gp-best small:last-child { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; }
.gm-boy .gmb-bh { font-weight: 800; }
.gm-boy .gmb .gm-badge b { font-weight: 800; }
.gm-boy .gmb .gm-badge small, .gm-boy .gmb-binfo, .gm-boy .anote, .gm-boy .rk-empty, .gm-boy .rk-lbl, .gm-boy .rk-note { font-weight: 500; }
.gm-boy .rk-list li { font-weight: 800; font-size: 15px; }
.gm-boy .rk-list b small { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; }
.gm-boy .rk-row input { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; }
.gm-boy .rk-done, .gm-boy .pk-over h2 { font-family: "Dela Gothic One", sans-serif; font-weight: 400; }
.gm-boy .pk-over p, .gm-boy .pk-rule li { font-weight: 500; }
.gm-boy .gm-btn { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 900; }
.gm-boy .pk-diff button small { font-weight: 700; }
.gm-boy a.gm-pick-card.gmb-item small { font-size: 13px; word-break: keep-all; overflow-wrap: anywhere; } /* 「キ／ャッチ」のような変な折り返しを減らす */

/* ---------- 下のタブ：5つ（ホーム／軌跡／タイテ（まん中・大きく）／ゲーム／もっと）と「もっと」のメニュー（2026-11-08） ---------- */
.tabbar.tabbar5 { grid-template-columns: repeat(5, 1fr); z-index: 30; }
.tabbar5 .lbl { white-space: nowrap; }
/* まん中のタイテ：紺の丸い台にレゴが立ち、まわりより一段高く */
.tabbar5 .tab-center .tc-circle { position: absolute; left: 50%; bottom: 22px; width: 64px; height: 64px; transform: translateX(-50%); border-radius: 50%; background: var(--navy); border: 3px solid var(--mustard); box-shadow: 0 0 0 3px var(--navy), 0 4px 0 rgba(31,42,68,.35); }
.tabbar5 .tab-center .tc-circle .lego { bottom: 4px; height: 54px; }
.tabbar5 .tab-center.on .tc-circle { background: var(--red); }
.tabbar5 .tab-center.on .tc-circle .lego { height: 64px; }
/* もっと：丸が3つ */
.tabbar5 .more-ic { position: absolute; left: 50%; bottom: 30px; transform: translateX(-50%); display: flex; gap: 4px; padding: 9px 9px; border-radius: 12px; background: var(--navy); }
.tabbar5 .more-ic i { width: 7px; height: 7px; border-radius: 50%; background: var(--mustard); }
.tabbar5 button.on .more-ic { background: var(--red); }
.tabbar5 button.on .more-ic i { background: #fff; }
/* 上のページ（軌跡・ゲーム・紹介ページなど）は、下のタブの上で止める（タブが見えたままになる） */
.apage { bottom: calc(66px + env(safe-area-inset-bottom)); }
#gamePage.gm-boy .gmb-pad { padding-bottom: 0; }
/* 「もっと」のメニュー：下のタブの上に、下からせり上がる */
.more-sheet { position: fixed; left: 0; right: 0; top: 0; bottom: calc(66px + env(safe-area-inset-bottom)); z-index: 29; display: flex; flex-direction: column; justify-content: flex-end; }
.more-sheet[hidden] { display: none; }
.more-bg { position: absolute; inset: 0; background: rgba(20, 24, 44, .45); }
.more-panel { position: relative; background: var(--cream); border: 3px solid var(--navy); border-bottom: 0; border-radius: 16px 16px 0 0; padding: 14px 14px 18px; display: grid; gap: 10px; animation: moreUp .22s ease-out; }
@keyframes moreUp { from { transform: translateY(40px); opacity: 0; } }
.more-item { position: relative; display: flex; align-items: center; gap: 12px; width: 100%; padding: 10px 14px; background: var(--paper); border: 3px solid var(--navy); border-radius: 12px; box-shadow: 3px 3px 0 var(--navy); text-align: left; font-family: inherit; color: var(--ink); cursor: pointer; }
.more-item img { height: 44px; width: auto; flex: none; }
.more-item img.more-tk { height: 34px; transform: rotate(-8deg); }
.more-item span { flex: 1; min-width: 0; }
.more-item b { display: block; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 17px; color: var(--navy); }
.more-item small { display: block; font-size: 12px; color: var(--muted); }
.more-item > i { font-style: normal; font-size: 22px; font-weight: 800; color: var(--navy); }
.more-item .tab-new { position: absolute; top: -8px; right: 10px; font-style: normal; background: var(--red); color: #fff; border: 2px solid var(--navy); font-family: "Poppins", sans-serif; font-size: 9px; font-weight: 800; line-height: 1; padding: 2px 5px; border-radius: 999px; }
@media (prefers-reduced-motion: reduce) { .more-panel { animation: none; } }
#gamePage.gm-boy:not([hidden]) { padding-bottom: 26px; } /* まん中のタイテの丸が、ゲーム機のボタン（SELECT・START）にかからないように */
/* 下のタブ：まん中のタイテは、レゴのかわりにタイテの形の印（黄と赤の枠が2列。2026-11-08） */
.tabbar5 .tt-ic { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: grid; grid-template-columns: 16px 16px; gap: 4px; }
.tabbar5 .tt-ic i { height: 8px; border-radius: 2px; background: var(--mustard); }
.tabbar5 .tt-ic i:nth-child(4n+2), .tabbar5 .tt-ic i:nth-child(4n+3) { background: #e8553f; }
.tabbar5 .tab-center.on .tt-ic i { background: #fff; }
.tabbar5 .tab-center.on .tt-ic i:nth-child(4n+2), .tabbar5 .tab-center.on .tt-ic i:nth-child(4n+3) { background: var(--mustard); }
/* ホームの MENU：全部のページへのボタン（3つずつ2段） */
.home-menu .hm-h { margin: 0 0 10px; font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 18px; letter-spacing: .08em; color: var(--navy); }
.hm-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.hm-grid button { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 4px 9px; background: #fff; border: 3px solid var(--navy); border-radius: 12px; box-shadow: 3px 3px 0 var(--navy); font: 800 13px/1.2 "M PLUS Rounded 1c", sans-serif; color: var(--navy); cursor: pointer; }
.hm-grid button:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--navy); }
.hm-ic { font-size: 24px; line-height: 1; }
/* ピックキャッチの見出し：アーケードのロゴ風（英語を2行で大きく、赤・黄・紺の影）（キャンバスの案1・2026-11-08） */
.gm-boy .pk-over h2.pk-logo { font-family: "Press Start 2P", monospace; font-size: 26px; line-height: 1.3; letter-spacing: 0; color: var(--red); text-shadow: 3px 3px 0 var(--mustard), 5px 5px 0 var(--navy); margin-bottom: 10px; }
.tabbar5 .tab-center .tc-circle { bottom: 34px; width: 58px; height: 58px; } /* 丸を少し上げて小さくし、下の「タイテ」の文字にかからないように（2026-11-08） */
/* ピックキャッチの結果の見出し（FINISH!／GAME OVER）も、始める前の「PICK CATCH」と同じアーケード風に（2026-11-08） */
.gm-boy .pk-over h2 { font-family: "Press Start 2P", monospace; font-size: 24px; line-height: 1.3; letter-spacing: 0; color: var(--red); text-shadow: 3px 3px 0 var(--mustard), 5px 5px 0 var(--navy); margin-bottom: 10px; }
.gm-boy .pk-over .gm-score { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; }

/* ホームの TOYBEE ARCADE のカードを見やすく（2026-11-08 鍔本さんの指示）
   上の段：左にゲーム機の画面、右にバッジの数とランキング（＋十字キー）。下の段：バッジ9個を横1列に大きく並べる */
a.gmcard.gm-console { display: grid; grid-template-columns: 138px minmax(0, 1fr) auto; grid-template-areas: "screen count go" "screen rank go" "screen pad go" "bdg bdg bdg"; column-gap: 12px; row-gap: 4px; align-items: center; padding: 12px 12px 14px; }
.gm-console .gm-side, .gm-console .gm-state { display: contents; }
.gm-console .gm-screen { grid-area: screen; width: auto; align-self: stretch; justify-content: center; padding: 10px; }
.gm-console .gm-screen .gm-logo { font-size: 19px; }
.gm-console .gm-dots { gap: 3px; flex-wrap: nowrap; }
.gm-console .gm-dots i { width: 10px; height: 10px; border-width: 1.5px; }
.gm-console .tk-go { grid-area: go; margin: 0; align-self: center; }
.gm-console .gm-pad { grid-area: pad; height: 26px; transform: scale(.76); transform-origin: left center; }
/* バッジの数 */
.gm-console .gm-state .gm-bcount { grid-area: count; margin: 0; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 13px; color: #fff; line-height: 1.2; }
.gm-console .gm-state .gm-bcount b { font-size: 24px; color: var(--mustard); text-shadow: 2px 2px 0 var(--navy); margin: 0 2px; }
/* ランキング：ドット絵のカップ＋文字 */
.gm-console .gm-state .gm-rank { grid-area: rank; margin: 0; display: flex; align-items: center; gap: 5px; flex-wrap: wrap; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 12px; color: #ffe9a8; line-height: 1.3; }
.gm-console .gm-rank .gm-cup { width: 20px; height: 20px; flex: none; display: block; filter: drop-shadow(0 0 4px rgba(240, 180, 41, .7)); }
.gm-console .gm-rank > span { display: inline; }
.gm-console .gm-rank em { font-style: normal; color: #fff; }
.gm-console .gm-rank em b { font-family: "Poppins", sans-serif; font-size: 16px; color: #fff; margin: 0 1px; }
/* バッジ9個：下の段に横1列。取ったものは紺に金のふちで光る、まだのものは暗い赤 */
.gm-console .gm-state .gm-bdgs { grid-area: bdg; display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 5px; margin-top: 8px; padding: 7px; background: rgba(0, 0, 0, .18); border-radius: 10px; }
.gm-console .gm-bdgs i { width: auto; height: auto; aspect-ratio: 1; border-radius: 6px; border-width: 2px; }
.gm-console .gm-bdgs i svg { width: 70%; height: 70%; }
.gm-console .gm-bdgs i.on svg { fill: var(--mustard); }

/* ホームの TOYBEE ARCADE のカード：もっとゲーム機らしく（2026-11-08 鍔本さんの指示）
   上＝画面（まわりのふちに POWER のランプ。画面の中にロゴ・バッジ・ランキング・PRESS START）
   下＝十字キー、SELECT／START、B・A ボタン、右下にスピーカーの穴。game.js の renderGameCard が部品を組み直す */
a.gmcard.gm-console { display: block; position: relative; padding: 12px 12px 10px; border-radius: 12px 12px 40px 12px; background: linear-gradient(160deg, #d8432e 0%, var(--red) 45%, #b02a17 100%); }
.gm-console .gm-side { display: block; }
.gm-console .tk-go { display: none; } /* カード全体を押すとゲームへ。矢印の代わりに画面の PRESS START */
.gm-console .gm-screen { display: block; width: auto; padding: 20px 14px 14px; background: #2b3043; border: 3px solid #121829; border-radius: 8px 8px 26px 8px; box-shadow: inset 0 2px 0 rgba(255, 255, 255, .08); }
.gm-console .gm-dots { display: none; } /* 取った数は画面の中のバッジで分かるので出さない */
.gm-led { position: absolute; left: 12px; top: 5px; padding-left: 11px; font: 800 7px/9px "Poppins", sans-serif; letter-spacing: .14em; color: #9aa3bf; }
.gm-led::before { content: ""; position: absolute; left: 0; top: 1px; width: 7px; height: 7px; border-radius: 50%; background: #ff4b3a; box-shadow: 0 0 6px #ff4b3a; }
/* 画面（液晶） */
.gm-lcd { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "logo count" "bdg bdg" "rank press"; gap: 9px 8px; align-items: center; padding: 10px 10px 9px; background: radial-gradient(120% 90% at 50% 40%, #243052 0%, #161e36 100%); border: 2px solid #0b1020; border-radius: 4px; }
.gm-lcd::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(0deg, rgba(255, 255, 255, .045) 0 1px, transparent 1px 3px); } /* 走査線 */
.gm-console .gm-lcd .gm-logo { grid-area: logo; font-size: 17px; line-height: 1.05; }
.gm-console .gm-lcd .gm-state { display: contents; }
.gm-console .gm-lcd .gm-state .gm-bcount { grid-area: count; align-self: start; text-align: right; font-size: 11px; color: #c9d1ea; }
.gm-console .gm-lcd .gm-state .gm-bcount b { font-size: 24px; text-shadow: 0 0 8px rgba(240, 180, 41, .8); }
.gm-console .gm-lcd .gm-state .gm-bdgs { grid-area: bdg; margin: 0; padding: 0; background: none; gap: 4px; }
.gm-console .gm-lcd .gm-bdgs i { background: #222b48; border-color: #364066; }
.gm-console .gm-lcd .gm-bdgs i.on { background: #1a2240; border-color: var(--mustard); }
.gm-console .gm-lcd .gm-state .gm-rank { grid-area: rank; font-size: 11px; }
.gm-press { grid-area: press; font: 8px/1 "Press Start 2P", monospace; color: var(--mustard); text-shadow: 0 0 6px rgba(240, 180, 41, .8); animation: gmBlink 1.1s steps(1) infinite; white-space: nowrap; }
@keyframes gmBlink { 50% { opacity: 0; } }
/* 下のボタン */
.gm-console .gm-pad { position: relative; height: 66px; margin-top: 10px; transform: none; }
.gm-console .gm-cross { left: 6px; top: 6px; width: 52px; height: 52px; background: linear-gradient(#1b2338, #1b2338) center / 17px 100% no-repeat, linear-gradient(#1b2338, #1b2338) center / 100% 17px no-repeat; filter: drop-shadow(0 3px 0 #0d1222); }
.gm-console .gm-cross::after { content: ""; position: absolute; left: 50%; top: 50%; width: 9px; height: 9px; margin: -4.5px 0 0 -4.5px; border-radius: 50%; background: #2c3655; }
.gm-console .gm-key { left: auto; right: 10px; top: 4px; width: 32px; height: 32px; border: 3px solid var(--navy); box-shadow: 0 3px 0 #121829; display: grid; place-items: center; }
.gm-console .gm-key::after { content: "A"; font: 9px/1 "Press Start 2P", monospace; color: var(--navy); }
.gm-console .gm-key-b { right: 50px; top: 22px; }
.gm-console .gm-key-b::after { content: "B"; }
.gm-ss { position: absolute; left: 50%; bottom: 6px; transform: translateX(-62%); display: flex; gap: 12px; }
.gm-ss b { display: flex; flex-direction: column; align-items: center; gap: 5px; font: 6px/1 "Press Start 2P", monospace; color: #ffd8cf; letter-spacing: .02em; }
.gm-ss i { display: block; width: 30px; height: 9px; border-radius: 6px; background: #1b2338; box-shadow: 0 2px 0 #0d1222; transform: rotate(-22deg); }
.gm-spk { position: absolute; right: 2px; bottom: -6px; display: flex; gap: 4px; transform: rotate(-28deg); }
.gm-spk i { display: block; width: 4px; height: 18px; border-radius: 2px; background: #8a1e10; box-shadow: inset 0 1px 1px rgba(0, 0, 0, .35); }
@media (prefers-reduced-motion: reduce) { .gm-press { animation: none; } }

/* ゲーム機の画面（TOYBEE ARCADE・ピックキャッチ・クイズ）を開いている間は、下のタブを消してゲームに集中できるようにする（2026-11-08 鍔本さんの指示）
   戻るときは上の「← 戻る」「ホーム」を使う。ゲーム機は画面の下まで広げる */
body:has(#gamePage.gm-boy:not([hidden])) .tabbar { display: none; }
#gamePage.gm-boy:not([hidden]) { bottom: 0; padding-bottom: env(safe-area-inset-bottom); }
/* 背の低いスマホで、TOYBEE の幕がステージの床より下にはみ出していた（幕の大きさが固定だったため）→ 奥の壁の高さに合わせて縮める（2026-11-08） */
.pk-bg .pk-wall { overflow: hidden; }
.pk-bg .pk-banner { left: 56%; top: 12px; transform: translateX(-50%); width: auto; height: calc(100% - 16px); max-width: 168px; object-fit: contain; }
/* ランプの煙：四角いマスが写真の顔にかかって「絵がずれている」ように見えたので、丸くぼかして控えめに */
.pk-bg .pk-smoke i { border-radius: 50%; filter: blur(3px); transform: scale(.8); }
/* 魔人ブースト中は、背景の魔人の写真が明るくなり、目が強く光る（ビームは game.js が canvas に描く） */
.pk-bg .pk-genie { transition: opacity .3s; }
.pk-bg.boost .pk-genie { opacity: .7; }
.pk-bg.boost .pk-genie span { background: #fff6c8; box-shadow: 0 0 14px 4px #ffd740; }
/* デジタル記念チケットのページの見出し：ホームのチケットのカードと同じ字（Noto Sans JP の太字）にして、
   上に「ADMIT ONE」、下にチケットの切り取り線（2026-11-08 鍔本さんの指示）。元はホームと同じ Dela Gothic One＋影 */
#ticketPage .aname { position: relative; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 26px; line-height: 1.2; letter-spacing: .02em; color: var(--navy); text-shadow: none; margin: 0 0 14px; padding-bottom: 10px; }
#ticketPage .aname::before { content: "ADMIT ONE"; display: block; margin-bottom: 2px; font-family: "Poppins", sans-serif; font-size: 11px; font-weight: 800; letter-spacing: .16em; color: var(--red); }
#ticketPage .aname::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; border-top: 2px dashed rgba(31, 42, 68, .35); }
/* 背景の魔人の目の光：写真の本当の目の位置（game.js の EYES.m2＝横 47/272・68/272、縦 57/330）に合わせる（2026-11-08） */
.pk-bg .pk-genie span { top: calc(57 / 330 * 100% - 3px); transform: translateX(-50%); }
.pk-bg .pk-genie span:nth-of-type(1) { left: calc(47 / 272 * 100%); }
.pk-bg .pk-genie span:nth-of-type(2) { left: calc(68 / 272 * 100%); }
/* ゲーム機の画面：iPhone でボタンを連打しても、ダブルタップのズームや文字の選択が起きないようにする（2026-11-08） */
#gamePage.gm-boy { touch-action: manipulation; }
#gamePage.gm-boy [data-gmb] { touch-action: manipulation; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; }
/* 「5周年の軌跡」のページの見出し：ホームのカードやチケットのページと同じ太い字（Noto Sans JP）にして、
   扉と同じ黄色のマーカーを下に引く（2026-11-08 鍔本さんの指示）。元は Dela Gothic One＋紺の影 */
#historyPage .hhead .aname { display: inline-block; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: 30px; line-height: 1.2; letter-spacing: .04em; color: var(--navy); text-shadow: none; margin: 2px 0 12px; padding: 0 6px; background: linear-gradient(transparent 62%, var(--mustard) 62%, var(--mustard) 92%, transparent 92%); }
#historyPage .hhead .hc-sub { color: var(--red); letter-spacing: .14em; }

/* 購入ボタンのチケット絵を「もっと」と同じ案Bの絵柄に（2026-11-08／元は img/deco/ticket.png）。絵自体が傾いているので回転は外す */
.buy .buy-ic { width: 52px; height: auto; transform: none; filter: drop-shadow(0 1px 0 rgba(0,0,0,.25)); margin: -4px 0; }

/* ホームの記念チケットの絵も「もっと」と同じ案Bの絵柄に（2026-11-08／元は img/deco/ticket.png）。絵自体が傾いているので回転は外す */
.tk-real .tk-ic { width: 66px; transform: none; filter: drop-shadow(0 1px 0 rgba(0,0,0,.2)); margin: -6px 0; }

/* 購入ボタンの「›」が字の形のせいで下・左にずれて見えていたので、線で描いた矢印に置き換えて真ん中に置く（2026-11-08） */
.buy .buy-go { position: relative; font-size: 0; color: transparent; }
.buy .buy-go::before { content: ""; position: absolute; left: 50%; top: 50%; width: 9px; height: 9px; border-top: 3px solid var(--navy); border-right: 3px solid var(--navy); border-radius: 1px; transform: translate(-65%, -50%) rotate(45deg); }

/* 出演者ページのバンド名：キャンバスの案C「ポスター風」（2026-11-08 鍔本さんが選択）。英字は Poppins の極太、日本語は Noto Sans JP、赤一色で影はうすく */
#artistPage .aname { font-family: "Poppins", "Noto Sans JP", sans-serif; font-weight: 900; font-size: 32px; line-height: 1.1; letter-spacing: -.01em; color: var(--red); text-shadow: 3px 3px 0 rgba(31, 42, 68, .18); }

/* マイタイテの見出し「MY TIME TABLE」：キャンバスの案B「ポスター風」（2026-11-08 鍔本さんが選択）。出演者名と同じ Poppins の極太・黄色 */
.mytt-head b { font-family: "Poppins", sans-serif; font-weight: 900; font-size: 19px; letter-spacing: -.005em; color: var(--mustard); }

/* 切り替えボタンをタイムテーブルの下に移したので、上にすき間をあける（2026-11-08） */
#tab-tt .tt-switch { margin: 16px 0 4px; }

/* 説明をタイムテーブルの下に移したので、表との間をあけ、ボタンとの間は詰める（2026-11-08） */
#tab-tt #ttHint { margin: 10px 0 0; }
#tab-tt #ttHint + .tt-switch { margin-top: 10px; }

/* タイテのページでは、上のタイトルロゴ（タイムテーブルの画像と同じ内容）を出さない（2026-11-08 鍔本さんの指示）。右上のボタンと重ならないよう上をあける */
body:has(#tab-tt.active) header.top.logo { display: none; }
#tab-tt.active { padding-top: 64px; }

/* 説明を切り替えボタンの下に移し、字をさらに小さく（2026-11-08 鍔本さんの指示） */
#tab-tt .tt-switch { margin: 16px 0 0; }
#tab-tt #ttHint { margin: 8px 0 0; font-size: 10px; text-align: center; }

/* 年表の日付：キャンバスの案B「ポスター風」（2026-11-08 鍔本さんが選択）。出演者名と同じ Poppins の極太。色は年ごとの色のまま */
.evdate { font-family: "Poppins", sans-serif; font-weight: 900; font-size: 16px; letter-spacing: .01em; line-height: 1.3; }
.evdate.big { font-size: 19px; }

/* 見本コメントの吹き出しが、右に寄ると幅が狭くなって3行目が切れたり、しっぽが切り落とされたりしていたのを直す（2026-11-08）
   幅は字の長さに合わせて最大 260px。長いコメントは fan.js で40字までに切る。しっぽが見えるよう、はみ出しを隠すのをやめる */
.evbubble { display: block; width: max-content; max-width: min(72%, 260px); overflow: visible; -webkit-line-clamp: unset; }
/* 黄色の吹き出しは「alt」という名前に変えた（「flip」はカウントダウンのパタパタ時計の .flip > span とぶつかって、「見本」の札が板のように引き伸ばされていた）2026-11-08 */
.evbubble.alt { background: var(--mustard); }
.evbubble.alt::after { background: var(--mustard); }

/* SELECT・START の字が、ななめのボタンの左はしに重なっていたので、少し下へ（2026-11-08 鍔本さんの指示） */
@media (min-width: 366px) { .gm-boy .gmb-sslbl { top: 112px; } }
@media (max-width: 365px) { .gm-boy .gmb-sslbl { top: 148px; } }

/* ゲームの入口のアイコン：案D「ゲームセンター」の色（ピック＝黄、クイズ＝水色、ランキング＝ピンク）＋色つきのドット絵。光る線（ネオン）はやめる（2026-11-08 鍔本さんの指示） */
.px-ic.px-full { filter: none; }
.gm-boy .gmb-item .gp-ic.gp-y { background: #f0b429; box-shadow: inset 0 0 0 2px #111522; }
.gm-boy .gmb-item .gp-ic.gp-c { background: #4dd0e1; box-shadow: inset 0 0 0 2px #111522; }
.gm-boy .gmb-item .gp-ic.gp-p { background: #ff5fa2; box-shadow: inset 0 0 0 2px #111522; }
.gm-boy .gmb-item .gp-ic .px-full { width: 30px; height: 30px; }

/* バッジの名前（案D）で「最後まで立ってた」が2行に折れたので、名前は1行のまま字の間を少し詰める（2026-11-08） */
.gm-boy .gm-badge .gb-btn > b { white-space: nowrap; letter-spacing: -.06em; }

/* バッジの絵（案B）：暗い画面だと黒いふちが見えないので、シールのように白いふちを付ける（2026-11-08） */
.gb-ic .px-full, .gm-bdgs .px-full, .gm-newbadge .px-full { filter: drop-shadow(1px 0 0 #fbf3df) drop-shadow(-1px 0 0 #fbf3df) drop-shadow(0 1px 0 #fbf3df) drop-shadow(0 -1px 0 #fbf3df); }

/* クイズの結果：クリアした問題の合計（全100問中）2026-11-09 */
.qz-clear { margin: 6px 0 4px; font-family: "Press Start 2P", monospace; font-size: 11px; color: var(--mustard); }
.qz-clear b { font-size: 16px; }
.qz-clear small { margin-left: 6px; font-family: "M PLUS Rounded 1c", sans-serif; font-size: 11px; color: #fbf3df; }

/* ムービー：新しい順・古い順の切りかえ（2026-11-09 鍔本さんの指示） */
.mv-sort { display: inline-flex; margin-left: auto; border: 2px solid var(--navy); border-radius: 999px; overflow: hidden; background: #fff; }
.mv-sort button { padding: 4px 10px; border: 0; background: transparent; font: 800 11px/1.2 "M PLUS Rounded 1c", sans-serif; color: var(--navy); cursor: pointer; }
.mv-sort button.on { background: var(--navy); color: var(--mustard); }

/* ムービー：カードの高さをそろえる（2026-11-09 鍔本さんの指示）。題は2行まで、日付とチャンネルは1行（はみ出しは「…」） */
#mvList a.mv { height: 92px; box-sizing: border-box; }
#mvList a.mv .mv-th { align-self: stretch; }
#mvList a.mv .mv-th img { height: 100%; aspect-ratio: auto; }
#mvList .mv-tx { overflow: hidden; }
#mvList .mv-tx b { -webkit-line-clamp: 2; }
#mvList .mv-tx small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* タイテ：画像から題を切り落としたので、上のロゴ（TOYROCK FESTIVAL 2026／11.15 新宿LOFT）をタイテのページでもまた出す（キャンバスの案F1・2026-11-09） */
body:has(#tab-tt.active) header.top.logo { display: block; }
#tab-tt.active { padding-top: 0; }
/* 画像の左右を切り落としたので、マイタイテの★が画像のはしで切れないように、★を枠の内側の右上に置く（2026-11-09） */
#ttImg .hot.my::after { top: -9px; right: 4px; }

/* タイテ：バンドの枠が外の紺のフレームにくっついて見えたので、画像のまわりに同じ地の色の余白をつける（2026-11-09 鍔本さんの指示） */
#ttImg { --ttpad: 10px; padding: var(--ttpad); background: #eee1bf; }

/* ゲーム名「ルラローンロンピック！」（2026-11-09）：Press Start 2P はカタカナが出ないので、ドットの日本語の字（DotGothic16）で出す */
.gm-boy .pk-over h2.pk-logo { font-family: "DotGothic16", sans-serif; font-size: 30px; line-height: 1.15; letter-spacing: .02em; }
.gm-boy .gmb-item b { word-break: keep-all; }
/* 一覧のカード：「ルラローンロンピック！」は長いので、字を少し小さく・詰めて右の BEST とくっつかないように（2026-11-09） */
.gm-boy .gmb-list > a.gm-pick-card:first-child b { font-size: 15.5px; letter-spacing: -.03em; }

/* ゲームの一覧：右のスコアの数字と単位を、ゲーム名・説明・バッジの数と同じ丸い太字（M PLUS Rounded 1c）にそろえる（2026-11-09 鍔本さんの指示）。BEST・CLEAR・TOP の英字は今のまま */
.gm-boy a.gm-pick-card.gmb-item .gp-best em { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 22px; line-height: 1; letter-spacing: 0; }
.gm-boy a.gm-pick-card.gmb-item .gp-best small:last-child { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 11px; letter-spacing: 0; margin-top: 2px; }

/* マニアッククイズのローディング画面（2026-11-09 鍔本さんの指示）：レゴの4人が横並びで椅子に座り、机の早押しボタンを順番に押す。1人が「ピンポン！」 */
.qz-load { min-height: 380px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center; cursor: pointer; }
.qzl-t { margin: 0 0 4px; font-family: "Press Start 2P", monospace; font-size: 18px; color: var(--red); text-shadow: 2px 2px 0 var(--mustard), 4px 4px 0 var(--navy); }
.qzl-stage { display: flex; justify-content: center; align-items: flex-end; gap: 6px; width: 100%; margin: 26px 0 6px; }
.qzl-p { position: relative; width: 22%; max-width: 74px; height: 128px; }
/* 椅子の背もたれ（体のうしろから少し見える） */
.qzl-p::before { content: ""; position: absolute; left: 14%; right: 14%; bottom: 40px; height: 58px; background: #2b3a78; border: 2.5px solid var(--navy); border-radius: 10px 10px 4px 4px; box-sizing: border-box; }
/* 座っている人：腰から下は机でかくれる。ボタンを押すとき前にかがむ */
.qzl-p img { position: absolute; left: 50%; bottom: 6px; width: 74%; margin-left: -37%; transform-origin: 50% 85%; animation: qzlLean 1.6s var(--d) ease-in-out infinite; }
/* 机：上の板と前の板。ボタンは机の上の手前 */
.qzl-desk { position: absolute; left: 0; right: 0; bottom: 0; height: 46px; z-index: 1; background: var(--red); border: 3px solid var(--navy); border-top-width: 6px; border-top-color: var(--mustard); border-radius: 4px 4px 2px 2px; box-shadow: 3px 3px 0 var(--navy), inset 0 -4px 0 rgba(0,0,0,.15); box-sizing: border-box; }
.qzl-desk::before { content: ""; position: absolute; left: 50%; top: -12px; width: 30px; height: 6px; margin-left: -15px; background: var(--navy); border-radius: 3px; }
.qzl-btn { position: absolute; left: 50%; top: -24px; width: 22px; height: 13px; margin-left: -11px; background: radial-gradient(circle at 35% 35%, #ff8a7a 0 3px, #e23b25 4px); border: 2.5px solid var(--navy); border-bottom: 0; border-radius: 12px 12px 0 0; animation: qzlPress 1.6s var(--d) ease-in-out infinite; }
.qzl-bub { position: absolute; top: -26px; left: 50%; transform: translateX(-50%) scale(0); z-index: 2; white-space: nowrap; background: #fff; color: var(--navy); border: 2.5px solid var(--navy); border-radius: 10px; padding: 2px 7px; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 13px; line-height: 1.2; animation: qzlBub 1.6s var(--d) ease-out infinite; }
.qzl-p.win .qzl-bub { background: var(--mustard); color: var(--red); font-size: 12px; animation: qzlWin .5s 1.1s ease-out forwards; }
.qzl-p.win .qzl-desk { animation: qzlLight .4s 1.1s steps(2) 4 forwards; }
.qzl-p.win img { animation: qzlLean 1.6s var(--d) ease-in-out 1, qzlJump .5s 1.2s ease-out 2; }
@keyframes qzlLean { 0%, 100% { transform: rotate(0) translateY(0); } 18% { transform: rotate(10deg) translateY(6px); } 32% { transform: rotate(0) translateY(0); } }
@keyframes qzlJump { 50% { transform: translateY(-10px); } }
@keyframes qzlPress { 0%, 100% { transform: translateY(0); height: 13px; } 18% { transform: translateY(4px); height: 9px; } 32% { transform: translateY(0); height: 13px; } }
@keyframes qzlBub { 0%, 10% { transform: translateX(-50%) scale(0); } 22% { transform: translateX(-50%) scale(1.1); } 45% { transform: translateX(-50%) scale(1); opacity: 1; } 60%, 100% { transform: translateX(-50%) scale(1); opacity: 0; } }
@keyframes qzlWin { from { transform: translateX(-50%) scale(0); opacity: 1; } 70% { transform: translateX(-50%) scale(1.25); } to { transform: translateX(-50%) scale(1.1); opacity: 1; } }
@keyframes qzlLight { 50% { background: var(--mustard); } to { background: var(--mustard); } }
.qzl-sub { margin: 4px 0 0; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 13px; color: var(--navy); }
.qzl-bar { width: 70%; max-width: 240px; height: 12px; margin-top: 6px; border: 3px solid var(--navy); padding: 2px; box-sizing: content-box; background: #fff; }
.qzl-bar i { display: block; height: 100%; width: 0; background: repeating-linear-gradient(90deg, var(--red) 0 10px, transparent 10px 13px); animation: qzlFill 2.1s steps(12) forwards; }
@keyframes qzlFill { to { width: 100%; } }
.qzl-msg { margin: 0; font-family: "Press Start 2P", monospace; font-size: 9px; color: var(--navy); }
.qzl-msg span { animation: qzlBlink 1s steps(2) infinite; }
@keyframes qzlBlink { 50% { opacity: 0; } }
.qzl-clear { margin: 4px 0 0; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 12px; color: var(--muted); }
.qzl-clear b { color: var(--red); font-size: 15px; }
@media (prefers-reduced-motion: reduce) { .qzl-p img, .qzl-btn, .qzl-bub, .qzl-msg span { animation: none; } .qzl-p.win .qzl-bub { transform: translateX(-50%) scale(1); } .qzl-bar i { animation-duration: .01s; } }
/* 早押しの場面の調整：人を上げて胸まで見せる。ボタンは机の上に低く置いて顔にかからないように（2026-11-09） */
.qzl-p { height: 136px; }
.qzl-p img { bottom: 26px; }
.qzl-p::before { bottom: 44px; height: 64px; }
.qzl-btn { top: -16px; width: 20px; height: 10px; margin-left: -10px; }
.qzl-desk::before { top: -8px; width: 26px; height: 4px; margin-left: -13px; }
.qzl-bub { top: -14px; }
/* 早押しの4人を、座ってボタンを押すドット絵に（2026-11-09 鍔本さんの指示。絵は tools/quiz_minifig.py で作った img/game/quiz/）。
   a＝手を机の両はしに置いている／b＝両手で真ん中のボタンを押している。b を出す時間をボタンが沈むときに合わせる */
.qzl-p img { animation: none; }
.qzl-fig { position: absolute; left: 50%; bottom: 40px; width: 78%; margin-left: -39%; aspect-ratio: 22 / 21; animation: qzlBob 1.6s var(--d) ease-in-out infinite; }
.qzl-fig img { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; left: 0; bottom: auto; image-rendering: pixelated; }
.qzl-fb { opacity: 0; animation: qzlPush 1.6s var(--d) steps(1) infinite !important; }
.qzl-fa { animation: qzlRest 1.6s var(--d) steps(1) infinite !important; }
@keyframes qzlPush { 0%, 12% { opacity: 0; } 13%, 34% { opacity: 1; } 35%, 100% { opacity: 0; } }
@keyframes qzlRest { 0%, 12% { opacity: 1; } 13%, 34% { opacity: 0; } 35%, 100% { opacity: 1; } }
@keyframes qzlBob { 0%, 100% { transform: translateY(0); } 18% { transform: translateY(3px); } 34% { transform: translateY(0); } }
.qzl-p.win .qzl-fig { animation: qzlBob 1.6s var(--d) ease-in-out 1, qzlJump .5s 1.2s ease-out 2; }
.qzl-p::before { bottom: 44px; height: 52px; left: 10%; right: 10%; }
.qzl-btn { top: -14px; }
.qzl-bub { top: 4px; }
@media (prefers-reduced-motion: reduce) { .qzl-fig, .qzl-fa, .qzl-fb { animation: none !important; } }
/* 位置の調整：両手が机の上に乗って見えるように、人を少し上げて大きく。背もたれは頭のうしろから少しのぞく高さに（2026-11-09） */
.qzl-fig { bottom: 47px; width: 90%; margin-left: -45%; }
.qzl-p::before { bottom: 46px; height: 74px; left: 6%; right: 6%; }
.qzl-btn { top: -15px; }
/* ローディングを長く（約3.6秒・2026-11-09 鍔本さんの指示）：バーは3.4秒でたまり、「ピンポン！」は2.6秒ごろに出す */
.qzl-bar i { animation-duration: 3.4s; }
.qzl-p.win .qzl-bub { animation: qzlBub 1.6s var(--d) ease-out 1, qzlWin .5s 2.6s ease-out forwards; }
.qzl-p.win .qzl-desk { animation: qzlLight .4s 2.6s steps(2) 4 forwards; }
.qzl-p.win .qzl-fig { animation: qzlBob 1.6s var(--d) ease-in-out 1, qzlJump .5s 2.7s ease-out 2; }
/* クイズの名前「トイビーマニアッククイズ」（2026-11-09）：ローディングの題はカタカナが出るドットの字に。一覧のカードは長いので字を少し小さく */
.qzl-t { font-family: "DotGothic16", sans-serif; font-size: 24px; line-height: 1.15; letter-spacing: .02em; }
.gm-boy .gmb-list > a.gm-pick-card.quiz b { font-size: 15.5px; letter-spacing: -.03em; }

/* ゲームの一覧：ゲーム2つ（ルラローンロンピック！・トイビーマニアッククイズ）は大きく目立たせ、ランキングは下に小さく分ける（2026-11-09 鍔本さんの指示） */
.gm-boy .gmb-sec { display: flex; align-items: center; gap: 8px; margin: 2px 0 0; font-family: "Press Start 2P", monospace; font-size: 9px; color: var(--mustard); }
.gm-boy .gmb-sec::after { content: ""; flex: 1; border-top: 2px dashed rgba(240, 180, 41, .45); }
.gm-boy .gmb-sec.sub { margin-top: 8px; color: #8d96b0; }
.gm-boy .gmb-sec.sub::after { border-top-color: rgba(141, 150, 176, .4); }
/* ゲームのカード：大きく、ゲームの色のふちと光 */
.gm-boy a.gm-pick-card.gmb-game { padding: 14px 10px; border-width: 3px; border-color: #f0b429; box-shadow: 0 0 0 2px #121829, 0 0 14px rgba(240, 180, 41, .35); }
.gm-boy a.gm-pick-card.gmb-game.quiz { border-color: #4dd0e1; box-shadow: 0 0 0 2px #121829, 0 0 14px rgba(77, 208, 225, .35); }
.gm-boy a.gm-pick-card.gmb-game .gp-ic { width: 54px; height: 54px; }
.gm-boy a.gm-pick-card.gmb-game .gp-ic .px-full { width: 38px; height: 38px; }
.gm-boy a.gm-pick-card.gmb-game small { font-size: 11px; }
/* ランキング：細く・控えめに（選ぶと黄色になるのは同じ） */
.gm-boy a.gm-pick-card.rank { padding: 6px 8px; border: 2px dashed #3a4466; background: rgba(255, 255, 255, .03); }
.gm-boy a.gm-pick-card.rank .gp-ic { width: 32px; height: 32px; }
.gm-boy a.gm-pick-card.rank .gp-ic .px-full { width: 22px; height: 22px; }
.gm-boy a.gm-pick-card.rank b { font-size: 13px; }
.gm-boy a.gm-pick-card.rank small { font-size: 9.5px; }
.gm-boy a.gm-pick-card.rank .gp-best em { font-size: 15px; }
.gm-boy a.gm-pick-card.rank.sel { border-style: solid; }
/* 名前が右の点数にかからないよう、ゲームのアイコンを少し小さく・右の点数の幅を固定（2026-11-09） */
.gm-boy a.gm-pick-card.gmb-game .gp-ic { width: 46px; height: 46px; }
.gm-boy a.gm-pick-card.gmb-game .gp-ic .px-full { width: 32px; height: 32px; }
.gm-boy a.gm-pick-card.gmb-game { gap: 6px; }
.gm-boy a.gm-pick-card.gmb-game .gp-best { min-width: 40px; }
.gm-boy .gmb-list > a.gm-pick-card.gmb-game b { font-size: 15px; letter-spacing: -.05em; }
/* ランキングを選んだとき（カーソル・指を置いたとき）：控えめの地の色が黄色の地を消して、紺の字が紺の地に沈んで見えなかったのを直す（2026-11-09） */
.gm-boy a.gm-pick-card.rank.sel, .gm-boy a.gm-pick-card.rank:hover, .gm-boy a.gm-pick-card.rank:focus-visible { background: var(--mustard); color: var(--navy); border: 2px solid #fff8d6; }
.gm-boy .gmb-list:hover a.gm-pick-card.rank.sel:not(:hover) { background: rgba(255, 255, 255, .03); color: #fff; border: 2px dashed #3a4466; }

/* サビ（1:40〜）でステージが明るくなる（2026-11-09 鍔本さんの指示）：はじめに白く光って、照明が明るく点滅し、スポットライトが左右にゆれる */
.pk-bg.sabi { animation: pkSabiFlash .9s ease-out 1; }
.pk-bg.sabi > *:not(.pk-genie) { filter: brightness(1.28) saturate(1.15); transition: filter .4s; }
.pk-bg.sabi .pk-lights i { animation: pkSabiLamp .5s steps(2) infinite; box-shadow: 0 0 14px 4px currentColor; }
.pk-bg.sabi .pk-lights i:nth-child(2n) { animation-delay: .25s; }
.pk-bg.sabi::before, .pk-bg.sabi::after { opacity: .32; transform-origin: 50% 0; animation: pkSabiBeam 2.4s ease-in-out infinite alternate; }
.pk-bg.sabi::after { animation-direction: alternate-reverse; }
@keyframes pkSabiFlash { 0% { box-shadow: inset 0 0 0 999px rgba(255, 250, 220, .75); } 100% { box-shadow: inset 0 0 0 999px rgba(255, 250, 220, 0); } }
@keyframes pkSabiLamp { 50% { opacity: .45; } }
@keyframes pkSabiBeam { from { transform: rotate(-9deg); } to { transform: rotate(9deg); } }
@media (prefers-reduced-motion: reduce) { .pk-bg.sabi, .pk-bg.sabi .pk-lights i, .pk-bg.sabi::before, .pk-bg.sabi::after { animation: none; } }
/* サビの照明は「ステージだけ」（2026-11-09 鍔本さんの指示）：うしろの夜空や魔人は明るくしない。
   ステージ（上の帯：40px〜床まで）だけ、上からのスポットライトと明るさで照らす */
.pk-bg.sabi { animation: none; }
.pk-bg.sabi > *:not(.pk-genie) { filter: none; }
.pk-bg.sabi::before, .pk-bg.sabi::after { opacity: .09; animation: none; z-index: auto; mix-blend-mode: normal; }
.pk-bg.sabi .pk-wall, .pk-bg.sabi .pk-st, .pk-bg.sabi .pk-floor { filter: brightness(1.55) saturate(1.2); transition: filter .3s; }
.pk-spot { position: absolute; left: 0; right: 0; top: 40px; height: calc(31% - 40px); z-index: 3; overflow: hidden; pointer-events: none; opacity: 0; mix-blend-mode: screen; }
.pk-spot i { position: absolute; top: -6px; bottom: 0; width: 34%; clip-path: polygon(44% 0, 56% 0, 100% 100%, 0 100%); background: linear-gradient(rgba(255, 244, 200, .75), rgba(255, 230, 150, .12)); transform-origin: 50% 0; }
.pk-spot i:nth-child(1) { left: -4%; background: linear-gradient(rgba(255, 120, 90, .7), rgba(255, 120, 90, .1)); }
.pk-spot i:nth-child(2) { left: 20%; }
.pk-spot i:nth-child(3) { left: 46%; }
.pk-spot i:nth-child(4) { left: 70%; background: linear-gradient(rgba(110, 220, 240, .7), rgba(110, 220, 240, .1)); }
.pk-bg.sabi .pk-spot { opacity: 1; animation: pkSpotIn .6s ease-out 1; }
.pk-bg.sabi .pk-spot i { animation: pkSpotSwing 2.2s ease-in-out infinite alternate; }
.pk-bg.sabi .pk-spot i:nth-child(2n) { animation-direction: alternate-reverse; }
@keyframes pkSpotIn { 0% { opacity: 0; filter: brightness(2.5); } 30% { opacity: 1; } 100% { filter: brightness(1); } }
@keyframes pkSpotSwing { from { transform: rotate(-12deg); } to { transform: rotate(12deg); } }
@media (prefers-reduced-motion: reduce) { .pk-bg.sabi .pk-spot, .pk-bg.sabi .pk-spot i { animation: none; } }
/* スポットライトを4人の立ち位置（左から ベース18%・ボーカル39%・ドラム60%・ギター81%）の真上に合わせる（2026-11-09 鍔本さんの指示） */
.pk-spot i { width: 26%; }
.pk-spot i:nth-child(1) { left: 5%; }
.pk-spot i:nth-child(2) { left: 26%; }
.pk-spot i:nth-child(3) { left: 47%; }
.pk-spot i:nth-child(4) { left: 68%; }
@keyframes pkSpotSwing { from { transform: rotate(-6deg); } to { transform: rotate(6deg); } }

/* 結果画面の点数の数字も、一覧のスコアと同じ丸い太字（M PLUS Rounded 1c）に（2026-11-09 鍔本さんの指示）。クイズの結果もそろえる */
.gm-boy .pk-over .gm-score em, .gm-boy .qz-end .gm-score em { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 56px; line-height: 1; letter-spacing: 0; }
/* 結果画面のピックの数（○個・○回）の数字も、点数と同じ丸い太字に（2026-11-09 鍔本さんの指示） */
.gm-boy .pk-over .pk-count b { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 20px; letter-spacing: 0; }

/* タイトル「ルラローンロンピック！」：キャンバスの案N（Kaisei Decol・飾りのある古い字）で1行に。色は今までの赤＋黄・紺の影（2026-11-09 鍔本さんの指示） */
.gm-boy .pk-over h2.pk-logo { font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 27px; line-height: 1.25; letter-spacing: 0; white-space: nowrap; color: var(--red); text-shadow: 2px 2px 0 var(--mustard), 4px 4px 0 var(--navy); }
/* タイトルの影：キャンバスの案B「影なし」（2026-11-09 鍔本さんが選択）。赤一色で、字の飾りをすっきり見せる */
.gm-boy .pk-over h2.pk-logo { text-shadow: none; }

/* ルラローンロンピック！の始める前の画面：タイトル（Kaisei Decol・赤一色）に合わせて、下の文字の大きさと字を作り直す（2026-11-09 鍔本さんの指示）
   見出し＝Kaisei Decol の赤、本文＝丸い太字（M PLUS Rounded）の紺。点数の表は白いカードにまとめる */
.gm-boy .pk-over .pk-lead { margin: 2px 0 12px; font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 14px; line-height: 1.55; color: var(--navy); text-align: center; }
.gm-boy .pk-over .pk-rule2 { list-style: none; width: 100%; max-width: 290px; margin: 0 auto 10px; padding: 6px 12px; background: #fff; border: 2px solid var(--navy); border-radius: 12px; box-sizing: border-box; text-align: left; }
.gm-boy .pk-over .pk-rule2 li { display: flex; align-items: center; gap: 8px; padding: 5px 0; font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 13.5px; color: var(--navy); line-height: 1.3; }
.gm-boy .pk-over .pk-rule2 li + li { border-top: 1px dashed #d8ccb0; }
.gm-boy .pk-over .pk-rule2 li span { flex: 1; }
.gm-boy .pk-over .pk-rule2 li b { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 15px; color: var(--red); white-space: nowrap; }
.gm-boy .pk-over .pk-rule2 li b.m { color: var(--navy); }
.gm-boy .pk-over .pk-rule2 li b small { font-size: 10px; color: var(--muted); margin-left: 2px; }
.gm-boy .pk-over .pk-rule2 li.pk-genie { margin: 6px -6px 2px; padding: 8px 10px; border: 0; border-radius: 10px; font-size: 12.5px; line-height: 1.55; font-weight: 800; }
.gm-boy .pk-over .pk-rule2 li.pk-genie b { font-size: inherit; }
/* 見出し：タイトルと同じ Kaisei Decol の赤。両わきに細い線 */
.gm-boy .pk-over .pk-sel-t { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 14px 0 8px; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 17px; color: var(--red); }
.gm-boy .pk-over .pk-sel-t::before, .gm-boy .pk-over .pk-sel-t::after { content: ""; width: 34px; border-top: 2px solid var(--red); opacity: .5; }
/* むずかしさのボタン：名前は前のドット文字のまま（2026-11-09 鍔本さんの指示で Kaisei Decol から戻した）、説明は丸い太字 */
.gm-boy .pk-over .pk-diff small { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 11px; line-height: 1.35; }
/* スタート：タイトルと同じ字で大きく */
.gm-boy .pk-over #pkStart { font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 21px; letter-spacing: .1em; }
/* 魔人ブーストの説明で「倍」だけ次の行に落ちないよう、少しだけ小さく・字間を詰める（2026-11-09） */
.gm-boy .pk-over .pk-rule2 li.pk-genie { font-size: 12px; letter-spacing: -.01em; }

/* 始める前の画面：下に続きがあると分かる印（2026-11-09 鍔本さんの指示）。画面の下にくっついて、下がうすく消えていき、「下にスクロール」の札がはねる */
.gm-boy .pk-over .pk-more { position: sticky; bottom: -1px; margin: 0 -16px -16px; height: 64px; display: flex; align-items: flex-end; justify-content: center; padding-bottom: 8px; pointer-events: none; background: linear-gradient(rgba(251, 243, 223, 0), rgba(251, 243, 223, .96) 70%); transition: opacity .25s; z-index: 2; }
.gm-boy .pk-over .pk-more span { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 999px; background: var(--navy); color: #fff; font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 12px; box-shadow: 0 2px 0 rgba(0, 0, 0, .2); animation: pkMore 1.1s ease-in-out infinite; }
.gm-boy .pk-over .pk-more span::after { content: ""; width: 7px; height: 7px; border-right: 2.5px solid var(--mustard); border-bottom: 2.5px solid var(--mustard); transform: rotate(45deg) translateY(-2px); }
.gm-boy .pk-over .pk-more.off { opacity: 0; }
@keyframes pkMore { 50% { transform: translateY(4px); } }
@media (prefers-reduced-motion: reduce) { .gm-boy .pk-over .pk-more span { animation: none; } }
/* ホームの ARCADE カード：SELECT・START の字が、ななめのボタンの下はしに重なっていたので、ボタンと字の間をあける（2026-11-09 鍔本さんの指示） */
.gm-ss b { gap: 11px; }
.gm-ss i { margin-top: 4px; }

/* タイテのタブの丸の中：鍔本さんにもらったイラスト（img/tt_mark.webp・2026-11-09） */
.tabbar5 .tt-mark { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 54%; height: auto; display: block; filter: drop-shadow(0 1px 0 rgba(0, 0, 0, .25)); }
/* タイテを選んでいるとき：丸が赤だとイラスト（オレンジ〜赤）が溶けるので、丸の中をクリーム色に・ふちを赤に（2026-11-09） */
.tabbar5 .tab-center.on .tc-circle { background: #fbf3df; border-color: var(--red); }
/* タイテの丸：イラストを丸いっぱいに。うしろはイラストの黄〜オレンジに合わせた、やわらかいクリーム〜うすい黄の色（2026-11-09 鍔本さんの指示）。
   選んでいるときは、ふちを赤にして分かるようにする */
.tabbar5 .tab-center .tc-circle { background: radial-gradient(circle at 50% 38%, #fffaf0 0%, #fff0c8 55%, #ffd98a 100%); }
.tabbar5 .tab-center.on .tc-circle { background: radial-gradient(circle at 50% 38%, #fffaf0 0%, #fff0c8 55%, #ffd98a 100%); border-color: var(--red); }
.tabbar5 .tt-mark { width: auto; height: 80%; top: 52%; filter: drop-shadow(0 1px 1px rgba(122, 40, 10, .35)); }
.tabbar5 .tt-mark { height: 90%; top: 51%; }

/* タイテの丸のイラスト：押すと横向きに1回転（2026-11-09 鍔本さんの指示） */
.tabbar5 .tt-mark.spin { animation: ttSpin .7s cubic-bezier(.3, .7, .3, 1) 1; }
@keyframes ttSpin { 0% { transform: translate(-50%, -50%) perspective(200px) rotateY(0) scale(1); } 50% { transform: translate(-50%, -50%) perspective(200px) rotateY(200deg) scale(1.12); } 100% { transform: translate(-50%, -50%) perspective(200px) rotateY(360deg) scale(1); } }
@media (prefers-reduced-motion: reduce) { .tabbar5 .tt-mark.spin { animation: none; } }
/* 回転は時計回り（画面の上で右回り）に（2026-11-09 鍔本さんの指示） */
@keyframes ttSpin { 0% { transform: translate(-50%, -50%) rotate(0) scale(1); } 50% { transform: translate(-50%, -50%) rotate(200deg) scale(1.12); } 100% { transform: translate(-50%, -50%) rotate(360deg) scale(1); } }
/* 回転は3回転（1080°）。はじめは速く、だんだんゆっくりになって止まる（2026-11-09 鍔本さんの指示） */
/* 回る角度と大きさを別々に動かして、速い→遅いがなめらかにつながるようにする */
.tabbar5 .tt-mark.spin { animation: ttRot 1.8s cubic-bezier(.12, .8, .25, 1) 1, ttPop 1.8s ease-out 1; }
@keyframes ttRot { from { rotate: 0deg; } to { rotate: 1080deg; } }
@keyframes ttPop { 0% { scale: 1; } 15% { scale: 1.12; } 100% { scale: 1; } }
/* 回転の軸をイラストの真ん中に（2026-11-09）：位置合わせの transform（translate）と回転がまざって、軸が真ん中からずれていた。
   位置合わせは translate だけで行い、回転と大きさはそのあとにかける */
.tabbar5 .tt-mark { transform: none; translate: -50% -50%; transform-origin: 50% 50%; }
/* 丸の中で回る（2026-11-09 鍔本さんの指示）：はみ出す角は丸の内側で切り、回るときに大きくなるのはやめる */
.tabbar5 .tab-center .tc-circle { overflow: hidden; }
.tabbar5 .tt-mark.spin { animation: ttRot 1.8s cubic-bezier(.12, .8, .25, 1) 1; }
/* 5回転・約2.2秒（2026-11-09 鍔本さんが選択）。速い→遅いで止まる */
.tabbar5 .tt-mark.spin { animation: ttRot5 2.2s cubic-bezier(.12, .8, .25, 1) 1; }
@keyframes ttRot5 { from { rotate: 0deg; } to { rotate: 1800deg; } }
/* 回る時間を約4秒に（2026-11-09 鍔本さんの指示）。5回転のまま、最後をよりゆっくり長く見せる */
.tabbar5 .tt-mark.spin { animation: ttRot5 4s cubic-bezier(.1, .75, .2, 1) 1; }
/* 回る時間は約3秒に（2026-11-09 鍔本さんの指示）。5回転のまま */
.tabbar5 .tt-mark.spin { animation: ttRot5 3s cubic-bezier(.1, .75, .2, 1) 1; }
/* 3秒に合わせた回り方（2026-11-09・回転数はおまかせの指示）：5回転のまま、回り始めをすこしおだやかにして、形が見えるまま速い→遅いで止まる */
.tabbar5 .tt-mark.spin { animation: ttRot5 3s cubic-bezier(.22, .62, .26, 1) 1; }

/* トイビーマニアッククイズの結果画面：ルラローンロンピック！の結果画面と字をそろえる（2026-11-09 鍔本さんの指示）
   見出しは「RESULT」をドット文字の赤＋黄・紺の影（FINISH! と同じ）、数字はすべて丸い太字、文は丸い太字の紺 */
.gm-boy .qz-end h2 { font-family: "Press Start 2P", monospace; font-weight: 400; font-size: 24px; line-height: 1.3; letter-spacing: 0; color: var(--red); text-shadow: 3px 3px 0 var(--mustard), 5px 5px 0 var(--navy); margin: 4px 0 10px; }
.gm-boy .qz-end .gm-sub { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 14px; color: var(--navy); }
.gm-boy .qz-end .qz-clear { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 13px; color: var(--muted); }
.gm-boy .qz-end .qz-clear b { font-size: 20px; color: var(--red); }
.gm-boy .qz-end .qz-clear small { font-family: inherit; color: var(--muted); }
.gm-boy .qz-end h3 { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 14px; color: var(--navy); }
/* タイテのタブの文字は英語「TIME TABLE」（2026-11-09 鍔本さんの指示）。ほかのタブの文字と同じ高さにおさまるよう、Poppins の太字で少し小さく */
.tabbar5 .lbl.lbl-en { font-family: "Poppins", sans-serif; font-weight: 800; font-size: 10px; letter-spacing: .02em; }
/* 「もっと」のメニュー：下のタブのレゴや真ん中の丸（タブの上に約32pxはみ出す）にかからないよう、いちばん下に余白を足す（2026-11-09 鍔本さんの指示） */
.more-panel { padding-bottom: 50px; }

/* カウントダウン：開催中は「NOW PLAYING」と演奏中のバンド名（ステージの札・時間つき）。終わったあとの文は狭い画面でも2行におさめる（2026-11-09 鍔本さんの指示） */
.cd-wrap .cd-msg { font-size: clamp(17px, 5.6vw, 24px); }
.cd-wrap #cdNums[data-mode="now"] { display: grid; gap: 8px; justify-items: center; margin-top: 6px; }
.cd-now { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.cd-now b { font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: clamp(18px, 6vw, 24px); line-height: 1.2; color: var(--mustard); text-align: center; }
.cd-now small { font-family: "Poppins", sans-serif; font-weight: 800; font-size: 12px; color: #fbf3df; letter-spacing: .04em; }
.cd-st { font-family: "Poppins", sans-serif; font-weight: 800; font-size: 10px; letter-spacing: .08em; padding: 2px 9px; border-radius: 999px; background: var(--mustard); color: var(--navy); }
.cd-st.bar { background: var(--red); color: #fff; }
.cd-wrap #cdNums[data-mode="now"] { grid-template-columns: 1fr; width: 100%; }
.cd-wrap #cdNums[data-mode="now"] .cd-now { width: 100%; max-width: none; height: auto; background: none; box-shadow: none; padding: 0; }
/* 開催中のバンド名には、パタパタ板の設定（幅62px・まん中の線など）をかけない */
.cd-wrap .cd-nums .cd-now b { width: auto; height: auto; display: block; background: none; border-radius: 0; overflow: visible; font-family: "Noto Sans JP", sans-serif; font-weight: 900; font-size: clamp(18px, 6vw, 24px); line-height: 1.25; color: var(--mustard); }
.cd-wrap .cd-nums .cd-now b::after { content: none; }
/* 開催中のバンド名：タイムテーブルの画像から切り出したロゴ（2026-11-09 鍔本さんの指示） */
.cd-logo { display: block; background-image: url(img/timetable_v03.jpg); background-repeat: no-repeat; border-radius: 6px; border: 2px solid #121829; box-shadow: 0 0 0 2px rgba(240, 180, 41, .5); }
/* ロゴは背景を抜いた透明な絵に（2026-11-09 鍔本さんの指示）。枠やふちはなし */
.cd-logo { background: none; border: 0; box-shadow: none; border-radius: 0; height: 50px; width: auto; max-width: 100%; display: block; }
/* 開催中のロゴを大きく（2026-11-09 鍔本さんの指示）：高さ50px → 76px。横に長いロゴはカードの幅の8割まで */
.cd-wrap .cd-logo { height: 76px; width: auto; max-width: 82%; object-fit: contain; margin: 2px 0; }
/* ロゴは余白を切り落としたので、高さは最大64px・幅はカードの8割まで。真ん中にそろえる（2026-11-09 鍔本さんの指示） */
.cd-wrap .cd-logo { height: auto; width: auto; max-height: 64px; max-width: 82%; margin: 4px auto; }
.cd-wrap .cd-now { align-items: center; text-align: center; }
/* ロゴの大きさは app.js で1つずつ決める（見た目の面積をそろえる）。ここでは上限をかけない */
.cd-wrap .cd-logo { max-height: none; max-width: none; }
/* ステージの札と時間を1行に。ロゴは下の電球の近くまで大きく（2026-11-09） */
.cd-meta { display: flex; align-items: center; justify-content: center; gap: 8px; }
.cd-wrap .cd-logo { margin: 6px auto 0; }
.cd-wrap #cdNums[data-mode="now"] { margin-top: 4px; margin-bottom: -6px; }
/* 時間はロゴの下に（2026-11-09 鍔本さんの指示） */
.cd-wrap .cd-now small { margin-top: 4px; }
/* 時間とレゴの間を少しあける（レゴに重ならないように・2026-11-09 鍔本さんの指示） */
.cd-wrap .cd-now small { margin-bottom: 8px; }

/* 一覧の行の左の札（HALL・BAR・終了・NOW）の幅をそろえて、バンド名の左はしが縦にそろうようにする（2026-11-09 鍔本さんの指示） */
.row .badge { flex: none; width: 48px; box-sizing: border-box; padding-left: 0; padding-right: 0; text-align: center; justify-content: center; }

/* 魔人のポップコーンの待ち時間（2026-11-09・見た目だけ）：遊園地の待ち時間の札のような、電球のふちの紺の看板 */
.card.wait-card { padding: 0; background: none; border: 0; box-shadow: none; }
.wt-sign { position: relative; background: linear-gradient(#2a1650, #1f2a44); border: 4px solid var(--mustard); border-radius: 14px; box-shadow: 4px 4px 0 var(--navy), 0 0 0 3px var(--navy) inset; padding: 6px 14px; color: #fbf3df; text-align: center; overflow: hidden; }
.wt-bulbs { display: flex; justify-content: space-between; padding: 2px 4px; }
.wt-bulbs i { width: 7px; height: 7px; border-radius: 50%; background: #ffe27a; box-shadow: 0 0 6px #ffd23f; animation: wtBulb 1.4s steps(2) infinite; }
.wt-bulbs i:nth-child(2n) { animation-delay: .7s; }
@keyframes wtBulb { 50% { opacity: .35; box-shadow: none; } }
.wt-head { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 4px; }
.wt-head b { font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 20px; color: var(--mustard); letter-spacing: .02em; }
.wt-lamp { line-height: 0; }
.wt-body { display: flex; align-items: center; justify-content: center; gap: 14px; margin: 6px 0 4px; }
.wt-label { font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 14px; background: var(--red); color: #fff; border-radius: 999px; padding: 3px 12px; }
.wt-time { display: inline-flex; align-items: baseline; gap: 4px; background: #fbf3df; color: var(--navy); border: 3px solid var(--navy); border-radius: 10px; padding: 0 14px; box-shadow: 3px 3px 0 #121829; }
.wt-num { font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 44px; line-height: 1.15; }
.wt-time small { font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 16px; }
.wt-sign.mid .wt-time { background: #ffe27a; }
.wt-sign.hi .wt-time { background: #ff8a7a; }
.wt-foot { font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 11px; color: #c9cfdf; margin-bottom: 2px; }
.wt-prep { display: inline-block; margin-right: 6px; padding: 1px 8px; border-radius: 999px; background: #3a4466; color: #fbf3df; }
@media (prefers-reduced-motion: reduce) { .wt-bulbs i { animation: none; } }

/* ルラローンロンピック！：効果音のオン・オフ（2026-11-09） */
.gm-boy .pk-over .pk-sfx { display: block; margin: 12px auto 4px; padding: 6px 16px; border: 2px solid var(--navy); border-radius: 999px; background: #fff; font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 13px; color: var(--navy); cursor: pointer; }
.gm-boy .pk-over .pk-sfx b { display: inline-block; min-width: 32px; margin-left: 4px; padding: 1px 8px; border-radius: 999px; background: var(--red); color: #fff; font-family: "Press Start 2P", monospace; font-weight: 400; font-size: 9px; }
.gm-boy .pk-over .pk-sfx.off b { background: #8d96b0; }

/* ルラローンロンピック！クリア：魔人をたおす演出（2026-11-09 鍔本さんの指示） */
.pk-bg.defeat .pk-genie { animation: genieDefeat 2.2s ease-in forwards; }
@keyframes genieDefeat {
  0% { transform: translateX(0); opacity: .45; filter: none; }
  6%, 18%, 30% { transform: translateX(-7px) rotate(-2deg); opacity: .9; filter: brightness(2.2); }
  12%, 24%, 36% { transform: translateX(7px) rotate(2deg); opacity: .9; filter: brightness(1.2); }
  45% { transform: scale(1.12); opacity: 1; filter: brightness(4) saturate(0); }
  100% { transform: scale(.15) rotate(40deg); opacity: 0; filter: brightness(3) blur(6px); }
}
.pk-bg.defeat .pk-genie span { opacity: 0; }
.pk-defeat { position: absolute; inset: 0; z-index: 6; pointer-events: none; overflow: hidden; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.pkd-flash { position: absolute; inset: 0; background: #fff8d6; opacity: 0; animation: pkdFlash 2.6s ease-out forwards; }
@keyframes pkdFlash { 0%, 38% { opacity: 0; } 44% { opacity: .9; } 70% { opacity: .15; } 100% { opacity: .1; } }
.pkd-rays { position: absolute; left: 50%; top: 45%; width: 620px; height: 620px; margin: -310px 0 0 -310px; background: repeating-conic-gradient(rgba(255, 215, 64, .35) 0 10deg, transparent 10deg 20deg); border-radius: 50%; opacity: 0; animation: pkdRays 2.6s ease-out forwards; }
@keyframes pkdRays { 0%, 44% { opacity: 0; transform: scale(.3) rotate(0); } 60% { opacity: 1; } 100% { opacity: .8; transform: scale(1) rotate(60deg); } }
.pk-defeat > i { position: absolute; left: 50%; top: 45%; width: 10px; height: 10px; background: #ffd740; clip-path: polygon(50% 0, 62% 38%, 100% 50%, 62% 62%, 50% 100%, 38% 62%, 0 50%, 38% 38%); opacity: 0; animation: pkdStar 1.6s .95s ease-out forwards; }
.pk-defeat > i:nth-of-type(3n) { background: #c77dff; } .pk-defeat > i:nth-of-type(3n+1) { background: #fff; }
@keyframes pkdStar { 0% { opacity: 1; transform: translate(0, 0) scale(.6); } 100% { opacity: 0; transform: translate(var(--dx), var(--dy)) scale(1.6) rotate(180deg); } }
.pk-defeat > i:nth-of-type(1) { --dx: -140px; --dy: -120px; } .pk-defeat > i:nth-of-type(2) { --dx: 140px; --dy: -110px; } .pk-defeat > i:nth-of-type(3) { --dx: -160px; --dy: 10px; } .pk-defeat > i:nth-of-type(4) { --dx: 160px; --dy: 20px; }
.pk-defeat > i:nth-of-type(5) { --dx: -100px; --dy: 140px; } .pk-defeat > i:nth-of-type(6) { --dx: 110px; --dy: 150px; } .pk-defeat > i:nth-of-type(7) { --dx: 0; --dy: -170px; } .pk-defeat > i:nth-of-type(8) { --dx: 0; --dy: 170px; }
.pk-defeat > i:nth-of-type(9) { --dx: -70px; --dy: -160px; } .pk-defeat > i:nth-of-type(10) { --dx: 80px; --dy: -150px; } .pk-defeat > i:nth-of-type(11) { --dx: -180px; --dy: -50px; } .pk-defeat > i:nth-of-type(12) { --dx: 180px; --dy: -40px; }
.pk-defeat > i:nth-of-type(13) { --dx: -60px; --dy: 170px; } .pk-defeat > i:nth-of-type(14) { --dx: 60px; --dy: 160px; }
.pkd-t { position: relative; margin: 0; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 32px; color: var(--mustard); -webkit-text-stroke: 6px var(--navy); paint-order: stroke fill; white-space: nowrap; opacity: 0; animation: pkdText 2.6s 1s cubic-bezier(.2, 1.6, .4, 1) forwards; }
.pkd-s { position: relative; margin: 6px 0 0; font-family: "Press Start 2P", monospace; font-size: 12px; color: #fff; text-shadow: 2px 2px 0 var(--red); opacity: 0; animation: pkdText 2.6s 1.25s ease-out forwards; }
@keyframes pkdText { 0% { opacity: 0; transform: scale(.3); } 12% { opacity: 1; transform: scale(1.12); } 22%, 100% { opacity: 1; transform: scale(1); } }
@media (prefers-reduced-motion: reduce) { .pk-bg.defeat .pk-genie, .pkd-flash, .pkd-rays, .pk-defeat > i { animation: none; } .pkd-t, .pkd-s { animation: none; opacity: 1; } }

/* クリア：魔人がけむりと一緒にランプへ吸いこまれる（キャンバスの案C＋けむり・2026-11-09） */
.pk-bg.suck .pk-genie { transform-origin: 50% 50%; animation: genieSuck 2.1s cubic-bezier(.55, 0, .8, .4) forwards; }
.pk-bg.suck .pk-genie span { opacity: 0; }
@keyframes genieSuck {
  0% { transform: none; opacity: .45; }
  12% { transform: rotate(-6deg) scaleX(1.06); opacity: .8; filter: brightness(1.6); }
  70% { opacity: .7; }
  100% { transform: translate(var(--tx), var(--ty)) rotate(-900deg) scale(.02); opacity: 0; filter: brightness(2) blur(3px); }
}
.pk-bg.suck .pk-lamp { animation: lampGulp 2.8s ease-out forwards; transform-origin: 70% 60%; }
@keyframes lampGulp { 0%, 52% { transform: none; filter: none; } 58% { transform: scale(1.35) rotate(-10deg); filter: brightness(2.2) drop-shadow(0 0 10px #ffd740); } 66% { transform: scale(.95) rotate(6deg); } 74%, 100% { transform: none; filter: brightness(1.3) drop-shadow(0 0 6px #ffd740); } }
.pk-suck { position: absolute; inset: 0; z-index: 6; pointer-events: none; overflow: hidden; }
.pk-suck > i { position: absolute; left: 0; top: 0; width: var(--sz); height: var(--sz); margin: calc(var(--sz) / -2) 0 0 calc(var(--sz) / -2); border-radius: 50%; background: radial-gradient(#e6d8ff, #9b7bff 55%, rgba(123, 63, 196, 0) 72%); filter: blur(1.5px); opacity: 0; animation: puffSuck 1.7s var(--d) cubic-bezier(.5, 0, .9, .5) forwards; }
@keyframes puffSuck {
  0% { opacity: 0; transform: translate(calc(var(--gx) + var(--ox)), calc(var(--gy) + var(--oy))) scale(.4); }
  15% { opacity: .9; transform: translate(calc(var(--gx) + var(--ox)), calc(var(--gy) + var(--oy))) scale(1.2); }
  55% { opacity: .85; transform: translate(calc((var(--gx) + var(--lx)) / 2 + var(--mx)), calc((var(--gy) + var(--ly)) / 2 + var(--my))) scale(.9); }
  100% { opacity: 0; transform: translate(var(--lx), var(--ly)) scale(.1); }
}
.pks-glow { position: absolute; left: var(--lx); top: var(--ly); width: 180px; height: 180px; margin: -90px 0 0 -90px; border-radius: 50%; background: radial-gradient(#fff6b0, rgba(240, 180, 41, .55) 40%, transparent 70%); opacity: 0; animation: pksGlow 2.8s ease-out forwards; }
@keyframes pksGlow { 0%, 52% { opacity: 0; transform: scale(.3); } 60% { opacity: 1; transform: scale(1); } 100% { opacity: 0; transform: scale(1.5); } }
.pk-suck > em { position: absolute; left: var(--lx); top: var(--ly); width: 9px; height: 9px; margin: -4px 0 0 -4px; background: #ffd740; clip-path: polygon(50% 0, 62% 38%, 100% 50%, 62% 62%, 50% 100%, 38% 62%, 0 50%, 38% 38%); opacity: 0; animation: pksStar 1s 1.6s ease-out forwards; }
.pk-suck > em:nth-of-type(1) { --sx: -50px; --sy: -60px; } .pk-suck > em:nth-of-type(2) { --sx: 50px; --sy: -60px; } .pk-suck > em:nth-of-type(3) { --sx: -70px; --sy: 0; } .pk-suck > em:nth-of-type(4) { --sx: 70px; --sy: 0; }
.pk-suck > em:nth-of-type(5) { --sx: -40px; --sy: 55px; } .pk-suck > em:nth-of-type(6) { --sx: 40px; --sy: 55px; } .pk-suck > em:nth-of-type(7) { --sx: 0; --sy: -80px; background: #fff; } .pk-suck > em:nth-of-type(8) { --sx: 0; --sy: 70px; background: #c77dff; }
@keyframes pksStar { 0% { opacity: 1; transform: translate(0, 0) scale(.5); } 100% { opacity: 0; transform: translate(var(--sx), var(--sy)) scale(1.5) rotate(180deg); } }
@media (prefers-reduced-motion: reduce) { .pk-bg.suck .pk-genie, .pk-bg.suck .pk-lamp, .pk-suck > i, .pks-glow, .pk-suck > em { animation-duration: .01s; } }

/* ルラローンロンピック！の結果：これまでの合計点（累計）と、次のバッジまでの点数（2026-11-09） */
.gm-boy .pk-over .pk-total { margin: 6px 0 2px; font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 13px; color: var(--navy); }
.gm-boy .pk-over .pk-total b { font-size: 20px; color: var(--red); }
.gm-boy .pk-over .pk-total small { display: block; margin-top: 2px; font-size: 11px; color: var(--muted); }

/* 2026-11-09：BGM を流したあとスクロールしたら、右上は「♪」と「≡」だけにする（bgm.js が .mini をつける）。♪ を押すと止まる */
/* 右の「≡」は残す（2026-11-09 鍔本さんの指示）。曲名は消さずに幅を0にして、動きで縮める（下のモーション） */
.bgm.mini .bgm-ic { display: inline; }
.bgm.mini .bgm-eq { display: none; }

/* 2026-11-09：小さくなる時・戻る時にモーションをつける（鍔本さんの指示）
   曲名の部分の幅をすっと縮めて／のばして、文字はふわっと消える・出る。♪ と音の棒は、切りかわる時にポンと出る */
.bgm.has .bgm-now { max-width: 150px; opacity: 1; transition: max-width .4s cubic-bezier(.3,.8,.3,1), opacity .3s ease .08s, padding-left .4s cubic-bezier(.3,.8,.3,1); animation: bgmNowIn .45s cubic-bezier(.3,.8,.3,1); }
.bgm.has.mini .bgm-now { display: block; max-width: 0; opacity: 0; padding-left: 0; transition: max-width .35s cubic-bezier(.5,0,.4,1), opacity .15s ease, padding-left .35s cubic-bezier(.5,0,.4,1); }
@keyframes bgmNowIn { from { max-width: 0; opacity: 0; padding-left: 0; } }
.bgm-ic, .bgm.on .bgm-eq { animation: bgmPop .35s cubic-bezier(.3,1.6,.5,1); }
@keyframes bgmPop { from { transform: scale(.4); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .bgm.has .bgm-now, .bgm.has.mini .bgm-now { transition: none; animation: none; } .bgm-ic, .bgm.on .bgm-eq { animation: none; } }

/* 2026-11-09：魔人のポップコーンの看板を押すと説明が出る（鍔本さんの指示）。中身は未定なので「要確認」が出る */
.wt-sign { cursor: pointer; -webkit-tap-highlight-color: transparent; transition: transform .12s; }
.wt-sign:active { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--navy), 0 0 0 3px var(--navy) inset; }
.wt-more { position: absolute; bottom: 44px; right: 10px; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 10px; color: var(--navy); background: var(--mustard); border-radius: 999px; padding: 2px 7px; }
.wt-dlg { width: min(420px, calc(100vw - 32px)); padding: 0; border: 4px solid var(--mustard); border-radius: 16px; background: linear-gradient(#2a1650, #1f2a44); color: #fbf3df; box-shadow: 5px 5px 0 var(--navy); }
.wt-dlg[open] { animation: wtDlgIn .28s cubic-bezier(.3,1.4,.5,1); }
@keyframes wtDlgIn { from { transform: scale(.85); opacity: 0; } }
.wt-dlg::backdrop { background: rgba(20, 24, 40, .6); }
.wt-dlg-in { padding: 16px 18px 18px; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 700; }
.wt-dlg-head { display: flex; align-items: center; justify-content: center; gap: 8px; }
.wt-dlg-head b { font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 22px; color: var(--mustard); }
.wt-dlg-lead { margin: 12px 0; font-size: 14px; line-height: 1.7; text-align: center; }
.wt-dlg-rows { display: grid; grid-template-columns: auto 1fr; gap: 8px 12px; margin: 0; padding: 12px 14px; background: rgba(251, 243, 223, .08); border-radius: 10px; font-size: 14px; }
.wt-dlg-rows dt { color: var(--mustard); font-weight: 800; }
.wt-dlg-rows dd { margin: 0; }
.wt-dlg-note { margin: 10px 0 0; font-size: 11px; color: #c9cfdf; }
.wt-tbd { display: inline-block; padding: 1px 8px; border-radius: 999px; background: #3a4466; color: #ffe27a; font-size: 12px; }
.wt-dlg-close { display: block; width: 100%; margin-top: 14px; padding: 10px; border: 3px solid var(--navy); border-radius: 999px; background: var(--mustard); color: var(--navy); font: 800 15px "M PLUS Rounded 1c", sans-serif; box-shadow: 3px 3px 0 #121829; }
@media (prefers-reduced-motion: reduce) { .wt-dlg[open] { animation: none; } .wt-sign { transition: none; } }

/* 2026-11-09：魔人のポップコーンは、押すと説明ページ（#popcornPage）へ。看板は a（リンク）になったので文字の色・下線を戻す */
a.wt-sign { display: block; text-decoration: none; color: #fbf3df; }
.pc-hero { background: linear-gradient(#2a1650, #1f2a44); color: #fbf3df; text-align: center; padding: 8px 14px 6px; border-bottom: 4px solid var(--mustard); }
.pc-lamp { display: block; line-height: 0; margin: 10px auto 4px; }
.pc-name { margin: 4px 0 6px; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 28px; color: var(--mustard); }
.pc-hero .wt-foot { margin: 4px 0 6px; }
.pc-rows { display: grid; grid-template-columns: auto 1fr; gap: 10px 14px; margin: 0; padding: 14px 16px; background: #fff; border: 3px solid var(--navy); border-radius: 12px; box-shadow: 3px 3px 0 var(--navy); font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 700; font-size: 15px; }
.pc-rows dt { color: var(--red); font-weight: 800; }
.pc-rows dd { margin: 0; }

/* 2026-11-09：ポップコーンのページのキャッチと注意書き（鍔本さんが選んだ文章） */
.pc-catch { margin: 4px 0 18px; padding: 14px 16px; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 19px; line-height: 1.6; color: var(--navy); text-align: center; background: #fff6d8; border: 3px dashed var(--mustard); border-radius: 14px; }
.pc-note { display: flex; align-items: center; gap: 10px; margin: 16px 0 0; padding: 10px 12px; background: #2a1650; color: #fbf3df; border-radius: 12px; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 700; font-size: 13px; line-height: 1.6; }
.pc-note b { display: block; color: var(--mustard); font-size: 12px; }
.pc-note-ic { flex: none; line-height: 0; }
#popcornPage .abody { padding-bottom: 60px; } /* 一番下の注意書きが下のタブに隠れないように */

/* 2026-11-09：魔人のポップコーンのページ＝案B「ランプ劇場」（鍔本さんが選択）
   開くと：ランプがこすられて揺れる → けむりが下から順にもくもく → キャッチの吹き出しがポン → ポップコーンがはじける。そのあとけむりはゆっくりゆれる */
#popcornPage.pcb { background: radial-gradient(ellipse at 50% 22%, #3b1d6e, #140d2a 62%); }
.pcb-stage { position: relative; height: 470px; color: #fbf3df; text-align: center; overflow: hidden; }
.pcb-smoke i, .pcb-pops i { position: absolute; left: calc(50% + var(--x)); top: var(--y); width: var(--w); height: var(--w); transform: translate(-50%, 0); }
.pcb-smoke i { border-radius: 50%; background: var(--c); opacity: .92; animation: pcbPuff .55s cubic-bezier(.3,1.5,.5,1) var(--d) both, pcbFloat 4s ease-in-out calc(var(--d) + .6s) infinite alternate; }
@keyframes pcbPuff { from { transform: translate(-50%, 40px) scale(0); opacity: 0; } }
@keyframes pcbFloat { to { transform: translate(-50%, -6px) scale(1.04); } }
.pcb-pops i { height: calc(var(--w) * .85); border-radius: 50% 45% 50% 40%; background: radial-gradient(circle at 35% 35%, #fffaf0 0 45%, #f6dc8c 70%, #e0a830); box-shadow: calc(var(--w) / -3) calc(var(--w) / 4) 0 -1px #fff6dc, calc(var(--w) / 3) calc(var(--w) / 5) 0 -2px #fbeab0; animation: pcbPop .45s cubic-bezier(.3,1.8,.5,1) var(--d) both; }
@keyframes pcbPop { from { transform: translate(-50%, 30px) scale(0) rotate(-90deg); opacity: 0; } }
.pcb-catch { position: absolute; left: 50%; top: 66px; width: min(290px, calc(100% - 56px)); transform: translateX(-50%); margin: 0; padding: 12px 14px; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 18px; line-height: 1.6; color: #2a1650; background: #fbf3df; border: 3px solid #2a1650; border-radius: 22px; box-shadow: 3px 3px 0 #140d2a; z-index: 2; animation: pcbBubble .5s cubic-bezier(.3,1.6,.5,1) 1.05s both; }
@keyframes pcbBubble { from { transform: translateX(-50%) scale(.3); opacity: 0; } }
.pcb-lamp { position: absolute; left: 50%; top: 262px; transform: translateX(-50%); line-height: 0; z-index: 1; animation: pcbRub .5s ease-in-out .05s 2; }
@keyframes pcbRub { 25% { transform: translateX(calc(-50% - 5px)) rotate(-4deg); } 75% { transform: translateX(calc(-50% + 5px)) rotate(4deg); } }
.pcb-name { position: absolute; left: 0; right: 0; top: 384px; margin: 0; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 27px; color: var(--mustard); letter-spacing: .04em; }
.pcb-stage .wt-body { position: absolute; left: 0; right: 0; top: 424px; margin: 0; }
.pcb-stage .wt-foot { position: absolute; left: 0; right: 0; top: 478px; margin: 0; }
.pcb-stage { height: 510px; }
.pcb-card { margin: 0 14px 70px; padding: 14px 16px 16px; background: #fbf3df; color: var(--navy); border-radius: 16px; box-shadow: 4px 4px 0 #0b0718; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 700; }
.pcb-card h3 { margin: 16px 0 6px; font-size: 14px; border-bottom: 2px solid var(--navy); padding-bottom: 3px; }
.pcb-lead, .pcb-text { margin: 0; font-size: 14px; line-height: 1.8; }
.pcb-card .pc-rows { box-shadow: none; border-color: #2a1650; }
.pcb-card .pc-rows dt { color: #7b3fc4; }
@media (prefers-reduced-motion: reduce) { .pcb-smoke i, .pcb-pops i, .pcb-catch, .pcb-lamp { animation: none; } }
/* 2026-11-09：ポップコーンのページのランプは、ドット絵でない絵（img/genie_lamp.svg）に */
.pcb-lamp img { display: block; width: 180px; height: auto; filter: drop-shadow(0 6px 10px rgba(240, 180, 41, .35)); }
.pcb-lamp { top: 266px; }

/* 2026-11-09：けむりとポップコーンを、鍔本さんにもらったランプの絵のふんいき（ふんわり光る紫の雲・まん中が水色・白いキラキラ）に合わせる */
.pcb-smoke i { background: radial-gradient(circle, color-mix(in srgb, var(--c) 55%, #e9dcff) 0 35%, var(--c) 60%, transparent 72%); filter: blur(10px); opacity: .9; }
.pcb-glow { position: absolute; left: 50%; top: 150px; width: 340px; height: 300px; transform: translateX(-50%); border-radius: 50%;
  background: radial-gradient(ellipse at 50% 62%, rgba(190, 245, 255, .95) 0 12%, rgba(185, 200, 255, .7) 32%, rgba(200, 150, 255, .45) 55%, transparent 72%); filter: blur(6px); animation: pcbGlow .9s ease-out .2s both, pcbGlowPulse 3.5s ease-in-out 1.2s infinite alternate; }
@keyframes pcbGlow { from { opacity: 0; transform: translateX(-50%) scale(.4); } }
@keyframes pcbGlowPulse { to { opacity: .8; transform: translateX(-50%) scale(1.05); } }
.pcb-stars i { position: absolute; left: calc(50% + var(--x)); top: var(--y); width: var(--w); height: var(--w); border-radius: 50%; background: #fff; box-shadow: 0 0 6px #fff; animation: pcbTwinkle 2.2s ease-in-out var(--d) infinite; }
@keyframes pcbTwinkle { 0%, 100% { opacity: .25; transform: scale(.7); } 50% { opacity: 1; transform: scale(1.2); } }
.pcb-pops i { background: radial-gradient(circle at 40% 38%, #fffdf6 0 50%, #fbeec4 78%, #f3dc94); box-shadow: 0 0 10px rgba(255, 255, 255, .85), calc(var(--w) / -3) calc(var(--w) / 4) 0 -1px #fffaf0, calc(var(--w) / 3) calc(var(--w) / 5) 0 -2px #fdf3d6; }
.pcb-lamp img { filter: drop-shadow(0 0 14px rgba(255, 255, 255, .85)) drop-shadow(0 0 28px rgba(190, 245, 255, .6)); }
@media (prefers-reduced-motion: reduce) { .pcb-glow, .pcb-stars i { animation: none; } }
/* 2026-11-09：ランプを鍔本さんにもらった絵（img/genie_lamp_v02.png・まわりに光る紫の雲つき）に。絵に光があるので、自分で描いた光（.pcb-glow）は消す */
.pcb-glow { display: none; }
.pcb-lamp { top: 150px; animation-name: pcbRub2; }
.pcb-lamp img { width: 330px; filter: none; }
@keyframes pcbRub2 { 25% { transform: translateX(calc(-50% - 5px)) rotate(-3deg); } 75% { transform: translateX(calc(-50% + 5px)) rotate(3deg); } }
.pcb-stage { height: 548px; }
.pcb-name { top: 420px; text-shadow: 0 2px 0 #2a1650, 0 0 10px rgba(20, 13, 42, .9); }
.pcb-stage .wt-body { top: 462px; }
.pcb-stage .wt-foot { top: 516px; }

/* 2026-11-09：ランプをこするとポップコーンが出てくる（app.js の pcRub）。こする場所はランプの本体のあたりだけ（そこ以外ではふつうにスクロールできる） */
.pcb-lamp { pointer-events: none; }
.pcb-rub { position: absolute; left: 14%; top: 30%; width: 72%; height: 38%; pointer-events: auto; touch-action: none; cursor: grab; -webkit-tap-highlight-color: transparent; }
.pcb-lamp.rubbing .pcb-rub { cursor: grabbing; }
.pcb-lamp.rubbing img { animation: pcbWig .14s ease-in-out infinite alternate; }
@keyframes pcbWig { from { transform: rotate(-2.5deg) translateX(-3px); } to { transform: rotate(2.5deg) translateX(3px); } }
.pcb-fly { position: absolute; left: calc(50% - 99px); top: 281px; z-index: 3; pointer-events: none; width: var(--w); height: calc(var(--w) * .85); border-radius: 50% 45% 50% 40%;
  background: radial-gradient(circle at 40% 38%, #fffdf6 0 50%, #fbeec4 78%, #f3dc94); box-shadow: 0 0 10px rgba(255, 255, 255, .85), calc(var(--w) / -3) calc(var(--w) / 4) 0 -1px #fffaf0, calc(var(--w) / 3) calc(var(--w) / 5) 0 -2px #fdf3d6; }
.pcb-hint { position: absolute; left: 0; right: 0; top: 378px; margin: 0; z-index: 2; pointer-events: none; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 13px; color: #fbf3df; text-shadow: 0 1px 0 #2a1650, 0 0 8px #2a1650; animation: pcbHint 1.4s ease-in-out 2s infinite alternate both; transition: opacity .4s; }
@keyframes pcbHint { from { opacity: .45; transform: translateY(0); } to { opacity: 1; transform: translateY(-4px); } }
.pcb-hint.off { opacity: 0 !important; animation: none; }
@media (prefers-reduced-motion: reduce) { .pcb-lamp.rubbing img, .pcb-hint { animation: none; } }
.pcb-pops { position: relative; z-index: 2; } /* ポップコーンがランプの絵の雲の後ろに隠れないように */
/* 2026-11-09：ポップコーンが飛び出る瞬間の光の輪と「ポンッ！」（app.js の pcRub） */
.pcb-flash { position: absolute; left: calc(50% - 99px); top: 281px; z-index: 3; width: 34px; height: 34px; border-radius: 50%; pointer-events: none; border: 3px solid #fff; box-shadow: 0 0 12px #fff, inset 0 0 8px rgba(255, 255, 255, .8); }
.pcb-pon { position: absolute; left: calc(50% - 120px); top: 236px; z-index: 4; pointer-events: none; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 22px; color: #ffe27a; text-shadow: 0 2px 0 #c8321f, 0 0 8px #2a1650; white-space: nowrap; }
/* 2026-11-09：こすればこするだけ出る。勢い（data-heat 0〜4）が上がるほどランプが光る。右上に出た数 */
.pcb-lamp[data-heat="2"] img { filter: drop-shadow(0 0 10px rgba(255, 240, 170, .7)); }
.pcb-lamp[data-heat="3"] img { filter: drop-shadow(0 0 16px rgba(255, 240, 170, .85)); }
.pcb-lamp[data-heat="4"] img { filter: drop-shadow(0 0 22px rgba(255, 245, 190, 1)) brightness(1.08); }
.pcb-count { position: absolute; right: 12px; top: 12px; z-index: 4; margin: 0; padding: 3px 10px; border-radius: 999px; background: rgba(20, 13, 42, .75); border: 2px solid var(--mustard); color: #fbf3df; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; font-size: 11px; }
.pcb-count b { color: #ffe27a; font-size: 14px; }
/* 2026-11-09：飛ぶポップコーンは1枚の絵（canvas）にまとめて描く。何百個でも同時に出せる */
.pcb-canvas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 3; pointer-events: none; }
/* 2026-11-09：ランプをこするまでは、上の説明（キャッチの吹き出し）と飾りのポップコーンは出さない。こすったら（.rubbed）ポンと出る */
.pcb-stage:not(.rubbed) .pcb-catch, .pcb-stage:not(.rubbed) .pcb-pops { visibility: hidden; animation: none; }
.pcb-stage:not(.rubbed) .pcb-pops i { animation: none; }
.pcb-stage.rubbed .pcb-catch { animation: pcbBubble .5s cubic-bezier(.3,1.6,.5,1) .15s both; }
.pcb-stage.rubbed .pcb-pops i { animation: pcbPop .45s cubic-bezier(.3,1.8,.5,1) calc(var(--d) - 1s) both; }
.pcb-hint { top: 372px; }

/* 2026-11-09：けむりがゆっくり立ちのぼる（.pcb-rise）。注ぎ口のあたりから、ふくらみながら上へ。7〜10秒かけてのぼって消える、をくり返す */
.pcb-rise i { position: absolute; left: calc(50% + var(--x)); top: calc(282px - var(--w) / 2); width: var(--w); height: var(--w); border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--c) 50%, #efe4ff) 0 30%, var(--c) 58%, transparent 72%); filter: blur(9px); opacity: 0;
  animation: pcbRise var(--dur) cubic-bezier(.3,.1,.5,1) var(--d) infinite; will-change: transform, opacity; }
@keyframes pcbRise {
  0% { transform: translate(-50%, 0) scale(.25); opacity: 0; }
  12% { opacity: .85; }
  60% { opacity: .55; }
  100% { transform: translate(calc(-50% + var(--sx)), calc(var(--h) * -1)) scale(1.6); opacity: 0; }
}
/* 最初にふくらむけむりのかたまりも、ゆっくり上へただよう（前より大きく・遅く） */
@keyframes pcbFloat { to { transform: translate(-50%, -14px) scale(1.06); } }
.pcb-smoke i { animation-duration: .55s, 6s; }
@media (prefers-reduced-motion: reduce) { .pcb-rise { display: none; } }
/* 2026-11-09：ホームの看板のランプも、説明ページと同じ絵に（まわりの光る雲ごと小さく出す） */
.wt-lamp img { display: block; width: 88px; height: auto; margin: -22px -12px -22px -18px; } /* 絵の中のランプが見える大きさに（雲のぶんは外にはみ出させる） */
/* 2026-11-09：看板の電飾は、ランプの絵（光る雲）より上に出す */
.wt-sign .wt-bulbs { position: relative; z-index: 2; }
.wt-sign .wt-head { position: relative; z-index: 1; }
.wt-lamp img { position: relative; z-index: 0; }
/* 2026-11-09：ホームの看板の小さいランプからも、けむりがゆっくり立ちのぼる（説明ページの .pcb-rise と同じ動き pcbRise を小さく）。電飾より下 */
.wt-lamp { position: relative; }
.wt-rise { position: absolute; left: 2px; top: 13px; width: 0; height: 0; z-index: 1; pointer-events: none; }
.wt-rise i { position: absolute; left: 0; top: calc(var(--w) / -2); width: var(--w); height: var(--w); border-radius: 50%;
  background: radial-gradient(circle, color-mix(in srgb, var(--c) 40%, #f3ebff) 0 35%, var(--c) 60%, transparent 72%); filter: blur(2px); opacity: 0;
  animation: pcbRise var(--dur) cubic-bezier(.3,.1,.5,1) var(--d) infinite; }
@media (prefers-reduced-motion: reduce) { .wt-rise { display: none; } }
/* 2026-11-09：BGM の曲送り・再生ボタンのマークを絵（SVG）にしたので、まん中にそろえる（iPhone で絵文字になっていた） */
.bgs-ctrl button { display: inline-grid; place-items: center; padding: 0; }
.bgs-ctrl button svg { display: block; }
.bgs-big svg { margin-left: 0; }
/* 2026-11-09：右上の BGM ボタン（開いた形）が一番上のロゴと重ならないように、ロゴは下げずに（鍔本さんの指示）、ボタンの広がる幅をせまくする。
   曲名の部分を 108px までにすると、ボタンの左はしがロゴの「toybee 5th Anniversary × …」の行の右はしより右に収まる。長い曲名は今までどおり流れて全部読める */
.bgm.has .bgm-now { max-width: 108px; }

/* ========== TOYBEE DJ（2026-11-09・dj.js）。キャンバスの案B「本物の並び＋スマホ向けに少なく」で作り直し（前の版の見た目は _backup_2026-11-09_djB/style.css に残してある） ========== */
.gm-boy .gmb-item .gp-ic.gp-d { background: #9b5de5; box-shadow: inset 0 0 0 2px #111522; }
body:has(#gamePage.dj-page:not([hidden])) .tabbar { display: none; } /* DJ のときは下のタブを消す */
#gamePage.dj-page { bottom: 0; background: #0e0f13; }
.abody.dj { padding: 8px 8px 24px; color: #e8e8ee; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; max-width: none; margin: 0; }
.dj-load { text-align: center; margin-top: 40px; }
.dj-desk { display: flex; flex-direction: column; gap: 8px; }
.abody.dj .anote { color: #8d96b0; text-align: center; margin: 10px 4px 0; line-height: 1.6; }
/* 台 */
.dj-deck { background: linear-gradient(#26282f, #1b1c22); border-radius: 12px; padding: 8px; box-shadow: inset 0 0 0 1px #33363f; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.dj-dh { display: flex; align-items: center; gap: 6px; justify-content: space-between; }
.dj-dh b { flex: none; font-size: 9px; padding: 3px 6px; border-radius: 4px; background: #f0b429; color: #111; letter-spacing: .04em; }
.dj-b .dj-dh b { background: #4dd0e1; }
.dj-sel { min-width: 0; max-width: 70%; font: 800 11px "M PLUS Rounded 1c", sans-serif; color: #1f2a44; background: #fbf3df; border: 0; border-radius: 6px; padding: 4px 6px; }
.dj-mid { display: flex; gap: 8px; align-items: center; }
.dj-b .dj-mid { flex-direction: row-reverse; }
.dj-plat { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.dj-rec { width: min(100%, 210px); aspect-ratio: 1; border-radius: 50%; touch-action: none; cursor: grab; display: grid; place-items: center; position: relative;
  background: radial-gradient(circle, #2b2e38 0 30%, #1a1c23 31% 62%, #2a2d36 63% 66%, #14161c 67%);
  box-shadow: 0 0 0 3px #0a0a0d, 0 0 0 5px #ff3b5c, 0 0 18px rgba(255, 59, 92, .45); }
.dj-b .dj-rec { box-shadow: 0 0 0 3px #0a0a0d, 0 0 0 5px #2ec5ff, 0 0 18px rgba(46, 197, 255, .45); }
.dj-rec::before { content: ""; position: absolute; inset: 0; border-radius: 50%; background: repeating-conic-gradient(rgba(255, 255, 255, .05) 0 1deg, transparent 1deg 10deg); pointer-events: none; }
.dj-rec.grab { cursor: grabbing; }
.dj-deck:not(.on) .dj-rec { box-shadow: 0 0 0 3px #0a0a0d, 0 0 0 5px #4a2a33; }
.dj-b:not(.on) .dj-rec { box-shadow: 0 0 0 3px #0a0a0d, 0 0 0 5px #23404a; }
.dj-lbl { width: 34%; aspect-ratio: 1; border-radius: 50%; background: #f0b429; display: grid; place-items: center; box-shadow: 0 0 0 3px #111; cursor: pointer; }
.dj-b .dj-lbl { background: #4dd0e1; }
.dj-lbl img { width: 74%; height: auto; pointer-events: none; }
.dj-lbl.flip img { animation: djFlip .35s ease-out; }
@keyframes djFlip { from { transform: scale(.4) rotate(-180deg); opacity: 0; } }
.dj-time { margin: 0; font-family: "Press Start 2P", monospace; font-size: 8px; color: #aab0c0; }
/* 縦のフェーダー（TEMPO・VOL）と横のフェーダー（クロスフェーダー） */
.djf { display: flex; flex-direction: column; align-items: center; gap: 4px; touch-action: none; cursor: ns-resize; -webkit-tap-highlight-color: transparent; }
.djf span { font-size: 7px; color: #aab0c0; white-space: nowrap; }
.djf-track { position: relative; width: 22px; height: 120px; }
.djf-track::before { content: ""; position: absolute; left: 50%; top: 0; bottom: 0; width: 4px; background: #0a0b0f; border-radius: 2px; transform: translateX(-50%); box-shadow: inset 0 0 0 1px #333; }
.djf-cap { position: absolute; left: 0; right: 0; height: 14px; margin-top: -7px; background: linear-gradient(#e8e8ee, #9aa0ad); border-radius: 3px; box-shadow: 0 2px 2px rgba(0, 0, 0, .6); }
.djf-cap::after { content: ""; position: absolute; left: 3px; right: 3px; top: 50%; height: 2px; background: #333; transform: translateY(-50%); }
.dj-tempo .djf-track { height: 170px; }
.dj-vol .djf-track { height: 74px; }
.dj-xf { flex: 1; cursor: ew-resize; }
.dj-xf .djf-track { width: 100%; height: 22px; }
.dj-xf .djf-track::before { left: 0; right: 0; top: 50%; bottom: auto; width: auto; height: 4px; transform: translateY(-50%); }
.dj-xf .djf-cap { top: 0; bottom: 0; left: 50%; right: auto; width: 18px; height: auto; margin: 0 0 0 -9px; }
.dj-xf .djf-cap::after { left: 50%; right: auto; top: 3px; bottom: 3px; width: 2px; height: auto; transform: translateX(-50%); }
.djf.reset .djf-cap, .djk.reset .djk-dial { filter: drop-shadow(0 0 6px #fff) brightness(1.4); }
/* 回すつまみ */
.djk { display: flex; flex-direction: column; align-items: center; gap: 2px; touch-action: none; cursor: ns-resize; -webkit-tap-highlight-color: transparent; }
.djk-dial { width: 30px; height: 30px; border-radius: 50%; background: radial-gradient(circle at 40% 35%, #5a5f6e, #22252e 70%); box-shadow: 0 0 0 2px #111, 0 2px 3px rgba(0, 0, 0, .6); position: relative; }
.djk-dial i { position: absolute; left: 50%; top: 3px; width: 2px; height: 10px; background: #e8e8ee; transform: translateX(-50%); border-radius: 1px; }
.djk-flt .djk-dial i { background: #ff9a1f; }
.djk-fx .djk-dial i { background: #c9b6ff; }
.djk span { font-size: 7px; color: #aab0c0; }
/* CUE・再生とパッド */
.dj-bot { display: flex; gap: 10px; align-items: flex-end; }
.dj-b .dj-bot { flex-direction: row-reverse; }
.dj-tp { display: flex; flex-direction: column; gap: 8px; }
.dj-cue, .dj-play { width: 44px; height: 44px; border-radius: 50%; border: 0; background: #1c1d23; color: #fff; display: grid; place-items: center; font: 800 10px "M PLUS Rounded 1c", sans-serif; -webkit-tap-highlight-color: transparent; }
.dj-cue { box-shadow: 0 0 0 3px #ff9a1f, 0 0 8px rgba(255, 154, 31, .55); }
.dj-cue.set { background: #ff9a1f; color: #111; }
.dj-play { box-shadow: 0 0 0 3px #3ddc84, 0 0 8px rgba(61, 220, 132, .5); }
.dj-deck.on .dj-play { background: #3ddc84; color: #111; }
.dj-padw { flex: 1; min-width: 0; }
.dj-pm { display: flex; gap: 4px; margin-bottom: 5px; }
.dj-pm button { border: 0; border-radius: 3px; padding: 3px 6px; background: #2c2f39; color: #ddd; font: 800 8px "M PLUS Rounded 1c", sans-serif; }
.dj-pm button.on { background: #ff9a1f; color: #111; }
.dj-pads { display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.dj-pad { aspect-ratio: 1; border: 0; border-radius: 6px; background: #16171c; box-shadow: inset 0 0 0 2px #3a3d48; color: #fff; display: grid; place-items: center; padding: 0; -webkit-tap-highlight-color: transparent; transition: transform .06s; }
.dj-pad.lit { box-shadow: inset 0 0 0 2px var(--pc), 0 0 8px var(--pc); background: color-mix(in srgb, var(--pc) 18%, #16171c); }
.dj-pad span { font-size: 7px; line-height: 1.1; pointer-events: none; }
.dj-pad.hit { transform: scale(.92); background: var(--pc); }
/* ミキサー */
.dj-mixer { background: linear-gradient(#202228, #17181d); border-radius: 12px; padding: 8px; box-shadow: inset 0 0 0 1px #33363f; display: flex; flex-direction: column; gap: 6px; }
.dj-title { margin: 0; text-align: center; font-family: "Press Start 2P", monospace; font-size: 10px; color: #f0b429; }
.dj-mixrow { display: flex; gap: 8px; justify-content: center; align-items: flex-start; }
.dj-ch { display: flex; flex-direction: column; align-items: center; gap: 5px; }
.dj-ch > b { font-size: 9px; padding: 2px 8px; border-radius: 4px; background: #f0b429; color: #111; }
.dj-ch1 > b { background: #4dd0e1; }
.dj-bfx { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 6px; background: #14151a; border-radius: 8px; }
.dj-bfx > span { font-size: 8px; color: #c9b6ff; }
.dj-fxb { width: 54px; padding: 6px 0; border: 0; border-radius: 4px; background: #2c2f39; color: #ddd; font: 800 9px "M PLUS Rounded 1c", sans-serif; }
.dj-fxb.on { background: #7b61ff; color: #fff; box-shadow: 0 0 10px rgba(123, 97, 255, .7); }
.dj-xfw { display: flex; align-items: center; gap: 8px; padding: 0 6px; }
.dj-xfw > b { font-size: 10px; color: #f0b429; }
.dj-xfw > b:last-child { color: #4dd0e1; }
.dj-cap { margin: 0; text-align: center; font-size: 7px; color: #aab0c0; }
/* 縦のときは「横にしてね」を出す（「縦のまま遊ぶ」を押すと消える） */
.dj-rotate { display: none; }
@media (orientation: portrait) {
  #gamePage.dj-page:not(.dj-portrait-ok) .dj-rotate { display: flex; position: fixed; inset: 0; z-index: 40; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 24px; text-align: center; background: radial-gradient(ellipse at 50% 30%, #2a1650, #0e0b1c 75%); color: #fbf3df; }
}
.dj-phone { width: 54px; height: 92px; border: 4px solid #fbf3df; border-radius: 12px; position: relative; animation: djRot 2.4s ease-in-out infinite; }
.dj-phone i { position: absolute; left: 50%; bottom: 6px; width: 14px; height: 4px; border-radius: 2px; background: #fbf3df; transform: translateX(-50%); }
@keyframes djRot { 0%, 25% { transform: rotate(0deg); } 50%, 85% { transform: rotate(-90deg); } 100% { transform: rotate(0deg); } }
.dj-rt { margin: 10px 0 0; font-size: 18px; color: var(--mustard); }
.dj-rs { margin: 0; font-size: 11px; color: #c9cfdf; }
.dj-keep { margin-top: 10px; padding: 10px 20px; border: 2px solid #fbf3df; border-radius: 999px; background: transparent; color: #fbf3df; font: 800 13px "M PLUS Rounded 1c", sans-serif; }
.dj-rback { margin-top: 4px; border: 0; background: none; color: #c9cfdf; font: 800 12px "M PLUS Rounded 1c", sans-serif; text-decoration: underline; }
/* 横画面：左に DECK A、まん中にミキサー、右に DECK B。1画面に収める */
@media (orientation: landscape) and (max-height: 560px) {
  #gamePage.dj-page { padding-bottom: 0; }
  #gamePage.dj-page .abar { padding: calc(3px + env(safe-area-inset-top)) calc(12px + env(safe-area-inset-right)) 3px calc(12px + env(safe-area-inset-left)); }
  #gamePage.dj-page .abar button { font-size: 12px; padding-top: 3px; padding-bottom: 3px; }
  .abody.dj { padding: 4px calc(6px + env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) calc(6px + env(safe-area-inset-left)); }
  .abody.dj .anote { display: none; }
  /* 決まった大きさ（横 820px）で並べて、dj.js の djFit が画面に入る倍率で縮める・広げる */
  #gamePage.dj-page { overflow: hidden; }
  .dj-fit { position: relative; }
  .dj-desk { flex-direction: row; align-items: stretch; height: auto; }
  .dj-deck { flex: 1; justify-content: space-between; padding: 6px; gap: 4px; }
  .dj-mixer { flex: none; width: 214px; justify-content: space-between; padding: 6px; }
  .dj-rec { width: 170px; }
  .dj-tempo .djf-track { height: 170px; }
  .dj-pads { gap: 4px; }
  .dj-pad { aspect-ratio: auto; height: 30px; }
  .dj-cue, .dj-play { width: 38px; height: 38px; }
  .dj-tp { gap: 6px; }
  .djk-dial { width: 26px; height: 26px; }
  .djk-dial i { height: 8px; }
  .dj-ch { gap: 3px; }
  .dj-vol .djf-track { height: 58px; }
  .dj-fxb { width: 48px; padding: 5px 0; }
}
/* 2026-11-09：DJ の横画面では、上の帯（戻る・ホーム）を消して、ミキサーの上に小さく出す。そのぶん台を大きく表示できる */
.dj-mtop { display: flex; align-items: center; justify-content: center; gap: 6px; }
.dj-mbtn { display: none; }
@media (orientation: landscape) and (max-height: 560px) {
  #gamePage.dj-page .abar { display: none; }
  .abody.dj { padding-top: calc(4px + env(safe-area-inset-top)); }
  .dj-mtop { justify-content: space-between; }
  .dj-mbtn { display: grid; place-items: center; width: 30px; height: 26px; padding: 0; border: 0; border-radius: 8px; background: #2c2f39; color: #fbf3df; font: 800 14px "M PLUS Rounded 1c", sans-serif; }
  .dj-mhome { background: var(--mustard); }
  .dj-mhome img { width: 18px; height: auto; }
}
/* 2026-11-09：「戻る」「ホーム」はミキサーの外、左はしの列に縦に並べる（横画面のときだけ） */
.dj-rail { display: none; }
@media (orientation: landscape) and (max-height: 560px) {
  .dj-rail { display: flex; flex-direction: column; gap: 8px; width: 40px; flex: none; }
  .dj-rail .dj-mbtn { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; width: 40px; height: 52px; border-radius: 10px; font-size: 16px; line-height: 1; }
  .dj-rail .dj-mbtn small { font-size: 8px; }
  .dj-rail .dj-mhome { color: #1f2a44; }
  .dj-rail .dj-mhome img { width: 22px; }
}
/* 2026-11-09：DJ の画面では、ダブルタップで拡大しない。レコード・つまみ・フェーダーは指の動きを全部 DJ 側で使う */
#gamePage.dj-page, #gamePage.dj-page button, #gamePage.dj-page select { touch-action: manipulation; }
#gamePage.dj-page .dj-rec, #gamePage.dj-page .djk, #gamePage.dj-page .djf { touch-action: none; }
#gamePage.dj-page { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
/* 2026-11-09：HOT CUE を消すボタン。消すモードの間は、光っているパッドに ✕ が出て小さくゆれる */
.dj-pm .dj-del { margin-left: auto; background: #3a2328; color: #ff8a9a; }
.dj-pm .dj-del:disabled { opacity: .35; }
.dj-pm .dj-del.on { background: #ff3b5c; color: #fff; box-shadow: 0 0 8px rgba(255, 59, 92, .7); }
.del-mode .dj-pad.lit { position: relative; animation: djWiggle .25s ease-in-out infinite alternate; }
.del-mode .dj-pad.lit::after { content: "✕"; position: absolute; top: -5px; right: -5px; width: 15px; height: 15px; border-radius: 50%; background: #ff3b5c; color: #fff; font-size: 9px; line-height: 15px; text-align: center; box-shadow: 0 0 0 2px #1b1c22; }
@keyframes djWiggle { from { transform: rotate(-3deg); } to { transform: rotate(3deg); } }
/* 2026-11-09：MY（自分の好きな音）のパッドと、音を入れる画面 */
.dj-pm .dj-edit { margin-left: auto; background: #2a2a44; color: #c9b6ff; }
.dj-pm .dj-edit.on { background: #7b61ff; color: #fff; box-shadow: 0 0 8px rgba(123, 97, 255, .7); }
.dj-pm [hidden] { display: none !important; }
.edit-mode .dj-pad { animation: djWiggle .25s ease-in-out infinite alternate; }
.dj-mysheet { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; background: rgba(8, 9, 14, .7); }
.dj-mysheet[hidden] { display: none; }
.dj-mys-in { width: min(340px, 86vw); background: #1f2129; border: 2px solid #3a3d48; border-radius: 14px; padding: 14px; color: #e8e8ee; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; text-align: center; }
.dj-mys-t { margin: 0 0 10px; font-size: 14px; color: #c9b6ff; }
.dj-mys-btns { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.dj-mys-btns button, .dj-mys-file { flex: 1 1 120px; padding: 10px 6px; border: 0; border-radius: 10px; background: #7b61ff; color: #fff; font: 800 13px "M PLUS Rounded 1c", sans-serif; cursor: pointer; }
.dj-mys-rec.on { background: #ff3b5c; animation: djPulse 1s ease-in-out infinite alternate; }
@keyframes djPulse { to { box-shadow: 0 0 14px rgba(255, 59, 92, .9); } }
.dj-mys-btns button:disabled { opacity: .35; }
.dj-mys-file { background: #2ec5ff; color: #111; }
.dj-mys-clear { background: #3a2328 !important; color: #ff8a9a !important; flex: 1 1 100% !important; }
.dj-mys-msg { margin: 10px 0 8px; font-size: 10px; color: #aab0c0; line-height: 1.6; }
.dj-mys-close { border: 0; background: none; color: #aab0c0; font: 800 12px "M PLUS Rounded 1c", sans-serif; text-decoration: underline; }

/* 2026-11-09：ゲーム機のボタンの押しやすさと、押したときの動き（game.js の gmPage） */
.gmb-pad { touch-action: none; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
.gmb-cross { transition: transform .07s ease-out, filter .07s; cursor: pointer; }
.gmb-cross .gmb-dir { pointer-events: none; } /* 押す場所は十字の四角全体（向きは game.js で決める） */
.gmb-cross[data-dir="left"] { transform: perspective(260px) rotateY(-16deg) translateX(-1px); filter: drop-shadow(1px 2px 0 #8f2213); }
.gmb-cross[data-dir="right"] { transform: perspective(260px) rotateY(16deg) translateX(1px); filter: drop-shadow(2px 1px 0 #8f2213); }
.gmb-cross[data-dir="up"] { transform: perspective(260px) rotateX(16deg) translateY(-1px); filter: drop-shadow(2px 1px 0 #8f2213); }
.gmb-cross[data-dir="down"] { transform: perspective(260px) rotateX(-16deg) translateY(1px); filter: drop-shadow(1px 1px 0 #8f2213); }
.gmb-cross[data-dir="left"] .gmb-left, .gmb-cross[data-dir="right"] .gmb-right, .gmb-cross[data-dir="up"] .gmb-up, .gmb-cross[data-dir="down"] .gmb-down { background: rgba(0, 0, 0, .3); }
.gmb-ab { transition: transform .06s, box-shadow .06s; }
.gmb-ab.press { transform: translate(3px, 3px) scale(.9); box-shadow: 0 0 0 #8f2213; background: #ffd25e; }
.gmb-ab.pop { animation: gmbPop .25s cubic-bezier(.3, 1.8, .5, 1); }
@keyframes gmbPop { from { transform: translate(2px, 2px) scale(.9); } 60% { transform: scale(1.08); } to { transform: none; } }
/* SELECT・START：本物と同じく、ななめのゴムのボタンがそのまま下へ沈む（向きは変えない・影が消える）。離すとすっと戻る */
.gmb-ss button::before { transition: transform .09s ease-out, box-shadow .09s ease-out, background .09s; }
.gmb-ss button.press::before { transform: translate(1px, 2px); box-shadow: 0 0 0 #8f2213; background: #121829; transition-duration: .03s; }
@media (prefers-reduced-motion: reduce) { .gmb-cross, .gmb-ab, .gmb-ss button { transition: none; animation: none !important; } }

/* 2026-11-09：十字キーを大きく（102px → 132px、腕の太さ 34px → 44px）。まん中に本物のようなくぼみ。
   そのぶん SELECT・START を少し細くして、十字キーと B のあいだに収める */
.gm-boy .gmb-cross { left: 6px; top: 4px; width: 132px; height: 132px;
  background: linear-gradient(var(--navy), var(--navy)) center / 44px 100% no-repeat, linear-gradient(var(--navy), var(--navy)) center / 100% 44px no-repeat; }
.gm-boy .gmb-cross::before { content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 22px; border-radius: 50%; transform: translate(-50%, -50%); background: radial-gradient(circle at 40% 35%, #121829, #2a3352); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .6); }
.gm-boy .gmb-dir { width: 44px; height: 44px; }
.gm-boy .gmb-up { left: 44px; top: 0; } .gm-boy .gmb-down { left: 44px; bottom: 0; top: auto; }
.gm-boy .gmb-left { left: 0; top: 44px; } .gm-boy .gmb-right { right: 0; left: auto; top: 44px; }
.gm-boy .gmb-dir::after { border-width: 8px; }
.gm-boy .gmb-ab { width: 54px; height: 54px; }
.gm-boy .gmb-a { right: 10px; top: 12px; }
.gm-boy .gmb-b { right: 72px; top: 50px; }
.gm-boy .gmb-pad { height: 176px; }
.gm-boy .gmb-ss { left: 140px; right: 0; top: 136px; }
.gm-boy .gmb-sslbl { left: 140px; right: 0; top: 166px; }
@media (min-width: 366px) {
  .gm-boy .gmb-pad { height: 142px; }
  .gm-boy .gmb-ss { left: 142px; right: 128px; top: 92px; grid-template-columns: 48px 48px; gap: 6px; }
  .gm-boy .gmb-ss button { width: 48px; }
  .gm-boy .gmb-sslbl { left: 142px; right: 128px; top: 122px; grid-template-columns: 48px 48px; gap: 6px; }
}
/* 2026-11-09：ピックゲームの説明に足した行（ハート・A/B） */
.pk-dot.heart { background: #ff4a6a; border-radius: 50% 50% 50% 0; transform: rotate(-45deg) scale(.85); }
.pk-rule2 li.pk-keys { grid-template-columns: 1fr; font-size: 12px; }
.pk-rule2 li.pk-keys b { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--mustard); color: var(--navy); font-size: 11px; margin-right: 2px; }

/* 2026-11-09：ピックゲームの説明を「あそびかた」「点数」「スペシャル」に整理 */
.gm-boy .pk-guide { width: 100%; max-width: 300px; margin: 2px auto 10px; padding: 8px 12px 10px; background: #fff; border: 2px solid var(--navy); border-radius: 12px; box-sizing: border-box; font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; color: var(--navy); }
.gm-boy .pk-gh { margin: 8px 0 5px; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 13px; color: var(--red); text-align: left; display: flex; align-items: center; gap: 6px; }
.gm-boy .pk-gh:first-child { margin-top: 0; }
.gm-boy .pk-gh::after { content: ""; flex: 1; border-top: 1px dashed #d8ccb0; }
.gm-boy .pk-keys2 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; }
.gm-boy .pk-keys2 span { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 6px 2px; background: #fbf3df; border-radius: 8px; font-size: 12px; line-height: 1.2; }
.gm-boy .pk-keys2 small { font-size: 9px; color: var(--muted); }
.gm-boy .pk-k { display: grid; place-items: center; min-width: 26px; height: 26px; padding: 0 4px; border-radius: 6px; background: var(--navy); color: #fbf3df; font: 800 11px "Press Start 2P", monospace; font-style: normal; box-sizing: border-box; }
.gm-boy .pk-k.a, .gm-boy .pk-k.b { border-radius: 50%; width: 26px; background: var(--mustard); color: var(--navy); border: 2px solid var(--navy); }
.gm-boy .pk-gnote { margin: 5px 0 0; font-size: 11px; color: var(--muted); text-align: center; font-weight: 700; }
.gm-boy .pk-pts { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 4px 10px; }
.gm-boy .pk-pts li { display: flex; align-items: center; gap: 4px; font-size: 12.5px; padding: 3px 0; }
.gm-boy .pk-pts li b { margin-left: auto; color: var(--red); font-size: 14px; }
.gm-boy .pk-pts li b.m { color: var(--navy); }
.gm-boy .pk-dot.air { box-shadow: 0 0 0 2px #4dd0e1, 0 0 6px #4dd0e1; }
.gm-boy .pk-sp { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.gm-boy .pk-spc { display: flex; align-items: center; gap: 6px; padding: 6px; border-radius: 10px; text-align: left; }
.gm-boy .pk-spc p { margin: 0; font-size: 10.5px; line-height: 1.4; font-weight: 700; color: var(--navy); }
.gm-boy .pk-spc p b { display: block; font-size: 12px; font-weight: 800; }
.gm-boy .pk-spc.genie { background: #efe3ff; } .gm-boy .pk-spc.genie b { color: #7b3fc4; }
.gm-boy .pk-spc.genie img { width: 30px; height: 30px; object-fit: contain; flex: none; filter: drop-shadow(0 0 4px #f0b429); }
.gm-boy .pk-spc.heart { background: #ffe4ea; } .gm-boy .pk-spc.heart b { color: #e0294b; }
.gm-boy .pk-spc.heart .pk-dot { flex: none; margin: 0 4px; width: 14px; height: 14px; }
.gm-boy .pk-over .pk-guide .pk-gnote { margin: 5px 0 0; font-size: 11px; line-height: 1.4; color: var(--muted); }
.gm-boy .pk-over .pk-guide .pk-gh { font-size: 13px; line-height: 1.3; }
.gm-boy .pk-over .pk-guide .pk-spc p { font-size: 11px; line-height: 1.35; }
.gm-boy .pk-pts li { white-space: nowrap; }
/* 2026-11-09：説明の見出し（あそびかた・点数・スペシャル）の字を変更（鍔本さんの指示）。細い飾り文字 → 本文と同じ丸ゴシックの太字で、赤い札のように */
.gm-boy .pk-over .pk-guide .pk-gh { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 11.5px; letter-spacing: .06em; color: var(--red); }
.gm-boy .pk-over .pk-guide .pk-gh::before { content: ""; width: 4px; height: 12px; border-radius: 2px; background: var(--red); flex: none; }
/* 2026-11-09：あそびかたの3つの四角は、アイコン・文字・小さい文字の段をそろえる（アイコンは同じ大きさの枠のまん中） */
.gm-boy .pk-keys2 span { display: grid; grid-template-rows: 28px 16px 12px; justify-items: center; align-items: center; row-gap: 3px; padding: 7px 2px 5px; }
.gm-boy .pk-keys2 em { font-style: normal; font-size: 12px; line-height: 16px; }
.gm-boy .pk-keys2 small { line-height: 12px; }
.gm-boy .pk-k { width: 28px; min-width: 28px; height: 28px; padding: 0; line-height: 1; }
.gm-boy .pk-k.a, .gm-boy .pk-k.b { width: 28px; height: 28px; }
.gm-boy .pk-k svg { display: block; }
/* 2026-11-09：アイコンと文字を、四角の上下まん中にそろえる（「2回まで」は下のはしに小さく。ほかの2つと位置がずれないように） */
.gm-boy .pk-keys2 span { position: relative; grid-template-rows: 28px 16px; align-content: center; height: 80px; padding: 0 2px; box-sizing: border-box; }
.gm-boy .pk-keys2 small { position: absolute; left: 0; right: 0; bottom: 3px; text-align: center; }
.gm-boy .pk-keys2 small:empty { display: none; }
/* 2026-11-09：「むずかしさ」「だれでキャッチする？」とスタートボタンの字も、細い飾り文字 → 丸ゴシックの太字に（鍔本さんの指示。説明の見出しとそろえる） */
.gm-boy .pk-over .pk-sel-t { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 15px; letter-spacing: .06em; }
.gm-boy .pk-over #pkStart { font-family: "M PLUS Rounded 1c", system-ui, sans-serif; font-weight: 800; font-size: 21px; letter-spacing: .2em; }
/* 2026-11-09：タイトル「ルラローンロンピック！」を少し大きく（27px → 最大31px。画面がせまいときは1行に収まる大きさまで） */
.gm-boy .pk-over h2.pk-logo { font-size: min(30px, 8vw); letter-spacing: -.03em; white-space: nowrap; margin-left: -12px; margin-right: -12px; text-align: center; } /* 枠の左右の余白も少し使って、はみ出さずに大きく */
/* 2026-11-09：結果画面の「バッジ獲得！」の札は、名前の長さにかかわらず同じ大きさに（鍔本さんの指示） */
.gm-boy .gm-newbadge { width: min(260px, 100%); box-sizing: border-box; margin-left: auto; margin-right: auto; }

/* ========== ピックゲームの結果画面（2026-11-09 案E「ステージ」＋「魔人から逃げ延びた」） ========== */
.gm-stage .pk-over.pkr-on { padding: 0; background: #140d2a; justify-content: flex-start; }
.pkr { width: 100%; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; color: #fbf3df; }
.pkr-stage { position: relative; height: 330px; overflow: hidden; background: radial-gradient(ellipse at 50% 10%, #5a2a8a, #2a1650 45%, #140d2a 80%); }
.pkr-over .pkr-stage { background: radial-gradient(ellipse at 50% 20%, #7a1f3a, #3a1030 45%, #140a1a 80%); }
.pkr-smoke i { position: absolute; border-radius: 50%; background: radial-gradient(circle, rgba(199,125,255,.55), rgba(123,63,196,0) 70%); filter: blur(6px); animation: pkrSmoke 6s ease-in-out infinite alternate; }
.pkr-smoke i:nth-child(1) { left: -10%; top: 30%; width: 180px; height: 180px; }
.pkr-smoke i:nth-child(2) { right: -12%; top: 10%; width: 200px; height: 200px; animation-delay: -2s; }
.pkr-smoke i:nth-child(3) { left: 20%; bottom: -20%; width: 220px; height: 160px; animation-delay: -4s; }
.pkr-smoke i:nth-child(4) { right: 10%; bottom: 10%; width: 140px; height: 140px; animation-delay: -1s; }
@keyframes pkrSmoke { to { transform: translate(14px, -10px) scale(1.12); } }
/* クリア：右上のランプへ、魔人が小さくなって吸いこまれていく（ずっとくり返す） */
.pkr-lamp { position: absolute; right: 6px; top: 6px; width: 92px; opacity: .95; }
.pkr-genie { position: absolute; right: 26px; top: 22px; width: 60px; filter: drop-shadow(0 0 8px #c77dff) saturate(.6) brightness(1.1); animation: pkrSuck 3.2s ease-in infinite; }
@keyframes pkrSuck { 0% { transform: translate(-90px, 60px) scale(1.4) rotate(-10deg); opacity: .0; } 15% { opacity: .85; } 80% { transform: translate(8px, 14px) scale(.15) rotate(260deg); opacity: .8; } 100% { transform: translate(10px, 16px) scale(0); opacity: 0; } }
/* GAME OVER：大きな魔人がうしろからせまる */
.pkr-genie.big { right: auto; left: 50%; top: -10px; width: 300px; transform: translateX(-50%); opacity: .55; filter: drop-shadow(0 0 30px #ff3b5c) hue-rotate(-30deg) saturate(1.3); animation: pkrLoom 2.4s ease-in-out infinite alternate; }
@keyframes pkrLoom { from { transform: translateX(-50%) scale(1); } to { transform: translateX(-50%) scale(1.08) translateY(6px); } }
.pkr-spot { position: absolute; left: 50%; top: -30px; width: 280px; height: 380px; transform: translateX(-50%); background: radial-gradient(ellipse 50% 60% at 50% 100%, rgba(255,240,180,.45), transparent 70%), linear-gradient(transparent, rgba(255,240,180,.08)); clip-path: polygon(38% 0, 62% 0, 100% 100%, 0 100%); pointer-events: none; }
.pkr-over .pkr-spot { background: radial-gradient(ellipse 50% 60% at 50% 100%, rgba(255,90,110,.35), transparent 70%); }
.pkr-mem { position: absolute; left: 50%; bottom: -70px; height: 300px; transform: translateX(-50%); filter: drop-shadow(0 0 14px rgba(255,230,150,.55)); animation: pkrMemIn .6s cubic-bezier(.3,1.4,.5,1) both; }
.pkr-over .pkr-mem { filter: grayscale(.6) brightness(.75) drop-shadow(0 0 10px rgba(255,60,90,.6)); animation: pkrShake .5s ease-in-out 3; }
@keyframes pkrMemIn { from { transform: translate(-50%, 60px); opacity: 0; } }
@keyframes pkrShake { 25% { transform: translateX(calc(-50% - 4px)); } 75% { transform: translateX(calc(-50% + 4px)); } }
.pkr-head { position: absolute; left: 0; right: 0; top: 10px; text-align: center; z-index: 2; }
.pkr-diff { display: inline-block; padding: 2px 8px; border-radius: 4px; background: rgba(20,13,42,.75); color: #f0b429; font-family: "Press Start 2P", monospace; font-size: 9px; }
.pkr-head h2 { margin: 6px 0 0; font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 32px; line-height: 1.15; color: #ffe27a; text-shadow: 0 0 14px #f0b429, 2px 2px 0 #140d2a; letter-spacing: .02em; }
.pkr-over .pkr-head h2 { color: #ff8a9a; text-shadow: 0 0 14px #ff3b5c, 2px 2px 0 #140a1a; }
.pkr-sub { margin: 2px 0 0; font-size: 12px; color: #fbf3df; text-shadow: 0 1px 3px #000; }
.pkr-score { margin-top: 2px; line-height: 1; }
.pkr-score em { font-style: normal; font-family: "Dela Gothic One", sans-serif; font-size: 54px; color: #fff; text-shadow: 0 0 16px #ff5fd2, 3px 3px 0 #140d2a; }
.pkr-score small { font-size: 16px; margin-left: 2px; }
.pkr-best { margin: 2px 0 0; font-size: 11px; color: #ffe27a; text-shadow: 0 1px 3px #000; }
.pkr-conf i { position: absolute; left: var(--x); top: -10px; width: 7px; height: 11px; background: var(--c); animation: pkrConf 2.6s linear var(--d) infinite; }
@keyframes pkrConf { to { transform: translateY(350px) rotate(540deg); } }
.pkr-body { padding: 10px 12px 18px; background: linear-gradient(#140d2a, #1f1838); }
.pkr-stats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.pkr-stats li { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 6px 2px 5px; border-radius: 8px; background: rgba(255,255,255,.08); }
.pkr-stats .pkr-ic { height: 18px; display: grid; place-items: center; font-size: 14px; }
.pkr-stats .pkr-ic img { width: 18px; height: 18px; object-fit: contain; }
.pkr-stats .pkr-nm { font-size: 9px; color: #c9cfdf; white-space: nowrap; }
.pkr-stats b { font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 17px; color: #ffe27a; }
.pkr-stats li.mc b { color: #ff5fd2; }
.pkr-badges { display: grid; gap: 6px; margin-top: 8px; }
.pkr-bdg { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 10px; background: #f0b429; color: #1f2a44; text-align: left; }
.pkr-bdg > span { width: 30px; height: 30px; display: grid; place-items: center; background: #1f2a44; border-radius: 6px; flex: none; }
.pkr-bdg > span svg { width: 24px; height: 24px; }
.pkr-bdg small { display: block; font-size: 9px; color: #c8321f; }
.pkr-bdg b { font-size: 13px; }
.pkr-line { display: flex; justify-content: space-between; margin: 10px 2px 0; font-size: 11px; color: #c9cfdf; }
.pkr-line b { color: #fff; font-size: 13px; } .pkr-line b.r { color: #ffe27a; }
.pkr-next { margin: 3px 2px 0; font-size: 10px; color: #8d96b0; text-align: right; }
.pkr .rk-reg { margin-top: 10px; }
.pkr .gm-btn { width: 100%; margin-top: 10px; }
.pkr .gm-btn.sub { margin-top: 8px; }
@media (prefers-reduced-motion: reduce) { .pkr-genie, .pkr-smoke i, .pkr-conf i, .pkr-mem { animation: none !important; } }
/* 結果画面の調整：見出しの字（ほかの見出しの決まりより強く）・メンバーの顔に点数がかからないよう、点数は足もとに */
.gm-boy .pk-over .pkr-head h2 { font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 30px; line-height: 1.15; letter-spacing: .02em; color: #ffe27a; text-shadow: 0 0 14px #f0b429, 2px 2px 0 #140d2a; margin: 6px 0 0; }
.gm-boy .pk-over .pkr-over .pkr-head h2 { color: #ff8a9a; text-shadow: 0 0 14px #ff3b5c, 2px 2px 0 #140a1a; }
.gm-boy .pk-over .pkr-sub { margin: 2px 0 0; font-size: 12px; font-weight: 800; color: #fbf3df; }
.pkr-stage { height: 360px; }
.pkr-mem { top: 96px; bottom: auto; height: 300px; }
.pkr-foot { position: absolute; left: 0; right: 0; bottom: 0; padding: 26px 0 8px; text-align: center; z-index: 2; background: linear-gradient(transparent, rgba(20,13,42,.92) 55%); }
.pkr-over .pkr-foot { background: linear-gradient(transparent, rgba(20,10,26,.92) 55%); }
.gm-boy .pk-over .pkr-best { margin: 2px 0 0; font-size: 11px; color: #ffe27a; }
.gm-boy .pk-over .pkr-line { display: flex; justify-content: space-between; margin: 10px 2px 0; font-size: 11px; line-height: 1.4; font-weight: 800; color: #c9cfdf; }
.gm-boy .pk-over .pkr-next { margin: 3px 2px 0; font-size: 10px; line-height: 1.4; font-weight: 700; color: #8d96b0; text-align: right; }

/* ========== クイズの結果画面（2026-11-09 案C「称号の賞状」） ========== */
.gm-boy .qz-end.qzr { padding: 12px 12px 18px; background: #1f2a44; margin: -8px -10px 0; min-height: 100%; box-sizing: border-box; font-family: "M PLUS Rounded 1c", sans-serif; font-weight: 800; color: #1f2a44; text-align: center; }
.qzr-cert { position: relative; background: #fffaf0; border: 6px double #b8860b; outline: 2px solid #fffaf0; padding: 14px 14px 12px; box-shadow: 0 6px 0 rgba(0,0,0,.25); }
.qzr-stamp { position: absolute; right: 8px; top: 8px; width: 46px; height: 46px; border-radius: 50%; background: #c8321f; color: #fff; display: grid; place-items: center; font-family: "Kaisei Decol", serif; font-size: 10px; transform: rotate(-12deg); box-shadow: inset 0 0 0 2px #fffaf0, 0 0 0 2px #c8321f; }
.gm-boy .qzr .qzr-res { margin: 0; font-family: "Press Start 2P", monospace; font-size: 10px; color: #b8860b; letter-spacing: .04em; }
.gm-boy .qzr .qzr-lbl { margin: 8px 0 0; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 13px; color: #b8860b; }
.gm-boy .qzr .qzr-title { margin: 2px 0 4px; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 28px; line-height: 1.25; color: #c8321f; }
.gm-boy .qzr .qzr-msg { margin: 0; font-size: 12px; line-height: 1.5; color: #1f2a44; }
.qzr-score { display: flex; justify-content: center; align-items: baseline; gap: 6px; margin-top: 10px; }
.qzr-score span { font-size: 13px; }
.qzr-score b { font-family: "Dela Gothic One", sans-serif; font-weight: 400; font-size: 52px; line-height: 1; }
.gm-boy .qzr .qzr-one { margin: 2px 0 0; font-size: 12px; color: #c8321f; }
.gm-boy .qzr .qzr-clear { margin: 10px 0 4px; font-size: 11px; color: #5a6378; }
.qzr-clear b { font-size: 14px; color: #1f2a44; } .qzr-clear small { color: #c8321f; margin-left: 2px; }
.qzr-bar { position: relative; height: 10px; border-radius: 5px; background: #eee4cc; overflow: visible; margin: 0 6px; }
.qzr-fill { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 5px; background: linear-gradient(90deg, #f0b429, #c8321f); }
.qzr-bar > i:not(.qzr-fill) { position: absolute; top: -3px; width: 4px; height: 16px; margin-left: -2px; border-radius: 2px; background: #c9bfa5; }
.qzr-bar > i.on { background: #b8860b; }
.qzr-tiers { position: relative; height: 26px; margin: 4px 6px 0; font-size: 9px; color: #8d96b0; }
.qzr-tiers span { position: absolute; transform: translateX(-50%); white-space: nowrap; line-height: 1.2; }
.qzr-tiers span:last-child { transform: translateX(-100%); text-align: right; }
.qzr-tiers span small { display: block; font-size: 8px; }
.qzr-tiers span.on { color: #b8860b; }
.gm-boy .qzr .qzr-next { margin: 4px 0 0; font-size: 10px; color: #5a6378; }
.qzr-badges { display: grid; gap: 6px; margin-top: 10px; }
.qzr-miss { margin-top: 10px; background: #fbf3df; border-radius: 10px; padding: 8px 12px; text-align: left; }
.qzr-miss summary { font-size: 12px; color: #c8321f; cursor: pointer; }
.qzr-miss ul { list-style: none; margin: 6px 0 0; padding: 0; }
.qzr-miss li { padding: 6px 0; border-top: 1px dashed #d8ccb0; font-size: 11.5px; line-height: 1.55; font-weight: 700; }
.qzr-miss li span { display: block; }
.qzr-miss li b { display: block; color: #c8321f; font-weight: 800; }
.qzr-miss li a { font-size: 11px; color: #2a6bb3; }
.gm-boy .qzr .qzr-allok { margin: 10px 0 0; color: #ffe27a; font-size: 13px; }
.qzr .gm-btn { width: 100%; margin-top: 10px; }
.qzr .gm-btn.sub { margin-top: 8px; background: #fbf3df; }
.gm-boy .qz .qzr h2.qzr-title, .gm-boy .qzr h2.qzr-title { text-shadow: none; font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 28px; color: #c8321f; letter-spacing: .02em; margin: 2px 0 4px; }
.qzr-stamp { font-size: 8.5px; letter-spacing: -.02em; }
/* 2026-11-09：賞状の「今回 ○ / 10問」の数字の字を変更（鍔本さんの指示）。称号と同じ字（Kaisei Decol）で、賞状らしく */
.gm-boy .qzr .qzr-score b { font-family: "Kaisei Decol", serif; font-weight: 700; font-size: 54px; line-height: 1; color: #1f2a44; letter-spacing: 0; }
/* 2026-11-09：クイズのローディング画面のタイトルを、ふちどり文字（Rampart One）に（鍔本さんの指示） */
.gm-boy .qzl-t, .qzl-t { font-family: "Rampart One", sans-serif; font-weight: 400; font-size: 28px; line-height: 1.15; letter-spacing: .02em; color: var(--red); text-shadow: 3px 3px 0 var(--mustard); }
/* 2026-11-09：クイズのローディング画面のタイトルは、ポップな丸文字（Mochiy Pop One）に決定（鍔本さんが I を選択）。影は黄色と紺の2重で、元のタイトルらしく */
.gm-boy .qzl-t, .qzl-t { font-family: "Mochiy Pop One", sans-serif; font-weight: 400; font-size: 27px; line-height: 1.2; letter-spacing: .02em; color: var(--red); text-shadow: 2px 2px 0 var(--mustard), 4px 4px 0 var(--navy); }

/* 2026-11-09：クイズのローディング画面の位置と大きさを調整（鍔本さんの指示）。
   中身が上に寄って下が空いていたので、画面の上下まん中に置き、タイトル・4人・文字をひとまわり大きく */
.gm-boy .qz-load { min-height: 548px; justify-content: center; gap: 10px; padding: 8px 0 14px; box-sizing: border-box; }
.gm-boy .qzl-t, .qzl-t { font-size: 31px; line-height: 1.2; margin-bottom: 0; }
.gm-boy .qzl-stage { transform: scale(1.06); transform-origin: 50% 100%; margin: 38px 0 20px; } /* 机が画面のふちに当たらない大きさ */
.gm-boy .qzl-sub { font-size: 15px; margin-top: 6px; }
.gm-boy .qzl-bar { width: 78%; max-width: 270px; height: 14px; }
.gm-boy .qzl-msg { font-size: 10px; margin-top: 2px; }
.gm-boy .qzl-clear { font-size: 13px; margin-top: 6px; }
.gm-boy .qzl-clear b { font-size: 17px; }

/* ポップコーンのページ：説明カードをかくしている間（WAIT_INFO.card=false）、下のタブに隠れないよう余白だけ置く（2026-11-09） */
#popcornPage .pcb-space { height: 90px; }

/* ホーム画面に追加して開いたとき（2026-11-09 鍔本さんの報告）：iPhone は時計・電池の帯の下を少しぼかすので、
   右上の音符ボタンの上のほうがぼけて見えた。ホーム画面から開いたときだけ、ボタンを少し下げて、ぼける所から出す */
@media (display-mode: standalone) {
  .bgm { top: calc(24px + env(safe-area-inset-top)); }
}

/* ===== ランキングの画面（2026-11-09 全体を見直し・鍔本さんの指示）：表彰台＋4〜10位＋あなたのベスト ===== */
.rkp-head { margin-bottom: 10px; }
.rkp-game { display: inline-block; margin: 6px 0 0; padding: 4px 12px; border-radius: 999px; background: var(--red); color: #fff; font-size: 12px; font-weight: 800; letter-spacing: .04em; }
.gm-boy .rkp-head .aname { margin: 0; }
.rkp-podium { display: grid; grid-template-columns: 1fr 1.15fr 1fr; align-items: end; gap: 6px; margin: 14px 0 0; }
.rkp-pod { display: flex; flex-direction: column; align-items: center; min-width: 0; text-align: center; color: #fff; }
.rkp-crown { height: 30px; display: flex; align-items: flex-end; }
.rkp-crown .gm-cup { width: 30px; height: 30px; }
.rkp-pn { max-width: 100%; margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 800; }
.rkp-pn i { display: block; margin: 2px auto 0; width: max-content; padding: 2px 5px; border-radius: 999px; background: var(--red); color: #fff; font-style: normal; font-family: "Press Start 2P", monospace; font-size: 7px; }
.rkp-ps { margin: 2px 0 4px; font-style: normal; font-family: "Press Start 2P", monospace; font-size: 12px; color: var(--mustard); }
.rkp-ps small { margin-left: 2px; font-family: "M PLUS Rounded 1c", sans-serif; font-size: 10px; color: #fff; }
.rkp-step { width: 100%; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 2px; padding-top: 6px; border-radius: 8px 8px 0 0; color: var(--navy); }
.rkp-step span { font-family: "Press Start 2P", monospace; font-size: 18px; line-height: 1.2; }
.rkp-step small { font-family: "Press Start 2P", monospace; font-size: 7px; opacity: .75; }
.rkp-pod.p1 .rkp-step { height: 76px; background: linear-gradient(#ffd75e, var(--mustard)); box-shadow: inset 0 -4px 0 rgba(0,0,0,.18); }
.rkp-pod.p2 .rkp-step { height: 56px; background: linear-gradient(#f1f1f1, #c9cdd6); box-shadow: inset 0 -4px 0 rgba(0,0,0,.15); }
.rkp-pod.p3 .rkp-step { height: 44px; background: linear-gradient(#f0bf8f, #d98f52); box-shadow: inset 0 -4px 0 rgba(0,0,0,.15); }
.rkp-pod.p1 .rkp-pn { font-size: 15px; }
.rkp-pod.p1 .rkp-ps { font-size: 14px; }
.rkp-pod.empty .rkp-pn, .rkp-pod.empty .rkp-ps { color: #5d6788; }
.rkp-pod.empty .rkp-step { opacity: .35; }
.rkp-pod.me .rkp-pn { color: var(--mustard); }
.rkp-podium + .rkp-msg, .rkp-podium + .rkp-list { border-top: 3px solid #2a3558; }
.rkp-msg { margin: 0; padding: 12px 4px 4px; text-align: center; font-size: 13px; line-height: 1.6; color: #c9c4b8; }
.rkp-list { margin-top: 0; padding-top: 8px; }
.gm-boy .rkp-list li { font-size: 14px; padding: 5px 10px; }
.rkp-me { display: flex; align-items: baseline; flex-wrap: wrap; justify-content: center; gap: 4px 12px; margin: 12px 0 0; padding: 10px 12px; border: 2px dashed #2a3558; border-radius: 10px; color: #c9c4b8; text-align: center; font-size: 13px; }
.rkp-me.on { border: 2px solid var(--mustard); background: rgba(240, 180, 41, .12); color: #fff; }
.rkp-me b, .rkp-me em { font-style: normal; font-family: "Press Start 2P", monospace; font-size: 15px; color: var(--mustard); }
.rkp-me b small, .rkp-me em small { margin-left: 2px; font-family: "M PLUS Rounded 1c", sans-serif; font-size: 11px; color: #fff; }
.rkp-mhint { flex-basis: 100%; font-size: 11px; color: #8d96b0; }
.rkp-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 10px 0 0; font-size: 10px; color: #8d96b0; text-align: left; }
.rkp-reload { flex: none; padding: 5px 10px; border: 2px solid #2a3558; border-radius: 999px; background: transparent; color: #fff; font: inherit; font-size: 11px; font-weight: 800; cursor: pointer; }
.gm-boy .rkp-play.gm-btn { width: 100%; margin: 12px 0 2px; }

/* ランキングの画面：ボタンをなくしたあとの配置の調整（2026-11-09 鍔本さんの指示）。
   1画面に収まるように：難易度は横1列（SUPER HARD は2行）、表彰台と一覧を少しつめる */
.rkp-head { margin-bottom: 8px; }
.rk-tabs.rk-tabs3.rkp-tabs { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; margin-bottom: 0; }
.gm-boy .rkp-tabs button { height: 38px; padding: 0 2px; font-size: 8px; line-height: 1.5; }
.rkp-podium { margin-top: 10px; }
.rkp-crown { height: 26px; }
.rkp-crown .gm-cup { width: 26px; height: 26px; }
.rkp-pn { margin-top: 2px; font-size: 12px; }
.rkp-pod.p1 .rkp-pn { font-size: 14px; }
.rkp-ps { min-height: 14px; margin: 2px 0 4px; font-size: 11px; }
.rkp-pod.p1 .rkp-ps { font-size: 13px; }
.rkp-pod.p1 .rkp-step { height: 64px; }
.rkp-pod.p2 .rkp-step { height: 48px; }
.rkp-pod.p3 .rkp-step { height: 38px; }
.rkp-step { padding-top: 5px; }
.rkp-step span { font-size: 16px; }
.rkp-msg { padding: 14px 4px 6px; }
.rkp-list { gap: 3px; padding-top: 6px; }
.gm-boy .rkp-list li { padding: 3px 10px; font-size: 13px; }
.gm-boy .rkp-list .rk-no { width: 22px; height: 22px; }
.gm-boy .rkp-list b { font-size: 11px; }
.rkp-me { margin-top: 10px; padding: 8px 12px; }
.rkp-foot { margin-top: 8px; }
/* ほかの所の .p1 などの余白（上下30px）が表彰台にもかかっていたので消す */
.rkp-podium .rkp-pod { padding: 0; }
/* 「あなたのベスト」と下の説明は、画面のいちばん下にそろえる（人数が少ないときに下が空かないように） */
.gm-boy .gmb-screen .rkp-me { margin-top: auto; }
.rkp-list { gap: 2px; padding-top: 5px; }
.gm-boy .rkp-list li { padding: 2px 10px; }
.gm-boy .rkp-list .rk-no { width: 20px; height: 20px; font-size: 9px; }
.rkp-me { padding: 6px 12px; }
.rkp-foot { white-space: nowrap; }
.rkp-foot span { overflow: hidden; text-overflow: ellipsis; }
/* 「あなたのベスト 377点 6位」の数字と「点・位」の高さがずれていたのを直す（ドットの数字と日本語は基準の線がちがうので、上下の真ん中でそろえる） */
.rkp-me { align-items: center; }
.rkp-me b, .rkp-me em { display: inline-flex; align-items: center; gap: 3px; line-height: 1; }
.rkp-me b small, .rkp-me em small { margin-left: 0; line-height: 1; position: relative; top: 1px; }
.rkp-me > span { line-height: 1.2; }
/* 一覧の自分の行で、順位の数字が黄色に溶けて見えなかったのを直す */
.gm-boy .gmb-screen .rkp-list li.me .rk-no { background: var(--navy); color: var(--mustard); }
/* 一覧と表彰台の「○○点」も同じようにそろえる */
.gm-boy .rkp-list b, .rkp-ps { display: inline-flex; align-items: center; justify-content: center; gap: 2px; line-height: 1; }
.gm-boy .rkp-list b small, .rkp-ps small { margin-left: 0; line-height: 1; position: relative; top: 1px; }

/* ポップコーンの数と「魔人の声まで あと○個」（2026-11-10） */
#popcornPage .pcb-count small { display: block; margin-top: 2px; font-size: 10px; font-weight: 800; opacity: .85; letter-spacing: .02em; }
/* 魔人の声が流れているあいだの札 */
#popcornPage .pcb-voice { position: absolute; left: 50%; top: 64px; z-index: 6; margin: 0; padding: 7px 14px; border-radius: 999px; white-space: nowrap; pointer-events: none;
  background: linear-gradient(135deg, #7b3fc4, #c77dff); color: #fff; font-weight: 800; font-size: 14px; box-shadow: 0 0 18px rgba(199, 125, 255, .9), 0 0 0 2px #fbf3df inset; }
#popcornPage .pcb-voice span { margin-right: 6px; }
#popcornPage .pcb-voice b { font-size: 18px; color: #ffe27a; margin: 0 1px; }
/* 声の間は、ランプが少しふるえる */
#popcornPage .pcb-lamp.speaking img { animation: pcSpeak .18s ease-in-out infinite alternate; }
@keyframes pcSpeak { from { transform: rotate(-2deg) scale(1.02); } to { transform: rotate(2deg) scale(1.04); } }
#popcornPage .pcb-count { border-radius: 12px; text-align: right; line-height: 1.35; }
#popcornPage .pcb-voice { top: 214px; } /* 上の吹き出しと重ならない所（吹き出しとランプのあいだ） */

/* ===== 5000個ごとに出てくる魔人（2026-11-10）：注ぎ口からけむりのように立ちのぼる ===== */
#popcornPage .pcb-genie { position: absolute; z-index: 5; width: 0; height: 0; pointer-events: none; }
#popcornPage .pcb-genie img { position: absolute; left: 0; top: 0; height: 230px; width: auto; transform-origin: 50% 100%; opacity: 0;
  -webkit-mask-image: linear-gradient(to top, transparent 0, rgba(0,0,0,.35) 14%, #000 42%); mask-image: linear-gradient(to top, transparent 0, rgba(0,0,0,.35) 14%, #000 42%);
  filter: drop-shadow(0 0 14px rgba(199,125,255,.95)); }
/* 足もとのけむり：注ぎ口から魔人の体へ、むらさきの玉がもくもく立ちのぼる */
#popcornPage .pg-smoke { position: absolute; left: -60px; top: -20px; width: 120px; height: 0; }
#popcornPage .pg-smoke b { position: absolute; left: 50%; bottom: 0; width: 46px; height: 46px; margin-left: -23px; border-radius: 50%;
  background: radial-gradient(circle at 40% 40%, rgba(232,200,255,.9), rgba(155,93,229,.55) 55%, rgba(123,63,196,0) 72%); filter: blur(3px); opacity: 0;
  animation: pgSmoke 2.2s ease-out infinite; }
#popcornPage .pg-smoke b:nth-child(2) { animation-delay: .25s; --sx: -26px; width: 56px; height: 56px; }
#popcornPage .pg-smoke b:nth-child(3) { animation-delay: .5s;  --sx: 22px; }
#popcornPage .pg-smoke b:nth-child(4) { animation-delay: .75s; --sx: -14px; width: 64px; height: 64px; }
#popcornPage .pg-smoke b:nth-child(5) { animation-delay: 1s;   --sx: 30px; width: 52px; height: 52px; }
#popcornPage .pg-smoke b:nth-child(6) { animation-delay: 1.25s; --sx: -32px; }
#popcornPage .pg-smoke b:nth-child(7) { animation-delay: 1.5s; --sx: 12px; width: 60px; height: 60px; }
#popcornPage .pg-smoke b:nth-child(8) { animation-delay: 1.75s; --sx: -6px; }
#popcornPage .pg-smoke b:nth-child(9) { animation-delay: 2s;   --sx: 24px; width: 50px; height: 50px; }
@keyframes pgSmoke {
  0% { transform: translate(0, 0) scale(.3); opacity: 0; }
  15% { opacity: .9; }
  100% { transform: translate(var(--sx, 0), -150px) scale(1.9); opacity: 0; }
}
#popcornPage .pcb-genie.out .pg-smoke { transition: opacity 1.2s; opacity: 0; }
/* 魔人が出ているあいだは、上の吹き出しをうすくする */
#popcornPage .pcb-stage.genie-on .pcb-catch { transition: opacity .6s; opacity: .12; }
#popcornPage .pcb-voice { top: 412px; } /* 魔人とかさならないよう、ランプの下に */
#popcornPage .pcb-voice { top: 418px; transform: translateX(-50%); animation: pcVoiceIn .4s ease-out; } @keyframes pcVoiceIn { from { opacity: 0; transform: translate(-50%, 8px) scale(.7); } to { opacity: 1; transform: translateX(-50%); } }
#popcornPage .pcb-voice { top: 366px; } /* ランプのすぐ下・タイトルの上 */
/* 魔人の絵：大きさと場所は app.js で数字で決める（iPhone でずれないように・2026-11-10） */
#popcornPage .pcb-genie img { max-width: none; }
/* けむりは注ぎ口の先から立ちのぼる（2026-11-11） */
#popcornPage .pg-smoke { top: 0; }
/* サビで明るくなるとき、iPhone で舞台の絵（バンドの看板・メンバー）が左下に小さくずれて出た（2026-11-11 鍔本さんの報告）。
   明るくするのに filter（brightness）と、その切りかえのアニメを使っていたのが原因とみて、filter をやめる。
   代わりに、舞台の上に うすい光の板をかさねて明るく見せる */
.pk-bg.sabi > *:not(.pk-genie), .pk-bg.sabi .pk-wall, .pk-bg.sabi .pk-st, .pk-bg.sabi .pk-floor { filter: none; transition: none; }
.pk-bg .pk-wall::after, .pk-bg .pk-floor::after { content: ""; position: absolute; inset: 0; background: rgba(255, 238, 180, .26); opacity: 0; transition: opacity .3s; pointer-events: none; }
.pk-bg.sabi .pk-wall::after, .pk-bg.sabi .pk-floor::after { opacity: 1; }
/* 結果をシェア（2026-11-12） */
.gm-btn.share { background: #f0b429; color: var(--navy); }
.gm-btn.share::before { content: "↗ "; }
/* X・Instagram に投稿（2026-11-12） */
.pk-share { display: flex; gap: 8px; max-width: 280px; margin: 8px auto 0; }
.pk-share .gm-btn { margin: 0; flex: 1; padding: 12px 6px; font-size: 14px; }
.gm-btn.share::before { content: none; }
.gm-btn.share.x { background: #111; color: #fff; }
.gm-btn.share.ig { background: linear-gradient(45deg, #f9ce34, #ee2a7b 55%, #6228d7); color: #fff; }
.sh-toast { position: fixed; left: 50%; bottom: 110px; transform: translateX(-50%); z-index: 9999; background: rgba(20,13,42,.92); color: #fff; padding: 10px 14px; border-radius: 12px; font-size: 13px; font-weight: 700; max-width: 300px; text-align: center; transition: opacity .5s; }
.sh-toast.off { opacity: 0; }
