/* On-map combat: no modal or blurred playfield, skills stay bottom-centred. */
.field-actionbar{position:fixed;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:65;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 10px;max-width:calc(100vw - 28px);border:1px solid #b5cfb6a8;border-radius:15px;background:#152f3bec;box-shadow:0 6px 24px #071823ac;color:#e9f6ed}
.field-auto-toggle,.field-skill{display:flex;flex-direction:column;justify-content:center;align-items:center;flex-shrink:0;width:54px;height:54px;border:1px solid #799b9f;border-radius:9px;background:linear-gradient(155deg,#38535d,#1c333d);color:#f3f5ed;cursor:pointer;position:relative}
.field-auto-toggle span,.field-skill-symbol{font-size:24px;line-height:1.1}
.field-auto-toggle small{font-size:8px;margin-top:4px;white-space:nowrap}
.field-skill small{position:absolute;bottom:2px;right:4px;font-size:9px;color:#f2d38c;font-weight:900}
.field-skill.chosen,.field-auto-toggle.enabled{border-color:#f2d18d;box-shadow:inset 0 0 10px #c99a5266,0 0 0 1px #f3d39a7a}
.field-combat-status{position:fixed;left:50%;top:clamp(70px,13vh,116px);transform:translateX(-50%);z-index:68;width:min(340px,calc(100vw - 35px));border:1px solid #d5c3a8;border-radius:12px;background:#182d38ef;box-shadow:0 7px 22px #081a22a0;padding:10px 14px;color:white}
.field-combat-opponent,.field-combat-resources{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:11px}
.field-combat-opponent strong{font-size:12px}.field-combat-opponent span{font-variant-numeric:tabular-nums;color:#f3ddba}
.field-combat-bar{height:9px;border-radius:20px;background:#421e27;overflow:hidden;margin:7px 0}
.field-combat-bar>span{display:block;height:100%;background:linear-gradient(90deg,#b13c55,#f07060);transition:width .2s linear}
.field-combat-resources{color:#dce9e8}.field-combat-resources b{color:#fff;font-size:12px}
.field-combat-status p{font-size:10px;color:#f6d9a3;min-height:14px;margin:7px 0 5px}
.field-stop-combat{font-size:10px;background:#44535d;color:#edf2f1;border:1px solid #9bafb1;padding:5px 9px;border-radius:6px}
.valley-mob.combat-target .mob-figure{filter:drop-shadow(0 0 11px #ffd67a)}
.valley-mob.combat-target .mob-label{border-color:#ffd785;background:#564038d9}
.valley-mob.combat-target .mob-label small{color:#fff2bb}
.valley-avatar.combat-striking .walker-character{animation:field-strike .4s ease-out}
.valley-mob.combat-hit .mob-figure{animation:field-hit .4s ease-out}
.field-floating-hit{position:absolute;left:50%;bottom:105%;transform:translateX(-50%);font-size:23px;font-weight:900;color:#fff1c5;text-shadow:0 2px 4px #000,0 0 8px #e45240;pointer-events:none;animation:field-hit-number .8s ease-out forwards;z-index:11}
.field-floating-hit.critical{color:#ffcb5f;font-size:29px}
.field-floating-heal{position:absolute;bottom:117%;left:50%;color:#b5ffb1;font-weight:800;pointer-events:none;animation:field-hit-number .75s forwards}
@keyframes field-hit-number{from{opacity:1;transform:translate(-50%,0)}to{opacity:0;transform:translate(-50%,-50px)}}
@keyframes field-strike{0%{transform:translateX(0)}45%{transform:translateX(13px) scale(1.07)}100%{transform:translateX(0)}}
@keyframes field-hit{0%{transform:translateX(0)}40%{transform:translateX(7px) rotate(5deg)}100%{transform:translateX(0)}}
@media(max-width:650px){.field-actionbar{gap:3px;padding:5px;bottom:5px}.field-auto-toggle,.field-skill{width:39px;height:44px}.field-auto-toggle span,.field-skill-symbol{font-size:19px}.field-auto-toggle small{font-size:6px}.field-combat-status{top:54px;width:min(280px,calc(100vw - 25px));padding:7px 10px}.field-combat-opponent strong{font-size:10px}}
@media(prefers-reduced-motion:reduce){.field-floating-hit,.valley-avatar.combat-striking .walker-character,.valley-mob.combat-hit .mob-figure{animation:none!important}}

/* Target HP bar belongs to the mob's actual world position. */
.mob-combat-hp{display:none;width:86px;max-width:100%;height:7px;overflow:hidden;border-radius:8px;border:1px solid #d4c7b0;background:#39232b;flex-shrink:0;margin:3px 0 0}
.mob-combat-hp>i{display:block;height:100%;width:100%;background:linear-gradient(90deg,#b8334d,#f47d69);transition:width .18s linear}
.valley-mob.combat-target .mob-combat-hp{display:block}

/* All mobs display real permanent HP, not only selected targets. */
.valley-mob .mob-label{min-width:103px;gap:2px;padding:5px 7px}
.valley-mob .mob-label strong{font-size:10px}
.valley-mob .mob-label .mob-combat-hp{display:block!important;position:relative;min-width:80px;width:100%;max-width:none;height:7px;margin:2px 0 0;border:1px solid #b4d2c2;background:#304942}
.valley-mob .mob-label .mob-combat-hp>i{display:block;height:100%;background:linear-gradient(90deg,#2cbe7b,#72edab);transition:width .2s ease}
.valley-mob.combat-target .mob-label .mob-combat-hp>i{background:linear-gradient(90deg,#d47932,#f1cc73)}
.valley-mob .mob-label .mob-hp-text{font-size:8px;color:#d8f2e5;font-variant-numeric:tabular-nums}
.field-floating-hit{white-space:nowrap;z-index:30;user-select:none;pointer-events:none}
.field-floating-hit.damage-normal{color:#fff7e1}
.field-floating-hit.damage-blocked{color:#88bdff}
.field-floating-hit.damage-critical{color:#ffe264;font-size:29px}
.field-floating-hit.damage-crit-blocked{color:#ca9eff;font-size:29px}
.field-floating-hit.damage-received{color:#ff9595}
.field-floating-hit.damage-enemy-crit{color:#ff4d64;font-size:29px}
.field-floating-hit.damage-dodge{color:#a2e0de;font-size:18px}

/* Mob identity is above its animated model, matching the player's overhead badge. */
.valley-mob{height:154px;justify-content:center}
.valley-mob .mob-label{order:-1;margin-bottom:3px;box-shadow:0 4px 10px #102d2a8c}
.valley-mob .mob-figure{order:0}


/* M1.24 — combat UI stays on the field without modal bars or selection rectangles. */
.field-combat-container,.field-combat-status{display:none!important}
.valley-mob.combat-target{outline:none!important;border:0!important;box-shadow:none!important}
.valley-mob.combat-target .mob-figure{filter:none!important}
.valley-mob.combat-target .mob-label{border-color:#a9c7b9b8!important;background:#213d40d9!important}
.valley-mob:focus:not(:focus-visible){outline:none!important}
.valley-mob:focus-visible{outline:2px solid #d8e3e1;outline-offset:4px}
.valley-mob.mob-defeated{opacity:.77!important;filter:none!important;pointer-events:auto!important;cursor:pointer}
.valley-mob.mob-defeated .mob-figure{opacity:.65;filter:grayscale(.55);transform:none!important}
.valley-mob.mob-defeated .mob-figure img{transform:rotate(85deg) scale(.76)!important;filter:saturate(.35);opacity:.85}
.valley-mob.mob-defeated .mob-label{opacity:.68}
.valley-mob.mob-defeated .mob-label .mob-combat-hp>i{width:0!important;background:#667c72}
.valley-mob.mob-defeated:not(.corpse-lootable){opacity:.48!important}
.valley-mob.corpse-lootable .mob-figure{position:relative}
.valley-mob.corpse-lootable .mob-figure::before,
.valley-mob.corpse-lootable .mob-figure::after{
 content:"";position:absolute;pointer-events:none;left:50%;top:50%;width:86px;height:80px;
 transform:translate(-50%,-50%);background:
 radial-gradient(circle at 14% 28%,#ffd76e 0 2px,transparent 4px),
 radial-gradient(circle at 74% 11%,#fff1a4 0 2px,transparent 4px),
 radial-gradient(circle at 53% 78%,#eeb94f 0 3px,transparent 5px),
 radial-gradient(circle at 90% 65%,#ffc850 0 2px,transparent 4px),
 radial-gradient(circle at 38% 42%,#fff1a4 0 2px,transparent 4px);
 animation:corpse-gold-sparks 1.9s ease-in-out infinite alternate;
 filter:drop-shadow(0 0 5px #ffc15d);
}
.valley-mob.corpse-lootable .mob-figure::after{
 animation-delay:-.8s;transform:translate(-48%,-48%) scale(.85);opacity:.6;
}
@keyframes corpse-gold-sparks{
 from{opacity:.45;transform:translate(-50%,-39%) scale(.93)}
 to{opacity:1;transform:translate(-50%,-69%) scale(1.1)}
}
.corpse-loot-panel{
 position:fixed;z-index:110;top:35%;left:50%;transform:translate(-50%,-30%);
 width:min(320px,calc(100vw - 30px));padding:12px;
 border:1px solid #b49b67;border-radius:12px;background:#18303bea;
 box-shadow:0 12px 32px #071820c9;color:#f1f3e8;backdrop-filter:blur(5px);
}
.corpse-loot-panel header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.corpse-loot-panel header strong{font-size:13px}
.corpse-loot-panel header button{border:0;background:transparent;color:#edeee6;font-size:24px;cursor:pointer}
.corpse-loot-items{max-height:210px;overflow:auto;display:grid;gap:6px}
.corpse-loot-items p{font-size:12px;color:#b9ccca}
.corpse-loot-item{display:flex;align-items:center;gap:11px;border:1px solid #8e9695;border-radius:7px;padding:6px;background:#273e49}
.corpse-loot-item.rarity-uncommon{border-color:#56bb80}.corpse-loot-item.rarity-rare{border-color:#65a8fb}
.corpse-loot-item.rarity-epic{border-color:#bc85e7}.corpse-loot-item.rarity-legendary{border-color:#e7b35e}
.corpse-loot-item img{width:42px;height:42px;object-fit:contain}
.corpse-loot-item span{display:flex;flex-direction:column;gap:4px}
.corpse-loot-item strong{font-size:12px}.corpse-loot-item small{font-size:11px;color:#e1d1ac}
.corpse-loot-take{display:block;width:100%;margin-top:10px;border:1px solid #e4bc7a;border-radius:7px;background:#715638;color:#fff4d6;font-weight:700;padding:9px;cursor:pointer}
.field-reward-float{
 position:absolute;bottom:95%;left:50%;z-index:25;transform:translate(-50%,0);
 pointer-events:none;white-space:nowrap;font-size:17px;font-weight:900;
 text-shadow:0 2px 5px #101b18,0 0 8px #14231b;animation:field-reward-rise 1.7s ease-out forwards;
}
.field-reward-float.xp{color:#9af6d2}
.field-reward-float.coins{color:#ffd577;animation-delay:.18s}
@keyframes field-reward-rise{0%{opacity:0;transform:translate(-50%,4px)}15%{opacity:1}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-78px)}}
@media(prefers-reduced-motion:reduce){
 .valley-mob.corpse-lootable .mob-figure::before,.valley-mob.corpse-lootable .mob-figure::after,
 .field-reward-float{animation:none!important;opacity:1}
}

/* M1.25 world-space physical slashes and lightweight spell projectiles. */
.field-attack-burst{position:absolute;left:50%;top:43%;width:84px;height:82px;transform:translate(-50%,-50%);
 z-index:26;pointer-events:none;animation:field-impact-scale .52s ease-out forwards}
.field-attack-burst::before,.field-attack-burst::after{content:"";position:absolute;pointer-events:none}
.field-attack-burst.burst-slash::before,.field-attack-burst.burst-daggers::before{
 inset:7px 12px;border-top:6px solid #ffe6a3;border-right:5px solid #fff5cf;border-radius:85% 60% 60% 0;
 transform:rotate(-35deg);filter:drop-shadow(0 0 8px #ffcb56)}
.field-attack-burst.burst-daggers::after{inset:14px 20px;border-top:5px solid #d2f6f9;border-left:4px solid #f6edff;
 border-radius:70% 40%;transform:rotate(42deg)}
.field-attack-burst.burst-impact::before{inset:17px;border:5px solid #ffecc0;border-radius:50%;
 box-shadow:0 0 16px #ffd27e,0 0 22px #cfa96c inset}
.field-attack-burst.burst-fire::before,.field-attack-burst.burst-ice::before,.field-attack-burst.burst-dark::before,
.field-attack-burst.burst-arrow::before,.field-attack-burst.burst-hostile::before{
 inset:10px;border:4px solid #ffecc5;border-radius:50%;box-shadow:0 0 20px #f9d78b;transform:scale(1.1)}
.field-attack-burst.burst-fire::before{border-color:#ffac59;box-shadow:0 0 21px #ff6a20,0 0 12px #ffd06c inset}
.field-attack-burst.burst-ice::before{border-color:#c5f5ff;box-shadow:0 0 21px #62d9ff,0 0 14px #9be7ff inset}
.field-attack-burst.burst-dark::before{border-color:#d4adff;box-shadow:0 0 23px #9851d7,0 0 14px #c9a3ff inset}
.field-attack-burst.burst-hostile::before{border-color:#ff7281;box-shadow:0 0 22px #e75564}
.field-attack-burst.critical{filter:brightness(1.35) drop-shadow(0 0 9px #fff3a5)}
@keyframes field-impact-scale{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(-35deg)}
 30%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.45) rotate(24deg)}}
.field-attack-projectile{position:absolute;width:20px;height:20px;border-radius:50%;z-index:29;pointer-events:none;
 background:radial-gradient(circle,#fff 2px,#7db4d3 7px,transparent 12px);filter:drop-shadow(0 0 10px #a4e2fe);
 animation:field-projectile-flight .5s ease-out forwards;will-change:transform}
.field-attack-projectile.projectile-arrow{width:38px;height:5px;border-radius:0;
 background:linear-gradient(90deg,#b9905c,#fff1cf);transform-origin:center;filter:drop-shadow(0 0 6px #e2c899)}
.field-attack-projectile.projectile-fire{background:radial-gradient(circle,#fff4bd,#ffa12a 38%,#f35229 60%,transparent 73%);
 box-shadow:0 0 15px #ff7733}
.field-attack-projectile.projectile-ice{background:radial-gradient(circle,#f8ffff,#86dcff 45%,#2b92da 65%,transparent 76%);
 box-shadow:0 0 15px #79d5ff}
.field-attack-projectile.projectile-dark{background:radial-gradient(circle,#f2ddff,#a76bfb 43%,#593393 66%,transparent 76%);
 box-shadow:0 0 15px #9c69ed}
@keyframes field-projectile-flight{from{opacity:1;transform:translate(0,0) rotate(var(--shot-angle))}
 to{opacity:0;transform:translate(var(--travel-x),var(--travel-y)) rotate(var(--shot-angle))}}
.valley-mob.mob-tab-selected:not(.mob-defeated) .mob-label{box-shadow:0 0 0 2px #ecd18c,0 5px 15px #1a353b66;
 border-color:#d9bc80!important}
.valley-mob.mob-tab-selected:not(.mob-defeated) .mob-figure{filter:drop-shadow(0 0 5px #e7cd8a)}
@media(prefers-reduced-motion:reduce){.field-attack-burst,.field-attack-projectile{animation:none!important;opacity:.8;will-change:auto}}
