.health-bar{position:absolute;z-index:5;display:flex;align-items:center;gap:6px;padding:3px 8px;background:#f8f8d8;border:2px solid #0a1820;box-shadow:0 2px #0a182066;font-family:Courier New,monospace;font-weight:700;font-size:clamp(8px,1.4vw,13px);white-space:nowrap;pointer-events:none}.health-bar--enemy{left:4%;top:3%}.health-bar--player{right:4%;top:62%}.health-bar__name{color:#0a1820}.health-bar__track{width:clamp(70px,18vw,150px);height:10px;background:#0a1820;border:1px solid #0a1820;overflow:hidden}.health-bar__fill{height:100%;transition:width .24s ease-out,background-color .24s ease-out}.health-bar__stats{color:#0a1820}.health-bar--low .health-bar__fill,.health-bar--low .health-bar__stats{animation:health-blink .48s steps(1,end) infinite}@keyframes health-blink{50%{opacity:.35}}.battle-frame{width:min(960px,calc(100vw - 48px));border:6px solid #0a1820;background:#0a1820;box-shadow:0 0 0 3px #c7d9bd,0 0 0 6px #244052}.battle-scene{position:relative;width:100%;aspect-ratio:4 / 3;overflow:hidden;cursor:crosshair;-webkit-user-select:none;user-select:none;touch-action:manipulation}.battle-scene--animating{cursor:wait}.battle-background{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.scene-object{position:absolute;image-rendering:pixelated;image-rendering:crisp-edges;pointer-events:none}.grass-platform{z-index:1}.trainer-sprite{z-index:2}.pokemon-sprite{z-index:3}.pokemon-sprite--hit{animation:enemy-hit .26s steps(1,end);filter:brightness(1.5)}@keyframes enemy-hit{0%,to{transform:translate(0)}20%{transform:translate(-2.5%,1%)}40%{transform:translate(2.5%,-1%)}60%{transform:translate(-1.8%,.8%)}80%{transform:translate(1.8%,-.5%)}}.pokemon-sprite--player.pokemon-sprite--attacking,.pokemon-sprite--enemy.pokemon-sprite--attacking{animation:spell-cast .56s ease-in-out}@keyframes spell-cast{0%{transform:scale(1);filter:brightness(1)}35%{transform:scale(1.04);filter:brightness(1.15) drop-shadow(0 0 6px #7fd4ff)}50%{transform:scale(.97);filter:brightness(1.25) drop-shadow(0 0 10px #7fd4ff)}70%{transform:scale(1.02);filter:brightness(1.1) drop-shadow(0 0 5px #7fd4ff)}to{transform:scale(1);filter:brightness(1)}}.pokemon-sprite--fainted{filter:grayscale(1) brightness(.6);opacity:.5;transform:translateY(18%);transition:filter .4s,opacity .4s,transform .4s}.projectile{position:absolute;z-index:4;width:10%;height:auto;transform:translate(-50%,-50%);pointer-events:none}.projectile__sprite{width:100%;display:block;image-rendering:pixelated;animation:projectile-spin .18s steps(4,end) infinite}@keyframes projectile-spin{to{filter:brightness(1.12);transform:rotate(360deg)}}.debug-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none}.debug-dot{position:absolute;width:7px;height:7px;transform:translate(-50%,-50%);border-radius:50%;background:#f22}.debug-dot:after{content:attr(data-label);position:absolute;top:8px;left:5px;color:#f22;font:8px monospace}.debug-box{position:absolute;border:1px solid #f22}.battle-result{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#0a18208c}.battle-result__text{margin:0;font-family:Courier New,monospace;font-weight:700;font-size:clamp(28px,6vw,56px);letter-spacing:4px;text-shadow:0 3px 0 #0a1820}.battle-result__text--win{color:#4cd964}.battle-result__text--lose{color:#ff3b30}.battle-restart{position:static;transform:none;padding:8px 18px;font-family:Courier New,monospace;font-weight:700;font-size:16px;color:#f8f8d8;background:#244052;border:3px solid #0a1820;cursor:pointer}.battle-restart:hover{background:#35617c}@media (max-width: 520px){.app-shell{padding:14px}.battle-frame{width:calc(100vw - 28px);border-width:4px}}:root{font-family:Courier New,monospace;color:#18262e;background:#172d3a}*{box-sizing:border-box}html,body,#root{min-width:100%;min-height:100%;margin:0}body{min-height:100vh}button,img{image-rendering:pixelated;image-rendering:crisp-edges}.app-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),#172d3a;background-size:18px 18px}
