/* V15 foundation patch */
#infoButton.v15Pulse{animation:v15Pulse 1.3s infinite;box-shadow:0 0 0 0 rgba(255,225,120,.9),0 0 22px rgba(255,225,120,.9)}
@keyframes v15Pulse{0%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,225,120,.85)}70%{transform:scale(1.08);box-shadow:0 0 0 16px rgba(255,225,120,0)}100%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,225,120,0)}}
.v15GuideTabs{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin:12px 0 18px}.v15GuideTabs button{font-size:14px;padding:9px 12px;border-radius:14px}.v15GuideBody{max-height:62vh;overflow:auto;text-align:left;line-height:1.45}.v15GuideBody h3{color:#ffe28e;margin:16px 0 6px}.v15GuideBody p,.v15GuideBody li{color:#f8e9c4}.v15StarterLoot{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;max-height:50vh;overflow:auto}.v15StarterLoot .loot{min-height:150px}.raritySubtabs{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:12px}.raritySubtabs button{padding:8px 11px;border-radius:12px;font-size:13px}.raritySubtabs button.active{background:linear-gradient(#fff0a7,#d46e27);color:#2a130a}.collectionStats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:12px 0}.collectionStat{border:1px solid #d6a75a77;border-radius:14px;background:#0b0710a6;padding:10px;text-align:center;color:#ffe7a7}.collectionStat b{display:block}.localCoopBadge{display:inline-block;padding:5px 8px;border-radius:999px;background:#214d7a;color:#bfeaff;font-weight:900}.serverStatus{padding:10px 12px;border-radius:14px;margin:10px 0;background:#24172a;border:1px solid #d6a75a55;color:#ffe6a8}.serverStatus.good{background:#123822}.serverStatus.bad{background:#4a1717}.lockedItem .collectionCardText b{letter-spacing:3px}.v15SubMenuTitle{text-align:center;color:#ffe6a3;margin:10px 0}.v15BattleChoice{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;max-width:960px;margin:0 auto}.v15BattleChoice button{min-height:138px;text-align:left}.v15BattleChoice b{display:block;font-size:22px;margin-bottom:6px}.v15SetupNote{background:#1a1016;border:1px solid #d6a75a66;border-radius:14px;padding:10px 12px;color:#ffe6b0;margin:10px 0}.Uncommon{border-color:#53d36a!important}.collectionCard.Uncommon,.invItem.Uncommon,.setupCard.Uncommon,.slot.Uncommon,.loot.Uncommon{box-shadow:0 0 18px rgba(83,211,106,.38), inset 0 0 18px rgba(83,211,106,.15)}.viewerRarity.Uncommon{color:#76f28c}.tag.Uncommon{color:#76f28c}

/* V15.1 collection scaling patch */
.collectionCountBar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:10px 0;padding:8px 12px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(0,0,0,.22);color:#ffe8a8;}
.lockedSilhouette{width:56px;height:56px;border-radius:14px;display:grid;place-items:center;font-weight:900;font-size:28px;color:rgba(255,255,255,.35);background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.18),rgba(0,0,0,.72));filter:grayscale(1);box-shadow:inset 0 0 18px rgba(0,0,0,.65);}
.loadMoreBtn{display:block;margin:18px auto 4px auto;min-width:220px;}

