/* Child routes occupy only the center app viewport. Persistent WAR, Now Performing,
   bottom navigation, and the UX toolbar remain mounted around this layer. */
.deep-screen{
  position:fixed;
  top:var(--primary-war-space,69px);
  right:0;
  bottom:var(--primary-footer-space,108px);
  left:0;
  z-index:120;
  width:min(100%,var(--max));
  min-height:0;
  margin:0 auto;
  overflow:hidden;
  background:var(--bg);
  opacity:0;
  pointer-events:none;
}
.deep-screen.is-open{
  opacity:1;
  pointer-events:auto;
}
.deep-screen-frame{
  position:absolute;
  inset:0;
  z-index:0;
  display:block;
  width:100%;
  height:100%;
  min-height:100%;
  border:0;
  background:var(--bg);
  opacity:0;
  pointer-events:none;
}
.deep-screen-frame.is-active{
  z-index:1;
  opacity:1;
  pointer-events:auto;
}

/* Battle lives directly in the persistent document instead of a warmed iframe.
   Its complete UI is rendered while hidden; only camera acquisition waits for
   activation. This also guarantees the fitted scanner receives the real parent
   viewport dimensions on mobile. */
.deep-native-battle{
  position:absolute;
  inset:0;
  z-index:0;
  display:grid;
  min-height:0;
  padding:6px 10px 10px;
  overflow:hidden;
  background:var(--bg);
  opacity:0;
  pointer-events:none;
}
.deep-native-battle.is-active{
  z-index:2;
  opacity:1;
  pointer-events:auto;
}
.deep-native-battle>.battle-init-view,
.deep-native-battle>.battle-room-handoff,
.deep-native-battle>.native-battle-room{
  height:100%;
  min-height:0;
}

