/* PRE-BATTLE-MOTION-001 / #187 / interface 2.
   Initial artistic values, not measured performance claims.
   The three 12s material timelines need persistent, co-mounted hosts.
   Their slots stay aligned through phase/disabled changes; air is independent.
   Every animated surface is decorative. Text, inputs and hit targets stay still. */
.battle-entry-design {
  --be-material-period: 12s;
  --be-sweep-alpha: .64;
  --be-air-alpha: .12;
  --be-breath-x: 1.0015;
  --be-breath-y: 1.0035;
  --be-breath-tilt: .07deg;
}

.battle-entry-design .be-effects,
.battle-entry-design .be-effects * {
  box-sizing: border-box;
  pointer-events: none !important;
}

.battle-entry-design .be-effects {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: block;
  overflow: hidden;
  background: none;
  border: 0;
}

.battle-entry-design .be-effects[data-entry-effect-zone="scene-back"] { z-index: 0; }
.battle-entry-design .be-effects[data-entry-effect-zone="scene-front"] { z-index: 2; }
.battle-entry-design .be-effects[data-entry-effect-zone="frame"] { z-index: 4; }
.battle-entry-design .be-effects[data-entry-effect-zone="header"],
.battle-entry-design .be-effects[data-entry-effect-zone="primary"] { z-index: 0; }

.battle-entry-design .be-header,
.battle-entry-design .be-button { isolation: isolate; }
.battle-entry-design .be-header > :not(.be-effects),
.battle-entry-design .be-button > :not(.be-effects) { position: relative; z-index: 1; }
.battle-entry-design .be-fighter-nameplate,
.battle-entry-design .be-rules { position: relative; z-index: 5; }

