.bf-fire-trail { position:absolute; z-index:2; pointer-events:none; overflow:visible; }
.bf-fire-trail[data-ember="true"] path{opacity:.25}
/* Equipment state cues stay close to the body and never cover the head/joystick. */
.bf-gear-effects{position:absolute;inset:0;z-index:2;pointer-events:none}
.bf-gear-effects>i{position:absolute;display:block;box-sizing:border-box;pointer-events:none;font-style:normal}
.bf-unit[data-kind="player"]>.bf-head{z-index:5}
[data-gear-fx="shield"]{inset:-7px;border:1.2px solid #f5db98;border-radius:48% 48% 44% 44%;background:radial-gradient(ellipse,transparent 55%,#e8cd7220 84%,#ffe5a733);box-shadow:0 0 4px #f7db7844,inset 0 0 5px #f5e2a322}
[data-gear-fx="shield"]::after{content:'';position:absolute;inset:4px;border:1px solid transparent;border-top-color:#fff3bd88;border-bottom-color:#c5a35a55;border-radius:inherit}
[data-gear-fx="wind"]{inset:0;overflow:visible}
[data-gear-fx="wind"] svg{position:absolute;left:0;top:0;overflow:visible}
[data-gear-fx="wind"] path{fill:#b8ecdf;opacity:.55}
[data-gear-fx="wind"] path:nth-child(2){fill:#edfff8;opacity:.9}
[data-gear-fx="soul"]{inset:-5px;border:1px solid transparent;border-left-color:#fff3c5aa;border-right-color:#eddbacaa;border-radius:50%;box-shadow:0 0 4px #f5e3aa22}
[data-gear-fx="soul"]>b{position:absolute;width:4px;height:7px;left:-2px;top:46%;background:#fff0c2;border-radius:80% 25% 80% 25%;transform:rotate(40deg)}
[data-gear-fx="soul"]>b+b{left:auto;right:-2px;transform:rotate(220deg)}
[data-gear-fx="immune"]{inset:-3px;border:1px solid #e6f7ffb3;border-radius:50%;box-shadow:0 0 6px #d8f0ff55}
[data-gear-fx="heal"]{inset:12% -10% -8%;border-radius:50%;border:1px solid #b5ffd499;background:radial-gradient(ellipse at 50% 75%,#78e8a44d,transparent 68%);box-shadow:0 3px 8px #7ce4aa33}
[data-gear-fx="heal"][data-enhanced="true"]{box-shadow:0 0 0 4px #a3efbd22,0 3px 10px #7ce4aa44}
[data-gear-fx="equip"]{inset:-4px;border:1px solid #f2e4b899;border-radius:50%;box-shadow:0 0 6px #f5e6b444}
[data-gear-fx="burn"]{inset:1px;border-radius:50%;background:#e98538;box-shadow:0 0 4px #f19a4355}
.bf-entry { position:absolute; right:14px; top:72px; z-index:15; font-size:13px; padding:6px 10px; }
.battlefield-p1 { position:absolute; inset:0; z-index:1600; display:flex; flex-direction:column; overflow:hidden; background:#132727; color:#f3eed8; font:16px sans-serif; }
.battlefield-p1 header,.battlefield-p1 footer { flex:0 0 54px; height:54px; min-height:54px; padding:8px 12px; display:flex; align-items:center; gap:10px; background:#183a3a; box-sizing:border-box; }
.battlefield-p1 header span { flex:1; font-size:12px; }
.battlefield-p1 button { font:14px sans-serif; padding:8px; border:1px solid #b4ac87; border-radius:5px; color:#f3eed8; background:#295252; }
.battlefield-p1 footer span { flex:1; font-size:12px; }
.battlefield-p1 [hidden] { display:none!important; }
.bf-viewport { flex:1; min-height:0; position:relative; overflow:hidden; touch-action:none; user-select:none; -webkit-user-select:none; -webkit-touch-callout:none; }
.bf-world { position:absolute; top:0; left:0; box-sizing:border-box; border:8px solid #c4b37a; background-color:#315546; background-image:linear-gradient(#64785a66 1px,transparent 1px),linear-gradient(90deg,#64785a66 1px,transparent 1px); background-size:80px 80px; will-change:transform; }
.bf-unit { position:absolute; left:0; top:0; will-change:transform; }
.bf-art { width:100%; height:100%; border-radius:50%; border:2px solid #ecda9e; box-sizing:border-box; background:#2b6890; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.bf-unit[data-kind="monster"] .bf-art { background:#775147; border-color:#e6a791; }
.bf-art img { width:100%; height:100%; object-fit:cover; }
.bf-head { position:absolute; width:132px; left:50%; bottom:calc(100% + 6px); transform:translateX(-50%); text-align:center; text-shadow:0 1px 3px #000; pointer-events:none; }
.bf-head b { font-size:13px; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bf-head small { font:12px sans-serif; }
.bf-hp { height:6px; background:#291e22; border:1px solid #a4af99; border-radius:3px; margin:3px 10px; overflow:hidden; }
.bf-hp i { display:block; height:100%; background:#72c888; }
/* The player's weapon bar owns a fixed, light row directly under HP. It never
   changes head height between firing, reload, readiness or weapon swaps. */
.bf-weapon-cooldown{height:3px;margin:0 10px 3px;display:flex;gap:2px;border-radius:2px;overflow:hidden;background:#14282b70;box-shadow:0 0 0 1px #bcd1c318;pointer-events:none}
.bf-weapon-cooldown[data-available="false"]{visibility:hidden}
.bf-weapon-cooldown>i{display:block;flex:1;min-width:0;height:100%;background:var(--bf-weapon-color,#f0e7c8);transform-origin:left center;opacity:.85}
.bf-weapon-cooldown[data-phase="flight"]>i{opacity:0}
.bf-weapon-cooldown.bf-weapon-magazine{background:transparent;box-shadow:none;border-radius:0}
.bf-weapon-magazine>i{border-radius:1px;background:#14282b99;box-shadow:inset 0 0 0 1px #bed0c72c}
.bf-weapon-magazine>i[data-filled="true"]{background:var(--bf-weapon-color,#f0e7c8);box-shadow:none}
.bf-weapon-magazine[data-phase="reload"]>i[data-filled="true"]{opacity:.6}
.bf-hit { animation:bf-hit 180ms ease-out; }
@keyframes bf-hit { 0%,100% { transform:translateX(0); } 25% { transform:translateX(-3px); filter:brightness(1.8); } 60% { transform:translateX(3px); } }
.bf-float { position:absolute; z-index:4; font:bold 21px sans-serif; text-shadow:0 1px 2px #000; pointer-events:none; animation:bf-float 900ms ease-out both; }
.bf-damage { color:#ff6666; } .bf-heal { color:#75ff8d; }
@keyframes bf-float { from { transform:translate(-50%,0); opacity:1; } to { transform:translate(-50%,-50px); opacity:0; } }
.bf-joystick { position:absolute; bottom:24px; left:24px; width:150px; height:150px; box-sizing:border-box; border-radius:50%; background:radial-gradient(circle,#ffffff0a 48%,#f4f4ee24 70%); border:1px solid #ffffffe0; box-shadow:0 2px 8px #142a343b,inset 0 0 0 6px #ffffff12; touch-action:none; }
.bf-joystick::before { content:''; position:absolute; inset:12px; border:1px solid #ffffff40; border-radius:50%; pointer-events:none; }
.bf-joystick i { position:absolute; left:calc(50% - 26px); top:calc(50% - 26px); width:52px; height:52px; box-sizing:border-box; border:1px solid #ffffffdc; border-radius:50%; background:radial-gradient(circle at 35% 28%,#ffffffd9,#eff3ed91); box-shadow:0 2px 5px #10273038; pointer-events:none; }
.bf-joystick[data-active] i { background:#ffffffe0; }
.bf-confirm { position:absolute; inset:0; display:grid; place-items:center; background:#0009; z-index:9; }
.bf-confirm>div { padding:25px; background:#183a3a; border:1px solid #b4ac87; border-radius:8px; }
.bf-progress { flex:1; min-width:0; font:12px sans-serif; }
.bf-xp-track { height:6px; margin-top:5px; background:#10272e; border:1px solid #7bafa8; border-radius:4px; overflow:hidden; }
.bf-xp-track i { display:block; height:100%; width:0; background:#72d7e0; }
.bf-crystal { position:absolute; width:12px; height:16px; margin-left:-6px; margin-top:-8px; transform:rotate(35deg); border:2px solid #cbffff; border-radius:3px; background:#42bece; box-shadow:0 0 8px #8cffff; pointer-events:none; }
.bf-landing { animation:bf-crystal-land 300ms ease-out; }
@keyframes bf-crystal-land { from { transform:translateY(-24px) rotate(0deg); opacity:.3; } 65% { transform:translateY(3px) rotate(35deg); opacity:1; } to { transform:rotate(35deg); } }
.bf-dead { animation:bf-death 550ms ease-out forwards; pointer-events:none; }
.bf-dead .bf-head { display:none; }
@keyframes bf-death { to { opacity:0; } }
.bf-debug { position:relative; font:12px sans-serif; }
.bf-debug summary { cursor:pointer; padding:8px; }
.bf-debug>div { position:absolute; right:0; bottom:32px; width:140px; padding:12px; background:#183a3a; border:1px solid #b4ac87; z-index:8; }
.bf-debug button { display:block; margin-top:8px; }
.bf-dew { position:absolute; width:24px; height:24px; margin:-12px; border-radius:50% 50% 45% 45%; background:#298954; color:#edffe9; border:2px solid #c6edb4; box-shadow:0 0 8px #80c693; font:bold 22px/20px sans-serif; text-align:center; pointer-events:none; }
.bf-stage-notice { position:absolute; top:24%; left:0; right:0; text-align:center; color:#ffe8ac; text-shadow:0 2px 4px #000; font:bold 30px serif; pointer-events:none; z-index:6; }
.bf-summary { position:absolute; inset:54px 0; display:grid; place-items:center; background:#071a24b8; z-index:8; }
.bf-summary>div { padding:20px; max-width:92%; border:1px solid #b4ac87; border-radius:8px; background:#183a3a; font:16px/1.5 sans-serif; }
.bf-summary h3 { margin:0 0 14px; }.bf-summary p { margin:8px 0; }.bf-debug-used { color:#ffd08c; }
.battlefield-p1 [data-bf-clock] { white-space:nowrap; font:14px sans-serif; }
.bf-unit,.bf-crystal,.bf-dew { z-index:3; }
.bf-joystick { z-index:10; }
.bf-zone { position:absolute; box-sizing:border-box; border:3px solid #9cdfdf; border-radius:50%; box-shadow:0 0 0 2600px #541a293b; z-index:1; pointer-events:none; }
.bf-warning,.bf-entrance,.bf-area-pulse { position:absolute; box-sizing:border-box; border-radius:50%; display:grid; place-items:center; z-index:2; pointer-events:none; }
.bf-warning { border:3px dashed #ffb87b; background:radial-gradient(circle,#ff533333 0 var(--bf-charge,0%),#ff984a18 var(--bf-charge,0%) 100%); color:#ffe9b0; font:bold 20px sans-serif; }
.bf-warning span { align-self:start; margin-top:10px; text-shadow:0 1px 3px #000; }
.bf-entrance { border:3px dashed #e8c178; color:#ffe0a4; font:12px sans-serif; background:#9a602529; text-align:center; }
.bf-area-pulse { border:0; background:#c9344655; animation:bf-death 400ms forwards; }
.bf-center-marker { position:absolute; margin:-20px; width:40px; height:40px; border:2px solid #bbecdc; border-radius:50%; color:#c9f4de; font:12px/36px sans-serif; text-align:center; z-index:2; pointer-events:none; }
.bf-center-arrow { position:absolute; top:64px; right:18px; width:44px; text-align:center; z-index:6; color:#eff1b6; pointer-events:none; }
.bf-center-arrow b { display:block; font:32px sans-serif; }.bf-center-arrow small { font:12px sans-serif; }
.bf-zone-hint { position:absolute; top:10px; left:50%; transform:translateX(-50%); white-space:nowrap; font:13px sans-serif; color:#c9eddb; padding:5px; background:#132727bb; z-index:6; pointer-events:none; }
.bf-zone-hint.bf-outside { color:#ffc0ac; background:#661e2eb8; }
.bf-scenario { position:absolute; top:42px; left:12px; font:12px sans-serif; color:#ffda9c; z-index:6; pointer-events:none; }
.bf-unit[data-kind="miniBoss"] .bf-art { border:3px solid #f3bc68; background:#783a2d; }
.bf-unit[data-kind="finalBoss"] .bf-art { border:4px solid #ffad72; background:#752335; }
.bf-summary>div { max-height:94%; overflow:auto; box-sizing:border-box; }
.bf-summary { z-index:20; }
.bf-confirm { z-index:22; }
.bf-cast { position:absolute; pointer-events:none; z-index:2; }
.bf-cast svg { width:100%; height:100%; overflow:visible; }
.bf-cast svg circle,.bf-cast svg rect,.bf-cast svg path { fill:#df58623d; stroke:none; }
.bf-cast svg .bf-cast-arrow { fill:none; stroke:#fbe1d0; stroke-width:1.25; }
.bf-cast>span { position:absolute; left:50%; top:15%; transform:translateX(-50%); white-space:nowrap; color:#fff1c2; font:bold 16px sans-serif; text-shadow:0 1px 3px #000; }
.bf-cast .bf-cast-base>*{fill:#df58623d;stroke:none}.bf-cast .bf-cast-charge>*{fill:#b8253f66;stroke:none}
.bf-facing { position:absolute; inset:0; display:flex; align-items:center; justify-content:flex-end; color:#fff3af; font:bold 25px sans-serif; pointer-events:none; }
.bf-skill-badges { position:absolute; top:calc(100% + 3px); left:50%; transform:translateX(-50%); white-space:nowrap; font:11px sans-serif; color:#ffdd9f; background:#132727d9; padding:2px 4px; border-radius:4px; pointer-events:none; }
.bf-recovery .bf-art { border-color:#98e2d0!important; filter:saturate(.65); }
.bf-recovery .bf-skill-badges { color:#bcffe8; }
/* One world transform only. The border is paint, not an extra coordinate inset. */
.bf-world { border:0; box-shadow:inset 0 0 0 8px #c4b37a; transform-origin:0 0; }
.bf-joystick { left:50%; transform:translateX(-50%); }
.bf-head { width:144px; transform:translateX(-50%) scale(var(--bf-inverse-scale,1)); transform-origin:top center; }
.bf-head b { font-size:14px; line-height:17px; }
.bf-head small { line-height:15px; }
.bf-skill-badges { transform:translateX(-50%) scale(var(--bf-inverse-scale,1)); transform-origin:top center; }
.bf-cast>span { font-size:calc(16px * var(--bf-inverse-scale,1)); }
.bf-float { font-size:calc(21px * var(--bf-inverse-scale,1)); }
@keyframes bf-float { from { transform:translate(-50%,0); opacity:1; } to { transform:translate(-50%,var(--bf-float-rise,-50px)); opacity:0; } }
.bf-choice { position:absolute;inset:54px 0;z-index:21;display:grid;place-items:center;background:#071a24cc;touch-action:none; }
.bf-choice>div { width:calc(100% - 40px);max-height:96%;overflow:auto;padding:18px;box-sizing:border-box;border:1px solid #c7b87a;border-radius:10px;background:#183a3a; }
.bf-choice h3 { margin:0 0 8px;font-size:21px; }.bf-choice p{font-size:14px;margin:8px 0;}
.bf-choice [data-bf-choice-cards] { display:grid;gap:12px;margin:16px 0; }
.bf-choice [data-bf-option] { display:grid;gap:8px;text-align:left;padding:16px;min-height:105px; }
.bf-choice strong { color:#ffe4a2;font-size:22px; }.bf-choice span { font-size:16px; }.bf-choice small { font-size:14px; }
.bf-choice button:disabled { opacity:.6; }.bf-choice-paused .bf-world * { animation-play-state:paused!important; }
.bf-upgrades { position:relative;font-size:12px; }.bf-upgrades summary{cursor:pointer;padding:6px;}
.bf-upgrades>div { position:absolute;bottom:32px;right:0;z-index:12;width:200px;white-space:pre-line;padding:12px;background:#183a3a;border:1px solid #b4ac87;line-height:1.8; }
.bf-weapon-panel { position:absolute;top:57px;left:10px;z-index:12;max-width:300px;font:13px/1.6 sans-serif;background:#153333e8;border:1px solid #8b9d91;border-radius:5px;padding:4px 8px; }
.bf-weapon-panel>div { white-space:pre-line; }.bf-weapon-panel small{display:block;color:#f7df9d;}
.bf-replacement { position:absolute;bottom:184px;left:50%;transform:translateX(-50%);z-index:12;background:#183a3aee;border:1px solid #b7ba9d;padding:8px;white-space:nowrap;font-size:14px; }
.bf-replacement small{display:block;max-width:270px;white-space:normal;}.bf-replacement button{margin-left:8px;}
.bf-ground-weapon { position:absolute;width:32px;height:32px;margin:-16px;color:#fff;background:#53635c;border:2px solid #e4e4dd;border-radius:5px;text-align:center;line-height:30px;pointer-events:none;z-index:3; }
.bf-arrow { position:absolute;left:0;top:0;width:22px;height:3px;background:#efe9ce;transform-origin:0 50%;pointer-events:none;z-index:4; }
.bf-arrow:after{content:'';position:absolute;right:-3px;top:-3px;border-left:7px solid #fff6ca;border-top:4px solid transparent;border-bottom:4px solid transparent;}
.bf-weapon-action { position:absolute;left:0;top:0;transform-origin:0 0;font:40px/1 sans-serif;color:#fff1b7;pointer-events:none;z-index:4;width:70px;text-align:right; }
.bf-weapon-action.blade{font-size:0;}.bf-weapon-action.blade:before{content:'';position:absolute;left:10px;top:-40px;width:72px;height:80px;border-right:5px solid #fff2cf;border-radius:50%;transform-origin:0 50%;animation:bf-blade-swing 180ms ease-out both;}
@keyframes bf-blade-swing{from{transform:rotate(-40deg);opacity:.35;}to{transform:rotate(35deg);opacity:0;}}
.bf-choice-paused .bf-weapon-action:before{animation-play-state:paused!important;}
.bf-ground-weapon small{position:absolute;top:33px;left:50%;transform:translateX(-50%) scale(var(--bf-inverse-scale,1));transform-origin:top center;white-space:nowrap;color:#f6f6ec;font:12px sans-serif;text-shadow:0 1px 3px #000;}
/* Fixed HUD is outside the scaled world. */
.battlefield-p1>.bf-progress{flex:0 0 12px;padding:0 12px 5px;background:#183a3a;box-sizing:border-box}
.battlefield-p1>.bf-progress .bf-xp-track{margin:0;height:6px}
.bf-xp-track i{transition:width 180ms ease-out}
.battlefield-p1 header{gap:8px}.battlefield-p1 header strong{font-size:18px;white-space:nowrap}.battlefield-p1 header [data-bf-status]:empty{display:none}.battlefield-p1 header [data-bf-exit]{margin-left:0}

/* First-realm approved unit readability and lightweight resource absorption. */
.bf-unit[data-kind="monster"] .bf-hp{width:93px;margin-left:auto;margin-right:auto}
.bf-unit[data-kind="monster"] .bf-hp i{background:#e35d5d}
.bf-unit[data-kind="player"] .bf-hp i{background:#38c66d}
.bf-absorber{position:absolute;width:28px;height:28px;transform:translate(-50%,-50%);border:2px solid #fff;background:#b951d2;border-radius:7px;color:white;text-align:center;line-height:24px;font-style:normal;font-weight:bold;box-shadow:0 0 8px #dfb4ff;pointer-events:none;z-index:5}
.bf-absorb-progress{position:absolute;top:76px;left:0;right:0;text-align:center;pointer-events:none;color:#ede1c3;z-index:6;font-size:14px}

/* P10-1R: a baked local earth painting, bounded visual receipts; no world rules. */
.bf-world{background:#827e6c;background-image:none;box-shadow:inset 0 0 0 6px #969581}
.bf-decor{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.bf-terrain{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.bf-unit{z-index:3}.bf-crystal,.bf-dew{z-index:2}
.bf-cast{z-index:6}.bf-float{z-index:8}
.bf-zone{box-shadow:none;border-color:#ffc385;z-index:1}
.bf-pickup-ring{position:absolute;inset:-5px;border:1px solid #bceecb;border-radius:50%;opacity:0;pointer-events:none}
.bf-pickup-flight,.bf-death-ghost{position:absolute;left:0;top:0;pointer-events:none;z-index:5;transform-origin:center}
.bf-pickup-flight i{display:block;width:13px;height:17px;border:2px solid #eaffff;border-radius:3px;background:#50d4df;box-shadow:0 0 9px #b5ffff;transform:rotate(35deg);font:bold 17px/20px sans-serif;text-align:center;color:white}
.bf-flight-dew i{width:20px;height:20px;transform:none;border-radius:50%;background:#3eb57b;border-color:#dbffe5;box-shadow:0 0 9px #84edaf}
.bf-flight-equipment i{width:25px;height:25px;transform:none;background:#8e916f;border-color:#fff2c5;box-shadow:0 0 7px #f3e6b9}
.bf-item-received{color:#fff1b8;font-size:calc(17px * var(--bf-inverse-scale,1));white-space:nowrap}
/* P10-1S: periodic ground, transparent local marks, sparse non-colliding ruins. */
.bf-ground-tile,.bf-ground-decals,.bf-ground-objects{position:absolute;inset:0;pointer-events:none}
.bf-ground-tile{background-color:#898270;background-repeat:repeat;background-size:512px 512px;z-index:0}
.bf-ground-decals{z-index:1}.bf-ground-objects{z-index:2}
.bf-ground-mark{position:absolute;pointer-events:none;user-select:none}

/* P10-2B: portrait tint only; preserve body size, labels and hit animation. */
.bf-art[data-visual-key="player_combat"]{background:#345e69;border-color:#e9deb0}
.bf-unit[data-kind="monster"] .bf-art[data-visual-key="xuanling_guard"]{background:#344956;border-color:#9eafc4}
.bf-unit[data-kind="monster"] .bf-art[data-visual-key="chixiao_wanderer"]{background:#623b36;border-color:#cb9584}
.bf-unit[data-kind="monster"] .bf-art[data-visual-key="yuling_envoy"]{background:#504959;border-color:#b1a1c4}
.bf-unit[data-kind="monster"] .bf-art[data-visual-key="liefeng_wolf"]{background:#384e58;border-color:#94b1b3}
.bf-unit[data-kind="player"] .bf-head,.bf-unit[data-kind="monster"] .bf-head{transform:translateX(-50%) scale(var(--bf-inverse-scale,1)) translateY(-8px)}

/* P10-3: fixed tier presentation only, no body size or combat changes. */
.bf-unit[data-boss-tier="1"] .bf-art{border:1.25px solid #c9b58a;background:#394650}
.bf-unit[data-boss-tier="2"] .bf-art{border:1.5px solid #e6c36f;background:#394650}
.bf-unit[data-boss-tier="3"] .bf-art{border:1.5px solid #ffe09a;background:#394650}
.bf-unit[data-boss-tier] .bf-head{transform:translateX(-50%) scale(var(--bf-inverse-scale,1)) translateY(-10px)}
.bf-unit[data-boss-tier="2"] .bf-hp{border-color:#dbc383}
.bf-unit[data-boss-tier="3"] .bf-hp{height:8px;border-color:#ffe09a;background:#39202c}
.bf-unit[data-boss-tier="3"] .bf-hp i{background:#dc6b67}
.bf-unit[data-boss-tier="3"] .bf-head b{font-size:15px;color:#ffe2a0}
/* P10-4 bounded, non-interactive feedback. Coordinates and hit regions unchanged. */
.bf-hit-tint{position:absolute;inset:0;border-radius:50%;background:#ff7464;opacity:0;pointer-events:none}
.bf-feedback{position:absolute;left:0;top:0;z-index:7;pointer-events:none;box-sizing:border-box}
.bf-feedback-shot{width:15px;height:15px;border-radius:50%;background:radial-gradient(circle,#fff 0 15%,#bceef5 25%,transparent 70%)}
.bf-feedback-spark{width:23px;height:23px;background:linear-gradient(transparent 43%,#e0ffff 48% 52%,transparent 57%),linear-gradient(90deg,transparent 43%,#c5f4ff 48% 52%,transparent 57%);border-radius:50%}
.bf-feedback-level,.bf-feedback-absorb{width:76px;height:76px;border:2px solid #eadca0;border-radius:50%;color:#fff2c1;text-align:center;font:bold 15px/72px sans-serif;background:radial-gradient(circle,transparent 55%,#f2da9c33 75%,transparent 80%)}
.bf-feedback-level{animation:bf-feedback-ring 450ms ease-out both}
.bf-feedback-absorb{border-color:#9ee7e9;animation:bf-feedback-ring 400ms ease-out both}
@keyframes bf-feedback-ring{from{width:40px;height:40px;line-height:36px}to{width:94px;height:94px;line-height:90px}}
.bf-absorb-particle{position:absolute;width:5px;height:5px;background:#c1ecf1;border-radius:50%;z-index:5;pointer-events:none}
.bf-arrow{animation:bf-arrow-born 90ms ease-out}
.bf-arrow::before{content:'';position:absolute;right:100%;top:0;height:3px;width:14px;background:linear-gradient(90deg,transparent,#bdeef0)}
@keyframes bf-arrow-born{from{background:#fff}to{background:#c5e8e6}}
.bf-weapon-action.blade::before{border-right-color:#dcffff;border-bottom-color:#a4dce8}
.bf-ground-weapon{animation:bf-gear-pop 180ms ease-out}
@keyframes bf-gear-pop{from{opacity:.3;scale:.8}to{opacity:1;scale:1}}
.bf-death-ghost[data-boss="true"] .bf-art{border-color:#efdab0}
.bf-choice:not([hidden])>div{animation:bf-choice-in 100ms ease-out}
@keyframes bf-choice-in{from{opacity:.5;scale:.985}to{opacity:1;scale:1}}
.bf-dashing .bf-art::after{content:'';position:absolute;inset:5px;border-radius:50%;border:2px solid #ffe5bc88;pointer-events:none}
.bf-cast-impact{pointer-events:none}.bf-cast-impact svg{opacity:.8}
.bf-pattern .bf-pattern-mark{display:none;stroke:none}
.bf-pattern[data-phase="impact"] .bf-pattern-mark{display:block;fill:#e9c79e}
.bf-pattern[data-phase="impact"][data-skill="meteor"] .bf-pattern-mark{fill:#d89565;stroke:#fce0a7;stroke-width:2}
.bf-pattern[data-falling="1"] .bf-pattern-mark{display:block;fill:#d89565;stroke:#fce0a7;stroke-width:2}
.bf-pattern[data-phase="impact"][data-skill="swordRain"] .bf-pattern-mark{fill:#f3e4b2}
.bf-pattern[data-phase="impact"][data-skill="spikes"] .bf-pattern-mark{fill:#ad94b7}
.bf-dashing::before{content:'';position:absolute;left:50%;top:50%;width:65px;height:20px;margin-top:-10px;transform-origin:0 50%;transform:rotate(var(--bf-dash-angle)) translateX(-95px);background:linear-gradient(90deg,transparent,#f2c99b55);border-radius:50%;pointer-events:none}
.bf-cast-impact[data-skill="sector"] svg{animation:bf-sector-release 220ms ease-out both}
@keyframes bf-sector-release{from{opacity:.9;clip-path:inset(0 0 70% 0)}to{opacity:0;clip-path:inset(0)}}

/* P10-4 human revision: broad tapered blade, filled telegraphs; visual range unchanged. */
.bf-weapon-action.blade::before{content:none}
.bf-weapon-action.blade{width:0;height:0;top:0;left:0;text-align:initial}
.bf-weapon-action.blade svg{position:absolute;left:-10px;top:-90px;width:110px;height:180px;overflow:visible;transform-origin:10px 90px;animation:bf-blade-swing 180ms ease-out both}
.bf-choice-paused .bf-weapon-action.blade svg{animation-play-state:paused!important}
.bf-cast-impact .bf-cast-charge{transform:scale(1)}
/* P10-5: scoped in-run UI tokens; warehouse/lobby/exchange deliberately excluded. */
.battlefield-p1,.bf-inventory[data-inventory-mode="loot"],.bf-inventory[data-inventory-mode="extraction"]{
 --bf-ui-bg:#172c30;--bf-ui-panel:#1d363bee;--bf-ui-border:#8e9475;--bf-ui-primary:#9ec8cf;--bf-ui-danger:#b75058;--bf-ui-heal:#64bf92;--bf-ui-text:#eee9d9;--bf-ui-muted:#a0aaa5;--bf-ui-gold:#cfbd89;--bf-ui-radius:8px;--bf-ui-line:1px;--bf-ui-shadow:0 8px 24px #08171955;--bf-ui-title:21px;--bf-ui-number:18px;--bf-ui-body:15px;--bf-ui-small:12px;--bf-ui-gap:10px;
 font-family:"Noto Serif SC","Songti SC",SimSun,serif;color:var(--bf-ui-text);background:var(--bf-ui-bg);
}
.battlefield-p1>header{flex:0 0 auto;min-height:64px;height:auto;gap:var(--bf-ui-gap);background:var(--bf-ui-bg);border-bottom:1px solid #8e947544}
.bf-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.battlefield-p1 .bf-title strong{font-size:var(--bf-ui-title)}
.battlefield-p1 .bf-title [data-bf-clock]{font-size:var(--bf-ui-small);color:var(--bf-ui-muted);white-space:normal;font-family:inherit;font-variant-numeric:tabular-nums}
.battlefield-p1 button{font:var(--bf-ui-body) inherit;min-height:44px;padding:8px 13px;background:#152b30;color:var(--bf-ui-text);border:1px solid var(--bf-ui-border);border-radius:var(--bf-ui-radius);cursor:pointer}
.battlefield-p1 button:focus-visible{outline:2px solid var(--bf-ui-primary);outline-offset:2px}.battlefield-p1 button:hover{border-color:var(--bf-ui-gold)}
.battlefield-p1 [data-bf-exit]{border-color:#886a65;color:#dcc5bd}.battlefield-p1 [data-bf-status]{position:absolute;top:66px;right:12px;z-index:19;max-width:85%;background:var(--bf-ui-panel);font-size:var(--bf-ui-small)}
.bf-player-status{flex:none;display:flex;gap:10px;align-items:center;padding:9px 12px;background:var(--bf-ui-bg)}
.bf-hud-portrait,.bf-boss-portrait{width:42px;height:42px;flex:none;border:1px solid var(--bf-ui-gold);border-radius:50%;overflow:hidden;background:#294147}
.bf-hud-portrait img,.bf-boss-portrait img{width:100%;height:100%;object-fit:cover}.bf-player-core{flex:1;min-width:0}
.bf-player-line{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px;font-size:var(--bf-ui-small)}.bf-player-line b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bf-player-line span{color:var(--bf-ui-gold);font-variant-numeric:tabular-nums}
.bf-player-health{position:relative;height:16px;border:1px solid #476b60;border-radius:4px;overflow:hidden;background:#132925}.bf-player-health i{display:block;height:100%;background:var(--bf-ui-heal)}.bf-player-health span{position:absolute;inset:0;text-align:center;font:12px/16px sans-serif;color:#f6f6e8;text-shadow:0 1px 2px #132925}
.bf-player-core .bf-xp-track{height:4px;border:0;margin-top:4px;background:#31454a}.bf-player-core .bf-xp-track i{background:var(--bf-ui-primary)}
.bf-player-tags{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--bf-ui-muted);margin-top:4px;min-height:0}.bf-player-tags:has(span:empty+span:empty){display:none}.bf-player-tags span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bf-boss-hud{flex:none;display:grid;gap:5px;padding:0 12px 8px;background:var(--bf-ui-bg)}
.bf-boss-hud article{display:flex;gap:9px;align-items:center;padding:6px 8px;border:1px solid #755b59;border-radius:var(--bf-ui-radius);background:#322d32}
.bf-boss-hud article[data-tier="2"]{border-color:#99785b}.bf-boss-hud article[data-tier="3"]{border-color:var(--bf-ui-gold);background:#392a2e}
.bf-boss-hud .bf-boss-portrait{width:34px;height:34px;border-color:#8e8577}.bf-boss-portrait[data-visual-key="boss_xuanling"]{border-color:#718c9a}.bf-boss-portrait[data-visual-key="boss_chixiao"]{border-color:#af8071}.bf-boss-portrait[data-visual-key="boss_youming"]{border-color:#8b7c9b}
.bf-boss-info{flex:1;min-width:0}.bf-boss-info>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--bf-ui-small)}.bf-boss-info b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#e6d3ba}.bf-boss-info span{white-space:nowrap;font-variant-numeric:tabular-nums;color:#d5b9b9}
.bf-boss-health{height:7px;background:#281d25;margin-top:6px;border-radius:4px;overflow:hidden}.bf-boss-health i{display:block;height:100%;background:var(--bf-ui-danger)}
.bf-low-health .bf-player-health{border-color:var(--bf-ui-danger);outline:1px solid #b7505844}.bf-low-health .bf-viewport::after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 25px #711c2833;z-index:7}
.bf-absorb-progress{position:absolute;top:auto;bottom:176px;left:50%;right:auto;transform:translateX(-50%);max-width:75%;min-width:180px;padding:6px 10px;background:var(--bf-ui-panel);border:1px solid #8e947555;border-radius:var(--bf-ui-radius);font-size:var(--bf-ui-small);color:var(--bf-ui-primary);pointer-events:none;z-index:18}
.bf-absorb-progress>div{height:3px;background:#31454a;margin-top:4px;border-radius:2px;overflow:hidden}.bf-absorb-progress i{display:block;height:100%;background:var(--bf-ui-primary)}
.bf-stage-notice{top:28%;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:85%;padding:9px 16px;font:var(--bf-ui-body) "Noto Serif SC","Songti SC",SimSun,serif;color:var(--bf-ui-gold);background:#172c30e6;border:1px solid #8e947566;border-radius:var(--bf-ui-radius);text-shadow:none;z-index:18;box-sizing:border-box}
.bf-stage-notice[data-tone="danger"]{color:#edc4b5;border-color:#936b60}.bf-stage-notice[data-tone="major"]{color:#ecd7a6;border-color:var(--bf-ui-gold);font-size:var(--bf-ui-number)}
.bf-heal{color:var(--bf-ui-heal)}.bf-zone-hint{border-radius:var(--bf-ui-radius);font-size:var(--bf-ui-small)}
.bf-choice,.bf-confirm,.bf-summary{inset:0;background:#0c191ec7}.bf-choice>div,.bf-confirm>div,.bf-summary>div{background:var(--bf-ui-bg);border:1px solid var(--bf-ui-border);border-radius:var(--bf-ui-radius);box-shadow:var(--bf-ui-shadow);font-family:inherit;padding:20px;width:calc(100% - 36px);max-width:440px;box-sizing:border-box}
.bf-choice h3,.bf-confirm h3,.bf-summary h3{font-size:var(--bf-ui-title);color:var(--bf-ui-gold);text-align:center;margin:0 0 10px}.bf-choice p{font-size:var(--bf-ui-small);color:var(--bf-ui-muted);text-align:center}
.bf-choice [data-bf-choice-cards]{gap:10px;margin:12px 0}.bf-choice [data-bf-option]{position:relative;min-height:94px;padding:12px 12px 12px 66px;display:flex;flex-direction:column;gap:4px;background:var(--bf-ui-panel);border-color:#8e947580}
.bf-choice [data-bf-option] strong{font-size:var(--bf-ui-number);color:var(--bf-ui-text)}.bf-choice [data-bf-option] span{font-size:var(--bf-ui-small);line-height:1.5}.bf-choice [data-bf-option] small{font-size:var(--bf-ui-small);color:var(--bf-ui-gold)}
.bf-choice-mark{position:absolute;left:14px;top:22px;width:36px;height:36px;border:1px solid #8e947588;border-radius:50%;font-style:normal;font-size:20px;line-height:36px;text-align:center;color:var(--bf-ui-primary)}
.bf-result-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}.bf-result-stats>div{padding:8px 10px;border-bottom:1px solid #8e947533}.bf-result-stats dt{color:var(--bf-ui-muted);font-size:var(--bf-ui-small)}.bf-result-stats dd{margin:4px 0 0;font:var(--bf-ui-number) sans-serif;color:var(--bf-ui-text)}.bf-result-note{font-size:var(--bf-ui-small);color:var(--bf-ui-muted);text-align:center}.bf-summary p:last-child{text-align:center}.bf-summary[data-result="failure"] h3{color:#d6aca0}
.bf-inventory[data-inventory-mode="loot"],.bf-inventory[data-inventory-mode="extraction"]{padding:14px;gap:8px}
.bf-inventory[data-inventory-mode="loot"] button,.bf-inventory[data-inventory-mode="extraction"] button{min-height:44px;background:var(--bf-ui-panel)!important;color:var(--bf-ui-text)!important;border:1px solid var(--bf-ui-border);font-family:inherit}
.bf-inventory[data-inventory-mode="loot"] h2,.bf-inventory[data-inventory-mode="extraction"] h2{font-size:var(--bf-ui-title);color:var(--bf-ui-gold)}
.bf-inventory:not([data-inventory-mode="warehouse"]) .bf-inventory__tile{color:var(--bf-ui-text)!important;background:transparent!important;min-height:0}
.bf-inventory:not([data-inventory-mode="warehouse"]) .bf-inventory__icon{background:#263e43;border:1px solid #8e947577;box-shadow:none;color:var(--bf-ui-primary)}.bf-inventory:not([data-inventory-mode="warehouse"]) .bf-inventory__icon svg{filter:none}
.bf-inventory:not([data-inventory-mode="warehouse"]) .bf-inventory__detail>div{background:var(--bf-ui-bg);border:1px solid var(--bf-ui-border);border-radius:var(--bf-ui-radius)}
.bf-inventory:not([data-inventory-mode="warehouse"]) [data-inv-limit]{color:var(--bf-ui-gold)}
.bf-extraction-result{flex:none}.bf-extraction-result .bf-result-stats{grid-template-columns:repeat(3,minmax(0,1fr));margin:0;gap:4px}.bf-extraction-result .bf-result-stats>div{padding:5px}.bf-extraction-result .bf-result-stats dd{font-size:15px;margin-top:2px}
.bf-result-complete{margin:auto 0;text-align:center}.bf-result-complete .bf-result-stats{gap:16px}.bf-result-complete [data-result-return]{margin-top:16px;min-width:160px}
@media(max-width:380px){.battlefield-p1>header{gap:6px;padding:8px}.battlefield-p1>header button{padding:8px}.bf-player-status{padding:8px}.bf-player-tags{font-size:10px}.bf-choice>div{padding:14px}.bf-stage-notice{font-size:14px}}
.battlefield-p1 button{font-family:inherit;font-size:var(--bf-ui-body)}
.battlefield-p1 .bf-unit[data-kind="miniBoss"] .bf-hp i,.battlefield-p1 .bf-unit[data-kind="finalBoss"] .bf-hp i{background:var(--bf-ui-danger)}
.bf-player-line{font-size:14px}.bf-player-line [data-player-level]{font-size:15px}.bf-boss-info b{font-size:14px}
.battlefield-p1 .bf-unit[data-kind="player"] .bf-hp i{background:var(--bf-ui-heal)}

/* P10-5 feedback: keep only XP above the battlefield; controls nearer the hand. */
.battlefield-p1>.bf-xp-track{flex:none;height:5px;margin:0 10px 6px;background:#31454a;border:0;overflow:hidden}
.battlefield-p1>.bf-xp-track i{display:block;height:100%;background:var(--bf-ui-primary)}
.battlefield-p1 .bf-joystick{bottom:122px}
.battlefield-p1 .bf-absorb-progress{bottom:246px}
.battlefield-p1 .bf-confirm>div{width:calc(100% - 48px);max-width:310px;padding:20px 18px;text-align:center}
.battlefield-p1 .bf-confirm>div>p{margin:12px 0;line-height:1.6}
.battlefield-p1 .bf-confirm>div>p:last-child{display:flex;justify-content:center;gap:12px;margin-bottom:0}

/* In-run equipment details: compact centered dialog, independent of warehouse. */
.bf-inventory[data-inventory-mode="loot"] .bf-inventory__detail>div{width:calc(100% - 40px);max-width:310px;box-sizing:border-box;padding:20px 18px;text-align:center}
.bf-inventory[data-inventory-mode="loot"] .bf-inventory__detail h3{margin:0 0 12px}
.bf-inventory[data-inventory-mode="loot"] .bf-inventory__detail p{margin:10px 0;overflow-wrap:anywhere}
.bf-inventory[data-inventory-mode="loot"] .bf-inventory__detail button{margin:8px 6px 0;min-width:76px;min-height:44px}
/* Item bitmap replaces only the existing ground glyph, not its geometry. */
.bf-ground-equipment-art{position:relative;display:block;width:100%;height:100%}
.bf-ground-equipment-art .bf-equipment-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.bf-ground-equipment-art .bf-equipment-art-fallback[hidden],.bf-ground-equipment-art .bf-equipment-art[hidden]{display:none}
/* Recovery is a display-only gate; the local authority clock is paused too. */
.bf-resume-countdown:not([hidden]){position:absolute;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:rgba(12,32,34,.35);color:#fff1bd;font-size:80px;text-shadow:0 2px 8px #173c3d;touch-action:none;}

/* Pickup artwork changes display size only; simulation radii remain unchanged. */
.bf-pickup-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}
.bf-pickup-ready{background:transparent;border:0;box-shadow:none;color:transparent;font-size:0}
.bf-dew.bf-pickup-ready{width:34px;height:34px;margin:-17px}
.bf-absorber.bf-pickup-ready{width:36px;height:36px}
.bf-crystal.bf-pickup-ready{width:20px;height:20px;margin:-10px;transform:none}
.bf-crystal.bf-pickup-ready.bf-landing{animation-name:bf-pickup-land}
@keyframes bf-pickup-land{from{transform:translateY(-24px);opacity:.3}65%{transform:translateY(3px);opacity:1}to{transform:translateY(0)}}
.bf-resource-guide{position:absolute;left:0;top:0;width:38px;height:38px;margin:-19px;z-index:7;pointer-events:none;text-align:center;color:#eff6db;font:bold 24px/38px sans-serif;background:#173c3dd9;border:1px solid #aeae80;border-radius:50%;box-sizing:border-box}
.bf-resource-guide.bf-pickup-ready{background:#173c3da6;border:1px solid #d7ddac80;color:transparent;font-size:0}
.bf-resource-guide .bf-pickup-art{inset:2px;width:calc(100% - 4px);height:calc(100% - 4px)}
.bf-resource-guide[hidden]{display:none!important}
.bf-ground-weapon{--bf-quality:#e9eee3;border-color:var(--bf-quality);box-shadow:0 0 7px var(--bf-quality);background:#243839}
.bf-ground-weapon[data-equipment-quality="green"]{--bf-quality:#91d09c}
.bf-ground-weapon[data-equipment-quality="blue"]{--bf-quality:#85c4ff}
.bf-ground-weapon[data-equipment-quality="purple"]{--bf-quality:#d3a1ef}
.bf-ground-weapon[data-equipment-quality="orange"]{--bf-quality:#f0ba68}
.bf-ground-weapon small{color:var(--bf-quality)}

/* Empowered blade: visual only; never moves a body or changes collision geometry. */
.bf-unit.bf-blade-ready .bf-art{filter:drop-shadow(0 0 5px #ff5361);}
/* Weapon quality belongs to each visual receipt, so in-flight arrows retain their firing quality. */
.bf-arrow{background:var(--bf-attack-color,#f5f7fa);animation:bf-quality-arrow-born 90ms ease-out}
.bf-arrow:after{border-left-color:var(--bf-attack-color,#f5f7fa)}
.bf-arrow:before{background:linear-gradient(90deg,transparent,var(--bf-attack-color,#f5f7fa))}
@keyframes bf-quality-arrow-born{from{opacity:.65}to{opacity:1}}
.bf-feedback-shot{background:radial-gradient(circle,#fff 0 10%,var(--bf-attack-color,#f5f7fa) 25%,transparent 70%)}
.bf-weapon-action.blade.empowered svg{animation:bf-empowered-swing 260ms ease-out both}
@keyframes bf-empowered-swing{0%{transform:rotate(-40deg);opacity:.9}30%{opacity:1}65%{opacity:.85}100%{transform:rotate(35deg);opacity:0}}
/* Transparent weapon art: the parent still uses the authoritative geometry. */
.bf-arrow{width:0;height:0;background:none;animation:none;transform-origin:0 0}
.bf-arrow::before,.bf-arrow::after{content:none}
.bf-arrow .bf-weapon-sprite{position:absolute;left:-47px;top:-7px;width:55px;height:14px;overflow:hidden;animation:bf-arrow-sprite-born 90ms ease-out}
.bf-choice-paused .bf-arrow .bf-weapon-sprite{animation-play-state:paused!important}
@keyframes bf-arrow-sprite-born{from{opacity:.6}to{opacity:1}}

/* New weapon presentation shares the existing world/camera and animation loop. */
.bf-arsenal-vfx{position:absolute;left:0;top:0;pointer-events:none;z-index:3;color:var(--bf-arsenal-color,#f5f7fa)}
.bf-arsenal-vfx>svg{display:block;width:100%;height:100%;overflow:visible}
.bf-spear-guide{left:50%;top:50%;width:28px;height:16px;margin-top:-8px;transform-origin:0 50%;opacity:.45}
.bf-spear-guide[data-requested="true"]{opacity:.85}
/* Let the spear tip stay readable during a charge; retain the aim guide between charges. */
.bf-spear-guide[data-locked="true"]{opacity:0}
/* One neutral shaded sprite per family; color is the existing weapon palette.
   Roots retain authoritative world geometry; no new compositor layer or loop. */
.bf-arsenal-sprite{display:block;width:100%;height:100%;overflow:visible}
.bf-wheel-disc{width:42px;height:42px;margin:-21px;transform-origin:50% 50%}
.bf-wheel-core{position:absolute;inset:0;transform:rotate(var(--bf-wheel-spin,0rad))}
.bf-wheel-tail{position:absolute;left:50%;top:calc(50% - 3px);width:34px;height:6px;transform-origin:0 50%;transform:rotate(var(--bf-wheel-heading,0rad)) translateX(-44px);border-radius:50%;background:linear-gradient(90deg,transparent,color-mix(in srgb,currentColor 36%,transparent));opacity:.7}
.bf-wheel-disc[data-returning="true"]{opacity:.6}
.bf-wheel-disc[data-recoil-phase="turnaround"] .bf-wheel-tail{opacity:.25}
.bf-sword-array{--bf-array-beat:0;border:0;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,currentColor 4%,transparent) 25%,color-mix(in srgb,currentColor 11%,transparent) 76%,transparent 100%);z-index:2}
.bf-sword-array::before{content:'';position:absolute;inset:0;border:.65px solid color-mix(in srgb,currentColor 42%,transparent);border-radius:50%;box-sizing:border-box}
.bf-sword-array[data-preparing="true"]{opacity:.4}
.bf-sword-array[data-preparing="true"] .bf-array-swords{opacity:.45}
.bf-array-swords{position:absolute;inset:0;opacity:calc(.66 + var(--bf-array-beat)*.3);transform:translateY(calc(var(--bf-array-beat)*-3px))}
.bf-array-swords .bf-arsenal-sprite{position:absolute;width:21%;height:54%;top:25%;left:13%;transform:rotate(-12deg)}
.bf-array-swords .bf-arsenal-sprite:nth-child(2){width:26%;height:70%;top:13%;left:37%;transform:none}
.bf-array-swords .bf-arsenal-sprite:nth-child(3){left:auto;right:13%;transform:rotate(12deg)}
.bf-array-pulse{position:absolute;inset:3%;border-radius:50%;opacity:calc(var(--bf-array-beat)*.26);background:radial-gradient(circle,color-mix(in srgb,currentColor 64%,transparent),transparent 70%);transform:scale(calc(1 - var(--bf-array-beat)*.16))}
.bf-spear-charge{height:140px;margin-top:-70px;transform-origin:0 50%;z-index:2}
.bf-spear-glint{position:absolute;right:-48px;top:50%;width:40px;height:18px;transform:translateY(-50%);opacity:.94}
.bf-spear-glint>.bf-arsenal-sprite{overflow:hidden}
.bf-arsenal-impact{border:0;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,currentColor 22%,transparent),transparent 68%);z-index:4}
.bf-arsenal-impact>.bf-arsenal-sprite{position:absolute;width:30%;height:82%;left:35%;top:3%}
.battlefield-p1.bf-spear-equipped .bf-joystick{display:none}
.bf-spear-pad{position:absolute;left:50%;bottom:92px;width:210px;height:210px;transform:translateX(-50%);z-index:11;touch-action:none;user-select:none;-webkit-user-select:none;border-radius:50%;pointer-events:auto}
.bf-spear-outer,.bf-spear-inner{position:absolute;border-radius:50%;pointer-events:none;box-sizing:border-box}
.bf-spear-outer{inset:0;border:1px solid #eef3eb70;background:radial-gradient(circle,transparent 69%,#edf4ed0a 70%,#f6f4dc17 100%)}
.bf-spear-inner{inset:30px;border:1px solid #ffffffe0;background:radial-gradient(circle,#ffffff0a 48%,#f4f4ee24 70%);box-shadow:0 2px 8px #142a343b,inset 0 0 0 6px #ffffff12}
.bf-spear-inner::before{content:'';position:absolute;inset:12px;border:1px solid #ffffff40;border-radius:50%}
.bf-spear-knob{position:absolute;left:calc(50% - 26px);top:calc(50% - 26px);width:52px;height:52px;box-sizing:border-box;border:1px solid #ffffffdc;border-radius:50%;background:radial-gradient(circle at 35% 28%,#ffffffd9,#eff3ed91);box-shadow:0 2px 5px #10273038;pointer-events:none}
.bf-spear-pad[data-requested="true"] .bf-spear-outer{border-color:#fff0b8;background:radial-gradient(circle,transparent 69%,#f6e4a426 71%,#f6e4a43d 100%);box-shadow:0 0 8px #eadca526}
.bf-spear-pad[data-disabled="true"]{opacity:.55}

/* Read-only revival presentation; authority owns the wait and HP restoration. */
.bf-revival{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);z-index:16;display:flex;flex-direction:column;align-items:center;gap:8px;color:#ede8ff;text-shadow:0 1px 3px #10282c;pointer-events:none;white-space:nowrap}
.bf-revival strong{font-size:23px;font-weight:500;letter-spacing:4px}
.bf-revival span{font-size:13px;color:#c2cbc8}
.bf-revival>i{width:128px;height:3px;background:#344b50;border-radius:4px;overflow:hidden}
.bf-revival>i>b{display:block;width:100%;height:100%;background:#cbb9ed;transform-origin:left center;transition:transform .1s linear}
.bf-revive-return .bf-art{animation:bf-revive-appear .45s ease-out}
@keyframes bf-revive-appear{from{opacity:.2;filter:brightness(1.8)}to{opacity:1;filter:brightness(1)}}

/* Boss decoration is separate from authoritative red telegraphs and hit timing. */
.bf-boss-decoration{position:absolute;pointer-events:none;z-index:4;color:var(--bf-boss-tone,#deca96)}
.bf-boss-decoration>svg{display:block;width:100%;height:100%;overflow:visible}
.bf-boss-arrival{z-index:2}
.bf-boss-arrival-aura{position:absolute;left:6%;top:58%;width:88%;height:auto;pointer-events:none;transform-origin:50% 85%}
.bf-arrival-ground,.bf-arrival-ripple{position:absolute;left:0;top:30%;width:100%;height:55%;pointer-events:none}
.bf-arrival-ground{opacity:var(--bf-arrival-ground-opacity,0);transform:scale(calc(.55 + var(--bf-arrival-rise,0)*.45))}
.bf-arrival-ground>.bf-painted-energy{transform:rotate(var(--bf-arrival-turn,0deg))}
.bf-arrival-ripple{opacity:var(--bf-arrival-ground-opacity,0);transform:scale(var(--bf-arrival-spread,.25))}
.bf-boss-arrival-flash{position:absolute;left:25%;top:30%;width:50%;height:40%;border-radius:50%;background:radial-gradient(ellipse,#fff1bf9c,transparent 70%)}
.bf-boss-sector-sweep{transform-origin:0 0}
.bf-pattern[data-skill="meteor"] .bf-pattern-mark{display:none!important}
.bf-pattern[data-skill="meteor"][data-phase="impact"]>svg{opacity:.08}
.bf-meteor-body{position:absolute;left:50%;top:50%;pointer-events:none;transform-origin:center;opacity:0}
.bf-meteor-body img{position:relative;width:100%;height:100%;object-fit:contain}
.bf-meteor-body>i{position:absolute;left:30%;bottom:40%;width:40%;height:210%;clip-path:polygon(47% 0,100% 100%,0 100%);background:linear-gradient(transparent 0%,#efbd7466 45%,#fff0bfea 100%)}
.bf-pattern[data-phase="impact"] .bf-meteor-body>i{display:none}
.bf-meteor-ring,.bf-meteor-dust{position:absolute;display:block;left:50%;top:50%;width:100%;height:100%;pointer-events:none;box-sizing:border-box;border-radius:50%}
.bf-meteor-ring{object-fit:contain}
.bf-meteor-dust{background:radial-gradient(ellipse,#cbb49399,#b19a7744 40%,transparent 70%)}
.bf-meteor-flash{position:absolute;left:50%;top:50%;width:40%;height:40%;transform:translate(-50%,-50%);background:radial-gradient(circle,#fff6d5 0%,#ffdf8eb3 28%,transparent 70%);pointer-events:none}
.bf-meteor-body[hidden],.bf-meteor-ring[hidden],.bf-meteor-dust[hidden],.bf-meteor-flash[hidden]{display:none!important}
@media(prefers-reduced-motion:reduce){.bf-boss-sector-sweep{transform:scale(1)!important}.bf-boss-arrival-aura{transform:translateY(-50%)!important}.bf-meteor-body>i{display:none}}

/* Restrained shared combat finish. All motion follows the existing view clock. */
.bf-boss-circle{z-index:2}
.bf-shock-rim,.bf-shock-inner,.bf-shock-dust{position:absolute;inset:0;border-radius:50%;box-sizing:border-box;transform:scale(var(--bf-shock-scale,.16))}
.bf-shock-rim{border:1.5px solid currentColor;box-shadow:0 0 5px color-mix(in srgb,currentColor 45%,transparent),inset 0 0 4px color-mix(in srgb,currentColor 24%,transparent)}
.bf-shock-inner{inset:8%;border:1px solid color-mix(in srgb,currentColor 42%,transparent)}
.bf-shock-dust{background:radial-gradient(circle,transparent 46%,color-mix(in srgb,currentColor 14%,transparent) 75%,transparent 100%)}
.bf-dashing::before{width:84px;height:42px;margin-top:-21px;transform:rotate(var(--bf-dash-angle)) translateX(-112px);border-radius:0;background:linear-gradient(90deg,transparent,var(--bf-boss-tone)) 0 4px/100% 3px no-repeat,linear-gradient(90deg,transparent,var(--bf-boss-tone)) 12px 19px/86% 4px no-repeat,linear-gradient(90deg,transparent,var(--bf-boss-tone)) 4px 36px/95% 3px no-repeat;opacity:.8;clip-path:polygon(0 50%,100% 0,100% 100%)}
.bf-dashing .bf-art::after{inset:3px;border:1px solid transparent;border-right-color:var(--bf-boss-tone);transform:rotate(var(--bf-dash-angle));opacity:.8}
.bf-cast[data-skill="dash"][data-phase="dash"] .bf-cast-base>*{fill:#df586210;stroke:#df586280;stroke-width:1}
.bf-cast[data-skill="dash"][data-phase="dash"] .bf-cast-charge{opacity:.12}
.bf-pattern[data-skill="swordRain"] .bf-pattern-mark,.bf-pattern[data-skill="spikes"] .bf-pattern-mark{display:none!important}
.bf-pattern[data-skill="swordRain"][data-phase="impact"]>svg,.bf-pattern[data-skill="spikes"][data-phase="impact"]>svg{opacity:.06}
.bf-pattern-detail{position:absolute;inset:0;color:var(--bf-boss-tone,#f4dfb4);pointer-events:none}
.bf-pattern-detail[hidden],.bf-ground-spikes[hidden]{display:none!important}
.bf-rain-sword{position:absolute;left:50%;top:50%;width:16px;height:72px;transform:translate(-50%,calc(-100% - var(--bf-rain-height,0px)));opacity:var(--bf-rain-opacity,0)}
.bf-rain-sword>.bf-arsenal-sprite{transform:rotate(180deg)}
.bf-pattern-impact-light{position:absolute;left:50%;top:50%;background:radial-gradient(ellipse,color-mix(in srgb,currentColor 65%,transparent),transparent 72%);pointer-events:none}
.bf-ground-spikes{position:absolute;left:50%;top:50%;object-fit:contain;transform-origin:50% 85%}
.bf-arrow::before{content:'';position:absolute;left:-65px;top:-1px;width:24px;height:2px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--bf-attack-color) 45%,transparent));border-radius:50%}
.bf-crossbow-arrow .bf-weapon-sprite{left:-34px;top:-5px;width:42px;height:10px}
.bf-crossbow-arrow::before{left:-47px;width:18px;height:1.5px}
.bf-weapon-action.blade svg,.bf-weapon-action.blade.empowered svg{animation:none}
.bf-spear-glint{transform:translateY(-50%) scaleX(var(--bf-spear-thrust,1));transform-origin:right center}
.bf-sword-array{opacity:var(--bf-array-fade,1)}
.bf-array-swords{transform:translateY(var(--bf-array-lift,0px));opacity:calc(.28 + var(--bf-array-beat)*.68)}
.bf-array-swords .bf-arsenal-sprite{transform:rotate(168deg)}
.bf-array-swords .bf-arsenal-sprite:nth-child(2){transform:rotate(180deg)}
.bf-array-swords .bf-arsenal-sprite:nth-child(3){transform:rotate(192deg)}
.bf-array-pulse{inset:8%;opacity:calc(var(--bf-array-beat)*.4);transform:scale(calc(1 - var(--bf-array-beat)*.28))}
.bf-arsenal-impact[data-effect-kind="sword-final"]>.bf-arsenal-sprite{transform:translateY(var(--bf-final-drop,0px)) rotate(180deg)}
.bf-wheel-core::before{content:'';position:absolute;inset:-3px;border:1px solid transparent;border-top-color:currentColor;border-bottom-color:color-mix(in srgb,currentColor 40%,transparent);border-radius:50%;opacity:.45}
.bf-wheel-tail{width:42px;height:4px;top:calc(50% - 2px);transform:rotate(var(--bf-wheel-heading,0rad)) translateX(-48px);background:linear-gradient(90deg,transparent,color-mix(in srgb,currentColor 52%,transparent))}
.bf-wheel-disc[data-returning="true"] .bf-wheel-tail{width:27px;transform:rotate(var(--bf-wheel-heading,0rad)) translateX(-33px);opacity:.4}
@media(prefers-reduced-motion:reduce){.bf-weapon-action.blade svg{transform:none!important}.bf-array-swords{transform:none}.bf-wheel-core{transform:none}.bf-dashing::before{opacity:.3}}

/* Painted light and vapor replace the wire-circle / straight-line iteration. */
.bf-painted-energy{display:block;width:100%;height:100%;overflow:visible;pointer-events:none}
.bf-boss-circle>.bf-painted-energy{transform:scale(var(--bf-shock-scale,.24));transform-origin:center}
.bf-shock-flash{position:absolute;inset:20%;border-radius:50%;background:radial-gradient(circle,#fff4d657,transparent 70%);opacity:var(--bf-shock-flash,0)}
.bf-dashing::before,.bf-dashing .bf-art::after{content:none}
.bf-boss-charge-art{position:absolute;left:50%;top:50%;width:230px;height:105px;transform-origin:80% 50%;transform:translate(-80%,-50%) rotate(var(--bf-dash-angle,0deg));z-index:0;pointer-events:none}
.bf-boss-charge-art[hidden]{display:none!important}
.bf-unit:has(.bf-boss-charge-art)>.bf-art{position:relative;z-index:1}
.bf-unit:has(.bf-boss-charge-art)>.bf-head{z-index:2}
/* The boundary is still the real damage footprint; only its paint changes. */
.bf-cast:is([data-skill="dash"],[data-skill="circle"],[data-skill="swordRain"],[data-skill="sector"]) .bf-cast-base>*{fill:#e4bb7309;stroke:#d9ad69;stroke-opacity:.72;stroke-width:1;stroke-dasharray:5 5}
.bf-cast:is([data-skill="dash"],[data-skill="circle"],[data-skill="swordRain"],[data-skill="sector"]) .bf-cast-charge>*{fill:#f0c68913;stroke:#f8db9e;stroke-width:1;stroke-opacity:.85}
.bf-cast[data-skill="dash"][data-phase="dash"] .bf-cast-base>*{fill:none;stroke-opacity:.2}
.bf-cast[data-skill="dash"][data-phase="dash"] .bf-cast-charge{opacity:0}
.bf-rain-lane{position:absolute;left:50%;top:50%;overflow:hidden;pointer-events:none;mask-image:linear-gradient(to right,transparent,#000 12%,#000 68%,transparent),linear-gradient(to bottom,transparent,#000 18%,#000 82%,transparent);mask-composite:intersect}
.bf-rain-projectile{position:absolute;left:50%;top:50%;width:0;height:0;transform:translateX(var(--bf-rain-x,0px));opacity:var(--bf-rain-opacity,0)}
.bf-rain-blade{position:absolute;width:22px;height:100px;left:-61px;top:-50px;transform:rotate(90deg)}
.bf-rain-wake{position:absolute;left:-170px;top:-23px;width:170px;height:46px;opacity:calc(var(--bf-rain-wake,0)*.8)}
.bf-sword-array{background:none}
.bf-sword-array::before{content:none}
.bf-array-flow{position:absolute;inset:0;transform:rotate(var(--bf-array-turn,0deg));opacity:calc(.42 + var(--bf-array-beat)*.28)}
.bf-array-swords{position:absolute;inset:0;transform:translateY(var(--bf-array-lift,0px));opacity:calc(var(--bf-array-beat)*.95)}
.bf-array-swords .bf-arsenal-sprite{width:23%;height:73%;left:38.5%;top:-16%;transform:rotate(180deg)}
.bf-array-strike{position:absolute;inset:12%;transform:scale(var(--bf-array-spread,.3));opacity:calc(var(--bf-array-strike,0)*.65)}
.bf-sword-array[data-preparing="true"] .bf-array-swords{opacity:.28}
.bf-sword-array[data-preparing="true"] .bf-array-flow{opacity:.45}
.bf-final-burst{position:absolute;inset:0;transform:scale(var(--bf-final-spread,.25));opacity:.8}
.bf-spear-glint{right:-56px;width:60px;height:28px}
.bf-spear-pressure{position:absolute;right:-56px;top:50%;width:94px;height:30px;transform:translateY(-50%) scaleX(var(--bf-spear-thrust,1));transform-origin:right center;opacity:.62}
@media(prefers-reduced-motion:reduce){.bf-array-flow{transform:none}.bf-boss-circle>.bf-painted-energy{transform:none}}