.native-battle-room{
  display:grid;
  align-items:center;
  overflow:auto;
  overscroll-behavior:contain;
}
.native-battle-center-card,
.native-battle-round-card,
.native-battle-clash-card,
.native-battle-result-card{
  display:grid;
  gap:14px;
  align-content:center;
  min-height:min(100%,430px);
  text-align:center;
}
.native-battle-opponent,
.native-battle-result-copy{
  display:block;
  font-size:clamp(26px,8vw,42px);
  line-height:.96;
  letter-spacing:.035em;
  text-transform:uppercase;
}
.native-battle-round-card{
  align-content:start;
  gap:clamp(8px,1.5vh,14px);
  width:100%;
  height:100%;
  min-height:0;
  padding:clamp(10px,2.7vw,18px);
  overflow-y:auto;
  border-color:rgba(164,188,211,.38);
  background:linear-gradient(155deg,rgba(20,27,37,.98),rgba(10,12,17,.99) 62%);
  box-shadow:inset 0 0 0 1px rgba(98,142,180,.12),0 12px 32px rgba(0,0,0,.3);
}
.native-battle-pets{
  display:flex;
  justify-content:space-between;
  align-items:end;
  gap:18px;
  width:100%;
  padding:4px clamp(8px,5vw,28px) 2px;
}
.native-battle-round-card .native-battle-pets{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:end;
  gap:clamp(2px,1.5vw,14px);
  padding:0;
}
.native-battle-center{position:relative;display:grid;place-items:center;align-self:start;width:clamp(32px,12vw,64px);height:clamp(100px,29vw,174px)}
.native-battle-versus{
  color:#aeb6c5;
  font-size:clamp(22px,7vw,42px);
  font-weight:1000;
  letter-spacing:-.08em;
  text-shadow:0 0 16px rgba(178,196,220,.28);
}
.native-battle-impact-art{position:absolute;z-index:4;display:grid;width:clamp(64px,20vw,104px);height:clamp(64px,16vh,96px);place-items:center;filter:drop-shadow(0 0 7px #fff) drop-shadow(0 0 17px #ffb52e)}
.native-battle-impact-art svg{display:block;width:100%;height:100%;overflow:visible;animation:battle-impact-burst 1.15s cubic-bezier(.2,.8,.2,1) both}
.native-battle-impact-art .impact-burst{fill:#11151c;stroke:#f5f4f0;stroke-width:4;stroke-linejoin:round}
.native-battle-impact-art .impact-flash{fill:#fff4a8;stroke:#ff7a25;stroke-width:3;stroke-linejoin:round}
.native-battle-impact-art .impact-spark{fill:none;stroke:#fff;stroke-width:4;stroke-linecap:round;filter:drop-shadow(0 0 4px #ffd14a)}
@keyframes battle-impact-burst{
  0%{opacity:0;transform:scale(.2) rotate(-18deg)}
  32%{opacity:1;transform:scale(1.25) rotate(8deg)}
  56%{opacity:1;transform:scale(.92) rotate(-3deg)}
  100%{opacity:1;transform:scale(1) rotate(0)}
}
.native-battle-pet{
  display:grid;
  justify-items:center;
  align-content:end;
  gap:4px;
  min-width:0;
  width:min(38%,150px);
  text-align:center;
}
.native-battle-round-card .native-battle-pet{
  width:100%;
  gap:3px;
}
.native-battle-pet-art{position:relative;width:clamp(78px,25vw,132px);height:clamp(78px,25vw,132px);max-width:100%}
.native-battle-pet img{
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  filter:drop-shadow(0 0 10px color-mix(in srgb,var(--active-faction,#6be5ff) 72%,transparent));
}
.native-battle-round-card .native-battle-pet-art{
  width:clamp(100px,29vw,174px);
  height:clamp(100px,29vw,174px);
  max-width:100%;
}
.native-battle-pet-self.is-clashing img{animation:battle-self-lunge 1.15s cubic-bezier(.2,.8,.2,1) both}
.native-battle-pet-opponent.is-clashing img{animation:battle-opponent-lunge 1.15s cubic-bezier(.2,.8,.2,1) both}
.native-battle-pet-self{--battle-facing:-1;--battle-lunge:12px;--battle-recoil:-7px}
.native-battle-pet-opponent{--battle-facing:1;--battle-lunge:-12px;--battle-recoil:7px}
.native-battle-pet.is-idle img{animation:battle-pet-idle 1.6s ease-in-out infinite alternate}
@keyframes battle-pet-idle{from{transform:translateY(0) scaleX(var(--battle-facing))}to{transform:translateY(-3px) scaleX(var(--battle-facing)) scale(1.012)}}
.native-battle-pet.is-attacking img{animation:battle-pet-attack .5s ease-in-out both}
.native-battle-pet.is-hit img{animation:battle-hit-recoil .55s ease-in-out both}
.native-battle-pet.is-blocked img{animation:battle-block-pulse .55s ease-in-out both}
.native-battle-pet.is-boosted img{animation:battle-block-pulse .65s ease-in-out both}
@keyframes battle-pet-attack{50%{transform:translateX(var(--battle-lunge)) scaleX(var(--battle-facing)) scale(1.08)}}
@keyframes battle-hit-recoil{35%{transform:translateX(var(--battle-recoil)) scaleX(var(--battle-facing)) rotate(3deg)}70%{transform:scaleX(var(--battle-facing)) rotate(-2deg)}}
@keyframes battle-block-pulse{50%{transform:scaleX(var(--battle-facing)) scale(1.06);filter:drop-shadow(0 0 20px #65eaff)}}
@keyframes battle-self-lunge{
  0%,100%{transform:translateX(0) scaleX(-1) scale(1)}
  34%{transform:translateX(8px) scaleX(-1) scale(1.12)}
  56%{transform:translateX(5px) scaleX(-1) scale(.94)}
}
@keyframes battle-opponent-lunge{
  0%,100%{transform:translateX(0) scale(1)}
  34%{transform:translateX(-8px) scale(1.12)}
  56%{transform:translateX(-5px) scale(.94)}
}
.native-battle-pet-self img{transform:scaleX(-1)}
.native-battle-pet[data-pet-appearance="hexicacti"] img{filter:drop-shadow(0 0 10px rgb(185 72 255 / 70%))}
.native-battle-pet[data-pet-appearance="skelepurr"] img{filter:drop-shadow(0 0 10px rgb(207 247 255 / 84%))}
.native-battle-pet[data-pet-appearance="telechirp"] img{filter:drop-shadow(0 0 10px rgb(184 139 17 / 78%))}
.native-battle-pet.is-hit .native-battle-pet-art>img{filter:drop-shadow(0 0 16px #ff783e) brightness(1.3)}
.native-battle-pet.is-blocked .native-battle-pet-art>img{filter:drop-shadow(0 0 16px #65eaff)}
.native-battle-pet.is-winner .native-battle-pet-art>img{animation:battle-victory .7s ease-in-out infinite alternate;filter:drop-shadow(0 0 18px #ffda69) brightness(1.15)}
.native-battle-pet.is-defeated .native-battle-pet-art>img{opacity:.5;filter:grayscale(.8);transform:translateY(8px) scaleX(var(--battle-facing))}
@keyframes battle-victory{from{transform:scaleX(var(--battle-facing))}to{transform:translateY(-6px) scaleX(var(--battle-facing)) scale(1.04)}}
.native-battle-pet-effects{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:4}
.native-battle-item-reveal{display:flex;align-self:end;justify-self:center;align-items:center;justify-content:center;gap:6px;max-width:100%;margin-bottom:3px;padding:6px 8px;border:1px solid rgba(255,255,255,.2);border-radius:9px;background:rgba(0,0,0,.76);box-shadow:0 3px 12px rgba(0,0,0,.4);animation:battle-items-reveal .32s ease-out both}
.native-battle-reveal-token{display:flex;align-items:center;gap:2px}
.native-battle-pet .native-battle-reveal-icon{font-size:clamp(21px,6vw,30px);line-height:1;letter-spacing:0;opacity:1}
.native-battle-reveal-token>b{color:#fff;font-size:clamp(12px,3.3vw,17px);line-height:1;font-variant-numeric:tabular-nums}
.native-battle-item-reveal>small{color:#c4cbd7;font-size:8px;font-weight:900;letter-spacing:.08em;white-space:nowrap}
@keyframes battle-items-reveal{from{opacity:0;transform:translateY(10px) scale(.75)}to{opacity:1;transform:translateY(0) scale(1)}}
.native-battle-pet .native-battle-pet-effect{display:grid;place-items:center;padding:8px;border-radius:50%;background:rgba(0,0,0,.46);box-shadow:0 2px 10px rgba(0,0,0,.5),inset 0 0 0 1px rgba(255,255,255,.08);font-size:clamp(35px,11vw,60px);opacity:1;animation:battle-pet-effect .85s ease-out both;filter:drop-shadow(0 0 8px currentColor)}
.native-battle-pet-effect .native-battle-icon{width:clamp(45px,15vw,76px);height:clamp(45px,15vw,76px);stroke-width:1.8}
.native-battle-pet .native-battle-pet-effect.is-qte-reward{position:relative;background:rgba(0,0,0,.72);animation:battle-qte-reward 1.9s ease-out both}
.native-battle-qte-gain{position:absolute;right:-12px;top:-10px;padding:3px 6px;border-radius:8px;background:#080c12;color:#fff;font-size:clamp(22px,6vw,32px);line-height:1;text-shadow:0 0 8px currentColor}
@keyframes battle-qte-reward{0%{opacity:0;transform:translateY(16px) scale(.5)}18%{opacity:1;transform:translateY(0) scale(1.12)}30%,85%{opacity:1;transform:scale(1)}100%{opacity:0;transform:translateY(-12px) scale(1.05)}}
.native-battle-damage{position:absolute;right:0;top:6%;color:#ffa25c;font-size:clamp(22px,8vw,36px);text-shadow:0 2px 5px #000;animation:battle-damage-float 1.1s ease-out both}
@keyframes battle-pet-effect{0%{opacity:0;transform:scale(.3) rotate(-16deg)}25%{opacity:1;transform:scale(1.2) rotate(5deg)}70%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.3)}}
@keyframes battle-damage-float{0%{opacity:0;transform:translateY(10px) scale(.6)}20%{opacity:1;transform:translateY(0) scale(1.1)}75%{opacity:1}100%{opacity:0;transform:translateY(-24px)}}
.native-battle-pet strong{
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:clamp(12px,3.4vw,16px);
  text-transform:uppercase;
}
.native-battle-pet span{
  font-size:9px;
  font-weight:900;
  letter-spacing:.12em;
  opacity:.55;
  text-transform:uppercase;
}
.native-battle-ready{min-height:1em;color:#aeb6c5;font-size:8px!important;letter-spacing:.14em!important;opacity:.72!important}
.native-battle-ready.is-ready{color:#7ef0bd;opacity:1!important}
.native-battle-pet-power{
  color:#c4cbd7;
  font-size:clamp(9px,2.7vw,12px)!important;
  font-variant-numeric:tabular-nums;
  letter-spacing:.09em;
  opacity:.76!important;
}
.native-battle-hp-segments{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:6px;
  width:100%;
  color:var(--battle-pet-color,#66dcf8);
}
.native-battle-hp-segments>span{
  display:grid;
  grid-template-columns:repeat(var(--battle-hp-max,5),minmax(0,1fr));
  gap:3px;
  min-width:0;
  padding:3px;
  border:2px solid currentColor;
  border-radius:8px;
  box-shadow:0 0 10px color-mix(in srgb,currentColor 26%,transparent);
}
.native-battle-hp-segments i{
  display:block;
  height:15px;
  border-radius:2px;
  background:rgba(255,255,255,.11);
}
.native-battle-hp-segments i.is-filled{
  background:currentColor;
  box-shadow:0 0 8px color-mix(in srgb,currentColor 42%,transparent);
}
.native-battle-hp-segments i.is-lost{animation:battle-health-loss .85s ease-out both}
@keyframes battle-health-loss{0%,30%{background:#ff8c54;box-shadow:0 0 14px #ff8c54}100%{background:rgba(255,255,255,.11);box-shadow:none}}
.native-battle-hp-segments>b{
  min-width:3.5ch;
  color:#f4f5f8;
  font-size:clamp(10px,3vw,13px);
  font-variant-numeric:tabular-nums;
  text-align:right;
}
.native-battle-hp-segments[data-pet-appearance="hexicacti"]{--battle-pet-color:#d64dff}
.native-battle-hp-segments[data-pet-appearance="skelepurr"]{--battle-pet-color:#35dff8}
.native-battle-hp-segments[data-pet-appearance="telechirp"]{--battle-pet-color:#ffc22e}
.native-battle-round-card[data-self-appearance="hexicacti"]{--battle-pet-color:#d64dff}
.native-battle-round-card[data-self-appearance="skelepurr"]{--battle-pet-color:#35dff8}
.native-battle-round-card[data-self-appearance="telechirp"]{--battle-pet-color:#ffc22e}
/* Battle controls follow the player's pet; the surrounding shell keeps its faction theme. */
.native-battle-round-card{--active-faction:var(--battle-pet-color,#35dff8)}
.native-battle-round-card .button:not(.primary){
  border-color:var(--battle-pet-color,#35dff8)!important;
  color:var(--battle-pet-color,#35dff8)!important;
}
.native-battle-round-card[data-self-appearance="hexicacti"] .native-battle-round-track .is-current{color:#d64dff}
.native-battle-round-card[data-self-appearance="skelepurr"] .native-battle-round-track .is-current{color:#35dff8}
.native-battle-round-card[data-self-appearance="telechirp"] .native-battle-round-track .is-current{color:#ffc22e}
.native-battle-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.native-battle-wait{
  margin:0;
  font-size:12px;
  font-weight:900;
  letter-spacing:.14em;
}
.native-battle-round-track{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:6px;
}
.native-battle-round-track span{
  display:grid;
  place-items:center;
  min-height:32px;
  border:1px solid rgba(255,255,255,.16);
  border-radius:6px;
  font-size:10px;
  font-weight:900;
  opacity:.42;
}
.native-battle-round-track .is-current{
  border-color:currentColor;
  opacity:1;
  box-shadow:inset 0 0 0 1px currentColor;
}
.native-battle-round-track .is-done{opacity:.72}
.native-battle-health-grid{
  display:grid;
  gap:9px;
}
.native-battle-hp{
  display:grid;
  grid-template-columns:minmax(70px,.8fr) minmax(90px,2fr) auto;
  gap:8px;
  align-items:center;
  text-align:left;
  font-size:10px;
  font-weight:900;
  text-transform:uppercase;
}
.native-battle-hp>span{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.native-battle-hp>div{
  height:10px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.22);
  border-radius:999px;
  background:rgba(0,0,0,.24);
}
.native-battle-hp i{
  display:block;
  height:100%;
  background:currentColor;
  transition:width .25s ease;
}
.native-battle-sync-pad{
  display:grid;
  gap:9px;
  place-items:stretch;
  min-height:0;
  padding:0 0 34px;
  border:0;
  border-radius:0;
}
.native-battle-qte-modal{
  position:absolute;
  inset:0;
  z-index:20;
  display:grid;
  place-items:center;
  padding:clamp(12px,4vw,28px) max(12px,env(safe-area-inset-right)) clamp(12px,4vw,28px) max(12px,env(safe-area-inset-left));
  overflow:auto;
  background:rgba(4,7,11,.84);
  -webkit-backdrop-filter:blur(9px);
  backdrop-filter:blur(9px);
}
.native-battle-qte-dialog{
  display:grid;
  gap:12px;
  width:min(100%,560px);
  max-height:100%;
  overflow:auto;
  padding:clamp(16px,5vw,28px);
  border:1px solid rgba(129,220,243,.65);
  border-radius:16px;
  background:radial-gradient(ellipse at 50% 0%,rgba(112,229,255,.12),transparent 62%),linear-gradient(155deg,#1b2129,#090d12 72%);
  box-shadow:0 0 0 1px rgba(255,255,255,.08),0 20px 70px rgba(0,0,0,.8),0 0 30px rgba(112,229,255,.14);
}
.native-battle-qte-dialog:focus{outline:none}
.native-battle-qte-modal.is-qte-game .native-battle-qte-dialog{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.native-battle-qte-modal.is-qte-game .native-battle-qte-dialog .native-battle-inline-panel.native-battle-event-card{min-height:0!important;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.native-battle-qte-dialog .native-battle-tap-circle{width:clamp(190px,56vw,270px);font-size:clamp(30px,8vw,40px)}
.native-battle-qte-dialog .native-battle-tap-stage{height:clamp(220px,42vh,360px)}
.native-battle-qte-dialog .native-battle-swipe-stage{height:clamp(220px,42vh,360px)}
.native-battle-qte-modal.is-qte-game{padding:8px}
.native-battle-qte-modal.is-qte-intro{box-sizing:border-box;overflow:hidden;padding:clamp(12px,4vw,24px)}
.native-battle-qte-modal.is-qte-intro .native-battle-qte-dialog{display:grid;place-items:center;box-sizing:border-box;width:min(100%,560px);height:min(62vh,520px);min-height:0;max-height:100%;padding:clamp(20px,7vw,42px);overflow:hidden;border:2px solid rgba(255,122,24,.7);border-radius:20px;background:radial-gradient(ellipse at 50% 48%,rgba(255,122,24,.18),transparent 60%),linear-gradient(155deg,#1b2027,#080b10 72%);box-shadow:0 0 0 1px rgba(255,255,255,.08),0 18px 60px rgba(0,0,0,.82),0 0 34px rgba(255,122,24,.2);animation:battle-trick-treat-in .28s cubic-bezier(.2,.9,.25,1.2) both}
.native-battle-trick-treat-intro{position:relative;display:grid;place-items:center;gap:0;width:100%;text-align:center}
.native-battle-trick-treat-intro strong{z-index:1;display:grid;color:#ff7919;font-family:Impact,"Arial Narrow",system-ui,sans-serif;font-size:clamp(45px,13vw,76px);font-stretch:condensed;font-weight:1000;line-height:.82;letter-spacing:.035em;text-shadow:0 3px 0 #6c2608,0 0 16px rgba(255,112,16,.62);transform:rotate(-2deg)}
.native-battle-trick-treat-intro strong .is-or{color:#f2eee8;font-size:.48em;line-height:1.05;letter-spacing:.18em;text-shadow:0 2px 0 #43434a,0 0 14px rgba(255,255,255,.25)}
.native-battle-trick-treat-icon{position:absolute;width:clamp(68px,19vw,120px);height:clamp(68px,19vw,120px);object-fit:contain;filter:drop-shadow(0 0 16px rgba(255,122,24,.45));animation:battle-trick-treat-bob .9s ease-in-out infinite alternate}
.native-battle-trick-treat-icon.is-pumpkin{left:0;top:50%;transform:translateY(-50%) rotate(-13deg)}
.native-battle-trick-treat-icon.is-skull{right:0;top:50%;transform:translateY(-50%) rotate(13deg);animation-delay:.15s}
@keyframes battle-trick-treat-in{from{opacity:0;transform:scale(.86) rotate(-2deg)}to{opacity:1;transform:scale(1) rotate(0)}}
@keyframes battle-trick-treat-bob{from{translate:0 -4px}to{translate:0 5px}}
.native-battle-qte-modal.is-qte-game .native-battle-qte-dialog{box-sizing:border-box;grid-template-rows:minmax(0,1fr);gap:0;width:100%;height:100%;max-height:100%;overflow:hidden;padding:0;border-radius:0}
.native-battle-qte-modal.is-qte-game .native-battle-tap-card{height:100%;min-height:0!important;align-content:stretch;gap:0;padding:0;border:0;border-radius:0;background:transparent}
.native-battle-qte-modal.is-qte-result .native-battle-qte-dialog .native-battle-swipe-result{box-sizing:border-box;width:100%;height:100%;min-height:0!important;align-content:center;justify-items:center}
.native-battle-qte-modal.is-qte-game :is(.native-battle-tap-play,.native-battle-swipe-play,.native-battle-spin-play){grid-template-rows:min-content minmax(0,1fr);justify-items:stretch;gap:8px;width:100%;height:100%;min-height:0}
.native-battle-qte-modal.is-qte-game .native-battle-swipe-stage{width:100%;height:100%;min-height:0}
.native-battle-qte-modal.is-tap-game.is-tap-active .native-battle-tap-circle{width:100%;height:100%;min-height:0;aspect-ratio:auto;border:0;border-radius:16px;background:transparent;box-shadow:none;color:transparent;font-size:0}
.native-battle-qte-modal.is-tap-game.is-tap-active .native-battle-tap-icon{width:min(88vw,58vh,520px);max-width:90%;max-height:90%;object-fit:contain;filter:drop-shadow(0 0 20px rgb(0 0 0 / 65%));transition:transform .08s ease,filter .08s ease}
.native-battle-qte-modal.is-tap-game.is-tap-active .native-battle-tap-circle:active:not(:disabled) .native-battle-tap-icon{transform:scale(.93);filter:brightness(1.2) drop-shadow(0 0 24px rgb(255 255 255 / 24%))}
.native-battle-qte-dialog>.native-battle-advance{margin-top:4px}
.native-battle-sync-pad p,
.native-battle-sync-pad small,
.native-battle-result-card p{margin:0}
.native-battle-inline-panel{display:grid;gap:clamp(8px,1.6vh,14px);min-width:0;align-content:start;text-align:center}
.native-battle-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.native-battle-playback-panel{display:grid;place-items:center;min-height:110px;padding:12px}
.native-battle-playback-message{max-width:30ch;color:#e7e8ec;font-size:clamp(14px,4vw,19px);font-weight:900;line-height:1.35;text-align:center;text-wrap:balance;text-shadow:0 2px 8px #000;animation:battle-message-in .3s ease-out both}
@keyframes battle-message-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
.native-battle-inline-panel>.label{font-size:10px;font-weight:1000;letter-spacing:.14em;opacity:.68}
.native-battle-panel-title{font-size:clamp(21px,6vw,30px);line-height:1;text-transform:uppercase}
.native-battle-challenge-panel>p,.native-battle-result-panel>p,.native-battle-complete-panel>p{margin:0;font-size:12px;font-weight:850;letter-spacing:.08em;opacity:.76}
.native-battle-complete-panel .native-battle-result-copy{font-size:clamp(27px,8vw,40px)}
.native-battle-complete-panel>small{font-size:11px;opacity:.7}
.native-battle-sync-pad .native-battle-actions{grid-template-columns:1fr 1fr}
.native-battle-advance{width:100%;min-height:48px;font-weight:950;letter-spacing:.08em}
.native-battle-advance:disabled{opacity:.48}
.native-battle-round-card .native-battle-lock{
  width:100%;
  min-height:clamp(58px,10vh,82px);
  border:3px solid #d4d5dc;
  border-radius:9px;
  background:linear-gradient(#c6c8d0,#9397a2);
  box-shadow:inset 0 0 0 2px #656b77,0 4px 0 #575d67,0 8px 18px rgba(0,0,0,.3);
  color:#12141c;
  font-size:clamp(25px,7vw,39px);
  font-weight:1000;
  letter-spacing:.055em;
  text-shadow:0 1px rgba(255,255,255,.35);
}
.native-battle-round-card .native-battle-waiting{
  width:100%;
  min-height:54px;
  border:1px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.08);
  font-size:clamp(12px,3.3vw,16px);
  font-weight:900;
  letter-spacing:.08em;
}
.native-battle-submitted-state{display:grid;gap:4px;font-size:12px;font-weight:900;letter-spacing:.09em}
.native-battle-submitted-state span{opacity:.68}
.native-battle-clash-card{overflow:hidden}
.native-battle-clash{
  position:relative;
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:8px;
  align-items:center;
  min-height:210px;
  overflow:hidden;
}
.native-battle-clash .fighter{
  display:grid;
  place-items:center;
  min-height:0;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
}
.native-battle-clash .fighter img{
  display:block;
  width:clamp(110px,34vw,190px);
  height:clamp(110px,34vw,190px);
  object-fit:contain;
  filter:drop-shadow(0 0 12px rgb(207 247 255 / 42%));
}
.native-battle-clash .fighter.self img{transform:scaleX(-1)}
.native-battle-clash .fighter.opponent img{transform:none}
.native-battle-clash .fighter[data-pet-appearance="hexicacti"] img{filter:drop-shadow(0 0 12px rgb(185 72 255 / 70%))}
.native-battle-clash .fighter[data-pet-appearance="skelepurr"] img{filter:drop-shadow(0 0 12px rgb(207 247 255 / 84%))}
.native-battle-clash .fighter[data-pet-appearance="telechirp"] img{filter:drop-shadow(0 0 12px rgb(184 139 17 / 78%))}
.native-battle-clash .fighter.self{z-index:1}
.native-battle-clash .fighter.opponent{z-index:1}
.native-battle-clash .fighter.self img,
.native-battle-clash .fighter.opponent img{
  animation:none;
}
.native-battle-clash .self{animation:native-battle-charge-left .62s ease-in-out infinite alternate}
.native-battle-clash .opponent{animation:native-battle-charge-right .62s ease-in-out infinite alternate}
.native-battle-clash>b{font-size:11px;opacity:.55}
.native-battle-clash>strong{
  position:absolute;
  left:50%;
  top:50%;
  translate:-50% -50%;
  padding:9px 13px;
  border:2px solid currentColor;
  border-radius:8px;
  background:var(--bg);
  font-size:20px;
  letter-spacing:.08em;
  animation:native-battle-impact .45s ease-in-out infinite alternate;
}
.native-battle-complete-card .button{justify-self:center;min-width:180px}

/* Current combat prototype: stat shares choose the capped normal-dice pool;
   Tricks/Treats add special dice. The real QTE games are intentionally not
   implemented yet, so the reveal screens show the server-resolved receipts. */
.native-battle-stat-preview{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:8px;
  align-items:center;
  padding:9px 10px;
  border:1px solid rgba(255,255,255,.14);
  border-radius:9px;
}
.native-battle-stat-preview>div{display:grid;gap:2px;min-width:0}
.native-battle-stat-preview>div:first-child{text-align:left}
.native-battle-stat-preview>div:last-child{text-align:right}
.native-battle-stat-preview strong{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:11px;
  text-transform:uppercase;
}
.native-battle-stat-preview span{font-size:9px;font-weight:900;letter-spacing:.07em;opacity:.72}
.native-battle-stat-preview>b{font-size:9px;opacity:.45}
.native-battle-item-picker{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px 12px;
  width:100%;
  padding:9px 10px;
  border:1px solid rgba(173,194,215,.32);
  border-radius:9px;
  background:linear-gradient(145deg,rgba(15,20,28,.96),rgba(8,10,14,.96));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035);
}
.native-battle-item-picker>.label{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;margin:0;font-size:clamp(12px,3.6vw,16px);font-weight:1000;letter-spacing:.09em}
.native-battle-item-limit{font-size:9px;font-weight:1000;letter-spacing:.12em;opacity:.58}
.native-battle-item-picker[data-training-disabled]>.label{color:#f2c98a}
.native-battle-item-row{
  display:grid;
  grid-template-columns:clamp(30px,8.5vw,42px) minmax(0,1fr) clamp(30px,8.5vw,42px);
  grid-template-rows:auto auto auto;
  gap:2px clamp(3px,1.2vw,8px);
  align-items:center;
}
.native-battle-item-row>.button{grid-row:2 / 4}
.native-battle-item-row>strong{grid-column:2;grid-row:2}
.native-battle-item-name{grid-column:2;grid-row:1;justify-self:center;font-size:8px;font-weight:1000;letter-spacing:.1em;line-height:1;opacity:.68}
.native-battle-item-caption{grid-column:2;grid-row:3;justify-self:center;font-size:7px;font-weight:1000;letter-spacing:.1em;line-height:1;opacity:.55}
.native-battle-item-row .button{min-width:0;min-height:38px;padding:0;font-size:20px;color:#53e7ff;border-color:currentColor}
.native-battle-item-row .button:disabled{opacity:.3}
.native-battle-item-row>strong{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:clamp(3px,1vw,7px);
  min-height:38px;
  padding:0 2px;
  border:0;
  font-size:16px;
  letter-spacing:0;
  white-space:nowrap;
}
.native-battle-item-icon{font-size:clamp(20px,6.5vw,32px);line-height:1}
.native-battle-item-row>strong>b{font-size:clamp(13px,4vw,20px);font-variant-numeric:tabular-nums}
.native-battle-receipt-card,
.native-battle-event-card,
.native-battle-exchange-final{min-height:min(100%,390px)}
.native-battle-tally{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  gap:clamp(6px,2vw,16px);
  align-items:end;
  justify-content:center;
}
.native-battle-tally-metric{display:grid;justify-items:center;gap:5px;min-width:0}
.native-battle-tally-metric>strong{font-size:clamp(34px,11vw,58px);line-height:.85;font-variant-numeric:tabular-nums}
.native-battle-tally-metric>span{display:flex;align-items:center;justify-content:center;gap:5px;font-size:clamp(10px,2.7vw,12px);font-weight:1000;letter-spacing:.1em;white-space:nowrap}
.native-battle-tally-metric.is-hit>strong{color:#ff9b3d}
.native-battle-tally-metric.is-block>strong{color:#70e5ff}
.native-battle-tally-separator{align-self:center;font-size:14px;opacity:.45}
.native-battle-icon{display:inline-block;width:clamp(16px,4.6vw,22px);height:clamp(16px,4.6vw,22px);flex:0 0 auto;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round}
.native-battle-icon.is-hit{color:#ff9b3d;filter:drop-shadow(0 0 4px rgb(255 155 61 / 45%))}
.native-battle-icon.is-block{color:#70e5ff;filter:drop-shadow(0 0 4px rgb(112 229 255 / 45%))}
.native-battle-tally.compact .native-battle-tally-metric>strong{font-size:30px}
.native-battle-event-card>.is-after{padding-top:8px;border-top:1px solid rgba(255,255,255,.12)}
.native-battle-result-icon{display:inline-grid;place-items:center;margin-right:.35em;vertical-align:middle}
.native-battle-result-icon .native-battle-icon{width:1em;height:1em}
.native-battle-receipts{
  display:grid;
  gap:6px;
  padding:10px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:8px;
  text-align:left;
}
.native-battle-receipts span{
  font-size:10px;
  font-weight:900;
  letter-spacing:.045em;
}
.native-battle-inline-panel.native-battle-event-card{min-height:0;padding:14px;border:1px dashed rgba(129,220,243,.5);border-radius:10px}
.native-battle-event-card[data-event-type="trick"],
.native-battle-event-card[data-event-type="treat"]{box-shadow:inset 0 0 0 1px rgba(255,255,255,.07)}
.native-battle-event-title{
  font-size:clamp(25px,8vw,40px);
  line-height:.95;
  letter-spacing:.04em;
}
.native-battle-event-winner{
  display:grid;
  gap:4px;
  padding:12px;
  border:2px solid currentColor;
  border-radius:10px;
}
.native-battle-event-winner span{font-size:9px;font-weight:1000;letter-spacing:.15em;opacity:.66}
.native-battle-event-winner strong{font-size:17px;text-transform:uppercase}
.native-battle-tap-card{gap:8px;align-content:center;justify-items:center;min-height:220px!important;text-align:center}
.native-battle-tap-prompt{display:grid;place-items:center;min-height:72px;color:#ff7a18;font-size:clamp(42px,13vw,68px);font-weight:1000;letter-spacing:.12em;text-shadow:0 0 18px rgb(255 122 24 / 45%);animation:native-tap-pulse .55s ease-in-out infinite alternate}
.native-battle-tap-card .native-battle-event-title{font-size:clamp(20px,6vw,30px)}
.native-battle-tap-play{display:grid;justify-items:center;gap:7px;width:100%}
.native-battle-tap-play[hidden],.native-battle-tap-wait[hidden],.native-battle-tap-prompt[hidden]{display:none}
.native-battle-tap-circle{display:grid;place-items:center;width:clamp(190px,56vw,260px);aspect-ratio:1;border:6px solid #b8faff;border-radius:50%;background:radial-gradient(circle at 35% 28%,#73f5ff,#12b8d3 48%,#08768f);box-shadow:0 0 0 6px rgb(20 213 239 / 20%),0 0 34px rgb(20 213 239 / 55%);color:#071219;font-size:clamp(30px,8vw,40px);font-weight:1000;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.native-battle-tap-icon{display:block;width:78%;height:78%;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none}
.native-battle-tap-circle:active:not(:disabled){transform:scale(.92);filter:brightness(1.2)}
.native-battle-tap-circle:disabled{opacity:.55}
.native-battle-tap-burst{position:absolute;z-index:6;width:0;height:0;pointer-events:none}
.native-battle-tap-damage{position:absolute;left:-78px;top:-78px;width:156px;height:156px;overflow:visible;filter:drop-shadow(0 0 10px var(--tap-impact-glow,#ff693d));animation:native-tap-damage-hit .38s cubic-bezier(.15,.85,.25,1) forwards}
.native-battle-tap-burst[data-impact-theme="haunted"]{--tap-impact:#21d7ff;--tap-impact-glow:rgb(33 215 255 / 78%)}
.native-battle-tap-burst[data-impact-theme="damned"]{--tap-impact:#ff693d;--tap-impact-glow:rgb(255 91 42 / 78%)}
.native-battle-tap-damage .is-impact{fill:var(--tap-impact,#ff693d);stroke:#130d0c;stroke-width:6;stroke-linejoin:bevel}
.native-battle-tap-damage .is-crack{fill:none;stroke:#130d0c;stroke-width:5;stroke-linecap:square;stroke-linejoin:bevel}
.native-battle-tap-burst i{position:absolute;left:-7px;top:-8px;width:15px;height:19px;clip-path:polygon(50% 0,100% 32%,72% 100%,0 72%);background:#161010;box-shadow:0 0 9px var(--tap-impact,#ff693d);transform:rotate(var(--burst-angle)) translateY(-31px) scale(.25);animation:native-tap-damage-chip .34s cubic-bezier(.1,.7,.25,1) var(--burst-delay,0ms) forwards}
.native-battle-tap-count,.native-battle-spin-count,.native-battle-qte-counter-space{color:#f7f4ee;font-size:clamp(22px,6vw,30px);font-variant-numeric:tabular-nums}
.native-battle-qte-counter-space{visibility:hidden}
.native-battle-spin-play{display:grid;justify-items:center;gap:8px;width:100%}
.native-battle-spin-play[hidden]{display:none}
.native-battle-spin-stage{display:grid;place-items:center;isolation:isolate}
.native-battle-spin-stage.is-spin-cue .native-battle-spin-icon,.native-battle-spin-stage.is-spin-cue .native-battle-spin-guide{visibility:hidden;opacity:0}
.native-battle-spin-icon{position:relative;z-index:2;display:block;width:min(66vw,48vh,400px);max-width:74%;max-height:74%;object-fit:contain;transform:rotate(var(--spin-rotation,0deg));transition:transform .04s linear;filter:drop-shadow(0 0 18px rgb(0 0 0 / 75%));pointer-events:none;user-select:none;-webkit-user-drag:none}
.native-battle-spin-stage.is-spinning .native-battle-spin-icon{filter:drop-shadow(0 0 22px rgb(255 122 24 / 45%))}
.native-battle-spin-guide{position:absolute;z-index:1;width:min(84vw,62vh,500px);aspect-ratio:1;border:3px dashed rgb(255 122 24 / 72%);border-radius:50%;box-shadow:0 0 16px rgb(255 122 24 / 18%);animation:native-spin-guide 3s linear infinite;pointer-events:none}
.native-battle-spin-guide i{position:absolute;top:-15px;left:calc(50% - 14px);color:#ff7a18;font-size:28px;font-style:normal;font-weight:1000;line-height:1;text-shadow:0 0 12px rgb(255 122 24 / 70%)}
.native-battle-spin-guide i::before{content:"➤"}
.native-battle-spin-cue{align-content:center;white-space:nowrap}
.native-battle-spin-explosion{position:absolute;z-index:4;display:block;width:clamp(42px,13vw,58px);aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;animation:native-spin-explosion .25s ease-out forwards}
.native-battle-spin-explosion svg{display:block;width:100%;height:100%;overflow:visible}
.native-battle-spin-explosion[data-impact-theme="haunted"]{--spin-explosion-color:#21d7ff;--spin-explosion-glow:rgb(33 215 255 / 92%)}
.native-battle-spin-explosion[data-impact-theme="damned"]{--spin-explosion-color:#ff693d;--spin-explosion-glow:rgb(255 91 42 / 92%)}
.spin-explosion-burst{fill:var(--spin-explosion-color);stroke:#100b0b;stroke-width:6;stroke-linejoin:bevel}
.spin-explosion-core{fill:#fff1c7;stroke:#100b0b;stroke-width:3;stroke-linejoin:bevel}
.spin-explosion-spark{fill:none;stroke:#fff5cf;stroke-width:6;stroke-linecap:round;transform-box:fill-box;transform-origin:center;animation:native-spin-particles .25s ease-out both}
.spin-explosion-debris{fill:none;stroke:var(--spin-explosion-color);stroke-width:4;stroke-linecap:round;stroke-linejoin:bevel;transform-box:fill-box;transform-origin:center;animation:native-spin-particles .25s ease-out both}
.native-battle-tap-wait{font-size:10px;font-weight:1000;letter-spacing:.12em;opacity:.75}
.native-battle-tap-wait{padding:10px 14px;border:1px solid rgba(255,255,255,.2);border-radius:8px;background:rgba(0,0,0,.28)}
.native-battle-tap-result{display:grid;gap:10px;justify-items:center;text-align:center}
.native-battle-swipe-result{display:grid;min-height:190px;place-items:center;text-align:center}
.native-battle-swipe-outcome{font-size:clamp(36px,12vw,64px);font-weight:1000;line-height:1;text-shadow:0 0 20px rgb(255 122 24 / 28%)}
.native-battle-qte-bonus{font-size:clamp(15px,4.5vw,22px);font-weight:1000;letter-spacing:.12em;color:#f3f5f8;text-shadow:0 0 12px rgb(112 229 255 / 42%)}
.native-battle-qte-reward{display:grid;justify-items:center;gap:10px;padding:28px 12px;text-align:center;text-transform:uppercase}
.native-battle-qte-reward strong{font-size:clamp(17px,5vw,25px);color:var(--ink)}
.native-battle-qte-reward span{font-size:clamp(26px,8vw,40px);font-weight:1000;color:var(--ink);text-shadow:0 0 16px rgb(255 255 255 / 24%)}
.native-battle-qte-items{display:grid;gap:6px;max-width:100%;min-width:0}
.native-battle-qte-items span{max-width:100%;font-size:clamp(11px,3.2vw,15px);line-height:1.2;letter-spacing:.08em;overflow-wrap:anywhere}
.native-battle-tap-winner{display:grid;gap:2px;font-size:clamp(25px,7vw,38px);text-transform:uppercase}
.native-battle-tap-winner span{font-size:10px;letter-spacing:.18em;opacity:.65}
.native-battle-tap-scores{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%}
.native-battle-tap-score{display:grid;gap:4px;min-width:0;padding:9px 6px;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#b8c0ca}
.native-battle-tap-score span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:900;letter-spacing:.06em}
.native-battle-tap-score strong{font-size:15px;font-weight:1000;color:#f7f4ee}
.native-battle-tap-score small{font-size:9px;font-weight:900;letter-spacing:.045em;opacity:.72}
.native-battle-tap-score.is-winner{border-color:#ffbd32;color:#ffbd32;box-shadow:0 0 14px rgb(255 189 50 / 22%)}
.native-battle-tap-score.is-winner strong{color:#ffbd32}
.native-battle-swipe-play{display:grid;justify-items:center;gap:7px;width:100%}
.native-battle-swipe-play[hidden]{display:none}
.native-battle-swipe-stage{position:relative;width:100%;height:clamp(138px,38vw,190px);overflow:hidden;border:1px solid rgba(112,229,255,.45);border-radius:10px;background:radial-gradient(ellipse at 50% 110%,rgba(18,184,211,.2),transparent 65%),#090d12;touch-action:none;user-select:none;-webkit-user-select:none}
.native-battle-tap-stage{position:relative;display:grid;place-items:center;width:100%;height:clamp(138px,38vw,190px);overflow:hidden;border:1px solid rgba(112,229,255,.45);border-radius:10px;background:radial-gradient(ellipse at 50% 110%,rgba(18,184,211,.2),transparent 65%),#090d12;touch-action:none;user-select:none;-webkit-user-select:none}
.native-battle-qte-cue{position:absolute;inset:0;z-index:4;box-sizing:border-box;display:grid;place-items:center;overflow:visible;margin:0;padding:.12em .18em .2em;background:#090d12;color:#ff7a18;font-family:Arial,Helvetica,sans-serif;font-size:clamp(48px,15vw,72px);font-weight:900;line-height:1.15;letter-spacing:.06em;white-space:nowrap;text-align:center;text-shadow:0 3px 0 #7b2f0b,0 0 20px rgb(255 122 24 / 60%);animation:native-swipe-ready .2s ease-out both;pointer-events:none}
.native-battle-qte-cue[hidden]{display:none}
.native-battle-swipe-target{position:absolute;top:0;left:0;display:grid;place-items:center;width:64px;height:64px;border-radius:50%;font-size:44px;will-change:transform;pointer-events:none}
.native-battle-swipe-target img{display:block;width:100%;height:100%;object-fit:contain}
.native-battle-swipe-target[hidden]{display:none}
.native-battle-swipe-target.is-bomb{filter:drop-shadow(0 0 10px rgba(255,75,53,.7))}
.native-battle-swipe-target.is-sliced{animation:native-swipe-slice .18s ease-out forwards}
.native-battle-swipe-target.is-bomb-sliced{filter:drop-shadow(0 0 12px rgba(255,45,45,.95))}
.native-battle-swipe-slice-fx{position:absolute;z-index:3;pointer-events:none}
.native-battle-swipe-slice-fx i{position:absolute;inset:0;display:block;overflow:hidden;animation-duration:.72s;animation-timing-function:cubic-bezier(.2,.65,.4,1);animation-fill-mode:forwards}
.native-battle-swipe-slice-fx i img{display:block;width:100%;height:100%;object-fit:contain}
.native-battle-swipe-slice-fx .is-left{clip-path:inset(0 50% 0 0);animation-name:native-swipe-half-left}
.native-battle-swipe-slice-fx .is-right{clip-path:inset(0 0 0 50%);animation-name:native-swipe-half-right}
.native-battle-swipe-slice-fx b{position:absolute;left:6%;top:48%;width:88%;height:3px;border-radius:99px;background:#efffff;box-shadow:0 0 12px #70e5ff;transform:rotate(-38deg);animation:native-swipe-slash .2s ease-out forwards}
.native-battle-swipe-bomb-fx{position:absolute;z-index:3;display:grid;place-items:center;color:#ff694d;font-size:56px;font-weight:1000;text-shadow:0 0 14px #ff392d;pointer-events:none;animation:native-swipe-bomb-pop .4s ease-out forwards}
.native-battle-swipe-trail{position:absolute;z-index:2;height:5px;transform-origin:left center;border-radius:99px;background:linear-gradient(90deg,rgba(112,229,255,.12),#d9ffff);box-shadow:0 0 12px #70e5ff;pointer-events:none}
.native-battle-swipe-trail[hidden]{display:none}
@keyframes native-swipe-slice{to{opacity:0;scale:1.45}}
@keyframes native-swipe-half-left{to{transform:translate(-16px,74px) rotate(-42deg);opacity:0}}
@keyframes native-swipe-half-right{to{transform:translate(18px,78px) rotate(42deg);opacity:0}}
@keyframes native-swipe-slash{to{opacity:0;transform:translate(14px,-8px) rotate(-38deg) scaleX(.35)}}
@keyframes native-swipe-bomb-pop{to{opacity:0;transform:scale(1.65) rotate(35deg)}}
@keyframes native-swipe-ready{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@keyframes native-spin-guide{to{transform:rotate(360deg)}}
@keyframes native-spin-explosion{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(-12deg)}24%{opacity:1;transform:translate(-50%,-50%) scale(1.12) rotate(6deg)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.5) rotate(14deg)}}
@keyframes native-spin-particles{0%{opacity:1;transform:scale(.6)}100%{opacity:0;transform:scale(2.1) rotate(18deg)}}
@keyframes native-tap-damage-hit{0%{opacity:0;transform:scale(.28) rotate(-14deg)}24%{opacity:1;transform:scale(1.12) rotate(5deg)}100%{opacity:0;transform:scale(.92) rotate(0)}}
@keyframes native-tap-damage-chip{to{transform:rotate(var(--burst-angle)) translateY(-66px) scale(.12);opacity:0}}
@keyframes native-tap-pulse{to{transform:scale(1.08);filter:brightness(1.35)}}
.native-battle-exchange-final small{font-size:11px;font-weight:1000;letter-spacing:.1em}
.native-battle-complete-actions{align-items:center}
.native-battle-complete-actions>p{margin:0}

.native-battle-toast{
  position:absolute;
  top:12px;
  left:50%;
  z-index:9;
  max-width:calc(100% - 32px);
  translate:-50% -8px;
  padding:9px 13px;
  border:1px solid currentColor;
  border-radius:999px;
  background:rgba(10,10,12,.94);
  color:#fff;
  font-size:11px;
  font-weight:1000;
  letter-spacing:.08em;
  text-align:center;
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease,translate .18s ease;
}
.native-battle-toast.is-visible{translate:-50% 0;opacity:1}
.native-battle-toast[data-status="error"]{border-color:#ff5b69}

@keyframes native-battle-charge-left{
  from{transform:translateX(-8px) rotate(-1deg)}
  to{transform:translateX(12px) rotate(2deg)}
}
@keyframes native-battle-charge-right{
  from{transform:translateX(8px) rotate(1deg)}
  to{transform:translateX(-12px) rotate(-2deg)}
}
@keyframes native-battle-impact{
  from{transform:scale(.96)}
  to{transform:scale(1.06)}
}
@media(prefers-reduced-motion:reduce){
  .native-battle-impact-art svg,
  .native-battle-pet-self.is-clashing img,
  .native-battle-pet-opponent.is-clashing img{animation:none;transform:none}
  .native-battle-pet-self.is-clashing img{transform:scaleX(-1)}
  .native-battle-pet-art>img,
  .native-battle-pet .native-battle-pet-effect,
  .native-battle-item-reveal,
  .native-battle-damage,
  .native-battle-qte-cue,
  .native-battle-swipe-target.is-sliced,
  .native-battle-hp-segments i,
  .native-battle-playback-message{animation:none!important}
}

body.deep-screen-open{overflow:hidden!important;overscroll-behavior:none!important}
body.deep-screen-open .camera-bubble,
body.deep-screen-open .admin-bubble{display:none!important}

/* This scroll region already begins below the persistent WAR strip, so the
   segmented control sticks to its own top edge without adding WAR twice. */
body[data-primary-app="true"] .primary-view-party .feed-controls{
  position:sticky;
  top:0;
  z-index:31;
  isolation:isolate;
  transform:translateZ(0);
  will-change:transform;
  margin-inline:-10px;
  padding-inline:10px;
  background-color:var(--bg);
}

/* Seal the fractional-pixel seam between independently sticky surfaces.
   The measured WAR height rounds up, so the feed must not paint in that sliver. */
body[data-primary-app="true"] .primary-view-party .feed-controls::before{
  content:"";
  position:absolute;
  inset-inline:0;
  bottom:100%;
  height:2px;
  background:var(--bg);
  pointer-events:none;
}

@media(max-width:380px){
  .deep-screen{top:var(--primary-war-space,64px)}
  .deep-native-battle{padding-inline:8px}
  .native-battle-hp{grid-template-columns:minmax(62px,.7fr) minmax(72px,1.6fr) auto}
  .native-battle-stat-preview span{font-size:8px}
}

@media(prefers-reduced-motion:reduce){
  .native-battle-spin-guide{animation:none}
  .native-battle-spin-explosion,.spin-explosion-spark,.spin-explosion-debris{animation-duration:.01ms}
}