/* A01/A02: narrow rails, never a stripe over the header or nameplates. */
.battle-entry-design .be-material-track {
  position: absolute;
  display: block;
  overflow: hidden;
  height: 3px;
}
.battle-entry-design .be-material-track--header { top: 1px; left: 8%; right: 7%; }
.battle-entry-design .be-material-track--frame { top: 1px; left: 2%; right: 2%; }
.battle-entry-design .be-material-sweep {
  position: absolute;
  display: block;
  inset: 0 auto 0 0;
  width: 18%;
  opacity: 0;
  background: linear-gradient(90deg, transparent, #e3ac3b25 20%, #ffedb8 50%, #e3ac3b30 75%, transparent);
  transform: translateX(-115%);
}
.battle-entry-design .be-material-sweep--header {
  animation: be-header-metal var(--be-material-period) cubic-bezier(.3, 0, .3, 1) infinite;
}
.battle-entry-design .be-material-sweep--frame {
  animation: be-frame-metal var(--be-material-period) cubic-bezier(.3, 0, .3, 1) infinite;
}
.battle-entry-design .be-frame-corner {
  position: absolute;
  right: 1px;
  top: 1px;
  width: 14px;
  height: 14px;
  opacity: 0;
  background: radial-gradient(ellipse at 76% 15%, #ffe4a3a3, #d49b3220 23%, transparent 60%);
  animation: be-frame-corner var(--be-material-period) ease-in-out infinite;
}

/* Lead-approved reuse of the frame zone inside secondary Copy and bot.
   One tiny ambient rail, no golden fill and no second primary CTA. */
.battle-entry-design .be-button .be-effects[data-entry-effect-zone="frame"] {
  z-index: 0;
  --be-sweep-alpha: .12;
}
.battle-entry-design .be-button .be-material-track--frame {
  top: auto;
  bottom: 1px;
  left: 2px;
  right: 2px;
  height: 1px;
}
.battle-entry-design .be-button .be-frame-corner { display: none; }
.battle-entry-design .be-button--bot .be-material-sweep--frame {
  animation: be-weak-edge 21.7s cubic-bezier(.3, 0, .3, 1) -7.9s infinite;
}
.battle-entry-design .be-button--secondary .be-material-sweep--frame {
  animation: be-weak-edge 25.3s cubic-bezier(.3, 0, .3, 1) -17.3s infinite;
}

/* A03: only the decorative metal surface moves, never the button or its label. */
.battle-entry-design .be-primary-track {
  position: absolute;
  inset: 3px;
  display: block;
  overflow: hidden;
}
.battle-entry-design .be-material-sweep--primary {
  top: -15%;
  height: 130%;
  width: 14%;
  background: linear-gradient(105deg, transparent, #fff2cb29 24%, #fff0bdc2 50%, #ffe6a62b 75%, transparent);
  animation: be-primary-metal var(--be-material-period) cubic-bezier(.3, 0, .3, 1) infinite;
}
.battle-entry-design .be-button-surface {
  position: absolute;
  inset: 3px;
  display: block;
  opacity: 0;
  background: linear-gradient(155deg, #ffedb13b, transparent 35%, #1b120721);
  transition: opacity 180ms ease-out, transform 200ms cubic-bezier(.2, 0, 0, 1);
}
.battle-entry-design .be-button::after {
  content: "";
  position: absolute;
  z-index: 0;
  inset: 2px;
  pointer-events: none;
  opacity: 0;
  border-top: 1px solid #f9db99;
  background: linear-gradient(145deg, #ffe0a014, transparent 45%);
  transition: opacity 180ms ease-out, transform 200ms cubic-bezier(.2, 0, 0, 1);
}
@media (hover: hover) and (pointer: fine) {
  .battle-entry-design .be-button:hover:not(:disabled) .be-button-surface { opacity: .42; }
  .battle-entry-design .be-button:hover:not(:disabled)::after { opacity: .35; }
}
.battle-entry-design .be-button:focus-visible::after { opacity: .55; }
.battle-entry-design .be-button:active:not(:disabled) .be-button-surface,
.battle-entry-design .be-button:active:not(:disabled)::after {
  opacity: .62;
  transform: translateY(.7px);
  transition-duration: 90ms;
}
.battle-entry-design:has(.be-button:active) { --be-sweep-alpha: .08; }
.battle-entry-design .be-button:disabled .be-effects:not([data-entry-effect-zone="primary"]),
.battle-entry-design[data-entry-phase="retry-pending"] [data-action="create-invitation"] .be-effects:not([data-entry-effect-zone="primary"]) {
  display: none;
}
/* A persistent primary host keeps the material phase while Creating is disabled.
   Hiding its paint must not cancel/restart its independent CSS timeline. */
.battle-entry-design .be-button:disabled .be-effects[data-entry-effect-zone="primary"] {
  visibility: hidden;
}

/* A04/A05: stable bottom support; only a loaded real image can breathe.
   Whole-image micro motion is a limited derivative treatment, not a skeletal rig. */
.battle-entry-design .be-fighter-art[data-art-status="ready"] .be-decor-image,
.battle-entry-design .be-fighter-art[data-art-status="ready"] .be-effects[data-entry-effect-zone^="equipment-"] {
  transform-origin: 50% 100%;
}
.battle-entry-design .be-fighter--player .be-fighter-art[data-art-status="ready"] .be-decor-image,
.battle-entry-design .be-fighter-art[data-art-status="ready"] .be-effects[data-entry-effect-zone="equipment-player"] {
  animation: be-breathe-player 5.4s cubic-bezier(.45, 0, .38, 1) -1.1s infinite;
}
.battle-entry-design .be-fighter--opponent .be-fighter-art[data-art-status="ready"] .be-decor-image,
.battle-entry-design .be-fighter-art[data-art-status="ready"] .be-effects[data-entry-effect-zone="equipment-opponent"] {
  animation: be-breathe-opponent 6.6s cubic-bezier(.42, 0, .36, 1) -3.4s infinite;
}
.battle-entry-design .be-fighter-art:not([data-art-status="ready"]) .be-effects[data-entry-effect-zone^="equipment-"] { display: none; }
.battle-entry-design .be-equipment-mask {
  position: absolute;
  inset: 0;
  display: block;
  overflow: hidden;
  mask-size: contain;
  mask-position: center bottom;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  -webkit-mask-position: center bottom;
  -webkit-mask-repeat: no-repeat;
}
.battle-entry-design .be-equipment-mask[data-entry-effect-availability="mask-missing"] { display: none; }
.battle-entry-design .be-equipment-reflection {
  position: absolute;
  inset: 0 auto 0 0;
  width: 12%;
  display: block;
  opacity: 0;
  background: linear-gradient(102deg, transparent, #ffe2a440 35%, #fff0c68c 50%, #efbb5126 65%, transparent);
  animation: be-equipment-reflection 11.7s ease-in-out -2.3s infinite;
}
.battle-entry-design [data-entry-effect-zone="equipment-opponent"] .be-equipment-reflection {
  animation-duration: 14.3s;
  animation-delay: -8.1s;
}

/* A06: bounded art-row particles, no particle renderer or per-frame randomness. */
.battle-entry-design .be-dust-field {
  position: absolute;
  inset: 0;
  display: block;
  overflow: hidden;
}
.battle-entry-design .be-dust-field[data-entry-dust-depth="front"] { top: 60%; }
.battle-entry-design .be-dust {
  position: absolute;
  left: var(--be-px);
  top: var(--be-py);
  width: var(--be-dot);
  height: var(--be-dot);
  margin: -2px 0 0 -2px;
  border-radius: 50%;
  opacity: 0;
  background: radial-gradient(circle, #fff0bf 0 10%, #edc97499 19%, #ce943c38 39%, #b8892020 55%, transparent 74%);
  animation: be-dust-rise var(--be-life) cubic-bezier(.34, .05, .46, 1) var(--be-phase) infinite;
}

/* A07/A09: prepared soft gradients, no dynamic blur or repeated scene subtree. */
.battle-entry-design .be-fog {
  position: absolute;
  display: block;
  left: -4%;
  top: 17%;
  width: 86%;
  height: 77%;
  opacity: .06;
  background: radial-gradient(ellipse at 36% 72%, #c2b092b3, transparent 37%), radial-gradient(ellipse at 68% 53%, #aaa18c66, transparent 31%), radial-gradient(ellipse at 27% 39%, #c2b0924d, transparent 26%);
  animation: be-fog-left 19.7s ease-in-out -5.7s infinite;
}
.battle-entry-design .be-fog--rear-right {
  left: 22%;
  top: 10%;
  width: 83%;
  height: 86%;
  background: radial-gradient(ellipse at 61% 63%, #b2a58eb3, transparent 41%), radial-gradient(ellipse at 35% 78%, #ad987b66, transparent 35%);
  animation-name: be-fog-right;
  animation-duration: 23.3s;
  animation-delay: -13.7s;
}
.battle-entry-design .be-fog--front {
  left: 7%;
  top: 77%;
  width: 86%;
  height: 23%;
  opacity: .035;
  background: radial-gradient(ellipse at 33% 80%, #b6a48a99, transparent 48%), radial-gradient(ellipse at 73% 72%, #9c917b66, transparent 42%);
  animation: be-fog-front 17.9s ease-in-out -8.3s infinite;
}
.battle-entry-design .be-far-light {
  position: absolute;
  left: 8%;
  top: 0;
  width: 38%;
  height: 76%;
  display: block;
  opacity: .05;
  transform-origin: 26% 0;
  background: linear-gradient(107deg, transparent 30%, #d6b26b1c 45%, #d6b26b52 49%, #d6b26b17 57%, transparent 72%);
  animation: be-distant-light 20.3s ease-in-out -7.1s infinite;
}

/* A00/A10: entry is decorative and finite; the actual X strokes remain still. */
.battle-entry-design .be-entry-intro {
  position: absolute;
  inset: 5% 8% 0;
  display: block;
  opacity: 0;
  background: radial-gradient(ellipse at 50% 68%, #d9b66d22, transparent 65%);
}
.battle-entry-design[data-entry-intro="enter"] .be-entry-intro {
  animation: be-entry-arrive 340ms cubic-bezier(.2, 0, 0, 1) 1;
  animation-fill-mode: none;
}
.battle-entry-design .be-versus .be-effects[data-entry-effect-zone="versus"] {
  top: -9px;
  left: -9px;
  width: 42px;
  height: 42px;
  background: none;
  transform: none;
}
.battle-entry-design .be-versus .be-versus-halo {
  position: absolute;
  inset: 0;
  display: block;
  width: 42px;
  height: 42px;
  background: radial-gradient(circle, #efb85159, #e6b14420 32%, transparent 68%);
  transform: none;
  opacity: .35;
  animation: be-versus-warmth 8.9s ease-in-out -3.7s infinite;
}

/* A08: roots live in the fixed viewport edge host, not the scrolling panel. */
.battle-entry-design .be-optical-edge {
  position: absolute;
  top: 0;
  bottom: 0;
  display: block;
  width: 10px;
  overflow: hidden;
  background: linear-gradient(90deg, #0a0b0966, #b68b2720, #0000);
}
.battle-entry-design .be-optical-edge--left { left: 0; }
.battle-entry-design .be-optical-edge--right { right: 0; transform: scaleX(-1); }
.battle-entry-design .be-optical-edge::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 1px;
  background: linear-gradient(#a7823d55, #e5c57f99 30%, #73532566 70%, #d2a85c88);
}
.battle-entry-design .be-edge-flow {
  position: absolute;
  display: block;
  left: .8px;
  top: -30%;
  width: 3px;
  height: 28%;
  opacity: 0;
  background: linear-gradient(transparent, #ad843038 21%, #ffe7af99 47%, #a37a3a40 70%, transparent);
  transform-origin: 50% 50%;
  animation: be-edge-flow 16.7s ease-in-out -4.3s infinite;
}
.battle-entry-design .be-edge-flow::after {
  content: "";
  position: absolute;
  inset: 32% auto 32% -.35px;
  width: .5px;
  background: linear-gradient(transparent, #c3d5d977, transparent);
}
.battle-entry-design .be-optical-edge--right .be-edge-flow {
  animation-duration: 19.3s;
  animation-delay: -12.9s;
}
.battle-entry-design .be-edge-glint {
  position: absolute;
  left: 0;
  top: 0;
  width: 1px;
  height: 12%;
  display: block;
  opacity: 0;
  background: linear-gradient(transparent, #ffe4a9b3, transparent);
  animation: be-edge-glint 29.1s ease-in-out -15.1s infinite;
}
.battle-entry-design .be-edge-glint--right {
  animation-duration: 31.7s;
  animation-delay: -5.3s;
}

/* A11: pockets use the existing viewport edge; they add no layout height. */
.battle-entry-design .be-effects[data-entry-effect-zone="bottom"] {
  top: auto;
  height: min(58px, 13%);
}
.battle-entry-design .be-bottom-fog {
  position: absolute;
  bottom: -3px;
  left: -4px;
  width: 16px;
  height: 28px;
  display: block;
  opacity: .05;
  background: radial-gradient(ellipse at 20% 70%, #b49a7180, transparent 70%);
  animation: be-bottom-air 21.1s ease-in-out -5.7s infinite;
}
.battle-entry-design .be-bottom-fog--right {
  left: auto;
  right: -4px;
  animation-duration: 18.7s;
  animation-delay: -11.9s;
}
.battle-entry-design .be-bottom-reflection {
  position: absolute;
  left: 4%;
  bottom: 0;
  width: 15%;
  height: 1px;
  display: block;
  opacity: 0;
  background: linear-gradient(90deg, transparent, #e9c77b99, transparent);
  animation: be-bottom-reflection 18.7s ease-in-out -7.1s infinite;
}

/* A12: the parent supplies the latest result, not a new operation receipt.
   Keep success/error static: reopen, motion restore and phase changes are not copies. */
.battle-entry-design .be-link-control { position: relative; }
.battle-entry-design .be-link-control:focus-within { outline: 1px solid #d8b66c; outline-offset: 2px; }
.battle-entry-design [data-copy-feedback="success"]::before,
.battle-entry-design [data-copy-feedback="error"]::before {
  content: "";
  position: absolute;
  inset: 0;
  border-top: 1px solid #e7cd8b;
  pointer-events: none;
  opacity: .55;
  animation: none;
  transition: none;
}
.battle-entry-design [data-copy-feedback="error"]::before { border-top-color: #dba17b; }

/* Diagnostic isolation never changes the underlying scene, copy status or UI. */
.battle-entry-design[data-entry-effects-group="materials"] [data-entry-effect-group]:not(.be-decor-image):not([data-entry-effect-group="materials"]),
.battle-entry-design[data-entry-effects-group="fighters"] [data-entry-effect-group]:not(.be-decor-image):not([data-entry-effect-group="fighters"]),
.battle-entry-design[data-entry-effects-group="dust"] [data-entry-effect-group]:not(.be-decor-image):not([data-entry-effect-group="dust"]),
.battle-entry-design[data-entry-effects-group="atmosphere"] [data-entry-effect-group]:not(.be-decor-image):not([data-entry-effect-group="atmosphere"]),
.battle-entry-design[data-entry-effects-group="optics"] [data-entry-effect-group]:not(.be-decor-image):not([data-entry-effect-group="optics"]) {
  display: none;
  animation: none !important;
}
.battle-entry-design:not([data-entry-effects-group="all"]):not([data-entry-effects-group="fighters"]) .be-fighter-art .be-decor-image { animation: none !important; }
.battle-entry-design:not([data-entry-effects-group="all"]):not([data-entry-effects-group="materials"]) .be-button::after { animation: none !important; transition: none !important; }

/* Light remains alive and independent of Home renderer Light. */
.battle-entry-design[data-entry-effects="light"] {
  --be-sweep-alpha: .48;
  --be-air-alpha: .085;
  --be-breath-x: 1.0008;
  --be-breath-y: 1.002;
  --be-breath-tilt: .045deg;
}
.battle-entry-design[data-entry-effects="light"] .be-dust[data-entry-light="false"],
.battle-entry-design[data-entry-effects="light"] .be-fog--rear-right,
.battle-entry-design[data-entry-effects="light"] .be-fog--front,
.battle-entry-design[data-entry-effects="light"] .be-far-light,
.battle-entry-design[data-entry-effects="light"] .be-edge-flow::after,
.battle-entry-design[data-entry-effects="light"] .be-edge-glint,
.battle-entry-design[data-entry-effects="light"] .be-bottom-fog--right { display: none; }

/* Paused retains phase. CSS time never advances to catch up hidden wall-clock time. */
.battle-entry-design[data-entry-motion="paused"] *,
.battle-entry-design[data-entry-motion="paused"] *::before,
.battle-entry-design[data-entry-motion="paused"] *::after {
  animation-play-state: paused !important;
  transition: none !important;
}
.battle-entry-design[data-entry-scene-visible="false"] [data-entry-effect-scene="card"],
.battle-entry-design[data-entry-scene-visible="false"] [data-entry-effect-scene="card"] *,
.battle-entry-design[data-entry-scene-visible="false"] .be-fighter-art .be-decor-image {
  animation-play-state: paused !important;
}
.battle-entry-design[data-entry-intro="settled"] .be-entry-intro { animation: none !important; }

/* Cancel, not pause, when the scene is closed, explicitly static or motion is off. */
.battle-entry-design:not([open]) *,
.battle-entry-design:not([open]) *::before,
.battle-entry-design:not([open]) *::after,
.battle-entry-design[data-entry-motion="off"] *,
.battle-entry-design[data-entry-motion="off"] *::before,
.battle-entry-design[data-entry-motion="off"] *::after,
.battle-entry-design[data-entry-motion="closed"] *,
.battle-entry-design[data-entry-motion="closed"] *::before,
.battle-entry-design[data-entry-motion="closed"] *::after,
.battle-entry-design[data-entry-effects="static"] *,
.battle-entry-design[data-entry-effects="static"] *::before,
.battle-entry-design[data-entry-effects="static"] *::after,
.battle-entry-design:not([data-entry-motion]) * {
  animation: none !important;
  transition: none !important;
  will-change: auto !important;
}
.battle-entry-design[data-entry-motion="off"] :is(.be-dust-field, .be-fog, .be-far-light, .be-entry-intro, .be-equipment-mask, .be-bottom-fog),
.battle-entry-design[data-entry-effects="static"] :is(.be-dust-field, .be-fog, .be-far-light, .be-entry-intro, .be-equipment-mask, .be-bottom-fog) { display: none; }
.battle-entry-design[data-entry-motion="off"] .be-button::after,
.battle-entry-design[data-entry-motion="off"] .be-button-surface,
.battle-entry-design[data-entry-effects="static"] .be-button::after,
.battle-entry-design[data-entry-effects="static"] .be-button-surface { transform: none !important; }

/* Material slots: header 1–2.5s; primary 5.1–6.8s; frame 8.3–11.5s. */
@keyframes be-header-metal {
  0%, 8.32% { opacity: 0; transform: translateX(-115%); }
  10% { opacity: var(--be-sweep-alpha); }
  19.3% { opacity: var(--be-sweep-alpha); }
  20.83%, 100% { opacity: 0; transform: translateX(620%); }
}
@keyframes be-primary-metal {
  0%, 42.49% { opacity: 0; transform: translateX(-115%); }
  44% { opacity: var(--be-sweep-alpha); }
  54.8% { opacity: var(--be-sweep-alpha); }
  56.67%, 100% { opacity: 0; transform: translateX(840%); }
}
@keyframes be-frame-metal {
  0%, 69.16% { opacity: 0; transform: translateX(-115%); }
  72% { opacity: var(--be-sweep-alpha); }
  92.5% { opacity: var(--be-sweep-alpha); }
  95.83%, 100% { opacity: 0; transform: translateX(620%); }
}
@keyframes be-frame-corner {
  0%, 88%, 100% { opacity: 0; }
  93% { opacity: .32; }
}
@keyframes be-weak-edge {
  0%, 62% { opacity: 0; transform: translateX(-115%); }
  64%, 75% { opacity: var(--be-sweep-alpha); }
  77%, 100% { opacity: 0; transform: translateX(620%); }
}
@keyframes be-breathe-player {
  0%, 100% { transform: scale(1) rotate(0deg); }
  40% { transform: scaleX(var(--be-breath-x)) scaleY(var(--be-breath-y)) rotate(var(--be-breath-tilt)); }
}
@keyframes be-breathe-opponent {
  0%, 100% { transform: scale(1) rotate(0deg); }
  43% { transform: scaleX(var(--be-breath-x)) scaleY(var(--be-breath-y)) rotate(calc(var(--be-breath-tilt) * -1)); }
}
@keyframes be-equipment-reflection {
  0%, 26% { opacity: 0; transform: translateX(100%); }
  32% { opacity: .32; }
  47% { opacity: .24; }
  53%, 100% { opacity: 0; transform: translateX(740%); }
}
@keyframes be-dust-rise {
  0% { opacity: 0; transform: translate(0, 0); }
  8% { opacity: var(--be-alpha); }
  28% { opacity: calc(var(--be-alpha) * .7); transform: translate(calc(var(--be-drift) * .45), calc(var(--be-rise) * -.27)); }
  43% { opacity: var(--be-alpha); transform: translate(var(--be-drift), calc(var(--be-rise) * -.47)); }
  58% { opacity: calc(var(--be-alpha) * .55); transform: translate(calc(var(--be-drift) * .8), calc(var(--be-rise) * -.58)); }
  65% { opacity: calc(var(--be-alpha) * .72); transform: translate(calc(var(--be-drift) * .78), calc(var(--be-rise) * -.61)); }
  82% { opacity: calc(var(--be-alpha) * .4); }
  100% { opacity: 0; transform: translate(calc(var(--be-drift) * 1.15), calc(var(--be-rise) * -1)); }
}
@keyframes be-fog-left {
  0%, 100% { opacity: .045; transform: translate(-4px, 4px) scale(.99); }
  37% { opacity: var(--be-air-alpha); transform: translate(4px, -3px) scale(1.02); }
  69% { opacity: .07; transform: translate(7px, -5px) scale(1.01); }
}
@keyframes be-fog-right {
  0%, 100% { opacity: .065; transform: translate(5px, 3px) scale(1.01); }
  51% { opacity: var(--be-air-alpha); transform: translate(-6px, -5px) scale(1.03); }
}
@keyframes be-fog-front {
  0%, 100% { opacity: .02; transform: translate(-4px, 2px) scale(1); }
  56% { opacity: .045; transform: translate(5px, -2px) scale(1.02); }
}
@keyframes be-distant-light {
  0%, 100% { opacity: .045; transform: translateX(-1px) rotate(-.2deg); }
  61% { opacity: .09; transform: translateX(2px) rotate(.3deg); }
}
@keyframes be-entry-arrive {
  0% { opacity: 0; transform: translateY(6px); }
  45% { opacity: .24; }
  100% { opacity: 0; transform: translateY(0); }
}
@keyframes be-versus-warmth {
  0%, 100% { opacity: .28; transform: scale(.98); }
  46% { opacity: .52; transform: scale(1.02); }
}
@keyframes be-edge-flow {
  0%, 100% { opacity: 0; transform: translateY(-20%) scaleX(.92); }
  18% { opacity: .35; }
  49% { opacity: .57; transform: translateY(240%) scaleX(1.06); }
  81% { opacity: .24; }
  96% { opacity: 0; transform: translateY(460%) scaleX(.95); }
}
@keyframes be-edge-glint {
  0%, 64%, 84%, 100% { opacity: 0; transform: translateY(150%); }
  68% { opacity: .25; }
  78% { opacity: .28; transform: translateY(620%); }
}
@keyframes be-bottom-air {
  0%, 100% { opacity: .035; transform: translate(0, 3px) scale(1); }
  53% { opacity: .075; transform: translate(2px, -3px) scale(1.02); }
}
@keyframes be-bottom-reflection {
  0%, 66%, 89%, 100% { opacity: 0; transform: translateX(20%); }
  71% { opacity: .22; }
  84% { opacity: .15; transform: translateX(350%); }
}

/* Defense against a stale signal at a system accessibility change.
   Keep layout transforms/opacity: they also place art and express disabled state. */
@media (prefers-reduced-motion: reduce) {
  .battle-entry-design,
  .battle-entry-design::before,
  .battle-entry-design::after,
  .battle-entry-design::backdrop,
  .battle-entry-design *,
  .battle-entry-design *::before,
  .battle-entry-design *::after {
    animation: none !important;
    transition: none !important;
    will-change: auto !important;
  }
  .battle-entry-design .be-button::after,
  .battle-entry-design .be-button-surface { transform: none !important; }
  .battle-entry-design :is(.be-dust-field, .be-fog, .be-far-light, .be-entry-intro, .be-equipment-mask, .be-bottom-fog) { display: none; }
}

@media (forced-colors: active) {
  .battle-entry-design .be-effects { display: none; }
  .battle-entry-design .be-fighter-art .be-decor-image { animation: none !important; }
}

/* The leader projects entry.open onto this Home-only presentation hook.
   Cancel CSS effects instead of retaining paused/fill compositor effects.
   HomeSceneContext.active separately gates the existing GL/GPU owner.
   The dialog is a sibling: its motion gate and global preferences stay independent. */
.v23-home[data-battle-entry-covered="true"],
.v23-home[data-battle-entry-covered="true"]::before,
.v23-home[data-battle-entry-covered="true"]::after,
.v23-home[data-battle-entry-covered="true"] *,
.v23-home[data-battle-entry-covered="true"] *::before,
.v23-home[data-battle-entry-covered="true"] *::after {
  animation: none !important;
  transition: none !important;
  will-change: auto !important;
}
