/* ================================================================
   BOOM WORLD 1.8 — Neon Frontier UI
   Presentation only. Game state, routes and persistence are untouched.
   ================================================================ */
:root{
  --bw-cyan:#56efff;
  --bw-blue:#5680ff;
  --bw-purple:#b65cff;
  --bw-gold:#ffda55;
  --bw-orange:#ff9d45;
  --bw-green:#4df2aa;
  --bw-red:#ff5b76;
  --bw-night:#020612;
  --bw-deep:#061027;
  --bw-card:rgba(8,18,44,.92);
  --bw-edge:rgba(86,239,255,.25);
  --bw-soft:rgba(151,174,218,.78);
}

body.boom-world{
  background-image:
    radial-gradient(ellipse at 12% -8%,rgba(27,100,207,.52),transparent 35%),
    radial-gradient(ellipse at 92% 4%,rgba(148,48,193,.42),transparent 35%),
    radial-gradient(ellipse at 50% 110%,rgba(0,222,193,.18),transparent 43%),
    linear-gradient(180deg,#070c22 0%,#020612 65%,#01040c 100%)!important;
}
body.boom-world:before{opacity:.34!important}
body.boom-world:after{opacity:.72}

/* Command bar */
.world-command{
  position:relative;
  min-height:88px!important;
  padding:13px 15px!important;
  gap:16px!important;
  border-color:rgba(86,239,255,.31)!important;
  border-radius:25px!important;
  background:
    linear-gradient(110deg,rgba(16,34,73,.97),rgba(4,10,30,.96) 55%,rgba(23,10,48,.95))!important;
  box-shadow:0 24px 75px rgba(0,0,0,.42),0 0 50px rgba(86,128,255,.08),inset 0 1px rgba(255,255,255,.07)!important;
  overflow:hidden;
}
.world-command:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(86,239,255,.09),transparent);
  transform:translateX(-110%);
  animation:bwHeaderScan 8s ease-in-out infinite;
}
.world-command:after{
  content:"";
  position:absolute;
  left:18px;right:18px;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--bw-cyan),var(--bw-purple),transparent);
  opacity:.75;
}
@keyframes bwHeaderScan{0%,65%{transform:translateX(-110%)}85%,100%{transform:translateX(110%)}}
.world-brand{position:relative;min-width:258px!important;gap:13px!important}
.world-ball{
  width:50px!important;height:50px!important;
  border-width:3px!important;
  box-shadow:0 0 0 7px rgba(86,239,255,.045),0 0 30px rgba(86,239,255,.48)!important;
}
.world-brand-copy strong{font-size:18px!important;text-shadow:0 0 22px rgba(86,239,255,.14)}
.world-brand-copy span{color:#a8b8d9!important;letter-spacing:.14em!important}
.world-version{
  position:absolute;left:63px;top:-13px;
  padding:3px 7px;border:1px solid rgba(77,242,170,.25);border-radius:0 0 7px 7px;
  background:rgba(77,242,170,.08);color:var(--bw-green);
  font:800 6px Orbitron,sans-serif;letter-spacing:.12em;
}
.world-telemetry{gap:9px!important}
.world-chip{
  position:relative;
  min-height:57px!important;
  padding:10px 12px!important;
  border-color:rgba(255,255,255,.085)!important;
  border-radius:16px!important;
  background:linear-gradient(145deg,rgba(10,24,55,.86),rgba(2,8,25,.74))!important;
  overflow:hidden;
}
.world-chip:after{content:"";position:absolute;left:0;bottom:0;width:35%;height:2px;background:var(--bw-cyan);opacity:.45}
.world-chip.live:after{background:var(--bw-green);opacity:.8}
.world-chip span{font-size:8px!important;color:#899abd!important}
.world-chip b{margin-top:5px!important;font-size:12px!important}

.world-quick{gap:7px!important}
.world-quick button{
  display:flex!important;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  width:58px!important;height:54px!important;min-width:58px!important;min-height:54px!important;
  padding:4px!important;border-radius:15px!important;
  background:linear-gradient(145deg,rgba(19,42,79,.76),rgba(6,14,39,.86))!important;
}
.world-quick button span{font-size:1rem;line-height:1;color:var(--bw-cyan)}
.world-quick button small{font:800 5px Orbitron,sans-serif;letter-spacing:.08em;color:#92a4c9}
.world-quick button:hover{border-color:rgba(86,239,255,.62)!important;box-shadow:0 10px 28px rgba(86,239,255,.16),inset 0 0 18px rgba(86,239,255,.07)!important}

/* World viewport */
.boom-world #game-frame{
  border-radius:29px!important;
  border-color:rgba(86,239,255,.58)!important;
  box-shadow:0 0 0 1px rgba(255,255,255,.025),0 0 0 7px rgba(86,239,255,.035),0 36px 100px rgba(0,0,0,.62),0 0 65px rgba(45,170,255,.13)!important;
}
.boom-world #game-frame:after{
  background:
    linear-gradient(90deg,rgba(86,239,255,.075),transparent 10%,transparent 90%,rgba(182,92,255,.075)),
    repeating-linear-gradient(0deg,transparent 0 4px,rgba(2,8,20,.04) 5px)!important;
  box-shadow:inset 0 0 65px rgba(0,0,0,.35)!important;
}
.world-map-frame{position:absolute;inset:0;z-index:18;pointer-events:none}
.world-map-frame:before,.world-map-frame:after{
  content:"";position:absolute;width:30px;height:30px;top:12px;
  border-top:2px solid rgba(86,239,255,.72);
}
.world-map-frame:before{left:12px;border-left:2px solid rgba(86,239,255,.72);border-radius:8px 0 0}
.world-map-frame:after{right:12px;border-right:2px solid rgba(182,92,255,.65);border-radius:0 8px 0 0}
.wmf-live,.wmf-coords{
  position:absolute;bottom:12px;padding:5px 8px;border:1px solid rgba(86,239,255,.2);border-radius:8px;
  background:rgba(2,8,24,.7);backdrop-filter:blur(8px);color:#b8c9e8;
  font:800 7px Orbitron,sans-serif;letter-spacing:.11em;
}
.wmf-live{left:13px;color:var(--bw-green)}
.wmf-coords{right:13px}
.boom-world .ntag,.boom-world .npc-tag{
  border-width:1px!important;border-radius:10px!important;
  box-shadow:0 7px 20px rgba(0,0,0,.62),inset 0 1px rgba(255,255,255,.05)!important;
}
.boom-world .npc-tag .bang{color:var(--bw-gold);text-shadow:0 0 11px var(--bw-gold)}

/* Compact contextual trainer action */
.boom-world #npc-float button{
  background:linear-gradient(135deg,var(--bw-gold),var(--bw-orange))!important;
  box-shadow:0 10px 32px rgba(0,0,0,.48),0 0 0 5px rgba(255,218,85,.07),0 0 28px rgba(255,157,69,.27)!important;
}
.boom-world.world-near-trainer #npc-float button{animation:bwChallenge 1.8s ease-in-out infinite}
@keyframes bwChallenge{50%{box-shadow:0 12px 36px rgba(0,0,0,.5),0 0 0 9px rgba(255,218,85,0),0 0 35px rgba(255,157,69,.42)}}

