/* ===== 物件ガチャ v2 ===== */
.v2-stat { background: #f5f6fa; border: 1px solid var(--border); border-radius: 20px; padding: 4px 12px; display: flex; align-items: center; gap: 6px; cursor: pointer; }
.v2-stat .stat-val { font-variant-numeric: tabular-nums; }
#v2-bell { position: relative; background: transparent; border: 1px solid var(--border); border-radius: 50%; width: 32px; height: 32px; cursor: pointer; font-size: 14px; }
.v2-head-left { display: flex; align-items: center; gap: 8px; min-width: 0; }
#v2-name-chip { display: flex; align-items: center; gap: 4px; min-width: 0; max-width: 34vw; background: #f5f6fa; border: 1px solid var(--border); border-radius: 20px; padding: 5px 10px; font-size: 12px; font-weight: 700; color: var(--text-main); cursor: pointer; }
#v2-myname { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#v2-name-chip .v2-name-edit { color: var(--text-sub); font-size: 11px; flex-shrink: 0; }
#v2-name-chip:hover { border-color: var(--text-sub); }
.v2-name-in { width: 100%; box-sizing: border-box; font-size: 16px; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; margin: 12px 0; }
.v2-name-btns { display: flex; gap: 8px; }
.v2-name-btns .btn { flex: 1; }
@media (min-width: 600px) { #v2-name-chip { max-width: 220px; } }
#v2-bell-badge { position: absolute; top: -4px; right: -4px; background: #e74c3c; color: #fff; font-size: 9px; border-radius: 8px; padding: 0 5px; display: none; }
.v2-jp { background: radial-gradient(circle at 50% 0%, #4a3500, #1a1200); color: #fff; border-radius: 18px; padding: 14px 16px; text-align: center; margin-bottom: 12px; box-shadow: 0 0 0 2px #ffd257, 0 8px 24px rgba(120,80,0,0.35); }
.v2-jp-label { font-size: 11px; letter-spacing: 3px; color: #ffd257; font-weight: 900; }
.v2-jp-pool { font-size: 30px; font-weight: 900; color: #ffe08a; font-variant-numeric: tabular-nums; text-shadow: 0 0 18px rgba(255,210,87,0.6); word-break: break-all; }
.v2-jp-sub { font-size: 11px; color: #e8d6a8; }
.v2-ad-btn { font-size: 16px; padding: 15px; animation: pulse-btn 1.6s infinite; }
.v2-rule { font-size: 12px; color: var(--text-sub); text-align: center; margin: 4px 0 14px; }
.v2-battle { color: #c0392b; font-weight: 900; }
.v2-box { background: var(--panel); border: 1px solid var(--border); border-radius: 18px; padding: 14px; margin-bottom: 14px; box-shadow: 0 3px 12px rgba(0,0,0,0.06); }
.v2-box-head { display: flex; justify-content: space-between; align-items: flex-start; }
.v2-box-name { font-size: 18px; font-weight: 900; }
.v2-box-seq { font-size: 11px; color: var(--text-sub); font-weight: normal; }
.v2-box-price { font-size: 13px; color: #c0392b; font-weight: 900; }
.v2-box-last { font-size: 10px; color: var(--text-sub); text-align: right; line-height: 1.4; }
.v2-box-last b { font-size: 12px; color: #9a3fd0; }
.v2-bar { height: 10px; background: #eceef3; border-radius: 6px; overflow: hidden; margin: 10px 0 4px; }
.v2-bar > div { height: 100%; background: linear-gradient(90deg, #f39c12, #f1c40f); transition: width 0.4s; }
.v2-box-rem { font-size: 12px; color: var(--text-sub); text-align: right; font-variant-numeric: tabular-nums; }
.v2-box-rem b { color: var(--text-main); font-size: 15px; }
.v2-box-btns { display: grid; grid-template-columns: repeat(auto-fit, minmax(60px, 1fr)); gap: 6px; margin-top: 10px; }
.v2-box-btns .btn { padding: 8px 2px; font-size: 13px; line-height: 1.25; }
.v2-box-btns small { font-size: 10px; font-weight: normal; }
.v2-ticket-btn { width: 100%; margin-top: 6px; background: #fff3d6; border: 1px solid var(--gold); color: #8a5a00; font-size: 12px; padding: 9px; }
.v2-intel { margin-top: 8px; background: #f2f7ff; border: 1px solid #c9dcf5; border-radius: 10px; padding: 8px 10px; font-size: 12px; line-height: 1.7; }
.v2-sum-miss { text-align: center; color: #c9d2e6; font-size: 13px; margin-bottom: 12px; line-height: 1.7; }
.v2-ad-slot { min-height: 250px; border: 1px dashed #bbb; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: #999; font-size: 12px; margin: 10px 0; background: #fafafa; }
.v2-sec { font-size: 13px; font-weight: 900; color: var(--gold); margin: 14px 2px 8px; }
.v2-items { background: var(--panel); border: 1px solid var(--border); border-radius: 14px; padding: 4px 12px 10px; margin-bottom: 10px; }
.v2-item { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; font-size: 13px; border-bottom: 1px dashed var(--border); gap: 8px; }
.v2-item:last-child { border-bottom: none; }
.v2-item .btn { width: auto; padding: 6px 10px; }
.v2-prop { position: relative; }
.v2-prop-n { position: absolute; top: -6px; left: -4px; background: #1d2433; color: #ffd257; font-size: 10px; font-weight: 900; padding: 1px 6px; border-radius: 8px; z-index: 3; }
.v2-sell { width: 100%; margin-top: 4px; font-size: 10px; padding: 4px; border-radius: 6px; border: 1px solid var(--border); background: #fff; color: var(--text-sub); cursor: pointer; }
.v2-coin { font-size: 90px; animation: v2Flip 0.35s linear infinite; }
@keyframes v2Flip { 0% { transform: rotateY(0); } 100% { transform: rotateY(360deg); } }
.v2-admin select, .v2-admin input { margin-bottom: 4px; }
#v2-toast { position: fixed; left: 50%; bottom: 90px; transform: translateX(-50%) translateY(20px); background: rgba(20,24,36,0.94); color: #fff; padding: 10px 16px; border-radius: 20px; font-size: 13px; z-index: 9000; opacity: 0; pointer-events: none; transition: 0.25s; max-width: calc(100% - 32px); text-align: center; }
#v2-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ---- オリパ表示 ---- */
.v2-cover { width: 100%; max-height: 180px; object-fit: cover; border-radius: 10px; margin-bottom: 8px; display: block; }
.v2-box-last { font-size: 11px; text-align: right; color: #c98a00; line-height: 1.4; min-width: 0; }
.v2-box-head { display: flex; justify-content: space-between; gap: 8px; align-items: flex-start; }
.v2-lineup { margin: 8px 0; font-size: 12px; max-height: 190px; overflow-y: auto; border-top: 1px dashed rgba(127,127,127,.3); padding-top: 6px; }
.v2-lu-row { display: grid; grid-template-columns: 46px minmax(0,1fr) auto auto; gap: 6px; padding: 2px 0; align-items: center; }
.v2-lu-rank { font-weight: 800; }
.v2-lu-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-lu-val { font-weight: 700; } .v2-lu-rem { color: #888; font-size: 11px; }
.v2-lu-more, .v2-mystery { text-align: center; color: #888; padding: 6px 0; }
.v2-ticket-btn { width: 100%; margin-top: 6px; }
.v2-pack-cover { width: 70%; max-height: 120px; object-fit: cover; border-radius: 8px; margin: 10px auto; display: block; position: relative; z-index: 1; }
.v2-cutin { position: absolute; top: 18%; left: 0; right: 0; text-align: center; font-size: 28px; font-weight: 900; color: #fff; background: linear-gradient(90deg, transparent, #e74c3c 20%, #e74c3c 80%, transparent); padding: 8px 0; z-index: 2; pointer-events: none; animation: v2cut .5s ease-out; }
@keyframes v2cut { from { transform: translateX(-100%); } to { transform: none; } }
/* ---- 作成フォーム ---- */
.v2-create select, .v2-create input { width: 100%; box-sizing: border-box; }
.v2-cr-row { border: 1px solid rgba(127,127,127,.3); border-radius: 10px; padding: 8px; margin: 8px 0; }
.v2-cr-line { display: flex; gap: 6px; align-items: center; margin: 4px 0; min-width: 0; }
.v2-cr-line select, .v2-cr-line input { flex: 1 1 0; min-width: 0; width: auto; }
.v2-cr-head { display: flex; justify-content: space-between; align-items: center; font-size: 13px; margin-bottom: 4px; }
.v2-create .cr-del { width: auto; background: none; border: 1px solid #e74c3c; color: #e74c3c; border-radius: 6px; padding: 3px 8px; font-size: 12px; cursor: pointer; }
.v2-cr-grid { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr); gap: 6px; }
.v2-cr-grid label { display: flex; flex-direction: column; font-size: 11px; color: #888; min-width: 0; gap: 2px; }
.v2-create .v2-cr-fx input, .v2-create .v2-cr-grid input, .v2-create .v2-cr-grid select { padding: 8px 6px; font-size: 13px; }
.v2-cr-unit { font-size: 12px; color: #888; white-space: nowrap; }
.v2-cr-fx { flex-wrap: wrap; } .v2-cr-fx label { display: flex; flex-direction: column; font-size: 11px; flex: 1 1 0; min-width: 0; }
.v2-cr-add { display: flex; gap: 6px; flex-wrap: wrap; margin: 8px 0; }
.v2-cr-stats { font-size: 13px; padding: 8px; background: rgba(127,127,127,.1); border-radius: 8px; }
.v2-warn { color: #e74c3c; }
.v2-cr-imgrow { display: flex; gap: 8px; align-items: center; margin: 6px 0; } .v2-cr-imgrow img { width: 80px; height: 60px; object-fit: cover; border-radius: 6px; }
.v2-cr-open { display: flex; justify-content: space-between; gap: 8px; align-items: center; font-size: 13px; padding: 6px 0; border-bottom: 1px solid rgba(127,127,127,.2); }

.v2-myid { margin: 24px 0 8px; font-size: 11px; color: #888; text-align: center; word-break: break-all; display: flex; gap: 6px; align-items: center; justify-content: center; flex-wrap: wrap; }
.v2-myid .btn { width: auto; padding: 2px 10px; font-size: 11px; }

/* ---- アイテム ---- */
.v2-item { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.v2-item-main { display: flex; flex-direction: column; min-width: 0; gap: 2px; }
.v2-item-main small { font-size: 11px; color: #888; line-height: 1.4; }
.v2-item .btn { width: auto; flex: 0 0 auto; white-space: nowrap; }
.v2-item-note { font-size: 11px; color: #888; white-space: nowrap; }
.v2-buff { background: rgba(242,183,5,.08); border-radius: 8px; padding: 6px 8px; }
.v2-buff-left { font-size: 12px; font-weight: 700; color: #c98a00; white-space: nowrap; }
.v2-buff-chips { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; margin: 8px 0 2px; }
.v2-buff-chip { font-size: 11px; background: rgba(242,183,5,.15); color: #8a5d00; border-radius: 999px; padding: 3px 10px; }

/* ---- 結果画面の広告（ボタンから離して置く） ---- */
.v2-sum-ad { margin: 36px auto 8px; text-align: center; padding-top: 14px; border-top: 1px dashed rgba(255,255,255,.15); }
.v2-sum-ad-label { font-size: 10px; letter-spacing: 1px; color: #8a93a8; margin-bottom: 4px; }

/* ---- 自動の表紙（画像がないオリパ） ---- */
.v2-autocover { position: relative; overflow: hidden; aspect-ratio: 16 / 7.6; border-radius: 12px; margin-bottom: 10px; background: radial-gradient(circle at 78% 45%, var(--a) 0%, var(--b) 60%, #10121a 100%); display: flex; align-items: center; padding: 0 14px; color: #fff; }
.v2-ac-rays { position: absolute; inset: -40%; background: repeating-conic-gradient(from 0deg at 78% 50%, rgba(255,255,255,.06) 0 6deg, transparent 6deg 18deg); pointer-events: none; }
.v2-ac-left { position: relative; flex: 1 1 auto; min-width: 0; z-index: 1; }
.v2-ac-tag { display: inline-block; font-size: 10px; font-weight: 900; letter-spacing: 2px; color: #1b1f2c; background: #ffd257; border-radius: 999px; padding: 2px 9px; }
.v2-ac-title { font-size: clamp(16px, 5vw, 22px); font-weight: 900; line-height: 1.25; margin-top: 6px; text-shadow: 0 2px 6px rgba(0,0,0,.4); overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.v2-ac-meta { font-size: 12px; margin-top: 6px; color: #f3e6c4; } .v2-ac-meta b { color: #ffd257; font-size: 14px; }
.v2-ac-card { position: relative; z-index: 1; flex: 0 0 auto; width: 27%; max-width: 112px; aspect-ratio: 11 / 15; border-radius: 10px; background: linear-gradient(180deg, var(--a), var(--b)); border: 3px solid var(--ring); box-shadow: 0 0 22px var(--glow); transform: rotate(6deg); overflow: hidden; }
.v2-ac-top { display: flex; justify-content: space-between; align-items: center; padding: 4px 5px; font-size: 9px; font-weight: 700; gap: 2px; }
.v2-ac-top b { color: #1b1f2c; border-radius: 4px; padding: 0 4px; font-size: 8px; white-space: nowrap; }
.v2-ac-emoji { font-size: clamp(26px, 9vw, 40px); text-align: center; margin-top: 4%; }
.v2-ac-name { position: absolute; left: 0; right: 0; bottom: 0; background: #fff; color: #1b1f2c; text-align: center; font-size: 10px; font-weight: 900; padding: 4px 3px; line-height: 1.25; }
.v2-ac-price { color: #c0392b; font-size: 12px; }
.v2-ac-mystery .v2-ac-name { background: #2a1f3d; color: #fff; }
.v2-ac-pack { width: 86%; margin: 10px auto; aspect-ratio: 16 / 9; position: relative; z-index: 1; }

/* ---- オリパ一覧：カードのグリッド（PCで3列） ---- */
.v2-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; margin-top: 12px; }
@media (min-width: 640px) { .v2-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .v2-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); width: min(1180px, 94vw); margin-left: calc(50% - min(590px, 47vw)); } }
.v2-card { background: var(--panel, #fff); border: 1px solid var(--border, #e0e0e6); border-radius: 14px; padding: 8px; box-shadow: 0 3px 12px rgba(0,0,0,.06); display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.v2-card-tags { display: flex; gap: 4px; flex-wrap: wrap; min-height: 20px; }
.v2-tag { font-size: 10px; font-weight: 900; padding: 2px 7px; border-radius: 4px; border: 1px solid rgba(0,0,0,.25); line-height: 1.5; }
.v2-tag-new { background: #fff200; color: #1b1f2c; } .v2-tag-few { background: #ff4d6d; color: #fff; } .v2-tag-mys { background: #7b3fe4; color: #fff; }
.v2-tag-jp { background: #1b1f2c; color: #ffd257; } .v2-tag-last { background: #2563eb; color: #fff; }
.v2-card-cover { position: relative; cursor: pointer; border-radius: 10px; overflow: hidden; }
.v2-card-cover .v2-autocover, .v2-card-cover .v2-cover { margin-bottom: 0; }
.v2-card-more { position: absolute; right: 8px; bottom: 6px; font-size: 10px; font-weight: 700; color: #fff; background: rgba(0,0,0,.45); padding: 2px 8px; border-radius: 999px; z-index: 2; }
.v2-card-meta { display: flex; align-items: center; gap: 10px; }
.v2-card-price { flex: 0 0 auto; font-size: 13px; } .v2-card-price b { font-size: 18px; } .v2-card-price small { font-size: 11px; color: #888; margin-left: 2px; }
.v2-card-rem { flex: 1 1 auto; min-width: 0; font-size: 11px; text-align: right; } .v2-card-rem b { font-size: 13px; }
.v2-card-rem .v2-bar { margin-top: 3px; height: 8px; }
.v2-pull-btns { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.v2-pull { border: none; border-radius: 9px; padding: 9px 2px 7px; font-weight: 900; font-size: 15px; cursor: pointer; color: #fff; line-height: 1.15; display: flex; flex-direction: column; align-items: center; box-shadow: 0 2px 0 rgba(0,0,0,.15); }
.v2-pull small { font-size: 10px; font-weight: 700; opacity: .9; margin-top: 2px; }
.v2-pull-1 { background: linear-gradient(180deg, #ff3b5c, #d90429); }
.v2-pull-10 { background: linear-gradient(180deg, #ffe58a, #e0a800); color: #3a2a00; }
.v2-pull-100 { background: linear-gradient(90deg, #ff3b5c, #ff9f1c, #f9e900, #2ec4b6, #3a86ff, #8338ec); text-shadow: 0 1px 2px rgba(0,0,0,.4); }
.v2-pull-1000 { grid-column: 1 / -1; background: linear-gradient(90deg, #3a0ca3, #f72585, #ff9f1c, #f9e900, #2ec4b6); text-shadow: 0 1px 2px rgba(0,0,0,.4); }
.v2-pull:active { filter: brightness(0.93); }
/* ---- 詳細 ---- */
.v2-detail { position: fixed; inset: 0; z-index: 1500; background: rgba(10,12,20,.6); display: flex; align-items: flex-end; justify-content: center; }
@media (min-width: 640px) { .v2-detail { align-items: center; } }
.v2-detail-body { position: relative; width: 100%; max-width: 560px; max-height: 92vh; overflow-y: auto; background: var(--panel, #fff); border-radius: 18px 18px 0 0; padding: 14px 14px 18px; }
.v2-detail-anim { animation: v2up .2s ease-out; } /* 開いたときだけ。中身の更新では動かさない */
@media (min-width: 640px) { .v2-detail-body { border-radius: 18px; } }
@keyframes v2up { from { transform: translateY(30px); opacity: .4; } to { transform: none; opacity: 1; } }
.v2-detail-x { position: absolute; top: 8px; right: 10px; z-index: 5; width: 34px; height: 34px; border-radius: 50%; border: none; background: rgba(0,0,0,.55); color: #fff; font-size: 16px; cursor: pointer; }
.v2-detail-last { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding: 8px 10px; background: #eef4ff; border-radius: 10px; font-size: 13px; }
.v2-detail-last span { font-size: 11px; font-weight: 900; color: #2563eb; } .v2-detail-last b { flex: 1 1 auto; } .v2-detail-last em { font-style: normal; font-weight: 900; color: #c0392b; }
.v2-detail .v2-lineup { max-height: none; }
.v2-detail .v2-pull-btns { margin-top: 14px; }
.v2-ac-rtp { display: inline-flex; align-items: baseline; gap: 2px; margin-top: 6px; background: linear-gradient(180deg, #fff6c9, #ffd257); color: #6b3a00; font-size: 11px; font-weight: 900; padding: 2px 10px 3px; border-radius: 999px; box-shadow: 0 2px 8px rgba(0,0,0,.3); }
.v2-ac-rtp b { font-size: 18px; line-height: 1; color: #c0392b; margin-left: 4px; }

/* ---- タグ（運営が付ける）と絞り込み ---- */
.v2-tag-c { border-color: rgba(0,0,0,.15); }
.v2-tag-c-rec { background: #ff7a00; color: #fff; } .v2-tag-c-hot { background: linear-gradient(90deg, #ff1e56, #ff7a00); color: #fff; }
.v2-tag-c-rtp { background: #16a34a; color: #fff; } .v2-tag-c-easy { background: #38bdf8; color: #06283d; }
.v2-tag-c-lim { background: #a21caf; color: #fff; } .v2-tag-c-high { background: #1b1f2c; color: #ffd257; }
.v2-tag-c-cheap { background: #fde68a; color: #6b3a00; } .v2-tag-c-etc { background: #e2e8f0; color: #1e293b; }
.v2-filter { display: flex; gap: 6px; overflow-x: auto; padding: 4px 0 2px; margin-top: 10px; -webkit-overflow-scrolling: touch; }
@media (min-width: 1000px) { .v2-filter { width: min(1180px, 94vw); margin-left: calc(50% - min(590px, 47vw)); } }
.v2-fchip { flex: 0 0 auto; border: 1px solid var(--border, #e0e0e6); background: #fff; color: #444; border-radius: 999px; padding: 5px 12px; font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.v2-fchip.on { background: #1b1f2c; color: #ffd257; border-color: #1b1f2c; }
.v2-cr-tags { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 6px; }
.v2-cr-open-wrap { border-bottom: 1px solid rgba(127,127,127,.2); padding-bottom: 6px; }
.v2-cr-open-wrap .v2-cr-open { border-bottom: none; }
.v2-cr-tagbox { background: rgba(127,127,127,.08); border-radius: 8px; padding: 8px; margin-top: 4px; }

/* ===== 説明（はじめての物件・ルール） ===== */
.v2-guide { max-width: 400px; }
.v2-guide-emoji { font-size: 44px; line-height: 1; margin-bottom: 4px; }
.v2-guide-list { text-align: left; display: flex; flex-direction: column; gap: 8px; margin: 6px 0 14px; }
.v2-guide-list > div { display: flex; gap: 10px; align-items: flex-start; background: #f7f8fb; border-radius: 12px; padding: 9px 11px; }
.v2-guide-list span { font-size: 20px; line-height: 1.2; flex-shrink: 0; }
.v2-guide-list p { margin: 0; font-size: 12px; line-height: 1.6; color: var(--text-sub); }
.v2-guide-list p b { display: block; font-size: 13px; color: var(--text-main); }
.v2-guide-btns { display: flex; gap: 8px; }
.v2-guide-btns .btn { flex: 1; font-size: 13px; }
.v2-guide-close { margin-top: 10px; background: none; border: none; color: var(--text-sub); font-size: 12px; text-decoration: underline; cursor: pointer; }
.v2-rules { max-width: 520px; display: flex; flex-direction: column; max-height: 88vh; padding: 18px 16px 14px; }
.v2-rules-body { overflow-y: auto; touch-action: pan-y; user-select: text; text-align: left; margin: 10px 0 12px; padding-right: 4px; -webkit-overflow-scrolling: touch; }
.v2-rules-body section { padding: 10px 0; border-bottom: 1px solid var(--border); }
.v2-rules-body section:last-child { border-bottom: none; }
.v2-rules-body h3 { margin: 0 0 6px; font-size: 14px; font-weight: 900; color: var(--text-main); }
.v2-rules-body p, .v2-rules-body li { font-size: 12.5px; line-height: 1.75; color: var(--text-sub); margin: 0; }
.v2-rules-body ul { margin: 0; padding-left: 1.2em; }
.v2-rules-body li + li { margin-top: 4px; }
.v2-rules-body b { color: var(--text-main); }
.v2-rule-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.v2-rules-link { flex-shrink: 0; background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: 4px 10px; font-size: 11px; font-weight: 700; color: var(--text-main); cursor: pointer; }
.v2-newbie { display: flex; align-items: center; justify-content: space-between; gap: 10px; background: #fff8e6; border: 1px solid #f3d27a; border-radius: 12px; padding: 9px 12px; margin-bottom: 10px; font-size: 12px; font-weight: 700; color: #6b4e00; }
.v2-newbie .btn { width: auto; flex-shrink: 0; padding: 6px 12px; }
.v2-rules-btn { margin-top: 12px; }
.v2-rules > .btn { flex-shrink: 0; }

/* ===== 公開中のオリパの編集 ===== */
.v2-editing { box-shadow: 0 0 0 2px var(--gold); }
.v2-edit-head { display: flex; gap: 10px; align-items: flex-start; justify-content: space-between; background: #fff8e6; border: 1px solid #f3d27a; border-radius: 12px; padding: 10px 12px; margin-bottom: 10px; }
.v2-edit-head b { font-size: 14px; color: #6b4e00; }
.v2-edit-head small { display: block; margin-top: 4px; font-size: 11.5px; line-height: 1.6; color: #6b5a2a; }
.v2-edit-head small b { font-size: inherit; }
.v2-edit-head .btn { width: auto; flex-shrink: 0; }
.v2-create input:disabled, .v2-create select:disabled { opacity: .55; cursor: not-allowed; }
.v2-cr-open > span:last-child { flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 599px) {
  .v2-cr-open { flex-direction: column; align-items: stretch; }
  .v2-cr-open > span:last-child { display: grid !important; grid-template-columns: repeat(4, 1fr); }
  .v2-cr-open > span:last-child .btn { width: 100%; padding: 6px 2px; font-size: 11px; }
}

/* ===== 景品の補足・アイテム説明 ===== */
.v2-lu-sub { display: block; font-size: 10.5px; font-weight: 400; color: var(--text-sub); line-height: 1.5; margin-top: 1px; white-space: normal; }
.v2-lu-sub b { color: #b07a00; font-weight: 700; }
.v2-cr-itemdesc { font-size: 11.5px; color: var(--text-sub); background: #f7f8fb; border-radius: 8px; padding: 6px 9px; margin-top: 6px; line-height: 1.6; }
.v2-item-cash { color: #b07a00; }
.v2-rules-items { display: grid; gap: 6px; margin-top: 8px; }
.v2-rules-items > div { display: flex; gap: 8px; align-items: flex-start; background: #f7f8fb; border-radius: 10px; padding: 7px 9px; }
.v2-rules-items span { font-size: 18px; line-height: 1.3; }
.v2-rules-items p { margin: 0; font-size: 11.5px !important; line-height: 1.6 !important; }
.v2-rules-items p b { display: block; font-size: 12.5px; }
.v2-rules-items p small { display: block; color: #b07a00; font-size: 10.5px; }

.v2-use-btns { display: flex; flex-direction: column; gap: 4px; flex-shrink: 0; }
.v2-use-btns .btn { width: auto; white-space: nowrap; }
.v2-sec-note { font-size: 10.5px; font-weight: 400; color: var(--text-sub); margin-left: 8px; }

/* ===== ルールの編集 ===== */
.v2-rules-btns { display: flex; gap: 8px; flex-shrink: 0; }
.v2-rules-btns .btn { flex: 1; }
.v2-rules-edit { max-width: 640px; }
.v2-re-help { font-size: 11.5px; color: var(--text-sub); background: #fff8e6; border-radius: 10px; padding: 8px 10px; margin-bottom: 10px; line-height: 1.6; }
.v2-re-sec { border: 1px solid var(--border); border-radius: 12px; padding: 8px; margin-bottom: 8px; background: #fafbfd; }
.v2-re-row { display: flex; gap: 4px; align-items: center; margin-bottom: 6px; }
.v2-re-icon { width: 52px !important; flex: 0 0 52px; text-align: center; padding: 6px 4px !important; margin: 0 !important; }
.v2-re-title { flex: 1; min-width: 0; padding: 6px 8px !important; margin: 0 !important; font-weight: 700; }
.v2-re-btn { flex: 0 0 30px; height: 30px; border: 1px solid var(--border); background: #fff; border-radius: 8px; cursor: pointer; font-size: 13px; }
.v2-re-btn:disabled { opacity: .35; cursor: default; }
.v2-re-del { color: #c0392b; }
.v2-re-body { width: 100%; box-sizing: border-box; font-size: 13px; line-height: 1.6; padding: 8px; border: 1px solid var(--border); border-radius: 8px; resize: vertical; margin: 0; font-family: inherit; }

/* ===== 封入数・残り内訳 ===== */
.v2-lu-rem b { color: var(--text-main); font-size: 12px; }
.v2-lu-out, .v2-lu-out b { color: #bbb !important; }
.v2-lu-gone .v2-lu-name, .v2-lu-gone .v2-lu-val { opacity: .45; text-decoration: line-through; }
.v2-lu-sum { background: #f7f8fb; border-radius: 10px; padding: 8px 10px; margin: 8px 0 4px; }
.v2-lu-sum-h { font-size: 11px; font-weight: 700; color: var(--text-sub); margin-bottom: 4px; }
.v2-lu-sum-list { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 13px; font-variant-numeric: tabular-nums; }
.v2-lu-sum-list b { font-size: 11px; margin-right: 2px; }
.v2-lu-sum-list small { color: var(--text-sub); font-size: 11px; }

/* ===== 外れのカード ===== */
.v2-miss-card .est-card-art { position: relative; filter: saturate(.6); }
.v2-miss-card .est-card-price { color: #6b717c !important; }
.v2-miss-n { position: absolute; right: 6px; bottom: 4px; background: rgba(0,0,0,.65); color: #fff; font-size: 11px; font-weight: 900; border-radius: 8px; padding: 1px 6px; }

/* ===== 結果画面の並べ方 ===== */
.v2-sum-mode { display: flex; align-items: center; justify-content: flex-end; gap: 6px; margin: 4px 0 8px; }
.v2-sum-mode span { margin-right: auto; color: #c9d2e6; font-size: 12px; }
.v2-sum-mode button { background: rgba(255,255,255,.08); color: #c9d2e6; border: 1px solid rgba(255,255,255,.18); border-radius: 14px; padding: 5px 12px; font-size: 12px; font-weight: 700; cursor: pointer; }
.v2-sum-mode button.on { background: #ffd257; color: #3a2a00; border-color: #ffd257; }
.v2-sum-n { position: absolute; top: 44%; right: 4px; z-index: 3; background: #e74c3c; color: #fff; font-size: 12px; font-weight: 900; border-radius: 12px; padding: 2px 8px; box-shadow: 0 2px 6px rgba(0,0,0,.4); }

/* 物件タブの数字が切れないように（スマホ） */
@media (max-width: 420px) { .est-head-row b { font-size: 12px; white-space: normal; line-height: 1.3; } }

/* ===== スマホ：開いてすぐオリパが見えるように ===== */
@media (max-width: 639px) {
  /* 説明文とお知らせはオリパ一覧の下へ */
  .container { display: flex; flex-direction: column; }
  #v2-intro { order: 2; padding-top: 0 !important; }
  /* JACKPOT は小さめに */
  .v2-jp { padding: 9px 12px; margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; text-align: left; }
  .v2-jp-label { font-size: 10px; letter-spacing: 1px; }
  .v2-jp-pool { font-size: 20px; text-align: right; }
  .v2-jp-sub { display: none; }
}

/* ===== オンラインオリパ風の開封演出 ===== */
.v2-op { position: relative; width: 100%; height: 100%; min-height: 420px; display: flex; flex-direction: column; align-items: center; justify-content: center; overflow: hidden; }
.v2-op-rays { position: absolute; top: 50%; left: 50%; width: 900px; height: 900px; margin: -450px 0 0 -450px; opacity: 0; transition: opacity .4s; background: repeating-conic-gradient(rgba(255,255,255,.18) 0 8deg, transparent 8deg 20deg); animation: v2spin 12s linear infinite; pointer-events: none; }
@keyframes v2spin { to { transform: rotate(360deg); } }
.v2-op-pack { position: relative; z-index: 2; width: min(270px, 72vw); border-radius: 16px; overflow: hidden; background: #1b1f2c; box-shadow: 0 0 0 3px rgba(255,255,255,.5), 0 0 30px rgba(255,255,255,.35); animation: v2float 1.6s ease-in-out infinite; transition: box-shadow .3s; }
.v2-op-pack .v2-pack-cover, .v2-op-pack .v2-autocover { width: 100%; display: block; margin: 0; border-radius: 0; }
.v2-op-name { color: #fff; font-weight: 900; font-size: 14px; text-align: center; padding: 8px 10px 0; }
.v2-op-sub { color: #c9d2e6; font-size: 11px; text-align: center; padding: 2px 0 10px; letter-spacing: 2px; }
@keyframes v2float { 0%,100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-8px) rotate(1deg); } }
.v2-op-msg { position: relative; z-index: 3; margin-top: 22px; min-height: 48px; font-size: 34px; font-weight: 900; letter-spacing: 2px; color: #fff; opacity: 0; transform: scale(.4); text-shadow: 0 0 18px currentColor, 0 3px 0 rgba(0,0,0,.4); }
.v2-op-msg.show { animation: v2msg .45s cubic-bezier(.2,1.6,.4,1) forwards; }
@keyframes v2msg { to { opacity: 1; transform: scale(1); } }
.v2-op-msg.lv1 { color: #6cb6ff; } .v2-op-msg.lv2 { color: #ffd257; font-size: 40px; } .v2-op-msg.fake { color: #fff; font-size: 30px; }
.v2-op-msg.lv3 { font-size: 44px; background: linear-gradient(90deg, #ff4d6d, #ffd257, #4dff88, #4fa3ff, #c56bff); -webkit-background-clip: text; background-clip: text; color: transparent; text-shadow: none; filter: drop-shadow(0 0 12px rgba(255,255,255,.8)); }
/* 段階ごとのパックの光 */
.v2-op-l1 .v2-op-pack { box-shadow: 0 0 0 4px #4fa3ff, 0 0 50px #4fa3ff; animation: v2float 1.6s ease-in-out infinite, v2buzz .12s linear 4; }
.v2-op-l1 .v2-op-rays { opacity: .5; background: repeating-conic-gradient(rgba(79,163,255,.28) 0 8deg, transparent 8deg 20deg); }
.v2-op-l2 .v2-op-pack { box-shadow: 0 0 0 5px #ffd257, 0 0 70px #ffb300, 0 0 120px rgba(255,180,0,.6); animation: v2float 1s ease-in-out infinite, v2buzz .08s linear 8; }
.v2-op-l2 .v2-op-rays { opacity: .8; background: repeating-conic-gradient(rgba(255,210,87,.4) 0 8deg, transparent 8deg 20deg); animation-duration: 5s; }
.v2-op-l3 .v2-op-pack { box-shadow: 0 0 0 6px #fff, 0 0 60px #ff4d6d, 0 0 100px #4fa3ff, 0 0 140px #ffd257; animation: v2float .8s ease-in-out infinite, v2hue 1.2s linear infinite; }
.v2-op-l3 .v2-op-rays { opacity: 1; background: repeating-conic-gradient(#ff4d6d55 0 6deg, #ffd25755 6deg 12deg, #4dff8855 12deg 18deg, #4fa3ff55 18deg 24deg, #c56bff55 24deg 30deg); animation-duration: 3s; }
@keyframes v2buzz { 0%,100% { margin-left: 0; } 25% { margin-left: -6px; } 75% { margin-left: 6px; } }
@keyframes v2hue { to { filter: hue-rotate(360deg); } }
.v2-op-flash { position: absolute; inset: 0; z-index: 4; opacity: 0; pointer-events: none; }
.v2-op-flash.go { animation: v2flash .5s ease-out; }
@keyframes v2flash { 0% { opacity: .95; } 100% { opacity: 0; } }
.v2-op-cutin { position: absolute; z-index: 5; top: 40%; left: 0; right: 0; height: 90px; display: flex; align-items: center; justify-content: center; transform: translateX(-110%) skewY(-6deg); background: linear-gradient(90deg, #8b0000, #e74c3c 40%, #ffd257 50%, #e74c3c 60%, #8b0000); box-shadow: 0 0 30px rgba(231,76,60,.8); pointer-events: none; }
.v2-op-cutin span { font-size: 54px; font-weight: 900; color: #fff; letter-spacing: 8px; text-shadow: 0 0 12px #ffd257, 0 4px 0 #5c0000; }
.v2-op-cutin.go { animation: v2cutin .9s cubic-bezier(.2,.8,.2,1) forwards; }
@keyframes v2cutin { 0% { transform: translateX(-110%) skewY(-6deg); } 30%,70% { transform: translateX(0) skewY(-6deg); } 100% { transform: translateX(110%) skewY(-6deg); } }
.v2-op-pack.burst { animation: v2burst .42s ease-in forwards; }
@keyframes v2burst { 0% { transform: scale(1); } 40% { transform: scale(1.12) rotate(-3deg); } 100% { transform: scale(1.8); opacity: 0; filter: brightness(3); } }

/* ===== 結果：裏向きのカードを1枚ずつめくる ===== */
.v2-flipping .v2-later { display: none !important; }
.est-sum-item { perspective: 700px; }
.est-sum-item.v2-fd > .est-card { visibility: hidden; }
.est-sum-item.v2-fd > .v2-sum-n { visibility: hidden; }
.est-sum-item.v2-fd::after { content: ''; position: absolute; inset: 0; border-radius: 10px; background: repeating-linear-gradient(45deg, rgba(255,255,255,.06) 0 6px, transparent 6px 12px), radial-gradient(circle at 50% 40%, #3a4766, #141a2a); border: 2px solid rgba(255,255,255,.25); box-shadow: inset 0 0 0 4px rgba(0,0,0,.25); }
.est-sum-item.v2-fd::before { content: '？'; position: absolute; z-index: 2; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 34px; font-weight: 900; color: rgba(255,255,255,.35); }
.est-sum-item.v2-charge::after { animation: v2buzz .1s linear infinite; }
.est-sum-item.v2-charge-1::after { border-color: #4fa3ff; box-shadow: 0 0 18px #4fa3ff, inset 0 0 20px rgba(79,163,255,.6); }
.est-sum-item.v2-charge-2::after { border-color: #ffd257; box-shadow: 0 0 26px #ffb300, inset 0 0 26px rgba(255,210,87,.7); }
.est-sum-item.v2-charge-3::after { border-color: #fff; box-shadow: 0 0 20px #ff4d6d, 0 0 34px #4fa3ff, inset 0 0 30px rgba(255,255,255,.7); animation: v2buzz .08s linear infinite, v2hue 1s linear infinite; }
.est-sum-item.v2-flip > .est-card { animation: v2flipin .32s ease-out; }
.est-sum-item.v2-flip-big > .est-card { animation: v2flipbig .55s cubic-bezier(.2,1.4,.4,1); }
@keyframes v2flipin { from { transform: rotateY(90deg); } to { transform: none; } }
@keyframes v2flipbig { 0% { transform: rotateY(90deg) scale(1.3); filter: brightness(2.5); } 100% { transform: none; filter: none; } }
.v2-flip-all { background: #ffd257; color: #3a2a00; border: none; border-radius: 14px; padding: 5px 12px; font-size: 12px; font-weight: 900; cursor: pointer; }
.v2-flipping .v2-sum-mode button[data-sm] { opacity: .5; }

/* ===== オンオリ風演出（プチュン → 雲の世界 → パック → 白飛び → カード）===== */
.v2-on { position: absolute; inset: 0; background: #000; overflow: hidden; --c1: #ffb300; --c2: #fff1a8; --c3: #ff6a00; }
.v2-on[data-c="white"] { --c1: #e9edf5; --c2: #ffffff; --c3: #b8c0cf; }
.v2-on[data-c="blue"] { --c1: #1f6bff; --c2: #9cc8ff; --c3: #0a2a8c; }
.v2-on[data-c="green"] { --c1: #14c45a; --c2: #b6f7cc; --c3: #06612a; }
.v2-on[data-c="red"] { --c1: #ff2a3d; --c2: #ffb3a1; --c3: #7a0010; }
.v2-on[data-c="gold"] { --c1: #ffb300; --c2: #fff1a8; --c3: #ff5a00; }
.v2-on[data-c="rainbow"] { --c1: #ffb300; --c2: #fff6c2; --c3: #ff5a00; }
.v2-on-world, .v2-on-world > div { position: absolute; inset: 0; }
.v2-on-world { opacity: 0; transition: transform .5s cubic-bezier(.6,0,1,1), filter .5s; }
.v2-on.world .v2-on-world { opacity: 1; }
.v2-on[data-c="rainbow"].world .v2-on-pack { animation-name: v2packfall, v2hue; animation-duration: 1.35s, 1.2s; animation-timing-function: cubic-bezier(.3,0,.7,1), linear; animation-iteration-count: infinite, infinite; }
.v2-on[data-c="rainbow"].world .v2-pk { border-color: #fff; box-shadow: 0 0 0 3px #ff3bd4, 0 0 24px #1fb8ff; }
.v2-on-sky { background: radial-gradient(ellipse at 50% 0%, var(--c2) 0%, var(--c1) 35%, var(--c3) 100%); transition: background .3s; }
.v2-on-clouds { background-repeat: repeat-y; background-size: 100% 520px; opacity: .9; }
.v2-on-clouds.c1 { background-image: radial-gradient(60px 40px at 15% 30%, var(--c2), transparent 70%), radial-gradient(110px 60px at 40% 55%, var(--c2), transparent 70%), radial-gradient(90px 50px at 80% 20%, var(--c2), transparent 70%), radial-gradient(140px 70px at 70% 80%, var(--c1), transparent 70%), radial-gradient(120px 60px at 10% 85%, var(--c3), transparent 70%); animation: v2cloud 1.6s linear infinite; }
.v2-on-clouds.c2 { background-size: 100% 380px; background-image: radial-gradient(160px 80px at 25% 40%, rgba(255,255,255,.55), transparent 70%), radial-gradient(130px 60px at 85% 65%, rgba(255,255,255,.45), transparent 70%), radial-gradient(100px 50px at 55% 10%, var(--c3), transparent 70%); animation: v2cloud 1s linear infinite; }
@keyframes v2cloud { from { background-position: 0 0; } to { background-position: 0 -520px; } }
.v2-on-beam { background: repeating-conic-gradient(from 180deg at 50% -10%, rgba(255,255,255,.35) 0 3deg, transparent 3deg 9deg); -webkit-mask-image: linear-gradient(#000, transparent 75%); mask-image: linear-gradient(#000, transparent 75%); }
.v2-on-pack { position: absolute; top: -60%; width: 54%; left: 23%; animation: v2packfall 1.35s cubic-bezier(.3,0,.7,1) infinite both; filter: drop-shadow(0 0 18px var(--c2)) drop-shadow(0 10px 20px rgba(0,0,0,.5)); }
.v2-on-pack.l { left: 6%; width: 44%; } .v2-on-pack.r { left: 50%; width: 46%; }
.v2-on-pack:nth-child(3n) { left: 20%; width: 62%; z-index: 2; }
.v2-pk { border-radius: 10px; overflow: hidden; border: 3px solid rgba(255,255,255,.85); background: #111; }
.v2-pk img, .v2-pk .v2-autocover { width: 100%; display: block; margin: 0; border-radius: 0; }
@keyframes v2packfall { 0% { top: -60%; transform: scale(.7) rotate(-4deg); } 100% { top: 120%; transform: scale(1.15) rotate(3deg); } }
.v2-on.zoom .v2-on-world { transform: scale(2.6); filter: blur(7px) brightness(1.6); }
/* プチュン：白い閃光が縦に潰れて横一線になり、点になって消える */
.v2-on-puchun { position: absolute; z-index: 6; left: 50%; top: 45%; width: 160vmax; height: 160vmax; margin: -80vmax 0 0 -80vmax; border-radius: 50%; background: radial-gradient(circle, #fff 0%, #fff 12%, #cfe0ff 22%, #5b7cff 36%, rgba(40,60,255,.25) 50%, transparent 66%); opacity: 0; transform: scale(0); pointer-events: none; }
.v2-on-puchun.go { animation: v2puchun .55s cubic-bezier(.2,.8,.3,1) forwards; }
@keyframes v2puchun { 0% { opacity: 1; transform: scale(.05, .05); } 12% { opacity: 1; transform: scale(1, 1); } 40% { transform: scale(.9, .05); } 70% { opacity: 1; transform: scale(.5, .006); } 100% { opacity: 0; transform: scale(0, .002); } }
/* 光の玉が開いて雲の世界へ */
.v2-on-orb { position: absolute; z-index: 5; left: 50%; top: 45%; width: 46vmin; height: 46vmin; margin: -23vmin 0 0 -23vmin; border-radius: 50%; background: radial-gradient(circle at 50% 40%, var(--c2), var(--c1) 55%, var(--c3)); box-shadow: 0 0 0 4px var(--c2), 0 0 60px 20px var(--c1); opacity: 0; transform: scale(0); pointer-events: none; }
.v2-on-orb.go { animation: v2orb .9s cubic-bezier(.3,0,.2,1) forwards; }
@keyframes v2orb { 0% { opacity: 0; transform: scale(0); } 25% { opacity: 1; transform: scale(1); } 55% { opacity: 1; transform: scale(1.05); } 100% { opacity: 0; transform: scale(7); } }
/* 白 */
.v2-on-white { position: absolute; inset: 0; z-index: 7; background: #fff; opacity: 0; pointer-events: none; }
.v2-on-white.blink { animation: v2blink .4s ease-out; }
.v2-on-white.out { animation: v2whiteout 1s ease-in-out; }
@keyframes v2blink { 0% { opacity: .9; } 100% { opacity: 0; } }
@keyframes v2whiteout { 0% { opacity: 0; } 35% { opacity: 1; } 55% { opacity: 1; } 100% { opacity: 0; } }
/* 最後：演出色の光の中からカード */
.v2-on.final { background: radial-gradient(circle at 50% 45%, var(--c2) 0%, var(--c1) 28%, var(--c3) 70%, #000 100%); }
.v2-on.final[data-c="rainbow"] { background: conic-gradient(from 0deg at 50% 45%, #ff3b5c, #ffb300, #fff200, #2bff88, #1fb8ff, #7a5cff, #ff3bd4, #ff3b5c); animation: v2hue 2s linear infinite; }
.v2-on.calm { background: radial-gradient(circle at 50% 40%, #ffffff, #e6e9f0 60%, #c9ced8); }
.v2-on-stage { position: absolute; inset: 0; z-index: 8; display: none; flex-direction: column; align-items: center; justify-content: center; }
.v2-on-stage.show { display: flex; }
.v2-on-glow { position: absolute; inset: 0; background: repeating-conic-gradient(from 0deg at 50% 45%, rgba(255,255,255,.28) 0 6deg, transparent 6deg 16deg); animation: v2spin 10s linear infinite; }
.v2-on.calm .v2-on-glow { display: none; }
.v2-on-spark { position: absolute; inset: 0; background-image: radial-gradient(2px 2px at 20% 30%, #fff, transparent), radial-gradient(3px 3px at 70% 20%, #fff, transparent), radial-gradient(2px 2px at 85% 60%, #fff, transparent), radial-gradient(3px 3px at 30% 75%, #fff, transparent), radial-gradient(2px 2px at 55% 85%, #fff, transparent), radial-gradient(2px 2px at 10% 55%, #fff, transparent); animation: v2twinkle 1.2s ease-in-out infinite alternate; }
.v2-on.calm .v2-on-spark { display: none; }
@keyframes v2twinkle { from { opacity: .3; } to { opacity: 1; } }
.v2-on-card { position: relative; z-index: 2; width: min(230px, 60vw); }
.v2-on-card .est-card { width: 100%; }
.v2-on-card.pop { animation: v2cardpop .7s cubic-bezier(.2,1.5,.4,1) both; filter: drop-shadow(0 0 24px var(--c2)) drop-shadow(0 0 50px var(--c1)); }
@keyframes v2cardpop { 0% { transform: scale(.1) rotateY(180deg); filter: brightness(4); opacity: 0; } 60% { opacity: 1; } 100% { transform: none; } }
.v2-on-card.nume { animation: v2nume 1.6s cubic-bezier(.25,.1,.2,1) both; filter: drop-shadow(0 10px 30px rgba(0,0,0,.25)); }
@keyframes v2nume { 0% { transform: translateY(90px) scale(.92); opacity: 0; filter: blur(10px); } 60% { opacity: 1; filter: blur(1px); } 100% { transform: none; opacity: 1; filter: none; } }
.v2-on-label { position: relative; z-index: 2; margin-top: 16px; font-size: 30px; font-weight: 900; color: #fff; text-shadow: 0 0 14px var(--c1), 0 3px 0 rgba(0,0,0,.45); animation: v2msg .5s .35s cubic-bezier(.2,1.6,.4,1) both; opacity: 0; transform: scale(.4); }
.v2-on.calm .v2-on-label { color: #6b717c; text-shadow: none; font-size: 22px; }
.v2-on-next { position: relative; z-index: 2; margin-top: 14px; font-size: 13px; font-weight: 700; color: rgba(255,255,255,.85); animation: v2twinkle .9s ease-in-out infinite alternate; }
.v2-on.calm .v2-on-next { color: #8a909b; }
.v2-sound { position: absolute; z-index: 20; top: 14px; left: 14px; width: 38px; height: 38px; border-radius: 50%; border: 1px solid rgba(255,255,255,.3); background: rgba(0,0,0,.35); font-size: 16px; cursor: pointer; }

/* ---- 雲の世界：最後にパックが大写し ---- */
.v2-on-hero { position: absolute; left: 50%; top: 46%; width: min(300px, 76vw); transform: translate(-50%, -50%); animation: v2hero 1.5s cubic-bezier(.2,1.2,.4,1) both; filter: drop-shadow(0 0 30px var(--c2)) drop-shadow(0 0 60px var(--c1)); }
.v2-on-hero .v2-pk { border-width: 4px; }
@keyframes v2hero { 0% { transform: translate(-50%, -160%) scale(.4) rotate(-10deg); } 45% { transform: translate(-50%, -50%) scale(1.05) rotate(2deg); } 70% { transform: translate(-50%, -50%) scale(1) rotate(-1deg); } 100% { transform: translate(-50%, -50%) scale(1.08); } }
.v2-on[data-c="rainbow"] .v2-on-hero { animation: v2hero 1.5s cubic-bezier(.2,1.2,.4,1) both, v2hue 1s linear infinite; }

/* ---- 宇宙ワープ ---- */
.v2-on-world > .v2-sp-bg { background: radial-gradient(circle at 50% 45%, var(--c3) 0%, #050816 55%, #000 100%); }
.v2-on-world > .v2-sp-stars { background-image: radial-gradient(1.5px 1.5px at 10% 20%, #fff, transparent), radial-gradient(1px 1px at 30% 70%, #fff, transparent), radial-gradient(2px 2px at 70% 30%, #fff, transparent), radial-gradient(1px 1px at 85% 80%, #fff, transparent), radial-gradient(1.5px 1.5px at 50% 50%, #fff, transparent), radial-gradient(1px 1px at 60% 90%, #fff, transparent), radial-gradient(2px 2px at 20% 85%, var(--c2), transparent), radial-gradient(1.5px 1.5px at 90% 10%, var(--c2), transparent); background-size: 220px 220px; transform-origin: 50% 45%; }
.v2-on-world > .v2-sp-stars.s1 { animation: v2starzoom 3s linear infinite; }
.v2-on-world > .v2-sp-stars.s2 { animation: v2starzoom 3s linear infinite 1.5s; }
@keyframes v2starzoom { 0% { transform: scale(.5); opacity: 0; } 30% { opacity: 1; } 100% { transform: scale(3); opacity: 0; } }
.v2-on.warp .v2-sp-stars.s1, .v2-on.warp .v2-sp-stars.s2 { animation-duration: .7s; filter: blur(.6px); }
.v2-on-world > .v2-sp-tunnel { opacity: 0; transition: opacity .6s; background: repeating-radial-gradient(circle at 50% 45%, transparent 0 22px, var(--c1) 24px, transparent 30px); -webkit-mask-image: radial-gradient(circle at 50% 45%, transparent 8%, #000 60%); mask-image: radial-gradient(circle at 50% 45%, transparent 8%, #000 60%); animation: v2tunnel .5s linear infinite; }
.v2-on.warp .v2-sp-tunnel { opacity: .55; }
@keyframes v2tunnel { from { background-size: 100% 100%; } to { background-size: 115% 115%; } }
.v2-on[data-c="rainbow"] .v2-sp-tunnel { animation: v2tunnel .5s linear infinite, v2hue 1.2s linear infinite; }
.v2-sp-pack { position: absolute; left: 50%; top: 45%; width: 40vw; max-width: 200px; transform: translate(-50%, -50%) scale(0); animation: v2sppack 1.6s cubic-bezier(.6,0,1,1) infinite both; filter: drop-shadow(0 0 14px var(--c2)); }
@keyframes v2sppack { 0% { transform: translate(-50%, -50%) scale(.02); opacity: 0; } 20% { opacity: 1; } 100% { transform: translate(calc(-50% + var(--x)), calc(-50% + var(--y))) scale(2.4); opacity: 0; } }
.v2-on-world > .v2-sp-planet { inset: auto; left: 50%; top: 45%; width: 60vmin; height: 60vmin; margin: -30vmin 0 0 -30vmin; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff, var(--c2) 18%, var(--c1) 45%, var(--c3) 75%, #000 100%); box-shadow: 0 0 60px 20px var(--c1), inset -20px -30px 60px rgba(0,0,0,.6); transform: scale(0); opacity: 0; }
.v2-sp-planet.go { animation: v2planet 1.8s cubic-bezier(.5,0,.8,1) forwards; }
@keyframes v2planet { 0% { transform: scale(.02); opacity: 0; } 20% { opacity: 1; } 70% { transform: scale(.9); } 100% { transform: scale(2.4); opacity: 1; } }
.v2-on[data-c="rainbow"] .v2-sp-planet.go { animation-name: v2planet, v2hue; animation-duration: 1.8s, 1s; animation-iteration-count: 1, infinite; }

/* ---- 運命の扉 ---- */
.v2-on-world > .v2-dr-hall { background: radial-gradient(ellipse at 50% 60%, #2a2233 0%, #0b0910 70%), #000; }
.v2-on-world > .v2-dr-light { inset: auto; left: 50%; top: 10%; width: 8px; height: 72%; margin-left: -4px; background: linear-gradient(var(--c2), #fff, var(--c2)); box-shadow: 0 0 30px 10px var(--c1), 0 0 90px 30px var(--c1); transition: width .3s, margin .3s; }
.v2-on-world > .v2-dr-doors { inset: auto; left: 50%; top: 10%; width: min(330px, 84vw); height: 72%; transform: translateX(-50%); display: flex; perspective: 900px; }
.v2-dr-door { flex: 1; position: relative; background: linear-gradient(90deg, #3b2a1a, #6b4a2a 40%, #3b2a1a); border: 4px solid #b8892d; box-shadow: inset 0 0 0 8px #2a1c10, inset 0 0 40px rgba(0,0,0,.8); transition: transform 1.2s cubic-bezier(.5,0,.2,1); }
.v2-dr-door.l { transform-origin: left center; border-right-width: 2px; } .v2-dr-door.r { transform-origin: right center; border-left-width: 2px; }
.v2-dr-door i { position: absolute; top: 50%; width: 14px; height: 14px; border-radius: 50%; background: radial-gradient(#ffe9a8, #b8892d); } .v2-dr-door.l i { right: 12px; } .v2-dr-door.r i { left: 12px; }
.v2-dr-door::before { content: ''; position: absolute; inset: 14% 16%; border: 3px solid rgba(184,137,45,.6); border-radius: 50% 50% 6px 6px / 22% 22% 6px 6px; }
.v2-dr-doors[data-k="1"] .v2-dr-door.l { transform: rotateY(-6deg); } .v2-dr-doors[data-k="1"] .v2-dr-door.r { transform: rotateY(6deg); }
.v2-dr-doors[data-k="2"] .v2-dr-door.l { transform: rotateY(-12deg); } .v2-dr-doors[data-k="2"] .v2-dr-door.r { transform: rotateY(12deg); }
.v2-dr-doors[data-k="3"] .v2-dr-door.l { transform: rotateY(-20deg); } .v2-dr-doors[data-k="3"] .v2-dr-door.r { transform: rotateY(20deg); }
.v2-dr-doors.knock { animation: v2knock .35s; }
@keyframes v2knock { 0%,100% { margin-top: 0; } 30% { margin-top: -6px; } 60% { margin-top: 4px; } }
.v2-dr-doors.open .v2-dr-door.l { transform: rotateY(-100deg); } .v2-dr-doors.open .v2-dr-door.r { transform: rotateY(100deg); }
.v2-on-world > .v2-dr-fog { top: auto; height: 30%; background: linear-gradient(transparent, rgba(255,255,255,.08)); }
.v2-on[data-c="rainbow"] .v2-dr-light { animation: v2hue 1s linear infinite; }

/* ---- ガチャカプセル ---- */
.v2-on-world > .v2-cp-bg { background: radial-gradient(circle at 50% 35%, var(--c3) 0%, #12101c 60%, #000 100%); }
.v2-on-world > .v2-cp-machine { inset: auto; left: 50%; top: 8%; width: min(260px, 66vw); transform: translateX(-50%); transition: transform .8s cubic-bezier(.6,0,1,1), opacity .8s; }
.v2-cp-machine.away { transform: translateX(-50%) translateY(-120%); opacity: 0; }
.v2-cp-machine.rattle { animation: v2buzz .1s linear 6; }
.v2-cp-dome { position: relative; height: min(220px, 56vw); border-radius: 50% 50% 12px 12px; background: radial-gradient(circle at 30% 25%, rgba(255,255,255,.55), rgba(255,255,255,.08) 40%, rgba(255,255,255,.04)); border: 4px solid rgba(255,255,255,.65); overflow: hidden; }
.v2-cp-dome b { position: absolute; width: 22%; aspect-ratio: 1; border-radius: 50%; background: linear-gradient(hsl(calc(var(--i) * 47), 85%, 60%) 50%, #f4f4f4 50%); box-shadow: inset -4px -4px 8px rgba(0,0,0,.25); }
.v2-cp-body { position: relative; height: min(150px, 38vw); background: linear-gradient(#e53950, #a8142b); border-radius: 0 0 16px 16px; border: 4px solid #ffd257; border-top: none; }
.v2-cp-handle { position: absolute; left: 50%; top: 22%; width: 56px; height: 56px; margin-left: -28px; border-radius: 50%; background: radial-gradient(#fff 30%, #ddd); box-shadow: 0 3px 0 #999; }
.v2-cp-handle::before { content: ''; position: absolute; left: 50%; top: 6px; width: 10px; height: 44px; margin-left: -5px; border-radius: 5px; background: #888; }
.v2-cp-handle.turn { animation: v2turn .7s cubic-bezier(.4,0,.2,1); }
@keyframes v2turn { from { transform: rotate(0); } to { transform: rotate(360deg); } }
.v2-cp-out { position: absolute; left: 50%; bottom: 12%; width: 70px; height: 34px; margin-left: -35px; background: #2a0a12; border-radius: 8px; }
.v2-on-world > .v2-cp-cap { inset: auto; left: 50%; top: 52%; width: 70px; height: 70px; margin-left: -35px; opacity: 0; transform: scale(.4); transition: all .9s cubic-bezier(.3,1.3,.5,1); }
.v2-cp-cap.drop { opacity: 1; top: 62%; transform: scale(.6) rotate(200deg); }
.v2-cp-cap.center { top: 34%; width: min(200px, 52vw); height: min(200px, 52vw); margin-left: calc(min(200px, 52vw) / -2); transform: none; filter: drop-shadow(0 0 26px var(--c1)); }
.v2-cp-cap .t, .v2-cp-cap .b { position: absolute; left: 0; right: 0; height: 50%; transition: transform .6s cubic-bezier(.3,0,.2,1), opacity .6s; }
.v2-cp-cap .t { top: 0; border-radius: 999px 999px 0 0; background: radial-gradient(circle at 35% 30%, #fff, var(--c2) 25%, var(--c1) 60%, var(--c3)); }
.v2-cp-cap .b { bottom: 0; border-radius: 0 0 999px 999px; background: linear-gradient(#fafafa, #cfd3da); border-top: 3px solid rgba(0,0,0,.15); }
.v2-cp-cap.wob { animation: v2wob .6s; }
@keyframes v2wob { 0%,100% { rotate: 0deg; } 25% { rotate: -14deg; } 75% { rotate: 14deg; } }
.v2-cp-cap.open .t { transform: translateY(-140%) rotate(-30deg); opacity: 0; }
.v2-cp-cap.open .b { transform: translateY(80%); opacity: 0; }
.v2-cp-cap.open::after { content: ''; position: absolute; left: 50%; top: 50%; width: 10px; height: 10px; border-radius: 50%; background: #fff; box-shadow: 0 0 80px 60px var(--c2), 0 0 160px 120px var(--c1); }
.v2-on[data-c="rainbow"] .v2-cp-cap .t { animation: v2hue 1s linear infinite; }

.v2-cr-prev { flex-wrap: wrap; gap: 6px; }
.v2-prev-btn { border: none; border-radius: 14px; padding: 6px 12px; font-size: 12px; font-weight: 900; cursor: pointer; color: #fff; }
.v2-prev-white { background: #e9edf5; color: #555; } .v2-prev-blue { background: #1f6bff; } .v2-prev-green { background: #14c45a; } .v2-prev-red { background: #ff2a3d; } .v2-prev-gold { background: #e6a100; }
.v2-prev-rainbow { background: linear-gradient(90deg, #ff3b5c, #ffb300, #2bff88, #1fb8ff, #c56bff); }
/* 演出の上にスキップ・音ボタンを出す */
.v2-on { z-index: 1; }
#est-reveal > .est-rv-skip, #est-reveal > .v2-sound { z-index: 20; }

/* ===== 軽量化と縦長の画面（PCでも中央に縦長で表示）===== */
#est-reveal { background: #000; }
@media (min-width: 560px) { .v2-on { left: 50%; right: auto; width: 480px; margin-left: -240px; box-shadow: 0 0 0 1px rgba(255,255,255,.08); } }
.v2-on-pack { filter: none !important; will-change: transform; top: 0 !important; animation-name: v2packfall2 !important; }
.v2-on-pack .v2-pk { box-shadow: 0 0 0 2px var(--c2), 0 0 22px var(--c1); }
@keyframes v2packfall2 { 0% { transform: translateY(-120%) scale(.7) rotate(-4deg); } 100% { transform: translateY(calc(100vh + 20%)) scale(1.15) rotate(3deg); } }
.v2-on[data-c="rainbow"].world .v2-on-pack { animation-name: v2packfall2 !important; animation-duration: 1.35s !important; animation-timing-function: cubic-bezier(.3,0,.7,1) !important; }
.v2-on[data-c="rainbow"].world .v2-on-pack .v2-pk { box-shadow: 0 0 0 3px #ff3bd4, 0 0 0 6px #ffd257, 0 0 26px #1fb8ff; }
.v2-on-clouds.c1 { animation: none; top: -520px; will-change: transform; animation: v2cloud2 1.6s linear infinite; }
.v2-on-clouds.c2 { animation: none; top: -380px; will-change: transform; animation: v2cloud3 1s linear infinite; }
@keyframes v2cloud2 { from { transform: translateY(0); } to { transform: translateY(520px); } }
@keyframes v2cloud3 { from { transform: translateY(0); } to { transform: translateY(380px); } }
.v2-on.zoom .v2-on-world { filter: none; transform: scale(2.4); }
.v2-on-hero { filter: none; } .v2-on-hero .v2-pk { box-shadow: 0 0 0 3px var(--c2), 0 0 40px var(--c1); }
.v2-on-glow { inset: auto; left: 50%; top: 45%; width: 220vmax; height: 220vmax; margin: -110vmax 0 0 -110vmax; will-change: transform; }
.v2-on.final[data-c="rainbow"] { animation: none; background: #000; }
.v2-on.final[data-c="rainbow"]::before { content: ''; position: absolute; left: 50%; top: 45%; width: 220vmax; height: 220vmax; margin: -110vmax 0 0 -110vmax; background: conic-gradient(#ff3b5c, #ffb300, #fff200, #2bff88, #1fb8ff, #7a5cff, #ff3bd4, #ff3b5c); animation: v2spin 4s linear infinite; will-change: transform; }
.v2-on-card.pop { filter: none; } .v2-on-card.pop .est-card { box-shadow: 0 0 0 3px var(--c2), 0 0 40px var(--c1); }
.v2-on-card.nume { filter: none; animation-name: v2nume2; }
@keyframes v2nume2 { 0% { transform: translateY(90px) scale(.92); opacity: 0; } 70% { opacity: 1; } 100% { transform: none; opacity: 1; } }
.v2-on-world > .v2-sp-tunnel { animation: v2tunnel2 .5s linear infinite; will-change: transform; }
@keyframes v2tunnel2 { from { transform: scale(1); } to { transform: scale(1.15); } }
.v2-on[data-c="rainbow"] .v2-sp-tunnel { animation: v2tunnel2 .5s linear infinite; }
.v2-sp-pack { filter: none; will-change: transform; } .v2-sp-pack .v2-pk { box-shadow: 0 0 18px var(--c1); }
.v2-on.warp .v2-sp-stars.s1, .v2-on.warp .v2-sp-stars.s2 { filter: none; }
.v2-cp-cap.center { filter: none; box-shadow: none; }

/* ===== 引いた直後の「通信中」===== */
.v2-loading { display: flex; flex-direction: column; align-items: center; gap: 18px; }
.v2-ld-pack { width: min(220px, 60vw); border-radius: 12px; overflow: hidden; border: 3px solid rgba(255,255,255,.8); animation: v2float 1.2s ease-in-out infinite; box-shadow: 0 0 30px rgba(255,210,87,.5); }
.v2-ld-pack img, .v2-ld-pack .v2-autocover { width: 100%; display: block; margin: 0; border-radius: 0; }
.v2-ld-bar { width: min(220px, 60vw); height: 6px; border-radius: 3px; background: rgba(255,255,255,.15); overflow: hidden; }
.v2-ld-bar i { display: block; width: 40%; height: 100%; border-radius: 3px; background: linear-gradient(90deg, #ffd257, #fff); animation: v2ld 1s ease-in-out infinite; }
@keyframes v2ld { 0% { transform: translateX(-100%); } 100% { transform: translateX(250%); } }
.v2-ld-txt { color: #c9d2e6; font-size: 13px; font-weight: 700; letter-spacing: 1px; }

/* 現在の還元率 */
.v2-live-rtp { font-size: 12px; color: var(--text-sub); text-align: right; margin-top: 2px; }
.v2-live-rtp b { color: #c0392b; font-size: 14px; } .v2-live-rtp small { margin-left: 4px; font-size: 10px; }
.v2-live-card { margin-top: -2px; }
@media (max-width: 599px) { .v2-cr-open > span:last-child { grid-template-columns: repeat(3, 1fr) !important; } }

.v2-cr-stats-line { font-size: 12px; color: var(--text-sub); }
.v2-cr-stats-line b { color: var(--text-main); }
.v2-cr-stats-line b.v2-up { color: #c0392b; } .v2-cr-stats-line b.v2-down { color: #2563eb; }

/* ===== 不具合・要望 ===== */
.v2-fb-kinds { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.v2-fb .v2-name-in { margin: 8px 0; }
.v2-fb-item { border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; margin-bottom: 8px; background: #fffdf6; }
.v2-fb-item.done { background: #f5f6f8; opacity: .75; }
.v2-fb-head { display: flex; gap: 10px; align-items: baseline; font-size: 12px; color: var(--text-sub); flex-wrap: wrap; }
.v2-fb-head b { color: var(--text-main); font-size: 13px; }
.v2-fb-text { font-size: 13px; line-height: 1.7; margin: 6px 0; white-space: normal; word-break: break-word; }
.v2-fb-meta { font-size: 10.5px; color: #8a909b; word-break: break-all; }
.v2-fb-btns { display: flex; gap: 6px; margin-top: 8px; } .v2-fb-btns .btn { width: auto; }

/* ===== 完売オリパの当選者 ===== */
.v2-sold { margin-top: 18px; }
.v2-sold-box { background: var(--panel, #fff); border: 1px solid var(--border); border-radius: 14px; padding: 10px 12px; margin-bottom: 10px; }
.v2-sold-box summary { cursor: pointer; display: flex; flex-direction: column; gap: 2px; list-style: none; }
.v2-sold-box summary::-webkit-details-marker { display: none; }
.v2-sold-box summary b { font-size: 14px; } .v2-sold-box summary span { font-size: 11px; color: var(--text-sub); }
.v2-sold-list { margin-top: 8px; border-top: 1px dashed var(--border); padding-top: 6px; max-height: 260px; overflow-y: auto; }
.v2-sold-row { display: grid; grid-template-columns: 96px minmax(0,1fr) auto; gap: 8px; align-items: center; font-size: 12.5px; padding: 3px 0; }
.v2-sold-rank { font-weight: 900; font-size: 12px; } .v2-sold-prize { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .v2-sold-name { font-weight: 700; }

/* ===== 隠し演出 ===== */
/* ①プチュンなし虹：外れに見える白カードにひびが入って割れる */
.v2-on-stage.fake { display: flex; }
.v2-fake { position: relative; }
.v2-fake::after { content: ''; position: absolute; inset: 0; z-index: 3; pointer-events: none; opacity: 0; border-radius: 12px;
  background: no-repeat center / 100% 100% url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 140' preserveAspectRatio='none'%3E%3Cg fill='none' stroke='%23fff' stroke-width='1.6' stroke-linejoin='bevel'%3E%3Cpath d='M52 0 L47 22 L58 38 L44 61 L55 80 L41 104 L50 140'/%3E%3Cpath d='M47 22 L22 30 L8 26'/%3E%3Cpath d='M58 38 L80 44 L100 40'/%3E%3Cpath d='M44 61 L20 70 L0 66'/%3E%3Cpath d='M55 80 L78 92 L92 110'/%3E%3Cpath d='M41 104 L18 118'/%3E%3C/g%3E%3C/svg%3E"); filter: drop-shadow(0 0 2px #000) drop-shadow(0 0 6px #fff); }
.v2-fake.crack1::after { opacity: .55; -webkit-mask-image: linear-gradient(#000 0 40%, transparent 55%); mask-image: linear-gradient(#000 0 40%, transparent 55%); }
.v2-fake.crack2::after { opacity: 1; -webkit-mask-image: none; mask-image: none; }
.v2-fake.crack2 { animation: v2fakeshiver .12s linear infinite; }
.v2-fake.crack2::before { content: ''; position: absolute; inset: -6px; z-index: 2; border-radius: 16px; pointer-events: none; background: conic-gradient(#ff3b5c, #ffb300, #fff200, #2bff88, #1fb8ff, #7a5cff, #ff3bd4, #ff3b5c); filter: blur(10px); opacity: .7; animation: v2hue 1s linear infinite; }
.v2-fake.crack3 { animation: v2fakeburst .5s cubic-bezier(.5,0,1,1) forwards; }
@keyframes v2fakeshiver { 0%,100% { transform: translate(0,0); } 25% { transform: translate(-2px,1px); } 50% { transform: translate(2px,-1px); } 75% { transform: translate(-1px,-2px); } }
@keyframes v2fakeburst { 0% { transform: scale(1); filter: brightness(1); } 60% { transform: scale(1.08); filter: brightness(2.2); } 100% { transform: scale(1.5); filter: brightness(5); opacity: 0; } }
/* ③復活：暗転して終わったように見せる */
.v2-on.blackout .v2-on-world { opacity: 0 !important; transition: opacity .9s ease-in; }
.v2-on.blackout { background: #000; }
/* ④違和感：流れが逆・一瞬ノイズ */
.v2-on.odd .v2-on-clouds, .v2-on.odd .v2-on-pack, .v2-on.odd .v2-sp-stars, .v2-on.odd .v2-sp-pack, .v2-on.odd .v2-sp-tunnel, .v2-on.odd .v2-on-beam, .v2-on.odd .v2-cp-dome b { animation-direction: reverse !important; }
.v2-on-glitch { position: absolute; inset: 0; z-index: 9; pointer-events: none; display: none; mix-blend-mode: difference;
  background: repeating-linear-gradient(0deg, transparent 0 7px, rgba(255,255,255,.55) 7px 9px, transparent 9px 23px, rgba(0,255,200,.35) 23px 26px); }
.v2-on.glitch .v2-on-glitch { display: block; animation: v2glitch .26s steps(3) both; }
.v2-on.glitch .v2-on-world { transform: translateX(7px) skewX(-4deg); }
@keyframes v2glitch { 0% { transform: translateY(0); } 33% { transform: translateY(-14px); } 66% { transform: translateY(9px); } 100% { transform: translateY(0); } }

/* ===== イベントのお知らせ（ポップアップ） ===== */
.v2-event { position: relative; overflow: hidden; text-align: center; max-width: 380px; padding-top: 30px !important; border: 2px solid #ffc94a; box-shadow: 0 0 0 4px rgba(255,201,74,.25), 0 18px 50px rgba(0,0,0,.45); animation: v2evpop .45s cubic-bezier(.2,1.4,.4,1) both; }
.v2-event::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 120px; background: radial-gradient(ellipse at 50% 0%, rgba(255,196,0,.35), transparent 70%); pointer-events: none; }
.v2-ev-ribbon { position: absolute; top: 12px; right: -34px; transform: rotate(35deg); background: linear-gradient(90deg, #ff3b5c, #ff8a00); color: #fff; font-size: 11px; font-weight: 900; letter-spacing: .12em; padding: 3px 40px; box-shadow: 0 2px 6px rgba(0,0,0,.25); }
.v2-ev-icon { position: relative; font-size: 54px; line-height: 1; animation: v2evbounce 1.6s ease-in-out infinite; }
.v2-ev-title { position: relative; margin: 10px 0 6px; font-size: 21px; font-weight: 900; line-height: 1.35; color: #3a2a00; }
.v2-ev-until { display: inline-block; margin-bottom: 10px; padding: 4px 12px; border-radius: 999px; background: #fff3d1; color: #9a5b00; font-size: 13px; font-weight: 800; }
.v2-ev-until span { font-weight: 700; color: #c0392b; }
.v2-ev-body { text-align: left; max-height: 42vh; overflow-y: auto; margin-bottom: 14px; font-size: 14px; }
.v2-ev-state { font-size: 13px; font-weight: 800; color: #888; margin-bottom: 8px; }
.v2-ev-state.on { color: #1a9a4a; }
@keyframes v2evpop { 0% { transform: scale(.6); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
@keyframes v2evbounce { 0%,100% { transform: translateY(0) rotate(-4deg); } 50% { transform: translateY(-6px) rotate(4deg); } }

/* ===== JPルーレット ===== */
.v2-on-world > .v2-wh-bg { background: radial-gradient(ellipse at 50% 40%, #ff5fd2 0%, #8a1fb8 38%, #2a0640 75%, #0b0014 100%); }
.v2-on-world > .v2-wh-bg::after { content: ''; position: absolute; inset: 0; background: repeating-conic-gradient(from 0deg at 50% 46%, rgba(255,255,255,.10) 0 4deg, transparent 4deg 12deg); }
.v2-on-world > .v2-wh-title { inset: auto; left: 0; right: 0; top: 7%; text-align: center; font-size: clamp(30px, 11vmin, 54px); font-weight: 900; line-height: 1; letter-spacing: .04em; color: #fff3b0; -webkit-text-stroke: 2px #7a3a00; text-shadow: 0 0 18px #ffb300, 0 4px 0 #7a3a00; opacity: 0; }
.v2-wh-title.go { animation: v2whtitle 1.5s cubic-bezier(.2,1.3,.4,1) forwards; }
@keyframes v2whtitle { 0% { opacity: 0; transform: scale(2.4); } 25% { opacity: 1; transform: scale(1); } 80% { opacity: 1; transform: scale(1); } 100% { opacity: 1; transform: scale(.62) translateY(-24%); } }
.v2-on-world > .v2-wh-stage { inset: auto; left: 50%; top: 54%; width: min(80vmin, 420px); height: min(80vmin, 420px); transform: translate(-50%, -50%); perspective: 900px; }
.v2-wh-tilt { position: absolute; inset: 0; transform: rotateX(46deg); transform-style: preserve-3d; }
.v2-wh-rim { position: absolute; inset: -6%; border-radius: 50%; background: radial-gradient(circle, transparent 0 63%, #6b3a00 64%, #ffd257 66%, #fff4b8 69%, #c88a00 72%, #6b3a00 73%); box-shadow: 0 0 40px rgba(255,180,0,.6); }
.v2-wh-rim::after { content: ''; position: absolute; inset: 0; border-radius: 50%; background: repeating-conic-gradient(#fff 0 3deg, transparent 3deg 15deg); -webkit-mask-image: radial-gradient(circle, transparent 0 66.5%, #000 67%, #000 70%, transparent 70.5%); mask-image: radial-gradient(circle, transparent 0 66.5%, #000 67%, #000 70%, transparent 70.5%); animation: v2whlights .5s steps(2) infinite; }
@keyframes v2whlights { 0% { transform: rotate(0deg); filter: brightness(1.4); } 100% { transform: rotate(7.5deg); filter: brightness(.7); } }
.v2-wh-disc { position: absolute; inset: 0; border-radius: 50%; box-shadow: inset 0 0 0 3px #3a2500, inset 0 0 30px rgba(0,0,0,.45); will-change: transform; }
.v2-wh-disc::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: repeating-conic-gradient(rgba(0,0,0,.35) 0 .6deg, transparent .6deg 15deg); }
.v2-wh-disc.teeter { animation: v2teeter .16s ease-in-out infinite; }
@keyframes v2teeter { 0%,100% { rotate: 0deg; } 50% { rotate: 1.8deg; } }
.v2-wh-seg { position: absolute; left: 50%; top: 0; width: 0; height: 50%; transform-origin: 0 100%; }
.v2-wh-seg span { position: absolute; top: 5%; left: 0; transform: translateX(-50%); writing-mode: vertical-rl; font-size: clamp(10px, 3.6vmin, 17px); font-weight: 900; letter-spacing: .02em; color: #fff; text-shadow: 0 1px 0 rgba(0,0,0,.5); white-space: nowrap; }
.v2-wh-seg span.y { color: #0d5c2a; text-shadow: none; }
.v2-wh-seg span.g { color: #8a4b00; font-size: clamp(12px, 4.4vmin, 21px); text-shadow: 0 0 6px #fff; }
.v2-wh-seg span.rb { font-size: clamp(11px, 3.9vmin, 18px); background: linear-gradient(#ff3b5c, #ffb300, #2bc46a, #1fb8ff, #7a5cff, #ff3bd4); -webkit-background-clip: text; background-clip: text; color: transparent; text-shadow: none; filter: drop-shadow(0 0 1px rgba(0,0,0,.35)); }
.v2-wh-hub { position: absolute; left: 50%; top: 50%; width: 16%; height: 16%; margin: -8% 0 0 -8%; border-radius: 50%; background: radial-gradient(circle at 40% 35%, #fff6c8, #ffc21a 45%, #9a5b00); box-shadow: 0 0 0 3px #5a3300, 0 0 20px rgba(255,200,0,.8); }
.v2-wh-ptr { position: absolute; left: 50%; top: 82%; width: 0; height: 0; margin-left: -16px; border-left: 16px solid transparent; border-right: 16px solid transparent; border-bottom: 34px solid #ff2d55; filter: drop-shadow(0 0 8px #fff) drop-shadow(0 3px 2px rgba(0,0,0,.5)); z-index: 3; }
.v2-on-world > .v2-wh-res { inset: auto; left: 0; right: 0; top: 40%; text-align: center; font-size: clamp(34px, 13vmin, 64px); font-weight: 900; line-height: 1.02; color: #fff; -webkit-text-stroke: 2px #2a0640; text-shadow: 0 0 20px var(--c1), 0 4px 0 #2a0640; opacity: 0; transform: scale(.3); z-index: 4; pointer-events: none; }
.v2-wh-res.show { animation: v2whres .6s cubic-bezier(.2,1.6,.4,1) forwards; }
.v2-wh-res.rainbow { color: #fff2a0; -webkit-text-stroke: 2px #7a3a00; text-shadow: 0 0 24px #ffb300, 0 0 60px #ff3bd4, 0 5px 0 #7a3a00; }
.v2-wh-res.gold { color: #fff2a0; -webkit-text-stroke: 2px #7a3a00; text-shadow: 0 0 24px #ffb300, 0 5px 0 #7a3a00; }
@keyframes v2whres { 0% { opacity: 0; transform: scale(.3) rotate(-8deg); } 100% { opacity: 1; transform: scale(1) rotate(0deg); } }
.v2-on[data-c="rainbow"] .v2-wh-res.rainbow { animation: v2whres .6s cubic-bezier(.2,1.6,.4,1) forwards, v2hue 1.2s linear infinite; }
.v2-cr-rowfx { flex-wrap: wrap; gap: 4px; }
.v2-cr-rowfx select { flex: 1 1 120px; min-width: 0; font-size: 12px; padding: 4px 6px; }

/* ===== メンテナンス ===== */
#v2-maint { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: 16px; background: radial-gradient(circle at 50% 30%, #2b2140, #0d0a16 75%); }
.v2-maint-box { width: 100%; max-width: 380px; text-align: center; color: #fff; }
.v2-maint-icon { font-size: 64px; animation: v2evbounce 2.4s ease-in-out infinite; }
.v2-maint-title { margin: 12px 0 8px; font-size: 22px; font-weight: 900; }
.v2-maint-until { display: inline-block; padding: 5px 14px; border-radius: 999px; background: rgba(255,201,74,.18); color: #ffd56b; font-weight: 800; font-size: 14px; }
.v2-maint-msg { margin-top: 14px; font-size: 14px; line-height: 1.7; color: #e6e1f2; }
.v2-maint-note { margin-top: 18px; font-size: 12px; color: #9c95b3; }
#v2-maint-bar { position: fixed; left: 0; right: 0; top: 0; z-index: 99999; padding: 5px 10px; background: #c0392b; color: #fff; font-size: 12px; font-weight: 800; text-align: center; box-shadow: 0 2px 8px rgba(0,0,0,.3); }
.v2-maint-card.on { border: 2px solid #c0392b; }

/* ===== ラッシュ ===== */
.v2-rush-ed { margin: 6px 0 4px; padding: 10px; border: 1.5px dashed #ff5a36; border-radius: 10px; background: #fff6f2; }
.v2-rush-ev { font-size: 12px; color: #b3122e; font-weight: 800; margin-left: 6px; }
.v2-rush-sub { font-size: 12px; color: #666; margin: 6px 0 4px; }
.v2-rush-prize { display: flex; gap: 4px; align-items: center; flex-wrap: wrap; margin-bottom: 4px; }
.v2-rush-prize select { flex: 1 1 120px; min-width: 0; font-size: 12px; }
.v2-rush-prize input { width: 80px; font-size: 12px; }
.v2-rush-prize input.v2-rush-w { width: 56px; }
.cr-rp-del { border: none; background: none; color: #c0392b; font-size: 16px; cursor: pointer; }
.v2-rush-supchk { display: flex; gap: 6px; align-items: center; margin: 8px 0 4px; font-size: 12px; font-weight: 700; }
.v2-rush-supchk input { width: auto; }
.v2-rush-sup input { width: 64px; }
/* 連チャン画面 */
.v2-rush { position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; color: #fff; overflow: hidden; background: #1a0006; }
@media (min-width: 560px) { .v2-rush { left: 50%; right: auto; width: 480px; margin-left: -240px; } }
.v2-rush-bg { position: absolute; inset: -50%; background: repeating-conic-gradient(from 0deg, rgba(255,60,40,.35) 0 8deg, transparent 8deg 20deg); animation: v2spin 6s linear infinite; }
.v2-rush.sup .v2-rush-bg { background: conic-gradient(#ff3b5c, #ffb300, #fff200, #2bff88, #1fb8ff, #7a5cff, #ff3bd4, #ff3b5c); opacity: .55; animation-duration: 3s; }
.v2-rush > *:not(.v2-rush-bg) { position: relative; }
.v2-rush-title { font-size: clamp(30px, 10vmin, 48px); font-weight: 900; color: #ffe08a; -webkit-text-stroke: 2px #7a1000; text-shadow: 0 0 20px #ff3b1f, 0 4px 0 #5a0a00; animation: v2whres .6s cubic-bezier(.2,1.6,.4,1) both; }
.v2-rush-rate { font-size: 14px; font-weight: 800; color: #ffd0c0; }
.v2-rush-count { display: flex; align-items: baseline; gap: 4px; margin-top: 6px; }
.v2-rush-count b { font-size: clamp(64px, 24vmin, 120px); font-weight: 900; line-height: 1; color: #fff; text-shadow: 0 0 24px #ff5a36; }
.v2-rush-count span { font-size: 28px; font-weight: 900; }
.v2-rush-prize { min-height: 34px; font-size: 20px; font-weight: 900; text-align: center; padding: 0 12px; }
.v2-rush-prize.pop { animation: v2cardpop .45s cubic-bezier(.2,1.5,.4,1) both; }
.v2-rush-msg { min-height: 30px; font-size: 24px; font-weight: 900; letter-spacing: .06em; }
.v2-rush-msg.go { color: #6dff9a; animation: v2msg .35s cubic-bezier(.2,1.6,.4,1) both; }
.v2-rush-msg.end { color: #ffd56b; }
.v2-rush-total { font-size: 15px; font-weight: 800; color: #ffe2d6; }
.v2-rush-total b { font-size: 22px; color: #fff; }
.v2-rush-next { margin-top: 10px; font-size: 13px; font-weight: 700; color: rgba(255,255,255,.85); animation: v2twinkle .9s ease-in-out infinite alternate; }
.v2-rush-card .est-card-art { position: relative; }
.v2-rush-ed input[type=number] { width: 76px; padding: 6px 6px; font-size: 13px; flex: 0 0 auto; }
.v2-rush-prize select { flex: 1 1 110px; padding: 6px; }
.v2-rush-prize select[data-f="kind"] { flex: 0 0 84px; }
.v2-rush-prize input[data-f="amount"] { width: 90px; }
.v2-rush-title { -webkit-text-stroke: 1px #7a1000; }
.v2-rush-sup { flex-wrap: wrap; row-gap: 4px; }

/* ===== 演出コレクション ===== */
.v2-dex-btn { display: block; width: 100%; margin: 0 0 10px; padding: 10px; border: 1.5px solid #e08e0b; border-radius: 12px; background: #fff8ec; color: #9a5b00; font-weight: 900; font-size: 14px; cursor: pointer; }
.v2-dex .est-settle-head small { font-size: 13px; color: #888; margin-left: 6px; }
.v2-dex-note { font-size: 12px; color: #777; margin-bottom: 8px; }
.v2-dex-grid { width: 100%; border-collapse: collapse; font-size: 11px; }
.v2-dex-grid th { font-weight: 800; color: #666; padding: 3px 2px; text-align: center; white-space: nowrap; }
.v2-dex-grid tr th:first-child { text-align: left; }
.v2-dex-grid td { padding: 2px; text-align: center; }
.v2-dex-cell { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 28px; border-radius: 7px; background: #eceef3; color: #b5b9c3; font-weight: 900; border: none; }
.v2-dex-cell.on { color: #fff; cursor: pointer; box-shadow: 0 2px 4px rgba(0,0,0,.15); }
.v2-dex-cell.c-white { background: #c9ced8; } .v2-dex-cell.c-blue { background: #1f6bff; } .v2-dex-cell.c-green { background: #14c45a; } .v2-dex-cell.c-red { background: #ff2a3d; } .v2-dex-cell.c-gold { background: #ffb300; }
.v2-dex-cell.c-rainbow { background: linear-gradient(135deg, #ff3b5c, #ffb300, #2bff88, #1fb8ff, #7a5cff); }
.v2-dex-sub { margin: 14px 0 6px; font-weight: 900; font-size: 13px; }
.v2-dex-hid { display: flex; flex-wrap: wrap; gap: 6px; }
.v2-dex-chip { padding: 5px 10px; border-radius: 999px; background: #eceef3; color: #9aa0ab; font-size: 12px; font-weight: 800; border: none; }
.v2-dex-chip.on { background: linear-gradient(90deg, #ff3b5c, #ffb300, #1fb8ff); color: #fff; cursor: pointer; }
.v2-dex-rep { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 8px 0; border-bottom: 1px solid #eee; font-size: 13px; }
.v2-dex-rep small { display: block; color: #888; font-size: 11px; }
.v2-dex-rep .c-gold { color: #ffb300; } .v2-dex-rep .c-rainbow { color: #ff3bd4; } .v2-dex-rep .c-red { color: #ff2a3d; } .v2-dex-rep .c-green { color: #14c45a; } .v2-dex-rep .c-blue { color: #1f6bff; }
.v2-gift .v2-gift-desc { margin: 8px 0 16px; font-size: 15px; line-height: 1.7; color: #3a2a00; }
.v2-gift .v2-gift-desc b { color: #c0392b; font-size: 18px; }
.v2-tag-rush { background: linear-gradient(90deg, #ff3b1f, #ff8a00); color: #fff; }

/* ===== レベル ===== */
#v2-lv-chip { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 3px 8px; border: 1px solid #f0c060; border-radius: 10px; background: #fff8ec; cursor: pointer; line-height: 1; }
#v2-lv-chip b { font-size: 11px; color: #9a5b00; font-weight: 900; }
.v2-lv-bar { display: block; width: 44px; height: 4px; border-radius: 3px; background: #f1e3c4; overflow: hidden; }
.v2-lv-bar i { display: block; height: 100%; background: linear-gradient(90deg, #ffb300, #ff6a00); border-radius: 3px; }
.v2-lv-big .v2-lv-bar { width: 100%; height: 10px; margin: 8px 0 4px; }
.v2-lv-next { font-size: 13px; color: #555; margin-bottom: 14px; }
.v2-lvpop small { color: #888; font-size: 11px; }
.v2-lv-prog { font-size: 12px; color: #9a5b00; font-weight: 700; margin-bottom: 6px; }
/* ---- 10連のみ ---- */
.v2-tag-ten { background: #0f766e; color: #fff; }
/* ---- 株価タブ ---- */
.v2-mk { padding: 15px; max-width: 720px; margin: 0 auto; }
.v2-mk-hero { background: linear-gradient(160deg, #fff8ec, #ffffff 70%); border: 1px solid #f0c060; border-radius: 14px; padding: 16px; margin-bottom: 12px; text-align: center; }
.v2-mk-label { font-size: 12px; font-weight: 800; color: #9a5b00; }
.v2-mk-price { font-size: 34px; font-weight: 900; color: #1a1a1a; letter-spacing: .01em; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.v2-mk-chg { font-size: 15px; font-weight: 900; font-variant-numeric: tabular-nums; }
.v2-mk-chg small { display: block; font-size: 11px; font-weight: 400; color: var(--text-sub); margin-top: 2px; }
.v2-mk-up { color: #d1242f; } .v2-mk-down { color: #1f6feb; } .v2-mk-flat { color: var(--text-sub); }
.v2-mk-sub { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 14px; margin-top: 10px; font-size: 11px; color: var(--text-sub); font-variant-numeric: tabular-nums; }
.v2-mk-card { background: var(--panel); border: 1px solid var(--border); border-radius: 14px; padding: 14px; margin-bottom: 12px; }
.v2-mk-ranges { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.v2-mk-ranges .v2-fchip { padding: 5px 10px; }
.v2-mk-chart { position: relative; }
.v2-mk-svg { display: block; width: 100%; height: auto; touch-action: pan-y; }
.v2-mk-grid { stroke: #ececf1; stroke-width: 1; vector-effect: non-scaling-stroke; }
.v2-mk-floor { stroke: #9aa0aa; stroke-width: 1; stroke-dasharray: 4 4; vector-effect: non-scaling-stroke; }
.v2-mk-ylab, .v2-mk-xlab, .v2-mk-flab { font-size: 11px; fill: #6b6b6b; font-variant-numeric: tabular-nums; }
.v2-mk-line { fill: none; stroke: #f07800; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.v2-mk-dot { fill: #f07800; stroke: #fff; stroke-width: 2; vector-effect: non-scaling-stroke; }
.v2-mk-cross { stroke: #1a1a1a; stroke-opacity: .35; stroke-width: 1; vector-effect: non-scaling-stroke; }
.v2-mk-tip { position: absolute; top: -6px; pointer-events: none; background: #1a1a1a; color: #fff; border-radius: 8px; padding: 5px 9px; font-size: 12px; line-height: 1.3; text-align: center; white-space: nowrap; box-shadow: 0 4px 12px rgba(0,0,0,.18); }
.v2-mk-tip b { display: block; font-variant-numeric: tabular-nums; } .v2-mk-tip small { color: #cfcfd6; font-size: 10.5px; }
.v2-mk-empty { padding: 50px 10px; text-align: center; font-size: 12px; color: var(--text-sub); }
.v2-mk-flow { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); font-size: 12px; color: var(--text-sub); line-height: 1.8; }
.v2-mk-flow b { color: var(--text-main); font-variant-numeric: tabular-nums; }
.v2-mk-flow b.v2-mk-up { color: #d1242f; } .v2-mk-flow b.v2-mk-down { color: #1f6feb; }
.v2-mk-hold { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.v2-mk-n { font-size: 28px; font-weight: 900; font-variant-numeric: tabular-nums; } .v2-mk-n small { font-size: 13px; margin-left: 2px; }
.v2-mk-worth { font-size: 13px; color: var(--text-sub); } .v2-mk-worth b { color: var(--text-main); font-size: 16px; }
.v2-mk-step { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.v2-mk-step .btn { width: 40px; flex: 0 0 auto; margin: 0; font-size: 18px; padding: 6px 0; }
.v2-mk-step input { width: 90px; flex: 0 0 auto; text-align: center; font-weight: 800; margin: 0; }
.v2-mk-sum { margin-left: auto; font-weight: 900; font-variant-numeric: tabular-nums; }
.v2-mk-btns { display: flex; gap: 8px; } .v2-mk-btns .btn { flex: 1; margin: 0; }
.v2-pull-btns.v2-pull-one { grid-template-columns: 1fr; }
/* ---- 個別のお詫び（運営用） ---- */
.v2-cp-user { display: block; width: 100%; text-align: left; background: #fff; border: 1px solid var(--border); border-radius: 10px; padding: 8px 10px; margin: 6px 0; cursor: pointer; font: inherit; color: var(--text-main); }
.v2-cp-user b { display: block; font-size: 13px; } .v2-cp-user small { font-size: 11px; color: var(--text-sub); }
.v2-cp-user.on { border-color: var(--gold); background: #fff8ec; box-shadow: 0 0 0 2px rgba(224,142,11,.25); }
.v2-cp-to { margin: 10px 0 4px; font-size: 13px; }
.v2-cp-log { padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 12px; } .v2-cp-log small { display: block; color: var(--text-sub); font-size: 11px; margin-top: 2px; word-break: break-all; }
/* ---- ラッシュを引くボタン ---- */
.v2-rush-go { display: block; width: 100%; margin: 10px 0 12px; padding: 14px 12px; border: 0; border-radius: 14px; font-size: 18px; font-weight: 900; color: #fff; background: linear-gradient(135deg, #ff3d00, #ff9100 55%, #ff3d00); background-size: 200% 100%; box-shadow: 0 6px 18px rgba(255,61,0,.45), inset 0 -3px 0 rgba(0,0,0,.18); animation: v2RushGo 1.6s ease-in-out infinite; cursor: pointer; }
.v2-rush-go small { display: block; font-size: 11px; font-weight: 700; opacity: .9; margin-top: 2px; }
.v2-rush-go:disabled { opacity: .6; animation: none; }
.v2-rush-banner { font-size: 15px; margin: 0 0 12px; }
@keyframes v2RushGo { 0%, 100% { background-position: 0% 50%; transform: scale(1); } 50% { background-position: 100% 50%; transform: scale(1.02); } }
@media (prefers-reduced-motion: reduce) { .v2-rush-go { animation: none; } }
/* ---- リザルトの収支 ---- */
.v2-sum-pl .v2-pl { border: 2px solid transparent; }
.v2-sum-pl .v2-pl b { font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.v2-sum-pl .v2-pl small { display: block; font-size: 11px; font-weight: 800; margin-top: 1px; }
.v2-sum-pl .v2-pl-up { background: rgba(255,59,48,.16); border-color: #ff5a4e; } .v2-sum-pl .v2-pl-up b, .v2-sum-pl .v2-pl-up small { color: #ff6b5f; }
.v2-sum-pl .v2-pl-down { background: rgba(64,140,255,.16); border-color: #4c8dff; } .v2-sum-pl .v2-pl-down b, .v2-sum-pl .v2-pl-down small { color: #7fb0ff; }
.v2-sum-pl .v2-pl-flat b { color: #c9d2e6; }
.v2-sum-sub { text-align: center; font-size: 12px; color: #aab3c5; margin: -2px 0 8px; line-height: 1.7; }
.v2-sum-pend { color: #ffb38a; }
/* ---- ラッシュを選ぶ画面 ---- */
.v2-rush-picker { position: relative; overflow: hidden; width: min(92vw, 440px); max-height: 86vh; display: flex; flex-direction: column; padding: 22px 16px 16px; }
.v2-rp-title { font-size: 18px; font-weight: 900; text-align: center; color: #3a1500; }
.v2-rp-title b { color: #e03a00; }
.v2-rp-note { font-size: 12px; color: #6b6b6b; text-align: center; margin: 4px 0 12px; }
.v2-rp-list { overflow-y: auto; display: flex; flex-direction: column; gap: 8px; padding: 2px; margin-bottom: 12px; }
.v2-rp-item { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 10px 12px; border-radius: 12px; border: 2px solid #ffb38a; background: linear-gradient(180deg, #fff6ef, #ffe8da); cursor: pointer; font: inherit; color: #1a1a1a; }
.v2-rp-item:active { transform: scale(.98); }
.v2-rp-item .est-rar { flex: 0 0 auto; }
.v2-rp-main { flex: 1; min-width: 0; } .v2-rp-main b { display: block; font-size: 15px; } .v2-rp-main b small { font-size: 11px; font-weight: 700; color: #b8430c; }
.v2-rp-main > small { display: block; font-size: 11px; color: #6b6b6b; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-rp-go { flex: 0 0 auto; font-weight: 900; color: #fff; background: linear-gradient(135deg, #ff3d00, #ff9100); border-radius: 999px; padding: 6px 12px; font-size: 13px; }
.v2-rp-back { margin: 0; }
.v2-rush-pend { cursor: pointer; }
/* ---- ラッシュ：演出なし・まとめて ---- */
.v2-rq { display: flex; align-items: center; justify-content: center; gap: 6px; font-size: 12px; font-weight: 700; margin: 0 0 12px; cursor: pointer; }
.est-sum .v2-rq { color: #e8ecf5; } .v2-rush-picker .v2-rq { color: #3a1500; }
.v2-rq input { width: auto; margin: 0; }
.v2-rush-all { width: 100%; margin: -4px 0 10px; border-color: #ff9100; color: #ffb36b; }
.v2-rp-all { font-size: 16px; margin: 0 0 10px; padding: 11px; }
.v2-rt-total { text-align: center; font-size: 15px; margin: 4px 0 12px; } .v2-rt-total b { font-size: 24px; color: #e03a00; font-variant-numeric: tabular-nums; } .v2-rt-total small { display: block; font-size: 12px; color: #6b6b6b; }
.v2-rt-row { cursor: default; } .v2-rt-amt { flex: 0 0 auto; font-weight: 900; font-variant-numeric: tabular-nums; }
/* ---- 販売予約 ---- */
.v2-tag-soon { background: #334155; color: #fff; }
.v2-soon { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 12px; border-radius: 12px; background: #1b1f2c; color: #fff; text-align: center; }
.v2-soon b { font-size: 15px; } .v2-soon span { font-size: 12px; color: #c9d2e6; } .v2-soon i { font-style: normal; font-weight: 900; color: #ffd257; font-variant-numeric: tabular-nums; font-size: 15px; }
.v2-cr-soon { color: #2563eb; font-size: 12px; }
/* 演出コレクション：画面より長いときは中だけスクロール（リプレイが増えるとはみ出していた） */
.v2-dex { max-width: 520px; display: flex; flex-direction: column; max-height: 88vh; padding: 18px 16px 14px; }
.v2-dex > .v2-rules-body { flex: 1 1 auto; min-height: 0; }
/* ---- プロフィール・ログインID ---- */
.v2-prof { max-height: 88vh; overflow-y: auto; touch-action: pan-y; user-select: text; }
.v2-acct { margin-top: 16px; padding-top: 14px; border-top: 1px dashed var(--border); text-align: left; }
.v2-acct-head { font-weight: 900; font-size: 14px; margin-bottom: 6px; }
.v2-acct-note { font-size: 12px; color: var(--text-sub); line-height: 1.7; margin-bottom: 10px; }
.v2-acct-on { font-size: 13px; color: #0f766e; margin-bottom: 4px; } .v2-acct-on b { font-size: 15px; }
.v2-acct-btns { display: flex; flex-direction: column; gap: 6px; } .v2-acct-btns .btn { margin: 0; }
.v2-acct-lbl { display: block; text-align: left; font-size: 12px; font-weight: 800; margin: 10px 0 4px; } .v2-acct-lbl small { font-weight: 400; color: var(--text-sub); margin-left: 4px; }
.v2-acct-warn { text-align: left; font-size: 11.5px; line-height: 1.6; color: #b45309; background: #fff7ed; border: 1px solid #fed7aa; border-radius: 10px; padding: 8px 10px; margin: 12px 0 4px; }
.v2-cp-lid { font-size: 11px; font-weight: 700; color: #0f766e; margin-left: 6px; }
/* ---- 1人あたりの上限口数 ---- */
.v2-tag-lim { background: #7c3aed; color: #fff; }
.v2-limit { font-size: 12px; color: #4c1d95; background: #f3efff; border: 1px solid #ddd0ff; border-radius: 8px; padding: 5px 8px; margin: 0 0 6px; text-align: center; }
.v2-limit b { font-variant-numeric: tabular-nums; }
.v2-limit.full { color: #fff; background: #6b7280; border-color: #6b7280; font-weight: 800; padding: 10px; }
.v2-pull:disabled { opacity: .35; filter: grayscale(.6); cursor: not-allowed; }
/* ---- まとめて売る ---- */
.v2-ms-head { margin: 14px 0 4px; }
.v2-ms-on { width: 100%; margin: 0; }
.v2-ms-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 12px; background: #fff8ec; border: 1px solid #f0c060; border-radius: 12px; padding: 8px 10px; }
.v2-ms-step { display: flex; align-items: center; justify-content: center; gap: 2px; margin-top: 4px; border: 1px solid var(--border); border-radius: 10px; padding: 2px; background: #fff; }
.v2-ms-step.on { border-color: #e08e0b; background: #fff3dc; }
.v2-ms-step button { border: 0; background: #f0f1f5; border-radius: 7px; min-width: 26px; height: 26px; font-weight: 900; cursor: pointer; color: var(--text-main); font-size: 14px; }
.v2-ms-step b { min-width: 18px; text-align: center; font-variant-numeric: tabular-nums; font-size: 13px; }
.v2-ms-step .v2-ms-max { font-size: 10px; padding: 0 5px; }
.v2-ms-bar { position: fixed; left: 0; right: 0; bottom: 64px; z-index: 900; display: flex; align-items: center; gap: 8px; padding: 10px 12px; background: #1b1f2c; color: #fff; box-shadow: 0 -4px 16px rgba(0,0,0,.25); }
.v2-ms-info { flex: 1; min-width: 0; font-size: 13px; } .v2-ms-info small { display: block; font-size: 11px; color: #c9d2e6; } .v2-ms-info small b { color: #ffd257; }
.v2-ms-bar .btn { width: auto; margin: 0; padding: 9px 14px; flex: 0 0 auto; }
.v2-ms-bar .btn-outline { color: #fff; border-color: #6b7280; }
/* ---- ランキングのレベル ---- */
.v2-rank-lv { display: inline-block; font-size: 10px; font-weight: 900; color: #9a5b00; background: #fff3dc; border: 1px solid #f0c060; border-radius: 6px; padding: 0 5px; margin-right: 5px; line-height: 16px; vertical-align: 1px; font-variant-numeric: tabular-nums; }
/* ---- イベントカレンダー ---- */
.v2-rule-btns { display: inline-flex; gap: 6px; flex: 0 0 auto; }
.v2-cal-banner { display: block; width: 100%; text-align: left; margin: 0 0 12px; padding: 10px 12px; border-radius: 12px; border: 1px solid #fecaca; background: linear-gradient(135deg, #fff1f2, #fff7ed); cursor: pointer; font: inherit; color: #7f1d1d; }
.v2-cal-banner span { display: block; font-size: 13px; line-height: 1.6; } .v2-cal-banner small { display: block; text-align: right; font-size: 11px; color: #b45309; margin-top: 2px; }
.v2-cal { max-width: 460px; display: flex; flex-direction: column; max-height: 90vh; padding: 16px 14px 14px; text-align: left; }
.v2-cal > .v2-rules-body { flex: 1 1 auto; min-height: 0; margin: 6px 0 10px; }
.v2-cal-head { display: flex; align-items: center; justify-content: space-between; } .v2-cal-head b { font-size: 17px; }
.v2-cal-head button { border: 1px solid var(--border); background: #fff; border-radius: 10px; width: 38px; height: 34px; font-size: 18px; font-weight: 900; cursor: pointer; color: var(--text-main); }
.v2-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.v2-cal-w { text-align: center; font-size: 11px; font-weight: 800; color: #6b6b6b; padding: 2px 0; } .v2-cal-w.sat { color: #2563eb; } .v2-cal-w.sun { color: #dc2626; }
.v2-cal-d { min-height: 46px; border: 1px solid #ececf1; border-radius: 8px; background: #fff; padding: 3px 2px; display: flex; flex-direction: column; align-items: center; gap: 2px; cursor: pointer; font: inherit; color: var(--text-main); }
.v2-cal-d.out { opacity: .4; } .v2-cal-d.has { border-color: #f0c060; background: #fffaf0; }
.v2-cal-d.today { border: 2px solid #e08e0b; } .v2-cal-d.sel { box-shadow: 0 0 0 2px #1b1f2c; }
.v2-cal-n { font-size: 12px; font-weight: 800; font-variant-numeric: tabular-nums; }
.v2-cal-marks { display: flex; flex-wrap: wrap; justify-content: center; gap: 1px; }
.v2-cal-marks i { font-style: normal; font-size: 10px; line-height: 15px; width: 16px; border-radius: 4px; text-align: center; } .v2-cal-marks i.wk { background: transparent; opacity: .55; }
.v2-cal-dayh { font-weight: 900; margin: 10px 0 4px; font-size: 13px; }
.v2-cal-fixed { margin-top: 12px; padding: 10px; border-radius: 10px; background: #f5f6fa; border: 1px solid var(--border); font-size: 12px; line-height: 1.7; color: #333; } .v2-cal-fixed div + div { margin-top: 4px; }
.v2-cal-row { display: flex; gap: 8px; align-items: flex-start; padding: 8px 0; border-bottom: 1px solid var(--border); }
.v2-cal-tag { flex: 0 0 auto; color: #fff; font-size: 10.5px; font-weight: 800; border-radius: 6px; padding: 2px 6px; margin-top: 1px; white-space: nowrap; }
.v2-cal-row b { font-size: 13px; } .v2-cal-row small { display: block; font-size: 11px; color: #6b6b6b; } .v2-cal-row em { font-style: normal; color: #dc2626; font-weight: 800; }
.v2-cal-row p { margin: 3px 0 0; font-size: 12px; color: #444; line-height: 1.6; }
/* ---- 隠し演出の色・株価の操作 ---- */
.v2-cr-hcols { flex-wrap: wrap; gap: 6px; }
.v2-hcol { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 800; padding: 4px 8px; border-radius: 8px; color: #fff; cursor: pointer; }
.v2-hcol input { width: auto; margin: 0; }
.v2-mk-adm-now { font-size: 13px; margin-bottom: 8px; } .v2-mk-adm-now b { font-size: 16px; font-variant-numeric: tabular-nums; }
.v2-mk-adm-btns { display: flex; flex-wrap: wrap; gap: 6px; } .v2-mk-adm-btns .btn { width: auto; margin: 0; min-width: 56px; }
.v2-limit { text-align: left; line-height: 1.6; font-size: 11.5px; padding: 7px 10px; }
.v2-limit.full { background: #f3efff; color: #4c1d95; border-color: #ddd0ff; font-weight: 400; padding: 7px 10px; }
.v2-limit-full { display: block; margin-top: 4px; text-align: center; font-weight: 900; color: #fff; background: #6b7280; border-radius: 6px; padding: 6px; font-size: 12px; }
/* ---- まとめて配る ---- */
.v2-bk-res { margin-top: 10px; padding: 10px; border-radius: 10px; background: #f5f6fa; border: 1px solid var(--border); font-size: 13px; }
.v2-bk-list { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; max-height: 160px; overflow-y: auto; }
.v2-bk-list span { font-size: 11px; background: #fff; border: 1px solid var(--border); border-radius: 6px; padding: 2px 6px; } .v2-bk-list small { color: #6b6b6b; margin-left: 4px; }
/* リザルトを出した直後の一瞬はボタンを押せない（前の画面のタップが届いて、シェアなどが開いてしまうのを防ぐ） */
#est-reveal.v2-guard button, #est-reveal.v2-guard a { pointer-events: none; }

/* 株価上昇・下落オリパのタグ */
.v2-tag-mkup { background: #16a34a; color: #fff; }
.v2-tag-mkdown { background: #dc2626; color: #fff; }
.v2-tag-mkhidden { background: linear-gradient(90deg, #16a34a, #dc2626); color: #fff; }

/* 倒産（紙切れ）の演出 */
.v2-bust { position: fixed; inset: 0; z-index: 10050; background: rgba(0,0,0,.72); display: flex; align-items: center; justify-content: center; padding: 16px; animation: v2-bust-in .25s ease-out; }
.v2-bust-box { background: #1f1f1f; color: #fff; border: 2px solid #dc2626; border-radius: 16px; padding: 22px 18px; max-width: 360px; width: 100%; text-align: center; box-shadow: 0 0 40px rgba(220,38,38,.5); animation: v2-bust-shake .5s ease-in-out .1s; }
.v2-bust-ico { font-size: 56px; line-height: 1; }
.v2-bust-t { font-size: 34px; font-weight: 900; color: #ef4444; letter-spacing: .1em; margin-top: 6px; }
.v2-bust-s { font-size: 14px; font-weight: 700; margin: 4px 0 12px; }
.v2-bust-m { font-size: 13px; line-height: 1.7; color: #e5e5e5; margin-bottom: 14px; }
@keyframes v2-bust-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes v2-bust-shake { 0%,100% { transform: translateX(0); } 20% { transform: translateX(-8px) rotate(-2deg); } 40% { transform: translateX(8px) rotate(2deg); } 60% { transform: translateX(-5px); } 80% { transform: translateX(5px); } }

/* 株価ラッシュオリパ */
.v2-tag-mkrush { background: linear-gradient(90deg, #f59e0b, #dc2626); color: #fff; }
.v2-rush-mk { margin-top: 8px; font-size: 13px; font-weight: 700; color: #fff; background: rgba(0,0,0,.35); border-radius: 999px; padding: 6px 14px; display: inline-block; }
.v2-rush-mk.done { font-size: 15px; background: rgba(0,0,0,.55); }
.v2-rush-mk .v2-mk-up { color: #ff6b6b; } .v2-rush-mk .v2-mk-down { color: #7cc4ff; }

/* オリパの内容説明 */
.v2-card-desc { margin: 6px 2px 2px; font-size: 12px; line-height: 1.55; color: #555; white-space: pre-line; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; cursor: pointer; }
.v2-box-desc { margin: 8px 0 2px; font-size: 13px; line-height: 1.7; color: #333; white-space: pre-line; background: #fffaf0; border: 1px solid #f3e2c0; border-radius: 10px; padding: 10px 12px; overflow-wrap: anywhere; }

/* 株価のバランス調整（運営） */
.v2-mkcfg-h { font-size: 13px; font-weight: 800; margin: 12px 0 4px; color: #b45309; }
.v2-mkcfg-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 0; border-bottom: 1px dashed #eee; font-size: 13px; }
.v2-mkcfg-row small { color: #888; font-size: 11px; font-weight: 400; }
.v2-mkcfg-in { display: flex; align-items: center; gap: 4px; flex: 0 0 auto; font-size: 12px; }
.v2-mkcfg-in input { width: 96px; text-align: right; }

/* 株券を押し付けられた */
.v2-scatter-desc { font-size: 14px; line-height: 1.8; margin: 6px 0 10px; }
.v2-scatter-warn { font-size: 12px; line-height: 1.7; background: #fff1f2; border: 1px solid #fecaca; color: #991b1b; border-radius: 10px; padding: 8px 10px; margin-bottom: 12px; }
.v2-scatter-btns { display: flex; gap: 8px; } .v2-scatter-btns .btn { flex: 1; }

/* 確認ダイアログ（confirm の代わり） */
.v2-ask { position: fixed; inset: 0; z-index: 10100; background: rgba(0,0,0,.5); display: flex; align-items: center; justify-content: center; padding: 16px; }
.v2-ask-box { background: #fff; color: #222; border-radius: 14px; padding: 18px 16px 14px; width: 100%; max-width: 360px; box-shadow: 0 10px 40px rgba(0,0,0,.3); }
.v2-ask-msg { font-size: 14px; line-height: 1.7; white-space: pre-line; margin-bottom: 14px; overflow-wrap: anywhere; }
.v2-ask-btns { display: flex; gap: 8px; } .v2-ask-btns .btn { flex: 1; }

/* ランドマーク（UR）：超高額物件 */
.est-r-UR { background: linear-gradient(160deg, #fff0f7, #f0f7ff 55%, #fffbe8); }
.est-r-UR .est-card-art { background: conic-gradient(from 0deg, #ffd1e6, #fff1b8, #c9f2ff, #e6d6ff, #ffd1e6); }
.est-r-UR::after { content: ''; position: absolute; inset: 0; background: linear-gradient(115deg, transparent 25%, rgba(255,255,255,0.85) 45%, transparent 65%); background-size: 250% 100%; animation: estHolo 1.6s infinite; pointer-events: none; }
.est-r-UR .est-card-price { background: linear-gradient(90deg, #e0005a, #d97800, #0088c7, #7a2ee0); -webkit-background-clip: text; background-clip: text; color: transparent; font-weight: 900; }

/* 有限責任株・無限責任株の切り替え */
.v2-mk-kinds { display: flex; gap: 8px; margin: 6px 0 10px; }
.v2-mk-kind { flex: 1; display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; border: 2px solid #e5e7eb; background: #fff; border-radius: 12px; padding: 8px 10px; font-size: 13px; font-weight: 800; color: #333; cursor: pointer; }
.v2-mk-kind b { font-size: 18px; }
.v2-mk-kind small { font-size: 10px; font-weight: 600; color: #888; line-height: 1.4; }
.v2-mk-kind.on { border-color: #f59e0b; background: #fffbeb; }
.v2-mk-kind.u.on { border-color: #dc2626; background: #fff1f2; }

/* 無限責任株の配当で当たった物件 */
.v2-div-props { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 8px; }

/* コンプボーナス */
.v2-comp-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin: 10px 0; padding: 10px 12px; border-radius: 12px; background: #f8fafc; border: 1px solid #e5e7eb; font-size: 13px; }
.v2-comp-head small { display: block; font-size: 11px; color: #777; font-weight: 500; margin-top: 2px; line-height: 1.5; }
.v2-comp-head > span { text-align: right; font-size: 11px; color: #888; flex: 0 0 auto; } .v2-comp-head > span b { display: block; font-size: 15px; color: #d97706; }
.v2-comp-head.all { background: linear-gradient(90deg, #fff7d6, #ffe9f3); border-color: #f5c542; }
.v2-comp-tag { margin-left: 8px; font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: rgba(0,0,0,.06); color: #666; vertical-align: middle; }
.v2-comp-tag.on { background: linear-gradient(90deg, #f59e0b, #ef4444); color: #fff; }

/* JPC（ジャックポットチャンス） */
.v2-jpc { position: fixed; inset: 0; z-index: 10080; background: radial-gradient(circle at 50% 30%, #3b0764, #05010d 70%); display: flex; align-items: center; justify-content: center; padding: 16px; animation: v2-bust-in .3s ease-out; }
.v2-jpc-in { width: 100%; max-width: 380px; text-align: center; color: #fff; }
.v2-jpc-title { font-size: 30px; font-weight: 900; letter-spacing: .06em; background: linear-gradient(90deg, #ffd257, #ff3d8b, #29c7ff, #ffd257); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: v2-jpc-shine 2s linear infinite; }
.v2-jpc-sub { font-size: 12px; opacity: .8; margin: 4px 0 16px; }
.v2-jpc-reels { display: flex; gap: 8px; justify-content: center; margin-bottom: 16px; }
.v2-jpc-reel { flex: 1; max-width: 108px; height: 84px; border-radius: 12px; background: linear-gradient(180deg, #1f1235, #3a1f63 50%, #1f1235); border: 3px solid #ffd257; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 0 18px rgba(0,0,0,.6), 0 0 16px rgba(255,210,87,.4); }
.v2-jpc-reel b { font-size: 18px; font-weight: 900; color: #ffd257; text-shadow: 0 0 8px rgba(255,210,87,.8); }
.v2-jpc-reel.stop { animation: v2-jpc-pop .3s ease-out; border-color: #ff3d8b; }
.v2-jpc-tier { font-size: 26px; font-weight: 900; color: #ffd257; margin-bottom: 10px; text-shadow: 0 0 12px rgba(255,210,87,.9); }
.v2-jpc-card { width: 160px; margin: 0 auto 10px; }
.v2-jpc-note { font-size: 11px; opacity: .85; margin-bottom: 12px; line-height: 1.6; }
.v2-jpc-in.win-grand .v2-jpc-tier { font-size: 32px; color: #fff; text-shadow: 0 0 18px #ff3d8b, 0 0 30px #ffd257; }
.v2-jp-props { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
@keyframes v2-jpc-shine { from { background-position: 0% 0; } to { background-position: 300% 0; } }
@keyframes v2-jpc-pop { 0% { transform: scale(1.25); } 100% { transform: scale(1); } }
.v2-jp-props .v2-prop { min-width: 0; } .v2-jp-props .est-card { width: 100%; }

/* 無限責任株を買う */
.v2-mk-buy { margin: 4px 0 12px; padding: 10px; border-radius: 12px; background: #fff1f2; border: 1px solid #fecaca; }
.v2-mk-buy-h { font-weight: 800; font-size: 14px; margin-bottom: 8px; } .v2-mk-buy-h small { display: block; font-size: 11px; font-weight: 500; color: #9f1239; margin-top: 2px; }

.v2-adm-err { background: #fff1f2; border: 1px solid #fecaca; color: #991b1b; font-size: 12px; line-height: 1.6; }

.v2-ad-sub { text-align: center; font-size: 12px; color: #92400e; margin: -2px 0 8px; } .v2-ad-sub b { color: #b45309; }

/* ---------------------------------------------------------------- 地方チーム戦 */
.v2-war-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 5px; vertical-align: middle; box-shadow: 0 0 0 1.5px #fff; }
.v2-team-chip { max-width: 96px; overflow: hidden; text-overflow: ellipsis; display: inline-flex; align-items: center; border: 1px solid var(--border); background: #fff; border-radius: 14px; padding: 3px 9px; font-size: 11px; font-weight: 700; color: var(--text-main); cursor: pointer; white-space: nowrap; }
.v2-war-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; margin-bottom: 8px; }
.v2-war-head b { font-size: 16px; display: block; }
.v2-war-head small { color: var(--text-sub); font-size: 11px; }
.v2-war-mine { font-size: 12px; background: #f5f6fa; border-radius: 10px; padding: 6px 10px; white-space: nowrap; }
.v2-war-st { margin-bottom: 6px; }
.v2-war-row { display: grid; grid-template-columns: 28px 1fr auto; grid-template-rows: auto 4px; align-items: center; column-gap: 6px; padding: 6px 4px; border-bottom: 1px solid var(--border); }
.v2-war-row.me { background: #fff6e6; border-radius: 8px; }
.v2-war-rank { font-weight: 800; text-align: center; }
.v2-war-name { font-size: 13px; font-weight: 700; min-width: 0; }
.v2-war-name small { display: block; font-size: 10px; color: var(--text-sub); font-weight: 400; margin-left: 15px; }
.v2-war-val { font-size: 13px; font-weight: 800; color: var(--gold); white-space: nowrap; }
.v2-war-bar { grid-column: 2 / 4; height: 4px; background: #eee; border-radius: 2px; overflow: hidden; }
.v2-war-bar i { display: block; height: 100%; }
.v2-war-map { display: grid; grid-template-columns: repeat(14, 1fr); grid-template-rows: repeat(13, auto); gap: 2px; margin: 6px 0 4px; }
.v2-war-tile { aspect-ratio: 1; border: none; border-radius: 4px; color: #fff; font-size: 10px; font-weight: 800; padding: 0; cursor: pointer; text-shadow: 0 1px 2px rgba(0,0,0,.35); line-height: 1; min-width: 0; }
.v2-war-tile.lost { outline: 2px dashed rgba(0,0,0,.45); outline-offset: -2px; }
.v2-war-tile.sel { outline: 3px solid #111; outline-offset: -1px; }
.v2-war-legend { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: 11px; color: var(--text-sub); margin-bottom: 8px; }
.v2-war-prop { display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; font-size: 12px; padding: 7px 2px; border-bottom: 1px dashed var(--border); }
.v2-war-prop > span:first-child small { display: block; color: var(--text-sub); margin: 2px 0 0 14px; font-size: 10px; }
.v2-war-own { text-align: right; font-size: 11px; }
.v2-war-own small { display: block; color: var(--text-sub); font-size: 10px; margin-top: 2px; }
.v2-war-pts { grid-column: 1 / -1; display: flex; height: 5px; border-radius: 3px; overflow: hidden; background: var(--border); }
.v2-war-pts i { display: block; height: 100%; }
.v2-war-tile.none { opacity: .38; }
.v2-war-threat { margin: 8px 0; padding: 9px 11px; border-radius: 10px; background: #fff1f0; border: 1px solid #f5a19a; color: #9b1c1c; font-size: 12px; line-height: 1.5; }
.v2-war-threat small { color: #9b1c1c; }
.v2-war-me { margin: 8px 0 2px; font-size: 12px; color: var(--text-sub); }
.v2-war-me b { color: var(--text-main); }
.v2-war-chips { display: flex; flex-wrap: wrap; gap: 5px; margin: 2px 0 6px; }
.v2-war-chip { border: 1px solid var(--border); background: var(--card-bg, #fff); color: var(--text-main); border-radius: 999px; font-size: 11px; padding: 4px 9px; cursor: pointer; }
.v2-war-chip.on { border-color: #111; font-weight: 800; }
.v2-war-last { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 12px; padding: 5px 2px; border-bottom: 1px dashed var(--border); }
.v2-war-last span { color: var(--text-sub); }
.v2-war-last small { font-size: 10px; }
.v2-war-ev { font-size: 11px; padding: 4px 0; border-bottom: 1px dashed var(--border); color: var(--text-sub); }
.v2-war-ev.big { color: var(--text-main); font-size: 12px; }
.v2-war-gate { margin-top: 8px; padding: 10px; border-radius: 10px; background: #f5f6fa; color: var(--text-sub); font-size: 12px; text-align: center; font-weight: 700; }
.v2-war-join { color: #fff; font-size: 22px; font-weight: 900; border-radius: 12px; padding: 14px; margin: 10px 0; text-shadow: 0 1px 3px rgba(0,0,0,.3); }
.v2-war-admin { border: 2px solid var(--gold); }
.v2-war-admin .btn { margin-top: 10px; }
.v2-tag-war { background: #0f766e; color: #fff; }
.v2-tag-raid { background: #b91c1c; color: #fff; }

/* 株券の損益 */
.v2-mk-pl { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 12px; background: #f7f7fa; border-radius: 10px; padding: 10px 12px; margin: 4px 0 10px; font-size: 12px; }
.v2-mk-pl > div { display: flex; flex-direction: column; }
.v2-mk-pl span { color: var(--text-sub); font-size: 10px; }
.v2-mk-pl b { font-size: 14px; }
.v2-mk-pl small { color: var(--text-sub); font-size: 10px; }
.v2-mk-pnl.up b, .v2-mk-pnl.up small { color: #dc2626; }
.v2-mk-pnl.down b, .v2-mk-pnl.down small { color: #2563eb; }
.v2-mk-pl-note { grid-column: 1 / -1; }
.v2-mk-pl > small:only-child { grid-column: 1 / -1; }

.v2-hall-tier { font-size: 11px; font-weight: 700; color: var(--text-sub); margin: 10px 0 6px; }

/* チーム戦のチャット */
.v2-chat-list { max-height: 300px; overflow-y: auto; background: #f7f7fa; border-radius: 10px; padding: 8px; margin-bottom: 8px; }
.v2-chat-msg { background: #fff; border-radius: 10px; padding: 6px 10px; margin-bottom: 6px; max-width: 88%; box-shadow: 0 1px 2px rgba(0,0,0,.05); }
.v2-chat-msg.me { margin-left: auto; background: #fff6e6; }
.v2-chat-meta { display: flex; gap: 8px; align-items: baseline; font-size: 10px; color: var(--text-sub); }
.v2-chat-meta b { color: var(--text-main); font-size: 11px; }
.v2-chat-meta button { border: none; background: none; color: #dc2626; font-size: 10px; cursor: pointer; padding: 0; }
.v2-chat-text { font-size: 13px; word-break: break-word; white-space: pre-wrap; }
.v2-chat-form { display: flex; gap: 6px; align-items: center; }
.v2-chat-form input { flex: 1; padding: 10px; font-size: 14px; }
.v2-chat-form .btn { width: auto; padding: 10px 16px; margin: 0; }
.v2-chat-jump { display: block; margin-top: 6px; border: 1px solid var(--gold); background: #fff; color: var(--gold); border-radius: 12px; font-size: 11px; font-weight: 700; padding: 3px 8px; cursor: pointer; width: 100%; }

.v2-ev-slots { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.v2-ev-slots .v2-fchip.on { background: var(--gold); color: #fff; border-color: var(--gold); }

.v2-steal-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; max-width: 360px; margin: 12px auto 4px; }

.v2-cal-banner .v2-cal-bnote { display: block; text-align: left; font-size: 11px; font-weight: 400; color: inherit; opacity: .8; margin: 0 0 2px; }

/* 全体チャット：発言者のチーム色 */
.v2-chat-msg { border-left: 3px solid var(--tc, transparent); }
.v2-chat-team { font-style: normal; font-size: 10px; font-weight: 800; color: var(--tc, #999); margin-right: 4px; }
.v2-chat-meta button { border: none; background: none; color: var(--text-sub); font-size: 10px; padding: 0 2px; margin-left: 4px; cursor: pointer; text-decoration: underline; }
.v2-chat-msg.hid .v2-chat-text { color: var(--text-sub); font-size: 11px; }
.v2-chat-mutenote { text-align: center; font-size: 11px; }
.v2-chat-mutenote button { border: none; background: none; color: #2563eb; text-decoration: underline; font-size: 11px; cursor: pointer; }

/* チーム戦のチュートリアル */
.v2-tut { max-width: 420px; text-align: left; }
.v2-tut .est-settle-head { text-align: center; }
.v2-tut-step { text-align: center; font-size: 11px; color: var(--text-sub); }
.v2-tut-body { font-size: 13px; line-height: 1.75; margin: 6px 0 4px; max-height: 58vh; overflow-y: auto; }
.v2-tut-body p { margin: 6px 0; }
.v2-tut-body .v2-war-join { text-align: center; margin: 6px auto 10px; }
.v2-tut-ex, .v2-tut-prop { background: #f6f7fb; border-radius: 10px; padding: 6px 8px; margin: 6px 0; border-bottom: none; }
.v2-tut-try { font-weight: 800; color: #b45309; margin-top: 10px !important; }
.v2-tut-msg { min-height: 20px; font-size: 12px; margin-top: 6px; }
.v2-tut-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 8px; }
.v2-tut-btns .v2-tut-hit { grid-column: 1 / -1; }
.v2-tut-act { display: block; width: 100%; margin-top: 8px; padding: 14px 10px; font-size: 16px; font-weight: 800; border-radius: 12px; box-shadow: 0 3px 0 rgba(0,0,0,.18); }
.v2-tut-btns .v2-tut-act { margin-top: 0; }
.v2-tut-act:active { transform: translateY(2px); box-shadow: 0 1px 0 rgba(0,0,0,.18); }
.v2-tut-hit { background: #fff1f0; color: #b91c1c; border: 2px solid #f5a19a; }
.v2-tut-msg { font-size: 13px !important; font-weight: 700; min-height: 22px; }
.v2-tut-note { font-size: 11px; color: var(--text-sub); }
.v2-tut-go { font-weight: 800; text-align: center; margin-top: 12px !important; }
.v2-tut-dots { display: flex; justify-content: center; gap: 5px; margin: 8px 0; }
.v2-tut-dots i { width: 7px; height: 7px; border-radius: 50%; background: var(--border); }
.v2-tut-dots i.on { background: #e08e0b; }
.v2-tut-nav { display: flex; gap: 8px; }

/* チーム戦の協力（ミッション・役割・一斉攻撃） */
.v2-coop { margin-top: 6px; }
.v2-mis { margin: 6px 0; font-size: 12px; }
.v2-mis-h { display: flex; justify-content: space-between; }
.v2-mis-bar { display: block; height: 7px; border-radius: 4px; background: var(--border); overflow: hidden; margin-top: 3px; }
.v2-mis-bar i { display: block; height: 100%; background: linear-gradient(90deg, #f59e0b, #ef4444); }
.v2-mis.done .v2-mis-bar i { background: #10b981; }
.v2-role { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.v2-role-btn { border: 1px solid var(--border); background: #fff; border-radius: 10px; padding: 7px 4px; cursor: pointer; font-size: 12px; color: var(--text-main); }
.v2-role-btn small { display: block; font-size: 10px; color: var(--text-sub); margin-top: 2px; }
.v2-role-btn.on { border: 2px solid #e08e0b; background: #fff8eb; }
.v2-war-rally { color: #b45309 !important; font-weight: 700; }

/* 全国マップ（日本地図） */
.v2-war-map2 { background: linear-gradient(180deg, #eaf4fb, #f6fafd); border-radius: 14px; padding: 6px; margin: 4px 0 6px; }
.v2-jm { display: block; width: 100%; height: auto; max-height: 520px; }
.v2-jm-p { stroke: #fff; stroke-width: .7; stroke-linejoin: round; cursor: pointer; transition: fill-opacity .2s; }
.v2-jm-p:hover { fill-opacity: .85 !important; }
.v2-jm-p.sel { stroke: #111; stroke-width: 1.6; }
.v2-jm-pin { cursor: pointer; }
.v2-jm-pin circle:first-child { stroke: #fff; stroke-width: 1.6; filter: drop-shadow(0 1px 1px rgba(0,0,0,.35)); }
.v2-jm-pin.lost circle:first-child { stroke: #111; stroke-dasharray: 1.6 1.2; }
.v2-jm-pin .dot { fill: #fff; }
.v2-jm-pin text { font-size: 6px; font-weight: 800; fill: #fff; text-anchor: middle; pointer-events: none; }
.v2-jm-oki { fill: rgba(255,255,255,.6); stroke: #b6c8d6; stroke-width: .6; stroke-dasharray: 2 1.5; }
.v2-jm-okit { font-size: 7px; fill: #64748b; font-weight: 700; }
.v2-jm-credit { font-size: 10px; color: var(--text-sub); text-align: right; }
.v2-jm-credit a { color: var(--text-sub); }

/* チーム戦のオリパをまとめて作る */
.v2-wb { margin: 10px 0; border: 1px solid var(--border); border-radius: 12px; padding: 8px 10px; background: #fafbff; }
.v2-wb summary { font-weight: 800; cursor: pointer; font-size: 13px; }
.v2-wb-grid { display: grid; grid-template-columns: 1fr; gap: 6px; margin: 8px 0; font-size: 12px; }
.v2-wb-grid label { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.v2-wb-grid input, .v2-wb-grid select { padding: 4px 6px; font-size: 13px; }
.v2-wb-checks { display: grid; gap: 4px; font-size: 12px; margin-bottom: 6px; }
.v2-wb-prev { font-size: 12px; background: #fff; border-radius: 8px; padding: 6px 8px; margin-bottom: 8px; line-height: 1.6; }
.v2-wb-checks label { display: flex; align-items: center; gap: 6px; }
.v2-wb-checks input[type="checkbox"] { width: auto; margin: 0; flex: 0 0 auto; }

/* チーム戦の券（アイテム） */
.v2-witems { display: grid; gap: 8px; }
.v2-witem { background: #fff8eb; border: 1px solid #f6d58a; border-radius: 10px; padding: 8px 10px; font-size: 13px; }
.v2-witem-row { display: flex; gap: 6px; margin-top: 6px; align-items: center; }
.v2-witem-row select { flex: 1 1 auto; min-width: 0; }
.v2-witem-row input { width: 80px; flex: 0 0 auto; }
.v2-witem-row .btn { width: auto; padding: 8px 16px; flex: 0 0 auto; }
.v2-cr-hold { display: flex; align-items: center; gap: 6px; font-size: 12px; }
.v2-cr-hold input { width: auto; margin: 0; }

/* ===== 旗取り演出（戦国・街・夜の街） ===== */
.v2-fl { position: absolute; inset: 0; overflow: hidden; }
.v2-fl-sky { position: absolute; inset: 0; }
.v2-fl-sengoku .v2-fl-sky { background: linear-gradient(180deg, #24123f 0%, #7a2e5a 38%, #e2725b 66%, #f7c873 100%); }
.v2-fl-city .v2-fl-sky { background: linear-gradient(180deg, #4fa8f0 0%, #9bd4ff 60%, #e3f4ff 100%); }
.v2-fl-night .v2-fl-sky { background: linear-gradient(180deg, #050816 0%, #11163a 55%, #2a1f5c 100%); }
.v2-fl-sun { position: absolute; border-radius: 50%; }
.v2-fl-sengoku .v2-fl-sun { width: 34vmin; height: 34vmin; left: 50%; bottom: 18%; transform: translateX(-50%); background: radial-gradient(circle, #ff7a3d 0%, #ff4d2e 55%, rgba(255,77,46,0) 70%); opacity: .85; }
.v2-fl-city .v2-fl-sun { width: 16vmin; height: 16vmin; right: 10%; top: 9%; background: radial-gradient(circle, #fff7c2 0%, #ffd84d 55%, rgba(255,216,77,0) 72%); }
.v2-fl-night .v2-fl-sun { width: 12vmin; height: 12vmin; right: 14%; top: 10%; background: radial-gradient(circle at 35% 35%, #fffbe6 0%, #e9e4c3 60%, rgba(233,228,195,0) 72%); box-shadow: 0 0 40px rgba(255,250,220,.35); }
.v2-fl-skyline { position: absolute; left: 0; right: 0; bottom: 22%; height: 40%; }
.v2-fl-skyline span { position: absolute; bottom: 0; width: var(--w); height: var(--h); }
.v2-fl-city .v2-fl-skyline span { background: linear-gradient(180deg, #8fb3cf, #6f93b1); }
.v2-fl-night .v2-fl-skyline span { background: repeating-linear-gradient(0deg, transparent 0 7px, rgba(255,214,102,.55) 7px 9px), #0d1128; background-size: 6px 100%; opacity: .95; }
.v2-fl-hills { position: absolute; inset: 0; background: radial-gradient(ellipse 60% 70% at 15% 100%, #2b1a2e 60%, transparent 61%), radial-gradient(ellipse 55% 60% at 85% 100%, #2b1a2e 60%, transparent 61%), radial-gradient(ellipse 80% 45% at 50% 100%, #3a2236 60%, transparent 61%); }
.v2-fl-ground { position: absolute; left: 0; right: 0; bottom: 0; height: 22%; }
.v2-fl-sengoku .v2-fl-ground { background: linear-gradient(180deg, #4a2f1d, #2b1a10); }
.v2-fl-city .v2-fl-ground { background: linear-gradient(180deg, #7b8794, #545e6a); }
.v2-fl-night .v2-fl-ground { background: linear-gradient(180deg, #151933, #070914); }
/* 真ん中の建物と旗 */
.v2-fl-bld { position: absolute; left: 50%; bottom: 22%; transform: translateX(-50%); z-index: 2; }
.v2-fl-sengoku .v2-fl-bld { width: 52vmin; height: 40vmin; }
.v2-fl-sengoku .v2-fl-bld::before { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, #f6f1e6 0 58%, #8b8f96 58% 100%); clip-path: polygon(4% 100%, 96% 100%, 84% 58%, 80% 30%, 20% 30%, 16% 58%); }
.v2-fl-sengoku .v2-fl-top { position: absolute; left: 50%; top: 4%; transform: translateX(-50%); width: 76%; height: 14%; background: #1f2a2a; clip-path: polygon(0 100%, 100% 100%, 82% 0, 18% 0); }
.v2-fl-sengoku .v2-fl-top::before { content: ''; position: absolute; left: 50%; bottom: 100%; transform: translateX(-50%); width: 62%; height: 120%; background: linear-gradient(180deg, #1f2a2a 0 45%, #f6f1e6 45% 100%); clip-path: polygon(0 100%, 100% 100%, 100% 45%, 80% 0, 20% 0, 0 45%); }
.v2-fl-city .v2-fl-bld { width: 30vmin; height: 58vmin; background: repeating-linear-gradient(90deg, transparent 0 9px, rgba(255,255,255,.45) 9px 12px), repeating-linear-gradient(0deg, transparent 0 14px, rgba(60,80,100,.35) 14px 16px), linear-gradient(180deg, #aec3d6, #7f97ad); border-radius: 3px 3px 0 0; box-shadow: inset 0 0 0 2px rgba(255,255,255,.4); }
.v2-fl-city .v2-fl-top { position: absolute; left: -6%; right: -6%; top: -3vmin; height: 3vmin; background: #4b5d70; border-radius: 3px; }
.v2-fl-night .v2-fl-bld { width: 30vmin; height: 60vmin; background: repeating-linear-gradient(0deg, transparent 0 10px, rgba(34,211,238,.35) 10px 12px), #0b0f24; border: 2px solid #22d3ee; box-shadow: 0 0 18px rgba(34,211,238,.6), inset 0 0 14px rgba(236,72,153,.35); }
.v2-fl-night .v2-fl-top { position: absolute; left: -8%; right: -8%; top: -2.6vmin; height: 2.6vmin; background: #ec4899; box-shadow: 0 0 14px #ec4899; border-radius: 3px; }
.v2-fl-pole { position: absolute; left: 50%; bottom: 100%; width: 1vmin; min-width: 3px; height: 32vmin; background: linear-gradient(90deg, #6b7280, #e5e7eb, #6b7280); transform: translateX(-50%); margin-bottom: 12vmin; border-radius: 2px; }
.v2-fl-city .v2-fl-pole, .v2-fl-night .v2-fl-pole { margin-bottom: 3vmin; }
.v2-fl-pole::before { content: ''; position: absolute; left: 50%; top: -1.6vmin; width: 2.4vmin; height: 2.4vmin; border-radius: 50%; background: #f5c542; transform: translateX(-50%); box-shadow: 0 0 8px rgba(245,197,66,.8); }
.v2-fl-cloth { position: absolute; left: 100%; top: 0; width: 5vmin; height: 20vmin; background: repeating-linear-gradient(180deg, #8b8f99 0 6px, #a9adb6 6px 12px); border-radius: 0 3px 3px 0; transform-origin: left center; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 900; font-size: 4.5vmin; box-shadow: 2px 3px 6px rgba(0,0,0,.35); transition: width .45s cubic-bezier(.2,1.6,.4,1), background .2s; overflow: hidden; }
.v2-fl-sengoku .v2-fl-cloth { height: 30vmin; } /* のぼり旗（縦長） */
.v2-fl-cloth.wob { animation: v2flwob .55s ease-in-out; }
@keyframes v2flwob { 0%,100% { transform: rotate(0); } 20% { transform: rotate(-9deg); } 45% { transform: rotate(8deg); } 70% { transform: rotate(-5deg); } }
.v2-fl-cloth.open { width: 38vmin; background: linear-gradient(135deg, var(--c2) 0%, var(--c1) 45%, var(--c3) 100%); box-shadow: 0 0 26px var(--c1), 2px 3px 8px rgba(0,0,0,.4); animation: v2flwave 1.1s ease-in-out infinite; }
.v2-fl-sengoku .v2-fl-cloth.open { width: 15vmin; }
.v2-fl-cloth.open span { opacity: 0; }
@keyframes v2flwave { 0%,100% { transform: skewY(0deg) scaleX(1); } 50% { transform: skewY(-4deg) scaleX(.96); } }
.v2-on[data-c="rainbow"] .v2-fl-cloth.open { background: linear-gradient(180deg, #ff4d4d, #ffb84d, #fff04d, #4dff88, #4dd2ff, #7a5cff, #ff5ce1); animation: v2flwave 1.1s ease-in-out infinite, v2hue 1.2s linear infinite; }
.v2-on[data-c="white"] .v2-fl-cloth.open { background: linear-gradient(135deg, #ffffff, #e5e7eb); }
/* 2つの軍勢 */
.v2-fl-army { position: absolute; bottom: 6%; width: 50%; height: 28vmin; z-index: 3; transition: transform 1.2s cubic-bezier(.2,.8,.2,1), opacity .6s; }
.v2-fl-army.l { left: 0; transform: translateX(-110%); }
.v2-fl-army.r { right: 0; transform: translateX(110%) scaleX(-1); }
.v2-fl-army.l.adv { transform: translateX(-4%); }
.v2-fl-army.r.adv { transform: translateX(4%) scaleX(-1); }
.v2-fl-army.l.back { transform: translateX(-30%); opacity: .55; }
.v2-fl-army.r.back { transform: translateX(30%) scaleX(-1); opacity: .55; }
.v2-fl-army.l.push { animation: v2flpushl .8s ease-out; }
.v2-fl-army.r.push { animation: v2flpushr .8s ease-out; }
@keyframes v2flpushl { 0% { transform: translateX(-4%); } 35% { transform: translateX(6%); } 100% { transform: translateX(-4%); } }
@keyframes v2flpushr { 0% { transform: translateX(4%) scaleX(-1); } 35% { transform: translateX(-6%) scaleX(-1); } 100% { transform: translateX(4%) scaleX(-1); } }
.v2-fl-u { position: absolute; left: calc(var(--i) * 12.5%); bottom: calc(var(--row) * 16%); width: 8vmin; height: 13vmin; }
.v2-fl-u::before { content: ''; position: absolute; left: 12%; right: 12%; bottom: 0; height: 62%; border-radius: 40% 40% 12% 12%; background: var(--uc); }
.v2-fl-u b { position: absolute; left: 50%; top: 0; width: 5vmin; height: 5vmin; border-radius: 50%; transform: translateX(-50%); background: var(--uh); }
.v2-fl-u::after { content: ''; position: absolute; right: -14%; bottom: 20%; width: .6vmin; min-width: 2px; height: 120%; background: #d1d5db; transform: rotate(18deg); transform-origin: bottom; }
.v2-fl-u.l { --uc: #1d4ed8; --uh: #fcd9b6; }
.v2-fl-u.r { --uc: #b91c1c; --uh: #fcd9b6; }
.v2-fl-sengoku .v2-fl-u b { border-radius: 50% 50% 20% 20%; background: radial-gradient(circle at 50% 70%, #fcd9b6 45%, #2b2b2b 46%); }
.v2-fl-sengoku .v2-fl-u.l::after { background: #1d4ed8; width: 2.4vmin; height: 70%; bottom: 60%; transform: none; border-left: 2px solid #ddd; }
.v2-fl-sengoku .v2-fl-u.r::after { background: #b91c1c; width: 2.4vmin; height: 70%; bottom: 60%; transform: none; border-left: 2px solid #ddd; }
.v2-fl-night .v2-fl-u { filter: drop-shadow(0 0 4px var(--uc)); }
.v2-fl-night .v2-fl-u.l { --uc: #22d3ee; --uh: #0b1026; }
.v2-fl-night .v2-fl-u.r { --uc: #ec4899; --uh: #0b1026; }
.v2-fl-night .v2-fl-u b { box-shadow: 0 0 0 2px var(--uc); }
/* 激突の火花 */
.v2-fl-clash { position: absolute; left: 50%; bottom: 20%; width: 36vmin; height: 36vmin; margin-left: -18vmin; border-radius: 50%; opacity: 0; z-index: 4; pointer-events: none;
  background: radial-gradient(circle, #fff 0 8%, var(--c2) 9% 22%, rgba(255,255,255,0) 40%), conic-gradient(from 0deg, transparent 0 8deg, rgba(255,255,255,.9) 8deg 12deg, transparent 12deg 40deg, rgba(255,240,180,.9) 40deg 44deg, transparent 44deg 80deg, rgba(255,255,255,.9) 80deg 84deg, transparent 84deg 130deg, rgba(255,240,180,.9) 130deg 134deg, transparent 134deg 190deg, rgba(255,255,255,.9) 190deg 194deg, transparent 194deg 250deg, rgba(255,240,180,.9) 250deg 254deg, transparent 254deg 310deg, rgba(255,255,255,.9) 310deg 314deg, transparent 314deg); }
.v2-fl-clash.go { animation: v2flclash .7s ease-out; }
@keyframes v2flclash { 0% { opacity: 0; transform: scale(.2) rotate(0); } 20% { opacity: 1; } 100% { opacity: 0; transform: scale(1.5) rotate(25deg); } }
/* 旗に伸びる手 */
.v2-fl-hand { position: absolute; left: 2.5vmin; top: 80vmin; width: 6vmin; height: 40vmin; z-index: 5; opacity: 0; border-radius: 3vmin 3vmin 0 0; background: linear-gradient(90deg, #c78f62, #e8b48a, #c78f62); }
.v2-fl-hand::before { content: ''; position: absolute; left: 50%; top: -4.4vmin; width: 9vmin; height: 7.5vmin; transform: translateX(-50%); border-radius: 45% 45% 40% 40%; background: #e8b48a; box-shadow: inset 0 -6px 0 rgba(0,0,0,.08); }
.v2-fl-night .v2-fl-hand, .v2-fl-night .v2-fl-hand::before { background: #1f2547; box-shadow: 0 0 10px #22d3ee; }
.v2-fl-hand.reach { animation: v2flreach 1.15s cubic-bezier(.2,.9,.3,1) forwards; }
@keyframes v2flreach { 0% { opacity: 0; transform: translateY(0); } 15% { opacity: 1; } 100% { opacity: 1; transform: translateY(-58vmin); } }
/* 文字 */
.v2-fl-msg { position: absolute; left: 0; right: 0; top: 13%; text-align: center; font-size: 6vmin; font-weight: 900; color: #fff; text-shadow: 0 2px 0 rgba(0,0,0,.4), 0 0 14px rgba(0,0,0,.4); z-index: 6; opacity: 0; letter-spacing: .05em; }
.v2-fl-msg.big { font-size: 10vmin; }
.v2-fl-msg.go { animation: v2flmsg 1.2s ease-out forwards; }
@keyframes v2flmsg { 0% { opacity: 0; transform: scale(.6); } 18% { opacity: 1; transform: scale(1.08); } 30% { transform: scale(1); } 80% { opacity: 1; } 100% { opacity: 0; } }
.v2-fl-sengoku .v2-fl-msg { font-family: "Hiragino Mincho ProN", "Yu Mincho", serif; color: #fff4d6; }
.v2-fl-night .v2-fl-msg { color: #e0faff; text-shadow: 0 0 12px #22d3ee, 0 0 24px #ec4899; }
.v2-fl-sengoku .v2-fl-hand.reach { animation-name: v2flreach2; } /* のぼり旗は縦に長いので、手は旗の下まで */
@keyframes v2flreach2 { 0% { opacity: 0; transform: translateY(0); } 15% { opacity: 1; } 100% { opacity: 1; transform: translateY(-46vmin); } }

/* 演出を見る賞の設定 */
.v2-fxpref { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; font-size: 12px; margin: 6px 2px 0; color: var(--text-sub); }
.v2-fxpref select { width: auto; padding: 4px 8px; font-size: 12px; }
.v2-fxpref small { flex-basis: 100%; font-size: 10px; }

/* 旗取りの隠し演出 */
.v2-fl.odd .v2-fl-sky { animation: v2flodd 2.6s steps(2) infinite; }
@keyframes v2flodd { 0%,100% { filter: none; } 50% { filter: hue-rotate(150deg) saturate(1.6); } }
.v2-fl.odd .v2-fl-cloth.open { animation-direction: reverse; }
.v2-fl.odd .v2-fl-msg.go { animation-name: v2flmsgodd; }
@keyframes v2flmsgodd { 0% { opacity: 0; transform: scaleX(-1) scale(.6); } 18% { opacity: 1; transform: scaleX(-1) scale(1.08); } 30% { transform: scaleX(-1); } 80% { opacity: 1; transform: scaleX(-1); } 100% { opacity: 0; transform: scaleX(-1); } }
.v2-fl.odd .v2-fl-u.l:nth-child(3) { --uc: #a3e635; }
.v2-fl-cloth.fall { transform: translateY(18vmin) rotate(6deg); filter: grayscale(1) brightness(.7); box-shadow: none; transition: transform 1s ease-in, filter .6s; animation: none; }
.v2-fl.dim::after { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,.82); z-index: 7; animation: v2fldim .6s ease-out; }
@keyframes v2fldim { from { opacity: 0; } to { opacity: 1; } }

/* 旗取り（canvas） */
.v2-flc { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

.v2-allwar { display: block; width: 100%; margin: 0 0 8px; padding: 6px 10px; border: 1px dashed #c0392b; background: #fff5f5; color: #c0392b; border-radius: 8px; font-size: 12px; cursor: pointer; }

.v2-wb-sub { font-weight: 800; font-size: 12px; margin-top: 6px; padding-top: 6px; border-top: 1px dashed var(--border); }

/* チーム戦の期間中の物件タブ */
.v2-wp-head .v2-wp-top { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 6px; font-size: 16px; margin-bottom: 8px; }
.v2-wp-head .v2-wp-top small { width: 100%; font-size: 11px; color: var(--text-sub); font-weight: 400; }
.v2-wp-head .est-head-row { margin: 6px 0 8px; }
.v2-wp-head .est-head-row > div { background: var(--bg, #f3f4f7); color: var(--text-main); }
.v2-wp-head .est-head-row span { color: var(--text-sub); }
.v2-wp-alert { background: #fde8e8; color: #b42318; border-radius: 8px; padding: 8px 10px; font-size: 12px; font-weight: 700; margin-bottom: 6px; }
.v2-wp-btns { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.v2-wp-back { width: 100%; margin-bottom: 10px; }
.v2-wp { display: flex; gap: 12px; background: var(--panel, #fff); border: 1px solid var(--border); border-radius: 12px; padding: 10px; margin-bottom: 10px; }
.v2-wp.lost { border-color: #f04438; box-shadow: 0 0 0 1px #f04438 inset; }
.v2-wp-card { width: 120px; flex: none; }
.v2-wp-card .est-card { width: 100%; }
.v2-wp-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; font-size: 12px; }
.v2-wp-name { font-weight: 800; font-size: 15px; line-height: 1.3; }
.v2-wp-name small { display: block; font-weight: 400; font-size: 11px; color: var(--text-sub); }
.v2-wp-state { font-size: 12px; }
.v2-wp-state b { font-size: 15px; margin: 0 2px; }
.v2-wp-st { display: inline-block; font-weight: 800; font-size: 11px; padding: 1px 8px; border-radius: 99px; margin-right: 6px; color: #fff; }
.v2-wp-st.ok { background: #12b76a; } .v2-wp-st.warn { background: #f79009; } .v2-wp-st.bad { background: #f04438; }
.v2-wp-kv { display: flex; justify-content: space-between; gap: 8px; align-items: baseline; }
.v2-wp-kv > span { color: var(--text-sub); flex: none; }
.v2-wp-kv small { color: var(--text-sub); font-weight: 400; }
.v2-wp-foes { text-align: right; font-weight: 600; }
.v2-wp-cap { height: 6px; background: var(--border); border-radius: 99px; overflow: hidden; }
.v2-wp-cap i { display: block; height: 100%; background: linear-gradient(90deg, #12b76a, #0e9384); }
.v2-wp .v2-war-pts { display: flex; height: 8px; border-radius: 99px; overflow: hidden; }
.v2-wp-note { font-size: 11px; color: var(--text-sub); }
@media (max-width: 480px) { .v2-wp-card { width: 96px; } }
.v2-wp-card .est-card-price, .v2-wp-card .est-card-inc { display: none; }
.v2-wp-grid { display: grid; grid-template-columns: 1fr; gap: 0 12px; }
@media (min-width: 900px) { .v2-wp-grid { grid-template-columns: 1fr 1fr; } .v2-wp-card { width: 100px; } }
.v2-rules-war { background: #fff7e6; border: 1px solid #f5c26b; border-radius: 10px; padding: 10px 12px; margin-bottom: 10px; }

/* チームの作戦 */
.v2-plan-top { font-size: 14px; padding: 8px 10px; background: #fff7e6; border: 1px solid #f5c26b; border-radius: 10px; margin-bottom: 8px; }
.v2-plan-top small { color: var(--text-sub); }
.v2-plan-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 4px; }
.v2-plan-chip { display: inline-flex; align-items: center; gap: 4px; padding: 6px 10px; border-radius: 99px; border: 1px solid var(--border); background: var(--panel, #fff); font-size: 13px; cursor: pointer; color: var(--text-main); }
.v2-plan-chip b { margin-left: 4px; font-size: 12px; background: var(--border); border-radius: 99px; padding: 0 7px; }
.v2-plan-chip.on { border-color: var(--gold, #e08e0b); box-shadow: 0 0 0 2px rgba(224,142,11,.25); font-weight: 800; }
.v2-plan-chip.on b { background: var(--gold, #e08e0b); color: #fff; }
.v2-plan-live { position: relative; overflow: hidden; display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 10px; margin-bottom: 6px; font-size: 13px; }
.v2-plan-live > span, .v2-plan-live > small { position: relative; z-index: 1; }
.v2-plan-live small { color: var(--text-sub); text-align: right; }
.v2-plan-live .v2-plan-bar { position: absolute; left: 0; top: 0; bottom: 0; background: rgba(239,68,68,.10); }
.v2-plan-live.on { border-color: #ef4444; }
.v2-plan-live.on small { color: #d92d20; font-weight: 800; }
.v2-plan-others { display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 12px; margin-top: 6px; }
.v2-plan-others small { width: 100%; color: var(--text-sub); }

/* Discord */
.v2-dc { margin-bottom: 10px; }
.v2-dc-btns { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.v2-dc-btns .btn { flex: 1 1 200px; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; gap: 4px; }
.v2-dc-code { font-size: 13px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.v2-dc-code b { font-family: ui-monospace, Menlo, monospace; font-size: 18px; letter-spacing: 2px; background: var(--bg, #f3f4f7); padding: 2px 10px; border-radius: 8px; }
.v2-dc-check { margin-top: 6px; font-size: 12px; }
.v2-dc-check summary { cursor: pointer; color: var(--text-sub); }
.v2-dc-check input { flex: 1; text-transform: uppercase; }

/* 予約 */
.v2-wb-sched { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 8px; font-size: 12px; }
.v2-wb-sched label { display: flex; align-items: center; gap: 6px; flex: 1 1 220px; }
.v2-wb-sched input { flex: 1; }
.v2-sched-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px dashed var(--border); font-size: 12px; }
.v2-sched-row .btn { width: auto; flex: none; }
.v2-war-top { background: #fff7e6; border-color: #f5c26b; color: #8a5300; }
.v2-wp-tip { font-size: 11px; font-weight: 700; color: #0e7490; background: #ecfeff; border-radius: 6px; padding: 4px 8px; }
.v2-role-bonus { text-align: center; font-weight: 800; font-size: 15px; color: #8a5300; background: linear-gradient(90deg, #fff7e6, #ffe9b8, #fff7e6); border: 1px solid #f5c26b; border-radius: 10px; padding: 6px 10px; margin: 6px 0 8px; }
.v2-role-bonus b { font-size: 18px; color: #d97706; }
.v2-role-stat { font-size: 13px; margin: 6px 0 2px; padding: 6px 10px; background: #fff7e6; border-radius: 8px; }
.v2-role-stat b { color: #d97706; font-size: 15px; }
.v2-war-shelter { background: #ecfeff; border-color: #67e8f9; color: #0e7490; }
