/* Full arena surface; controls are overlays, never separate top/bottom bars. */
body.in-battle{overflow:hidden;background:#101923}body.in-battle>.topbar,body.in-battle>footer{display:none!important}body.in-battle main:has(#battle:not([hidden])){position:fixed;inset:0;margin:0;padding:0!important;width:100vw;max-width:none;height:100dvh!important}
body.in-battle #battle{position:fixed;inset:0;display:block;margin:0;padding:0;width:100%;height:100%;max-width:none;border:0;border-radius:0;overflow:hidden;background:#15242b}body.in-battle #game-frame{position:absolute;inset:0;display:block;flex:none;width:100%;height:100%;min-height:0!important;border:0;border-radius:0;margin:0}body.in-battle #game{display:block;width:100%;height:100%;max-height:none;object-fit:fill;border-radius:0}
body.in-battle .battle-title{position:absolute;z-index:7;left:50%;top:54px;transform:translateX(-50%);width:auto;min-height:0;padding:0;background:none;border:0;pointer-events:none}body.in-battle .battle-title>div:first-child{display:none!important}body.in-battle #battle-controls{display:flex;gap:5px;pointer-events:auto}body.in-battle #battle-controls .small-button,body.in-battle .battle-options summary{margin:0;padding:6px 8px;font:8px monospace;background:#10232bda;border:1px solid #778d8570;border-radius:3px}body.in-battle .battle-options-panel{z-index:20;max-width:340px}body.in-battle .battle-help{display:none!important}body.in-battle .field-label{top:auto;bottom:14px;left:50%;transform:translateX(-50%);opacity:.55;font-size:8px;pointer-events:none}body.in-battle #battle-message{top:135px;bottom:auto;pointer-events:none}
body.in-battle .combat-dock{position:absolute;z-index:6;bottom:22px;left:24px;right:24px;display:grid;grid-template-columns:minmax(220px,320px) minmax(340px,520px);justify-content:space-between;align-items:end;gap:24px;background:none;border:0;box-shadow:none;padding:0;pointer-events:none;min-height:0}.dock-left{display:flex;flex-direction:column;gap:12px;min-width:0}.combat-dock .dock-left>*,.combat-dock .abilities{pointer-events:auto}
body.in-battle .combat-dock .dash-panel{width:100%;padding:10px 12px;text-align:left;border:2px solid #6d858a;background:linear-gradient(120deg,#132c30f5,#13232cf0);border-radius:5px;box-shadow:0 3px #07131ad9;grid-column:auto;grid-row:auto}.dash-heading{display:flex;align-items:center;gap:9px}.dash-heading strong{flex:1}body.in-battle .combat-dock .dash-panel strong{font:900 15px 'Segoe UI',sans-serif;letter-spacing:1px;margin:0}body.in-battle .combat-dock .dash-panel kbd{font:800 9px monospace;padding:3px 5px;background:#263741;border:1px solid #829496;color:#eaf3e5}body.in-battle .combat-dock .dash-panel small{font:900 9px monospace;color:#c9dbd1;margin:0;white-space:nowrap}body.in-battle .combat-dock .cool-track{height:12px;border:1px solid #8b9c8c;background:#0b1822;margin-top:8px;border-radius:2px;overflow:hidden}body.in-battle .combat-dock .cool-track i{display:block;height:100%;background:linear-gradient(#e6e990,#a8d76e);transition:width .1s linear;box-shadow:inset 0 2px #ffffff55}.combat-dock .dash-panel.is-ready{border-color:#a3e986!important;box-shadow:0 0 10px #91ee6d25,0 3px #07131a!important}.combat-dock .dash-panel.is-ready small{color:#c7ff9f!important}
body.in-battle .combat-dock .squad{display:block;min-width:0;grid-column:auto;grid-row:auto}body.in-battle .combat-dock .squad>.eyebrow{font:8px monospace;letter-spacing:1px;color:#f0f1d4;text-shadow:1px 1px #07131a;margin-bottom:7px;display:flex;justify-content:space-between}body.in-battle #battle-team{display:flex;gap:10px;flex-wrap:wrap;overflow:visible;margin:0;padding:2px;max-width:100%}
body.in-battle .combat-dock .team-button{position:relative;display:flex;align-items:center;justify-content:center;width:78px;height:83px;flex:0 0 78px;margin:0;padding:3px 5px 14px;border:2px solid #688086;border-radius:4px;background:linear-gradient(#182e39ec,#0c1a27f5);box-shadow:0 3px #07131ab0;opacity:1;overflow:visible}body.in-battle .combat-dock .team-button canvas{display:block;width:64px!important;height:64px!important;image-rendering:pixelated}.team-position{position:absolute;left:5px;top:4px;color:#e9f6e1;font:900 11px monospace;text-shadow:1px 1px #000}.team-state{position:absolute;right:3px;top:4px;font:800 7px monospace;color:#d5fabb;text-shadow:1px 1px #000}body.in-battle .combat-dock .team-button.active{border-color:#a7ff78;box-shadow:0 0 12px #a7ff7866,0 3px #07131a;background:linear-gradient(#254c3cf0,#112b2cf5)}body.in-battle .combat-dock .team-button:disabled{filter:grayscale(1);opacity:.55}.combat-dock .team-button.switch-locked:not(.active){border-style:dashed}.combat-dock .team-button .mini-hp{position:absolute;bottom:6px;left:8px;right:8px;height:5px;background:#09151d;border-radius:1px;overflow:hidden}.combat-dock .team-button .mini-hp i{display:block;height:100%;background:#aeed85}
body.in-battle .combat-dock .abilities{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;grid-column:auto;grid-row:auto;width:100%}body.in-battle .combat-dock .ability{--ready:100%;display:flex;flex-direction:column;justify-content:space-between;position:relative;isolation:isolate;height:94px;min-height:94px;padding:10px 12px;overflow:hidden;border:2px solid #728287;border-radius:5px;color:#fffce5;opacity:1;background:linear-gradient(90deg,#28553eea 0%,#28553eea var(--ready),#263039f5 var(--ready),#263039f5 100%);box-shadow:0 3px #06131be0,inset 0 1px #d0eed522;text-align:left;transition:border-color .15s,box-shadow .15s;cursor:pointer}body.in-battle .combat-dock .ability[aria-disabled=true]{opacity:1;filter:none;cursor:wait}.combat-dock .ability>*{position:relative;z-index:1}.combat-dock .ability .ability-top{display:flex;align-items:center;gap:8px;justify-content:flex-start;min-width:0}.combat-dock .ability .ability-top kbd{flex:0 0 auto;color:#effce3;background:#132530b8;border:1px solid #8daba0;padding:3px 5px;border-radius:2px;font:900 12px monospace}.combat-dock .ability strong{font:900 14px/1.15 'Segoe UI',sans-serif!important;text-transform:uppercase;text-shadow:1px 1px #06121d;margin:0;white-space:normal;overflow-wrap:anywhere}.ability-meta{display:flex;align-items:center;justify-content:space-between;gap:7px}.ability-meta>b{font:700 11px monospace;text-shadow:1px 1px #06121d}.move-type{color:#d8f4df;border:1px solid var(--accent);border-radius:2px;padding:2px 4px;font:800 8px monospace;background:#0b2027a0}.ability-foot{display:flex;align-items:center;justify-content:space-between;gap:4px;min-height:12px}body.in-battle .combat-dock .ability .move-effect{font:800 8px monospace;color:#f0e3ab;letter-spacing:.2px;white-space:normal;text-shadow:1px 1px #06121d}body.in-battle .combat-dock .ability .cool-number{position:static;display:block;font:900 9px monospace;color:#ecfbdc;transform:none;line-height:1;text-shadow:1px 1px #000;white-space:nowrap}.combat-dock .ability.is-ready{border-color:#a4ef83!important;box-shadow:0 0 9px #91ee6d35,0 3px #06131b!important;animation:ready-flash .4s ease-out}.combat-dock .ability.is-ready .cool-number{color:#c7ff9e!important}@keyframes ready-flash{0%{box-shadow:0 0 18px #c9ff9e9c,inset 0 0 22px #c9ff9e55}100%{box-shadow:0 0 9px #91ee6d35}}@media(prefers-reduced-motion:reduce){.combat-dock *{animation:none!important;transition:none!important}}
body.in-battle .overlay{border-radius:0}body.in-battle .battle-top{top:12px}
@media(max-width:850px),(max-height:650px){body.in-battle .combat-dock{bottom:14px;left:16px;right:16px;gap:18px;grid-template-columns:minmax(170px,240px) minmax(300px,440px)}body.in-battle .combat-dock .ability{height:82px;min-height:82px;padding:7px 9px}.combat-dock .ability strong{font-size:12px!important}body.in-battle .combat-dock .team-button{width:62px;height:69px;flex-basis:62px}body.in-battle .combat-dock .team-button canvas{width:52px!important;height:52px!important}body.in-battle #battle-team{gap:7px}.combat-dock .dash-heading{gap:5px}body.in-battle .combat-dock .dash-panel strong{font-size:12px}}
@media(max-width:600px){body.in-battle .combat-dock{left:10px;right:10px;bottom:10px;gap:12px;grid-template-columns:135px minmax(0,1fr)}body.in-battle .combat-dock .ability{height:85px;min-height:85px;padding:6px}.combat-dock .ability strong{font-size:10px!important}.combat-dock .ability .ability-top{gap:4px}.combat-dock .ability .ability-top kbd{font-size:9px;padding:2px 3px}.ability-meta{gap:3px;flex-wrap:wrap}.ability-meta>b{font-size:9px}.move-type{font-size:7px;padding:1px 3px}.ability-foot{flex-wrap:wrap}body.in-battle .combat-dock .ability .move-effect{font-size:7px}body.in-battle .combat-dock .ability .cool-number{font-size:8px}body.in-battle .combat-dock .team-button{width:40px;height:50px;flex-basis:40px}body.in-battle .combat-dock .team-button canvas{width:34px!important;height:34px!important}body.in-battle #battle-team{gap:4px}body.in-battle .combat-dock .team-state{font-size:5px;top:auto;bottom:12px;right:3px}body.in-battle .combat-dock .team-position{font-size:8px;left:3px}body.in-battle .combat-dock .dash-panel{padding:7px}.dash-heading{flex-wrap:wrap}body.in-battle .combat-dock .dash-panel strong{font-size:10px}body.in-battle .combat-dock .dash-panel small{font-size:8px}body.in-battle #battle-controls .small-button,body.in-battle .battle-options summary{font-size:7px;padding:5px}body.in-battle .battle-title{top:47px}}
@media(max-width:400px){body.in-battle .combat-dock{grid-template-columns:1fr;gap:9px}.combat-dock .dock-left{flex-direction:row;align-items:end;gap:10px}.combat-dock .dock-left>.dash-panel{flex:1}.combat-dock .dock-left>.squad{flex:1.1}.combat-dock .abilities{grid-row:1!important}body.in-battle .combat-dock .ability{height:76px;min-height:76px}.combat-dock .squad>.eyebrow span{display:none}body.in-battle .combat-dock .team-button{flex-basis:35px;width:35px;height:44px}body.in-battle .combat-dock .team-button canvas{width:30px!important;height:30px!important}}

@property --ready{syntax:'<percentage>';inherits:false;initial-value:100%;}
body.in-battle .combat-dock .ability{transition:--ready .1s linear,border-color .15s,box-shadow .15s;}

/* Initial entry only: keep cinematic bars clean. */
body.battle-intro #battle-controls{opacity:0;pointer-events:none;}

body.in-battle .combat-dock .dash-charges{display:flex;gap:4px;background:transparent;border:0;overflow:visible}body.in-battle .combat-dock .dash-charges>span{position:relative;flex:1;height:100%;overflow:hidden;background:#111e24;border:1px solid #79917c}body.in-battle .combat-dock .dash-charges>span>i{display:block;height:100%;background:linear-gradient(#d4ffa4,#74cb62);transition:width .08s linear}