/* Desktop command deck */
@media (min-width:821px) and (pointer:fine){
  .boom-world .wrap{grid-template-columns:minmax(600px,1fr) 390px!important;gap:16px!important}
  .boom-world .hud,.boom-world .trade-panel{border-radius:25px!important}
  .boom-world .hud{padding:17px!important;position:sticky!important;top:16px!important}
  .boom-world .hud:before{content:"TRAINER LOADOUT // ACTIVE PARTY"!important;color:#eef6ff!important;font-size:9px!important}
  .boom-world .party-bar{grid-template-columns:repeat(3,1fr)!important;gap:8px!important}
  .boom-world .mon{min-height:105px!important;border-radius:17px!important;transition:transform .16s,border-color .16s,box-shadow .16s}
  .boom-world .mon:hover{transform:translateY(-3px);border-color:rgba(86,239,255,.5)!important;box-shadow:0 12px 28px rgba(0,0,0,.32)}
  .boom-world .mon img{width:55px!important;height:55px!important}
  .boom-world .dpad-wrap{position:relative;overflow:hidden;padding:15px!important;border-radius:24px!important}
  .boom-world .dpad-wrap:before{content:"MOVEMENT ARRAY";position:absolute;left:18px;top:16px;color:#7f91b7;font:800 7px Orbitron,sans-serif;letter-spacing:.14em}
  .boom-world .dpad-wrap:after{content:"WASD / ARROWS";position:absolute;right:18px;bottom:15px;color:#526583;font:800 6px Orbitron,sans-serif;letter-spacing:.12em}
  .boom-world .dpad{filter:drop-shadow(0 16px 24px rgba(0,0,0,.4))}
  .boom-world .trade-panel h3{font-size:.8rem!important}
}

/* Panels, menus and modal hierarchy */
.boom-world .hud,.boom-world .trade-panel,.boom-world .world-chat,.boom-world .auth,.boom-world .sprite-bar{
  border-color:rgba(86,239,255,.2)!important;
  background:linear-gradient(145deg,rgba(14,29,65,.96),rgba(3,8,25,.97))!important;
}
.boom-world #status{
  position:relative;overflow:hidden;
  border-color:rgba(86,239,255,.24)!important;
  background:linear-gradient(90deg,rgba(7,31,57,.94),rgba(6,13,35,.93),rgba(27,11,52,.85))!important;
}
.boom-world #status:after{content:"";position:absolute;left:-30%;top:0;width:24%;height:100%;background:linear-gradient(90deg,transparent,rgba(86,239,255,.08),transparent);animation:bwStatus 5.5s linear infinite}
@keyframes bwStatus{to{left:115%}}
.boom-world .party-panel,.boom-world .bag-panel,.boom-world .evo-box,.boom-world .egg-toast-box,.boom-world .wbattle{
  border-color:rgba(86,239,255,.34)!important;
  background:
    radial-gradient(circle at 50% 0,rgba(43,90,153,.26),transparent 38%),
    linear-gradient(155deg,rgba(13,29,66,.985),rgba(2,7,23,.99))!important;
}
.boom-world .party-panel{box-shadow:0 35px 120px rgba(0,0,0,.72),0 0 65px rgba(86,128,255,.13)!important}
.boom-world .party-panel h2:after{content:" // LOADOUT CONFIG";color:var(--bw-cyan);font-size:.58em}
.boom-world .party-slot,.boom-world .caught-item{position:relative;overflow:hidden}
.boom-world .party-slot:after,.boom-world .caught-item:after{content:"";position:absolute;inset:auto 10px 0;height:1px;background:linear-gradient(90deg,transparent,rgba(86,239,255,.48),transparent)}
.boom-world .party-slot.active{border-color:var(--bw-gold)!important;box-shadow:0 0 0 3px rgba(255,218,85,.06),0 0 30px rgba(255,218,85,.14)!important}
.boom-world .bag-panel{box-shadow:0 30px 100px rgba(0,0,0,.68),0 0 50px rgba(255,218,85,.1)!important}
.boom-world .wbattle{overflow:hidden!important}
.boom-world .wbattle:before{content:"BATTLE LINK ESTABLISHED";display:block;margin-bottom:7px;color:var(--bw-green);font:800 6px Orbitron,sans-serif;letter-spacing:.15em}
.boom-world .wb-vs{color:var(--bw-gold)!important;text-shadow:0 0 22px rgba(255,218,85,.42)}
.boom-world .wb-hp span{box-shadow:0 0 14px rgba(77,242,170,.48)}

/* Mobile game shell */
@media (max-width:820px),(pointer:coarse){
  body.boom-world{padding:8px 6px 42px!important}
  body.boom-world:before{opacity:.18!important}
  .world-command{
    height:52px!important;min-height:52px!important;
    padding:6px 8px!important;margin-bottom:7px!important;
    border-radius:16px!important;gap:7px!important;
  }
  .world-command:after{left:9px;right:9px}
  .world-brand{min-width:0!important;gap:8px!important}
  .world-ball{width:34px!important;height:34px!important;box-shadow:0 0 0 4px rgba(86,239,255,.04),0 0 19px rgba(86,239,255,.36)!important}
  .world-brand-copy strong{font-size:10px!important}
  .world-brand-copy span{display:block!important;font-size:4px!important;margin-top:2px!important}
  .world-version{display:none}
  .world-quick{gap:4px!important}
  .world-quick button{width:31px!important;height:31px!important;min-width:31px!important;min-height:31px!important;padding:0!important;border-radius:9px!important}
  .world-quick button span{font-size:.67rem}
  .world-quick button small{display:none}

  .boom-world #game-frame{border-radius:0!important;border-left:0!important;border-right:0!important;box-shadow:0 12px 35px rgba(0,0,0,.45)!important}
  .world-map-frame:before,.world-map-frame:after{top:8px;width:18px;height:18px}
  .world-map-frame:before{left:8px}.world-map-frame:after{right:8px}
  .wmf-live,.wmf-coords{bottom:8px;padding:4px 6px;font-size:5px}
  .wmf-live{left:8px}.wmf-coords{right:8px}

  .world-mobile-dock{
    background:
      radial-gradient(circle at 50% 26%,rgba(32,106,158,.19),transparent 35%),
      radial-gradient(circle at 14% 68%,rgba(86,128,255,.08),transparent 25%),
      radial-gradient(circle at 86% 68%,rgba(182,92,255,.07),transparent 25%),
      linear-gradient(rgba(86,239,255,.024) 1px,transparent 1px),
      linear-gradient(90deg,rgba(86,239,255,.018) 1px,transparent 1px),
      #020713!important;
    background-size:auto,auto,auto,30px 30px,30px 30px,auto!important;
    border-top-color:rgba(86,239,255,.31)!important;
  }
  .world-mobile-dock:before{content:"TRAINER DECK // MOVEMENT + PARTY"!important;color:rgba(151,174,218,.48)!important;letter-spacing:.16em!important}
  .world-mobile-dock:after{content:"BOOM NETWORK • CORE 1.8";position:absolute;left:0;right:0;bottom:12px;text-align:center;color:rgba(105,127,164,.33);font:800 5px Orbitron,sans-serif;letter-spacing:.2em}

  .boom-world #status{border-radius:13px!important;box-shadow:0 8px 25px rgba(0,0,0,.3)!important}
  .world-chip:nth-child(2),.world-chip:nth-child(3){border-radius:13px!important;background:rgba(7,17,42,.9)!important}

  .boom-world .dpad-wrap{
    top:calc(45vw + 50dvh - 78px)!important;
    width:156px!important;height:156px!important;
    filter:drop-shadow(0 18px 30px rgba(0,0,0,.48));
  }
  .boom-world .dpad{
    grid-template-columns:48px 48px 48px!important;
    grid-template-rows:48px 48px 48px!important;
    gap:6px!important;width:156px!important;height:156px!important;
  }
  .boom-world .dpad button{
    width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;
    border-radius:15px!important;border-color:rgba(86,239,255,.3)!important;
    background:linear-gradient(145deg,rgba(25,52,91,.96),rgba(7,17,45,.98))!important;
    box-shadow:0 9px 20px rgba(0,0,0,.38),inset 0 1px rgba(255,255,255,.055)!important;
  }
  .boom-world .dpad .mid{box-shadow:0 9px 20px rgba(0,0,0,.38),0 0 24px rgba(255,82,107,.14)!important}
  .boom-world .dpad button:active,.boom-world .dpad button.pressed{box-shadow:0 3px 8px rgba(0,0,0,.4),0 0 24px rgba(86,239,255,.35)!important}

  .world-mobile-party{
    top:calc(45vw + 50dvh + 112px)!important;
    width:min(95vw,380px)!important;gap:6px!important;
  }
  .world-mobile-party:before{content:"ACTIVE PARTY // TAP TO MANAGE"!important;top:-20px!important;color:rgba(157,180,220,.72)!important;font-size:6px!important}
  .world-mobile-party .wmp-mon{
    height:48px!important;border-radius:13px!important;
    border-color:rgba(86,239,255,.2)!important;
    background:radial-gradient(circle at 50% 38%,rgba(44,91,143,.4),rgba(5,14,39,.94))!important;
    box-shadow:0 9px 20px rgba(0,0,0,.3),inset 0 1px rgba(255,255,255,.04)!important;
  }
  .world-mobile-party img{width:42px!important;height:42px!important}
  .world-mobile-party .wmp-slot{position:absolute;left:4px;top:3px;color:rgba(139,160,199,.55);font:800 5px Orbitron,sans-serif}
  .world-mobile-party .wmp-lv{right:4px!important;bottom:3px!important;font-size:6px!important;text-shadow:0 0 8px rgba(77,242,170,.5)}
  .world-mobile-party .wmp-empty{font:800 15px Orbitron,sans-serif!important;color:rgba(86,239,255,.36)!important}

  .boom-world .bn-launch{border-radius:50%!important;box-shadow:0 10px 30px rgba(0,0,0,.5),0 0 24px rgba(86,239,255,.12)!important}
  .boom-world #npc-float button{width:52px!important;min-width:52px!important;height:52px!important;font-size:1.05rem!important}
  .boom-world .loot-toast{background:linear-gradient(135deg,rgba(17,39,75,.97),rgba(12,16,44,.98))!important}

  .boom-world .party-panel{margin:10px auto!important;max-height:calc(100dvh - 20px)!important;border-radius:24px!important}
  .boom-world .party-slots{display:grid!important;grid-template-columns:repeat(3,1fr)!important}
  .boom-world .party-slot{width:100%!important;min-width:0!important}
  .boom-world .caught-grid{gap:7px!important}
  .boom-world .wbattle{border-radius:27px!important}
}

@media (max-width:390px){
  .world-brand-copy span{display:none!important}
  .world-quick button{width:29px!important;min-width:29px!important}
  .world-mobile-party{gap:4px!important;width:96vw!important}
  .world-mobile-party .wmp-mon{height:45px!important}
  .world-mobile-party img{width:39px!important;height:39px!important}
}

@media (prefers-reduced-motion:reduce){
  .world-command:before,.boom-world #status:after,.boom-world.world-near-trainer #npc-float button{animation:none!important}
}
