:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#eff8ff;background:#030711;--cyan:#50d9ff;--gold:#ffd166;--muted:#8aa7ba}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 50% -10%,#123a55 0,#061221 34%,#030711 75%)}#app{width:min(1180px,100%);margin:auto;padding:22px clamp(16px,4vw,48px)}.topbar,.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.eyebrow,.tag{font-size:11px;letter-spacing:.18em;color:var(--cyan);font-weight:800}.topbar h1,.panel-heading h2{margin:5px 0 0;letter-spacing:-.04em}.topbar h1{font-size:clamp(25px,4vw,42px)}.panel-heading h2{font-size:25px}.status{font-size:11px;color:#9ad8b7;letter-spacing:.12em}.status i{display:inline-block;width:8px;height:8px;border-radius:50%;background:#55e39a;box-shadow:0 0 12px #55e39a;margin-right:8px}.arena-shell{position:relative;height:min(60svh,640px);min-height:430px;margin:24px 0 18px;overflow:hidden;border:1px solid #245271;border-radius:24px;background:#071626;box-shadow:0 20px 80px #0008,inset 0 0 80px #0b94d422}.arena-shell canvas{position:absolute;inset:0;width:100%;height:100%;z-index:1}.arena-grid{position:absolute;inset:45% -10% -30%;z-index:2;opacity:.28;background:linear-gradient(#3ac8ff44 1px,transparent 1px),linear-gradient(90deg,#3ac8ff44 1px,transparent 1px);background-size:42px 42px;transform:perspective(280px) rotateX(58deg);mask-image:linear-gradient(transparent,#000 35%)}.scanline{position:absolute;z-index:3;inset:0;pointer-events:none;background:linear-gradient(transparent 49%,#62dbff0b 50%,transparent 51%);background-size:100% 8px}.fighter-card{position:absolute;z-index:4;top:24px;padding:14px 18px;width:220px;border:1px solid #3b7190;background:#071525cc;backdrop-filter:blur(10px);border-radius:14px;box-shadow:0 8px 28px #0006}.player-card{left:24px}.enemy-card{right:24px;text-align:right}.fighter-card strong{display:block;font-size:22px;margin:6px 0 9px}.meter{height:7px;background:#071019;border-radius:9px;overflow:hidden}.meter span{display:block;height:100%;width:100%;background:linear-gradient(90deg,#42e6ad,#c5f36a);transition:width .4s}.meter.danger span{background:linear-gradient(90deg,#ffcc68,#ff5f87)}.fighter-card small{display:block;color:var(--muted);margin-top:6px;font-size:11px}.turn-pill{position:absolute;z-index:5;left:50%;top:30px;transform:translateX(-50%);padding:8px 14px;border:1px solid #ffd16688;border-radius:99px;color:var(--gold);font-size:11px;font-weight:800;letter-spacing:.15em;background:#251c0dcc}.log{position:absolute;z-index:5;left:50%;bottom:22px;transform:translateX(-50%);width:min(560px,calc(100% - 40px));padding:13px 18px;border:1px solid #3b7190aa;border-radius:12px;background:#061321dd;color:#d9f3ff;text-align:center}.control-panel{padding:22px;border:1px solid #153b55;border-radius:20px;background:#071321}.ghost{border:1px solid #35627a;background:transparent;color:#9ed5e8;padding:10px 14px;border-radius:9px;cursor:pointer}.actions{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}.action{padding:16px;border:1px solid #23617c;border-radius:12px;background:#0b2031;color:#e8f9ff;text-align:left;cursor:pointer;transition:.2s}.action:hover,.action:focus-visible{transform:translateY(-2px);border-color:var(--cyan);box-shadow:0 0 22px #41d8ff22}.action b{display:block;color:var(--gold);font-size:16px}.action span{display:block;color:var(--muted);font-size:12px;margin-top:5px}button:disabled{opacity:.45;cursor:not-allowed}footer{padding:18px 0;color:#5c7889;font-size:12px}@media(max-width:650px){.status{display:none}.arena-shell{min-height:500px}.fighter-card{top:16px;width:165px;padding:11px}.fighter-card strong{font-size:17px}.enemy-card{right:16px}.player-card{left:16px}.actions{grid-template-columns:1fr}.log{bottom:16px}}
.hidden{display:none!important}.scanner-view{padding:48px 28px;margin:24px 0;border:1px solid #245271;border-radius:24px;background:radial-gradient(circle at 50% 0,#123e58,#071321 72%);text-align:center}.scanner-view h2{font-size:clamp(25px,5vw,48px);margin:12px 0}.scanner-view p{color:#9bb8c8}.scan-button{padding:14px 22px;border:1px solid #50d9ff;border-radius:10px;background:#0b3148;color:#e8f9ff;font-weight:800;letter-spacing:.08em;cursor:pointer}.scan-bar{height:6px;max-width:520px;margin:24px auto 0;background:#061019;border-radius:9px;overflow:hidden}.scan-bar span{display:block;width:0;height:100%;background:#50d9ff;transition:width .5s}
.reboot-attention{animation:reboot-attention .9s ease-in-out 2;box-shadow:0 0 0 3px #ffd16655,0 0 24px #ffd166aa;border-color:#ffd166!important;color:#ffd166!important}
@keyframes reboot-attention{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.06);filter:brightness(1.7)}}
@media(prefers-reduced-motion:reduce){.reboot-attention{animation:none;outline:2px solid #ffd166;outline-offset:3px}}

.arena-shell.webgl-ready.sprites-ready 

.encounter-panel{padding:32px 24px;margin:24px 0;border:1px solid #3b7190;border-radius:24px;background:radial-gradient(circle at 50% 0,#173d55,#071321 72%);text-align:center}.encounter-panel h2{font-size:clamp(30px,6vw,52px);margin:10px 0}.encounter-panel p{color:#9bb8c8}.encounter-stats{display:flex;justify-content:center;gap:28px;margin:24px 0;color:#8aa7ba;font-size:11px;letter-spacing:.12em}.encounter-stats b{display:block;color:#ffd166;font-size:16px;margin-top:5px;letter-spacing:0}

.starter-panel{padding:34px 24px;margin:24px 0;border:1px solid #3b7190;border-radius:24px;background:radial-gradient(circle at 50% 0,#173d55,#071321 72%);text-align:center}.starter-panel h2{font-size:clamp(28px,6vw,48px);margin:10px 0}.starter-panel p{color:#9bb8c8}.starter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:24px}.starter-choice{padding:20px;border:1px solid #23617c;border-radius:14px;background:#0b2031;color:#e8f9ff;text-align:left}.starter-choice b,.starter-choice span{display:block}.starter-choice b{color:#ffd166;font-size:18px}.starter-choice span{color:#9bb8c8;margin-top:6px;font-size:12px}@media(max-width:650px){.starter-grid{grid-template-columns:1fr}}
 .battle-outcome{margin-top:18px;padding:16px;border:1px solid #347b9d;border-radius:16px;background:#082034;color:#dff7ff;display:grid;gap:12px}.battle-outcome strong{color:var(--gold)}.outcome-actions{display:flex;flex-wrap:wrap;gap:10px}.party-panel,.dex-panel{margin:18px 0;padding:22px;border:1px solid #173c56;border-radius:22px;background:#061321}.party-panel h2,.dex-panel h2{margin:5px 0 16px}.party-list{display:flex;flex-wrap:wrap;gap:10px}.repository-label{flex-basis:100%;margin-top:10px;color:var(--gold);font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}.party-card{display:flex;align-items:center;gap:9px;padding:9px 12px;border:1px solid #245271;border-radius:12px;background:#0a1e30;color:inherit;text-align:left;cursor:pointer}.party-card.is-lead{border-color:var(--gold);box-shadow:0 0 0 1px rgba(255,209,102,.25)}.party-card.is-selected{border-color:#50d9ff;box-shadow:0 0 0 2px rgba(80,217,255,.35)}.party-card.is-storage-ready{border-color:#c084fc;box-shadow:0 0 0 2px rgba(192,132,252,.35)}.party-card img{width:42px;height:42px;object-fit:contain}.party-card small,.dex-panel p{display:block;color:var(--muted)}.party-empty{color:var(--muted)}
/* Scanner OS presentation */
.topbar{position:sticky;top:0;z-index:20;padding:12px 0;background:linear-gradient(#030711f2,#030711cc,transparent);backdrop-filter:blur(8px)}
.scanner-view{min-height:58svh;display:grid;place-content:center}
@media(max-width:650px){body{overflow-x:hidden}#app{padding:8px 10px}.topbar{padding:4px 0}.topbar h1{font-size:24px}.scanner-view{min-height:calc(100svh - 92px);margin:8px 0;padding:22px 14px;border-radius:16px}.scanner-view h2{font-size:28px}.scanner-view p{font-size:13px;margin:8px 0}.scan-bar{margin:14px auto 0}.encounter-panel{min-height:calc(100svh - 92px);margin:8px 0;padding:22px 14px;border-radius:16px;display:flex;flex-direction:column;justify-content:center}.encounter-panel h2{font-size:36px}.encounter-stats{gap:14px;margin:16px 0}.encounter-actions{display:grid;gap:8px}.arena-shell{height:calc(100svh - 170px);min-height:390px;margin:8px 0;border-radius:16px}.fighter-card{top:12px;width:142px;padding:8px 10px}.fighter-card strong{font-size:15px;margin:4px 0}.turn-pill{top:14px;font-size:9px;padding:7px 10px}.log{bottom:10px;font-size:12px;padding:10px}.control-panel{padding:12px;border-radius:16px}.panel-heading h2{font-size:20px}.panel-heading{gap:6px;flex-wrap:wrap}.panel-heading .ghost{font-size:10px;padding:8px}.actions{gap:7px;margin-top:10px}.action{padding:11px}.action b{font-size:14px}.action span{font-size:11px}.party-panel,.dex-panel{margin:8px 0;padding:14px;border-radius:16px}}
/* Scanner OS navigation */
.os-nav{position:fixed;left:50%;bottom:max(10px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:100;display:flex;gap:6px;padding:6px;border:1px solid #2b617d;border-radius:18px;background:#061321ee;backdrop-filter:blur(12px);box-shadow:0 12px 40px #0009}.os-nav button{min-width:64px;border:0;border-radius:12px;padding:7px 9px;background:transparent;color:#bdefff;font-size:18px;cursor:pointer}.os-nav button:hover{background:#123b54;color:#ffd166}.os-nav small{display:block;font-size:8px;letter-spacing:.12em}.os-modal{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:16px;background:#020711cc;backdrop-filter:blur(8px)}.os-modal-card{width:min(620px,100%);max-height:calc(100svh - 32px);overflow:auto;padding:18px;border:1px solid #3b7190;border-radius:20px;background:#071321;box-shadow:0 20px 70px #000b}.os-close{float:right;border:1px solid #35627a;border-radius:9px;padding:8px 11px;background:transparent;color:#9ed5e8}.os-modal-body{clear:both;padding-top:8px}
/* Mobile app-shell behavior */
@media(max-width:650px){html,body{width:100%;height:100%;overflow:hidden}#app{height:100dvh;overflow:hidden;padding-bottom:78px}.party-panel,.dex-panel{display:none}.scanner-view,.encounter-panel,.arena-shell{max-height:calc(100dvh - 92px);overflow:hidden}.os-modal .party-panel,.os-modal .dex-panel{display:block}}
@media(max-width:650px){.arena-shell{height:430px;min-height:0}.control-panel{max-height:250px;overflow:auto}.actions{grid-template-columns:repeat(2,minmax(0,1fr))}.action{min-height:62px}.arena-shell canvas{height:100%}}
/* The floating OS menu is the sole entry point for party, dex, and missions. */
.party-panel,.dex-panel{display:none}
.os-modal .party-panel,.os-modal .dex-panel{display:block}
#starterView,#scannerView{display:none}.starter-active #starterView{display:flex}.starter-active .os-nav,.starter-active .topbar,.starter-active footer{display:none}
.capture-modal{position:fixed;inset:0;z-index:120;display:none;place-items:center;padding:18px;background:#020711cc;backdrop-filter:blur(8px)}.capture-modal.is-open{display:grid}.capture-card{width:min(420px,100%);padding:26px 20px;border:1px solid #50d9ff;border-radius:20px;background:#071a2a;box-shadow:0 18px 70px #000b;text-align:center}.capture-card h2{margin:8px 0;color:var(--gold)}.capture-card p{color:#9bb8c8}.capture-active canvas{animation:capturePulse .65s ease-in-out}@keyframes capturePulse{50%{filter:brightness(1.8) saturate(1.5);transform:scale(.98)}}
.arena-shell[data-environment="forest"]{background:radial-gradient(circle at 25% 15%,#24583b,#071d25 58%,#06111c)}.arena-shell[data-environment="rift"]{background:radial-gradient(circle at 75% 20%,#5a254f,#17152e 55%,#070b1a)}.arena-shell[data-environment="cave"]{background:radial-gradient(circle at 50% 10%,#37415c,#101827 58%,#060b13)}.arena-shell[data-environment="bay"]{background:radial-gradient(circle at 50% 0,#173d55,#071321 72%)}
.arena-shell.attack-active .arena-grid{animation:arenaAttack .42s ease}@keyframes arenaAttack{50%{filter:brightness(1.2);transform:translateX(3px)}}
.scanner-particles{position:absolute;inset:0;z-index:2;perspective:500px;transform-style:preserve-3d;pointer-events:none}.scanner-particles i{position:absolute;left:50%;top:50%;width:3px;height:3px;border-radius:50%;background:hsl(calc(185 + (var(--particle-index) * 7)),90%,70%);box-shadow:0 0 8px currentColor,0 0 16px currentColor;transform:rotate(var(--particle-angle)) translateX(var(--particle-radius)) rotate(calc(var(--particle-angle) * -1));animation:signal-particle 2.8s var(--particle-delay) ease-in-out infinite;opacity:.78}.scanner-particles i:nth-child(3n){background:#ffd166;box-shadow:0 0 8px #ffd166,0 0 16px #ffd166}.scanner-particles i:nth-child(5n){background:#c084fc;box-shadow:0 0 8px #c084fc,0 0 16px #c084fc}.scanner-portal:after{z-index:1}.scanner-portal .portal-core{z-index:4}.scanner-portal:before{z-index:3}.scanner-portal>i,.scanner-portal>b{z-index:3}@keyframes signal-particle{0%,100%{opacity:.25;transform:rotate(var(--particle-angle)) translateX(calc(var(--particle-radius) * .72)) rotate(calc(var(--particle-angle) * -1)) scale(.55)}50%{opacity:1;transform:rotate(calc(var(--particle-angle) + 25deg)) translateX(var(--particle-radius)) rotate(calc(var(--particle-angle) * -1)) scale(1.35)}}
.move-info-card{width:min(92vw,430px);text-align:left}.move-info-card h2{margin:10px 0 12px;color:var(--gold)}.move-info-card p{line-height:1.6;color:var(--text);font-size:15px}.move-info-close{margin-bottom:12px}.capture-card .outcome-actions{justify-content:center}.starter-preview-card .outcome-actions{justify-content:center}
#dexRecords{display:grid;grid-template-columns:1fr;gap:8px}.dex-record{width:100%;display:grid;grid-template-columns:48px 1fr;gap:10px;align-items:center;padding:10px;border:1px solid #245271;border-radius:12px;background:#0a1e30;color:var(--text);text-align:left;cursor:pointer}.dex-record:hover,.dex-record:focus-visible{border-color:#50d9ff;box-shadow:0 0 18px #50d9ff22;outline:none}.dex-record img{width:48px;height:48px;object-fit:contain}.dex-record strong{display:block}.dex-record small{display:block;color:var(--gold);font-size:10px;letter-spacing:.08em}.dex-record-description{display:block;margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.dex-record.unknown{opacity:.65;filter:saturate(.25)}.dex-search-label{display:block;margin-top:14px;color:var(--cyan);font-size:10px;font-weight:800;letter-spacing:.14em}.dex-search{width:100%;margin-top:6px;padding:11px 12px;border:1px solid #35627a;border-radius:10px;background:#061321;color:var(--text);font:inherit}.dex-search:focus{outline:1px solid var(--cyan);border-color:var(--cyan)}.dex-detail-card{position:relative;max-height:calc(100svh - 36px);overflow:auto}.dex-detail-sprite{display:block;width:180px;height:180px;object-fit:contain;margin:18px auto 8px;filter:drop-shadow(0 0 24px #50d9ff55)}.dex-detail-card h2{margin:6px 0;color:var(--gold)}.dex-detail-number{margin:0 0 14px;color:var(--muted)!important}.dex-detail-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;text-align:left;margin:14px 0}.dex-detail-stats span{padding:9px;border:1px solid #245271;border-radius:10px;color:var(--muted);font-size:10px}.dex-detail-stats b{display:block;color:var(--gold);font-size:12px;margin-top:3px}.dex-detail-description{line-height:1.5;color:#b8d7e6!important}
.region-list{display:grid;gap:8px;margin:16px 0}.region-list button{width:100%}
#eventCard{margin-top:12px;padding:12px;border:1px solid #ffd16666;border-radius:12px;background:#211b0c;color:#dff7ff}#eventCard strong{display:block;color:var(--gold);margin:4px 0}#eventCard p{margin:0;color:var(--muted);font-size:11px}
.items-panel{display:none;margin:8px 0;padding:16px;border:1px solid #173c56;border-radius:16px;background:#061321}.os-modal .items-panel{display:block}.items-list{display:grid;gap:8px;margin-top:14px}.items-list .ghost{display:flex;justify-content:space-between;align-items:center}.items-list small{color:var(--muted)}
#rewardHistory{margin-top:12px;padding-top:10px;border-top:1px solid #245271}#rewardHistory p{margin:5px 0;color:var(--muted);font-size:11px}#rewardHistory p strong{color:var(--gold)}
.map-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:16px 0}.map-grid button{display:grid;gap:4px}.map-grid small{color:var(--muted)}
.discovery-code-row{display:flex;gap:6px;margin-top:10px}.discovery-code{min-width:0;flex:1;border:1px solid #35627a;border-radius:9px;padding:10px;background:#061321;color:#e8f9ff;text-transform:uppercase}.discovery-code-row .ghost{font-size:10px;padding:8px}
.switch-list{display:grid;gap:8px;margin:16px 0}.switch-list button{display:flex;justify-content:space-between}.switch-list small{color:var(--muted)}
.progression-status{font-size:10px;color:var(--gold);letter-spacing:.08em;white-space:nowrap}
@media(max-width:650px){
  .actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-top:8px}
  .action{min-width:0;min-height:46px;height:46px;padding:6px 4px;display:grid;place-items:center;text-align:center}
  .action b{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .action span{display:none}
}
.starter-active #app{height:100dvh;padding:0;overflow:hidden}.starter-active #starterView{min-height:100dvh;height:100dvh;margin:0;border-radius:0;display:flex;flex-direction:column;justify-content:center}.starter-active .starter-grid{flex:1;align-content:center;width:100%;max-height:560px}
.starter-active .starter-grid{max-height:none;min-height:0;grid-auto-rows:minmax(0,1fr)}.starter-active .starter-choice{height:auto;padding:14px 8px}.starter-active .starter-choice b{font-size:clamp(11px,3.2vw,17px)}.starter-active .starter-choice span{font-size:clamp(9px,2.4vw,12px)}
.starter-panel{}.starter-choice.is-selected{border-color:var(--gold);box-shadow:0 0 0 2px #ffd16666,0 0 24px #ffd16622;transform:translateY(-2px)}.starter-preview-card{position:relative}.starter-preview-close{position:absolute;top:14px;right:14px}.starter-preview-sprite{display:block;width:180px;height:180px;object-fit:contain;margin:20px auto 8px;filter:drop-shadow(0 0 24px #50d9ff66)}
@media(max-width:650px){.starter-panel{margin:8px 0;padding:14px 8px;border-radius:16px}.starter-panel h2{font-size:22px;margin:6px 0}.starter-panel p{font-size:11px;line-height:1.25;margin:6px auto;max-width:330px}.starter-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:12px}.starter-choice{min-width:0;height:64px;padding:7px 3px;border-radius:9px;text-align:center;overflow:hidden}.starter-choice b{font-size:10px;line-height:1.1;white-space:normal}.starter-choice span{margin-top:3px;font-size:8px;line-height:1.1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}

/* Scanner portal: a compact focal point for the mobile-first scanner. */
.scanner-view{position:relative;isolation:isolate;overflow:hidden;min-height:58svh}.scanner-copy,.scanner-view>.scan-button,.scanner-view>.scan-bar,.scanner-tools{position:relative;z-index:2}.scanner-copy{max-width:620px;margin:0 auto}.scanner-portal{position:relative;z-index:1;width:min(43vw,220px);aspect-ratio:1;margin:18px auto 22px;border:1px solid #50d9ff99;border-radius:50%;background:radial-gradient(circle,#50d9ff22 0 16%,#0a263b 45%,#061321 72%);box-shadow:0 0 0 12px #50d9ff08,0 0 45px #50d9ff30,inset 0 0 30px #50d9ff22}.scanner-portal:before,.scanner-portal:after,.scanner-portal i,.scanner-portal b{content:"";position:absolute;inset:12%;border:1px solid #50d9ff66;border-radius:50%;animation:portal-spin 7s linear infinite}.scanner-portal:after{inset:26%;border-style:dashed;border-color:#ffd16699;animation-duration:11s;animation-direction:reverse}.scanner-portal i{inset:4%;border-color:#50d9ff44;animation-duration:15s}.scanner-portal b{inset:40%;border-color:#ffd166aa;box-shadow:0 0 22px #ffd16688;animation:portal-pulse 1.8s ease-in-out infinite}.portal-core{position:absolute;inset:0;display:grid;place-items:center;color:#dffaff;font-size:42px;font-weight:300;text-shadow:0 0 22px #50d9ff;animation:portal-core 2s ease-in-out infinite}.scanner-view.is-scanning .scanner-portal{border-color:#ffd166dd;box-shadow:0 0 0 18px #ffd1660a,0 0 80px #50d9ff66,inset 0 0 45px #50d9ff44}.scanner-view.is-scanning .scanner-portal:before{animation-duration:2.2s}.scanner-view.is-scanning .scanner-portal:after{animation-duration:3.5s}.scanner-tools{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;margin:12px auto 0;max-width:640px}.scanner-tools .ghost{font-size:11px}.discovery-code-row{margin:0;flex:1 1 260px;max-width:410px}.scan-bar{margin-top:4px}@keyframes portal-spin{to{transform:rotate(360deg)}}@keyframes portal-pulse{0%,100%{transform:scale(.82);opacity:.6}50%{transform:scale(1.18);opacity:1}}@keyframes portal-core{0%,100%{transform:scale(.9);opacity:.7}50%{transform:scale(1.12);opacity:1}}
.coin-balance{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #ffd16677;border-radius:12px;background:#241d0e;color:#ffe6a3}.coin-balance strong,.coin-balance small{display:block}.coin-balance small{margin-top:3px;color:#bfae82;font-size:11px}.coin-balance b{font-size:20px;color:#ffd166;white-space:nowrap}
@media(max-width:650px){.encounter-panel{height:calc(100dvh - 150px);min-height:0;max-height:calc(100dvh - 150px);padding:12px;justify-content:flex-start}.encounter-visual{width:clamp(115px,28vw,150px);margin:3px auto 0}.encounter-panel h2{font-size:27px;margin:3px 0}.encounter-panel>p:not(.encounter-detail){font-size:11px;line-height:1.25;margin:3px auto}.encounter-stats{gap:7px 14px;margin:8px 0;font-size:8px}.encounter-stats b{font-size:12px;margin-top:3px}.encounter-detail{font-size:10px;line-height:1.25;margin:2px auto 7px;max-width:330px}.encounter-actions{gap:5px;margin-top:auto}.encounter-actions button{min-width:0;padding:9px 12px;font-size:11px}}
@media(max-width:650px){.encounter-panel{height:calc(100dvh - 260px);max-height:calc(100dvh - 260px)}.encounter-actions{margin-top:6px;margin-bottom:0;flex-shrink:0}}
@media(max-width:650px){.scanner-view{min-height:calc(100dvh - 92px);padding:24px 14px}.scanner-copy h2{font-size:26px;line-height:1.08}.scanner-portal{width:min(48vw,190px);margin:16px auto 18px}.scanner-tools{gap:6px;margin-top:10px}.scanner-tools .ghost{flex:1 1 30%;min-width:0;padding:9px 7px;font-size:10px}.discovery-code-row{flex-basis:100%;max-width:none;order:3}.discovery-code-row .ghost{flex:0 0 auto}.scan-bar{margin-top:2px}}
@media(min-width:651px){#dexRecords{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.scanner-view{max-height:calc(100dvh - 100px);min-height:calc(100dvh - 100px)}}
@media(min-width:651px){.starter-active #starterView{padding-bottom:16px}}

.encounter-panel{position:relative;isolation:isolate;overflow:hidden;width:100%;min-height:58svh;margin:24px 0;padding:42px clamp(20px,5vw,56px);display:flex;flex-direction:column;justify-content:center;align-items:center;border:1px solid #245271;border-radius:24px;background:radial-gradient(circle at 50% 0,#123e58,#071321 72%);box-shadow:0 20px 80px #0008,inset 0 0 80px #0b94d422;text-align:center}.encounter-panel:before{content:"";position:absolute;inset:12% 8%;border:1px solid #50d9ff22;border-radius:50%;box-shadow:0 0 60px #50d9ff12,inset 0 0 50px #50d9ff0d;pointer-events:none}.encounter-panel>*{position:relative;z-index:1}.encounter-visual{position:relative;width:min(38vw,190px);aspect-ratio:1;margin:14px auto 8px;display:grid;place-items:center}.encounter-scan-ring{position:absolute;inset:5%;border:1px solid #50d9ff88;border-radius:50%;box-shadow:0 0 28px #50d9ff24;animation:portal-spin 9s linear infinite}.encounter-scan-ring:before,.encounter-scan-ring:after{content:"";position:absolute;inset:12%;border:1px dashed #ffd16677;border-radius:50%}.encounter-scan-ring:after{inset:25%;border-style:solid;border-color:#50d9ff55;animation:portal-pulse 2.2s ease-in-out infinite}.encounter-visual img{position:relative;z-index:1;width:82%;height:82%;object-fit:contain;image-rendering:auto;filter:drop-shadow(0 0 18px #50d9ff44)}.encounter-visual img.is-pixelated{image-rendering:pixelated;filter:blur(5px) saturate(.35) brightness(.75) drop-shadow(0 0 12px #50d9ff22)}.encounter-visual img.is-placeholder{filter:grayscale(.3) drop-shadow(0 0 12px #50d9ff22)}.encounter-detail{max-width:520px;margin:4px auto 16px;color:#b8d7e6!important;font-size:13px;line-height:1.4}.encounter-stats{display:grid;grid-template-columns:repeat(4,minmax(80px,1fr));width:min(620px,100%);margin:20px auto;gap:14px;max-width:620px}.encounter-stats span{min-width:0}.encounter-actions{position:relative;z-index:2;display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.encounter-actions button{min-width:170px}@media(max-width:650px){.encounter-panel{min-height:calc(100dvh - 92px);margin:8px 0;padding:18px 14px;border-radius:16px}.encounter-visual{width:min(52vw,190px);margin:8px auto}.encounter-panel h2{font-size:32px;margin:5px 0}.encounter-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;margin:12px 0;font-size:9px}.encounter-stats b{font-size:13px}.encounter-detail{font-size:12px;margin:2px auto 12px}.encounter-actions{width:100%;display:grid;gap:7px}.encounter-actions button{width:100%}}
  .app-version{font-size:10px;color:var(--muted);letter-spacing:.12em}.save-tools{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:14px}.save-tools small{grid-column:1/-1;color:var(--muted);font-size:11px}
  .fighter-status span::before{display:inline-block;margin-right:4px;font-size:10px;font-weight:900}.fighter-status span[data-status-id="charged"]::before,.fighter-status span[data-status-id="boost"]::before,.fighter-status span[data-status-id="shield"]::before,.fighter-status span[data-status-id="guarded"]::before{content:'+'}.fighter-status span[data-status-id="burn"]::before,.fighter-status span[data-status-id="corruption"]::before,.fighter-status span[data-status-id="infected"]::before{content:'!';color:#ff9b66}.fighter-status span[data-status-id="freeze"]::before{content:'*'}.fighter-status span[data-status-id="shock"]::before{content:'~'}.fighter-status span[data-status-id="focused"]::before{content:'+'}.fighter-status span[data-status-id="glitched"]::before,.fighter-status span[data-status-id="misdirected"]::before,.fighter-status span[data-status-id="bound"]::before,.fighter-status span[data-status-id="drained"]::before{content:'-'}.fighter-status span[data-status-id="focused"]{border-color:#ffd16699;background:#332812dd;color:#ffe29a}.control-panel.is-busy{border-color:#ffd16666;box-shadow:0 0 24px #ffd16618}.control-panel.is-busy .actions{opacity:.72}.control-panel.is-busy .panel-heading h2::after{content:'  // PROCESSING';color:var(--gold);font-size:10px;letter-spacing:.12em}.scan-button.is-busy,.ghost.is-busy{position:relative;padding-right:38px}.scan-button.is-busy::after,.ghost.is-busy::after{content:'';position:absolute;right:14px;top:50%;width:12px;height:12px;margin-top:-7px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ui-spin .7s linear infinite}@keyframes ui-spin{to{transform:rotate(360deg)}}
@media(max-width:650px){.capture-modal{padding:12px}.capture-card{width:min(100%,380px);max-height:calc(100dvh - 24px);overflow:auto;padding:22px 16px;border-radius:16px}.capture-card h2{font-size:24px}.capture-card p{font-size:14px;line-height:1.45}.capture-card .outcome-actions{display:grid;grid-template-columns:1fr;width:100%;gap:8px}.capture-card .outcome-actions button,.capture-card>[data-capture-close]{width:100%;min-height:46px}.move-info-card{padding:20px 16px}.move-info-card .move-info-close{width:100%;min-height:46px}}
@media(min-width:651px){.actions{grid-template-columns:repeat(4,minmax(0,1fr));}}
.party-switch-tools{flex-basis:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.party-switch-tools small{color:var(--muted);font-size:11px}.party-switch-tools .is-active{border-color:var(--gold);color:var(--gold)}.party-info-card{position:relative;max-width:480px;text-align:center}.party-info-close{position:absolute;top:14px;right:14px}.party-info-sprite{display:block;width:150px;height:150px;object-fit:contain;margin:18px auto 8px;filter:drop-shadow(0 0 22px #50d9ff44)}.party-info-card h2{margin:6px 0;font-size:30px}.party-info-card p{color:#b8d7e6;line-height:1.45}.party-info-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:16px 0;text-align:left}.party-info-stats span{padding:10px;border:1px solid #245271;border-radius:10px;color:var(--muted);font-size:10px}.party-info-stats b{display:block;color:var(--gold);font-size:12px;margin-top:3px}.party-info-actions{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}.party-info-message{margin:12px 0 0!important;color:var(--gold)!important;font-size:12px}
.xp-meter{height:4px;margin-top:7px;border:1px solid #23617c;border-radius:9px;background:#071019;overflow:hidden;box-shadow:0 0 8px #50d9ff33}.xp-meter span{display:block;height:100%;width:0;background:linear-gradient(90deg,#50d9ff,#b78cff);box-shadow:0 0 10px #50d9ff;transition:width .45s ease}
.fighter-status{display:flex;min-height:18px;margin-top:5px}.fighter-status span{padding:3px 6px;border:1px solid #50d9ff88;border-radius:99px;background:#061321dd;color:#9ed5e8;font-size:9px;letter-spacing:.04em;white-space:nowrap;box-shadow:0 0 10px #50d9ff22}.enemy-card .fighter-status{justify-content:flex-end}
.fighter-card .fighter-status{position:absolute;top:100%;margin-top:6px;min-height:18px;z-index:3;gap:4px;flex-wrap:wrap}.player-card .fighter-status{left:0}.enemy-card .fighter-status{right:0;justify-content:flex-end}.fighter-status .status-positive{border-color:#6fffb088;background:#0a302bdd;color:#9dffd0}.fighter-status .status-negative{border-color:#ff719388;background:#3b1424dd;color:#ffb0bd}
.starter-panel{}#battleResetBtn{display:none!important}
.starter-choice-sprite{display:block;width:clamp(72px,10vw,120px);height:clamp(72px,10vw,120px);margin:0 auto 8px;object-fit:contain;filter:drop-shadow(0 0 12px #50d9ff44)}
@media(max-width:650px){.starter-active .starter-choice-sprite{width:clamp(34px,9vw,54px);height:clamp(34px,9vw,54px);margin:0 auto 3px}}
@media(min-width:651px){.starter-active #starterView{justify-content:flex-start;overflow-y:auto}.starter-active .starter-grid{flex:0 0 auto;grid-auto-rows:minmax(126px,auto);align-content:start}.starter-active .starter-choice{box-sizing:border-box;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;min-height:126px;overflow:hidden;padding:10px 12px}.starter-active .starter-choice-sprite{flex:0 0 auto;width:clamp(58px,8vw,90px);height:clamp(58px,8vw,90px);margin:0 auto 4px}.starter-active .starter-choice b{line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.starter-active .starter-choice span{line-height:1.15;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
.danger-action{border-color:#ff668988;color:#ff9aad}.danger-action:hover,.danger-action:focus-visible{border-color:#ff6689;color:#ffdbe2;background:#5b1730}
.party-visual-row{display:flex;align-items:center;justify-content:center;gap:12px;margin:18px auto 8px}.party-combat-stats{display:grid;grid-template-columns:repeat(2,minmax(62px,1fr));gap:7px;text-align:left}.party-combat-stats span{padding:8px;border:1px solid #245271;border-radius:9px;color:var(--muted);font-size:9px}.party-combat-stats b{display:block;color:var(--gold);font-size:12px;margin-top:3px}.party-info-sprite{margin:0}
.upgrade-card{position:relative;overflow:hidden}.upgrade-stage{position:relative;width:min(300px,80vw);height:220px;margin:18px auto 4px;display:grid;place-items:center;background:radial-gradient(circle,#123d58 0,transparent 68%)}.upgrade-stage img{position:absolute;width:190px;height:190px;object-fit:contain;filter:drop-shadow(0 0 20px #50d9ff66)}.upgrade-new-sprite{opacity:0;filter:blur(14px) saturate(.25) brightness(1.7) drop-shadow(0 0 30px #50d9ff)!important}.upgrade-particle-field{position:absolute;inset:0;pointer-events:none;opacity:0}.upgrade-particle-field i{position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:hsl(calc(180 + var(--i) * 7),90%,70%);box-shadow:0 0 10px currentColor;transform:rotate(calc(var(--i) * 12.85deg)) translateX(0) scale(.4)}.upgrade-card.is-upgrading .upgrade-old-sprite{animation:upgrade-disperse 1.15s ease-in forwards}.upgrade-card.is-upgrading .upgrade-new-sprite{animation:upgrade-materialize 1.2s .15s ease-out forwards}.upgrade-card.is-upgrading .upgrade-particle-field{opacity:1}.upgrade-card.is-upgrading .upgrade-particle-field i{animation:upgrade-particle 1.05s calc(var(--i) * -22ms) ease-out forwards}@keyframes upgrade-disperse{0%{opacity:1;filter:drop-shadow(0 0 20px #50d9ff66)}45%{opacity:.8;filter:blur(3px) contrast(1.8) saturate(1.8) drop-shadow(0 0 30px #c084fc)}100%{opacity:0;filter:blur(14px) contrast(2.4) saturate(2) brightness(1.7);transform:scale(1.14)}}@keyframes upgrade-materialize{0%{opacity:0;filter:blur(14px) saturate(.25) brightness(1.7) drop-shadow(0 0 30px #50d9ff)}55%{opacity:.75;filter:blur(3px) saturate(1.5) brightness(1.25) drop-shadow(0 0 28px #50d9ff)}100%{opacity:1;filter:drop-shadow(0 0 20px #50d9ff66)}}@keyframes upgrade-particle{0%{opacity:0;transform:rotate(calc(var(--i) * 12.85deg)) translateX(0) scale(.4)}28%{opacity:1}100%{opacity:0;transform:rotate(calc(var(--i) * 12.85deg)) translateX(clamp(75px,24vw,150px)) scale(0)}}
.scanner-particles i{inset:auto;border:0;position:absolute;left:50%;top:50%;display:block;width:3px;height:3px;border-radius:50%;pointer-events:none}
.scanner-particles{inset:-4%;perspective:620px;transform-style:preserve-3d;z-index:2;overflow:visible}
.scanner-particles:before{content:"";position:absolute;left:50%;top:50%;width:34%;aspect-ratio:1;transform:translate(-50%,-50%);border:1px solid #d7f8ff99;border-radius:50%;background:radial-gradient(circle at 38% 32%,#d9ffff 0 3%,#50d9ffcc 10%,#193d64 42%,#071424 72%);box-shadow:0 0 18px #50d9ffcc,0 0 45px #c084fc66,inset -12px -12px 20px #020812cc;z-index:2}
.particle-orbit{position:absolute;inset:0;border:0!important;border-radius:50%;transform-style:preserve-3d;animation:particle-orbit-spin var(--orbit-spin) linear infinite;pointer-events:none}
.particle-orbit-2{animation-direction:reverse;transform:rotateX(var(--orbit-tilt)) rotateY(18deg)}
.particle-orbit-3{transform:rotateX(var(--orbit-tilt)) rotateY(-32deg) rotateZ(22deg);animation-duration:12s}
.particle-orbit i{inset:auto!important;border:0!important;left:50%;top:50%;width:3px;height:3px;background:#50d9ff;box-shadow:0 0 7px currentColor,0 0 15px currentColor;transform:rotate(var(--particle-angle)) translateX(var(--particle-radius)) rotate(calc(var(--particle-angle) * -1));animation:particle-flicker 1.9s var(--particle-delay) ease-in-out infinite;opacity:.7}
.particle-orbit-2 i{width:4px;height:4px;background:#ffd166;box-shadow:0 0 8px #ffd166,0 0 17px #ffd166}
.particle-orbit-3 i{width:2px;height:2px;background:#c084fc;box-shadow:0 0 7px #c084fc,0 0 14px #c084fc}
.particle-orbit i:nth-child(4n){background:#d9ffff;box-shadow:0 0 8px #d9ffff,0 0 16px #50d9ff}
@keyframes particle-orbit-spin{from{transform:rotateX(var(--orbit-tilt)) rotateY(0deg) rotateZ(0deg)}to{transform:rotateX(var(--orbit-tilt)) rotateY(360deg) rotateZ(360deg)}}
@keyframes particle-flicker{0%,100%{opacity:.25;filter:blur(.2px);scale:.65}50%{opacity:1;filter:blur(0);scale:1.35}}
.particle-orbit{animation:none!important;transform-style:preserve-3d}
.particle-orbit i{animation:none!important;transform-origin:center;will-change:transform,opacity;backface-visibility:hidden}
.scanner-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:4;pointer-events:none}
.scanner-portal{overflow:visible}
@media(max-width:650px){.topbar>div:first-child{min-width:0}.topbar .eyebrow{display:block;white-space:nowrap;font-size:clamp(9px,2.6vw,11px);letter-spacing:.1em}}