/* V15.2 rarity-border and preview hotfix */
.collectionCard,.invItem,.loot,.setupCard,.slot,.packCard{border:3px solid #aaa;}
.Common,.common,.collectionCard.Common,.collectionCard.common,.invItem.Common,.loot.Common,.setupCard.Common,.slot.Common{border-color:#bfc3c7!important;box-shadow:0 0 10px rgba(210,220,230,.25), inset 0 0 12px rgba(255,255,255,.08)!important;}
.Uncommon,.uncommon,.collectionCard.Uncommon,.collectionCard.uncommon,.invItem.Uncommon,.loot.Uncommon,.setupCard.Uncommon,.slot.Uncommon{border-color:#46d66f!important;box-shadow:0 0 14px rgba(70,214,111,.45), inset 0 0 14px rgba(70,214,111,.14)!important;}
.Rare,.rare,.collectionCard.Rare,.collectionCard.rare,.invItem.Rare,.loot.Rare,.setupCard.Rare,.slot.Rare{border-color:#2aa8ff!important;box-shadow:0 0 18px rgba(42,168,255,.62), inset 0 0 16px rgba(42,168,255,.16)!important;}
.Epic,.epic,.collectionCard.Epic,.collectionCard.epic,.invItem.Epic,.loot.Epic,.setupCard.Epic,.slot.Epic{border-color:#b75cff!important;box-shadow:0 0 22px rgba(183,92,255,.68), inset 0 0 18px rgba(183,92,255,.18)!important;}
.Legendary,.legendary,.collectionCard.Legendary,.collectionCard.legendary,.invItem.Legendary,.loot.Legendary,.setupCard.Legendary,.slot.Legendary{border-color:#ff9f1c!important;box-shadow:0 0 26px rgba(255,159,28,.82), inset 0 0 20px rgba(255,159,28,.2)!important;}
.viewerImage.Common,.viewerImage.common{border-color:#bfc3c7!important;}
.viewerImage.Uncommon,.viewerImage.uncommon{border-color:#46d66f!important;}
.viewerImage.Rare,.viewerImage.rare{border-color:#2aa8ff!important;}
.viewerImage.Epic,.viewerImage.epic{border-color:#b75cff!important;}
.viewerImage.Legendary,.viewerImage.legendary{border-color:#ff9f1c!important;}
.viewerRarity.Rare,.tag.Rare{color:#64c5ff!important}.viewerRarity.Epic,.tag.Epic{color:#d89aff!important}.viewerRarity.Legendary,.tag.Legendary{color:#ffbd4a!important}.viewerRarity.Uncommon,.tag.Uncommon{color:#7cff9b!important}
.collectionCard{position:relative;display:flex;align-items:center;gap:10px;background:#0c0b18;border-radius:18px;padding:10px;min-height:92px;overflow:visible;}
.collectionVisual{width:64px;height:64px;border-radius:14px;background:#160f20;display:grid;place-items:center;overflow:hidden;flex:0 0 auto;}
.collectionVisual .assetImg,.collectionVisual img{width:100%;height:100%;object-fit:contain!important;image-rendering:pixelated;}
.collectionVisual.boardThumb,.boardThumb{width:76px;height:52px;}
.collectionVisual.boardThumb .assetImg,.boardThumb .assetImg{object-fit:cover!important;}
.undiscoveredItem{filter:none!important;opacity:1!important;}
.undiscoveredItem .collectionCardText small{color:#ffdc9a;}
.collectionViewBtn{margin-left:auto;min-width:38px;padding:8px 9px;border-radius:12px;}
.modal:not(.hidden){display:flex!important;}
.modalClose{z-index:9999!important;pointer-events:auto!important;}
.viewerImage{position:relative;}
.viewerImage .assetImg,.viewerImage img{object-fit:contain!important;max-width:100%!important;max-height:100%!important;width:100%!important;height:100%!important;}

/* V15.3 hotfix styles */
.lockedSilhouette{width:100%;height:100%;display:grid;place-items:center;border-radius:16px;background:radial-gradient(circle at 50% 30%,#ffffff22,transparent 36%),linear-gradient(145deg,#111,#050507);filter:none;position:relative;overflow:hidden;}
.lockedSilhouette:before{content:"";position:absolute;inset:18% 25% 12%;border-radius:45% 45% 30% 30%;background:#000;box-shadow:0 0 0 3px #ffffff18,0 0 28px #000;opacity:.72;}
.lockedSilhouette span{position:relative;z-index:2;font-size:34px;font-weight:1000;color:#ffffff66;text-shadow:0 0 12px #000;}
.lockedSilhouette.Common{outline:3px solid #bfc3c7}.lockedSilhouette.Uncommon{outline:3px solid #46d66f}.lockedSilhouette.Rare{outline:3px solid #2aa8ff}.lockedSilhouette.Epic{outline:3px solid #b75cff}.lockedSilhouette.Legendary{outline:3px solid #ff9f1c}
.collectionCard.lockedItem .collectionVisual .assetImg{display:none!important;}
.piece.white .name{background:#f8f8f2!important;color:#111!important;border:2px solid #111!important;text-shadow:none!important;box-shadow:0 2px 8px #0008;}
.piece.black .name{background:#09090d!important;color:#fff!important;border:2px solid #fff!important;text-shadow:0 1px 1px #000!important;box-shadow:0 2px 8px #0008;}
.viewerImage{display:grid!important;place-items:center!important;}
.viewerImage .assetImg{width:100%!important;height:100%!important;object-fit:contain!important;}
.viewerImage .emptyAsset{font-size:54px;color:#ffe6a0;}

/* V15.4 playability styles */
.Common{--rarity:#bfc7bf}.Uncommon{--rarity:#48c774}.Rare{--rarity:#2f9bff}.Epic{--rarity:#a855f7}.Legendary{--rarity:#ff9f1a}
.collectionCard.Common,.slot.Common,.setupCard.Common,.boardCard.Common,.loot.Common,.opponentCard.Common{border-color:#bfc7bf!important;box-shadow:0 0 0 1px #bfc7bf55, inset 0 0 18px #bfc7bf22}
.collectionCard.Uncommon,.slot.Uncommon,.setupCard.Uncommon,.boardCard.Uncommon,.loot.Uncommon,.opponentCard.Uncommon{border-color:#48c774!important;box-shadow:0 0 0 1px #48c77466,0 0 16px #48c77433,inset 0 0 20px #48c77422}
.collectionCard.Rare,.slot.Rare,.setupCard.Rare,.boardCard.Rare,.loot.Rare,.opponentCard.Rare{border-color:#2f9bff!important;box-shadow:0 0 0 1px #2f9bff88,0 0 18px #2f9bff44,inset 0 0 22px #2f9bff22}
.collectionCard.Epic,.slot.Epic,.setupCard.Epic,.boardCard.Epic,.loot.Epic,.opponentCard.Epic{border-color:#a855f7!important;box-shadow:0 0 0 1px #a855f788,0 0 20px #a855f766,inset 0 0 24px #a855f722}
.collectionCard.Legendary,.slot.Legendary,.setupCard.Legendary,.boardCard.Legendary,.loot.Legendary,.opponentCard.Legendary{border-color:#ff9f1a!important;box-shadow:0 0 0 1px #ff9f1a99,0 0 24px #ff9f1a66,inset 0 0 28px #ff9f1a2b}
.piece.white .name{background:#ffffffee!important;color:#111!important;border:1px solid #111!important;text-shadow:none!important}
.piece.black .name{background:#111111ee!important;color:#fff!important;border:1px solid #fff!important;text-shadow:none!important}
.starterPack{background:linear-gradient(145deg,#ffe7a3,#ffba40 45%,#7d3e10)!important;color:#241205!important}
.claimedPack{filter:saturate(.6);opacity:.75}.lootTitle{grid-column:1/-1;text-align:center;margin:8px 0 2px}.dangerBtn{background:#5a1b1b!important;color:#fff!important;border-color:#ff7979!important;margin-top:12px}.devToolsPanel{margin-top:16px}.devGoldTools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}.devGoldTools input{width:130px;padding:10px;border-radius:10px;border:1px solid #9b7845;background:#1d160d;color:#ffe9b8}.opponentCard{display:flex;flex-direction:column;gap:8px;border:2px solid var(--rarity,#999);border-radius:18px;padding:14px;background:linear-gradient(180deg,#2b2117,#15110d);min-height:150px}.opponentGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;max-height:70vh;overflow:auto;padding:6px}.bossThumb{width:76px;height:76px;border-radius:14px;overflow:hidden;background:#0007;margin-bottom:8px;display:flex;align-items:center;justify-content:center}.bossThumb img{width:100%;height:100%;object-fit:contain}.lockedItem .collectionVisual{filter:none}.ownedInLocked .collectionVisual{filter:none}.lockedSilhouette{width:100%;height:100%;min-height:74px;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle,#333,#050505);border-radius:12px;color:#000;border:2px solid var(--rarity,#777)}.lockedSilhouette span{font-size:34px;color:#050505;text-shadow:0 0 10px #ffffff44}.collectionVisual img,.thumb img,.boardThumb img{object-fit:contain!important}.collectionCardText small{line-height:1.25}.chapterCard{position:relative}.chapterCard button[disabled]{opacity:.45;cursor:not-allowed}

/* V15.5 layout, filters, bigger thumbnails, portraits, hover actions */
body.inBattle .topbar{display:none!important;}
body.inBattle #battle.battlePage.activePage{display:grid!important;grid-template-columns:minmax(220px,280px) minmax(520px,1fr) minmax(220px,300px);gap:14px;align-items:start;width:100vw;min-height:100vh;padding:14px;box-sizing:border-box;overflow:hidden;}
body.inBattle .boardWrap{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:8px;}
body.inBattle #board{width:min(74vh,calc(100vw - 640px));height:min(74vh,calc(100vw - 640px));min-width:480px;min-height:480px;max-width:820px;max-height:820px;}
body.inBattle .battleSide{max-height:calc(100vh - 28px);overflow:auto;position:relative;z-index:2;}
body.inBattle #log{max-height:calc(100vh - 150px);overflow:auto;font-size:13px;line-height:1.35;}
body.inBattle .captureTrayWrap{width:min(820px,100%);display:grid;grid-template-columns:1fr 1fr;gap:8px;}
body.inBattle #newGame,body.inBattle #cycleBoard{display:none!important;}
@media(max-width:1050px){body.inBattle #battle.battlePage.activePage{grid-template-columns:1fr;overflow:auto}body.inBattle #board{width:min(92vw,72vh);height:min(92vw,72vh);min-width:300px;min-height:300px}body.inBattle .battleSide{max-height:none}}
.v155Controls{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:center;margin:12px 0;padding:10px;border:1px solid #d6a75a55;border-radius:16px;background:#120c16aa}.v155Controls button,.collectionStat{cursor:pointer}.thumbToggle{display:flex;gap:8px;align-items:center;color:#ffe6b5}.thumbToggle button.active,.raritySubtabs button.active{background:linear-gradient(#fff0a7,#d46e27)!important;color:#2a130a!important;border-color:#ffe28d!important}.collectionStat{font-family:inherit;color:#ffe7a7}.largeCollectionGrid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.collectionCard{min-height:112px}.collectionVisual{width:82px!important;height:82px!important}.collectionVisual.boardThumb{width:104px!important;height:72px!important}.setupInventory{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))!important}.setupCard .thumb,.slot .thumb{width:82px!important;height:82px!important}.setupCard{min-height:176px}.slot{min-height:156px}.slot span,.setupCard span{font-size:12px}body[data-thumb-size="medium"] .largeCollectionGrid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}body[data-thumb-size="medium"] .collectionCard{min-height:148px}body[data-thumb-size="medium"] .collectionVisual{width:122px!important;height:122px!important}body[data-thumb-size="medium"] .collectionVisual.boardThumb{width:150px!important;height:105px!important}body[data-thumb-size="medium"] .setupInventory{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))!important}body[data-thumb-size="medium"] .setupCard .thumb,body[data-thumb-size="medium"] .slot .thumb{width:118px!important;height:118px!important}body[data-thumb-size="medium"] .setupCard{min-height:230px}.viewerImage{width:min(70vw,720px)!important;height:min(70vh,720px)!important}.viewerImage.boardPreview{width:min(82vw,900px)!important;height:min(62vh,620px)!important}.viewerImage img,.detailPreview img{object-fit:contain!important;width:100%!important;height:100%!important;image-rendering:auto}.detailsCard{max-width:680px}.detailPreview{height:260px;border:3px solid var(--rarity,#aaa);border-radius:18px;background:#07070b;display:grid;place-items:center;margin:12px auto;overflow:hidden}.detailPreview img{max-width:100%;max-height:100%}.detailsList{display:grid;grid-template-columns:120px 1fr;gap:8px;text-align:left}.detailsList dt{font-weight:900;color:#ffe7a7}.detailsList dd{margin:0;color:#fff}.hoverActionMenu{position:fixed;z-index:100000;display:flex;gap:6px;padding:6px;border-radius:12px;background:#130b10;border:1px solid #f0c76b;box-shadow:0 10px 30px #000b}.hoverActionMenu button{font-size:12px;padding:7px 9px;border-radius:9px}.opponentCard{display:grid!important;grid-template-columns:84px 1fr;align-items:center;gap:12px;min-height:132px}.opponentPortrait{width:84px;height:84px;border:3px solid var(--rarity,#999);border-radius:18px;background:#09070b;overflow:hidden;display:grid;place-items:center;box-shadow:inset 0 0 18px #000}.opponentPortrait img{width:100%;height:100%;object-fit:cover!important;object-position:50% 18%;transform:scale(1.8);transform-origin:50% 18%;image-rendering:auto}.opponentInfo{display:flex;flex-direction:column;gap:7px}.chapterCard .opponentPortrait{margin:0 auto 10px}.missionTick{position:absolute;top:8px;right:8px;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#2bd36b;color:#06120b;font-weight:1000;font-size:22px;border:2px solid #d8ffdf;box-shadow:0 0 14px #2bd36b}.completedMission{outline:2px solid #2bd36b88}.piece{cursor:pointer}.capThumb{cursor:pointer}.lockedItem .collectionVisual img{display:none!important}.lockedItem .collectionCardText b{letter-spacing:3px}.ownedInLocked .collectionVisual img{display:block!important}.Common{--rarity:#bfc7bf}.Uncommon{--rarity:#48c774}.Rare{--rarity:#2f9bff}.Epic{--rarity:#a855f7}.Legendary{--rarity:#ff9f1a}

/* V15.6 preview sizing, battle exit, and warband card fit hotfix */
#viewerModal:not(.hidden), #detailsModal:not(.hidden){align-items:center!important;justify-content:center!important;padding:14px!important;box-sizing:border-box!important;overflow:hidden!important;}
#viewerModal .modalCard{width:min(94vw,760px)!important;max-width:94vw!important;height:min(94vh,840px)!important;max-height:94vh!important;display:grid!important;grid-template-rows:auto 1fr auto!important;overflow:hidden!important;padding:16px!important;box-sizing:border-box!important;}
#viewerModal #viewerTitle{margin:0 52px 8px 0!important;white-space:normal!important;line-height:1.08!important;}
#viewerModal #viewerImage.viewerImage{width:100%!important;height:100%!important;min-height:0!important;max-height:calc(94vh - 150px)!important;overflow:hidden!important;display:grid!important;place-items:center!important;border-width:4px!important;box-sizing:border-box!important;background:#070711!important;}
#viewerModal #viewerImage.viewerImage.boardPreview{width:100%!important;height:100%!important;max-height:calc(94vh - 150px)!important;}
#viewerModal #viewerImage.viewerImage img,#viewerModal #viewerImage.viewerImage .assetImg{width:100%!important;height:100%!important;max-width:100%!important;max-height:100%!important;object-fit:contain!important;display:block!important;image-rendering:auto!important;}
#viewerModal #viewerRarity{margin:8px 0 0!important;}
#viewerModal .modalClose,#detailsModal .modalClose{position:absolute!important;top:14px!important;right:16px!important;width:44px!important;height:44px!important;display:grid!important;place-items:center!important;}
.v156BattleExit{position:fixed!important;left:18px!important;top:18px!important;z-index:99998!important;padding:10px 14px!important;border-radius:14px!important;background:linear-gradient(#ffcf7a,#9b3a1e)!important;color:#210b06!important;font-weight:1000!important;border:2px solid #ffe3a1!important;box-shadow:0 8px 24px #0009!important;}
body:not(.inBattle) .v156BattleExit{display:none!important;}
.setupCard,.slot{box-sizing:border-box!important;overflow:hidden!important;padding:12px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;gap:7px!important;}
.setupCard .thumb,.slot .thumb{box-sizing:border-box!important;border:3px solid var(--rarity,#bfc7bf)!important;border-radius:16px!important;background:#09070b!important;display:grid!important;place-items:center!important;overflow:hidden!important;flex:0 0 auto!important;padding:3px!important;}
.setupCard .thumb img,.setupCard .thumb .assetImg,.slot .thumb img,.slot .thumb .assetImg{width:100%!important;height:100%!important;object-fit:contain!important;display:block!important;image-rendering:auto!important;}
.setupCard .setupPick{width:100%!important;display:flex!important;flex-direction:column!important;align-items:center!important;gap:7px!important;overflow:hidden!important;}
.setupCard b,.slot b,.setupCard span,.slot span{max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;}
body[data-thumb-size="medium"] .setupInventory{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))!important;}
body[data-thumb-size="medium"] .setupCard{min-height:275px!important;}
body[data-thumb-size="medium"] .slot{min-height:218px!important;}
body[data-thumb-size="medium"] .setupCard .thumb,body[data-thumb-size="medium"] .slot .thumb{width:138px!important;height:138px!important;}
@media(max-height:760px){#viewerModal .modalCard{height:96vh!important}#viewerModal #viewerImage.viewerImage{max-height:calc(96vh - 136px)!important}}

/* V15.7 collection rarity filters */
#v155CollectionControls .raritySubtabs,
#v155RarityButtons{display:none!important}
#v155CollectionControls{justify-content:center!important}
.collectionStats{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px!important;margin:12px 0!important}
.collectionStat{border:2px solid var(--rarity,#d6a75a)!important;background:linear-gradient(180deg,var(--rarity,#d6a75a),rgba(12,8,14,.96))!important;color:#fff8d6!important;border-radius:16px!important;padding:12px 14px!important;text-align:center!important;box-shadow:0 0 18px color-mix(in srgb,var(--rarity,#d6a75a) 48%,transparent), inset 0 0 18px rgba(255,255,255,.08)!important;cursor:pointer!important;transition:transform .12s ease,filter .12s ease,box-shadow .12s ease!important;text-shadow:0 2px 3px #000!important}
.collectionStat:hover{transform:translateY(-2px) scale(1.02)!important;filter:brightness(1.18)!important}
.collectionStat.active{outline:3px solid #fff3a5!important;box-shadow:0 0 26px var(--rarity,#ffd36a),0 0 8px #fff8,inset 0 0 22px rgba(255,255,255,.15)!important;filter:brightness(1.22)!important}
.collectionStat b{display:block!important;font-size:15px!important;color:#fffbe7!important;text-transform:uppercase!important;letter-spacing:.5px!important}
.collectionStat.Common{--rarity:#8f9a94}.collectionStat.Uncommon{--rarity:#1f9f4d}.collectionStat.Rare{--rarity:#147ee8}.collectionStat.Epic{--rarity:#7b2ee8}.collectionStat.Legendary{--rarity:#e89012}

/* V15.8 hotfix */
/* Starting formation cards already have rarity borders, so remove the duplicate inner image border. */
#loadout .slot .thumb,
.startingFormation .slot .thumb,
.formationGrid .slot .thumb{
  border:none!important;
  box-shadow:none!important;
  background:transparent!important;
  padding:0!important;
}
#loadout .slot .thumb img,
.startingFormation .slot .thumb img,
.formationGrid .slot .thumb img{
  border:none!important;
  box-shadow:none!important;
}
/* Keep the opponent farm grid tidy with no repeated hover menu artifacts. */
#hoverActionMenu{pointer-events:auto;}
.opponentCard .opponentInfo b{line-height:1.15;}

/* V15.9 pack reveal animation */
.packRevealOverlay{position:fixed;inset:0;z-index:20000;background:radial-gradient(circle at 50% 35%,rgba(80,43,15,.92),rgba(9,4,8,.97) 62%,#000 100%);display:flex;align-items:center;justify-content:center;padding:22px;box-sizing:border-box;}
.packRevealPanel{width:min(1180px,96vw);height:min(900px,94vh);background:linear-gradient(180deg,#211020,#100711);border:2px solid #d6a75a;border-radius:24px;box-shadow:0 0 50px rgba(255,170,44,.28),inset 0 0 28px rgba(255,170,44,.08);position:relative;display:grid;grid-template-rows:auto 1fr auto;gap:10px;padding:18px;box-sizing:border-box;overflow:hidden;}
.packRevealClose{position:absolute;right:16px;top:14px;z-index:3}.packRevealHeader{text-align:center}.packRevealHeader h2{margin:2px 0 4px;color:#ffe18a;font-size:34px;text-shadow:0 3px #431d06}.packRevealHeader p{margin:0;color:#f7d8a4}.packRevealStage{position:relative;min-height:0;display:grid;grid-template-columns:150px 1fr;gap:16px;align-items:center}.packStack{height:220px;position:relative;display:flex;align-items:center;justify-content:center}.packStack div{position:absolute;width:112px;height:160px;border-radius:16px;background:linear-gradient(145deg,#4d2a74,#140821);border:2px solid #ffd36c;box-shadow:0 12px 25px #0008}.packStack div:nth-child(1){transform:rotate(-10deg) translate(-12px,8px)}.packStack div:nth-child(2){transform:rotate(5deg)}.packStack div:nth-child(3){transform:rotate(14deg) translate(12px,10px)}.packRevealGrid{min-height:0;max-height:100%;overflow:auto;padding:12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(135px,1fr));gap:14px;align-content:start}.revealCard{height:210px;border:0;background:transparent;position:relative;perspective:900px;cursor:pointer}.revealCard>div{position:absolute;inset:0;border-radius:18px;backface-visibility:hidden;transition:transform .55s cubic-bezier(.2,.8,.2,1), box-shadow .25s;border:3px solid #c99b4b;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px;box-sizing:border-box;overflow:hidden}.cardBack{background:radial-gradient(circle,#6c43c9,#21113e 60%,#08040e);box-shadow:0 0 18px #6c43c966,inset 0 0 20px #fff1}.cardBack b{font-size:56px;color:#ffe391;text-shadow:0 0 16px #fff}.cardBack span{text-transform:uppercase;letter-spacing:1.5px;color:#fff0b6;font-size:11px}.cardFront{background:linear-gradient(180deg,#0c0a15,#08050b);transform:rotateY(180deg);box-shadow:0 0 20px #000}.revealCard.revealed .cardBack{transform:rotateY(180deg)}.revealCard.revealed .cardFront{transform:rotateY(360deg)}.revealImg{height:112px;width:112px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.revealImg img{max-width:100%;max-height:100%;object-fit:contain;image-rendering:auto}.cardFront b{font-size:13px;color:#fff2b8;line-height:1.1}.cardFront span{font-size:12px;color:#7ff7ff;font-weight:900;margin-top:5px}.revealCard.revealed.Epic .cardFront{animation:epicCardGlow 1.1s ease both}.revealCard.revealed.Legendary .cardFront{animation:legendCardGlow 1.25s ease both}.packRevealControls{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;padding-top:4px}.packRevealCount{color:#ffe4a7;font-weight:900;margin-left:10px}.rarityBurst{position:fixed;left:50%;top:42%;transform:translate(-50%,-50%);z-index:22000;font-size:64px;font-weight:1000;letter-spacing:4px;pointer-events:none;text-shadow:0 0 20px #000,0 0 35px currentColor;animation:rarityBurst 1.45s ease forwards}.rarityBurst.Epic{color:#d98cff}.rarityBurst.Legendary{color:#ffbd38}.packRevealOverlay.epicPulse{animation:epicPulse .9s ease}.packRevealOverlay.legendaryPulse{animation:legendaryPulse 1.05s ease}
@keyframes rarityBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.45)}20%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-80%) scale(1.25)}}
@keyframes epicPulse{0%,100%{box-shadow:inset 0 0 0 transparent}35%{box-shadow:inset 0 0 140px rgba(180,80,255,.45)}}
@keyframes legendaryPulse{0%,100%{box-shadow:inset 0 0 0 transparent}25%{box-shadow:inset 0 0 180px rgba(255,170,30,.62);filter:brightness(1.18)}55%{transform:translateX(0)}58%{transform:translateX(-4px)}62%{transform:translateX(4px)}66%{transform:translateX(0)}}
@keyframes epicCardGlow{0%{box-shadow:0 0 0 #a855f7}100%{box-shadow:0 0 34px #a855f7aa,inset 0 0 26px #a855f744}}
@keyframes legendCardGlow{0%{box-shadow:0 0 0 #ff9f1a}100%{box-shadow:0 0 48px #ffb42ccc,inset 0 0 32px #ffb42c55}}
@media(max-width:760px){.packRevealStage{grid-template-columns:1fr}.packStack{display:none}.packRevealGrid{grid-template-columns:repeat(auto-fill,minmax(115px,1fr))}.revealCard{height:185px}.packRevealHeader h2{font-size:26px}}

/* V16.0: local co-op, opponent tags, pack reveal sparks/lightning, cleaner odds feedback */
.opponentCard,.chapterCard{position:relative!important;overflow:visible!important;}
.opponentBubble{position:absolute;left:12px;top:-13px;z-index:5;padding:4px 10px;border-radius:999px;background:linear-gradient(180deg,#ffe8a8,#b66a19);border:2px solid #fff0b7;color:#2b1105;font-weight:1000;font-size:11px;letter-spacing:.35px;text-transform:uppercase;box-shadow:0 4px 12px #0008,0 0 12px #f6b44566;text-shadow:none;pointer-events:none;}
.turnBanner.localCoop:after{content:' · Human vs Human';color:#ffdf8a;font-weight:900;}
.v16RevealOverlay .cardFront{position:relative;overflow:hidden!important;}
.revealFx{position:absolute;inset:0;pointer-events:none;overflow:hidden;opacity:.35;}
.revealFx i{position:absolute;left:var(--x);top:var(--y);width:5px;height:5px;border-radius:50%;background:#fff7c6;box-shadow:0 0 8px currentColor,0 0 16px currentColor;transform:scale(var(--s));animation:v16Spark 1.35s ease-in-out infinite;animation-delay:var(--d);}
.revealFx.Rare i{color:#61c7ff;background:#9de2ff}.revealFx.Epic i{color:#c577ff;background:#e4c0ff}.revealFx.Legendary i{color:#ffd15a;background:#fff0a5}
.revealCard:not(.revealed) .revealFx{display:none}.revealCard.revealed .revealFx{opacity:.72;}
.lightning{position:absolute;width:4px;height:80px;background:linear-gradient(#fff,#9ce8ff 45%,transparent);filter:drop-shadow(0 0 8px #fff) drop-shadow(0 0 16px currentColor);opacity:0;clip-path:polygon(45% 0,70% 0,54% 38%,82% 38%,32% 100%,45% 55%,18% 55%);animation:v16Lightning 1s ease-out .12s forwards;}
.lightning.l1{left:18%;top:8%;transform:rotate(-18deg);color:#b069ff}.lightning.l2{right:18%;top:16%;transform:rotate(20deg);color:#ffd76a;animation-delay:.22s}.lightning.l3{left:48%;top:0%;transform:rotate(5deg);color:#fff;animation-delay:.32s}
.packRevealOverlay.rarePulse{animation:v16RarePulse .45s ease}.packRevealOverlay.epicPulse{animation:v16EpicPulse .95s ease}.packRevealOverlay.legendaryPulse{animation:v16LegendaryPulse 1.2s ease}
.revealCard.revealed.Rare .cardFront{box-shadow:0 0 30px #35aaffaa,inset 0 0 24px #35aaff33!important;}
.revealCard.revealed.Epic .cardFront{box-shadow:0 0 45px #b75cffcc,inset 0 0 32px #b75cff55!important;animation:v16CardShake .45s ease .25s both;}
.revealCard.revealed.Legendary .cardFront{box-shadow:0 0 58px #ffbd38dd,inset 0 0 40px #ffbd3866!important;animation:v16LegendCard .9s ease .2s both;}
@keyframes v16Spark{0%,100%{opacity:.25;transform:translateY(0) scale(var(--s))}50%{opacity:1;transform:translateY(-12px) scale(calc(var(--s) * 1.3))}}
@keyframes v16Lightning{0%{opacity:0;transform:scaleY(.2) rotate(var(--rot,0deg))}18%{opacity:1}38%{opacity:.15}54%{opacity:1}100%{opacity:0;transform:scaleY(1.15)}}
@keyframes v16RarePulse{35%{box-shadow:inset 0 0 120px rgba(50,170,255,.32)}}
@keyframes v16EpicPulse{0%,100%{filter:none}28%{filter:brightness(1.22);box-shadow:inset 0 0 180px rgba(177,88,255,.48)}55%{transform:translateX(-2px)}60%{transform:translateX(2px)}65%{transform:translateX(0)}}
@keyframes v16LegendaryPulse{0%,100%{filter:none}20%{filter:brightness(1.35);box-shadow:inset 0 0 230px rgba(255,185,44,.75)}42%{transform:translateX(-5px)}47%{transform:translateX(5px)}52%{transform:translateX(-3px)}57%{transform:translateX(0)}}
@keyframes v16CardShake{20%{transform:rotateY(360deg) translateX(-2px)}40%{transform:rotateY(360deg) translateX(2px)}60%{transform:rotateY(360deg) translateX(-1px)}100%{transform:rotateY(360deg) translateX(0)}}
@keyframes v16LegendCard{0%{transform:rotateY(360deg) scale(.98)}45%{transform:rotateY(360deg) scale(1.06)}100%{transform:rotateY(360deg) scale(1)}}

/* V16.1: cleaner navigation and menu readability */
body:not([data-page="home"]) .topbar nav{display:none!important;}
.mainBackButton{display:none;align-items:center;justify-content:center;margin:0 14px 0 8px;padding:12px 20px;border-radius:16px;border:2px solid #ffe08a;background:linear-gradient(180deg,#ffe18f 0%,#ee9f31 45%,#8d3b12 100%);color:#2a1004;font-family:inherit;font-weight:1000;letter-spacing:.6px;text-transform:uppercase;text-shadow:0 1px #fff7;box-shadow:0 4px 0 #4a1a09,0 0 18px #ffb33d66;cursor:pointer}.mainBackButton:hover{filter:brightness(1.12);transform:translateY(-1px)}
body[data-page="home"] .mainBackButton{display:none!important}body:not([data-page="home"]) .mainBackButton{display:inline-flex!important}.topbar{gap:10px}.topbar .wallet{margin-left:auto}

/* Catchier small guide/flavour text across menus */
.menuPage p,.panel p,.hint,.opponentInfo small,.collectionCardText small,.chapterCard small,.packCard small,.farmIntro p,.setupIntro p,.detailsList dd,.storeContent small{font-weight:850!important;color:#ffe39c!important;text-shadow:0 1px 0 #2b0d04,0 0 9px #ff9f1a55;letter-spacing:.15px;line-height:1.35}.opponentInfo small,.collectionCardText small,.packCard small{color:#7ff7ff!important;text-shadow:0 0 8px #00e5ff55,0 1px #091016}.chapterCard small,.farmIntro p{color:#ffd0ff!important;text-shadow:0 0 10px #e76cff55,0 1px #18071e}.hint:before{content:'✦ ';color:#ffcf54}.hint{font-size:14px!important}

/* Only use hover View / Details. Remove duplicate dot menus on character/profile cards. */
.collectionCard .miniMenu,.setupCard>.miniMenu,.collectionMenuBtn{display:none!important}.hoverActionMenu{z-index:25000!important}.hoverActionMenu button{background:linear-gradient(#7b5cff,#31207e)!important;color:#fff!important;border:1px solid #e3d4ff!important;text-shadow:0 1px #000!important}.hoverActionMenu button:hover{filter:brightness(1.18)}

/* Stretch pack tension and add rare reveal moment */
.revealCard>div{transition:transform .95s cubic-bezier(.18,.78,.18,1), box-shadow .55s, filter .55s!important}.revealCard.revealed.Rare .cardFront{animation:v161RareFlash 1.25s ease both!important}.revealCard.revealed.Epic .cardFront{animation:v16CardShake .7s ease .35s both!important}.revealCard.revealed.Legendary .cardFront{animation:v16LegendCard 1.25s ease .35s both!important}.packRevealOverlay.rarePulse{animation:v161RarePulse .9s ease!important}.packRevealOverlay.epicPulse{animation:v16EpicPulse 1.35s ease!important}.packRevealOverlay.legendaryPulse{animation:v16LegendaryPulse 1.65s ease!important}.rarityBurst{animation:rarityBurst 2.05s ease forwards!important}.rarityBurst.Rare{color:#6fd0ff;font-size:42px;letter-spacing:3px}.subtleRareBurst{top:45%!important}
@keyframes v161RareFlash{0%{filter:brightness(1);box-shadow:0 0 0 #35aaff}35%{filter:brightness(1.28);box-shadow:0 0 38px #35aaffcc,inset 0 0 30px #35aaff55}100%{filter:brightness(1);box-shadow:0 0 25px #35aaff99,inset 0 0 18px #35aaff33}}
@keyframes v161RarePulse{0%,100%{filter:none}35%{filter:brightness(1.16);box-shadow:inset 0 0 160px rgba(50,170,255,.38)}}

/* V16.2: battle layout, subtle hover actions, and flashy pack shop polish */
body.inBattle #battle.battlePage.activePage{
  grid-template-columns:minmax(205px,255px) minmax(680px,1fr) minmax(205px,255px)!important;
  gap:22px!important;
  padding:14px 22px!important;
  justify-content:center!important;
  align-items:start!important;
}
body.inBattle .boardWrap{z-index:1!important;min-width:0!important;max-width:calc(100vw - 600px)!important;}
body.inBattle #board{
  width:min(82vh,calc(100vw - 620px),880px)!important;
  height:min(82vh,calc(100vw - 620px),880px)!important;
  min-width:560px!important;min-height:560px!important;
}
body.inBattle .battleSide{
  width:100%!important;max-width:255px!important;box-sizing:border-box!important;z-index:3!important;
  background:rgba(12,7,14,.76)!important;backdrop-filter:blur(2px);border-radius:18px;
}
body.inBattle #log{max-height:calc(100vh - 175px)!important;font-size:12px!important;line-height:1.28!important;padding-right:4px!important;}
body.inBattle .piece{transform:scale(1.08);transform-origin:center bottom;}
body.inBattle .label{font-size:12px!important;padding:2px 7px!important;}
@media(max-width:1180px){body.inBattle #battle.battlePage.activePage{grid-template-columns:1fr!important;overflow:auto!important}body.inBattle .boardWrap{max-width:100%!important}body.inBattle #board{width:min(94vw,76vh)!important;height:min(94vw,76vh)!important;min-width:320px!important;min-height:320px!important}body.inBattle .battleSide{max-width:none!important}}

.hoverActionMenu.battleHoverMenu,#hoverActionMenu.battleHoverMenu{
  transform:translate(-50%,-6px) scale(.72)!important;transform-origin:center bottom!important;
  gap:4px!important;padding:4px!important;border-radius:10px!important;opacity:.92!important;
  box-shadow:0 5px 14px #000b!important;background:rgba(15,9,24,.82)!important;
}
.hoverActionMenu.battleHoverMenu button,#hoverActionMenu.battleHoverMenu button{
  font-size:10px!important;padding:4px 6px!important;border-radius:7px!important;min-height:0!important;line-height:1!important;
}

.packGrid{align-items:stretch!important}.packCard{
  position:relative!important;overflow:hidden!important;min-height:190px!important;border-width:3px!important;
  text-transform:uppercase!important;letter-spacing:.8px!important;
  box-shadow:0 0 24px rgba(255,174,50,.22),inset 0 0 22px rgba(255,255,255,.08)!important;
}
.packCard:before{content:'';position:absolute;inset:-60%;background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.42) 48%,transparent 61%);transform:translateX(-45%) rotate(12deg);animation:packSheen 3.2s linear infinite;pointer-events:none;}
.packCard:after{content:'✦';position:absolute;right:14px;top:10px;color:#fff4a8;text-shadow:0 0 12px #fff,0 0 22px #ffb22c;animation:packSpark 1.2s ease-in-out infinite alternate;pointer-events:none;}
.packCard b{font-size:26px!important;color:#fff1a6!important;text-shadow:0 3px #4b1905,0 0 18px #ffd26a!important;position:relative;z-index:1;}
.packCard span,.packCard em,.packCard small{position:relative;z-index:1;font-weight:1000!important}.packCard em{font-size:20px!important;color:#fff!important;text-shadow:0 0 12px #ffdb76!important}.packCard.bronze{background:radial-gradient(circle at 50% 0%,#ffe0a2,#bb6b2f 42%,#3b170a 100%)!important}.packCard.silver{background:radial-gradient(circle at 50% 0%,#ffffff,#a7b0c7 42%,#26293a 100%)!important}.packCard.gold{background:radial-gradient(circle at 50% 0%,#fff8ae,#ffbc27 43%,#5c2a05 100%)!important;box-shadow:0 0 34px #ffb72c66,inset 0 0 30px #fff4!important}.packCard.platinum{background:radial-gradient(circle at 50% 0%,#ffffff,#b7f4ff 35%,#6f4aff 68%,#170735 100%)!important;box-shadow:0 0 42px #b974ff88,0 0 28px #55eaff55,inset 0 0 32px #fff5!important}.packCard.platinum:after{content:'⚡';font-size:28px;color:#fff;text-shadow:0 0 16px #fff,0 0 28px #a855f7}.packCard.starterPack{background:radial-gradient(circle at 50% 0%,#fff5ac,#ff8b25 48%,#39110a 100%)!important;box-shadow:0 0 38px #ff9d2f77,inset 0 0 30px #fff3!important}
@keyframes packSheen{0%{transform:translateX(-75%) rotate(12deg)}60%,100%{transform:translateX(75%) rotate(12deg)}}
@keyframes packSpark{from{transform:scale(.85) rotate(-8deg);opacity:.55}to{transform:scale(1.2) rotate(10deg);opacity:1}}

/* V16.3: non-overlapping battle side panels, cursor-near hover controls, vertical pack shop. */
body.inBattle #battle.battlePage.activePage{
  display:grid!important;
  grid-template-columns:240px minmax(640px,760px) 240px!important;
  gap:34px!important;
  justify-content:center!important;
  align-items:start!important;
  padding:14px 26px!important;
  overflow:hidden!important;
}
body.inBattle .boardWrap{grid-column:2!important;max-width:760px!important;z-index:1!important;justify-self:center!important;}
body.inBattle #board{
  width:min(78vh,760px,calc(100vw - 650px))!important;
  height:min(78vh,760px,calc(100vw - 650px))!important;
  min-width:560px!important;min-height:560px!important;
}
body.inBattle .battleSide:first-of-type{grid-column:1!important;justify-self:end!important;max-width:240px!important;width:240px!important;z-index:5!important;}
body.inBattle .battleSide:last-of-type{grid-column:3!important;justify-self:start!important;max-width:240px!important;width:240px!important;z-index:5!important;}
body.inBattle #log{font-size:11px!important;line-height:1.22!important;max-height:calc(100vh - 190px)!important;}
@media(max-width:1240px){
  body.inBattle #battle.battlePage.activePage{grid-template-columns:1fr!important;overflow:auto!important;padding:12px!important;}
  body.inBattle .battleSide:first-of-type,body.inBattle .battleSide:last-of-type{grid-column:auto!important;justify-self:center!important;max-width:760px!important;width:min(96vw,760px)!important;}
  body.inBattle .boardWrap{grid-column:auto!important;max-width:96vw!important;}
  body.inBattle #board{width:min(94vw,72vh)!important;height:min(94vw,72vh)!important;min-width:320px!important;min-height:320px!important;}
}
.hoverActionMenu.v163CursorHover,#hoverActionMenu.v163CursorHover{
  transform:none!important;scale:1!important;opacity:.96!important;
  gap:3px!important;padding:3px!important;border-radius:8px!important;
}
.hoverActionMenu.v163CursorHover button,#hoverActionMenu.v163CursorHover button{
  font-size:9px!important;padding:3px 5px!important;border-radius:6px!important;line-height:1!important;
}
.packGrid.v163VerticalPacks{
  display:flex!important;flex-direction:column!important;align-items:center!important;gap:18px!important;
  width:min(620px,92vw)!important;margin:18px auto!important;
}
.packGrid.v163VerticalPacks .packCard{
  width:100%!important;min-height:150px!important;display:flex!important;flex-direction:column!important;justify-content:center!important;align-items:flex-start!important;
  padding:24px 32px!important;text-align:left!important;
}
.packGrid.v163VerticalPacks .packCard b{font-size:30px!important;}
.collectScope[data-scope="locked"]{min-width:140px;}
.collectScope[data-scope="locked"]::first-letter{text-transform:uppercase;}


/* V17.0 fusion + conversion animation polish */
.v17Overlay{position:fixed;inset:0;z-index:26000;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 35%,rgba(90,47,18,.9),rgba(5,2,8,.96) 62%,#000 100%);padding:20px;box-sizing:border-box}.v17RevealPanel{width:min(760px,94vw);max-height:94vh;overflow:auto;text-align:center;background:linear-gradient(180deg,#241024,#0b0610);border:2px solid #d6a75a;border-radius:28px;box-shadow:0 0 60px #ffb02e44,inset 0 0 28px #ffb02e18;padding:22px;position:relative}.v17RevealPanel h2,.v17DustPopup h2,.v17GoldPopup h2{font-size:38px;color:#ffe18a;text-shadow:0 3px #431d06;margin:6px 0}.v17RevealPanel p,.v17DustPopup p,.v17GoldPopup p{color:#ffe6b0!important;font-weight:900!important}.v17Close{position:absolute;right:14px;top:12px}.v17ForgeStage{position:relative;min-height:300px;display:grid;place-items:center;margin:12px 0}.v17ForgeRing{position:absolute;width:290px;height:290px;border-radius:50%;border:3px dashed #ffce6d;box-shadow:0 0 35px #ffce6d88,inset 0 0 35px #b75cff33;animation:v17Spin 5s linear infinite}.v17ForgeRing:before,.v17ForgeRing:after{content:' ';position:absolute;inset:28px;border-radius:50%;border:2px solid #b75cff88;box-shadow:0 0 20px #b75cff}.v17ForgeRing:after{inset:58px;border-color:#48c77499;animation:v17Spin 3.6s linear reverse infinite}.v17SingleCard{width:190px!important;height:260px!important;z-index:2}.v17SingleCard .cardFront,.v17SingleCard .cardBack{border-width:4px!important}.v17SingleCard.revealed.Legendary .cardFront{box-shadow:0 0 64px #ffbd38dd,inset 0 0 42px #ffbd3866!important;animation:v16LegendCard 1.05s ease both!important}.v17SingleCard.revealed.Epic .cardFront{box-shadow:0 0 48px #b75cffcc,inset 0 0 34px #b75cff55!important;animation:v16CardShake .7s ease both!important}.v17DustPopup,.v17GoldPopup{width:min(430px,92vw);border:2px solid #ffe18a;border-radius:30px;background:linear-gradient(180deg,#231020,#09050c);box-shadow:0 0 55px #d99cff66,inset 0 0 30px #ffffff12;color:#fff;padding:28px;text-align:center}.v17DustPopup b,.v17GoldPopup b{display:block;font-size:42px;color:#fff2b8;text-shadow:0 0 22px currentColor;margin:10px 0}.v17DustPopup small,.v17GoldPopup small{display:block;color:#8bf7ff;font-weight:1000}.v17DustPile{font-size:86px;color:#f2d6ff;text-shadow:0 0 30px #d99cff,0 0 60px #b75cff;animation:v17Pulse 1.2s ease-in-out infinite}.v17GoldPile{font-size:90px;filter:drop-shadow(0 0 26px #ffcf54);animation:v17GoldBounce 1.05s ease-in-out infinite}.v17EmptyReward{font-size:68px;color:#ffe18a}.v17DustOverlay{background:radial-gradient(circle at 50% 40%,#7d3d9a66,#000 72%)}.v17GoldOverlay{background:radial-gradient(circle at 50% 40%,#d78a1d66,#000 72%)}@keyframes v17Spin{to{transform:rotate(360deg)}}@keyframes v17Pulse{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.1);filter:brightness(1.25)}}@keyframes v17GoldBounce{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-8px) scale(1.07)}}


/* V17.1 custom Battle Grounds dialog boxes */
.bgDialogOverlay{position:fixed;inset:0;z-index:300000;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 35%,rgba(95,48,18,.35),rgba(8,3,8,.78) 62%,rgba(0,0,0,.88));backdrop-filter:blur(3px);padding:18px;box-sizing:border-box;}
.bgDialogPanel{position:relative;width:min(560px,94vw);border:2px solid #ffd879;border-radius:24px;background:linear-gradient(180deg,#281326 0%,#160913 58%,#0b050b 100%);box-shadow:0 0 42px rgba(255,181,51,.35),0 12px 42px rgba(0,0,0,.78),inset 0 0 28px rgba(255,185,70,.10);padding:24px 24px 20px;text-align:center;overflow:hidden;animation:bgDialogIn .18s ease-out both;}
.bgDialogGlow{position:absolute;inset:-40%;background:radial-gradient(circle at 50% 0%,rgba(255,217,123,.22),transparent 42%);pointer-events:none;animation:bgDialogGlow 2.8s ease-in-out infinite alternate;}
.bgDialogCrest{position:relative;z-index:1;width:58px;height:58px;margin:0 auto 8px;border-radius:16px;display:grid;place-items:center;font-size:30px;font-weight:1000;color:#2a1005;background:linear-gradient(180deg,#ffe59a,#e78b2e 56%,#8b3514);border:2px solid #fff1af;box-shadow:0 0 18px rgba(255,190,75,.55),inset 0 0 12px rgba(255,255,255,.22);}
.bgDialogPanel h2{position:relative;z-index:1;margin:8px 42px 12px;color:#ffe08b;font-size:30px;line-height:1.05;text-shadow:0 3px 0 #4a1b07,0 0 14px rgba(255,174,50,.45);}
.bgDialogMessage{position:relative;z-index:1;margin:12px auto 18px;padding:14px 16px;border:1px solid rgba(255,211,108,.35);border-radius:16px;background:rgba(8,5,14,.52);color:#fff1c0;font-weight:850;line-height:1.35;text-shadow:0 1px 0 #230905;}
.bgDialogMessage p{margin:5px 0;}
.bgDialogActions{position:relative;z-index:1;display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}
.bgDialogActions button{min-width:130px;padding:12px 18px;border-radius:15px;font-weight:1000;}
.bgDialogActions .bgDialogCancel{background:linear-gradient(180deg,#4b326e,#241239)!important;color:#f1dcff!important;border:2px solid #a98be6!important;box-shadow:0 4px 0 #120719,0 0 14px rgba(140,90,255,.22)!important;}
.bgDialogActions .bgDialogOk{background:linear-gradient(180deg,#ffe79b,#ee9b31 52%,#9b3b13)!important;color:#2a1004!important;border:2px solid #fff0ad!important;box-shadow:0 4px 0 #4a1a09,0 0 20px rgba(255,178,55,.45)!important;}
.bgDialogClose{position:absolute!important;right:14px!important;top:12px!important;width:42px!important;height:42px!important;z-index:2!important;display:grid!important;place-items:center!important;}
@keyframes bgDialogIn{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes bgDialogGlow{from{opacity:.55;transform:rotate(0deg)}to{opacity:1;transform:rotate(5deg)}}

/* V17.2 title screen, audio settings, and settings tabs */
.v172TitleScreen{position:fixed;inset:0;z-index:300000;background:radial-gradient(circle at 50% 30%,rgba(111,55,17,.95),rgba(25,8,13,.98) 56%,#050306 100%);display:grid;place-items:center;padding:24px;box-sizing:border-box;overflow:hidden}.v172TitleScreen:before{content:"";position:absolute;inset:-20%;background:radial-gradient(circle at 20% 25%,rgba(255,211,103,.18),transparent 18%),radial-gradient(circle at 78% 30%,rgba(120,79,255,.16),transparent 19%);animation:v172TitleDrift 8s ease-in-out infinite alternate}.v172TitleCard{position:relative;width:min(860px,94vw);min-height:520px;border:3px solid #ffcf68;border-radius:34px;background:linear-gradient(180deg,rgba(43,18,20,.94),rgba(11,6,14,.98));box-shadow:0 0 70px rgba(255,170,44,.35),inset 0 0 36px rgba(255,204,100,.12);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:42px;box-sizing:border-box}.v172TitleCrest{width:92px;height:92px;border-radius:24px;display:grid;place-items:center;background:linear-gradient(#ffe39a,#c65c1d);border:3px solid #fff2b0;color:#321005;font-size:54px;box-shadow:0 0 30px #ffb33d88;margin-bottom:18px}.v172TitleCard h1{margin:0;color:#ffe38c;font-size:clamp(54px,9vw,112px);line-height:.85;letter-spacing:5px;text-shadow:0 7px #451808,0 0 28px #ffb33d}.v172TitleCard h1 span{display:block}.v172Welcome{max-width:680px;color:#ffe6b0!important;font-weight:1000!important;font-size:19px;line-height:1.45;text-shadow:0 2px #2b0d04;margin:28px 0}.v172Begin{font-size:30px!important;letter-spacing:5px;padding:18px 80px!important;border-radius:22px!important;background:linear-gradient(#fff0ae,#ee982f 55%,#8b3714)!important;color:#2b1004!important;border:3px solid #fff0ad!important;box-shadow:0 8px 0 #4a1a09,0 0 32px #ffb33daa!important;text-transform:uppercase}.v172Begin:hover{filter:brightness(1.16);transform:translateY(-2px)}.v172TitleCard small{color:#d7c0ff;font-weight:900;margin-top:18px}.v172TitleScreen.leaving{animation:v172FadeOut .42s ease forwards}@keyframes v172FadeOut{to{opacity:0;transform:scale(1.04)}}@keyframes v172TitleDrift{from{transform:translate(-2%,0) rotate(0deg)}to{transform:translate(2%,-1%) rotate(2deg)}}.v172SettingsModal{z-index:250000!important}.v172SettingsCard{width:min(760px,94vw)!important;max-height:90vh!important;overflow:hidden!important;display:grid!important;grid-template-rows:auto auto 1fr!important;gap:12px!important}.v172SettingsTabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.v172SettingsTabs button{border-radius:14px;padding:11px 12px;background:linear-gradient(#6d52d9,#2b1b75);color:#fff;font-weight:1000}.v172SettingsTabs button.active{background:linear-gradient(#fff0ae,#e58a2b);color:#2b1004;border-color:#fff0ad}.v172SettingsBody{overflow:auto;display:grid;gap:10px;padding:8px}.v172SettingRow{display:grid;grid-template-columns:minmax(180px,1fr) minmax(220px,1.4fr);gap:14px;align-items:center;padding:13px 15px;border:1px solid #d6a75a66;border-radius:16px;background:#090711;color:#ffe6ad;font-weight:900}.v172SettingRow input[type="checkbox"]{width:24px;height:24px;justify-self:start}.v172SettingRow input[type="range"]{width:100%}.v172SettingRow select{padding:10px;border-radius:12px;background:#160f20;color:#ffe8b8;border:1px solid #d6a75a}.v172SettingRow button{justify-self:start}.v172Vol{color:#d9b9ff;min-width:48px}.v172AudioHint{padding:12px;border:1px dashed #d6a75a77;border-radius:14px;color:#7ff7ff;font-weight:900;text-align:center;background:#070711}@media(max-width:680px){.v172SettingsTabs{grid-template-columns:1fr}.v172SettingRow{grid-template-columns:1fr}.v172Begin{padding:16px 42px!important}.v172TitleCard{padding:26px}}


/* V17.3 title/menu image backgrounds */
:root{
  --bg-title-screen:url('../assets/ui/title/title_screen.png');
  --bg-main-menu:url('../assets/ui/backgrounds/main_menu_bg.png');
}
body.v173MenuBg:not(.inBattle)::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-2;
  background-image:var(--bg-main-menu);
  background-position:center center;
  background-size:cover;
  background-repeat:no-repeat;
}
body.v173MenuBg:not(.inBattle)::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  background:radial-gradient(circle at 50% 32%,rgba(0,0,0,.06),rgba(0,0,0,.42) 72%,rgba(0,0,0,.68));
  pointer-events:none;
}
body.v173MenuBg:not(.inBattle),
body.v173MenuBg:not(.inBattle) #app,
body.v173MenuBg:not(.inBattle) .page,
body.v173MenuBg:not(.inBattle) .homeSketchPage,
body.v173MenuBg:not(.inBattle) .menuPage,
body.v173MenuBg:not(.inBattle) .collectionPage,
body.v173MenuBg:not(.inBattle) .setupPage{
  background:transparent!important;
}
body.v173MenuBg #home .homeLogoWrap{display:none!important;}
body.v173MenuBg #home.homeSketchPage{justify-content:center!important;}
body.v173MenuBg #home .mainMenuStack{margin-top:8vh!important;position:relative;z-index:2;}
.v173TitleImageScreen{
  position:fixed;
  inset:0;
  z-index:400000;
  display:block;
  background:#050306 var(--bg-title-screen) center center / cover no-repeat;
  overflow:hidden;
}
.v173TitleImageScreen:after{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 50% 50%,transparent 58%,rgba(0,0,0,.28) 100%);
  pointer-events:none;
}
.v173BeginHotspot{
  position:absolute;
  left:50%;
  bottom:5.5%;
  transform:translateX(-50%);
  width:min(430px,35vw);
  height:min(110px,12vh);
  border:0;
  border-radius:24px;
  background:transparent;
  cursor:pointer;
  z-index:2;
  color:transparent;
  text-indent:-9999px;
}
.v173BeginHotspot:focus-visible{
  outline:4px solid #fff0a8;
  box-shadow:0 0 28px #ffb33d;
}
.v173TitleImageScreen.leaving{animation:v173TitleLeave .42s ease forwards;}
@keyframes v173TitleLeave{to{opacity:0;transform:scale(1.025);filter:brightness(1.1)}}
@media(max-width:760px){.v173BeginHotspot{width:58vw;height:12vh;bottom:4.5%;}}

/* V17.4 instant title + stronger shared menu background hotfix */
/* Hide the older generated V17.2 title immediately so it cannot flash before the image title. */
#v172TitleScreen.v172TitleScreen,
.v172TitleScreen:not(.v172SettingsModal){
  display:none!important;
  opacity:0!important;
  pointer-events:none!important;
}
html.v174MenuBg,
body.v174MenuBg,
body.v173MenuBg{
  min-height:100vh!important;
  background:#050306 var(--bg-main-menu) center center / cover no-repeat fixed!important;
}
body.v174MenuBg:not(.inBattle)::before,
body.v173MenuBg:not(.inBattle)::before{
  content:""!important;
  position:fixed!important;
  inset:0!important;
  z-index:0!important;
  background:#050306 var(--bg-main-menu) center center / cover no-repeat!important;
  pointer-events:none!important;
}
body.v174MenuBg:not(.inBattle)::after,
body.v173MenuBg:not(.inBattle)::after{
  z-index:1!important;
}
body.v174MenuBg #app,
body.v173MenuBg #app{
  position:relative!important;
  z-index:2!important;
  background:transparent!important;
  min-height:100vh!important;
}
body.v174MenuBg:not(.inBattle) .page,
body.v173MenuBg:not(.inBattle) .page,
body.v174MenuBg:not(.inBattle) .homeSketchPage,
body.v173MenuBg:not(.inBattle) .homeSketchPage,
body.v174MenuBg:not(.inBattle) .menuPage,
body.v173MenuBg:not(.inBattle) .menuPage,
body.v174MenuBg:not(.inBattle) .collectionPage,
body.v173MenuBg:not(.inBattle) .collectionPage,
body.v174MenuBg:not(.inBattle) .setupPage,
body.v173MenuBg:not(.inBattle) .setupPage{
  background:transparent!important;
}
body.v174MenuBg #home .homeLogoWrap,
body.v173MenuBg #home .homeLogoWrap{display:none!important;}
body.v174MenuBg #home.homeSketchPage,
body.v173MenuBg #home.homeSketchPage{justify-content:center!important;}
body.v174MenuBg #home .mainMenuStack,
body.v173MenuBg #home .mainMenuStack{margin-top:8vh!important;position:relative!important;z-index:3!important;}
.v174TitleImageScreen{
  position:fixed!important;
  inset:0!important;
  z-index:500000!important;
  display:block!important;
  background:#050306 var(--bg-title-screen) center center / cover no-repeat!important;
  overflow:hidden!important;
}
.v174TitleImageScreen:after{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at 50% 50%,transparent 58%,rgba(0,0,0,.28) 100%);
  pointer-events:none;
}
.v174BeginHotspot{
  position:absolute!important;
  left:50%!important;
  bottom:5.5%!important;
  transform:translateX(-50%)!important;
  width:min(430px,35vw)!important;
  height:min(110px,12vh)!important;
  border:0!important;
  border-radius:24px!important;
  background:transparent!important;
  cursor:pointer!important;
  z-index:2!important;
  color:transparent!important;
  text-indent:-9999px!important;
  box-shadow:none!important;
}
.v174BeginHotspot:focus-visible{outline:4px solid #fff0a8!important;box-shadow:0 0 28px #ffb33d!important;}
.v174TitleImageScreen.leaving{animation:v174TitleLeave .35s ease forwards;}
@keyframes v174TitleLeave{to{opacity:0;transform:scale(1.02);filter:brightness(1.08)}}
@media(max-width:760px){.v174BeginHotspot{width:58vw!important;height:12vh!important;bottom:4.5%!important;}}

/* V17.7 advanced audio settings */
.v177SettingsCard .v172SettingsBody{max-height:62vh;overflow:auto;padding-right:6px}
.v177SettingsCard select{min-width:260px;max-width:100%;background:#160912;color:#fff3b0;border:2px solid #b77a31;border-radius:12px;padding:9px 12px;font-weight:900;box-shadow:inset 0 0 12px rgba(255,190,65,.12)}
.v177SettingsCard option:disabled{color:#8d7c79;background:#1a1014}
.v177AudioHint{margin-top:10px;border:1px solid rgba(255,205,91,.35);border-radius:14px;background:rgba(0,0,0,.28);padding:12px;color:#ffe8aa;font-size:13px;line-height:1.45;font-weight:800}
.v177SettingsCard .v172SettingRow{gap:14px}
.v177SettingsCard .v172SettingRow span{min-width:150px}

/* V18.1 mobile quality-of-life polish */
@media (max-width: 760px) {
  /* Keep the complete title artwork visible rather than cropping its sides. */
  .v173TitleImageScreen,
  .v174TitleImageScreen {
    background-color: #050306 !important;
    background-size: contain !important;
    background-position: center center !important;
    background-repeat: no-repeat !important;
  }

  .v173TitleImageScreen::after,
  .v174TitleImageScreen::after {
    background: radial-gradient(
      circle at 50% 50%,
      transparent 62%,
      rgba(0, 0, 0, .18) 100%
    ) !important;
  }

  /*
   * Landscape/small-screen fallback.
   * Portrait positioning is overridden below using the exact proportions
   * of the 1920 × 1080 title artwork.
   */
  .v173BeginHotspot,
  .v174BeginHotspot {
    width: min(430px, 35vw) !important;
    height: min(110px, 12dvh) !important;
    bottom: 5.5% !important;
  }

  /* Small readable labels positioned just above each sprite's head. */
  body.inBattle .piece .name,
  body[data-page="battle"] .piece .name,
  .battlePage .piece .name {
    top: -5px !important;
    max-width: 92% !important;
    padding: 1px 4px !important;
    border-width: 1px !important;
    border-radius: 999px !important;
    font-size: clamp(6px, 1.8vw, 8px) !important;
    line-height: 1.05 !important;
    letter-spacing: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }

  /* Campaign Legendary King reward: fit within the usable phone viewport. */
  .v167KingRevealOverlay {
    align-items: center !important;
    padding: 10px !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
  }

  .v167KingRevealPanel,
  .v1714KingRevealPanel {
    width: min(94vw, 470px) !important;
    min-height: 0 !important;
    max-height: calc(100dvh - 20px) !important;
    margin: auto !important;
    padding: 14px !important;
    border-radius: 20px !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
  }

  .v167KingHeader h2 {
    margin: 4px 0 !important;
    font-size: clamp(22px, 6vw, 28px) !important;
  }

  .v167KingHeader p,
  .v1714RecruitQuote,
  .v1714FinalText {
    margin: 6px auto 10px !important;
    padding: 8px 10px !important;
    font-size: 12px !important;
    line-height: 1.25 !important;
  }

  .v167KingCard {
    width: min(76vw, 280px) !important;
    height: min(46dvh, 330px) !important;
    min-height: 260px !important;
    margin: 8px auto 10px !important;
    padding: 10px !important;
    border-radius: 19px !important;
  }

  .v167KingImage {
    width: min(44vw, 175px) !important;
    height: min(44vw, 175px) !important;
    margin-bottom: 8px !important;
  }

  .v167KingName {
    font-size: 19px !important;
  }

  .v167KingRarity {
    margin-top: 5px !important;
    font-size: 12px !important;
  }

  .v167KingContinue {
    position: sticky !important;
    bottom: 0 !important;
    z-index: 8 !important;
    width: 100% !important;
    margin-top: 8px !important;
    padding: 12px 14px !important;
    font-size: 15px !important;
    box-shadow: 0 -8px 20px rgba(0, 0, 0, .45) !important;
  }
}


/*
 * Portrait title hotspot alignment.
 *
 * title_screen.png is 1920 × 1080. With background-size: contain on a
 * portrait phone, the artwork is width-limited and therefore renders at:
 *
 *   rendered height = 56.25vw
 *
 * The painted Begin button is centred at approximately 88.1% of the
 * artwork height. Its hotspot is positioned from the artwork centre,
 * rather than from the bottom of the phone viewport, so scaling the
 * artwork also scales and moves the clickable area correctly.
 */
@media (max-width: 760px) and (orientation: portrait) {
  .v173BeginHotspot,
  .v174BeginHotspot {
    left: 50% !important;
    top: calc(50% + 21.43vw) !important;
    bottom: auto !important;
    width: 30vw !important;
    min-width: 108px !important;
    max-width: 180px !important;
    height: 10vw !important;
    min-height: 44px !important;
    max-height: 72px !important;
    transform: translate(-50%, -50%) !important;
  }
}

@media (max-width: 430px) {
  body.inBattle .piece .name,
  body[data-page="battle"] .piece .name,
  .battlePage .piece .name {
    top: -4px !important;
    padding: 1px 3px !important;
    font-size: 6px !important;
  }
}