/* ステラオーブ ステージモード(試作・非公開ページ)の画面。hexdrop.css(宇宙の背景・ボタン・盤面・設定パネル)の上に重ねる */

/* ================================ UI v2 デザイントークン (W2: ボタン・パネル) =========================
   他の担当の変更もこの名前に頼る。ボタンの段階は .hd-btn.primary / .secondary / .tertiary / .danger(下の「UI v2 ボタンの段階」)。
   角丸は 12px(チップ・小さいボタン)と 16px(パネル・ダイアログ・大きいボタン)だけ。円・カプセルは 50% / 999px のまま。 */
:root {
  --st-r-s: 12px;                 /* チップ・小さいボタン */
  --st-r-l: 16px;                 /* パネル・ダイアログ・大きいボタン */
  --st-gold: #f2c14e;
  --st-gold-soft: #ffe08a;
  --st-gold-line: #d9b45a;        /* 大事なパネルの上辺の細い金線: border-top: 1px solid var(--st-gold-line) */
  --st-plate: linear-gradient(180deg, #fff2bf 0%, #ffd45e 38%, #e8a93a 70%, #c17a1a 100%);   /* 主ボタン = 金の板(2026-10-24。オレンジをやめた) */
  --st-plate-down: linear-gradient(180deg, #ffe08a, #c98f2a);   /* 押している間(少し暗い金) */
  --st-plate-edge: #8a5a14;       /* 板の縁 */
  --st-plate-base: #7a4a0c;       /* 板の下の2px影 */
  --st-plate-text: #2a1704;
  --st-blue: #5b7bff;             /* 「選んでいる」状態だけ */
  --st-red: #e0546a;              /* 警告・危険な操作 */
  --st-red-soft: #ff9aa8;
  --st-navy-0: #05071e;
  --st-navy-1: #0a0e3c;
  --st-navy-2: #141a5c;
  --st-rar-3: #c9d3e6;            /* ★3 銀 */
  --st-rar-4: #d9962a;            /* ★4 琥珀(星と枠は同じ色。★5 の淡い金と1pxの線でも見分けられる) */
  --st-rar-5: #ffe9a6;            /* ★5 淡い金(枠は白く光る金のきらめき。虹は結果の大きな星だけ) */
  --st-blur: 16px;                /* パネルの背景ぼかし */
  --st-panel-bg: linear-gradient(rgba(16,20,70,0.78), rgba(5,7,30,0.88));
  /* 副ボタン(濃紺 + 金の縁)の共通部品。ロビー右の丸ボタン・ミッションと同じ見た目。使うのは「副ボタンの形」の1か所(下の UI v2 ボタンの段階) */
  --st-sub-bw: 2px;               /* 金の縁の太さ(小さな札は 1px に) */
  --st-sub-fill: linear-gradient(#232c78, #0f1347 60%, #0a0d33);
  --st-sub-rim: linear-gradient(#fff3b8, #dba43a 45%, #8a5a14);
  --st-sub-text: #fff3cf;
  --st-sub-shadow: inset 0 1px 0 rgba(255,244,190,0.4), inset 0 -3px 0 rgba(0,0,0,0.38), 0 3px 8px rgba(0,0,0,0.5), 0 0 12px rgba(255,200,90,0.16);
  --st-sub-on-fill: linear-gradient(rgba(255,214,120,0.34), rgba(255,214,120,0.12)), var(--st-sub-fill);   /* 選んでいる = 金の色づけ + 明るい縁 */
  --st-sub-on-rim: linear-gradient(#fffbe0, #ffd45e 45%, #c98f2a);
  --st-screen-in: 160ms;          /* 画面の切り替え: 160ms の 8px のスライド(フェードなし: 透明の画面を見せない) */
}
/* ================================ /UI v2 デザイントークン ================================ */


:root {
  --el-fire: #ff7a2a;  --elt-fire: #2a1002;
  --el-water: #4485ff; --elt-water: #031433;
  --el-grass: #3ccf66; --elt-grass: #03230e;
  --el-light: #ffd24a; --elt-light: #2e2300;
  --el-dark: #a655ff;  --elt-dark: #14012b;
  --st-glass: var(--st-panel-bg);
  --st-line: rgba(150,170,255,0.3);
}
/* 色覚サポート「見分けやすい配色」のときは、属性の色も盤面の玉と同じ色にそろえる(JS が html.st-cud を付ける) */
html.st-cud {
  --el-fire: #f57c54;  --elt-fire: #2a0e05;
  --el-water: #166084; --elt-water: #ffffff;
  --el-grass: #89d5bb; --elt-grass: #082a20;
  --el-light: #fef05b; --elt-light: #2e2600;
  --el-dark: #935ee9;  --elt-dark: #ffffff;
}

.st-page { padding-bottom: 8px; }
.st-screen[hidden] { display: none; }
.st-screen { min-width: 0; }
.st-note { margin: 6px 2px; font-size: 0.75rem; color: #aeb5d8; line-height: 1.6; }
.st-back { min-height: 34px; }

/* ---- 属性のバッジ(色+漢字。色だけに頼らない) ---- */
.st-badge {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  min-width: 1.5em; height: 1.5em; padding: 0 0.3em; border-radius: 999px;
  font-size: 0.75rem; font-weight: 800; line-height: 1; letter-spacing: 0;
  border: 1px solid rgba(255,255,255,0.55); background: var(--el, #666); color: var(--elt, #fff);
  text-shadow: none; box-shadow: 0 1px 3px rgba(0,0,0,0.5);
}
html.st-cud .st-badge { border-color: rgba(0,0,0,0.55); box-shadow: 0 0 0 1px rgba(255,255,255,0.6); }
.el-fire { --el: var(--el-fire); --elt: var(--elt-fire); }
.el-water { --el: var(--el-water); --elt: var(--elt-water); }
.el-grass { --el: var(--el-grass); --elt: var(--elt-grass); }
.el-light { --el: var(--el-light); --elt: var(--elt-light); }
.el-dark { --el: var(--el-dark); --elt: var(--elt-dark); }
/* 星の大きさは「どこでも整数の px」(font-size を整数の px にし、星は 1em = その px)。rem / vw / clamp にすると 12.8px のような小数になり、
   画面の拡大率によっては列の中の1つだけ丸めで小さく見える(2026-10-24)。gap も整数。場所ごとの大きさは下の .st-stars の font-size だけで決める。 */
/* ---- レア度の見た目(UI v2): ★3 銀 / ★4 金 / ★5 虹。星は SVG の形に切り抜いた <i class="st-star">(SL.starsHtml)。枠は .rf + .r3/.r4/.r5(::before のリング) ---- */
.r3 { --rc: #c9d3e6; --rc-grad: linear-gradient(135deg, #f1f5fc, #c9d3e6 45%, #8e9bb8); }
.r4 { --rc: #d9962a; --rc-grad: linear-gradient(135deg, #ffe08a, #d9962a 45%, #9a5f0e); }
.r5 { --rc: #ffe9a6; --rc-grad: linear-gradient(110deg, #f0a818, #ffd24a 25%, #fffdf0 40%, #ffd24a 55%, #f0a818 75%, #ffd24a); }   /* ★5 の大きな枠: 金 → 白 → 金のきらめき */
.st-stars { display: inline-flex; align-items: center; gap: 1px; font-size: 12px; line-height: 1; color: var(--rc, #c9d3e6); white-space: nowrap; vertical-align: middle; filter: drop-shadow(0 1px 1px rgba(0,0,0,0.85)); }
.st-star { display: block; flex: none; width: 1em; height: 1em; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1.6l3.2 6.8 7.4 1-5.4 5.1 1.4 7.4L12 18.4l-6.6 3.5 1.4-7.4L1.4 9.4l7.4-1z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 1.6l3.2 6.8 7.4 1-5.4 5.1 1.4 7.4L12 18.4l-6.6 3.5 1.4-7.4L1.4 9.4l7.4-1z'/%3E%3C/svg%3E") center / contain no-repeat; }
/* UI v3: 星は ★3 銀 / ★4 金 / ★5 明るい金 + 白いハイライトの点(小さい星で虹色にすると、緑〜水色しか見えず別の数に見えた)。虹は大きい星(20px 以上 = ガチャ結果)だけ */
.st-stars.r4 .st-star { background: linear-gradient(135deg, #f6c85f, #d9962a 62%, #bf7d17); }   /* ★4 金〜琥珀(枠の琥珀と同じ系統) */
.st-stars.r5 { color: #ffd23a; filter: drop-shadow(0 0 3px rgba(255,214,90,0.85)) drop-shadow(0 1px 1px rgba(0,0,0,0.85)); }
.st-stars.r5 .st-star { background: radial-gradient(circle at 36% 30%, #fff 0 15%, rgba(255,255,255,0) 26%), linear-gradient(135deg, #fff1a0, #ffd23a 55%, #f0a818); }
.st-rv-spot .big-stars .st-stars.r5 .st-star, .st-rv-cards.one .face .st-stars.r5 .st-star { background: radial-gradient(circle at 36% 30%, #fff 0 10%, rgba(255,255,255,0) 20%), linear-gradient(90deg, #ff7aa8, #ffd24a 28%, #9dffc4 52%, #62c8ff 76%, #c58bff); }
/* 枠(.rf)。一覧(キャラ・パーティー・コレクション)は 1px の線: ★5 金 / ★4 銀 / ★3 ブロンズ(--rl)。虹・金属色のグラデーション(--rc-grad)は、結果とキャラ詳細の大きなカードだけ(下の .rf-hero 相当) */
.r3 { --rl: #c9d3e6; }   /* ★3 銀 / ★4 琥珀 / ★5 淡い金 = 星の色(--st-rar-*)と同じ系統 */
.r4 { --rl: #d9962a; }   /* ★4 琥珀 */
.r5 { --rl: #ffe9a6; }   /* ★5 淡い金 + 内側に 1px の光(下の .rf.r5::before) */
.rf.r5:where(:not(.face, .frame, .st-sh-art)) { box-shadow: 0 0 6px rgba(255,233,166,0.34); }
.rf.r5:where(:not(.face, .frame, .st-sh-art))::before { filter: drop-shadow(0 0 1.5px rgba(255,250,224,0.95)); }   /* 1px の線の内側と外側がにじむ = ★4 の琥珀と並べても 1px で見分けられる */   /* ★5 の一覧の枠だけ、ほのかな光 */
.rf { position: relative; --rf-w: 1px; }
.rf::before { content: ''; position: absolute; inset: 0; z-index: 2; border-radius: inherit; padding: var(--rf-w); background: var(--rl, var(--rc)); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); pointer-events: none; }
.st-sh-art.rf::before, .st-rv-card .face.rf::before, .st-rv-spot .frame.rf::before { background: var(--rc-grad); }
.st-rv-card .face.rf { --rf-w: 1.5px; }
.st-rv-card.r5 .face.rf { --rf-w: 2px; }
.st-rv-card.r3 .face.rf::before { opacity: 0.7; }
@keyframes rfPrism { to { background-position: 200% 0; } }

/* 丸いアイコン(元の絵は正方形。丸く切り抜き、属性色の縁) */
.st-ico { display: block; border-radius: 50%; object-fit: cover; background: #0c1030; border: 2px solid var(--el, rgba(255,255,255,0.4)); }

/* ============================ ステージ選択 ============================ */
.st-chapter { margin: 8px 0 6px; display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.st-chapter h2 { margin: 0; font-size: 1.05rem; text-shadow: 0 0 12px rgba(120,140,255,0.5), 0 1px 2px rgba(0,0,0,0.8); }
.st-chapter span { font-size: 0.75rem; color: #b3b9dc; }
.st-list { display: grid; gap: 8px; }
.st-stage-card {
  position: relative; display: grid; grid-template-columns: 56px minmax(0, 1fr) auto; align-items: center; gap: 10px;
  width: 100%; padding: 8px 12px 8px 8px; text-align: left; color: #f0f0f5; font: inherit;
  background: var(--st-glass); border: 1px solid var(--st-line); border-radius: 14px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 0 16px rgba(90,100,255,0.14); cursor: pointer;
}
.st-stage-card:hover { filter: brightness(1.12); }
.st-stage-card:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-stage-card .st-ico { width: 56px; height: 56px; }
.st-sc-id { font-size: 0.75rem; color: #9fb4ff; font-weight: 700; }
.st-sc-name { font-size: 1rem; font-weight: 800; line-height: 1.25; }
.st-sc-desc { margin-top: 2px; font-size: 0.75rem; color: #c6cbe8; line-height: 1.4; }
.st-sc-state { font-size: 0.75rem; font-weight: 700; text-align: right; white-space: nowrap; color: #8fd4a6; }
.st-sc-state small { display: block; font-weight: 400; color: #aeb5d8; }
.st-stage-card[aria-disabled="true"] { cursor: not-allowed; filter: grayscale(0.85) brightness(0.62); }
.st-stage-card[aria-disabled="true"]:hover { filter: grayscale(0.85) brightness(0.62); }
.st-stage-card[aria-disabled="true"] .st-sc-state { color: #aeb5d8; }

/* ============================ 編成 ============================ */
.st-waves { display: flex; align-items: center; gap: 6px; margin: 4px 0 8px; font-size: 0.75rem; color: #b3b9dc; flex-wrap: wrap; }
.st-wave-ico { position: relative; width: 34px; height: 34px; }
.st-wave-ico .st-ico { width: 34px; height: 34px; border-width: 2px; }
.st-wave-ico.boss .st-ico { border-color: #ff6a7d; box-shadow: 0 0 8px rgba(255,90,110,0.7); }
.st-wave-tier { position: absolute; right: -4px; bottom: -3px; padding: 0 3px; border-radius: 5px; font-size: 0.75rem; line-height: 1.4; color: #1a1030; background: linear-gradient(180deg, #ffe08a, #e9b440); pointer-events: none; }
/* 編成の3つの枠 = 横一列のカード(2026-10-24 オーナー承認 案B2)。上の行に リーダーの札(左)・金の形のアイコン(右)、顔(48px・右下に属性のオーブ)、名前(1行・…)、Lv */
.st-slots { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.st-slot {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 0; width: 100%;
  padding: 4px 4px 5px; font: inherit; text-align: center; color: #f0f0f5; cursor: pointer;
  background: var(--st-glass); border: 1px solid var(--st-line); border-radius: 12px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
}
.st-slot.sel { border-color: #ffd166; box-shadow: 0 0 0 2px rgba(255,209,102,0.55), 0 0 14px rgba(255,209,102,0.3); }
.st-slot:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-slot-top { display: flex; align-items: center; justify-content: flex-end; align-self: stretch; gap: 4px; min-height: 20px; }
.st-slot-top .st-lead-tag { margin-right: auto; padding: 0 5px; line-height: 1.3; }
.st-slot-top .st-si.sc svg { width: 20px; height: 20px; }
.st-slot-top .st-si.sc.line svg { width: 32px; height: 10px; }
.st-slot-face { position: relative; display: block; width: 48px; height: 48px; flex: none; }
.st-slot .st-ico { width: 48px; height: 48px; }
.st-slot-face .st-badge { position: absolute; right: -7px; bottom: -4px; }
.st-slot-face .st-badge img { width: 18px; height: 18px; }
.st-slot-name { display: block; max-width: 100%; font-size: 0.82rem; font-weight: 800; line-height: 1.3; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-slot .st-own { line-height: 1.2; }
.st-roster-h { margin: 10px 0 4px; font-size: 0.78rem; color: #cfd8ff; }
.st-roster { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.st-rc {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 4px 2px 3px; font: inherit; color: #f0f0f5; cursor: pointer;
  background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); border-radius: 10px;
}
.st-rc .st-ico { width: 100%; max-width: 52px; height: auto; aspect-ratio: 1; }
.st-rc-name { font-size: 0.75rem; font-weight: 700; line-height: 1.15; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-rc .st-badge { position: absolute; top: 2px; left: 2px; font-size: 0.75rem; }
.st-rc.used { opacity: 0.55; }
.st-rc.used::after { content: attr(data-slot-label); position: absolute; right: 2px; top: 2px; font-size: 0.75rem; font-weight: 800; padding: 0 3px; border-radius: 4px; background: rgba(110,130,255,0.9); color: #fff; }
.st-rc:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-pfoot { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
.st-psum { font-size: 0.78rem; color: #cfd8ff; }
.st-psum b { color: #7CFC9C; }

/* ============================ 戦闘 ============================ */
.st-battle { max-width: 520px; margin: 0 auto; }
.st-bhead { margin-bottom: 4px; }
.st-bhead .hd-title { font-size: 0.95rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-stage.hd-stage { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.st-stage .hd-play, .st-stage .hd-controls { grid-area: auto; }
#stBelow { width: 100%; max-width: 520px; display: flex; flex-direction: column; align-items: center; gap: 6px; }
#stBelow .hd-controls { max-width: 420px; }
.st-stage #stEnemy { width: 100%; max-width: 520px; }

/* ---- 敵のエリア: 大きな敵の絵(.st-efx) + 足元のHPバー(色=属性) + 左にカウントダウンの数字。WAVEは左上、NEXTは右 ---- */
.st-enemy { position: relative; display: flex; flex-direction: column; align-items: stretch; }
.st-dg-ico { flex: none; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; border: 2px solid var(--el, #d9b45a); background: radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--el, #d9b45a) 30%, rgba(20,24,64,0.9)), rgba(8,10,34,0.95) 70%); box-shadow: 0 0 10px color-mix(in srgb, var(--el, #d9b45a) 45%, transparent); }
.st-dg-ico.coin { --el: #f2c14e; }
.st-dg-ico .st-item-ico { width: 38px; height: 38px; object-fit: contain; }
.st-sel-pick { display: grid; gap: 12px; padding: 8px 0 16px; }
.st-sel-pick[hidden], #stTabs[hidden], #stChapters[hidden] { display: none; }
.st-pick { position: relative; display: flex; flex-direction: column; justify-content: center; gap: 4px; min-height: 92px; padding: 14px 18px; text-align: left; border-radius: var(--st-r-l, 16px); border: 1px solid rgba(217,180,90,0.55); background: linear-gradient(135deg, rgba(34,40,96,0.92), rgba(14,18,52,0.92)); color: #eef1ff; cursor: pointer; box-shadow: 0 6px 18px rgba(0,0,10,0.45); transition: transform .12s ease, box-shadow .12s ease; }
.st-pick b { font-family: var(--st-font-head, serif); font-size: 1.25rem; font-weight: 800; letter-spacing: .04em; display: flex; align-items: center; gap: 6px; }
.st-pick > span { font-size: 0.82rem; color: #b9c3ef; }
.st-pick.main { border-color: rgba(255,190,90,0.7); }
.st-pick:active { transform: translateY(1px) scale(0.99); box-shadow: 0 3px 10px rgba(0,0,10,0.45); }
.st-pick .st-tab-dot { position: static; }
.st-e-name { grid-column: 1 / -1; grid-row: 1; justify-self: center; min-width: 0; max-width: calc(100% - 168px); display: block; text-align: center; padding-bottom: 1px; font-size: 0.78rem; font-weight: 800; line-height: 1.2; color: #eef1ff; text-shadow: 0 1px 3px rgba(0,0,0,0.95); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; }   /* 2026-10-13: HPバーのすぐ上の中央(足元の帯の1行目。カウントダウン・バッジとは重ならない) */
.st-e-name::before { content: ''; display: inline-block; vertical-align: -0.5px; margin-right: 4px; width: 8px; height: 8px; border-radius: 50%; background: var(--el, #9aa3c8); box-shadow: 0 0 4px var(--el, #9aa3c8); }
.st-e-wave { position: absolute; left: 4px; top: 2px; z-index: 2; font-size: 0.75rem; font-weight: 800; color: #cdd5ff; font-variant-numeric: tabular-nums; text-shadow: 0 1px 3px rgba(0,0,0,0.9); line-height: 1.2; pointer-events: none; }
.st-enemy.boss .st-e-wave { color: #ff9aa8; }
.st-e-act { position: absolute; left: 0; right: 0; bottom: 1px; text-align: center; font-size: 0.75rem; font-weight: 700; color: #ffc0cb; text-shadow: 0 1px 3px rgba(0,0,0,0.95); line-height: 1.1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: 0; transition: opacity 0.2s; }
.st-e-act.on { opacity: 1; }
.st-e-foot { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 58% minmax(0, 1fr); align-items: center; padding: 2px 0 0; }
.st-e-foot .st-e-bar { grid-column: 2; grid-row: 2; }
/* 敵の行動カウント(2026-10-22): 行動の種類ごとの丸いバッジを、敵のHPバーの左右の1列に(足元の帯 #stEFoot の2行目: 左 #stCdL・HPバー・右 #stCdR)。
   偶数番の種類 = 左・奇数番 = 右(バーに近い方が若い番)。バッジ = 種類のアイコン(左上の小さな丸)・数字・残りの量の輪(最大の手数に対する残り)。
   いちばん近い種類(.soonest)は 1.2 倍(36px)+ 脈動、ほかは 0.8 倍(24px)。バーより背の高いバッジは上へはみ出す(帯の高さは増えない)。タップの範囲は ::after で 44px 以上 */
.st-cds { display: contents; }
.st-cd-side { grid-row: 2; display: flex; align-items: flex-end; gap: 14px; height: 16px; min-width: 0; pointer-events: none; z-index: 3; }
.st-cd-side.l { grid-column: 1; flex-direction: row-reverse; padding-right: 9px; }
.st-cd-side.r { grid-column: 3; padding-left: 9px; }
.st-cd { position: relative; flex: none; display: grid; place-items: center; box-sizing: border-box; width: 24px; height: 24px; padding: 0; margin: 0; border: 0; border-radius: 50%; background: rgba(0,0,20,0.7); color: #fff; font: inherit; line-height: 1; cursor: pointer; pointer-events: auto; }
.st-cd::after { content: ''; position: absolute; inset: -10px; border-radius: 50%; }
.st-cd-ring { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); overflow: visible; pointer-events: none; }
.st-cd-ring circle { fill: none; stroke-width: 3.6; }
.st-cd-ring .bg { stroke: rgba(160,180,255,0.3); }
.st-cd-ring .fg { stroke: #b9c8ff; stroke-linecap: round; stroke-dasharray: 100 100; stroke-dashoffset: calc((1 - var(--f, 1)) * 100); transition: stroke-dashoffset 0.35s ease-out, stroke 0.2s; }
/* 2026-10-22: アイコン = 行動のすべての効果(最大 4 つ。5 つ以上は 4 つ目の角を「+」)。バッジの円のふち(斜め 45°)に小さな丸を置く: 丸の中心は円のふちの外(円の半径 + 丸の直径の 0.38 倍)で、円の内側へもぐるのは丸の直径の 1 割ほど(絵は丸の 6 割なので、絵にはかからない)。
   1 つ目 = 左上・2 つ目 = 右上・3 つ目 = 右下・4 つ目 = 左下。丸 13px(バッジ 24px)/ 15px(36px)。円の内側へもぐる部分は、バッジの円の形のマスクで切る(バッジの背景が半透明でも、丸が透けない。円の形の半径 = 箱の半分 - --m)。
   丸の中の絵は丸の真ん中。となりのバッジの丸とかぶらないよう、バッジの間は 14px(PC は 18px)。色は効果ごと(.ic-*)。左の情報パネル(.st-info-ics)・吹き出し(.st-cdt-l)は、同じ丸を横・行頭に並べる */
.st-cd { --o: -6.5px; }   /* --o = 丸の外への出(バッジの箱の角から丸の角まで。上の計算: 24px のバッジ・13px の丸で -6.5px) */
.st-cd-ics { --m: 8px; position: absolute; inset: calc(0px - var(--m)); z-index: 1; pointer-events: none;
  -webkit-mask-image: radial-gradient(circle closest-side, transparent calc(100% - var(--m) - 0.3px), #000 calc(100% - var(--m) + 0.3px)); mask-image: radial-gradient(circle closest-side, transparent calc(100% - var(--m) - 0.3px), #000 calc(100% - var(--m) + 0.3px)); }
.st-cd-ic { flex: none; width: 13px; height: 13px; display: grid; place-items: center; border-radius: 50%; background: #10132e; border: 1px solid rgba(160,180,255,0.65); color: #cfd8ff; font-size: 0.7rem; font-weight: 900; line-height: 1; box-sizing: border-box; pointer-events: none; }
.st-cd-ics .st-cd-ic { position: absolute; }
.st-cd-ics .st-cd-ic:nth-child(1) { top: calc(var(--m) + var(--o)); left: calc(var(--m) + var(--o)); }
.st-cd-ics .st-cd-ic:nth-child(2) { top: calc(var(--m) + var(--o)); right: calc(var(--m) + var(--o)); }
.st-cd-ics .st-cd-ic:nth-child(3) { bottom: calc(var(--m) + var(--o)); right: calc(var(--m) + var(--o)); }
.st-cd-ics .st-cd-ic:nth-child(4) { bottom: calc(var(--m) + var(--o)); left: calc(var(--m) + var(--o)); }
.st-cd-ic svg, .st-info-ic svg { display: block; width: 64%; height: 64%; }
.ic-sword { color: #ffb3c0; }
.ic-meteor { color: #ffb070; }
.ic-drop { color: #c9a0ff; }
.ic-down { color: #ff9a6a; }
.ic-heart { color: #8dffb0; }
.ic-shield { color: #9fd8ff; }
.ic-lock { color: #d9c0ff; }
.ic-clock { color: #ffe08a; }
.ic-skull { color: #e6e0ff; }
.ic-tint { color: #ffffff; }
.ic-warn { color: #ffd36a; }
.st-cd.soonest { width: 36px; height: 36px; background: rgba(40,34,10,0.78); box-shadow: 0 0 10px 2px rgba(255,232,160,0.5); z-index: 1; animation: stCdPulse 1.1s ease-in-out infinite alternate; }
.st-cd.soonest .st-cd-ring .fg { stroke: #ffe8a0; }
.st-cd.soonest { --o: -6.5px; }
.st-cd.soonest .st-cd-ic { width: 15px; height: 15px; }
.st-cd b { font-family: var(--st-font-num); font-size: 1.05rem; font-weight: 700; font-variant-numeric: tabular-nums; text-shadow: 0 1px 3px rgba(0,0,0,0.8); line-height: 1; pointer-events: none; }
.st-cd:not(.soonest) b { font-size: 0.85rem; }
.st-cd.soonest b { font-size: 1.35rem; }
.st-cd.warn { background: rgba(120,10,30,0.6); animation: stCdPulse 0.7s ease-in-out infinite alternate, stWarn 0.7s ease-in-out infinite alternate; }
.st-cd.warn b { color: #ff9aa8; }
.st-cd.warn .st-cd-ring .fg { stroke: #ff6a7d; }
.st-cd.bump b { animation: stCdFlip 0.34s ease-out; }
@keyframes stWarn { from { box-shadow: 0 0 0 rgba(255,80,110,0); } to { box-shadow: 0 0 10px rgba(255,80,110,0.85); } }
@keyframes stCdPulse { from { transform: scale(1); } to { transform: scale(1.08); } }
/* 2026-10-22: 縦に縮んで(最小 0.3)から戻る。数字は消さない(rotateX 90° で数字の無い円盤だけのコマが出ていた) */
@keyframes stCdFlip { 0% { transform: scale(1.2, 0.3); } 55% { transform: scale(1.08, 1.06); } 100% { transform: none; } }
.st-next { position: absolute; right: 4px; top: 2px; z-index: 2; display: flex; flex-direction: column; align-items: center; pointer-events: none; }
.st-next .k { font-size: 0.75rem; color: #9aa0c3; line-height: 1; }
/* 敵のHPバーの色 = 敵の属性(.el-* が付く)。数字は小さくバーの上 */
.st-bar.st-e-bar { height: 16px; }
.st-bar.st-e-bar > i { background: linear-gradient(rgba(255,255,255,0.3), rgba(0,0,0,0.2)), var(--el, #d12a46); }
.st-bar.st-e-bar > b { white-space: nowrap; font-size: 0.8rem; color: #fff; -webkit-text-stroke: 1px #0b1236; paint-order: stroke fill; }   /* 橙の上の白の数字: 1px の濃紺の縁 */
.st-bar.st-e-bar { box-shadow: 0 4px 7px -1px rgba(2,4,24,0.85); }   /* バーの下に濃い影の帯 */

/* HPバー(敵・パーティー共通): 数字はバーの上に重ねる */
.st-bar { position: relative; height: 14px; border-radius: 8px; background: rgba(0,0,20,0.6); border: 1px solid rgba(160,180,255,0.35); overflow: hidden; }
.st-bar > i { position: absolute; left: 0; top: 0; bottom: 0; width: 100%; transform-origin: left center; transform: scaleX(1); background: linear-gradient(#ff7d8e, #d12a46); transition: transform 0.25s ease-out; border-radius: 8px 0 0 8px; }
/* ダメージの残像(パーティーのHPバー): 緑の塗りの下に赤い帯。減る前の幅(scaleX)で止めて、約0.4秒のあと新しいHPまで縮んで消える。transform / opacity だけを動かす */
.st-bar.st-p-bar > i.st-ghost { background: linear-gradient(#ffe3e8, #ff5a73); box-shadow: 0 0 6px rgba(255,90,115,0.85); opacity: 0; transform: scaleX(0); transition: none; }   /* 2026-10-22: 明るい赤の帯にして目立たせる(危険な赤の塗りとも見分けがつく) */   /* .low / .crit の塗りの色(.st-p-bar.low > i)より強く。危険な赤の塗りとも見分けがつく濃い赤 */
/* 回復の予告(COMBAT V3): 回復の玉が飛び始めたら、いまの緑の塗りの先から回復後のHPまで、薄い緑の帯(赤い残像の緑・薄い版)。緑の塗りの下に敷く。届いたら塗りが伸びて帯は消える。transform / opacity だけ */
.st-bar.st-p-bar > i.st-heal-prev { background: repeating-linear-gradient(135deg, rgba(124,252,156,0.9) 0 4px, rgba(47,184,96,0.9) 4px 8px); opacity: 0; transform: scaleX(0); transition: none; }
/* 回復の予告の先端の光(段ごとに帯が左→右へ伸びるとき、先端に添える白っぽいやわらかい光): バー全幅の要素を translateX で動かし、右端 8% だけが光る。transform / opacity だけ */
.st-bar.st-p-bar > i.st-heal-prev-hl { background: linear-gradient(90deg, rgba(255,255,255,0) 90%, rgba(255,255,255,0.85) 100%); border-radius: 0; opacity: 0; transform: translateX(-100%); transition: none; pointer-events: none; }
.st-bar > b { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--st-font-num); font-size: 0.75rem; font-weight: 700; font-variant-numeric: tabular-nums; text-shadow: 0 1px 2px rgba(0,0,0,0.95), 0 0 3px rgba(0,0,0,0.8); letter-spacing: 0.02em; }
.st-p-bar > i { background: linear-gradient(#7CFC9C, #2fb860); }
.st-p-bar.low > i { background: linear-gradient(#ffd166, #e08a1a); }
.st-p-bar.crit > i { background: linear-gradient(#ff7d8e, #d12a46); }

/* ダメージの数字: 敵のパネルの上に浮いて消える(使い回しの要素。数が多いときは古いものから置き換える) */
.st-dmg-layer { position: absolute; inset: 0; pointer-events: none; overflow: visible; z-index: 3; }
/* 敵の上の数字の層の箱(2026-10-22): body 直下・演出の canvas(.st-bfx z 6)より上。位置と大きさは画面のスクリプトが #stEnemy に合わせる。カットインの間は隠す */
.st-dmg-top { position: fixed; left: 0; top: 0; width: 0; height: 0; z-index: 7; pointer-events: none; overflow: visible; transition: opacity 0.12s; }
.st-dmg-top.cut { opacity: 0; }
body:not(.st-in-battle) .st-dmg-top { display: none; }
.st-dmg {
  position: absolute; left: 0; top: 0; white-space: nowrap; font-family: var(--st-font-num); font-weight: 700; line-height: 1; opacity: 0;
  color: var(--dc, #fff); font-size: calc(1.05rem * var(--ds, 1));
  -webkit-text-stroke: 3px rgba(6,8,28,0.92); paint-order: stroke fill; text-shadow: 0 0 10px var(--dc, #fff);
  font-variant-numeric: tabular-nums;
}
/* 属性の色の数字(2026-10-22): 白の縁 2px(paint-order で外側の半分 = 4px の線)+ 暗い影。白い数字は今までどおりの濃紺の縁 */
.st-dmg.el { -webkit-text-stroke: 4px #fff; text-shadow: 0 0 1px rgba(6,8,28,1), 0 0 4px rgba(6,8,28,0.95), 0 3px 4px rgba(6,8,28,0.9), 0 0 14px var(--dc, #fff); }
.st-dmg.weak::after { content: '弱点!'; margin-left: 3px; font-size: 0.55em; color: #fff3b0; }
.st-dmg.resist { opacity: 0; filter: saturate(0.5); }
.st-dmg.go { animation: stDmgUp 0.95s ease-out forwards; }
@keyframes stDmgUp {
  0% { opacity: 0; transform: translate(var(--dx, 0px), 6px) scale(0.5); }
  12% { opacity: 1; transform: translate(var(--dx, 0px), -4px) scale(1.2); }
  28% { transform: translate(var(--dx, 0px), -8px) scale(1); }
  75% { opacity: 1; }
  100% { opacity: 0; transform: translate(var(--dx, 0px), -34px) scale(0.95); }
}
.st-dmg.pop { color: #7CFC9C; text-shadow: 0 0 10px #2fb860; }
.st-dmg.hurt { color: #ff3b5c; -webkit-text-stroke: 4px #fff; text-shadow: 0 0 10px rgba(255,59,92,0.8); }   /* 敵の攻撃 = 赤 #ff3b5c 1色(白縁) */
.st-dmg.txt { font-family: inherit; font-weight: 900; font-size: calc(0.78rem * var(--ds, 1)); -webkit-text-stroke-width: 2.5px; }
.st-dmg.txt.go { animation-duration: 1.25s; }
/* まとめた攻撃(1手のダメージの合計)が敵に当たったときの大きな数字: 少し長く残る */
.st-dmg.strike { -webkit-text-stroke-width: 4px; z-index: 1; }
.st-dmg.strike.go { animation: stDmgStrike 0.8s ease-out forwards; }
/* 2026-10-22: 1.9 → 1.0 の弾み(約 0.25 秒)のあと、30px 上へ流れながら 0.5 秒で消える(合わせて約 0.8 秒。敵の顔の上に長く残さない) */
@keyframes stDmgStrike {
  0% { opacity: 0; transform: translate(0, 0) scale(1.9); }
  12% { opacity: 1; transform: translate(0, -2px) scale(0.92); }
  22% { transform: translate(0, -4px) scale(1.06); }
  32% { opacity: 1; transform: translate(0, -5px) scale(1); animation-timing-function: ease-in; }
  100% { opacity: 0; transform: translate(0, -35px) scale(0.98); }
}
/* 倒した一撃の数字: 1.3 倍に弾んで 0.4 秒で消える(次のウェーブの上に残さない) */
.st-dmg.strike.kill.go { animation: stDmgKill 0.4s ease-out forwards; }
@keyframes stDmgKill { 0% { opacity: 1; transform: translate(0, 0) scale(0.9); } 35% { opacity: 1; transform: translate(0, -4px) scale(1.3); } 100% { opacity: 0; transform: translate(0, -8px) scale(1.3); } }
/* 敵の攻撃の「-N」(パーティーのHPバーの真上の中央。下端を基準に 24px 落ちて消える)・回復の「+N」(右寄りで、重ならない)。点 (x, y) は数字の下端の中央 */
.st-dmg.hurt.big, .st-dmg.heal { -webkit-text-stroke-width: 4px; }
.st-dmg.hurt.big.go { animation: stHurtDrop 1.1s ease-out forwards; }
@keyframes stHurtDrop {
  0% { opacity: 0; transform: translate(-50%, calc(-100% - 40px)) scale(1.5); }
  12% { opacity: 1; transform: translate(-50%, calc(-100% - 36px)) scale(1); }
  30% { transform: translate(-50%, calc(-100% - 34px)) scale(1.06); }
  72% { opacity: 1; }
  100% { opacity: 0; transform: translate(-50%, calc(-100% - 10px)) scale(1); }
}
.st-dmg.heal.go { animation: stHealRise 1.1s ease-out forwards; }
@keyframes stHealRise {
  0% { opacity: 0; transform: translate(-50%, calc(-100% + 4px)) scale(0.6); }
  14% { opacity: 1; transform: translate(-50%, calc(-100% - 2px)) scale(1.15); }
  75% { opacity: 1; }
  100% { opacity: 0; transform: translate(-50%, calc(-100% - 26px)) scale(1); }
}
/* 戦闘の演出(stella-battle-fx.js): スキルの光・ためている数字・必殺技のカットインを描く、画面全体のオーバーレイ(固定・クリック不可) */
.st-bfx { position: fixed; left: 0; top: 0; width: 100%; height: 100%; pointer-events: none; z-index: 6; contain: strict; }

/* ---- パーティーのパネル ---- */
.st-party { position: relative; width: 100%; padding: 5px 8px 6px; background: var(--st-glass); border: 1px solid var(--st-line); border-radius: 12px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 0 16px rgba(90,100,255,0.14); }
.st-p-top { display: flex; align-items: center; gap: 8px; margin-bottom: 5px; min-height: 16px; }
.st-p-top .st-bar { flex: 1 1 90px; min-width: 70px; }
.st-p-top .st-bar.hurt { animation: stShake 0.4s ease-out; }
/* 敵に攻撃された: パーティーのパネルが 6px で 2 往復揺れる・3枚のカードが 80ms だけ暗くなる(動きを減らす設定では付けない) */
.st-party.hit { animation: stPartyHit 0.34s linear; }
.st-party.hit .st-p-top .st-bar.hurt { animation: none; }
@keyframes stPartyHit { 0%, 100% { transform: none; } 12.5% { transform: translateX(-6px); } 37.5% { transform: translateX(6px); } 62.5% { transform: translateX(-6px); } 87.5% { transform: translateX(6px); } }
.st-members.dim { animation: stCardDim 0.1s linear; }
@keyframes stCardDim { 0%, 75% { filter: brightness(0.6); } 100% { filter: none; } }
@keyframes stShake { 0%, 100% { transform: none; } 20% { transform: translateX(-4px); } 40% { transform: translateX(4px); } 60% { transform: translateX(-3px); } 80% { transform: translateX(2px); } }
.st-buffs { display: flex; gap: 3px; flex: 0 1 auto; min-width: 0; justify-content: flex-start; flex-wrap: nowrap; overflow: hidden; }
.st-chip { flex: none; padding: 0 5px; height: 15px; display: inline-flex; align-items: center; border-radius: 7px; font-size: 0.75rem; font-weight: 800; line-height: 1; color: #fff; background: rgba(60,90,200,0.85); border: 1px solid rgba(190,205,255,0.6); white-space: nowrap; }
.st-chip.good { background: rgba(30,130,70,0.85); border-color: rgba(160,255,190,0.6); }
.st-chip.bad { background: rgba(150,40,70,0.85); border-color: rgba(255,170,190,0.6); }
.st-chip.foe { background: rgba(150,90,20,0.85); border-color: rgba(255,210,150,0.6); }   /* 敵にかかっている効果(弱点付与・時間停止) */
.st-chip.ebuf { background: rgba(170,30,40,0.88); border-color: rgba(255,160,160,0.65); }   /* 敵自身の状態(防御の構え・怒り・復活。RULES_VERSION 13) */
/* ---- 敵にかかった味方の毒(2026-10-26。stella-stage.js の pzSync)。敵の状態の行の先頭: 紫のしずく + 残りの手数 + 2 つ以上のとき「×2」。押す・カーソルを乗せると吹き出し(.st-cd-tip と同じ見た目)。
        色は --pz(色覚サポートでは明るい紫ピンク。stella-stage.js の PZ_STD / PZ_CUD と同じ)。出入りの動きは Web Animations(動きを減らす設定では動かさない) ---- */
.st-pz { --pz: #d05cff; position: relative; pointer-events: auto; flex: none; display: inline-flex; align-items: center; gap: 2px; height: 24px; min-width: 24px; padding: 0 7px 0 4px; box-sizing: border-box; border-radius: 12px; font: inherit; color: #fff; background: rgba(52, 14, 88, 0.92); border: 1.5px solid var(--pz); box-shadow: 0 0 8px color-mix(in srgb, var(--pz) 55%, transparent); cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.st-pz::before { content: ''; position: absolute; inset: -10px -6px; }   /* 押せる範囲を広げる(見た目は 24px のまま) */
.st-pz[hidden] { display: none; }
.st-pz:focus-visible { outline: 2px solid #ffd166; outline-offset: 2px; }
.st-pz-ic, .st-info-pz .st-pz-ic { flex: none; display: inline-flex; width: 18px; height: 18px; color: var(--pz); }
.st-pz-ic svg { display: block; width: 100%; height: 100%; }
.st-pz-n { display: inline-block; font-family: var(--st-font-num); font-size: 0.95rem; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8); }
.st-pz-x { font-style: normal; font-size: 0.72rem; font-weight: 800; line-height: 1; color: #f3d6ff; }
.st-pz-x[hidden] { display: none; }
.st-pz-tip { z-index: 21; }
html.st-cud .st-pz, html.st-cud .st-info-pz { --pz: #f0a0ff; }
.st-info-pz { --pz: #d05cff; display: flex; align-items: center; gap: 8px; margin: 0 0 8px; padding: 6px 8px; border-radius: 10px; background: rgba(52, 14, 88, 0.55); border: 1px solid color-mix(in srgb, var(--pz) 65%, transparent); font-size: 0.95rem; font-weight: 700; line-height: 1.3; color: #f3dcff; }   /* 広い画面の左の情報パネル(同じ文を出す) */
.st-info-pz[hidden] { display: none; }
.st-e-buffs { position: absolute; left: 48px; top: 20px; z-index: 2; display: flex; gap: 3px; flex-wrap: wrap; max-width: 60%; pointer-events: none; }
.st-cd.stopped { background: rgba(20,70,120,0.6); opacity: 0.85; }   /* 時間停止中のカウントダウン(色と透明度だけ) */
.st-cd.stopped b { color: #bfe6ff; }
.st-cd.stopped .st-cd-ring .fg { stroke: #9fd8ff; }
/* パーティーのパネル(戦闘の下)。普段は横長のカード(輪 + 名前 + ゲージ)。盤の下に余白があるとき(.st-roomy、layout() が測る)は、縦長のカードにして輪とHPバーを大きくする */
.st-members { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-top: 6px; }
.st-mem {
  position: relative; display: grid; grid-template-columns: var(--st-ring, 46px) minmax(0, 1fr); align-items: center; gap: 6px; padding: 3px 4px 3px 3px; text-align: left; font: inherit; color: #f0f0f5; cursor: pointer;
  background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); border-radius: 12px;
  touch-action: none; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent;
}
.st-mem:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
/* ゲージの輪(円グラフ): 輪の太さ4px、中にアイコン */
.st-gring { position: relative; width: var(--st-ring, 46px); height: var(--st-ring, 46px); border-radius: 50%; background: linear-gradient(135deg, var(--el, #8fb3ff), color-mix(in srgb, var(--el, #8fb3ff) 40%, #0a0e34)); display: grid; place-items: center; }   /* UI v3: 輪は属性色の枠だけ(ゲージは下の細い棒 + 数字)。満タンで金色 */
/* ゲージ: 細い棒(5px)+ 数字。--g(0..1)は JS がカード(.st-mem)に入れる */
.st-mem-bar { display: block; width: 100%; height: 5px; border-radius: 3px; background: rgba(255,255,255,0.18); overflow: hidden; }
.st-mem-bar i { display: block; height: 100%; width: calc(var(--g, 0) * 100%); border-radius: 3px; background: var(--el, #8fb3ff); transition: width 0.2s ease-out; }
.st-mem.ready .st-mem-bar i { background: #ffd166; }
.st-gring .st-ico { width: calc(var(--st-ring, 46px) - 8px); height: calc(var(--st-ring, 46px) - 8px); border: 0; }
.st-mem-txt { min-width: 0; display: flex; flex-direction: column; gap: 2px; line-height: 1.1; }
.st-mem-slot { display: flex; align-items: center; gap: 3px; font-size: 0.75rem; font-weight: 800; letter-spacing: 0; color: #dfe6ff; white-space: nowrap; min-width: 0; }
/* 属性のオーブは輪の角に(名前の横に置くと「ピラミッド」と重なっていた)。普段は右下、縦長のカードでは右上 */
.st-gring .st-badge { position: absolute; right: -3px; bottom: -4px; z-index: 2; }
.st-mem-g { font-family: var(--st-font-num); font-weight: 700; font-size: 0.75rem; font-variant-numeric: tabular-nums; color: #b3b9dc; white-space: nowrap; }
.st-mem-ult { display: none; font-size: 0.75rem; font-weight: 900; color: #fff; letter-spacing: 0.04em; }
.st-mem.ready { border-color: #ffd166; box-shadow: 0 0 0 2px rgba(255,209,102,0.7), 0 0 14px rgba(255,209,102,0.55); animation: stReady 0.9s ease-in-out infinite alternate; background: rgba(60,50,10,0.75); }
.st-mem.ready .st-mem-g { display: none; }
.st-mem.ready .st-mem-ult { display: block; color: #ffe08a; }
.st-mem.ready .st-gring { background: conic-gradient(#ffd166 1turn, #ffd166 0); }
.st-mem.pop { animation: stPop 0.4s ease-out; }
.st-mem:disabled { opacity: 0.9; cursor: default; }
.st-mem .st-key { position: absolute; right: 4px; bottom: 1px; font-size: 0.75rem; color: #9aa0c3; line-height: 1; }
@keyframes stReady { from { transform: none; } to { transform: translateY(-2px); } }
@keyframes stPop { 0% { transform: scale(1.12); filter: brightness(1.6); } 100% { transform: none; filter: none; } }
.st-mem .st-key { display: none; }
@media (pointer: fine) { .st-mem .st-key { display: block; } }   /* 1/2/3 のキーの目印は、マウスのある端末だけ(タッチの端末では出さない) */
/* 必殺技が使えるあいだ: 金色の光の輪が脈打ち、小さな光の粒がアイコンのまわりをまわる(transform / opacity だけ。再描画は軽い) */
.st-mem.ready .st-gring::before { content: ''; position: absolute; inset: -3px; border-radius: 50%; box-shadow: 0 0 9px 3px rgba(255,209,102,0.95), inset 0 0 6px 1px rgba(255,224,138,0.7); pointer-events: none; animation: stUltGlow 0.9s ease-in-out infinite alternate; }
.st-mem.ready .st-gring::after { content: ''; position: absolute; inset: -6px; border-radius: 50%; pointer-events: none; animation: stUltOrbit 2.6s linear infinite;
  background:
    radial-gradient(circle at 50% 3%, #fff 0 1.3px, rgba(255,224,138,0.9) 1.6px, transparent 3px),
    radial-gradient(circle at 97% 50%, #fff 0 1px, rgba(255,224,138,0.8) 1.3px, transparent 2.6px),
    radial-gradient(circle at 50% 97%, #fff 0 1.3px, rgba(255,224,138,0.9) 1.6px, transparent 3px),
    radial-gradient(circle at 3% 50%, #fff 0 1px, rgba(255,224,138,0.8) 1.3px, transparent 2.6px); }
@keyframes stUltGlow { from { opacity: 0.45; transform: scale(0.97); } to { opacity: 1; transform: scale(1.04); } }
@keyframes stUltOrbit { to { transform: rotate(1turn); } }
/* 満タンになった瞬間: 光の輪が広がって消える・「必殺技 READY!」が浮かぶ */
.st-ult-burst { position: absolute; inset: 0; border-radius: 50%; border: 3px solid #ffd166; box-shadow: 0 0 12px 2px rgba(255,224,138,0.9); pointer-events: none; opacity: 0; animation: stUltBurst 0.6s ease-out forwards; }
.st-ult-txt { position: absolute; left: 50%; bottom: 100%; margin-bottom: 2px; white-space: nowrap; pointer-events: none; z-index: 4; font-size: 0.75rem; font-weight: 900; letter-spacing: 0.04em; color: #ffe08a; text-shadow: 0 0 6px #b8860b, 0 1px 2px #000; opacity: 0; animation: stUltRise 0.9s ease-out forwards; }
@keyframes stUltBurst { 0% { transform: scale(0.7); opacity: 0.95; } 100% { transform: scale(2.4); opacity: 0; } }
@keyframes stUltRise { 0% { transform: translate(-50%, 8px); opacity: 0; } 15% { opacity: 1; } 75% { opacity: 1; } 100% { transform: translate(-50%, -16px); opacity: 0; } }

/* 波の表示・ボス警告(盤の上に重ねる。クリックは通さない) */
.st-banner { position: absolute; left: 0; right: 0; top: 40%; text-align: center; line-height: 1.15; pointer-events: none; opacity: 0; z-index: 2; }
.st-banner .m { display: block; font-size: 1.7rem; font-weight: 900; color: #fff; letter-spacing: 0.06em; text-shadow: 0 0 16px rgba(130,160,255,0.95), 0 2px 0 rgba(0,0,0,0.7); }
.st-banner .s { display: block; margin-top: 2px; font-size: 0.9rem; font-weight: 800; color: #d6dcff; text-shadow: 0 2px 0 rgba(0,0,0,0.7); }
.st-banner.boss .m { color: #ff9aa8; text-shadow: 0 0 18px rgba(255,60,90,1), 0 2px 0 rgba(0,0,0,0.7); font-size: 2rem; }
.st-banner.boss .s { color: #ffd0d6; }
.st-banner.show { animation: stBanner 1.5s ease-out forwards; }
.st-banner.boss.show { animation-duration: 2s; }
@keyframes stBanner { 0% { opacity: 0; transform: scale(1.5); } 14% { opacity: 1; transform: scale(1); } 72% { opacity: 1; } 100% { opacity: 0; transform: translateY(-14px); } }

/* 敵の攻撃: 画面のふちが赤くなる */
.st-flash { position: fixed; inset: 0; pointer-events: none; z-index: 6; opacity: 0; box-shadow: inset 0 0 60px 6px rgba(255,59,92,0.7); }   /* 2026-10-22: 画面の縁だけ(中心は透明・外周 60px が赤)。全画面の赤い塗りはなし */
.st-flash.go { animation: stFlash 0.45s ease-out; }
@keyframes stFlash { 0% { opacity: 1; } 100% { opacity: 0; } }

/* 戦闘の結果・一時停止のパネル(盤面の上): ボタンが3つ縦に並ぶ */
.st-battle .hd-overlay > div { width: 100%; max-width: 280px; display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
.st-battle .hd-overlay h2 { margin-bottom: 0; }
.st-battle .hd-overlay p { margin-bottom: 4px; }
.st-battle .hd-overlay .hd-btn[hidden] { display: none; }
.st-battle .hd-overlay .hd-btn { padding: 9px 12px; }
.st-battle .hd-overlay #ovText { white-space: pre-line; overflow-wrap: anywhere; }
/* 負けの画面のコンティニュー(スターコア) */
.st-battle .hd-overlay .hd-btn.st-cont-btn { color: var(--st-gold-soft); border-color: var(--st-gold); font-weight: 800; }
.st-battle .hd-overlay .hd-btn.st-cont-btn:disabled { background: rgba(80, 80, 110, 0.6); border-color: rgba(160, 160, 200, 0.4); color: #c5c8e0; font-weight: 400; cursor: not-allowed; }
.st-battle .hd-overlay h2.win { color: #ffe08a; text-shadow: 0 0 16px rgba(255,209,102,0.8); }
.st-battle .hd-overlay h2.lose { color: #ff9aa8; }

/* 演出を減らす設定: 動きをやめて、数字は短く出て消えるだけ */
html.hd-reduce .st-dmg.go { animation: stDmgFade 0.9s linear forwards; }
html.hd-reduce .st-banner.show, html.hd-reduce .st-banner.boss.show { animation: stBannerFade 1.6s linear forwards; }
html.hd-reduce .st-flash { display: none; }   /* 動きを減らす設定: 赤・白のフラッシュは出さない */
html.hd-reduce .st-p-top .st-bar.hurt, html.hd-reduce .st-cd.bump, html.hd-reduce .st-mem.pop, html.hd-reduce .st-mem.ready, html.hd-reduce .st-cd.warn { animation: none; }
html.hd-reduce .st-bar > i { transition: none; }
html.hd-reduce .st-mem.ready .st-gring::before { animation: none; opacity: 1; }
html.hd-reduce .st-mem.ready .st-gring::after, html.hd-reduce .st-ult-burst, html.hd-reduce .st-ult-txt { display: none; }
@keyframes stDmgFade { 0% { opacity: 1; transform: translate(var(--dx, 0px), 0); } 80% { opacity: 1; } 100% { opacity: 0; transform: translate(var(--dx, 0px), 0); } }
@keyframes stBannerFade { 0% { opacity: 0; } 10% { opacity: 1; } 80% { opacity: 1; } 100% { opacity: 0; } }
@keyframes stFlashFade { 0% { opacity: 0.6; } 100% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-dmg.go { animation: stDmgFade 0.9s linear forwards; }
  html:not(.hd-motion) .st-banner.show, html:not(.hd-motion) .st-banner.boss.show { animation: stBannerFade 1.6s linear forwards; }
  html:not(.hd-motion) .st-flash { display: none; }
  html:not(.hd-motion) .st-p-top .st-bar.hurt, html:not(.hd-motion) .st-cd.bump, html:not(.hd-motion) .st-mem.pop, html:not(.hd-motion) .st-mem.ready, html:not(.hd-motion) .st-cd.warn { animation: none; }
  html:not(.hd-motion) .st-bar > i { transition: none; }
  html:not(.hd-motion) .st-mem.ready .st-gring::before { animation: none; opacity: 1; }
  html:not(.hd-motion) .st-mem.ready .st-gring::after, html:not(.hd-motion) .st-ult-burst, html:not(.hd-motion) .st-ult-txt { display: none; }
}

/* ============================ 持ち物(ステージ選択の上) ============================ */
.st-inv { display: flex; gap: 4px 10px; flex-wrap: wrap; align-items: center; margin: 0 0 8px; font-size: 0.75rem; color: #cfd8ff; }
.st-inv-i { display: inline-flex; align-items: center; gap: 4px; padding: 1px 8px 1px 3px; border-radius: 999px; background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); }
.st-inv-i small { font-size: 0.75rem; color: #b3b9dc; }
.st-inv-i b { font-size: 0.8rem; color: #fff; font-variant-numeric: tabular-nums; }
.st-item-ico { display: block; object-fit: contain; flex: none; }

/* ============================ キャラの詳細ボタン(編成画面) ============================ */
.st-rcw { position: relative; min-width: 0; }
.st-dbtn { font: inherit; cursor: pointer; line-height: 1; }   /* 色・縁は「副ボタンの形」(UI v2 ボタンの段階) */
.st-dbtn:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-detail { position: absolute; right: 8px; top: 6px; padding: 3px 9px; border-radius: 999px; font-size: 0.75rem; font-weight: 700; }
.st-rc-i { position: absolute; right: 3px; bottom: 26px; width: 20px; height: 20px; padding: 0; border-radius: 50%; font-size: 0.75rem; font-weight: 800; }
.st-rc { width: 100%; height: 100%; }

/* ============================ 戦闘中のキャラの状態カード ============================ */
.st-pop {
  position: fixed; z-index: 7; width: min(330px, calc(100vw - 16px)); padding: 7px 9px 8px; pointer-events: none;
  background: linear-gradient(rgba(22,26,84,0.97), rgba(8,10,40,0.98)); border: 2px solid var(--el, rgba(160,180,255,0.6)); border-radius: 12px;
  box-shadow: 0 6px 24px rgba(0,0,0,0.7), 0 0 14px rgba(90,100,255,0.3); font-size: 0.75rem; line-height: 1.4; color: #f0f0f5; text-align: left;
}
.st-pop[hidden] { display: none; }
.st-pop-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.st-pop-head .st-ico { width: 40px; height: 40px; flex: none; }
.st-pop-t { min-width: 0; }
.st-pop-n { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.st-pop-n b { font-size: 0.88rem; }
.st-pop-s { font-size: 0.75rem; color: #b8c2f0; }
.st-pop-stats { display: flex; gap: 2px 10px; flex-wrap: wrap; margin-bottom: 4px; font-size: 0.75rem; font-weight: 700; color: #dfe6ff; font-variant-numeric: tabular-nums; }
.st-pop-stats .g.ready { color: #ffe08a; }
.st-sk { display: grid; grid-template-columns: 8.4em minmax(0, 1fr); gap: 6px; align-items: baseline; padding: 2px 0; border-top: 1px solid rgba(160,180,255,0.14); }
.st-sk-l { display: inline-flex; align-items: center; gap: 4px; font-size: 0.75rem; font-weight: 800; color: #cfd8ff; white-space: nowrap; }
.st-sk-t { font-size: 0.75rem; color: #ffe9a6; }
.st-sk.off .st-sk-l, .st-sk.off .st-sk-t { color: #8d95bd; font-weight: 400; }
.st-sk.off { opacity: 0.88; }
/* v5: 状態カードのワザの行 = 見出し(アイコン + ピラミッド(担当))の下に説明を積む。横並びだと 390px で見出しが説明に重なる */
.st-pop .st-sk { grid-template-columns: minmax(0, 1fr); gap: 1px; padding: 3px 0 4px; }
.st-pop .st-sk-l { white-space: normal; min-width: 0; }
.st-pop .st-sk-t { min-width: 0; overflow-wrap: anywhere; line-height: 1.4; }
.st-pop-ult { margin-top: 3px; padding-top: 4px; border-top: 1px solid rgba(160,180,255,0.3); font-size: 0.75rem; color: #d6dcff; }
.st-pop-ult b { color: #fff; }

/* ============================ キャラの詳細(編成画面で開くシート) ============================ */
.st-sheet-bg { position: fixed; inset: 0; z-index: 9; display: flex; align-items: center; justify-content: center; padding: 10px; background: rgba(2,3,18,0.78); }
.st-sheet-bg[hidden] { display: none; }
.st-sheet {
  position: relative; display: flex; flex-direction: column; width: min(440px, 100%); max-height: min(640px, 100%); overflow: hidden;
  background: linear-gradient(rgba(24,28,84,0.98), rgba(8,10,40,0.99)); border: 1px solid rgba(170,190,255,0.5); border-radius: 14px;
  box-shadow: 0 10px 40px rgba(0,0,0,0.7), 0 0 20px rgba(90,100,255,0.3); color: #f0f0f5; text-align: left;
}
.st-sheet:focus { outline: none; }
.st-sheet-x { position: absolute; right: 6px; top: 4px; z-index: 1; width: 32px; height: 32px; border-radius: 50%; border: 1px solid rgba(170,190,255,0.5); background: rgba(10,14,60,0.85); color: #fff; font-size: 1.2rem; line-height: 1; cursor: pointer; }
.st-sheet-x:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-sheet-body { overflow-y: auto; padding: 10px 12px 4px; -webkit-overflow-scrolling: touch; }
.st-sheet-foot { padding: 6px 12px 10px; text-align: center; }
.st-sh-top { display: flex; gap: 12px; align-items: flex-start; }
.st-sh-art { flex: none; width: 108px; aspect-ratio: 3 / 5; border-radius: 10px; overflow: hidden; border: 2px solid var(--el, #8fb3ff); background: #0c1030; box-shadow: 0 0 14px color-mix(in srgb, var(--el, #8fb3ff) 55%, transparent); }
.st-sh-art img, .st-sh-art video, .st-sh-art canvas { display: block; width: 100%; height: 100%; object-fit: cover; }
.st-sh-info { min-width: 0; flex: 1; padding-right: 26px; }
.st-sh-name { margin: 0; font-size: 1.15rem; text-shadow: 0 1px 3px rgba(0,0,0,0.8); }
.st-sh-title { font-size: 0.75rem; color: #c8d0ff; margin-bottom: 4px; }
.st-sh-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 8px; }
.st-sh-meta .st-stars { font-size: 13px; }
.st-sh-origin { font-size: 0.75rem; padding: 1px 7px; border-radius: 999px; background: rgba(110,130,255,0.3); border: 1px solid rgba(160,180,255,0.4); }
.st-sh-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; }
.st-stat { padding: 3px 4px; text-align: center; border-radius: 8px; background: rgba(0,0,24,0.5); border: 1px solid rgba(160,180,255,0.25); line-height: 1.2; }
.st-stat small { display: block; font-size: 0.75rem; color: #aab3dd; }
.st-stat b { font-size: 0.9rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.st-stat b.long { font-size: 0.76rem; }   /* 7文字以上(130,941 など。★5 の高いレベル) */
.st-sh-sec { margin-top: 10px; }
.st-sh-sec h3 { margin: 0 0 3px; font-size: 0.78rem; color: #cfd8ff; }
.st-sh-sec .st-sk { grid-template-columns: 5.2em minmax(0, 1fr); padding: 4px 0; }
.st-sh-sec .st-sk-l { font-size: 0.75rem; flex-wrap: wrap; row-gap: 2px; white-space: normal; min-width: 0; }   /* 「編成中」の札が枠の名前と並んで 5.2em の列からはみ出し、右の文に重なるのを防ぐ(ja・en・th・de で重なった。2026-11-02 実機)。収まるときは今まで通り横並び */
.st-sh-sec .st-sk-tag { margin-left: 0; }
.st-sh-sec .st-sk-l > .st-sk-tag:not(:first-child) { margin-left: 2px; }
.st-sh-sec .st-sk-t { font-size: 0.76rem; }
/* 戦績のシート(≡ メニュー → 戦績): 数字のマス(4つの段は2列)・よく使うキャラの行 */
.st-ps-grid { gap: 6px; }
.st-ps-grid.c4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.st-ps-ch { display: flex; align-items: center; gap: 8px; padding: 4px 0; border-bottom: 1px solid rgba(160,180,255,0.15); }
.st-ps-ch:last-child { border-bottom: 0; }
.st-ps-ch .st-ps-rank { width: 1.4em; text-align: center; font-weight: 700; color: #ffe9a6; }
.st-ps-ch .st-ico { width: 36px; height: 36px; flex: none; }
.st-ps-ch .n { flex: 1; min-width: 0; font-size: 0.82rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-ps-ch b { font-size: 0.82rem; font-variant-numeric: tabular-nums; }
.st-sh-sec.ult p { margin: 0; font-size: 0.78rem; line-height: 1.5; color: #ffe9a6; }

/* ============================ ステージクリアの報酬の画面 ============================ */
.st-rw { position: fixed; inset: 0; z-index: 8; display: flex; align-items: center; justify-content: center; padding: 14px; background: radial-gradient(ellipse at 50% 40%, rgba(60,50,120,0.88), rgba(4,5,26,0.96) 75%); opacity: 0; transition: opacity 0.45s ease-out; }
.st-rw[hidden] { display: none; }
.st-rw.go, .st-rw.still { opacity: 1; }
.st-rw-in { width: min(360px, 100%); display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; }
.st-rw-title { font-size: 2rem; font-weight: 900; letter-spacing: 0.06em; color: #ffe08a; text-shadow: 0 0 18px rgba(255,209,102,0.9), 0 2px 0 rgba(0,0,0,0.7); transform: scale(0.4); opacity: 0; }
.st-rw.go .st-rw-title { animation: rwTitle 0.7s cubic-bezier(0.2, 1.5, 0.4, 1) forwards; }
.st-rw.still .st-rw-title { transform: none; opacity: 1; }
@keyframes rwTitle { 0% { transform: scale(0.4); opacity: 0; } 60% { transform: scale(1.15); opacity: 1; } 100% { transform: scale(1); opacity: 1; } }
.st-rw-sub { margin: 0; font-size: 0.8rem; color: #d6dcff; min-height: 1.2em; opacity: 0; }
.st-rw.go .st-rw-sub, .st-rw.still .st-rw-sub { opacity: 1; transition: opacity 0.4s 0.35s; }
.st-rw-label { margin-top: 4px; padding: 2px 14px; border-radius: 999px; font-size: 0.75rem; font-weight: 800; color: #dfe6ff; background: rgba(110,130,255,0.35); border: 1px solid rgba(170,190,255,0.5); }
.st-rw-label.first { color: #3a2600; background: linear-gradient(#ffe9a6, #ffc84a); border-color: #fff3c4; }
/* 後から出るもの(ラベル・持ち物・ボタン)は、場所を空けたまま(レイアウトが動かない)ふわっと出す */
.st-rw-label, .st-rw-total, .st-rw-btn { transition: opacity 0.4s ease-out, transform 0.4s ease-out; }
.st-rw-label[hidden], .st-rw-total[hidden], .st-rw-btn[hidden] { display: block; visibility: hidden; opacity: 0; transform: translateY(6px); }
.st-rw-items { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; min-height: 112px; }
.st-rw-item { position: relative; width: 112px; padding: 8px 6px 6px; border-radius: 14px; background: linear-gradient(rgba(40,50,130,0.8), rgba(14,18,64,0.85)); border: 1px solid rgba(190,205,255,0.55); box-shadow: 0 0 14px rgba(120,140,255,0.3); overflow: hidden; opacity: 0; transform: scale(0.3); }
.st-rw-item .ic { position: relative; display: grid; place-items: center; height: 60px; }
.st-rw-item .nm { margin-top: 2px; font-size: 0.75rem; font-weight: 800; line-height: 1.25; }
.st-rw-item.bonus { border-color: rgba(255,224,138,0.7); }
.st-rw-bn { position: absolute; top: 4px; left: 0; right: 0; font-size: 0.75rem; font-weight: 900; color: #ffe08a; letter-spacing: 0.04em; z-index: 1; }
.st-rw-item.long .n { font-size: 1.05rem; }
.st-rw-item .n { display: block; margin-top: 1px; font-size: 1.3rem; font-weight: 900; color: #ffe08a; text-shadow: 0 0 10px rgba(255,209,102,0.7), 0 2px 0 rgba(0,0,0,0.7); font-variant-numeric: tabular-nums; }
.st-rw-item.in { opacity: 1; transform: none; animation: rwPop 0.6s cubic-bezier(0.2, 1.5, 0.4, 1) both; }
.st-rw-item::after { content: ''; position: absolute; top: -20%; bottom: -20%; left: -60%; width: 40%; background: linear-gradient(100deg, transparent, rgba(255,255,255,0.65), transparent); transform: skewX(-18deg); opacity: 0; pointer-events: none; }
.st-rw-item.in::after { animation: rwShine 0.9s 0.25s ease-out both; }
.st-rw-item.in .st-item-ico { animation: rwIcon 0.7s cubic-bezier(0.2, 1.6, 0.4, 1) both; }
@keyframes rwPop { 0% { transform: scale(0.3); opacity: 0; } 55% { transform: scale(1.14); opacity: 1; } 100% { transform: scale(1); opacity: 1; } }
@keyframes rwShine { 0% { left: -60%; opacity: 1; } 100% { left: 130%; opacity: 1; } }
@keyframes rwIcon { 0% { transform: rotate(-20deg) scale(0.6); } 100% { transform: none; } }
.st-rw-item .sp { position: absolute; left: 50%; top: 50%; width: 6px; height: 6px; margin: -3px 0 0 -3px; border-radius: 50%; background: #fff6c8; box-shadow: 0 0 6px #ffd24a; opacity: 0; }
.st-rw-item.in .sp { animation: rwSpark 0.8s 0.1s ease-out both; }
@keyframes rwSpark { 0% { opacity: 1; transform: rotate(var(--a)) translateY(0) scale(1); } 100% { opacity: 0; transform: rotate(var(--a)) translateY(-44px) scale(0.3); } }
.st-rw-total { margin: 0; font-size: 0.75rem; color: #b8c2f0; }
.st-rw-total b { color: #fff; font-variant-numeric: tabular-nums; }
/* プレイヤー経験値・レベルアップ(勝ちの報酬の画面) */
.st-rw-plv { margin: 6px 0 0; font-size: 0.8rem; color: #dfe6ff; transition: opacity 0.4s ease-out, transform 0.4s ease-out; }
.st-rw-plv:empty { display: none; }
.st-rw-plv[hidden] { display: block; visibility: hidden; opacity: 0; transform: translateY(6px); }
.st-rw-plv[hidden]:empty { display: none; }
.st-rw-pexp { margin: 0; }
.st-rw-pexp b { color: #9fe0ff; font-variant-numeric: tabular-nums; }
.st-rw-pnow { margin: 3px 0 0; display: flex; gap: 8px; align-items: center; justify-content: center; }
.st-rw-pnow span { font-weight: 800; color: #fff; }
.st-rw-pnow small { font-size: 0.75rem; color: #b8c2f0; }
.st-rw-lvup { margin: 8px auto 0; padding: 8px 14px; max-width: 320px; border-radius: 12px; background: linear-gradient(180deg, rgba(255,220,120,0.22), rgba(255,170,60,0.12)); border: 1px solid rgba(255,214,120,0.7); box-shadow: 0 0 18px rgba(255,214,120,0.35); }
.st-rw-lvup-t { display: block; font-size: 1.05rem; font-weight: 900; color: #ffe08a; letter-spacing: 0.04em; }
.st-rw-lvup-l { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 2px 12px; justify-content: center; font-size: 0.76rem; }
.st-rw-lvup-l li.tk { color: #ffe08a; font-weight: 800; }
html.hd-reduce .st-rw-plv { transition: none; }
.st-rw-btn { min-width: 11em; margin-top: 6px; padding: 10px 18px; }
/* 動きを減らす: 演出なし(すぐに全部表示) */
.st-rw.still .st-rw-item, .st-rw.still .st-rw-item.in { opacity: 1; transform: none; animation: none; }
html.hd-reduce .st-rw, html.hd-reduce .st-rw-sub { transition: none; }
html.hd-reduce .st-rw-title, html.hd-reduce .st-rw-item.in { animation: none; }
html.hd-reduce .st-rw-label, html.hd-reduce .st-rw-total, html.hd-reduce .st-rw-btn { transition: none; }
html.hd-reduce .st-rw-title { transform: none; opacity: 1; }
html.hd-reduce .st-rw-item.in { transform: none; }
html.hd-reduce .st-rw-item::after, html.hd-reduce .st-rw-item .sp { animation: none; display: none; }
html.hd-reduce .st-rw-item.in .st-item-ico { animation: none; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-rw, html:not(.hd-motion) .st-rw-sub { transition: none; }
  html:not(.hd-motion) .st-rw-title, html:not(.hd-motion) .st-rw-item.in { animation: none; }
  html:not(.hd-motion) .st-rw-label, html:not(.hd-motion) .st-rw-total, html:not(.hd-motion) .st-rw-btn { transition: none; }
  html:not(.hd-motion) .st-rw-title { transform: none; opacity: 1; }
  html:not(.hd-motion) .st-rw-item.in { transform: none; }
  html:not(.hd-motion) .st-rw-item::after, html:not(.hd-motion) .st-rw-item .sp { animation: none; display: none; }
  html:not(.hd-motion) .st-rw-item.in .st-item-ico { animation: none; }
}

/* iOS の長押しメニュー・選択・タップの色・画像のドラッグに邪魔されない(長押しで詳細を出すため) */
.st-slot, .st-rc, .st-dbtn, .st-slot img, .st-rc img { -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }
.st-ico, .st-item-ico { -webkit-user-drag: none; user-drag: none; }
.st-rw:focus { outline: none; }
.st-swallow { position: fixed; inset: 0; z-index: 20; background: transparent; }

/* ---- 小さい画面(幅480px以下) ---- */
@media (max-width: 480px) {
  .st-bhead .hd-title { font-size: 0.86rem; }
  .st-mem { grid-template-columns: var(--st-ring, 40px) minmax(0, 1fr); gap: 4px; }
  .st-gring { width: var(--st-ring, 40px); height: var(--st-ring, 40px); }
  .st-gring .st-ico { width: calc(var(--st-ring, 40px) - 7px); height: calc(var(--st-ring, 40px) - 7px); }
  .st-party { padding: 4px 6px 5px; }
  #stBelow { gap: 5px; }
  #stBelow .hd-pad { height: 48px; }
  .st-banner .m { font-size: 1.4rem; }
  .st-banner.boss .m { font-size: 1.7rem; }
}

/* 盤の下に余白があるとき(hexdrop.js layout() が測り、#stBelow に .st-roomy・--st-ring・--st-hpbar を付ける): 縦長のカード。輪を大きく、HPバーを太く */
.st-roomy .st-party { padding: 8px 10px 10px; }
.st-roomy .st-p-top { margin-bottom: 4px; min-height: var(--st-hpbar, 22px); }
.st-roomy .st-p-bar { height: var(--st-hpbar, 22px); border-radius: 11px; }
.st-roomy .st-p-bar > i { border-radius: 11px 0 0 11px; }
.st-roomy .st-p-bar > b { font-size: 0.9rem; }
.st-roomy .st-members { margin-top: 8px; gap: 8px; }
.st-roomy .st-mem { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 4px; padding: 14px 6px 6px; text-align: center; }
.st-roomy .st-mem-txt { align-items: center; gap: 1px; width: 100%; }
.st-roomy .st-mem-slot { justify-content: center; font-size: 0.82rem; }
.st-roomy .st-mem-g { font-size: 0.8rem; }
.st-roomy .st-mem-ult { font-size: 0.82rem; }
.st-roomy .st-mem .st-key { bottom: 3px; right: 5px; }
.st-roomy .st-gring .st-ico { width: calc(var(--st-ring) - 10px); height: calc(var(--st-ring) - 10px); }
.st-roomy .st-gring .st-badge { right: -4px; bottom: auto; top: -3px; }

/* ---- サーバー保存(ログイン必須・スタミナ) ---- */
.st-stamina { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 6px 0 10px; padding: 6px 10px; border-radius: 12px; background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); font-size: 0.78rem; color: #dfe6ff; }
.st-stamina[hidden] { display: none; }
.st-stamina .st-sta-t { font-weight: 800; font-variant-numeric: tabular-nums; }
.st-stamina .st-sta-t.low { color: #ffb4a0; }
.st-stamina .st-sta-bar { flex: 1 1 90px; min-width: 70px; height: 8px; border-radius: 999px; background: rgba(255,255,255,0.14); overflow: hidden; }
.st-stamina .st-sta-bar i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #4fd2a0, #9bf0c8); }
.st-stamina .hd-btn { white-space: nowrap; }
.st-sc-cost { display: block; margin-top: 2px; font-size: 0.75rem; font-weight: 700; color: #aee4ff; }
.st-stage-card.nostamina .st-sc-cost { color: #ff9c8a; }
.st-stage-card.nostamina { filter: brightness(0.8); }
.st-stage-card.nostamina:hover { filter: brightness(0.9); }
.st-claim { position: fixed; inset: 0; z-index: 9; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(4,5,26,0.86); }
.st-claim[hidden] { display: none; }
/* ほかの端末・タブがセッションを取ったときの案内: ほかのダイアログ・演出・設定より上(このページの操作をすべて止める) */
.st-claim.st-claim-top { z-index: 100; }
.st-claim-in { width: min(340px, 100%); padding: 18px 16px; border-radius: 16px; text-align: center; background: linear-gradient(rgba(40,50,130,0.92), rgba(14,18,64,0.95)); border: 1px solid rgba(190,205,255,0.5); }
.st-claim-text { margin: 0 0 12px; font-size: 0.92rem; line-height: 1.7; color: #eef1ff; }
.st-claim-btns { display: flex; flex-direction: column; gap: 8px; }
.st-claim-btns .hd-btn[hidden] { display: none; }
.st-toast { position: fixed; left: 50%; bottom: 18px; z-index: 7; max-width: min(92vw, 420px); transform: translateX(-50%); padding: 9px 14px; border-radius: 12px; font-size: 0.8rem; line-height: 1.5; text-align: center; color: #fff; background: rgba(20,26,84,0.96); border: 1px solid rgba(190,205,255,0.5); box-shadow: 0 6px 20px rgba(0,0,0,0.5); }
.st-toast[hidden] { display: none; }

/* ============================ ガチャ(無償通貨=スターコア) ============================ */
.st-link { padding: 4px 6px; border: 0; background: none; color: #9fc0ff; font: inherit; font-size: 0.8rem; text-decoration: none; cursor: pointer; }
.st-link:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; border-radius: 4px; }
.st-own { display: inline-block; font-size: 0.75rem; font-weight: 800; color: #ffe9a6; white-space: nowrap; }
.st-roster-sep { grid-column: 1 / -1; margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--st-line); font-size: 0.75rem; color: #aab3dd; }
.st-rc.locked { cursor: not-allowed; background: rgba(8,10,36,0.6); }
.st-rc.locked .st-ico { filter: grayscale(1) brightness(0.32) contrast(1.1); border-color: rgba(150,160,200,0.3); }
.st-rc.locked .st-rc-name { color: #8c95bf; }
.st-rc.locked .st-stars { opacity: 0.5; }

.st-gc-scene { position: relative; height: 150px; margin: 4px 0 6px; border-radius: 16px; overflow: hidden; background: radial-gradient(ellipse at 50% 55%, rgba(110,90,220,0.25), rgba(8,10,40,0.45) 75%), var(--st-u-gacha, url('stella-chars/bg/gacha.webp')) center / cover no-repeat #03041a; border: 1px solid var(--st-line); }
.st-gc-scene .core { position: absolute; left: 50%; top: 50%; width: 34px; height: 34px; margin: -17px; border-radius: 50%; background: radial-gradient(circle, #fff, #ffd98a 45%, rgba(255,200,90,0) 72%); box-shadow: 0 0 36px 10px rgba(255,214,120,0.55); animation: gcPulse 2.8s ease-in-out infinite; }
.st-gc-scene i { position: absolute; left: 50%; top: 50%; border-radius: 50%; border: 1px solid rgba(190,205,255,0.5); transform-origin: 50% 50%; }
.st-gc-scene .o1 { width: 90px; height: 90px; margin: -45px; animation: gcSpin 12s linear infinite; border-style: dashed; }
.st-gc-scene .o2 { width: 150px; height: 150px; margin: -75px; animation: gcSpin 20s linear infinite reverse; border-color: rgba(255,214,120,0.4); }
.st-gc-scene .o3 { width: 230px; height: 230px; margin: -115px; animation: gcSpin 30s linear infinite; border-style: dotted; }
@keyframes gcPulse { 0%, 100% { transform: scale(0.9); opacity: 0.85; } 50% { transform: scale(1.15); opacity: 1; } }
@keyframes gcSpin { to { transform: rotate(360deg); } }
.st-gc-wallet { display: flex; flex-wrap: wrap; gap: 4px 14px; justify-content: center; margin: 6px 0; font-size: 0.82rem; color: #dfe6ff; }
.st-gc-w { display: inline-flex; align-items: center; gap: 5px; padding: 3px 12px 3px 6px; border-radius: 999px; background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); }
.st-gc-w b { color: #fff; font-size: 0.95rem; font-variant-numeric: tabular-nums; }
.st-gc-pity { --p: 0%; margin: 6px auto; padding: 6px 12px; max-width: 420px; text-align: center; font-size: 0.86rem; font-weight: 800; color: #ffe9a6; }
.st-gc-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; max-width: 420px; margin: 10px auto 6px; }
.st-gc-btn { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 10px 6px; line-height: 1.2; }
.st-gc-btn .t { font-size: 1.05rem; font-weight: 900; }
.st-gc-btn small { font-size: 0.75rem; font-weight: 700; opacity: 0.9; }
.st-gc-btn.tk { grid-column: 1 / -1; }
.st-gc-btn.tk[hidden] { display: none; }
.st-gc-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.st-gc-sub { margin: 4px 2px; text-align: center; font-size: 0.75rem; color: #c6cbe8; min-height: 1.3em; }
.st-gc-sub.st-gc-region { color: #ffcf8a; }   /* 有償スターコアをガチャに使えない国の知らせ(§11.16) */
.st-gc-links { margin: 2px 0; text-align: center; }
/* ガチャ画面(モンスト風): 見出し → スターコアガチャ(提供割合・詳細) → バナー → 天井 → 2つの大きなボタン */
.st-gc-head { flex-wrap: wrap; row-gap: 6px; }
.st-gc-head .hd-head-buttons { align-items: center; flex-wrap: wrap; justify-content: flex-end; }
#stGacha { max-width: 720px; margin-left: auto; margin-right: auto; }
.st-gc-sechead { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 6px 0; }
.st-gc-sectitle { margin: 0; font-size: 1.05rem; font-weight: 900; color: #ffe9a6; letter-spacing: 0.04em; }
.st-gc-mini { display: flex; gap: 6px; flex: none; }
.st-gc-minibtn { min-height: 44px; min-width: 44px; padding: 4px 12px; font: inherit; font-size: 0.76rem; font-weight: 800; cursor: pointer; }
.st-gc-minibtn:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-gc-banner { display: block; width: 100%; border-radius: 16px; overflow: hidden; border: 1px solid rgba(255,214,120,0.45); box-shadow: 0 0 22px rgba(255,200,90,0.18); background: #03041a; }
.st-gc-banner img { display: block; width: 100%; height: auto; }
/* ガチャのバナー(frontend/stella-gacha-banner.js): 文字なしの絵の上に、題・副題・名前の札の文字を HTML で重ねる。バナーの幅 1670 = 100 とした px を --u で掛ける(container query。絵と同じ割合で拡大縮小) */
.st-bn { position: relative; display: block; width: 100%; container-type: inline-size; }
.st-bn:not(.is-ready) { visibility: hidden; }                    /* 絵と文字(字体・大きさの調整)がそろうまで見せない(場所は取るので、あとから動かない) */
.st-bn-ov { --u: calc(1cqw * 100 / 1670); position: absolute; inset: 0; pointer-events: none; overflow: hidden; border-radius: 16px; }
@supports not (width: 1cqw) { .st-bn-ov { --u: calc(min(100vw, 720px) / 1670); } }
.st-bn-t, .st-bn-s, .st-bn-n { position: absolute; transform: translate(-50%, -50%); white-space: nowrap; text-align: center; line-height: 1; margin: 0; -webkit-font-smoothing: antialiased; }
.st-bn-t { font-family: 'Shippori Mincho B1', 'Noto Serif', 'Noto Serif TC', 'Noto Serif KR', 'Noto Serif Thai', serif; font-weight: 800; color: #321600; -webkit-text-stroke: calc(var(--u) * 8) #321600; filter: drop-shadow(calc(var(--u) * 6) calc(var(--u) * 8) calc(var(--u) * 8) rgba(0, 0, 0, 0.67)); padding: calc(var(--u) * 4); }
.st-bn-t::after { content: attr(data-t); position: absolute; inset: 0; padding: inherit; color: transparent; -webkit-text-stroke: 0; -webkit-text-fill-color: transparent; background: linear-gradient(180deg, #fff8d2 8%, #f7cf6e 46%, #d69628 92%); -webkit-background-clip: text; background-clip: text; }   /* 後ろ = 濃い茶のふち(本体の文字)・前 = 金のグラデーション(::after) */
.st-bn-s { font-family: 'Zen Maru Gothic', 'Nunito', 'Noto Sans TC', 'Noto Sans KR', 'Noto Sans Thai', sans-serif; font-weight: 700; color: #fffaeb; -webkit-text-stroke: calc(var(--u) * 6) var(--bn-edge, #180205); paint-order: stroke fill; }
.st-bn-n { font-family: 'Shippori Mincho B1', 'Noto Serif', 'Noto Serif TC', 'Noto Serif KR', 'Noto Serif Thai', serif; font-weight: 800; color: #faf6eb; text-shadow: 0 calc(var(--u) * 1.5) calc(var(--u) * 3) rgba(0, 0, 0, 0.55); }
.st-bn-clip { overflow: hidden; text-overflow: ellipsis; line-height: 1.3; }   /* 読める下限を守るとき(日本語以外)は、札・枠の幅で切って末尾を … に */
.st-bn-sn { text-shadow: 0 calc(var(--u) * 2) calc(var(--u) * 3) rgba(0, 0, 0, 0.75); }
.st-bn-ti { position: absolute; display: block; transform: translate(-50%, -50%); }
.st-bn-ti img { display: block; width: 100%; height: auto; }
.st-bn[data-bn="fire"] { --bn-edge: #180205; } .st-bn[data-bn="water"] { --bn-edge: #020618; } .st-bn[data-bn="grass"] { --bn-edge: #021007; }
.st-bn[data-bn="light"] { --bn-edge: #1a1204; } .st-bn[data-bn="dark"] { --bn-edge: #070212; }
.st-gc-owned { margin: 4px 0 0; text-align: center; font-size: 0.75rem; color: #aeb6dc; }
.st-gc-owned b { color: #fff; }
#stGacha .st-gc-btns { max-width: 720px; margin-top: 8px; }
#stGacha .st-gc-btn { min-height: 64px; padding: 10px 6px; }
#stGacha .st-gc-btn small { font-size: 0.78rem; font-weight: 800; opacity: 1; }
#stGacha .st-gc-btn:disabled { opacity: 0.45; filter: grayscale(0.4); }
/* 円の目安(2026-11-02 国ごとの決まり)・提供割合への入口。小さく控えめに(ボタンの主役はスターコアの数)。中身が無いときは場所を取らない */
.st-gc-btn small.st-gc-yen, #stGacha .st-gc-btn small.st-gc-yen { font-size: 0.75rem; font-weight: 700; opacity: 0.88; }
.st-gc-btn small.st-gc-yen:empty { display: none; }
.st-gc-fine { display: flex; flex-direction: column; align-items: center; gap: 2px; margin: 2px auto 4px; max-width: 420px; text-align: center; }
.st-gc-fine-note { margin: 0; padding: 3px 10px; border-radius: 10px; background: rgba(6,8,36,0.55); font-size: 0.75rem; line-height: 1.45; color: #c6cbe8; }
.st-gc-fine-note[hidden] { display: none; }
.st-gc-ratelink { min-height: 44px; padding: 4px 14px; background: rgba(6,8,36,0.55); border: 0; border-radius: 999px; font: inherit; font-size: 0.78rem; font-weight: 800; color: #cfe0ff; cursor: pointer; }
.st-gc-ratelink::after { content: " ›"; }
.st-gc-ratelink:hover { color: #fff; }
.st-gc-ratelink:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; border-radius: 6px; }
.st-fine { margin: 6px 2px 0; font-size: 0.75rem; line-height: 1.5; color: #aeb6dc; text-align: center; }
.st-fine[hidden] { display: none; }
.st-rt-fold { margin-top: 4px; }
.st-rt-fold > summary { cursor: pointer; font-size: 0.75rem; font-weight: 800; color: #cfe0ff; min-height: 32px; display: flex; align-items: center; }
.st-rk-wk-e { flex-basis: 100%; }
.st-rt-note { margin: 8px 0 0; font-weight: 800; color: #ffe9a6; }

/* ---- 提供割合・ルールのシート ---- */
.st-rt-p { margin: 4px 0; font-size: 0.76rem; line-height: 1.55; color: #dfe6ff; }
.st-rt-row { margin: 6px 0; padding: 6px 8px; border-radius: 10px; background: rgba(0,0,24,0.45); border: 1px solid color-mix(in srgb, var(--rc, #9fc0ff) 55%, transparent); }
.st-rt-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.st-rt-star { color: var(--rc, #ffd24a); font-weight: 900; font-size: 0.9rem; }
.st-rt-head b { font-size: 0.95rem; font-variant-numeric: tabular-nums; }
.st-rt-chars { display: flex; flex-wrap: wrap; gap: 4px 6px; margin-top: 4px; }
.st-rt-ch { display: inline-flex; align-items: center; gap: 4px; padding: 1px 7px 1px 2px; border-radius: 999px; font-size: 0.75rem; background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); }
.st-rt-ch b { font-variant-numeric: tabular-nums; color: #ffe9a6; }
.st-rt-ch .st-badge { font-size: 0.75rem; }

/* ---- 演出(召喚 → カードがめくれる → 結果) ---- */
.st-rv { position: fixed; inset: 0; z-index: 8; display: flex; align-items: center; justify-content: center; padding: 10px; overflow-y: auto; background: radial-gradient(ellipse at 50% 38%, color-mix(in srgb, var(--rc, #9fc0ff) 18%, rgba(30,28,100,0.3)), rgba(3,4,22,0.62) 76%), var(--st-u-gacha, url('stella-chars/bg/gacha.webp')) center / cover no-repeat #03041a; }
.st-rv[hidden] { display: none; }
.st-rv:focus { outline: none; }
.st-rv-main { width: min(480px, 100%); margin: auto; text-align: center; transition: opacity 0.4s; }
.st-rv-main.wait { opacity: 0; }
.st-rv-title { margin: 0 0 8px; font-size: 1.1rem; font-weight: 900; letter-spacing: 0.08em; color: #fff; text-shadow: 0 0 14px var(--rc, #9fc0ff), 0 2px 0 rgba(0,0,0,0.7); }
.st-rv-cards { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.st-rv-cards.one { grid-template-columns: minmax(0, min(250px, 64vw)); justify-content: center; margin: 6px 0; }
.st-rv-card { position: relative; perspective: 700px; aspect-ratio: 3 / 4.8; }                     /* 背が高いカード(立ち絵を切り取る) */
.st-rv-cards.one .st-rv-card { aspect-ratio: 3 / 5; }
.st-rv-card .in { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; transition: transform 0.5s cubic-bezier(0.3, 1.3, 0.5, 1); }
.st-rv-card.up .in { transform: rotateY(180deg); }
.st-rv-card.noanim .in { transition: none; }
.st-rv-card .back, .st-rv-card .face { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; border-radius: 10px; backface-visibility: hidden; -webkit-backface-visibility: hidden; overflow: hidden; }
/* 裏 = オーナー提供の絵(2026-10-23。青 = ふつう・★3 / 金 = ★5。tools/art/make_card_backs.py)。絵は本体(角丸の長方形)がカードの箱ぴったりで、上下の菱形の先端だけ箱の外へ(inset: -2.47% 0)。青は ::before、金は ::after(★5で透明から重ねる) */
.st-rv-card .back { overflow: visible; justify-content: flex-end; padding-bottom: 4.5%; isolation: isolate; border: 0; background: none; }
.st-rv-card .back::before, .st-rv-card .back::after { content: ''; position: absolute; inset: -2.47% 0; z-index: 0; pointer-events: none; background: var(--st-u-back-normal, url('stella-ui/gacha-back-normal.webp')) center / 100% 100% no-repeat; }
.st-rv-card .back::after { background-image: var(--st-u-back-star5, url('stella-ui/gacha-back-star5.webp')); opacity: 0; transition: opacity 0.3s ease-out; }
.st-rv-card .face { display: block; transform: rotateY(180deg); padding: 0; border: 0; background: radial-gradient(ellipse at 50% 32%, color-mix(in srgb, var(--rc) 34%, #1c2268), #080b30 78%); box-shadow: 0 0 10px color-mix(in srgb, var(--rc) 40%, transparent); }
/* ★4 = 青い裏のまま、形に沿った金の縁の光(drop-shadow は絵の透明部分に沿う)。★5 = 金の裏 + 白金の強い光(虹の気配つき) */
.st-rv-card.bk4 .back { filter: drop-shadow(0 0 4px rgba(255,208,96,1)) drop-shadow(0 0 10px rgba(255,186,48,0.85)) drop-shadow(0 0 20px rgba(255,170,40,0.4)); }
.st-rv-card.bk5 .back { filter: drop-shadow(0 0 5px rgba(255,244,190,1)) drop-shadow(0 0 14px rgba(255,214,90,0.8)) drop-shadow(0 0 24px rgba(197,139,255,0.45)); }
.st-rv-card.bk5 .back::after { opacity: 1; }
html.hd-reduce .st-rv-card .back::after { transition: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-rv-card .back::after { transition: none; } }
.st-rv-card.tease .in { animation: rvTease 0.5s ease-in-out infinite; }
.st-rv-card.tint .in { animation: rvTint 0.45s ease-out; }
/* ★5だけの演出(見た目だけ): 時間停止・夜明け・逆転の一番星・影の気配。transform / opacity / filter だけで軽く */
.st-rv.timestop { filter: grayscale(1) contrast(1.15); }
.st-rv.timestop .st-rv-summon * { animation-play-state: paused !important; }
.st-rv.tsburst::before { content: ''; z-index: 4; position: absolute; inset: 0; background: radial-gradient(circle at 50% 45%, #fff 0, #ffe9a6 18%, rgba(255,190,50,0.65) 40%, rgba(255,190,50,0) 70%); animation: rvTsBurst 0.9s ease-out forwards; pointer-events: none; }
@keyframes rvTsBurst { 0% { transform: scale(0.15); opacity: 1; } 100% { transform: scale(2.4); opacity: 0; } }
.st-gth-dawn { position: absolute; inset: 0; pointer-events: none; opacity: calc(var(--dw, 0) * 0.85); background: radial-gradient(ellipse at 50% 105%, rgba(255,236,160,0.95), rgba(255,170,60,0.55) 38%, rgba(255,120,60,0) 72%), linear-gradient(to top, rgba(255,190,80,0.5), rgba(255,130,70,0.18) 50%, rgba(255,130,70,0) 80%); }
.st-rv-card.starwait .in { animation: rvStarWait 0.8s ease-in-out infinite alternate; }
.st-rv-card.starhit .in { animation: rvTint 0.45s ease-out; }
@keyframes rvStarWait { from { filter: brightness(1); } to { filter: brightness(1.5); } }
.st-rv-star { position: fixed; z-index: 5; width: 0; height: 0; pointer-events: none; animation: rvStarFly 0.72s cubic-bezier(0.45, 0, 0.9, 0.7) forwards; }
.st-rv-star::before { content: ''; position: absolute; left: -9px; top: -9px; width: 18px; height: 18px; border-radius: 50%; background: radial-gradient(circle, #fff 0, #fff3b0 40%, rgba(255,210,74,0) 72%); box-shadow: 0 0 14px 4px rgba(255,210,74,0.85); }
.st-rv-star::after { content: ''; position: absolute; left: 0; top: -2px; width: min(60vw, 260px); height: 4px; border-radius: 2px; transform-origin: 0 50%; transform: rotate(var(--ang)); background: linear-gradient(to right, rgba(255,250,215,0.95), rgba(255,214,90,0.5) 40%, rgba(255,214,90,0)); }
@keyframes rvStarFly { from { transform: translate(var(--dx), var(--dy)); } to { transform: translate(0, 0); } }
.st-rv-card .back .shd { position: absolute; z-index: 1; inset: 6% 8%; width: 84%; height: 88%; object-fit: contain; object-position: center top; filter: brightness(0); opacity: 0.55; pointer-events: none; -webkit-user-drag: none; }   /* 絵の上でも見えるよう、以前(0.32 / 0.22)より濃く */
.st-rv-card.shadow .back .shd { animation: rvShadow 1.3s ease-in-out forwards; }
@keyframes rvShadow { 0% { opacity: 0; } 55% { opacity: 0.7; } 100% { opacity: 0.5; } }
@keyframes rvTease { 0%, 100% { transform: translateX(0) rotate(0); } 25% { transform: translateX(-3px) rotate(-2deg); } 75% { transform: translateX(3px) rotate(2deg); } }
@keyframes rvTint { 0% { transform: scale(1); filter: brightness(1); } 40% { transform: scale(1.12); filter: brightness(1.8); } 100% { transform: scale(1); filter: brightness(1); } }
.st-rv-card[tabindex] { cursor: pointer; }
.st-rv-card[tabindex]:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-rv-card.r5 .face { box-shadow: 0 0 18px var(--rc), 0 0 28px rgba(255,236,170,0.4); }
.st-rv-card.up.r5 .face { animation: rvShimmer 1.6s ease-in-out infinite alternate; }
.st-rv-card.r5 .face.rf::before { background-size: 200% 100%; animation: rfPrism 3.2s linear infinite; }
.st-rv-cards:not(.one) .st-rv-card.r5 .face.rf::before { background: linear-gradient(110deg, #f0a818, #ffd24a 25%, #fff6c8 40%, #ffd24a 55%, #f0a818 75%, #ffd24a); background-size: 200% 100%; }   /* 10連の★5は虹ではなく金の光沢(虹は単発の大きなカードだけ) */
/* 結果のカード: 切り取った立ち絵(全面)+ 下に名前と★ + 角にバッジ(NEW = 金のリボン / ×N = 紺) */
.st-rv-card .face .art { position: absolute; inset: 0; }
.st-rv-card .face .art img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 8%; -webkit-user-drag: none; }
.st-rv-cards:not(.one) .st-rv-card .face .art img { object-fit: contain; object-position: 50% 0; }   /* 10連のカードもキャラ全体を映す(ズームしない。オーナー 2026-10-13)。単発は全身のまま */
.st-rv-card .face::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 44%; background: linear-gradient(transparent, rgba(3,4,22,0.94)); pointer-events: none; }
.st-rv-card .face .cap { position: absolute; left: 2px; right: 2px; bottom: 5px; z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 2px; }
.st-rv-card .nm { max-width: 100%; padding: 0 2px; font-size: 0.75rem; font-weight: 800; line-height: 1.15; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-shadow: 0 1px 3px #000, 0 0 6px rgba(0,0,0,0.8); }
.st-rv-card .face .st-stars { font-size: 11px; }
.st-rv-card .bdg { position: absolute; top: 4px; left: 4px; z-index: 3; padding: 1px 6px; border-radius: 12px; font-size: 0.75rem; font-weight: 900; line-height: 1.25; letter-spacing: 0.02em; font-variant-numeric: tabular-nums; }
.st-rv-card .bdg.new, .st-rv-spot .big-lab.new { color: #3a2600; background: linear-gradient(#fff0b8, #f2c14e); box-shadow: 0 1px 0 #a3731a, 0 0 8px rgba(242,193,78,0.7); }
.st-rv-card .bdg.dupe, .st-rv-spot .big-lab.dupe { color: #dfe6ff; background: rgba(10,14,60,0.88); border: 1px solid rgba(190,205,255,0.6); }
.st-rv-cards.one .nm { font-size: 1.15rem; padding-bottom: 1px; }
.st-rv-cards.one .face .st-stars { font-size: 20px; gap: 3px; }
.st-rv-cards.one .face .cap { bottom: 12px; gap: 5px; }
.st-rv-cards.one .bdg { top: 8px; left: 8px; padding: 2px 10px; font-size: 0.85rem; }
.st-rv-cards.one .face { --rf-w: 3px; }
/* ★4以上のスポットライト(結果の画面): 色はレア度の色(★4 金 / ★5 虹)。aura = カードの後ろの光、rays = 単発の放射状の光 */
.st-rv-card .in { z-index: 1; }
.st-rv-card .aura { position: absolute; inset: -2px; z-index: 0; border-radius: 12px; pointer-events: none; opacity: 0; box-shadow: 0 0 12px 2px color-mix(in srgb, var(--rc) 75%, transparent), 0 0 30px color-mix(in srgb, var(--rc) 40%, transparent); animation: rvAuraIn 0.4s 0.3s ease-out forwards, rvAura 1.8s 0.7s ease-in-out infinite alternate; }
.st-rv-card.r5 .aura { box-shadow: 0 0 14px 3px rgba(255,233,166,0.85), 0 0 30px rgba(255,255,255,0.35), 0 10px 30px rgba(255,214,90,0.4); }
.st-rv-card .rays { --ray: min(100vw, 520px); position: absolute; left: 50%; top: 50%; z-index: 0; width: var(--ray); height: var(--ray); margin: calc(var(--ray) / -2) 0 0 calc(var(--ray) / -2); pointer-events: none; opacity: 0; background: repeating-conic-gradient(from 0deg, color-mix(in srgb, var(--rc) 55%, transparent) 0deg 5deg, transparent 5deg 15deg); -webkit-mask-image: radial-gradient(circle, #000 26%, transparent 68%); mask-image: radial-gradient(circle, #000 26%, transparent 68%); animation: rvAuraIn 0.6s 0.3s ease-out forwards, rvSpin 24s linear infinite; }
.st-rv-card.r5 .rays { background: repeating-conic-gradient(from 0deg, rgba(255,122,168,0.5) 0deg 4deg, transparent 4deg 10deg, rgba(255,226,122,0.55) 10deg 14deg, transparent 14deg 20deg, rgba(98,200,255,0.5) 20deg 24deg, transparent 24deg 30deg); }
@keyframes rvAuraIn { to { opacity: 1; } }
@keyframes rvAura { from { opacity: 0.75; } to { opacity: 1; } }
.st-rv-res { margin-top: 12px; }
.st-rv-sum { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px; margin: 0; font-size: 0.9rem; font-weight: 800; color: #fff; }
.st-rv-sum .sum-c { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border-radius: 12px; background: rgba(10,14,60,0.72); border: 1px solid color-mix(in srgb, var(--rc) 65%, transparent); }
.st-rv-sum .sum-s { display: inline-flex; font-size: 0.8rem; }
.st-rv-sum .sum-c b { font-size: 0.9rem; font-variant-numeric: tabular-nums; }
.st-rv-sum .sum-new { padding: 3px 10px; border-radius: 12px; font-size: 0.8rem; font-weight: 900; color: #3a2600; background: linear-gradient(#fff0b8, #f2c14e); box-shadow: 0 1px 0 #a3731a, 0 0 8px rgba(242,193,78,0.6); }
.st-rv-note { margin: 0 0 6px; font-size: 0.75rem; color: #aab3dd; }
.st-rv-wallet { margin: 4px 0 8px; font-size: 0.76rem; color: #c6cbe8; }
.st-rv-btns { display: flex; flex-direction: column; gap: 8px; max-width: 280px; margin: 0 auto; }
.st-rv-btns .hd-btn { padding: 10px 14px; }
.st-rv-res[hidden], .st-rv-spot[hidden], .st-rv-skip[hidden] { display: none; }
.st-rv-skip { position: absolute; right: 10px; bottom: 12px; z-index: 3; }

/* 集める演出: スターコアが浮かび、長押しで真ん中へ集まる(canvas は stella-stage-gacha-fx.js。核・ゲージの輪・文字は DOM)。
   --p = ゲージ(0..1)、--g = 集まり具合(0..1)。核の色は r3 / r4 / r5(結果のレア度を超えない。JS が選ぶ) */
.st-rv-summon { position: absolute; inset: 0; z-index: 1; opacity: 0; transition: opacity 0.4s; pointer-events: none; overflow: hidden; touch-action: none; cursor: pointer; }
.st-rv.gather .st-rv-summon { opacity: 1; pointer-events: auto; }
.st-rv-summon.fusing { pointer-events: none; cursor: default; }
.st-rv-summon, .st-rv-summon * { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; }
.st-gth-cv { position: absolute; inset: 0; width: 100%; height: 100%; display: block; pointer-events: none; }
.st-gth-core { position: absolute; left: 50%; top: 45%; width: 220px; height: 220px; margin: -110px; border-radius: 50%; pointer-events: none; isolation: isolate;
  filter: drop-shadow(0 0 calc(6px + 26px * var(--g, 0)) var(--rc, #9fc0ff)) brightness(calc(1.15 + 0.6 * var(--g, 0))) saturate(1.2);   /* --g はこの要素だけに、1/12 刻みで JS が書く(毎コマ描き直さない) */
  transform: scale(0.5); will-change: transform; }   /* 大きさは JS が transform で書く(合成だけ)。will-change で、はじけて scale(12) になるときも、拡大した大きさで描き直さない(スマホで巨大なテクスチャを作らない) */
/* 集まる先: オーナー提供の星雲の靄(stella-chars/bg/core-nebula.webp)。ゆっくり回り、核の色(レア度の色)に染まる。中心は白く光る */
.st-gth-core::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: var(--st-u-core-nebula, url('stella-chars/bg/core-nebula.webp')) center / contain no-repeat; animation: gthSpin 48s linear infinite; }
.st-gth-core::after { content: ''; position: absolute; inset: 4%; z-index: 1; border-radius: 50%; background: radial-gradient(circle, var(--tint, transparent) 0, color-mix(in srgb, var(--tint, transparent) 70%, transparent) 32%, transparent 64%); mix-blend-mode: color; opacity: 0; transition: opacity 0.5s; }
.st-rv-summon.r4 .st-gth-core::after { --tint: var(--st-rar-4, #d9962a); opacity: 0.75; }   /* ★4 = 金(全体のレア度の色と同じ)・★5 = 虹(プリズム)に染まる。青(★3)は絵の色のまま */
.st-rv-summon.r5 .st-gth-core::after { background: conic-gradient(from 0deg, #ff6b6b, #ffd24a, #7bff8a, #4fd4ff, #8a7bff, #ff7be0, #ff6b6b); -webkit-mask-image: radial-gradient(circle, #000 0, rgba(0,0,0,0.7) 32%, transparent 64%); mask-image: radial-gradient(circle, #000 0, rgba(0,0,0,0.7) 32%, transparent 64%); opacity: 0.85; animation: gthSpin 9s linear infinite; }
.hd-reduce .st-rv-summon.r5 .st-gth-core::after { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-rv-summon.r5 .st-gth-core::after { animation: none; } }
.st-gth-glow { position: absolute; left: 50%; top: 50%; width: 30%; height: 30%; margin: -15%; border-radius: 50%; z-index: 2; background: radial-gradient(circle, #fff 0, rgba(255,255,255,0.85) 22%, color-mix(in srgb, var(--rc, #9fc0ff) 60%, transparent) 50%, transparent 72%); opacity: calc(0.45 + 0.55 * var(--g, 0)); }
@keyframes gthSpin { to { transform: rotate(360deg); } }
.hd-reduce .st-gth-core::before { animation: none; }
.st-gth-ring { position: absolute; left: 50%; top: 45%; width: 188px; height: 188px; margin: -94px; transform: rotate(-90deg); pointer-events: none; overflow: visible; opacity: 0; } /* 輪のゲージは見せない(オーナー指定)。読み上げ用の進み具合としてだけ残す */
.st-gth-ring circle { fill: none; stroke-width: 7; }
.st-gth-ring .trk { stroke: rgba(190, 205, 255, 0.22); }
.st-gth-ring .bar { stroke: var(--rc, #9fc0ff); stroke-linecap: round; stroke-dasharray: 553; stroke-dashoffset: 553; }   /* 輪は見せていない(上の opacity: 0)ので、光のフィルターは掛けない */
.st-gth-text { position: absolute; left: 0; right: 0; top: calc(var(--gr-hy, calc(45% + 74px)) + 56px); padding: 0 12px; text-align: center; pointer-events: none; }
.st-gth-prompt { margin: 0; font-size: 1.05rem; font-weight: 900; letter-spacing: 0.06em; color: #fff; text-shadow: 0 0 12px var(--rc, #9fc0ff), 0 2px 0 rgba(0, 0, 0, 0.7); }
.st-gth-sub { margin: 4px 0 0; font-size: 0.75rem; font-weight: 600; color: #b7c0ec; }
.st-rv-summon.waiting .st-gth-prompt, .st-rv-summon:not(.holding):not(.full) .st-gth-prompt { animation: rvBlink 1.6s ease-in-out infinite; }
.st-rv-summon.full .st-gth-core { animation: gthPulse 0.6s ease-in-out infinite alternate; }
.st-rv-summon.fusing .st-gth-core { filter: brightness(1.75) saturate(1.2); animation: gthFuse 0.6s ease-in forwards; }
/* はじける(.fusing): ×12 に拡大するものには、CSS の filter(drop-shadow / brightness)・mix-blend-mode を使わない。拡大した大きさで毎コマ描き直され、スマホで 100〜300ms 固まる原因だった。
   同じ光は、1度だけ描いた光のふち(.st-gth-halo = ぼかし済みの放射グラデーション)と、transform / opacity だけの動きで出す。最後のはじけ(.fin)は、核を 0 まで薄くして、消え終わり(animationend)で JS が片づける */
.st-rv-summon.fusing.fin .st-gth-core { animation: gthFuse 0.6s ease-in forwards, gthFade 0.4s 0.6s linear forwards; }
.st-gth-halo { position: absolute; left: 50%; top: 45%; width: 308px; height: 308px; margin: -154px; border-radius: 50%; pointer-events: none; opacity: 0; transform: scale(0.5);
  background: radial-gradient(circle closest-side, color-mix(in srgb, var(--rc, #9fc0ff) 54%, transparent) 0, color-mix(in srgb, var(--rc, #9fc0ff) 40%, transparent) 62%, transparent 100%); }
.st-rv-summon.fusing .st-gth-halo { will-change: transform; animation: gthFuse 0.6s ease-in forwards; }
.st-rv-summon.fusing.fin .st-gth-halo { animation: gthFuse 0.6s ease-in forwards, gthFade 0.4s 0.6s linear forwards; }
.st-rv-summon.fusing .st-gth-ring, .st-rv-summon.fusing .st-gth-text { opacity: 0; transition: opacity 0.25s; }
.st-rv-summon.full .st-gth-sub { visibility: hidden; }
@keyframes gthPulse { from { transform: scale(1.05); } to { transform: scale(1.18); } }
@keyframes gthFuse { 0% { transform: scale(1.1); opacity: 1; } 100% { transform: scale(12); opacity: 0.2; } }
@keyframes gthFade { from { opacity: 0.2; } to { opacity: 0; } }
@keyframes rvShake { 0%, 100% { transform: none; } 8% { transform: translate(-12px, 6px) rotate(-0.5deg); } 20% { transform: translate(11px, -7px) rotate(0.4deg); } 32% { transform: translate(-9px, -4px); } 46% { transform: translate(8px, 5px); } 60% { transform: translate(-5px, 3px); } 75% { transform: translate(3px, -2px); } 88% { transform: translate(-1px, 1px); } }
.st-rv.crack { animation: rvShake 0.5s linear; }
.st-rv-shatter { position: absolute; inset: 0; z-index: 6; width: 100%; height: 100%; display: block; pointer-events: none; }   /* 確定演出「画面割れ」の canvas(ひび・破片。stella-stage-gacha-fx.js の createShatter が描く)。はじけの閃光(z-index 4)より上 */
.st-rv.crack::before { content: ''; z-index: 4; position: absolute; inset: 0; background: radial-gradient(circle at 50% 45%, #fff 0, rgba(255, 255, 255, 0.85) 32%, rgba(255, 255, 255, 0) 78%); animation: rvCrackFlash 0.4s ease-out forwards; pointer-events: none; }
@keyframes rvCrackFlash { 0% { opacity: 1; } 100% { opacity: 0; } }
html.hd-reduce .st-rv.crack, html.hd-reduce .st-rv.crack::before { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-rv.crack, html:not(.hd-motion) .st-rv.crack::before { animation: none; } }
.st-rv-auto { position: absolute; left: 10px; bottom: 12px; z-index: 3; min-height: 44px; }
.st-rv-auto[hidden] { display: none; }
.st-rv-skip { min-height: 44px; }
.st-rv.burst::after { content: ''; z-index: 4; position: absolute; inset: 0; background: radial-gradient(circle at 50% 45%, #fff, color-mix(in srgb, var(--rc, #9fc0ff) 70%, transparent) 38%, rgba(255,255,255,0) 72%); animation: rvFlash 0.6s ease-out forwards; pointer-events: none; }
@keyframes rvFlash { 0% { opacity: 1; } 100% { opacity: 0; } }
@keyframes rvShimmer { from { box-shadow: 0 0 12px var(--rc), inset 0 0 10px rgba(255,214,90,0.3); } to { box-shadow: 0 0 26px var(--rc), inset 0 0 18px rgba(255,214,90,0.6); } }

/* ★4以上の紹介(全画面) */
.st-rv-spot { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 12px; overflow: hidden; cursor: pointer; background: radial-gradient(ellipse at 50% 40%, color-mix(in srgb, var(--rc) 28%, rgba(14,12,50,0.5)), rgba(3,4,20,0.78) 74%); animation: rvSpotIn 0.35s ease-out; }
.st-rv-spot .frame, .st-rv-spot .info { position: relative; z-index: 1; }
.st-rv-spot .frame { height: min(52vh, 440px); aspect-ratio: 3 / 5; max-width: 78vw; border-radius: 14px; overflow: hidden; border: 2px solid var(--rc); background: #0c1030; box-shadow: 0 0 28px var(--rc), 0 0 70px color-mix(in srgb, var(--rc) 45%, transparent); animation: rvArt 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) both; }
.st-rv-spot.r5 .frame { animation: rvArt 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) both, rvGlow 1.6s 0.6s ease-in-out infinite alternate; }
.st-rv-spot .art { display: block; width: 100%; height: 100%; object-fit: cover; }
.st-rv-spot video.art { pointer-events: none; }
.st-rv-spot .info { display: flex; flex-direction: column; align-items: center; gap: 3px; text-align: center; animation: rvText 0.5s 0.25s ease-out both; }
.st-rv-spot .big-stars { display: flex; justify-content: center; font-size: 1.6rem; }
.st-rv-spot .big-stars .st-stars { font-size: 26px; gap: 4px; filter: drop-shadow(0 0 8px var(--rc)) drop-shadow(0 2px 0 rgba(0,0,0,0.7)); }
.st-rv-spot .frame.rf:not(.cut) { border-color: transparent; --rf-w: 3px; }
.st-rv-spot .frame.cut::before { display: none; }
.st-rv-spot .big-name { font-size: 1.5rem; font-weight: 900; color: #fff; text-shadow: 0 0 10px rgba(0,0,0,0.8), 0 2px 0 rgba(0,0,0,0.7); }
.st-rv-spot .big-title { font-size: 0.78rem; color: #d6dcff; }
.st-rv-spot .big-lab { margin-top: 2px; padding: 2px 12px; border-radius: 999px; font-size: 0.8rem; font-weight: 800; }
.st-rv-spot .hint { margin-top: 4px; font-size: 0.75rem; color: #aab3dd; animation: rvBlink 1.4s ease-in-out infinite; }
.st-rv-spot .rays { position: absolute; left: 50%; top: 40%; width: 117vmax; height: 117vmax; margin: -58.5vmax 0 0 -58.5vmax; background: repeating-conic-gradient(from 0deg, rgba(255,214,90,0.3) 0deg 6deg, transparent 6deg 18deg); -webkit-mask-image: radial-gradient(circle closest-side, #000 0, transparent 100%); mask-image: radial-gradient(circle closest-side, #000 0, transparent 100%); animation: rvSpin 18s linear infinite; pointer-events: none; }
.st-rv-spot .bring { position: absolute; left: 50%; top: 40%; width: 40px; height: 40px; margin: -20px; border-radius: 50%; border: 3px solid #ffe08a; opacity: 0; pointer-events: none; animation: rvBring 1.4s ease-out forwards; }
.st-rv-spot .bring.b1 { animation-delay: 0.25s; }
.st-rv-spot .bring.b2 { animation-delay: 0.5s; }
.st-rv-spot .spk { position: absolute; left: 50%; top: 40%; width: 6px; height: 6px; margin: -3px; border-radius: 50%; background: #fff6c8; box-shadow: 0 0 8px #ffd24a; opacity: 0; pointer-events: none; transform: rotate(var(--a)) translateX(0); animation: rvSpk 1.2s var(--d) ease-out forwards; }
.st-rv-spot.r5::before { content: ''; position: absolute; inset: 0; z-index: 3; background: #fff; opacity: 0; pointer-events: none; animation: rvFlash 0.7s ease-out; }
@keyframes rvSpotIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes rvArt { from { transform: scale(0.5); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes rvText { from { transform: translateY(14px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes rvGlow { from { box-shadow: 0 0 24px var(--rc), 0 0 60px rgba(255,200,80,0.35); } to { box-shadow: 0 0 40px var(--rc), 0 0 110px rgba(255,200,80,0.7); } }
@keyframes rvBlink { 0%, 100% { opacity: 0.4; } 50% { opacity: 1; } }
@keyframes rvSpin { to { transform: rotate(360deg); } }
@keyframes rvBring { 0% { transform: scale(0.4); opacity: 0.9; } 100% { transform: scale(16); opacity: 0; } }
@keyframes rvSpk { 0% { transform: rotate(var(--a)) translateX(0); opacity: 1; } 100% { transform: rotate(var(--a)) translateX(var(--x)); opacity: 0; } }

/* 動きを減らす(設定「演出を減らす」・OSの設定): 演出なしで結果だけ出す(JS も演出を飛ばす)。念のため、残るアニメーションも止める */
.st-rv.still *, .st-rv.still *::before, .st-rv.still *::after { animation: none !important; transition: none !important; }
html.hd-reduce .st-rv *, html.hd-reduce .st-rv *::before, html.hd-reduce .st-rv *::after, html.hd-reduce .st-gc-scene *, html.hd-reduce .st-gc-scene .core { animation: none !important; transition: none !important; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-rv *, html:not(.hd-motion) .st-rv *::before, html:not(.hd-motion) .st-rv *::after, html:not(.hd-motion) .st-gc-scene *, html:not(.hd-motion) .st-gc-scene .core { animation: none !important; transition: none !important; }
}
@media (max-width: 480px) {
  .st-rv-cards { gap: 4px; }
  .st-rv-card .nm { font-size: 0.75rem; }
  .st-rv-card .lab { font-size: 0.75rem; }
  .st-rv-spot .big-name { font-size: 1.3rem; }
}
.st-rv-card, .st-rv-spot, .st-rv-spot img { -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none; }
/* ================================================================================================
   ガチャ: 運ぶ操作の手元のスターコア(.st-gth-hand)と、キャラの紹介(柱の演出。.st-gr-intro / .gi)(2026-10-18。stella-stage-gacha-reveal.js)
   集める画面は従来どおり(上の .st-rv-summon / .st-gth-*)。手元のスターコアは画面の下(--gr-hy)にあり、つかんで真ん中の核へ運ぶ。
   紹介は、紹介のあるカード(単発・★5・NEW)がめくられる番のとき、一覧の上に重なる。絵は GACHA_ART(柱・属性の紋。透明 webp)。動きを減らす設定は、下の .gi.rd と html.hd-reduce の規則
   ================================================================================================ */
.st-gr-intro { position: absolute; inset: 0; z-index: 3; overflow: hidden; pointer-events: none; }
.st-gr-intro[hidden] { display: none; }
.st-gr-msg { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }   /* 読み上げ専用(名前・★ の知らせ) */
.st-gth-hand { position: absolute; left: 0; top: 0; width: 0; height: 0; z-index: 3; outline: none; will-change: transform; pointer-events: none; }
.st-gth-hand .hh { position: absolute; left: -48px; top: -48px; width: 96px; height: 96px; border-radius: 50%; background: radial-gradient(circle, rgba(255, 238, 180, 0.6), rgba(140, 170, 255, 0.28) 46%, transparent 70%); animation: gthHand 1.2s ease-in-out infinite alternate; }
.st-gth-hand img { position: absolute; left: -28px; top: -28px; width: 56px; height: 56px; filter: drop-shadow(0 0 8px #ffd24a); -webkit-user-drag: none; }
.st-gth-hand:focus-visible::after { content: ''; position: absolute; left: -36px; top: -36px; width: 72px; height: 72px; border-radius: 50%; border: 2px solid #ffd166; }
.st-gth-hint { position: absolute; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 7%); transform: translateX(-50%); z-index: 3; opacity: 0; pointer-events: none; }
.st-gth-hint.on { opacity: 1; transition: opacity 0.3s ease-out; }   /* 消すときは、すぐ(transition なし) */
/* タイトルの「CLICK TO START」(.op-start-t)と同じ文字・枠・光・ゆっくりした点滅。手元のスターコアの下に出す(スターコアにも、真ん中にも重ならない) */
.st-gth-hint > span { position: relative; display: block; white-space: nowrap; padding: 4px 0 4px 0.24em; text-align: center; font-family: var(--st-font-head, 'Cinzel', serif); font-size: clamp(1.05rem, 4.4vw, 1.5rem); font-weight: 700; letter-spacing: 0.24em; color: #fff4cf; text-shadow: 0 0 14px rgba(255, 214, 120, 0.7), 0 2px 8px rgba(0, 0, 0, 0.9); animation: opBlink 2.6s ease-in-out infinite; }
.st-gth-hint > span::after { content: ''; position: absolute; inset: -6px -14px -6px -12px; border: 1.5px solid rgba(255, 244, 207, 0.85); border-radius: 8px; box-shadow: 0 0 12px rgba(255, 214, 120, 0.45), inset 0 0 10px rgba(255, 214, 120, 0.2); pointer-events: none; }
html.hd-reduce .st-gth-hint > span { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-gth-hint > span { animation: none; } }
.st-gth-hand.gone { opacity: 0; transition: opacity 0.25s ease-out; }
.st-gth-hand::before { content: ''; position: absolute; left: -44px; top: -44px; width: 88px; height: 88px; border-radius: 50%; border: 2px solid rgba(255, 226, 140, 0.9); opacity: 0; pointer-events: none; }
.st-gth-hand.idle::before { animation: gthHint 1.4s ease-out infinite; }   /* まだ触っていない: つかめると知らせる輪が、手元のスターコアから広がる */
@keyframes gthHint { 0% { opacity: 0.9; transform: scale(0.6); } 100% { opacity: 0; transform: scale(1.5); } }
.st-rv-summon.grabbing { cursor: grabbing; }
/* 単発の結果: 紹介の最後の姿(全身・紋・名前・★・NEW)を残して、結果のボタン・まとめを下に重ねる(カードは出さない)。紹介の絵は少し上へ縮めて、文字がボタンに重ならないように */
@property --feet { syntax: '<percentage>'; inherits: true; initial-value: 64%; }
@property --ch { syntax: '<length>'; inherits: true; initial-value: 400px; }
.gi { transition: --feet 0.45s ease-out, --ch 0.45s ease-out; }
.st-rv.over { overflow: hidden; }
.st-rv.over .gi { --feet: 40%; --ch: min(36vh, 100vw); }
.st-rv.over .gi-hint { display: none; }
.st-rv.over .st-rv-main { position: absolute; left: 0; right: 0; bottom: 0; z-index: 5; width: 100%; margin: 0; padding: 22px 12px calc(env(safe-area-inset-bottom, 0px) + 12px); background: linear-gradient(to top, rgba(3, 4, 22, 0.94) 70%, rgba(3, 4, 22, 0)); }
.st-rv.over .st-rv-title, .st-rv.over .st-rv-cards { display: none; }
@keyframes gthHand { from { opacity: 0.75; transform: scale(0.92); } to { opacity: 1; transform: scale(1.1); } }

/* ---- キャラの紹介(曲の時間割。着地 = 0 秒。--k = 時間の倍率(いまは常に 1)。クラス p1〜p6・n1〜n4 を JS が時間割で付ける) ---- */
.gi { --feet: 64%; --ch: min(58vh, 140vw); --cw: calc(var(--ch) * 0.6); --k: 1; position: absolute; inset: 0; color: #fff; }
.gi-veil { position: absolute; inset: 0; opacity: 0; background: radial-gradient(ellipse 90% 70% at 50% 60%, color-mix(in srgb, var(--el, #8fb3ff) 34%, #05061c), #02030f 80%); }
.gi.p1 .gi-veil { animation: giFadeIn calc(0.35s * var(--k)) ease-out forwards; }
.gi-dawn { position: absolute; inset: 0; opacity: 0; background: radial-gradient(ellipse 130% 60% at 50% 100%, rgba(255, 214, 120, 0.9), rgba(255, 150, 60, 0.3) 52%, transparent 78%); }
.gi.r5.p6 .gi-dawn { animation: giFadeIn calc(1.2s * var(--k)) ease-out forwards; }                     /* ★5 だけ: 3.5 秒で空が金色の夜明けに(★ はこの時点まで見せない) */
.gi-line { position: absolute; left: 50%; top: 0; bottom: calc(100% - var(--feet)); width: 2px; margin-left: -1px; opacity: 0; transform: scaleY(0); transform-origin: 50% 100%;
  background: linear-gradient(to top, #fff, color-mix(in srgb, var(--el, #8fb3ff) 65%, #fff) 45%, transparent); }
.gi.p1 .gi-line { animation: giLine calc(0.35s * var(--k)) ease-out forwards; }
.gi.p2 .gi-line { animation: giLineOut calc(0.3s * var(--k)) ease-out forwards; }
.gi-pillar { position: absolute; left: 50%; top: 0; bottom: calc(100% - var(--feet)); width: calc(var(--cw) * 1.5); margin-left: calc(var(--cw) * -0.75); display: flex; opacity: 0; mix-blend-mode: screen;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 22%, #000 88%, transparent); mask-image: linear-gradient(to bottom, transparent, #000 22%, #000 88%, transparent); }
.gi-pillar .pl, .gi-pillar .pr { flex: 1; }
.gi-pillar .pl { background: linear-gradient(to right, transparent, color-mix(in srgb, var(--el, #8fb3ff) 40%, #cfe6ff) 62%, #fff); transform-origin: 0 50%; }
.gi-pillar .pr { background: linear-gradient(to left, transparent, color-mix(in srgb, var(--el, #8fb3ff) 40%, #cfe6ff) 62%, #fff); transform-origin: 100% 50%; }
.gi-pillar.art { mix-blend-mode: normal; }                          /* 絵は透明 webp(光は alpha)= 普通の合成。左右の半分ずつに同じ絵の半分を出す */
.gi-pillar.art .pl { background: var(--pillar) 0 0 / 200% 100% no-repeat; }
.gi-pillar.art .pr { background: var(--pillar) 100% 0 / 200% 100% no-repeat; }
.gi.p2 .gi-pillar { animation: giPillarOpen calc(0.2s * var(--k)) ease-out forwards; }
.gi.p4 .gi-pillar { animation: giPillarNarrow calc(1.5s * var(--k)) ease-in-out forwards; }       /* 色が戻っていく間、柱は少しずつ狭まる */
.gi.p5 .gi-pillar { transform: scaleX(0.5); animation: giPillarOut calc(0.8s * var(--k)) ease-out forwards; }   /* 本当の色になりきったら、柱はやわらかく消える(裂けない) */
.gi.p5::before { content: ''; position: absolute; inset: 0; z-index: 2; opacity: 0; pointer-events: none; background: radial-gradient(ellipse 60% 50% at 50% 56%, rgba(255, 255, 255, 0.85), transparent 70%); animation: giFlash2 calc(0.5s * var(--k)) ease-out; }
.gi-emblem { position: absolute; left: 50%; width: min(calc(var(--cw) * 2.2), 98vw); aspect-ratio: 1; bottom: calc(100% - var(--feet) - min(calc(var(--cw) * 1.1), 49vw)); margin-left: max(calc(var(--cw) * -1.1), -49vw); opacity: 0; color: var(--el, #8fb3ff); pointer-events: none; transform: perspective(700px) rotateX(66deg); }
.gi-emblem svg { width: 100%; height: 100%; overflow: visible; filter: drop-shadow(0 0 3px currentColor); }
.gi-emblem svg g { fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.gi-emblem svg g .d { fill: currentColor; stroke: none; }
.gi-emblem svg .ring { fill: none; stroke: currentColor; stroke-width: 0.8; opacity: 0.6; }
.gi-emblem.art { }   /* 全キャラ共通の天体図(金色のまま。属性色には染めない)。絵は中の .spin に */
.gi-emblem .spin { position: absolute; inset: 0; }
.gi-emblem.art .spin { background: var(--emb) center / contain no-repeat; filter: drop-shadow(0 0 6px rgba(255, 214, 120, 0.55)); }
.gi.p6 .gi-emblem { animation: giEmblem calc(0.7s * var(--k)) ease-out forwards; }
.gi.p6 .gi-emblem .spin { animation: giSpin 50s linear infinite; }                  /* 天体図が、床の面の上でゆっくり回る(約 50 秒で 1 周。動きを減らす設定では回らない) */
.gi-char { position: absolute; left: 50%; bottom: calc(100% - var(--feet)); width: var(--cw); height: var(--ch); margin-left: calc(var(--cw) / -2); transform-origin: 50% 100%; }
.gi-char.framed { border-radius: 14px; overflow: hidden; }
.gi-char.framed img { object-fit: cover; object-position: 50% 10%; }
.gi-sil, .gi-full .art { position: absolute; left: 0; top: 0; display: block; width: 100%; height: 100%; object-fit: contain; object-position: 50% 100%; -webkit-user-drag: none; pointer-events: none; }
.gi-sil { filter: brightness(0); opacity: 0; }                       /* 黒いシルエット(レア度は見せない) */
.gi-sil.cv { filter: none; }                                          /* canvas に黒で描いたシルエット(filter を使わない = 動いても描き直さない) */
.gi-char.framed .gi-sil.cv { object-fit: cover; object-position: 50% 10%; }
.gi.wait .gi-char, .gi.wait .gi-text { visibility: hidden; }           /* 絵のデコードを待つあいだ(最大 1.5 秒)は、キャラ・文字を出さない */
.gi.p2 .gi-sil { animation: giRise calc(0.2s * var(--k)) ease-out forwards; }
.gi-glows { position: absolute; inset: 0; opacity: 0; pointer-events: none; }
.gi.p3 .gi-glows { opacity: 1; transition: opacity calc(0.4s * var(--k)); }
.gi-glows .gl { position: absolute; aspect-ratio: 1; border-radius: 50%; transform: translate(-50%, -50%); background: radial-gradient(circle, #fff 0, color-mix(in srgb, var(--el, #8fb3ff) 88%, #fff) 24%, transparent 70%); animation: giGlow calc(1.1s * var(--k)) var(--gd, 0s) ease-in-out infinite alternate; }
.gi-full { position: absolute; inset: 0; opacity: 0; }
.gi.p4 .gi-full { opacity: 1; }                                       /* 色の絵は、黒いシルエットが薄くなり始める 1.4 秒から(2026-10-26: 0.55 秒からだと、足元から伸びる途中の黒の上に色が一瞬見えた)。以前の注記: 黒が完全に覆っているので見えない) */
.gi.p4 .gi-sil { animation: giSilFade calc(1.55s * var(--k)) cubic-bezier(0.45, 0, 0.55, 1) forwards; }   /* 1.4 秒から 2.95 秒へ、黒の透明度だけを下げる(opacity だけ = 軽い)。2.95 秒にちょうど本当の色 */
.gi.p5 .gi-char { animation: none; }
.gi.p5 .gi-sil, .gi.p5 .gi-glows { opacity: 0; animation: none; }
.gi.p5 .gi-full { opacity: 1; }
.gi-text { position: absolute; left: 0; right: 0; top: calc(var(--feet) + 3%); bottom: 2%; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 0 14px; text-align: center; }
.gi-name { font-size: clamp(1.4rem, 6.4vw, 2.1rem); font-weight: 900; line-height: 1.2; text-shadow: 0 0 14px var(--el, #8fb3ff), 0 2px 0 rgba(0, 0, 0, 0.85); opacity: 0; }
.gi-title { font-size: 0.85rem; color: #d6dcff; opacity: 0; text-shadow: 0 1px 3px #000; }
.gi-stars { display: flex; justify-content: center; font-size: 1.5rem; min-height: 1.6rem; }
.gi-stars .st-stars { font-size: 24px; gap: 4px; }
.gi-stars .st-star { opacity: 0; transform: scale(0.3); }
.gi-stars .st-star.on { animation: giStarPop 0.28s cubic-bezier(0.2, 1.6, 0.4, 1) forwards; }
.gi-new { margin-top: 2px; padding: 2px 14px; border-radius: 999px; font-size: 0.85rem; font-weight: 900; color: #3a2600; background: linear-gradient(#fff0b8, #f2c14e); box-shadow: 0 1px 0 #a3731a, 0 0 8px rgba(242, 193, 78, 0.7); opacity: 0; }
.gi.n4 .gi-new { animation: giStarPop 0.3s cubic-bezier(0.2, 1.6, 0.4, 1) forwards; }
.gi-hint { margin: 6px 0 0; font-size: 0.8rem; color: #aab3dd; opacity: 0; }
.gi.hint .gi-hint { animation: rvBlink 1.4s ease-in-out infinite; }
.gi.n1 .gi-name { animation: giText calc(0.4s * var(--k)) ease-out forwards; }
.gi.n2 .gi-title { animation: giText calc(0.4s * var(--k)) ease-out forwards; }
/* 次へ(タップ): 名前・★ は一度に出して、0.25 秒で消える */
.gi.done .gi-veil { opacity: 1; animation: none; }
.gi.done .gi-name, .gi.done .gi-title { opacity: 1; animation: none; transform: none; }
.gi.done.n4 .gi-new { opacity: 1; animation: none; transform: none; }
.gi.done .gi-stars .st-star { opacity: 1; transform: none; animation: none; }
.gi.done .gi-hint { opacity: 0; animation: none; }
.gi.done .gi-full { opacity: 1; animation: none; transform: none; }
.gi.done .gi-pillar { opacity: 0; animation: none; }
.gi.leave { opacity: 0; transition: opacity 0.25s linear; }
.st-gr-intro.out .gi { opacity: 0; transition: opacity 0.4s linear; }
/* 動きを減らす設定(JS が .rd を付ける): アニメーションは止まるので、最後の形をそのまま。0.3 秒のフェードインは JS(Web Animations)で */
.gi.rd .gi-veil, .gi.rd .gi-full, .gi.rd .gi-name, .gi.rd .gi-title, .gi.rd .gi-stars .st-star { opacity: 1; transform: none; }
.gi.rd .gi-hint { opacity: 0.8; }
.gi.rd .gi-sil, .gi.rd .gi-line, .gi.rd .gi-pillar, .gi.rd .gi-emblem, .gi.rd .gi-dawn, .gi.rd .gi-new { opacity: 0; }
.gi.rd.n4 .gi-new { opacity: 1; transform: none; }
@keyframes giFadeIn { to { opacity: 1; } }
@keyframes giLine { 0% { opacity: 1; transform: scaleY(0); } 100% { opacity: 1; transform: scaleY(1); } }
@keyframes giLineOut { from { opacity: 1; transform: scaleY(1); } to { opacity: 0; transform: scaleY(1); } }
@keyframes giPillarOpen { from { opacity: 0; transform: scaleX(0.15); } to { opacity: 1; transform: scaleX(1); } }
@keyframes giPillarNarrow { from { opacity: 1; transform: scaleX(1); } to { opacity: 1; transform: scaleX(0.5); } }
@keyframes giPillarOut { from { opacity: 1; } to { opacity: 0; } }
@keyframes giSilFade { from { opacity: 1; clip-path: inset(0 0 0 0); transform: none; } to { opacity: 0; clip-path: inset(0 0 0 0); transform: none; } }
@keyframes giSpin { to { transform: rotate(360deg); } }
@keyframes giFlash2 { 0% { opacity: 1; } 100% { opacity: 0; } }
@keyframes giRise { from { opacity: 1; clip-path: inset(92% 0 0 0); transform: translateY(8%); } to { opacity: 1; clip-path: inset(0 0 0 0); transform: none; } }
@keyframes giBreath { from { transform: scale(1); } to { transform: scale(1.014); } }
@keyframes giGlow { from { opacity: 0.45; } to { opacity: 1; } }
@keyframes giEmblem { from { opacity: 0; transform: perspective(700px) rotateX(66deg) scale(0.7); } to { opacity: 0.9; transform: perspective(700px) rotateX(66deg) scale(1); } }
@keyframes giText { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes giStarPop { from { opacity: 0; transform: scale(0.3); } to { opacity: 1; transform: scale(1); } }
@media (max-width: 480px) { .gi-name { font-size: 1.5rem; } }
/* 動きを減らす(設定「演出を減らす」・OSの設定): 星降ろしの動きも止める(星の位置は JS が 10% 刻みで置く) */
html.hd-reduce .st-gr-intro *, html.hd-reduce .st-gr-intro *::before, html.hd-reduce .st-gr-intro *::after, html.hd-reduce .st-gth-hand * { animation: none !important; transition: none !important; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-gr-intro *, html:not(.hd-motion) .st-gr-intro *::before, html:not(.hd-motion) .st-gr-intro *::after, html:not(.hd-motion) .st-gth-hand * { animation: none !important; transition: none !important; }
}


/* ================================================================================================
   ロビー・出撃・パーティー・キャラ・持ち物・ダイアログ(ステップ7: 1ページの中で切り替わる画面)
   スマホ(幅375px)で横にはみ出さず、ボタンは44px以上。色は --el-*(「見分けやすい配色」で切り替わる)、動きは「演出を減らす」に従う
   ================================================================================================ */
.st-screen:not(.st-battle) .hd-head-buttons .hd-btn.small { min-height: 44px; }
.st-screen:not(.st-battle) .hd-head-buttons .hd-btn.small.st-nav { min-width: 44px; padding: 6px 10px; }
.st-screen .hd-btn { touch-action: manipulation; }
.hd-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.st-toast { z-index: 11; }
.st-stamina .hd-btn { min-height: 44px; }

/* ---- ロビー ---- */
.st-hud { display: flex; flex-wrap: wrap; gap: 6px 8px; margin: 2px 0 4px; }
.st-hud:empty { display: none; }
.st-hud-i { display: inline-flex; align-items: center; gap: 5px; padding: 3px 12px 3px 4px; border-radius: 999px; font-size: 0.78rem; background: rgba(14,18,64,0.72); border: 1px solid var(--st-line); color: #dfe6ff; }
.st-hud-i:not(:has(img)) { padding-left: 12px; }
.st-hud-i small { font-size: 0.75rem; color: #b3b9dc; }
.st-hud-i b { color: #fff; font-variant-numeric: tabular-nums; }
.st-hud-i.full { border-color: #ffb4a0; }
.st-hud-i.full b { color: #ffb4a0; }
.st-hud-lv { gap: 4px; }
.st-hud-lv b { min-width: 1.4em; }
/* プレイヤーレベルの経験値の細いバー(HUD・報酬の画面) */
.st-lv-bar { display: inline-block; position: relative; width: 44px; height: 4px; border-radius: 2px; background: rgba(255,255,255,0.16); overflow: hidden; vertical-align: middle; }
.st-lv-bar i { position: absolute; left: 0; top: 0; bottom: 0; background: linear-gradient(90deg, #8fd3ff, #c9a7ff); border-radius: 2px; }
.st-lv-bar.wide { width: 140px; height: 6px; border-radius: 3px; }
.st-lb-party { margin: 8px 0 6px; }
.st-lb-none { grid-column: 1 / -1; padding: 14px 8px; text-align: center; border-radius: 12px; background: rgba(14,18,64,0.7); border: 1px dashed var(--st-line); }
.st-lbc {
  position: relative; display: block; width: 100%; aspect-ratio: 3 / 5; padding: 0; overflow: hidden; text-align: left; font: inherit; color: #fff; cursor: pointer;
  border-radius: 14px; background: #0c1030; border: 2px solid var(--el, #8fb3ff);
  box-shadow: 0 0 16px color-mix(in srgb, var(--el, #8fb3ff) 45%, transparent), inset 0 0 0 1px rgba(255,255,255,0.14);
}
.st-lbc:hover { filter: brightness(1.1); }
.st-lbc:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-lbc .art { position: absolute; inset: 0; }
.st-lbc .art img, .st-lbc .art video, .st-lbc .art canvas { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 14%; }
.st-lbc .art > .mvl { position: absolute; inset: 0; }   /* 動く絵の層(ロビーのカード)。止まった絵(img)の上に重ねる。img.mvl は中身のない「型」で見えない */
.st-lbc .art > img.mvl { opacity: 0; pointer-events: none; }
.st-lbc .art > video.mvl, .st-lbc .art > canvas.mvl { animation: stLbMvIn 0.24s ease-out both; }
.st-lbc .art > video.mvl.out, .st-lbc .art > canvas.mvl.out { animation: stLbMvOut 0.24s ease-in both; }
.st-lbc .art:has(> video.mvl:not(.out), > canvas.mvl:not(.out)) > img:not(.mvl) { animation: stLbStillOff 0.01s 0.24s both; }   /* 層が出きったら下の止まった絵は隠す(なびく髪の下に止まった髪が見えないように)。消え始めたらすぐ戻る */
@keyframes stLbMvIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes stLbMvOut { from { opacity: 1; } to { opacity: 0; } }
@keyframes stLbStillOff { from { visibility: visible; } to { visibility: hidden; } }
.st-lbc .art video, .st-sh-art video, .st-lbc .art canvas, .st-sh-art canvas, .st-rv-spot canvas.art { pointer-events: none; }
/* 背景なしの絵(art.cutout。docs/specs/stella-art-motion.md): 枠・背景を付けず、ロビーの背景の上に立たせる。足元に属性の色のやわらかい光、
   名前・★・Lv は下の帯(::after の暗いグラデーション)と文字の影で読みやすく。仮の絵・背景つきの公式の絵は今の枠のまま */
.st-lbc.cut { background: transparent; border-color: transparent; box-shadow: none; }
.st-lbc.cut::before { content: ''; position: absolute; left: 6%; right: 6%; bottom: 3%; height: 22%; border-radius: 50%; pointer-events: none;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--el, #8fb3ff) 42%, transparent), transparent); }
.st-lbc.cut::after { height: 38%; background: radial-gradient(ellipse 62% 100% at 50% 100%, rgba(2,3,20,0.8), rgba(2,3,20,0.5) 45%, transparent 100%); }
.st-sh-art.cut { border-color: transparent; box-shadow: none;
  background: radial-gradient(ellipse 70% 30% at 50% 92%, color-mix(in srgb, var(--el, #8fb3ff) 40%, transparent), transparent 75%), rgba(12,16,48,0.35); }
.st-rv-spot .frame.cut { border-color: transparent; background: radial-gradient(ellipse 65% 45% at 50% 60%, color-mix(in srgb, var(--rc) 45%, transparent), transparent 72%); box-shadow: none; overflow: visible; }
@keyframes rvGlowCut { from { filter: drop-shadow(0 0 10px var(--rc)) drop-shadow(0 0 24px rgba(255,200,80,0.35)); } to { filter: drop-shadow(0 0 18px var(--rc)) drop-shadow(0 0 40px rgba(255,200,80,0.7)); } }
.st-rv-spot.r5 .frame.cut { animation: rvArt 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) both, rvGlowCut 1.6s 0.6s ease-in-out infinite alternate; box-shadow: none; }
.st-lbc::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 46%; background: linear-gradient(transparent, rgba(2,3,20,0.92)); pointer-events: none; }
.st-lbc .slot { position: absolute; left: 4px; top: 4px; z-index: 1; }
.st-lbc .st-badge.el { position: absolute; right: 4px; top: 4px; z-index: 1; }
.st-lbc .info { position: absolute; left: 6px; right: 6px; bottom: 5px; z-index: 1; display: flex; flex-direction: column; gap: 1px; }
.st-lbc .nm { font-size: 0.82rem; font-weight: 800; line-height: 1.2; text-shadow: 0 1px 3px #000; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-lbc .row { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
.st-lbc .lv { font-size: 0.92rem; font-variant-numeric: tabular-nums; text-shadow: 0 1px 3px #000; }
.st-lb-hp { grid-column: 1 / -1; margin: 0; text-align: center; font-size: 0.8rem; color: #cfd8ff; }
.st-lb-hp b { color: #7CFC9C; font-size: 0.95rem; }
.st-sortie {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; width: 100%; min-height: 68px; margin: 8px 0; padding: 8px 12px; font: inherit; color: #fff; cursor: pointer;
  border-radius: 18px; border: 1px solid rgba(255,235,170,0.8); background: linear-gradient(#ffb13d, #e0701a);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.45), 0 4px 18px rgba(255,150,40,0.45); animation: stSortieGlow 2.6s ease-in-out infinite alternate;
}
.st-sortie .t { font-size: 1.7rem; font-weight: 900; letter-spacing: 0.3em; padding-left: 0.3em; text-shadow: 0 2px 4px rgba(90,30,0,0.7); }
.st-sortie small { font-size: 0.75rem; font-weight: 700; opacity: 0.92; }
.st-sortie:hover:not(:disabled) { filter: brightness(1.08); }
.st-sortie:disabled { filter: grayscale(0.8) brightness(0.7); cursor: not-allowed; animation: none; }
.st-sortie:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
@keyframes stSortieGlow { from { box-shadow: inset 0 1px 0 rgba(255,255,255,0.45), 0 4px 14px rgba(255,150,40,0.35); } to { box-shadow: inset 0 1px 0 rgba(255,255,255,0.45), 0 4px 26px rgba(255,170,60,0.75); } }
.st-menu-btn { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 66px; padding: 6px 2px; font: inherit; font-size: 0.75rem; font-weight: 800; color: #eef1ff; cursor: pointer; border-radius: 14px; background: var(--st-glass); border: 1px solid var(--st-line); box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 0 14px rgba(90,100,255,0.16); }
.st-menu-btn .ic { display: inline-flex; font-size: 1.3rem; line-height: 1; color: #ffe08a; }
.st-menu-btn .ic svg { width: 26px; height: 26px; filter: drop-shadow(0 0 4px rgba(255,214,120,0.45)); }
.st-menu-btn:hover { filter: brightness(1.15); }
.st-menu-btn:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-menu-btn[hidden] { display: none; }

/* ---- 出撃(ステージ選択) ---- */
.st-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 4px 0 8px; }
.st-tab { min-height: 44px; padding: 6px 4px; line-height: 1.25; font: inherit; font-weight: 800; font-size: 0.9rem; color: #cfd8ff; cursor: pointer; border-radius: 12px; background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); }
.st-tab[aria-pressed="true"] { color: #fff; background: linear-gradient(#5b7bff, #4159d6); border-color: rgba(190,205,255,0.7); box-shadow: 0 0 12px rgba(100,130,255,0.45); }
.st-tab[hidden] { display: none; }
.st-tab { position: relative; }
.st-tab-dot { position: absolute; top: 5px; right: 6px; width: 10px; height: 10px; border-radius: 50%; background: #ff5a5a; box-shadow: 0 0 0 2px rgba(14,18,64,0.9); }
.st-tab-dot[hidden], .st-sortie-chip[hidden] { display: none; }
.st-sortie { position: relative; }
.st-sortie-chip { position: absolute; top: 6px; right: 10px; padding: 2px 8px; font-size: 0.75rem; font-weight: 800; line-height: 1.3; color: #fff; background: #d6303a; border: 1px solid rgba(255,255,255,0.8); border-radius: 999px; }
.st-stage-card.st-daily-card { grid-template-columns: minmax(0, 1fr) auto; padding-left: 14px; }   /* アイコンの列がないので、文の列を広く */
.st-daily-card .st-daily-st.done { color: #9dffb8; }
.st-daily-card .st-daily-rule { color: #d6dcff; }
.st-daily-card:disabled { filter: grayscale(0.6) brightness(0.75); cursor: wait; }
.st-tab:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-stage-card { align-items: start; }
.st-sc-mid { min-width: 0; }
.st-sc-name .st-badge { vertical-align: 1px; }
.st-sc-cost { display: block; margin-top: 3px; padding: 1px 8px; border-radius: 999px; font-size: 0.75rem; font-weight: 800; color: #ffe9a6; background: rgba(0,0,24,0.5); border: 1px solid rgba(255,214,120,0.4); }
.st-stage-card.nostamina .st-sc-cost { color: #ffb4a0; border-color: rgba(255,160,140,0.5); }
.st-sc-rw { display: grid; gap: 2px; margin-top: 4px; }
.st-rwl { display: flex; flex-wrap: wrap; align-items: center; gap: 3px 4px; }
.st-rwl-l { flex: none; padding: 1px 7px; border-radius: 6px; font-size: 0.75rem; font-weight: 800; color: #dfe6ff; background: rgba(110,130,255,0.32); border: 1px solid rgba(160,180,255,0.45); }
.st-rwl.first .st-rwl-l { color: #3a2400; background: #ffd24a; border-color: #fff0b0; }
.st-rwl.got { opacity: 0.55; }
.st-rwl.got .st-rwl-l { color: #dfe6ff; background: rgba(110,130,255,0.25); border-color: rgba(160,180,255,0.4); }
.st-rwc { display: inline-flex; align-items: center; gap: 3px; padding: 1px 7px 1px 3px; border-radius: 999px; font-size: 0.75rem; background: rgba(0,0,24,0.5); border: 1px solid rgba(160,180,255,0.28); }
.st-rwc b { font-variant-numeric: tabular-nums; }
/* 長押し(bindLong / bindMember)の要素は、文字・絵を選択させず、長押しメニューも出さない */
.st-long, .st-long * { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; }
/* 専用ダンジョン: 1つのダンジョンに難易度のボタン(初級・中級・上級・超級) */
.st-dg-card { padding: 8px 10px 10px 8px; color: #f0f0f5; background: var(--st-glass); border: 1px solid var(--st-line); border-radius: 14px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 0 16px rgba(90,100,255,0.14); }
.st-dg-top { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 10px; align-items: start; }
.st-dg-top .st-ico { width: 48px; height: 48px; }
.st-dg-lvs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; margin-top: 8px; }
.st-dg-lv { display: grid; justify-items: center; gap: 1px; min-height: 58px; padding: 5px 4px; font: inherit; color: #f0f0f5; cursor: pointer; border-radius: 11px; background: rgba(14,18,64,0.75); border: 1px solid rgba(160,180,255,0.4); }
.st-dg-lv.lv2 { border-color: rgba(120,200,255,0.55); }
.st-dg-lv.lv3 { border-color: rgba(255,140,170,0.6); background: rgba(48,12,52,0.7); }
.st-dg-lv.lv4 { border-color: rgba(255,210,74,0.7); background: rgba(52,36,8,0.7); }
.st-dg-lv:hover { filter: brightness(1.15); }
.st-dg-lv.single { grid-column: 1 / -1; }   /* 星の坑道: 難易度は1つ(横いっぱいの「挑戦する」) */
.st-dg-lv:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-dg-n { font-size: 0.92rem; font-weight: 800; }
.st-dg-c { font-size: 0.75rem; font-weight: 800; color: #ffe9a6; white-space: nowrap; }
.st-dg-s { font-size: 0.75rem; font-weight: 700; color: #aeb5d8; white-space: nowrap; }
.st-dg-lv.nostamina .st-dg-c { color: #ffb4a0; }
.st-dg-lv[aria-disabled="true"] { cursor: not-allowed; filter: grayscale(0.85) brightness(0.62); }
.st-dg-lv[aria-disabled="true"]:hover { filter: grayscale(0.85) brightness(0.62); }

/* ---- 出撃の確認 ---- */
.st-cf .st-waves { margin: 0 0 6px; }
.st-cf .st-sc-rw { margin: 4px 0 8px; }
.st-cf-sta { margin: 6px 0; font-size: 0.82rem; font-weight: 700; color: #dfe6ff; }
.st-cf-sta.short { color: #ffb4a0; }
.st-cf-party { margin-top: 8px; padding: 8px; border-radius: 12px; background: rgba(0,0,24,0.4); border: 1px solid rgba(160,180,255,0.28); }
.st-cf-ph { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 0.82rem; }
.st-cf-change { min-height: 44px; padding: 4px 12px; font-size: 0.9rem; }
.st-cf-mems { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-top: 2px; }
.st-cf-mem { display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 0; }
.st-cf-mem .st-ico { width: 44px; height: 44px; }
.st-cf-mem .l { margin: 1px 0; }
.st-cf-mem .v { font-size: 0.8rem; font-variant-numeric: tabular-nums; }
.st-cf-hp { margin: 6px 0 0; text-align: center; font-size: 0.78rem; color: #cfd8ff; }
.st-cf-hp b { color: #7CFC9C; }

/* ---- ダイアログ ---- */
.st-dlg-bg { position: fixed; inset: 0; z-index: 8; display: flex; align-items: center; justify-content: center; padding: 12px; background: rgba(2,3,18,0.78); }
.st-dlg-bg[hidden] { display: none; }
.st-dlg { display: flex; flex-direction: column; width: min(420px, 100%); max-height: 100%; overflow: hidden; color: #f0f0f5; background: linear-gradient(rgba(24,28,84,0.98), rgba(8,10,40,0.99)); border: 1px solid rgba(170,190,255,0.5); border-radius: 16px; box-shadow: 0 10px 40px rgba(0,0,0,0.7), 0 0 20px rgba(90,100,255,0.3); }
.st-dlg:focus { outline: none; }
.st-dlg-title { margin: 0; padding: 14px 16px 6px; font-size: 1.05rem; text-align: center; text-shadow: 0 0 12px rgba(120,140,255,0.5); }
.st-dlg-body { overflow-y: auto; padding: 4px 14px 8px; -webkit-overflow-scrolling: touch; }
.st-dlg-p { margin: 4px 0; font-size: 0.88rem; line-height: 1.65; color: #eef1ff; }
.st-dlg-btns { display: flex; flex-direction: column; gap: 8px; padding: 8px 14px 14px; }
.st-dlg-btns .hd-btn { min-height: 46px; }
.st-warn { margin: 8px 0 2px; padding: 8px 10px; border-radius: 10px; background: rgba(120,20,40,0.5); border: 1px solid rgba(255,140,160,0.6); font-size: 0.82rem; line-height: 1.5; }
.st-warn b { color: #ffd0d8; }
.st-warn p { margin: 2px 0; }
.st-warn-l { margin: 4px 0 0; padding-left: 1.2em; font-size: 0.78rem; color: #ffe0e6; }
.st-lbn-l { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 6px 0 4px; }
.st-lbn-i { display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 96px; padding: 10px 12px; border-radius: 14px; background: radial-gradient(rgba(255,214,120,0.28), rgba(14,18,64,0.7)); border: 1px solid rgba(255,214,120,0.6); animation: stLbnPop 0.55s calc(var(--i, 0) * 0.14s) cubic-bezier(0.2, 1.5, 0.4, 1) both; }
.st-lbn-i .nm { font-size: 0.78rem; font-weight: 700; }
.st-lbn-i .n { font-size: 1.3rem; color: #ffe08a; font-variant-numeric: tabular-nums; }
@keyframes stLbnPop { from { transform: scale(0.4); opacity: 0; } to { transform: none; opacity: 1; } }

/* ---- プレゼントボックス(ロビーの右上のボタン + 一覧の画面) ---- */
.st-gift-btn { position: relative; display: inline-flex; align-items: center; gap: 4px; }
.st-gift-i { display: inline-flex; color: #ffe08a; }
.st-gift-btn.has .st-gift-i { animation: stGiftWiggle 2.4s ease-in-out infinite; }
.st-gift-badge { position: absolute; top: -6px; right: -6px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; background: #ff4d6d; color: #fff; font-size: 0.75rem; font-weight: 900; line-height: 20px; text-align: center; box-shadow: 0 0 0 2px #0b0e2e; font-variant-numeric: tabular-nums; }
.st-gift-badge[hidden] { display: none; }
@media (max-width: 400px) { .st-gift-t { display: none; } .st-gift-btn { min-width: 44px; justify-content: center; } }
@keyframes stGiftWiggle { 0%, 80%, 100% { transform: none; } 85% { transform: rotate(-12deg); } 90% { transform: rotate(10deg); } 95% { transform: rotate(-6deg); } }
.st-gift-bar { display: flex; justify-content: flex-end; margin: 4px 0 8px; }
.st-gift-bar .hd-btn { min-height: 44px; width: auto; padding: 8px 18px; }
.st-gift-bar .hd-btn[hidden] { display: none; }
.st-gift-list { display: grid; gap: 8px; }
.st-gift { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border-radius: 14px; background: var(--st-glass); border: 1px solid var(--st-line); }
.st-gift-h { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.st-gift-ttl { font-size: 0.98rem; color: #fff; }
.st-gift-date { font-size: 0.75rem; color: #b8c2f0; }
.st-gift-msg { margin: 0; font-size: 0.8rem; line-height: 1.55; color: #dfe6ff; white-space: pre-wrap; overflow-wrap: anywhere; }
.st-gift-items { display: flex; flex-wrap: wrap; gap: 6px; }
.st-gift-it { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px 3px 4px; border-radius: 999px; background: rgba(14,18,64,0.72); border: 1px solid rgba(255,214,120,0.45); font-size: 0.78rem; }
.st-gift-it .st-item-ico { width: 30px; height: 30px; }
.st-gift-it .n { color: #ffe08a; font-variant-numeric: tabular-nums; }
.st-gift-f { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.st-gift-exp { font-size: 0.75rem; color: #b8c2f0; }
.st-gift-exp.soon { color: #ffb4a0; font-weight: 700; }
.st-gift-get { min-height: 44px; min-width: 96px; }
.st-gift-empty { margin: 24px 0; text-align: center; color: #b8c2f0; }
.st-gift-warn { color: #ffd0b8; }
html.hd-reduce .st-gift-btn.has .st-gift-i { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-gift-btn.has .st-gift-i { animation: none; } }

/* ---- 持ち物 ---- */
.st-items { display: grid; gap: 6px; }
.st-it-h { margin: 10px 0 0; font-size: 0.86rem; color: #cfd8ff; display: flex; align-items: center; gap: 4px; }
.st-it { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 6px 10px 6px 6px; border-radius: 12px; background: var(--st-glass); border: 1px solid var(--st-line); }
.st-it.zero { opacity: 0.62; }
.st-it .st-item-ico { width: 44px; height: 44px; }
.st-it-t { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.st-it-t .nm { font-size: 0.92rem; }
.st-it-t .ds { font-size: 0.75rem; line-height: 1.4; color: #b8c2f0; }
.st-it-r { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.st-it-r .n { font-size: 1.05rem; font-variant-numeric: tabular-nums; }
.st-it-use { min-height: 44px; min-width: 64px; }

/* ---- ならびかえ・属性のしぼりこみ・キャラのタイル ---- */
.st-tools { margin: 4px 0 8px; }
.st-tool-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.st-sortl { display: flex; align-items: center; gap: 6px; font-size: 0.75rem; color: #cfd8ff; min-width: 0; }
.st-sel { min-height: 44px; padding: 0 8px; font: inherit; font-size: 0.86rem; color: #fff; background: rgba(14,18,64,0.85); border: 1px solid var(--st-line); border-radius: 10px; max-width: 100%; }
.st-sel:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-sellmode { min-height: 44px; padding: 6px 14px; }
.st-sellmode[aria-pressed="true"] { background: linear-gradient(#e0546a, #b02a44); border-color: rgba(255,170,185,0.7); }
.st-fchips { display: grid; grid-template-columns: 1.5fr repeat(5, 1fr); gap: 4px; }
.st-fchip { min-height: 44px; padding: 2px 0; font: inherit; font-size: 0.82rem; font-weight: 800; cursor: pointer; border-radius: 10px; color: #dfe6ff; background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); }
.st-fchip[aria-pressed="true"] { color: #fff; background: linear-gradient(#5b7bff, #4159d6); border-color: rgba(190,205,255,0.8); box-shadow: 0 0 10px rgba(100,130,255,0.45); }
.st-fchip[data-f="fire"]::before, .st-fchip[data-f="water"]::before, .st-fchip[data-f="grass"]::before, .st-fchip[data-f="light"]::before, .st-fchip[data-f="dark"]::before { content: ''; display: inline-block; width: 8px; height: 8px; margin-right: 3px; border-radius: 50%; background: var(--el); border: 1px solid rgba(255,255,255,0.7); }
.st-fchip:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-ugrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(74px, 1fr)); gap: 6px; }
.st-ut {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 0; min-height: 88px; padding: 5px 2px 4px; font: inherit; color: #f0f0f5; cursor: pointer;
  background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); border-radius: 10px; touch-action: manipulation;
  -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent;
}
.st-ut .st-ico { width: 100%; max-width: 54px; height: auto; aspect-ratio: 1; }
.st-ut .st-badge.el { position: absolute; left: 3px; top: 3px; font-size: 0.75rem; }
.st-ut .st-si.ut { position: absolute; right: 2px; top: 2px; }
.st-ut .st-si.ut.line svg { width: 32px; height: 10px; }
.st-ut .tag { position: absolute; right: 3px; top: 3px; min-width: 1.6em; padding: 1px 4px; border-radius: 6px; font-size: 0.75rem; font-weight: 800; text-align: center; color: #fff; background: rgba(90,110,255,0.95); border: 1px solid rgba(220,230,255,0.7); }
.st-ut .tag:empty { display: none; }
.st-ut .nm { max-width: 100%; font-size: 0.75rem; font-weight: 700; line-height: 1.15; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-ut .row { display: flex; flex-direction: column; align-items: center; gap: 0; max-width: 100%; line-height: 1.15; }   /* ★ の下に Lv(2桁・3桁でも切れない) */
.st-ut .lv { white-space: nowrap; }
.st-ut .st-stars { font-size: 10px; gap: 0; }                      /* 一覧のタイルは幅がせまい: ★5つで約50px(SVG の星は文字より広いので小さめ) */
/* 一覧のタイルの星: 星1つずつのマスク(5個 × 数十タイル)と filter: drop-shadow は、スクロールで新しい行が出るたびに style・paint・レイヤーの組み直しが重かった。
   レア度ごとに「星の列(形・色・影・★5 の光)」を1枚の画像(WebP。3.6倍の細かさ)にして背景に敷く。見た目は .st-star と同じ形・色。<span class="st-stars simg rN">。
   影・光の分、上下左右に 0.5em の余白(padding)を取り、同じだけ負の margin で打ち消す(配置は星だけのときと同じ) */
.st-ut .st-stars.simg { display: block; box-sizing: content-box; height: 1em; padding: 0.5em; margin: -0.5em; filter: none; background-repeat: no-repeat; background-size: 100% 100%; }
.st-ut .st-stars.simg.r3 { width: 3em; background-image: url("data:image/webp;base64,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"); }
.st-ut .st-stars.simg.r4 { width: 4em; background-image: url("data:image/webp;base64,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"); }
.st-ut .st-stars.simg.r5 { width: 5em; background-image: url("data:image/webp;base64,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"); }
.st-ut .lv { font-size: 0.75rem; font-variant-numeric: tabular-nums; color: #fff; }
.st-ut.used { border-color: rgba(140,160,255,0.75); }
.st-ut.cur { border-color: #ffd166; box-shadow: 0 0 0 2px rgba(255,209,102,0.55); }
.st-ut.picked { border-color: #ff8a9a; box-shadow: 0 0 0 2px rgba(255,138,154,0.65); background: rgba(90,20,40,0.6); }
.st-ut.picked .tag { background: #d12a46; }
.st-ut.locked { opacity: 0.45; cursor: not-allowed; }
.st-ut:hover:not(.locked) { filter: brightness(1.15); }
.st-ut:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-ut img { pointer-events: none; }

/* ---- パーティー ---- */
.st-slot-empty { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 50%; border: 2px dashed var(--st-line); font-weight: 800; color: #aab3dd; }
.st-pfoot { position: sticky; bottom: 0; z-index: 4; margin: 10px -10px 0; padding: 8px 10px; background: linear-gradient(rgb(10,12,52), rgb(4,5,26)); border-top: 1px solid rgba(190,205,255,0.5); box-shadow: 0 -6px 20px rgba(0,0,0,0.45); }
body.st-has-tb .st-pfoot { bottom: var(--st-tb); }
.st-pfoot .hd-btn { min-height: 46px; }
.st-save { min-width: 150px; }

/* ---- 売却 ---- */
.st-sellhint { margin: 0 0 8px; padding: 8px 10px; border-radius: 10px; font-size: 0.75rem; line-height: 1.55; color: #ffe0e6; background: rgba(120,20,40,0.38); border: 1px solid rgba(255,140,160,0.45); }
.st-sellhint[hidden] { display: none; }
body.st-selling .st-page { padding-bottom: 130px; }
.st-sellbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 5; width: 100%; max-width: 760px; margin: 0 auto; padding: 8px 10px calc(8px + env(safe-area-inset-bottom, 0px)); background: linear-gradient(rgba(10,12,52,0.96), rgba(4,5,26,0.98)); border-top: 1px solid rgba(190,205,255,0.5); box-shadow: 0 -6px 20px rgba(0,0,0,0.5); }
.st-sellbar[hidden] { display: none; }
.st-sellsum { margin-bottom: 6px; font-size: 0.8rem; color: #dfe6ff; text-align: center; }
.st-sellsum b { color: #fff; }
.st-sellsum b.coin { color: #ffe08a; }
.st-sellbtns { display: flex; gap: 6px; }
.st-sellbtns .hd-btn { flex: 1 1 auto; min-height: 46px; padding: 6px 8px; font-size: 0.82rem; }
.st-sellbtns .st-sell-go { flex: 0 0 96px; }

/* ---- キャラの詳細・レベルアップ ---- */
.st-ud-lv { display: flex; align-items: baseline; gap: 4px; margin: 2px 0 2px; }
.st-ud-lv .k { font-size: 0.8rem; color: #b3b9dc; font-weight: 800; }
.st-ud-lv .n { font-size: 1.9rem; line-height: 1; font-variant-numeric: tabular-nums; text-shadow: 0 0 10px color-mix(in srgb, var(--el, #8fb3ff) 70%, transparent); }
.st-ud-lv .cap { font-size: 0.75rem; color: #b3b9dc; }
.st-ud-exp { margin-bottom: 8px; }
.st-ud-bar, .st-pv-bar { height: 10px; }
.st-ud-bar > i, .st-pv-bar > i { background: linear-gradient(90deg, #5aa8ff, #9fd2ff); transition: transform 0.5s ease-out; }   /* 経験値は青(緑は HP だけ) */
.st-ud-exp .t, .st-pv-exp { display: block; margin-top: 2px; font-size: 0.75rem; color: #b8c2f0; }
.st-inparty { background: rgba(90,110,255,0.5); }
/* キャラの型のチップ(体力型 = 緑、攻撃型 = 赤、技巧型 = 紫、バランス型 = 既定の青) */
.st-type { font-weight: 700; }
.st-type-tank { background: rgba(70,170,110,0.35); border-color: rgba(130,220,160,0.5); }
.st-type-attack { background: rgba(220,80,80,0.35); border-color: rgba(255,150,150,0.5); }
.st-type-skill { background: rgba(160,90,220,0.35); border-color: rgba(210,160,255,0.5); }
.st-lvp { margin-top: 12px; padding: 10px; border-radius: 14px; background: var(--st-glass); border: 1px solid var(--st-line); box-shadow: inset 0 1px 0 rgba(255,255,255,0.1); }
.st-lvp-h { margin: 0 0 4px; font-size: 1rem; text-shadow: 0 0 10px rgba(120,140,255,0.5); }
.st-lvp-note { margin: 0 0 4px; }
.st-lv-max { margin: 6px 0; font-size: 0.86rem; color: #ffe9a6; }
/* 素材のアイコン一覧(レベルアップの欄)。そのキャラの属性が先(金の枠 + 「+25%」)、ほかの属性は火水草光闇の順。持っていない素材は出さない。
   タップで +1(アイコンに +N)・角の「−」で −1(押せる範囲は44px)。数・バッジは position:absolute なので、出ても並びはずれない。360〜412px で折り返す(横スクロールなし) */
.st-auto { display: flex; align-items: center; gap: 6px; margin: 8px 0 0; }
.st-auto-l { flex: none; font-size: 0.82rem; font-weight: 800; color: #ffe9a6; }
.st-achip { flex: 1 1 0; min-width: 44px; min-height: 44px; padding: 0 4px; font: inherit; font-size: 0.95rem; font-weight: 800; color: #fff; cursor: pointer; border-radius: 12px; background: linear-gradient(rgba(64,74,170,0.92), rgba(38,44,120,0.94)); border: 1px solid rgba(255,255,255,0.22); box-shadow: inset 0 1px 0 rgba(255,255,255,0.18); touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.st-achip:disabled { opacity: 0.4; cursor: not-allowed; }
.st-achip:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-mgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(54px, 1fr)); gap: 12px 6px; margin-top: 12px; }
.st-mcell { position: relative; min-width: 0; }
.st-mcell[hidden] { display: none; }
.st-mbtn { display: flex; flex-direction: column; align-items: center; gap: 2px; width: 100%; min-height: 62px; padding: 8px 2px 4px; font: inherit; color: #fff; cursor: pointer; border-radius: 12px; background: rgba(30,36,100,0.62); border: 2px solid rgba(160,180,255,0.28); touch-action: manipulation; -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; }
.st-mcell.own .st-mbtn { border-color: #ffd166; box-shadow: 0 0 0 1px rgba(255,209,102,0.4), inset 0 0 14px rgba(255,209,102,0.16); }
.st-mcell.on .st-mbtn { background: linear-gradient(rgba(70,80,190,0.95), rgba(44,50,130,0.96)); }
.st-mbtn[aria-disabled="true"] img { opacity: 0.5; }
.st-mbtn:focus-visible, .st-mminus:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-mico { position: relative; display: block; width: 36px; height: 36px; }
.st-mico img { display: block; width: 36px; height: 36px; }
.st-mn { position: absolute; right: -12px; bottom: -2px; min-width: 22px; padding: 0 5px; border-radius: 10px; font-size: 0.72rem; font-weight: 900; line-height: 18px; text-align: center; color: #10202a; background: #7CFC9C; box-shadow: 0 1px 4px rgba(0,0,0,0.5); font-variant-numeric: tabular-nums; pointer-events: none; }
.st-mn[hidden] { display: none; }
.st-mbtn .own { font-size: 0.76rem; font-weight: 700; color: #ffe9a6; font-variant-numeric: tabular-nums; white-space: nowrap; }
.st-mbonus { position: absolute; left: -4px; top: -9px; padding: 0 4px; border-radius: 8px; font-size: 0.62rem; font-weight: 900; line-height: 16px; color: #2a1a00; background: linear-gradient(#ffe9a6, #ffc13a); box-shadow: 0 1px 4px rgba(0,0,0,0.45); pointer-events: none; font-variant-numeric: tabular-nums; }
.st-mminus { position: absolute; top: -12px; right: -12px; width: 44px; height: 44px; padding: 0; font: inherit; cursor: pointer; border: 0; background: transparent; touch-action: manipulation; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }
.st-mminus[hidden] { display: none; }
.st-mminus .g { display: block; width: 22px; height: 22px; margin: 11px auto 0; border-radius: 50%; font-size: 1rem; font-weight: 900; line-height: 20px; color: #fff; background: #c0405a; border: 1px solid rgba(255,255,255,0.7); box-shadow: 0 1px 4px rgba(0,0,0,0.5); }

.st-mats { display: grid; }
.st-mat { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 8px; padding: 6px 0; border-top: 1px solid rgba(160,180,255,0.18); }
.st-mat-l { display: flex; align-items: center; gap: 8px; min-width: 0; flex: 1 1 140px; }
.st-mat-t { display: flex; flex-direction: column; min-width: 0; }
.st-mat-t .nm { font-size: 0.9rem; }
.st-mat-t .own { font-size: 0.75rem; color: #ffe9a6; font-variant-numeric: tabular-nums; }
.st-mat-t .ex { font-size: 0.75rem; color: #aab3dd; }
.st-mat-c { display: flex; align-items: center; gap: 4px; margin-left: auto; }
.st-step, .st-max { font: inherit; font-weight: 800; cursor: pointer; touch-action: manipulation; -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }
.st-step { width: 44px; height: 44px; font-size: 1.5rem; line-height: 1; padding: 0; }
.st-max { min-width: 52px; min-height: 44px; padding: 0 8px; font-size: 0.8rem; }
.st-step:focus-visible, .st-max:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-cnt { display: inline-block; min-width: 44px; text-align: center; font-size: 1.1rem; font-weight: 800; font-variant-numeric: tabular-nums; color: #aab3dd; }
.st-cnt.on { color: #fff; }
.st-pv { margin-top: 8px; padding: 8px 10px; border-radius: 12px; background: rgba(0,0,24,0.45); border: 1px solid rgba(160,180,255,0.25); }
.st-pv-lv { font-size: 1.05rem; font-weight: 800; margin-bottom: 4px; }
.st-pv-lv b.up, .st-pv-s b.up { color: #7CFC9C; }
.st-pv-lv .cap { font-size: 0.75rem; color: #ffe08a; }
.st-pv-stats { display: flex; flex-wrap: wrap; gap: 2px 14px; margin-top: 4px; font-size: 0.82rem; font-variant-numeric: tabular-nums; }
.st-pv-coin { display: flex; flex-wrap: wrap; align-items: center; margin-top: 4px; font-size: 0.82rem; }
.st-pv-coin b { margin: 0 2px; color: #ffe08a; font-variant-numeric: tabular-nums; }
.st-pv-coin b.short { color: #ff8a9a; }
.st-pv-msg { margin: 6px 0 0; min-height: 1.3em; font-size: 0.75rem; line-height: 1.5; color: #c6cbe8; }
.st-pv-msg.bad { color: #ffb4a0; }
.st-lvp-btns { display: flex; gap: 6px; margin-top: 8px; }
.st-lvp-btns .hd-btn { min-height: 48px; flex: 0 1 auto; padding: 6px 12px; font-size: 0.85rem; white-space: nowrap; }
.st-lvp-btns .st-lv-go { flex: 1 1 auto; font-size: 0.98rem; }
.st-sh-art.lvpulse { animation: stLvPulse 0.9s ease-out; }
@keyframes stLvPulse { 0% { filter: brightness(2.2); transform: scale(1.06); } 100% { filter: none; transform: none; } }

/* レベルアップの演出(押し続けなくてよい短いもの。クリック・タップで消える) */
.st-lvfx { position: fixed; inset: 0; z-index: 10; display: flex; align-items: center; justify-content: center; background: radial-gradient(ellipse at 50% 45%, color-mix(in srgb, var(--el, #ffd24a) 28%, rgba(8,10,40,0.35)), rgba(2,3,18,0.62) 70%); cursor: pointer; animation: stLvfxIn 0.25s ease-out; }
.st-lvfx .box { position: relative; z-index: 1; padding: 16px 22px; text-align: center; border-radius: 18px; background: rgba(10,12,52,0.88); border: 2px solid var(--el, #ffd24a); box-shadow: 0 0 30px var(--el, #ffd24a); animation: stLvfxBox 0.6s cubic-bezier(0.2, 1.5, 0.4, 1) both; }
.st-lvfx .big { font-size: 2rem; font-weight: 900; letter-spacing: 0.08em; color: #ffe08a; text-shadow: 0 0 14px rgba(255,200,80,0.9), 0 2px 0 rgba(90,50,0,0.8); }
.st-lvfx .lv { margin-top: 2px; font-size: 1.15rem; font-weight: 800; }
.st-lvfx .lv b { color: #7CFC9C; font-size: 1.5rem; }
.st-lvfx .st { margin-top: 4px; font-size: 0.75rem; color: #dfe6ff; }
.st-lvfx .ring { position: absolute; left: 50%; top: 50%; width: 60px; height: 60px; margin: -30px; border-radius: 50%; border: 3px solid var(--el, #ffd24a); opacity: 0; animation: stLvfxRing 1.1s ease-out forwards; }
.st-lvfx .spk { position: absolute; left: 50%; top: 50%; width: 7px; height: 7px; margin: -3px; border-radius: 50%; background: #fff6c8; box-shadow: 0 0 8px #ffd24a; opacity: 0; transform: rotate(var(--a)) translateX(0); animation: stLvfxSpk 1.1s var(--d) ease-out forwards; }
@keyframes stLvfxIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes stLvfxBox { from { transform: scale(0.5); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes stLvfxRing { 0% { transform: scale(0.4); opacity: 0.9; } 100% { transform: scale(9); opacity: 0; } }
@keyframes stLvfxSpk { 0% { transform: rotate(var(--a)) translateX(30px); opacity: 1; } 100% { transform: rotate(var(--a)) translateX(150px); opacity: 0; } }

/* 動きを減らす(設定・OS): ロビー・ダイアログ・レベルアップの動きを止める */
html.hd-reduce .st-sortie, html.hd-reduce .st-lbn-i, html.hd-reduce .st-lvfx, html.hd-reduce .st-lvfx *, html.hd-reduce .st-sh-art.lvpulse { animation: none !important; }
html.hd-reduce .st-ud-bar > i, html.hd-reduce .st-pv-bar > i { transition: none; }
.st-lvfx.still, .st-lvfx.still * { animation: none !important; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-sortie, html:not(.hd-motion) .st-lbn-i, html:not(.hd-motion) .st-lvfx, html:not(.hd-motion) .st-lvfx *, html:not(.hd-motion) .st-sh-art.lvpulse { animation: none !important; }
  html:not(.hd-motion) .st-ud-bar > i, html:not(.hd-motion) .st-pv-bar > i { transition: none; }
}

@media (max-width: 380px) {
  .st-menu-btn { font-size: 0.75rem; }
  .st-ugrid { grid-template-columns: repeat(auto-fill, minmax(70px, 1fr)); gap: 5px; }
  .st-sellbtns .hd-btn { font-size: 0.75rem; }
  .st-sellbtns .st-sell-go { flex-basis: 76px; }
}

.st-link { min-height: 44px; }
body.st-selling .st-toast { bottom: 150px; }
.st-sh-art img, .st-lbc .art img { -webkit-user-drag: none; user-select: none; -webkit-touch-callout: none; }
.st-toast:not([hidden]) { pointer-events: auto; cursor: pointer; }   /* 出ている間だけ触れる(タップで消せる)。隠れている間は display:none で下に触れる */
/* 届いたあいさつの知らせ: 下のボタン(ミッション・コレクション)に重ならないよう、上の HUD の下に出す。右のメニューの列(約 80px)も避ける。
   句(.st-toast-p)は途中で折り返さない = 「あいさ/つ(+5)」のように分かれない(句の間でだけ折り返す) */
.st-toast.st-toast-high, body.st-has-tb .st-toast.st-toast-high { top: 112px; bottom: auto; left: 12px; transform: none; width: fit-content; max-width: min(calc(100vw - 100px), 340px); }
.st-toast-p { display: inline-block; }
.st-lvp-btns { flex-wrap: wrap; }
.st-lvp-btns .st-lv-go { flex: 1 1 140px; }
.st-screen h1:focus { outline: none; }

/* ロビーから開いた設定パネル(戦闘の画面の外なので、画面の上に浮かせる) */
.hd-settings.hd-set-float {
  position: fixed; inset: 12px; z-index: 60; margin: 0 auto; max-width: 560px;
  overflow-y: auto; justify-content: flex-start;
}

/* ---- ロビーの3体のリング(stella-carousel.js)。3枚を同じマスに重ねて、位置・大きさ・暗さは JS が毎フレーム transform / opacity で決める ---- */
.st-car-ring { position: relative; display: grid; justify-items: center; align-items: center; padding: 10px 0 6px; overflow-x: clip; touch-action: pan-y; user-select: none; -webkit-user-select: none; cursor: grab; }
.st-car.drag .st-car-ring { cursor: grabbing; }
.st-car-ring::before { content: ''; position: absolute; left: 6%; right: 6%; bottom: 0; height: 18%; border-radius: 50%; background: radial-gradient(ellipse at center, rgba(150,170,255,0.32), rgba(150,170,255,0) 70%); pointer-events: none; }   /* 足もとの輪(回る台) */
.st-car-i { grid-area: 1 / 1; width: min(46%, 205px); touch-action: pan-y; -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none; user-select: none; -webkit-user-select: none; }
.st-car-i .dim { position: absolute; inset: 0; z-index: 3; background: #02031a; opacity: 0; pointer-events: none; border-radius: inherit; }
.st-car.mv .st-car-i { will-change: transform; }   /* 動かしている間だけ専用レイヤーにする(常時だとGPUタイルを食う) */
.st-car-i.front { box-shadow: 0 0 26px color-mix(in srgb, var(--el, #8fb3ff) 65%, transparent), inset 0 0 0 1px rgba(255,255,255,0.2); }
.st-car-i:not(.front) { cursor: pointer; }
.st-car-i.st-lbc.cut, .st-car-i.st-lbc.cut.front { box-shadow: none; }      /* 背景なしの絵: 正面の光の枠も付けない(足元の光だけ) */
.st-car-i.st-lbc.cut .dim { display: none; }
.st-car-i:not(.front) .info .nm { font-size: 0.75rem; }
.st-car-i:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-car-live { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.st-car { position: relative; }

/* 立ち絵の長押し(キャラの詳細の絵) */
.st-sh-art { position: relative; }
.st-sh-art { -webkit-touch-callout: none; user-select: none; -webkit-user-select: none; cursor: zoom-in; }
.st-sh-art:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-sheet .st-sh-art { cursor: default; }
.st-sheet .st-sh-art.st-zoomable { cursor: zoom-in; }   /* キャラの詳細の立ち絵: 長押しで拡大(未入手のキャラは拡大しない) */
.st-sheet .st-sh-art .st-art-zoom { left: 4px; top: 4px; width: 24px; height: 24px; }
.st-sheet .st-sh-art .st-art-zoom svg { width: 14px; height: 14px; }

/* 立ち絵ビューア(stella-viewer.js。全画面) */
.st-vw { position: fixed; inset: 0; z-index: 40; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 12px 12px calc(10px + env(safe-area-inset-bottom, 0px)); cursor: zoom-out; -webkit-touch-callout: none; user-select: none; -webkit-user-select: none; touch-action: none;
  background: radial-gradient(ellipse at 50% 42%, color-mix(in srgb, var(--el, #8fb3ff) 26%, rgba(14,12,50,0.985)), rgba(3,4,20,0.995) 74%); animation: stVwIn 0.2s ease-out; }
.st-vw[hidden] { display: none; }
.st-vw-art { flex: 1 1 0; min-height: 0; width: 100%; display: flex; align-items: center; justify-content: center; }
.st-vw-art video, .st-vw-art canvas { display: block; max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; pointer-events: none; filter: drop-shadow(0 0 22px color-mix(in srgb, var(--el, #8fb3ff) 55%, transparent)); }
.st-vw-art img { display: block; max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; -webkit-user-drag: none; -webkit-touch-callout: none; pointer-events: none; filter: drop-shadow(0 0 22px color-mix(in srgb, var(--el, #8fb3ff) 55%, transparent)); }
.st-vw-cap { flex: none; text-align: center; }
.st-vw-name { margin: 0; font-size: 1.25rem; font-weight: 900; text-shadow: 0 2px 6px #000; }
.st-vw-meta { margin: 2px 0 0; display: flex; gap: 8px; align-items: center; justify-content: center; }
.st-vw-stars { font-size: 18px; gap: 3px; }
.st-vw-hint { margin: 3px 0 0; font-size: 0.75rem; color: #aab4e6; }
.st-vw-x { position: absolute; right: 10px; top: calc(10px + env(safe-area-inset-top, 0px)); z-index: 1; width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(170,190,255,0.6); background: rgba(10,14,60,0.88); color: #fff; font-size: 1.6rem; line-height: 1; cursor: pointer; }
.st-vw-x:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
@keyframes stVwIn { from { opacity: 0; } to { opacity: 1; } }
html.hd-reduce .st-vw { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-vw { animation: none; } }

/* ---- デイリーチャレンジ(出撃のデイリータブ・戦闘の画面の表示)。#stBattle に .st-daily が付いている間は、敵・パーティーのパネルの代わりに記録を出す ---- */
.st-dhud { display: none; }
.st-daily .st-efxw, .st-daily .st-efx, .st-daily .st-e-foot, .st-daily .st-e-wave, .st-daily #stPartyPanel { display: none; }
/* 加速ボタン(ゆっくり下ろす)はデイリー(重力あり)だけ。ただし操作ボタンの列(#controls)は戦闘では出さない。スワイプは、バトルもデイリーも上下どちらも即落下(早見の文は1つ)。必殺技の早見はキャラのいるバトルだけ */
.st-battle:not(.st-daily) .hd-controls .st-soft-pad, .st-battle.st-daily .st-hint-ult { display: none; }
.st-daily .st-enemy { padding-right: 66px; min-height: 52px; justify-content: center; }
.st-daily .st-dhud { display: flex; align-items: stretch; gap: 6px; min-width: 0; }
/* デイリーの盤は画面の下寄せ(親指の届く位置。盤の上の記録(レベル・消したボール・スコア・NEXT・歯車)はそのまま上)。パーティー・操作ボタンが無くて、盤の下に大きな空きができるのを防ぐ。
   盤の大きさは幅で決まる(hexdrop.js layout が敵の欄の真下から測る)。戦闘の画面(#stBattle)をその分の高さまで伸ばし、盤を下端へ(margin-top: auto)。操作(タップ・スワイプ)は盤の外の空きでも効く */
body.st-in-battle .st-battle.st-daily {
  display: flex; flex-direction: column;
  min-height: calc(100vh - max(4px, env(safe-area-inset-top, 0px)) - 6px - env(safe-area-inset-bottom, 0px));
  min-height: calc(100dvh - max(4px, env(safe-area-inset-top, 0px)) - 6px - env(safe-area-inset-bottom, 0px));
}
/* 戦闘の上に広告が出る(body.st-bt-ad = .hd-page の上の余白が 広告 + 8px)ときは、その分を引く。引かないと盤の下が画面の外へはみ出す(2026-11-02 修正) */
html.ad-sp body.st-in-battle.st-bt-ad .st-battle.st-daily {
  min-height: calc(100vh - var(--st-adh) - env(safe-area-inset-top, 0px) - 8px - 6px - env(safe-area-inset-bottom, 0px));
  min-height: calc(100dvh - var(--st-adh) - env(safe-area-inset-top, 0px) - 8px - 6px - env(safe-area-inset-bottom, 0px));
}
.st-daily .st-stage.hd-stage { flex: 1 1 auto; }
.st-daily #playArea { margin-top: auto; margin-bottom: 8px; }
.st-daily #stBelow { display: none; }
.st-dhud-i { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3px 4px; border-radius: 10px; background: rgba(0,0,20,0.45); border: 1px solid rgba(160,180,255,0.35); line-height: 1.1; }
.st-dhud-i small { font-size: 0.75rem; color: #b3b9dc; white-space: nowrap; }
.st-dhud-i b { font-size: 1.15rem; font-variant-numeric: tabular-nums; text-shadow: 0 1px 3px rgba(0,0,0,0.8); }
.st-dhud-i:first-child b { color: #ffe08a; }

/* 担当(リング・ピラミッド・ライン)のアイコン: 金色の丸6個(枠線だけ。属性の色にはしない = 「緑のリング」と思われるため)をワザの形に並べたもの(stella-stage.js slotIcon)。外の枠はなし。絵の上でも見えるよう影だけ付ける */
.st-si { display: inline-flex; align-items: center; justify-content: center; line-height: 0; filter: drop-shadow(0 0 1.5px rgba(0,0,0,0.95)) drop-shadow(0 0 3px rgba(0,0,0,0.6)); }
.st-si svg { display: block; width: 26px; height: 26px; }
.st-si.line svg { width: 44px; height: 13px; }
.st-si.in svg { width: 16px; height: 16px; }
.st-si.in.line svg { width: 26px; height: 8px; }
.st-sk.off .st-si { opacity: 0.55; }

/* フォント(2026-10-05 オーナー決定 A案「神話・気品」): 本文は禅角ゴシック、見出し(画面のタイトル・出撃・キャラ名・ダイアログの題など)は
   英数字が Cinzel・日本語がしっぽり明朝。Google Fonts から読み込む(stella-orbs.html の <link>、display=swap: 読み込むまでは端末のフォントで表示)。 */
:root {
  --st-font-body: 'Zen Kaku Gothic New', 'Segoe UI', 'Hiragino Kaku Gothic ProN', 'Yu Gothic', sans-serif;
  --st-font-head: 'Cinzel', 'Shippori Mincho B1', 'Hiragino Mincho ProN', 'Yu Mincho', serif;
  --st-font-num: 'Chakra Petch', 'Zen Kaku Gothic New', 'Segoe UI', sans-serif;   /* 戦闘の数字(ダメージ・HP・カウント)は Chakra Petch 700 に統一(2026-10-22。stella-orbs.html で読み込む) */
}
body, button, input, select, textarea { font-family: var(--st-font-body); }
.hd-title, .st-dlg-title, .st-rv-title, .st-rw-title, .st-sortie .t, .st-slot-name, .st-sh-name, .st-sh-title, .st-sc-name, .st-pop-n, .st-banner, .st-rw-bn, #settingsTitle, #ovTitle { font-family: var(--st-font-head); }
.hd-title small { font-family: var(--st-font-body); }

/* ============================ 使いやすさの調整(2026-10-06、UI UX Pro Max の点検) ============================
 * 見た目・配置は変えず、(1) 押せる範囲を 44px 以上に、(2) 8px 前後の小さすぎる文字をおおむね 10px 以上に上げる。 */
/* (1) 押せる範囲: ロビーの設定ボタンは幅を 44px に。対戦中のヘッダーのボタンは縦の場所を取らないよう、見た目の高さはそのままで
 *     透明な当たり判定を上下に広げる(::before)。オーバーレイ・ガチャ結果のボタンは高さ 44px */
#stLobbySettings { min-width: 44px; }
.st-cal-btn { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.st-battle .hd-head-buttons .hd-btn.small { position: relative; }
.st-battle .hd-head-buttons .hd-btn.small::before { content: ""; position: absolute; left: 0; right: 0; top: -5px; bottom: -5px; }
.st-page .hd-overlay .hd-btn, .st-rv-btns .hd-btn { min-height: 44px; }
/* (2) 小さすぎる文字 */
.st-next .k { font-size: 0.75rem; }
.st-page .hd-pad small { font-size: 0.75rem; }
.st-gring .st-badge, .st-ut .st-badge.el, .st-rc .st-badge, .st-rt-ch .st-badge { font-size: 0.75rem; }
.st-mem .st-key, .st-rc.used::after { font-size: 0.75rem; }
.st-chip { font-size: 0.75rem; }
.st-ut .nm { font-size: 0.75rem; }
.st-own { font-size: 0.75rem; }
.st-stat small, .st-dhud-i small { font-size: 0.75rem; }
.st-mat-t .ex, .st-rwl-l { font-size: 0.75rem; }
.st-rv-card .nm { font-size: 0.75rem; }
.st-rv-card .lab { font-size: 0.75rem; }
@media (max-width: 480px) {
  .st-rv-card .nm { font-size: 0.75rem; }
  .st-rv-card .lab { font-size: 0.75rem; }
}

/* ---- 報酬の画面: プレイヤー経験値バーの演出とレベルアップのバースト(stella-stage.js の rwPlayer / rwPlayerRun)。動きを減らす設定では、いずれも出さず結果だけ ---- */
.st-lv-bar.wide i { transition: none; }
.st-lv-bar.wide.full { box-shadow: 0 0 10px 2px rgba(255,224,138,0.9); animation: stBarFlash 0.26s ease-out; }
.st-lv-bar.wide.full i { background: linear-gradient(90deg, #fff6c8, #ffd24a); }
.st-rw-pnow span.tick { display: inline-block; animation: stLvTick 0.45s cubic-bezier(0.2, 1.6, 0.4, 1); color: #ffe08a; }
.st-rw-lvup.pend, .st-rw-lvup-l li.pend { visibility: hidden; }
.st-rw-lvup-l li.in { animation: stLiPop 0.34s cubic-bezier(0.2, 1.6, 0.4, 1) both; }
.st-rw-lvup-l li.tk.in { background: linear-gradient(100deg, #ffe08a 20%, #fff 45%, #ffd24a 60%, #ffe08a 80%); background-size: 220% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; text-shadow: none; animation: stLiPop 0.34s cubic-bezier(0.2, 1.6, 0.4, 1) both, stShimmer 1.6s linear 0.3s infinite; filter: drop-shadow(0 0 6px rgba(255,210,74,0.8)); }
.st-rw-burst { position: absolute; inset: 0; z-index: 3; pointer-events: none; display: flex; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; }
.st-rw-burst .glow { position: absolute; inset: 0; background: radial-gradient(ellipse at 50% 48%, rgba(255,226,140,0.55), rgba(255,200,80,0.12) 45%, transparent 70%); animation: stBurstGlow 1.3s ease-out forwards; }
.st-rw-burst .rays { position: absolute; left: 50%; top: 48%; width: 150vmax; height: 150vmax; margin: -75vmax; background: repeating-conic-gradient(from 0deg, rgba(255,230,150,0.38) 0 6deg, transparent 6deg 20deg); -webkit-mask-image: radial-gradient(circle, #000 0, transparent 38%); mask-image: radial-gradient(circle, #000 0, transparent 38%); opacity: 0; animation: stBurstRays 1.3s ease-out forwards; }
.st-rw-burst .ring { position: absolute; left: 50%; top: 48%; width: 60px; height: 60px; margin: -30px; border-radius: 50%; border: 3px solid #ffd24a; opacity: 0; animation: stLvfxRing 1.1s ease-out forwards; }
.st-rw-burst .spk { position: absolute; left: 50%; top: 48%; width: 7px; height: 7px; margin: -3px; border-radius: 50%; background: #fff6c8; box-shadow: 0 0 8px #ffd24a; opacity: 0; transform: rotate(var(--a)) translateX(0); animation: stLvfxSpk 1.1s var(--d) ease-out forwards; }
.st-rw-burst .txt { position: relative; font-family: var(--f-display, 'Chakra Petch', sans-serif); font-size: 2.6rem; font-weight: 900; letter-spacing: 0.08em; color: #ffe08a; text-shadow: 0 0 16px rgba(255,200,80,0.95), 0 3px 0 rgba(90,50,0,0.85); animation: stBurstTxt 1.3s cubic-bezier(0.2, 1.6, 0.4, 1) forwards; }
.st-rw-burst .lv { position: relative; margin-top: 2px; font-family: var(--f-display, 'Chakra Petch', sans-serif); font-size: 1.4rem; font-weight: 800; color: #7CFC9C; text-shadow: 0 0 10px rgba(124,252,156,0.8); animation: stBurstTxt 1.3s 0.05s cubic-bezier(0.2, 1.6, 0.4, 1) forwards; }
@keyframes stBarFlash { 0% { filter: brightness(2.2); } 100% { filter: none; } }
@keyframes stLvTick { 0% { transform: scale(1.9); } 100% { transform: scale(1); } }
@keyframes stLiPop { 0% { transform: scale(0.4); opacity: 0; } 100% { transform: none; opacity: 1; } }
@keyframes stShimmer { 0% { background-position: 120% 0; } 100% { background-position: -100% 0; } }
@keyframes stBurstGlow { 0% { opacity: 0; } 18% { opacity: 1; } 100% { opacity: 0; } }
@keyframes stBurstRays { 0% { opacity: 0; transform: rotate(0) scale(0.6); } 20% { opacity: 1; } 100% { opacity: 0; transform: rotate(40deg) scale(1.1); } }
@keyframes stBurstTxt { 0% { transform: scale(0.3); opacity: 0; } 22% { transform: scale(1.15); opacity: 1; } 34% { transform: scale(1); } 78% { opacity: 1; } 100% { transform: scale(1.04); opacity: 0; } }
html.hd-reduce .st-rw-burst, html.hd-reduce .st-lv-bar.wide.full, html.hd-reduce .st-rw-pnow span.tick, html.hd-reduce .st-rw-lvup-l li.in, html.hd-reduce .st-rw-lvup-l li.tk.in { animation: none !important; }
.st-rw.still .st-rw-lvup-l li.tk.in { animation: none; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-rw-burst, html:not(.hd-motion) .st-lv-bar.wide.full, html:not(.hd-motion) .st-rw-pnow span.tick, html:not(.hd-motion) .st-rw-lvup-l li.in { animation: none !important; }
}

/* ---- デイリーミッション・図鑑のバッジ(ロビーのメニュー。プレゼントのバッジと同じ見た目) ---- */
.st-menu-badge { position: absolute; top: -6px; right: -4px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 999px; background: #ff4d6d; color: #fff; font-size: 0.75rem; font-weight: 900; line-height: 20px; text-align: center; box-shadow: 0 0 0 2px #0b0e2e; font-variant-numeric: tabular-nums; }
.st-menu-badge[hidden] { display: none; }
.st-menu-btn.has { border-color: rgba(255,214,120,0.75); box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 0 16px rgba(255,200,90,0.35); }
.st-menu-btn.has .ic { animation: stGiftWiggle 2.4s ease-in-out infinite; }

/* ---- デイリーミッション ---- */
.st-ms-list { display: grid; gap: 8px; }
.st-ms { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border-radius: 14px; background: var(--st-glass); border: 1px solid var(--st-line); }
.st-ms.done { border-color: rgba(255,214,120,0.75); box-shadow: 0 0 14px rgba(255,200,90,0.25); }
.st-ms.claimed { opacity: 0.72; }
.st-ms.all { background: linear-gradient(rgba(70,50,120,0.7), rgba(20,14,60,0.8)); }
.st-ms-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.st-ms-name { font-size: 0.95rem; color: #fff; }
.st-ms-rw { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.st-ms-f { display: flex; align-items: center; gap: 10px; }
.st-ms-bar { position: relative; flex: 1 1 auto; height: 10px; border-radius: 999px; overflow: hidden; background: rgba(8,10,40,0.8); border: 1px solid var(--st-line); }
.st-ms-bar > i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: inherit; background: linear-gradient(90deg, #7ad7ff, #ffe08a); transition: width 0.4s ease-out; }
.st-ms-n { min-width: 64px; font-size: 0.78rem; color: #dfe6ff; text-align: right; font-variant-numeric: tabular-nums; }

/* ---- キャラコレクション ---- */
.st-dex-sum { display: flex; flex-direction: column; gap: 8px; margin: 4px 0 10px; padding: 10px 12px; border-radius: 14px; background: var(--st-glass); border: 1px solid var(--st-line); }
.st-dex-top { display: flex; align-items: center; gap: 10px; }
.st-dex-cnt { font-size: 0.95rem; color: #fff; white-space: nowrap; font-variant-numeric: tabular-nums; }
.st-dex-next { margin: 0; font-size: 0.82rem; color: #ffe08a; }
.st-dex-ms { display: flex; flex-wrap: wrap; gap: 6px; }
.st-dex-all { min-height: 44px; align-self: flex-end; width: auto; padding: 8px 18px; }
.st-dex-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; }
.st-dex-c { display: flex; flex-direction: column; align-items: center; gap: 2px; min-height: 44px; padding: 8px 4px; font: inherit; color: #eef1ff; border-radius: 12px; background: var(--st-glass); border: 1px solid var(--st-line); }
button.st-dex-c { cursor: pointer; }
button.st-dex-c:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-dex-c.rf, .st-ut.rf { border-color: transparent; }                       /* レア度の枠(.rf のリング)が縁の代わり。選択中の状態では下で消す */
/* 一覧のタイル(.st-ut)の枠は、マスクで抜いた ::before ではなく内側の box-shadow で描く(数千体の一覧をスクロールするとき、タイルごとのマスク・フィルターのラスタライズが重かった)。見た目は同じ: 1px の線 + ★5 だけほのかな光 */
.st-ut.rf::before { display: none; }
.st-ut.rf.r3:not(.used):not(.cur):not(.picked) { box-shadow: inset 0 0 0 1px var(--rl); }
.st-ut.rf.r4:not(.used):not(.cur):not(.picked) { box-shadow: inset 0 0 0 1px var(--rl); }
.st-ut.rf.r5:not(.used):not(.cur):not(.picked) { box-shadow: inset 0 0 0 1px var(--rl), inset 0 0 3px 0 rgba(255,250,224,0.7), 0 0 6px rgba(255,233,166,0.34), 0 0 2px rgba(255,250,224,0.55); }
.st-ut.rf.used { border-color: rgba(140,160,255,0.75); }
.st-ut.rf.cur { border-color: #ffd166; }
.st-ut.rf.picked { border-color: #ff8a9a; }
.st-sh-art.rf:not(.cut) { border-color: transparent; }
.st-sh-art.rf { --rf-w: 3px; }
.st-sh-art.rf.cut::before { display: none; }
.st-dex-c.off .st-star { background: #8f98c8; }
.st-dex-c .nm { font-size: 0.75rem; font-weight: 700; text-align: center; }
.st-dex-c.off { background: rgba(14,18,64,0.5); }
.st-dex-c.off .nm, .st-dex-c.off .st-stars { color: #8f98c8; }
.st-dex-sil { filter: grayscale(1) brightness(0.7); opacity: 0.75; }
.st-dex-no { font-size: 0.75rem; font-weight: 700; color: #b8c2f0; padding: 0 6px; border-radius: 999px; border: 1px solid var(--st-line); }
.st-notyet img, .st-notyet canvas { filter: grayscale(1) brightness(0.8); }
.st-sh-notyet { display: inline-block; align-self: flex-start; padding: 1px 10px; margin-bottom: 2px; border-radius: 999px; font-size: 0.8rem; font-weight: 800; color: #dfe4ff; background: rgba(90,100,150,0.55); border: 1px solid var(--st-line); }

/* ---- ログインカレンダー(7日のカード。2026-10-30: 縦長の7列をやめ、横1列のカードを横にスクロール) ----
   カードは日ごとに 日付 + 状態(今日・済み・特別)の見出しと、報酬(絵 + 数)の行。ダイアログは横にスクロールさせず、この帯だけが横にスクロール(スナップ)。
   端は、まだ先があるときだけ薄く消す(.can-l / .can-r。JS が付ける)。PC は細いスクロールバーも出す。最初の位置は今日のカードが真ん中(JS) */
.st-lbn { min-width: 0; }
.st-cal { position: relative; display: flex; gap: 8px; margin: 2px 0 6px; padding: 12px 8px 12px; list-style: none; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory; scroll-behavior: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; scrollbar-width: thin; scrollbar-color: rgba(170,190,255,0.55) transparent; }
.st-cal::-webkit-scrollbar { height: 6px; }
.st-cal::-webkit-scrollbar-thumb { background: rgba(170,190,255,0.5); border-radius: 3px; }
.st-cal::-webkit-scrollbar-track { background: rgba(14,18,64,0.5); border-radius: 3px; }
.st-cal.can-l.can-r { -webkit-mask-image: linear-gradient(90deg, transparent, #000 24px, #000 calc(100% - 24px), transparent); mask-image: linear-gradient(90deg, transparent, #000 24px, #000 calc(100% - 24px), transparent); }
.st-cal.can-l:not(.can-r) { -webkit-mask-image: linear-gradient(90deg, transparent, #000 24px); mask-image: linear-gradient(90deg, transparent, #000 24px); }
.st-cal.can-r:not(.can-l) { -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 24px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 24px), transparent); }
.st-cal-d { position: relative; flex: 0 0 108px; display: flex; flex-direction: column; gap: 6px; padding: 8px 8px 10px; border-radius: 12px; background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); scroll-snap-align: center; }
.st-cal-d .hd { display: flex; align-items: center; justify-content: space-between; gap: 4px; min-height: 20px; }
.st-cal-d .dn { font-size: 0.84rem; font-weight: 700; color: #b8c2f0; white-space: nowrap; }
.st-cal-d .tg { padding: 1px 6px; border-radius: 8px; font-size: 0.7rem; font-weight: 700; line-height: 1.3; color: #ffe08a; background: rgba(255,214,120,0.16); border: 1px solid rgba(255,214,120,0.55); white-space: nowrap; }
.st-cal-d .pair { flex: 1; display: flex; flex-direction: column; justify-content: flex-start; gap: 6px; }
.st-cal-d .pair .one { display: flex; align-items: center; gap: 6px; min-width: 0; }
.st-cal-d .pair .one .st-item-ico { flex: none; width: 28px; height: 28px; }
.st-cal-d .n { font-size: 0.86rem; color: #ffe08a; font-variant-numeric: tabular-nums; white-space: nowrap; }
.st-cal-d .ck { flex: none; width: 18px; height: 18px; display: flex; align-items: center; justify-content: center; border-radius: 50%; font-size: 0.75rem; font-weight: 900; line-height: 1; color: #d6ffe0; background: #1f6a3c; border: 1px solid #9fe8b0; }
.st-cal-d.past { opacity: 0.72; }
.st-cal-d.past .pair { opacity: 0.8; }
.st-cal-d.last { background: radial-gradient(rgba(255,214,120,0.35), rgba(40,20,80,0.85)); border-color: rgba(255,214,120,0.85); }
.st-cal-d.last .pair .one:first-child .st-item-ico { width: 32px; height: 32px; }
.st-cal-d.today { border-color: #ffe08a; box-shadow: 0 0 10px rgba(255,214,120,0.7); animation: stCalPop 0.5s 0.15s cubic-bezier(0.2, 1.6, 0.4, 1) both; }
.st-cal-d.today .dn { color: #fff1c4; }
.st-cal-d .stamp { position: absolute; right: -6px; bottom: -8px; padding: 0 5px; border: 2px solid #ff6b81; border-radius: 6px; color: #ff6b81; font-size: 0.8rem; font-weight: 900; background: rgba(20,6,20,0.85); transform: rotate(-14deg); animation: stCalStamp 0.4s 0.55s cubic-bezier(0.2, 1.4, 0.4, 1) both; }
@keyframes stCalPop { from { transform: scale(0.6); } to { transform: none; } }
@keyframes stCalStamp { from { opacity: 0; transform: rotate(-14deg) scale(2.4); } to { opacity: 1; transform: rotate(-14deg) scale(1); } }
.st-cal.still .st-cal-d, .st-cal.still .stamp { animation: none; }
html.hd-reduce .st-cal-d, html.hd-reduce .st-cal-d .stamp, html.hd-reduce .st-menu-btn.has .ic { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-cal-d, html:not(.hd-motion) .st-cal-d .stamp, html:not(.hd-motion) .st-menu-btn.has .ic { animation: none; } }

/* 軽量背景(スマホ・タッチ端末): 全画面の常時アニメ+screen合成はGPUのタイルメモリを食い、画面の一部が描かれない(チカチカ)原因になるため、
   静止画の背景だけにする(オーロラ・もや・またたきは出さない)。デスクトップは従来どおり。/stella-orbs は hexdrop.css のみなので影響なし */
@media (pointer: coarse), (max-width: 820px) {
  /* 動かない絵なので、層に昇格させない(translate3d・will-change・backface-visibility はどれも別の層にして、画面の 5.7 倍の大きさの層を作っていた)。
     位置は left/top に足して、見える範囲は今までと同じ。:root:root は、hexdrop.css の「演出を減らす」の transform(html.hd-reduce .bgpan 等)に負けないため */
  :root:root .bgpan { animation: none; will-change: auto; backface-visibility: visible; transform: none; left: calc(var(--l) + var(--x0, 0px)); top: calc(var(--t) + var(--y0, 0px)); }
  .aur, .haze, .tw { display: none; }
  #space .layer { animation: none; transform: none; }
}

/* スマホでスクロールの端に来たとき、URLバーの出入りやオーバースクロールの伸びで全画面が再描画されてチカチカするのを防ぐ */
html, body { overscroll-behavior-y: none; }
/* 長い一覧(キャラ・パーティー)は、あとから行を描いて伸びる。ブラウザのスクロール固定(scroll anchoring)が位置をずらさないように(画面を開いたときは先頭のまま) */
#stParty, #stBox, #stSelect { overflow-anchor: none; }
@supports (height: 100lvh) {
  #space { inset: auto; left: 0; top: 0; width: 100%; height: 100lvh; }   /* URLバーが出入りしても背景のサイズが変わらない */
}

/* 盤の上(盤面が13段になって空いた所)に大きく出す敵の絵。高さは決まった帯(盤はその下の残りに合わせて大きさが決まる)。
   アニメは transform / opacity だけ、ふだんは何も動かない。ブレンド・フィルタ・マスクは使わない */
.st-efx { position: relative; width: 100%; height: clamp(56px, 10vh, 120px);   /* 高さは hexdrop.js layout() が余った高さに合わせて上書きする */
  display: flex; align-items: center; justify-content: center; pointer-events: none;
  background: radial-gradient(ellipse 46% 58% at 50% 62%, rgba(120,100,255,0.18), rgba(120,100,255,0) 72%); }
.st-efx .efx-art { display: block; height: calc(100% - 4px); width: auto; aspect-ratio: 1 / 1; object-fit: contain; pointer-events: none; -webkit-user-drag: none; user-select: none; }
/* 枠を付けない(オーナー方針 2026-10-08 docs/specs/stella-art-motion.md): 透明の絵をそのまま。canvas(なびく・弾む動き)は img と同じ class を持つ */
.st-efx img.efx-art[hidden] { display: none; }
/* ボスの立ち絵は全身(2026-10-19 オーナー: 上だけの切り出しをやめる)。敵のエリアの中に収めて、足元(下の端)をそろえる。
   大きさの調整は --boss-scale だけ(1 = 敵のエリアの高さいっぱい。1 より大きくすると、上へはみ出して大きく出る。下(名前・HPバー)には はみ出さない) */
.st-efx { --boss-scale: 1; }
.st-efx .efx-art.boss { aspect-ratio: 3 / 5; height: var(--bh); margin-bottom: calc(var(--bh) * var(--bb) * -1); margin-left: calc(var(--bh) * 1.2 * (0.5 - var(--bcx))); object-fit: contain; object-position: 50% 100%; align-self: flex-end; }
/* 2026-11-03 ボスの大きさ: 絵の見えている部分(透明な余白を除く。hexdrop 側ではなく stella-stage.js efxFitMeasure が割合を --bvh/--bvw/--bb/--bcx に入れる)が、エリアの高さ・幅いっぱいに収まる枠の高さ --bh。
   見える部分の下端が足元(名前・HPバー)の上に来るよう、枠の下の透明な余白ぶん下へずらす(--bb)・見える部分を横の真ん中へ(--bcx)。変数が無いときは 1 / 1 / 0 / 0.5 = 枠いっぱい(今まで通り)。
   エリアの大きさは container query の単位(.st-efx が size container)。測り終わるまで絵は出さない(.efx-fit) */
.st-efx { container-type: size; --bvh: 1; --bvw: 1; --bb: 0; --bcx: 0.5; --boss-up: 24px; }   /* --boss-up = 帯の上(ステージ名・⚙の行の真ん中の空き)へ上にはみ出してよい高さ。横長のボス戦(.st-bosswide)は 0 */
.st-bosswide .st-efx { --boss-up: 0px; }
.st-efx .efx-art.boss, .st-efx-red.boss { --bh: calc(min((100cqh - 4px + var(--boss-up)) / var(--bvh), (100cqw - 8px) / (var(--bvw) * 0.6)) * var(--boss-scale)); }
.st-efx.efx-fit .efx-art, .st-efx.efx-fit .st-efx-red { visibility: hidden; }
.st-efx .efx-art.boss:not(.cut) { border-radius: 10px; }                                     /* 背景つきのキャラの絵(仮の絵など)は四角のまま(輪・光の枠は付けない) */
.st-efx-red { position: absolute; height: calc(100% - 4px); aspect-ratio: 1 / 1; pointer-events: none; opacity: 0;
  background: var(--tint, rgb(255,30,40)); -webkit-mask-size: contain; mask-size: contain; -webkit-mask-position: 50% 50%; mask-position: 50% 50%; -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; }
.st-efx-red[hidden] { display: none; }
.st-efx-red.boss { aspect-ratio: 3 / 5; height: var(--bh); margin-bottom: calc(var(--bh) * var(--bb) * -1); margin-left: calc(var(--bh) * 1.2 * (0.5 - var(--bcx))); align-self: flex-end; -webkit-mask-size: contain; mask-size: contain; -webkit-mask-position: 50% 100%; mask-position: 50% 100%; }   /* 赤い被せ物もボスの絵と同じ全身の形 */
.st-efx .efx-art.hit { animation: stEfxHit 0.22s ease-out; }
.st-efx .efx-art.hitM { animation: stEfxHitM 0.26s ease-out; }
.st-efx .efx-art.hitH { animation: stEfxHitH 0.3s ease-out; }
.st-efx-red.hit { animation: stRedFlash 0.07s ease-out; }
.st-efx-red.hitM { animation: stRedFlash 0.08s ease-out; }
.st-efx-red.hitH { animation: stRedFlash 0.09s ease-out; }   /* 着弾: 攻撃の色で 1 コマだけ塗って 60〜90ms で戻る */
.st-efx-red.down { animation: stRedDown 0.5s ease-in forwards; }
.st-efx-red.st-efx-after { background: rgb(255,59,92); }
.st-efx-red.st-efx-after.lunge { animation: stAfterImg 0.1s 0.04s ease-out both; }   /* 敵の突進の残像: 1.12 倍の半透明の影(0.1 秒) */
@keyframes stAfterImg { 0% { opacity: 0.45; transform: scale(1.12); } 100% { opacity: 0; transform: translateY(8%) scale(1.12); } }
@keyframes stRedDown { 0% { opacity: 0; background: var(--tint, #fff); } 40% { opacity: 1; background: #fff; } 100% { opacity: 0; background: #fff; } }
/* 大技の放射線: 敵の後ろに属性色の 24 本(15 度おき)。200ms */
.st-efx-lines { position: absolute; left: 0; right: 0; top: -35%; bottom: -35%; pointer-events: none; opacity: 0;
  background: repeating-conic-gradient(from 0deg at 50% 55%, var(--lc, #fff) 0 2.6deg, transparent 2.6deg 15deg);
  -webkit-mask-image: radial-gradient(circle at 50% 55%, transparent 16%, #000 34%, transparent 66%); mask-image: radial-gradient(circle at 50% 55%, transparent 16%, #000 34%, transparent 66%); }
.st-efx-lines.go { animation: stLines 0.2s ease-out; }
@keyframes stLines { 0% { opacity: 0; transform: scale(0.75); } 35% { opacity: 0.85; } 100% { opacity: 0; transform: scale(1.18); } }
.st-efx.jolt { animation: stEfxJolt 0.2s ease-out; }
.st-efx .efx-art.lunge { animation: stEfxLunge 0.36s ease-out; }
.st-efx .efx-art.in { animation: stEfxIn 0.45s ease-out; }
.st-efx .efx-art.down { animation: stEfxDown 0.5s ease-in forwards; }
/* 強化版(・強/・極/・超/・改)の印: WAVE の横に小さく */
.st-e-tier { display: inline-block; margin-left: 2px; padding: 0 5px; border-radius: 6px; font-size: 0.75rem; line-height: 1.5; color: #1a1030; background: linear-gradient(180deg, #ffe08a, #e9b440); vertical-align: 1px; }
.st-e-tier[hidden] { display: none; }
.st-daily .st-efx { display: none; }
/* 着弾のずれ: 当たった向きと反対へ 6 / 8 / 10px(--kx・--ky は efx() が入れる)ずれて、ease-out で戻る */
@keyframes stEfxHit { 0% { transform: translate(var(--kx, 0px), var(--ky, -6px)); opacity: 0.85; } 100% { transform: none; } }
@keyframes stEfxHitM { 0% { transform: translate(var(--kx, 0px), var(--ky, -8px)) scale(0.95); opacity: 0.8; } 100% { transform: none; } }
@keyframes stEfxHitH { 0% { transform: translate(var(--kx, 0px), var(--ky, -10px)) scale(0.92); opacity: 0.75; } 55% { transform: translate(calc(var(--kx, 0px) * -0.2), calc(var(--ky, -10px) * -0.2)) scale(1.01); } 100% { transform: none; } }
@keyframes stRedFlash { 0% { opacity: 0.75; } 100% { opacity: 0; } }
@keyframes stRedFlashW { 0% { opacity: 0.4; } 100% { opacity: 0; } }
.st-efx-red.wh.hit, .st-efx-red.wh.hitM, .st-efx-red.wh.hitH { animation-name: stRedFlashW; }   /* 白い攻撃の塗りは 0.4 まで(2026-10-22) */
@keyframes stEfxJolt { 0% { transform: translateY(0); } 25% { transform: translateY(3px); } 55% { transform: translateY(-2px); } 100% { transform: none; } }
@keyframes stEfxLunge { 0% { transform: none; } 35% { transform: translateY(10%) scale(1.12); } 100% { transform: none; } }
@keyframes stEfxIn { from { opacity: 0; transform: scale(0.9); } }
@keyframes stEfxDown { 0%, 40% { opacity: 1; transform: none; } 100% { opacity: 0; transform: scale(0.96); } }   /* 倒れる: 色で塗られている間(0.2 秒)は絵のまま、そのあと背景へ薄れる */
html.hd-reduce .st-efx img { animation: none; }
html.hd-reduce .st-efx.jolt { animation: none; }
html.hd-reduce .st-efx-red.hit, html.hd-reduce .st-efx-red.hitM, html.hd-reduce .st-efx-red.hitH { animation-duration: 0.1s; }
html.hd-reduce .st-efx img.down { opacity: 0; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-efx img { animation: none; }
  html:not(.hd-motion) .st-efx.jolt { animation: none; }
  html:not(.hd-motion) .st-efx-red.hit, html:not(.hd-motion) .st-efx-red.hitM, html:not(.hd-motion) .st-efx-red.hitH { animation-duration: 0.1s; }
  html:not(.hd-motion) .st-efx img.down { opacity: 0; }
}

/* リーダー(リング枠)の目印: ロビーのカード・パーティー編成の枠・戦闘のメンバー */
.st-lead-tag { display: inline-block; padding: 1px 6px; border-radius: 999px; font-size: 0.75rem; font-weight: 900; line-height: 1.35; letter-spacing: 0.04em; white-space: nowrap; color: #3a2200;
  background: linear-gradient(#ffe9a6, #ffbf4d); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.55), 0 1px 3px rgba(0,0,0,0.5); }
.st-lbc .st-lead-tag { position: absolute; left: 50%; top: 5px; transform: translateX(-50%); z-index: 1; font-size: 0.75rem; }
.st-mem .st-lead-tag { position: absolute; left: 3px; top: 1px; z-index: 3; width: 17px; height: 12px; padding: 0; overflow: hidden; border-radius: 0; font-size: 0; line-height: 0; color: transparent; box-shadow: none; clip-path: polygon(0 100%, 0 25%, 26% 60%, 50% 0, 74% 60%, 100% 25%, 100% 100%); pointer-events: none; }   /* UI v3: リーダーの目印はカードの枠の中。せまいカード(横長)では金の冠だけ */
.st-roomy .st-mem .st-lead-tag { left: 4px; top: 4px; width: auto; height: auto; padding: 0 6px; overflow: visible; border-radius: 8px; font-size: 0.75rem; line-height: 1.4; color: #3a2200; clip-path: none; }   /* 縦長のカードでは「リーダー」の文字の札(左上の角のタブ) */
.st-slot-ls, .st-pop-ls, .st-cf-ls { font-size: 0.75rem; color: #ffd98a; line-height: 1.35; }
.st-pop-ls { margin-top: 3px; }
.st-sh-sec.ls p { margin: 0; font-size: 0.8rem; color: #ffe2a0; }
.st-vw-ls { margin: 3px 0 0; font-size: 0.78rem; font-weight: 700; color: #ffe2a0; }
/* 戦闘の始まりの帯の3行目(リーダースキル)。あるときは帯を少し長く出す */
.st-banner .l { display: block; margin-top: 4px; font-size: 0.82rem; font-weight: 800; color: #ffe08a; text-shadow: 0 2px 0 rgba(0,0,0,0.7); }
.st-banner .l:empty { display: none; }
.st-banner.lead.show { animation-duration: 2.4s; }
html.hd-reduce .st-banner.lead.show { animation-duration: 2.4s; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-banner.lead.show { animation-duration: 2.4s; } }
.st-cf-ls { margin: 4px 0 0; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* v5: 1行(長ければ…) */

/* 下の操作ボタン(左・加速・右・回転・即落下)は出さない(オーナー指定 2026-10-06。操作はキーボード・スワイプ/タップ)。盤面の高さの計算は offsetHeight 0 になるだけ */
#controls { display: none; }

/* 対戦中のメニュー(歯車1つ。一時停止・やり直し・設定・ロビーへをまとめる) */
.st-menuwrap { position: relative; }
.st-menubtn { min-width: 40px; justify-content: center; font-size: 1.05rem; line-height: 1; }
.st-menubtn[aria-expanded="true"] { border-color: rgba(190,205,255,0.8); background: rgba(120,140,255,0.28); }
.st-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 168px; display: flex; flex-direction: column; gap: 4px; padding: 6px; border-radius: 12px; background: rgba(14,18,64,0.96); border: 1px solid rgba(190,205,255,0.45); box-shadow: 0 6px 20px rgba(0,0,0,0.5); }
.st-menu[hidden] { display: none; }
.st-battle .st-menu .hd-btn.small.st-mi { min-height: 44px; width: 100%; justify-content: flex-start; text-align: left; padding: 8px 14px; font-size: 0.86rem; }
.st-battle .st-menu .hd-btn.small.st-mi::before { content: none; }
.st-menu .hd-gear-t { display: inline; }

/* 新しい版の案内(上に出る小さなバナー。閉じられる。375px でも折り返して収まる) */
.st-upd { position: fixed; top: 8px; left: 50%; z-index: 12; transform: translateX(-50%); width: min(94vw, 440px); box-sizing: border-box; display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; padding: 6px 6px 6px 14px; border-radius: 14px; background: linear-gradient(rgba(40,50,130,0.94), rgba(14,18,64,0.96)); border: 1px solid rgba(190,205,255,0.5); box-shadow: 0 6px 20px rgba(0,0,0,0.5); color: #eef1ff; }
.st-upd[hidden] { display: none; }
.st-upd-t { flex: 1 1 140px; font-size: 0.84rem; font-weight: 800; line-height: 1.4; }
.st-upd .st-upd-go { flex: 0 0 auto; min-height: 44px; padding: 0 16px; }
.st-upd-x { flex: 0 0 auto; width: 44px; height: 44px; border: 0; border-radius: 12px; background: transparent; color: #cfd6ff; font-size: 1.3rem; line-height: 1; cursor: pointer; }
.st-upd-x:hover, .st-upd-x:focus-visible { background: rgba(255,255,255,0.12); color: #fff; }

/* ======================================================================== ロビー(モンスト風の1画面)
   上の帯 / 真ん中にリーダー(右のふちに縦のアイコン)/ 出撃の段 / いちばん下のタブ。どの高さでも、ページはスクロールしない:
   全体 = 画面の高さ(dvh)・真ん中(.st-hero)だけが伸び縮みして、リーダーの絵の大きさがそれに合わせて変わる */
.st-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
body.st-in-lobby { overflow: hidden; }
/* ゲームの全画面: サイトのヘッダー(UAJ Studio のロゴ・アカウント)は出さない(アカウント・ログアウトは ≡ メニューの中、画面の移動は下のタブ) */
.site-header { display: none; }
body.st-in-lobby .hd-page { max-width: 480px; height: 100vh; height: 100dvh; padding: 0 10px; }
.st-lobby:not([hidden]) { display: flex; flex-direction: column; height: 100%; padding-top: env(safe-area-inset-top, 0px); }
#stLobbyBody:not([hidden]) { flex: 1 1 0; min-height: 0; width: 100%; display: flex; flex-direction: column; }
.st-lobby .st-note { margin: 4px 2px; }
/* オープニング(タイトル画面。stella-opening.js・docs/specs/stella-opening.md)。画面いっぱいの固定の層(サイトのヘッダー・ダイアログの下・読み込みの失敗の案内の上)。
   動画は高さいっぱい・中央(.op-vwrap)。縦長の画面は左右が切れる(object-fit: cover)/ 横長の画面は左右に side.webp。ロゴ・下のエリアはこの上に重ねる */
.st-title { display: none !important; }   /* 旧タイトル画面(オープニングに置き換え)。show('stTitle') の受け皿だけ */
.op { position: fixed; inset: 0; z-index: 50; overflow: hidden; background: #05061a; color: #fff; touch-action: manipulation; -webkit-user-select: none; user-select: none; }
.op[hidden] { display: none; }
/* 切り抜き用の入れ物(stella-opening.js が中身を包む)。ふだんは何もしない。切り替えの間だけ JS が回して動かす(transform だけ = 描き直さない) */
.op-pivot, .op-clip, .op-inner, .op-stage { position: absolute; inset: 0; }
.op-stage { background: #05061a; }
.op.op-wipe { background: transparent; }
.op-side { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; }
.op-vwrap { position: absolute; top: 0; bottom: 0; left: 50%; height: 100%; max-width: 100%; aspect-ratio: 720 / 1196; transform: translateX(-50%); overflow: hidden; }
.op-poster, .op-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.op-video { background: transparent; }
.op-logo { position: absolute; left: 50%; top: 22%; width: 70%; margin: 0; transform: translate(-50%, -50%); opacity: 0; transition: opacity 1.5s linear; pointer-events: none; }
.op.op-logo-in .op-logo { opacity: 1; }
.op.op-logo-fast .op-logo { transition-duration: 0.35s; }   /* 待ちをタップで飛ばした */
.op-logo:focus { outline: none; }   /* 出たときに h1 へフォーカスを移すだけ(読み上げ用)。枠は出さない */
.op-logo img { display: block; width: 100%; height: auto; filter: drop-shadow(0 4px 16px rgba(0, 0, 0, 0.55)); }
.op-shade { position: absolute; left: 0; right: 0; bottom: 0; height: 34%; pointer-events: none; background: linear-gradient(rgba(5, 6, 26, 0), rgba(5, 6, 26, 0.62)); }
/* 下のエリア(画面の高さの 86〜90% あたりを中心に、下の端から) */
.op-bottom { position: absolute; left: 0; right: 0; bottom: calc(env(safe-area-inset-bottom, 0px) + 7%); display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 0 16px; pointer-events: none; }
.op-bottom > * { pointer-events: auto; }
/* 作品の注記(フィクション。小さく目立たせない。タイトル画面の一番下) */
.op-fiction { position: absolute; left: 0; right: 0; bottom: calc(env(safe-area-inset-bottom, 0px) + 6px); margin: 0; padding: 0 14px; text-align: center; font-size: 0.64rem; line-height: 1.35; color: rgba(214, 224, 255, 0.55); text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8); pointer-events: none; z-index: 1; }
.op-boot, .op-login { display: none; }
.op.op-show-progress .op-boot { display: flex; flex-direction: column; align-items: center; gap: 10px; width: min(300px, 80vw); }
.op.op-show-login .op-login { display: flex; animation: opFadeIn 0.5s ease-out both; }
.op .st-title-btns { flex-direction: column; gap: 12px; width: min(340px, 88vw); margin: 0; }
.op .st-title-btn { width: 100%; min-height: 52px; font-size: 1rem; }
.op .st-note { margin: 0; text-align: center; font-size: 0.85rem; color: #dfe4ff; text-shadow: 0 1px 6px rgba(0, 0, 0, 0.8); }
.op .st-boot-bar { position: relative; left: auto; right: auto; bottom: auto; width: 100%; }
.op .st-boot-btns { margin: 0 auto; }
/* TAP / CLICK TO START: 画面全体を覆う本物のボタン(Enter / Space でも押せる)。文字だけ下のほうで、ゆっくり点滅 */
.op-start { position: absolute; inset: 0; z-index: 1; padding: 0; border: 0; background: transparent; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.op-start[hidden] { display: none; }
.op-start-t { position: absolute; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 9%); transform: translateX(-50%); white-space: nowrap; padding: 4px 0 4px 0.24em; text-align: center; font-family: var(--st-font-head, 'Cinzel', serif); font-size: clamp(1.05rem, 4.4vw, 1.5rem); font-weight: 700; letter-spacing: 0.24em; color: #fff4cf; text-shadow: 0 0 14px rgba(255, 214, 120, 0.7), 0 2px 8px rgba(0, 0, 0, 0.9); animation: opBlink 2.6s ease-in-out infinite; }
.op-start:focus { outline: none; }
.op-start-t::after { content: ''; position: absolute; inset: -6px -14px -6px -12px; border: 1.5px solid rgba(255, 244, 207, 0.85); border-radius: 8px; box-shadow: 0 0 12px rgba(255, 214, 120, 0.45), inset 0 0 10px rgba(255, 214, 120, 0.2); pointer-events: none; }   /* 枠: 文字と同じ色・同じ光(文字と一緒に点滅する)。10-17 オーナー */
.op-start:focus-visible .op-start-t::after { border-width: 2px; border-color: #fff4cf; }
/* 音のボタン(右上。アイコンだけ・44px) */
.op-snd { position: absolute; z-index: 2; top: calc(env(safe-area-inset-top, 0px) + 10px); right: 10px; width: 44px; height: 44px; padding: 0; display: flex; align-items: center; justify-content: center; border-radius: 50%; border: 1px solid rgba(255, 255, 255, 0.35); background: rgba(10, 12, 40, 0.5); color: #fff4cf; cursor: pointer; }
.op-snd:focus-visible { outline: 2px solid #ffd166; outline-offset: 2px; }
.op-snd .x { display: none; }
.op-snd.off .w { display: none; }
.op-snd.off .x { display: inline; }
@keyframes opBlink { 0%, 100% { opacity: 1; } 50% { opacity: 0.25; } }
@keyframes opFadeIn { from { opacity: 0; } to { opacity: 1; } }
/* 羽根の切り替え: 羽根は別の層(transform だけを動かす)。オープニング本体は mask-image で切り抜く(stella-opening.js) */
.op-feathers { position: fixed; inset: 0; z-index: 51; overflow: hidden; pointer-events: none; }
.op-feathers img { position: absolute; width: 566px; height: 1400px; max-width: none; transform-origin: 50% 50%; will-change: transform; transform: translate3d(-9999px, 0, 0); }
body.st-opening-wipe .op { pointer-events: none; }
.op.op-black .op-vwrap, .op.op-black .op-side, .op.op-black .op-shade, .op.op-black .op-bottom, .op.op-black .op-snd, .op.op-black .op-fiction { visibility: hidden; }
/* オープニングが出ている間: 読み込みの失敗・ゲームの更新などの案内(ダイアログ・知らせ)はオープニングより上 */
body.st-opening .st-claim, body.st-opening .st-dlg-bg, body.st-opening .st-toast { z-index: 120; }
body.st-opening { overflow: hidden; }
html.hd-reduce .op-start-t { animation: none; }
html.hd-reduce .op-logo { transition-duration: 0.01s; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .op-start-t { animation: none; } }
/* お知らせ(ページを開くたび最初に 1 回。stella-opening.js が作る。ダイアログの見た目は .st-dlg を使う。OK がスマホでの最初の操作 = 閉じるとタイトルの曲が始まる) */
.op-notice-bg { animation: opFadeIn 0.25s ease-out both; }
.op-notice { width: min(380px, 100%); }
.op-notice .op-notice-h { font-weight: 800; font-size: 0.95rem; line-height: 1.5; text-align: center; overflow-wrap: anywhere; }
.op-notice .st-dlg-p { overflow-wrap: anywhere; }
.op-notice .op-notice-more { margin: 2px 0 0; text-align: center; }
.op-notice-link { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 16px; color: #ffe08a; font-weight: 700; text-decoration: none; border: 1px solid rgba(255, 224, 138, 0.55); border-radius: 12px; background: rgba(255, 224, 138, 0.08); }   /* 下線は使わない(このCSSの決まり)。枠で押せると分かるように */
.op-notice-link:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; border-radius: 8px; }
.op-notice .st-dlg-btns { padding-top: 4px; }
.op-notice .st-dlg-btns .hd-btn { min-height: 48px; }
html.hd-reduce .op-notice-bg { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .op-notice-bg { animation: none; } }

/* 上の帯 */
.st-topbar { flex: none; display: flex; align-items: stretch; gap: 8px; margin: 6px 0 0; padding: 4px 10px; border-radius: 14px; background: var(--st-glass); border: 1px solid var(--st-line); box-shadow: inset 0 1px 0 rgba(255,255,255,0.1); }
.st-tb-l { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 4px; }   /* 上の帯は低く(2026-10-30 オーナー: コンパクトに。情報はそのまま。文字は 12px 以上) */
.st-tb-l .st-hud { margin: 0; flex-wrap: nowrap; }
.st-tb-l .st-hud-i { flex: 1 1 auto; width: 100%; padding: 0; background: none; border: 0; font-size: 0.9rem; line-height: 1.1; }
.st-tb-l .st-hud-i small { font-size: 0.75rem; }
.st-tb-l .st-hud-i b { font-size: 1.05rem; }
.st-tb-l .st-lv-bar { flex: 1 1 auto; width: auto; height: 6px; border-radius: 3px; }
.st-topbar .st-stamina:not([hidden]) { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; margin: 0; padding: 0; background: none; border: 0; font-size: 0.75rem; }
.st-topbar .st-stamina .st-sta-t { line-height: 1.2; overflow-wrap: anywhere; }
.st-topbar .st-stamina .st-sta-bar { flex: none; width: 100%; height: 6px; min-width: 0; }
.st-topbar .st-stamina .hd-btn { display: none; }          /* スターミンは「持ち物」から使う(足りないときは出撃のときに案内) */
.st-tb-r { flex: none; display: flex; flex-direction: column; justify-content: center; align-items: stretch; gap: 3px; margin: 0; }
.st-tb-r .st-hud-i { min-width: 96px; justify-content: flex-end; padding: 1px 10px 1px 3px; font-size: 0.9rem; line-height: 1.1; }
.st-tb-r .st-item-ico { width: 18px; height: 18px; }
.st-tb-r .st-hud-i:not(:has(img)) { padding-left: 10px; }
.st-tb-r .st-hud-i small { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }   /* 名前は読み上げだけ(絵で分かる) */
.st-tb-r .st-hud-i b { margin-left: auto; font-size: 1rem; line-height: 1.1; }

/* 真ん中: リーダー(大)・あとの2体(小)・右のふちの縦のアイコン */
.st-hero { position: relative; flex: 1 1 0; min-height: 120px; container-type: size; }
.st-lb-party { --lead-h: 34vh; position: absolute; inset: 0; margin: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; }
@supports (height: 1cqh) {
  .st-lb-party { --lead-h: max(110px, min(calc(100cqh - 34px), 100cqw)); }   /* 正面のカードの高さ = 真ん中の高さ(HPの行の分を引く)・幅いっぱいを超えない */
}
.st-lb-party .st-car { flex: none; width: 100%; }
/* 後ろのカードは余白(ページの左右の詰め物)で切らず、ページの端まで出す。切るのはページの端(スマホ = 画面の端、PC = 中央の列の端) */
.st-lb-party .st-car-ring { overflow-x: visible; }
body.st-in-lobby .hd-page { overflow-x: clip; }
.st-lb-party .st-car-ring { height: calc(var(--lead-h) + 8px); padding: 4px 0; isolation: isolate; }   /* isolate: カードの z-index が右のアイコンより上に出ない */
.st-lb-party .st-car-i { aspect-ratio: auto; width: calc(var(--lead-h) * 0.6); height: var(--lead-h); }
/* 横のカードにも、枠のアイコン・★・名前・Lv を出す(カードごと小さくなる。正面になったときに急に出る・大きさが変わることがないように。2026-10-24)。★の大きさは .st-stars の整数の px のまま */
.st-lb-party .st-car-i .nm { font-size: 0.95rem; }
.st-lbc .ttl { font-size: 0.75rem; font-weight: 700; line-height: 1.2; color: #ffe2a0; text-shadow: 0 1px 3px #000; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-lb-party .st-car-i .ttl { font-size: 0.78rem; }
/* 肩書は正面だけ。display ではなく透明度で出し入れ(0.2秒)。行の高さは残るので、名前の位置は動かない */
.st-lb-party .st-car-i .ttl { transition: opacity 0.2s ease; }
.st-lb-party .st-car-i:not(.front) .ttl { opacity: 0; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-lb-party .st-car-i .ttl { transition: none; } }
html.hd-reduce .st-lb-party .st-car-i .ttl { transition: none; }
.st-lb-hp { flex: none; grid-column: auto; margin: 0; font-size: 0.75rem; line-height: 1.2; }
.st-lb-hp b { font-size: 0.85rem; }
.st-lb-none { position: relative; max-width: 80%; }
.st-lb-side { position: absolute; right: 0; top: 6px; z-index: 5; display: flex; flex-direction: column; gap: 8px; }
.st-lb-sideL { right: auto; left: 0; }   /* 左のふち(ランキング。右の列の鏡。2026-11-03) */
.st-ib { position: relative; display: inline-flex; flex-direction: column; align-items: center; gap: 2px; min-width: 44px; min-height: 44px; padding: 0; font: inherit; color: #eef1ff; cursor: pointer; background: none; border: 0; touch-action: manipulation; }
/* 丸 = 紺の地 + 金の縁(ミッション/コレクションのプレートと同じ作り)。中のアイコンは金の塗り(docs/specs/stella-icons.md) */
.st-ib-c { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; border: 2px solid transparent; background: radial-gradient(circle at 50% 30%, #2b3586 0, #121749 62%, #0a0d33 100%) padding-box, linear-gradient(#fff3b8, #dba43a 48%, #8a5a14) border-box; box-shadow: inset 0 1px 0 rgba(255,244,190,0.45), inset 0 -2px 0 rgba(0,0,0,0.35), 0 3px 8px rgba(0,0,0,0.5), 0 0 12px rgba(255,200,90,0.18); transition: transform 0.08s; }
.st-ib-c svg { width: 24px; height: 24px; filter: drop-shadow(0 1px 1px rgba(60,30,0,0.6)); }
.st-ib-t { max-width: 66px; letter-spacing: 0; font-size: 0.75rem; font-weight: 800; line-height: 1.2; white-space: nowrap; color: #ffe9a8; text-shadow: 0 1px 2px rgba(0,0,0,0.95), 0 0 6px rgba(0,0,0,0.8); }
.st-ib:hover .st-ib-c { filter: brightness(1.18); }
.st-ib:active .st-ib-c { transform: translateY(1px) scale(0.96); }
.st-ib:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; border-radius: 12px; }
.st-ib[hidden] { display: none; }
.st-ib .st-gift-badge { top: -5px; right: -5px; }
.st-cal-btn { color: #ffe08a; }
.st-lb-pop { position: absolute; right: 54px; top: 6px; z-index: 6; min-width: 196px; max-width: calc(100% - 64px); padding: 6px; border-radius: 14px; background: rgba(12,15,52,0.97); border: 1px solid rgba(190,205,255,0.5); box-shadow: 0 8px 26px rgba(0,0,0,0.55); }
.st-lb-pop[hidden] { display: none; }
.st-pop-i { display: flex; align-items: center; width: 100%; min-height: 44px; padding: 0 12px; font: inherit; font-size: 0.88rem; font-weight: 700; color: #eef1ff; text-align: left; text-decoration: none; cursor: pointer; background: none; border: 0; border-radius: 10px; }
.st-pop-i:hover { background: rgba(120,140,255,0.2); }
.st-pop-i:focus-visible { outline: 3px solid #ffd166; outline-offset: -3px; }
.st-pop-acct { margin-top: 4px; padding-top: 4px; border-top: 1px solid var(--st-line); }
.st-pop-acct:empty { display: none; }
.st-pop-name { padding: 4px 12px; font-size: 0.75rem; color: #aab4e6; overflow-wrap: anywhere; }

/* 出撃の段: 真ん中に六角形の出撃・左 ミッション・右 図鑑 */
.st-actions { flex: none; display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: end; gap: 8px; padding: 12px 0 4px; }
.st-actions .st-menu-btn { width: 100%; max-width: 108px; min-height: 64px; }
.st-actions #stMenuMission { justify-self: start; }
.st-actions .st-sortie { width: clamp(108px, 33vw, 128px); aspect-ratio: 627 / 720; min-height: 0; margin: 0; padding: 4px; border-radius: 0; gap: 0; }   /* 六角形の絵(尖った頂点が上下)の縦横比に合わせる */
.st-actions .st-sortie .t { font-size: 1.7rem; letter-spacing: 0.08em; padding-left: 0.08em; }
.st-actions .st-sortie small { display: none; }
.st-actions .st-sortie-chip { top: auto; bottom: 2px; right: auto; left: 50%; transform: translateX(-50%); white-space: nowrap; }

/* いちばん下のタブ */
/* 下のタブ: 戦闘のほかの全画面で、画面の下に固定(JS が起動時に body の直下へ移す)。戦闘・ガチャの演出・ダイアログ・全画面の表示のあいだは隠す */
.st-tabbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 5; width: 100%; max-width: 760px; margin: 0 auto; box-sizing: border-box; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2px; padding: 4px 6px calc(4px + env(safe-area-inset-bottom, 0px)); background: rgba(8,10,40,0.98); border-top: 1px solid var(--st-line); }
.st-tabbar[hidden] { display: none; }
body.st-in-lobby .st-tabbar { max-width: 480px; }
/* 画面の上の広告(スマホだけ。site-ads.js・docs/specs/site-ads-imobile.md)。セーフエリア(上)+ 320x50 の広告(ぴったり。上に空きの帯は作らない)+ 細い下線(box-shadow なので高さに入らない)。
   「広告」などの文字は出さない。下のメニューのすぐ隣には置かない(誤クリックを招くため)。メニューは元どおり bottom:0。
   広告の高さ分だけ、画面の中身を下げる(--st-adt。ない = 0 = 今までどおり)。--st-adt は html.ad-sp(site-ads.js が付ける)と、下のメニューが出る画面(body.st-has-tb)のときだけ。戦闘・読み込めなかったときは付かない。
   ダイアログ・シートの間は広告だけ隠れ、--st-adt は残す(幕の裏で中身が上下に動かない。下のメニューの --st-tb も同じ) */
html.ad-sp { --st-adh: 50px; }
html.ad-sp body.st-has-tb { --st-adt: calc(var(--st-adh) + env(safe-area-inset-top, 0px)); }
/* 広告の出し入れは site-ads.js が付ける html.ad-sp に頼る(:where = 詳しさを増やさない。下の「隠す」ルールのほうが後ろで勝つ)。読めなかったときは何も出ない。
   z-index は 6: それより上の全画面の幕・ダイアログ・シート・お知らせ(7 以上)が広告の上に重なり、広告を押せなくする */
:where(html.ad-sp) body.st-has-tb .st-adbar { display: flex; }
/* 戦闘(スマホ)も上の広告を出す(2026-10-30 オーナー: 全体を少し詰めれば出したままにできる)。盤・パーティー・ボタンの大きさは変えず、広告の分(50px + 8px)は敵の絵の帯から取る。
   帯が最小(hexdrop.js EFX_MIN)でも盤が幅いっぱいの大きさで入る高さのときだけ、hexdrop.js layout が body.st-bt-ad を付ける(足りない短い画面では戦闘の間だけ出さない)。
   ここは下の「戦闘では隠す」より詳しいので勝つ。ダイアログ・シートの間に隠すルール(同じ詳しさ・後ろ)には負ける = 幕の間は広告だけ隠れ、中身の位置はそのまま */
:where(html.ad-sp) body.st-in-battle.st-bt-ad .st-adbar { display: flex; }
html.ad-sp body.st-in-battle.st-bt-ad .hd-page { padding-top: calc(var(--st-adh) + env(safe-area-inset-top, 0px) + 8px); }
body .st-adbar { z-index: 6; top: 0; bottom: auto; padding: env(safe-area-inset-top, 0px) 0 0; min-height: calc(var(--ad-h, 50px) + env(safe-area-inset-top, 0px)); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1); }   /* 下の線(枠線にしない = 高さがセーフエリア+広告ちょうど) */
body.st-opening .st-adbar { display: none; }   /* タイトル画面(オープニング)の間は出さない = 見えない裏で広告を読まない */
body.st-in-lobby .st-adbar { max-width: 480px; }
body.st-in-battle :is(.st-tabbar, .st-adbar),
body:has(.st-sheet-bg:not([hidden]), .st-dlg-bg:not([hidden]), .st-rv:not([hidden]), .st-claim:not([hidden]), .st-rw:not([hidden]), .st-lvfx, .st-vw:not([hidden]), .hd-settings:not([hidden])) :is(.st-tabbar, .st-adbar) { display: none; }
/* タブの分の余白(隠れないように): ロビーは下を空ける・ほかの画面は一番下に足す。売るバーなど下に張り付くものは、タブの上に積む */
body.st-has-tb { --st-tb: calc(61px + env(safe-area-inset-bottom, 0px)); }
/* 上の広告の分、画面の中身を下げる: ロビーは上の余白(ステータスの帯と 8px 以上あける)・ほかの画面は .hd-page の上の余白・全画面の地図は上の端 */
html.ad-sp body.st-has-tb .st-lobby:not([hidden]) { padding-top: calc(var(--st-adt) + 4px); }
html.ad-sp body.st-has-tb:not(.st-in-lobby) .hd-page { padding-top: calc(var(--st-adt) + 8px); }
html.ad-sp body.st-has-tb .st-tree.st-tr-full { top: var(--st-adt); }
html.ad-sp body.st-has-tb .st-tr-strip { top: 8px; }
body.st-has-tb .st-lobby:not([hidden]) { padding-bottom: var(--st-tb); }
body.st-has-tb:not(.st-in-lobby) .hd-page { padding-bottom: calc(var(--st-tb) + 24px); }
body.st-has-tb .st-sellbar { bottom: var(--st-tb); padding-bottom: 8px; }
body.st-has-tb.st-selling .st-page { padding-bottom: calc(var(--st-tb) + 130px); }
body.st-has-tb .st-toast { bottom: calc(var(--st-tb) + 10px); }
body.st-has-tb.st-selling .st-toast { bottom: calc(var(--st-tb) + 150px); }
.st-tbb { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; min-height: 52px; padding: 2px 0; font: inherit; font-size: 0.75rem; font-weight: 800; color: #aab4e6; cursor: pointer; border-radius: 12px; background: none; border: 1px solid transparent; touch-action: manipulation; }
/* アイコンは手描きの金グラデーションの塗りSVG(docs/specs/stella-icons.md)。選択中 = 明るい金+やわらかい光、非選択 = 彩度と明るさを落とした金 */
.st-tbb .ic { display: inline-flex; font-size: 1.2rem; line-height: 1; color: #8f9bd6; }
.st-tbb .ic svg { width: 24px; height: 24px; opacity: 0.58; filter: saturate(0.45) brightness(0.9); }
.st-tbb:hover { color: #fff; }
.st-tbb:focus-visible { outline: 3px solid #ffd166; outline-offset: -2px; }
.st-tbb.on { color: #ffe08a; text-shadow: 0 0 8px rgba(255,214,120,0.55); background: linear-gradient(rgba(91,123,255,0.34), rgba(65,89,214,0.2)); border-color: rgba(190,205,255,0.55); box-shadow: 0 0 12px rgba(100,130,255,0.35); }
.st-tbb.on .ic { color: #ffe08a; }
.st-tbb.on .ic svg { opacity: 1; filter: drop-shadow(0 0 5px rgba(255,214,120,0.75)); }
.st-tbb[hidden] { display: none; }

/* 低い画面(小さな電話・横向き): 出撃・タブ・上の帯を少しずつ小さく。絵(.st-hero)がいちばん先に縮むので、ページは伸びない */
@media (max-height: 700px) {
  .st-topbar { margin-top: 4px; padding: 4px 8px; }
  .st-tb-l { gap: 3px; }
  .st-actions { padding: 10px 0 2px; }
  .st-actions .st-sortie { width: clamp(92px, 27vw, 108px); }
  .st-actions .st-sortie .t { font-size: 1.4rem; }
  .st-actions .st-menu-btn { min-height: 56px; }
  .st-tbb { min-height: 48px; }
  body.st-has-tb { --st-tb: calc(57px + env(safe-area-inset-bottom, 0px)); }
  .st-tbb .ic { font-size: 1.05rem; }
  .st-tbb .ic svg { width: 21px; height: 21px; }
}
@media (max-height: 560px) {
  .st-lb-side { gap: 4px; }
  .st-tbb { min-height: 44px; }
  body.st-has-tb { --st-tb: calc(53px + env(safe-area-inset-bottom, 0px)); }
  .st-tbb .ic { display: none; }
}

/* ---- 戦闘は1画面に収める(スクロールなし): サイトのヘッダーを隠し、余白を詰める。盤・敵の絵の大きさは hexdrop.js layout() が見えている高さから決める ---- */
body.st-in-battle .hd-page { padding-top: max(4px, env(safe-area-inset-top, 0px)); padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px)); }
body.st-in-battle .st-bhead { margin-bottom: 0; flex-wrap: nowrap; }
body.st-in-battle .st-bhead .hd-title { flex: 1 1 auto; }
body.st-in-battle .st-stage.hd-stage { gap: 4px; }
body.st-in-battle .st-e-buffs { max-height: 44px; overflow: hidden; padding: 4px; margin: -4px; }   /* padding = 毒のアイコンが弾んで少し大きくなっても切れない余白(位置は margin で打ち消す) */   /* 状態アイコンが多くても、下の盤を押し下げない(絶対配置のうえ高さを制限) */
@media (max-height: 700px) {
  body.st-in-battle .st-e-foot { padding-top: 0; }
  #stBelow { gap: 4px; }
}

/* ============================ 2026-10-08: ロック・検索・プリセット・ボックスの拡張 ============================ */
.st-ut .st-lk { position: absolute; right: 2px; bottom: 30px; font-size: 0.75rem; line-height: 1; padding: 1px 2px; border-radius: 4px; background: rgba(0,0,24,0.75); pointer-events: none; }
.st-search { display: flex; flex-direction: column; gap: 4px; margin: 4px 0; min-width: 0; }
.st-search-in { width: 100%; box-sizing: border-box; min-width: 0; padding: 6px 8px; border-radius: 8px; border: 1px solid rgba(160,180,255,0.4); background: rgba(0,0,24,0.6); color: #fff; font-size: 0.85rem; }
.st-search-row { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-width: 0; }
.st-search-g { flex-wrap: wrap; }
.st-bxe-c { justify-content: center; margin: 8px 0; }

/* ============================ 2026-10-08: 攻撃の予告・全消し(RULES_VERSION 14) ============================ */
.st-cd:focus-visible { outline: 2px solid #ffd166; outline-offset: 2px; }
.st-cd.soon { background: rgba(120,60,0,0.55); }
.st-cd.soon b { color: #ffd08a; }
.st-cd.soon .st-cd-ring .fg { stroke: #ffb04a; }
.st-cd-tip { position: absolute; z-index: 20; pointer-events: auto; width: max-content; max-width: min(260px, calc(100vw - 32px)); padding: 6px 8px; border-radius: 8px; background: rgba(8,10,40,0.96); border: 1px solid rgba(160,180,255,0.5); box-shadow: 0 4px 14px rgba(0,0,0,0.6); text-align: left; font-size: 0.75rem; line-height: 1.4; color: #e8ecff; cursor: default; }
.st-cdt-h { display: block; margin-bottom: 2px; color: #ffe9a6; }
.st-cdt-l { margin: 0; padding: 0; list-style: none; }   /* 行頭は、効果のアイコン(バッジの丸と同じ) */
.st-cdt-l li { display: flex; align-items: center; gap: 6px; margin: 2px 0; }
.st-cdt-l .st-cd-ic { width: 16px; height: 16px; flex: none; }
.st-cdt-l .st-cdt-est { color: #ffb3c0; font-weight: 700; }
#boardWrap.st-edge-warn { box-shadow: inset 0 0 0 2px rgba(255,80,100,0.55), 0 0 14px rgba(255,60,90,0.45); border-radius: 10px; }
#boardWrap.st-allclear { box-shadow: 0 0 0 3px rgba(255,240,170,0.9), 0 0 32px rgba(255,230,140,0.85); border-radius: 10px; animation: stAllClear 1.1s ease-out; }
@keyframes stAllClear { 0% { box-shadow: 0 0 0 0 rgba(255,240,170,0), 0 0 0 rgba(255,230,140,0); } 25% { box-shadow: 0 0 0 4px rgba(255,240,170,1), 0 0 44px rgba(255,230,140,1); } 100% { box-shadow: 0 0 0 0 rgba(255,240,170,0), 0 0 0 rgba(255,230,140,0); } }
html.hd-reduce #boardWrap.st-allclear { animation: none; }

/* ============================ 2026-10-12 UI 点検 第1弾(見た目・配置はそのまま。押した感触・押しやすさ・読みやすさ・主ボタンの色) ============================ */
/* (1) 押した感触: 押している間だけ少し縮めて暗くする(約80ms)。押せないボタン・transform で位置や動きを決めているもの(詳細ボタン・カルーセル・ガチャのカード)は縮めず、暗くするだけ。
 *     動きを減らす設定では縮めない(--st-press: 1) */
html { --st-press: 0.96; }
html.hd-reduce { --st-press: 1; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) { --st-press: 1; } }
button:not(:disabled):not([aria-disabled="true"]):not(.st-detail):not(.st-grow):not(.st-car-i):not(.hd-pad):not(.site-header *):not(.st-lb-party *):active {
  transform: scale(var(--st-press)); filter: brightness(0.88); transition: transform 80ms ease-out, filter 80ms ease-out;
}
button.st-detail:not(:disabled):active, button.st-grow:not(:disabled):active, button.st-car-i:active { filter: brightness(0.88); }

/* (9) 主ボタンは金の板に統一(2026-10-24: オレンジから変更。下の UI v2 ボタンの段階)。青は「選んでいる」状態(タブ・絞り込みのチップ)だけ。コンティニュー(紫)は別の意味なのでそのまま。
 *     ★5確定ガチャ(チケット)は持っているときだけ出て、そのとき 10連 は副になる(ふつうの主ボタンの金の板と同じ。専用の金の色は無し) */

/* ============================ UI v2 ボタンの段階(W2) ============================
   主(.primary): 1画面・1ダイアログに最大1つ。金の板(縦のグラデーション + 下の2px影)、押すと1px沈んで少し暗く、キーボードの輪は白(金の上では金の輪が消える)
   副(.secondary): 濃紺 + 金の細い縁 / 3番目(.tertiary): 枠なしの文字 / 危険(.danger): 赤の縁
   .ghost は副の別名(旧クラス)、.st-back(もどる・ロビーへ)は3番目として描く */
.hd-btn { border-radius: var(--st-r-l); }
.hd-btn.small { border-radius: var(--st-r-s); }
.hd-btn.primary, .st-rv-btns:has(#stRvAgain[hidden]) #stRvBack {
  color: var(--st-plate-text); font-weight: 800; letter-spacing: 0.06em; text-shadow: 0 1px 0 rgba(255,250,220,0.5);
  background: var(--st-plate);
  border: 1px solid var(--st-plate-edge);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.75), inset 0 -2px 0 rgba(120,70,10,0.35), 0 2px 0 var(--st-plate-base), 0 4px 12px rgba(0,0,0,0.45), 0 0 14px rgba(255,210,100,0.22);
}
.hd-btn.primary:not(:disabled):not([aria-disabled="true"]):active, .st-rv-btns:has(#stRvAgain[hidden]) #stRvBack:active {
  transform: translateY(1px) !important; background: var(--st-plate-down);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.5), inset 0 -2px 0 rgba(120,70,10,0.35), 0 1px 0 var(--st-plate-base), 0 2px 8px rgba(0,0,0,0.45);
}
.hd-btn.primary:focus-visible, .st-rv-btns:has(#stRvAgain[hidden]) #stRvBack:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
/* 副ボタンの形(2026-10-24): ロビーの横ボタン・ミッションと同じ「濃紺 + 金の縁」。位置・大きさ・形は各ボタンのまま、色と縁だけをここで決める。
   使う: 副(.secondary / .ghost)・詳細/育成(.st-dbtn)・提供割合(.st-gc-minibtn)・ページの矢印(.st-cf-arrow)・＋/最大(.st-step/.st-max)・ダイアログとシートの閉じる(.tertiary)。
   状態: 押す = 全ボタン共通の縮み(UI 点検 第1弾)/ 選んでいる(.on / aria-pressed) = 金の色づけ + 明るい縁 / 押せない = 下の B1(金にしない) / キーボード = 黄色の輪(各ボタン) */
.hd-btn.secondary, .hd-btn.ghost:not(.st-back):not(.st-mi):not(.st-menubtn), #stGacha:has(#stPullT:not([hidden])) #stPull10,
.st-dbtn, .st-gc-minibtn, .st-cf-arrow, .st-step, .st-max,
#stDlgBtns .hd-btn.tertiary, #stSheetClose, #settingsDone {
  color: var(--st-sub-text); font-weight: 700; text-shadow: 0 1px 2px rgba(0,0,0,0.8);
  border: var(--st-sub-bw) solid transparent; border-radius: var(--st-r-s);
  background: var(--st-sub-fill) padding-box, var(--st-sub-rim) border-box;
  box-shadow: var(--st-sub-shadow);
}
.st-dbtn:hover, .st-gc-minibtn:hover, .st-cf-arrow:hover, .st-step:hover, .st-max:hover { filter: brightness(1.18); }
.st-detail { --st-sub-bw: 1px; }   /* カードの上の小さな「詳細」の札は細い縁 */
.hd-btn.secondary.on, .hd-btn.secondary[aria-pressed="true"], .st-fsbtn.on {
  color: #fff; background: var(--st-sub-on-fill) padding-box, var(--st-sub-on-rim) border-box;
  box-shadow: inset 0 1px 0 rgba(255,244,190,0.5), inset 0 -3px 0 rgba(0,0,0,0.3), 0 3px 8px rgba(0,0,0,0.5), 0 0 14px rgba(255,214,120,0.5);
}
.hd-btn.tertiary, .hd-btn.st-back {
  color: #cdd5f7; font-weight: 700; background: none; border-color: transparent; box-shadow: none;
  text-decoration: none;
}
.hd-btn.tertiary:hover, .hd-btn.st-back:hover { filter: none; color: #fff; text-decoration-color: currentColor; }
.hd-btn.danger {
  color: var(--st-red-soft); font-weight: 700; text-shadow: none;
  background: linear-gradient(180deg, rgba(100,22,44,0.6), rgba(44,8,26,0.8));
  border: 1px solid var(--st-red);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06), 0 2px 6px rgba(0,0,30,0.45);
}
.hd-btn.secondary:disabled, .hd-btn.danger:disabled { box-shadow: none; }
.hd-btn.tertiary:disabled { text-decoration: none; }

/* ============================ UI v2 パネルの標準(W2) ============================
   角丸 12 / 16、大事なパネルの上辺に金の細い線、背景は濃いガラス + ぼかし(長い一覧のタイルにはぼかしを使わない) */
.st-stage-card, .st-dg-card, .st-gift, .st-lvp, .st-ms, .st-dex-sum, .st-claim-in, .st-dlg, .st-sheet, .st-upd, .st-lvfx .box { border-radius: var(--st-r-l); }
.st-slot, .st-it, .st-cal-d, .st-dg-lv, .st-dex-c, .st-stat { border-radius: var(--st-r-s); }
.st-stage-card, .st-dg-card, .st-gift, .st-lvp, .st-ms, .st-dex-sum, .st-claim-in, .st-dlg, .st-sheet, .st-upd { border-top: 1px solid var(--st-gold-line); }
.st-dg-card, .st-gift, .st-lvp, .st-ms, .st-dex-sum { -webkit-backdrop-filter: blur(var(--st-blur)); backdrop-filter: blur(var(--st-blur)); }
.st-dlg, .st-sheet, .st-claim-in, .st-upd {
  background: linear-gradient(rgba(18,22,76,0.92), rgba(5,7,30,0.95));
  -webkit-backdrop-filter: blur(var(--st-blur)); backdrop-filter: blur(var(--st-blur));
}
.st-dlg-title { font-size: 1.3rem; font-weight: 800; letter-spacing: 0.04em; }
.st-ms.all { background: var(--st-panel-bg); }
.st-ms.all .st-ms-name { color: var(--st-gold-soft); }

/* 緑・紫は使わない(緑 = HPだけ): クリア済み = 金のチェック帯、受け取り済み = 金 */
.st-stage-card.cleared, .st-dg-card.cleared { border-color: var(--st-line); border-top-color: var(--st-gold-line); }
.st-stage-card.cleared .st-sc-state, .st-dg-lv.cleared .st-dg-s { color: var(--st-gold); }
.st-sc-state { color: #dfe6ff; }
.st-dg-lv.cleared { box-shadow: inset 0 0 0 1px rgba(242,193,78,0.5); }
.st-pv-lv b.up, .st-pv-s b.up, .st-lvfx .lv b { color: var(--st-gold-soft); }
.st-rw-burst .lv { color: var(--st-gold-soft); text-shadow: 0 0 10px rgba(255,209,102,0.8); }

/* 画面の切り替え: 160ms の 8px のスライドだけ(戦闘の画面は盤面の測定があるので除く。動きを減らす設定では止める)。
   2026-10-23: 透明(opacity 0)からのフェードはやめた。切り替えの直後に重い描画(一覧のタイル・絵のデコード)が続くと、スマホでは透明に近いまま数百ms 止まり、
   「何も出ていない画面」が一瞬見えていたため(4倍の CPU 制限の計測: キャラの一覧・パーティーで 200〜330ms 空の画面)。中身は最初のフレームから見える */
@keyframes stScreenIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes stScreenSlide { from { transform: translateY(8px); } to { transform: none; } }
.st-screen:not(.st-battle):not([hidden]) { animation: stScreenSlide var(--st-screen-in) ease-out backwards; }
html.hd-reduce .st-screen { animation: none !important; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-screen { animation: none !important; } }
/* ============================ /UI v2 (W2) ============================ */

/* ============================ UI v3 (R4): 持ち物のタイル・ガチャ/ミッションの余白・設定パネル・パネルの背景 ============================ */
/* 持ち物: 3列のタイル(絵 + 個数 + 小さい名前)。個数0は薄くするだけ(押せないボタンは出さない)。選んだタイル = 金の枠。説明は、その行の下に横いっぱいで開く */
.st-items { display: block; }
.st-itg { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 6px; }
.st-itt { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 1px; min-height: 96px; min-width: 0; padding: 8px 4px 6px; font: inherit; color: #eef1ff; cursor: pointer; background: var(--st-glass); border: 1px solid var(--st-line); border-radius: var(--st-r-s); -webkit-tap-highlight-color: transparent; }
.st-itt .st-item-ico { width: 48px; height: 48px; flex: none; }
.st-itt .n { font-size: 1.05rem; line-height: 1.25; font-variant-numeric: tabular-nums; }
.st-itt .nm { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.75rem; line-height: 1.25; color: #b8c2f0; }
/* 0個: タイルごと半分の濃さ + 絵は白黒。持っている: 数は金で少し大きく */
.st-itt.zero { opacity: 0.5; }
.st-itt.zero.sel { opacity: 0.8; }
.st-itt.zero .st-item-ico { filter: grayscale(1); }
.st-itt.zero .nm { color: #8f98c8; }
.st-itt:hover { filter: brightness(1.12); }
.st-itt:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-itt.sel { border-color: var(--st-gold-line); box-shadow: inset 0 0 0 1px var(--st-gold-line), 0 0 12px rgba(217,180,90,0.3); }
.st-itd { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; background: var(--st-panel-bg); border: 1px solid var(--st-line); border-top-color: var(--st-gold-line); border-radius: var(--st-r-s); }
.st-itd-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.st-itd-top .nm { font-size: 0.95rem; color: #fff; }
.st-itd-top .n { font-size: 0.8rem; color: #ffe08a; font-variant-numeric: tabular-nums; white-space: nowrap; }
.st-itd-p { margin: 0; font-size: 0.8rem; line-height: 1.5; color: #c6cff3; }
.st-itd .st-it-use { align-self: flex-start; }
.st-itd { animation: stScreenIn 160ms ease-out backwards; }   /* 「演出を減らす」= オフなら、端末が減らす設定でも出す。減らすときは下の2行 */
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-itd { animation: none !important; } }
html.hd-reduce .st-itd { animation: none !important; }

/* 「★5確定まであと N 回」= 金の縁の小さな札 + 下に細い進みの棒(--p = 引いた回数 / 天井。JS が入れる)。動かさない(棒は値が変わるだけ) */
#stGacha .st-gc-pity { position: relative; display: flex; align-items: center; justify-content: center; box-sizing: border-box; width: fit-content; max-width: 100%; min-height: 36px; margin: 8px auto 4px; padding: 3px 18px 9px; font-size: 0.86rem; line-height: 1.2; border-radius: 999px; border: 1px solid var(--st-gold-line); background: rgba(8,11,44,0.88); box-shadow: inset 0 1px 0 rgba(255,244,190,0.22), 0 2px 6px rgba(0,0,0,0.4); }
#stGacha .st-gc-pity:not(.st-gc-fpbal)::after { content: ''; position: absolute; left: 16px; right: 16px; bottom: 5px; height: 3px; border-radius: 2px; background: linear-gradient(90deg, #ffd45e var(--p), rgba(255,255,255,0.16) var(--p)); }
#stGacha .st-gc-fpbal { padding-bottom: 3px; }

/* ミッション: 2列(左 = 名前 + 進みの棒と数 / 右 = 報酬 + 受け取り)で、1枚 約90px */
.st-ms-list { gap: 8px; }
.st-ms { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 4px 12px; padding: 8px 12px; }
.st-ms-l { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.st-ms-r { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.st-ms-name { font-size: 0.92rem; line-height: 1.3; }
.st-ms-f { gap: 8px; }
.st-ms-n { min-width: 0; white-space: nowrap; }
.st-ms .st-gift-it { padding: 1px 9px 1px 3px; }
.st-ms .st-gift-it .st-item-ico { width: 24px; height: 24px; }
.st-ms .st-gift-get { min-width: 92px; }
/* ミッションの状態の札: 「挑戦中」= 灰色 / 「受け取り済み」= 金のうす色。ボタンではない(span。縁なし・影なし・押せる見た目にしない) */
.st-ms-state { display: inline-block; padding: 3px 11px; border-radius: 999px; font-size: 0.75rem; font-weight: 700; line-height: 1.3; white-space: nowrap; color: #a9b3dc; background: rgba(255,255,255,0.07); }
.st-ms-state.claimed { color: rgba(255,224,138,0.82); background: rgba(255,214,120,0.08); }

/* 設定(ロビーから開く): 高さは中身に合わせる(長いときだけ中でスクロール) */
.hd-settings.hd-set-float { inset: 12px 12px auto 12px; bottom: auto; height: auto; max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); }

/* 高さが中身ぴったりなので、パネルの外(ロビー)は押せないように、薄い幕を敷く */
body:has(.hd-settings.hd-set-float:not([hidden]))::after { content: ''; position: fixed; inset: 0; z-index: 59; background: rgba(2,3,16,0.5); }
/* パネルの下の写真(星雲)を 15% 暗くする(持ち物・ミッション・コレクション・設定)。パネルは blur(16px) */
body:has(#stItems:not([hidden]), #stMission:not([hidden]), #stDex:not([hidden]), .hd-settings.hd-set-float:not([hidden])) #space::after { content: ''; position: absolute; inset: 0; z-index: 5; pointer-events: none; background: rgba(2,3,16,0.15); }
/* ============================ /UI v3 (R4) ============================ */

/* (3) 押せる範囲 44px 以上・間隔 10px 以上 */
.st-search-in { min-height: 44px; }
.st-search-row { gap: 10px 12px; }
.st-fchips { gap: 10px; }
.st-fchips.st-search-g { display: flex; flex-wrap: wrap; }
.st-search-g .st-fchip { min-width: 44px; padding: 2px 10px; }
#stBoxExpand { min-height: 44px; padding: 8px 14px; }
.st-dlg-btns { gap: 12px; }
.st-battle .hd-head-buttons .hd-btn.small { min-width: 44px; }
.st-menu { gap: 10px; }

/* (5) 対戦: 一時停止の画面(再開 / やり直し / ロビーへ)。壊す操作(やり直し・ロビーへ)を「再開」から離す。歯車のメニューが開いている間は、この画面は隠す(同時に出さない) */
.st-battle .hd-overlay > div { gap: 12px; }
.st-battle .hd-overlay #ovBtn { margin-bottom: 8px; }
.hd-overlay.st-menu-hide { visibility: hidden; }
#space { contain: paint; }                       /* 背景(bgA / bgB / bgpan)がはみ出して横スクロールの幅を広げないように */

/* (4) ガチャの結果(10連): キャラ名は出さない(アイコン・★・NEW/N体目だけ。名前は aria-label / title に残す。オーナー決定 2026-10-12)。1回引きは名前を大きく出したまま */
.st-rv-cards:not(.one) .st-rv-card .nm { display: none; }

/* (6) 押せない理由 */
.st-sc-unlock { font-size: 0.75rem; white-space: normal; max-width: 9em; margin-left: auto; line-height: 1.25; }
.st-dg-u { white-space: nowrap; font-size: 0.75rem; color: #aeb5d8; text-align: center; line-height: 1.2; }
.st-mat-t .own.none { color: #ffb4a0; }
.st-it-use:disabled { white-space: nowrap; }

/* (7) 写真の背景の上の薄い文字に、うすい座布団(読みやすさ)。パーティーHP・ガチャの上の注記 */
.st-lb-hp, #stGcSub, .st-gc-owned { background: rgba(6,8,36,0.5); border-radius: 10px; padding: 3px 10px; }
.st-lb-hp { color: #dbe2ff; }
#stGcSub:empty { background: none; padding: 0; }

/* (8) 飾りの動きは数回で止める(ずっと動き続けない)。戦闘の警告・必殺技の準備・出撃の光・待ちの合図は、そのまま */
.st-gift-btn.has .st-gift-i { animation-iteration-count: 3; }
.st-menu-btn.has .ic { animation-iteration-count: 3; }
.st-rv-summon.waiting .st-gth-prompt, .st-rv-summon:not(.holding):not(.full) .st-gth-prompt { animation-iteration-count: 3; }
.st-rv-summon.full .st-gth-core { animation-iteration-count: 4; }
.st-rv-spot .hint { animation-iteration-count: 3; }
.st-note { text-wrap: balance; }

/* ============================ 2026-10-31b: 属性の印 = オーブ画像・検索のリセット・プリセットの編集 ============================ */
.st-badge.st-orb { --orb: 20px; width: var(--orb); height: var(--orb); min-width: 0; padding: 0; background: none; border: 0; box-shadow: none; vertical-align: middle; }
html.st-cud .st-badge.st-orb { border: 0; box-shadow: none; }
.st-badge.st-orb img { display: block; width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 1px 2px rgba(0,0,0,0.6)); pointer-events: none; }
.st-rc .st-badge.st-orb { --orb: 18px; }
.st-ut .st-badge.el.st-orb { --orb: 18px; }
.st-ut .st-badge.st-orb { border-radius: 50%; box-shadow: 0 1px 2px rgba(0,0,0,0.6); }   /* 一覧のタイル: 属性の印の影は、画像の filter: drop-shadow(タイルごとに効果のレイヤーができて重い)ではなく、丸い枠の影で */
.st-ut .st-badge.st-orb img { filter: none; }
.st-lbc .st-badge.el.st-orb { --orb: 24px; }
.st-gring .st-badge.st-orb { --orb: 18px; }
.st-rt-ch .st-badge.st-orb { --orb: 18px; }
.st-sh-meta .st-badge.st-orb, .st-vw-meta .st-badge.st-orb { --orb: 22px; }
.st-sc-name .st-badge.st-orb { --orb: 18px; vertical-align: -3px; }

/* ---- 長い一覧(キャラ・パーティーの候補)は見えている行だけを描く(stella-stage.js の vgrid)。行の高さは最初のタイルで測って grid-auto-rows にそろえる ---- */
.st-ugrid.st-virt { align-content: start; }
.st-ugrid.st-virt > .st-ut { overflow: hidden; contain: layout paint style; }   /* タイルの中の変化が外のレイアウトに響かない(数千体の一覧のスクロール) */
/* タイルを使い回す一覧(キャラ): 並べるのは JS(position: absolute + transform)。一覧の高さは style.height、タイルの幅・高さも JS が測った値を入れる。流れていった行のタイルを新しい行へ回すので、DOM の追加・削除が無い */
.st-ugrid.st-pool { position: relative; }
.st-ugrid.st-pool > .st-ut { position: absolute; left: 0; top: 0; margin: 0; overflow: visible; contain: layout style; }   /* タイルごとの clip(overflow: hidden / contain: paint)は、数十タイルぶんのレイヤー・プロパティツリーの組み直しが重かった。中身は枠からはみ出さない(名前は省略記号) */

/* ============================ UI v2 (W5): 一覧とレイアウト ============================ */
/* ---- ステージ選択: 章の見出し(進みのバー)・クリア済みの低いカード・金のチェックのリボン ---- */
.st-chapter { flex-wrap: wrap; align-items: center; margin: 16px 0 8px; }
.st-chapter h2 { font-family: var(--st-font-head); font-size: 1.3rem; font-weight: 800; letter-spacing: 0.04em; line-height: 1.25; }
.st-chapter .st-ch-n { font-size: 0.78rem; font-weight: 700; color: #cdd5f5; white-space: nowrap; font-variant-numeric: tabular-nums; }
.st-chapter.full .st-ch-n { color: #ffe08a; }
.st-ch-bar { flex: 1 0 100%; height: 6px; border-radius: 999px; overflow: hidden; background: rgba(8,10,40,0.8); border: 1px solid var(--st-line); }
.st-ch-bar > i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #b88a2e, #ffe08a); transition: width 0.4s ease-out; }
html.hd-reduce .st-ch-bar > i { transition: none; }
.st-sc-state { color: #ffe08a; }
.st-stage-card.cleared { border-color: var(--st-line); padding-top: 5px; padding-bottom: 5px; grid-template-columns: 44px minmax(0, 1fr) auto; gap: 8px; align-items: center; }
.st-stage-card.cleared .st-ico { width: 44px; height: 44px; }
.st-stage-card.cleared .st-sc-name { font-size: 0.95rem; }
.st-stage-card.cleared .st-sc-rw { margin-top: 3px; }
.st-sc-rw.one .st-rwl { flex-wrap: nowrap; overflow: hidden; }
.st-stage-card > .st-sc-rw { grid-column: 1 / -1; margin-top: 0; }   /* まだのステージの報酬: 下いっぱいに、1行ずつ(初回・周回) */
.st-stage-card > .st-sc-rw .st-rwl { flex-wrap: nowrap; overflow: hidden; }
.st-sc-ribbon { position: absolute; top: -1px; right: 10px; display: inline-flex; align-items: center; gap: 4px; padding: 1px 8px 3px; font-size: 0.75rem; font-weight: 800; line-height: 1.3; color: #3a2400; background: linear-gradient(#ffe08a, #d9b45a); border-radius: 0 0 8px 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.4); pointer-events: none; }
.st-stage-card.cleared .st-sc-state { align-self: end; padding-top: 18px; }
.st-stage-card.cleared .st-sc-state small { color: #cdd5f5; }
.st-dg-card.cleared { border-color: var(--st-line); border-top: 1px solid var(--st-gold-line, #d9b45a); }
.st-dg-lv.cleared { box-shadow: inset 0 0 0 1px rgba(217,180,90,0.5); }
.st-dg-lv.cleared .st-dg-s { color: #ffe08a; }

/* ---- コレクション: 報酬トラック(進みのバーに節目の印。受け取れる印だけが光る) ---- */
.st-trk { position: relative; height: 64px; margin: 6px 26px 0; }
.st-trk-bar { position: absolute; left: 0; right: 0; top: 15px; height: 8px; border-radius: 999px; overflow: hidden; background: rgba(8,10,40,0.85); border: 1px solid var(--st-line); }
.st-trk-bar > i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: inherit; background: linear-gradient(90deg, #b88a2e, #ffe08a); transition: width 0.5s ease-out; }
html.hd-reduce .st-trk-bar > i { transition: none; }
.st-trk-n { position: absolute; top: 0; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 44px; min-height: 44px; padding: 0; font: inherit; color: #cdd5f5; background: none; border: 0; }
button.st-trk-n { cursor: pointer; }
button.st-trk-n:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; border-radius: 12px; }
.st-trk-n .dot { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%; font-size: 0.75rem; font-weight: 800; line-height: 1; background: #0e1240; border: 2px solid rgba(150,170,255,0.5); }
.st-trk-n .lb { font-size: 0.75rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.st-trk-n.got { color: #cdb27a; }
.st-trk-n.got .dot { color: #3a2400; background: #b8964a; border-color: #8a6a24; }
.st-trk-n.todo .dot { border-style: dashed; }
.st-trk-n.can { color: #ffe08a; }
.st-trk-n.can .dot { background: linear-gradient(#ffe08a, #e0a43a); border-color: #fff3c4; box-shadow: 0 0 0 3px rgba(255,214,120,0.28), 0 0 14px rgba(255,200,90,0.8); animation: stTrkGlow 1.6s ease-in-out infinite; }
.st-trk-n.can .dot::after { content: ''; width: 10px; height: 10px; background: #5a3a00; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.st-trk-n.can:disabled { opacity: 0.6; }
@keyframes stTrkGlow { 0%, 100% { box-shadow: 0 0 0 3px rgba(255,214,120,0.2), 0 0 8px rgba(255,200,90,0.5); } 50% { box-shadow: 0 0 0 5px rgba(255,214,120,0.34), 0 0 18px rgba(255,200,90,0.95); } }
html.hd-reduce .st-trk-n.can .dot { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-trk-n.can .dot { animation: none; } }
.st-dex-all { align-self: stretch; width: auto; }
.st-dex-bar { height: 6px; }

/* ---- パーティーのプリセット: 5つのチップを横一列(空は点線)。「編集」で 保存・リセット ---- */

/* ---- 持ち物: 行は 絵・名前・個数 だけ。説明は行をタップすると開く ---- */
.st-it { grid-template-columns: minmax(0, 1fr) auto; row-gap: 0; padding: 0 10px 0 0; }
.st-it-tg { display: grid; grid-template-columns: 44px minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 54px; padding: 5px 4px 5px 6px; text-align: left; font: inherit; color: inherit; background: none; border: 0; border-radius: 12px; }
button.st-it-tg { cursor: pointer; }
button.st-it-tg:focus-visible { outline: 3px solid #ffd166; outline-offset: -2px; }
.st-it-chev { width: 8px; height: 8px; margin-right: 6px; border-right: 2px solid #9aa6d8; border-bottom: 2px solid #9aa6d8; transform: rotate(45deg); transition: transform 0.16s ease-out; }
.st-it.open .st-it-chev { transform: rotate(-135deg); }
html.hd-reduce .st-it-chev { transition: none; }
.st-it-ds { grid-column: 1 / -1; margin: 0; padding: 0 4px 8px 60px; font-size: 0.78rem; line-height: 1.45; color: #b8c2f0; }
.st-it-ds[hidden] { display: none; }
.st-it .st-it-r { flex-direction: row; align-items: center; gap: 10px; }

/* ---- キャラ一覧: 同じキャラは1枚にまとめて ×N ---- */
.st-ut .st-dupn { position: absolute; right: 3px; bottom: 38px; z-index: 3; box-sizing: border-box; min-width: 22px; height: 22px; padding: 0 4px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; font-size: 0.75rem; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; color: #3a2400; background: linear-gradient(#ffe08a, #d9b45a); border: 1px solid #fff3c4; box-shadow: 0 1px 3px rgba(0,0,0,0.6); pointer-events: none; }   /* UI v3: 22px の丸(右下 = アイコンの角)。属性バッジ(左上)とは別 */

/* ============================ 2026-10-12 UI第2弾 A: 「絞り込み」シート(キャラ一覧・コレクション)とキャラ詳細(立ち絵が主役) ============================ */
/* 上の1行: ならびかえ + 「絞り込み」 + (売る / ボックス拡張)。高さは44px */
.st-boxbar { display: flex; align-items: flex-start; gap: 6px; margin: 4px 0 8px; }
.st-boxbar .st-tools { flex: 1 1 auto; min-width: 0; margin: 0; }
.st-boxbar #stBoxExpand { flex: none; min-height: 44px; min-width: 52px; padding: 6px 10px; white-space: nowrap; }
.st-lbar { flex-wrap: wrap; justify-content: flex-start; gap: 6px; margin-bottom: 0; }
.st-fsbtn, .st-lbar .st-sellmode { min-height: 44px; padding: 6px 12px; white-space: nowrap; font-size: 0.85rem; }
.st-lbar-info { font-size: 0.8rem; color: #cfd8ff; margin-left: 2px; }
/* 並べ替えのシート(2026-10-15): 向きは2つの切りかえ(横いっぱいに半分ずつ)、並べ方のチップは下。下の「リセット」「この条件で表示」は出さない */
.st-fs.sortmode .st-fs-foot { display: none; }
.st-fs-body .st-fchips.st-sortdir { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
/* タイルの Lv の場所に攻撃・HP・必殺の値を出すとき(「HP 12,345」): 長くなるので少し小さく、タイルの幅からはみ出さない */
.st-ut .lv.stat { font-size: 0.68rem; letter-spacing: -0.02em; overflow: hidden; text-overflow: clip; max-width: 100%; }
/* 下から出るシート */
/* 絞り込み・並べ替えのシート(.st-fs-bg)が開いている間は、広告も隠す(シートの下のボタンに広告を重ねない) */
body:has(.st-fs-bg:not([hidden])) .st-adbar { display: none; }
.st-fs-bg { position: fixed; inset: 0; z-index: 10; display: flex; align-items: flex-end; justify-content: center; background: rgba(2,3,18,0.7); }
.st-fs-bg[hidden] { display: none; }
.st-fs {
  display: flex; flex-direction: column; width: min(560px, 100%); max-height: min(86vh, 86dvh); overflow: hidden; color: #f0f0f5;
  background: linear-gradient(rgba(24,28,84,0.99), rgba(8,10,40,0.99)); border: 1px solid rgba(170,190,255,0.5); border-bottom: 0; border-radius: 18px 18px 0 0;
  box-shadow: 0 -8px 30px rgba(0,0,0,0.6), 0 0 20px rgba(90,100,255,0.25); padding-bottom: env(safe-area-inset-bottom, 0px);
}
.st-fs:focus { outline: none; }
.st-fs.in { animation: stFsUp 0.22s ease-out; }
@keyframes stFsUp { from { transform: translateY(40px); opacity: 0.4; } to { transform: none; opacity: 1; } }
.st-fs-head { display: flex; align-items: center; gap: 10px; padding: 10px 8px 6px 16px; }
.st-fs-title { margin: 0; font-size: 1.05rem; font-family: var(--st-font-head); text-shadow: 0 0 12px rgba(120,140,255,0.5); }
.st-fs-info { flex: 1; font-size: 0.8rem; color: #cfd8ff; font-variant-numeric: tabular-nums; }
.st-fs-x { flex: none; width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(170,190,255,0.5); background: rgba(10,14,60,0.85); color: #fff; font-size: 1.1rem; line-height: 1; cursor: pointer; }
.st-fs-x:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-fs-body { overflow-y: auto; padding: 4px 16px 8px; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
.st-fs-sec { margin: 0 0 12px; }
.st-fs-lab { margin: 0 0 4px; font-size: 0.8rem; font-weight: 800; color: #cfd8ff; }
.st-fs-body .st-search { margin: 0; gap: 0; }
.st-fs-body .st-fchips.st-search-g { gap: 8px; }
.st-fs-body .st-sel { width: 100%; }
.st-fs-foot { display: flex; gap: 12px; padding: 8px 16px 14px; }
.st-fs-btn { flex: 1 1 0; min-height: 48px; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-fs.in { animation: none; } }
html.hd-reduce .st-fs.in { animation: none; }

/* キャラ詳細: 立ち絵が主役。スマホで画面の幅の約1/3、PCでは大きく。下に素材の欄は「レベルアップ」ボタンでたたむ */
#stUnitBody .st-ud-stats { margin-top: 10px; }
#stUnitBody .st-ud-stats .st-stat b { font-size: 1rem; }
#stUnitBody .st-ud-stats .st-stat b.long { font-size: 0.9rem; }
.st-lvtoggle { display: block; width: 100%; min-height: 48px; margin-top: 10px; font-size: 1rem; }
.st-lvtoggle[aria-expanded="true"] { filter: saturate(0.85); }
.st-lvp[hidden] { display: none; }

/* ---- 出撃・ガチャのトップの背景絵(宇宙の背景 #space の上に重ねる。上から少し暗くして文字を読みやすく) ---- */
body.st-bg-select #space::after, body.st-bg-gacha #space::after { content: ''; position: absolute; inset: 0; z-index: 5; pointer-events: none; background: linear-gradient(rgba(6,8,30,0.28), rgba(6,8,30,0.5)), var(--st-bg-img) center / cover no-repeat #060826; }
body.st-bg-select { --st-bg-img: var(--st-u-select, url('stella-chars/bg/select.webp')); }
body.st-bg-gacha { --st-bg-img: var(--st-u-gacha-top, url('stella-chars/bg/gacha-top.webp')); }

/* ---- 出撃ボタン: オーナー提供の六角形の宝石(stella-ui/sortie-hex-*.webp、緑背景を抜き、正六角形の比率に縦を補正したもの)。ラベルは宝石の上に重ねる ---- */
.st-actions .st-sortie {
  background: var(--st-u-sortie-240, url('stella-ui/sortie-hex-240.webp')) center / contain no-repeat; background-color: transparent; border: 0; box-shadow: none; border-radius: 0; padding: 0;
  filter: drop-shadow(0 4px 10px rgba(255,150,40,0.45)); animation: stSortieGem 2.6s ease-in-out infinite alternate;
}
@media (min-resolution: 2.5dppx) { .st-actions .st-sortie { background-image: var(--st-u-sortie-360, url('stella-ui/sortie-hex-360.webp')); } }
.st-actions .st-sortie .t { color: #fff; text-shadow: 0 0 3px rgba(70,20,0,0.95), 0 2px 5px rgba(70,20,0,0.9), 0 0 10px rgba(70,20,0,0.7); }
.st-actions .st-sortie:hover:not(:disabled) { filter: brightness(1.1) drop-shadow(0 4px 14px rgba(255,170,60,0.7)); }
.st-actions .st-sortie:disabled { filter: grayscale(0.8) brightness(0.7); animation: none; }
.st-actions .st-sortie:focus-visible { outline: 3px solid #fff; outline-offset: 2px; border-radius: 14px; }
@keyframes stSortieGem { from { filter: drop-shadow(0 3px 8px rgba(255,150,40,0.3)); } to { filter: drop-shadow(0 4px 18px rgba(255,185,70,0.85)); } }
html.hd-reduce .st-actions .st-sortie { animation: none !important; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-actions .st-sortie { animation: none !important; } }

/* ============================ UI v3 / R2: リンク・見出し・用語・ロビーのラベル・出撃の確認・ならびかえ ============================
   (1) 下線つきの文字リンクは無し: 3番目のボタン(.tertiary / .st-back)は 金の文字 + 小さな ‹ (戻る・閉じる) / › (進む)、押せる高さ 44px
   (2) 見出しは「看板」: 明朝・1.3rem・太さ800・下に金の細い線(「?」は縦中央)
   (3) ロビーの右のラベルは文字に影、デイリー未挑戦のリボン(と宝石)は 12px 上へ
   (4) 出撃の確認: 改 の印は敵の絵の右上に小さく / 消費スタミナはボタンの中 / パーティーは横並びで低く
   (5) ならびかえは <select> ではなくチップ、プリセットの編集は右端の鉛筆ボタン */
.hd-btn.tertiary, .hd-btn.st-back, .hd-btn.ghost.st-back {
  display: inline-flex; align-items: center; justify-content: center; gap: 2px;
  min-height: 44px; color: var(--st-gold); text-decoration: none; font-weight: 800;
  background: none; border-color: transparent; box-shadow: none;
}
.hd-btn.tertiary:hover, .hd-btn.st-back:hover { color: var(--st-gold-soft); text-decoration: none; }
.hd-btn.tertiary:disabled { color: #8b93b8; }
.hd-btn.st-back::before, #ovBtn4::before, #stRvLobby::before, #stClaimBack::before, #settingsDone::before, #stSheetClose::before, #stFsClose::before, #stDlgBtns .tertiary::before {
  content: '\2039'; margin-right: 2px; font-size: 1.35em; font-weight: 800; line-height: 1; transform: translateY(-0.06em);
}
.hd-btn.tertiary.fwd::after { content: '\203A'; margin-left: 2px; font-size: 1.35em; font-weight: 800; line-height: 1; transform: translateY(-0.06em); }
.hd-btn.st-back[hidden], .hd-btn.ghost.st-back[hidden] { display: none; }
.st-link { color: var(--st-gold); text-decoration: none; }
.st-screen a, .st-dlg a, .st-sheet a, .hd-opts a, .st-help-body a { text-decoration: none; }

/* (2) 看板の見出し。ヘッダーの行いっぱいに金の細い線(右へ薄れる)。「?」は44pxのまま縦中央 */
.st-screen:not(.st-battle) > .hd-head {
  align-items: center; flex-wrap: nowrap; min-height: 48px; margin: 0 0 12px; padding-bottom: 6px;
  background: linear-gradient(90deg, var(--st-gold-line) 0, rgba(217,180,90,0.55) 60%, rgba(217,180,90,0) 100%) left bottom / 100% 1px no-repeat;
}
.st-screen:not(.st-battle) > .hd-head .hd-title { font-size: 1.3rem; font-weight: 800; letter-spacing: 0.04em; line-height: 1.2; flex-wrap: nowrap; min-width: 0; }
.st-screen:not(.st-battle) > .hd-head .hd-title small { letter-spacing: 0; line-height: 1.2; }
.st-screen:not(.st-battle) > .hd-head .hd-head-buttons { align-items: center; }
.st-screen:not(.st-battle) > .hd-head .st-help { margin-right: -4px; }

/* (3) ロビー右のラベル(絵の上でも読める)・デイリー未挑戦のリボンと宝石を上へ(位置だけずらす。レイアウトは動かさない) */
.st-ib-t { text-shadow: 0 0 2px #000, 0 1px 3px #000, 0 0 6px rgba(0,0,0,0.95), 0 0 12px rgba(5,8,40,0.9); }
.st-actions .st-sortie { position: relative; top: -12px; }

/* (4) 出撃の確認 */
.st-wave-tier { top: -5px; right: -6px; bottom: auto; padding: 0 3px; border-radius: 4px; font-size: 0.75rem; line-height: 1.3; font-weight: 800; box-shadow: 0 1px 2px rgba(0,0,0,0.6); }
.st-cf-sta.short { margin: 4px 0 6px; padding: 6px 10px; font-size: 0.8rem; line-height: 1.45; color: #ffd1c8; background: rgba(224,84,106,0.14); border: 1px solid rgba(224,84,106,0.6); border-radius: var(--st-r-s); }
#stDlgBtns .hd-btn.primary.short { filter: saturate(0.5) brightness(0.88); }
.st-cf-party { margin-top: 6px; padding: 6px 8px 8px; }
.st-cf-ph { min-height: 44px; }
.st-cf-ph b { font-size: 0.85rem; }
.st-cf-change { min-height: 44px; padding: 2px 14px; font-size: 0.85rem; }
.st-cf-mems { gap: 4px; margin-top: 0; }
.st-cf-mem { flex-direction: row; align-items: center; justify-content: center; gap: 6px; }
.st-cf-mem .st-ico { flex: none; width: 40px; height: 40px; }
.st-cf-mi { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; min-width: 0; }
.st-cf-mi .l { margin: 0; }
.st-cf-mi .st-lead-tag { padding: 0 6px; }
.st-cf-ls { margin: 4px 0 0; }
.st-cf-hp { margin: 3px 0 0; }

/* ============================ /UI v3 / R2 ============================ */

/* ---- UI v2 W1: ヘッダー・文言 ---- */
.st-back[hidden] { display: none; }
/* 「?」ヘルプのボタン(見出しの右)。押せる大きさは44px、見た目の丸は小さめ */
.st-help { flex: none; width: 44px; height: 44px; padding: 0; font: inherit; font-size: 1rem; font-weight: 800; color: #f2d58a; cursor: pointer; border: 0; border-radius: 50%; touch-action: manipulation; background: radial-gradient(circle at center, rgba(12,16,60,0.72) 0 13px, #d9b45a 13.5px 14.5px, transparent 15px); }
.st-help:focus-visible { outline: 3px solid #ffd166; outline-offset: -2px; }
.st-help-body { text-align: left; }
.st-help-h { margin: 10px 0 2px; font-size: 0.85rem; font-weight: 800; color: #f2d58a; }
.st-help-h:first-child { margin-top: 0; }
.st-help-body .st-dlg-p { margin: 0 0 4px; font-size: 0.8rem; line-height: 1.6; text-align: left; }
/* 設定の「オン」「オフ」の折り返し(見出しの説明が長い行で、選択肢が潰れて縦書きのようになっていた): 選択肢は縮めず、見出し側が折り返す */
.hd-set-inline .hd-set-h { flex: 1 1 0; min-width: 0; }
.hd-set-inline .hd-seg { flex: 0 0 auto; max-width: none; }
.hd-set-inline .hd-seg span { min-width: 52px; padding: 2px 10px; white-space: nowrap; }

/* ---- ロビーの下の段・アイコン(UI v2 / W6) ---- */
/* ミッション・コレクション = 出撃の宝石と揃えた金縁のプレート(紺の地 + 金のグラデーションの縁 + 内側の細い金線 + 上下の立体の陰) */
.st-actions .st-menu-btn { gap: 3px; padding: 6px 4px; min-height: 68px; color: #fff3cf; border: 2px solid transparent; border-radius: 12px; background: linear-gradient(#232c78, #0f1347 60%, #0a0d33) padding-box, linear-gradient(#fff3b8, #dba43a 45%, #8a5a14) border-box; box-shadow: inset 0 1px 0 rgba(255,244,190,0.4), inset 0 -3px 0 rgba(0,0,0,0.38), 0 4px 10px rgba(0,0,0,0.5), 0 0 14px rgba(255,200,90,0.16); text-shadow: 0 1px 2px rgba(0,0,0,0.8); transition: transform 0.08s; }
.st-actions .st-menu-btn::before { content: ''; position: absolute; inset: 3px; border-radius: 8px; border: 1px solid rgba(255,214,120,0.32); pointer-events: none; }
.st-actions .st-menu-btn .ic svg { width: 28px; height: 28px; filter: drop-shadow(0 1px 1px rgba(60,30,0,0.65)); }
.st-actions .st-menu-btn:active { transform: translateY(1px); box-shadow: inset 0 1px 0 rgba(255,244,190,0.3), inset 0 -1px 0 rgba(0,0,0,0.38), 0 2px 5px rgba(0,0,0,0.5); }
.st-actions .st-menu-btn.has { box-shadow: inset 0 1px 0 rgba(255,244,190,0.4), inset 0 -3px 0 rgba(0,0,0,0.38), 0 4px 10px rgba(0,0,0,0.5), 0 0 18px rgba(255,200,90,0.55); }
.st-actions .st-menu-badge { top: -8px; right: -6px; }
/* デイリー未挑戦 = 金〜琥珀のリボン(両端が切れ込み)。宝石の下の頂点にかぶせる */
.st-sortie-chip { padding: 3px 14px; font-size: 0.75rem; font-weight: 900; line-height: 1.3; color: #4a2800; text-shadow: 0 1px 0 rgba(255,244,190,0.6); background: linear-gradient(#ffe9a0, #f4b23e 55%, #d98e1e); border: 0; border-radius: 0; clip-path: polygon(0 0, 100% 0, calc(100% - 7px) 50%, 100% 100%, 0 100%, 7px 50%); filter: drop-shadow(0 2px 2px rgba(0,0,0,0.6)); }
.st-actions .st-sortie-chip { z-index: 1; }
/* 戦闘画面の歯車 */
.st-gear-ic { display: inline-flex; }
.st-gear-ic svg, .hd-gear-i svg { display: block; filter: drop-shadow(0 1px 1px rgba(60,30,0,0.6)); }

/* ---- UI v3 R3: キャラ詳細のヒーロー・ワザのカード・レベルアップの欄 ---- */
/* ヒーロー: 立ち絵は画面の幅いっぱい・高さ約42vh。名前・肩書・★・属性は絵の下の縁にグラデーションごと重ねる。ロックは右上のアイコン、拡大は左上の虫めがね(絵の長押し・Enter は今のまま) */
#stUnitBody .st-ud-hero { position: relative; margin: 0 -10px; height: 42vh; height: 42svh; min-height: 300px; max-height: 560px; }
#stUnitBody .st-ud-hero .st-sh-art { position: absolute; inset: 0; width: 100%; height: 100%; aspect-ratio: auto; border-radius: 0 0 var(--st-r-l) var(--st-r-l); }
#stUnitBody .st-ud-hero .st-sh-art img, #stUnitBody .st-ud-hero .st-sh-art video, #stUnitBody .st-ud-hero .st-sh-art canvas { object-position: 50% 20%; }
.st-art-zoom { position: absolute; left: 10px; top: 10px; z-index: 3; width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; color: #f2d58a; pointer-events: auto; cursor: pointer; padding: 0; background: rgba(6,8,30,0.58); border: 1px solid rgba(242,213,138,0.55); }
.st-art-zoom::after { content: ''; position: absolute; inset: -10px; border-radius: 50%; }   /* タップの範囲を 44px 以上に */
.st-art-zoom:focus-visible { outline: 2px solid #ffd166; outline-offset: 2px; }
#stUnitBody .st-ud-ov { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; padding: 64px 14px 12px; pointer-events: none; border-radius: 0 0 var(--st-r-l) var(--st-r-l); background: linear-gradient(rgba(4,6,28,0), rgba(4,6,28,0.6) 42%, rgba(4,6,28,0.95)); }
#stUnitBody .st-ud-ov .st-sh-title { margin: 0 0 1px; font-size: 0.85rem; color: #e6d7a8; text-shadow: 0 1px 3px rgba(0,0,0,0.9); }
.st-ud-name { margin: 0 0 6px; font-family: var(--st-font-head); font-size: 1.6rem; font-weight: 800; letter-spacing: 0.04em; line-height: 1.15; color: #fff; text-shadow: 0 2px 6px rgba(0,0,0,0.9), 0 0 14px rgba(0,0,0,0.6); }
#stUnitBody .st-ud-ov .st-sh-meta { margin-bottom: 0; }
.st-ud-hero .st-lockbtn { position: absolute; right: 10px; top: 10px; z-index: 4; width: 44px; height: 44px; min-height: 44px; margin: 0; padding: 0; display: grid; place-items: center; font: inherit; color: #aeb8e6; cursor: pointer; border-radius: 50%; background: rgba(6,8,30,0.62); border: 1px solid rgba(190,205,255,0.45); box-shadow: 0 2px 8px rgba(0,0,0,0.5); touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.st-ud-hero .st-lockbtn.on { color: #ffd166; border-color: #f2c14e; background: rgba(60,40,0,0.68); box-shadow: 0 0 10px rgba(255,200,90,0.45), 0 2px 8px rgba(0,0,0,0.5); }
.st-ud-hero .st-lockbtn:disabled { opacity: 0.55; cursor: default; }
.st-ud-hero .st-lockbtn:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-ud-prog { padding: 12px 2px 0; }

/* ワザ・リーダースキル・必殺技は、それぞれ1枚のカード(本文 .82rem) */
#stUnitBody .st-sh-sec { margin-top: 14px; }
#stUnitBody .st-sh-sec h3 { margin: 0 0 6px; font-size: 0.9rem; letter-spacing: 0.04em; color: var(--st-gold-soft); }
#stUnitBody .st-sh-sec .st-sk { grid-template-columns: minmax(0, 1fr); gap: 3px; padding: 9px 12px 10px; margin-top: 6px; border: 1px solid rgba(160,180,255,0.24); border-radius: var(--st-r-s); background: rgba(8,12,48,0.62); }
#stUnitBody .st-sh-sec .st-sk-l { font-size: 0.8rem; }
#stUnitBody .st-sh-sec .st-sk-t { font-size: 0.82rem; line-height: 1.55; }
#stUnitBody .st-sh-sec.ls p, #stUnitBody .st-sh-sec.ult p { padding: 9px 12px 10px; border: 1px solid rgba(160,180,255,0.24); border-radius: var(--st-r-s); background: rgba(8,12,48,0.62); font-size: 0.82rem; line-height: 1.55; }

/* レベルアップの欄: 見出しの右に小さい ×。素材は2段(上: 名前・経験値/コイン・持っている数 / 下: ステッパー)。おまかせ・レベルアップ! のバーはタブの上に張り付く */
.st-lvp-hr { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 4px; }
.st-lvp-hr .st-lvp-h { margin: 0; }
.st-lvtoggle[hidden] { display: none; }
.st-lvp .st-lvp-note { text-wrap: wrap; word-break: auto-phrase; }
.st-lvp-x { flex: none; width: 44px; height: 44px; margin: -6px -8px -6px 0; padding: 0; font: inherit; font-size: 1.7rem; line-height: 1; color: #cfd8ff; cursor: pointer; border: 0; border-radius: 50%; background: none; touch-action: manipulation; }
.st-lvp-x:hover { color: #fff; }
.st-lvp-x:focus-visible { outline: 3px solid #ffd166; outline-offset: -2px; }
.st-lvp .st-mat { display: flex; flex-direction: column; flex-wrap: nowrap; align-items: stretch; justify-content: flex-start; gap: 6px; padding: 8px 0 10px; }
.st-lvp .st-mat-l { flex: none; display: flex; align-items: center; gap: 10px; }
.st-lvp .st-mat-t { flex: 1 1 auto; min-width: 0; }
.st-lvp .st-mat-t .ex { display: flex; flex-wrap: wrap; gap: 0 12px; }
.st-lvp .st-mat-t .ex > span { white-space: nowrap; }
.st-lvp .st-mat-t .own { flex: none; margin-left: auto; white-space: nowrap; font-size: 0.8rem; text-align: right; }
.st-lvp .st-mat-l > .own { align-self: flex-start; }
.st-lvp .st-mat-c { margin-left: 0; width: 100%; justify-content: space-between; gap: 6px; }
.st-lvp .st-mat-c .st-cnt { flex: 1 1 auto; min-width: 0; }
.st-lvp .st-step[aria-disabled="true"], .st-lvp .st-max[aria-disabled="true"] { opacity: 0.4; }
.st-nomat { margin: 0; padding: 8px 0 2px; border-top: 1px solid rgba(160,180,255,0.18); font-size: 0.78rem; line-height: 1.5; color: #ffb4a0; }
.st-nomat[hidden] { display: none; }
.st-lvp .st-lvp-btns { position: sticky; bottom: var(--st-tb, 0px); z-index: 4; flex-wrap: nowrap; align-items: center; margin: 10px -20px -10px; padding: 8px 10px; background: linear-gradient(rgb(10,12,52), rgb(4,5,26)); border-top: 1px solid rgba(190,205,255,0.5); box-shadow: 0 -6px 20px rgba(0,0,0,0.45); }
.st-lvp .st-lvp-btns .hd-btn { min-height: 48px; padding: 6px 10px; }
.st-lvp .st-lvp-btns .st-lv-go { flex: 1 1 auto; min-width: 0; }
/* 張り付くバーの上に出る一言(足りない理由など)がバーに隠れないように */
body.st-has-tb:has(#stUnit:not([hidden]) .st-lvp:not([hidden])) .st-toast { bottom: calc(var(--st-tb) + 74px); }

/* UI v3 統合: 「出撃! [いなずま]n」のいなずまは小さな SVG(currentColor。OS の絵文字は使わない)。タイプのしぼりこみもチップ */
.hd-btn .st-bolt { display: inline-block; width: 0.95em; height: 0.95em; margin: 0 1px -0.13em 2px; vertical-align: baseline; color: #ffd24a; }
.hd-btn.primary .st-bolt { color: #6b3d06; }   /* 金の板の上では、いなずまは濃い茶(明るい色だと消える) */
#stDlgBtns .hd-btn .st-go-n { font-variant-numeric: tabular-nums; }

/* ============================ UI v4 (P1) ============================
   B1 押せないボタン: 主・副・危険のどれも同じ見た目(明示の色。filter / opacity は使わない)。危険のピンクの縁も消す */
.hd-btn.primary:disabled, .hd-btn.primary[aria-disabled="true"],
.hd-btn.secondary:disabled, .hd-btn.secondary[aria-disabled="true"],
.hd-btn.ghost:disabled, .hd-btn.danger:disabled, .hd-btn.danger[aria-disabled="true"],
#stGacha:has(#stPullT:not([hidden])) #stPull10:disabled,
.st-rv-btns:has(#stRvAgain[hidden]) #stRvBack:disabled,
#stGacha .st-gc-btn:disabled, #stGacha .st-gc-btn.tk:disabled,
.st-dbtn:disabled, .st-gc-minibtn:disabled, .st-cf-arrow:disabled, .st-step[aria-disabled="true"], .st-max[aria-disabled="true"],
#stDlgBtns .hd-btn.tertiary:disabled, #stSheetClose:disabled, #settingsDone:disabled,
.st-battle .hd-overlay .hd-btn.st-cont-btn:disabled {
  color: #8b93b8; text-shadow: none; font-weight: 700;
  background: rgba(40, 48, 110, 0.55); background-image: none;
  border: 1px solid rgba(150, 170, 255, 0.25);
  box-shadow: none; filter: none; opacity: 1; cursor: not-allowed;
}
/* 副の形の押せないボタンは、押せるときと同じ縁の太さ(押せる・押せないで大きさが変わらない) */
.hd-btn.secondary:disabled, .hd-btn.secondary[aria-disabled="true"], .hd-btn.ghost:not(.st-back):disabled, .st-dbtn:disabled, .st-gc-minibtn:disabled, .st-cf-arrow:disabled,
.st-step[aria-disabled="true"], .st-max[aria-disabled="true"], #stDlgBtns .hd-btn.tertiary:disabled, #stSheetClose:disabled, #settingsDone:disabled { border-width: var(--st-sub-bw); }
.hd-btn.primary:disabled small, .hd-btn.secondary:disabled small, #stGacha .st-gc-btn:disabled small { color: #8b93b8; opacity: 1; }
/* B2 10連の結果: NEW / ×N のバッジは顔にかぶせない。カードの下(★の少し上)の真ん中に置く。単発の大きなカードは今のまま(角) */
.st-rv-cards:not(.one) .st-rv-card .bdg { top: auto; bottom: 21px; left: 50%; transform: translateX(-50%); padding: 0 6px; font-size: 0.7rem; line-height: 1.5; white-space: nowrap; }
/* ガチャ: バナーの画像に名前があるので、文字の見出し「スターコアガチャ」は見えなくする(読み上げ用に h2 は残す)。ボタンは右寄せ */
.st-gc-sectitle { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
.st-gc-sechead { justify-content: flex-end; }
/* B3 出撃のダイアログのパーティー: 3人の形・Lv の行を縦にそろえる。形は 24px の固定の高さの箱、リーダーの札は絵の下の縁に重ねる(高さを増やさない) */
.st-cf-ic { position: relative; flex: none; display: inline-flex; }
.st-cf-mem { gap: 8px; }
.st-cf-mem .st-ico { width: 44px; height: 44px; }
.st-cf-ic .st-lead-tag { position: absolute; left: 50%; bottom: -5px; transform: translateX(-50%); z-index: 2; padding: 0 4px; letter-spacing: 0; line-height: 1.3; }
.st-cf-mi { gap: 0; justify-content: center; }
.st-cf-shape { display: flex; align-items: center; justify-content: flex-start; height: 24px; min-width: 24px; }
.st-cf-shape .st-si { margin: 0; }
.st-cf-shape .st-si svg { width: 24px; height: 24px; }
.st-cf-shape .st-si.line svg { width: 40px; height: 12px; }
.st-cf-mi .v { display: block; line-height: 1.3; }
.st-cf-mems { margin-bottom: 8px; }
/* 「売る」は危険の段。売るモード中(押した状態)は赤を塗りつぶして、いま売る操作中だと分かるように */
.hd-btn.danger.st-sellmode[aria-pressed="true"] { color: #fff; background: linear-gradient(#e0546a, #b02a44); border-color: rgba(255,170,185,0.7); }
/* キャラの詳細: 見出しの看板はやめる(名前は絵の下の縁にある)。矢印ともどるだけの 36px の細い行。h1 は読み上げ用に残す(見えない) */
#stUnit > .hd-head { min-height: 36px; margin: 0 0 8px; padding-bottom: 2px; justify-content: flex-end; background: none; }
#stUnit > .hd-head .hd-title { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
#stUnit > .hd-head .hd-head-buttons { align-items: center; gap: 4px; }
#stUnit > .hd-head .hd-head-buttons .hd-btn.small { position: relative; min-height: 36px; height: 36px; padding: 2px 10px; }
#stUnit > .hd-head .hd-head-buttons .hd-btn.small.st-nav { min-width: 40px; }
#stUnit > .hd-head .hd-head-buttons .hd-btn.small::after { content: ''; position: absolute; left: -2px; right: -2px; top: -4px; bottom: -4px; }   /* 見た目は 36px、押せる範囲は 44px */
/* ロックのアイコン: 太い線 + 明るい色。ロック中は塗りつぶしの金 */
.st-ud-hero .st-lockbtn { color: #f2f5ff; background: rgba(6,8,30,0.8); border: 1.5px solid rgba(225,233,255,0.75); }
.st-ud-hero .st-lockbtn.on { color: #ffe08a; border-color: #ffd166; background: rgba(86,56,0,0.85); box-shadow: 0 0 12px rgba(255,200,90,0.6), 0 2px 8px rgba(0,0,0,0.5); }
/* レベルアップの欄: 見出しの右に「?」と ×。「ぜんぶ0に」は読みやすい色 */
.st-lvp-hr .st-lvp-h { flex: 1 1 auto; min-width: 0; }
.st-lvp-hr .st-lvp-help { margin: -6px -2px -6px 0; }
.st-lvp .st-lvp-btns .hd-btn.tertiary { color: #cfd8ff; }
.st-lvp .st-lvp-btns .hd-btn.tertiary:disabled { color: #cfd8ff; opacity: 0.7; }
/* 絞り込みのシート: 下のボタンは「この条件で表示(N体)」(副の段。‹ は付けない)。リセットは細め */
#stFsClose::before { content: none; }
.st-fs-foot #stFsClose { flex: 1.7 1 0; }
.st-fs-foot #stFsReset { flex: 1 1 0; }
/* 持ち物: タイルは低く(約75px)。アイテムの4つは 2×2(3列だと★5確定チケットの横が2つ空いていた) */
.st-itt { min-height: 78px; padding: 6px 4px 5px; gap: 0; }
.st-itt .st-item-ico { width: 38px; height: 38px; }
.st-itt .n { font-size: 1rem; line-height: 1.2; }
.st-itt:not(.zero) .n { font-size: 1.12rem; font-weight: 800; color: var(--st-gold-soft); }
.st-itg.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
/* ============================ UI v4 動き(P2): 数字の数え上げ・受け取りの金の粒・ロビーの背景。すべて transform / opacity だけ。動きを減らす設定では出さない ============================ */
.st-sta-n, .st-hud-i b, #stGcStarcore { font-variant-numeric: tabular-nums; }
/* 数字が増えたとき、数字の入れ物(チップ)がぷるっと光る */
@keyframes stPulse { 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(255,210,90,0); } 35% { transform: scale(1.1); box-shadow: 0 0 14px 2px rgba(255,210,90,0.65); } 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(255,210,90,0); } }
.st-pulse { animation: stPulse 420ms ease-out; }
html.hd-reduce .st-pulse { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-pulse { animation: none; } }
/* 金の粒(stella-stage-fx.js が置く。ダイアログより上・タップは邪魔しない) */
.st-fxl { position: fixed; inset: 0; z-index: 1000; pointer-events: none; overflow: hidden; }
.st-fxp { position: absolute; left: 0; top: 0; width: 9px; height: 9px; margin: 0; border-radius: 50%; pointer-events: none; will-change: transform, opacity;
  background: radial-gradient(circle at 35% 35%, #fff8d0 0 28%, #ffd24a 60%, #f0a020 100%); box-shadow: 0 0 6px 1px rgba(255,205,80,0.75); }
.st-fxp.big { width: 13px; height: 13px; }
html.hd-reduce .st-fxl { display: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-fxl { display: none; } }
/* ロビーの背景の流れ星・漂う星(#space の中。キャラやボタンの後ろ。描画と停止は JS) */
#stAmb { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 3; pointer-events: none; display: none; }
html.hd-reduce #stAmb { display: none !important; }

/* ===================================================================================================
   UI v5 B: ガチャの演出
   (1) ひび割れの揺れと白い光(上の rvShake / .st-rv.crack。v3 からは確定演出「画面割れ」の当たった瞬間に使う)  (2) 結果のカードへ光の筋が流れ込む  (3) ★3 の短いめくり  (4) 10連のカードを大きく
   ================================================================================================ */
.st-rv-orb { position: fixed; z-index: 5; width: 0; height: 0; pointer-events: none; animation: rvOrbFly var(--t, 360ms) var(--dl, 0ms) cubic-bezier(0.4, 0, 0.75, 1) both; }
.st-rv-orb::before { content: ''; position: absolute; left: -8px; top: -8px; width: 16px; height: 16px; border-radius: 50%; background: radial-gradient(circle, #fff 0, #fff3b0 42%, rgba(255, 210, 74, 0) 74%); box-shadow: 0 0 12px 4px color-mix(in srgb, var(--rc, #ffd24a) 70%, #fff); }
.st-rv-orb::after { content: ''; position: absolute; left: 0; top: -2px; width: min(34vw, 150px); height: 4px; border-radius: 2px; transform-origin: 0 50%; transform: rotate(var(--ang)); background: linear-gradient(to right, rgba(255, 252, 225, 0.95), rgba(255, 214, 90, 0.5) 45%, rgba(255, 214, 90, 0)); }
@keyframes rvOrbFly { from { transform: translate(var(--dx), var(--dy)); opacity: 0.9; } 85% { opacity: 1; } to { transform: translate(0, 0); opacity: 0; } }
.st-rv-card.pre { opacity: 0; transform: scale(0.55); }
.st-rv-card.land { animation: rvLand 0.34s cubic-bezier(0.2, 1.3, 0.4, 1) backwards; }
@keyframes rvLand { 0% { opacity: 0; transform: scale(0.55); } 60% { opacity: 1; transform: scale(1.07); } 100% { opacity: 1; transform: none; } }
.st-rv-card.land::before { content: ''; position: absolute; inset: 0; z-index: 2; border-radius: 10px; background: #fff; pointer-events: none; opacity: 0; animation: rvLandFlash 0.34s ease-out; }   /* 着いた瞬間の白い光(filter の brightness ではなく、重ねた白の opacity) */
@keyframes rvLandFlash { 0% { opacity: 0.6; } 100% { opacity: 0; } }
.st-rv-card.f3 .in { transition: transform 0.3s ease-out; }       /* ★3: 短くて、弾まない、ふつうのめくり */
html.hd-reduce .st-rv-card.land, html.hd-reduce .st-rv-card.land::before, html.hd-reduce .st-rv-orb { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-rv-card.land, html:not(.hd-motion) .st-rv-card.land::before, html:not(.hd-motion) .st-rv-orb { animation: none; } }

/* 10連: 画面の幅いっぱいにカードを大きく。パソコンは枠を広げ(高さに収まる範囲で)、5列 x 2行。スマホの縦長は 4列 x 3行(最後の 2 枚は真ん中)。顔(胸から上)・バッジ・★は今のまま */
.st-rv-main:has(.st-rv-cards:not(.one)) { width: min(100%, max(480px, min(720px, calc((100vh - 300px) * 1.5)))); }
.st-rv-cards:not(.one) .face .st-stars { font-size: 11px; }   /* 画面が広いほど大きく(段階は整数の px。以前は clamp(0.7rem, 1.9vw, 0.95rem)) */
@media (min-width: 600px) { .st-rv-cards:not(.one) .face .st-stars { font-size: 12px; } }
@media (min-width: 720px) { .st-rv-cards:not(.one) .face .st-stars { font-size: 14px; } }
@media (min-width: 800px) { .st-rv-cards:not(.one) .face .st-stars { font-size: 15px; } }
@media (max-width: 560px) and (min-height: 700px) {
  .st-rv-cards:not(.one) { grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 6px; }
  .st-rv-cards:not(.one) .st-rv-card { grid-column: span 2; }
  .st-rv-cards:not(.one) .st-rv-card:nth-child(9):nth-last-child(2) { grid-column: 3 / span 2; }
  .st-rv-cards:not(.one) .face .st-stars { font-size: 13px; }
  .st-rv-cards:not(.one) .st-rv-card .bdg { bottom: 26px; font-size: 0.75rem; }
}
@media (min-width: 561px) {
  .st-rv-cards:not(.one) { gap: 10px; }
  .st-rv-cards:not(.one) .st-rv-card .bdg { bottom: 30px; font-size: 0.85rem; padding: 0 9px; }
  .st-rv-cards:not(.one) .face .cap { bottom: 8px; }
}
/* 10連の間隔(2026-10-23。新しい裏の絵の菱形の先端がとなりの段・カードに触れないように): カードを少し小さくし(左右の余白)、段の間を先端 2 本ぶん + 6px 以上あける。先端はカードの高さの 2.5% ずつ(幅 80px で約 3px) */
.st-rv-cards:not(.one) { padding: 0 3%; column-gap: 8px; row-gap: 12px; }
@media (max-width: 560px) and (min-height: 700px) { .st-rv-cards:not(.one) { padding: 0 5%; column-gap: 9px; row-gap: 15px; } }
@media (min-width: 561px) { .st-rv-cards:not(.one) { padding: 0 4%; column-gap: 12px; row-gap: 20px; } }
/* 戦闘の演出 v5(E): リーダースキルの色の食い合わせ(編成画面の点・一言、出撃の確認の一言)と「攻撃できる色」 */
.st-slot { position: relative; }
.st-slot-warn { position: absolute; right: 0; top: 0; width: 6px; height: 6px; border-radius: 50%; background: var(--st-red); box-shadow: 0 0 0 1px rgba(6,8,28,0.8); pointer-events: none; }
.st-psum-warn { flex: 1 0 100%; order: 3; margin: 0; font-size: 0.75rem; font-weight: 400; line-height: 1.4; color: #ff6b7a; }
.st-cf-ls.conflict { color: #ff6b7a; white-space: normal; }
/* 警告マーク(三角に!)。文字色と同じ赤 */
.st-psum-warn::before, .st-cf-ls.conflict::before {
  content: ""; display: inline-block; width: 1.05em; height: 1.05em; margin-right: 0.3em; vertical-align: -0.17em;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.5 1 21.5h22L12 2.5Zm-1.2 7h2.4l-.3 6.2h-1.8l-.3-6.2Zm1.2 7.6a1.3 1.3 0 1 1 0 2.6 1.3 1.3 0 0 1 0-2.6Z' fill-rule='evenodd'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.5 1 21.5h22L12 2.5Zm-1.2 7h2.4l-.3 6.2h-1.8l-.3-6.2Zm1.2 7.6a1.3 1.3 0 1 1 0 2.6 1.3 1.3 0 0 1 0-2.6Z' fill-rule='evenodd'/%3E%3C/svg%3E") center / contain no-repeat;
}   /* 注意書きは折り返して全文を見せる(リーダー行だけが1行省略) */
.st-cf-atkc { display: flex; align-items: center; justify-content: center; gap: 6px; margin: 4px 0 0; font-size: 0.75rem; color: #cfd8ff; }
.st-cf-atkc-l { margin-right: 2px; }
.st-cf-atkc-i { display: inline-flex; }
.st-cf-atkc-i.off { opacity: 0.35; }
.st-cf-atkc .st-badge { min-width: 1.4em; height: 1.4em; padding: 0; }
.st-cf-atkc .st-badge img { width: 100%; height: 100%; }

/* 軽い端末(stella-stage-gacha-fx.js の画質の段階が 1 以上 = #stReveal.lowfx): 毎コマ描き直しになる飾りだけ止める(演出の流れ・光・音は同じ) */
.st-rv.lowfx.timestop { filter: none; }
.st-rv.lowfx .st-rv-card.up.r5 .face { animation: none; }
.st-rv.lowfx .st-rv-card.r5 .face.rf::before { animation: none; }
.st-rv.lowfx .st-rv-card .aura { animation: rvAuraIn 0.4s 0.3s ease-out forwards; }
.st-rv.lowfx .st-rv-card .rays { animation: rvAuraIn 0.6s 0.3s ease-out forwards; }
.st-rv.lowfx .st-rv-spot .rays { animation: none; }
.st-rv.lowfx .st-rv-spot.r5 .frame, .st-rv.lowfx .st-rv-spot.r5 .frame.cut { animation: rvArt 0.6s cubic-bezier(0.2, 1.4, 0.4, 1) both; }
.st-rv.lowfx .st-gth-core::before { animation: none; }
/* 軽い端末のはじけ(.lowfx = 引き始めから / .lowfx-burst = カードが開いたあとに遅いと分かったとき。はじけ側だけで、カードの光・面・紹介には触れない)。閃光は同じ長さで中身を単色に(放射グラデーションの全画面を塗らない)・ひびの光のにじみ・光のふち・飛ぶ光の尾を省く */
.st-rv.lowfx.burst::after, .st-rv.lowfx-burst.burst::after { background: color-mix(in srgb, var(--rc, #9fc0ff) 35%, #fff); }
.st-rv.lowfx.crack::before, .st-rv.lowfx-burst.crack::before { background: #fff; }
.st-rv.lowfx .st-rv-orb::after, .st-rv.lowfx-burst .st-rv-orb::after { display: none; }
.st-rv.lowfx .st-gth-halo, .st-rv.lowfx-burst .st-gth-halo { display: none; }
.st-rv.lowfx .st-rv-summon.fusing .st-gth-core, .st-rv.lowfx-burst .st-rv-summon.fusing .st-gth-core { filter: none; }   /* いちばん軽く: 明るさ・彩度の行列も外す(色の差は小さい) */

/* ===== バランス v2.2 のギミックの表示(RULES_VERSION 16。docs/specs/stella-balance-plan-v2.md 3・10) =====
   動かすのは transform / opacity だけ。ふだんの状態(バリア・形バリア・狂乱・封印・フィーバー・ゲージ停止)は止まった見た目か、ゆっくりした opacity の脈だけ */
/* 敵のギミック: 敵の絵の上の真ん中に小さなチップを縦に(属性バリアの残り / 形バリアの形 / 狂乱) */
.st-gm { position: absolute; left: 50%; top: 3px; transform: translateX(-50%); z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 2px; max-width: 70%; pointer-events: none; }
.st-gm [hidden] { display: none; }
.st-gm-b, .st-gm-g, .st-gm-f { display: inline-flex; align-items: center; gap: 4px; height: 17px; padding: 0 7px 0 4px; border-radius: 9px; font-size: 0.75rem; font-weight: 800; line-height: 1; white-space: nowrap; color: #fff; background: rgba(8,10,40,0.8); border: 1px solid var(--el, #9fb6ff); text-shadow: 0 1px 2px rgba(0,0,0,0.9); }
.st-gm-b { box-shadow: 0 0 9px color-mix(in srgb, var(--el, #9fb6ff) 65%, transparent); }
.st-gm-b .orb { width: 11px; height: 11px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff, var(--el, #9fb6ff) 55%, color-mix(in srgb, var(--el, #9fb6ff) 45%, #000)); box-shadow: 0 0 5px var(--el, #9fb6ff); }
.st-gm-b .bar { width: 44px; height: 6px; border-radius: 3px; background: rgba(255,255,255,0.2); overflow: hidden; }
.st-gm-b .bar b { display: block; width: 100%; height: 100%; transform-origin: left center; transform: scaleX(1); background: var(--el, #9fb6ff); transition: transform 0.25s ease-out; }
.st-gm-b em { font-style: normal; font-variant-numeric: tabular-nums; }
.st-gm-b.bump { animation: stGmBump 0.26s ease-out; }
.st-gm-b.brk { animation: stGmBrk 0.5s ease-out forwards; }
@keyframes stGmBump { 0% { transform: scale(1.3); } 100% { transform: scale(1); } }
@keyframes stGmBrk { 0% { transform: scale(1); opacity: 1; } 25% { transform: scale(1.45); opacity: 1; } 100% { transform: scale(2.1); opacity: 0; } }
.st-efx.barrier::after { content: ''; position: absolute; inset: 1px 14px; border-radius: 14px; pointer-events: none; box-shadow: inset 0 0 18px 2px color-mix(in srgb, var(--el, #9fb6ff) 60%, transparent), 0 0 12px 1px color-mix(in srgb, var(--el, #9fb6ff) 40%, transparent); animation: stBarrierPulse 1.6s ease-in-out infinite alternate; }
@keyframes stBarrierPulse { from { opacity: 0.5; } to { opacity: 1; } }
/* 形バリア: 破るのに必要な形のアイコン + ひび(1本ずつ増える)。弱点付与の間は止まる */
.st-gm-g { --el: #9fb6ff; position: relative; background: rgba(34,52,110,0.88); padding-left: 5px; }
.st-gm-g .st-si.in svg { width: 15px; height: 15px; }
.st-gm-g .st-si.in.line svg { width: 24px; height: 8px; }
.st-gm-g.sus { opacity: 0.55; }
.st-gm-g::after { content: ''; position: absolute; left: 6px; right: 6px; top: 50%; height: 0; border-top: 2px solid transparent; opacity: 0; }
.st-gm-g.crack1::after, .st-gm-g.crack2::after { border-top: 2px solid #fff; opacity: 0.85; transform: rotate(-12deg); filter: drop-shadow(0 0 2px #9fb6ff); }
.st-gm-g.crack2::after { border-top-style: dashed; box-shadow: 0 5px 0 -1px rgba(255,255,255,0.7); }
.st-gm-g.hit { animation: stShake 0.3s ease-out; }
.st-gm-g.brk { animation: stGmBrk 0.45s ease-out forwards; }
/* 狂乱: 赤い縁(画面の四隅。opacity だけが脈打つ)+ バッジ */
.st-gm-f { --el: #ff5a6e; background: rgba(120,16,36,0.9); color: #ffd0d6; animation: stFrenzyBadge 0.7s ease-in-out infinite alternate; }
@keyframes stFrenzyBadge { from { opacity: 0.75; } to { opacity: 1; } }
.st-vig { position: fixed; inset: 0; pointer-events: none; z-index: 5; opacity: 0; transition: opacity 0.6s ease-out; box-shadow: inset 0 0 90px 12px rgba(255,26,60,0.6); background: radial-gradient(ellipse at 50% 55%, rgba(255,0,40,0) 55%, rgba(255,0,40,0.14) 100%); }
.st-vig.on { opacity: 1; animation: stVigPulse 1s ease-in-out infinite alternate; }
@keyframes stVigPulse { from { opacity: 0.6; } to { opacity: 1; } }
body:not(.st-in-battle) .st-vig, body:not(.st-in-battle) .st-hitflash { display: none; }
.st-hitflash { position: absolute; left: 0; right: 0; top: 0; bottom: 0; pointer-events: none; z-index: 2; opacity: 0;
  background: radial-gradient(ellipse 42% 46% at 50% 55%, #fff 0, var(--fc, #fff) 34%, rgba(255,255,255,0) 70%); }   /* 着弾の光(2026-10-22): 敵の絵の上だけの radial(白 → 攻撃の色)。全画面の白ではない */
.st-dmg.txt.break { -webkit-text-stroke-width: 4px; letter-spacing: 0.06em; z-index: 2; }
.st-dmg.txt.break.go { animation: stDmgStrike 1.3s ease-out forwards; }
.st-pop-aff { margin-top: 4px; font-size: 0.75rem; font-weight: 800; }
.st-pop-aff.up { color: #ff8a96; }
.st-pop-aff.dn { color: #8fc2ff; }
/* パーティーのカードの目印 */
.st-gring .st-am { position: absolute; right: -6px; top: -6px; z-index: 3; min-width: 15px; height: 15px; padding: 0 3px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; font-style: normal; font-size: 0.75rem; font-weight: 900; line-height: 1; background: rgba(6,8,28,0.82); border: 1px solid transparent; pointer-events: none; }
.st-gring .st-am:empty { display: none; }
.st-gring .st-am.up { color: #ff8a96; border-color: rgba(255,120,140,0.8); }
.st-gring .st-am.dn { color: #8fc2ff; border-color: rgba(130,180,255,0.8); }
.st-gring .st-am.in { animation: stGmBump 0.45s ease-out; }
.st-roomy .st-gring .st-am { top: auto; bottom: -4px; right: -7px; }   /* 縦長のカード: 右上は属性の玉。右下に */
.st-gring .st-fv, .st-gring .st-sl { display: none; position: absolute; pointer-events: none; }
.st-mem.fever .st-gring { box-shadow: 0 0 0 2px #ffe08a, 0 0 10px 2px rgba(255,224,138,0.85); }
.st-mem.fever .st-gring .st-fv { display: grid; place-items: center; left: -5px; bottom: -5px; z-index: 3; width: 16px; height: 16px; border-radius: 50%; font-style: normal; font-size: 0.75rem; font-weight: 900; line-height: 1; color: #3a2200; background: #ffe08a; box-shadow: 0 0 0 1px #05071e; }
.st-mem.gblock .st-mem-bar i { opacity: 0.45; }
.st-mem.gblock .st-mem-g { color: #ffb4c0; font-weight: 800; }
.st-mem.gblock .st-mem-g::before { content: ''; display: inline-block; width: 0.95em; height: 0.95em; margin-right: 0.18em; vertical-align: -0.12em; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='5' y='11' width='14' height='10' rx='2' fill='%23ffb4c0'/%3E%3Cpath d='M8 11V8a4 4 0 0 1 8 0v3' fill='none' stroke='%23ffb4c0' stroke-width='2.4'/%3E%3C/svg%3E") center / contain no-repeat; }
.st-mem.gblock .st-mem-g::after { content: '手'; }
/* 必殺技封じ: 3人のアイコンに鎖と鍵。満タンのカードは金のゲージのまま(使えない)。解けると順に光る */
.st-mem.sealed .st-gring .st-sl { display: block; inset: 0; border-radius: 50%; z-index: 4; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg stroke='%23d5d9f0' stroke-width='3.2' stroke-linecap='round' stroke-dasharray='5 3' fill='none'%3E%3Cpath d='M5 8 35 32'/%3E%3Cpath d='M35 8 5 32'/%3E%3C/g%3E%3Crect x='14' y='18' width='12' height='10' rx='2' fill='%23c9b3ff' stroke='%2305071e' stroke-width='1.2'/%3E%3Cpath d='M16.5 18v-3a3.5 3.5 0 0 1 7 0v3' fill='none' stroke='%23c9b3ff' stroke-width='2'/%3E%3C/svg%3E") center / 100% 100% no-repeat, rgba(8,10,40,0.5); }
.st-mem.sealed { border-color: rgba(201,179,255,0.6); }
.st-mem.sealed.full { border-color: #ffd166; box-shadow: 0 0 0 1px rgba(255,209,102,0.6); }
.st-mem.sealed.full .st-mem-bar i { background: #ffd166; }
.st-mem.seal-in .st-gring .st-sl { animation: stSealIn 0.5s ease-out; }
.st-mem.denied .st-gring .st-sl { animation: stShake 0.35s ease-out; }
@keyframes stSealIn { 0% { transform: scale(1.8); opacity: 0; } 60% { transform: scale(0.92); opacity: 1; } 100% { transform: scale(1); } }
/* 二色フィーバーの盤の縁 / 浄化のきらめき / 狂乱を耐えた */
#boardWrap.st-fever::after { content: ''; position: absolute; inset: 0; pointer-events: none; border-radius: 10px; z-index: 1; box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--fev, #ffe08a) 80%, #fff), inset 0 0 22px 2px color-mix(in srgb, var(--fev, #ffe08a) 55%, transparent); animation: stFeverEdge 1.1s ease-in-out infinite alternate; }
@keyframes stFeverEdge { from { opacity: 0.45; } to { opacity: 0.95; } }
.st-party.wash::after { content: ''; position: absolute; inset: 0; pointer-events: none; border-radius: 12px; background: linear-gradient(100deg, rgba(190,255,235,0) 30%, rgba(190,255,235,0.75) 50%, rgba(190,255,235,0) 70%); animation: stWash 0.9s ease-out forwards; }
@keyframes stWash { 0% { transform: translateX(-60%); opacity: 1; } 100% { transform: translateX(60%); opacity: 0; } }
#stPBarWrap.ok::after { content: ''; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; background: rgba(255,224,138,0.6); animation: stPBarOk 0.7s ease-out forwards; }
@keyframes stPBarOk { 0% { opacity: 1; } 100% { opacity: 0; } }
.st-banner.fever .m { color: #ffe08a; text-shadow: 0 0 18px rgba(255,190,60,1), 0 2px 0 rgba(0,0,0,0.7); }
.st-banner.fever .s { color: #ffeabd; }
.st-banner.ready .m { color: #fff1b0; text-shadow: 0 0 20px rgba(255,209,102,1), 0 2px 0 rgba(0,0,0,0.7); }
.st-banner.ready .s { color: #ffeabd; }
/* 動きを減らす: 脈・揺れ・光の拡がりはやめる(止まった見た目 + 数字 / 文字だけ) */
html.hd-reduce .st-efx.barrier::after, html.hd-reduce .st-gm-f, html.hd-reduce .st-vig.on, html.hd-reduce #boardWrap.st-fever::after { animation: none; opacity: 1; }
html.hd-reduce .st-gm-b.bump, html.hd-reduce .st-gm-g.hit, html.hd-reduce .st-gring .st-am.in, html.hd-reduce .st-mem.seal-in .st-gring .st-sl, html.hd-reduce .st-mem.denied .st-gring .st-sl { animation: none; }
html.hd-reduce .st-gm-b.brk, html.hd-reduce .st-gm-g.brk, html.hd-reduce .st-party.wash::after, html.hd-reduce #stPBarWrap.ok::after { animation: none; opacity: 0; }
html.hd-reduce .st-vig, html.hd-reduce .st-gm-b .bar b { transition: none; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-efx.barrier::after, html:not(.hd-motion) .st-gm-f, html:not(.hd-motion) .st-vig.on, html:not(.hd-motion) #boardWrap.st-fever::after { animation: none; opacity: 1; }
  html:not(.hd-motion) .st-gm-b.bump, html:not(.hd-motion) .st-gm-g.hit, html:not(.hd-motion) .st-gring .st-am.in, html:not(.hd-motion) .st-mem.seal-in .st-gring .st-sl, html:not(.hd-motion) .st-mem.denied .st-gring .st-sl { animation: none; }
  html:not(.hd-motion) .st-gm-b.brk, html:not(.hd-motion) .st-gm-g.brk, html:not(.hd-motion) .st-party.wash::after, html:not(.hd-motion) #stPBarWrap.ok::after { animation: none; opacity: 0; }
  html:not(.hd-motion) .st-vig, html:not(.hd-motion) .st-gm-b .bar b { transition: none; }
}

/* ============================================================ スターダスト(2026-10-13 バランス v2.2。ドロップの演出・数・バッジ) */
/* レアドロップのカード(報酬の画面。出す順番・音・飛ばし方は stella-stage.js の rwDropRun) */
.st-rw-drops { display: flex; flex-direction: column; align-items: center; gap: 6px; width: 100%; }
.st-rw-drops:empty { display: none; }
.st-rw-drop { position: relative; width: min(300px, 100%); padding: 5px 12px 7px; border-radius: var(--st-r-s); text-align: left; background: linear-gradient(rgba(64,52,132,0.9), rgba(18,16,68,0.92)); border: 1px solid rgba(255,224,138,0.75); box-shadow: 0 0 16px rgba(255,214,120,0.35); overflow: hidden; opacity: 0; transform: scale(0.4); }
.st-rw-drop.in { opacity: 1; transform: none; animation: rwPop 0.6s cubic-bezier(0.2, 1.5, 0.4, 1) both; }
.st-rw-drop-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 20px; }
.st-rw-drop-tag { padding: 0 9px; border-radius: 999px; font-size: 0.75rem; font-weight: 900; letter-spacing: 0.04em; color: #3a2600; background: linear-gradient(#ffe9a6, #ffc84a); border: 1px solid #fff3c4; }
.st-rw-drop-jp { font-family: var(--st-font-head); font-size: 1.05rem; font-weight: 900; letter-spacing: 0.06em; color: #ffe08a; text-shadow: 0 0 12px rgba(255,200,80,0.95), 0 2px 0 rgba(90,50,0,0.85); }
.st-rw-drop.in .st-rw-drop-jp { background: linear-gradient(100deg, #ffe08a 20%, #fff 45%, #ffd24a 60%, #ffe08a 80%); background-size: 220% 100%; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; text-shadow: none; filter: drop-shadow(0 0 6px rgba(255,210,74,0.8)); animation: stShimmer 1.4s linear infinite; }
.st-rw-drop-r { display: flex; align-items: center; gap: 10px; margin-top: 2px; }
.st-rw-drop .ic { flex: none; display: grid; place-items: center; width: 44px; height: 44px; }
.st-rw-drop .tx { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.st-rw-drop .nm { font-size: 0.9rem; font-weight: 800; }
.st-rw-drop .tx small { font-size: 0.75rem; color: #ffe9a6; }
.st-rw-drop .n { flex: none; font-size: 1.7rem; font-weight: 900; line-height: 1; color: #ffe08a; text-shadow: 0 0 10px rgba(255,209,102,0.7), 0 2px 0 rgba(0,0,0,0.7); font-variant-numeric: tabular-nums; min-width: 2.2em; text-align: right; }
.st-rw-drop .n.tick { display: inline-block; animation: stDropTick 0.34s cubic-bezier(0.2, 1.6, 0.4, 1); }
.st-rw-drop.jackpot { border-color: #ffe08a; box-shadow: 0 0 24px rgba(255,214,120,0.6), inset 0 0 18px rgba(255,214,120,0.18); }
.st-rw-drop.in::after { content: ''; position: absolute; top: -20%; bottom: -20%; left: -60%; width: 40%; background: linear-gradient(100deg, transparent, rgba(255,255,255,0.65), transparent); transform: skewX(-18deg); pointer-events: none; animation: rwShine 0.9s 0.2s ease-out both; }
.st-rw-flash { position: absolute; inset: 0; z-index: 3; pointer-events: none; opacity: 0; background: radial-gradient(ellipse at 50% 55%, rgba(255,244,180,0.92), rgba(255,200,80,0.38) 45%, transparent 74%); animation: stDropFlash 0.55s ease-out forwards; }
@keyframes stDropTick { 0% { transform: scale(1.8); } 100% { transform: scale(1); } }
@keyframes stDropFlash { 0% { opacity: 0; } 22% { opacity: 1; } 100% { opacity: 0; } }
.st-fxp.st-fxp-sd { background: radial-gradient(circle at 35% 35%, #ffffff 0 30%, #bfe6ff 62%, #ffd24a 100%); box-shadow: 0 0 7px 1px rgba(170,220,255,0.85), 0 0 3px rgba(255,214,120,0.8); }
.st-rw.still .st-rw-drop, .st-rw.still .st-rw-drop.in { opacity: 1; transform: none; animation: none; }
html.hd-reduce .st-rw-drop.in, html.hd-reduce .st-rw-drop .n.tick, html.hd-reduce .st-rw-drop.in .st-rw-drop-jp { animation: none; }
html.hd-reduce .st-rw-drop.in { transform: none; }
html.hd-reduce .st-rw-drop.in::after, html.hd-reduce .st-rw-flash { display: none; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-rw-drop.in, html:not(.hd-motion) .st-rw-drop .n.tick, html:not(.hd-motion) .st-rw-drop.in .st-rw-drop-jp { animation: none; }
  html:not(.hd-motion) .st-rw-drop.in { transform: none; }
  html:not(.hd-motion) .st-rw-drop.in::after, html:not(.hd-motion) .st-rw-flash { display: none; }
}
/* 専用ダンジョンのカード・出撃の確認: ドロップのバッジ */
.st-dg-sd { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; margin-top: 7px; padding-top: 6px; border-top: 1px dashed rgba(160,180,255,0.25); font-size: 0.75rem; color: #cfd6f6; }
.st-dg-sd .st-item-ico { flex: none; }
.st-dg-sd .t { flex: 1 0 calc(100% - 24px); font-weight: 800; color: #bfe6ff; }
.st-dg-sd .c { padding: 1px 8px; border-radius: 999px; font-weight: 800; color: #ffe9a6; background: rgba(0,0,24,0.5); border: 1px solid rgba(255,214,120,0.45); white-space: nowrap; }
.st-dg-sd .c.lv4 { color: #3a2400; background: linear-gradient(#ffe9a6, #ffc84a); border-color: #fff0b0; }
.st-cf-sd-n { flex: 0 0 100%; font-size: 0.75rem; color: #b8c2f0; }
/* キャラの詳細・レベルアップの欄: スターダストの数 */
.st-ud-sd { margin-top: 8px; padding: 6px 10px; border-radius: var(--st-r-s); background: rgba(14,18,64,0.6); border: 1px solid rgba(160,180,255,0.35); }
.st-ud-sd-l { margin: 0; display: flex; align-items: center; gap: 6px; font-size: 0.85rem; font-weight: 700; flex-wrap: wrap; }
.st-ud-sd-l b { color: #ffe08a; font-variant-numeric: tabular-nums; }
.st-ud-sd.short { border-color: rgba(255,154,168,0.6); }
.st-ud-sd.short .own { color: #ff9aa8; }
.st-ud-sd-h { display: block; margin-top: 2px; font-size: 0.75rem; color: #ffb4a0; }

/* ============================================================ ドロップの欄(2026-10-13。報酬の画面・出撃の確認。敵1体ごとのドロップ) */
/* 報酬の画面: 中身が画面より高いとき(360x640 など)は、上から並べてスクロールできる(中央寄せで上が切れない) */
.st-rw { align-items: flex-start; justify-content: flex-start; overflow-y: auto; overscroll-behavior: contain; }
.st-rw-in { margin: auto; }
.st-rw-label.drop { margin-top: 2px; color: #d9f3ff; background: rgba(60,160,220,0.3); border-color: rgba(150,220,255,0.6); }
.st-rw-dmats { display: flex; flex-wrap: wrap; gap: 5px 6px; justify-content: center; width: 100%; }
.st-rw-dm { display: inline-flex; align-items: center; gap: 2px; padding: 1px 9px 1px 3px; border-radius: 999px; background: rgba(0,0,24,0.6); border: 1px solid rgba(160,180,255,0.45); opacity: 0; transform: scale(0.3); }
.st-rw-dm .st-item-ico { width: 30px; height: 30px; }
.st-rw-dm .n { font-size: 1.05rem; font-weight: 900; color: #fff; font-variant-numeric: tabular-nums; min-width: 1.6em; text-align: left; }
.st-rw-dm .n.tick { display: inline-block; animation: stDropTick 0.34s cubic-bezier(0.2, 1.6, 0.4, 1); color: #ffe08a; }
.st-rw-dm.g2 { border-color: rgba(150,220,255,0.75); box-shadow: 0 0 8px rgba(120,200,255,0.4); }
.st-rw-dm.g3 { border-color: #ffe08a; box-shadow: 0 0 12px rgba(255,214,120,0.6); }
.st-rw-dm.in { opacity: 1; transform: none; animation: rwPop 0.45s cubic-bezier(0.2, 1.5, 0.4, 1) both; }
.st-rw-drops-rare { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; width: 100%; }
.st-rw-drops-rare:empty { display: none; }
.st-rw-drops { gap: 5px; }
.st-rw-drop.sc { border-color: rgba(150,226,255,0.8); box-shadow: 0 0 16px rgba(110,200,255,0.4); cursor: pointer; }
.st-rw-drop.sc .st-rw-drop-tag { color: #032a3a; background: linear-gradient(#d2f5ff, #6cc8ff); border-color: #e6fbff; }
.st-rw-drop.sc .n { color: #aeeaff; text-shadow: 0 0 10px rgba(110,200,255,0.7), 0 2px 0 rgba(0,0,0,0.7); }
.st-rw-drop-q { flex: none; display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; font-size: 0.75rem; font-weight: 900; color: #032a3a; background: #aeeaff; }
.st-rw-drop-hint { display: block; margin-top: 3px; font-size: 0.75rem; color: #bfe9ff; text-align: center; }
.st-rw-drop-hint[hidden] { display: none; }
.st-rw-drops-rare.two .st-rw-drop { width: calc(50% - 3px); padding: 4px 8px 6px; }
.st-rw-drops-rare.two .st-rw-drop-tag { padding: 0 6px; }
.st-rw-drops-rare.two .st-rw-drop-r { flex-wrap: wrap; gap: 0 6px; }
.st-rw-drops-rare.two .st-rw-drop .ic { width: 36px; height: 36px; }
.st-rw-drops-rare.two .st-rw-drop .ic .st-item-ico { width: 36px; height: 36px; }
.st-rw-drops-rare.two .st-rw-drop .n { flex: 1 1 auto; font-size: 1.5rem; min-width: 0; }
.st-rw-drops-rare.two .st-rw-drop .tx { order: 3; flex: 0 0 100%; text-align: center; }
.st-rw-drops-rare.two .st-rw-drop .nm { font-size: 0.8rem; }
.st-rw.still .st-rw-dm, .st-rw.still .st-rw-dm.in { opacity: 1; transform: none; animation: none; }
html.hd-reduce .st-rw-dm.in, html.hd-reduce .st-rw-dm .n.tick { animation: none; }
html.hd-reduce .st-rw-dm.in { transform: none; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-rw-dm.in, html:not(.hd-motion) .st-rw-dm .n.tick { animation: none; }
  html:not(.hd-motion) .st-rw-dm.in { transform: none; }
}
/* 低い画面(360x640 など)では、報酬の画面を少し詰める */
@media (max-height: 700px) {
  .st-rw { padding: 8px 14px; }
  .st-rw-in { gap: 5px; }
  .st-rw-title { font-size: 1.6rem; }
  .st-rw-items { min-height: 0; gap: 8px; }
  .st-rw-item { width: 98px; padding: 6px 4px 4px; }
  .st-rw-item .ic { height: 46px; }
  .st-rw-item .ic .st-item-ico { width: 44px; height: 44px; }
  .st-rw-item .n { font-size: 1.15rem; }
  .st-rw-btn { margin-top: 2px; padding: 8px 18px; }
  .st-rw-drop { padding: 3px 10px 4px; }
  .st-rw-drop-r { gap: 8px; margin-top: 0; }
  .st-rw-drop .ic, .st-rw-drop .ic .st-item-ico { width: 36px; height: 36px; }
  .st-rw-drop .n { font-size: 1.45rem; }
  .st-rw-sub { font-size: 0.75rem; }
  .st-rw-plv { margin-top: 2px; }
}
/* 出撃の確認の「ドロップ」: 素材の絵 + スターダスト x% / スタークリスタル y%(敵1体ごと) */
.st-cf-drop { display: flex; flex-direction: column; gap: 2px; }
.st-cf-mats { gap: 2px; padding: 1px 6px 1px 4px; flex-wrap: wrap; }
.st-cf-mats .st-item-ico { width: 20px; height: 20px; }
.st-rwc.sd b { color: #ffe08a; }
.st-rwc.sc { border-color: rgba(150,226,255,0.5); }
.st-rwc.sc b { color: #aeeaff; }


/* ---- 出撃の確認: 編成(プリセット)を左右にスワイプ・矢印で切り替える ---- */
.st-cf-party { touch-action: pan-y; }                       /* 縦はダイアログのスクロール、横はスワイプ(JS)。ブラウザに横のスクロールは渡さない */
.st-cf-pnav { display: flex; align-items: center; justify-content: space-between; gap: 6px; min-height: 44px; }
.st-cf-arrow { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; cursor: pointer; }   /* 色・縁は「副ボタンの形」 */
.st-cf-arrow:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-cf-pmid { display: flex; flex-direction: column; align-items: center; gap: 4px; min-width: 0; }
.st-cf-plab { font-size: 0.82rem; line-height: 1.2; color: var(--st-gold-soft); }
.st-cf-dots { display: inline-flex; gap: 5px; }
.st-cf-dots i { width: 6px; height: 6px; border-radius: 50%; background: rgba(200,210,255,0.35); }
.st-cf-dots i.on { background: var(--st-gold); box-shadow: 0 0 4px rgba(242,193,78,0.7); }
.st-cf-pvp { position: relative; overflow: hidden; }
.st-cf-pp { will-change: transform; }

/* ---- 絵の読み込み待ち(stella-gate.js): 絵がそろうまで画面を出さない。150ms 以内に済めば何も見えない。待っている間は小さな「読み込み中…」+ 進み、駄目なら「読み込めませんでした」+ 再試行 ---- */
.st-gate { position: fixed; inset: 0; z-index: 1100; display: flex; align-items: center; justify-content: center; padding: 16px; background: transparent; }   /* 見えない膜: 待っている間の連打を下の画面に通さない */
.st-gate[hidden] { display: none; }
.st-gate.show { background: rgba(6, 8, 24, 0.5); }
.st-gate-box { min-width: 210px; max-width: 320px; padding: 14px 18px 16px; border-radius: 14px; text-align: center; background: rgba(14, 18, 48, 0.94); border: 1px solid rgba(143, 179, 255, 0.35); box-shadow: 0 8px 28px rgba(0, 0, 0, 0.5); opacity: 0; transition: opacity 0.12s linear; }
.st-gate.show .st-gate-box { opacity: 1; }
.st-gate-msg { margin: 0 0 10px; font-size: 0.85rem; font-weight: 700; color: #dfe6ff; letter-spacing: 0.04em; }
.st-gate.fail .st-gate-msg { color: #ffd0d0; margin-bottom: 12px; }
.st-gate-bar { height: 4px; border-radius: 2px; overflow: hidden; background: rgba(255, 255, 255, 0.14); }
.st-gate-bar[hidden] { display: none; }
.st-gate-bar > i { display: block; height: 100%; width: 100%; transform-origin: 0 50%; transform: scaleX(0.06); background: linear-gradient(90deg, var(--st-gold), var(--st-gold-soft)); transition: transform 0.18s ease-out; }
.st-gate-btns { display: flex; flex-direction: column; gap: 8px; align-items: stretch; }
.st-gate-btns[hidden] { display: none; }
.st-gate-btns .hd-btn { min-height: 44px; }
html.hd-reduce .st-gate-box, html.hd-reduce .st-gate-bar > i { transition: none; }
/* 起動の画面(ロビーを出す前): 画面の下の細い進みバー */
.st-boot-bar { position: fixed; left: 14%; right: 14%; bottom: calc(env(safe-area-inset-bottom, 0px) + 36px); height: 3px; border-radius: 2px; overflow: hidden; background: rgba(255, 255, 255, 0.13); pointer-events: none; }
.st-boot-bar[hidden] { display: none; }
.st-boot-bar > i { display: block; height: 100%; width: 100%; transform-origin: 0 50%; transform: scaleX(0.04); background: linear-gradient(90deg, var(--st-gold), var(--st-gold-soft)); transition: transform 0.25s ease-out; }
.st-boot-btns { display: flex; flex-direction: column; align-items: center; gap: 8px; margin: 10px auto; width: 100%; max-width: 280px; }
.st-boot-btns[hidden] { display: none; }
.st-boot-btns .hd-btn { min-width: 160px; min-height: 44px; }
html.hd-reduce .st-boot-bar > i { transition: none; }
.st-gate.passive { pointer-events: none; background: transparent; align-items: flex-end; padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 74px); }   /* ガチャの演出: 操作(スキップ)は下の画面で受ける。表示は下寄せ */
.st-gate.passive.show { background: transparent; }

/* ============================ 2026-10-22: 戦闘の HUD の改善(見た目・演出だけ。ルールは変えない) ============================
   負けの画面(全画面・勝ちの報酬の画面 .st-rw と同じ部品)/ 広い画面(PC・横長)の配置と左の情報パネル / 動きを減らす設定の逃げ道 */

/* ---- 負けの画面(#stLose。stella-stage.js showLose)。0.4 秒で暗転 + 彩度を落とす。見出し 1.6rem・本文 1 行・ボタン・小さな補足 ---- */
.st-lose { background: rgba(4, 5, 26, 0.9); -webkit-backdrop-filter: saturate(0.3) brightness(0.45); backdrop-filter: saturate(0.3) brightness(0.45); transition: opacity 0.4s ease-out; overflow-y: auto; }
.st-lose-in { width: min(360px, 100%); gap: 12px; margin: auto; padding: 8px 0; }
.st-lose-title { font-size: 1.6rem; letter-spacing: 0.08em; color: #ffd6dc; text-shadow: 0 0 18px rgba(255, 59, 92, 0.8), 0 2px 0 rgba(0, 0, 0, 0.7); }
.st-lose-body { text-wrap: balance; word-break: auto-phrase; margin: 0; font-size: 1rem; font-weight: 700; line-height: 1.5; color: #f0f0f5; }
.st-lose-btns { width: 100%; display: flex; flex-direction: column; gap: 10px; margin-top: 6px; }
.st-lose-btns .hd-btn { width: 100%; min-height: 52px; }
.st-lose-btns .hd-btn:disabled { font-size: 0.85rem; line-height: 1.35; }
.st-lose-btns .hd-btn.tertiary { min-height: 44px; }
.st-lose-cont { position: relative; display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 60px !important; padding-bottom: 15px; }
.st-lose-cl { font-size: 1.1rem; font-weight: 900; letter-spacing: 0.04em; }
.st-lose-cost { display: inline-flex; align-items: center; gap: 4px; padding: 2px 9px 2px 4px; border-radius: 999px; background: rgba(0, 0, 0, 0.3); font-family: var(--st-font-num); font-size: 1.05rem; font-weight: 700; }
.st-lose-cost .st-item-ico { width: 18px; height: 18px; }
.st-lose-have { position: absolute; right: 12px; bottom: 4px; font-family: var(--st-font-num); font-size: 0.72rem; font-weight: 700; opacity: 0.9; }
.st-lose-yen { position: absolute; left: 12px; bottom: 4px; font-size: 0.75rem; font-weight: 700; opacity: 0.8; }
.st-lose-note { text-wrap: balance; word-break: auto-phrase; display: flex; flex-direction: column; gap: 3px; margin: 2px 0 0; font-size: 0.75rem; line-height: 1.5; color: #b8c2f0; }
.st-lose-note:empty { display: none; }
/* 結果の画面(勝ち #stReward・負け #stLose)の広告 300x250(2026-10-30。docs/specs/site-ads-imobile.md)。枠は 1 つで、開いている方の画面の中へ動かす(stella-stage.js rwAdSync)。
   ボタン(と負けの画面の補足)から 44px 下。場所は最初から空けておき、見せるのは body.st-rw-ad のときだけ(勝ち = 報酬の演出が終わってボタンが出てから 0.6 秒後、
   負け = 開いてから 0.6 秒後)= 演出を飛ばすタップ・ボタンを押そうとした指が広告に当たらない。広告の分だけ縦に長くなるので、画面は縦にスクロールできる */
html:is(.ad-pc, .ad-sp) .st-rw-ad[data-ad] { margin-top: 44px; visibility: hidden; }
html:is(.ad-pc, .ad-sp) body.st-rw-ad .st-rw-ad[data-ad] { visibility: visible; }
html:is(.ad-pc, .ad-sp) #stReward { overflow-y: auto; }
html:is(.ad-pc, .ad-sp) #stReward > .st-rw-in { margin: auto; padding: 8px 0; }
html.hd-reduce .st-lose { transition: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-lose { transition: none; } }

/* ---- 左の情報パネル(#stInfo。広い画面だけ): 敵の名前と、次の行動の一覧(足元のバッジと同じ内容をラベル付きで) ---- */
.st-info { display: none; }
.st-info-n { font-size: 1.15rem; font-weight: 900; line-height: 1.3; color: #eef1ff; }
.st-info-n::before { content: ''; display: inline-block; vertical-align: 1px; margin-right: 7px; width: 10px; height: 10px; border-radius: 50%; background: var(--el, #9aa3c8); box-shadow: 0 0 6px var(--el, #9aa3c8); }
.st-info-w { margin: 2px 0 8px; font-family: var(--st-font-num); font-size: 0.85rem; font-weight: 700; color: #cdd5ff; }
.st-info-l { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.st-info-i { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 10px; background: rgba(0, 0, 20, 0.42); border: 1px solid rgba(160, 180, 255, 0.28); font-size: 0.95rem; font-weight: 700; color: #dfe6ff; }
.st-info-i.soonest { border-color: #ffe8a0; background: rgba(60, 50, 10, 0.55); color: #fff3c4; }
.st-info-i.pre { border-color: #ff6a7d; background: rgba(120, 10, 30, 0.5); color: #ffc0cb; }
.st-info-i.stopped { opacity: 0.75; }
.st-info-ics { flex: none; display: flex; gap: 2px; }
.st-info-ics .st-cd-ic { width: 19px; height: 19px; font-size: 0.8rem; }
.st-info-t { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-info-c { flex: none; font-family: var(--st-font-num); font-size: 1rem; font-weight: 700; font-variant-numeric: tabular-nums; }

/* ---- 広い画面(PC・横向きのタブレット): 戦闘のステージは最大幅 約 1100px(左右は背景をぼかして暗く)・パーティーのカードは高さ 88px 以上・HUD の文字を大きく・左に敵の情報。
        スマホ(縦)・横向きのスマホ(高さが足りない)は対象外 ---- */
@media (min-width: 900px) and (min-height: 640px) and (min-aspect-ratio: 4/3) {
  #stBelow { --st-ring: 58px; }
  .st-mem { min-height: 88px; }
  .st-bar > b { font-size: 0.95rem; }
  .st-bar.st-e-bar > b { font-size: 0.95rem; }
  .st-bar.st-e-bar, .st-bar.st-p-bar { height: 20px; }
  .st-mem-slot, .st-mem-g { font-size: 0.9rem; }
  .st-e-name { font-size: 1rem; }
  .st-e-wave, .st-next .k { font-size: 0.9rem; }
  .st-chip { height: 18px; font-size: 0.85rem; }
  .st-cd b { font-size: 1.1rem; }
  .st-cd.soonest b { font-size: 1.4rem; }
}
@media (min-width: 1100px) and (min-height: 640px) and (min-aspect-ratio: 4/3) {
  .st-battle { position: relative; }
  /* 敵の情報の欄は、見づらくない範囲でいちばん小さく(2026-10-30 オーナー: 必要最低限の大きさ。それまで幅 276px・列との間 22px)。幅 196px・列との間 14px = 真ん中から左へ 260 + 14 + 196 = 470px。
     行は 2 段(技の名前 / 印と残りの手数)。敵の名前は最も長いもの(10 文字)でも 1 行に収まる */
  .st-info:not([hidden]) { display: block; position: absolute; right: calc(100% + 14px); top: 60px; width: 196px; padding: 10px 10px 9px; border-radius: 12px; background: var(--st-glass); border: 1px solid var(--st-line); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 0 16px rgba(90, 100, 255, 0.14); }
  .st-battle.st-daily .st-info { display: none; }
  .st-info-n { font-size: 0.95rem; }
  .st-info-n::before { margin-right: 6px; width: 8px; height: 8px; }
  .st-info-w { margin: 1px 0 6px; font-size: 0.78rem; }
  .st-info-l { gap: 5px; }
  .st-info-i { flex-wrap: wrap; gap: 3px 6px; padding: 5px 8px; font-size: 0.88rem; }
  .st-info-t { flex: 1 1 100%; }
  .st-info-c { margin-left: auto; font-size: 0.92rem; }
  .st-info-pz { gap: 6px; margin-bottom: 6px; padding: 5px 7px; font-size: 0.82rem; }
  /* 2026-10-22: 広い画面では足元のカウントのバッジを 1.3 倍 */
  .st-cd { width: 31px; height: 31px; }
  .st-cd.soonest { width: 47px; height: 47px; }
  .st-cd { --o: -8.5px; }
  .st-cd-ics { --m: 10px; }
  .st-cd-side { gap: 18px; }
  .st-cd.soonest { --o: -8.5px; }
  .st-cd-ic { width: 17px; height: 17px; font-size: 0.9rem; }
  .st-cd.soonest .st-cd-ic { width: 20px; height: 20px; }
  .st-cd:not(.soonest) b { font-size: 1.1rem; }
  .st-cd.soonest b { font-size: 1.8rem; }
}
@media (min-width: 1200px) and (min-height: 640px) and (min-aspect-ratio: 4/3) {
  /* ステージ(中央 約 1100px)の左右の空き: 背景(#space)をぼかして暗く(vignette)、視線を中央へ。#space(z 0)とページ(z 1)の間に敷く。中央は素通し */
  body.st-in-battle::after { content: ''; position: fixed; inset: 0; z-index: 0; pointer-events: none;
    background: linear-gradient(90deg, rgba(3, 4, 20, 0.62), rgba(3, 4, 20, 0.28) 14%, rgba(3, 4, 20, 0) 26%, rgba(3, 4, 20, 0) 74%, rgba(3, 4, 20, 0.28) 86%, rgba(3, 4, 20, 0.62));
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
    -webkit-mask-image: linear-gradient(90deg, #000 0, #000 max(0px, calc(50vw - 630px)), transparent max(40px, calc(50vw - 550px)), transparent min(calc(100% - 40px), calc(50vw + 550px)), #000 min(100%, calc(50vw + 630px)), #000 100%);
            mask-image: linear-gradient(90deg, #000 0, #000 max(0px, calc(50vw - 630px)), transparent max(40px, calc(50vw - 550px)), transparent min(calc(100% - 40px), calc(50vw + 550px)), #000 min(100%, calc(50vw + 630px)), #000 100%); }
}
/* PC の背景を canvas 1枚で描いているとき(hexdrop.js の bgCv): この左右の暗さ・ぼかしも canvas に描き込む(canvas の filter が使えて hd-bgcv-vig が付いたときだけ。使えないブラウザは今までどおりこの ::after。backdrop-filter は背景が動くたびに毎コマ計算し直されて重いため) */
html.hd-bgcv-vig body.st-in-battle::after { display: none; }

/* ---- 動きを減らす設定(html.hd-reduce / 端末の設定で hd-motion なし): 赤・白のフラッシュ・粒・残像・揺れを出さない。数字は動かさず、決まった段に出して薄れるだけ ---- */
@keyframes stRowFade { 0% { opacity: 1; transform: translate(-50%, -100%); } 80% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -100%); } }
html.hd-reduce .st-efx-red, html.hd-reduce .st-efx-lines, html.hd-reduce .st-hitflash { display: none; animation: none; }
html.hd-reduce .st-party.hit, html.hd-reduce .st-members.dim { animation: none; }
html.hd-reduce .st-cd.soonest, html.hd-reduce .st-cd.bump b { animation: none; }
html.hd-reduce .st-cd-ring .fg { transition: none; }
html.hd-reduce .st-efxw { transition: none; transform: none; }
html.hd-reduce .st-dmg.row.go { animation: stRowFade 1.2s linear forwards; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-efx-red, html:not(.hd-motion) .st-efx-lines, html:not(.hd-motion) .st-hitflash { display: none; animation: none; }
  html:not(.hd-motion) .st-party.hit, html:not(.hd-motion) .st-members.dim { animation: none; }
  html:not(.hd-motion) .st-cd.soonest, html:not(.hd-motion) .st-cd.bump b { animation: none; }
  html:not(.hd-motion) .st-cd-ring .fg { transition: none; }
  html:not(.hd-motion) .st-efxw { transition: none; transform: none; }
  html:not(.hd-motion) .st-dmg.row.go { animation: stRowFade 1.2s linear forwards; }
}

/* ================================ 星座盤(2026-10-25。stella-stage-tree.js)================================
   夜空に金の線。ロビーの金の縁の札と同じ言葉で作る(濃紺 + 金の縁 / 主ボタンは金の板)。文字は 12px 以上・押せる所は 44px 以上。
   方角の色(--c)は札の縁・点だけ。意味は必ず文字(名前・「不足」「完成 ✓」など)でも伝える。 */
/* ロビーの「星座盤」ボタン(ミッションと同じ角の札。右の端)。開けられる星があるときだけ金の点 */
.st-actions #stMenuTree { justify-self: end; }
.st-tr-dot { position: absolute; top: -5px; right: -4px; width: 13px; height: 13px; border-radius: 50%; background: #ffd45e; box-shadow: 0 0 0 2px #0b0e2e, 0 0 9px rgba(255,212,94,0.85); }
.st-tr-dot[hidden] { display: none; }
.st-menu-btn:has(.st-tr-dot:not([hidden])) { border-color: rgba(255,214,120,0.75); box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 0 16px rgba(255,200,90,0.35); }

.st-tree .hd-title small { font-size: 0.8rem; font-weight: 700; color: #cfd8ff; margin-left: 6px; }
#stTreeBody { padding-bottom: 12px; }
.st-tr-note { margin: 6px 2px; font-size: 0.75rem; line-height: 1.6; color: #aeb5d8; }
.st-tr-h { margin: 14px 2px 6px; font-size: 1rem; font-weight: 800; color: #ffe9a6; letter-spacing: 0.04em; }
.st-tr-h3 { margin: 12px 0 4px; font-size: 0.88rem; font-weight: 800; color: #ffe9a6; }
.st-tr-empty { margin: 10px 2px; padding: 12px; font-size: 0.82rem; line-height: 1.7; color: #cdd5f7; border: 1px dashed rgba(170,190,255,0.4); border-radius: var(--st-r-s); }
.st-tr-why { margin: 6px 2px; font-size: 0.82rem; line-height: 1.6; color: #ffb4bf; }
.st-tr-ok { margin: 8px 2px; font-size: 0.85rem; font-weight: 700; color: #ffe9a6; }

/* 持ち物の帯と新星の門 */
.st-tr-sum { display: grid; gap: 8px; margin: 4px 0 10px; }
.st-tr-res { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.st-tr-r { display: flex; align-items: center; gap: 6px; min-width: 0; min-height: 36px; padding: 4px 10px; font-size: 0.78rem; color: #cfd8ff; background: var(--st-glass); border: 1px solid var(--st-line); border-radius: var(--st-r-s); }
.st-tr-r .nm { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-tr-r b { flex: none; font-size: 0.95rem; color: #fff; font-variant-numeric: tabular-nums; }
.st-tr-gate { position: relative; display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; column-gap: 12px; row-gap: 6px; width: 100%; min-height: 64px; padding: 10px 14px; text-align: left; font: inherit; color: #eef1ff; cursor: pointer;
  border: var(--st-sub-bw) solid transparent; border-radius: var(--st-r-l); background: var(--st-sub-fill) padding-box, var(--st-sub-rim) border-box; box-shadow: var(--st-sub-shadow); }
.st-tr-gate .ic { grid-row: 1 / 3; width: 40px; height: 40px; border-radius: 50%; background: radial-gradient(circle, #0b1030 0 46%, transparent 47%), conic-gradient(from 0deg, #fff3b8, #dba43a, #8a5a14, #fff3b8); box-shadow: 0 0 12px rgba(255,214,120,0.35); }
.st-tr-gate.ready .ic { box-shadow: 0 0 16px rgba(255,214,120,0.9); }
.st-tr-gate.reached .ic { background: radial-gradient(circle, #ffd45e 0 46%, transparent 47%), conic-gradient(from 0deg, #fff3b8, #dba43a, #8a5a14, #fff3b8); }
.st-tr-gate .tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.st-tr-gate .t { font-family: var(--st-font-head, serif); font-size: 1.05rem; font-weight: 800; color: #fff3c4; letter-spacing: 0.06em; }
.st-tr-gate .d { font-size: 0.78rem; color: #cfd8ff; }
.st-tr-gbar { grid-column: 2; height: 6px; border-radius: 999px; background: rgba(150,170,255,0.2); overflow: hidden; }
.st-tr-gbar i { display: block; height: 100%; background: linear-gradient(90deg, #dba43a, #fff3b8); }
.st-tr-gate:focus-visible, .st-tr-row:focus-visible, .st-tr-dh:focus-visible, .st-tr-zb:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }

/* 流派(v3 phase 3: 装備は無く 3つともいつも働く)の一覧 */
.st-tr-styles { margin: 4px 0 8px; }
.st-tr-styles p { margin: 2px 0; font-size: 0.8rem; }

/* 表示の切り替え・絞り込み */
.st-tr-seg { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 10px 0 8px; }
.st-tr-tab { min-height: 44px; padding: 0 14px; font: inherit; font-size: 0.9rem; font-weight: 800; color: #cfd8ff; cursor: pointer; border-radius: var(--st-r-s); background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); }
.st-tr-tab[aria-pressed="true"] { color: #ffe9a6; background: linear-gradient(rgba(255,214,120,0.2), rgba(255,214,120,0.06)), rgba(14,18,64,0.85); border: 2px solid #ffd45e; box-shadow: 0 0 10px rgba(255,214,120,0.3); }
.st-tr-tab.sm { padding: 0 12px; font-size: 0.82rem; }
.st-tr-tab:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-tr-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 2px; }

/* 方角の札(チップ) */
.st-tr-tag { display: inline-block; padding: 0 7px; font-size: 0.75rem; font-weight: 800; line-height: 1.5; color: #cfd8ff; border: 1px solid rgba(170,190,255,0.5); border-radius: 999px; }
.st-tr-tag.key { color: #2a1704; background: var(--st-plate); border-color: var(--st-plate-edge); }

/* 星の行 */
.st-tr-list { display: grid; gap: 8px; margin: 6px 0; }
.st-tr-row { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; width: 100%; min-height: 72px; padding: 10px 12px 10px 14px; text-align: left; font: inherit; color: #eef1ff; cursor: pointer;
  background: var(--st-glass); border: 1px solid var(--st-line); border-left: 4px solid var(--c, #8ea0ff); border-radius: var(--st-r-s); -webkit-tap-highlight-color: transparent; }
.st-tr-row.can { border-color: rgba(255,212,94,0.7); border-left-color: var(--c); box-shadow: 0 0 12px rgba(255,212,94,0.22); }
.st-tr-row.opened { background: linear-gradient(rgba(24,30,92,0.78), rgba(8,10,44,0.88)); }
.st-tr-row .mn { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.st-tr-row .tp { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.st-tr-row .nm { font-size: 1rem; font-weight: 800; color: #fff; }
.st-tr-row .sb { font-size: 0.78rem; line-height: 1.45; color: #cdd5f7; }
.st-tr-row .mt { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin-top: 2px; font-size: 0.75rem; color: #b9c3ef; }
.st-tr-row .rs { color: #ffcf9a; font-weight: 700; }
.st-tr-row .go { align-self: center; min-width: 52px; padding: 8px 10px; text-align: center; font-size: 0.82rem; font-weight: 800; color: #fff3cf; border: 1px solid rgba(217,180,90,0.6); border-radius: 10px; background: rgba(10,14,60,0.8); }
.st-tr-row.can .go { color: var(--st-plate-text); background: var(--st-plate); border-color: var(--st-plate-edge); }
.st-tr-cost { display: inline-flex; align-items: center; gap: 4px; padding: 1px 7px 1px 4px; font-size: 0.75rem; color: #eef1ff; background: rgba(8,10,44,0.8); border: 1px solid rgba(150,170,255,0.4); border-radius: 999px; }
.st-tr-cost b { font-variant-numeric: tabular-nums; }
.st-tr-cost .st-item-ico { width: 18px; height: 18px; }
.st-tr-cost.short { border-color: #ff8a9a; background: rgba(70,8,24,0.7); }
.st-tr-cost .mk { font-style: normal; font-weight: 800; color: #ffb4bf; }
.st-tr-costs { display: inline-flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; }
.st-tr-free { font-size: 0.75rem; color: #ffe9a6; font-weight: 700; }
.st-tr-bar { position: relative; display: inline-block; width: 64px; height: 6px; border-radius: 999px; background: rgba(150,170,255,0.22); overflow: hidden; vertical-align: middle; }
.st-tr-bar i { position: absolute; left: 0; top: 0; bottom: 0; background: linear-gradient(90deg, #dba43a, #fff3b8); }
.st-tr-bar.big { display: block; width: auto; height: 12px; margin: 10px 2px 4px; overflow: visible; border-radius: 999px; }
.st-tr-bar.big i { border-radius: 999px; }
.st-tr-bar.big i.pv { background: repeating-linear-gradient(45deg, rgba(255,243,184,0.85) 0 4px, rgba(219,164,58,0.85) 4px 8px); }
.st-tr-bar .tick { position: absolute; top: -3px; width: 2px; height: 18px; margin-left: -1px; background: rgba(190,200,255,0.55); }
.st-tr-bar .tick.on { background: #fff3b8; box-shadow: 0 0 6px rgba(255,243,184,0.9); }
.st-tr-max { color: #ffe9a6; font-size: 0.75rem; }

/* 方角の札 */
.st-tr-dir { padding: 6px; background: var(--st-glass); border: 1px solid var(--st-line); border-left: 4px solid var(--c); border-radius: var(--st-r-s); }
.st-tr-dir.done { border-color: rgba(255,212,94,0.7); border-left-color: var(--c); }
.st-tr-dh { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: 'nm' 'dc' 'pg'; align-items: center; gap: 4px 8px; width: 100%; min-height: 64px; padding: 6px 8px; text-align: left; font: inherit; color: #eef1ff; cursor: pointer; background: none; border: 0; }
.st-tr-dh .st-tr-chip { grid-area: ch; }
.st-tr-dh .nm { grid-area: nm; font-size: 1.02rem; font-weight: 800; }
.st-tr-dh .dc { grid-area: dc; font-size: 0.78rem; color: #cdd5f7; }
.st-tr-dh .pg { grid-area: pg; font-size: 0.8rem; font-weight: 800; color: #ffe9a6; }
.st-tr-bonus { margin: 0 8px 6px; font-size: 0.75rem; line-height: 1.55; color: #aeb5d8; }

/* 地図(2026-10-25 v3。深い夜空に薄い星座の線・12本の幹の枝分かれ・丸いメダルの星)。色は方角の色(--c)と金。灯った線は明るく柔らかい光、まだの線は薄く */
.st-tr-mapw { position: relative; margin: 6px 0; }
.st-tr-map { position: relative; height: min(66vh, 112vw); max-height: 620px; min-height: 320px; overflow: hidden; touch-action: none; cursor: grab; user-select: none; -webkit-user-select: none; border-radius: var(--st-r-l); border: 1px solid var(--st-line);
  background: radial-gradient(circle at 50% 50%, rgba(84,62,140,0.42) 0%, rgba(20,26,76,0) 42%), radial-gradient(circle at 50% 50%, #131c49 0%, #0a0f2f 52%, #03041a 100%);
  box-shadow: inset 0 0 40px rgba(0,0,0,0.55); }
.st-tr-map:active { cursor: grabbing; }
/* 長押し(地図): メダルの外側の輪が 0.6 秒で一周する。離す・動く・メダルから外れると戻る */
/* 灯った線の流れ: 動く明るい破線 + 小さな光の粒(粒は SMIL。stella-stage-tree.js が灯った線にだけ作る)。止める・作らない条件は JS(flowSync)と下の still・hd-reduce */
/* 稲妻(参考: 電線を走る電気): 白〜淡い青の芯 + 方角の色のぼんやりした帯(線の下に静止して敷く) + ときどき飛ぶ小さな火花。SVG フィルターは使わない。作る・動かす条件は JS(boltsRebuild・flowSync) */
.st-tr-gsc { transform: scale(var(--kg, 1)); }
.st-tr-gateg.ready .st-tr-gglow { opacity: 1; animation: stTrPulse 2.2s ease-in-out infinite; }
.st-tr-gateg.reached .st-tr-gglow { opacity: 0.8; }
.st-tr-chip { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; padding: 1px 9px 1px 7px; font-size: 0.75rem; font-weight: 800; line-height: 1.5; color: #eef1ff; white-space: nowrap; border-radius: 999px; border: 1px solid var(--c, #8ea0ff); background: rgba(8,10,44,0.75); }
.st-tr-chip::before { content: ''; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--c, #8ea0ff); box-shadow: 0 0 6px var(--c, #8ea0ff); }
.st-tr-chip.gold { --c: #ffd45e; }
.st-tr-cv { position: absolute; left: 0; top: 0; display: block; }
.st-tr-zoom { display: flex; justify-content: flex-end; gap: 8px; margin-top: 8px; }
.st-tr-zb { min-width: 48px; min-height: 44px; padding: 0 8px; font: inherit; font-size: 0.95rem; font-weight: 800; color: var(--st-sub-text); cursor: pointer; border: 2px solid transparent; border-radius: var(--st-r-s); background: var(--st-sub-fill) padding-box, var(--st-sub-rim) border-box; box-shadow: var(--st-sub-shadow); }
/* 全画面の地図(2026-10-25 v4。オーナー: 地図が画面いっぱい。上の帯・地図/リスト・拡大の釦・「?」は地図の上に重ねる)。#stTree に st-tr-full が付いている間だけ */
.st-tree.st-tr-full { position: fixed; left: 0; right: 0; top: 0; bottom: var(--st-tb, 0px); z-index: 4; margin: 0; padding: 0; max-width: none; overflow: hidden; background: #03041a; overscroll-behavior: none; }
.st-tree.st-tr-full > .hd-head { display: none; }
.st-tree.st-tr-full #stTreeBody { position: absolute; inset: 0; padding: 0; }
.st-tr-fullw { position: absolute; inset: 0; }
.st-tr-ovl { position: absolute; inset: 0; z-index: 3; pointer-events: none; }
.st-tr-ovl > * { pointer-events: auto; touch-action: none; }
.st-tr-scroll { position: absolute; inset: 0; overflow-y: auto; overscroll-behavior: contain; touch-action: pan-y; box-sizing: border-box; padding: 0 max(12px, env(safe-area-inset-left, 0px)); }
.st-tr-sin { max-width: 720px; margin: 0 auto; }
.st-tr-fullw .st-tr-mapw { position: absolute; inset: 0; margin: 0; }
.st-tr-fullw .st-tr-map { position: absolute; inset: 0; height: auto; max-height: none; min-height: 0; border: 0; border-radius: 0; }
.st-tr-strip { max-width: 760px; margin: 0 auto; position: absolute; z-index: 3; left: max(8px, env(safe-area-inset-left, 0px)); right: max(8px, env(safe-area-inset-right, 0px)); top: calc(8px + env(safe-area-inset-top, 0px)); display: flex; flex-direction: column; gap: 6px; padding: 6px; border: 1px solid rgba(255,214,120,0.35); border-radius: var(--st-r-l, 14px); background: rgba(6,9,34,0.72); pointer-events: auto; }
.st-tr-strip .st-tr-top { display: flex; align-items: center; gap: 8px; min-width: 0; }
.st-tr-strip .st-tr-sback { flex: none; min-width: 56px; min-height: 44px; }
.st-tr-strip .st-tr-gate { flex: 1 1 auto; min-width: 0; margin: 0; min-height: 44px; padding: 4px 10px; grid-template-columns: 32px minmax(0, 1fr); column-gap: 8px; row-gap: 3px; }
.st-tr-strip .st-tr-gate .ic { width: 30px; height: 30px; }
.st-tr-strip .st-tr-gate .t { font-size: 0.92rem; }
.st-tr-strip .st-tr-gate .d { font-size: 0.75rem; }
.st-tr-strip .st-tr-res { margin: 0; gap: 4px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.st-tr-strip .st-tr-r { min-height: 32px; gap: 4px; padding: 2px 6px; justify-content: space-between; }
.st-tr-strip .st-tr-r .nm { display: none; }
.st-tr-strip .st-tr-r b { font-size: 0.78rem; }
.st-tr-pill { position: absolute; z-index: 3; left: max(8px, env(safe-area-inset-left, 0px)); bottom: 10px; display: flex; gap: 0; padding: 3px; border: 1px solid rgba(255,214,120,0.35); border-radius: 999px; background: rgba(6,9,34,0.72); }
.st-tr-pill .st-tr-seg { margin: 0; display: flex; gap: 2px; }
.st-tr-pill .st-tr-tab { min-height: 44px; min-width: 64px; padding: 0 12px; border-radius: 999px; }
.st-tr-fabs { position: absolute; z-index: 3; right: max(8px, env(safe-area-inset-right, 0px)); bottom: 10px; display: flex; flex-direction: column; gap: 8px; align-items: flex-end; }
.st-tr-fabs .st-tr-zb { background-color: rgba(6,9,34,0.72); }
.st-tr-qb { min-width: 48px; min-height: 44px; padding: 0; font: inherit; font-size: 1rem; font-weight: 800; color: var(--st-sub-text); cursor: pointer; border: 2px solid transparent; border-radius: 50%; background: var(--st-sub-fill) padding-box, var(--st-sub-rim) border-box; box-shadow: var(--st-sub-shadow); }
.st-tr-qb:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
/* 盤の色(2026-10-26。星「盤の彩」)。#stTree に付く CSS 変数 --tr-*(stella-stage-tree.js の applyBoard が付ける)と .st-tr-tint で、星図の夜空と上の帯・地図/リスト・右の丸い釦だけを飾りの色に変える。金(既定)は何も付かない = 上の元の見た目 */
.st-tr-bcb { display: inline-flex; align-items: center; justify-content: center; }
.st-tr-bcb svg { display: block; }
.st-tr-tint .st-tr-map { background: radial-gradient(circle at 50% 50%, var(--tr-neb) 0%, rgba(20,26,76,0) 42%), radial-gradient(circle at 50% 50%, var(--tr-sky0) 0%, var(--tr-sky1) 52%, var(--tr-sky2) 100%); }
.st-tree.st-tr-full.st-tr-tint { background: var(--tr-sky2); }
.st-tr-tint .st-tr-ovl .st-tr-gate, .st-tr-tint .st-tr-ovl .st-tr-zb, .st-tr-tint .st-tr-ovl .st-tr-qb { background: var(--tr-fill) padding-box, var(--tr-rim) border-box; box-shadow: var(--tr-shadow); }
.st-tr-tint .st-tr-ovl .st-tr-zb, .st-tr-tint .st-tr-ovl .st-tr-qb { color: var(--tr-text); }
.st-tr-tint .st-tr-strip, .st-tr-tint .st-tr-pill { border-color: var(--tr-line); background: var(--tr-glass); }
.st-tr-tint .st-tr-ovl .st-tr-fabs .st-tr-zb { background-color: var(--tr-glass); }
.st-tr-tint .st-tr-pop { border-color: var(--tr-line2); background: var(--tr-pop); }
.st-tr-tint .st-tr-ovl .st-tr-gate .ic { background: radial-gradient(circle, var(--tr-ic) 0 46%, transparent 47%), conic-gradient(from 0deg, var(--tr-hi), var(--tr-mid), var(--tr-lo), var(--tr-hi)); box-shadow: 0 0 12px var(--tr-glow); }
.st-tr-tint .st-tr-ovl .st-tr-gate.ready .ic { box-shadow: 0 0 16px var(--tr-glow2); }
.st-tr-tint .st-tr-ovl .st-tr-gate.reached .ic { background: radial-gradient(circle, var(--tr-acc) 0 46%, transparent 47%), conic-gradient(from 0deg, var(--tr-hi), var(--tr-mid), var(--tr-lo), var(--tr-hi)); }
.st-tr-tint .st-tr-ovl .st-tr-gate .t { color: var(--tr-t); }
.st-tr-tint .st-tr-ovl .st-tr-gate .d { color: var(--tr-d); }
.st-tr-tint .st-tr-ovl .st-tr-gbar { background: var(--tr-gbar); }
.st-tr-tint .st-tr-ovl .st-tr-gbar i { background: linear-gradient(90deg, var(--tr-mid), var(--tr-hi)); }
.st-tr-tint .st-tr-ovl .st-tr-tab { color: var(--tr-tabt); background: var(--tr-tab); }
.st-tr-tint .st-tr-ovl .st-tr-tab[aria-pressed="true"] { color: var(--tr-tabon); background: var(--tr-tabonbg); border-color: var(--tr-acc); box-shadow: 0 0 10px var(--tr-tabglow); }
/* 盤の色の一覧(詳細のパネル): 見本の丸(外 = 空の色、中 = 飾りの色)+ 名前 + 使用中 / 解放の段 */
.st-tr-bl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 8px 0; }
.st-tr-bc { display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: center; column-gap: 10px; min-height: 52px; padding: 6px 10px; text-align: left; font: inherit; color: #eef1ff; cursor: pointer; border: 1px solid var(--st-line); border-radius: var(--st-r-s); background: rgba(10,14,60,0.7); }
.st-tr-bc .sw { grid-row: 1 / 3; width: 32px; height: 32px; border-radius: 50%; border: 2px solid var(--a, #ffd45e); background: radial-gradient(circle at 50% 50%, var(--a, #ffd45e) 0 30%, transparent 33%), radial-gradient(circle at 50% 50%, var(--s, #131c49) 0%, #03041a 100%); box-shadow: 0 0 8px rgba(0,0,0,0.5); }
.st-tr-bc .nm { font-size: 0.9rem; }
.st-tr-bc .sb { min-height: 1em; font-size: 0.75rem; color: #b9c3ef; }
.st-tr-bc.on { border-color: #ffd45e; background: var(--st-sub-on-fill); box-shadow: 0 0 10px rgba(255,214,120,0.35); }
.st-tr-bc.on .sb { color: #ffe9a6; font-weight: 800; }
.st-tr-bc.lock { opacity: 0.55; }
.st-tr-bc:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
/* 戻るの釦(上の帯の左): 帯の他の部品と同じく盤の色に(.hd-btn.ghost の金縁の指定より強くする) */
.st-tree.st-tr-tint .st-tr-ovl .hd-btn.ghost.st-tr-sback { color: var(--tr-text); background: var(--tr-fill) padding-box, var(--tr-rim) border-box; box-shadow: var(--tr-shadow); }
/* 見た目のシート: 背景の見本(小さな絵。いつもの背景は絵なしの夜空)・2 つ並び */
.st-tr-h3 + .st-tr-bl { margin-top: 4px; }
.st-tr-bc .th { grid-row: 1 / 3; width: 72px; height: 40px; border-radius: 6px; overflow: hidden; border: 1px solid rgba(255,214,120,0.5); background: radial-gradient(circle at 50% 50%, #131c49 0%, #03041a 100%); }
.st-tr-bc .th img { display: block; width: 100%; height: 100%; object-fit: cover; }
.st-tr-bl.bg .st-tr-bc { grid-template-columns: 72px minmax(0, 1fr); }

.st-tr-pop { position: absolute; z-index: 4; right: calc(max(8px, env(safe-area-inset-right, 0px)) + 60px); bottom: 10px; width: min(300px, calc(100% - 90px)); padding: 10px 12px; border: 1px solid rgba(255,214,120,0.5); border-radius: var(--st-r-l, 14px); background: rgba(6,9,34,0.94); box-shadow: 0 6px 24px rgba(0,0,0,0.6); }
.st-tr-pop[hidden] { display: none; }
.st-tr-pop .st-tr-legend { margin: 0 0 6px; flex-direction: column; }
.st-tr-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 8px 2px 0; padding: 0; list-style: none; font-size: 0.75rem; color: #cdd5f7; }
.st-tr-legend li { display: inline-flex; align-items: center; gap: 6px; }
.st-tr-legend .sw { display: inline-block; width: 13px; height: 13px; border-radius: 50%; border: 2px solid #5b6699; background: #0a0f33; }
.st-tr-legend .sw.on { background: #6a4d12; border-color: #ffd45e; }
.st-tr-legend .sw.can { border-color: #ffd45e; box-shadow: 0 0 0 3px rgba(255,212,94,0.45); }
.st-tr-legend .sw.off { opacity: 0.6; }
.st-tr-legend .sw.key { border-radius: 3px; transform: rotate(45deg); border-color: #e0b04a; }

/* シート(下から。確認のダイアログ stDlg(8)より下、下のタブ(5)より上)*/
.st-trs-bg { position: fixed; left: 0; right: 0; bottom: var(--st-tb, 0px); top: auto; z-index: 6; display: flex; align-items: flex-end; justify-content: center; background: none; pointer-events: none; }   /* 非モーダル: 幕は無く、パネルの外は地図のまま触れる */
.st-trs-bg > .st-trs { pointer-events: auto; max-height: min(30vh, 30dvh); padding-bottom: 0; transition: transform 0.18s ease-out; }
.st-trs-bg > .st-trs.acts { max-height: min(38vh, 38dvh); }
.st-trs-bg > .st-trs.big { max-height: min(70vh, 70dvh); }
.st-trs .st-fs-foot { display: none; }
/* 地図の細い帯: 画面の 12〜15%。名前・段 / 効果と次の費用(または開けない理由)だけ */
.st-trs-bg > .st-trs.bar { max-height: min(15vh, 15dvh); min-height: min(11vh, 11dvh); border-radius: 14px 14px 0 0; touch-action: none; }
.st-trs.bar .st-fs-head { display: none; }
.st-trs.bar .st-trs-grab { padding: 5px 0 0; }   /* 帯にも細いつまみ = 上に引っ張れる合図 */
.st-trs.bar .st-trs-grab i { width: 36px; height: 4px; }
/* 広げた帯(上へ払う・タップ): 説明を全文。高さは中身まで(最大で画面の半分)、あふれたら帯の中だけスクロール */
.st-trs-bg > .st-trs.bar.open { max-height: min(50vh, 50dvh); touch-action: auto; }
.st-trs.bar.open .st-trs-grab, .st-trs.bar.open .st-tr-bar2 .l1 { touch-action: none; }
.st-trs.bar.open .st-trs-body { overflow-y: auto; overscroll-behavior: contain; touch-action: pan-y; }
.st-trs.bar.open .st-tr-bar2 { gap: 8px; }
.st-trs.bar.open .st-tr-bar2 .l2 { flex-direction: column; align-items: stretch; gap: 8px; }
.st-trs.bar.open .st-tr-bar2 .sub { display: block; -webkit-line-clamp: unset; overflow: visible; font-size: 0.88rem; line-height: 1.6; color: #e4e9ff; }
.st-trs.bar.open .st-tr-bar2 .rt { max-width: none; justify-content: flex-start; }
.st-trs.bar.open .st-tr-bar2 .rt .st-tr-costs { flex-wrap: wrap; }
.st-trs.bar .st-trs-body { padding: 8px 12px 8px; overflow: hidden; }
.st-tr-bar2 { display: flex; flex-direction: column; gap: 4px; }
.st-tr-bar2 .l1 { display: flex; align-items: center; gap: 8px; min-width: 0; }
.st-tr-bar2 .dot { flex: none; width: 10px; height: 10px; border-radius: 50%; box-shadow: 0 0 6px currentColor; }
.st-tr-bar2 .nm { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 1rem; font-weight: 800; color: #fff; }
.st-tr-bar2 .stp { flex: none; font-size: 0.85rem; font-weight: 800; color: #cfd8ff; font-variant-numeric: tabular-nums; }
.st-tr-bar2 .stp.max { color: #ffd45e; }
.st-tr-bar2 .x { flex: none; width: 44px; height: 32px; margin: -6px -8px -6px 0; border: 0; background: none; color: #cfd8ff; font-size: 1rem; cursor: pointer; }
.st-tr-bar2 .l2 { display: flex; align-items: center; gap: 10px; min-width: 0; }
.st-tr-bar2 .sub { flex: 1 1 auto; min-width: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 0.78rem; line-height: 1.4; color: #cdd5f7; }
.st-tr-bar2 .rt { flex: none; min-width: 0; max-width: 52%; display: inline-flex; align-items: center; justify-content: flex-end; }
.st-tr-bar2 .rt .st-tr-costs { gap: 4px; flex-wrap: nowrap; }
.st-tr-bar2 .rt .mk { display: none; }
.st-tr-bar2 .rt .st-tr-cost.short b { color: #ff7d8d; }
.st-tr-bar2 .rt .why { min-width: 0; overflow: hidden; text-overflow: ellipsis; font-size: 0.78rem; font-weight: 800; color: #ffb4bf; white-space: nowrap; }   /* 1 行(長いときは … で省く) */
.st-tr-bar2 .rt .st-tr-max { font-size: 0.85rem; color: #ffd45e; }
.st-trs-grab { flex: none; display: flex; justify-content: center; padding: 8px 0 0; touch-action: none; cursor: grab; }
.st-trs-grab i { display: block; width: 44px; height: 5px; border-radius: 3px; background: rgba(190,205,255,0.5); }
.st-trs .st-fs-head { touch-action: none; padding-top: 2px; }
.st-trs .st-tr-acts { position: sticky; bottom: 0; z-index: 1; margin: 8px 0 0; padding: 8px 0 6px; background: linear-gradient(rgba(8,10,40,0), rgba(8,10,40,0.97) 22%); }
body:has(#stTrBg:not([hidden])) .st-tr-scroll { padding-bottom: 42vh; }
.st-trs-bg[hidden] { display: none; }
.st-trs { border-top: 3px solid var(--c, var(--st-gold)); position: relative; }
.st-trs.in { animation: stFsUp 0.22s ease-out; }
.st-trs-body { padding-bottom: 12px; }
.st-tr-sh { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 2px 0 6px; }
.st-tr-sh-m { font-size: 0.78rem; font-weight: 700; color: #cfd8ff; }
.st-tr-sub { margin: 4px 0 10px; font-size: 0.92rem; line-height: 1.65; color: #f0f0f5; }
.st-tr-where { margin: 12px 2px 0; font-size: 0.75rem; color: #8d95bd; }
.st-tr-req { margin: 6px 0; padding: 0; list-style: none; display: grid; gap: 6px; }
.st-tr-req li { display: flex; align-items: flex-start; gap: 8px; font-size: 0.85rem; line-height: 1.5; color: #e4e9ff; }
.st-tr-req li.sub { padding-left: 28px; font-size: 0.75rem; color: #aeb5d8; }
.st-tr-req .mk, .st-tr-trial .mk, .st-tr-m .mk { flex: none; width: 20px; height: 20px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-style: normal; font-size: 0.75rem; font-weight: 800; line-height: 1; }
.st-tr-req li.ok .mk, .st-tr-trial.done .mk, .st-tr-m.done .mk { color: #2a1704; background: var(--st-plate); }
.st-tr-req li.no .mk { color: #ffb4bf; border: 1px solid #ff8a9a; }
.st-tr-trial, .st-tr-m { display: flex; align-items: flex-start; gap: 8px; margin: 6px 0; font-size: 0.82rem; line-height: 1.5; color: #dfe5ff; }
.st-tr-trial .tx { display: flex; flex-direction: column; }
.st-tr-trial small { font-size: 0.75rem; color: #b9c3ef; }
.st-tr-trial .mk, .st-tr-m .mk { color: #aeb5d8; border: 1px solid rgba(170,190,255,0.4); }
.st-tr-costrow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 10px 0 4px; }
.st-tr-costrow .lb { font-size: 0.8rem; font-weight: 800; color: #ffe9a6; }
.st-tr-acts { display: grid; grid-template-columns: 1fr; gap: 8px; margin: 10px 0 4px; }
.st-tr-acts.three { grid-template-columns: 1.4fr 1fr 1.2fr; }
.st-tr-acts .hd-btn { min-height: 48px; }
.st-tr-go { font-size: 1.05rem; }
.st-tr-go[aria-disabled="true"], .st-tr-acts .hd-btn[aria-disabled="true"], .st-tr-nrow .hd-btn[aria-disabled="true"], .st-tr-respec .hd-btn[aria-disabled="true"] { opacity: 0.5; filter: saturate(0.5); }
.st-tr-stp { margin: 2px 4px 6px; font-size: 0.85rem; color: #cfd8ff; }
.st-tr-stp b { font-size: 1.35rem; color: #fff; font-variant-numeric: tabular-nums; }
.st-tr-ms { margin-top: 8px; }
.st-tr-bonusbox { display: grid; gap: 3px; margin: 6px 0 10px; padding: 8px 12px; border: 1px solid rgba(170,190,255,0.4); border-radius: var(--st-r-s); background: rgba(8,10,44,0.7); }
.st-tr-bonusbox b { font-size: 0.85rem; color: #ffe9a6; }
.st-tr-bonusbox span { font-size: 0.88rem; color: #fff; }
.st-tr-bonusbox small { font-size: 0.75rem; color: #aeb5d8; line-height: 1.5; }
.st-tr-bonusbox.done { border-color: #ffd45e; box-shadow: 0 0 10px rgba(255,212,94,0.25); }
.st-tr-respec { margin-top: 14px; padding-top: 4px; border-top: 1px solid var(--st-line); }
.st-tr-respec .hd-btn { min-height: 48px; width: 100%; }
.st-tr-chips2 { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }
.st-tr-nrow { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--st-line); border-left: 4px solid var(--c); border-radius: var(--st-r-s); background: var(--st-glass); }
.st-tr-nrow .mn { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.st-tr-nrow .nm { font-size: 0.92rem; font-weight: 800; }
.st-tr-nrow .sb { font-size: 0.75rem; color: #cdd5f7; line-height: 1.45; }
.st-tr-nrow .st { font-size: 0.75rem; color: #ffe9a6; }
.st-tr-nrow .hd-btn { min-width: 76px; min-height: 44px; }
.st-tr-unit { margin: 6px 2px 0; padding: 6px 10px; font-size: 0.78rem; line-height: 1.6; color: #e4e9ff; border: 1px solid rgba(255,212,94,0.45); border-radius: var(--st-r-s); background: rgba(40,30,8,0.35); }
.st-tr-unit b { color: #ffe9a6; margin-right: 4px; }
.st-tr-busy { cursor: progress; }
.st-tr-busy .st-tr-go, .st-tr-busy .st-tr-acts .hd-btn { pointer-events: none; opacity: 0.6; }

.st-trs .st-tr-row .tp .st-tr-chip { display: none; }   /* 方角のシートの中では、方角の札は繰り返さない */

/* 10段ごとのきらめき */
.st-tr-spark { position: absolute; left: 50%; top: 38%; width: 0; height: 0; pointer-events: none; z-index: 2; }
.st-tr-spark i { position: absolute; left: -4px; top: -4px; width: 8px; height: 8px; background: #fff3b8; border-radius: 50%; box-shadow: 0 0 8px #ffd45e; opacity: 0; animation: stTrSpark 0.8s ease-out forwards; }
@keyframes stTrSpark { 0% { opacity: 1; transform: rotate(var(--a)) translateY(0) scale(1); } 100% { opacity: 0; transform: rotate(var(--a)) translateY(calc(var(--d) * -1)) scale(0.3); } }
.st-tr-spark.still { width: 120px; height: 120px; margin: -60px 0 0 -60px; border-radius: 50%; border: 3px solid #ffd45e; box-shadow: 0 0 20px rgba(255,212,94,0.6); opacity: 0; animation: stTrStill 0.8s ease-out forwards; }
@keyframes stTrStill { 0% { opacity: 0.9; } 100% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-tr-spark.still { animation-duration: 0.01s; } }

/* 星屑占い(ガチャ画面の下。有料のガチャとは分けた別のブロック) */
.st-fortune { margin-top: 30px; padding-top: 16px; border-top: 2px dashed rgba(170,190,255,0.4); }
.st-fortune .st-gc-sechead { justify-content: flex-start; }
.st-fortune .st-gc-sectitle { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; clip-path: none; white-space: normal; font-size: 1.05rem; }
.st-fo-card { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--st-line); border-radius: var(--st-r-l); background: var(--st-glass); }
.st-fo-lead { margin: 0; font-size: 0.8rem; line-height: 1.6; color: #cdd5f7; }
.st-fo-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }   /* 長い言語(th・de・pt-BR)ではボタンが次の行へ回る */
.st-fo-tk { display: inline-flex; align-items: center; gap: 8px; font-size: 0.9rem; color: #eef1ff; }
.st-fo-tk b { font-size: 1.1rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.st-fo-go { min-height: 48px; min-width: 132px; }
.st-fo-go[aria-disabled="true"] { opacity: 0.5; filter: saturate(0.5); }
.st-fo-note { margin: 0; font-size: 0.75rem; line-height: 1.6; color: #aeb5d8; }
.st-fo-res { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; font-size: 0.85rem; color: #fff; border: 1px solid rgba(255,212,94,0.5); border-radius: var(--st-r-s); background: rgba(40,30,8,0.35); }
.st-fo-res b { font-size: 0.75rem; color: #ffe9a6; }
.st-fo-odds { width: 100%; border-collapse: collapse; font-size: 0.8rem; color: #e4e9ff; }
.st-fo-odds caption { text-align: left; padding: 2px 0 4px; font-size: 0.75rem; color: #ffe9a6; font-weight: 800; }
.st-fo-odds th { text-align: left; font-weight: 600; padding: 6px 4px; border-top: 1px solid var(--st-line); }
.st-fo-odds td { text-align: right; font-weight: 800; padding: 6px 4px; border-top: 1px solid var(--st-line); font-variant-numeric: tabular-nums; }

/* 星の坑道(出撃の画面のカード・出撃の確認) */
.st-mine { display: grid; gap: 4px; margin: 6px 2px 2px; padding: 8px 10px; border: 1px solid rgba(255,212,94,0.4); border-radius: var(--st-r-s); background: rgba(40,30,8,0.3); }
.st-mine-tag { justify-self: start; padding: 0 9px; font-size: 0.75rem; font-weight: 800; line-height: 1.6; color: #cfd8ff; border: 1px solid rgba(170,190,255,0.5); border-radius: 999px; }
.st-mine-tag.on { color: var(--st-plate-text); background: var(--st-plate); border-color: var(--st-plate-edge); }
.st-mine-t { font-size: 0.82rem; font-weight: 700; color: #fff; line-height: 1.5; }
.st-mine-s { font-size: 0.75rem; color: #aeb5d8; line-height: 1.5; }

/* 周回スキップの報酬 */
.st-skipres-l { display: grid; gap: 6px; margin: 8px 0 0; padding: 0; list-style: none; }
.st-skipres-l li { display: flex; align-items: center; gap: 10px; min-height: 40px; font-size: 0.9rem; color: #fff; }
.st-skipres-l li .nm { flex: 1 1 auto; }
.st-skipres-l li b { font-variant-numeric: tabular-nums; color: #ffe9a6; }
.st-skipres-l li.none { color: #aeb5d8; }
.st-glyph { display: inline-flex; align-items: center; justify-content: center; }
/* ================================ /星座盤 ================================ */

/* ロビーの背景(星「夜の帳」。2026-10-26): #space の中・宇宙の背景の上、ロビーの部品の後ろ。画面いっぱいに覆って、ゆっくり左右に動く(transform だけ = GPU)。
   横幅 = 高さ x 16:9(画面が横長でも覆う)。動きは stella-stage.js の lbPanStart(Web Animations。1秒に5ピクセルの一定の速さ、端だけ4秒で加減速、往復)。
   ここは止まっているときの見た目(中央)。動きを減らす設定・ページが裏のあいだは、スクリプトが動かさない/止める */
.st-lbbg { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.st-lbbg[hidden] { display: none; }
.st-lbbg::after { content: ''; position: absolute; inset: 0; background: linear-gradient(rgba(4,6,24,0.55), rgba(4,6,24,0.26) 24%, rgba(4,6,24,0.26) 60%, rgba(4,6,24,0.64)); }   /* 読みやすさのための暗いかぶせ(約 3 割。上下は濃いめ) */
.st-lbbg-img { position: absolute; left: 0; top: 50%; height: max(100%, calc(var(--lbw, 100vw) * 0.5625)); width: auto; max-width: none; transform-origin: 50% 50%; will-change: transform; backface-visibility: hidden; user-select: none;
  transform: translate3d(calc((var(--lbw, 100vw) - 100%) / 2), -50%, 0) scale(1.04); }
/* PC のロビー(2026-10-30。html.ad-pc = site-ads.js が端末の User-Agent で付ける。無ければ今までどおり)。
   (1) ロビーの列は 760px(下のメニューも 760px。ほかの画面と同じ幅)。画面の幅 800px 以上・高さ 650px 以上のとき。3 体のパーティーは全員が切れずに表示される(下の --lead-h)(.st-lb-party の --lead-h は幅からも決める)。
   (2) 左右の広告(site-ads.css の .site-ad-rail)は画面の端から 24px。背景の絵は、2 つの広告の内側の端のあいだの帯だけ(帯の幅 = 画面の幅 - 2 x (24 + 広告の幅))。
       広告の幅は 画面の幅 1456px 以上 = 300、1176px 以上 = 160、それより狭い = 広告も帯も無し(全面の絵。今までどおり)。帯は最も狭くても 808px(列 760px + 48px)。
       帯の外側は絵の無い、落ち着いた暗い色(サイトの #04051a = body の色)。広告が実際に出る出ないにかかわらず、広告を出せる条件(ロビー・高さ 650px 以上)のときだけ。
       オープニングの間も同じ形にして、終わったときに絵が動かないようにする。
   やり方: 背景(#space = canvas 1枚の #bgCv も、DOM の絵 .bgl も、ロビーの背景絵 .st-lbbg もこの中)の箱そのものを帯の幅にする。絵は帯の高さに合わせて作り直し(hexdrop.js の bgGeomBand・stella-stage.js の lbPanPlan が箱の幅を見る)、
   ゆっくりのパンは帯の中で絵の端から端まで動く(速さ = ピクセル/秒は今のまま)。箱の外は何も描かない(overflow: hidden)。動くのは transform だけ・backdrop-filter も mask も使わない。
   帯の左右の端は、動かない細い層 1 枚で、内側へ 32px だけ暗い色になだらかに溶かす(広告の下には絵が出ない)。 */
@media (min-width: 800px) and (min-height: 650px) {
  html.ad-pc body.st-in-lobby .hd-page { max-width: 760px; }
  html.ad-pc body.st-in-lobby .st-tabbar { max-width: 760px; }
  html.ad-pc body.st-in-lobby .st-actions { padding-left: 16px; padding-right: 16px; }
}
/* 3 体のリング(正面 + 左右)は、高さいっぱいまで大きくする(背の高い画面で上下が空かないように)。リングの片側の広がり = 正面のカードの幅(0.6 x --lead-h)の 1.08 倍 = 0.648 x --lead-h。
   リングは 760px の列からはみ出してよい(帯の中・広告の内側まで)。右のアイコンの列(メニュー・プレゼント・盟友・ログボ。幅 約 66px)は、右のカードのすぐ外(12px)へ動かす = カードと重ならない。
   --lead-h = min(900px, 高さ(100cqh - 34px。パーティー HP の行の分を引く), 幅の上限)。幅の上限 = (帯の半分の幅 - アイコンの列 86px) / 0.648。帯の半分の幅は、広告の内側の端まで(1456px 以上: 50vw - 324px、
   1176px 以上: 50vw - 184px)、広告が無い狭い画面は画面の端まで(50vw - 8px)。広告の下・画面の外・アイコンの列には入らない。リングがはみ出すので、列の横の切り落とし(overflow-x: clip)は外す(ロビーは横にスクロールしない) */
@supports (height: 1cqh) {
  @media (min-width: 800px) and (min-height: 650px) {
    html.ad-pc body.st-in-lobby .hd-page { overflow-x: visible; }
    html.ad-pc body.st-in-lobby :is(.st-lb-party, .st-lb-side, .st-lb-pop) { --lead-h: max(110px, min(900px, calc(100cqh - 34px), calc((50vw - 94px) / 0.648))); }
    html.ad-pc body.st-in-lobby .st-lb-side { right: auto; left: calc(50% + var(--lead-h) * 0.648 + 12px); }
    html.ad-pc body.st-in-lobby .st-lb-sideL { left: auto; right: calc(50% + var(--lead-h) * 0.648 + 12px); }
    html.ad-pc body.st-in-lobby .st-lb-pop { right: calc(50% - var(--lead-h) * 0.648 - 4px); }
  }
  @media (min-width: 1176px) and (min-height: 650px) {
    html.ad-pc body.st-in-lobby :is(.st-lb-party, .st-lb-side, .st-lb-pop) { --lead-h: max(110px, min(900px, calc(100cqh - 34px), calc((50vw - 270px) / 0.648))); }
  }
  @media (min-width: 1456px) and (min-height: 650px) {
    html.ad-pc body.st-in-lobby :is(.st-lb-party, .st-lb-side, .st-lb-pop) { --lead-h: max(110px, min(900px, calc(100cqh - 34px), calc((50vw - 410px) / 0.648))); }
  }
}
/* 帯(上の (2))は、ロビーだけでなく全部の画面(星座盤も)。左右の広告を全部の画面に出すため(2026-10-30 同日。site-ads.css)。全画面の星座盤の地図も帯の中に収める(広告の上に重ねない)。
   戦闘(body.st-in-battle)は、盤などの大きさは変えず、余った横の幅に入る広告を出す(オーナー 2026-10-30): 戦闘の列 520px の左に敵の情報の欄(14 + 196px)がある = 真ん中から左へ 470px。
   広告の内側の端がそれより 8px 以上外 = 300 は 1604px 以上(50vw - 324 >= 478)、160 は 1324px 以上(50vw - 184 >= 478)。帯はその広告の内側まで。1324px 未満の戦闘は広告も帯も無し(全面の絵) */
@media (min-width: 1176px) and (min-height: 650px) {
  html.ad-pc body[data-ad-rails^="stella"]:not(.st-in-battle) #space { left: 184px; right: auto; width: calc(100% - 368px); --lbw: calc(100vw - 368px); }
  html.ad-pc body[data-ad-rails^="stella"]:not(.st-in-battle)::before { content: ''; position: fixed; top: 0; bottom: 0; left: 184px; width: calc(100% - 368px); z-index: 1; pointer-events: none;
    background: linear-gradient(90deg, #04051a, rgba(4, 5, 26, 0) 32px, rgba(4, 5, 26, 0) calc(100% - 32px), #04051a); }
  html.ad-pc body[data-ad-rails^="stella"] .st-tree.st-tr-full { left: 184px; right: 184px; }
}
@media (min-width: 1456px) and (min-height: 650px) {
  html.ad-pc body[data-ad-rails^="stella"]:not(.st-in-battle) #space { left: 324px; width: calc(100% - 648px); --lbw: calc(100vw - 648px); }
  html.ad-pc body[data-ad-rails^="stella"]:not(.st-in-battle)::before { left: 324px; width: calc(100% - 648px); }
  html.ad-pc body[data-ad-rails^="stella"] .st-tree.st-tr-full { left: 324px; right: 324px; }
}
@media (min-width: 1324px) and (min-height: 650px) {
  html.ad-pc body[data-ad-rails^="stella"].st-in-battle #space { left: 184px; right: auto; width: calc(100% - 368px); --lbw: calc(100vw - 368px); }
  html.ad-pc body[data-ad-rails^="stella"].st-in-battle::before { content: ''; position: fixed; top: 0; bottom: 0; left: 184px; width: calc(100% - 368px); z-index: 1; pointer-events: none;
    background: linear-gradient(90deg, #04051a, rgba(4, 5, 26, 0) 32px, rgba(4, 5, 26, 0) calc(100% - 32px), #04051a); }
}
@media (min-width: 1604px) and (min-height: 650px) {
  html.ad-pc body[data-ad-rails^="stella"].st-in-battle #space { left: 324px; width: calc(100% - 648px); --lbw: calc(100vw - 648px); }
  html.ad-pc body[data-ad-rails^="stella"].st-in-battle::before { left: 324px; width: calc(100% - 648px); }
}
/* バッジ(称号): メダル(SVG)・プロフィールの行・コレクション */
.st-bd { display: inline-flex; flex: none; line-height: 0; }
.st-bd svg { display: block; }
.st-bd.lock { opacity: 0.4; filter: grayscale(0.85); }
.st-bd.lock .glow { display: none; }
/* プロフィールのバッジ: キャラの絵の左側に、メダルだけを縦に小さく並べる(絵の右上の「お気に入りを変える」とは重ならない)。自分は未選択のとき点線の「+」 */
.st-fr-pbadges { position: absolute; left: -44px; top: 50%; transform: translateY(-50%); z-index: 1; display: flex; flex-direction: column; gap: 4px; }
.st-fr-pbd { display: grid; place-items: center; width: 40px; height: 40px; min-height: 40px; margin: 0; padding: 0; font: inherit; color: #cfd8ff; cursor: pointer; border: 1px solid rgba(255,214,120,0.35); border-radius: 50%; background: rgba(6,8,30,0.55); }
.st-fr-pbd.add { font-size: 1.25rem; font-weight: 800; line-height: 1; border-style: dashed; opacity: 0.85; }
.st-fr-pbd:focus-visible, .st-fr-bct:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
/* 称号コレクション: キャラ一覧のようにメダルだけのタイルを並べ、押すと下に詳細 */
.st-fr-bccnt { margin: 0; }
.st-fr-bcgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(56px, 1fr)); gap: 8px; margin-top: 8px; }
.st-fr-bct { position: relative; display: grid; place-items: center; min-height: 60px; padding: 4px; font: inherit; cursor: pointer; border: 1px solid var(--st-line); border-radius: var(--st-r-s); background: rgba(10,14,60,0.7); }
.st-fr-bct.on { border-color: #ffd45e; box-shadow: 0 0 8px rgba(255,214,120,0.35); }
.st-fr-bct.cur { background: var(--st-sub-on-fill); }
.st-fr-bct.lock { background: rgba(10,14,40,0.55); }
.st-fr-bct .ord { position: absolute; right: -3px; top: -3px; display: grid; place-items: center; width: 20px; height: 20px; font-style: normal; font-size: 0.75rem; font-weight: 800; color: #1a1030; border-radius: 50%; background: linear-gradient(#fff3c4, #e6b44c); box-shadow: 0 1px 3px rgba(0,0,0,0.6); }
.st-fr-bcdet { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; margin-top: 10px; padding: 10px 12px; border: 1px solid rgba(255,214,120,0.35); border-radius: var(--st-r-s); background: rgba(10,14,60,0.6); }
.st-fr-bcdet[hidden] { display: none; }
.st-fr-bcdet .tx { display: flex; flex-direction: column; gap: 2px; flex: 1 1 120px; min-width: 0; }
.st-fr-bcdet .nm { font-size: 1.05rem; color: #fff; }
.st-fr-bcdet .gr { font-size: 0.78rem; color: #b9c3ef; }
.st-fr-bcdet .st { font-size: 0.82rem; font-weight: 800; color: #ffb4bf; }
.st-fr-bcdet .st.ok { color: #ffe9a6; }
.st-fr-bcdet .how { font-size: 0.82rem; line-height: 1.5; color: #e4e9ff; }
.st-fr-bctg { flex: 0 0 auto; width: auto; min-height: 44px; padding: 8px 14px; }

/* ====== 戦闘の作り直し v3(COMBAT V3): 画面の演出。動かすのは transform / opacity だけ(フィルター・ぼかしは使わない)。言葉は出さない ====== */
/* 回復の玉が HP バーに届いたとき、バーがふわっと緑に光る */
#stPBarWrap.healed::after { content: ''; position: absolute; inset: 0; pointer-events: none; border-radius: inherit; background: rgba(150,255,190,0.55); animation: stPBarOk 0.5s ease-out forwards; }
html.hd-reduce #stPBarWrap.healed::after { animation: none; opacity: 0; }
/* 連鎖の倍率の札(動きを減らす設定・演出なしのとき: 数字の層に1つだけ出る。大連鎖ほど大きく、4 連鎖以上は橙の光) */
.st-dmg.chainbadge.hot { text-shadow: 0 0 12px #ff9a3c, 0 0 4px #fff3b0; }
/* 大技の予告: 次の行動が大技の間、敵のまわりが赤く脈打ち、カウントの数字が大きく赤くなる(言葉なし) */
.st-efx.charge { isolation: isolate; }
.st-efx.charge::before { content: ''; position: absolute; left: 50%; top: 50%; z-index: -1; height: 135%; aspect-ratio: 1 / 1; border-radius: 50%; pointer-events: none;
  transform: translate(-50%, -50%) scale(0.86); opacity: 0.55;
  background: radial-gradient(circle, rgba(255,60,50,0) 32%, rgba(255,96,64,0.5) 54%, rgba(255,40,40,0) 72%); animation: stChargeGlow 1.15s ease-in-out infinite; }
@keyframes stChargeGlow { 0%, 100% { opacity: 0.5; transform: translate(-50%, -50%) scale(0.86); } 50% { opacity: 1; transform: translate(-50%, -50%) scale(1.1); } }
.st-cd.pre { background: rgba(120,10,30,0.55); }
.st-cd.pre .st-cd-ring .fg { stroke: #ff6a7d; }
.st-cd.pre.soonest { width: 40px; height: 40px; }
.st-cd.pre b { font-size: 1.45rem; color: #ff8a9a; }
.st-cd.pre:not(.soonest) b { font-size: 0.95rem; }
.st-cdt-l .st-cdt-est.pre { font-size: 0.95rem; color: #ff8a9a; }
#boardWrap.st-edge-pre { box-shadow: inset 0 0 0 3px rgba(255,70,80,0.8), 0 0 22px rgba(255,50,70,0.65); border-radius: 10px; }
/* 大技が当たったとき: 敵の飛びかかりと画面の赤い縁を、ふつうの攻撃より大きく長く */
.st-efx.heavy .efx-art.lunge { animation: stEfxLungeH 0.5s ease-out; }
@keyframes stEfxLungeH { 0% { transform: none; } 30% { transform: translateY(16%) scale(1.26); } 100% { transform: none; } }
.st-flash.heavy { box-shadow: inset 0 0 90px 16px rgba(255,40,70,0.85); }
.st-flash.go.heavy { animation-duration: 0.7s; }
html.hd-reduce .st-efx.charge::before { animation: none; opacity: 0.85; transform: translate(-50%, -50%); }
html.hd-reduce .st-efx.heavy .efx-art.lunge { animation: none; }
@media (prefers-reduced-motion: reduce) {
  html:not(.hd-motion) .st-efx.charge::before { animation: none; opacity: 0.85; transform: translate(-50%, -50%); }
  html:not(.hd-motion) .st-efx.heavy .efx-art.lunge { animation: none; }
  html:not(.hd-motion) #stPBarWrap.healed::after { animation: none; opacity: 0; }
}

/* レベルアップの結果の欄: スターダスト(選ぶものではない。0 なら隠す。足りなければ赤。タップで内訳) */
.st-pv-sd { display: flex; flex-wrap: wrap; align-items: center; width: 100%; min-height: 44px; margin: 2px 0 0; padding: 4px 0; font: inherit; font-size: 0.82rem; color: #fff; text-align: left; cursor: pointer; border: 0; background: transparent; -webkit-tap-highlight-color: transparent; }
.st-pv-sd[hidden] { display: none; }
.st-pv-sd b { margin: 0 2px; color: #ffe08a; font-variant-numeric: tabular-nums; }
.st-pv-sd b.short { color: #ff8a9a; }
.st-pv-sd .q { margin-left: auto; width: 20px; height: 20px; border-radius: 50%; font-size: 0.75rem; font-weight: 800; line-height: 20px; text-align: center; color: #cfd8ff; border: 1px solid rgba(190,205,255,0.6); }
.st-pv-sd:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-pv-sdd { margin: 0 0 2px; padding: 6px 8px; font-size: 0.75rem; line-height: 1.6; color: #c6cbe8; border-radius: 8px; background: rgba(255,255,255,0.06); }
.st-pv-sdd[hidden] { display: none; }

/* ===== 盟友(2026-10-17。stella-stage.js の「盟友」・stella-stage-friends.js)。ロビーの右のアイコン・画面・プロフィール・盟友ガチャ ===== */
.st-fr-dot { position: absolute; top: -2px; right: -2px; width: 12px; height: 12px; border-radius: 50%; background: #ff4d6d; box-shadow: 0 0 0 2px #0b0e2e; }
.st-fr-dot[hidden] { display: none; }
.st-fr-fp { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 4px 0 8px; padding: 8px 10px; border-radius: 14px; background: var(--st-glass); border: 1px solid rgba(255,214,120,0.45); }
.st-fr-fpw { display: inline-flex; align-items: baseline; gap: 6px; margin-right: auto; }
.st-fr-fpw small { font-size: 0.75rem; color: #cfd8ff; }
.st-fr-fpw b { font-size: 1.3rem; color: #ffe08a; font-variant-numeric: tabular-nums; }
.st-fr-fpw .cap { color: #9aa3cc; }
.st-fr-fp .hd-btn { width: auto; min-height: 44px; padding: 8px 14px; }
.st-fr-body { display: grid; gap: 8px; }
.st-fr-list { display: grid; gap: 6px; }
.st-fr-row { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 14px; background: var(--st-glass); border: 1px solid var(--st-line); }
.st-fr-main { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; gap: 10px; min-height: 52px; padding: 2px; font: inherit; text-align: left; color: inherit; cursor: pointer; background: none; border: 0; border-radius: 10px; }
.st-fr-main:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-fr-th { flex: 0 0 auto; width: 48px; height: 48px; border-radius: 50%; overflow: hidden; background: radial-gradient(circle at 50% 35%, #2b3586, #0a0d33); border: 2px solid rgba(190,205,255,0.45); }
.st-fr-th img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 12%; display: block; }
.st-fr-meta { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.st-fr-meta .nm { font-size: 0.95rem; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-fr-meta .st-fr-info { font-size: 0.75rem; color: #b8c2f0; }
.st-fr-row > .hd-btn, .st-fr-acts .hd-btn { flex: 0 0 auto; width: auto; min-height: 44px; padding: 6px 12px; }
.st-fr-acts { display: flex; gap: 6px; flex: 0 0 auto; }
.st-fr-row .hd-btn.small.st-fr-greet:not(.st-back):not(.st-mi) { flex: none; width: 44px; height: 44px; min-width: 44px; padding: 0; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; }   /* あいさつ = 丸いアイコンのボタン(.hd-btn.ghost:not(...) より強く) */
.st-fr-greet svg { display: block; }
.st-fr-greet.ghost:disabled { opacity: 0.75; color: #9aa3cc; }
.st-fr-h { margin: 8px 2px 2px; font-size: 0.9rem; color: #ffe9a8; }
.st-fr-empty { margin: 4px 2px; padding: 14px 12px; font-size: 0.82rem; line-height: 1.6; color: #c6cbe8; text-align: center; border-radius: 12px; background: rgba(255,255,255,0.04); border: 1px dashed var(--st-line); }
.st-fr-find { display: grid; gap: 4px; }
.st-fr-lab { font-size: 0.8rem; font-weight: 800; color: #dfe6ff; }
.st-fr-fline { display: flex; gap: 6px; }
.st-fr-inp { flex: 1 1 auto; min-width: 0; min-height: 44px; padding: 8px 12px; font: inherit; font-size: 1rem; color: #fff; border-radius: 12px; background: rgba(6,8,30,0.7); border: 1px solid rgba(190,205,255,0.55); }
.st-fr-inp:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-fr-fline .hd-btn { width: auto; min-height: 44px; padding: 8px 18px; }
/* ニックネームを決めてください(2026-10-24。盟友の検索の入力欄と同じ見た目) */
.st-nick { display: grid; gap: 4px; }
.st-nick .st-fr-lab { margin-top: 6px; }
.st-nick .st-fr-inp { display: block; width: 100%; box-sizing: border-box; }
.st-nick .st-fr-inp[aria-invalid="true"] { border-color: var(--st-red); }
.st-nick-under { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.st-nick-under .st-note { margin: 4px 2px; }
.st-nick-count { flex: none; margin: 4px 2px; font-size: 0.75rem; line-height: 1.6; font-variant-numeric: tabular-nums; color: #aeb5d8; }
.st-nick-count.over { color: var(--st-red-soft); font-weight: 700; }
.st-nick-err { margin: 0 2px; min-height: 1.3em; font-size: 0.8rem; line-height: 1.6; font-weight: 700; color: var(--st-red-soft); }
.st-fr-found { border-color: rgba(255,214,120,0.55); }
.st-fr-rel { flex: 0 0 auto; font-size: 0.78rem; font-weight: 800; color: #ffe08a; }
.st-fr-tools { display: flex; justify-content: flex-end; margin-top: 8px; }
.st-fr-tools .hd-btn { width: auto; min-height: 44px; }
/* プロフィール(ダイアログの中) */
.st-fr-prof { display: grid; gap: 10px; }
.st-fr-pframe { position: relative; justify-self: center; width: 148px; }
.st-fr-part { width: 148px; height: 228px; border-radius: 14px; overflow: hidden; background: radial-gradient(circle at 50% 30%, #2b3586, #0a0d33); border: 1px solid rgba(255,214,120,0.5); }
.st-fr-part img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 10%; display: block; -webkit-user-drag: none; }
.st-fr-part.cut img { object-fit: contain; object-position: 50% 100%; }
/* 立ち絵の枠の右上の小さなアイコン(お気に入りを変える。自分のプロフィールだけ)。押しやすさのため見た目は小さく、タップの範囲は 44px */
.st-fr-pswap { position: absolute; top: -8px; right: -8px; z-index: 2; width: 44px; height: 44px; min-height: 44px; margin: 0; padding: 0; display: grid; place-items: center; font: inherit; cursor: pointer; background: none; border: 0; border-radius: 50%; }
.st-fr-pswap::before { content: ''; position: absolute; inset: 7px; border-radius: 50%; background: rgba(6,8,30,0.88); border: 1.5px solid rgba(255,214,120,0.8); box-shadow: 0 2px 8px rgba(0,0,0,0.5); }
.st-fr-pswap svg { position: relative; }
.st-fr-pswap:focus-visible { outline: 3px solid #ffd166; outline-offset: 0; }
.st-fr-pnamerow { display: flex; align-items: center; justify-content: center; gap: 4px; min-width: 0; }
.st-fr-pname { font-size: 1.25rem; color: #fff; text-align: center; overflow-wrap: anywhere; }
.st-fr-pcopy { flex: 0 0 auto; width: 44px; height: 44px; min-height: 44px; margin: -6px 0; padding: 0; display: grid; place-items: center; font: inherit; cursor: pointer; background: none; border: 0; border-radius: 50%; }
.st-fr-pcopy:hover { background: rgba(255,255,255,0.08); }
.st-fr-pcopy:focus-visible { outline: 3px solid #ffd166; outline-offset: 0; }
.st-fr-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin: 0; }
.st-fr-st { padding: 6px 8px; border-radius: 10px; background: rgba(14,18,64,0.72); border: 1px solid var(--st-line); }
.st-fr-st dt { font-size: 0.7rem; color: #aeb5d8; }
.st-fr-st dd { margin: 0; font-size: 0.95rem; font-weight: 800; color: #fff; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
/* ブロックの一覧 */
.st-fr-blocks { display: grid; gap: 6px; }
.st-fr-brow { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 12px; background: rgba(14,18,64,0.72); border: 1px solid var(--st-line); }
.st-fr-brow .nm { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.st-fr-brow .hd-btn { width: auto; min-height: 44px; }
/* 盟友ガチャ */
.st-fr-gbal { margin: 0 0 4px; text-align: center; font-size: 0.85rem; color: #cfd8ff; }
.st-fr-gbal b { font-size: 1.4rem; color: #ffe08a; font-variant-numeric: tabular-nums; }
.st-fr-rates { width: 100%; border-collapse: collapse; margin: 4px 0; font-size: 0.82rem; }
.st-fr-rates caption { text-align: left; font-weight: 800; color: #ffe9a8; padding: 2px 0 4px; }
.st-fr-rates th, .st-fr-rates td { padding: 4px 6px; border-bottom: 1px solid var(--st-line); }
.st-fr-rates th { text-align: left; font-weight: 600; color: #dfe6ff; }
.st-fr-rates td { text-align: right; font-variant-numeric: tabular-nums; color: #fff; }
.st-fr-ten .st-lbn-i { min-width: 78px; padding: 8px 6px; }
.st-fr-ten .st-lbn-i .n { font-size: 1.05rem; }
.st-lbn-i.st-fr-rare { border-color: #ff9be0; background: radial-gradient(rgba(255,150,230,0.32), rgba(14,18,64,0.7)); box-shadow: 0 0 14px rgba(255,150,230,0.45); }
.st-fr-conv { font-size: 0.68rem; color: #ffb3c0; }
/* お気に入り(キャラの詳細の ♡。ロックの左) */
.st-ud-hero .st-favbtn { position: absolute; right: 62px; top: 10px; z-index: 4; width: 44px; height: 44px; min-height: 44px; margin: 0; padding: 0; display: grid; place-items: center; font: inherit; color: #f2f5ff; cursor: pointer; border-radius: 50%; background: rgba(6,8,30,0.8); border: 1.5px solid rgba(225,233,255,0.75); box-shadow: 0 2px 8px rgba(0,0,0,0.5); touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.st-ud-hero .st-favbtn.on { color: #ff7aa8; border-color: #ff9bbf; background: rgba(80,10,40,0.82); box-shadow: 0 0 12px rgba(255,120,170,0.55), 0 2px 8px rgba(0,0,0,0.5); }
.st-ud-hero .st-favbtn:disabled { opacity: 0.55; cursor: default; }
.st-ud-hero .st-favbtn[hidden] { display: none; }
.st-ud-hero .st-favbtn:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
@media (max-width: 400px) { .st-fr-row { flex-wrap: wrap; } .st-fr-acts { margin-left: auto; } .st-fr-fp .hd-btn { flex: 1 1 auto; } }

/* ---- ショップ(有償スターコア。2026-10-17 課金の枠組み。stella-stage.js の「ショップ」) ---- */
.st-shop-wallet { font-weight: 800; color: #ffe9a8; }
.st-shop-cap { color: #cfe3ff; font-size: 0.82rem; }
.st-shop-warn { color: #ffcf8a; font-weight: 700; }
.st-shop-fine { color: #b9c2ea; font-size: 0.76rem; line-height: 1.55; }
.st-shop-legal { font-size: 0.78rem; text-align: center; }
/* 確認の画面の支払方法・支払時期・お届けの時期・キャンセル(2026-10-31 特定商取引法の最終確認)。見出しと文を2列(狭い画面は縦) */
.st-shop-terms { display: grid; grid-template-columns: auto 1fr; gap: 4px 10px; margin: 8px 0; font-size: 0.8rem; line-height: 1.5; color: #dfe6ff; }
.st-shop-terms dt { font-weight: 700; color: #ffe9a8; white-space: nowrap; }
.st-shop-terms dd { margin: 0; }
/* 日本国外のお客さま(2026-11-02 §11.15): ショップの先頭の1行・確認の画面の保護者の同意のチェック(チェックするまで「購入する」は押せない) */
.st-shop-intl { font-size: 0.82rem; margin-top: 0; }
.st-shop-consent { display: flex; align-items: flex-start; gap: 10px; margin: 10px 0; padding: 10px 12px; border: 1px solid rgba(255, 207, 138, 0.55); border-radius: 10px; font-weight: 700; color: #ffe9a8; line-height: 1.45; cursor: pointer; }
.st-shop-consent input { flex: none; width: 22px; height: 22px; margin: 0; accent-color: #ffcf8a; cursor: pointer; }
.st-shop-consent input:focus-visible { outline: 2px solid #ffe9a8; outline-offset: 2px; }
/* 決済会社の画面から戻った起動: タイトルの絵を出さない(読み込みの画面だけ。§11.14。stella-orbs.html の先頭が html に付ける) */
/* 未ログイン(オープニングがログインの画面)のときは隠さない(ログインのボタンだけの半分空のタイトルにしない) */
.st-pay-return .op:not([data-mode="login"]) .op-poster, .st-pay-return .op:not([data-mode="login"]) .op-video,
.st-pay-return .op:not([data-mode="login"]) .op-logo, .st-pay-return .op:not([data-mode="login"]) .op-side { visibility: hidden; }
/* Stripe の埋め込みの支払い(§11.14): 全画面の枠。読めるまで「読み込んでいます…」だけ(枠は透明)。ダイアログより上 */
.st-pay-panel { position: fixed; inset: 0; z-index: 130; display: flex; flex-direction: column; background: #05061a; overflow: auto; -webkit-overflow-scrolling: touch; }
.st-pay-bar { display: flex; justify-content: flex-end; padding: 8px 10px; position: sticky; top: 0; z-index: 1; background: rgba(5,6,26,0.92); }
.st-pay-load { margin: 40vh auto 0; text-align: center; }
.st-pay-mount { flex: 1 0 auto; width: 100%; max-width: 560px; margin: 0 auto; background: #fff; opacity: 0; transition: opacity 0.2s; }
.st-pay-mount.on { opacity: 1; }
/* 埋め込みの枠が出ている間の、別の端末で開かれた・更新の案内(閉じられない案内)は枠より上 */
body.st-pay-open .st-claim { z-index: 140; }
@media (max-width: 360px) { .st-shop-terms { grid-template-columns: 1fr; } .st-shop-terms dd { margin-bottom: 4px; } }
.st-shop-legal a { color: #9fd0ff; border-bottom: 1px solid currentColor; }
.st-shop-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 8px 0; }
.st-shop-item { display: flex; flex-direction: column; align-items: stretch; gap: 4px; min-height: 64px; padding: 8px 10px; font: inherit; color: #f4f6ff; text-align: left; cursor: pointer; background: linear-gradient(rgba(44,52,140,0.92), rgba(20,24,80,0.95)); border: 1px solid rgba(255,214,120,0.55); border-radius: 12px; box-shadow: inset 0 1px 0 rgba(255,244,190,0.25), 0 2px 6px rgba(0,0,0,0.45); touch-action: manipulation; }
.st-shop-item:hover:not(:disabled) { border-color: #ffe08a; }
.st-shop-item:active:not(:disabled) { transform: translateY(1px); }
.st-shop-item:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-shop-item:disabled { cursor: default; opacity: 0.5; border-color: rgba(170,180,220,0.35); }
.st-shop-top { display: flex; align-items: center; gap: 6px; }
.st-shop-n { font-size: 1.02rem; font-weight: 900; line-height: 1.2; color: #fff3c4; font-variant-numeric: tabular-nums; }
.st-shop-lbl { display: block; font-size: 0.7rem; font-weight: 700; color: #d9def8; }
.st-shop-sub { font-size: 0.7rem; line-height: 1.35; color: #cfe3ff; font-variant-numeric: tabular-nums; }
.st-shop-price { margin-left: auto; font-weight: 800; font-variant-numeric: tabular-nums; }
.st-shop-note { font-size: 0.7rem; line-height: 1.35; color: #ffcf8a; }
.st-shop-nogacha { align-self: flex-start; margin-top: 2px; padding: 1px 8px; border: 1px solid rgba(255, 207, 138, 0.7); border-radius: 999px; font-size: 0.68rem; font-weight: 700; line-height: 1.4; color: #ffe9a8; background: rgba(255, 160, 60, 0.14); }   /* §11.16 ベルギー・ブラジル: 商品ごとの「ガチャには使えません」 */
/* 素材パック(§C)・海外の料金の目安(§B)。2026-11-03 */
.st-shop-mat-h { margin-top: 14px; }
.st-shop-mat-t { font-size: 0.95rem; }
.st-shop-fx { align-self: flex-end; font-size: 0.7rem; line-height: 1.3; color: #cfe3ff; font-variant-numeric: tabular-nums; }
.st-shop-fxcredit { font-size: 0.68rem; text-align: right; margin: 0; }
.st-shop-fxcredit a { color: #9fb4e8; }
.st-shop-mat-els { display: grid; grid-template-columns: repeat(auto-fit, minmax(92px, 1fr)); gap: 6px; margin: 4px 0 10px; }
.st-shop-mat-el { display: flex; align-items: center; justify-content: center; gap: 4px; min-height: 44px; padding: 4px 6px; font: inherit; font-size: 0.8rem; font-weight: 700; color: #eef1ff; cursor: pointer; background: rgba(20,24,80,0.9); border: 1px solid rgba(170,180,220,0.45); border-radius: 10px; touch-action: manipulation; }
.st-shop-mat-el.on { border-color: #ffd166; box-shadow: 0 0 0 2px rgba(255,209,102,0.55); background: rgba(60,62,140,0.95); }
.st-shop-mat-el:disabled { opacity: 0.4; cursor: default; }
.st-shop-mat-el:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-itd-wallet { font-weight: 800; color: #ffe9a8; }

/* ===== ロビーの下の段の空き・キャラのハブ・ガチャの盟友ガチャ・ショップの画面・お気に入りえらび(2026-10-17) ===== */
.st-actions-slot { display: block; min-width: 0; }                      /* コレクションのボタンを外したあとの空き(今は何も置かない。出撃を中央に保つ) */
/* キャラのハブ(下のタブ「キャラ」。2026-10-17): 大きなボタンの縦の一覧。画面の高さを超えたらページごとスクロール。形は出撃の選択(.st-pick)と同じ系統 */
.st-hub { display: flex; flex-direction: column; gap: 12px; margin: 6px 0 4px; }
.st-hub-btn { position: relative; display: flex; align-items: center; gap: 14px; width: 100%; min-height: 84px; padding: 12px 16px; text-align: left; font: inherit; color: #eef1ff; cursor: pointer; border-radius: var(--st-r-l, 16px); border: 1px solid rgba(217,180,90,0.55); background: linear-gradient(135deg, rgba(34,40,96,0.92), rgba(14,18,52,0.92)); box-shadow: 0 6px 18px rgba(0,0,10,0.45); transition: transform .12s ease, box-shadow .12s ease; }
.st-hub-btn:hover { box-shadow: 0 8px 22px rgba(0,0,10,0.55), 0 0 14px rgba(255,214,120,0.25); }
.st-hub-btn:active { transform: scale(0.985); }
.st-hub-btn:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-hub-ic { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 14px; background: rgba(14,18,64,0.7); border: 1px solid rgba(255,214,120,0.35); box-shadow: 0 0 10px rgba(255,214,120,0.25); }
.st-hub-ic svg { width: 32px; height: 32px; }
.st-hub-tx { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.st-hub-l { font-family: var(--st-font-head, serif); font-size: 1.25rem; font-weight: 800; letter-spacing: .04em; color: #fff3c4; }
.st-hub-d { font-size: 0.82rem; line-height: 1.35; color: #b9c3ef; }
.st-hub-chev { flex: none; font-size: 2rem; line-height: 1; color: #ffd761; opacity: 0.8; }
.st-hub-dot { top: 10px; right: 12px; }
/* 下のタブの「キャラ」: コレクションの受け取れる報酬の赤い丸(アイコンの右上) */
.st-tbb .ic { position: relative; }
.st-tbb-dot { position: absolute; top: -2px; right: -6px; width: 10px; height: 10px; border-radius: 50%; background: #ff5a5a; box-shadow: 0 0 0 2px rgba(14,18,64,0.95); }
.st-tbb-dot[hidden] { display: none; }
.st-gc-blk { margin-top: 22px; padding-top: 12px; border-top: 1px solid var(--st-line); }
.st-gc-blk[hidden] { display: none; }
.st-gc-fpban { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-height: 124px; padding: 14px 12px; text-align: center; color: #fff; background: radial-gradient(ellipse at 20% 15%, rgba(255,190,120,0.35), rgba(0,0,0,0) 55%), radial-gradient(ellipse at 85% 90%, rgba(120,210,255,0.3), rgba(0,0,0,0) 55%), linear-gradient(135deg, #2c2f86, #0d1146 60%, #1d1b66); }
.st-gc-fpban .k { font-size: 0.7rem; font-weight: 800; letter-spacing: 0.3em; padding-left: 0.3em; color: #ffe08a; opacity: 0.9; }
.st-gc-fpban b { font-family: var(--st-font-head); font-size: 1.9rem; letter-spacing: 0.12em; padding-left: 0.12em; color: #fff3c4; text-shadow: 0 0 14px rgba(255,200,90,0.55), 0 2px 4px rgba(0,0,0,0.6); }
.st-gc-fpban small { font-size: 0.78rem; font-weight: 700; color: #dfe6ff; }
.st-gc-fpbal b { margin: 0 4px; color: #fff; font-variant-numeric: tabular-nums; }
.st-shop-page { display: grid; gap: 8px; max-width: 560px; margin: 0 auto; }
.st-shop-page .st-shop-list { margin: 4px 0; }
.st-shop-age { display: grid; gap: 8px; margin: 6px 0 12px; }
.st-shop-age .hd-btn { width: 100%; min-height: 52px; }
#stFavPick .st-ugrid .st-ut.cur { box-shadow: 0 0 0 2px #ff9bbf, 0 0 14px rgba(255,120,170,0.55); }
/* ダイアログの下のボタンに重ならない、画面の上の知らせ(プロフィールの「コピーしました」。2026-10-17) */
.st-toast.st-toast-top, body.st-has-tb .st-toast.st-toast-top, body.st-selling .st-toast.st-toast-top { top: 14px; bottom: auto; }

/* ============================ 2026-10-19: 横長の画面(PC・横向きのタブレット)のボス戦 = ボスを盤の右の空きに出す(盤は動かさない) ============================
   条件は stella-stage-lib.js の isWideBossLayout(幅 900px 以上・高さ 560px 以上・横:縦 4:3 以上)と、盤の右の空きが十分あること(SL.bossColumn。狭ければ付かない = 今まで通り帯の中)。
   hexdrop.js layout() は、盤を必ず通常のウェーブと同じ配置で決めてから(最後の bossSidePlace)、#stBattle に .st-bosswide を付け、#stEnemy に位置の変数を渡す:
   --st-band = 上の帯の高さ(固定)/ --bx-l・--bx-t・--bx-w = ボスの絵の枠(#stEfxW)の位置と幅 / --bf-t = 名前とHPバー(#stEFoot)の上の位置(#stEnemy 基準の px。幅は絵の枠と同じ)。
   帯の WAVE・NEXT・状態アイコンはそのまま。ボスの絵・名前・HPバー・四隅のバッジが出ていた場所は空になる(ボスの二重表示なし)。スマホ・縦向き・ふつうの雑魚は対象外 */
.st-battle.st-bosswide #stEnemy { height: var(--st-band); }
.st-battle.st-bosswide #stEfxW { position: absolute; left: var(--bx-l); top: var(--bx-t); width: var(--bx-w); }
.st-battle.st-bosswide #stEFoot { position: absolute; left: var(--bx-l); top: var(--bf-t); width: var(--bx-w); grid-template-columns: auto minmax(0, 1fr) auto; gap: 2px 0; padding-top: 0; }
.st-battle.st-bosswide .st-e-name { grid-column: 1 / -1; max-width: 100%; font-size: 0.95rem; }
/* 2026-10-22: 横長のボス戦は列がせまく、バーの両わきのバッジ(合わせて 180px ほど)でバーが 90〜125px になり、HP の数字(例 1,728,000 / 1,728,000)が 2 行に割れて切れた。
   そこで 1 行目 = 左のバッジ・名前・右のバッジ、2 行目 = HPバー(列の全幅)にする。足元の帯の高さは同じ(名前の行 + バーの行)。
   バッジの下の角のアイコンがバーにかぶらないよう、行の間を 6px あける(帯の高さが 4px 増える分は、上へ 4px ずらして底をそろえる) */
.st-battle.st-bosswide #stEFoot { row-gap: 6px; margin-top: -4px; }
.st-battle.st-bosswide .st-cd-side { grid-row: 1; padding-left: 0; padding-right: 0; }
.st-battle.st-bosswide .st-cd-side.l { padding-right: 6px; }
.st-battle.st-bosswide .st-cd-side.r { padding-left: 6px; }
.st-battle.st-bosswide .st-e-name { grid-column: 2; grid-row: 1; }
.st-battle.st-bosswide .st-e-foot .st-e-bar { grid-column: 1 / -1; grid-row: 2; }
.st-battle.st-bosswide .st-efx .efx-art.lunge { animation-name: stEfxLungeW; }   /* ボスの攻撃の突進は、パーティーのある左へ(下ではなく) */
@keyframes stEfxLungeW { 0% { transform: none; } 35% { transform: translateX(-14%) scale(1.1); } 100% { transform: none; } }

/* ---- 属性ピックアップ(2026-10-21): スターコアガチャと同じ形のブロックを縦に並べる。見出しの左 = 属性名 + 「本日 23:59 まで」、曜日の表は詳細のシート ---- */
.st-gc-pk-t { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.st-gc-pk-until { font-size: 0.72rem; font-weight: 700; color: #c6cbe8; }
.st-gc-pk picture.st-gc-banner, .st-bn picture.st-gc-banner { display: block; }
.st-pk-sched { width: 100%; border-collapse: collapse; margin-top: 6px; font-size: 0.8rem; color: #dfe6ff; }
.st-pk-sched caption { text-align: left; font-weight: 800; color: #ffe9a6; padding: 2px 0 4px; }
.st-pk-sched th, .st-pk-sched td { padding: 5px 8px; text-align: left; border-top: 1px solid rgba(255,214,120,0.22); vertical-align: middle; }
.st-pk-sched th { font-weight: 800; white-space: nowrap; width: 7.5em; }
.st-pk-sched tr.today th, .st-pk-sched tr.today td { background: rgba(255,200,80,0.16); color: #fff3c4; }
.st-pk-chip { display: inline-flex; align-items: center; gap: 4px; margin: 1px 10px 1px 0; font-weight: 800; }

/* ---- 案内つきチュートリアル(2026-10-21。frontend/stella-stage-guide.js) ----
   強制フォーカスの層(.st-gd): 画面・ダイアログ(z-index 9)・報酬(100)より上。暗い4枚(.st-gd-s)+ 金色の輪(.st-gd-ring)+ 吹き出し(.st-gd-card)+ 右上のスキップ。
   切り抜きの中の目標以外は透明のふさぎ(.st-gd-b)。暗い所・ふさぎは押しとスクロールを止める(transition なし)。動きを減らす設定では輪の点滅を止める */
.st-gd { position: fixed; inset: 0; z-index: 1000; pointer-events: none; }
.st-gd[hidden] { display: none; }
.st-gd-s { position: fixed; background: rgba(6, 4, 24, 0.72); pointer-events: auto; touch-action: none; }
.st-gd-b { position: fixed; background: transparent; pointer-events: auto; touch-action: none; }
.st-gd.scroll .st-gd-s, .st-gd.scroll .st-gd-b { touch-action: pan-y; }
.st-gd-ring { position: fixed; box-sizing: border-box; border-radius: 14px; border: 2px solid #ffd166; box-shadow: 0 0 0 2px rgba(255, 209, 102, 0.3), 0 0 16px 3px rgba(255, 209, 102, 0.65); pointer-events: none; animation: stGdPulse 1.1s ease-in-out infinite alternate; }
@keyframes stGdPulse { from { opacity: 0.55; } to { opacity: 1; } }
html.hd-reduce .st-gd-ring { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-gd-ring { animation: none; } }
.st-gd-card { position: fixed; z-index: 1; box-sizing: border-box; padding: 10px 12px; border-radius: 14px; background: rgba(18, 22, 74, 0.97); border: 1px solid rgba(255, 209, 102, 0.75); box-shadow: 0 6px 22px rgba(0, 0, 0, 0.5); color: #f0f0f5; text-align: center; pointer-events: auto; }
.st-gd-t { margin: 0; font-size: 0.95rem; font-weight: 800; line-height: 1.45; text-wrap: balance; word-break: auto-phrase; }
.st-gd-btns { display: flex; justify-content: center; gap: 8px; margin-top: 8px; }
.st-gd-arrow { position: fixed; width: 14px; height: 14px; background: rgba(18, 22, 74, 0.97); transform: rotate(45deg); pointer-events: none; }
.st-gd-arrow.down { border: solid rgba(255, 209, 102, 0.75); border-width: 0 1px 1px 0; }
.st-gd-arrow.up { border: solid rgba(255, 209, 102, 0.75); border-width: 1px 0 0 1px; }
.hd-btn.st-gd-skip { position: fixed; z-index: 2; pointer-events: auto; min-height: 34px; padding: 4px 12px; font-size: 0.82rem; background: rgba(18, 22, 74, 0.97); border: 1px solid rgba(190, 205, 255, 0.6); box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5); }
.st-gd-conf { position: fixed; inset: 0; z-index: 3; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(6, 4, 24, 0.78); pointer-events: auto; touch-action: none; }
.st-gd-conf .st-gd-card { position: static; width: min(320px, 100%); }
.st-gd-conf .st-gd-t { white-space: pre-line; }
/* 案内の最中でも見せる知らせ(出撃できなかった理由など)は、層より上 */
.st-toast.st-toast-top { z-index: 1100; }
/* 案内の間は、プレゼントのボタンの揺れを止める(終わったらまた動く = 後回し) */
body.st-guide-on .st-gift-btn.has .st-gift-i, body.st-guide-on .st-menu-btn.has .ic { animation: none; }
/* 戦闘の短い知らせ(積み上がりの注意): 敵のエリアの上。押しは素通し */
/* 積み上がりの注意「上に注意!」(2026-10-22): 盤の危険ライン(点線)のすぐ上の赤い細帯(top は画面のスクリプトが測る)+ 点線を 1 秒周期で脈打たせる(.st-danger-ln の重ね線)。敵の絵・カウントには重ならない */
.st-tut-toast { position: absolute; left: 6px; right: 6px; top: 0; z-index: 4; box-sizing: border-box; height: 18px; display: flex; align-items: center; justify-content: center; padding: 0 8px; border-radius: 4px 4px 0 0; background: rgba(255, 59, 92, 0.82); color: #fff; font-size: 0.78rem; font-weight: 900; letter-spacing: 0.08em; line-height: 1; text-align: center; opacity: 0; pointer-events: none; transition: opacity 0.2s ease-out; }
.st-tut-toast.show { opacity: 1; }
.st-danger-ln { position: absolute; left: 6px; right: 6px; top: 0; height: 0; z-index: 4; border-top: 2px dashed #ff6b83; box-shadow: 0 0 8px rgba(255, 59, 92, 0.9); opacity: 0; pointer-events: none; }
.st-danger-ln.on { opacity: 1; animation: stDangerPulse 1s ease-in-out infinite; }
@keyframes stDangerPulse { 0%, 100% { opacity: 0.35; } 50% { opacity: 1; } }
html.hd-reduce .st-tut-toast { animation: none; transition: none; }
html.hd-reduce .st-danger-ln.on { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-danger-ln.on { animation: none; } }
/* 陣形のカード(一時停止のメニュー「陣形」・案内の中) */
.st-tut-form { display: flex; flex-direction: column; gap: 8px; }
.st-tut-frow { display: grid; grid-template-columns: 74px minmax(0, 1fr); align-items: center; gap: 10px; padding: 6px 8px; border-radius: 12px; background: rgba(255, 255, 255, 0.06); border: 1px solid var(--st-line); text-align: left; }
.st-tut-fig svg { display: block; width: 100%; height: auto; }
.st-tut-ftx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.st-tut-fh { font-size: 0.95rem; }
.st-tut-fd { color: #b3b9dc; font-size: 0.82rem; line-height: 1.4; }
.st-bm { margin: 0 0 14px; padding: 10px; border-radius: 16px; border: 1px solid rgba(255, 209, 102, 0.5); background: rgba(255, 209, 102, 0.07); }
.st-bm[hidden], .st-bm-daily[hidden] { display: none; }
.st-bm-h { margin: 0 0 4px; font-size: 1rem; font-weight: 900; color: #ffe9a6; }
.st-bm-daily { margin: 4px 0 6px; font-size: 1rem; font-weight: 900; }
.st-bm-sum { margin: 0 0 8px; font-size: 0.82rem; color: #b3b9dc; }
.st-bm-i.claimed { opacity: 0.6; }


/* ============ チュートリアル追加(2026-10-23): 編成の画面のスキルの行・遊び方のカード(タブ・相性の図)・ミッションの複数の報酬 ============ */
.st-slot-skt { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-sk.cur { border-color: #ffd166; background: rgba(255, 209, 102, 0.12); }
.st-sk.pick:not(.cur) { border-color: rgba(255, 209, 102, 0.6); }
#stUnitBody .st-sh-sec .st-sk.cur { border-color: #ffd166; box-shadow: 0 0 0 1px rgba(255, 209, 102, 0.55); background: rgba(255, 209, 102, 0.12); }
#stUnitBody .st-sh-sec .st-sk.pick:not(.cur) { border-color: rgba(255, 209, 102, 0.6); border-style: dashed; }
.st-sk-tag { margin-left: 6px; padding: 0 6px; border-radius: 6px; font-size: 0.7rem; font-weight: 800; color: #1a1030; background: linear-gradient(180deg, #ffe08a, #e9b440); }
.st-tut-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 0 0 10px; border: 1px solid var(--st-line); border-radius: 12px; overflow: hidden; }
.st-tut-tab { min-height: 44px; font: inherit; font-weight: 800; color: #a9b3dc; background: rgba(255, 255, 255, 0.04); border: 0; cursor: pointer; }
.st-tut-tab + .st-tut-tab { border-left: 1px solid var(--st-line); }
.st-tut-tab.on { color: var(--st-gold-soft); background: rgba(8, 11, 44, 0.9); box-shadow: inset 0 -3px 0 var(--st-gold); }   /* 選んでいるタブ = 金の文字 + 下の金の線(塗りは主ボタンの OK と競うのでやめた) */
.st-tut-tab:focus-visible { outline: 3px solid #ffd166; outline-offset: -3px; }
.st-tut-how [hidden] { display: none; }
.st-tut-affig { display: flex; justify-content: center; margin: 0 0 6px; }
.st-tut-affig svg { display: block; width: 260px; max-width: 100%; height: auto; }
.st-tut-afft { text-align: left; font-size: 0.88rem; line-height: 1.6; }
.st-tut-fnote { text-align: left; color: #ffe9a6; font-size: 0.86rem; line-height: 1.55; }
.st-bm-i .st-ms-rw { max-width: 176px; justify-content: flex-end; }
/* 報酬が複数のミッション(「パーティーを入れ替える」= スターコア + 5属性の欠片): 名前を上の行に、報酬と受け取りを下の行に */
.st-bm-i.multi { grid-template-columns: minmax(0, 1fr); }
.st-bm-i.multi .st-ms-r { flex-direction: row; align-items: center; justify-content: space-between; gap: 8px; }
.st-bm-i.multi .st-ms-rw { max-width: none; flex: 1; justify-content: flex-start; gap: 4px; }
.st-bm-i.multi .st-gift-it { padding: 2px 6px 2px 3px; }

/* ============================ 2026-10-24 UX まとめ直し 12: キャラ名の検索欄を上の1行へ(編成・一覧・コレクション) ============================ */
/* ボタンは縮めない。欄が残りの幅いっぱいまで伸び縮みし、最低幅(90px)に足りないときだけ次の行へ回って横いっぱいになる(360px の端末) */
.st-lbar .st-lsearch { position: relative; flex: 1 1 90px; min-width: 90px; display: flex; align-items: center; }
.st-lbar .st-lsearch-in { width: 100%; box-sizing: border-box; min-width: 0; min-height: 44px; padding: 6px 34px 6px 10px; border-radius: 8px; border: 1px solid rgba(160,180,255,0.4); background: rgba(0,0,24,0.6); color: #fff; font-size: 0.85rem; }
.st-lbar .st-lsearch-in { text-overflow: ellipsis; }
.st-lbar .st-lsearch-in::placeholder { font-size: 13px; }   /* 入力の文字は 16px のまま(iOS の拡大を避ける)。ヒントだけ小さくして、狭い画面でも切れないように(2026-11-02 Pixel 3) */
.st-lbar .st-lsearch-in::-webkit-search-cancel-button { display: none; }   /* ブラウザ標準の × は使わず、自前の × に統一 */
.st-lbar .st-lsearch-in:focus-visible { outline: 2px solid #ffd76a; outline-offset: 1px; }
.st-lbar .st-lsearch-x { position: absolute; right: 2px; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; border: 0; border-radius: 50%; background: transparent; color: #cfd8ff; font-size: 1.1rem; line-height: 1; cursor: pointer; }
.st-lbar .st-lsearch-x[hidden] { display: none; }
.st-lbar .st-lsearch-x:hover { color: #fff; }
.st-lbar .st-lsearch-x:focus-visible { outline: 2px solid #ffd76a; outline-offset: -2px; }

/* ============================ 2026-10-24 UX まとめ直し 3: PC のホバーカード(戦闘の状態カード .st-pop と同じ見た目。位置は JS が fixed で置く) ============================ */
.st-pop.st-hv { z-index: 30; width: min(300px, calc(100vw - 16px)); pointer-events: none; opacity: 1; transition: opacity 0.12s ease-out; }
.st-pop.st-hv .st-pop-stats { margin-bottom: 3px; }
.st-pop.st-hv .st-pop-s { overflow-wrap: anywhere; }
@starting-style { .st-pop.st-hv { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-pop.st-hv { transition: none; } }
/* 検索欄の字は、タッチの端末では 16px(16px 未満だと iOS Safari が、欄を押したときに画面を拡大してしまう)。高さは 44px のまま */
@media (pointer: coarse) { .st-lbar .st-lsearch-in, .st-search-in { font-size: 16px; } }   /* スマホ: 16px 未満だと iOS が入力のときに画面を拡大する(絞り込みのシートの言葉の欄も同じ) */

/* ============ 編成の画面(2026-10-24 オーナー承認): パーティー1〜6のページ・パーティーHP を大きく・上と下を固定してキャラの一覧だけをスクロール ============ */
/* ページの切り替え(矢印 = 出撃の確認と同じ .st-cf-arrow・点)。点: いまのページ = 金の丸 / 出撃で使うページ = 金の輪 / 空 = 細い輪 / 売ったキャラがいる = 赤 */
.st-ppnav { margin: 0 0 2px; }
.st-ppdots { gap: 7px; }
.st-ppdots i { width: 8px; height: 8px; box-sizing: border-box; }
.st-ppdots i.empty { background: transparent; border: 1px solid rgba(200, 210, 255, 0.5); }
.st-ppdots i.act:not(.on) { background: transparent; border: 2px solid var(--st-gold); }
.st-ppdots i.sold { background: #e0546a; }
.st-ppdots i.sold.on { box-shadow: 0 0 0 2px var(--st-gold); }
/* 枠の箱: 横に滑らせる(はみ出しは隠す。選んでいる枠の光が切れないよう、左右・上下に少し余白)。縦はブラウザにまかせ、横はスワイプ(JS) */
.st-pvp { position: relative; overflow: hidden; margin: 0 -10px; padding: 4px 10px 6px; touch-action: pan-y; }
.st-slots-old { position: absolute; left: 10px; right: 10px; top: 4px; pointer-events: none; }
.st-slot.sold { border-style: dashed; border-color: #e0546a; }
.st-slot.sold .st-slot-empty { border-color: #e0546a; color: #ff9aa8; }
.st-pg-note { margin: 0 0 2px; font-size: 0.75rem; line-height: 1.4; color: #ffb3c0; }
.st-pg-note[hidden] { display: none; }
/* パーティーHP: 大きく、数字は太く(360px の幅でも保存のボタンと1行に収める) */
.st-psum { flex: 1 1 auto; min-width: 0; font-size: 1.15rem; line-height: 1.2; white-space: nowrap; }
.st-psum b { font-weight: 900; font-variant-numeric: tabular-nums; }
@media (max-width: 380px) { .st-pfoot .st-save { min-width: 0; padding-left: 14px; padding-right: 14px; } }
/* 上(見出し・説明・枠・ページの点)と下(保存の行・下のタブ)は動かさず、キャラの一覧(#stPScroll)だけをスクロールする。
   画面の高さ(dvh)の箱を縦に並べ、一覧だけが残りの高さを使う。高さが足りない画面(横向きなど)は、前のとおりページ全体のスクロール(保存の行は下に張り付く) */
.st-pscroll { overflow-anchor: none; }
@media (min-height: 600px) {
  body.st-in-party .hd-page, body.st-has-tb.st-in-party:not(.st-in-lobby) .hd-page { height: 100vh; height: 100dvh; padding-bottom: 0; }
  body.st-in-party #stParty:not([hidden]) { display: flex; flex-direction: column; height: 100%; }
  body.st-has-tb.st-in-party #stParty:not([hidden]) { padding-bottom: var(--st-tb); }
  body.st-in-party #stParty > * { flex: none; }
  body.st-in-party #stParty > .st-pscroll { flex: 1 1 0; min-height: 96px; overflow-y: auto; overflow-x: hidden; scrollbar-gutter: stable; scrollbar-width: thin; scrollbar-color: rgba(232, 194, 90, 0.45) transparent; overscroll-behavior: contain; margin: 0 -10px; padding: 2px 10px 8px; }
  /* PC: 縦のバーが出ても一覧の幅は変わらない(場所を先に取る。一覧の列の幅は最初に測るので、幅が変わると横にはみ出していた)。横のスクロールは出さない。バーは細く、金色 */
  body.st-in-party #stParty > .st-pscroll::-webkit-scrollbar { width: 6px; height: 0; }
  body.st-in-party #stParty > .st-pscroll::-webkit-scrollbar-thumb { background: rgba(232, 194, 90, 0.45); border-radius: 3px; }
  body.st-in-party #stParty > .st-pscroll::-webkit-scrollbar-track { background: transparent; }
  body.st-in-party .st-pfoot, body.st-has-tb.st-in-party .st-pfoot { position: static; margin: 0 -10px; }
}
/* カードの下の1行: 選んでいる枠のスキル(…で1行)+「育成」「詳細」(44px)。空の枠は灰色の一言だけ */
.st-pskill { display: flex; align-items: center; gap: 6px; min-width: 0; min-height: 44px; margin-top: 8px; padding: 2px 4px 2px 8px; border-radius: 12px; background: rgba(0, 0, 24, 0.4); border: 1px solid rgba(160, 180, 255, 0.28); font-size: 0.78rem; color: #ffe9a6; }
.st-pskill .st-si { flex: none; }
.st-pskill .st-slot-skt { flex: 1 1 auto; }
.st-pskill.empty { color: #8d95bd; }
.st-pskill .st-dbtn { position: static; flex: none; transform: none; min-width: 48px; min-height: 40px; padding: 0 8px; border-radius: 12px; font-size: 0.75rem; font-weight: 700; }
/* 見出しの行は「もどる」(出撃の確認から来たとき)だけ */
.st-phead { justify-content: flex-start; margin: 0 0 2px; }
/* 選んでいるカードの下の小さな三角(吹き出しの尾。下のスキルの1行を指す。枠と同じ金。動きなし)。カードの外の 7px = スキルの1行の上の余白(8px)の中 */
.st-slot.sel::after { content: ''; position: absolute; left: 50%; bottom: -8px; transform: translateX(-50%); width: 0; height: 0; border-style: solid; border-width: 7px 7px 0; border-color: #ffd166 transparent transparent; pointer-events: none; }
/* 空の枠: うすい「+」(押して置ける)。売ったキャラがいた枠は赤い点線・赤い「+」(上の .st-slot.sold .st-slot-empty が勝つ) */
.st-slot .st-slot-empty { font-size: 1.6rem; font-weight: 400; line-height: 1; color: rgba(200, 210, 255, 0.55); border-color: rgba(200, 210, 255, 0.35); }
/* ページの名前の横の「出撃」の札(出撃で使うページだけ。点の金の輪と同じ見た目) */
.st-pp-sortie { display: inline-block; margin-left: 6px; padding: 0 6px; border: 2px solid var(--st-gold); border-radius: 999px; font-size: 0.75rem; font-weight: 800; line-height: 1.3; color: var(--st-gold); vertical-align: 1px; }
.st-phead[hidden] { display: none; }

/* フォーカスの輪は、キーボードで操作しているときだけ(stella-stage.js の st-ptr。指・マウスで押したあとや、開いた直後の自動のフォーカスでは出さない。2026-10-24) */
html.st-ptr :focus-visible, html.st-ptr :focus-visible::after, html.st-ptr :focus-visible::before { outline: none !important; }

/* 運営からのお知らせの帯(ロビーの上。GET /stella/stage の notices。× で閉じる) / メンテナンス中の案内(タイトル) */
.st-notices:not([hidden]) { flex: none; display: flex; flex-direction: column; gap: 4px; margin: 6px 0 0; }
.st-notice { display: flex; align-items: flex-start; gap: 6px; padding: 5px 4px 5px 12px; border-radius: 12px; background: var(--st-glass); border: 1px solid var(--st-line); color: #eef0ff; font-size: 0.78rem; line-height: 1.45; }
.st-notice-t { flex: 1 1 auto; min-width: 0; padding-top: 5px; white-space: pre-wrap; overflow-wrap: anywhere; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; }
.st-notice-x { flex: none; width: 36px; height: 36px; border: 0; border-radius: 50%; background: transparent; color: #cfd3f0; font-size: 1.2rem; line-height: 1; cursor: pointer; }
.st-notice-x:hover, .st-notice-x:focus-visible { background: rgba(255, 255, 255, 0.12); }
.op-login .op-maint:not([hidden]) { white-space: pre-line; text-align: center; margin: 0 0 8px; }
#stLoad { white-space: pre-line; }

/* 地図の帯の操作釦・広げたときの詳細(2026-10-28) */
.st-tr-bar2 .st-tr-bgo { flex: none; min-height: 30px; padding: 4px 12px; border-radius: 15px; border: 1px solid rgba(255, 255, 255, 0.35); background: var(--c, #6aa0ff); color: #10142a; font-size: 0.82rem; font-weight: 800; cursor: pointer; white-space: nowrap; }
.st-tr-bar2 .st-tr-bgo[aria-disabled="true"] { background: transparent; color: #aeb8e6; border-color: rgba(255, 255, 255, 0.22); opacity: 0.7; }
.st-tr-bar2 .rt { max-width: 44%; }
.st-trs.bar.open .st-tr-bar2 .l2 .st-tr-bgo { align-self: flex-start; }
.st-tr-bar-det { display: flex; flex-direction: column; gap: 8px; min-width: 0; border-top: 1px solid rgba(255, 255, 255, 0.12); padding-top: 8px; }

/* 星座盤 UI(2026-10-28): 未解放の星の方角見出し・方角の残りクリスタル・開いた門の 1 行 */
.st-tr-dgh { display: flex; align-items: center; gap: 8px; margin: 10px 2px 2px; font-size: 0.75rem; color: #b9c3ef; }
.st-tr-dgh:first-child { margin-top: 2px; }
.st-tr-remain { display: flex; align-items: center; gap: 5px; margin: 0 8px 4px; font-size: 0.78rem; color: #b9c3ef; }
.st-tr-remain b { color: #ffe9a6; font-weight: 800; }
.st-tr-sh + .st-tr-remain { margin: 4px 0 0; }
.st-tr-gsum { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 12px 0 4px; padding: 8px 10px; border-radius: 10px; background: rgba(255, 217, 138, 0.08); border: 1px solid rgba(255, 217, 138, 0.25); font-size: 0.78rem; line-height: 1.5; color: #ffe9a6; }
.st-tr-gdet { margin-top: 4px; }
.st-tr-chips .st-tr-tab.sm { flex: 1 1 auto; }
/* 星座盤 v3(2026-10-29): 新星の輪の見出し・次の門の枠・新星の行の理由 */
.st-tr-h4 { margin: 8px 2px 0; font-size: 0.8rem; font-weight: 800; color: #ffe9a6; letter-spacing: 0.04em; }
.st-tr-h5 { margin: 6px 2px 0; font-size: 0.75rem; font-weight: 700; color: #c9d1f2; }
/* 門のシートの外の星: 輪ごとに折りたたみ(いちばん外の輪だけ開いている) */
.st-tr-gnext { margin: 8px 0 4px; padding: 4px 10px 8px; border-radius: 10px; background: rgba(255, 217, 138, 0.08); border: 1px solid rgba(255, 217, 138, 0.25); }
.st-tr-gnext .st-tr-h3 { margin-top: 6px; }
.st-tr-nrow .rs { font-size: 0.75rem; font-weight: 700; color: #ffcf9a; }
/* 星座盤の上乗せ(2026-10-29): 元の値のあとに、小さな金の「+上乗せ」 */
.st-bonus { color: #ffd45e; font-size: 0.78em; font-weight: 800; margin-left: 4px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.st-stat .st-bonus { display: block; margin: 1px 0 0; font-size: 0.75rem; }
.st-slot-st { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 4px; margin-top: 2px; font-size: 0.7rem; line-height: 1.25; color: #dfe5ff; font-variant-numeric: tabular-nums; }
.st-slot-st .st-bonus { margin-left: 0; font-size: 0.7rem; }
.st-lb-hp .st-bonus, .st-cf-hp .st-bonus, #stPSum .st-bonus { font-size: 0.8em; }

/* ================================ 盟友の「招待」タブ・コードを入力(2026-10-29 docs/specs/stella-referral-promo.md §1.2・§2.2) ================================ */
#stFrTabs { grid-template-columns: repeat(4, minmax(0, 1fr)); }
#stFrTabs .st-tab { font-size: 0.82rem; padding-left: 2px; padding-right: 2px; }
.st-inv { display: grid; gap: 8px; }
.st-inv-lead { margin: 0; padding: 8px 12px; border-radius: 12px; background: var(--st-glass); border: 1px solid var(--st-line); font-size: 0.78rem; color: #dfe6ff; }
.st-inv-card { display: grid; justify-items: center; gap: 2px; padding: 12px 10px; border-radius: 14px; background: var(--st-glass); border: 1px solid rgba(255,214,120,0.55); }
.st-inv-card small { font-size: 0.75rem; color: #cfd8ff; }
.st-inv-code { font-size: 1.9rem; line-height: 1.3; font-weight: 800; letter-spacing: 0.14em; padding-left: 0.14em; color: #ffe08a; font-variant-numeric: tabular-nums; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; user-select: all; }
.st-inv-btns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.st-inv-btns .hd-btn { display: inline-flex; align-items: center; justify-content: center; width: auto; min-height: 44px; padding: 8px 6px; text-align: center; text-decoration: none; font-size: 0.85rem; box-sizing: border-box; }
.st-inv-btns .hd-btn[hidden] { display: none; }
.st-inv-copybox { width: 100%; box-sizing: border-box; min-height: 5.4em; padding: 8px 10px; font: inherit; font-size: 0.8rem; line-height: 1.5; color: #fff; border-radius: 12px; background: rgba(6,8,30,0.7); border: 1px solid rgba(190,205,255,0.55); resize: none; }
.st-inv-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin: 8px 2px 2px; }
.st-inv-head h2 { margin: 0; font-size: 0.9rem; color: #ffe9a8; }
.st-inv-head b { font-size: 0.85rem; color: #fff; font-variant-numeric: tabular-nums; }
.st-inv-row { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 12px; background: var(--st-glass); border: 1px solid var(--st-line); }
.st-inv-row .nm { flex: 1 1 auto; min-width: 0; font-size: 0.92rem; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-inv-row .stt { flex: 0 1 auto; font-size: 0.75rem; text-align: right; color: #b8c2f0; }
.st-inv-row .stt.ok { color: #ffe08a; font-weight: 800; }
.st-inv-row .dt { flex: 0 0 auto; font-size: 0.72rem; color: #9aa3cc; font-variant-numeric: tabular-nums; }
.st-inv > .st-note { padding: 6px 10px; border-radius: 10px; background: var(--st-glass); }
.st-inv-enter { display: grid; gap: 4px; padding: 10px; border-radius: 14px; background: var(--st-glass); border: 1px dashed rgba(255,214,120,0.55); }
.st-inv-enter .st-fr-fline .st-fr-inp { text-transform: uppercase; letter-spacing: 0.1em; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
.st-inv-err { margin: 0 2px; min-height: 1.3em; font-size: 0.8rem; line-height: 1.6; font-weight: 700; color: var(--st-red-soft); }
.st-promo .st-fr-inp { display: block; width: 100%; box-sizing: border-box; text-transform: uppercase; letter-spacing: 0.1em; }
@media (max-width: 400px) { .st-inv-code { font-size: 1.6rem; } #stFrTabs .st-tab { font-size: 0.78rem; } }

/* ---- 盟友のキャラ(助っ人。2026-10-29 docs/specs/stella-helper.md) ---- */
/* 札: リーダーの札と同じ形の水色 */
.st-helper-tag { display: inline-block; padding: 1px 6px; border-radius: 999px; font-size: 0.75rem; font-weight: 900; line-height: 1.35; letter-spacing: 0.04em; white-space: nowrap; color: #062a33;
  background: linear-gradient(#bff6ff, #5fd3e8); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.55), 0 1px 3px rgba(0,0,0,0.5); }
.st-slot-top .st-helper-tag { padding: 0 5px; line-height: 1.3; }
.st-slot-top .st-lead-tag + .st-helper-tag { margin-right: auto; margin-left: -2px; }
.st-slot-top .st-helper-tag:first-child { margin-right: auto; }
.st-slot.helper { border-color: rgba(95, 211, 232, 0.75); }
.st-slot.helper.sel { border-color: #ffd166; }
/* 一覧の先頭の「盟友のキャラ」のボタン(キャラのタイルと同じ大きさ。属性の印・★は隠す) */
.st-ut.st-ut-helper { border: 1px dashed rgba(95, 211, 232, 0.85); background: rgba(20, 40, 80, 0.75); }
.st-ut.st-ut-helper .st-badge, .st-ut.st-ut-helper .st-stars { visibility: hidden; }
.st-ut.st-ut-helper .nm { color: #bff6ff; font-size: 0.66rem; letter-spacing: -0.02em; }
.st-ut.st-ut-helper .lv { color: #8fe6f5; font-weight: 800; }
/* 出撃の確認: 借りたキャラの札は絵の上の縁、未設定の枠は うすい「+」 */
.st-cf-ic .st-helper-tag { position: absolute; left: 50%; top: -2px; transform: translateX(-50%); z-index: 2; padding: 0 4px; letter-spacing: 0; line-height: 1.3; }
.st-cf-empty .st-slot-empty { width: 44px; height: 44px; }
.st-cf-empty .v { color: #aab3dd; }
.st-pskill .st-hl-who { flex: none; font-size: 0.75rem; color: #8fe6f5; white-space: nowrap; }
/* 盟友のお気に入りキャラの一覧(ダイアログ) */
.st-hl-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 8px; max-height: min(56vh, 460px); overflow-y: auto; margin-top: 8px; padding: 2px; }
.st-hl-row { display: flex; align-items: center; gap: 8px; min-height: 72px; padding: 6px 8px; font: inherit; text-align: left; color: #f0f0f5; cursor: pointer;
  background: rgba(14,18,64,0.7); border: 1px solid var(--st-line); border-radius: 12px; -webkit-tap-highlight-color: transparent; }
.st-hl-row:hover:not(:disabled) { background: rgba(30,38,100,0.85); }
.st-hl-row:focus-visible { outline: 3px solid #ffd166; outline-offset: 1px; }
.st-hl-row.cd { opacity: 0.45; cursor: not-allowed; }
.st-hl-ic { position: relative; flex: none; width: 56px; height: 56px; }
.st-hl-ic .st-ico { width: 56px; height: 56px; }
.st-hl-ic .st-badge { position: absolute; right: -5px; bottom: -3px; }
.st-hl-ic .st-badge img { width: 18px; height: 18px; }
.st-hl-tx { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.st-hl-nm { font-size: 0.82rem; line-height: 1.25; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-hl-meta { display: flex; align-items: center; gap: 6px; font-size: 0.75rem; }
.st-hl-r { font-weight: 800; color: #ffe08a; }
.st-hl-lv { font-variant-numeric: tabular-nums; font-weight: 800; }
.st-hl-who { font-size: 0.75rem; color: #aab3dd; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-hl-wait { font-size: 0.75rem; font-weight: 800; color: #ffb3a6; }

/* ---- 週間ランキング(デイリーチャレンジ。2026-10-30。docs/specs/stella-daily-ranking.md) ---- */
.st-rk-open { display: inline-flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 48px; margin-top: 8px; }
.st-rk-open .st-rk-ico { flex: 0 0 auto; color: var(--st-gold-soft); }
.st-rk-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.st-rk-weeks { margin-top: 0; }
.st-rk-weeks .st-tab { min-height: 38px; font-size: 0.85rem; }
.st-rk-view { display: grid; gap: 8px; }
.st-rk-head { padding: 10px 12px; border-radius: var(--st-r-l); background: var(--st-glass); border: 1px solid rgba(255,214,120,0.4); border-top: 1px solid var(--st-gold-line); }
.st-rk-wk { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 10px; }
.st-rk-wk-t { font-size: 1.05rem; color: #ffe9a8; }
.st-rk-wk-d { font-size: 0.8rem; color: #cfd8ff; font-variant-numeric: tabular-nums; }
.st-rk-rwn .nb { display: inline-block; }
.st-rk-age { margin: 2px 0 0; font-size: 0.72rem; color: #9aa3cc; text-align: right; }
.st-rk-rwt { display: flex; align-items: center; gap: 6px; margin: 10px 0 6px; font-size: 0.8rem; font-weight: 800; color: #e4e9ff; }
.st-rk-rwt .st-item-ico { flex: 0 0 auto; }
.st-rk-rw { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; margin: 0; padding: 0; list-style: none; }
.st-rk-rw li { display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 5px 2px; border-radius: var(--st-r-s); background: rgba(0,0,24,0.45); border: 1px solid var(--st-line); }
.st-rk-rw li:first-child { border-color: rgba(255,214,120,0.6); }
.st-rk-rw .t { font-size: 0.72rem; color: #b8c2f0; white-space: nowrap; }
.st-rk-rw b { font-size: 0.98rem; color: #ffe9a6; font-variant-numeric: tabular-nums; }
.st-rk-rwn { margin: 6px 0 0; font-size: 0.72rem; line-height: 1.5; color: #aeb5d8; }
.st-rk-list { display: grid; gap: 6px; }
.st-rk-row { display: grid; grid-template-columns: 36px 48px minmax(0, 1fr) auto; align-items: center; gap: 8px; min-height: 60px; padding: 6px 12px 6px 8px; border-radius: 14px; background: var(--st-glass); border: 1px solid var(--st-line); }
.st-rk-no { display: grid; place-items: center; box-sizing: border-box; width: 34px; height: 34px; border-radius: 50%; font-family: var(--st-font-num); font-size: 0.95rem; font-weight: 700; color: #cfd8ff; font-variant-numeric: tabular-nums; }
.st-rk-row.gold, .st-rk-row.silver, .st-rk-row.bronze { min-height: 66px; }
/* 押すとプロフィール(2026-11-02)。押した感触 = 少し縮む・キーボード = 黄色の輪 */
.st-rk-row.tap { cursor: pointer; transition: transform 0.08s ease-out, background-color 0.12s; -webkit-tap-highlight-color: transparent; }
.st-rk-row.tap:active { transform: scale(0.98); background-color: rgba(120, 140, 255, 0.16); }
.st-rk-row.tap:focus-visible { outline: 2px solid #ffd54a; outline-offset: 2px; }
html.hd-reduce .st-rk-row.tap { transition: none; }
/* 1〜3位のメダル(2026-10-30): 縁(円錐グラデの金属リング)+面(放射グラデ)+上のハイライトの弧+内側の影+落ち影。3つの要素だけ。重いフィルターは使わない */
.st-rk-row.gold .st-rk-no, .st-rk-row.silver .st-rk-no, .st-rk-row.bronze .st-rk-no {
  position: relative; isolation: isolate; overflow: hidden; border: 3px solid transparent; font-size: 1.05rem; font-weight: 700; line-height: 1; color: var(--md-ink);
  background: radial-gradient(circle at 34% 26%, var(--md-f1) 0%, var(--md-f2) 42%, var(--md-f3) 78%, var(--md-f4) 100%) padding-box, conic-gradient(from 200deg, var(--md-r1), var(--md-r2), var(--md-r3), var(--md-r2), var(--md-r1), var(--md-r2), var(--md-r3), var(--md-r1)) border-box;
  text-shadow: 0 1px 0 var(--md-emboss);
  box-shadow: inset 0 -3px 4px var(--md-shade), inset 0 1px 1px rgba(255,255,255,0.55), 0 0 0 1px var(--md-edge), 0 2px 4px rgba(0,0,0,0.55);
}
.st-rk-row.gold .st-rk-no::before, .st-rk-row.silver .st-rk-no::before, .st-rk-row.bronze .st-rk-no::before { content: ''; position: absolute; z-index: -1; left: 16%; right: 16%; top: 5%; height: 36%; border-radius: 50% 50% 46% 46% / 62% 62% 38% 38%; background: linear-gradient(rgba(255,255,255,0.8), rgba(255,255,255,0)); pointer-events: none; }
.st-rk-row.gold .st-rk-no { --md-f1: #fff7cc; --md-f2: #ffd95e; --md-f3: #e3a22e; --md-f4: #b97a1a; --md-r1: #fff1b0; --md-r2: #e8a93a; --md-r3: #8a5a14; --md-ink: #4a2a00; --md-emboss: rgba(255,246,200,0.75); --md-shade: rgba(120,70,10,0.55); --md-edge: #6a4410; }
.st-rk-row.silver .st-rk-no { --md-f1: #ffffff; --md-f2: #e4e9f5; --md-f3: #aeb8d0; --md-f4: #8792b0; --md-r1: #ffffff; --md-r2: #b4bed6; --md-r3: #5d6788; --md-ink: #1b2246; --md-emboss: rgba(255,255,255,0.85); --md-shade: rgba(60,70,110,0.5); --md-edge: #444d70; }
.st-rk-row.bronze .st-rk-no { --md-f1: #ffe3b8; --md-f2: #e4a566; --md-f3: #bd7430; --md-f4: #8e501c; --md-r1: #ffd6a0; --md-r2: #cf7f34; --md-r3: #6a3410; --md-ink: #2a1100; --md-emboss: rgba(255,224,180,0.6); --md-shade: rgba(80,35,5,0.55); --md-edge: #532808; }
/* 1位だけ: 金色の星を上に添える + ゆっくりな光の筋(演出を減らす設定・OSの動きを減らす設定では止める) */
.st-rk-row.gold { position: relative; }
.st-rk-row.gold::before { content: '\2605'; position: absolute; left: 19px; top: 1px; width: 14px; text-align: center; font-size: 14px; line-height: 14px; color: #ffd45e; text-shadow: 0 1px 1px rgba(60,30,0,0.7), 0 0 4px rgba(255,200,90,0.6); pointer-events: none; }
.st-rk-row.gold .st-rk-no::after { content: ''; position: absolute; top: -10%; bottom: -10%; left: 0; width: 50%; background: linear-gradient(105deg, rgba(255,255,255,0), rgba(255,255,255,0.7), rgba(255,255,255,0)); transform: translateX(-170%) skewX(-18deg); animation: stMedalShine 5s ease-in-out 1s infinite; pointer-events: none; }
@keyframes stMedalShine { 0% { transform: translateX(-170%) skewX(-18deg); } 28%, 100% { transform: translateX(270%) skewX(-18deg); } }
html.hd-reduce .st-rk-row.gold .st-rk-no::after { animation: none; }
@media (prefers-reduced-motion: reduce) { html:not(.hd-motion) .st-rk-row.gold .st-rk-no::after { animation: none; } }
/* 行にも金属のうすい縁と色味(左から消える) */
.st-rk-row.gold { border-color: rgba(255,214,120,0.75); background: linear-gradient(90deg, rgba(255,214,120,0.2), rgba(255,214,120,0) 62%), var(--st-glass); box-shadow: inset 0 1px 0 rgba(255,244,200,0.35), 0 0 12px rgba(255,200,90,0.22); }
.st-rk-row.silver { border-color: rgba(214,224,248,0.6); background: linear-gradient(90deg, rgba(214,224,248,0.15), rgba(214,224,248,0) 62%), var(--st-glass); box-shadow: inset 0 1px 0 rgba(255,255,255,0.22); }
.st-rk-row.bronze { border-color: rgba(217,150,42,0.6); background: linear-gradient(90deg, rgba(217,150,42,0.16), rgba(217,150,42,0) 62%), var(--st-glass); box-shadow: inset 0 1px 0 rgba(255,220,170,0.2); }
.st-rk-row.me { background: linear-gradient(rgba(255,214,120,0.3), rgba(255,214,120,0.1)), var(--st-glass); border-color: #ffd45e; box-shadow: 0 0 10px rgba(255,214,120,0.3); }
.st-rk-row.none { opacity: 0.72; }
.st-rk-meta { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.st-rk-meta .nm { font-size: 0.95rem; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-rk-meta small { font-size: 0.72rem; color: #b8c2f0; }
.st-rk-meta small.me { color: #ffe08a; font-weight: 800; }
.st-rk-sc { font-size: 1.05rem; font-weight: 800; color: #ffe9a6; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.st-rk-row.none .st-rk-sc { color: #9aa3cc; }
.st-rk-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; border-radius: var(--st-r-l); background: linear-gradient(rgba(255,214,120,0.26), rgba(255,214,120,0.08)), var(--st-glass); border: 1px solid #ffd45e; }
.st-rk-foot.none { background: var(--st-glass); border-color: var(--st-line); justify-content: center; }
.st-rk-fo-l { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; min-width: 0; }
.st-rk-fo-l b { font-size: 1.35rem; color: #fff; font-variant-numeric: tabular-nums; }
.st-rk-fo-l small { font-size: 0.8rem; color: #d6dcff; }
.st-rk-fo-none { font-size: 0.9rem; color: #d6dcff; }
@media (min-width: 720px) {
  .st-rk-row { grid-template-columns: 44px 52px minmax(0, 1fr) auto; padding: 8px 16px 8px 10px; }
  .st-rk-no { width: 38px; height: 38px; }
  .st-rk-row.gold::before { left: 26px; }
}
/* デイリーの結果: 今日のベストと週のスコア */
.st-rw-wk { margin: 8px 0 0; transition: opacity 0.4s ease-out, transform 0.4s ease-out; }
.st-rw-wk[hidden] { display: block; visibility: hidden; opacity: 0; transform: translateY(6px); }
.st-rw-wk.none, .st-rw-wk.none[hidden] { display: none; }
.st-rw-wk-l { margin: 0; font-size: 0.85rem; font-weight: 800; color: #fff; font-variant-numeric: tabular-nums; }
.st-rw-wk-up { margin: 2px 0 0; font-size: 0.78rem; font-weight: 800; color: #ffe08a; }
.st-rw-rank { margin-top: 6px; width: auto; min-height: 40px; padding: 6px 16px; }
html.hd-reduce .st-rw-wk { transition: none; }
/* 韓国語(2026-11-02): 音節の途中で折り返さず、スペースで折り返す(長い語だけ overflow-wrap で折る) */
html[lang="ko"] body { word-break: keep-all; overflow-wrap: break-word; }

/* ---- 月額プラン(2026-11-03。ショップの欄。docs/specs/stella-subscription.md §A) ---- */
.st-plan { margin: 10px 0 12px; padding: 10px; border: 1px solid rgba(255,214,120,0.45); border-radius: 12px; background: rgba(14,18,64,0.55); }
.st-plan-h { margin: 0 0 6px; font-size: 1rem; color: #ffe9a8; }
.st-plan-st, .st-plan-lead { margin: 2px 0; }
.st-plan-acts { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 8px; }
.st-plan-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 8px 0 4px; }
@media (max-width: 560px) { .st-plan-list { grid-template-columns: 1fr; } }
.st-plan-card { display: flex; flex-direction: column; gap: 4px; padding: 8px 10px; color: #f4f6ff; background: linear-gradient(rgba(44,52,140,0.92), rgba(20,24,80,0.95)); border: 1px solid rgba(255,214,120,0.55); border-radius: 12px; }
.st-plan-card.on { border-color: #ffe08a; box-shadow: 0 0 0 2px rgba(255,224,138,0.35); }
.st-plan-top { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.st-plan-t { font-size: 0.95rem; color: #ffe9a8; }
.st-plan-price { font-weight: 700; white-space: nowrap; }
.st-plan-l { margin: 0; font-size: 0.8rem; line-height: 1.45; }
.st-plan-none { color: #b9c2ea; }
.st-plan-tbl { font-size: 0.78rem; line-height: 1.45; }
.st-plan-tbl summary { cursor: pointer; color: #ffe9a8; }
.st-plan-tbl ul { margin: 4px 0 0; padding-left: 1.1em; }
.st-plan-badge { align-self: flex-start; margin-top: 2px; padding: 2px 8px; font-size: 0.75rem; font-weight: 700; color: #1b1440; background: #ffe08a; border-radius: 999px; }
.st-plan-go { align-self: stretch; margin-top: 4px; }

/* ---- ショップの商品カード(2026-11-03): バナー(2:1。場所を先に確保) + 名前・値段・中身の小さな絵と数 + 「詳細」 ---- */
.st-shop-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 359px) { .st-shop-list { grid-template-columns: 1fr; } }
@media (min-width: 760px) { .st-shop-list { grid-template-columns: repeat(3, minmax(0, 1fr)); } .st-shop-page { max-width: 760px; } }
.st-prod, .st-plan-card { min-width: 0; }
.st-prod { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.st-prod-buy { flex: 1; display: flex; flex-direction: column; align-items: stretch; gap: 4px; min-width: 0; padding: 0 0 8px; font: inherit; color: #f4f6ff; text-align: left; cursor: pointer; overflow: hidden; background: linear-gradient(rgba(44,52,140,0.92), rgba(20,24,80,0.95)); border: 1px solid rgba(255,214,120,0.55); border-radius: 12px; box-shadow: inset 0 1px 0 rgba(255,244,190,0.25), 0 2px 6px rgba(0,0,0,0.45); touch-action: manipulation; }
.st-prod-buy:hover:not(:disabled) { border-color: #ffe08a; }
.st-prod-buy:active:not(:disabled) { transform: translateY(1px); }
.st-prod-buy:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-prod-buy:disabled { cursor: default; opacity: 0.55; border-color: rgba(170,180,220,0.35); }
.st-prod-buy > :not(.st-prod-fig) { margin: 0 8px; }
.st-prod-fig { display: block; aspect-ratio: 2 / 1; width: 100%; background: rgba(14,18,64,0.6); overflow: hidden; }
.st-prod-bn { display: block; width: 100%; height: auto; aspect-ratio: 2 / 1; object-fit: cover; }
.st-prod-name { font-size: 0.9rem; line-height: 1.25; color: #fff3c4; font-variant-numeric: tabular-nums; }
.st-prod-pr { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; font-size: 0.9rem; }
.st-prod-pr .st-shop-price { margin-left: 0; }
.st-prod-rows { display: flex; flex-direction: column; gap: 2px; margin-top: 2px; }
.st-prod-row { display: flex; align-items: center; gap: 4px; font-size: 0.72rem; line-height: 1.3; color: #dfe6ff; font-variant-numeric: tabular-nums; min-width: 0; }
.st-prod-row .st-item-ico { flex: none; width: 18px; height: 18px; }
.st-prod-left { font-size: 0.72rem; font-weight: 700; color: #cfe3ff; }
.st-prod-dt { font-weight: 800; color: #ffe9a8; }
.st-plan-tbl-list { margin: 2px 0 8px; padding-left: 1.2em; font-size: 0.85rem; line-height: 1.5; }
.st-plan-card { padding: 0 0 8px; overflow: hidden; }


.st-plan-body > .st-plan-go { align-self: stretch; }
.st-plan-body > .st-plan-badge { align-self: flex-start; }
.st-plan-card .st-prod-rows { margin-top: 0; }
@media (min-width: 561px) and (max-width: 759px) { .st-plan-list { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.st-shop-inner { display: grid; gap: 8px; min-width: 0; }
.st-plan-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.st-plan-card > .st-plan-body { margin-left: 10px; margin-right: 10px; }
.st-plan-card > .st-plan-body > .st-prod-detail { width: 100%; }
.st-plan-card > .st-plan-body > .st-shop-fx { align-self: flex-start; }
.st-plan-card { gap: 6px; }
@media (max-width: 560px) {
  .st-plan-card { flex-direction: row; align-items: flex-start; padding: 8px; gap: 8px; }
  .st-plan-card > .st-prod-fig { flex: 0 0 42%; width: 42%; border-radius: 8px; }
  .st-plan-card > .st-plan-body { flex: 1; margin: 0; }
  .st-plan-top { flex-direction: column; align-items: flex-start; gap: 0; }
}
.st-plan-card > .st-plan-body { flex: 1; }
.st-plan-body > .st-plan-go + .st-prod-detail, .st-plan-body > .st-plan-badge + .st-prod-detail { margin-top: auto; }

/* ---- ショップのメニューと各ページ(2026-11-03) ---- */
.st-shop-slide { animation: stScreenSlide var(--st-screen-in) ease-out backwards; }
html.hd-reduce .st-shop-slide { animation: none !important; }

.st-shop-cat:focus-visible, .st-prod-detail:focus-visible { outline: 3px solid #ffd166; outline-offset: 2px; }
.st-shop-cat:active { transform: translateY(1px); }
.st-shop-cats { display: flex; flex-direction: column; gap: 10px; margin: 4px 0; }
.st-shop-cat { position: relative; display: flex; align-items: center; gap: 12px; width: 100%; min-height: 68px; padding: 10px 14px; font: inherit; color: #f4f6ff; text-align: left; cursor: pointer; background: linear-gradient(rgba(44,52,140,0.92), rgba(20,24,80,0.95)); border: 1px solid rgba(255,214,120,0.55); border-radius: 14px; box-shadow: inset 0 1px 0 rgba(255,244,190,0.25), 0 2px 6px rgba(0,0,0,0.45); touch-action: manipulation; }
.st-shop-cat:hover { border-color: #ffe08a; }
.st-shop-cat-ic { flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 12px; background: rgba(10,12,50,0.7); }
.st-shop-cat-ic .st-item-ico { width: 40px; height: 40px; }
.st-shop-cat-mid { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: flex-start; gap: 3px; }
.st-shop-cat-t { font-size: 1.05rem; color: #fff3c4; line-height: 1.25; }
.st-shop-cat-go { flex: none; font-size: 1.8rem; line-height: 1; color: #ffe08a; }
.st-shop-cat-rb { position: absolute; top: -9px; left: 14px; padding: 1px 10px; font-size: 0.68rem; font-weight: 800; color: #1b1440; background: #ffe08a; border-radius: 999px; box-shadow: 0 1px 3px rgba(0,0,0,0.45); }
.st-plan-badge.warn { color: #3b1500; background: #ffcf8a; }
.st-prod-hd { display: flex; align-items: flex-start; gap: 6px; min-height: 28px; }
.st-prod-detail { flex: none; padding: 2px 9px; min-height: 26px; font: inherit; font-size: 0.7rem; font-weight: 800; color: #ffe9a8; cursor: pointer; background: rgba(20,24,80,0.9); border: 1px solid rgba(255,214,120,0.7); border-radius: 999px; touch-action: manipulation; }
.st-prod-hd .st-prod-name { font-size: 0.82rem; line-height: 1.3; padding-top: 3px; min-width: 0; }
.st-prod-buy > :not(.st-prod-fig) { margin: 0 8px; }
.st-prod-pr .st-shop-price { font-size: 0.95rem; }
.st-prod.on .st-prod-buy { border-color: #ffe08a; box-shadow: 0 0 0 2px rgba(255,224,138,0.35); }
.st-prod-buy .st-plan-badge { align-self: flex-start; }
.st-shop-list.st-plan-list { grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 8px 0 4px; }
@media (max-width: 359px) { .st-shop-list.st-plan-list { grid-template-columns: 1fr; } }
@media (min-width: 760px) { .st-shop-list.st-plan-list { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.st-shop-cat:has(.st-shop-cat-rb) { margin-top: 8px; }

.st-plan-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; margin: 0 10px; }
.st-plan-card > .st-plan-body { margin-left: 10px; margin-right: 10px; }
.st-plan-card > .st-plan-body > * { margin-left: 0; margin-right: 0; }
.st-plan-card > .st-plan-body > .st-prod-detail { width: 100%; }
.st-plan-card > .st-plan-body > .st-shop-fx { align-self: flex-start; }
.st-plan-card { gap: 6px; }
@media (max-width: 560px) {
  .st-plan-card { flex-direction: row; align-items: flex-start; padding: 8px; gap: 8px; }
  .st-plan-card > .st-prod-fig { flex: 0 0 42%; width: 42%; border-radius: 8px; }
  .st-plan-card > .st-plan-body { flex: 1; margin: 0; }
  .st-plan-top { flex-direction: column; align-items: flex-start; gap: 0; }
}
/* ログインボーナスと同じダイアログの月額プランの区画(2026-11-03) */
.st-lbn-plan { margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--st-line); }
.st-lbn-ph { margin: 0 0 2px; font-size: 0.95rem; font-weight: 700; color: #ffe08a; text-align: center; }
/* 2区画のときは報酬のカードを小さめに(1画面に収めやすく。スクロールは OK ボタンの上の本文の中だけ) */
.st-lbn.two .st-lbn-l { gap: 8px; margin: 4px 0 2px; }
.st-lbn.two .st-lbn-i { min-width: 84px; padding: 6px 8px; gap: 0; }
.st-lbn.two .st-lbn-i .st-item-ico { width: 40px; height: 40px; }
.st-lbn.two .st-lbn-i .nm { font-size: 0.74rem; }
.st-lbn.two .st-lbn-i .n { font-size: 1.1rem; }
.st-lbn.two .st-lbn-ph { margin-top: 6px; }
.st-lbn.two .st-dlg-p { margin: 4px 0; }
