.combat-sprite{display:block;width:100%;aspect-ratio:3/4;background-size:400% 300%;background-repeat:no-repeat;transform-origin:50% 90%;filter:drop-shadow(0 4px 2px #0006)}
.hero-atlas{background-image:url('/assets/art/heroes-v1.png')}.enemy-atlas{background-image:url('/assets/art/enemies-v1.png')}
.sprite-0{background-position:0 0}.sprite-1{background-position:33.333333% 0}.sprite-2{background-position:66.666667% 0}.sprite-3{background-position:100% 0}.sprite-4{background-position:0 50%}.sprite-5{background-position:33.333333% 50%}.sprite-6{background-position:66.666667% 50%}.sprite-7{background-position:100% 50%}.sprite-8{background-position:0 100%}.sprite-9{background-position:33.333333% 100%}.sprite-10{background-position:66.666667% 100%}.sprite-11{background-position:100% 100%}
.party-portrait{display:block;width:88px;margin:4px auto}.recruit-portrait{display:block;width:125px;margin:auto}.recruit-option{background:#302519;flex:1;min-width:0}.recruit-option h4{color:#dcb879}.recruit-option p{color:#d8bf92}
.battle-heading{text-align:left;margin:0 0 16px}.battle-heading small{color:#c9b086;letter-spacing:2px;font:10px Arial}.battle-heading h1{margin:8px 0;font-size:30px}
.battle-stage{position:relative;isolation:isolate;display:block;padding:0;min-height:480px;height:min(58vw,580px);border:3px ridge #a47e42;border-radius:12px;overflow:hidden;background-image:url('/assets/art/scenes-v1.png');background-size:200% 200%;box-shadow:0 14px 45px #0008}
.scene-westfall{background-position:0 0}.scene-moonbrook{background-position:100% 0}.scene-deadmines{background-position:0 100%}.scene-shadowfang{background-position:100% 100%}
.scene-vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#0001,transparent 35%,#22170f22);box-shadow:inset 0 0 80px #0005;z-index:-1}
.battle-teams{position:absolute;inset:30% 3% 4%;display:flex;align-items:flex-end;justify-content:space-between;gap:4%}.battle-team{position:relative;display:flex;align-items:flex-end;justify-content:center;flex-wrap:nowrap;width:47%;height:100%;gap:0}.battle-team.allies{flex-direction:row-reverse}
.battle-team .fighter{position:relative;flex:1;min-width:0;max-width:150px;width:auto;align-self:flex-end;background:none;border:0;padding:0;box-shadow:none;border-radius:0;transition:opacity .4s;overflow:visible;color:#fff3d9;z-index:1}.battle-team .fighter:nth-child(even){margin-bottom:38px;z-index:0}
.fighter-label{position:relative;min-height:56px;z-index:2;padding:4px 3px;background:#181711c9;border:1px solid #d2b67a88;border-radius:5px;text-align:center;text-shadow:0 1px 2px #000}
.fighter strong{font:bold 10px/1.15 Arial;min-height:0;margin:0 0 4px;display:block;color:#fff4d7;overflow-wrap:anywhere}.fighter .health-track{height:12px;position:relative;overflow:hidden;border:1px solid #090b09;background:#111;border-radius:2px}.fighter meter{display:block;width:100%;height:12px;border:0}.fighter meter::-webkit-meter-bar{background:#171b14;border:0}.fighter meter::-webkit-meter-optimum-value{background:linear-gradient(#99c760,#468438)}.enemy meter::-webkit-meter-optimum-value{background:linear-gradient(#ec9760,#b83b2f)}.fighter .health-number{position:absolute;inset:0;font:bold 9px/11px Arial;color:white;text-shadow:0 1px #000}.fighter .status{display:block;min-height:11px;margin:2px 0 0;color:#f6df9c;font:8px/1.2 Arial}.sprite-ground{position:relative;width:112%;margin-left:-6%;transform-origin:50% 95%}.sprite-ground:before{content:'';position:absolute;bottom:0;left:10%;width:80%;height:12%;border-radius:50%;background:#21190d55;filter:blur(3px)}.sprite-ground>.combat-sprite{position:relative;animation:battle-breathe 2.2s ease-in-out infinite}.fighter:nth-child(even) .combat-sprite{animation-delay:-1s}.fighter.chilled .combat-sprite{filter:drop-shadow(0 0 6px #7cddff)}
.fighter.dead{opacity:.5}.fighter.dead .combat-sprite{animation:none;transform:rotate(75deg) translateX(10%);filter:grayscale(.75);transition:transform .45s}.fighter.dead .fighter-label{opacity:.55}.fighter.dead .cast-name{visibility:hidden}.cast-name{position:absolute;top:100%;left:-20%;width:140%;text-align:center;font:bold 9px/1.3 Arial;color:#fff5d0;text-shadow:0 1px 3px #000,0 0 4px #000;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.combat-number{position:absolute;top:35%;left:25%;z-index:15;font:bold 23px Georgia;color:#fff2b0;text-shadow:2px 2px #40220e,-1px -1px #40220e;pointer-events:none}.combat-number.heal{color:#92ff8e}.combat-number.shield,.combat-number.buff{color:#9adfff}.impact{position:absolute;inset:25% 5% 10%;border:4px solid var(--spell,#ffc777);border-radius:50%;box-shadow:0 0 18px var(--spell,#ffc777);opacity:0;pointer-events:none}.spell-bolt{position:absolute;width:16px;height:16px;border-radius:50%;background:var(--spell,#fff);box-shadow:0 0 8px 4px var(--spell,#fff);z-index:20;pointer-events:none}.school-fire{--spell:#ff792f}.school-frost{--spell:#83e6ff}.school-holy{--spell:#ffe899}.school-shadow{--spell:#c17aff}.school-arcane{--spell:#b9a2ff}.school-nature{--spell:#89e56c}.school-arrow{--spell:#dfc69a}.school-arrow.spell-bolt{height:4px;width:22px;border-radius:0}.school-physical{--spell:#ffe3ad}
.arena-banner{position:absolute;inset:12% 0 auto;text-align:center;font:bold clamp(28px,5vw,60px) Georgia;letter-spacing:8px;color:#fff1b6;text-shadow:0 3px #6b3919,0 0 30px #30220a;pointer-events:none}.defeat .arena-banner{color:#ffb3a0}.victory .arena-banner{animation:banner-enter .5s ease-out}.battle-clock{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 0;margin:0;font:12px Arial}.playback-controls{display:flex;gap:6px}.playback-controls button{padding:7px 11px}.playback-controls [aria-pressed=true]{border-color:#edc57f;color:#ffdc8e;background:#624324}.combat-details{margin-top:16px;color:#aa997f}.combat-details summary{cursor:pointer;font:12px Arial}.combat-details .battle-log{height:160px;overflow:auto;margin-top:12px}.paused .combat-sprite{animation-play-state:paused}
@keyframes battle-breathe{50%{transform:translateY(-3px) rotate(1deg)}}@keyframes banner-enter{from{opacity:0;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}
@media(max-width:700px){.battle-stage{height:460px;min-height:460px;background-size:300% 200%}.scene-westfall,.scene-deadmines{background-position-x:0}.scene-moonbrook,.scene-shadowfang{background-position-x:100%}.battle-teams{inset:34% 2% 7%;gap:3%}.battle-team{width:48%;flex-wrap:wrap;align-content:flex-end;align-items:flex-end;gap:8px 0}.battle-team .fighter{flex:0 0 33.333%;min-width:0;max-width:90px}.battle-team .fighter:nth-child(even){margin-bottom:0}.battle-team .fighter:only-child{flex-basis:75%;max-width:140px}.fighter-label{min-height:40px;padding:3px 2px}.fighter strong{font-size:8px}.fighter .status{font-size:7px}.fighter .health-number{font-size:8px}.cast-name{font-size:7px}.combat-number{font-size:19px}.battle-clock{align-items:flex-start;flex-direction:column}.playback-controls{width:100%;justify-content:flex-end}.battle-heading h1{font-size:25px}.party-portrait{width:75px}}
@media(prefers-reduced-motion:reduce){.combat-sprite,.arena-banner{animation:none!important}.fighter.dead .combat-sprite{transition:none}}
@media(max-width:700px){.battle-stage{height:400px;min-height:400px;background-size:200% 200%}.battle-teams{inset:30% 2% 7%}}

.race-class-sprite{aspect-ratio:1/1;background-size:700% 400%}
.school-lightning{--spell:#87d5ff}
.combo-alliance-starter{background-image:url('/assets/art/alliance-starter.png')}
.combo-alliance-veteran{background-image:url('/assets/art/alliance-veteran.png')}
.combo-horde-starter{background-image:url('/assets/art/horde-starter.png')}
.combo-horde-veteran{background-image:url('/assets/art/horde-veteran.png')}
.combo-0{background-position:0.0% 0.0%}
.combo-1{background-position:16.666666666666664% 0.0%}
.combo-2{background-position:33.33333333333333% 0.0%}
.combo-3{background-position:50.0% 0.0%}
.combo-4{background-position:66.66666666666666% 0.0%}
.combo-5{background-position:83.33333333333334% 0.0%}
.combo-6{background-position:100.0% 0.0%}
.combo-7{background-position:0.0% 33.33333333333333%}
.combo-8{background-position:16.666666666666664% 33.33333333333333%}
.combo-9{background-position:33.33333333333333% 33.33333333333333%}
.combo-10{background-position:50.0% 33.33333333333333%}
.combo-11{background-position:66.66666666666666% 33.33333333333333%}
.combo-12{background-position:83.33333333333334% 33.33333333333333%}
.combo-13{background-position:100.0% 33.33333333333333%}
.combo-14{background-position:0.0% 66.66666666666666%}
.combo-15{background-position:16.666666666666664% 66.66666666666666%}
.combo-16{background-position:33.33333333333333% 66.66666666666666%}
.combo-17{background-position:50.0% 66.66666666666666%}
.combo-18{background-position:66.66666666666666% 66.66666666666666%}
.combo-19{background-position:83.33333333333334% 66.66666666666666%}
.combo-20{background-position:100.0% 66.66666666666666%}
.combo-21{background-position:0.0% 100.0%}
.combo-22{background-position:16.666666666666664% 100.0%}
.combo-23{background-position:33.33333333333333% 100.0%}
.combo-24{background-position:50.0% 100.0%}
.combo-25{background-position:66.66666666666666% 100.0%}
.combo-26{background-position:83.33333333333334% 100.0%}
.combo-27{background-position:100.0% 100.0%}

.warrior-sprite{aspect-ratio:1/1;background-size:500% 400%}.warrior-starter{background-image:url('/assets/art/warriors-starter.png')}.warrior-veteran{background-image:url('/assets/art/warriors-veteran.png')}
.combat-number{font-family:Georgia,serif;color:#ffec92;-webkit-text-stroke:.4px #55320c;text-shadow:2px 2px 0 #2a1408,0 0 4px #000}.combat-number.critical{font-size:32px;color:#ffda47;z-index:40}.combat-number.periodic{font-size:17px;color:#e799b6}.holy-shield-effect{position:absolute;inset:22% -10% 0;z-index:30;pointer-events:none;filter:drop-shadow(0 0 10px #ffd76c)}.holy-shield-effect svg{height:100%;width:100%}.lightning-beam{position:absolute;height:38px;margin-top:-19px;transform-origin:0 50%;z-index:30;pointer-events:none;filter:drop-shadow(0 0 5px #7de4ff)}.lightning-beam svg{width:100%;height:100%}.melee-slash{position:absolute;inset:40% 0 5%;border-top:5px solid #fff1ca;border-right:3px solid #d4c2a4;border-radius:50%;z-index:25;pointer-events:none;filter:drop-shadow(0 0 4px #fff)}.whirlwind-effect{position:absolute;inset:40% -15% 0;border:5px solid #c8ecff;border-left-color:transparent;border-bottom-color:#fff8cb;border-radius:50%;z-index:25;pointer-events:none;box-shadow:0 0 12px #c5e7ff}.bleed-mark{position:absolute;left:40%;top:40%;font:bold 40px Georgia;color:#e34c51;z-index:25;pointer-events:none}.spell-bolt.school-frost{border-radius:0;clip-path:polygon(0 40%,70% 0,100% 50%,70% 100%,0 60%);width:30px;background:#c6f8ff}.spell-bolt.school-fire{width:25px;height:20px;border-radius:60% 20% 60% 40%;background:radial-gradient(#fff4a0,#ff8a22 45%,#ce3113)}.spell-bolt.school-nature{border-radius:90% 0 90% 0;background:#b6ef80}.spell-bolt.school-holy{background:#fffbd5;box-shadow:0 0 6px 3px #fff,0 0 18px 7px #e5bd4f}.spell-bolt.school-shadow{background:radial-gradient(#29113f,#9d60c7);box-shadow:0 0 10px 4px #9f5cd3}.spell-bolt.school-arcane{border-radius:20%;transform:rotate(45deg);background:#edd4ff}.school-bleed{--spell:#e95e65}
.warrior-cell-0{background-position:0.0% 0.0%}
.warrior-cell-1{background-position:25.0% 0.0%}
.warrior-cell-2{background-position:50.0% 0.0%}
.warrior-cell-3{background-position:75.0% 0.0%}
.warrior-cell-4{background-position:100.0% 0.0%}
.warrior-cell-5{background-position:0.0% 33.33333333333333%}
.warrior-cell-6{background-position:25.0% 33.33333333333333%}
.warrior-cell-7{background-position:50.0% 33.33333333333333%}
.warrior-cell-8{background-position:75.0% 33.33333333333333%}
.warrior-cell-9{background-position:100.0% 33.33333333333333%}
.warrior-cell-10{background-position:0.0% 66.66666666666666%}
.warrior-cell-11{background-position:25.0% 66.66666666666666%}
.warrior-cell-12{background-position:50.0% 66.66666666666666%}
.warrior-cell-13{background-position:75.0% 66.66666666666666%}
.warrior-cell-14{background-position:100.0% 66.66666666666666%}
.warrior-cell-15{background-position:0.0% 100.0%}
.warrior-cell-16{background-position:25.0% 100.0%}
.warrior-cell-17{background-position:50.0% 100.0%}
.warrior-cell-18{background-position:75.0% 100.0%}
.warrior-cell-19{background-position:100.0% 100.0%}

.scene-farms{background-image:url('/assets/art/westfall-scenes-v2.png');background-size:200% 200%;background-position:0% 0%}
.scene-gnolls{background-image:url('/assets/art/westfall-scenes-v2.png');background-size:200% 200%;background-position:100% 0%}
.scene-quarry{background-image:url('/assets/art/westfall-scenes-v2.png');background-size:200% 200%;background-position:0% 100%}
.scene-daggerhills{background-image:url('/assets/art/westfall-scenes-v2.png');background-size:200% 200%;background-position:100% 100%}
.scene-mine{background-image:url('/assets/art/deadmines-scenes-v2.png');background-size:200% 200%;background-position:0% 0%}
.scene-foundry{background-image:url('/assets/art/deadmines-scenes-v2.png');background-size:200% 200%;background-position:100% 0%}
.scene-ship{background-image:url('/assets/art/deadmines-scenes-v2.png');background-size:200% 200%;background-position:0% 100%}
.scene-moonbrook-new{background-image:url('/assets/art/deadmines-scenes-v2.png');background-size:200% 200%;background-position:100% 100%}
.scene-lakeshire{background-image:url('/assets/art/redridge-scenes-v1.png');background-size:200% 200%;background-position:0% 0%}
.scene-blackrock{background-image:url('/assets/art/redridge-scenes-v1.png');background-size:200% 200%;background-position:100% 0%}
.scene-stonewatch{background-image:url('/assets/art/redridge-scenes-v1.png');background-size:200% 200%;background-position:0% 100%}
.scene-throne{background-image:url('/assets/art/redridge-scenes-v1.png');background-size:200% 200%;background-position:100% 100%}
.scene-stockade-gate{background-image:url('/assets/art/stockades-scenes-v1.png');background-size:200% 200%;background-position:0% 0%}
.scene-cellblock{background-image:url('/assets/art/stockades-scenes-v1.png');background-size:200% 200%;background-position:100% 0%}
.scene-workshop{background-image:url('/assets/art/stockades-scenes-v1.png');background-size:200% 200%;background-position:0% 100%}
.scene-ringleader{background-image:url('/assets/art/stockades-scenes-v1.png');background-size:200% 200%;background-position:100% 100%}
.form-sprite{background-image:url('/assets/art/druid-forms-v1.png')}.chapter-enemy{background-image:url('/assets/art/chapter-enemies-v1.png')}.combat-sprite.atlas-eight{background-size:400% 200%;aspect-ratio:1/1;background-repeat:no-repeat}
.cell-eight-0{background-position:0.0% 0%}
.cell-eight-1{background-position:33.33333333333333% 0%}
.cell-eight-2{background-position:66.66666666666666% 0%}
.cell-eight-3{background-position:100.0% 0%}
.cell-eight-4{background-position:0.0% 100%}
.cell-eight-5{background-position:33.33333333333333% 100%}
.cell-eight-6{background-position:66.66666666666666% 100%}
.cell-eight-7{background-position:100.0% 100%}/* Modular equipment: body, earned weapon, armour and talent effects animate together. */
.combat-sprite.modular-character{position:relative;background:none!important;isolation:isolate;aspect-ratio:1/1;overflow:visible}.modular-character>.body-layer{position:absolute;inset:0;display:block;background-repeat:no-repeat;z-index:1}.mod-body{background-size:700% 400%}.body-alliance{background-image:url('/assets/art/alliance-bodies-v1.png')}.body-horde{background-image:url('/assets/art/horde-bodies-v1.png')}.spec-body{background-image:url('/assets/art/spec-bodies-v1.png');background-size:400% 400%}.held-weapon{position:absolute;display:block;background-image:url('/assets/art/weapon-layers-v1.png');background-size:400% 400%;background-repeat:no-repeat;z-index:4;pointer-events:none;transform-origin:50% 83%}.main-hand{left:49%;top:8%;width:58%;height:62%;rotate:12deg}.off-hand{left:-8%;top:13%;width:58%;height:62%;rotate:-20deg}.weapon-mace2,.weapon-axe2,.weapon-sword2,.weapon-staff,.weapon-bow{height:80%;width:70%;left:43%;top:-4%;rotate:9deg}.weapon-shield,.weapon-book{width:43%;height:46%;left:0;top:43%;rotate:-8deg}.weapon-dagger{height:48%;top:26%;rotate:25deg}.weapon-wand{height:50%;top:20%}.off-hand.weapon-dagger{left:-8%;rotate:-30deg}.spec-warrior .off-hand{rotate:-34deg;left:-8%}.spec-fire>.body-layer{filter:sepia(.6) saturate(1.5) hue-rotate(320deg)}.spec-arcane>.body-layer{filter:hue-rotate(42deg)}.spec-mage>.body-layer{filter:saturate(1.2)}
.armor-trim{position:absolute;z-index:2;top:42%;width:18%;height:11%;border:2px solid #3a3025;background:linear-gradient(135deg,#8a7552,#5d604c);border-radius:50% 50% 25% 25%;box-shadow:inset 0 -3px #0004;pointer-events:none}.trim-left{left:18%;rotate:-18deg}.trim-right{left:65%;rotate:18deg}.tier-1 .armor-trim{width:14%;height:8%;opacity:.8}.tier-2 .armor-trim{background:linear-gradient(135deg,#b1bdc3,#555d6c);border-color:#343944}.tier-3 .armor-trim{height:14%;background:linear-gradient(135deg,#e2ca81,#939eb0 45%,#50596d);border:3px solid #806734;box-shadow:inset 0 -3px #26333e,0 0 3px #e6c879}.adventure-cloak{position:absolute;z-index:0;left:13%;top:43%;width:62%;height:43%;background:linear-gradient(90deg,#333b35,#587264);clip-path:polygon(25% 0,80% 0,100% 100%,50% 90%,0 100%);border-radius:20%}.tier-1 .adventure-cloak{display:none}.tier-3 .adventure-cloak{background:linear-gradient(90deg,#203d59,#406780)}.defias-mask{position:absolute;left:43%;top:32%;width:35%;height:15%;z-index:6;rotate:-5deg}.defias-mask svg{width:100%;height:100%}.spec-combat .defias-mask,.spec-assassination .defias-mask{top:32%}
.weapon-enchant{position:absolute;left:70%;top:11%;width:24%;height:32%;pointer-events:none;z-index:5}.imbue-rockbiter .main-hand{filter:drop-shadow(0 0 3px #e6ad45)}.imbue-rockbiter .weapon-enchant i{position:absolute;width:22%;height:22%;background:#d8ae60;border:2px solid #684826;rotate:35deg;animation:earth-float 2s ease-in-out infinite alternate}.weapon-enchant i:nth-child(2){left:75%;top:40%;animation-delay:-.7s}.weapon-enchant i:nth-child(3){left:-15%;top:80%;animation-delay:-1.3s}.imbue-windfury .main-hand{filter:drop-shadow(0 0 4px #bbf2ff)}.imbue-windfury .weapon-enchant{border:2px solid #c7faff;border-left-color:transparent;border-radius:50%;animation:wind-orbit 1s linear infinite;box-shadow:0 0 6px #8ad7f5}.imbue-windfury .weapon-enchant i{position:absolute;inset:20%;border-top:2px solid white;border-radius:50%;rotate:45deg}.water-orbit{position:absolute;inset:20% 3% 5%;z-index:5;pointer-events:none}.water-orb{position:absolute;left:0;top:40%;width:14%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 30% 25%,#e4ffff,#54c8ff 35%,#1464a8 70%);border:1px solid #a9efff;box-shadow:0 0 9px #52b8ef;animation:water-orbit 3s ease-in-out infinite}.water-orb:nth-child(2){left:82%;top:25%;animation-delay:-1s}.water-orb:nth-child(3){left:50%;top:80%;animation-delay:-2s}.water-orb[hidden]{display:none}.moonkin-form{filter:drop-shadow(0 0 7px #a6a1f33a)}
@keyframes earth-float{to{translate:0 -6px;rotate:70deg}}@keyframes wind-orbit{to{rotate:360deg}}@keyframes water-orbit{50%{translate:10px -12px;scale:.8}}
/* Status effects use the actual replay state, and disappear when the effect expires. */
.fighter.chilled .sprite-ground:after{content:'';position:absolute;inset:20% 0 0;pointer-events:none;background:linear-gradient(transparent,#94dcff77);clip-path:polygon(0 100%,6% 55%,18% 78%,26% 22%,40% 75%,53% 5%,67% 75%,78% 30%,90% 75%,100% 45%,100% 100%);filter:drop-shadow(0 0 5px #bceeff);z-index:4}.fighter.chilled .combat-sprite{filter:drop-shadow(0 0 8px #67cdff) saturate(.7)}.fighter.burning .sprite-ground:before{content:'';inset:15% 8% 0;width:auto;height:auto;transform:none;background:radial-gradient(ellipse at 50% 100%,#ffdf5bc9,#ee571a80 35%,transparent 70%);filter:none;clip-path:polygon(0 100%,7% 35%,23% 65%,35% 5%,48% 55%,67% 0,78% 60%,94% 20%,100% 100%);animation:ignite-flicker .45s ease-in-out infinite alternate;z-index:4}.fighter.moonfire-dot .combat-sprite{filter:drop-shadow(0 0 8px #aaa0ff)}.windfury-vortex{position:absolute;inset:40% -10% 0;border:5px solid #defaff;border-left-color:transparent;border-radius:50%;box-shadow:0 0 14px #63c6f2;pointer-events:none;z-index:6}.frost-impact{position:absolute;inset:35% 0 0;text-align:center;color:#ddfaff;font-size:64px;filter:drop-shadow(0 0 10px #3699e9);pointer-events:none}.fire-impact{position:absolute;inset:30% 10% 0;background:radial-gradient(ellipse at bottom,#fffda5,#ff8d26 30%,#e74418 55%,transparent 70%);clip-path:polygon(0 100%,15% 30%,30% 65%,52% 0,66% 60%,84% 20%,100% 100%);pointer-events:none}.spell-bolt.school-frost{width:65px;height:25px;border:0;background:none;border-radius:0;box-shadow:none;filter:drop-shadow(0 0 6px #75dfff)}.spell-bolt.school-frost svg{width:100%;height:100%}.spell-bolt.school-fire{width:38px;height:30px;background:radial-gradient(ellipse at 65% 50%,#fffbd2,#ffd645 25%,#ff8d17 50%,#e33913 75%);border:0;border-radius:70% 45% 45% 70%;box-shadow:-12px 0 12px #ff882b99,0 0 12px #ff9b38}.spell-bolt.school-water{background:#88e6ff;border-color:#e3ffff;box-shadow:0 0 12px #39adf4}.holy-shield-effect{filter:drop-shadow(0 0 9px #ffe887)}
@keyframes ignite-flicker{to{opacity:.65;scale:1.05 1.12}}
@media(prefers-reduced-motion:reduce){.weapon-enchant,.weapon-enchant i,.water-orb,.fighter.burning .sprite-ground:before{animation:none!important}}

.cell-sixteen-0{background-position:0.0% 0.0%}
.cell-sixteen-1{background-position:33.333333333333336% 0.0%}
.cell-sixteen-2{background-position:66.66666666666667% 0.0%}
.cell-sixteen-3{background-position:100.0% 0.0%}
.cell-sixteen-4{background-position:0.0% 33.333333333333336%}
.cell-sixteen-5{background-position:33.333333333333336% 33.333333333333336%}
.cell-sixteen-6{background-position:66.66666666666667% 33.333333333333336%}
.cell-sixteen-7{background-position:100.0% 33.333333333333336%}
.cell-sixteen-8{background-position:0.0% 66.66666666666667%}
.cell-sixteen-9{background-position:33.333333333333336% 66.66666666666667%}
.cell-sixteen-10{background-position:66.66666666666667% 66.66666666666667%}
.cell-sixteen-11{background-position:100.0% 66.66666666666667%}
.cell-sixteen-12{background-position:0.0% 100.0%}
.cell-sixteen-13{background-position:33.333333333333336% 100.0%}
.cell-sixteen-14{background-position:66.66666666666667% 100.0%}
.cell-sixteen-15{background-position:100.0% 100.0%}

.starfall-impact{position:absolute;left:35%;top:40%;font-size:58px;color:#e1ddff;text-shadow:0 0 14px #7e8dff;pointer-events:none;z-index:6}

/* Grip anchors put the palm over the handle, rather than floating beside it. */
.modular-character .main-hand{top:15%;left:47%}.modular-character .off-hand:not(.weapon-shield):not(.weapon-book){left:3%;top:20%;rotate:-20deg}.modular-character .main-hand:is(.weapon-mace2,.weapon-axe2,.weapon-sword2,.weapon-staff){top:3%;left:41%}.modular-character .main-hand.weapon-dagger{top:32%}.modular-character .weapon-shield,.modular-character .weapon-book{top:43%;left:0}.modular-character>.hand-grip{z-index:5;pointer-events:none}.grip-right{clip-path:ellipse(7% 8% at 72% 70%)}.grip-left{clip-path:ellipse(7% 8% at 34% 70%)}.cat-form-v2{background-image:url('/assets/art/cat-forms-v2.png');background-size:200% 200%;aspect-ratio:1/1}.cat-cell-0{background-position:0 0}.cat-cell-1{background-position:100% 0}.cat-cell-2{background-position:0 100%}.cat-cell-3{background-position:100% 100%}.hunter-pose{background-image:url('/assets/art/hunter-poses-v1.png');background-size:400% 400%;aspect-ratio:1/1}.hunter-pose.tier-2{filter:drop-shadow(0 0 2px #a59860)}.hunter-pose.tier-3{filter:drop-shadow(0 0 4px #b9a76e)}.hunter-arrow,.hunter-bullet{position:absolute;pointer-events:none;z-index:15;transform-origin:0 50%}.hunter-arrow{width:64px;height:12px}.hunter-arrow svg{width:100%;height:100%}.hunter-bullet{width:22px;height:3px;background:#fff0ae;box-shadow:-10px 0 4px #ffe19a}.muzzle-flash{position:absolute;left:80%;top:56%;font-size:30px;color:#ffe0a1;pointer-events:none;z-index:12}.arrow-hit{position:absolute;left:45%;top:60%;width:15px;height:15px;border:2px solid #e8cf96;clip-path:polygon(45% 0,60% 35%,100% 45%,65% 60%,55% 100%,35% 65%,0 50%,35% 35%);pointer-events:none}

/* Per-body skeleton replaces the old floating CSS weapon layers. */
.character-rig{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.modular-character.shadowform .character-rig{filter:sepia(.55) saturate(2.2) hue-rotate(215deg) brightness(.72) drop-shadow(0 0 8px #9836d8)}
.modular-character.holy-presence .character-rig{filter:drop-shadow(0 0 6px #ffe6a080)}
.holy-presence:after{content:"";position:absolute;width:30%;height:8%;border:2px solid #ffe7a7;border-radius:50%;left:42%;top:2%;box-shadow:0 0 9px #ffc75d}
.discipline-presence .character-rig{filter:drop-shadow(0 0 4px #c9ddff88)}
.battle-pet{position:absolute;z-index:8;bottom:-3%;left:56%;width:57%;height:44%;pointer-events:none;filter:drop-shadow(0 4px 3px #0007);transform-origin:50% 80%}
.battle-pet img,.battle-pet svg{width:100%;height:100%;object-fit:contain;object-position:bottom}
.battle-pet.pet-imp,.battle-pet.pet-voidwalker,.battle-pet.pet-felhunter{height:53%;width:48%;left:63%}
.pet-quality-rare{filter:drop-shadow(0 0 3px #3582d7)}.pet-quality-epic{filter:drop-shadow(0 0 4px #af63df)}
.pet-choices{display:flex;gap:6px;flex-wrap:wrap}.pet-choices button[aria-pressed=true]{border-color:#e5b965;box-shadow:0 0 8px #d89b4e55}

.pet-discovery{height:100%;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:30px;padding:4vh 8vw;background:linear-gradient(90deg,#17251b22,#17251b99),url(/assets/art/elwynn-scenes-v1.png) left top/200% 200%}.pet-discovery-art{height:60vh;position:relative}.pet-discovery-art .combat-sprite{width:100%;height:100%}.pet-discovery .parchment{padding:30px}.pet-discovery button{margin:8px}.pet-discovery small{display:block}

.hunter-pose{position:relative;overflow:visible}.spec-fire .character-rig{filter:sepia(.6) saturate(1.5) hue-rotate(320deg)}.spec-arcane .character-rig{filter:hue-rotate(35deg)}

.modular-character .defias-mask{top:43%;left:48%;width:28%;height:11%}

.pet-discovery-art>.battle-pet{left:0;bottom:0;width:100%;height:100%}

/* Companions occupy the rear flank, behind the owner's silhouette. */
.hunter-pose{background-image:none;isolation:isolate}
.hunter-body{position:absolute;inset:0;z-index:2;background-image:url('/assets/art/hunter-poses-v1.png');background-size:400% 400%;background-repeat:no-repeat}
.hunter-body.human-hunter{background-image:url('/assets/art/human-hunter-v2.png');background-size:200% 100%;background-position:0 0}
.hunter-body.human-hunter-gun{background-position:100% 0}
.character-rig{z-index:2}
.battle-pet{z-index:1;left:29%;bottom:0;width:90%;height:75%;transform-origin:50% 85%}
.battle-pet.pet-imp,.battle-pet.pet-voidwalker,.battle-pet.pet-felhunter{left:40%;width:71%;height:72%}
.pet-discovery-art>.battle-pet{left:0;bottom:0;width:100%;height:100%}

/* Rear-left companion station: visible beside, never under the owner's feet. */
.battle-pet{left:-51%;bottom:8%;width:84%;height:76%;z-index:3}
.battle-pet.pet-imp,.battle-pet.pet-voidwalker,.battle-pet.pet-felhunter{left:-40%;bottom:8%;width:70%;height:74%}
.pet-discovery-art>.battle-pet{left:0;bottom:0;width:100%;height:100%}
