:root{--panel:#25241d;--line:#050509;--text:#f7f0d8;--muted:#aaa58d;--gold:#ffd91d;--green:#35db54;--red:#ef3349;--blue:#2c9cff;--purple:#9b5cff;--font:Consolas,'Courier New',monospace}*{box-sizing:border-box}body{margin:0;color:var(--text);font-family:var(--font);background:#1d2676;min-height:100vh}.bg{position:fixed;inset:0;z-index:-3;background:radial-gradient(circle at 12% 80%,#f0e7ff 0 28px,transparent 29px),radial-gradient(circle at 18% 78%,#a99cff 0 42px,transparent 43px),radial-gradient(circle at 85% 62%,#dfd8ff 0 18px,transparent 19px),linear-gradient(#202983 0 54%,#2b52a6 54% 71%,#11184f 71%)}.bg:after{content:"";position:absolute;left:0;right:0;bottom:0;height:170px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 12px,transparent 12px 24px),linear-gradient(180deg,transparent,#0b123e)}.crt{position:fixed;inset:0;z-index:30;pointer-events:none;opacity:.06;background:repeating-linear-gradient(0deg,#000 0 2px,transparent 2px 4px)}.app{width:min(1180px,calc(100% - 20px));margin:0 auto;padding:24px 0 50px}.screen{display:none}.screen.active{display:block}.hidden{display:none!important}.center{text-align:center}h1,h2,h3,p{margin-top:0}.home{padding-top:10px}.home h1{color:var(--gold);font-size:62px;letter-spacing:8px;margin:0;text-shadow:0 0 18px rgba(255,217,29,.55)}.home h2{color:var(--gold);letter-spacing:2px}.home p{color:#c8c0a2}.btn{background:var(--panel);color:var(--text);border:3px solid var(--line);box-shadow:4px 4px 0 rgba(0,0,0,.55);padding:12px 18px;font-family:var(--font);font-size:15px;font-weight:bold;cursor:pointer}.btn:hover,.digi:hover,.node.available:hover,.modalItem:hover,.target:hover{filter:brightness(1.12);transform:translate(-1px,-1px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{border-color:var(--gold);color:var(--gold)}.btn.big{min-width:230px;margin:12px auto;display:block}.btn.small{font-size:12px;padding:8px 12px}.btn.full{width:100%;margin-top:12px}.mode.selected{border-color:var(--blue)}.danger{border-color:var(--red)!important;color:#ffb8c0}.modes{display:grid;gap:14px;justify-content:center;margin:20px 0}.row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.title{text-align:center;margin:16px auto 22px}.title h2{font-size:30px;color:var(--gold);margin-bottom:8px}.title p{color:#cdc6b1}.top{display:flex;gap:16px;align-items:flex-start;margin-bottom:18px}.top h2{color:var(--gold);margin-bottom:6px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}.grid.three{grid-template-columns:repeat(3,minmax(230px,1fr));max-width:980px;margin:0 auto}.digi{background:var(--panel);border:3px solid var(--line);box-shadow:5px 5px 0 rgba(0,0,0,.6);padding:16px;cursor:pointer;min-height:365px}.digi .ball{font-size:18px;text-align:left;height:20px}.digi img{display:block;margin:0 auto 14px;width:160px;height:128px;object-fit:cover;border:2px solid #111;background:#111}.digi h3{text-align:center;margin:0 0 6px;color:#fff}.lv{text-align:center;color:var(--muted);margin-bottom:10px}.typeRow{text-align:center;margin-bottom:12px}.type{display:inline-block;padding:4px 10px;color:#fff;font-size:12px;font-weight:bold;border:2px solid rgba(0,0,0,.45)}.type-Vacuna{background:var(--green)}.type-Virus{background:var(--red)}.type-Data{background:var(--blue)}.type-Unknown{background:var(--purple)}.stat{display:grid;grid-template-columns:44px 1fr 36px;gap:7px;align-items:center;font-size:12px;margin:5px 0}.bar{height:7px;background:#444}.bar span{display:block;height:100%;background:#bfc2b0}.hpbar{height:12px;background:#020202;border:1px solid #111;margin-top:8px}.hpbar span{display:block;height:100%;background:#23ff4e}.skill{border:1px solid #3c3a2d;padding:10px;margin-top:12px;text-align:center}.skill strong{display:block}.skill span{display:block;color:#b9b49e;font-size:12px;margin-top:5px}.layout{display:grid;grid-template-columns:190px minmax(520px,720px) 190px;gap:14px;justify-content:center}.panel{background:var(--panel);border:3px solid var(--line);box-shadow:5px 5px 0 rgba(0,0,0,.55);padding:14px}.panel h3{color:#d8d0bc}.mapPanel{padding:10px}.mapHead{display:flex;justify-content:space-between;gap:10px;padding:8px 10px}.mapHead h2{color:var(--gold);margin-bottom:4px}.mapHead p{color:var(--muted);margin:0}#runInfo{font-size:12px;text-align:right;line-height:1.6}.route{position:relative;height:930px;overflow:hidden;border:3px solid var(--line);background:#76dca5}.route:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 12% 8%,#447a32 0 52px,transparent 54px),radial-gradient(circle at 8% 16%,#477d34 0 48px,transparent 50px),radial-gradient(circle at 90% 8%,#447a32 0 52px,transparent 54px),radial-gradient(circle at 94% 16%,#477d34 0 48px,transparent 50px),radial-gradient(circle at 12% 92%,#42762d 0 58px,transparent 60px),radial-gradient(circle at 25% 96%,#42762d 0 48px,transparent 50px),radial-gradient(circle at 87% 92%,#42762d 0 58px,transparent 60px),radial-gradient(circle at 50% 42%,rgba(255,255,255,.16) 0 120px,transparent 122px),linear-gradient(135deg,#82e2b3,#67cf91)}.route:after{content:"";position:absolute;left:250px;right:250px;top:0;height:110px;background:linear-gradient(#2d9aa7,#2d9aa7 35%,#333 36% 65%,#9ca3af 66%);border:3px solid rgba(0,0,0,.45)}#lines{position:absolute;inset:0;z-index:2;width:100%;height:100%}#lines line{stroke:#111;stroke-width:2.2;stroke-dasharray:8 7;opacity:.78}#nodes{position:absolute;inset:0;z-index:3}.node{position:absolute;width:54px;height:54px;margin:-27px 0 0 -27px;display:grid;place-items:center;border-radius:50%;border:3px solid #111;box-shadow:3px 3px 0 rgba(0,0,0,.45);background:#222;color:#fff;font-size:22px;font-weight:bold}.node.available{outline:5px solid rgba(255,217,29,.35);cursor:pointer}.node.done{opacity:.7;background:#1f6a36}.node.locked{filter:grayscale(1) brightness(.55);cursor:not-allowed}.node.start{background:#2563eb}.node.wild{background:#f7f7f7;color:#111}.node.battle{background:#dc2626}.node.trainer{background:#f97316}.node.event{background:#e5e7eb;color:#111}.node.item{background:#facc15;color:#111}.node.heal{background:#22c55e;color:#06250e}.node.boss{background:#7f1d1d;color:#ffd91d}.teamEntry,.itemEntry{background:#171711;border:2px solid rgba(255,255,255,.12);padding:8px;font-size:12px;margin-bottom:10px}.teamEntry{display:grid;grid-template-columns:48px 1fr;gap:8px;align-items:center}.teamEntry img{width:48px;height:48px;object-fit:cover;border:2px solid #111}.teamEntry strong{display:block}.teamEntry small,.itemEntry small{color:var(--muted)}.badges{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.badge{aspect-ratio:1;border:2px dashed rgba(255,255,255,.2);background:#171711;display:grid;place-items:center;font-size:20px}.badge.earned{border-style:solid;color:var(--gold)}.battleTitle h2{color:var(--red)}.battleGrid{display:grid;grid-template-columns:minmax(300px,1fr) 250px minmax(300px,1fr);gap:12px}.battlePanel{min-height:520px;background:#292929;border:3px solid #050509;box-shadow:5px 5px 0 rgba(0,0,0,.6);padding:14px}.combat{position:relative;min-height:118px;overflow:hidden;background:#9eea74;border:3px solid #171711;padding:8px;margin-bottom:12px}.combat.active{outline:4px solid var(--gold)}.combat.dead{filter:grayscale(1) brightness(.55)}.combat:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#c7ff93 0 25%,#6dc95f 26% 100%);opacity:.9}.combat img{position:absolute;width:115px;height:84px;object-fit:cover;top:30px;z-index:2;border:2px solid rgba(0,0,0,.25)}.combat.player img{left:45%}.combat.enemy img{right:45%;transform:scaleX(-1)}.combatInfo{position:relative;z-index:3}.combatName{display:flex;justify-content:space-between;gap:6px;color:#fff;text-shadow:2px 2px #111;font-weight:bold}.combatStats{margin-top:6px;color:#314033;font-size:11px;font-weight:bold}.mid{display:grid;align-content:start;gap:10px}.arena{position:relative;height:260px;background:#1f2377;border:3px solid #050509;box-shadow:5px 5px 0 rgba(0,0,0,.6);overflow:hidden}.arena:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,rgba(255,217,29,.16) 0 70px,transparent 72px),linear-gradient(#1f2377 0 45%,#2b52a6 46% 70%,#11184f 71%)}.beam{position:absolute;z-index:3;height:16px;opacity:0;color:var(--gold);background:linear-gradient(90deg,transparent,currentColor,#fff,transparent);filter:drop-shadow(0 0 10px currentColor)}.beam.fromPlayer{left:20px;top:130px;width:210px;transform:rotate(-6deg);color:#ffe66b}.beam.fromEnemy{right:20px;top:130px;width:210px;transform:rotate(174deg);color:#79dbff}.arena.attacking .beam{animation:beam .72s ease}.impact{position:absolute;z-index:4;width:34px;height:34px;margin:-17px;border-radius:50%;opacity:0;background:radial-gradient(circle,#fff 0 14%,#ffd91d 15% 32%,#ff4fd8 33% 50%,transparent 51%);box-shadow:0 0 40px #fff}.impact.onEnemy{left:76%;top:43%}.impact.onPlayer{left:24%;top:57%}.arena.attacking .impact{animation:burst .72s ease}@keyframes beam{0%{opacity:0;scale:.1 1}30%,75%{opacity:1;scale:1 1}100%{opacity:0;scale:1.25 1}}@keyframes burst{0%{opacity:0;transform:scale(.2)}35%{opacity:1;transform:scale(2)}100%{opacity:0;transform:scale(4)}}.arena.shake{animation:shake .25s linear}@keyframes shake{25%{transform:translate(4px,-2px)}50%{transform:translate(-4px,2px)}75%{transform:translate(3px,1px)}}.dmg,.call{position:absolute;z-index:5;font-weight:bold;text-shadow:3px 3px #000;animation:float .9s ease forwards}.dmg{font-size:24px;color:white}.dmg.crit{color:var(--gold)}.call{font-size:16px;color:var(--gold)}.onEnemy.dmg{left:72%;top:35%}.onPlayer.dmg{left:18%;top:55%}.onEnemy.call{left:58%;top:25%}.onPlayer.call{left:12%;top:45%}@keyframes float{0%{opacity:0;transform:translateY(18px)}25%{opacity:1}100%{opacity:0;transform:translateY(-55px)}}.cmd{display:grid;grid-template-columns:1fr 1fr;gap:8px}.log{height:180px;overflow:auto;background:var(--panel);border:3px solid #050509;box-shadow:5px 5px 0 rgba(0,0,0,.6);padding:10px;font-size:12px;line-height:1.6}.good{color:#93ff9f}.bad{color:#ff9fa8}.gold{color:#ffe66b}.blue{color:#90dfff}.rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.rules article{background:var(--panel);border:3px solid #050509;box-shadow:5px 5px 0 rgba(0,0,0,.6);padding:18px}.rules h3{color:var(--gold)}.rules p{color:#cdc6b1;line-height:1.6}textarea{width:100%;min-height:260px;background:#111;color:#b8ffbf;border:3px solid #050509;padding:12px;font-family:var(--font)}.modal{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:16px;background:rgba(0,0,0,.7)}.modalCard{width:min(1100px,100%);max-height:88vh;overflow:auto;background:var(--panel);border:3px solid #050509;box-shadow:7px 7px 0 rgba(0,0,0,.65);padding:18px}.modalHead{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.modalHead h2{color:var(--gold);margin-bottom:4px}.bagGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.modalItem,.target{display:block;width:100%;text-align:left;background:#171711;border:2px solid rgba(255,255,255,.14);color:var(--text);padding:10px;cursor:pointer;font-family:var(--font);margin-bottom:10px}.modalItem strong,.target strong{display:block;color:#fff}.modalItem span,.target span{display:block;color:var(--muted);margin-top:5px}#targetPanel{margin-top:16px;padding-top:14px;border-top:2px solid rgba(255,255,255,.15)}#targets{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}@media(max-width:1000px){.layout,.battleGrid,.bagGrid{grid-template-columns:1fr}.grid.three{grid-template-columns:1fr}.route{height:760px}.home h1{font-size:38px}}

/* v11: estilo v8 conservado, objetos rápidos y colores por tipo */

/* v10 fixes */
.modes{display:none!important}
.itemButton{display:block;width:100%;text-align:left;font-family:var(--font);color:var(--text);cursor:pointer}
.itemButton:hover{border-color:var(--gold);filter:brightness(1.12);transform:translate(-1px,-1px)}
.quickItemCard{width:min(560px,calc(100% - 24px))}
.quickItems{display:grid;gap:10px;margin:12px 0}
.quickItems:empty{display:none}
#targets{grid-template-columns:1fr!important}
.target{display:grid!important;grid-template-columns:46px 1fr;gap:10px;align-items:center}
.target img{width:40px;height:40px;object-fit:cover;border:2px solid #111}
.target div{display:grid;gap:3px}
.target strong{color:#fff}
.target span{color:var(--muted)}

.combat{
  min-height:255px;
  padding:10px;
  display:grid;
  grid-template-rows:128px auto;
  align-items:start;
}
.combat img{
  position:relative!important;
  top:auto!important;
  left:auto!important;
  right:auto!important;
  width:145px!important;
  height:110px!important;
  display:block;
  margin:4px auto 8px;
  object-fit:cover;
}
.combat.enemy img{transform:scaleX(-1)!important}
.combatInfo{
  position:relative;
  z-index:3;
  background:rgba(199,255,147,.78);
  padding:8px;
  border:2px solid rgba(0,0,0,.22);
}
.combatName{margin-bottom:4px}
.combatStats{line-height:1.35}
.battlePanel{min-height:620px}

.beam.atk-Vacuna,.impact.atk-Vacuna{color:var(--green)}
.beam.atk-Virus,.impact.atk-Virus{color:var(--red)}
.beam.atk-Data,.impact.atk-Data{color:var(--blue)}
.beam.atk-Unknown,.impact.atk-Unknown{color:var(--purple)}
.impact{
  background:radial-gradient(circle,#fff 0 14%,currentColor 15% 42%,transparent 43%)!important;
  box-shadow:0 0 40px currentColor!important;
}

/* v11 additions */
.node.exchange{background:#7c3aed;color:#fff}
.expbar{height:6px;background:#111;border:1px solid #000;margin-top:4px}
.expbar span{display:block;height:100%;background:#ffd91d}
.runResult{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:rgba(0,0,0,.72)}
.runCard{width:min(520px,calc(100% - 24px));background:var(--panel);border:4px solid #050509;box-shadow:8px 8px 0 rgba(0,0,0,.75);padding:26px;text-align:center}
.runCard h2{color:var(--gold);font-size:32px}
#musicToggle{border-color:var(--purple)}

/* v12 additions */
.node.combat{background:#dc2626}
.node.elite{background:#7c3aed;color:#fff}
.node[data-desc]:hover::after{
  content:attr(data-desc);
  position:absolute;
  left:62px;
  top:-10px;
  width:220px;
  background:#171711;
  color:#f7f0d8;
  border:2px solid #050509;
  box-shadow:3px 3px 0 rgba(0,0,0,.55);
  padding:8px;
  font-size:12px;
  line-height:1.35;
  z-index:20;
  pointer-events:none;
}
.itemButton{display:block;width:100%;text-align:left;font-family:var(--font);color:var(--text);cursor:pointer}
.itemButton:hover{border-color:var(--gold);filter:brightness(1.12);transform:translate(-1px,-1px)}
.beam.atk-Vacuna,.impact.atk-Vacuna{color:var(--green)}
.beam.atk-Virus,.impact.atk-Virus{color:var(--red)}
.beam.atk-Data,.impact.atk-Data{color:var(--blue)}
.beam.atk-Unknown,.impact.atk-Unknown{color:var(--purple)}
.impact{
  background:radial-gradient(circle,#fff 0 14%,currentColor 15% 42%,transparent 43%)!important;
  box-shadow:0 0 40px currentColor!important;
}
.quickItemCard{width:min(560px,calc(100% - 24px))}
.quickItems{display:grid;gap:10px;margin:12px 0}
.quickItems:empty{display:none}
#targets{grid-template-columns:1fr!important}
.target{display:grid!important;grid-template-columns:46px 1fr;gap:10px;align-items:center}
.target img{width:40px;height:40px;object-fit:cover;border:2px solid #111}
.target div{display:grid;gap:3px}
.runResult{position:fixed;inset:0;z-index:90;display:grid;place-items:center;background:rgba(0,0,0,.72)}
.runCard{width:min(520px,calc(100% - 24px));background:var(--panel);border:4px solid #050509;box-shadow:8px 8px 0 rgba(0,0,0,.75);padding:26px;text-align:center}
.runCard h2{color:var(--gold);font-size:32px}
#musicToggle{border-color:var(--purple)}


/* v13 visual fixes: buttons, battle background, type frames, crit feedback */
.btn{
  position:relative;
  border-radius:6px;
  text-transform:uppercase;
  letter-spacing:.04em;
  background:
    linear-gradient(180deg,rgba(255,255,255,.08),transparent 45%),
    var(--panel);
}
.btn::after{
  content:"";
  position:absolute;
  inset:4px;
  border:1px solid rgba(255,255,255,.08);
  pointer-events:none;
}
.btn.primary{
  background:
    linear-gradient(180deg,rgba(255,255,255,.14),transparent 42%),
    #3a3212;
  color:var(--gold);
}
.btn:hover{
  border-color:var(--gold);
}
.cmd .btn{
  min-height:46px;
}
#musicToggle{
  border-color:var(--purple);
  color:#e7d8ff;
}

.arena{
  background:
    radial-gradient(circle at 25% 32%,rgba(53,219,84,.35),transparent 22%),
    radial-gradient(circle at 78% 25%,rgba(44,156,255,.32),transparent 24%),
    radial-gradient(circle at 45% 75%,rgba(155,92,255,.30),transparent 28%),
    radial-gradient(circle at 62% 58%,rgba(239,51,73,.18),transparent 25%),
    linear-gradient(180deg,#181c78 0%,#2241a0 45%,#0d163e 100%)!important;
}
.arena::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  opacity:.22;
  background-image:
    linear-gradient(rgba(255,255,255,.25) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.25) 1px,transparent 1px);
  background-size:22px 22px;
}
.arenaWallpaper{
  position:absolute;
  inset:0;
  z-index:1;
  overflow:hidden;
  pointer-events:none;
}
.wallDigi{
  position:absolute;
  width:70px;
  height:58px;
  object-fit:cover;
  opacity:.18;
  filter:saturate(1.4) contrast(1.1) drop-shadow(0 0 8px rgba(255,255,255,.35));
  border:2px solid rgba(255,255,255,.12);
  animation:wallFloat 4.8s ease-in-out infinite alternate;
}
.wallDigi.w0{left:6%;top:12%;animation-delay:.1s}
.wallDigi.w1{left:28%;top:8%;animation-delay:.4s}
.wallDigi.w2{right:8%;top:14%;animation-delay:.8s}
.wallDigi.w3{left:12%;bottom:12%;animation-delay:.2s}
.wallDigi.w4{right:16%;bottom:14%;animation-delay:.6s}
.wallDigi.w5{left:44%;top:42%;animation-delay:1s}
.wallDigi.w6{right:38%;bottom:8%;animation-delay:1.2s}
.wallDigi.w7{left:70%;top:52%;animation-delay:.9s}
@keyframes wallFloat{
  from{transform:translateY(0) scale(.98)}
  to{transform:translateY(-10px) scale(1.04)}
}
.beam,.impact,.dmg,.call{z-index:5!important}

.combat{
  border-width:4px!important;
  background:#1b1b16!important;
  transition:transform .12s, filter .12s, box-shadow .12s;
}
.combat.type-Vacuna{
  border-color:var(--green)!important;
  box-shadow:0 0 0 2px rgba(53,219,84,.20),5px 5px 0 rgba(0,0,0,.6)!important;
}
.combat.type-Virus{
  border-color:var(--red)!important;
  box-shadow:0 0 0 2px rgba(239,51,73,.20),5px 5px 0 rgba(0,0,0,.6)!important;
}
.combat.type-Data{
  border-color:var(--blue)!important;
  box-shadow:0 0 0 2px rgba(44,156,255,.20),5px 5px 0 rgba(0,0,0,.6)!important;
}
.combat.type-Unknown{
  border-color:var(--purple)!important;
  box-shadow:0 0 0 2px rgba(155,92,255,.24),5px 5px 0 rgba(0,0,0,.6)!important;
}
.combat.type-Vacuna .combatInfo{background:linear-gradient(180deg,rgba(53,219,84,.35),rgba(199,255,147,.76))!important}
.combat.type-Virus .combatInfo{background:linear-gradient(180deg,rgba(239,51,73,.35),rgba(255,178,178,.76))!important}
.combat.type-Data .combatInfo{background:linear-gradient(180deg,rgba(44,156,255,.36),rgba(173,219,255,.76))!important}
.combat.type-Unknown .combatInfo{background:linear-gradient(180deg,rgba(155,92,255,.38),rgba(219,194,255,.76))!important}
.combat.type-Vacuna .combatStats,
.combat.type-Virus .combatStats,
.combat.type-Data .combatStats,
.combat.type-Unknown .combatStats{
  color:#141414!important;
}

.critHit{
  animation:critVibration .58s linear;
  filter:brightness(1.35) saturate(1.35);
}
@keyframes critVibration{
  0%{transform:translate(0,0) rotate(0)}
  12%{transform:translate(-6px,2px) rotate(-1deg)}
  24%{transform:translate(7px,-2px) rotate(1deg)}
  36%{transform:translate(-5px,-1px) rotate(-1deg)}
  48%{transform:translate(5px,2px) rotate(1deg)}
  60%{transform:translate(-4px,1px) rotate(-.5deg)}
  72%{transform:translate(4px,-1px) rotate(.5deg)}
  84%{transform:translate(-2px,1px)}
  100%{transform:translate(0,0) rotate(0)}
}


/* v15 route / wallpaper polish */
.globalWallpaper{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none}
.globalWallpaper::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(255,255,255,.06),transparent 60%)}
.bgDigi{position:absolute;width:170px;height:170px;object-fit:cover;opacity:.12;filter:saturate(1.15) brightness(1.05) blur(.3px) drop-shadow(0 0 10px rgba(255,255,255,.16));border:2px solid rgba(255,255,255,.08);border-radius:16px;mix-blend-mode:screen}
.bgDigi.p0{left:2%;top:6%;transform:rotate(-8deg)}
.bgDigi.p1{right:4%;top:10%;transform:rotate(8deg)}
.bgDigi.p2{left:5%;top:36%;transform:rotate(-12deg)}
.bgDigi.p3{right:6%;top:42%;transform:rotate(10deg)}
.bgDigi.p4{left:7%;bottom:8%;transform:rotate(7deg)}
.bgDigi.p5{right:4%;bottom:7%;transform:rotate(-7deg)}
.route{background:#7fe5ad url('assets/sprites/circuit_map_bg.svg') center/cover no-repeat!important}
.route::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,0) 18%),repeating-linear-gradient(0deg,rgba(255,255,255,.035) 0 2px,transparent 2px 4px);opacity:.42!important}
.route::after{content:"";position:absolute;left:246px;right:246px;top:0;height:112px;background:linear-gradient(#2cb0bb,#2cb0bb 34%,#3d3d3d 35% 61%,#a8b0b9 62%),linear-gradient(180deg,rgba(255,255,255,.18),transparent 45%);border:3px solid rgba(0,0,0,.45);box-shadow:0 6px 0 rgba(0,0,0,.15)}
.node{width:58px!important;height:58px!important;aspect-ratio:1/1;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;font-size:0!important;background-clip:padding-box;box-shadow:0 0 0 2px rgba(255,255,255,.14) inset,3px 3px 0 rgba(0,0,0,.45)!important}
.node .nodeGlyph{display:block;font-size:24px;line-height:1;color:inherit;text-shadow:0 1px 0 rgba(255,255,255,.12),0 2px 0 rgba(0,0,0,.38);transform:translateY(-1px)}
.node.start .nodeGlyph{font-size:28px}
.node.wild{background:linear-gradient(180deg,#ffffff,#dce0df)!important;color:#111!important}
.node.combat{background:linear-gradient(180deg,#ff6b6b,#c92339)!important;color:#fff!important}
.node.event{background:linear-gradient(180deg,#ffffff,#ececec)!important;color:#111!important}
.node.elite{background:linear-gradient(180deg,#7d63ff,#5330bf)!important;color:#fff!important}
.node.boss{background:linear-gradient(180deg,#3c3c3c,#111)!important;color:#ffd91d!important}
.node.done{background:linear-gradient(180deg,#48b568,#1f6a36)!important;color:#efffee!important;filter:none!important;opacity:.92!important}
.node.locked{filter:grayscale(1) brightness(.62)!important;opacity:.9}
.node.available{outline:4px solid rgba(255,217,29,.45)!important;outline-offset:1px}
.node[data-desc]:hover::after{left:66px;top:-6px;width:240px;border-radius:10px;background:rgba(23,23,17,.96)}
.arenaWallpaper{display:none!important}
@media(max-width:1000px){.bgDigi{display:none}.route::after{left:26%;right:26%}}


/* v15 stat/layout fixes */
.cmd{grid-template-columns:1fr!important}
.cmd .btn:not(#fight){display:none!important}
.stat b{min-width:34px}
.combatStats{font-size:11px!important}
.itemEntry small{line-height:1.35}
.type-Unknown .combatInfo,
.combat.type-Unknown .combatInfo{background:linear-gradient(180deg,rgba(155,92,255,.38),rgba(219,194,255,.76))!important}


/* v16 fixes: proper circular nodes + cleaner circuit route */
.route{background:#80e4b8 url('assets/sprites/circuit_map_bg.svg') center/cover no-repeat!important;}
.route::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,0) 18%),repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 2px,transparent 2px 4px)!important;opacity:.28!important;pointer-events:none;}
.node{
  -webkit-appearance:none!important;appearance:none!important;
  width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;max-width:58px!important;max-height:58px!important;
  margin:0!important;padding:0!important;border-radius:50%!important;
  transform:translate(-50%,-50%)!important;
  line-height:1!important;font:inherit!important;overflow:hidden!important;
  text-align:center!important;display:flex!important;align-items:center!important;justify-content:center!important;
  background-clip:padding-box;
}
.node.available:hover{transform:translate(calc(-50% - 1px),calc(-50% - 1px))!important;}
.node.locked:hover,.node.done:hover{transform:translate(-50%,-50%)!important;}
.node .nodeGlyph{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;height:100%!important;font-size:24px!important;line-height:1!important;pointer-events:none;}
.node.start .nodeGlyph{font-size:28px!important;}


/* v17 quality wallpaper background set */
.globalWallpaper{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none}
.globalWallpaper::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,12,40,.18),rgba(10,12,40,.34));pointer-events:none}
.bgWall{position:absolute;width:260px;height:150px;object-fit:cover;opacity:.16;filter:saturate(1.08) brightness(1.02) blur(.15px) drop-shadow(0 0 18px rgba(255,255,255,.16));border:2px solid rgba(255,255,255,.10);border-radius:16px;mix-blend-mode:screen;box-shadow:0 8px 30px rgba(0,0,0,.25)}
.bgWall.p0{left:2%;top:5%;transform:rotate(-8deg)}
.bgWall.p1{right:3%;top:8%;transform:rotate(7deg)}
.bgWall.p2{left:4%;top:34%;transform:rotate(-10deg)}
.bgWall.p3{right:4%;top:38%;transform:rotate(9deg)}
.bgWall.p4{left:5%;bottom:8%;transform:rotate(6deg)}
.bgWall.p5{right:3%;bottom:8%;transform:rotate(-7deg)}
@media(max-width:1000px){.bgWall{display:none}}


/* v18 bright circuit map + colorful nodes */
.route{background:linear-gradient(180deg,#bff8ff 0%,#8be8f5 38%,#73d9ef 100%)!important;position:relative;overflow:hidden}
.route:before{content:"";position:absolute;inset:0;opacity:1;background:
 radial-gradient(circle at 8% 18%, rgba(255,255,255,.60) 0 6px, transparent 7px),
 radial-gradient(circle at 17% 42%, rgba(255,255,255,.58) 0 7px, transparent 8px),
 radial-gradient(circle at 30% 33%, rgba(255,255,255,.58) 0 7px, transparent 8px),
 radial-gradient(circle at 41% 57%, rgba(255,255,255,.58) 0 8px, transparent 9px),
 radial-gradient(circle at 58% 45%, rgba(255,255,255,.58) 0 7px, transparent 8px),
 radial-gradient(circle at 72% 28%, rgba(255,255,255,.58) 0 7px, transparent 8px),
 radial-gradient(circle at 80% 61%, rgba(255,255,255,.58) 0 8px, transparent 9px),
 radial-gradient(circle at 88% 80%, rgba(255,255,255,.58) 0 7px, transparent 8px),
 linear-gradient(90deg, transparent 0 6%, rgba(255,255,255,.45) 6% 6.6%, transparent 6.6% 16%, rgba(255,255,255,.32) 16% 16.5%, transparent 16.5% 29%, rgba(255,255,255,.32) 29% 29.5%, transparent 29.5% 43%, rgba(255,255,255,.45) 43% 43.6%, transparent 43.6% 57%, rgba(255,255,255,.35) 57% 57.5%, transparent 57.5% 71%, rgba(255,255,255,.35) 71% 71.5%, transparent 71.5% 85%, rgba(255,255,255,.42) 85% 85.6%, transparent 85.6% 100%),
 linear-gradient(180deg, transparent 0 10%, rgba(255,255,255,.26) 10% 10.4%, transparent 10.4% 22%, rgba(255,255,255,.26) 22% 22.4%, transparent 22.4% 37%, rgba(255,255,255,.26) 37% 37.4%, transparent 37.4% 52%, rgba(255,255,255,.26) 52% 52.4%, transparent 52.4% 67%, rgba(255,255,255,.26) 67% 67.4%, transparent 67.4% 82%, rgba(255,255,255,.26) 82% 82.4%, transparent 82.4% 100%),
 linear-gradient(135deg,#c8fbff 0%,#8debf7 45%,#6cd7ea 100%)!important;filter:saturate(1.1)}
.route:after{left:250px;right:250px;top:0;height:110px;background:linear-gradient(#37c6db,#37c6db 35%,#1d2433 36% 65%,#c6cfdd 66%)!important;border:3px solid rgba(0,0,0,.55)!important;box-shadow:0 0 20px rgba(55,198,219,.25)}
#lines line{stroke:#1d2433!important;stroke-width:2.3!important;stroke-dasharray:8 8!important;opacity:.8!important}
.node{width:56px!important;height:56px!important;border-radius:50%!important;border:3px solid #131313!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;font-size:0!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 18px rgba(0,0,0,.18),3px 3px 0 rgba(0,0,0,.42)!important;transition:filter .15s ease, transform .12s ease, box-shadow .15s ease!important}
.node .nodeGlyph{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;height:100%!important;font-size:22px!important;font-weight:900!important;letter-spacing:.5px;line-height:1!important;pointer-events:none;text-shadow:none!important;transform:none!important}
.node.start{background:linear-gradient(180deg,#46e98d,#19a74d)!important;color:#ffffff!important;box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 18px rgba(70,233,141,.45),3px 3px 0 rgba(0,0,0,.42)!important}
.node.wild{background:linear-gradient(180deg,#ffffff,#d5f2ff)!important;color:#156082!important;box-shadow:0 0 0 2px rgba(255,255,255,.22) inset,0 0 18px rgba(104,210,255,.35),3px 3px 0 rgba(0,0,0,.42)!important}
.node.combat{background:linear-gradient(180deg,#ff8f5d,#d9381e)!important;color:#fff4e8!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 18px rgba(255,120,74,.42),3px 3px 0 rgba(0,0,0,.42)!important}
.node.event{background:linear-gradient(180deg,#f2f2f2,#bfc6cf)!important;color:#1b1b1b!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 14px rgba(255,255,255,.28),3px 3px 0 rgba(0,0,0,.42)!important}
.node.elite{background:linear-gradient(180deg,#4d4d57,#16171d)!important;color:#ffd84f!important;box-shadow:0 0 0 2px rgba(255,255,255,.10) inset,0 0 18px rgba(255,216,79,.28),3px 3px 0 rgba(0,0,0,.5)!important}
.node.boss{background:linear-gradient(180deg,#111,#000)!important;color:#ffe16a!important;box-shadow:0 0 0 2px rgba(255,255,255,.08) inset,0 0 22px rgba(255,217,29,.40),3px 3px 0 rgba(0,0,0,.52)!important}
.node.done{background:linear-gradient(180deg,#41454e,#20232a)!important;color:#9ad1ff!important;opacity:.92!important;filter:none!important}
.node.locked{filter:grayscale(.22) brightness(.88)!important;opacity:1!important}
.node.available{outline:4px solid rgba(255,217,29,.55)!important;outline-offset:1px;box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 24px rgba(255,217,29,.36),3px 3px 0 rgba(0,0,0,.42)!important}
.node.available:hover{transform:translate(calc(-50% - 1px),calc(-50% - 1px))!important;filter:brightness(1.08)}
.node.locked:hover,.node.done:hover{transform:translate(-50%,-50%)!important}
.node[data-desc]:hover::after{left:68px;top:-6px;width:250px;border-radius:10px;background:rgba(18,20,31,.96)!important;border:2px solid rgba(118,230,255,.30);box-shadow:0 0 18px rgba(0,0,0,.28);color:#eef9ff!important}


/* v19: circuit field based on reference style + clearer emoji/symbol nodes */
.globalWallpaper{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none;background:#060922!important}
.globalWallpaper::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,9,34,.78),rgba(6,9,34,.62),rgba(6,9,34,.78)),radial-gradient(circle at 50% 30%,rgba(0,210,255,.16),transparent 52%);pointer-events:none;z-index:1}
.bgWall.single{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:cover!important;opacity:.30!important;filter:saturate(1.15) contrast(1.08) brightness(.95)!important;border:0!important;border-radius:0!important;box-shadow:none!important;mix-blend-mode:screen!important;transform:none!important}

.route{
  background:#071b4f url('assets/sprites/circuit_route_v19.png') center/cover no-repeat!important;
  position:relative;overflow:hidden;
  box-shadow:inset 0 0 0 2px rgba(109,238,255,.22), inset 0 0 55px rgba(0,0,0,.42)!important;
}
.route:before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.78!important;
  background:
    linear-gradient(180deg,rgba(7,25,78,.22),rgba(5,11,42,.25)),
    repeating-linear-gradient(0deg,rgba(255,255,255,.05) 0 1px,transparent 1px 4px)!important;
  mix-blend-mode:screen;
}
.route:after{
  left:250px!important;right:250px!important;top:0!important;height:110px!important;
  background:linear-gradient(#20d9ff,#20d9ff 35%,#101726 36% 65%,#b7c4d8 66%)!important;
  border:3px solid rgba(4,8,24,.8)!important;
  box-shadow:0 0 18px rgba(32,217,255,.52), inset 0 0 18px rgba(255,255,255,.18)!important;
}
#lines line{stroke:#bbf9ff!important;stroke-width:2.6!important;stroke-dasharray:8 8!important;opacity:.82!important;filter:drop-shadow(0 0 3px rgba(0,239,255,.65))}
.node{
  -webkit-appearance:none!important;appearance:none!important;
  width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;max-width:58px!important;max-height:58px!important;
  margin:0!important;padding:0!important;border-radius:50%!important;border:3px solid #050713!important;
  transform:translate(-50%,-50%)!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  overflow:visible!important;text-align:center!important;font-size:0!important;line-height:1!important;
  background-clip:padding-box!important;
  transition:filter .15s ease, transform .12s ease, box-shadow .15s ease, opacity .15s ease!important;
}
.node .nodeGlyph{
  display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;height:100%!important;
  font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji","Segoe UI Symbol",sans-serif!important;
  font-size:25px!important;line-height:1!important;font-weight:700!important;pointer-events:none!important;
  transform:none!important;text-shadow:0 1px 0 rgba(0,0,0,.5),0 0 8px rgba(255,255,255,.26)!important;
}
.node.start{background:radial-gradient(circle at 35% 25%,#baffd1,#20c866 62%,#0c6d35)!important;color:#fff!important;box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 22px rgba(60,255,132,.55),3px 3px 0 rgba(0,0,0,.52)!important}
.node.wild{background:radial-gradient(circle at 35% 25%,#f7ffff,#6febff 58%,#1686bd)!important;color:#092233!important;box-shadow:0 0 0 2px rgba(255,255,255,.22) inset,0 0 22px rgba(74,226,255,.58),3px 3px 0 rgba(0,0,0,.52)!important}
.node.combat{background:radial-gradient(circle at 35% 25%,#ffe2a5,#ff7a2c 56%,#c5171f)!important;color:#fff!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 24px rgba(255,104,48,.60),3px 3px 0 rgba(0,0,0,.52)!important}
.node.event{background:radial-gradient(circle at 35% 25%,#fff,#d8d8e0 62%,#6f7480)!important;color:#111!important;box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 18px rgba(255,255,255,.46),3px 3px 0 rgba(0,0,0,.52)!important}
.node.elite{background:radial-gradient(circle at 35% 25%,#ffdb6d,#7d36ff 46%,#101019 78%)!important;color:#fff!important;border-color:#ffd34c!important;box-shadow:0 0 0 2px rgba(255,211,76,.20) inset,0 0 30px rgba(255,84,36,.70),0 0 14px rgba(133,59,255,.8),3px 3px 0 rgba(0,0,0,.56)!important}
.node.boss{background:radial-gradient(circle at 35% 25%,#fff1a0,#111 48%,#000 80%)!important;color:#ffe16a!important;border-color:#ffda4b!important;box-shadow:0 0 0 2px rgba(255,255,255,.12) inset,0 0 35px rgba(255,217,29,.75),3px 3px 0 rgba(0,0,0,.6)!important}
.node.item{background:radial-gradient(circle at 35% 25%,#eaffff,#9f7aff 58%,#5022a5)!important;color:#fff!important}
.node.heal{background:radial-gradient(circle at 35% 25%,#edfff2,#50ff8b 58%,#139943)!important;color:#fff!important}
.node.locked{opacity:.52!important;filter:grayscale(.58) brightness(.72)!important;box-shadow:0 0 0 2px rgba(255,255,255,.08) inset,3px 3px 0 rgba(0,0,0,.44)!important}
.node.done{opacity:.86!important;filter:saturate(.75) brightness(.85)!important;background:radial-gradient(circle at 35% 25%,#b5c2d0,#48505b 62%,#171b22)!important;color:#cbf9ff!important}
.node.available{opacity:1!important;filter:brightness(1.08) saturate(1.22)!important;outline:4px solid rgba(255,232,91,.75)!important;outline-offset:2px!important;z-index:5!important;animation:nodePulse 1.25s ease-in-out infinite alternate}
@keyframes nodePulse{from{box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 18px rgba(255,232,91,.40),3px 3px 0 rgba(0,0,0,.5)}to{box-shadow:0 0 0 2px rgba(255,255,255,.25) inset,0 0 32px rgba(255,232,91,.85),3px 3px 0 rgba(0,0,0,.5)}}
.node.available:hover{transform:translate(calc(-50% - 1px),calc(-50% - 1px))!important;filter:brightness(1.2) saturate(1.35)!important}
.node.locked:hover,.node.done:hover{transform:translate(-50%,-50%)!important}
.node[data-desc]:hover::after{font-family:var(--font)!important;left:68px;top:-6px;width:260px;border-radius:10px;background:rgba(6,12,34,.96)!important;border:2px solid rgba(89,231,255,.45)!important;box-shadow:0 0 22px rgba(0,239,255,.22)!important;color:#f2fdff!important}


/* v20 clean route: no visual X intersections, no ghost nodes, SVG icons */
.route{
  background:#071b4f url('assets/sprites/circuit_route_v19.png') center/cover no-repeat!important;
  position:relative;
  overflow:hidden;
}
.route:before{
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.18!important;
  background:linear-gradient(180deg,rgba(0,255,255,.16),rgba(255,160,0,.08)),repeating-linear-gradient(0deg,rgba(255,255,255,.04) 0 2px,transparent 2px 4px)!important;
}
.route:after{
  content:"";position:absolute;left:246px;right:246px;top:0;height:104px;
  background:linear-gradient(#2fe4ff,#2fe4ff 33%,#121b2d 34% 63%,#d6dde8 64%)!important;
  border:3px solid rgba(0,0,0,.62)!important;
  box-shadow:0 0 22px rgba(47,228,255,.28)!important;
}
#lines line{
  stroke:#a6fbff!important;stroke-width:2.9!important;stroke-dasharray:8 10!important;opacity:.84!important;
  filter:drop-shadow(0 0 3px rgba(0,239,255,.75));
}
.node{
  position:absolute!important;
  width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;max-width:60px!important;max-height:60px!important;
  margin:0!important;padding:0!important;border-radius:50%!important;border:3px solid #090b10!important;
  transform:translate(-50%,-50%)!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  font-size:0!important;line-height:1!important;overflow:hidden!important;isolation:isolate;
  box-shadow:0 0 0 2px rgba(255,255,255,.17) inset,0 0 18px rgba(0,0,0,.25),3px 3px 0 rgba(0,0,0,.50)!important;
}
.node .nodeGlyph{width:100%!important;height:100%!important;display:flex!important;align-items:center!important;justify-content:center!important;pointer-events:none!important;transform:none!important;text-shadow:none!important}
.node .nodeGlyph svg{width:31px;height:31px;display:block;overflow:visible}
.node .i-fill{fill:currentColor;stroke:none}
.node .i-stroke{fill:none;stroke:currentColor;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
.node.start{background:radial-gradient(circle at 35% 25%,#d7ffe4,#30d76f 58%,#0b6532)!important;color:#ffffff!important}
.node.wild{background:radial-gradient(circle at 35% 25%,#ffffff,#8ff0ff 58%,#117ca8)!important;color:#062234!important}
.node.combat{background:radial-gradient(circle at 35% 25%,#fff0bf,#ff8b34 54%,#bb101c)!important;color:#ffffff!important}
.node.event{background:radial-gradient(circle at 35% 25%,#ffffff,#dedfe8 60%,#6e7482)!important;color:#11151c!important}
.node.elite{background:radial-gradient(circle at 35% 25%,#ffe66e,#7c38ff 43%,#080912 78%)!important;color:#fff6c5!important;border-color:#ffd24d!important;box-shadow:0 0 0 2px rgba(255,211,76,.23) inset,0 0 30px rgba(255,112,45,.62),0 0 14px rgba(126,65,255,.72),3px 3px 0 rgba(0,0,0,.56)!important}
.node.boss{background:radial-gradient(circle at 35% 25%,#fff1a0,#111 48%,#000 80%)!important;color:#ffe16a!important;border-color:#ffda4b!important;box-shadow:0 0 0 2px rgba(255,255,255,.12) inset,0 0 35px rgba(255,217,29,.75),3px 3px 0 rgba(0,0,0,.6)!important}
.node.done{opacity:.86!important;filter:saturate(.78) brightness(.86)!important;background:radial-gradient(circle at 35% 25%,#a8bdce,#46515f 61%,#151b25)!important;color:#d7fbff!important}
.node.locked{opacity:.54!important;filter:grayscale(.66) brightness(.72)!important;cursor:not-allowed!important}
.node.available{opacity:1!important;filter:brightness(1.08) saturate(1.22)!important;outline:4px solid rgba(255,232,91,.78)!important;outline-offset:2px!important;z-index:5!important;animation:nodePulse 1.25s ease-in-out infinite alternate}
.node.available:hover{transform:translate(calc(-50% - 1px),calc(-50% - 1px))!important;filter:brightness(1.2) saturate(1.35)!important}
.node.locked:hover,.node.done:hover{transform:translate(-50%,-50%)!important}
.node[data-desc]:hover::after{font-family:var(--font)!important;left:68px;top:-6px;width:260px;border-radius:10px;background:rgba(6,12,34,.96)!important;border:2px solid rgba(89,231,255,.45)!important;box-shadow:0 0 22px rgba(0,239,255,.22)!important;color:#f2fdff!important}


/* Free attribute removed in v38: only Vacuna, Virus, Data, Unknown */

/* v22 final polish: wider sidebars, fixed HP bars, cleaner route, brighter nodes */
.app{width:min(1420px,calc(100% - 24px))!important}
.layout{grid-template-columns:250px minmax(700px,820px) 250px!important;gap:16px!important;align-items:start!important}
.layout>aside.panel{min-height:930px}
.panel{padding:16px!important}
.panel h3{font-size:18px;letter-spacing:.5px;margin-bottom:12px}
#mapTeam,#mapItems{display:flex;flex-direction:column;gap:12px}
.teamEntry,.itemEntry{margin-bottom:0!important}
.teamEntry{
  display:grid!important;
  grid-template-columns:72px minmax(0,1fr)!important;
  gap:12px!important;
  align-items:start!important;
  padding:12px!important;
  border:2px solid rgba(255,255,255,.12)!important;
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(0,0,0,.08)),#171711!important;
}
.teamEntry img{width:72px!important;height:72px!important;object-fit:cover!important}
.teamEntry>div{min-width:0}
.teamEntry strong{display:block;font-size:15px;line-height:1.2;word-break:break-word;margin-bottom:4px}
.teamEntry small{display:block;line-height:1.35;word-break:break-word}
.hpbar{width:100%!important;max-width:100%!important;overflow:hidden!important;flex:none!important}
.teamEntry .hpbar,.combat .hpbar{height:12px!important;margin:8px 0 6px!important}
.hpbar span{display:block!important;height:100%!important}

.route{
  background:
    radial-gradient(circle at 12% 18%, rgba(86,244,255,.45) 0 6px, transparent 7px),
    radial-gradient(circle at 28% 34%, rgba(86,244,255,.38) 0 6px, transparent 7px),
    radial-gradient(circle at 45% 58%, rgba(86,244,255,.35) 0 7px, transparent 8px),
    radial-gradient(circle at 72% 42%, rgba(255,180,63,.30) 0 6px, transparent 7px),
    radial-gradient(circle at 84% 76%, rgba(86,244,255,.38) 0 7px, transparent 8px),
    linear-gradient(135deg,#08102c 0%,#0b2a67 38%,#133f8c 72%,#201245 100%)!important;
  position:relative!important;
  overflow:hidden!important;
}
.route::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  pointer-events:none!important;
  opacity:1!important;
  background:
    linear-gradient(90deg, transparent 0 5.5%, rgba(81,240,255,.60) 5.5% 5.8%, transparent 5.8% 15%, rgba(81,240,255,.30) 15% 15.3%, transparent 15.3% 29%, rgba(81,240,255,.30) 29% 29.3%, transparent 29.3% 43%, rgba(255,178,76,.32) 43% 43.3%, transparent 43.3% 56%, rgba(81,240,255,.28) 56% 56.3%, transparent 56.3% 72%, rgba(81,240,255,.30) 72% 72.3%, transparent 72.3% 86%, rgba(81,240,255,.34) 86% 86.3%, transparent 86.3% 100%),
    linear-gradient(180deg, transparent 0 10%, rgba(81,240,255,.26) 10% 10.3%, transparent 10.3% 21%, rgba(81,240,255,.20) 21% 21.3%, transparent 21.3% 36%, rgba(255,178,76,.20) 36% 36.3%, transparent 36.3% 50%, rgba(81,240,255,.18) 50% 50.3%, transparent 50.3% 66%, rgba(81,240,255,.22) 66% 66.3%, transparent 66.3% 81%, rgba(81,240,255,.22) 81% 81.3%, transparent 81.3% 100%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.055) 0 1px, transparent 1px 4px),
    linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,0) 22%)!important;
  mix-blend-mode:screen!important;
}
.route::after{content:none!important;display:none!important}
#lines{z-index:2!important}
#lines line{stroke:#d0faff!important;stroke-width:2.8!important;stroke-dasharray:8 8!important;opacity:.9!important;filter:drop-shadow(0 0 3px rgba(86,244,255,.55))!important}
#nodes{z-index:3!important}
.node{
  width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;
  border-radius:50%!important;border:3px solid #09101e!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.16) inset,0 0 18px rgba(0,0,0,.35),3px 3px 0 rgba(0,0,0,.48)!important;
}
.node .nodeGlyph svg{width:32px!important;height:32px!important}
.node.start{background:radial-gradient(circle at 35% 25%,#dfffe9,#3ae67f 54%,#0c6f36)!important;color:#ffffff!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 26px rgba(58,230,127,.62),3px 3px 0 rgba(0,0,0,.5)!important}
.node.wild{background:radial-gradient(circle at 35% 25%,#ffffff,#a8f8ff 55%,#1889bf)!important;color:#04263b!important;box-shadow:0 0 0 2px rgba(255,255,255,.22) inset,0 0 24px rgba(102,236,255,.52),3px 3px 0 rgba(0,0,0,.48)!important}
.node.combat{background:radial-gradient(circle at 35% 25%,#360911,#13060b 72%)!important;color:#ff485d!important;border-color:#ff6577!important;box-shadow:0 0 0 2px rgba(255,255,255,.10) inset,0 0 26px rgba(255,72,93,.62),3px 3px 0 rgba(0,0,0,.52)!important}
.node.event{background:radial-gradient(circle at 35% 25%,#ffffff,#d8deea 58%,#6a7382)!important;color:#12161f!important;box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 18px rgba(255,255,255,.38),3px 3px 0 rgba(0,0,0,.48)!important}
.node.elite{background:radial-gradient(circle at 35% 25%,#ffd86f,#8944ff 42%,#090b14 76%)!important;color:#fff8d5!important;border-color:#ffd54f!important;box-shadow:0 0 0 2px rgba(255,213,79,.22) inset,0 0 30px rgba(255,132,68,.55),0 0 16px rgba(137,68,255,.78),3px 3px 0 rgba(0,0,0,.54)!important}
.node.boss{background:radial-gradient(circle at 35% 25%,#fff2aa,#252525 45%,#000000 80%)!important;color:#ffe26b!important;border-color:#ffd952!important;box-shadow:0 0 0 2px rgba(255,255,255,.12) inset,0 0 34px rgba(255,217,82,.76),3px 3px 0 rgba(0,0,0,.56)!important}
.node.done{opacity:.82!important;filter:saturate(.72) brightness(.82)!important;background:radial-gradient(circle at 35% 25%,#9fb1c7,#485665 61%,#141923)!important;color:#d9fbff!important}
.node.locked{opacity:.58!important;filter:grayscale(.55) brightness(.78)!important}
.node.available{outline:4px solid rgba(255,228,94,.85)!important;outline-offset:2px!important;animation:nodePulseV22 1.1s ease-in-out infinite alternate!important;z-index:5!important}
@keyframes nodePulseV22{from{box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 16px rgba(255,228,94,.32),3px 3px 0 rgba(0,0,0,.48)}to{box-shadow:0 0 0 2px rgba(255,255,255,.22) inset,0 0 32px rgba(255,228,94,.86),3px 3px 0 rgba(0,0,0,.48)}}
.node.available:hover{transform:translate(calc(-50% - 1px),calc(-50% - 1px))!important}

.mapHead{padding:10px 12px!important}
#runInfo{font-size:13px!important}

.combat{
  min-height:148px!important;
  padding:10px!important;
}
.combat img{
  width:124px!important;height:92px!important;top:14px!important;
}
.combat.player img{left:50%!important;transform:translateX(-50%)!important}
.combat.enemy img{right:auto!important;left:50%!important;transform:translateX(-50%) scaleX(-1)!important}
.combatInfo{
  position:relative!important;
  z-index:3!important;
  margin-top:96px!important;
  padding:8px 10px 10px!important;
  background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.36))!important;
  border:2px solid rgba(0,0,0,.22)!important;
}
.combatName{font-size:15px!important;align-items:flex-start!important}
.combatStats{font-size:12px!important;line-height:1.35!important;word-break:break-word!important}
.typeRow{margin-bottom:8px!important}

@media (max-width: 1280px){
  .app{width:min(1240px,calc(100% - 16px))!important}
  .layout{grid-template-columns:220px minmax(600px,1fr) 220px!important}
}


/* v24 STABLE PATCH
   Base real: v22. No se reestructura el combate ni el layout.
   Solo se corrigen nodos, portal/fantasma, líneas y legibilidad. */

/* Evita que vuelva el bloque/bandera superior que parecía botón fantasma */
.route::after{
  content:none!important;
  display:none!important;
}

/* Mantiene los nodos perfectamente circulares y evita óvalos */
.node{
  position:absolute!important;
  width:60px!important;
  height:60px!important;
  min-width:60px!important;
  min-height:60px!important;
  max-width:60px!important;
  max-height:60px!important;
  aspect-ratio:1/1!important;
  border-radius:50%!important;
  margin:0!important;
  padding:0!important;
  transform:translate(-50%,-50%)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
  font-size:0!important;
  line-height:1!important;
}

/* Los SVG quedan centrados dentro del círculo */
.node .nodeGlyph{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  height:100%!important;
  transform:none!important;
  text-shadow:none!important;
}
.node .nodeGlyph svg{
  width:31px!important;
  height:31px!important;
  display:block!important;
  overflow:visible!important;
}

/* Líneas de ruta con estados, sin cambiar la estructura */
#lines line.locked{
  stroke:#52637e!important;
  opacity:.35!important;
  filter:none!important;
}
#lines line.available{
  stroke:#d8ffff!important;
  opacity:.95!important;
  filter:drop-shadow(0 0 6px rgba(80,240,255,.8))!important;
}
#lines line.done{
  stroke:#ffe06a!important;
  opacity:.92!important;
  filter:drop-shadow(0 0 6px rgba(255,220,80,.65))!important;
}

/* Paneles laterales un poco más anchos, sin romper mapa ni combate */
.app{
  width:min(1360px,calc(100% - 22px))!important;
}
.layout{
  grid-template-columns:240px minmax(640px,760px) 240px!important;
  gap:16px!important;
}
.layout>aside.panel{
  min-height:930px;
}

/* Cartas del equipo más legibles, sin rediseñar todo */
.teamEntry{
  grid-template-columns:64px minmax(0,1fr)!important;
  gap:10px!important;
  padding:10px!important;
}
.teamEntry img{
  width:64px!important;
  height:64px!important;
}
.teamEntry>div{
  min-width:0!important;
}
.teamEntry strong{
  font-size:14px!important;
  line-height:1.2!important;
  word-break:break-word!important;
}
.teamEntry small{
  display:block!important;
  line-height:1.35!important;
  word-break:break-word!important;
}

/* Barra de vida siempre del mismo ancho visual */
.hpbar{
  width:100%!important;
  max-width:100%!important;
  overflow:hidden!important;
  flex:none!important;
}
.hpbar span{
  display:block!important;
  height:100%!important;
  transition:width .28s ease!important;
}

/* Botón cancelar del reemplazo */
.cancelPick{
  grid-column:1/-1;
  width:min(360px,100%);
  margin:8px auto 0;
  border-color:var(--red)!important;
  color:#ffccd2!important;
}

/* Nodos más brillantes, pero manteniendo el estilo v22 */
.node.available{
  outline:4px solid rgba(255,230,95,.85)!important;
  outline-offset:2px!important;
  z-index:6!important;
}
.node.combat{
  color:#ff4b5f!important;
  border-color:#ff6577!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.10) inset,0 0 28px rgba(255,72,93,.65),3px 3px 0 rgba(0,0,0,.52)!important;
}
.node.elite{
  border-color:#ffd34c!important;
  box-shadow:0 0 0 2px rgba(255,211,76,.20) inset,0 0 32px rgba(255,84,36,.70),0 0 16px rgba(133,59,255,.8),3px 3px 0 rgba(0,0,0,.56)!important;
}
.node.boss{
  border-color:#ffda4b!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.12) inset,0 0 36px rgba(255,217,29,.78),3px 3px 0 rgba(0,0,0,.6)!important;
}

/* Responsive seguro */
@media(max-width:1200px){
  .layout{
    grid-template-columns:220px minmax(560px,1fr) 220px!important;
  }
}


/* v25 BATTLEFIX
   Base: v24 Stable.
   Solo corrige pantalla de combate. No toca mapa ni lógica. */

#battle .battleWrap{
  width:min(1380px,calc(100vw - 32px))!important;
  margin:0 auto!important;
  display:grid!important;
  grid-template-columns:minmax(360px,470px) minmax(300px,360px) minmax(360px,470px)!important;
  gap:16px!important;
  align-items:start!important;
}

/* Convierte el contenedor central en columna clara: arena, botón, log */
#battle .battleArea{
  display:grid!important;
  grid-template-rows:auto auto auto!important;
  gap:12px!important;
  min-width:0!important;
}

#battle .battleTop{
  grid-column:1 / -1!important;
  margin-bottom:4px!important;
}

/* El panel de comandos/log queda más compacto y legible */
#battle .cmd{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:10px!important;
}
#battle #fight{
  min-height:48px!important;
  font-size:16px!important;
  letter-spacing:.08em!important;
  border-color:var(--gold)!important;
  color:var(--gold)!important;
}

/* Arena central: más visible, menos vacía */
#battle .arena{
  min-height:250px!important;
  height:250px!important;
  border:4px solid #111!important;
  background:
    radial-gradient(circle at 28% 30%,rgba(53,219,84,.23),transparent 28%),
    radial-gradient(circle at 74% 36%,rgba(44,156,255,.24),transparent 30%),
    radial-gradient(circle at 50% 62%,rgba(155,92,255,.20),transparent 34%),
    linear-gradient(180deg,#112a78 0%,#0d1953 58%,#070b2f 100%)!important;
  box-shadow:inset 0 0 26px rgba(69,239,255,.16),5px 5px 0 rgba(0,0,0,.45)!important;
}
#battle .arena::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  opacity:.35!important;
  background:
    linear-gradient(90deg,transparent 0 13%,rgba(95,235,255,.28) 13% 13.4%,transparent 13.4% 31%,rgba(95,235,255,.20) 31% 31.3%,transparent 31.3% 51%,rgba(255,217,29,.14) 51% 51.4%,transparent 51.4% 72%,rgba(95,235,255,.23) 72% 72.4%,transparent 72.4%),
    linear-gradient(180deg,transparent 0 18%,rgba(95,235,255,.18) 18% 18.3%,transparent 18.3% 48%,rgba(95,235,255,.16) 48% 48.3%,transparent 48.3% 76%,rgba(95,235,255,.18) 76% 76.3%,transparent 76.3%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.055) 0 1px,transparent 1px 4px)!important;
}

/* Log legible sin tragarse toda la pantalla */
#battle #log{
  height:190px!important;
  min-height:190px!important;
  max-height:190px!important;
  overflow:auto!important;
  font-size:12px!important;
  line-height:1.45!important;
  padding:10px!important;
  background:#101011!important;
  border:3px solid #111!important;
}

/* Reordena batalla: lista jugador - centro - lista enemigo */
#battle .teams{
  display:contents!important;
}
#battle #playerList{
  grid-column:1!important;
  grid-row:1 / span 3!important;
}
#battle .battleArea{
  grid-column:2!important;
  grid-row:1!important;
}
#battle #enemyList{
  grid-column:3!important;
  grid-row:1 / span 3!important;
}

#battle #playerList,
#battle #enemyList{
  display:flex!important;
  flex-direction:column!important;
  gap:12px!important;
  min-width:0!important;
}

/* Cartas de combate compactas: sin bloques gigantes vacíos */
#battle .combat{
  position:relative!important;
  min-height:210px!important;
  height:auto!important;
  padding:12px!important;
  overflow:hidden!important;
  background:#1d1d18!important;
  border-width:4px!important;
  box-shadow:5px 5px 0 rgba(0,0,0,.55)!important;
}

/* Imagen centrada arriba, no pegada a la esquina */
#battle .combat img{
  position:relative!important;
  top:auto!important;
  left:auto!important;
  right:auto!important;
  display:block!important;
  width:142px!important;
  height:82px!important;
  object-fit:cover!important;
  margin:2px auto 10px!important;
  transform:none!important;
  border:2px solid rgba(255,255,255,.18)!important;
  z-index:2!important;
}
#battle .combat.enemy img{
  transform:scaleX(-1)!important;
}

/* Caja de información debajo de la imagen, compacta y clara */
#battle .combatInfo{
  position:relative!important;
  z-index:3!important;
  margin:0!important;
  padding:10px!important;
  border:2px solid rgba(0,0,0,.28)!important;
  background:rgba(255,255,255,.34)!important;
  color:#111!important;
}
#battle .combatName{
  display:flex!important;
  justify-content:space-between!important;
  gap:8px!important;
  align-items:flex-start!important;
  font-size:14px!important;
  line-height:1.2!important;
  margin-bottom:5px!important;
}
#battle .combatName span:first-child{
  max-width:75%!important;
  word-break:break-word!important;
}
#battle .typeRow{
  margin:4px 0 8px!important;
  text-align:left!important;
}
#battle .combatStats{
  font-size:12px!important;
  line-height:1.35!important;
  word-break:break-word!important;
}

/* HP fija: no crece por HP máximo */
#battle .combat .hpbar{
  width:100%!important;
  height:13px!important;
  margin:7px 0 7px!important;
  max-width:100%!important;
  overflow:hidden!important;
}
#battle .combat .hpbar span{
  display:block!important;
  height:100%!important;
  transition:width .32s ease!important;
}

/* Activo con aura, no borde tosco gigante */
#battle .combat.active{
  outline:none!important;
  filter:brightness(1.08)!important;
}
#battle .combat.active::after{
  content:"TURNO"!important;
  position:absolute!important;
  right:10px!important;
  top:10px!important;
  z-index:5!important;
  padding:3px 7px!important;
  font-size:11px!important;
  color:#111!important;
  background:var(--gold)!important;
  border:2px solid #111!important;
  box-shadow:0 0 12px rgba(255,217,29,.7)!important;
}
#battle .combat.active::before{
  content:""!important;
  position:absolute!important;
  inset:5px!important;
  border:2px solid rgba(255,217,29,.75)!important;
  pointer-events:none!important;
  box-shadow:0 0 18px rgba(255,217,29,.45)!important;
  z-index:4!important;
}

/* Colores por tipo más limpios */
#battle .combat.type-Vacuna{border-color:var(--green)!important}
#battle .combat.type-Virus{border-color:var(--red)!important}
#battle .combat.type-Data{border-color:var(--blue)!important}
#battle .combat.type-Unknown{border-color:var(--purple)!important}


#battle .combat.type-Vacuna .combatInfo{background:linear-gradient(180deg,rgba(53,219,84,.28),rgba(199,255,147,.76))!important}
#battle .combat.type-Virus .combatInfo{background:linear-gradient(180deg,rgba(239,51,73,.28),rgba(255,185,185,.76))!important}
#battle .combat.type-Data .combatInfo{background:linear-gradient(180deg,rgba(44,156,255,.30),rgba(178,222,255,.76))!important}
#battle .combat.type-Unknown .combatInfo{background:linear-gradient(180deg,rgba(155,92,255,.34),rgba(219,194,255,.78))!important}


/* Mantiene animación anterior, solo la hace visible */
#battle .combat.attackMove,
#battle .combat.hitTarget{
  will-change:transform,filter!important;
}

/* Popups/beam por encima de la arena */
#battle .beam,
#battle .impact,
#battle .dmg,
#battle .call{
  z-index:8!important;
}

/* Responsive seguro */
@media(max-width:1120px){
  #battle .battleWrap{
    grid-template-columns:1fr!important;
  }
  #battle #playerList,
  #battle .battleArea,
  #battle #enemyList{
    grid-column:1!important;
    grid-row:auto!important;
  }
  #battle .combat{
    min-height:190px!important;
  }
}


/* v26 ROUTEFIX
   - Agrega 4 nodos faltantes en los laterales.
   - Rehace el campo para que parezca circuito real.
   - Añade flujo de datos animado.
   - Mantiene nodos circulares y layout actual. */

.route{
  background:
    radial-gradient(circle at 15% 18%, rgba(42,235,255,.10) 0 0.55%, transparent 0.65%),
    radial-gradient(circle at 74% 74%, rgba(160,96,255,.12) 0 0.7%, transparent 0.8%),
    linear-gradient(135deg,#04184f 0%, #072a76 42%, #142e8d 74%, #2b2170 100%)!important;
  overflow:hidden!important;
}
.route::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  z-index:0!important;
  pointer-events:none!important;
  opacity:.92!important;
  background:
    radial-gradient(circle at 12% 12%, rgba(79,241,255,.75) 0 3px, transparent 4px),
    radial-gradient(circle at 82% 18%, rgba(79,241,255,.65) 0 3px, transparent 4px),
    radial-gradient(circle at 22% 58%, rgba(255,190,84,.42) 0 3px, transparent 4px),
    radial-gradient(circle at 76% 66%, rgba(129,93,255,.58) 0 3px, transparent 4px),
    radial-gradient(circle at 50% 83%, rgba(79,241,255,.70) 0 3px, transparent 4px),
    linear-gradient(90deg, transparent 0 6%, rgba(74,233,255,.10) 6% 6.6%, transparent 6.6% 28%, rgba(74,233,255,.10) 28% 28.6%, transparent 28.6% 50%, rgba(74,233,255,.11) 50% 50.6%, transparent 50.6% 72%, rgba(74,233,255,.10) 72% 72.6%, transparent 72.6% 94%, rgba(74,233,255,.12) 94% 94.6%, transparent 94.6%),
    linear-gradient(180deg, transparent 0 10%, rgba(74,233,255,.10) 10% 10.6%, transparent 10.6% 30%, rgba(74,233,255,.10) 30% 30.6%, transparent 30.6% 50%, rgba(74,233,255,.10) 50% 50.6%, transparent 50.6% 70%, rgba(74,233,255,.10) 70% 70.6%, transparent 70.6% 90%, rgba(74,233,255,.11) 90% 90.6%, transparent 90.6%),
    linear-gradient(90deg, transparent 0 12%, rgba(74,233,255,.20) 12% 12.2%, transparent 12.2% 12.8%, rgba(74,233,255,.20) 12.8% 13%, transparent 13% 33%, rgba(74,233,255,.20) 33% 33.2%, transparent 33.2% 33.8%, rgba(74,233,255,.20) 33.8% 34%, transparent 34% 55%, rgba(74,233,255,.16) 55% 55.2%, transparent 55.2% 55.8%, rgba(74,233,255,.16) 55.8% 56%, transparent 56% 78%, rgba(255,193,69,.22) 78% 78.2%, transparent 78.2% 78.8%, rgba(255,193,69,.22) 78.8% 79%, transparent 79%),
    linear-gradient(180deg, transparent 0 16%, rgba(74,233,255,.17) 16% 16.2%, transparent 16.2% 16.8%, rgba(74,233,255,.17) 16.8% 17%, transparent 17% 38%, rgba(74,233,255,.17) 38% 38.2%, transparent 38.2% 38.8%, rgba(74,233,255,.17) 38.8% 39%, transparent 39% 61%, rgba(74,233,255,.17) 61% 61.2%, transparent 61.2% 61.8%, rgba(74,233,255,.17) 61.8% 62%, transparent 62% 84%, rgba(142,110,255,.22) 84% 84.2%, transparent 84.2% 84.8%, rgba(142,110,255,.22) 84.8% 85%, transparent 85%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.035) 0 1px, transparent 1px 4px)!important;
}
.route::after{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  z-index:1!important;
  pointer-events:none!important;
  background:
    radial-gradient(circle at 0 0, rgba(255,255,255,.9) 0 2px, transparent 3px) 10% 21%/24% 24% no-repeat,
    radial-gradient(circle at 0 0, rgba(255,255,255,.92) 0 2px, transparent 3px) 52% 30%/26% 26% no-repeat,
    radial-gradient(circle at 0 0, rgba(255,255,255,.92) 0 2px, transparent 3px) 24% 52%/22% 22% no-repeat,
    radial-gradient(circle at 0 0, rgba(255,255,255,.9) 0 2px, transparent 3px) 77% 61%/21% 21% no-repeat,
    linear-gradient(90deg, transparent 0, rgba(86,244,255,0) 45%, rgba(86,244,255,.9) 50%, rgba(86,244,255,0) 55%, transparent 100%) 0 0/230% 100% no-repeat,
    linear-gradient(180deg, transparent 0, rgba(255,204,92,0) 44%, rgba(255,204,92,.75) 50%, rgba(255,204,92,0) 56%, transparent 100%) 0 0/100% 230% no-repeat!important;
  mix-blend-mode:screen!important;
  opacity:.45!important;
  animation:dataFlowRoute 11s linear infinite!important;
}
@keyframes dataFlowRoute{
  0%{background-position:10% 21%,52% 30%,24% 52%,77% 61%,-120% 0,0 -120%}
  100%{background-position:10% 21%,52% 30%,24% 52%,77% 61%,120% 0,0 120%}
}
#lines{
  z-index:2!important;
}
#lines line{
  stroke:#c7f8ff!important;
  stroke-width:2.4!important;
  stroke-dasharray:8 8!important;
  opacity:.72!important;
  filter:drop-shadow(0 0 4px rgba(82,244,255,.50))!important;
}
#lines line.available{
  stroke:#f2fdff!important;
  opacity:.96!important;
  filter:drop-shadow(0 0 8px rgba(122,251,255,.95))!important;
}
#lines line.done{
  stroke:#ffd56c!important;
  opacity:.96!important;
  filter:drop-shadow(0 0 8px rgba(255,213,108,.88))!important;
}
#nodes{z-index:3!important}
.node{
  width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;max-width:62px!important;max-height:62px!important;
}
.node .nodeGlyph svg{
  width:30px!important;height:30px!important;
  filter:drop-shadow(0 0 3px rgba(255,255,255,.25));
}
.node.available{outline:4px solid rgba(255,228,94,.92)!important;box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 30px rgba(255,228,94,.74),3px 3px 0 rgba(0,0,0,.48)!important}


/* v27 ITEMS + NODES */
.node.item{
  background:radial-gradient(circle at 35% 25%,#ffffff,#ffdc78 52%,#b76f00 80%)!important;
  color:#231200!important;
  border-color:#ffd56a!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 26px rgba(255,201,80,.62),3px 3px 0 rgba(0,0,0,.52)!important;
}
.node.exchange{
  background:radial-gradient(circle at 35% 25%,#eaffff,#6ff0ff 42%,#815cff 78%)!important;
  color:#ffffff!important;
  border-color:#90f4ff!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 26px rgba(111,240,255,.62),0 0 14px rgba(129,92,255,.70),3px 3px 0 rgba(0,0,0,.52)!important;
}
.itemChoice{
  border-color:#ffd56a!important;
}


/* v28 item/stat patch */
.node.combat{
  color:#ff314a!important;
}
.node.combat .nodeGlyph,
.node.combat .nodeGlyph svg,
.node.combat .i-stroke,
.node.combat .i-fill{
  color:#ff314a!important;
  stroke:#ff314a!important;
}


/* v29 node connection visibility patch */
.node.item,
.node.exchange{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
#lines line.available{
  stroke:#f5ffff!important;
  opacity:1!important;
  filter:drop-shadow(0 0 8px rgba(120,250,255,.95))!important;
}
#lines line.done{
  stroke:#ffd76b!important;
  opacity:1!important;
  filter:drop-shadow(0 0 8px rgba(255,215,107,.85))!important;
}


/* v30 battle restore patch */
#battle .battlePanel{min-height:620px!important}
#battle .combat{
  min-height:260px!important;
  padding:10px!important;
  overflow:hidden!important;
  background:#9eea74!important;
}
#battle .combat::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  background:linear-gradient(180deg,#c7ff93 0 28%,#6dc95f 29% 100%)!important;
  opacity:.96!important;
  z-index:1!important;
}
#battle .combat img{
  position:absolute!important;
  top:26px!important;
  left:50%!important;
  right:auto!important;
  width:120px!important;
  height:92px!important;
  object-fit:cover!important;
  transform:translateX(-50%)!important;
  z-index:2!important;
  border:2px solid rgba(0,0,0,.35)!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.08)!important;
  background:#111!important;
}
#battle .combat.enemy img{
  transform:translateX(-50%) scaleX(-1)!important;
}
#battle .combatInfo{
  position:absolute!important;
  left:14px!important;
  right:14px!important;
  bottom:14px!important;
  z-index:3!important;
  padding:10px 12px!important;
  background:rgba(205,220,228,.78)!important;
  border:2px solid rgba(0,0,0,.22)!important;
}
#battle .combatName{
  color:#fff!important;
  text-shadow:2px 2px #111!important;
  font-size:16px!important;
}
#battle .combatStats{
  margin-top:8px!important;
  color:#1a1a1a!important;
  font-size:12px!important;
  line-height:1.45!important;
}
#battle .combat .typeRow{
  text-align:left!important;
  margin:6px 0!important;
}
#battle .combat.active{
  outline:none!important;
  filter:none!important;
  box-shadow:0 0 0 3px #111, 0 0 0 6px rgba(255,217,29,.88), 0 0 22px rgba(255,217,29,.45)!important;
}
#battle .combat.active::after{
  content:"TURNO"!important;
  position:absolute!important;
  right:12px!important;
  top:12px!important;
  z-index:5!important;
  padding:3px 8px!important;
  font-size:11px!important;
  color:#111!important;
  background:var(--gold)!important;
  border:2px solid #111!important;
  box-shadow:0 0 12px rgba(255,217,29,.7)!important;
}
#battle .combat.active::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  background:linear-gradient(180deg,#c7ff93 0 28%,#6dc95f 29% 100%)!important;
  opacity:.96!important;
  z-index:1!important;
}
#battle .combat.dead{filter:grayscale(1) brightness(.6)!important}
#battle .combat.type-Vacuna{border-color:var(--green)!important}
#battle .combat.type-Virus{border-color:var(--red)!important}
#battle .combat.type-Data{border-color:var(--blue)!important}
#battle .combat.type-Unknown{border-color:var(--purple)!important}
#battle .combat.type-Vacuna .combatInfo{background:linear-gradient(180deg,rgba(53,219,84,.32),rgba(215,255,205,.84))!important}
#battle .combat.type-Virus .combatInfo{background:linear-gradient(180deg,rgba(239,51,73,.30),rgba(255,219,219,.84))!important}
#battle .combat.type-Data .combatInfo{background:linear-gradient(180deg,rgba(44,156,255,.30),rgba(215,238,255,.84))!important}
#battle .combat.type-Unknown .combatInfo{background:linear-gradient(180deg,rgba(155,92,255,.30),rgba(239,228,255,.84))!important}


/* v31 node and balance polish */
.node.combat{
  background:radial-gradient(circle at 35% 25%,#ff9a9a 0%,#ff2b2b 45%,#8b0000 100%)!important;
  border-color:#111!important;
  color:#050509!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 24px rgba(255,43,43,.72),3px 3px 0 rgba(0,0,0,.55)!important;
}
.node.combat .nodeGlyph,
.node.combat .nodeGlyph svg,
.node.combat .i-stroke{
  color:#050509!important;
  stroke:#050509!important;
}
.node.combat .i-fill{
  fill:#050509!important;
  color:#050509!important;
}


/* v32 dynamic battle + hidden ATT polish */

/* Combat node: red background, black crossed swords */
.node.combat{
  background:radial-gradient(circle at 32% 22%,#ffb3b3 0%,#ff3838 42%,#970000 100%)!important;
  border-color:#101010!important;
  color:#050505!important;
  box-shadow:0 0 0 2px rgba(255,255,255,.16) inset,0 0 28px rgba(255,45,45,.78),3px 3px 0 rgba(0,0,0,.58)!important;
}
.node.combat .nodeGlyph,
.node.combat .nodeGlyph svg,
.node.combat .i-stroke{
  color:#050505!important;
  stroke:#050505!important;
}
.node.combat .i-fill{
  color:#050505!important;
  fill:#050505!important;
}

/* Battle cards: lower, clearer, less empty */
#battle .battlePanel{
  min-height:560px!important;
}
#battle .combat{
  min-height:218px!important;
  height:218px!important;
  padding:8px!important;
  overflow:hidden!important;
}
#battle .combat::before,
#battle .combat.active::before{
  background:
    radial-gradient(circle at 50% 27%, rgba(255,255,255,.28), transparent 23%),
    linear-gradient(180deg,#c9ff95 0 32%,#63c95d 33% 100%)!important;
  opacity:.96!important;
}
#battle .combat img{
  width:112px!important;
  height:76px!important;
  top:22px!important;
  object-fit:cover!important;
  object-position:center!important;
  opacity:1!important;
  filter:saturate(1.1) contrast(1.05)!important;
}
#battle .combatInfo{
  left:12px!important;
  right:12px!important;
  bottom:10px!important;
  padding:8px 10px!important;
}
#battle .combatName{
  font-size:14px!important;
}
#battle .combatStats{
  font-size:11px!important;
  line-height:1.35!important;
}
#battle .combat .hpbar{
  height:12px!important;
  margin:6px 0!important;
}

/* Active turn is visible but does not cover the card */
#battle .combat.active{
  box-shadow:0 0 0 2px #111,0 0 0 5px rgba(255,217,29,.9),0 0 18px rgba(255,217,29,.48)!important;
}
#battle .combat.active::after{
  top:8px!important;
  right:8px!important;
  font-size:10px!important;
  padding:2px 7px!important;
}

/* Attack movement of cards */
#battle .combat.player.attackMove{animation:v32PlayerLunge .48s ease}
#battle .combat.enemy.attackMove{animation:v32EnemyLunge .48s ease}
#battle .combat.softHit{animation:v32SoftHit .45s ease}
#battle .combat.hitTarget{animation:v32HardHit .62s ease}

@keyframes v32PlayerLunge{
  0%,100%{transform:translateX(0)}
  42%{transform:translateX(18px) scale(1.015)}
}
@keyframes v32EnemyLunge{
  0%,100%{transform:translateX(0)}
  42%{transform:translateX(-18px) scale(1.015)}
}
@keyframes v32SoftHit{
  0%,100%{filter:none}
  35%{filter:brightness(1.38) saturate(1.22)}
}
@keyframes v32HardHit{
  0%,100%{transform:translate(0);filter:none}
  14%{transform:translate(-7px,2px);filter:brightness(1.55) saturate(1.4)}
  28%{transform:translate(7px,-2px)}
  42%{transform:translate(-5px,1px)}
  56%{transform:translate(5px,-1px)}
  70%{transform:translate(-3px,1px)}
}

/* Center arena: smaller and made for visual impact */
#battle .arena{
  min-height:210px!important;
  height:210px!important;
  overflow:hidden!important;
  background:
    radial-gradient(circle at 50% 50%,rgba(84,245,255,.14),transparent 34%),
    linear-gradient(180deg,#102d7a 0%,#0b1954 60%,#070b2e 100%)!important;
}
#battle .arena::after{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  pointer-events:none!important;
  opacity:0!important;
  background:
    radial-gradient(circle, currentColor 0 3px, transparent 4px),
    radial-gradient(circle, currentColor 0 2px, transparent 3px),
    radial-gradient(circle, currentColor 0 2px, transparent 3px);
  background-size:120px 120px,80px 80px,150px 150px;
  background-position:20% 30%,50% 60%,80% 40%;
  mix-blend-mode:screen!important;
}
#battle .arena.attacking::after{
  opacity:.38!important;
  animation:v32Particles .82s linear!important;
}
@keyframes v32Particles{
  from{transform:translateX(0) scale(1);filter:brightness(1)}
  to{transform:translateX(34px) scale(1.05);filter:brightness(1.5)}
}

/* Replace the straight ray with a diagonal energy slash/pulse */
#battle .beam{
  height:76px!important;
  width:310px!important;
  opacity:0!important;
  border-radius:999px!important;
  background:
    linear-gradient(90deg, transparent 0%, currentColor 18%, rgba(255,255,255,.95) 48%, currentColor 72%, transparent 100%)!important;
  clip-path:polygon(0 46%,72% 14%,100% 50%,72% 86%,0 54%)!important;
  box-shadow:0 0 18px currentColor,0 0 34px currentColor!important;
  filter:saturate(1.45)!important;
}
#battle .beam::before,
#battle .beam:before{
  content:""!important;
  display:none!important;
}
#battle .fromPlayer{
  left:14%!important;
  top:42%!important;
  transform:rotate(-9deg)!important;
}
#battle .fromEnemy{
  right:14%!important;
  top:42%!important;
  transform:rotate(189deg)!important;
}
#battle .arena.attacking .beam{
  opacity:1!important;
  animation:v32Slash .68s ease-out!important;
}
@keyframes v32Slash{
  0%{opacity:0;clip-path:polygon(0 49%,5% 44%,8% 50%,5% 56%,0 51%);filter:brightness(.9)}
  35%{opacity:1;filter:brightness(1.8)}
  100%{opacity:0;clip-path:polygon(0 46%,80% 10%,100% 50%,80% 90%,0 54%);filter:brightness(1.2)}
}

/* Bigger impact burst */
#battle .impact{
  width:72px!important;
  height:72px!important;
  border-radius:50%!important;
  border:4px solid currentColor!important;
  background:radial-gradient(circle,rgba(255,255,255,.9),currentColor 35%,transparent 70%)!important;
  box-shadow:0 0 20px currentColor,0 0 42px currentColor!important;
}
#battle .arena.attacking .impact{
  animation:v32Impact .62s ease-out!important;
}
@keyframes v32Impact{
  0%{transform:scale(.25) rotate(0deg);opacity:0}
  35%{transform:scale(1.1) rotate(25deg);opacity:1}
  100%{transform:scale(2.1) rotate(80deg);opacity:0}
}

/* Type colors for effects */
#battle .atk-Virus{color:#ff3048!important}
#battle .atk-Vacuna{color:#38ff75!important}
#battle .atk-Data{color:#39a8ff!important}
#battle .atk-Unknown{color:#b061ff!important}

/* Damage/call visibility */
#battle .dmg{
  font-size:28px!important;
  text-shadow:2px 2px #000,0 0 12px rgba(255,255,255,.6)!important;
}
#battle .dmg.crit{
  font-size:34px!important;
  color:#ffe45c!important;
}
#battle .call{
  color:#ffe45c!important;
  text-shadow:2px 2px #000,0 0 10px rgba(255,228,92,.7)!important;
}


/* v33 final combat-node override */
.node.combat,
.node.combat.available,
.node.combat.done,
.node.combat.locked{
  background:radial-gradient(circle at 35% 25%, #ffb0b0 0%, #ff3838 40%, #b30000 100%) !important;
  border-color:#120607 !important;
  color:#050505 !important;
  box-shadow:0 0 0 2px rgba(255,255,255,.14) inset, 0 0 26px rgba(255,40,40,.65), 3px 3px 0 rgba(0,0,0,.52) !important;
}
.node.combat.done{opacity:.85 !important; filter:saturate(.95) brightness(.92) !important;}
.node.combat.locked{opacity:.6 !important; filter:grayscale(.25) brightness(.78) !important;}
.node.combat .nodeGlyph,
.node.combat .nodeGlyph svg,
.node.combat .i-stroke,
.node.combat .i-fill{
  color:#050505 !important;
  stroke:#050505 !important;
  fill:#050505 !important;
}
/* starter cards: remove the stray green full bar */
#starter .digi .hpbar{display:none !important;}


/* v34 final lock for red combat node + swords */
.node.combat,
.node.combat.available,
.node.combat.done,
.node.combat.locked{
  background: radial-gradient(circle at 35% 25%, #ffb7b7 0%, #ff4747 38%, #b30000 100%) !important;
  border: 4px solid #1a0507 !important;
  color: #050505 !important;
  box-shadow: 0 0 0 2px rgba(255,255,255,.14) inset, 0 0 24px rgba(255,53,53,.55), 3px 3px 0 rgba(0,0,0,.45) !important;
}
.node.combat .nodeGlyph,
.node.combat .nodeGlyph svg,
.node.combat .nodeGlyph *{
  color:#050505 !important;
  fill:#050505 !important;
  stroke:#050505 !important;
}
#starter .digi .hpbar{display:none !important;}


/* v35 fix: combat node must always be red with black crossed swords */
.node.combat{background:radial-gradient(circle at 35% 25%,#ffb2b2,#ff3c3c 54%,#b40014)!important;color:#111!important;border-color:#3a0006!important;box-shadow:0 0 0 2px rgba(255,255,255,.16) inset,0 0 26px rgba(255,60,60,.62),3px 3px 0 rgba(0,0,0,.54)!important}
.node.combat .i-stroke,.node.combat .i-fill,.node.combat .nodeGlyph{color:#0c0c0c!important;stroke:#0c0c0c!important;fill:#0c0c0c!important}
.node.combat.available{background:radial-gradient(circle at 35% 25%,#ffbcbc,#ff4040 54%,#ba0017)!important;outline:4px solid rgba(255,235,95,.82)!important}
.node.combat.done{background:radial-gradient(circle at 35% 25%,#ff9090,#e43333 56%,#7f0b17)!important;color:#0c0c0c!important;opacity:.9!important;filter:none!important}
.node.combat.locked{background:radial-gradient(circle at 35% 25%,#ff9a9a,#d54242 56%,#6a151e)!important;color:#0c0c0c!important;opacity:.55!important;filter:grayscale(.35) brightness(.72)!important}


/* v36 zipfix: starter screen cleanup */
#starter .digi .hpbar,
#starter .digi .skill{
  display:none !important;
}

/* v36 zipfix: combat node forced red; swords forced black in every state */
#nodes .node.combat,
#nodes .node.combat.available,
#nodes .node.combat.done,
#nodes .node.combat.locked{
  background:radial-gradient(circle at 35% 25%,#ffb2b2,#ff3c3c 54%,#b40014) !important;
  color:#0b0b0b !important;
  border-color:#3a0006 !important;
  box-shadow:0 0 0 2px rgba(255,255,255,.16) inset,0 0 26px rgba(255,60,60,.62),3px 3px 0 rgba(0,0,0,.54) !important;
}
#nodes .node.combat.available{
  outline:4px solid rgba(255,235,95,.82) !important;
}
#nodes .node.combat.locked{
  opacity:.55 !important;
  filter:grayscale(.35) brightness(.72) !important;
}
#nodes .node.combat.done{
  opacity:.9 !important;
  filter:none !important;
}
#nodes .node.combat .nodeGlyph,
#nodes .node.combat .nodeGlyph svg,
#nodes .node.combat .nodeGlyph *,
#nodes .node.combat .i-stroke,
#nodes .node.combat .i-fill{
  color:#0b0b0b !important;
  stroke:#0b0b0b !important;
  fill:#0b0b0b !important;
}
.node.heal{
  background:radial-gradient(circle at 35% 25%,#d7ffe4,#33dd72 58%,#0b7536) !important;
  color:#ffffff !important;
}
.node.training{
  background:radial-gradient(circle at 35% 25%,#fff4bf,#ffd24d 58%,#b77700) !important;
  color:#1a1100 !important;
}


/* v37 node probability note: heal is pre-boss only */
.node.heal{
  box-shadow:0 0 0 2px rgba(255,255,255,.16) inset,0 0 30px rgba(53,219,84,.72),3px 3px 0 rgba(0,0,0,.54) !important;
}
.node.training{
  box-shadow:0 0 0 2px rgba(255,255,255,.16) inset,0 0 24px rgba(255,210,77,.52),3px 3px 0 rgba(0,0,0,.54) !important;
}


/* v42 ScreenFix: bigger home attribute triangle only on home */
.homeChart{
  position:relative;
  width:560px;
  height:420px;
  margin:42px auto 0;
  opacity:.98;
}
.attrSvg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  overflow:visible;
  z-index:1;
}
.arrow{
  fill:none;
  stroke-width:6.5;
  opacity:.94;
  filter:drop-shadow(0 0 8px currentColor);
}
.arrow.red{stroke:#ef3349;color:#ef3349}
.arrow.blue{stroke:#2c9cff;color:#2c9cff}
.arrow.green{stroke:#35db54;color:#35db54}
.arrow.purple{stroke:#9b5cff;color:#9b5cff}
.attrNode{
  position:absolute;
  z-index:2;
  min-width:138px;
  padding:11px 16px;
  text-align:center;
  background:#171711;
  border:3px solid #050509;
  box-shadow:4px 4px 0 rgba(0,0,0,.55),0 0 18px currentColor;
  font-weight:bold;
  letter-spacing:1px;
}
.attrVirus{left:211px;top:0;color:#ff6b7b;border-color:#ef3349}
.attrData{left:0;bottom:18px;color:#6dbdff;border-color:#2c9cff}
.attrVacuna{right:0;bottom:18px;color:#6dff91;border-color:#35db54}
.attrUnknown{
  left:211px;
  top:184px;
  color:#d2b4ff;
  border-color:#9b5cff;
  box-shadow:4px 4px 0 rgba(0,0,0,.55),0 0 24px rgba(155,92,255,.85);
}

/* v42 ScreenFix: small global music toggle */
.musicFloat{
  position:fixed;
  right:14px;
  bottom:14px;
  z-index:70;
  min-width:64px;
  padding:7px 9px;
  font-family:var(--font);
  font-size:11px;
  font-weight:bold;
  color:#d6c2ff;
  background:rgba(23,23,17,.72);
  border:2px solid rgba(155,92,255,.72);
  box-shadow:3px 3px 0 rgba(0,0,0,.45);
  opacity:.56;
  cursor:pointer;
}
.musicFloat:hover{opacity:1;filter:brightness(1.18)}
.musicFloat.on{
  color:#fff;
  border-color:#ffd91d;
  box-shadow:3px 3px 0 rgba(0,0,0,.45),0 0 14px rgba(255,217,29,.35);
}
@media(max-width:700px){
  .homeChart{width:360px;height:300px;transform:scale(.9);transform-origin:top center}
  .attrVirus{left:111px}
  .attrUnknown{left:111px;top:130px}
}


/* v47: Battle Prep / reorder team */
.prepEnemyInfo{
  width:min(760px,100%);
  margin:0 auto 16px;
  background:rgba(23,23,17,.88);
  border:3px solid #050509;
  box-shadow:5px 5px 0 rgba(0,0,0,.55);
  padding:12px 14px;
  text-align:center;
}
.prepList{
  display:grid;
  gap:12px;
  width:min(820px,100%);
  margin:0 auto 18px;
}
.prepEntry{
  display:grid;
  grid-template-columns:72px 1fr 110px;
  gap:12px;
  align-items:center;
  background:var(--panel);
  border:3px solid #050509;
  box-shadow:5px 5px 0 rgba(0,0,0,.55);
  padding:10px;
}
.prepEntry img{
  width:72px;
  height:72px;
  object-fit:cover;
  border:2px solid #111;
  background:#111;
}
.prepEntry strong{display:block;color:#fff}
.prepEntry small{display:block;color:var(--muted);margin-top:4px}
.prepBtns{display:flex;gap:6px;justify-content:flex-end}

/* v47: volume slider */
.musicControl{
  position:fixed;
  right:14px;
  bottom:14px;
  z-index:70;
  display:flex;
  align-items:center;
  gap:8px;
  opacity:.64;
}
.musicControl:hover{opacity:1}
.musicControl .musicFloat{
  position:static!important;
  opacity:1!important;
}
.musicVolume{
  width:92px;
  accent-color:#9b5cff;
  background:rgba(23,23,17,.72);
  border:2px solid rgba(155,92,255,.72);
  box-shadow:3px 3px 0 rgba(0,0,0,.45);
}
.musicVolume.on{accent-color:#ffd91d}

@media(max-width:700px){
  .prepEntry{grid-template-columns:58px 1fr;gap:8px}
  .prepEntry img{width:58px;height:58px}
  .prepBtns{grid-column:1/-1;justify-content:center}
  .musicVolume{width:70px}
}


/* v48: Powered Digimon ★ */
.poweredCard{
  border-color:#ffd91d!important;
  box-shadow:5px 5px 0 rgba(0,0,0,.6),0 0 22px rgba(255,217,29,.45)!important;
}
.goldStar{
  text-align:center;
  color:#ffd91d;
  font-weight:bold;
  font-size:12px;
  letter-spacing:1px;
  margin:-6px 0 6px;
  text-shadow:0 0 10px rgba(255,217,29,.75);
}
.poweredCombat{
  border-color:#ffd91d!important;
  box-shadow:0 0 0 2px rgba(255,217,29,.28),5px 5px 0 rgba(0,0,0,.6)!important;
}
.poweredCombat .combatName span:first-child::before{
  content:'★ ';
  color:#ffd91d;
}
.teamEntry strong::first-letter{
  color:inherit;
}


/* v49: drag reorder directly from TEAM panel */
.sideHint{
  font-size:11px;
  color:var(--muted);
  margin:-6px 0 10px;
}
.draggableTeam{
  cursor:grab;
  position:relative;
  user-select:none;
}
.draggableTeam:active{
  cursor:grabbing;
}
.draggableTeam.leadDigi{
  border-color:#ffd91d!important;
  box-shadow:0 0 0 2px rgba(255,217,29,.20),4px 4px 0 rgba(0,0,0,.55)!important;
}
.draggableTeam.leadDigi::before{
  content:'1st';
  position:absolute;
  right:8px;
  top:6px;
  font-size:10px;
  color:#111;
  background:#ffd91d;
  border:2px solid #111;
  padding:1px 5px;
}
.dragHint{
  margin-left:auto;
  color:#9b5cff;
  font-weight:bold;
  align-self:center;
  opacity:.75;
}
.teamEntry{
  align-items:center;
}


/* v53: equip/unequip from TEAM panel */
.teamEquipIcon{
  width:52px;
  height:52px;
  padding:0;
  border:2px solid #111;
  background:#111;
  cursor:pointer;
  box-shadow:2px 2px 0 rgba(0,0,0,.45);
  flex:0 0 auto;
}
.teamEquipIcon:hover{
  outline:3px solid #ffd91d;
  filter:brightness(1.12);
}
.teamEquipIcon img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.teamInfo{
  cursor:pointer;
}
.teamInfo:hover strong{
  color:#ffd91d;
}
.unequipButton{
  border-color:#ffd91d!important;
  color:#ffd91d!important;
}


/* v54 combat layout upgrade */
.app{width:min(1320px,calc(100% - 20px));}
#battle .battleGrid{
  grid-template-columns:minmax(250px,0.86fr) 360px minmax(250px,0.86fr)!important;
  gap:14px!important;
  align-items:start;
}
#battle .battlePanel{
  min-height:470px!important;
  padding:12px!important;
}
#battle .mid{
  gap:10px!important;
}
#battle .arena{
  height:380px!important;
  border-color:#091122!important;
  background:radial-gradient(circle at 50% 55%,rgba(84,193,255,.16) 0 90px,transparent 150px),linear-gradient(180deg,#0a1b64 0%,#102f8c 58%,#0b1647 100%)!important;
}
#battle .arena::before{
  background:
    radial-gradient(circle at 25% 25%,rgba(81,232,255,.18) 0 30px,transparent 70px),
    radial-gradient(circle at 75% 70%,rgba(201,88,255,.14) 0 28px,transparent 70px),
    linear-gradient(90deg,transparent 0 10%,rgba(118,213,255,.06) 10% 11%,transparent 11% 22%,rgba(118,213,255,.05) 22% 23%,transparent 23% 70%,rgba(255,255,255,.05) 70% 71%,transparent 71% 100%),
    linear-gradient(0deg,transparent 0 12%,rgba(135,226,255,.04) 12% 13%,transparent 13% 36%,rgba(135,226,255,.04) 36% 37%,transparent 37% 100%);
  opacity:1!important;
}
#battle .arenaSprites{
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
}
#battle .fighterWrap{
  position:absolute;
  bottom:12px;
  width:45%;
  height:78%;
  display:flex;
  align-items:flex-end;
  justify-content:center;
}
#battle .fighterWrap.player{left:2%;}
#battle .fighterWrap.enemy{right:2%;}
#battle .fighterWrap.dead{opacity:.45; filter:grayscale(1);}
#battle .fighterWrap.powered::after{
  content:'★';
  position:absolute;
  top:8px;
  font-size:22px;
  color:#ffd91d;
  text-shadow:0 0 10px rgba(255,217,29,.8), 2px 2px 0 #000;
}
#battle .fighterWrap.player.powered::after{left:26px;}
#battle .fighterWrap.enemy.powered::after{right:26px;}
#battle .fighter{
  max-width:88%;
  max-height:92%;
  object-fit:contain;
  image-rendering:auto;
  filter:drop-shadow(0 6px 10px rgba(0,0,0,.55));
  transform-origin:center bottom;
}
#battle .fighter.enemy{transform:scaleX(-1);}
#battle .pAtk .fighter.player{animation:pDash .72s ease;}
#battle .eAtk .fighter.enemy{animation:eDash .72s ease;}
#battle .hitE .fighter.enemy{animation:eHit .38s linear 1;}
#battle .hitP .fighter.player{animation:pHit .38s linear 1;}
@keyframes pDash{0%{transform:translateX(0) scale(1)}35%{transform:translateX(36px) translateY(-6px) scale(1.05)}100%{transform:translateX(0) scale(1)}}
@keyframes eDash{0%{transform:scaleX(-1) translateX(0) scale(1)}35%{transform:scaleX(-1) translateX(36px) translateY(-6px) scale(1.05)}100%{transform:scaleX(-1) translateX(0) scale(1)}}
@keyframes eHit{0%,100%{transform:scaleX(-1) translateX(0)}25%{transform:scaleX(-1) translateX(8px)}50%{transform:scaleX(-1) translateX(-6px)}75%{transform:scaleX(-1) translateX(5px)}}
@keyframes pHit{0%,100%{transform:translateX(0)}25%{transform:translateX(-8px)}50%{transform:translateX(6px)}75%{transform:translateX(-5px)}}
#battle .cmd{grid-template-columns:1fr!important;}
#battle .combat{
  min-height:100px!important;
  padding:6px!important;
  margin-bottom:10px!important;
}
#battle .combat::before{opacity:.95!important;}
#battle .combat img{
  width:104px!important;
  height:74px!important;
  top:10px!important;
}
#battle .combat.player img{left:auto!important; right:12px!important;}
#battle .combat.enemy img{right:12px!important; transform:none!important;}
#battle .combatInfo{
  position:relative!important;
  z-index:3!important;
  margin-top:44px!important;
  padding:7px 10px!important;
  background:rgba(214,232,255,.72)!important;
  border:2px solid rgba(17,24,39,.24)!important;
}
#battle .combatName{font-size:13px!important;}
#battle .typeRow{margin:4px 0!important;}
#battle .combatStats{font-size:11px!important; line-height:1.35!important;}
#battle .combat .hpbar{height:12px!important; margin:4px 0 6px!important;}
#battle .log{height:198px!important;}
@media(max-width:1100px){
  #battle .battleGrid{grid-template-columns:1fr!important;}
  #battle .arena{height:320px!important;}
}


/* v55 compact combat cards */
#battle .battleGrid{
  grid-template-columns:minmax(260px,0.84fr) 360px minmax(260px,0.84fr)!important;
}
#battle .battlePanel{
  min-height:420px!important;
}
#battle .combat{
  min-height:142px!important;
  padding:10px!important;
  overflow:hidden!important;
}
#battle .combatInner{
  display:grid!important;
  grid-template-columns:112px 1fr!important;
  gap:12px!important;
  align-items:center!important;
  min-height:118px!important;
}
#battle .combat img{
  position:relative!important;
  left:auto!important;
  right:auto!important;
  top:auto!important;
  margin:0!important;
  width:112px!important;
  height:84px!important;
  object-fit:cover!important;
  border:2px solid rgba(255,255,255,.18)!important;
  background:#101010!important;
  z-index:2!important;
  justify-self:start!important;
  align-self:center!important;
  transform:none!important;
}
#battle .combat.enemy img{
  transform:none!important;
}
#battle .combatInfo{
  margin:0!important;
  min-height:auto!important;
  padding:8px 10px!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
}
#battle .combatName{
  font-size:13px!important;
  margin-bottom:4px!important;
  gap:8px!important;
}
#battle .combatName span:first-child{
  max-width:none!important;
}
#battle .typeRow{
  margin:2px 0 6px!important;
  text-align:left!important;
}
#battle .combat .hpbar{
  width:100%!important;
  height:12px!important;
  margin:4px 0 5px!important;
  overflow:hidden!important;
}
#battle .combat .hpbar span{
  transition:none!important;
}
#battle .combatStats{
  font-size:12px!important;
  line-height:1.3!important;
  margin-top:0!important;
}
#battle .combat.attackMove,
#battle .combat.hitTarget,
#battle .combat img,
#battle .combatInfo,
#battle .combatStats,
#battle .combatName,
#battle .combat .hpbar,
#battle .combat .hpbar span{
  animation:none!important;
}
#battle .combat.active::before{
  inset:4px!important;
}
#battle .combat.active::after{
  right:8px!important;
  top:8px!important;
}
@media(max-width:1100px){
  #battle .combatInner{grid-template-columns:96px 1fr!important; gap:10px!important;}
  #battle .combat img{width:96px!important; height:72px!important;}
}


/* v56 combat placeholder animation patch */
#battle .fighterLabel{
  position:absolute;
  bottom:6px;
  left:50%;
  transform:translateX(-50%);
  padding:4px 8px;
  background:rgba(6,10,24,.82);
  border:2px solid rgba(255,255,255,.14);
  color:#f7f0d8;
  font-size:11px;
  line-height:1;
  white-space:nowrap;
  text-shadow:1px 1px 0 #000;
  box-shadow:0 0 8px rgba(0,0,0,.35);
}
#battle .fighterWrap.player .fighterLabel{border-color:rgba(44,156,255,.35)}
#battle .fighterWrap.enemy .fighterLabel{border-color:rgba(239,51,73,.35)}
#battle .fighter{
  transition:opacity .08s linear;
}


/* v58 hard lock: combat nodes always red with black crossed swords */
#nodes .node.combat,
#nodes .node.combat.available,
#nodes .node.combat.done,
#nodes .node.combat.locked{
  background:radial-gradient(circle at 35% 25%,#ffb2b2 0%,#ff3c3c 54%,#b40014 100%) !important;
  border:4px solid #2a0508 !important;
  color:#050505 !important;
}
#nodes .node.combat .nodeGlyph,
#nodes .node.combat .nodeGlyph svg,
#nodes .node.combat .nodeGlyph *,
#nodes .node.combat .i-stroke,
#nodes .node.combat .i-fill{
  color:#050505 !important;
  stroke:#050505 !important;
  fill:#050505 !important;
}


/* v59: node/button stability */
#nodes .node:disabled{pointer-events:none;}
#battle #fight{min-height:50px;letter-spacing:1px;}


/* v60: wider side panels + separate icon/equip and name/stats behavior */
.app{width:min(1360px,calc(100% - 18px))!important;}
.layout{grid-template-columns:240px minmax(640px,740px) 240px!important;gap:16px!important;}
.panel{padding:16px!important;}
.teamEntry{grid-template-columns:64px 1fr 18px!important;gap:10px!important;align-items:start!important;min-height:106px!important;}
.teamEquipIcon{width:64px!important;height:64px!important;border:2px solid #111!important;background:#111!important;padding:0!important;cursor:pointer!important;transition:filter .12s ease, box-shadow .12s ease, transform .12s ease!important;}
.teamEquipIcon img{width:100%!important;height:100%!important;object-fit:cover!important;display:block!important;}
.teamEquipIcon:hover{filter:brightness(1.22) saturate(1.16)!important;box-shadow:0 0 12px rgba(255,217,29,.9),0 0 0 2px rgba(255,217,29,.55)!important;transform:translateY(-1px)!important;}
.teamInfo{min-width:0!important;cursor:default!important;}
.teamInfo small{display:block!important;line-height:1.25!important;overflow:visible!important;white-space:normal!important;}
.teamNameBtn{display:block!important;width:100%!important;text-align:left!important;background:transparent!important;border:0!important;color:#f7f0d8!important;font-family:var(--font)!important;font-weight:bold!important;font-size:13px!important;padding:0!important;margin:0 0 3px!important;cursor:pointer!important;white-space:normal!important;line-height:1.15!important;}
.teamNameBtn:hover{color:#ffd91d!important;text-shadow:0 0 8px rgba(255,217,29,.65)!important;}
.itemEntry em{display:block;color:#aaa58d;font-size:10px;line-height:1.25;margin-top:3px;font-style:normal;white-space:normal;}
.statsCard{max-width:620px!important;width:min(620px,calc(100% - 30px))!important;}
.statsTop{display:grid;grid-template-columns:120px 1fr;gap:14px;align-items:center;margin-bottom:14px;}
.statsTop img{width:120px;height:90px;object-fit:cover;border:2px solid #111;background:#111;}
.statsTop h3{margin:0 0 6px;color:#ffd91d;}
.statsTop p{margin:4px 0;color:#c9c2aa;font-size:12px;}
.statsGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.statsGrid div{background:#171711;border:2px solid rgba(255,255,255,.14);padding:10px;min-height:74px;}
.statsGrid b{display:block;color:#aaa58d;font-size:12px;}
.statsGrid span{display:block;color:#fff;font-size:22px;font-weight:bold;line-height:1.2;}
.statsGrid small{display:block;color:#aaa58d;font-size:11px;}
#eventGrid .itemChoice{min-height:230px!important;}
@media(max-width:1150px){.layout{grid-template-columns:1fr!important}.panel{max-width:none!important}.route{height:760px!important}}


/* v61: side panels wider, cleaner team list, item node and skip summary */
.app{
  width:min(1460px,calc(100% - 20px))!important;
}
.layout{
  grid-template-columns:260px minmax(620px,760px) 260px!important;
  gap:18px!important;
}
.panel{
  padding:16px!important;
}
.teamEntry{
  grid-template-columns:66px 1fr 20px!important;
  gap:10px!important;
  min-height:102px!important;
  overflow:visible!important;
}
.teamEquipIcon{
  width:62px!important;
  height:62px!important;
  transition:filter .12s ease, box-shadow .12s ease, transform .12s ease!important;
}
.teamEquipIcon:hover{
  filter:brightness(1.25) saturate(1.25)!important;
  box-shadow:0 0 16px rgba(255,217,29,.85),2px 2px 0 rgba(0,0,0,.5)!important;
  transform:translateY(-1px)!important;
}
.teamNameBtn{
  display:block!important;
  width:100%!important;
  text-align:left!important;
  background:transparent!important;
  border:0!important;
  padding:0!important;
  margin:0 0 3px!important;
  color:#fff!important;
  font-family:var(--font)!important;
  font-weight:bold!important;
  font-size:13px!important;
  line-height:1.15!important;
  cursor:pointer!important;
  white-space:normal!important;
  word-break:break-word!important;
}
.teamNameBtn:hover{
  color:var(--gold)!important;
  text-shadow:0 0 8px rgba(255,217,29,.65)!important;
}
.teamInfo small,
.itemEntry small,
.itemEntry em{
  white-space:normal!important;
  word-break:break-word!important;
  line-height:1.25!important;
}
.itemEntry em{
  display:block!important;
  color:#c8c0a2!important;
  margin-top:4px!important;
  font-style:normal!important;
}
.nodeChoiceButton{
  cursor:pointer!important;
}
.takeLabel{
  margin-top:14px;
  padding:8px 10px;
  border:2px solid var(--gold);
  color:var(--gold);
  background:rgba(0,0,0,.35);
  font-weight:bold;
}
.skipRow{
  min-height:auto!important;
  background:var(--panel);
  border:3px solid var(--line);
  box-shadow:5px 5px 0 rgba(0,0,0,.55);
  padding:16px;
}
.skipRow h3{
  color:#fff;
  margin-bottom:8px;
}
.skipRow p{
  color:#d8d0bc;
  margin-bottom:4px;
}
.skipRow.dead{
  border-color:var(--red);
}
.skipRow.dead strong{
  color:var(--red);
}
.statsCard{
  max-width:720px!important;
}
.statsTop{
  display:grid;
  grid-template-columns:110px 1fr;
  gap:16px;
  align-items:center;
  margin-bottom:16px;
}
.statsTop img{
  width:110px;
  height:90px;
  object-fit:cover;
  border:3px solid #111;
  background:#111;
}
.statsGrid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:10px;
}
.statsGrid div{
  background:#171711;
  border:2px solid rgba(255,255,255,.12);
  padding:10px;
}
.statsGrid b,
.statsGrid span,
.statsGrid small{
  display:block;
}
.statsGrid span{
  color:var(--gold);
  font-size:20px;
  font-weight:bold;
}
.statsGrid small{
  color:var(--muted);
  font-size:11px;
}
@media(max-width:1200px){
  .layout{grid-template-columns:1fr!important}
}


/* v62: battle card layout, compact team panel, skip always clickable */
.app{width:min(1500px,calc(100% - 20px))!important;}
.layout{grid-template-columns:280px minmax(620px,780px) 280px!important;gap:18px!important;}
.teamEntry{grid-template-columns:64px 1fr 18px!important;gap:10px!important;min-height:96px!important;align-items:start!important;}
.teamEquipIcon{width:64px!important;height:64px!important;}
.teamInfo .hpbar{height:12px!important;margin:6px 0 5px!important;}
.teamInfo small{font-size:12px!important;}

#battle .battleGrid{grid-template-columns:minmax(280px,.95fr) 360px minmax(280px,.95fr)!important;gap:14px!important;}
#battle .battlePanel{min-height:430px!important;}
#battle .combat{min-height:116px!important;padding:5px!important;background:#b9f18b!important;border:3px solid #171711!important;overflow:hidden!important;}
#battle .combat::before{display:none!important;}
#battle .combatInner{display:grid!important;grid-template-columns:116px 1fr!important;gap:0!important;align-items:stretch!important;min-height:104px!important;height:100%!important;}
#battle .combatArt{display:flex!important;align-items:stretch!important;justify-content:stretch!important;min-height:104px!important;border:2px solid rgba(0,0,0,.35)!important;background:#6fd059!important;}
#battle .combatArt img{position:relative!important;left:auto!important;right:auto!important;top:auto!important;margin:0!important;width:100%!important;height:100%!important;min-height:104px!important;object-fit:cover!important;border:0!important;background:#111!important;transform:none!important;}
#battle .combat.enemy .combatArt img{transform:none!important;}
#battle .combatRight{display:grid!important;grid-template-rows:auto 1fr!important;min-height:104px!important;}
#battle .combatTop{position:relative!important;padding:8px 10px 7px!important;border:2px solid rgba(17,24,39,.28)!important;border-left:0!important;background:linear-gradient(180deg,rgba(226,248,255,.88),rgba(207,236,239,.88))!important;}
#battle .combatHead{display:flex!important;justify-content:space-between!important;gap:8px!important;align-items:flex-start!important;}
#battle .combatName{display:block!important;font-size:13px!important;font-weight:bold!important;color:#fff!important;text-shadow:2px 2px #111!important;line-height:1.1!important;margin:0 0 6px!important;}
#battle .combatLevel{font-size:12px!important;font-weight:bold!important;color:#fff!important;text-shadow:2px 2px #111!important;white-space:nowrap!important;padding-top:1px!important;}
#battle .combatTop .typeRow{text-align:left!important;margin:0!important;}
#battle .combatBottom{padding:8px 10px 9px!important;border:2px solid rgba(17,24,39,.28)!important;border-left:0!important;border-top:0!important;background:linear-gradient(180deg,rgba(193,255,157,.82),rgba(184,238,166,.86))!important;display:flex!important;flex-direction:column!important;justify-content:center!important;}
#battle .combatBottom .hpbar{width:100%!important;height:12px!important;margin:0 0 6px!important;}
#battle .combatStats{font-size:12px!important;line-height:1.3!important;color:#28362b!important;font-weight:bold!important;margin:0!important;}
#battle .turnMini{position:absolute!important;right:8px!important;top:8px!important;display:inline-block!important;padding:4px 8px!important;background:#f1cb18!important;border:2px solid #5d4300!important;color:#111!important;font-size:11px!important;font-weight:bold!important;line-height:1!important;box-shadow:2px 2px 0 rgba(0,0,0,.32)!important;}
#battle .powerStar{display:inline-block!important;margin-left:8px!important;color:#ffd91d!important;font-size:14px!important;font-weight:bold!important;text-shadow:0 0 8px rgba(255,217,29,.65)!important;}
#battle .combat.active{outline:4px solid var(--gold)!important;}
#battle .combat.dead{filter:grayscale(1) brightness(.6)!important;}
#battle .combat.type-Vacuna .combatTop{background:linear-gradient(180deg,rgba(208,255,209,.92),rgba(190,243,194,.88))!important;}
#battle .combat.type-Vacuna .combatBottom{background:linear-gradient(180deg,rgba(194,255,170,.88),rgba(176,238,162,.90))!important;}
#battle .combat.type-Virus .combatTop{background:linear-gradient(180deg,rgba(255,225,225,.92),rgba(250,202,202,.88))!important;}
#battle .combat.type-Virus .combatBottom{background:linear-gradient(180deg,rgba(255,217,217,.90),rgba(243,205,205,.92))!important;}
#battle .combat.type-Data .combatTop{background:linear-gradient(180deg,rgba(226,248,255,.92),rgba(203,232,255,.90))!important;}
#battle .combat.type-Data .combatBottom{background:linear-gradient(180deg,rgba(212,242,255,.90),rgba(198,233,255,.92))!important;}
#battle .combat.type-Unknown .combatTop{background:linear-gradient(180deg,rgba(239,228,255,.92),rgba(223,209,255,.88))!important;}
#battle .combat.type-Unknown .combatBottom{background:linear-gradient(180deg,rgba(230,220,255,.90),rgba(219,208,255,.92))!important;}

#battle #fight{pointer-events:auto!important;opacity:1!important;}

#targets .target img{width:64px!important;height:64px!important;object-fit:cover!important;border:2px solid #111!important;display:block!important;margin-bottom:8px!important;}
#targets .target span{font-size:12px!important;}

@media(max-width:1200px){
  .layout{grid-template-columns:1fr!important;}
  #battle .battleGrid{grid-template-columns:1fr!important;}
}


/* v63 reliability polish */
#battle #fight:disabled{
  opacity:1!important;
  cursor:pointer!important;
  filter:none!important;
}
#targets .target{
  min-height:120px!important;
}


/* v64: music NEXT button + responsive battle panel exact card layout */
.musicControl{
  display:flex!important;
  align-items:center!important;
  gap:8px!important;
}
.musicFloat,
.musicNext{
  width:62px!important;
  height:34px!important;
  min-width:62px!important;
  padding:0!important;
  display:inline-grid!important;
  place-items:center!important;
  text-align:center!important;
}
.musicNext:disabled{
  opacity:.45!important;
  cursor:not-allowed!important;
  filter:grayscale(.6)!important;
}

/* Item equip target panel: keep same size, fix vertical text and powered-star names */
#targets .target{
  display:grid!important;
  grid-template-columns:72px minmax(0,1fr)!important;
  grid-template-rows:auto auto!important;
  column-gap:12px!important;
  row-gap:4px!important;
  align-items:center!important;
  min-height:92px!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
}
#targets .target img{
  grid-row:1 / 3!important;
  grid-column:1!important;
  width:64px!important;
  height:64px!important;
  object-fit:cover!important;
  margin:0!important;
}
#targets .target strong{
  grid-column:2!important;
  display:block!important;
  min-width:0!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
  line-height:1.2!important;
}
#targets .target span{
  grid-column:2!important;
  display:block!important;
  min-width:0!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
  line-height:1.25!important;
}

/* Battle cards must stay like the reference in half-screen and full-screen */
#battle .battleGrid{
  grid-template-columns:minmax(350px,1fr) minmax(320px,380px) minmax(350px,1fr)!important;
  gap:14px!important;
  align-items:start!important;
}
#battle .battlePanel{
  min-height:360px!important;
  padding:12px!important;
}
#battle .combat{
  height:clamp(112px,9vw,150px)!important;
  min-height:112px!important;
  max-height:150px!important;
  padding:4px!important;
  margin-bottom:12px!important;
  background:#9eea74!important;
  border:3px solid #171711!important;
}
#battle .combatInner{
  display:grid!important;
  grid-template-columns:clamp(105px,9vw,150px) minmax(0,1fr)!important;
  gap:0!important;
  height:100%!important;
  min-height:0!important;
}
#battle .combatArt{
  height:100%!important;
  min-height:0!important;
  border:2px solid rgba(0,0,0,.45)!important;
  overflow:hidden!important;
}
#battle .combatArt img{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  object-fit:cover!important;
  display:block!important;
}
#battle .combatRight{
  display:grid!important;
  grid-template-rows:45% 55%!important;
  height:100%!important;
  min-width:0!important;
}
#battle .combatTop{
  min-height:0!important;
  padding:clamp(5px,.6vw,10px) clamp(7px,.8vw,12px)!important;
  overflow:hidden!important;
}
#battle .combatHead{
  padding-right:70px!important;
  min-width:0!important;
}
#battle .combatName{
  font-size:clamp(11px,.9vw,16px)!important;
  line-height:1.08!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
  max-height:2.3em!important;
  overflow:hidden!important;
}
#battle .combatLevel{
  font-size:clamp(10px,.75vw,13px)!important;
}
#battle .combatTop .typeRow .type{
  font-size:clamp(10px,.75vw,12px)!important;
  padding:3px 8px!important;
}
#battle .turnMini{
  right:8px!important;
  top:7px!important;
  font-size:clamp(9px,.75vw,11px)!important;
  padding:4px 7px!important;
}
#battle .combatBottom{
  min-height:0!important;
  padding:clamp(6px,.7vw,10px) clamp(8px,.9vw,13px)!important;
  overflow:hidden!important;
}
#battle .combatBottom .hpbar{
  height:clamp(9px,.85vw,13px)!important;
  margin:0 0 clamp(4px,.55vw,8px)!important;
}
#battle .combatStats{
  font-size:clamp(10px,.82vw,13px)!important;
  line-height:1.25!important;
  white-space:normal!important;
}

/* Prevent old card rules from stretching the green background below the real card */
#battle .combat::before{display:none!important;}
#battle .combatInfo{display:contents!important;}

@media(max-width:1180px){
  #battle .battleGrid{
    grid-template-columns:1fr!important;
  }
  #battle .battlePanel{
    min-height:auto!important;
  }
  #battle .combat{
    height:132px!important;
    max-height:132px!important;
  }
  #battle .combatInner{
    grid-template-columns:132px minmax(0,1fr)!important;
  }
}


/* v65: ATT is internal only; stats modal now displays 5 visible stats */
.statsGrid{
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr))!important;
}


/* v66: reset buttons + single TURNO badge */
#battle .combat.active::after{
  display:none!important;
  content:none!important;
}
.starterTitle{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:18px!important;
  max-width:980px!important;
}
.resetBtn{
  min-width:96px!important;
  height:42px!important;
  padding:8px 16px!important;
  letter-spacing:1px!important;
}
.mapHead{
  display:grid!important;
  grid-template-columns:1fr auto 1fr!important;
  align-items:start!important;
}
.mapHead .mapResetBtn{
  justify-self:center!important;
  align-self:start!important;
  margin-top:6px!important;
}
#runInfo{
  justify-self:end!important;
}
@media(max-width:900px){
  .starterTitle{flex-direction:column!important;}
  .mapHead{grid-template-columns:1fr!important;gap:10px!important;text-align:center!important;}
  .mapHead .mapResetBtn,#runInfo{justify-self:center!important;}
}


/* v67: Double Battle node */
.node.double,
#nodes .node.double,
#nodes .node.double.available,
#nodes .node.double.done,
#nodes .node.double.locked{
  background:radial-gradient(circle at 35% 25%,#ffdd7a 0%,#ff7b2d 52%,#8b1018 100%)!important;
  border:4px solid #2a0508!important;
  color:#070707!important;
}
#nodes .node.double .nodeGlyph,
#nodes .node.double .nodeGlyph svg,
#nodes .node.double .nodeGlyph *,
#nodes .node.double .i-stroke,
#nodes .node.double .i-fill{
  color:#070707!important;
  stroke:#070707!important;
  fill:#070707!important;
}


/* v68: combat panels fit - every combat element has reserved space */
#battle .battleGrid{
  grid-template-columns:minmax(370px,1fr) minmax(320px,380px) minmax(370px,1fr)!important;
  gap:14px!important;
  align-items:start!important;
}
#battle .battlePanel{
  min-height:360px!important;
  padding:12px!important;
}
#battle .combat{
  height:clamp(138px,10vw,162px)!important;
  min-height:138px!important;
  max-height:162px!important;
  padding:4px!important;
  margin-bottom:12px!important;
  overflow:hidden!important;
}
#battle .combat::before,
#battle .combat.active::after{
  display:none!important;
  content:none!important;
}
#battle .combatInner{
  display:grid!important;
  grid-template-columns:clamp(118px,9vw,154px) minmax(0,1fr)!important;
  gap:0!important;
  height:100%!important;
  min-height:0!important;
}
#battle .combatArt{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  border:2px solid rgba(0,0,0,.45)!important;
}
#battle .combatArt img{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  object-fit:cover!important;
  display:block!important;
}
#battle .combatRight{
  display:grid!important;
  grid-template-rows:minmax(58px,45%) minmax(72px,55%)!important;
  height:100%!important;
  min-width:0!important;
}
#battle .combatTop{
  position:relative!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-rows:minmax(30px,1fr) 30px!important;
  align-items:start!important;
  min-width:0!important;
  min-height:0!important;
  padding:7px 9px 7px!important;
  padding-right:82px!important;
  overflow:hidden!important;
}
#battle .combatHead{
  grid-column:1 / 2!important;
  grid-row:1!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:space-between!important;
  gap:8px!important;
  min-width:0!important;
  padding:0!important;
}
#battle .combatName{
  display:block!important;
  min-width:0!important;
  max-height:2.25em!important;
  overflow:hidden!important;
  font-size:clamp(11px,.86vw,15px)!important;
  line-height:1.08!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:anywhere!important;
  margin:0!important;
}
#battle .combatLevel{
  flex:0 0 auto!important;
  font-size:clamp(10px,.74vw,13px)!important;
  line-height:1.1!important;
  white-space:nowrap!important;
  margin:0!important;
}
#battle .combatMeta{
  grid-column:1 / 3!important;
  grid-row:2!important;
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  min-height:28px!important;
  margin:0!important;
  overflow:visible!important;
}
#battle .combatMeta .type{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:24px!important;
  padding:4px 10px!important;
  font-size:clamp(10px,.72vw,12px)!important;
  line-height:1.1!important;
  white-space:nowrap!important;
  max-width:max-content!important;
  border-width:2px!important;
}
#battle .turnMini{
  position:absolute!important;
  right:8px!important;
  top:7px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:58px!important;
  height:23px!important;
  padding:0 7px!important;
  font-size:clamp(9px,.68vw,11px)!important;
  line-height:1!important;
  z-index:4!important;
}
#battle .powerStar{
  flex:0 0 auto!important;
  margin-left:0!important;
  font-size:15px!important;
  line-height:1!important;
}
#battle .combatBottom{
  display:grid!important;
  grid-template-rows:14px minmax(0,1fr)!important;
  align-content:center!important;
  gap:6px!important;
  min-height:0!important;
  padding:8px 10px!important;
  overflow:hidden!important;
}
#battle .combatBottom .hpbar{
  height:13px!important;
  width:100%!important;
  margin:0!important;
}
#battle .combatStats{
  display:block!important;
  min-height:0!important;
  overflow:hidden!important;
  font-size:clamp(10px,.82vw,13px)!important;
  line-height:1.23!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:break-word!important;
}
@media(max-width:1180px){
  #battle .battleGrid{grid-template-columns:1fr!important;}
  #battle .combat{
    height:150px!important;
    max-height:150px!important;
  }
  #battle .combatInner{
    grid-template-columns:150px minmax(0,1fr)!important;
  }
  #battle .combatName{
    font-size:14px!important;
  }
}
@media(max-width:620px){
  #battle .combat{
    height:156px!important;
    max-height:156px!important;
  }
  #battle .combatInner{
    grid-template-columns:120px minmax(0,1fr)!important;
  }
  #battle .combatTop{
    padding-right:72px!important;
  }
  #battle .turnMini{
    min-width:52px!important;
    font-size:9px!important;
  }
}


/* v70: map reset blocked only when Ordinemon was chosen as starter */
#mapReset:disabled{
  opacity:.55!important;
  cursor:not-allowed!important;
  filter:grayscale(.45)!important;
}


/* v71: compact exact combat cards, fixed attribute visibility */
#battle .battleGrid{
  grid-template-columns:minmax(410px,1fr) minmax(320px,380px) minmax(410px,1fr)!important;
  gap:14px!important;
  align-items:start!important;
}
#battle .battlePanel{
  min-height:330px!important;
  padding:10px!important;
}
#battle .combat{
  height:124px!important;
  min-height:124px!important;
  max-height:124px!important;
  padding:4px!important;
  margin:0 0 10px!important;
  overflow:hidden!important;
}
#battle .combat::before,
#battle .combat.active::after{
  display:none!important;
  content:none!important;
}
#battle .combatInner{
  display:grid!important;
  grid-template-columns:124px minmax(0,1fr)!important;
  gap:0!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
}
#battle .combatArt{
  width:124px!important;
  height:116px!important;
  min-height:116px!important;
  overflow:hidden!important;
  border:2px solid rgba(0,0,0,.45)!important;
  background:#111!important;
}
#battle .combatArt img{
  position:relative!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  object-fit:cover!important;
  display:block!important;
  left:auto!important;
  right:auto!important;
  top:auto!important;
  margin:0!important;
  border:0!important;
  transform:none!important;
}
#battle .combat.enemy .combatArt img{
  transform:none!important;
}
#battle .combatRight{
  display:grid!important;
  grid-template-rows:55px 61px!important;
  width:100%!important;
  height:116px!important;
  min-width:0!important;
  min-height:0!important;
}
#battle .combatTop{
  position:relative!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 52px 62px!important;
  grid-template-rows:24px 25px!important;
  column-gap:8px!important;
  row-gap:2px!important;
  align-items:center!important;
  min-width:0!important;
  min-height:0!important;
  height:55px!important;
  padding:5px 8px!important;
  overflow:visible!important;
  border-left:0!important;
}
#battle .combatName{
  grid-column:1 / 2!important;
  grid-row:1!important;
  display:block!important;
  min-width:0!important;
  max-width:100%!important;
  height:22px!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  font-size:13px!important;
  line-height:22px!important;
  margin:0!important;
}
#battle .combatLevel{
  grid-column:2!important;
  grid-row:1!important;
  justify-self:end!important;
  align-self:center!important;
  font-size:12px!important;
  line-height:20px!important;
  white-space:nowrap!important;
  margin:0!important;
}
#battle .combatAttr{
  grid-column:1 / 2!important;
  grid-row:2!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  min-height:25px!important;
  overflow:visible!important;
}
#battle .combatAttr .type{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  height:24px!important;
  min-height:24px!important;
  min-width:56px!important;
  padding:0 10px!important;
  font-size:11px!important;
  line-height:1!important;
  white-space:nowrap!important;
  box-sizing:border-box!important;
  border:2px solid rgba(0,0,0,.45)!important;
}
#battle .turnMini{
  grid-column:3!important;
  grid-row:1!important;
  position:static!important;
  justify-self:end!important;
  align-self:center!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:58px!important;
  height:23px!important;
  min-width:58px!important;
  padding:0!important;
  font-size:10px!important;
  line-height:1!important;
  z-index:4!important;
}
#battle .combatBottom{
  display:grid!important;
  grid-template-rows:13px 40px!important;
  gap:5px!important;
  min-height:0!important;
  height:61px!important;
  padding:6px 8px 5px!important;
  overflow:hidden!important;
  border-left:0!important;
}
#battle .combatBottom .hpbar{
  width:100%!important;
  height:13px!important;
  margin:0!important;
  overflow:hidden!important;
}
#battle .combatStats{
  display:block!important;
  height:40px!important;
  overflow:hidden!important;
  font-size:12px!important;
  line-height:1.25!important;
  white-space:normal!important;
  word-break:normal!important;
}
#battle .powerStar{
  display:none!important;
}
@media(max-width:1180px){
  #battle .battleGrid{grid-template-columns:1fr!important;}
  #battle .combat{
    height:124px!important;
    max-height:124px!important;
  }
  #battle .combatInner{
    grid-template-columns:124px minmax(0,1fr)!important;
  }
}
@media(max-width:620px){
  #battle .combatInner{
    grid-template-columns:104px minmax(0,1fr)!important;
  }
  #battle .combatArt{
    width:104px!important;
  }
  #battle .combatTop{
    grid-template-columns:minmax(0,1fr) 44px 56px!important;
    column-gap:5px!important;
  }
  #battle .combatName{
    font-size:12px!important;
  }
  #battle .turnMini{
    width:52px!important;
    min-width:52px!important;
    font-size:9px!important;
  }
  #battle .combatStats{
    font-size:11px!important;
  }
}


/* v72: home triangle image + music persistence UI polish + exact compact combat cards */

.homeChart.homeChartImage{
  width:min(440px,92vw)!important;
  height:auto!important;
  max-width:440px!important;
  margin:28px auto 0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.homeChart.homeChartImage img{
  display:block!important;
  width:100%!important;
  height:auto!important;
  filter:drop-shadow(0 0 16px rgba(155,92,255,.28)) drop-shadow(0 0 20px rgba(44,156,255,.18));
}
@media(max-width:700px){
  .homeChart.homeChartImage{width:min(340px,90vw)!important;}
}

#battle .combat,
#battle .combat::before,
#battle .combat.active::before,
#battle .combat.active::after{
  box-sizing:border-box!important;
}
#battle .combat{
  min-height:116px!important;
  height:auto!important;
  padding:0!important;
  margin-bottom:10px!important;
  background:transparent!important;
  overflow:hidden!important;
  border:4px solid #171711!important;
  box-shadow:4px 4px 0 rgba(0,0,0,.35)!important;
}
#battle .combat::before,
#battle .combat.active::before,
#battle .combat.active::after{display:none!important;content:none!important;}
#battle .combat.active{outline:3px solid var(--gold)!important; outline-offset:0!important;}
#battle .combat.dead{filter:grayscale(1) brightness(.6)!important;}
#battle .combat.type-Vacuna{border-color:var(--green)!important;background:linear-gradient(180deg,#dff7dd,#c7f0c1)!important;}
#battle .combat.type-Virus{border-color:var(--red)!important;background:linear-gradient(180deg,#f8e0e0,#f1d0d0)!important;}
#battle .combat.type-Data{border-color:var(--blue)!important;background:linear-gradient(180deg,#d9eff8,#cfe6ef)!important;}
#battle .combat.type-Unknown{border-color:var(--purple)!important;background:linear-gradient(180deg,#ece3f8,#e2d9f1)!important;}
#battle .combatInner{
  display:grid!important;
  grid-template-columns:118px minmax(0,1fr)!important;
  gap:0!important;
  align-items:stretch!important;
  min-height:108px!important;
  height:100%!important;
}
#battle .combatArt{
  min-height:108px!important;
  height:100%!important;
  background:#0f1012!important;
  border-right:2px solid rgba(0,0,0,.45)!important;
  overflow:hidden!important;
}
#battle .combatArt img{
  position:relative!important;
  top:auto!important;left:auto!important;right:auto!important;
  width:100%!important;height:100%!important;
  min-height:108px!important;
  object-fit:cover!important;
  display:block!important;
  margin:0!important;
  border:0!important;
  transform:none!important;
}
#battle .combat.enemy .combatArt img{transform:none!important;}
#battle .combatRight{
  display:grid!important;
  grid-template-rows:auto 1fr!important;
  min-width:0!important;
  background:transparent!important;
}
#battle .combatTop{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-rows:auto auto!important;
  grid-template-areas:'name level' 'attr attr'!important;
  align-items:start!important;
  row-gap:6px!important;
  padding:8px 66px 6px 10px!important;
  border:0!important;
  border-bottom:2px solid rgba(0,0,0,.35)!important;
  background:transparent!important;
  min-height:54px!important;
}
#battle .combatName{
  grid-area:name!important;
  min-width:0!important;
  font-size:clamp(11px,.95vw,16px)!important;
  line-height:1.1!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  color:#fff!important;
  text-shadow:2px 2px #111!important;
}
#battle .combatLevel{
  grid-area:level!important;
  font-size:clamp(10px,.82vw,14px)!important;
  color:#fff!important;
  text-shadow:2px 2px #111!important;
  align-self:start!important;
}
#battle .combatAttr{
  grid-area:attr!important;
  line-height:1!important;
}
#battle .combatAttr .type{
  display:inline-block!important;
  padding:4px 10px!important;
  font-size:12px!important;
  line-height:1!important;
}
#battle .turnMini{
  position:absolute!important;
  right:8px!important;
  top:8px!important;
  display:inline-block!important;
  padding:4px 8px!important;
  background:#f1cb18!important;
  border:2px solid #5d4300!important;
  color:#111!important;
  font-size:11px!important;
  font-weight:bold!important;
  line-height:1!important;
  box-shadow:2px 2px 0 rgba(0,0,0,.25)!important;
}
#battle .combatBottom{
  padding:8px 10px 9px!important;
  border:0!important;
  background:transparent!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  gap:6px!important;
}
#battle .combatBottom .hpbar{
  width:100%!important;
  height:12px!important;
  margin:0!important;
}
#battle .combatStats{
  color:#111!important;
  font-size:clamp(11px,.86vw,13px)!important;
  font-weight:bold!important;
  line-height:1.25!important;
  white-space:normal!important;
}
@media(max-width:1180px){
  #battle .combatInner{grid-template-columns:108px minmax(0,1fr)!important;}
  #battle .combatArt, #battle .combatArt img{min-height:102px!important;}
}
@media(max-width:700px){
  #battle .combatInner{grid-template-columns:96px minmax(0,1fr)!important;}
  #battle .combatArt, #battle .combatArt img{min-height:96px!important;}
  #battle .combatTop{padding-right:58px!important;}
}


/* v73 home attribute cycle + combat card fixes */
.homeAttrCycle{
  position:relative;
  width:min(520px,92vw);
  height:360px;
  margin:26px auto 0;
}
.homeAttrCycle .attrNode{
  position:absolute;
  width:132px;
  text-align:center;
  color:#fff;
}
.homeAttrCycle .attrIcon{
  width:84px;
  height:84px;
  margin:0 auto 8px;
  display:grid;
  place-items:center;
  font-size:38px;
  font-weight:bold;
  border:3px solid currentColor;
  border-radius:20px;
  background:rgba(8,8,12,.68);
  box-shadow:0 0 18px currentColor, inset 0 0 16px rgba(255,255,255,.08);
}
.homeAttrCycle .attrLabel{
  display:inline-block;
  padding:6px 14px;
  background:rgba(8,8,12,.72);
  border:2px solid currentColor;
  font-size:18px;
  font-weight:bold;
  box-shadow:0 0 10px rgba(0,0,0,.4);
}
.homeAttrCycle .virus{color:#ff4f66; left:194px; top:0;}
.homeAttrCycle .data{color:#45adff; left:18px; top:220px;}
.homeAttrCycle .vacuna{color:#52eb72; right:18px; top:220px;}
.homeAttrCycle .unknown{color:#b16bff; left:194px; top:146px;}
.homeAttrCycle .cycleArrow{
  position:absolute; display:block; height:4px; border-radius:999px;
  background:currentColor; box-shadow:0 0 12px currentColor; transform-origin:left center;
}
.homeAttrCycle .cycleArrow::after{
  content:""; position:absolute; right:-8px; top:50%; width:12px; height:12px;
  border-top:4px solid currentColor; border-right:4px solid currentColor;
  transform:translateY(-50%) rotate(45deg);
}
.homeAttrCycle .virusToData{color:#ff4f66; left:114px; top:176px; width:136px; transform:rotate(132deg);}
.homeAttrCycle .dataToVacuna{color:#45adff; left:132px; top:302px; width:246px; transform:rotate(0deg);}
.homeAttrCycle .vacunaToVirus{color:#52eb72; left:374px; top:292px; width:136px; transform:rotate(-122deg);}
.homeAttrCycle .unkToVirus{color:#b16bff; left:255px; top:150px; width:4px; height:50px; background:linear-gradient(#b16bff,#f1d4ff);}
.homeAttrCycle .unkToVirus::after{right:-4px;}
.homeAttrCycle .unkToData{color:#b16bff; left:160px; top:222px; width:78px; transform:rotate(151deg);}
.homeAttrCycle .unkToVacuna{color:#b16bff; left:284px; top:220px; width:78px; transform:rotate(30deg);}

#battle .battlePanel{padding:12px!important;}
#battle .combat{
  min-height:auto!important;
  background:transparent!important;
  border:none!important;
  box-shadow:none!important;
  padding:0!important;
  margin:0 0 12px!important;
}
#battle .combat::before{display:none!important;}
#battle .combat.active{outline:3px solid #ffd91d!important; outline-offset:2px!important;}
#battle .combatInner{
  display:grid!important;
  grid-template-columns:120px minmax(0,1fr)!important;
  gap:0!important;
  align-items:stretch!important;
  min-height:110px!important;
  border:3px solid #0d0d10!important;
  box-shadow:4px 4px 0 rgba(0,0,0,.35)!important;
  overflow:hidden!important;
  background:#cdebe3!important;
}
#battle .combat.type-Virus .combatInner{background:#ead4d6!important; border-color:#cf3346!important;}
#battle .combat.type-Data .combatInner{background:#cae8ea!important; border-color:#2c9cff!important;}
#battle .combat.type-Vacuna .combatInner{background:#d7edcf!important; border-color:#35db54!important;}
#battle .combat.type-Unknown .combatInner{background:#e5daf1!important; border-color:#9b5cff!important;}
#battle .combatArt{
  min-height:110px!important;
  height:100%!important;
  background:#131313!important;
  border-right:3px solid rgba(0,0,0,.55)!important;
}
#battle .combatArt img{
  position:static!important;
  display:block!important;
  width:100%!important;
  min-height:110px!important;
  height:110px!important;
  object-fit:cover!important;
  border:0!important;
  margin:0!important;
  transform:none!important;
}
#battle .combatRight{
  position:relative!important;
  display:grid!important;
  grid-template-rows:auto 1fr!important;
  min-width:0!important;
  background:transparent!important;
}
#battle .combatTop{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto auto!important;
  grid-template-areas:
    "name level turn"
    "attr attr attr"!important;
  gap:4px 10px!important;
  align-items:start!important;
  padding:8px 10px 6px!important;
  border-bottom:2px solid rgba(0,0,0,.3)!important;
  background:rgba(255,255,255,.08)!important;
}
#battle .combatName{
  grid-area:name!important;
  display:block!important;
  min-width:0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  color:#fff!important;
  text-shadow:2px 2px #111!important;
  font-size:clamp(14px,1vw,20px)!important;
  line-height:1.05!important;
}
#battle .combatLevel{
  grid-area:level!important;
  font-weight:bold!important;
  color:#fff!important;
  text-shadow:2px 2px #111!important;
  align-self:start!important;
  white-space:nowrap!important;
}
#battle .combatAttr{grid-area:attr!important; display:block!important; min-height:24px!important;}
#battle .combatAttr .type{display:inline-block!important; min-width:84px!important; text-align:center!important; padding:4px 10px!important; font-size:12px!important;}
#battle .turnMini{
  grid-area:turn!important;
  position:static!important;
  margin:0!important;
  justify-self:end!important;
  align-self:start!important;
  display:inline-flex!important;
  align-items:center!important;
  height:28px!important;
  padding:0 10px!important;
  box-shadow:2px 2px 0 rgba(0,0,0,.25)!important;
}
#battle .combatBottom{
  padding:8px 10px 10px!important;
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  gap:6px!important;
  background:transparent!important;
  border:0!important;
}
#battle .combatBottom .hpbar{width:100%!important; height:12px!important; margin:0!important; border:2px solid #111!important;}
#battle .combatStats{
  color:#111!important;
  font-size:clamp(11px,.9vw,13px)!important;
  font-weight:bold!important;
  line-height:1.25!important;
  white-space:normal!important;
}
#battle .combat.dead .combatInner{filter:grayscale(1) brightness(.78)!important;}
#battle .combat.dead .turnMini{display:none!important;}

@media(max-width:900px){
  .homeAttrCycle{width:min(420px,94vw);height:330px;}
  .homeAttrCycle .attrNode{width:112px;}
  .homeAttrCycle .attrIcon{width:74px;height:74px;font-size:34px;}
  .homeAttrCycle .virus,.homeAttrCycle .unknown{left:154px;}
  .homeAttrCycle .data{left:0;top:215px;}
  .homeAttrCycle .vacuna{right:0;top:215px;}
  .homeAttrCycle .virusToData{left:96px;top:165px;width:118px;}
  .homeAttrCycle .dataToVacuna{left:110px;top:292px;width:210px;}
  .homeAttrCycle .vacunaToVirus{left:310px;top:286px;width:118px;}
  .homeAttrCycle .unkToVirus{left:210px;top:145px;height:44px;}
  .homeAttrCycle .unkToData{left:133px;top:214px;width:68px;}
  .homeAttrCycle .unkToVacuna{left:245px;top:212px;width:68px;}
}
@media(max-width:700px){
  #battle .combatInner{grid-template-columns:96px minmax(0,1fr)!important; min-height:96px!important;}
  #battle .combatArt img{height:96px!important; min-height:96px!important;}
  #battle .combatTop{grid-template-columns:minmax(0,1fr) auto!important; grid-template-areas:"name turn" "level attr"!important;}
  #battle .combatAttr .type{min-width:72px!important;}
}

/* v75 panel polish: global panel sizing + battle card cleanup */
.layout{
  grid-template-columns:210px minmax(560px,760px) 210px!important;
  gap:16px!important;
}
.panel{
  padding:16px!important;
}
.mapPanel{padding:12px!important;}
.route{height:930px!important;}
.teamEntry,
.itemEntry{
  padding:10px!important;
}
.teamEntry strong{
  line-height:1.2!important;
  word-break:break-word!important;
}

#battle .battleGrid{
  grid-template-columns:minmax(320px,1fr) 280px minmax(320px,1fr)!important;
  gap:14px!important;
}
#battle .battlePanel{
  min-height:560px!important;
  padding:12px!important;
}
#battle .combat{
  margin:0 0 14px!important;
}
#battle .combatInner{
  grid-template-columns:118px minmax(0,1fr)!important;
  min-height:110px!important;
  height:auto!important;
  border-width:3px!important;
  border-radius:0!important;
}
#battle .combatArt{
  min-height:110px!important;
  height:110px!important;
}
#battle .combatArt img{
  width:100%!important;
  height:110px!important;
  min-height:110px!important;
  object-fit:cover!important;
}
#battle .combatRight{
  display:grid!important;
  grid-template-rows:auto 1fr!important;
  min-width:0!important;
}
#battle .combatTop{
  grid-template-columns:minmax(0,1fr) auto auto!important;
  grid-template-areas:"name level turn" "attr attr turn"!important;
  gap:4px 8px!important;
  padding:8px 10px 4px!important;
  background:transparent!important;
  border-bottom:0!important; /* remove ugly horizontal line */
  align-items:start!important;
}
#battle .combatName{
  font-size:clamp(13px,1vw,18px)!important;
  line-height:1.05!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
#battle .combatLevel{
  font-size:12px!important;
  line-height:1!important;
  padding-top:1px!important;
}
#battle .combatAttr{
  min-height:22px!important;
  padding-top:1px!important;
}
#battle .combatAttr .type{
  min-width:72px!important;
  max-width:100%!important;
  padding:3px 8px!important;
  font-size:12px!important;
  line-height:1.1!important;
}
#battle .turnMini{
  height:26px!important;
  padding:0 9px!important;
  font-size:11px!important;
  line-height:1!important;
}
#battle .combatBottom{
  padding:4px 10px 8px!important;
  gap:5px!important;
  justify-content:flex-start!important;
  background:transparent!important;
}
#battle .combatBottom .hpbar{
  height:12px!important;
  width:100%!important;
}
#battle .combatStats{
  font-size:clamp(11px,.9vw,13px)!important;
  line-height:1.22!important;
  overflow-wrap:anywhere!important;
}
#battle .combat.type-Virus .combatInner{box-shadow:0 0 0 3px rgba(239,51,73,.18),4px 4px 0 rgba(0,0,0,.35)!important;}
#battle .combat.type-Data .combatInner{box-shadow:0 0 0 3px rgba(44,156,255,.18),4px 4px 0 rgba(0,0,0,.35)!important;}
#battle .combat.type-Vacuna .combatInner{box-shadow:0 0 0 3px rgba(53,219,84,.18),4px 4px 0 rgba(0,0,0,.35)!important;}
#battle .combat.type-Unknown .combatInner{box-shadow:0 0 0 3px rgba(155,92,255,.18),4px 4px 0 rgba(0,0,0,.35)!important;}

@media(max-width:1000px){
  .layout{grid-template-columns:200px minmax(420px,1fr) 200px!important;}
  #battle .battleGrid{grid-template-columns:minmax(280px,1fr) 250px minmax(280px,1fr)!important;}
}
@media(max-width:700px){
  #battle .combatInner{grid-template-columns:96px minmax(0,1fr)!important;min-height:96px!important;}
  #battle .combatArt,#battle .combatArt img{height:96px!important;min-height:96px!important;}
  #battle .combatTop{grid-template-columns:minmax(0,1fr) auto!important;grid-template-areas:"name turn" "level attr"!important;}
  #battle .combatAttr .type{min-width:68px!important;font-size:11px!important;}
}


/* v76 final layout refresh: left team panel clearer + bigger battle arena + chroma home cycle */
.homeChart.homeChartImage{
  width:min(430px,92vw)!important;
  max-width:430px!important;
  margin:26px auto 0!important;
}
.homeChart.homeChartImage img{
  width:100%!important;
  height:auto!important;
  display:block!important;
  filter:drop-shadow(0 0 12px rgba(255,72,93,.22)) drop-shadow(0 0 16px rgba(68,176,255,.18)) drop-shadow(0 0 14px rgba(151,92,255,.22));
}

/* Map / side team panel */
.layout{
  grid-template-columns:248px minmax(560px,760px) 230px!important;
  gap:16px!important;
}
#map .panel:first-child{
  min-width:248px!important;
}
#mapTeam{
  display:grid!important;
  gap:12px!important;
}
#map .teamEntry{
  grid-template-columns:72px minmax(0,1fr) 14px!important;
  gap:10px!important;
  min-height:118px!important;
  align-items:start!important;
  padding:10px!important;
}
#map .teamEquipIcon{
  width:72px!important;
  height:72px!important;
}
#map .teamInfo{
  min-width:0!important;
  display:flex!important;
  flex-direction:column!important;
  gap:4px!important;
}
#map .teamNameBtn{
  font-size:14px!important;
  line-height:1.15!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  margin:0!important;
}
#map .teamLvTxt,
#map .teamHpTxt,
#map .teamItemTxt{
  display:block!important;
  font-size:12px!important;
  line-height:1.25!important;
  color:#d7d0ba!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}
#map .teamHpTxt{color:#f4edd4!important;}
#map .teamItemTxt{color:#b8b39f!important;}
#map .teamEntry .hpbar{
  height:12px!important;
  margin:2px 0 0!important;
}

/* Battle layout: center arena bigger, combat cards cleaner and readable */
#battle .battleGrid{
  grid-template-columns:minmax(280px,0.94fr) minmax(420px,1.34fr) minmax(280px,0.94fr)!important;
  gap:16px!important;
  align-items:start!important;
}
#battle .battlePanel{
  min-height:540px!important;
  padding:12px!important;
}
#battle .mid{
  gap:10px!important;
}
#battle .arena{
  height:430px!important;
}
#battle .fighterWrap{
  width:47%!important;
  height:82%!important;
}
#battle .fighter{
  max-width:96%!important;
  max-height:96%!important;
}
#battle .combat{
  min-height:132px!important;
  margin:0 0 14px!important;
  padding:8px!important;
  overflow:hidden!important;
  background:transparent!important;
}
#battle .combat::before,
#battle .combat.active::before{
  display:none!important; /* remove the ugly horizontal/background line */
}
#battle .combatInner{
  display:grid!important;
  grid-template-columns:minmax(128px,36%) minmax(0,1fr)!important;
  gap:0!important;
  min-height:114px!important;
  overflow:hidden!important;
  background:rgba(238,247,255,.92)!important;
  border:3px solid #203647!important;
  box-shadow:4px 4px 0 rgba(0,0,0,.35)!important;
}
#battle .combatArt{
  min-height:114px!important;
  height:114px!important;
  background:#111!important;
}
#battle .combatArt img{
  width:100%!important;
  height:114px!important;
  min-height:114px!important;
  object-fit:cover!important;
  display:block!important;
  border:0!important;
}
#battle .combat.enemy .combatArt img{transform:none!important;}
#battle .combatRight{
  display:grid!important;
  grid-template-rows:auto 1fr!important;
  min-width:0!important;
}
#battle .combatTop{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto auto!important;
  grid-template-areas:
    "name level turn"
    "attr attr turn"!important;
  gap:4px 8px!important;
  align-items:start!important;
  padding:8px 10px 6px!important;
  border-bottom:0!important;
  background:transparent!important;
}
#battle .combatName{
  grid-area:name!important;
  font-size:14px!important;
  line-height:1.05!important;
  font-weight:bold!important;
  color:#ffffff!important;
  text-shadow:2px 2px 0 #111!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
#battle .combatLevel{
  grid-area:level!important;
  font-size:12px!important;
  line-height:1!important;
  color:#f0f0f0!important;
  text-shadow:1px 1px 0 #111!important;
  justify-self:end!important;
}
#battle .combatAttr{
  grid-area:attr!important;
  min-height:24px!important;
  display:block!important;
}
#battle .combatAttr .type{
  min-width:78px!important;
  padding:4px 10px!important;
  font-size:12px!important;
  line-height:1!important;
  text-align:center!important;
}
#battle .turnMini{
  grid-area:turn!important;
  align-self:start!important;
  justify-self:end!important;
  height:26px!important;
  min-width:54px!important;
  padding:0 9px!important;
  font-size:11px!important;
  line-height:24px!important;
}
#battle .combatBottom{
  display:flex!important;
  flex-direction:column!important;
  justify-content:flex-start!important;
  gap:6px!important;
  padding:0 10px 10px!important;
  background:transparent!important;
}
#battle .combatBottom .hpbar{
  width:100%!important;
  height:12px!important;
  margin:0!important;
  border:2px solid #111!important;
}
#battle .combatStats{
  font-size:12px!important;
  line-height:1.25!important;
  color:#111!important;
  overflow-wrap:anywhere!important;
}
#battle .combat.type-Virus .combatInner{border-color:#9b2433!important; box-shadow:0 0 0 3px rgba(239,51,73,.18),4px 4px 0 rgba(0,0,0,.35)!important;}
#battle .combat.type-Data .combatInner{border-color:#1d6bb8!important; box-shadow:0 0 0 3px rgba(44,156,255,.18),4px 4px 0 rgba(0,0,0,.35)!important;}
#battle .combat.type-Vacuna .combatInner{border-color:#208b3e!important; box-shadow:0 0 0 3px rgba(53,219,84,.18),4px 4px 0 rgba(0,0,0,.35)!important;}
#battle .combat.type-Unknown .combatInner{border-color:#6a37b2!important; box-shadow:0 0 0 3px rgba(155,92,255,.18),4px 4px 0 rgba(0,0,0,.35)!important;}
#battle .combat.type-Virus .combatRight{background:linear-gradient(180deg,rgba(255,235,235,.96),rgba(250,214,214,.92))!important;}
#battle .combat.type-Data .combatRight{background:linear-gradient(180deg,rgba(232,246,255,.96),rgba(208,236,255,.92))!important;}
#battle .combat.type-Vacuna .combatRight{background:linear-gradient(180deg,rgba(234,255,237,.96),rgba(214,248,219,.92))!important;}
#battle .combat.type-Unknown .combatRight{background:linear-gradient(180deg,rgba(244,236,255,.96),rgba(229,217,255,.92))!important;}
#battle .combat.active{outline:4px solid rgba(255,217,29,.85)!important;}
#battle .combat.active::after{top:8px!important; right:8px!important;}
#battle .log{height:180px!important;}

@media(max-width:1200px){
  .layout{grid-template-columns:230px minmax(420px,1fr) 220px!important;}
  #battle .battleGrid{grid-template-columns:minmax(260px,0.9fr) minmax(360px,1.2fr) minmax(260px,0.9fr)!important;}
  #battle .arena{height:390px!important;}
}
@media(max-width:980px){
  .layout{grid-template-columns:1fr!important;}
  #battle .battleGrid{grid-template-columns:1fr!important;}
  #battle .arena{height:340px!important;}
}
@media(max-width:700px){
  #map .teamEntry{grid-template-columns:64px minmax(0,1fr) 14px!important;}
  #map .teamEquipIcon{width:64px!important;height:64px!important;}
  #battle .combatInner{grid-template-columns:104px minmax(0,1fr)!important;}
  #battle .combatArt,#battle .combatArt img{height:104px!important;min-height:104px!important;}
  #battle .combatTop{grid-template-columns:minmax(0,1fr) auto!important;grid-template-areas:"name turn" "level attr"!important;}
}


/* v77 PC-only layout: 1920x1080 desktop priority */
.app{width:min(1840px,calc(100% - 36px))!important;}
.homeChart.homeChartImage{width:min(500px,34vw)!important;max-width:500px!important;margin:24px auto 0!important;}
.homeChart.homeChartImage img{display:block!important;width:100%!important;height:auto!important;background:transparent!important;filter:drop-shadow(0 0 10px rgba(255,72,93,.24)) drop-shadow(0 0 12px rgba(44,156,255,.18)) drop-shadow(0 0 14px rgba(155,92,255,.22))!important;}
#map .layout{grid-template-columns:330px 760px 250px!important;justify-content:center!important;gap:22px!important;}
#map .panel:first-child{width:330px!important;min-width:330px!important;}
#map .mapPanel{width:760px!important;}
#map .panel:last-child{width:250px!important;}
#map .teamEntry{grid-template-columns:82px minmax(0,1fr) 16px!important;min-height:128px!important;padding:12px!important;gap:12px!important;}
#map .teamEquipIcon{width:82px!important;height:82px!important;}
#map .teamNameBtn{font-size:15px!important;line-height:1.14!important;max-height:2.3em!important;overflow:hidden!important;}
#map .teamLvTxt,#map .teamHpTxt,#map .teamItemTxt{font-size:12px!important;line-height:1.22!important;}
#map .teamItemTxt{color:#d1c9aa!important;}
#battle{--battle-max:1840px;--arena-h:500px;--lower-h:360px;--card-h:76px;}
#battle .title.battleTitle{display:none!important;}
#battle .battleShell{width:min(var(--battle-max),calc(100vw - 36px))!important;margin:0 auto!important;display:grid!important;grid-template-rows:auto var(--arena-h) var(--lower-h)!important;gap:12px!important;}
#battle .battleTopBar{display:flex!important;justify-content:space-between!important;align-items:center!important;min-height:46px!important;padding:6px 10px!important;background:rgba(22,21,16,.74)!important;border:3px solid #050509!important;box-shadow:4px 4px 0 rgba(0,0,0,.45)!important;}
#battle .battleTopBar h2{margin:0!important;color:var(--gold)!important;font-size:24px!important;line-height:1!important;}
#battle .battleTopBar p{margin:3px 0 0!important;color:#c8c0a2!important;font-size:12px!important;}
#battle .battleArenaPanel{position:relative!important;min-height:var(--arena-h)!important;}
#battle .arena{width:100%!important;height:var(--arena-h)!important;min-height:var(--arena-h)!important;border:4px solid #050509!important;box-shadow:6px 6px 0 rgba(0,0,0,.55)!important;}
#battle .fighterWrap{width:46%!important;height:86%!important;bottom:18px!important;}
#battle .fighterWrap.player{left:3%!important;}
#battle .fighterWrap.enemy{right:3%!important;}
#battle .fighter{max-width:96%!important;max-height:96%!important;}
#battle .battleLower{display:grid!important;grid-template-columns:minmax(500px,1fr) 360px minmax(500px,1fr)!important;gap:16px!important;min-height:var(--lower-h)!important;}
#battle .rosterPanel,#battle .battleCenterPanel{min-height:var(--lower-h)!important;height:var(--lower-h)!important;background:var(--panel)!important;border:3px solid #050509!important;box-shadow:5px 5px 0 rgba(0,0,0,.55)!important;padding:10px!important;overflow:hidden!important;}
#battle .rosterPanel h3{height:22px!important;margin:0 0 8px!important;color:#d8d0bc!important;font-size:16px!important;line-height:22px!important;}
#battle .combatList{display:grid!important;grid-template-rows:repeat(4,var(--card-h))!important;gap:8px!important;min-height:calc(var(--card-h) * 4 + 24px)!important;}
#battle .combat{min-height:var(--card-h)!important;height:var(--card-h)!important;padding:0!important;margin:0!important;overflow:visible!important;background:transparent!important;border:0!important;box-shadow:none!important;}
#battle .combat::before,#battle .combat.active::before,#battle .combat.active::after{display:none!important;content:none!important;}
#battle .combat.active{outline:3px solid rgba(255,217,29,.9)!important;outline-offset:2px!important;}
#battle .combatInner{display:grid!important;grid-template-columns:86px minmax(0,1fr)!important;gap:0!important;min-height:var(--card-h)!important;height:var(--card-h)!important;border:3px solid #203647!important;box-shadow:3px 3px 0 rgba(0,0,0,.35)!important;overflow:hidden!important;}
#battle .combatArt{width:86px!important;min-width:86px!important;height:100%!important;min-height:var(--card-h)!important;border-right:3px solid rgba(0,0,0,.55)!important;background:#101010!important;}
#battle .combatArt img{width:100%!important;height:100%!important;min-height:var(--card-h)!important;object-fit:cover!important;display:block!important;border:0!important;margin:0!important;transform:none!important;}
#battle .combat.enemy .combatArt img{transform:none!important;}
#battle .combatRight{display:grid!important;grid-template-rows:34px 1fr!important;min-width:0!important;}
#battle .combatTop{display:grid!important;grid-template-columns:minmax(0,1fr) auto 58px!important;grid-template-areas:"name level turn" "attr attr turn"!important;align-items:start!important;gap:2px 8px!important;padding:5px 8px 2px!important;border:0!important;border-bottom:0!important;background:transparent!important;}
#battle .combatName{grid-area:name!important;display:block!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;color:#fff!important;text-shadow:2px 2px 0 #111!important;font-size:13px!important;line-height:1.05!important;font-weight:bold!important;}
#battle .combatLevel{grid-area:level!important;align-self:start!important;color:#fff!important;text-shadow:1px 1px 0 #111!important;font-size:11px!important;line-height:1!important;white-space:nowrap!important;}
#battle .combatAttr{grid-area:attr!important;min-height:16px!important;line-height:1!important;}
#battle .combatAttr .type{min-width:62px!important;padding:2px 7px!important;font-size:10px!important;line-height:1!important;}
#battle .turnMini{grid-area:turn!important;position:static!important;align-self:start!important;justify-self:end!important;width:54px!important;min-width:54px!important;height:22px!important;padding:0!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;font-size:10px!important;line-height:1!important;}
#battle .combatBottom{display:grid!important;grid-template-rows:12px 1fr!important;gap:3px!important;padding:1px 8px 5px!important;background:transparent!important;border:0!important;overflow:hidden!important;}
#battle .combatBottom .hpbar{width:100%!important;height:11px!important;margin:0!important;border:2px solid #111!important;}
#battle .combatStats{color:#111!important;font-size:11px!important;line-height:1.1!important;font-weight:bold!important;overflow:hidden!important;white-space:normal!important;}
#battle .combat.type-Virus .combatInner{border-color:#9b2433!important;background:linear-gradient(180deg,#ffe7e7,#f5c8c8)!important;}
#battle .combat.type-Data .combatInner{border-color:#1d6bb8!important;background:linear-gradient(180deg,#e5f7ff,#c7e8ff)!important;}
#battle .combat.type-Vacuna .combatInner{border-color:#208b3e!important;background:linear-gradient(180deg,#e8ffeb,#c9f2cf)!important;}
#battle .combat.type-Unknown .combatInner{border-color:#6a37b2!important;background:linear-gradient(180deg,#f0e7ff,#dacdff)!important;}
#battle .emptyCombat .combatInner{border-color:#444!important;background:rgba(25,25,20,.55)!important;opacity:.55!important;}
#battle .emptyArt{display:grid!important;place-items:center!important;color:#777!important;font-size:24px!important;}
#battle .emptyRight{display:flex!important;flex-direction:column!important;justify-content:center!important;padding:0 10px!important;}
#battle .emptySlotTitle{color:#aaa58d!important;font-size:12px!important;font-weight:bold!important;}
#battle .emptySlotSub{color:#777!important;font-size:10px!important;margin-top:3px!important;}
#battle .battleCenterPanel{display:grid!important;grid-template-rows:58px 1fr!important;gap:10px!important;}
#battle .cmd{display:grid!important;grid-template-columns:1fr!important;gap:0!important;}
#battle #fight{min-height:54px!important;font-size:18px!important;letter-spacing:1px!important;}
#battle .log{height:auto!important;min-height:0!important;overflow:auto!important;font-size:12px!important;line-height:1.45!important;padding:10px!important;}
@media(max-width:1300px){#battle{--arena-h:430px;--lower-h:360px;--card-h:76px;}#battle .battleLower{grid-template-columns:minmax(420px,1fr) 320px minmax(420px,1fr)!important;}#map .layout{grid-template-columns:300px 720px 230px!important;}#map .mapPanel{width:720px!important;}#map .panel:first-child{width:300px!important;min-width:300px!important;}}


/* v79 attribute cycle fix: no chroma image, arrows are real SVG and directions are correct */
.homeChart.homeChartImage{
  display:none!important;
}
.homeTypeCycle{
  position:relative!important;
  width:520px!important;
  height:360px!important;
  margin:26px auto 0!important;
  background:transparent!important;
  overflow:visible!important;
}
.homeTypeCycle .cycleSvg{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  overflow:visible!important;
  background:transparent!important;
  pointer-events:none!important;
}
.homeTypeCycle .cycleLine{
  fill:none!important;
  stroke-width:5!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
  opacity:.96!important;
  filter:drop-shadow(0 0 6px currentColor);
}
.homeTypeCycle .redLine{stroke:#ff4f66!important;color:#ff4f66!important;}
.homeTypeCycle .blueLine{stroke:#45adff!important;color:#45adff!important;}
.homeTypeCycle .greenLine{stroke:#52eb72!important;color:#52eb72!important;}
.homeTypeCycle .unknownLine{
  stroke:#b16bff!important;
  color:#b16bff!important;
  stroke-width:3.5!important;
  opacity:.9!important;
}
.homeTypeCycle .typeNode{
  position:absolute!important;
  width:104px!important;
  height:112px!important;
  background:rgba(8,8,14,.78)!important;
  border:3px solid currentColor!important;
  box-shadow:
    0 0 14px currentColor,
    inset 0 0 14px rgba(255,255,255,.06),
    4px 4px 0 rgba(0,0,0,.36)!important;
  display:grid!important;
  grid-template-rows:66px 1fr!important;
  align-items:center!important;
  justify-items:center!important;
  color:#fff!important;
}
.homeTypeCycle .typeIcon{
  width:60px!important;
  height:60px!important;
  display:grid!important;
  place-items:center!important;
  margin-top:8px!important;
  font-size:32px!important;
  line-height:1!important;
  color:currentColor!important;
  text-shadow:0 0 10px currentColor!important;
}
.homeTypeCycle .typeName{
  width:100%!important;
  height:34px!important;
  display:grid!important;
  place-items:center!important;
  border-top:2px solid currentColor!important;
  font-size:16px!important;
  font-weight:bold!important;
  letter-spacing:.5px!important;
  text-shadow:0 0 8px currentColor!important;
  color:currentColor!important;
}
.homeTypeCycle .virusNode{left:208px!important;top:0!important;color:#ff4f66!important;}
.homeTypeCycle .dataNode{left:58px!important;top:230px!important;color:#45adff!important;}
.homeTypeCycle .vacunaNode{right:58px!important;top:230px!important;color:#52eb72!important;}
.homeTypeCycle .unknownNode{
  left:208px!important;
  top:138px!important;
  width:104px!important;
  height:102px!important;
  color:#b16bff!important;
  z-index:3!important;
}
.homeTypeCycle .unknownNode .typeIcon{
  height:54px!important;
  font-size:30px!important;
}
.homeTypeCycle .unknownNode .typeName{
  height:32px!important;
  font-size:13px!important;
}
@media(max-width:800px){
  .homeTypeCycle{
    transform:scale(.82)!important;
    transform-origin:top center!important;
    margin-bottom:-50px!important;
  }
}


/* v80: battle screen redesigned from user sketch
   Top: battle arena.
   Center: SKIP.
   Bottom: 2x2 allies and 2x2 enemies.
   Removed visible turn/damage log panel to reuse that space.
*/
#battle{
  --battleW: min(1840px, calc(100vw - 44px));
  --arenaH: 560px;
  --skipH: 58px;
  --lowerH: 330px;
}
#battle .title.battleTitle,
#battle .battleTopBar,
#battle .battleCenterPanel{
  display:none!important;
}
#battle .v80BattleShell{
  width:var(--battleW)!important;
  min-height:calc(100vh - 24px)!important;
  margin:10px auto 0!important;
  display:grid!important;
  grid-template-rows:var(--arenaH) var(--skipH) var(--lowerH)!important;
  gap:10px!important;
}
#battle .battleArenaPanel{
  position:relative!important;
  width:100%!important;
  height:var(--arenaH)!important;
  min-height:var(--arenaH)!important;
  background:var(--panel)!important;
  border:4px solid #050509!important;
  box-shadow:6px 6px 0 rgba(0,0,0,.58)!important;
  padding:10px!important;
}
#battle .battleArenaTop{
  position:absolute!important;
  z-index:8!important;
  top:14px!important;
  left:18px!important;
  right:18px!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:space-between!important;
  pointer-events:auto!important;
}
#battle .battleArenaTop h2{
  margin:0!important;
  color:var(--gold)!important;
  font-size:24px!important;
  line-height:1!important;
  text-shadow:2px 2px 0 #000!important;
}
#battle .battleArenaTop p{
  margin:4px 0 0!important;
  color:#d5ceb5!important;
  font-size:12px!important;
  text-shadow:1px 1px 0 #000!important;
}
#battle .arena{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  border:3px solid #0a0f20!important;
  box-shadow:none!important;
  background:radial-gradient(circle at 50% 60%,rgba(84,193,255,.18) 0 100px,transparent 170px),linear-gradient(180deg,#081855 0%,#10308f 58%,#09133e 100%)!important;
}
#battle .fighterWrap{
  width:46%!important;
  height:88%!important;
  bottom:18px!important;
}
#battle .fighterWrap.player{left:4%!important;}
#battle .fighterWrap.enemy{right:4%!important;}
#battle .fighter{
  max-width:98%!important;
  max-height:98%!important;
}
#battle .battleSkipRow{
  display:grid!important;
  place-items:center!important;
  width:100%!important;
  height:var(--skipH)!important;
}
#battle .battleSkipRow #fight{
  width:300px!important;
  height:48px!important;
  min-height:48px!important;
  font-size:18px!important;
  letter-spacing:1px!important;
  padding:0!important;
}
#battle .battleGrid2x2{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:36px!important;
  width:100%!important;
  height:var(--lowerH)!important;
}
#battle .rosterPanel{
  height:var(--lowerH)!important;
  min-height:var(--lowerH)!important;
  background:var(--panel)!important;
  border:4px solid #050509!important;
  box-shadow:5px 5px 0 rgba(0,0,0,.58)!important;
  padding:10px!important;
  overflow:hidden!important;
}
#battle .rosterPanel h3{
  height:24px!important;
  margin:0 0 8px!important;
  color:#d8d0bc!important;
  font-size:16px!important;
  line-height:24px!important;
}
#battle .combatListGrid{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  grid-template-rows:1fr 1fr!important;
  gap:10px!important;
  height:calc(100% - 32px)!important;
}
#battle .combat{
  min-height:0!important;
  height:100%!important;
  width:100%!important;
  padding:0!important;
  margin:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
#battle .combat::before,
#battle .combat.active::before,
#battle .combat.active::after{
  display:none!important;
  content:none!important;
}
#battle .combat.active{
  outline:4px solid rgba(255,217,29,.9)!important;
  outline-offset:2px!important;
}
#battle .combatInner{
  display:grid!important;
  grid-template-columns:112px minmax(0,1fr)!important;
  gap:0!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  border:3px solid #203647!important;
  box-shadow:3px 3px 0 rgba(0,0,0,.35)!important;
}
#battle .combatArt{
  width:112px!important;
  min-width:112px!important;
  height:100%!important;
  min-height:0!important;
  background:#101010!important;
  border-right:3px solid rgba(0,0,0,.55)!important;
}
#battle .combatArt img{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  object-fit:cover!important;
  display:block!important;
  border:0!important;
  margin:0!important;
  transform:none!important;
}
#battle .combat.enemy .combatArt img{
  transform:none!important;
}
#battle .combatRight{
  display:grid!important;
  grid-template-rows:auto 1fr!important;
  min-width:0!important;
}
#battle .combatTop{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto auto!important;
  grid-template-areas:"name level turn" "attr attr turn"!important;
  gap:3px 8px!important;
  align-items:start!important;
  padding:8px 9px 5px!important;
  background:transparent!important;
  border:0!important;
}
#battle .combatName{
  grid-area:name!important;
  display:block!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  color:#fff!important;
  text-shadow:2px 2px 0 #111!important;
  font-size:14px!important;
  line-height:1.05!important;
  font-weight:bold!important;
}
#battle .combatLevel{
  grid-area:level!important;
  color:#fff!important;
  text-shadow:1px 1px 0 #111!important;
  font-size:12px!important;
  line-height:1!important;
  white-space:nowrap!important;
}
#battle .combatAttr{
  grid-area:attr!important;
  min-height:21px!important;
  line-height:1!important;
}
#battle .combatAttr .type{
  min-width:70px!important;
  padding:3px 8px!important;
  font-size:11px!important;
  line-height:1!important;
  text-align:center!important;
}
#battle .turnMini{
  grid-area:turn!important;
  position:static!important;
  align-self:start!important;
  justify-self:end!important;
  width:54px!important;
  min-width:54px!important;
  height:23px!important;
  padding:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  font-size:10px!important;
  line-height:1!important;
}
#battle .combatBottom{
  display:grid!important;
  grid-template-rows:13px 1fr!important;
  gap:5px!important;
  padding:0 9px 8px!important;
  background:transparent!important;
  border:0!important;
  overflow:hidden!important;
}
#battle .combatBottom .hpbar{
  width:100%!important;
  height:12px!important;
  margin:0!important;
  border:2px solid #111!important;
}
#battle .combatStats{
  color:#111!important;
  font-size:12px!important;
  line-height:1.18!important;
  font-weight:bold!important;
  overflow:hidden!important;
  white-space:normal!important;
}
#battle .combat.type-Virus .combatInner{border-color:#9b2433!important;background:linear-gradient(180deg,#ffe7e7,#f5c8c8)!important;}
#battle .combat.type-Data .combatInner{border-color:#1d6bb8!important;background:linear-gradient(180deg,#e5f7ff,#c7e8ff)!important;}
#battle .combat.type-Vacuna .combatInner{border-color:#208b3e!important;background:linear-gradient(180deg,#e8ffeb,#c9f2cf)!important;}
#battle .combat.type-Unknown .combatInner{border-color:#6a37b2!important;background:linear-gradient(180deg,#f0e7ff,#dacdff)!important;}
#battle .emptyCombat .combatInner{
  border-color:#444!important;
  background:rgba(25,25,20,.55)!important;
  opacity:.5!important;
}
#battle .emptyArt{
  display:grid!important;
  place-items:center!important;
  color:#777!important;
  font-size:30px!important;
}
#battle .emptyRight{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  padding:0 12px!important;
}
#battle .emptySlotTitle{
  color:#aaa58d!important;
  font-size:13px!important;
  font-weight:bold!important;
}
#battle .emptySlotSub{
  color:#777!important;
  font-size:11px!important;
  margin-top:4px!important;
}
#battle .battleLogHidden{
  display:none!important;
}

/* PC focus only. Basic guard for smaller desktop windows. */
@media(max-width:1400px){
  #battle{--arenaH:480px;--lowerH:320px;}
  #battle .combatInner{grid-template-columns:98px minmax(0,1fr)!important;}
  #battle .battleGrid2x2{gap:22px!important;}
  #battle .combatName{font-size:13px!important;}
  #battle .combatStats{font-size:11px!important;}
}


/* v81 fixes: stretch the home attribute triangle while keeping same nodes/icons */
.homeTypeCycle{
  width:640px!important;
  height:420px!important;
  margin:26px auto 4px!important;
}
.homeTypeCycle .cycleSvg{
  width:100%!important;
  height:100%!important;
}
.homeTypeCycle .cycleLine{
  stroke-width:6!important;
}
.homeTypeCycle .unknownLine{
  stroke-width:4!important;
}
.homeTypeCycle .typeNode{
  width:112px!important;
  height:118px!important;
}
.homeTypeCycle .typeIcon{
  width:64px!important;
  height:64px!important;
  font-size:34px!important;
}
.homeTypeCycle .typeName{
  height:36px!important;
  font-size:17px!important;
}
.homeTypeCycle .virusNode{left:264px!important;top:0!important;}
.homeTypeCycle .dataNode{left:86px!important;top:286px!important;}
.homeTypeCycle .vacunaNode{right:86px!important;top:286px!important;}
.homeTypeCycle .unknownNode{
  left:264px!important;
  top:168px!important;
  width:112px!important;
  height:108px!important;
}
.homeTypeCycle .unknownNode .typeIcon{height:58px!important;font-size:32px!important;}
.homeTypeCycle .unknownNode .typeName{height:34px!important;font-size:14px!important;}

/* v81 fixes: true 2x2 battle grids, one big rectangle split into four cells */
#battle .battleGrid2x2{
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:34px!important;
}
#battle .rosterPanel{
  display:flex!important;
  flex-direction:column!important;
}
#battle .combatList.combatListGrid{
  flex:1 1 auto!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:repeat(2,minmax(0,1fr))!important;
  grid-auto-flow:row!important;
  gap:12px!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  align-items:stretch!important;
  align-content:stretch!important;
}
#battle .combatList.combatListGrid > .combat{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  align-self:stretch!important;
  justify-self:stretch!important;
}
#battle .combatList.combatListGrid > .combat .combatInner{
  width:100%!important;
  height:100%!important;
}
#battle .playerRoster .combatList.combatListGrid > .combat:nth-child(1){grid-column:1;grid-row:1;}
#battle .playerRoster .combatList.combatListGrid > .combat:nth-child(2){grid-column:2;grid-row:1;}
#battle .playerRoster .combatList.combatListGrid > .combat:nth-child(3){grid-column:1;grid-row:2;}
#battle .playerRoster .combatList.combatListGrid > .combat:nth-child(4){grid-column:2;grid-row:2;}
#battle .enemyRoster .combatList.combatListGrid > .combat:nth-child(1){grid-column:1;grid-row:1;}
#battle .enemyRoster .combatList.combatListGrid > .combat:nth-child(2){grid-column:2;grid-row:1;}
#battle .enemyRoster .combatList.combatListGrid > .combat:nth-child(3){grid-column:1;grid-row:2;}
#battle .enemyRoster .combatList.combatListGrid > .combat:nth-child(4){grid-column:2;grid-row:2;}
#battle .combatTop{
  grid-template-columns:minmax(0,1fr) auto auto!important;
  grid-template-areas:"name level turn" "attr attr turn"!important;
}
@media(max-width:1400px){
  .homeTypeCycle{transform:scale(.86)!important;transform-origin:top center!important;margin-bottom:-40px!important;}
}


/* v83 combat cards: approved compact retro RPG card style */
#battle{
  --lowerH:370px!important;
}
#battle .battleGrid2x2{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:34px!important;
  width:100%!important;
  height:var(--lowerH)!important;
  align-items:stretch!important;
}
#battle .rosterPanel{
  display:flex!important;
  flex-direction:column!important;
  height:var(--lowerH)!important;
  min-height:var(--lowerH)!important;
  padding:12px!important;
  overflow:hidden!important;
  background:rgba(18,20,22,.92)!important;
  border:4px solid #050509!important;
  box-shadow:5px 5px 0 rgba(0,0,0,.58)!important;
}
#battle .playerRoster{box-shadow:0 0 0 2px rgba(45,183,255,.28) inset,5px 5px 0 rgba(0,0,0,.58)!important;}
#battle .enemyRoster{box-shadow:0 0 0 2px rgba(255,77,103,.30) inset,5px 5px 0 rgba(0,0,0,.58)!important;}
#battle .rosterPanel h3{
  flex:0 0 26px!important;
  margin:0 0 10px!important;
  padding:0 4px!important;
  height:26px!important;
  line-height:26px!important;
  letter-spacing:2px!important;
  font-size:18px!important;
}
#battle .playerRoster h3{color:#63d8ff!important;}
#battle .enemyRoster h3{color:#ff5d76!important;}
#battle .combatList.combatListGrid{
  flex:1 1 auto!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-template-rows:repeat(2,minmax(0,1fr))!important;
  grid-auto-flow:row!important;
  gap:12px!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  align-items:stretch!important;
  align-content:stretch!important;
}
#battle .combatList.combatListGrid > .combat{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  align-self:stretch!important;
  justify-self:stretch!important;
  padding:0!important;
  margin:0!important;
  overflow:visible!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
#battle .combat::before,
#battle .combat.active::before,
#battle .combat.active::after{
  display:none!important;
  content:none!important;
}
#battle .combat.active{
  outline:4px solid rgba(255,217,29,.92)!important;
  outline-offset:2px!important;
}
#battle .combatInner{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  display:grid!important;
  grid-template-columns:132px minmax(0,1fr)!important;
  gap:0!important;
  overflow:hidden!important;
  border:4px solid #203647!important;
  border-radius:0!important;
  box-shadow:4px 4px 0 rgba(0,0,0,.45)!important;
}
#battle .combatArt{
  width:132px!important;
  min-width:132px!important;
  height:100%!important;
  min-height:0!important;
  background:#08090d!important;
  border-right:4px solid rgba(0,0,0,.6)!important;
  overflow:hidden!important;
}
#battle .combatArt img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  object-fit:cover!important;
  border:0!important;
  margin:0!important;
  transform:none!important;
}
#battle .combat.enemy .combatArt img{transform:none!important;}
#battle .combatRight{
  min-width:0!important;
  height:100%!important;
  display:grid!important;
  grid-template-rows:30px 26px 34px 1fr!important;
  padding:8px 10px 8px!important;
  box-sizing:border-box!important;
}
#battle .combatHeader{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto auto!important;
  align-items:center!important;
  gap:8px!important;
  min-width:0!important;
}
#battle .combatName{
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  font-size:16px!important;
  line-height:1!important;
  font-weight:bold!important;
  color:#fff!important;
  text-shadow:2px 2px 0 #111, -1px -1px 0 #111!important;
}
#battle .combatLevel{
  white-space:nowrap!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:bold!important;
  color:#fff!important;
  text-shadow:2px 2px 0 #111!important;
}
#battle .turnMini{
  position:static!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:56px!important;
  min-width:56px!important;
  height:24px!important;
  padding:0!important;
  background:#ffd51d!important;
  border:3px solid #5d4300!important;
  color:#111!important;
  box-shadow:2px 2px 0 rgba(0,0,0,.35)!important;
  font-size:10px!important;
  font-weight:bold!important;
  line-height:1!important;
}
#battle .combatAttrRow{
  display:flex!important;
  align-items:center!important;
  min-width:0!important;
}
#battle .combatAttrRow .type{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:68px!important;
  height:21px!important;
  padding:0 8px!important;
  font-size:11px!important;
  line-height:1!important;
  border-width:2px!important;
  box-shadow:2px 2px 0 rgba(0,0,0,.22)!important;
}
#battle .combatHpRow{
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr)!important;
  align-items:center!important;
  gap:10px!important;
  min-width:0!important;
}
#battle .combatHpText{
  white-space:nowrap!important;
  color:#111!important;
  font-weight:bold!important;
  font-size:13px!important;
  line-height:1!important;
}
#battle .combatHpRow .hpbar{
  width:100%!important;
  height:13px!important;
  margin:0!important;
  border:3px solid #111!important;
  background:#050606!important;
  box-shadow:2px 2px 0 rgba(0,0,0,.20)!important;
}
#battle .combatHpRow .hpbar span{
  display:block!important;
  height:100%!important;
  background:#19e83d!important;
}
#battle .combatStats{
  display:flex!important;
  align-items:end!important;
  min-width:0!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
  color:#111!important;
  font-weight:bold!important;
  font-size:13px!important;
  line-height:1.05!important;
  padding-top:4px!important;
  border-top:2px dotted rgba(0,0,0,.22)!important;
}
#battle .combat.type-Virus .combatInner{
  border-color:#d92f4c!important;
  background:linear-gradient(180deg,#ffd9df,#f4a3b0)!important;
}
#battle .combat.type-Data .combatInner{
  border-color:#1a99ef!important;
  background:linear-gradient(180deg,#d9f5ff,#89d2f6)!important;
}
#battle .combat.type-Vacuna .combatInner{
  border-color:#27b74b!important;
  background:linear-gradient(180deg,#dff9dc,#98df9d)!important;
}
#battle .combat.type-Unknown .combatInner{
  border-color:#9157ff!important;
  background:linear-gradient(180deg,#eadfff,#bda4fa)!important;
}
#battle .combat.dead .combatInner{
  filter:grayscale(1) brightness(.68)!important;
}
#battle .emptyCombat .combatInner{
  grid-template-columns:92px minmax(0,1fr)!important;
  border-color:#3d4652!important;
  background:rgba(18,22,28,.72)!important;
  box-shadow:3px 3px 0 rgba(0,0,0,.36)!important;
  opacity:.68!important;
}
#battle .emptyArt{
  display:grid!important;
  place-items:center!important;
  color:#718095!important;
  font-size:32px!important;
  border-right:3px dashed rgba(125,139,160,.45)!important;
}
#battle .emptyRight{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  padding:0 12px!important;
}
#battle .emptySlotTitle{
  color:#a0aabc!important;
  font-size:15px!important;
  font-weight:bold!important;
  letter-spacing:1px!important;
}
#battle .emptySlotSub{
  color:#7f899b!important;
  font-size:11px!important;
  margin-top:5px!important;
}
#battle .battleLogHidden{display:none!important;}
@media(max-width:1400px){
  #battle{--lowerH:350px!important;}
  #battle .combatInner{grid-template-columns:108px minmax(0,1fr)!important;}
  #battle .combatArt{width:108px!important;min-width:108px!important;}
  #battle .combatRight{grid-template-rows:28px 24px 30px 1fr!important;padding:7px 8px!important;}
  #battle .combatName{font-size:14px!important;}
  #battle .combatStats{font-size:11px!important;}
  #battle .combatHpText{font-size:11px!important;}
  #battle .turnMini{width:50px!important;min-width:50px!important;font-size:9px!important;}
}


/* v84 HARD FIX: real 2x2 combat grid and approved compact card scale */
#battle{
  --battleW:min(1840px, calc(100vw - 44px))!important;
  --arenaH:500px!important;
  --skipH:52px!important;
  --lowerH:410px!important;
}
#battle .v80BattleShell{
  width:var(--battleW)!important;
  margin:10px auto 0!important;
  display:grid!important;
  grid-template-rows:var(--arenaH) var(--skipH) var(--lowerH)!important;
  gap:10px!important;
  min-height:0!important;
}
#battle .battleArenaPanel{
  height:var(--arenaH)!important;
  min-height:var(--arenaH)!important;
}
#battle .battleSkipRow{
  height:var(--skipH)!important;
  display:grid!important;
  place-items:center!important;
}
#battle .battleSkipRow #fight{
  width:300px!important;
  height:44px!important;
  min-height:44px!important;
}
#battle .battleGrid2x2{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:34px!important;
  width:100%!important;
  height:var(--lowerH)!important;
  min-height:var(--lowerH)!important;
  align-items:stretch!important;
}
#battle section.rosterPanel.playerRoster,
#battle section.rosterPanel.enemyRoster{
  height:var(--lowerH)!important;
  min-height:var(--lowerH)!important;
  max-height:var(--lowerH)!important;
  display:grid!important;
  grid-template-rows:30px minmax(0,1fr)!important;
  padding:12px!important;
  overflow:hidden!important;
  box-sizing:border-box!important;
}
#battle section.rosterPanel > h3{
  height:30px!important;
  line-height:30px!important;
  margin:0!important;
  padding:0 4px!important;
}
#battle #playerList.combatGridTwoByTwo,
#battle #enemyList.combatGridTwoByTwo{
  display:grid!important;
  grid-template-columns:repeat(2, minmax(0, 1fr))!important;
  grid-template-rows:repeat(2, minmax(0, 1fr))!important;
  grid-auto-flow:row!important;
  gap:12px!important;
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  max-height:none!important;
  align-items:stretch!important;
  align-content:stretch!important;
  justify-items:stretch!important;
}
#battle #playerList.combatGridTwoByTwo .combatCell,
#battle #enemyList.combatGridTwoByTwo .combatCell{
  display:block!important;
  min-width:0!important;
  min-height:0!important;
  width:100%!important;
  height:100%!important;
  overflow:visible!important;
}
#battle #playerList .slot1,#battle #enemyList .slot1{grid-column:1!important;grid-row:1!important;}
#battle #playerList .slot2,#battle #enemyList .slot2{grid-column:2!important;grid-row:1!important;}
#battle #playerList .slot3,#battle #enemyList .slot3{grid-column:1!important;grid-row:2!important;}
#battle #playerList .slot4,#battle #enemyList .slot4{grid-column:2!important;grid-row:2!important;}

#battle .combatCell > article.combat{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  display:block!important;
  overflow:visible!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
#battle .combatCell > article.combat > .combatInner{
  width:100%!important;
  height:100%!important;
  min-width:0!important;
  min-height:0!important;
  display:grid!important;
  grid-template-columns:132px minmax(0,1fr)!important;
  overflow:hidden!important;
  border:4px solid #203647!important;
  box-sizing:border-box!important;
  box-shadow:4px 4px 0 rgba(0,0,0,.45)!important;
}
#battle .combatCell .combatArt{
  width:132px!important;
  min-width:132px!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  background:#06080c!important;
  border-right:4px solid rgba(0,0,0,.58)!important;
  box-sizing:border-box!important;
}
#battle .combatCell .combatArt img{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  display:block!important;
  object-fit:cover!important;
}
#battle .combatCell .combatRight{
  height:100%!important;
  min-width:0!important;
  display:grid!important;
  grid-template-rows:31px 26px 34px minmax(0,1fr)!important;
  padding:8px 10px!important;
  box-sizing:border-box!important;
}
#battle .combatCell .combatHeader{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto auto!important;
  gap:8px!important;
  align-items:center!important;
  min-width:0!important;
}
#battle .combatCell .combatName{
  font-size:16px!important;
  line-height:1!important;
  font-weight:bold!important;
  color:#fff!important;
  text-shadow:2px 2px 0 #111, -1px -1px 0 #111!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  min-width:0!important;
}
#battle .combatCell .combatLevel{
  font-size:13px!important;
  font-weight:bold!important;
  color:#fff!important;
  text-shadow:2px 2px 0 #111!important;
  white-space:nowrap!important;
}
#battle .combatCell .turnMini{
  position:static!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:56px!important;
  min-width:56px!important;
  height:24px!important;
  padding:0!important;
  font-size:10px!important;
  background:#ffd51d!important;
  color:#111!important;
  border:3px solid #5d4300!important;
}
#battle .combatCell .combatAttrRow{
  display:flex!important;
  align-items:center!important;
  min-width:0!important;
}
#battle .combatCell .combatAttrRow .type{
  min-width:68px!important;
  height:21px!important;
  padding:0 8px!important;
  font-size:11px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
}
#battle .combatCell .combatHpRow{
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr)!important;
  gap:10px!important;
  align-items:center!important;
  min-width:0!important;
}
#battle .combatCell .combatHpText{
  font-size:13px!important;
  color:#111!important;
  font-weight:bold!important;
  white-space:nowrap!important;
}
#battle .combatCell .combatHpRow .hpbar{
  height:13px!important;
  width:100%!important;
  border:3px solid #111!important;
  background:#050606!important;
  margin:0!important;
}
#battle .combatCell .combatStats{
  display:flex!important;
  align-items:end!important;
  font-size:13px!important;
  line-height:1.05!important;
  color:#111!important;
  font-weight:bold!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  padding-top:4px!important;
  border-top:2px dotted rgba(0,0,0,.22)!important;
}
#battle .combatCell .emptyCombat > .combatInner{
  grid-template-columns:96px minmax(0,1fr)!important;
  border-color:#3d4652!important;
  background:rgba(18,22,28,.72)!important;
  opacity:.70!important;
}
#battle .combatCell .emptyCombat .emptyArt{
  width:96px!important;
  min-width:96px!important;
  display:grid!important;
  place-items:center!important;
  color:#718095!important;
  font-size:32px!important;
  border-right:3px dashed rgba(125,139,160,.45)!important;
}
#battle .combatCell .emptyCombat .emptyRight{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  padding:0 12px!important;
}
#battle .combatCell .emptySlotTitle{
  color:#a0aabc!important;
  font-size:15px!important;
  font-weight:bold!important;
}
#battle .combatCell .emptySlotSub{
  color:#7f899b!important;
  font-size:11px!important;
  margin-top:5px!important;
}
#battle .combatCell > article.combat.type-Virus > .combatInner{border-color:#d92f4c!important;background:linear-gradient(180deg,#ffd9df,#f4a3b0)!important;}
#battle .combatCell > article.combat.type-Data > .combatInner{border-color:#1a99ef!important;background:linear-gradient(180deg,#d9f5ff,#89d2f6)!important;}
#battle .combatCell > article.combat.type-Vacuna > .combatInner{border-color:#27b74b!important;background:linear-gradient(180deg,#dff9dc,#98df9d)!important;}
#battle .combatCell > article.combat.type-Unknown > .combatInner{border-color:#9157ff!important;background:linear-gradient(180deg,#eadfff,#bda4fa)!important;}
@media(max-width:1400px){
  #battle{--lowerH:390px!important;}
  #battle .combatCell > article.combat > .combatInner{grid-template-columns:112px minmax(0,1fr)!important;}
  #battle .combatCell .combatArt{width:112px!important;min-width:112px!important;}
  #battle .combatCell .combatRight{grid-template-rows:28px 24px 30px minmax(0,1fr)!important;padding:7px 8px!important;}
  #battle .combatCell .combatName{font-size:14px!important;}
  #battle .combatCell .combatStats{font-size:11px!important;}
  #battle .combatCell .combatHpText{font-size:11px!important;}
}


/* v85 HOME TRIANGLE CLEAN: keeps same nodes/icons, fixes arrows and symmetry */
.homeTypeCycle{
  position:relative!important;
  width:640px!important;
  height:420px!important;
  margin:24px auto 0!important;
  background:transparent!important;
  overflow:visible!important;
}
.homeTypeCycle .cycleSvg{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  overflow:visible!important;
  background:transparent!important;
  pointer-events:none!important;
  z-index:1!important;
}
.homeTypeCycle .typeNode{
  z-index:2!important;
}
.homeTypeCycle .cycleLine{
  fill:none!important;
  stroke-width:3.2!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
  opacity:.88!important;
  filter:drop-shadow(0 0 4px currentColor)!important;
}
.homeTypeCycle .unknownLine{
  stroke-width:2.35!important;
  opacity:.82!important;
  stroke-dasharray:0!important;
}
.homeTypeCycle .redLine{stroke:#ff4f66!important;color:#ff4f66!important;}
.homeTypeCycle .blueLine{stroke:#45adff!important;color:#45adff!important;}
.homeTypeCycle .greenLine{stroke:#52eb72!important;color:#52eb72!important;}
.homeTypeCycle .unknownLine{stroke:#b16bff!important;color:#b16bff!important;}
.homeTypeCycle .virusNode{
  left:264px!important;
  top:0!important;
}
.homeTypeCycle .dataNode{
  left:86px!important;
  top:286px!important;
}
.homeTypeCycle .vacunaNode{
  right:86px!important;
  top:286px!important;
}
.homeTypeCycle .unknownNode{
  left:264px!important;
  top:168px!important;
  width:112px!important;
  height:108px!important;
}
.homeTypeCycle .typeNode{
  width:112px!important;
  height:118px!important;
}
.homeTypeCycle .unknownNode{
  height:108px!important;
}
@media(max-width:1400px){
  .homeTypeCycle{
    transform:scale(.82)!important;
    transform-origin:top center!important;
    margin-bottom:-54px!important;
  }
}


/* v86: roster titles fixed at top + stronger name readability */
#battle section.rosterPanel.playerRoster,
#battle section.rosterPanel.enemyRoster{
  display:grid!important;
  grid-template-rows:38px minmax(0,1fr)!important;
  align-content:start!important;
}
#battle section.rosterPanel > h3{
  order:1!important;
  align-self:start!important;
  justify-self:start!important;
  position:relative!important;
  top:0!important;
  bottom:auto!important;
  margin:0 0 10px 0!important;
  padding:0 6px!important;
  height:28px!important;
  line-height:28px!important;
  font-size:17px!important;
  font-weight:900!important;
  letter-spacing:1px!important;
  text-transform:uppercase!important;
}
#battle #playerList.combatGridTwoByTwo,
#battle #enemyList.combatGridTwoByTwo{
  order:2!important;
  align-content:start!important;
}
#battle .combatCell .combatHeader{
  grid-template-columns:minmax(0,1fr) auto auto!important;
  min-width:0!important;
}
#battle .combatCell .combatName,
#battle .combatCell .combatLevel{
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.60)!important;
  font-weight:900!important;
}
#battle .combatCell .combatName{
  font-size:17px!important;
  letter-spacing:.2px!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
#battle .combatCell .combatLevel{
  font-size:14px!important;
}
#battle .combatCell .combatHpText,
#battle .combatCell .combatStats{
  color:#101114!important;
}
#battle .combatCell > article.combat.dead > .combatInner{
  filter:saturate(.35) brightness(.92)!important;
}
#battle .combatCell > article.combat.dead .combatName,
#battle .combatCell > article.combat.dead .combatLevel,
#battle .combatCell > article.combat.dead .combatHpText,
#battle .combatCell > article.combat.dead .combatStats,
#battle .combatCell > article.combat.dead .combatAttrRow .type{
  opacity:1!important;
  color:#18191d!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.35)!important;
}
#battle .combatCell > article.combat.dead .combatArt img{
  filter:grayscale(.75) brightness(.72)!important;
}
#battle .combatCell .combatRight{
  padding:9px 12px!important;
}
#battle .combatCell .combatStats{
  border-top:0!important;
  padding-top:2px!important;
}


/* v88: level beside portrait first, then abbreviated name */
#battle .combatCell .combatHeader{
  grid-template-columns:48px minmax(0,1fr) auto!important;
  gap:8px!important;
  align-items:center!important;
}
#battle .combatCell .combatLevel{
  order:1!important;
  width:48px!important;
  min-width:48px!important;
  text-align:left!important;
  white-space:pre!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:900!important;
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.62)!important;
}
#battle .combatCell .combatName{
  order:2!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  font-size:15px!important;
  line-height:1!important;
  font-weight:900!important;
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.62)!important;
}
#battle .combatCell .turnMini{
  order:3!important;
}
@media(max-width:1400px){
  #battle .combatCell .combatHeader{
    grid-template-columns:44px minmax(0,1fr) auto!important;
    gap:6px!important;
  }
  #battle .combatCell .combatLevel{
    width:44px!important;
    min-width:44px!important;
    font-size:12px!important;
  }
  #battle .combatCell .combatName{
    font-size:13px!important;
  }
}


/* v89: header order = [star slot] [Lv1-Lv100] [name] [TURNO] */
#battle .combatCell .combatHeader{
  display:grid!important;
  grid-template-columns:16px auto minmax(0,1fr) auto!important;
  gap:6px!important;
  align-items:center!important;
  min-width:0!important;
}
#battle .combatCell .combatStar{
  order:1!important;
  width:16px!important;
  min-width:16px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#ffd91d!important;
  text-shadow:1px 1px 0 #111,0 0 8px rgba(255,217,29,.65)!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:900!important;
}
#battle .combatCell .combatLevel{
  order:2!important;
  width:auto!important;
  min-width:30px!important;
  max-width:none!important;
  text-align:left!important;
  white-space:nowrap!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:900!important;
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.62)!important;
}
#battle .combatCell .combatName{
  order:3!important;
  min-width:0!important;
  max-width:100%!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  text-align:left!important;
  font-size:15px!important;
  line-height:1!important;
  font-weight:900!important;
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.62)!important;
}
#battle .combatCell .turnMini{
  order:4!important;
}
@media(max-width:1400px){
  #battle .combatCell .combatHeader{
    grid-template-columns:14px auto minmax(0,1fr) auto!important;
    gap:5px!important;
  }
  #battle .combatCell .combatStar{
    width:14px!important;
    min-width:14px!important;
    font-size:12px!important;
  }
  #battle .combatCell .combatLevel{
    min-width:27px!important;
    font-size:12px!important;
  }
  #battle .combatCell .combatName{
    font-size:13px!important;
  }
}


/* v90 final: remove crossed subtitle and force header order beside portrait */
#battle #battleSub,
#battle .battleArenaTop p{
  display:none!important;
  visibility:hidden!important;
  height:0!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
}

/* Header must read: [star slot] [LvX] [Digi name] [TURNO], all starting next to portrait */
#battle .combatCell .combatHeader,
#battle article.combat .combatHeader{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:6px!important;
  width:100%!important;
  min-width:0!important;
  height:24px!important;
  overflow:hidden!important;
  text-align:left!important;
}

#battle .combatCell .combatStar,
#battle article.combat .combatStar{
  order:1!important;
  flex:0 0 16px!important;
  width:16px!important;
  min-width:16px!important;
  max-width:16px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#ffd91d!important;
  text-shadow:1px 1px 0 #111,0 0 8px rgba(255,217,29,.65)!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:900!important;
}

#battle .combatCell .combatLevel,
#battle article.combat .combatLevel{
  order:2!important;
  flex:0 0 auto!important;
  width:auto!important;
  min-width:30px!important;
  max-width:none!important;
  display:inline-block!important;
  text-align:left!important;
  white-space:nowrap!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:900!important;
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.62)!important;
}

#battle .combatCell .combatName,
#battle article.combat .combatName{
  order:3!important;
  flex:1 1 auto!important;
  display:block!important;
  min-width:0!important;
  max-width:100%!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  text-align:left!important;
  justify-content:flex-start!important;
  font-size:15px!important;
  line-height:1!important;
  font-weight:900!important;
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.62)!important;
}

#battle .combatCell .turnMini,
#battle article.combat .turnMini{
  order:4!important;
  flex:0 0 56px!important;
  margin-left:4px!important;
}

/* keep the header positioned at the top-left of card text area */
#battle .combatCell .combatRight,
#battle article.combat .combatRight{
  justify-items:stretch!important;
  align-items:stretch!important;
}
@media(max-width:1400px){
  #battle .combatCell .combatHeader,
  #battle article.combat .combatHeader{
    gap:5px!important;
    height:22px!important;
  }
  #battle .combatCell .combatStar,
  #battle article.combat .combatStar{
    flex-basis:14px!important;
    width:14px!important;
    min-width:14px!important;
    max-width:14px!important;
    font-size:12px!important;
  }
  #battle .combatCell .combatLevel,
  #battle article.combat .combatLevel{
    min-width:27px!important;
    font-size:12px!important;
  }
  #battle .combatCell .combatName,
  #battle article.combat .combatName{
    font-size:13px!important;
  }
}


/* v91 FINAL COMBAT HEADER FIX */
/* Remove Combat Stage title area and MAP button visually */
#battle .battleArenaTop,
#battle #battleTitle,
#battle #battleSub,
#battle .battleArenaTop .btn,
#battle .battleArenaTop button{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  pointer-events:none!important;
}

/* Avoid old combatName/combatLevel rules by using unique identity classes */
#battle .combatCell .combatHeader,
#battle article.combat .combatHeader{
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  width:100%!important;
  min-width:0!important;
  height:24px!important;
  gap:8px!important;
  overflow:hidden!important;
}

#battle .combatCell .combatIdentity,
#battle article.combat .combatIdentity{
  flex:1 1 auto!important;
  min-width:0!important;
  max-width:100%!important;
  display:flex!important;
  flex-direction:row!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:6px!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-align:left!important;
}

#battle .combatCell .starSlot,
#battle article.combat .starSlot{
  flex:0 0 16px!important;
  width:16px!important;
  min-width:16px!important;
  max-width:16px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#ffd91d!important;
  text-shadow:1px 1px 0 #111,0 0 8px rgba(255,217,29,.65)!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:900!important;
}

#battle .combatCell .levelSlot,
#battle article.combat .levelSlot{
  flex:0 0 auto!important;
  min-width:30px!important;
  width:auto!important;
  display:inline-block!important;
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.62)!important;
  font-size:13px!important;
  line-height:1!important;
  font-weight:900!important;
  text-align:left!important;
  white-space:nowrap!important;
}

#battle .combatCell .nameSlot,
#battle article.combat .nameSlot{
  flex:0 1 auto!important;
  min-width:0!important;
  max-width:100%!important;
  display:inline-block!important;
  color:#101114!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.62)!important;
  font-size:15px!important;
  line-height:1!important;
  font-weight:900!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  text-align:left!important;
}

#battle .combatCell .turnMini,
#battle article.combat .turnMini{
  flex:0 0 56px!important;
  margin-left:auto!important;
}

/* Keep text area starting immediately to the right of portrait */
#battle .combatCell .combatRight,
#battle article.combat .combatRight{
  justify-items:stretch!important;
  align-items:stretch!important;
  text-align:left!important;
}

@media(max-width:1400px){
  #battle .combatCell .combatHeader,
  #battle article.combat .combatHeader{height:22px!important;gap:6px!important;}
  #battle .combatCell .combatIdentity,
  #battle article.combat .combatIdentity{gap:5px!important;}
  #battle .combatCell .starSlot,
  #battle article.combat .starSlot{flex-basis:14px!important;width:14px!important;min-width:14px!important;max-width:14px!important;font-size:12px!important;}
  #battle .combatCell .levelSlot,
  #battle article.combat .levelSlot{min-width:27px!important;font-size:12px!important;}
  #battle .combatCell .nameSlot,
  #battle article.combat .nameSlot{font-size:13px!important;}
}


/* v92: TURNO removed completely */
#battle .turnMini,
.turnMini{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  width:0!important;
  min-width:0!important;
  max-width:0!important;
  flex-basis:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  overflow:hidden!important;
}


/* v94: star is conditional; no empty star space when not powered. Level is strongly bold. */
#battle .combatCell .combatIdentity,
#battle article.combat .combatIdentity{
  gap:6px!important;
}

#battle .combatCell .starSlot,
#battle article.combat .starSlot{
  flex:0 0 auto!important;
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  margin-right:0!important;
  color:#ffd91d!important;
  text-shadow:1px 1px 0 #111,0 0 8px rgba(255,217,29,.75)!important;
  font-size:14px!important;
  line-height:1!important;
  font-weight:900!important;
}

#battle .combatCell .levelSlot,
#battle article.combat .levelSlot{
  flex:0 0 auto!important;
  min-width:auto!important;
  width:auto!important;
  font-weight:1000!important;
  font-size:14px!important;
  color:#050609!important;
  text-shadow:1px 1px 0 rgba(255,255,255,.72),0 0 3px rgba(255,255,255,.30)!important;
  letter-spacing:.2px!important;
}

#battle .combatCell .nameSlot,
#battle article.combat .nameSlot{
  font-weight:900!important;
}

@media(max-width:1400px){
  #battle .combatCell .starSlot,
  #battle article.combat .starSlot{
    font-size:12px!important;
  }
  #battle .combatCell .levelSlot,
  #battle article.combat .levelSlot{
    font-size:12px!important;
  }
}


/* v95: battle window FX - dynamic background, platforms, clearer hits, KO */
#battle .arena{
  position:relative!important;
  overflow:hidden!important;
  background:
    radial-gradient(circle at 50% 48%,rgba(92,233,255,.22) 0 80px,transparent 145px),
    linear-gradient(180deg,rgba(18,40,120,.95) 0%,rgba(11,21,68,.96) 52%,rgba(8,11,36,.98) 100%)!important;
}
#battle .arena::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  pointer-events:none!important;
  opacity:.95!important;
  background:
    linear-gradient(90deg,transparent 0 8%,rgba(87,232,255,.19) 8.2% 8.6%,transparent 8.8% 18%,rgba(87,232,255,.10) 18.2% 18.5%,transparent 18.7% 31%,rgba(255,218,82,.10) 31.2% 31.5%,transparent 31.7% 47%,rgba(87,232,255,.12) 47.2% 47.5%,transparent 47.7% 63%,rgba(255,89,125,.09) 63.2% 63.5%,transparent 63.7% 78%,rgba(87,232,255,.15) 78.2% 78.6%,transparent 78.8% 100%),
    linear-gradient(180deg,transparent 0 16%,rgba(87,232,255,.16) 16.2% 16.5%,transparent 16.8% 34%,rgba(87,232,255,.11) 34.2% 34.5%,transparent 34.8% 55%,rgba(255,218,82,.09) 55.2% 55.5%,transparent 55.8% 77%,rgba(87,232,255,.12) 77.2% 77.5%,transparent 77.8% 100%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.045) 0 1px,transparent 1px 5px)!important;
  mix-blend-mode:screen!important;
}
#battle .arena::after{
  content:""!important;
  position:absolute!important;
  inset:auto 0 0 0!important;
  height:46%!important;
  background:
    linear-gradient(180deg,transparent,rgba(0,0,0,.22)),
    repeating-linear-gradient(90deg,rgba(93,236,255,.13) 0 2px,transparent 2px 70px),
    repeating-linear-gradient(0deg,rgba(93,236,255,.12) 0 2px,transparent 2px 34px)!important;
  transform:perspective(360px) rotateX(56deg) translateY(26px) scale(1.08)!important;
  transform-origin:bottom center!important;
  pointer-events:none!important;
  opacity:.8!important;
}
#battle .battlePlatform{
  position:absolute!important;
  z-index:1!important;
  bottom:28px!important;
  width:28%!important;
  height:38px!important;
  border:3px solid rgba(103,242,255,.55)!important;
  border-radius:50%!important;
  background:
    radial-gradient(ellipse at center,rgba(255,255,255,.18),rgba(76,221,255,.18) 36%,rgba(31,85,189,.10) 62%,transparent 70%),
    repeating-radial-gradient(ellipse at center,rgba(117,242,255,.25) 0 2px,transparent 2px 9px)!important;
  box-shadow:0 0 18px rgba(88,235,255,.45), inset 0 0 18px rgba(88,235,255,.18)!important;
  pointer-events:none!important;
}
#battle .platformPlayer{left:11%!important;}
#battle .platformEnemy{right:11%!important;}
#battle .fighterWrap{
  z-index:2!important;
  transition:filter .16s ease, opacity .16s ease, transform .16s ease!important;
}
#battle .arena.pAtk .fighterWrap.player{
  animation:arenaPlayerLunge .52s ease both!important;
}
#battle .arena.eAtk .fighterWrap.enemy{
  animation:arenaEnemyLunge .52s ease both!important;
}
#battle .arena.hitE .fighterWrap.enemy{
  animation:arenaHitShake .42s ease .18s both!important;
}
#battle .arena.hitP .fighterWrap.player{
  animation:arenaHitShake .42s ease .18s both!important;
}
@keyframes arenaPlayerLunge{
  0%{transform:translateX(0) scale(1)}
  42%{transform:translateX(42px) translateY(-8px) scale(1.035)}
  100%{transform:translateX(0) scale(1)}
}
@keyframes arenaEnemyLunge{
  0%{transform:translateX(0) scale(1)}
  42%{transform:translateX(-42px) translateY(-8px) scale(1.035)}
  100%{transform:translateX(0) scale(1)}
}
@keyframes arenaHitShake{
  0%{filter:brightness(1)}
  20%{transform:translateX(10px);filter:brightness(1.8)}
  42%{transform:translateX(-8px);filter:brightness(.75)}
  64%{transform:translateX(6px);filter:brightness(1.25)}
  100%{transform:translateX(0);filter:brightness(1)}
}
#battle .beam{
  height:22px!important;
  border-radius:999px!important;
  opacity:0;
  filter:drop-shadow(0 0 12px currentColor) drop-shadow(0 0 28px currentColor)!important;
}
#battle .arena.attacking .beam{
  animation:beamV95 .72s ease!important;
}
@keyframes beamV95{
  0%{opacity:0;transform:scaleX(.05) rotate(var(--beamRot,0deg))}
  25%{opacity:1;transform:scaleX(1) rotate(var(--beamRot,0deg))}
  75%{opacity:.95;transform:scaleX(1.08) rotate(var(--beamRot,0deg))}
  100%{opacity:0;transform:scaleX(1.25) rotate(var(--beamRot,0deg))}
}
#battle .dmg{
  font-size:34px!important;
  color:#ffffff!important;
  text-shadow:3px 3px 0 #000,0 0 16px rgba(255,255,255,.9)!important;
  z-index:9!important;
}
#battle .dmg.crit{
  color:#ffd91d!important;
  text-shadow:3px 3px 0 #000,0 0 20px rgba(255,217,29,.95)!important;
}
#battle .call{
  font-size:18px!important;
  z-index:10!important;
  text-shadow:3px 3px 0 #000,0 0 14px rgba(255,217,29,.70)!important;
}
#battle .koCall{
  color:#ff4965!important;
  font-size:34px!important;
  letter-spacing:3px!important;
  text-shadow:4px 4px 0 #000,0 0 22px rgba(255,73,101,.95)!important;
}
#battle .fighterWrap.koFlash{
  animation:koFlashV95 .9s ease both!important;
}
#battle .fighterWrap.dead{
  filter:grayscale(1) brightness(.50)!important;
  opacity:.70!important;
}
#battle .koStamp{
  position:absolute!important;
  z-index:8!important;
  left:50%!important;
  top:42%!important;
  transform:translate(-50%,-50%) rotate(-9deg)!important;
  padding:6px 12px!important;
  color:#ff4965!important;
  background:rgba(0,0,0,.72)!important;
  border:3px solid #ff4965!important;
  box-shadow:0 0 18px rgba(255,73,101,.65),3px 3px 0 rgba(0,0,0,.55)!important;
  font-weight:900!important;
  font-size:24px!important;
  letter-spacing:2px!important;
}
@keyframes koFlashV95{
  0%{filter:brightness(1);opacity:1;transform:scale(1)}
  30%{filter:brightness(2.1) saturate(1.3);opacity:1;transform:scale(1.06)}
  60%{filter:grayscale(1) brightness(.72);opacity:.86;transform:scale(.98)}
  100%{filter:grayscale(1) brightness(.52);opacity:.70;transform:scale(1)}
}


/* v96: clean battle motion - selected only
   YES: dash, hit flash, reusable slash/ray, reactive platform.
   NO: target shake, new damage system, crit special, KO enhancement, particles.
*/

/* Disable target shaking from older v95 while preserving hit feedback as flash */
#battle .arena.hitE .fighterWrap.enemy,
#battle .arena.hitP .fighterWrap.player{
  animation:none!important;
}

/* Stronger but clean attacker dash */
#battle .arena.pAtk .fighterWrap.player{
  animation:v96PlayerDash .58s cubic-bezier(.16,.84,.28,1) both!important;
}
#battle .arena.eAtk .fighterWrap.enemy{
  animation:v96EnemyDash .58s cubic-bezier(.16,.84,.28,1) both!important;
}
@keyframes v96PlayerDash{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  20%{transform:translateX(-10px) translateY(0) scale(.99);filter:brightness(1.12)}
  48%{transform:translateX(64px) translateY(-8px) scale(1.045);filter:brightness(1.35)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v96EnemyDash{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  20%{transform:translateX(10px) translateY(0) scale(.99);filter:brightness(1.12)}
  48%{transform:translateX(-64px) translateY(-8px) scale(1.045);filter:brightness(1.35)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}

/* Hit flash without shake */
#battle .arena.hitE .fighterWrap.enemy .fighter,
#battle .arena.hitP .fighterWrap.player .fighter{
  animation:v96HitFlash .42s ease .18s both!important;
}
@keyframes v96HitFlash{
  0%{filter:brightness(1)}
  18%{filter:brightness(2.1) saturate(1.25)}
  42%{filter:brightness(.72) saturate(.82)}
  74%{filter:brightness(1.45) saturate(1.1)}
  100%{filter:brightness(1)}
}

/* Reusable slash/ray effect: no extra images, just CSS */
#battle .beam{
  height:20px!important;
  border-radius:999px!important;
  background:
    linear-gradient(90deg,transparent 0%,currentColor 18%,#ffffff 48%,currentColor 72%,transparent 100%)!important;
  box-shadow:0 0 18px currentColor,0 0 36px currentColor!important;
  opacity:0!important;
}
#battle .beam::before,
#battle .beam::after{
  content:""!important;
  position:absolute!important;
  left:12%!important;
  right:12%!important;
  top:50%!important;
  height:3px!important;
  background:#fff!important;
  transform:translateY(-50%) rotate(9deg)!important;
  opacity:.9!important;
  box-shadow:0 0 10px #fff!important;
}
#battle .beam::after{
  transform:translateY(-50%) rotate(-9deg)!important;
  opacity:.55!important;
}
#battle .arena.attacking .beam{
  animation:v96SlashRay .62s ease!important;
}
@keyframes v96SlashRay{
  0%{opacity:0;clip-path:inset(0 100% 0 0);filter:brightness(1)}
  20%{opacity:1;clip-path:inset(0 38% 0 0);filter:brightness(1.5)}
  55%{opacity:1;clip-path:inset(0 0 0 0);filter:brightness(1.25)}
  100%{opacity:0;clip-path:inset(0 0 0 100%);filter:brightness(1)}
}

/* Reactive platforms */
#battle .platformPlayer,
#battle .platformEnemy{
  transition:filter .18s ease, box-shadow .18s ease, transform .18s ease!important;
}
#battle .arena.platformPulseP .platformPlayer,
#battle .arena.platformPulseE .platformEnemy{
  animation:v96PlatformPulse .62s ease both!important;
}
@keyframes v96PlatformPulse{
  0%{filter:brightness(1);transform:scale(1)}
  35%{filter:brightness(1.85);transform:scale(1.06)}
  100%{filter:brightness(1);transform:scale(1)}
}

/* Keep KO simple, not enhanced */
#battle .koStamp{
  display:none!important;
}
#battle .koCall{
  display:none!important;
}

/* v97 scan map feedback + roster alignment */
#battle .battleGrid2x2{
  align-items:start!important;
}
#battle section.rosterPanel.playerRoster,
#battle section.rosterPanel.enemyRoster{
  align-self:start!important;
  margin-top:0!important;
  transform:none!important;
  display:grid!important;
  grid-template-rows:38px minmax(0,1fr)!important;
}
#battle section.rosterPanel.playerRoster > h3,
#battle section.rosterPanel.enemyRoster > h3{
  grid-row:1!important;
  align-self:start!important;
  margin:0 0 10px 0!important;
  height:28px!important;
  line-height:28px!important;
}
#battle #playerList,
#battle #enemyList{
  grid-row:2!important;
  align-self:start!important;
}
#nodes .node.scanReady{
  overflow:visible!important;
  z-index:8!important;
}
#nodes .node.scanReady.available{
  outline-color:rgba(255,255,255,.9)!important;
}
#nodes .node.scanReady .scanParticles{
  position:absolute!important;
  left:50%!important;
  top:-22px!important;
  width:86px!important;
  height:26px!important;
  transform:translateX(-50%)!important;
  pointer-events:none!important;
  opacity:0!important;
  filter:drop-shadow(0 0 8px currentColor)!important;
}
#nodes .node.scanReady:hover .scanParticles{
  opacity:1!important;
}
#nodes .node.scanReady .scanParticle{
  --scan-color:#2c9cff;
  position:absolute!important;
  bottom:0!important;
  width:9px!important;
  height:9px!important;
  border-radius:50%!important;
  background:var(--scan-color)!important;
  box-shadow:0 0 10px var(--scan-color),0 0 18px var(--scan-color)!important;
  animation:scanParticleFloat 1.05s ease-in-out infinite alternate!important;
}
#nodes .node.scanReady .scanParticle.type-Data{--scan-color:#2c9cff;left:18px!important;animation-delay:0s!important}
#nodes .node.scanReady .scanParticle.type-Virus{--scan-color:#ef3349;left:39px!important;animation-delay:.16s!important}
#nodes .node.scanReady .scanParticle.type-Vacuna{--scan-color:#35db54;left:60px!important;animation-delay:.32s!important}
#nodes .node.scanReady .scanParticle:nth-child(1){left:24px!important}
#nodes .node.scanReady .scanParticle:nth-child(2){left:51px!important}
@keyframes scanParticleFloat{
  0%{transform:translateY(8px) scale(.72);opacity:.45}
  50%{opacity:1}
  100%{transform:translateY(-12px) scale(1.18);opacity:.92}
}
/* v98 node palette + brighter scan particles */
#nodes .node.start{background:radial-gradient(circle at 35% 24%,#fff7a8,#31c86b 52%,#074526 82%)!important;color:#ffffff!important;border-color:#dfffe8!important;box-shadow:0 0 0 2px rgba(255,255,255,.22) inset,0 0 24px rgba(49,200,107,.62),3px 3px 0 rgba(0,0,0,.54)!important}
#nodes .node.wild{background:radial-gradient(circle at 35% 24%,#ffffff,#48e7ff 50%,#075a85 82%)!important;color:#041e2d!important;border-color:#d7fbff!important;box-shadow:0 0 0 2px rgba(255,255,255,.24) inset,0 0 24px rgba(72,231,255,.68),3px 3px 0 rgba(0,0,0,.54)!important}
#nodes .node.combat,#nodes .node.combat.available,#nodes .node.combat.done,#nodes .node.combat.locked{background:radial-gradient(circle at 35% 24%,#ffd0d6,#ff3150 48%,#350712 82%)!important;color:#ffffff!important;border-color:#ff6b7d!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 28px rgba(255,49,80,.72),3px 3px 0 rgba(0,0,0,.56)!important}
#nodes .node.double,#nodes .node.double.available,#nodes .node.double.done,#nodes .node.double.locked{background:radial-gradient(circle at 35% 24%,#fff1a8,#ff9d23 48%,#6a2200 82%)!important;color:#fff9dd!important;border-color:#ffd166!important;box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 28px rgba(255,157,35,.72),3px 3px 0 rgba(0,0,0,.56)!important}
#nodes .node.elite{background:radial-gradient(circle at 35% 24%,#fff1ff,#ab55ff 43%,#150027 82%)!important;color:#fff2ff!important;border-color:#e0a6ff!important;box-shadow:0 0 0 2px rgba(255,255,255,.16) inset,0 0 30px rgba(171,85,255,.78),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.event{background:radial-gradient(circle at 35% 24%,#ffffff,#c9d3e4 54%,#343d50 84%)!important;color:#111722!important;border-color:#eef4ff!important;box-shadow:0 0 0 2px rgba(255,255,255,.20) inset,0 0 20px rgba(220,235,255,.48),3px 3px 0 rgba(0,0,0,.52)!important}
#nodes .node.item{background:radial-gradient(circle at 35% 24%,#fff6ff,#c570ff 50%,#3c087a 84%)!important;color:#ffffff!important;border-color:#f0b4ff!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 24px rgba(197,112,255,.7),3px 3px 0 rgba(0,0,0,.54)!important}
#nodes .node.exchange{background:radial-gradient(circle at 35% 24%,#eaffff,#1dd6c9 50%,#054c52 84%)!important;color:#eaffff!important;border-color:#8ff9f2!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 24px rgba(29,214,201,.66),3px 3px 0 rgba(0,0,0,.54)!important}
#nodes .node.heal{background:radial-gradient(circle at 35% 24%,#f0fff4,#39e675 50%,#075d2d 84%)!important;color:#ffffff!important;border-color:#baffca!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 24px rgba(57,230,117,.64),3px 3px 0 rgba(0,0,0,.54)!important}
#nodes .node.training{background:radial-gradient(circle at 35% 24%,#fff9d6,#ffd33d 48%,#704600 84%)!important;color:#241900!important;border-color:#fff0a4!important;box-shadow:0 0 0 2px rgba(255,255,255,.18) inset,0 0 24px rgba(255,211,61,.66),3px 3px 0 rgba(0,0,0,.54)!important}
#nodes .node.boss{background:radial-gradient(circle at 35% 24%,#fff2ad,#252525 44%,#000000 84%)!important;color:#ffe26b!important;border-color:#ffda4b!important;box-shadow:0 0 0 2px rgba(255,255,255,.12) inset,0 0 36px rgba(255,218,75,.86),3px 3px 0 rgba(0,0,0,.62)!important}
#nodes .node .i-stroke{stroke:currentColor!important;fill:none!important;stroke-width:4.5!important;stroke-linecap:round!important;stroke-linejoin:round!important}
#nodes .node .i-fill{fill:currentColor!important;stroke:none!important}
#nodes .node.scanReady .scanParticles{top:-34px!important;width:118px!important;height:46px!important;opacity:0!important;filter:drop-shadow(0 0 10px #fff)!important}
#nodes .node.scanReady:hover .scanParticles{opacity:1!important}
#nodes .node.scanReady .scanParticle{width:10px!important;height:10px!important;bottom:0!important;background:var(--scan-color)!important;box-shadow:0 0 10px #fff,0 0 18px var(--scan-color),0 0 30px var(--scan-color)!important;opacity:0!important;animation:scanParticleRise 1.35s ease-in-out infinite!important}
#nodes .node.scanReady .scanParticle.type-Data{--scan-color:#2c9cff!important}
#nodes .node.scanReady .scanParticle.type-Virus{--scan-color:#ff304f!important}
#nodes .node.scanReady .scanParticle.type-Vacuna{--scan-color:#35f06a!important}
#nodes .node.scanReady .scanParticle:nth-child(1){left:25px!important;animation-delay:0s!important}
#nodes .node.scanReady .scanParticle:nth-child(2){left:39px!important;animation-delay:.18s!important}
#nodes .node.scanReady .scanParticle:nth-child(3){left:53px!important;animation-delay:.36s!important}
#nodes .node.scanReady .scanParticle:nth-child(4){left:66px!important;animation-delay:.08s!important}
#nodes .node.scanReady .scanParticle:nth-child(5){left:80px!important;animation-delay:.26s!important}
#nodes .node.scanReady .scanParticle:nth-child(6){left:94px!important;animation-delay:.44s!important}
@keyframes scanParticleRise{0%{transform:translateY(16px) scale(.55);opacity:0}18%{opacity:1}62%{opacity:1;filter:brightness(1.8)}100%{transform:translateY(-26px) scale(1.25);opacity:0}}
/* v99 digital route nodes + stable scan FX */
#nodes .node{border-radius:50%!important;border:4px solid #ff5aa6!important;background:radial-gradient(circle at 38% 30%,#dcff86 0 36%,#86ef45 37% 62%,#24912f 63% 100%)!important;color:#08120b!important;box-shadow:0 0 0 4px #ffe861 inset,0 0 0 7px rgba(255,78,159,.95),0 0 18px rgba(67,255,111,.7),3px 3px 0 rgba(0,0,0,.58)!important;overflow:visible!important}
#nodes .node .nodeGlyph,#nodes .node .nodeGlyph svg,#nodes .node .nodeGlyph *{color:#08120b!important;fill:currentColor!important;stroke:currentColor!important}
#nodes .node .i-stroke{fill:none!important;stroke:currentColor!important;stroke-width:4.6!important;stroke-linecap:round!important;stroke-linejoin:round!important}
#nodes .node .i-fill{fill:currentColor!important;stroke:none!important}
#nodes .node.start{background:radial-gradient(circle at 38% 30%,#f3ffb2,#65f08c 58%,#167a3f)!important;box-shadow:0 0 0 4px #ffffff inset,0 0 0 7px #31d979,0 0 18px rgba(49,217,121,.75),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.wild{background:radial-gradient(circle at 38% 30%,#faffff,#79edff 58%,#0c7ca7)!important;box-shadow:0 0 0 4px #ffffff inset,0 0 0 7px #44cbff,0 0 18px rgba(68,203,255,.75),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.combat,#nodes .node.combat.available,#nodes .node.combat.done,#nodes .node.combat.locked{background:radial-gradient(circle at 38% 30%,#eaff8a,#8df04a 58%,#257d2a)!important;border-color:#ff5aa6!important;box-shadow:0 0 0 4px #ffe861 inset,0 0 0 7px #ff5aa6,0 0 22px rgba(141,240,74,.82),3px 3px 0 rgba(0,0,0,.58)!important;color:#061006!important}
#nodes .node.double,#nodes .node.double.available,#nodes .node.double.done,#nodes .node.double.locked{background:radial-gradient(circle at 38% 30%,#fff2a4,#ffc23d 56%,#9c4b00)!important;box-shadow:0 0 0 4px #fff6b8 inset,0 0 0 7px #ff6f9f,0 0 22px rgba(255,194,61,.8),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.elite{background:radial-gradient(circle at 38% 30%,#f3e7ff,#ba70ff 54%,#381276)!important;box-shadow:0 0 0 4px #ffe861 inset,0 0 0 7px #ff5aa6,0 0 24px rgba(186,112,255,.86),3px 3px 0 rgba(0,0,0,.6)!important;color:#13051d!important}
#nodes .node.event{background:radial-gradient(circle at 38% 30%,#ffffff,#d9e7ff 58%,#59657d)!important;box-shadow:0 0 0 4px #ffffff inset,0 0 0 7px #9fb7ff,0 0 18px rgba(217,231,255,.7),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.item{background:radial-gradient(circle at 38% 30%,#fff2ff,#d383ff 58%,#5b168f)!important;box-shadow:0 0 0 4px #ffffff inset,0 0 0 7px #ff7fd6,0 0 20px rgba(211,131,255,.78),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.exchange{background:radial-gradient(circle at 38% 30%,#efffff,#4fe6d7 58%,#08716d)!important;box-shadow:0 0 0 4px #ffffff inset,0 0 0 7px #32cfc2,0 0 20px rgba(79,230,215,.78),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.heal{background:radial-gradient(circle at 38% 30%,#f3fff5,#5df58b 58%,#0d7439)!important;box-shadow:0 0 0 4px #ffffff inset,0 0 0 7px #37de6d,0 0 20px rgba(93,245,139,.78),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.training{background:radial-gradient(circle at 38% 30%,#fffbd4,#ffdb3f 58%,#8a5a00)!important;box-shadow:0 0 0 4px #ffffff inset,0 0 0 7px #ffb52e,0 0 20px rgba(255,219,63,.78),3px 3px 0 rgba(0,0,0,.58)!important}
#nodes .node.boss{background:radial-gradient(circle at 38% 30%,#fff0a8,#3b3b3b 48%,#000 82%)!important;color:#ffe861!important;box-shadow:0 0 0 4px #ffe861 inset,0 0 0 7px #111,0 0 30px rgba(255,232,97,.9),3px 3px 0 rgba(0,0,0,.65)!important}
#nodes .node.available{outline:4px solid rgba(255,255,255,.9)!important;outline-offset:5px!important}
#nodes .node.locked{opacity:.58!important;filter:grayscale(.45) brightness(.78)!important}
#nodes .node.done{opacity:.82!important;filter:saturate(.85) brightness(.88)!important}
#nodes .node.scanReady .scanParticles{position:absolute!important;left:50%!important;top:-44px!important;width:132px!important;height:58px!important;transform:translateX(-50%)!important;pointer-events:none!important;opacity:0!important;filter:drop-shadow(0 0 12px #fff)!important}
#nodes .node.scanReady:hover .scanParticles{opacity:1!important}
#nodes .node.scanReady .scanParticle{--scan-color:#b9ff43;position:absolute!important;bottom:0!important;width:11px!important;height:11px!important;border-radius:50%!important;background:var(--scan-color)!important;box-shadow:0 0 8px #fff,0 0 18px var(--scan-color),0 0 34px var(--scan-color)!important;opacity:0!important;animation:scanParticleRiseV99 1.25s ease-in-out infinite!important}
#nodes .node.scanReady.scan-double .scanParticle,#nodes .node.scanReady.scan-boss .scanParticle{--scan-color:#ffe861}
#nodes .node.scanReady.scan-elite .scanParticle{--scan-color:#ff6bff}
#nodes .node.scanReady .scanParticle:nth-child(1){left:34px!important;animation-delay:0s!important}
#nodes .node.scanReady .scanParticle:nth-child(2){left:52px!important;animation-delay:.17s!important}
#nodes .node.scanReady .scanParticle:nth-child(3){left:70px!important;animation-delay:.34s!important}
#nodes .node.scanReady .scanParticle:nth-child(4){left:84px!important;animation-delay:.08s!important}
#nodes .node.scanReady .scanParticle:nth-child(5){left:100px!important;animation-delay:.25s!important}
#nodes .node.scanReady .scanParticle:nth-child(6){left:116px!important;animation-delay:.42s!important}
@keyframes scanParticleRiseV99{0%{transform:translateY(20px) scale(.45);opacity:0}18%{opacity:1}55%{opacity:1;filter:brightness(2)}100%{transform:translateY(-34px) scale(1.28);opacity:0}}
/* v100 Gabumon battle animation: right side, facing and attacking left */
#battle .fighter.enemy{
  transform:scaleX(-1)!important;
}
@keyframes eDash{
  0%{transform:scaleX(-1) translateX(0) scale(1)}
  35%{transform:scaleX(-1) translateX(36px) translateY(-6px) scale(1.05)}
  100%{transform:scaleX(-1) translateX(0) scale(1)}
}
@keyframes eHit{
  0%,100%{transform:scaleX(-1) translateX(0)}
  25%{transform:scaleX(-1) translateX(8px)}
  50%{transform:scaleX(-1) translateX(-6px)}
  75%{transform:scaleX(-1) translateX(5px)}
}

/* v101 soft scan hover particles */
#nodes .node.scanReady{
  overflow:visible!important;
  z-index:12!important;
}
#nodes .node.scanReady .scanParticles{
  position:absolute!important;
  left:50%!important;
  top:-34px!important;
  width:112px!important;
  height:44px!important;
  transform:translateX(-50%)!important;
  pointer-events:none!important;
  opacity:0!important;
  transition:opacity .12s ease!important;
  filter:none!important;
}
#nodes .node.scanReady:hover .scanParticles{
  opacity:1!important;
}
#nodes .node.scanReady .scanParticle{
  --scan-color:#7dff68;
  position:absolute!important;
  bottom:4px!important;
  width:7px!important;
  height:7px!important;
  border-radius:50%!important;
  background:var(--scan-color)!important;
  box-shadow:0 0 5px #fff,0 0 12px var(--scan-color),0 0 20px var(--scan-color)!important;
  opacity:0!important;
  animation:scanParticleSoftRise 1.15s ease-out infinite!important;
}
#nodes .node.scanReady.scan-combat .scanParticle{--scan-color:#7dff68!important}
#nodes .node.scanReady.scan-double .scanParticle{--scan-color:#ffd95a!important}
#nodes .node.scanReady.scan-elite .scanParticle{--scan-color:#ff6bff!important}
#nodes .node.scanReady.scan-boss .scanParticle{--scan-color:#ffe861!important}
#nodes .node.scanReady .scanParticle:nth-child(1){left:30px!important;animation-delay:0s!important}
#nodes .node.scanReady .scanParticle:nth-child(2){left:43px!important;animation-delay:.20s!important;width:6px!important;height:6px!important}
#nodes .node.scanReady .scanParticle:nth-child(3){left:56px!important;animation-delay:.40s!important}
#nodes .node.scanReady .scanParticle:nth-child(4){left:69px!important;animation-delay:.10s!important;width:5px!important;height:5px!important}
#nodes .node.scanReady .scanParticle:nth-child(5){left:82px!important;animation-delay:.30s!important}
#nodes .node.scanReady .scanParticle:nth-child(6){left:95px!important;animation-delay:.50s!important;width:6px!important;height:6px!important}
@keyframes scanParticleSoftRise{
  0%{transform:translateY(10px) scale(.55);opacity:0}
  18%{opacity:.95}
  58%{opacity:.85;filter:brightness(1.45)}
  100%{transform:translateY(-16px) scale(1.05);opacity:0}
}

/* v102 scan attribute particles */
#nodes .node.scanReady{overflow:visible!important;z-index:12!important}
#nodes .node.scanReady .scanParticles{position:absolute!important;left:50%!important;top:-40px!important;width:136px!important;height:52px!important;transform:translateX(-50%)!important;pointer-events:none!important;opacity:0!important;transition:opacity .12s ease!important;filter:none!important}
#nodes .node.scanReady:hover .scanParticles{opacity:1!important}
#nodes .node.scanReady .scanParticle{--scan-color:#2c9cff;position:absolute!important;bottom:5px!important;width:7px!important;height:7px!important;border-radius:50%!important;background:var(--scan-color)!important;box-shadow:0 0 5px #fff,0 0 12px var(--scan-color),0 0 22px var(--scan-color)!important;opacity:0!important;animation:scanAttributeRise 1.18s ease-out infinite!important}
#nodes .node.scanReady .scanParticle.type-Data{--scan-color:#2c9cff!important}
#nodes .node.scanReady .scanParticle.type-Virus{--scan-color:#ff304f!important}
#nodes .node.scanReady .scanParticle.type-Vacuna{--scan-color:#35f06a!important}
#nodes .node.scanReady .scanParticle:nth-child(1){left:22px!important;animation-delay:0s!important;width:6px!important;height:6px!important}
#nodes .node.scanReady .scanParticle:nth-child(2){left:34px!important;animation-delay:.13s!important}
#nodes .node.scanReady .scanParticle:nth-child(3){left:46px!important;animation-delay:.26s!important;width:5px!important;height:5px!important}
#nodes .node.scanReady .scanParticle:nth-child(4){left:58px!important;animation-delay:.39s!important}
#nodes .node.scanReady .scanParticle:nth-child(5){left:70px!important;animation-delay:.08s!important;width:6px!important;height:6px!important}
#nodes .node.scanReady .scanParticle:nth-child(6){left:82px!important;animation-delay:.21s!important}
#nodes .node.scanReady .scanParticle:nth-child(7){left:94px!important;animation-delay:.34s!important;width:5px!important;height:5px!important}
#nodes .node.scanReady .scanParticle:nth-child(8){left:106px!important;animation-delay:.47s!important}
#nodes .node.scanReady .scanParticle:nth-child(9){left:118px!important;animation-delay:.16s!important;width:6px!important;height:6px!important}
#nodes .node.scanReady .scanParticle:nth-child(10){left:126px!important;animation-delay:.29s!important;width:5px!important;height:5px!important}
#nodes .node.scanReady .scanParticle:nth-child(11){left:14px!important;animation-delay:.33s!important;width:5px!important;height:5px!important}
#nodes .node.scanReady .scanParticle:nth-child(12){left:132px!important;animation-delay:.05s!important;width:6px!important;height:6px!important}
@keyframes scanAttributeRise{0%{transform:translateY(11px) scale(.55);opacity:0}18%{opacity:.95}56%{opacity:.82;filter:brightness(1.55)}100%{transform:translateY(-17px) scale(1.05);opacity:0}}


/* v103 digivice node cleanup: one color per node */
#nodes .node{width:58px!important;height:58px!important;border-radius:50%!important;border:3px solid rgba(255,255,255,.82)!important;background:#303846!important;color:#071018!important;box-shadow:0 0 0 3px rgba(5,12,28,.82),0 0 14px rgba(255,255,255,.22),3px 3px 0 rgba(0,0,0,.55)!important;overflow:visible!important}
#nodes .node .nodeGlyph,#nodes .node .nodeGlyph svg,#nodes .node .nodeGlyph *{color:currentColor!important;fill:currentColor!important;stroke:currentColor!important}
#nodes .node .nodeGlyph svg{width:30px!important;height:30px!important;display:block!important}
#nodes .node .i-stroke{fill:none!important;stroke:currentColor!important;stroke-width:4.8!important;stroke-linecap:round!important;stroke-linejoin:round!important}
#nodes .node .i-fill{fill:currentColor!important;stroke:none!important}
#nodes .node.start{background:#2ee66f!important;border-color:#baffce!important;color:#062411!important}
#nodes .node.wild{background:#35d9ff!important;border-color:#d8fbff!important;color:#042838!important}
#nodes .node.combat{background:#ff3f57!important;border-color:#ffd0d6!important;color:#270008!important}
#nodes .node.double{background:#ff9d23!important;border-color:#ffe0a6!important;color:#2c1400!important}
#nodes .node.elite{background:#a45cff!important;border-color:#ead6ff!important;color:#17002e!important}
#nodes .node.event{background:#d8e2f2!important;border-color:#ffffff!important;color:#172033!important}
#nodes .node.item{background:#ffd84d!important;border-color:#fff6be!important;color:#2b2100!important}
#nodes .node.exchange{background:#22d6c8!important;border-color:#c7fffa!important;color:#052b2d!important}
#nodes .node.heal{background:#48f08b!important;border-color:#d5ffe3!important;color:#062915!important}
#nodes .node.training{background:#4d8dff!important;border-color:#d6e5ff!important;color:#061a3d!important}
#nodes .node.boss{background:#111827!important;border-color:#ffe861!important;color:#ffe861!important;box-shadow:0 0 0 3px #000,0 0 24px rgba(255,232,97,.72),3px 3px 0 rgba(0,0,0,.65)!important}
#nodes .node.available{outline:4px solid rgba(255,255,255,.92)!important;outline-offset:4px!important;filter:brightness(1.08)!important}
#nodes .node.available:hover{filter:brightness(1.18)!important}
#nodes .node.done{opacity:.78!important;filter:saturate(.65) brightness(.82)!important}
#nodes .node.locked{opacity:.46!important;filter:grayscale(.55) brightness(.74)!important}


/* v104 battle actor names + Gabumon faces the opponent */
#battle .fighter.enemy{
  transform:none!important;
}
@keyframes eDash{
  0%{transform:translateX(0) scale(1)}
  35%{transform:translateX(-36px) translateY(-6px) scale(1.05)}
  100%{transform:translateX(0) scale(1)}
}
@keyframes eHit{
  0%,100%{transform:translateX(0)}
  25%{transform:translateX(-8px)}
  50%{transform:translateX(6px)}
  75%{transform:translateX(-5px)}
}


/* v105 scan hover attribute icon, no aura particles */
#nodes .node.scanReady .scanParticles,
#nodes .node.scanReady .scanParticle{display:none!important}
#nodes .node.scanReady .scanRevealIcon{
  position:absolute!important;
  left:50%!important;
  top:-38px!important;
  transform:translateX(-50%) translateY(4px) scale(.92)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:4px!important;
  min-width:30px!important;
  min-height:26px!important;
  padding:4px 6px!important;
  border-radius:7px!important;
  background:rgba(6,12,28,.92)!important;
  border:2px solid rgba(255,255,255,.82)!important;
  box-shadow:0 0 12px rgba(255,255,255,.32),0 4px 0 rgba(0,0,0,.45)!important;
  opacity:0!important;
  pointer-events:none!important;
  transition:opacity .14s ease,transform .14s ease!important;
  z-index:20!important;
}
#nodes .node.scanReady:hover .scanRevealIcon{
  opacity:1!important;
  transform:translateX(-50%) translateY(0) scale(1)!important;
}
#nodes .node.scanReady .scanAttr{
  display:inline-grid!important;
  place-items:center!important;
  width:24px!important;
  height:18px!important;
  border-radius:4px!important;
  color:#061018!important;
  font-size:11px!important;
  font-weight:900!important;
  line-height:1!important;
  text-shadow:none!important;
  box-shadow:0 0 8px var(--scan-chip),0 0 15px var(--scan-chip)!important;
  background:var(--scan-chip)!important;
}
#nodes .node.scanReady .scanAttr.type-Data{--scan-chip:#2c9cff!important}
#nodes .node.scanReady .scanAttr.type-Virus{--scan-chip:#ff304f!important}
#nodes .node.scanReady .scanAttr.type-Vacuna{--scan-chip:#35f06a!important}
#nodes .node.scanReady .scanEventIcon{
  color:#fff!important;
  font-size:18px!important;
  font-weight:900!important;
  text-shadow:0 0 10px #fff!important;
}


/* v106 Digimon custom map nodes: flat unique colors, no inner square */
#nodes .node{
  width:58px!important;
  height:58px!important;
  border-radius:50%!important;
  border:4px solid rgba(255,255,255,.88)!important;
  background:#293241!important;
  color:#061018!important;
  box-shadow:0 0 0 3px rgba(4,8,20,.88),0 0 16px rgba(255,255,255,.20),3px 3px 0 rgba(0,0,0,.58)!important;
  overflow:visible!important;
}
#nodes .node .nodeGlyph{
  width:100%!important;
  height:100%!important;
  display:grid!important;
  place-items:center!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  outline:0!important;
  padding:0!important;
  margin:0!important;
  transform:none!important;
}
#nodes .node .nodeGlyph svg{
  width:34px!important;
  height:34px!important;
  display:block!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
#nodes .node .nodeGlyph *,
#nodes .node .nodeGlyph svg *{
  color:currentColor!important;
  fill:currentColor!important;
  stroke:currentColor!important;
  background:transparent!important;
  box-shadow:none!important;
}
#nodes .node .i-stroke{fill:none!important;stroke:currentColor!important;stroke-width:4.6!important;stroke-linecap:round!important;stroke-linejoin:round!important}
#nodes .node .i-fill{fill:currentColor!important;stroke:none!important}
#nodes .node.start{background:#2ee66f!important;border-color:#caffd7!important;color:#052111!important}
#nodes .node.wild{background:#19c8ff!important;border-color:#d8f8ff!important;color:#032436!important}
#nodes .node.combat{background:#ff314f!important;border-color:#ffd1d8!important;color:#260006!important}
#nodes .node.double{background:#ff9824!important;border-color:#ffe0a8!important;color:#2b1200!important}
#nodes .node.elite{background:#8f55ff!important;border-color:#eadbff!important;color:#16002d!important}
#nodes .node.event{background:#cfd8e8!important;border-color:#ffffff!important;color:#111827!important}
#nodes .node.item{background:#ffd84d!important;border-color:#fff6b8!important;color:#2c2200!important}
#nodes .node.exchange{background:#18d2bf!important;border-color:#c7fff7!important;color:#032c2d!important}
#nodes .node.heal{background:#47ec83!important;border-color:#d6ffe2!important;color:#052713!important}
#nodes .node.training{background:#4b86ff!important;border-color:#dbe7ff!important;color:#061a3c!important}
#nodes .node.boss{background:#161616!important;border-color:#ffe861!important;color:#ffe861!important;box-shadow:0 0 0 3px #000,0 0 24px rgba(255,232,97,.78),3px 3px 0 rgba(0,0,0,.68)!important}
#nodes .node.available{outline:4px solid rgba(255,255,255,.92)!important;outline-offset:4px!important;filter:brightness(1.08)!important}
#nodes .node.available:hover{filter:brightness(1.18)!important}
#nodes .node.done{opacity:.78!important;filter:saturate(.64) brightness(.82)!important}
#nodes .node.locked{opacity:.44!important;filter:grayscale(.58) brightness(.76)!important}


/* v107 scan hover node labels */
#nodes .node.scanReady .scanNodeIcon{
  color:#f7f0d8!important;
  font-size:11px!important;
  font-weight:900!important;
  letter-spacing:0!important;
  white-space:nowrap!important;
  text-shadow:0 0 8px rgba(255,255,255,.55)!important;
}
#nodes .node.scanReady .scan-node-item{color:#ffd84d!important}
#nodes .node.scanReady .scan-node-wild{color:#19c8ff!important}
#nodes .node.scanReady .scan-node-heal{color:#47ec83!important}
#nodes .node.scanReady .scan-node-training{color:#4b86ff!important}
#nodes .node.scanReady .scan-node-exchange{color:#18d2bf!important}
#nodes .node.scanReady .scan-node-event{color:#cfd8e8!important}
#nodes .node.scanReady .scan-node-combat{color:#ff314f!important}
#nodes .node.scanReady .scan-node-double{color:#ff9824!important}
#nodes .node.scanReady .scan-node-elite{color:#8f55ff!important}
#nodes .node.scanReady .scan-node-boss{color:#ffe861!important}


/* v108 final node palette: exact requested colors, no inner square */
#nodes .node{
  width:58px!important;
  height:58px!important;
  border-radius:50%!important;
  border:0!important;
  background:#2F80ED!important;
  color:#061018!important;
  box-shadow:0 0 0 4px rgba(255,255,255,.78),0 0 0 7px rgba(5,12,28,.82),0 0 18px rgba(255,255,255,.18),3px 3px 0 rgba(0,0,0,.58)!important;
  overflow:visible!important;
}
#nodes .node .nodeGlyph{
  width:100%!important;
  height:100%!important;
  display:grid!important;
  place-items:center!important;
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  box-shadow:none!important;
  outline:0!important;
  padding:0!important;
  margin:0!important;
  transform:none!important;
}
#nodes .node .nodeGlyph svg{
  width:33px!important;
  height:33px!important;
  display:block!important;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
#nodes .node .nodeGlyph *,
#nodes .node .nodeGlyph svg *{
  color:currentColor!important;
  fill:currentColor!important;
  stroke:currentColor!important;
  background:transparent!important;
  box-shadow:none!important;
}
#nodes .node .i-stroke{fill:none!important;stroke:currentColor!important;stroke-width:4.6!important;stroke-linecap:round!important;stroke-linejoin:round!important}
#nodes .node .i-fill{fill:currentColor!important;stroke:none!important}
#nodes .node.start{background:#6EE7B7!important;color:#052111!important}
#nodes .node.combat{background:#2F80ED!important;color:#03152f!important}
#nodes .node.double{background:#00B4D8!important;color:#022833!important}
#nodes .node.elite{background:#8E44FF!important;color:#16002d!important}
#nodes .node.event{background:#F2A900!important;color:#2c1d00!important}
#nodes .node.item{background:#FFD166!important;color:#2c2200!important}
#nodes .node.heal{background:#2ECC71!important;color:#052713!important}
#nodes .node.training{background:#FF7A1A!important;color:#2b1000!important}
#nodes .node.exchange{background:#4DD0E1!important;color:#052b2f!important}
#nodes .node.wild{background:#A3E635!important;color:#182500!important}
#nodes .node.boss{background:#D62828!important;color:#2a0000!important}
#nodes .node.available{outline:4px solid rgba(255,255,255,.95)!important;outline-offset:4px!important;filter:brightness(1.1)!important}
#nodes .node.available:hover{filter:brightness(1.2)!important}
#nodes .node.done{opacity:.78!important;filter:saturate(.65) brightness(.82)!important}
#nodes .node.locked{opacity:.44!important;filter:grayscale(.58) brightness(.76)!important}


/* v109 emoji node icons: exact user requested symbols, circle-only nodes */
#nodes .node{
  border-radius:50%!important;
  clip-path:circle(50% at 50%)!important;
  overflow:visible!important;
  background-image:none!important;
}
#nodes .node .nodeGlyph{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  height:100%!important;
  border:0!important;
  outline:0!important;
  background:transparent!important;
  background-image:none!important;
  box-shadow:none!important;
  color:inherit!important;
  text-shadow:none!important;
  transform:none!important;
  pointer-events:none!important;
}
#nodes .node .nodeGlyph svg,
#nodes .node .nodeGlyph svg *,
#nodes .node .nodeGlyph .i-fill,
#nodes .node .nodeGlyph .i-stroke{
  display:none!important;
}
#nodes .node .nodeEmoji{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  height:100%!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif!important;
  font-size:25px!important;
  line-height:1!important;
  color:inherit!important;
  filter:drop-shadow(0 1px 0 rgba(255,255,255,.32)) drop-shadow(0 3px 4px rgba(0,0,0,.55))!important;
}
#nodes .node.start .nodeEmoji{font-size:24px!important}
#nodes .node.boss .nodeEmoji{font-size:26px!important}
#nodes .node.combat{--node:#2F80ED!important;--node-rgb:47,128,237!important;color:#eef7ff!important}
#nodes .node.double{--node:#00B4D8!important;--node-rgb:0,180,216!important;color:#ecfdff!important}
#nodes .node.elite{--node:#8E44FF!important;--node-rgb:142,68,255!important;color:#fbf7ff!important}
#nodes .node.event{--node:#F2A900!important;--node-rgb:242,169,0!important;color:#241600!important}
#nodes .node.item{--node:#FFD166!important;--node-rgb:255,209,102!important;color:#241800!important}
#nodes .node.heal{--node:#2ECC71!important;--node-rgb:46,204,113!important;color:#effff5!important}
#nodes .node.training{--node:#FF7A1A!important;--node-rgb:255,122,26!important;color:#fff8f0!important}
#nodes .node.exchange{--node:#4DD0E1!important;--node-rgb:77,208,225!important;color:#042326!important}
#nodes .node.wild{--node:#A3E635!important;--node-rgb:163,230,53!important;color:#142000!important}
#nodes .node.boss{--node:#D62828!important;--node-rgb:214,40,40!important;color:#fff4f4!important}
#nodes .node::before{
  border-radius:50%!important;
  background:
    radial-gradient(circle at 38% 30%,rgba(255,255,255,.28),transparent 34%),
    radial-gradient(circle,rgba(var(--node-rgb),.95) 0 47%,rgba(var(--node-rgb),.62) 48% 63%,rgba(255,255,255,.16) 64% 72%,transparent 73%)!important;
  box-shadow:
    inset 0 0 0 2px rgba(255,255,255,.24),
    inset 0 0 18px rgba(0,0,0,.35),
    0 0 15px rgba(var(--node-rgb),.48)!important;
}


/* v110 final flat node colors: one circle, one requested emoji */
#nodes .node,
#nodes .node.available,
#nodes .node.done,
#nodes .node.locked{
  border-radius:50%!important;
  clip-path:circle(50% at 50%)!important;
  border:0!important;
  outline:0!important;
  background:var(--node)!important;
  background-image:none!important;
  color:#fff!important;
  box-shadow:
    inset 0 0 0 3px rgba(255,255,255,.20),
    inset 0 -10px 18px rgba(0,0,0,.20),
    0 0 0 2px rgba(var(--node-rgb),.45),
    0 0 16px rgba(var(--node-rgb),.55)!important;
}
#nodes .node.available{
  cursor:pointer!important;
  box-shadow:
    inset 0 0 0 3px rgba(255,255,255,.34),
    inset 0 -10px 18px rgba(0,0,0,.18),
    0 0 0 4px rgba(var(--node-rgb),.58),
    0 0 20px rgba(var(--node-rgb),.72)!important;
}
#nodes .node.done{
  opacity:.72!important;
  filter:saturate(.75) brightness(.85)!important;
}
#nodes .node.locked{
  opacity:.45!important;
  filter:grayscale(.45) brightness(.75)!important;
}
#nodes .node::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  border-radius:50%!important;
  background:radial-gradient(circle at 36% 28%,rgba(255,255,255,.30),transparent 31%)!important;
  box-shadow:none!important;
  pointer-events:none!important;
}
#nodes .node .nodeGlyph,
#nodes .node .nodeGlyph *{
  background:transparent!important;
  background-image:none!important;
  box-shadow:none!important;
  border:0!important;
  outline:0!important;
  text-shadow:none!important;
}
#nodes .node .nodeGlyph svg,
#nodes .node .nodeGlyph path,
#nodes .node .i-fill,
#nodes .node .i-stroke{
  display:none!important;
  visibility:hidden!important;
}
#nodes .node .nodeEmoji{
  position:relative!important;
  z-index:2!important;
  font-size:25px!important;
  filter:drop-shadow(0 2px 3px rgba(0,0,0,.55))!important;
}
#nodes .node.event .nodeEmoji,
#nodes .node.item .nodeEmoji,
#nodes .node.training .nodeEmoji,
#nodes .node.exchange .nodeEmoji,
#nodes .node.wild .nodeEmoji{
  color:inherit!important;
}


/* v115 scan always visible and exact node palette */
#nodes .node.combat,#nodes .node.combat.available,#nodes .node.combat.done,#nodes .node.combat.locked{--node:#2F80ED!important;--node-rgb:47,128,237!important;background:#2F80ED!important;color:#fff!important}
#nodes .node.double,#nodes .node.double.available,#nodes .node.double.done,#nodes .node.double.locked{--node:#00B4D8!important;--node-rgb:0,180,216!important;background:#00B4D8!important;color:#fff!important}
#nodes .node.elite,#nodes .node.elite.available,#nodes .node.elite.done,#nodes .node.elite.locked{--node:#8E44FF!important;--node-rgb:142,68,255!important;background:#8E44FF!important;color:#fff!important}
#nodes .node.event,#nodes .node.event.available,#nodes .node.event.done,#nodes .node.event.locked{--node:#F2A900!important;--node-rgb:242,169,0!important;background:#F2A900!important;color:#241600!important}
#nodes .node.item,#nodes .node.item.available,#nodes .node.item.done,#nodes .node.item.locked{--node:#FFD166!important;--node-rgb:255,209,102!important;background:#FFD166!important;color:#241800!important}
#nodes .node.heal,#nodes .node.heal.available,#nodes .node.heal.done,#nodes .node.heal.locked{--node:#2ECC71!important;--node-rgb:46,204,113!important;background:#2ECC71!important;color:#fff!important}
#nodes .node.training,#nodes .node.training.available,#nodes .node.training.done,#nodes .node.training.locked{--node:#FF7A1A!important;--node-rgb:255,122,26!important;background:#FF7A1A!important;color:#fff!important}
#nodes .node.exchange,#nodes .node.exchange.available,#nodes .node.exchange.done,#nodes .node.exchange.locked{--node:#4DD0E1!important;--node-rgb:77,208,225!important;background:#4DD0E1!important;color:#042326!important}
#nodes .node.wild,#nodes .node.wild.available,#nodes .node.wild.done,#nodes .node.wild.locked{--node:#A3E635!important;--node-rgb:163,230,53!important;background:#A3E635!important;color:#142000!important}
#nodes .node.boss,#nodes .node.boss.available,#nodes .node.boss.done,#nodes .node.boss.locked{--node:#D62828!important;--node-rgb:214,40,40!important;background:#D62828!important;color:#fff!important}
#nodes .node.start,#nodes .node.start.available,#nodes .node.start.done,#nodes .node.start.locked{--node:#5FD18D!important;--node-rgb:95,209,141!important;background:#5FD18D!important;color:#062012!important}

#nodes .node,#nodes .node.available,#nodes .node.done,#nodes .node.locked{
  width:58px!important;
  height:58px!important;
  border-radius:50%!important;
  clip-path:circle(50% at 50%)!important;
  border:0!important;
  outline:0!important;
  background-image:none!important;
  box-shadow:inset 0 0 0 3px rgba(255,255,255,.22),0 0 0 2px rgba(0,0,0,.62),0 0 15px rgba(var(--node-rgb),.55)!important;
}
#nodes .node.available{
  cursor:pointer!important;
  opacity:1!important;
  filter:none!important;
  box-shadow:inset 0 0 0 3px rgba(255,255,255,.34),0 0 0 3px rgba(var(--node-rgb),.72),0 0 22px rgba(var(--node-rgb),.86)!important;
}
#nodes .node.available:hover{filter:brightness(1.08)!important;transform:translate(-1px,-1px)!important}
#nodes .node.done{opacity:.72!important;filter:saturate(.75) brightness(.82)!important}
#nodes .node.locked{opacity:.42!important;filter:grayscale(.45) brightness(.72)!important}
#nodes .node::before{display:none!important;content:none!important}
#nodes .node .nodeGlyph,#nodes .node .nodeGlyph *{background:transparent!important;background-image:none!important;border:0!important;outline:0!important;box-shadow:none!important}
#nodes .node .nodeGlyph svg,#nodes .node .nodeGlyph path,#nodes .node .i-fill,#nodes .node .i-stroke{display:none!important;visibility:hidden!important}
#nodes .node .nodeEmoji{position:relative!important;z-index:3!important;color:inherit!important;font-size:25px!important;line-height:1!important;background:transparent!important;filter:drop-shadow(0 2px 3px rgba(0,0,0,.55))!important}

#nodes .node.scanReady{overflow:visible!important;z-index:22!important}
#nodes .node.scanReady .scanRevealIcon{
  position:absolute!important;
  left:50%!important;
  top:-48px!important;
  transform:translateX(-50%)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:5px!important;
  width:max-content!important;
  max-width:210px!important;
  min-height:28px!important;
  padding:5px 7px!important;
  border-radius:6px!important;
  background:rgba(4,12,28,.97)!important;
  border:2px solid rgba(255,255,255,.88)!important;
  box-shadow:0 0 13px rgba(255,255,255,.38),0 5px 0 rgba(0,0,0,.48)!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:none!important;
  z-index:90!important;
  white-space:nowrap!important;
}
#nodes .node.scanReady .scanAttr{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:48px!important;
  height:20px!important;
  padding:0 7px!important;
  border-radius:4px!important;
  color:#fff!important;
  font-size:10px!important;
  font-weight:900!important;
  line-height:1!important;
  text-shadow:0 1px 0 rgba(0,0,0,.45)!important;
  background:var(--scan-chip)!important;
  box-shadow:0 0 8px var(--scan-chip),0 0 15px var(--scan-chip)!important;
}
#nodes .node.scanReady .scanAttr.type-Data{--scan-chip:#2F80ED!important}
#nodes .node.scanReady .scanAttr.type-Virus{--scan-chip:#D62828!important}
#nodes .node.scanReady .scanAttr.type-Vacuna{--scan-chip:#2ECC71!important}
#nodes .node.scanReady .scanAttr.type-Unknown{--scan-chip:#8E44FF!important}
#nodes .node.scanReady .scanNodeIcon{color:#fff!important;font-size:11px!important;font-weight:900!important;letter-spacing:0!important;text-shadow:0 0 8px currentColor!important}
#nodes .node.scanReady .scan-node-item{color:#FFD166!important}
#nodes .node.scanReady .scan-node-wild{color:#A3E635!important}
#nodes .node.scanReady .scan-node-heal{color:#2ECC71!important}
#nodes .node.scanReady .scan-node-training{color:#FF7A1A!important}
#nodes .node.scanReady .scan-node-exchange{color:#4DD0E1!important}
#nodes .node.scanReady .scan-node-event{color:#F2A900!important}
#nodes .node.scanReady .scan-node-combat{color:#2F80ED!important}
#nodes .node.scanReady .scan-node-double{color:#00B4D8!important}
#nodes .node.scanReady .scan-node-elite{color:#8E44FF!important}
#nodes .node.scanReady .scan-node-boss{color:#D62828!important}


/* v116 fix scan clipping and non-sliding hover */
#nodes .node,
#nodes .node.available,
#nodes .node.done,
#nodes .node.locked,
#nodes .node.scanReady{
  clip-path:none!important;
  overflow:visible!important;
  border-radius:50%!important;
  transform:none!important;
  transform-origin:center center!important;
}
#nodes .node.available:hover,
#nodes .node.scanReady.available:hover{
  transform:scale(1.06)!important;
  filter:brightness(1.16) saturate(1.08)!important;
  box-shadow:
    inset 0 0 0 3px rgba(255,255,255,.38),
    0 0 0 3px rgba(var(--node-rgb),.80),
    0 0 26px rgba(var(--node-rgb),.95)!important;
}
#nodes .node.scanReady .scanRevealIcon,
#nodes .node.scanReady:hover .scanRevealIcon{
  display:flex!important;
  opacity:1!important;
  visibility:visible!important;
  pointer-events:none!important;
  top:-52px!important;
  transform:translateX(-50%)!important;
  z-index:120!important;
}
#nodes .node.scanReady .scanAttr{
  min-width:52px!important;
  height:21px!important;
  font-size:10px!important;
}


/* v117 centered nodes, no aura, stable hover */
#nodes .node,
#nodes .node.available,
#nodes .node.done,
#nodes .node.locked,
#nodes .node.scanReady{
  width:58px!important;
  height:58px!important;
  min-width:58px!important;
  min-height:58px!important;
  max-width:58px!important;
  max-height:58px!important;
  margin:-29px 0 0 -29px!important;
  border-radius:50%!important;
  clip-path:none!important;
  overflow:visible!important;
  border:2px solid rgba(4,8,18,.82)!important;
  outline:0!important;
  transform:none!important;
  transform-origin:center center!important;
  transition:filter .12s ease, box-shadow .12s ease, border-color .12s ease!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.18),0 2px 0 rgba(0,0,0,.55)!important;
}
#nodes .node.available{
  cursor:pointer!important;
  opacity:1!important;
  filter:none!important;
  border-color:rgba(255,255,255,.86)!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.22),0 2px 0 rgba(0,0,0,.58)!important;
}
#nodes .node.available:hover,
#nodes .node.scanReady.available:hover{
  transform:none!important;
  filter:brightness(1.18) saturate(1.08)!important;
  border-color:#fff!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.34),0 2px 0 rgba(0,0,0,.58)!important;
}
#nodes .node.done{
  opacity:.72!important;
  filter:saturate(.72) brightness(.82)!important;
}
#nodes .node.locked{
  opacity:.42!important;
  filter:grayscale(.45) brightness(.72)!important;
}
#nodes .node::before,
#nodes .node::after{
  box-shadow:none!important;
}
#nodes .node.scanReady .scanRevealIcon,
#nodes .node.scanReady:hover .scanRevealIcon{
  transform:translateX(-50%)!important;
}


/* v118 battle sprite motion and 8-bit damage */
#battle .beam,
#battle .impact,
#battle .battleFxOff{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  animation:none!important;
}

#battle .arena.pAtk .fighterWrap.player{
  animation:v118PlayerApproach .76s cubic-bezier(.16,.84,.24,1) both!important;
  z-index:5!important;
}
#battle .arena.eAtk .fighterWrap.enemy{
  animation:v118EnemyApproach .76s cubic-bezier(.16,.84,.24,1) both!important;
  z-index:5!important;
}
#battle .arena.hitE .fighterWrap.enemy{
  animation:v118EnemyHit .44s steps(4,end) .24s both!important;
}
#battle .arena.hitP .fighterWrap.player{
  animation:v118PlayerHit .44s steps(4,end) .24s both!important;
}
#battle .arena.hitE .fighterWrap.enemy .fighter,
#battle .arena.hitP .fighterWrap.player .fighter{
  animation:v118SpriteFlash .44s steps(3,end) .24s both!important;
}

@keyframes v118PlayerApproach{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  15%{transform:translateX(-24px) translateY(0) scale(.98);filter:brightness(1.1)}
  48%{transform:translateX(clamp(190px,28vw,390px)) translateY(-18px) scale(1.10);filter:brightness(1.45) saturate(1.12)}
  62%{transform:translateX(clamp(150px,22vw,330px)) translateY(-8px) scale(1.04);filter:brightness(1.25)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v118EnemyApproach{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  15%{transform:translateX(24px) translateY(0) scale(.98);filter:brightness(1.1)}
  48%{transform:translateX(clamp(-390px,-28vw,-190px)) translateY(-18px) scale(1.10);filter:brightness(1.45) saturate(1.12)}
  62%{transform:translateX(clamp(-330px,-22vw,-150px)) translateY(-8px) scale(1.04);filter:brightness(1.25)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v118EnemyHit{
  0%,100%{transform:translateX(0)}
  25%{transform:translateX(18px) translateY(-4px)}
  50%{transform:translateX(-12px) translateY(2px)}
  75%{transform:translateX(8px)}
}
@keyframes v118PlayerHit{
  0%,100%{transform:translateX(0)}
  25%{transform:translateX(-18px) translateY(-4px)}
  50%{transform:translateX(12px) translateY(2px)}
  75%{transform:translateX(-8px)}
}
@keyframes v118SpriteFlash{
  0%{filter:brightness(1) drop-shadow(0 6px 10px rgba(0,0,0,.55))}
  30%{filter:brightness(2.4) contrast(1.35) drop-shadow(0 0 0 #fff)}
  58%{filter:brightness(.62) saturate(.8) drop-shadow(0 6px 10px rgba(0,0,0,.55))}
  100%{filter:brightness(1) drop-shadow(0 6px 10px rgba(0,0,0,.55))}
}

#battle .fighter{
  image-rendering:auto!important;
  transform-origin:center bottom!important;
}
#battle .fighterLabel{
  z-index:7!important;
}

#battle .dmg{
  position:absolute!important;
  z-index:30!important;
  min-width:76px!important;
  padding:6px 10px 5px!important;
  text-align:center!important;
  font-family:Consolas,"Courier New",monospace!important;
  font-size:56px!important;
  line-height:.9!important;
  font-weight:1000!important;
  letter-spacing:0!important;
  color:#fff4f4!important;
  background:#0a0e1a!important;
  border:4px solid #ffffff!important;
  box-shadow:5px 5px 0 #000,0 0 0 2px #ff304f inset!important;
  text-shadow:3px 0 0 #000,-3px 0 0 #000,0 3px 0 #000,0 -3px 0 #000!important;
  animation:v118DamagePop .9s steps(5,end) forwards!important;
}
#battle .dmg.crit{
  color:#ffe861!important;
  border-color:#ffe861!important;
  box-shadow:5px 5px 0 #000,0 0 0 2px #ff304f inset,0 0 18px rgba(255,232,97,.65)!important;
}
#battle .onEnemy.dmg{left:68%!important;top:26%!important}
#battle .onPlayer.dmg{left:19%!important;top:28%!important}
@keyframes v118DamagePop{
  0%{opacity:0;transform:translateY(16px) scale(.72)}
  15%{opacity:1;transform:translateY(0) scale(1.12)}
  36%{opacity:1;transform:translateY(-8px) scale(1)}
  70%{opacity:1;transform:translateY(-24px) scale(.96)}
  100%{opacity:0;transform:translateY(-44px) scale(.92)}
}

#battle .call{
  z-index:31!important;
  padding:4px 8px!important;
  font-family:Consolas,"Courier New",monospace!important;
  font-size:20px!important;
  font-weight:1000!important;
  color:#10131f!important;
  background:#ffe861!important;
  border:3px solid #fff!important;
  box-shadow:4px 4px 0 #000!important;
  text-shadow:none!important;
  animation:v118CallPop .78s steps(4,end) forwards!important;
}
#battle .onEnemy.call{left:69%!important;top:17%!important}
#battle .onPlayer.call{left:20%!important;top:19%!important}
@keyframes v118CallPop{
  0%{opacity:0;transform:translateY(10px)}
  20%,70%{opacity:1;transform:translateY(0)}
  100%{opacity:0;transform:translateY(-20px)}
}


/* v119 contact melee and Agumon fireball */
#battle .arena.pAtk .fighterWrap.player{
  animation:v119PlayerContact .72s cubic-bezier(.16,.84,.24,1) both!important;
}
#battle .arena.eAtk .fighterWrap.enemy{
  animation:v119EnemyContact .72s cubic-bezier(.16,.84,.24,1) both!important;
}
@keyframes v119PlayerContact{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  16%{transform:translateX(-18px) translateY(0) scale(.99);filter:brightness(1.08)}
  44%{transform:translateX(clamp(130px,18vw,260px)) translateY(-12px) scale(1.06);filter:brightness(1.35) saturate(1.08)}
  58%{transform:translateX(clamp(104px,14vw,218px)) translateY(-4px) scale(1.02);filter:brightness(1.18)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v119EnemyContact{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  16%{transform:translateX(18px) translateY(0) scale(.99);filter:brightness(1.08)}
  44%{transform:translateX(clamp(-260px,-18vw,-130px)) translateY(-12px) scale(1.06);filter:brightness(1.35) saturate(1.08)}
  58%{transform:translateX(clamp(-218px,-14vw,-104px)) translateY(-4px) scale(1.02);filter:brightness(1.18)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}

#battle .arena.fireP .arenaSprites::after{
  content:""!important;
  position:absolute!important;
  z-index:6!important;
  left:28%!important;
  top:43%!important;
  width:34px!important;
  height:34px!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle,#fff 0 18%,#ffe861 19% 42%,#ff7a1a 43% 66%,#d62828 67% 100%)!important;
  box-shadow:0 0 10px #fff,0 0 22px #ff7a1a,0 0 34px #d62828!important;
  animation:v119Fireball .58s steps(8,end) both!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  content:""!important;
  position:absolute!important;
  z-index:9!important;
  left:50%!important;
  top:38%!important;
  width:92px!important;
  height:92px!important;
  border-radius:50%!important;
  transform:translate(-50%,-50%) scale(.2)!important;
  background:
    radial-gradient(circle,#fff 0 10%,#ffe861 11% 28%,#ff7a1a 29% 52%,rgba(214,40,40,.82) 53% 72%,transparent 73%)!important;
  box-shadow:0 0 18px #fff,0 0 34px #ff7a1a,0 0 48px #d62828!important;
  pointer-events:none!important;
  animation:v119FireImpact .58s steps(6,end) .30s both!important;
}
@keyframes v119Fireball{
  0%{opacity:0;transform:translateX(0) translateY(12px) scale(.55)}
  12%{opacity:1;transform:translateX(22px) translateY(4px) scale(.85)}
  70%{opacity:1;transform:translateX(clamp(390px,43vw,760px)) translateY(-18px) scale(1.05)}
  100%{opacity:0;transform:translateX(clamp(430px,46vw,820px)) translateY(-20px) scale(.55)}
}
@keyframes v119FireImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.15)}
  18%{opacity:1;transform:translate(-50%,-50%) scale(.75)}
  45%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.55)}
}

#battle .arena.fireP.pAtk .fighterWrap.player{
  animation:v119PlayerCast .72s cubic-bezier(.16,.84,.24,1) both!important;
}
@keyframes v119PlayerCast{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  20%{transform:translateX(-18px) translateY(0) scale(.98);filter:brightness(1.15)}
  38%{transform:translateX(44px) translateY(-8px) scale(1.04);filter:brightness(1.35)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}


/* v120 current sprite timing polish */
#battle .arena.pAtk .fighterWrap.player{
  animation:v120PlayerContact .82s cubic-bezier(.16,.84,.24,1) both!important;
}
#battle .arena.eAtk .fighterWrap.enemy{
  animation:v120EnemyContact .82s cubic-bezier(.16,.84,.24,1) both!important;
}
#battle .arena.fireP.pAtk .fighterWrap.player{
  animation:v120PlayerCast .82s cubic-bezier(.16,.84,.24,1) both!important;
}
@keyframes v120PlayerContact{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  14%{transform:translateX(-16px) translateY(0) scale(.99);filter:brightness(1.08)}
  42%{transform:translateX(clamp(118px,16vw,235px)) translateY(-10px) scale(1.055);filter:brightness(1.32) saturate(1.08)}
  56%{transform:translateX(clamp(96px,13vw,198px)) translateY(-3px) scale(1.018);filter:brightness(1.16)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v120EnemyContact{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  14%{transform:translateX(16px) translateY(0) scale(.99);filter:brightness(1.08)}
  42%{transform:translateX(clamp(-235px,-16vw,-118px)) translateY(-10px) scale(1.055);filter:brightness(1.32) saturate(1.08)}
  56%{transform:translateX(clamp(-198px,-13vw,-96px)) translateY(-3px) scale(1.018);filter:brightness(1.16)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v120PlayerCast{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  18%{transform:translateX(-16px) translateY(0) scale(.985);filter:brightness(1.16)}
  40%{transform:translateX(38px) translateY(-7px) scale(1.035);filter:brightness(1.34)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
#battle .arena.hitE .fighterWrap.enemy,
#battle .arena.hitP .fighterWrap.player{
  animation-duration:.48s!important;
  animation-delay:.28s!important;
}
#battle .arena.fireP .arenaSprites::after{
  animation-duration:.62s!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  animation-delay:.34s!important;
}

/* v121 imported 30-frame battle sprite timing */
#battle .arena.critAtk.pAtk .fighterWrap.player{animation:v121PlayerCritCast 1.62s steps(8,end) both}
#battle .arena.critAtk.eAtk .fighterWrap.enemy{animation:v121EnemyCritRush 1.62s steps(10,end) both}
@keyframes v121PlayerCritCast{
  0%,35%{transform:translateX(0) translateY(0)}
  48%{transform:translateX(34px) translateY(-3px)}
  70%{transform:translateX(18px) translateY(0)}
  100%{transform:translateX(0) translateY(0)}
}
@keyframes v121EnemyCritRush{
  0%,18%{transform:translateX(0) translateY(0)}
  43%{transform:translateX(-218px) translateY(-4px)}
  61%{transform:translateX(-190px) translateY(0)}
  84%{transform:translateX(-42px) translateY(-2px)}
  100%{transform:translateX(0) translateY(0)}
}

/* v123 runtime chroma + sprite-only contact combat */
#battle canvas.fighter{
  background:transparent!important;
  object-fit:contain!important;
}
#battle .fighter{
  background:transparent!important;
  image-rendering:auto!important;
  transform-origin:center bottom!important;
  will-change:transform,filter!important;
}
#battle .fighterWrap{
  transform-origin:center bottom!important;
  will-change:transform,filter!important;
}
#battle .arena.pAtk:not(.critAtk) .fighterWrap.player{
  animation:v123PlayerStrike .78s cubic-bezier(.14,.82,.2,1) both!important;
  z-index:8!important;
}
#battle .arena.eAtk:not(.critAtk) .fighterWrap.enemy{
  animation:v123EnemyStrike .78s cubic-bezier(.14,.82,.2,1) both!important;
  z-index:8!important;
}
#battle .arena.critAtk.pAtk .fighterWrap.player{
  animation:v123PlayerCrit30 1.58s linear both!important;
  z-index:8!important;
}
#battle .arena.critAtk.eAtk .fighterWrap.enemy{
  animation:v123EnemyCrit30 1.58s linear both!important;
  z-index:8!important;
}
#battle .arena.hitE:not(.critAtk) .fighterWrap.enemy{
  animation:v123EnemyHitNormal .48s steps(5,end) .30s both!important;
}
#battle .arena.hitP:not(.critAtk) .fighterWrap.player{
  animation:v123PlayerHitNormal .48s steps(5,end) .30s both!important;
}
#battle .arena.critAtk.hitE .fighterWrap.enemy{
  animation:v123EnemyHitHeavy .72s steps(6,end) .98s both!important;
}
#battle .arena.critAtk.hitP .fighterWrap.player{
  animation:v123PlayerHitHeavy .72s steps(6,end) .68s both!important;
}
#battle .arena.hitE .fighterWrap.enemy .fighter,
#battle .arena.hitP .fighterWrap.player .fighter{
  animation:v123SpriteHitFlash .42s steps(3,end) .31s both!important;
}
#battle .arena.critAtk.hitE .fighterWrap.enemy .fighter{
  animation:v123SpriteHitFlash .58s steps(4,end) .98s both!important;
}
#battle .arena.critAtk.hitP .fighterWrap.player .fighter{
  animation:v123SpriteHitFlash .58s steps(4,end) .68s both!important;
}
@keyframes v123PlayerStrike{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  16%{transform:translateX(-22px) translateY(0) scale(.985);filter:brightness(1.12)}
  39%{transform:translateX(clamp(168px,22vw,330px)) translateY(-12px) scale(1.07);filter:brightness(1.45) saturate(1.14)}
  46%{transform:translateX(clamp(178px,23vw,350px)) translateY(-12px) scale(1.09);filter:brightness(1.75) saturate(1.22)}
  54%{transform:translateX(clamp(146px,19vw,292px)) translateY(-4px) scale(1.03);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v123EnemyStrike{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  16%{transform:translateX(22px) translateY(0) scale(.985);filter:brightness(1.12)}
  39%{transform:translateX(clamp(-330px,-22vw,-168px)) translateY(-12px) scale(1.07);filter:brightness(1.45) saturate(1.14)}
  46%{transform:translateX(clamp(-350px,-23vw,-178px)) translateY(-12px) scale(1.09);filter:brightness(1.75) saturate(1.22)}
  54%{transform:translateX(clamp(-292px,-19vw,-146px)) translateY(-4px) scale(1.03);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v123PlayerCrit30{
  0%,26%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  35%{transform:translateX(28px) translateY(-4px) scale(1.03);filter:brightness(1.45)}
  52%{transform:translateX(44px) translateY(-7px) scale(1.055);filter:brightness(1.7) saturate(1.2)}
  64%{transform:translateX(18px) translateY(0) scale(1.02);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v123EnemyCrit30{
  0%,15%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  31%{transform:translateX(clamp(-250px,-26vw,-190px)) translateY(-9px) scale(1.07);filter:brightness(1.55) saturate(1.22)}
  45%{transform:translateX(clamp(-345px,-35vw,-255px)) translateY(-13px) scale(1.12);filter:brightness(1.85) saturate(1.3)}
  56%{transform:translateX(clamp(-310px,-31vw,-220px)) translateY(-5px) scale(1.06);filter:brightness(1.35)}
  78%{transform:translateX(clamp(-70px,-8vw,-38px)) translateY(-1px) scale(1.02);filter:brightness(1.12)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v123EnemyHitNormal{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(24px) translateY(-5px)}
  44%{transform:translateX(-10px) translateY(2px)}
  68%{transform:translateX(8px)}
}
@keyframes v123PlayerHitNormal{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-24px) translateY(-5px)}
  44%{transform:translateX(10px) translateY(2px)}
  68%{transform:translateX(-8px)}
}
@keyframes v123EnemyHitHeavy{
  0%,100%{transform:translateX(0)}
  18%{transform:translateX(36px) translateY(-8px) rotate(0deg)}
  42%{transform:translateX(-18px) translateY(3px) rotate(-1deg)}
  70%{transform:translateX(12px) rotate(.5deg)}
}
@keyframes v123PlayerHitHeavy{
  0%,100%{transform:translateX(0)}
  18%{transform:translateX(-36px) translateY(-8px) rotate(0deg)}
  42%{transform:translateX(18px) translateY(3px) rotate(1deg)}
  70%{transform:translateX(-12px) rotate(-.5deg)}
}
@keyframes v123SpriteHitFlash{
  0%{filter:brightness(1) drop-shadow(0 8px 12px rgba(0,0,0,.55))}
  28%{filter:brightness(2.8) contrast(1.4) saturate(.35) drop-shadow(0 0 10px #fff)}
  55%{filter:brightness(.62) contrast(1.2) drop-shadow(0 8px 12px rgba(0,0,0,.55))}
  100%{filter:brightness(1) drop-shadow(0 8px 12px rgba(0,0,0,.55))}
}

/* v124 chroma-copy combat polish: visible projectile travel and stronger contact */
#battle .arena.fireP .arenaSprites::after{
  content:""!important;
  position:absolute!important;
  z-index:9!important;
  left:25%!important;
  top:43%!important;
  width:42px!important;
  height:42px!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle,#fff 0 16%,#ffe861 17% 38%,#ff8a1a 39% 64%,#d62828 65% 100%)!important;
  box-shadow:0 0 10px #fff,0 0 24px #ff8a1a,0 0 42px #d62828!important;
  opacity:0!important;
  animation:v124FireballTravel 1.08s steps(14,end) .34s both!important;
  pointer-events:none!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  content:""!important;
  position:absolute!important;
  z-index:10!important;
  left:50%!important;
  top:39%!important;
  width:116px!important;
  height:116px!important;
  border-radius:50%!important;
  transform:translate(-50%,-50%) scale(.15)!important;
  background:
    radial-gradient(circle,#fff 0 9%,#fff06a 10% 24%,#ff8a1a 25% 48%,rgba(214,40,40,.86) 49% 70%,transparent 71%)!important;
  box-shadow:0 0 20px #fff,0 0 42px #ff8a1a,0 0 68px #d62828!important;
  opacity:0!important;
  animation:v124FireImpact .48s steps(7,end) .98s both!important;
  pointer-events:none!important;
}
#battle .arena.fireP.critAtk.pAtk .fighterWrap.player{
  animation:v124PlayerFireCast 1.58s linear both!important;
}
#battle .arena.critAtk.eAtk .fighterWrap.enemy{
  animation:v124EnemyRushImpact 1.58s linear both!important;
}
#battle .arena.pAtk:not(.critAtk) .fighterWrap.player{
  animation:v124PlayerMelee .78s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .arena.eAtk:not(.critAtk) .fighterWrap.enemy{
  animation:v124EnemyMelee .78s cubic-bezier(.14,.82,.2,1) both!important;
}
@keyframes v124FireballTravel{
  0%{opacity:0;transform:translateX(0) translateY(18px) scale(.45)}
  10%{opacity:1;transform:translateX(42px) translateY(7px) scale(.82)}
  72%{opacity:1;transform:translateX(clamp(430px,43vw,760px)) translateY(-16px) scale(1.08)}
  88%{opacity:1;transform:translateX(clamp(470px,47vw,820px)) translateY(-18px) scale(.78)}
  100%{opacity:0;transform:translateX(clamp(500px,50vw,870px)) translateY(-18px) scale(.3)}
}
@keyframes v124FireImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.12)}
  18%{opacity:1;transform:translate(-50%,-50%) scale(.72)}
  48%{opacity:1;transform:translate(-50%,-50%) scale(1.18)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.55)}
}
@keyframes v124PlayerFireCast{
  0%,22%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  34%{transform:translateX(-18px) translateY(0) scale(.99);filter:brightness(1.25)}
  48%{transform:translateX(34px) translateY(-5px) scale(1.04);filter:brightness(1.58)}
  58%{transform:translateX(26px) translateY(-4px) scale(1.03);filter:brightness(1.75)}
  76%{transform:translateX(8px) translateY(0) scale(1.01);filter:brightness(1.18)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v124EnemyRushImpact{
  0%,14%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  26%{transform:translateX(34px) translateY(0) scale(.99);filter:brightness(1.22)}
  42%{transform:translateX(clamp(-320px,-32vw,-230px)) translateY(-12px) scale(1.09);filter:brightness(1.65)}
  50%{transform:translateX(clamp(-420px,-41vw,-310px)) translateY(-15px) scale(1.14);filter:brightness(1.95)}
  60%{transform:translateX(clamp(-360px,-35vw,-260px)) translateY(-5px) scale(1.07);filter:brightness(1.35)}
  82%{transform:translateX(clamp(-78px,-8vw,-42px)) translateY(0) scale(1.02);filter:brightness(1.12)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v124PlayerMelee{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  16%{transform:translateX(-24px) translateY(0) scale(.98);filter:brightness(1.12)}
  39%{transform:translateX(clamp(210px,25vw,390px)) translateY(-13px) scale(1.08);filter:brightness(1.5)}
  47%{transform:translateX(clamp(226px,27vw,420px)) translateY(-13px) scale(1.1);filter:brightness(1.85)}
  57%{transform:translateX(clamp(158px,19vw,310px)) translateY(-4px) scale(1.03);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v124EnemyMelee{
  0%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
  16%{transform:translateX(24px) translateY(0) scale(.98);filter:brightness(1.12)}
  39%{transform:translateX(clamp(-390px,-25vw,-210px)) translateY(-13px) scale(1.08);filter:brightness(1.5)}
  47%{transform:translateX(clamp(-420px,-27vw,-226px)) translateY(-13px) scale(1.1);filter:brightness(1.85)}
  57%{transform:translateX(clamp(-310px,-19vw,-158px)) translateY(-4px) scale(1.03);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}

/* v125 combat visual scale and impact alignment */
#battle .fighterWrap{
  width:34%!important;
  height:74%!important;
  bottom:26px!important;
  overflow:visible!important;
  align-items:flex-end!important;
  justify-content:center!important;
}
#battle .fighterWrap.player{left:8%!important}
#battle .fighterWrap.enemy{right:8%!important}
#battle .fighter{
  width:clamp(230px,20vw,315px)!important;
  height:clamp(210px,30vh,285px)!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:contain!important;
  object-position:center bottom!important;
  transform-origin:center bottom!important;
}
#battle .fighter.enemy{transform:scaleX(-1)!important}

#battle .arena.pAtk:not(.critAtk) .fighterWrap.player{
  animation:v125PlayerMelee .74s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .arena.eAtk:not(.critAtk) .fighterWrap.enemy{
  animation:v125EnemyMelee .74s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .arena.fireP.critAtk.pAtk .fighterWrap.player{
  animation:v125PlayerFireCast 1.58s linear both!important;
}
#battle .arena.critAtk.eAtk .fighterWrap.enemy{
  animation:v125EnemyRushImpact 1.58s linear both!important;
}

#battle .arena.fireP .arenaSprites::after{
  content:""!important;
  position:absolute!important;
  z-index:12!important;
  left:31%!important;
  top:45%!important;
  width:46px!important;
  height:46px!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle,#fff 0 15%,#fff36d 16% 34%,#ff8a1a 35% 62%,#d62828 63% 100%)!important;
  box-shadow:0 0 10px #fff,0 0 26px #ff8a1a,0 0 46px #d62828!important;
  opacity:0!important;
  pointer-events:none!important;
  animation:v125FireballTravel 1.02s steps(16,end) .34s both!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  content:""!important;
  position:absolute!important;
  z-index:13!important;
  left:50%!important;
  top:42%!important;
  width:128px!important;
  height:128px!important;
  border-radius:50%!important;
  background:
    radial-gradient(circle,#fff 0 9%,#fff36d 10% 24%,#ff8a1a 25% 48%,rgba(214,40,40,.88) 49% 70%,transparent 71%)!important;
  box-shadow:0 0 20px #fff,0 0 42px #ff8a1a,0 0 70px #d62828!important;
  opacity:0!important;
  pointer-events:none!important;
  animation:v125FireImpact .44s steps(7,end) .98s both!important;
}

@keyframes v125PlayerMelee{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  18%{transform:translateX(-20px) translateY(0);filter:brightness(1.12)}
  42%{transform:translateX(clamp(210px,24vw,365px)) translateY(-10px);filter:brightness(1.48)}
  49%{transform:translateX(clamp(228px,26vw,395px)) translateY(-10px);filter:brightness(1.82)}
  59%{transform:translateX(clamp(150px,18vw,275px)) translateY(-3px);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v125EnemyMelee{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  18%{transform:translateX(20px) translateY(0);filter:brightness(1.12)}
  42%{transform:translateX(clamp(-365px,-24vw,-210px)) translateY(-10px);filter:brightness(1.48)}
  49%{transform:translateX(clamp(-395px,-26vw,-228px)) translateY(-10px);filter:brightness(1.82)}
  59%{transform:translateX(clamp(-275px,-18vw,-150px)) translateY(-3px);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v125PlayerFireCast{
  0%,22%{transform:translateX(0) translateY(0);filter:brightness(1)}
  34%{transform:translateX(-18px) translateY(0);filter:brightness(1.24)}
  50%{transform:translateX(32px) translateY(-5px);filter:brightness(1.65)}
  62%{transform:translateX(20px) translateY(-3px);filter:brightness(1.35)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v125EnemyRushImpact{
  0%,14%{transform:translateX(0) translateY(0);filter:brightness(1)}
  25%{transform:translateX(30px) translateY(0);filter:brightness(1.2)}
  42%{transform:translateX(clamp(-320px,-32vw,-230px)) translateY(-11px);filter:brightness(1.58)}
  50%{transform:translateX(clamp(-430px,-42vw,-315px)) translateY(-13px);filter:brightness(1.9)}
  60%{transform:translateX(clamp(-355px,-35vw,-260px)) translateY(-4px);filter:brightness(1.34)}
  82%{transform:translateX(clamp(-70px,-8vw,-40px)) translateY(0);filter:brightness(1.12)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v125FireballTravel{
  0%{opacity:0;left:31%;top:47%;transform:scale(.45)}
  10%{opacity:1;left:36%;top:45%;transform:scale(.82)}
  52%{opacity:1;left:58%;top:41%;transform:scale(1.05)}
  82%{opacity:1;left:70%;top:39%;transform:scale(1.12)}
  96%{opacity:1;left:73%;top:39%;transform:scale(.82)}
  100%{opacity:0;left:74%;top:39%;transform:scale(.25)}
}
@keyframes v125FireImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.12)}
  18%{opacity:1;transform:translate(-50%,-50%) scale(.75)}
  48%{opacity:1;transform:translate(-50%,-50%) scale(1.18)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.55)}
}

#battle .onEnemy.dmg{left:70%!important;top:22%!important}
#battle .onPlayer.dmg{left:20%!important;top:24%!important}
#battle .onEnemy.call{left:71%!important;top:14%!important}
#battle .onPlayer.call{left:21%!important;top:16%!important}

/* v126 fixed caster fireball, enemy facing and arena labels */
#battle .fighter.enemy{
  transform:none!important;
}
#battle .fighterLabel{
  bottom:12px!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  min-width:86px!important;
  max-width:210px!important;
  padding:3px 7px!important;
  font-size:10px!important;
  line-height:1.05!important;
  text-align:center!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  z-index:18!important;
}
#battle .arena.fireP.critAtk.pAtk .fighterWrap.player{
  animation:v126PlayerFireCaster 1.48s linear both!important;
}
#battle .arena.fireP .arenaSprites::after{
  left:34%!important;
  top:43%!important;
  width:50px!important;
  height:50px!important;
  animation:v126FireballTravel .78s steps(16,end) .22s both!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  left:49%!important;
  top:39%!important;
  width:138px!important;
  height:138px!important;
  animation:v126FireImpact .44s steps(7,end) .88s both!important;
}
#battle .arena.critAtk.hitE .fighterWrap.enemy{
  animation:v126EnemyHeavyHit .62s steps(6,end) .86s both!important;
}
#battle .onEnemy.dmg{left:68%!important;top:18%!important}
#battle .onPlayer.dmg{left:18%!important;top:22%!important}
#battle .onEnemy.call{left:69%!important;top:10%!important}
#battle .onPlayer.call{left:19%!important;top:14%!important}

@keyframes v126PlayerFireCaster{
  0%,20%{transform:translateX(0) translateY(0);filter:brightness(1)}
  34%{transform:translateX(-10px) translateY(0);filter:brightness(1.25)}
  47%{transform:translateX(18px) translateY(-4px);filter:brightness(1.62)}
  58%{transform:translateX(10px) translateY(-2px);filter:brightness(1.42)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v126FireballTravel{
  0%{opacity:0;left:34%;top:44%;transform:translate(-50%,-50%) scale(.45)}
  8%{opacity:1;left:37%;top:43%;transform:translate(-50%,-50%) scale(.78)}
  38%{opacity:1;left:52%;top:40%;transform:translate(-50%,-50%) scale(1.02)}
  72%{opacity:1;left:66%;top:38%;transform:translate(-50%,-50%) scale(1.12)}
  92%{opacity:1;left:70%;top:38%;transform:translate(-50%,-50%) scale(.92)}
  100%{opacity:0;left:71%;top:38%;transform:translate(-50%,-50%) scale(.25)}
}
@keyframes v126FireImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.10)}
  16%{opacity:1;transform:translate(-50%,-50%) scale(.68)}
  48%{opacity:1;transform:translate(-50%,-50%) scale(1.18)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.55)}
}
@keyframes v126EnemyHeavyHit{
  0%,100%{transform:translateX(0)}
  18%{transform:translateX(38px) translateY(-7px)}
  44%{transform:translateX(-16px) translateY(3px)}
  70%{transform:translateX(10px)}
}

/* v127 Agumon split critical: caster frames + projectile frames 18-26 */
#battle .fighter.enemy{
  transform:none!important;
}
#battle .arena.fireP .arenaSprites::after{
  display:none!important;
}
#battle .battleProjectile{
  position:absolute!important;
  z-index:16!important;
  pointer-events:none!important;
  width:clamp(150px,18vw,265px)!important;
  height:clamp(120px,16vw,220px)!important;
  object-fit:contain!important;
  object-position:center center!important;
  filter:drop-shadow(0 0 12px rgba(255,232,97,.95)) drop-shadow(0 0 28px rgba(255,122,26,.72))!important;
}
#battle .playerFireProjectile{
  left:37%!important;
  top:42%!important;
  transform:translate(-50%,-50%) scale(.72)!important;
  animation:v127ProjectileToEnemy .78s linear both!important;
}
#battle .arena.fireP.critAtk.pAtk .fighterWrap.player{
  animation:v127AgumonCaster .92s linear both!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  left:49%!important;
  top:39%!important;
  width:148px!important;
  height:148px!important;
  animation:v127FireImpact .42s steps(7,end) 1.30s both!important;
}
#battle .arena.critAtk.hitE .fighterWrap.enemy{
  animation:v127EnemyProjectileHit .62s steps(6,end) 1.28s both!important;
}
#battle .arena.pAtk:not(.critAtk) .fighterWrap.player{
  animation:v127PlayerMeleeContact .74s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .arena.eAtk:not(.critAtk) .fighterWrap.enemy{
  animation:v127EnemyMeleeContact .74s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .fighterLabel{
  bottom:14px!important;
  max-width:220px!important;
  text-overflow:ellipsis!important;
}
@keyframes v127AgumonCaster{
  0%,22%{transform:translateX(0) translateY(0);filter:brightness(1)}
  34%{transform:translateX(-12px) translateY(0);filter:brightness(1.22)}
  58%{transform:translateX(24px) translateY(-4px);filter:brightness(1.62)}
  74%{transform:translateX(12px) translateY(-2px);filter:brightness(1.25)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v127ProjectileToEnemy{
  0%{opacity:0;left:37%;top:42%;transform:translate(-50%,-50%) scale(.52)}
  10%{opacity:1;left:40%;top:41%;transform:translate(-50%,-50%) scale(.70)}
  38%{opacity:1;left:54%;top:39%;transform:translate(-50%,-50%) scale(.92)}
  72%{opacity:1;left:68%;top:37%;transform:translate(-50%,-50%) scale(1.05)}
  96%{opacity:1;left:73%;top:37%;transform:translate(-50%,-50%) scale(.92)}
  100%{opacity:0;left:74%;top:37%;transform:translate(-50%,-50%) scale(.35)}
}
@keyframes v127FireImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.12)}
  16%{opacity:1;transform:translate(-50%,-50%) scale(.78)}
  48%{opacity:1;transform:translate(-50%,-50%) scale(1.24)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.62)}
}
@keyframes v127EnemyProjectileHit{
  0%,100%{transform:translateX(0)}
  18%{transform:translateX(42px) translateY(-8px)}
  44%{transform:translateX(-18px) translateY(3px)}
  70%{transform:translateX(10px)}
}
@keyframes v127PlayerMeleeContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  18%{transform:translateX(-18px) translateY(0);filter:brightness(1.12)}
  42%{transform:translateX(clamp(260px,30vw,455px)) translateY(-10px);filter:brightness(1.5)}
  49%{transform:translateX(clamp(285px,33vw,500px)) translateY(-10px);filter:brightness(1.85)}
  59%{transform:translateX(clamp(190px,22vw,350px)) translateY(-3px);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v127EnemyMeleeContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  18%{transform:translateX(18px) translateY(0);filter:brightness(1.12)}
  42%{transform:translateX(clamp(-455px,-30vw,-260px)) translateY(-10px);filter:brightness(1.5)}
  49%{transform:translateX(clamp(-500px,-33vw,-285px)) translateY(-10px);filter:brightness(1.85)}
  59%{transform:translateX(clamp(-350px,-22vw,-190px)) translateY(-3px);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}

/* v128 fire projectile follows hand-to-enemy line */
#battle .battleProjectile{
  width:clamp(118px,12vw,185px)!important;
  height:clamp(92px,10vw,150px)!important;
}
#battle .playerFireProjectile{
  left:31%!important;
  top:61%!important;
  transform:translate(-50%,-50%) scale(.58)!important;
  animation:v128ProjectileHandLine .82s linear both!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  left:44%!important;
  top:46%!important;
  width:132px!important;
  height:132px!important;
  animation:v128FireImpact .42s steps(7,end) 1.32s both!important;
}
#battle .arena.critAtk.hitE .fighterWrap.enemy{
  animation:v128EnemyProjectileHit .58s steps(6,end) 1.30s both!important;
}
#battle .onEnemy.dmg{left:68%!important;top:25%!important}
#battle .onEnemy.call{left:69%!important;top:17%!important}
@keyframes v128ProjectileHandLine{
  0%{opacity:0;left:31%;top:61%;transform:translate(-50%,-50%) scale(.42)}
  8%{opacity:1;left:34%;top:60%;transform:translate(-50%,-50%) scale(.58)}
  34%{opacity:1;left:47%;top:60%;transform:translate(-50%,-50%) scale(.78)}
  64%{opacity:1;left:60%;top:59%;transform:translate(-50%,-50%) scale(.88)}
  90%{opacity:1;left:69%;top:58%;transform:translate(-50%,-50%) scale(.82)}
  100%{opacity:0;left:71%;top:58%;transform:translate(-50%,-50%) scale(.25)}
}
@keyframes v128FireImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.10)}
  16%{opacity:1;transform:translate(-50%,-50%) scale(.70)}
  48%{opacity:1;transform:translate(-50%,-50%) scale(1.16)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.48)}
}
@keyframes v128EnemyProjectileHit{
  0%,100%{transform:translateX(0)}
  18%{transform:translateX(34px) translateY(-4px)}
  44%{transform:translateX(-14px) translateY(2px)}
  70%{transform:translateX(9px)}
}

/* v129 projectile uses per-frame positions instead of sliding CSS */
#battle .framePathProjectile{
  position:absolute!important;
  z-index:18!important;
  animation:none!important;
  transition:left 82ms linear, top 82ms linear, width 82ms linear, height 82ms linear, transform 82ms linear!important;
  object-fit:contain!important;
  object-position:center center!important;
  pointer-events:none!important;
  filter:drop-shadow(0 0 10px rgba(255,255,255,.85)) drop-shadow(0 0 24px rgba(255,122,26,.75))!important;
}
#battle .playerFireProjectile{
  animation:none!important;
}
#battle .arena.fireP .arenaSprites::after{
  display:none!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  left:48%!important;
  top:40%!important;
  width:150px!important;
  height:150px!important;
  animation:v129FrameImpact .42s steps(7,end) 1.30s both!important;
}
#battle .arena.critAtk.hitE .fighterWrap.enemy{
  animation:v129EnemyFrameProjectileHit .58s steps(6,end) 1.30s both!important;
}
@keyframes v129FrameImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.10)}
  16%{opacity:1;transform:translate(-50%,-50%) scale(.75)}
  48%{opacity:1;transform:translate(-50%,-50%) scale(1.18)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.48)}
}
@keyframes v129EnemyFrameProjectileHit{
  0%,100%{transform:translateX(0)}
  18%{transform:translateX(36px) translateY(-5px)}
  44%{transform:translateX(-15px) translateY(2px)}
  70%{transform:translateX(9px)}
}



/* v130: frame-by-frame contact battle polish */
#battle .fighter.enemy{
  transform:scaleX(-1)!important;
  transform-origin:center center!important;
}
#battle .arena.fireP.critAtk.pAtk .fighterWrap.player{
  animation:v130AgumonCastHold 1.08s linear both!important;
}
#battle .framePathProjectile,
#battle .playerFireProjectile{
  animation:none!important;
  transition:left 82ms linear, top 82ms linear, width 82ms linear, height 82ms linear, transform 82ms linear, opacity 82ms linear!important;
  transform-origin:center center!important;
}
#battle .arena.fireP .fighterWrap.enemy::before{
  left:49%!important;
  top:36%!important;
  width:156px!important;
  height:156px!important;
  animation:v130FireImpact .44s steps(7,end) 1.30s both!important;
}
#battle .arena.critAtk.hitE .fighterWrap.enemy{
  animation:v130EnemyProjectileHit .58s steps(6,end) 1.28s both!important;
}
#battle .arena.pAtk:not(.critAtk) .fighterWrap.player{
  animation:v130PlayerMeleeContact .74s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .arena.eAtk:not(.critAtk) .fighterWrap.enemy{
  animation:v130EnemyMeleeContact .74s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .onEnemy.dmg{left:70%!important;top:18%!important}
#battle .onEnemy.call{left:70%!important;top:10%!important}
@keyframes v130AgumonCastHold{
  0%,20%{transform:translateX(0) translateY(0);filter:brightness(1)}
  38%{transform:translateX(-10px) translateY(0);filter:brightness(1.25)}
  58%{transform:translateX(18px) translateY(-3px);filter:brightness(1.62)}
  84%{transform:translateX(14px) translateY(-3px);filter:brightness(1.28)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v130FireImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.10)}
  16%{opacity:1;transform:translate(-50%,-50%) scale(.72)}
  50%{opacity:1;transform:translate(-50%,-50%) scale(1.18)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.50)}
}
@keyframes v130EnemyProjectileHit{
  0%,100%{transform:translateX(0)}
  16%{transform:translateX(28px) translateY(-4px)}
  42%{transform:translateX(-20px) translateY(3px)}
  70%{transform:translateX(8px)}
}
@keyframes v130PlayerMeleeContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  18%{transform:translateX(-16px) translateY(0);filter:brightness(1.12)}
  44%{transform:translateX(clamp(300px,34vw,535px)) translateY(-8px);filter:brightness(1.5)}
  52%{transform:translateX(clamp(330px,37vw,575px)) translateY(-8px);filter:brightness(1.85)}
  64%{transform:translateX(clamp(210px,24vw,375px)) translateY(-3px);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v130EnemyMeleeContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  18%{transform:translateX(16px) translateY(0);filter:brightness(1.12)}
  44%{transform:translateX(clamp(-535px,-34vw,-300px)) translateY(-8px);filter:brightness(1.5)}
  52%{transform:translateX(clamp(-575px,-37vw,-330px)) translateY(-8px);filter:brightness(1.85)}
  64%{transform:translateX(clamp(-375px,-24vw,-210px)) translateY(-3px);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}


/* v131: impact-synced melee/projectile combat layer */
#battle .arena{
  --meleeDx:360px;
  --meleePrepDx:-18px;
  --targetReactX:18px;
}
#battle .arena.hitE .fighterWrap.enemy,
#battle .arena.hitP .fighterWrap.player,
#battle .arena.hitE .fighterWrap.enemy .fighter,
#battle .arena.hitP .fighterWrap.player .fighter{
  animation:none!important;
}
#battle .arena.meleeAtk.pAtk .fighterWrap.player,
#battle .arena.meleeAtk.eAtk .fighterWrap.enemy{
  animation:v131MeleeContact .86s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .arena.meleeAtk.critAtk.pAtk .fighterWrap.player,
#battle .arena.meleeAtk.critAtk.eAtk .fighterWrap.enemy{
  animation:v131MeleeCriticalContact 1.12s cubic-bezier(.12,.88,.18,1) both!important;
}
#battle .arena.projectileAtk.pAtk .fighterWrap.player,
#battle .arena.projectileAtk.eAtk .fighterWrap.enemy{
  animation:v131ProjectileCastHold 1.08s linear both!important;
}
#battle .arena.impactNow.hitE .fighterWrap.enemy .fighter,
#battle .arena.impactNow.hitP .fighterWrap.player .fighter{
  animation:v131TargetImpact .38s steps(4,end) both!important;
}
#battle .arena.impactNow.critAtk.hitE .fighterWrap.enemy .fighter,
#battle .arena.impactNow.critAtk.hitP .fighterWrap.player .fighter{
  animation:v131TargetCriticalImpact .46s steps(5,end) both!important;
}
#battle .framePathProjectile,
#battle .playerFireProjectile{
  animation:none!important;
  transition:left 82ms linear, top 82ms linear, width 82ms linear, height 82ms linear, transform 82ms linear, opacity 82ms linear!important;
}
#battle .fighter.enemy{
  transform:scaleX(-1)!important;
  transform-origin:center center!important;
}
@keyframes v131MeleeContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  18%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.12)}
  50%{transform:translateX(var(--meleeDx)) translateY(-8px);filter:brightness(1.45)}
  58%{transform:translateX(var(--meleeDx)) translateY(-8px);filter:brightness(1.85)}
  70%{transform:translateX(calc(var(--meleeDx) * .55)) translateY(-3px);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v131MeleeCriticalContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.18)}
  48%{transform:translateX(var(--meleeDx)) translateY(-10px) scale(1.04);filter:brightness(1.7)}
  58%{transform:translateX(var(--meleeDx)) translateY(-10px) scale(1.08);filter:brightness(2.05)}
  68%{transform:translateX(calc(var(--meleeDx) * .70)) translateY(-5px) scale(1.02);filter:brightness(1.35)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v131ProjectileCastHold{
  0%,24%{transform:translateX(0) translateY(0);filter:brightness(1)}
  44%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.22)}
  64%{transform:translateX(calc(var(--meleePrepDx) * -.45)) translateY(-3px);filter:brightness(1.7)}
  88%{transform:translateX(calc(var(--meleePrepDx) * -.35)) translateY(-3px);filter:brightness(1.28)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v131TargetImpact{
  0%{transform:translateX(0);filter:brightness(1)}
  25%{transform:translateX(var(--targetReactX));filter:brightness(2.15) saturate(1.25)}
  54%{transform:translateX(calc(var(--targetReactX) * -.45));filter:brightness(.72) saturate(.82)}
  78%{transform:translateX(calc(var(--targetReactX) * .28));filter:brightness(1.35)}
  100%{transform:translateX(0);filter:brightness(1)}
}
@keyframes v131TargetCriticalImpact{
  0%{transform:translateX(0) scale(1);filter:brightness(1)}
  22%{transform:translateX(calc(var(--targetReactX) * 1.35)) scale(1.04);filter:brightness(2.6) saturate(1.45)}
  48%{transform:translateX(calc(var(--targetReactX) * -.75)) scale(.98);filter:brightness(.62) saturate(.8)}
  72%{transform:translateX(calc(var(--targetReactX) * .45)) scale(1.02);filter:brightness(1.55)}
  100%{transform:translateX(0) scale(1);filter:brightness(1)}
}


/* v132: corrected facing, proportional projectile path, and true impact FX */
#battle .fighter.player{
  transform:none!important;
  transform-origin:center center!important;
}
#battle .fighter.enemy{
  transform:none!important;
  transform-origin:center center!important;
}
#battle .battleProjectile,
#battle .framePathProjectile,
#battle .playerProjectile,
#battle .enemyProjectile,
#battle .playerFireProjectile{
  position:absolute!important;
  z-index:22!important;
  pointer-events:none!important;
  object-fit:contain!important;
  object-position:center center!important;
  animation:none!important;
  transition:left 82ms linear, top 82ms linear, width 82ms linear, height 82ms linear, transform 82ms linear, opacity 82ms linear!important;
  filter:drop-shadow(0 0 10px rgba(255,255,255,.95)) drop-shadow(0 0 22px rgba(255,122,26,.88)) drop-shadow(0 0 34px rgba(255,51,21,.55))!important;
}
#battle .arena.fireP .fighterWrap.enemy::before,
#battle .arena.fireE .fighterWrap.player::before{
  opacity:0!important;
  animation:none!important;
}
#battle .arena.impactNow.fireP .fighterWrap.enemy::before,
#battle .arena.impactNow.fireE .fighterWrap.player::before{
  opacity:1!important;
  left:50%!important;
  top:39%!important;
  width:clamp(96px,9vw,168px)!important;
  height:clamp(96px,9vw,168px)!important;
  animation:v132ProjectileImpact .44s steps(7,end) both!important;
}
#battle .arena.meleeAtk.pAtk .fighterWrap.player,
#battle .arena.meleeAtk.eAtk .fighterWrap.enemy{
  animation:v132MeleeContact .88s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .arena.meleeAtk.critAtk.pAtk .fighterWrap.player,
#battle .arena.meleeAtk.critAtk.eAtk .fighterWrap.enemy{
  animation:v132MeleeCriticalContact 1.12s cubic-bezier(.12,.88,.18,1) both!important;
}
@keyframes v132MeleeContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  18%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.12)}
  49%,57%{transform:translateX(var(--meleeDx)) translateY(-7px);filter:brightness(1.85)}
  70%{transform:translateX(calc(var(--meleeDx) * .48)) translateY(-3px);filter:brightness(1.22)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v132MeleeCriticalContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.18)}
  47%,58%{transform:translateX(var(--meleeDx)) translateY(-10px) scale(1.06);filter:brightness(2.08)}
  70%{transform:translateX(calc(var(--meleeDx) * .62)) translateY(-5px) scale(1.02);filter:brightness(1.35)}
  100%{transform:translateX(0) translateY(0) scale(1);filter:brightness(1)}
}
@keyframes v132ProjectileImpact{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.25)}
  18%{opacity:1;transform:translate(-50%,-50%) scale(.82);filter:brightness(1.8)}
  54%{opacity:1;transform:translate(-50%,-50%) scale(1.20);filter:brightness(1.25)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.55)}
}


/* v136: normal melee hits hold contact before applying damage */
#battle .arena.meleeAtk:not(.critAtk).pAtk .fighterWrap.player,
#battle .arena.meleeAtk:not(.critAtk).eAtk .fighterWrap.enemy{
  animation:v136NormalMeleeContact .92s cubic-bezier(.14,.82,.2,1) both!important;
}
@keyframes v136NormalMeleeContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.10)}
  47%,61%{transform:translateX(var(--meleeDx)) translateY(-6px);filter:brightness(1.82)}
  73%{transform:translateX(calc(var(--meleeDx) * .48)) translateY(-2px);filter:brightness(1.20)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}


/* v137: confirmed hit frames and no contact scaling */
#battle .arena.meleeAtk:not(.critAtk).pAtk .fighterWrap.player,
#battle .arena.meleeAtk:not(.critAtk).eAtk .fighterWrap.enemy{
  animation:v137NormalFrame5Contact .92s cubic-bezier(.14,.82,.2,1) both!important;
}
#battle .arena.meleeAtk.critAtk.pAtk .fighterWrap.player,
#battle .arena.meleeAtk.critAtk.eAtk .fighterWrap.enemy{
  animation:v137CriticalContact 1.12s cubic-bezier(.12,.88,.18,1) both!important;
}
@keyframes v137NormalFrame5Contact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.10)}
  43%,60%{transform:translateX(var(--meleeDx)) translateY(-6px);filter:brightness(1.82)}
  73%{transform:translateX(calc(var(--meleeDx) * .48)) translateY(-2px);filter:brightness(1.20)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
@keyframes v137CriticalContact{
  0%{transform:translateX(0) translateY(0);filter:brightness(1)}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.18)}
  47%,63%{transform:translateX(var(--meleeDx)) translateY(-10px);filter:brightness(2.08)}
  74%{transform:translateX(calc(var(--meleeDx) * .62)) translateY(-5px);filter:brightness(1.35)}
  100%{transform:translateX(0) translateY(0);filter:brightness(1)}
}
#battle .arena.impactNow.fireP .fighterWrap.enemy::before,
#battle .arena.impactNow.fireE .fighterWrap.player::before{
  left:50%!important;
  top:42%!important;
}

/* v138: normal melee frame 5 reaches the target without scaling the fighter. */
#battle .arena.meleeAtk:not(.critAtk).pAtk .fighterWrap.player,
#battle .arena.meleeAtk:not(.critAtk).eAtk .fighterWrap.enemy{
  animation:v138NormalFrame5Contact .92s cubic-bezier(.2,.9,.2,1) forwards!important;
  transform-origin:center bottom!important;
}
@keyframes v138NormalFrame5Contact{
  0%{transform:translateX(0) translateY(0);filter:none}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.08)}
  43%,60%{transform:translateX(var(--meleeDx)) translateY(-6px);filter:brightness(1.82) drop-shadow(0 0 10px #fff3a0)}
  73%{transform:translateX(calc(var(--meleeDx) * .28)) translateY(0);filter:brightness(1.12)}
  100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .poweredNote{
  margin:4px 0 0!important;
  color:#ffd91d!important;
  font-weight:bold!important;
}

/* v139: wider sprite render box so wide attack canvases do not shrink the Digimon. */
#battle .fighter{
  width:clamp(330px,32vw,460px)!important;
  height:clamp(210px,30vh,285px)!important;
  object-fit:contain!important;
  object-position:center bottom!important;
}


/* v141 follow-up: clean contact, no clipping, mouth-aligned fireball */
#battle .arena,
#battle #arenaSprites,
#battle .fighterWrap{
  overflow:visible!important;
}
#battle .battleProjectile,
#battle .framePathProjectile,
#battle .playerProjectile,
#battle .enemyProjectile,
#battle .playerFireProjectile{
  transition:left 132ms linear, top 132ms linear, width 132ms linear, height 132ms linear, transform 132ms linear, opacity 132ms linear!important;
  filter:drop-shadow(0 0 12px rgba(255,255,255,.95)) drop-shadow(0 0 28px rgba(255,122,26,.92)) drop-shadow(0 0 42px rgba(255,51,21,.65))!important;
}
#battle .arena.projectileAtk.pAtk .fighterWrap.player{
  animation:v141ProjectileCastReturn 1.28s steps(8,end) both!important;
}
@keyframes v141ProjectileCastReturn{
  0%,22%{transform:translateX(0) translateY(0);filter:none}
  34%,50%{transform:translateX(10px) translateY(0);filter:brightness(1.08)}
  62%,100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.meleeAtk:not(.critAtk).pAtk .fighterWrap.player,
#battle .arena.meleeAtk:not(.critAtk).eAtk .fighterWrap.enemy{
  animation:v141NormalSlashContact .96s cubic-bezier(.18,.86,.18,1) both!important;
  transform-origin:center bottom!important;
}
@keyframes v141NormalSlashContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  18%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.04)}
  48%,68%{transform:translateX(var(--meleeDx)) translateY(-4px);filter:brightness(1.18)}
  80%{transform:translateX(calc(var(--meleeDx) * .28)) translateY(0);filter:brightness(1.04)}
  100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.meleeAtk.critAtk.pAtk .fighterWrap.player,
#battle .arena.meleeAtk.critAtk.eAtk .fighterWrap.enemy{
  animation:v141CritRushContact .96s cubic-bezier(.16,.84,.18,1) both!important;
  transform-origin:center bottom!important;
}
@keyframes v141CritRushContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.05)}
  44%,62%{transform:translateX(calc(var(--meleeDx) * .74)) translateY(-4px);filter:brightness(1.12)}
  78%{transform:translateX(calc(var(--meleeDx) * .24)) translateY(0);filter:brightness(1.04)}
  100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.impactNow.hitE .fighterWrap.enemy .fighter,
#battle .arena.impactNow.hitP .fighterWrap.player .fighter{
  animation:v141TargetSmallFlinch .24s steps(3,end) both!important;
}
#battle .arena.impactNow.critAtk.hitE .fighterWrap.enemy .fighter,
#battle .arena.impactNow.critAtk.hitP .fighterWrap.player .fighter{
  animation:v141TargetSmallFlinch .30s steps(4,end) both!important;
}
@keyframes v141TargetSmallFlinch{
  0%{transform:translateX(0);filter:none}
  35%{transform:translateX(var(--targetReactX));filter:brightness(1.28) saturate(1.08)}
  72%{transform:translateX(calc(var(--targetReactX) * -.35));filter:brightness(.92)}
  100%{transform:translateX(0);filter:none}
}
#battle .arena.impactNow.fireP .fighterWrap.enemy::before,
#battle .arena.impactNow.fireE .fighterWrap.player::before{
  top:50%!important;
  width:clamp(128px,12vw,220px)!important;
  height:clamp(128px,12vw,220px)!important;
}


/* v141 frame-exact timing: contact stops at half target frame */
#battle .arena.meleeAtk:not(.critAtk).pAtk .fighterWrap.player,
#battle .arena.meleeAtk:not(.critAtk).eAtk .fighterWrap.enemy{
  animation:v141Frame5HalfContact .96s cubic-bezier(.18,.86,.18,1) both!important;
}
@keyframes v141Frame5HalfContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  18%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:none}
  55%,66%{transform:translateX(var(--meleeDx)) translateY(-3px);filter:brightness(1.08)}
  80%{transform:translateX(calc(var(--meleeDx) * .30)) translateY(0);filter:none}
  100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.meleeAtk.critAtk.pAtk .fighterWrap.player,
#battle .arena.meleeAtk.critAtk.eAtk .fighterWrap.enemy{
  animation:v141CritHalfContact .92s cubic-bezier(.16,.84,.18,1) both!important;
}
@keyframes v141CritHalfContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  18%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:none}
  48%,62%{transform:translateX(var(--meleeDx)) translateY(-3px);filter:brightness(1.08)}
  78%{transform:translateX(calc(var(--meleeDx) * .28)) translateY(0);filter:none}
  100%{transform:translateX(0) translateY(0);filter:none}
}


/* v141 follow-up: clean contact, no clipping, mouth-aligned fireball */
#battle .arena,
#battle #arenaSprites,
#battle .fighterWrap{
  overflow:visible!important;
}
#battle .battleProjectile,
#battle .framePathProjectile,
#battle .playerProjectile,
#battle .enemyProjectile,
#battle .playerFireProjectile{
  transition:left 132ms linear, top 132ms linear, width 132ms linear, height 132ms linear, transform 132ms linear, opacity 132ms linear!important;
  filter:drop-shadow(0 0 12px rgba(255,255,255,.95)) drop-shadow(0 0 28px rgba(255,122,26,.92)) drop-shadow(0 0 42px rgba(255,51,21,.65))!important;
}
#battle .arena.projectileAtk.pAtk .fighterWrap.player{
  animation:v141ProjectileCastReturn 1.28s steps(8,end) both!important;
}
@keyframes v141ProjectileCastReturn{
  0%,22%{transform:translateX(0) translateY(0);filter:none}
  34%,50%{transform:translateX(10px) translateY(0);filter:brightness(1.08)}
  62%,100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.meleeAtk:not(.critAtk).pAtk .fighterWrap.player,
#battle .arena.meleeAtk:not(.critAtk).eAtk .fighterWrap.enemy{
  animation:v141NormalSlashContact .96s cubic-bezier(.18,.86,.18,1) both!important;
  transform-origin:center bottom!important;
}
@keyframes v141NormalSlashContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  18%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.04)}
  48%,68%{transform:translateX(var(--meleeDx)) translateY(-4px);filter:brightness(1.18)}
  80%{transform:translateX(calc(var(--meleeDx) * .28)) translateY(0);filter:brightness(1.04)}
  100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.meleeAtk.critAtk.pAtk .fighterWrap.player,
#battle .arena.meleeAtk.critAtk.eAtk .fighterWrap.enemy{
  animation:v141CritRushContact .96s cubic-bezier(.16,.84,.18,1) both!important;
  transform-origin:center bottom!important;
}
@keyframes v141CritRushContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:brightness(1.05)}
  44%,62%{transform:translateX(calc(var(--meleeDx) * .74)) translateY(-4px);filter:brightness(1.12)}
  78%{transform:translateX(calc(var(--meleeDx) * .24)) translateY(0);filter:brightness(1.04)}
  100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.impactNow.hitE .fighterWrap.enemy .fighter,
#battle .arena.impactNow.hitP .fighterWrap.player .fighter{
  animation:v141TargetSmallFlinch .24s steps(3,end) both!important;
}
#battle .arena.impactNow.critAtk.hitE .fighterWrap.enemy .fighter,
#battle .arena.impactNow.critAtk.hitP .fighterWrap.player .fighter{
  animation:v141TargetSmallFlinch .30s steps(4,end) both!important;
}
@keyframes v141TargetSmallFlinch{
  0%{transform:translateX(0);filter:none}
  35%{transform:translateX(var(--targetReactX));filter:brightness(1.28) saturate(1.08)}
  72%{transform:translateX(calc(var(--targetReactX) * -.35));filter:brightness(.92)}
  100%{transform:translateX(0);filter:none}
}
#battle .arena.impactNow.fireP .fighterWrap.enemy::before,
#battle .arena.impactNow.fireE .fighterWrap.player::before{
  top:50%!important;
  width:clamp(128px,12vw,220px)!important;
  height:clamp(128px,12vw,220px)!important;
}


/* v141 current frame counts: half-frame contact and synced return */
#battle .arena.meleeAtk:not(.critAtk).pAtk .fighterWrap.player,
#battle .arena.meleeAtk:not(.critAtk).eAtk .fighterWrap.enemy{
  animation:v141CurrentNormalHalfContact 1.26s cubic-bezier(.18,.86,.18,1) both!important;
}
@keyframes v141CurrentNormalHalfContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  16%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:none}
  48%,58%{transform:translateX(var(--meleeDx)) translateY(-3px);filter:brightness(1.07)}
  73%{transform:translateX(calc(var(--meleeDx) * .34)) translateY(0);filter:none}
  100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.meleeAtk.critAtk.eAtk .fighterWrap.enemy{
  animation:v141CurrentGabumonCritContact 1.89s cubic-bezier(.16,.84,.18,1) both!important;
}
@keyframes v141CurrentGabumonCritContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  18%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:none}
  62%,68%{transform:translateX(var(--meleeDx)) translateY(-2px);filter:brightness(1.06)}
  76%{transform:translateX(calc(var(--meleeDx) * .48)) translateY(0);filter:none}
  100%{transform:translateX(0) translateY(0);filter:none}
}
#battle .arena.meleeAtk.critAtk.pAtk .fighterWrap.player{
  animation:v141CurrentPlayerCritContact 1.78s cubic-bezier(.16,.84,.18,1) both!important;
}
@keyframes v141CurrentPlayerCritContact{
  0%{transform:translateX(0) translateY(0);filter:none}
  18%{transform:translateX(var(--meleePrepDx)) translateY(0);filter:none}
  48%,60%{transform:translateX(var(--meleeDx)) translateY(-3px);filter:brightness(1.06)}
  76%{transform:translateX(calc(var(--meleeDx) * .40)) translateY(0);filter:none}
  100%{transform:translateX(0) translateY(0);filter:none}
}


/* v141 tooltip cleanup: one fitted map-node description box */
#nodes .node[data-desc]::after{
  display:none!important;
  content:none!important;
}
#nodes .node[data-desc]:hover::after{
  content:attr(data-desc)!important;
  display:block!important;
  position:absolute!important;
  z-index:999!important;
  left:50%!important;
  top:auto!important;
  bottom:calc(100% + 12px)!important;
  width:max-content!important;
  min-width:150px!important;
  max-width:220px!important;
  transform:translateX(-50%)!important;
  padding:8px 10px!important;
  border-radius:6px!important;
  border:2px solid rgba(89,231,255,.55)!important;
  background:rgba(6,12,34,.96)!important;
  color:#f2fdff!important;
  font:700 11px/1.25 var(--font)!important;
  white-space:normal!important;
  overflow-wrap:break-word!important;
  text-align:center!important;
  pointer-events:none!important;
  box-shadow:0 0 18px rgba(0,239,255,.20),3px 3px 0 rgba(0,0,0,.48)!important;
}
#nodes .node[data-desc]:hover::before{
  display:none!important;
  content:none!important;
}


/* v148 fireball final tune: remove extra impact circle */
#battle .arena.fireP .fighterWrap.enemy::before,
#battle .arena.fireE .fighterWrap.player::before,
#battle .arena.impactNow.fireP .fighterWrap.enemy::before,
#battle .arena.impactNow.fireE .fighterWrap.player::before{
  display:none!important;
  content:none!important;
  opacity:0!important;
  animation:none!important;
  background:none!important;
  box-shadow:none!important;
}



.preloadBattleBtn{
  margin-top:12px;
  min-width:220px;
}
.preloadBattleBtn.ready{
  border-color:#2ecc71;
  color:#9dffbd;
  box-shadow:0 0 12px rgba(46,204,113,.42);
}
.preloadBattleStatus{
  margin:8px 0 0;
  min-height:18px;
  color:#9fdcff;
  font-size:10px;
  text-align:center;
  text-shadow:0 0 7px rgba(69,173,255,.55);
}
